ets-fe-ng-sdk 18.0.65 → 18.0.66

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.
@@ -1,11 +1,11 @@
1
- import { Injectable } from '@angular/core';
1
+ import { inject, Injectable } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
+ import { UtilityService } from '../utility.service';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "../utility.service";
5
5
  export class CacheService {
6
- constructor(uS) {
7
- this.uS = uS;
6
+ constructor() {
8
7
  this._cache = {};
8
+ this.uS = inject(UtilityService);
9
9
  this.has = (key) => !!this._cache[key];
10
10
  this.getItem = (key) => this._cache[key];
11
11
  }
@@ -30,7 +30,7 @@ export class CacheService {
30
30
  next.complete();
31
31
  });
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CacheService, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
34
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CacheService, providedIn: 'root' }); }
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CacheService, decorators: [{
@@ -38,5 +38,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
38
38
  args: [{
39
39
  providedIn: 'root',
40
40
  }]
41
- }], ctorParameters: () => [{ type: i1.UtilityService }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTWxDLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQW1CLEVBQWtCO1FBQWxCLE9BQUUsR0FBRixFQUFFLENBQWdCO1FBRjdCLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBUTFDLFFBQUcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUMsWUFBTyxHQUFHLENBQUksR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBTSxDQUFDO0lBUlosQ0FBQztJQUV6QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBc0I7SUFDeEIsQ0FBQztJQUVELFNBQVMsQ0FBSSxHQUFXLEVBQUUsUUFBeUM7UUFDakUsT0FBTyxJQUFJLFVBQVUsQ0FBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7O2dCQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBN0JVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi91dGlsaXR5LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2FjaGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfY2FjaGU6IHsgW3g6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cblxuICBnZXQgY2FjaGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG5cbiAgaGFzID0gKGtleTogc3RyaW5nKSA9PiAhIXRoaXMuX2NhY2hlW2tleV07XG5cbiAgZ2V0SXRlbSA9IDxUPihrZXk6IHN0cmluZykgPT4gdGhpcy5fY2FjaGVba2V5XSBhcyBUO1xuXG4gIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpIHtcbiAgICB0aGlzLl9jYWNoZVtrZXldID0gZGF0YTtcbiAgICAvLyByZXR1cm4gdGhpcy5fY2FjaGU7XG4gIH1cblxuICBnZXRBbmRTZXQ8VD4oa2V5OiBzdHJpbmcsIG5ld1ZhbHVlPzogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChuZXh0KSA9PiB7XG4gICAgICBuZXh0Lm5leHQodGhpcy5nZXRJdGVtKGtleSkpO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMudVMucHJvbWlzaWZ5VmFsKG5ld1ZhbHVlKS50aGVuKGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnNldEl0ZW0oa2V5LCByZXMpO1xuICAgICAgICAgIG5leHQubmV4dChyZXMpO1xuICAgICAgICAgIG5leHQuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgbmV4dC5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
41
+ }], ctorParameters: () => [] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sWUFBWTtJQUl2QjtRQUhRLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBQzFCLE9BQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFRNUMsUUFBRyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQyxZQUFPLEdBQUcsQ0FBSSxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFNLENBQUM7SUFSckMsQ0FBQztJQUVoQixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBc0I7SUFDeEIsQ0FBQztJQUVELFNBQVMsQ0FBSSxHQUFXLEVBQUUsUUFBeUM7UUFDakUsT0FBTyxJQUFJLFVBQVUsQ0FBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7O2dCQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBOUJVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uL3V0aWxpdHkuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIF9jYWNoZTogeyBbeDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIHJlYWRvbmx5IHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0IGNhY2hlKCkge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZTtcbiAgfVxuXG4gIGhhcyA9IChrZXk6IHN0cmluZykgPT4gISF0aGlzLl9jYWNoZVtrZXldO1xuXG4gIGdldEl0ZW0gPSA8VD4oa2V5OiBzdHJpbmcpID0+IHRoaXMuX2NhY2hlW2tleV0gYXMgVDtcblxuICBzZXRJdGVtPFQ+KGtleTogc3RyaW5nLCBkYXRhOiBUKSB7XG4gICAgdGhpcy5fY2FjaGVba2V5XSA9IGRhdGE7XG4gICAgLy8gcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG5cbiAgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBuZXdWYWx1ZT86IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigobmV4dCkgPT4ge1xuICAgICAgbmV4dC5uZXh0KHRoaXMuZ2V0SXRlbShrZXkpKTtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0aGlzLnVTLnByb21pc2lmeVZhbChuZXdWYWx1ZSkudGhlbihhc3luYyAocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRJdGVtKGtleSwgcmVzKTtcbiAgICAgICAgICBuZXh0Lm5leHQocmVzKTtcbiAgICAgICAgICBuZXh0LmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIG5leHQuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,28 +1,25 @@
1
- import { Injectable } from '@angular/core';
1
+ import { inject, Injectable } from '@angular/core';
2
2
  import { tap } from 'rxjs/operators';
3
+ import { ETSStorageService } from '../storage.service';
3
4
  import { CacheService } from './cache.service';
4
5
  import * as i0 from "@angular/core";
5
- import * as i1 from "../storage.service";
6
- import * as i2 from "../utility.service";
7
6
  export class LocalCacheService extends CacheService {
8
- constructor(sS, uS) {
9
- super(uS);
10
- this.sS = sS;
11
- this.uS = uS;
7
+ constructor() {
8
+ super();
12
9
  this.cacheKey = 'cacheKey';
13
10
  this.cacheCreatedDateKey = 'cacheCreatedDateKey';
14
11
  this.validityDays = 7;
15
12
  this.oneDayTimestamp = 86400000;
13
+ this.sS = inject(ETSStorageService);
16
14
  try {
17
- const createdDate = sS.getItem(this.cacheCreatedDateKey);
15
+ const createdDate = this.sS.getItem(this.cacheCreatedDateKey);
18
16
  if (!createdDate)
19
17
  this.sS.saveItem(this.cacheCreatedDateKey, Date.now());
20
- else if (createdDate + this.validityDays * this.oneDayTimestamp <=
21
- Date.now()) {
18
+ else if (createdDate + this.validityDays * this.oneDayTimestamp <= Date.now()) {
22
19
  this.sS.saveItem(this.cacheCreatedDateKey, Date.now());
23
20
  this.sS.removeItem(this.cacheKey);
24
21
  }
25
- sS.getItemA(this.cacheKey).then((r) => {
22
+ this.sS.getItemA(this.cacheKey).then((r) => {
26
23
  try {
27
24
  for (const key in r) {
28
25
  if (Object.prototype.hasOwnProperty.call(r, key)) {
@@ -50,11 +47,9 @@ export class LocalCacheService extends CacheService {
50
47
  }
51
48
  getAndSet(key, addFunc) {
52
49
  // debugger;
53
- return super
54
- .getAndSet(key, addFunc)
55
- .pipe(tap((r) => this.saveToLocal()));
50
+ return super.getAndSet(key, addFunc).pipe(tap((r) => this.saveToLocal()));
56
51
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LocalCacheService, deps: [{ token: i1.ETSStorageService }, { token: i2.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LocalCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
58
53
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LocalCacheService, providedIn: 'root' }); }
59
54
  }
60
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LocalCacheService, decorators: [{
@@ -62,5 +57,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
62
57
  args: [{
63
58
  providedIn: 'root',
64
59
  }]
65
- }], ctorParameters: () => [{ type: i1.ETSStorageService }, { type: i2.UtilityService }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFnQixHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFLL0MsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQVk7SUFLakQsWUFBbUIsRUFBcUIsRUFBa0IsRUFBa0I7UUFDMUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBa0IsT0FBRSxHQUFGLEVBQUUsQ0FBZ0I7UUFKM0QsYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQUM1QyxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUcxQyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxXQUFXO2dCQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDcEUsSUFDSCxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZTtnQkFDdEQsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUNWLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUM7b0JBQ0gsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDcEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUM1QixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDUSxPQUFPLENBQUksR0FBVyxFQUFFLElBQU87UUFDdEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFUSxTQUFTLENBQUksR0FBVyxFQUFFLE9BQXdDO1FBQ3pFLFlBQVk7UUFDWixPQUFPLEtBQUs7YUFDVCxTQUFTLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQzthQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBL0NVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbENhY2hlU2VydmljZSBleHRlbmRzIENhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVLZXkgPSAnY2FjaGVLZXknO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlQ3JlYXRlZERhdGVLZXkgPSAnY2FjaGVDcmVhdGVkRGF0ZUtleSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRpdHlEYXlzID0gNztcbiAgcHJpdmF0ZSByZWFkb25seSBvbmVEYXlUaW1lc3RhbXAgPSA4NjQwMDAwMDtcbiAgY29uc3RydWN0b3IocHVibGljIHNTOiBFVFNTdG9yYWdlU2VydmljZSwgcHVibGljIG92ZXJyaWRlIHVTOiBVdGlsaXR5U2VydmljZSkge1xuICAgIHN1cGVyKHVTKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3JlYXRlZERhdGU6IG51bWJlciA9IHNTLmdldEl0ZW0odGhpcy5jYWNoZUNyZWF0ZWREYXRlS2V5KTtcbiAgICAgIGlmICghY3JlYXRlZERhdGUpIHRoaXMuc1Muc2F2ZUl0ZW0odGhpcy5jYWNoZUNyZWF0ZWREYXRlS2V5LCBEYXRlLm5vdygpKTtcbiAgICAgIGVsc2UgaWYgKFxuICAgICAgICBjcmVhdGVkRGF0ZSArIHRoaXMudmFsaWRpdHlEYXlzICogdGhpcy5vbmVEYXlUaW1lc3RhbXAgPD1cbiAgICAgICAgRGF0ZS5ub3coKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc1Muc2F2ZUl0ZW0odGhpcy5jYWNoZUNyZWF0ZWREYXRlS2V5LCBEYXRlLm5vdygpKTtcbiAgICAgICAgdGhpcy5zUy5yZW1vdmVJdGVtKHRoaXMuY2FjaGVLZXkpO1xuICAgICAgfVxuICAgICAgc1MuZ2V0SXRlbUEodGhpcy5jYWNoZUtleSkudGhlbigocikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwga2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oa2V5LCByW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICB9XG4gIH1cbiAgc2F2ZVRvTG9jYWwoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NhdmluZyB0byBjYWNoZScsIEpTT04uc3RyaW5naWZ5KHN1cGVyLmNhY2hlKSk7XG4gICAgdGhpcy5zUy5zYXZlSXRlbUEodGhpcy5jYWNoZUtleSwgc3VwZXIuY2FjaGUpO1xuICB9XG4gIG92ZXJyaWRlIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpIHtcbiAgICBzdXBlci5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgdGhpcy5zYXZlVG9Mb2NhbCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBhZGRGdW5jPzogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIHN1cGVyXG4gICAgICAuZ2V0QW5kU2V0PFQ+KGtleSwgYWRkRnVuYylcbiAgICAgIC5waXBlKHRhcCgocikgPT4gdGhpcy5zYXZlVG9Mb2NhbCgpKSk7XG4gIH1cbn1cbiJdfQ==
60
+ }], ctorParameters: () => [] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBZ0IsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsWUFBWTtJQU9qRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBUE8sYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQUM1QyxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUM1QixPQUFFLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFJN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLFdBQVc7Z0JBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQztvQkFDSCxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUNwQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNRLE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUN0QyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVRLFNBQVMsQ0FBSSxHQUFXLEVBQUUsT0FBd0M7UUFDekUsWUFBWTtRQUNaLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDOzhHQTVDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbENhY2hlU2VydmljZSBleHRlbmRzIENhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVLZXkgPSAnY2FjaGVLZXknO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlQ3JlYXRlZERhdGVLZXkgPSAnY2FjaGVDcmVhdGVkRGF0ZUtleSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRpdHlEYXlzID0gNztcbiAgcHJpdmF0ZSByZWFkb25seSBvbmVEYXlUaW1lc3RhbXAgPSA4NjQwMDAwMDtcbiAgcHVibGljIHJlYWRvbmx5IHNTID0gaW5qZWN0KEVUU1N0b3JhZ2VTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcmVhdGVkRGF0ZTogbnVtYmVyID0gdGhpcy5zUy5nZXRJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSk7XG4gICAgICBpZiAoIWNyZWF0ZWREYXRlKSB0aGlzLnNTLnNhdmVJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSwgRGF0ZS5ub3coKSk7XG4gICAgICBlbHNlIGlmIChjcmVhdGVkRGF0ZSArIHRoaXMudmFsaWRpdHlEYXlzICogdGhpcy5vbmVEYXlUaW1lc3RhbXAgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLnNTLnNhdmVJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSwgRGF0ZS5ub3coKSk7XG4gICAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc1MuZ2V0SXRlbUEodGhpcy5jYWNoZUtleSkudGhlbigocikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwga2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oa2V5LCByW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICB9XG4gIH1cbiAgc2F2ZVRvTG9jYWwoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NhdmluZyB0byBjYWNoZScsIEpTT04uc3RyaW5naWZ5KHN1cGVyLmNhY2hlKSk7XG4gICAgdGhpcy5zUy5zYXZlSXRlbUEodGhpcy5jYWNoZUtleSwgc3VwZXIuY2FjaGUpO1xuICB9XG4gIG92ZXJyaWRlIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpIHtcbiAgICBzdXBlci5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgdGhpcy5zYXZlVG9Mb2NhbCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBhZGRGdW5jPzogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIHN1cGVyLmdldEFuZFNldDxUPihrZXksIGFkZEZ1bmMpLnBpcGUodGFwKChyKSA9PiB0aGlzLnNhdmVUb0xvY2FsKCkpKTtcbiAgfVxufVxuIl19
@@ -1,8 +1,9 @@
1
- import { Injectable, inject } from '@angular/core';
1
+ import { inject, Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, Observable, interval, lastValueFrom, of } from 'rxjs';
3
3
  import { filter, map, tap } from 'rxjs/operators';
4
4
  import { environment } from '../../environments/environment';
5
- import { UtilityService } from './utility.service';
5
+ import { EVFunctions } from '../configs/base-functions';
6
+ import { ToastNotificationsService } from '@serene-dev/toast-notifications';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "./api.service";
8
9
  import * as i2 from "./storage.service";
@@ -17,7 +18,7 @@ export class TranslationService {
17
18
  this.translationResponseMatrix = new BehaviorSubject({});
18
19
  this.separator = '~~~';
19
20
  this.name = 'glossary';
20
- this.uS = inject(UtilityService);
21
+ this.toastNotificationService = inject(ToastNotificationsService);
21
22
  this.pipeTransformer = (text) => of(text);
22
23
  this.translateHTML = (HTMLString, sourceLanguage = this.sourceLanguage, targetLanguage = this.targetLanguage, config) => {
23
24
  return new Observable((res) => {
@@ -34,13 +35,13 @@ export class TranslationService {
34
35
  res.complete();
35
36
  }
36
37
  else {
37
- const id = this.uS.generateUUID();
38
+ const id = EVFunctions.generateUUID();
38
39
  this.translationRequestMatrix.push({ id, text });
39
40
  const sub = this.translationResponseMatrix.subscribe({
40
41
  next: (r) => {
41
42
  if (config?.debug)
42
43
  debugger;
43
- const transVal = r[id.toString()];
44
+ const transVal = r[id];
44
45
  if (transVal) {
45
46
  res.next(transVal);
46
47
  this.lCacheS.setItem(cacheKey, transVal);
@@ -71,6 +72,9 @@ export class TranslationService {
71
72
  });
72
73
  };
73
74
  this.translateHTMLPromise = (text, sourceLanguage = environment.sourceLanguage, targetLanguage = environment.targetLanguage, config) => this.translateHTML(text, sourceLanguage, targetLanguage, config)?.toPromise();
75
+ this.toastNotificationService.labelPipe = (val) => {
76
+ return this.pipeTransformer(val, { noLoader: true });
77
+ };
74
78
  }
75
79
  async startInterval() {
76
80
  if (this.intervalSub && !this.intervalSub.closed)
@@ -144,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
144
148
  providedIn: 'root',
145
149
  }]
146
150
  }], ctorParameters: () => [{ type: i1.ApiService }, { type: i2.ETSStorageService }, { type: i3.LocalCacheService }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFnQixRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQU1uRCxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1MsVUFBc0IsRUFDdEIsUUFBMkIsRUFDM0IsT0FBMEI7UUFGMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWR6QixZQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUMvQyw2QkFBd0IsR0FBbUMsRUFBRSxDQUFDO1FBQ3ZFLDhCQUF5QixHQUNqQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFJVCxPQUFFLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBT3JDLG9CQUFlLEdBQThFLENBQzNGLElBQUksRUFDSixFQUFFLENBQUMsRUFBRSxDQUFDLElBQWMsQ0FBQyxDQUFDO1FBeUZ4Qixr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ZSwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCwgbGFzdFZhbHVlRnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFTGFuZ3VhZ2UgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJVHJhbnNsYXRvckNvbmZpZyB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvdHJhbnNsYXRvci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblNlcnZpY2U8VHJhbnNsYXRpb25HbG9zc2FyeVJlc3BvbnNlID0gYW55PiB7XG4gIHByb3RlY3RlZCBiYXNlVVJMID0gZW52aXJvbm1lbnQuYXBpQmFzZVVybCArICcvcmVzdC90cmFuc2xhdGlvbi8nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25SZXF1ZXN0TWF0cml4OiB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9W10gPSBbXTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXg6IEJlaGF2aW9yU3ViamVjdDx7IFt4OiBudW1iZXJdOiBzdHJpbmcgfT4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICByZWFkb25seSBzZXBhcmF0b3IgPSAnfn5+JztcbiAgbmFtZSA9ICdnbG9zc2FyeSc7XG4gIHNvdXJjZUxhbmd1YWdlOiBFTGFuZ3VhZ2U7XG4gIHRhcmdldExhbmd1YWdlOiBFTGFuZ3VhZ2U7XG4gIHRyYW5zR2xvc3Nhcnk7XG4gIHJlYWRvbmx5IHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGludGVydmFsU3ViOiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdG9yYWdlUzogRVRTU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIGxDYWNoZVM6IExvY2FsQ2FjaGVTZXJ2aWNlLFxuICApIHt9XG4gIHBpcGVUcmFuc2Zvcm1lcjogKHRleHQ6IHN0cmluZyB8IG51bWJlciwgY29uZmlnPzogSVRyYW5zbGF0b3JDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiA9IChcbiAgICB0ZXh0LFxuICApID0+IG9mKHRleHQgYXMgc3RyaW5nKTtcbiAgYXN5bmMgc3RhcnRJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbFN1YiAmJiAhdGhpcy5pbnRlcnZhbFN1Yi5jbG9zZWQpIHJldHVybjtcbiAgICBjb25zdCB0cmFuc0dsb3NzYXJ5ID0gdGhpcy50cmFuc0dsb3NzYXJ5IHx8IChhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0R2xvc3NhcnkoKSkpO1xuICAgIHRoaXMuaW50ZXJ2YWxTdWIgPSBpbnRlcnZhbCgxMDAwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5sZW5ndGggPiAwKSxcblxuICAgICAgICB0YXAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5zcGxpY2UoMCk7XG5cbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnBvc3RTdHJpbmcoXG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArXG4gICAgICAgICAgICAgICAgKHRoaXMudHJhbnNHbG9zc2FyeT8uY29kZVxuICAgICAgICAgICAgICAgICAgPyBgbGFuZ3VhZ2U/Z2xvc3NhcnlDb2RlPSR7dGhpcy50cmFuc0dsb3NzYXJ5Py5jb2RlfSZzb3VyY2VMYW5nPSR7dGhpcy5zb3VyY2VMYW5ndWFnZX0mdGFyZ2V0TGFuZz0ke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9YFxuICAgICAgICAgICAgICAgICAgOiBgbGFuZ3VhZ2UvJHt0aGlzLnRhcmdldExhbmd1YWdlfWApLFxuICAgICAgICAgICAgICBib2R5Lm1hcCgoeCkgPT4gdGhpcy50YWdnZXIoeC5pZCwgeC50ZXh0KSkuam9pbih0aGlzLnNlcGFyYXRvciksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeC5uZXh0KHRoaXMuZGV0YWdnZXIocikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG4gIHN0b3BJbnRlcnZhbCgpIHtcbiAgICB0aGlzLmludGVydmFsU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIHByb3RlY3RlZCB0YWdnZXIoaWQ6IHN0cmluZywgc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYDxkaXYgaWQ9XCIke2lkfVwiPiR7c3RyfTwvZGl2PmA7XG4gIH1cbiAgZ2V0R2xvc3NhcnkoXG4gICAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSB7XG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHNvdXJjZUxhbmd1YWdlIHx8IHRoaXMuc291cmNlTGFuZ3VhZ2U7XG4gICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRhcmdldExhbmd1YWdlIHx8IHRoaXMudGFyZ2V0TGFuZ3VhZ2U7XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldDxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2VbXT4oYCR7dGhpcy5iYXNlVVJMfWdsb3NzYXJ5L2ApLnBpcGUoXG4gICAgICBtYXAoKHI6IGFueVtdKSA9PiB7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBjb25zdCBnbG9zc2FyeSA9IHI/LmZpbmQoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnNvdXJjZUxhbmcgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSAmJlxuICAgICAgICAgICAgeC50YXJnZXRMYW5nID09IHRoaXMudGFyZ2V0TGFuZ3VhZ2UgJiZcbiAgICAgICAgICAgIHgubmFtZSA9PSB0aGlzLm5hbWUsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeSA/IGdsb3NzYXJ5IDogbnVsbDtcbiAgICAgIH0pLFxuICAgICAgbWFwKChnbG9zc2FyeSkgPT4ge1xuICAgICAgICBpZiAoIWdsb3NzYXJ5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgdGhpcy50cmFuc0dsb3NzYXJ5ID0gZW52aXJvbm1lbnQudHJhbnNHbG9zc2FyeSA9IGdsb3NzYXJ5O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTLnNhdmVJdGVtKGVudmlyb25tZW50LnRyYW5zR2xvc3NhcnlLZXksIHRoaXMudHJhbnNHbG9zc2FyeSk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbiAgZGV0YWdnZXIoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtcyA9IHN0cj8uc3BsaXQodGhpcy5zZXBhcmF0b3IpO1xuICAgIGNvbnN0IHJlc29iaiA9IHt9O1xuICAgIGZvciAoY29uc3Qgc3RyIG9mIGl0ZW1zKSB7XG4gICAgICByZXNvYmpbc3RyPy5zcGxpdCgnXCInKVsxXV0gPSBzdHI/LnNwbGl0KCc+JylbMV0/LnNwbGl0KCc8L2RpdicpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2JqO1xuICB9XG5cbnRyYW5zbGF0ZU9sZCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpZCA9IDMyMzIzMjM7XG4gICAgY29uc3QgYm9keSA9IHsgW2lkXTogdGV4dCB9O1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0U3RyaW5nKFxuICAgICAgICB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2UvJHtlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZX1gLFxuICAgICAgICBPYmplY3Qua2V5cyhib2R5KVxuICAgICAgICAgIC5tYXAoKGlkKSA9PiB0aGlzLnRhZ2dlcihpZCwgYm9keVtpZF0pKVxuICAgICAgICAgIC5qb2luKHRoaXMuc2VwYXJhdG9yKSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHIpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZXRhZ2dlcihyKVtpZF0gYXMgc3RyaW5nO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICB0cmFuc2xhdGVIVE1MID0gKFxuICAgIEhUTUxTdHJpbmc6IHN0cmluZyxcbiAgICBzb3VyY2VMYW5ndWFnZSA9IHRoaXMuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSB0aGlzLnRhcmdldExhbmd1YWdlLFxuXG4gICAgY29uZmlnPzogSVRyYW5zbGF0b3JDb25maWcsXG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGlmIChjb25maWc/LmRlYnVnKSBkZWJ1Z2dlcjtcblxuICAgICAgY29uc3QgdGV4dCA9IEhUTUxTdHJpbmc/LnRyaW0oKSxcbiAgICAgICAgcm91dGUgPSB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2VgO1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSByb3V0ZSArICdfJyArIHRhcmdldExhbmd1YWdlICsgJ18nICsgdGV4dDtcbiAgICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXMubmV4dChIVE1MU3RyaW5nKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4oY2FjaGVLZXkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXF1ZXN0TWF0cml4LnB1c2goeyBpZCwgdGV4dCB9KTtcbiAgICAgICAgY29uc3Qgc3ViOiBTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXguc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocikgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8uZGVidWcpIGRlYnVnZ2VyO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNWYWwgPSByW2lkLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgaWYgKHRyYW5zVmFsKSB7XG4gICAgICAgICAgICAgIHJlcy5uZXh0KHRyYW5zVmFsKTtcbiAgICAgICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0oY2FjaGVLZXksIHRyYW5zVmFsKTtcbiAgICAgICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIHBsYWluVHJhbnNsYXRlID0gKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBzb3VyY2VMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlID0gZW52aXJvbm1lbnQudGFyZ2V0TGFuZ3VhZ2UsXG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICB0ZXh0ID0gdGV4dD8udHJpbSgpO1xuICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2VgO1xuXG4gICAgICBpZiAoIXRleHQpIHJlc29sdmUobnVsbCk7XG4gICAgICBlbHNlIGlmICh0aGlzLmxDYWNoZVMuaGFzKHJvdXRlICsgJ18nICsgdGV4dCkpXG4gICAgICAgIHJlc29sdmUodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihyb3V0ZSArICdfJyArIHRleHQpKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICBhd2FpdCB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0U3RyaW5nKHJvdXRlLCB0ZXh0KVxuICAgICAgICAgICAgLnBpcGUodGFwKChyKSA9PiB0aGlzLmxDYWNoZVMuc2V0SXRlbShyb3V0ZSArICdfJyArIHRleHQsIHIpKSlcbiAgICAgICAgICAgIC50b1Byb21pc2UoKSxcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfTtcbiAgdHJhbnNsYXRlSFRNTFByb21pc2UgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gZW52aXJvbm1lbnQuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgICBjb25maWc/OiBJVHJhbnNsYXRvckNvbmZpZyxcbiAgKSA9PiB0aGlzLnRyYW5zbGF0ZUhUTUwodGV4dCwgc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlLCBjb25maWcpPy50b1Byb21pc2UoKTtcbn1cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFnQixRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUs1RSxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCLFlBQ1MsVUFBc0IsRUFDdEIsUUFBMkIsRUFDM0IsT0FBMEI7UUFGMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWZ6QixZQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUMvQyw2QkFBd0IsR0FBbUMsRUFBRSxDQUFDO1FBQ3ZFLDhCQUF5QixHQUNqQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFNRiw2QkFBd0IsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQVU3RSxvQkFBZSxHQUE4RSxDQUMzRixJQUFJ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UUFDeEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OEdBL0dVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCwgbGFzdFZhbHVlRnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFTGFuZ3VhZ2UgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVRyYW5zbGF0b3JDb25maWcgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL3RyYW5zbGF0b3IubW9kZWwnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IFRvYXN0Tm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICdAc2VyZW5lLWRldi90b2FzdC1ub3RpZmljYXRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZTxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2UgPSBhbnk+IHtcbiAgcHJvdGVjdGVkIGJhc2VVUkwgPSBlbnZpcm9ubWVudC5hcGlCYXNlVXJsICsgJy9yZXN0L3RyYW5zbGF0aW9uLyc7XG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvblJlcXVlc3RNYXRyaXg6IHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeDogQmVoYXZpb3JTdWJqZWN0PHsgW3g6IHN0cmluZ106IHN0cmluZyB9PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHJlYWRvbmx5IHNlcGFyYXRvciA9ICd+fn4nO1xuICBuYW1lID0gJ2dsb3NzYXJ5JztcbiAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdGFyZ2V0TGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdHJhbnNHbG9zc2FyeTtcbiAgLy8gcmVhZG9ubHkgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IHRvYXN0Tm90aWZpY2F0aW9uU2VydmljZSA9IGluamVjdChUb2FzdE5vdGlmaWNhdGlvbnNTZXJ2aWNlKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIHN0b3JhZ2VTOiBFVFNTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgbENhY2hlUzogTG9jYWxDYWNoZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMudG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlLmxhYmVsUGlwZSA9ICh2YWwpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnBpcGVUcmFuc2Zvcm1lcih2YWwsIHsgbm9Mb2FkZXI6IHRydWUgfSk7XG4gICAgfTtcbiAgfVxuICBwaXBlVHJhbnNmb3JtZXI6ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIsIGNvbmZpZz86IElUcmFuc2xhdG9yQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gPSAoXG4gICAgdGV4dCxcbiAgKSA9PiBvZih0ZXh0IGFzIHN0cmluZyk7XG4gIGFzeW5jIHN0YXJ0SW50ZXJ2YWwoKSB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxTdWIgJiYgIXRoaXMuaW50ZXJ2YWxTdWIuY2xvc2VkKSByZXR1cm47XG4gICAgY29uc3QgdHJhbnNHbG9zc2FyeSA9IHRoaXMudHJhbnNHbG9zc2FyeSB8fCAoYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmdldEdsb3NzYXJ5KCkpKTtcbiAgICB0aGlzLmludGVydmFsU3ViID0gaW50ZXJ2YWwoMTAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RNYXRyaXgubGVuZ3RoID4gMCksXG5cbiAgICAgICAgdGFwKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBib2R5ID0gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RNYXRyaXguc3BsaWNlKDApO1xuXG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuYXBpU2VydmljZS5wb3N0U3RyaW5nKFxuICAgICAgICAgICAgICB0aGlzLmJhc2VVUkwgK1xuICAgICAgICAgICAgICAgICh0aGlzLnRyYW5zR2xvc3Nhcnk/LmNvZGVcbiAgICAgICAgICAgICAgICAgID8gYGxhbmd1YWdlP2dsb3NzYXJ5Q29kZT0ke3RoaXMudHJhbnNHbG9zc2FyeT8uY29kZX0mc291cmNlTGFuZz0ke3RoaXMuc291cmNlTGFuZ3VhZ2V9JnRhcmdldExhbmc9JHt0aGlzLnRhcmdldExhbmd1YWdlfWBcbiAgICAgICAgICAgICAgICAgIDogYGxhbmd1YWdlLyR7dGhpcy50YXJnZXRMYW5ndWFnZX1gKSxcbiAgICAgICAgICAgICAgYm9keS5tYXAoKHgpID0+IHRoaXMudGFnZ2VyKHguaWQsIHgudGV4dCkpLmpvaW4odGhpcy5zZXBhcmF0b3IpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXgubmV4dCh0aGlzLmRldGFnZ2VyKHIpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuICBzdG9wSW50ZXJ2YWwoKSB7XG4gICAgdGhpcy5pbnRlcnZhbFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBwcm90ZWN0ZWQgdGFnZ2VyKGlkOiBzdHJpbmcsIHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGA8ZGl2IGlkPVwiJHtpZH1cIj4ke3N0cn08L2Rpdj5gO1xuICB9XG4gIGdldEdsb3NzYXJ5KFxuICAgIHNvdXJjZUxhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZTogRUxhbmd1YWdlID0gZW52aXJvbm1lbnQudGFyZ2V0TGFuZ3VhZ2UsXG4gICkge1xuICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBzb3VyY2VMYW5ndWFnZSB8fCB0aGlzLnNvdXJjZUxhbmd1YWdlO1xuICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSB0YXJnZXRMYW5ndWFnZSB8fCB0aGlzLnRhcmdldExhbmd1YWdlO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQ8VHJhbnNsYXRpb25HbG9zc2FyeVJlc3BvbnNlW10+KGAke3RoaXMuYmFzZVVSTH1nbG9zc2FyeS9gKS5waXBlKFxuICAgICAgbWFwKChyOiBhbnlbXSkgPT4ge1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgZ2xvc3NhcnkgPSByPy5maW5kKFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC5zb3VyY2VMYW5nID09IHRoaXMuc291cmNlTGFuZ3VhZ2UgJiZcbiAgICAgICAgICAgIHgudGFyZ2V0TGFuZyA9PSB0aGlzLnRhcmdldExhbmd1YWdlICYmXG4gICAgICAgICAgICB4Lm5hbWUgPT0gdGhpcy5uYW1lLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZ2xvc3NhcnkgPyBnbG9zc2FyeSA6IG51bGw7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZ2xvc3NhcnkpID0+IHtcbiAgICAgICAgaWYgKCFnbG9zc2FyeSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMudHJhbnNHbG9zc2FyeSA9IGVudmlyb25tZW50LnRyYW5zR2xvc3NhcnkgPSBnbG9zc2FyeTtcbiAgICAgICAgdGhpcy5zdG9yYWdlUy5zYXZlSXRlbShlbnZpcm9ubWVudC50cmFuc0dsb3NzYXJ5S2V5LCB0aGlzLnRyYW5zR2xvc3NhcnkpO1xuICAgICAgICByZXR1cm4gZ2xvc3Nhcnk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG4gIGRldGFnZ2VyKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbXMgPSBzdHI/LnNwbGl0KHRoaXMuc2VwYXJhdG9yKTtcbiAgICBjb25zdCByZXNvYmogPSB7fTtcbiAgICBmb3IgKGNvbnN0IHN0ciBvZiBpdGVtcykge1xuICAgICAgcmVzb2JqW3N0cj8uc3BsaXQoJ1wiJylbMV1dID0gc3RyPy5zcGxpdCgnPicpWzFdPy5zcGxpdCgnPC9kaXYnKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29iajtcbiAgfVxuXG4gIHRyYW5zbGF0ZU9sZCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpZCA9IDMyMzIzMjM7XG4gICAgY29uc3QgYm9keSA9IHsgW2lkXTogdGV4dCB9O1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0U3RyaW5nKFxuICAgICAgICB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2UvJHtlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZX1gLFxuICAgICAgICBPYmplY3Qua2V5cyhib2R5KVxuICAgICAgICAgIC5tYXAoKGlkKSA9PiB0aGlzLnRhZ2dlcihpZCwgYm9keVtpZF0pKVxuICAgICAgICAgIC5qb2luKHRoaXMuc2VwYXJhdG9yKSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHIpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZXRhZ2dlcihyKVtpZF0gYXMgc3RyaW5nO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICB0cmFuc2xhdGVIVE1MID0gKFxuICAgIEhUTUxTdHJpbmc6IHN0cmluZyxcbiAgICBzb3VyY2VMYW5ndWFnZSA9IHRoaXMuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSB0aGlzLnRhcmdldExhbmd1YWdlLFxuXG4gICAgY29uZmlnPzogSVRyYW5zbGF0b3JDb25maWcsXG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGlmIChjb25maWc/LmRlYnVnKSBkZWJ1Z2dlcjtcblxuICAgICAgY29uc3QgdGV4dCA9IEhUTUxTdHJpbmc/LnRyaW0oKSxcbiAgICAgICAgcm91dGUgPSB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2VgO1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSByb3V0ZSArICdfJyArIHRhcmdldExhbmd1YWdlICsgJ18nICsgdGV4dDtcbiAgICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXMubmV4dChIVE1MU3RyaW5nKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4oY2FjaGVLZXkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpZCA9IEVWRnVuY3Rpb25zLmdlbmVyYXRlVVVJRCgpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5wdXNoKHsgaWQsIHRleHQgfSk7XG4gICAgICAgIGNvbnN0IHN1YjogU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGlvblJlc3BvbnNlTWF0cml4LnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHIpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWc/LmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zVmFsID0gcltpZF07XG4gICAgICAgICAgICBpZiAodHJhbnNWYWwpIHtcbiAgICAgICAgICAgICAgcmVzLm5leHQodHJhbnNWYWwpO1xuICAgICAgICAgICAgICB0aGlzLmxDYWNoZVMuc2V0SXRlbShjYWNoZUtleSwgdHJhbnNWYWwpO1xuICAgICAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICAgIHJlcy5lcnJvcihlKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgcGxhaW5UcmFuc2xhdGUgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gZW52aXJvbm1lbnQuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIHRleHQgPSB0ZXh0Py50cmltKCk7XG4gICAgICBjb25zdCByb3V0ZSA9IHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZWA7XG5cbiAgICAgIGlmICghdGV4dCkgcmVzb2x2ZShudWxsKTtcbiAgICAgIGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMocm91dGUgKyAnXycgKyB0ZXh0KSlcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxzdHJpbmc+KHJvdXRlICsgJ18nICsgdGV4dCkpO1xuICAgICAgZWxzZVxuICAgICAgICByZXNvbHZlKFxuICAgICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZVxuICAgICAgICAgICAgLnBvc3RTdHJpbmcocm91dGUsIHRleHQpXG4gICAgICAgICAgICAucGlwZSh0YXAoKHIpID0+IHRoaXMubENhY2hlUy5zZXRJdGVtKHJvdXRlICsgJ18nICsgdGV4dCwgcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLFxuICAgICAgICApO1xuICAgIH0pO1xuICB9O1xuICB0cmFuc2xhdGVIVE1MUHJvbWlzZSA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc291cmNlTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IGVudmlyb25tZW50LnRhcmdldExhbmd1YWdlLFxuICAgIGNvbmZpZz86IElUcmFuc2xhdG9yQ29uZmlnLFxuICApID0+IHRoaXMudHJhbnNsYXRlSFRNTCh0ZXh0LCBzb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2UsIGNvbmZpZyk/LnRvUHJvbWlzZSgpO1xufVxuIl19