nuxeo-development-framework 4.4.9 → 4.5.0

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.
@@ -2,7 +2,7 @@ var _CacheBaseService_instances, _CacheBaseService_fetchedItems, _CacheBaseServi
2
2
  import { __classPrivateFieldGet } from "tslib";
3
3
  import { Injectable } from "@angular/core";
4
4
  import { EMPTY, Subject } from "rxjs";
5
- import { expand, last, map, retry } from "rxjs/operators";
5
+ import { catchError, expand, last, map, retry, take } from "rxjs/operators";
6
6
  import * as moment from "moment";
7
7
  import { DEFAULT_CACHE_OPTIONS } from "./constants";
8
8
  import _omit from "lodash/omit";
@@ -60,7 +60,8 @@ export class CacheBaseService {
60
60
  return __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].onFinishFetching.asObservable();
61
61
  }
62
62
  else {
63
- return __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_handleCacheItems).call(this, options);
63
+ __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_handleCacheItems).call(this, options).pipe(take(1)).subscribe();
64
+ return __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].onFinishFetching.asObservable();
64
65
  }
65
66
  }
66
67
  }
@@ -115,6 +116,8 @@ _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = ne
115
116
  res.onFinishFetching.next(result);
116
117
  res.onFinishFetching.complete();
117
118
  return result;
119
+ }), catchError((er) => {
120
+ throw er;
118
121
  }));
119
122
  }, _CacheBaseService_findNode = function _CacheBaseService_findNode(items, uniqueCompareKey, childrenPath, value) {
120
123
  for (const node of items) {
@@ -294,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
294
297
  providedIn: "root",
295
298
  }]
296
299
  }], ctorParameters: function () { return [{ type: i1.UserPreferencesService }, { type: i2.UtilityService }]; } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY2FjaGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQ1Usc0JBQThDLEVBQzlDLGNBQThCO1FBRDlCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCOztRQUp4Qyx5Q0FBd0MsSUFBSSxHQUFHLEVBQXFCLEVBQUM7UUFNbkUsdUJBQUEsSUFBSSxvRUFBZSxNQUFuQixJQUFJLENBQWlCLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENB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LElBQUksT0FBTyxDQUFDLFFBQVE7UUFBRSxPQUFPO1NBQ3hCO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FDN0IsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUN0QixDQUFDO0tBQ0g7QUFDSCxDQUFDOzhHQWhYVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGV4cGFuZCwgbGFzdCwgbWFwLCByZXRyeSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBERUZBVUxUX0NBQ0hFX09QVElPTlMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQmFzZUNhY2hlT3B0aW9ucywgQ2FjaGVJbmZvIH0gZnJvbSBcIi4vbW9kZWxzXCI7XHJcbmltcG9ydCBfb21pdCBmcm9tIFwibG9kYXNoL29taXRcIjtcclxuaW1wb3J0IF9hc3NpZ24gZnJvbSBcImxvZGFzaC9hc3NpZ25cIjtcclxuaW1wb3J0IF9jbG9uZURlZXAgZnJvbSBcImxvZGFzaC9jbG9uZURlZXBcIjtcclxuaW1wb3J0IHsgREVGQVVMVF9UVExfQ09ORklHIH0gZnJvbSBcIi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxpdGllcy91dGlsaXR5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRW52TWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2Vudi9lbnYtbWFuYWdlclwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FjaGVCYXNlU2VydmljZSB7XHJcbiAgI2ZldGNoZWRJdGVtczogTWFwPHN0cmluZywgQ2FjaGVJbmZvPiA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUluZm8+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuI3ByZXBhcmVDb25maWcoKTtcclxuICB9XHJcblxyXG4gIGhhc0l0ZW0oY2FjaGVLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5oYXNJdGVtKFxyXG4gICAgICBgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7Y2FjaGVLZXl9YFxyXG4gICAgKTtcclxuICB9XHJcbiAgY2xlYXJBbGwodXNlck5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy4jY2xlYXIodXNlck5hbWUpO1xyXG4gIH1cclxuICB2YWxpZGF0ZVRUTCh1c2VyTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIURFRkFVTFRfVFRMX0NPTkZJRy5BVVRPX0NIRUNLIHx8ICF1c2VyTmFtZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHByZWZpeCA9IGAke3VzZXJOYW1lfV9fJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfWA7XHJcbiAgICBPYmplY3Qua2V5cyh3aW5kb3cubG9jYWxTdG9yYWdlKVxyXG4gICAgICAuZmlsdGVyKChxKSA9PiBxLnN0YXJ0c1dpdGgocHJlZml4KSlcclxuICAgICAgLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGNhY2hlS2V5OiBrZXkucmVwbGFjZShwcmVmaXgsIFwiXCIpLFxyXG4gICAgICAgICAgdXNlck5hbWU6IHVzZXJOYW1lLFxyXG4gICAgICAgICAgcmVxdWVzdDogREVGQVVMVF9DQUNIRV9PUFRJT05TLlJFUVVFU1QsXHJcbiAgICAgICAgICBwcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmc6IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVQQVJFX0RBVEEsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBmaXJzdEZldGNoaW5nRGF0ZSA9IHRoaXMuI2dldEl0ZW0ob3B0aW9ucyk/LmZpcnN0RmV0Y2hpbmdEYXRlO1xyXG4gICAgICAgIGlmICghZmlyc3RGZXRjaGluZ0RhdGUpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbW9tZW50RGF0ZTEgPSBtb21lbnQobmV3IERhdGUoZmlyc3RGZXRjaGluZ0RhdGUpKTtcclxuICAgICAgICBjb25zdCBtb21lbnREYXRlMiA9IG1vbWVudChuZXcgRGF0ZSgpKTtcclxuICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gbW9tZW50RGF0ZTIuZGlmZihcclxuICAgICAgICAgIG1vbWVudERhdGUxLFxyXG4gICAgICAgICAgREVGQVVMVF9UVExfQ09ORklHLlVOSVRcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBkaWZmZXJlbmNlID49IERFRkFVTFRfVFRMX0NPTkZJRy5UVEw7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHN0YXJ0RmV0Y2hpbmdJdGVtcyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuI3ZhbGlkYXRlVFRMRm9yS2V5KG9wdGlvbnMpO1xyXG5cclxuICAgIGlmICh0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0/LmZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLiNmZXRjaGVkSXRlbXNbXHJcbiAgICAgICAgb3B0aW9ucy5jYWNoZUtleVxyXG4gICAgICBdLm9uRmluaXNoRmV0Y2hpbmcuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy4jaGFuZGxlQ2FjaGVJdGVtcyhvcHRpb25zKTtcclxuICAgIH1cclxuICB9XHJcbiAgI2hhbmRsZUNhY2hlSXRlbXMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgb2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgdGhpcy4jcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuI2dldEl0ZW0ob3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKGNhY2hlZEl0ZW0pIHtcclxuICAgICAgdGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXksIHtcclxuICAgICAgICAuLi5jYWNoZWRJdGVtLFxyXG4gICAgICAgIGZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyOiBmYWxzZSxcclxuICAgICAgICBvbkZpbmlzaEZldGNoaW5nOiBuZXcgU3ViamVjdDxDYWNoZUluZm8+KCksXHJcbiAgICAgICAgcmVxdWVzdDogb3B0aW9ucy5yZXF1ZXN0LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICBbb3B0aW9ucy5wYWdlS2V5XTogMCxcclxuICAgICAgICBbb3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleV06IHRoaXMuI2FkZDFTZWNvbmRUb01vZGlmaWVkRGF0ZShcclxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5sYXN0TW9kaWZpZWREYXRlKVxyXG4gICAgICAgICkudG9JU09TdHJpbmcoKSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnBhcmFtcyA9IHBhcmFtcztcclxuICAgICAgb2JzZXJ2YWJsZSA9IG9wdGlvbnMucmVxdWVzdChwYXJhbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXkpO1xyXG4gICAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdDtcclxuICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmZpcnN0RmV0Y2hpbmdEYXRlID1cclxuICAgICAgICBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIG9ic2VydmFibGUgPSBvcHRpb25zLnJlcXVlc3QoeyBbb3B0aW9ucy5wYWdlS2V5XTogMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSB0cnVlO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGUucGlwZShcclxuICAgICAgcmV0cnkoREVGQVVMVF9UVExfQ09ORklHLlJFVFJZKSxcclxuICAgICAgZXhwYW5kKChyZXN1bHRzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgYW5vdGhlckNhbGw6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBhbm90aGVyQ2FsbCA9IHRoaXMuI2hhbmRsZUZldGNoZWRJdGVtcyhvcHRpb25zLCByZXN1bHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFub3RoZXJDYWxsID8gYW5vdGhlckNhbGwgOiBFTVBUWTtcclxuICAgICAgfSksXHJcbiAgICAgIGxhc3QoKSxcclxuICAgICAgbWFwKChfKSA9PiB7XHJcbiAgICAgICAgbGV0IF9mZXRjaGVkSXRlbXMgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0gYXMgQ2FjaGVJbmZvO1xyXG4gICAgICAgIF9mZXRjaGVkSXRlbXMuZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAoX2ZldGNoZWRJdGVtcy5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgIF9mZXRjaGVkSXRlbXMubGFzdE1vZGlmaWVkRGF0ZSA9IHRoaXMuI2ZpbmRMYXJnZXN0RGF0ZShcclxuICAgICAgICAgICAgX2ZldGNoZWRJdGVtcy5kYXRhLFxyXG4gICAgICAgICAgICBvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuICAgICAgICAgICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuI3NldEl0ZW0oXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBkYXRhOiBfZmV0Y2hlZEl0ZW1zLmRhdGEsXHJcbiAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkRGF0ZTogX2ZldGNoZWRJdGVtcy5sYXN0TW9kaWZpZWREYXRlLFxyXG4gICAgICAgICAgICAgIGZpcnN0RmV0Y2hpbmdEYXRlOiBfZmV0Y2hlZEl0ZW1zLmZpcnN0RmV0Y2hpbmdEYXRlLFxyXG4gICAgICAgICAgICAgIHJlc3VsdHNDb3VudDogX2ZldGNoZWRJdGVtc1tvcHRpb25zLnJlc3VsdHNDb3VudF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBfZmV0Y2hlZEl0ZW1zO1xyXG4gICAgICB9KSxcclxuICAgICAgbWFwKChyZXMpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBfY2xvbmVEZWVwKHtcclxuICAgICAgICAgIFtvcHRpb25zLm1hcHBlZERhdGFLZXldOiByZXMuZGF0YSxcclxuICAgICAgICAgIFtvcHRpb25zLmxhc3RNb2RpZmllZERhdGVLZXldOiByZXMubGFzdE1vZGlmaWVkRGF0ZSxcclxuICAgICAgICAgIFtvcHRpb25zLnJlc3VsdHNDb3VudF06IHJlc1tvcHRpb25zLnJlc3VsdHNDb3VudF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzLm9uRmluaXNoRmV0Y2hpbmcubmV4dChyZXN1bHQpO1xyXG4gICAgICAgIHJlcy5vbkZpbmlzaEZldGNoaW5nLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gICNmaW5kTm9kZShcclxuICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgIHVuaXF1ZUNvbXBhcmVLZXk6IHN0cmluZyxcclxuICAgIGNoaWxkcmVuUGF0aDogc3RyaW5nLFxyXG4gICAgdmFsdWU6IGFueVxyXG4gICkge1xyXG4gICAgZm9yIChjb25zdCBub2RlIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGlmIChub2RlW3VuaXF1ZUNvbXBhcmVLZXldID09PSB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBjaGlsZHJlblBhdGgpO1xyXG4gICAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLiNmaW5kTm9kZShcclxuICAgICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgICAgdW5pcXVlQ29tcGFyZUtleSxcclxuICAgICAgICAgIGNoaWxkcmVuUGF0aCxcclxuICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gICNmaW5kTGFyZ2VzdERhdGUoXHJcbiAgICBub2RlTGlzdDogYW55W10sXHJcbiAgICBjaGlsZHJlblBhdGg6IHN0cmluZyxcclxuICAgIGRhdGVQYXRoOiBzdHJpbmdcclxuICApOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhcmdlc3REYXRlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgY2hpbGRyZW5QYXRoKTtcclxuICAgICAgY29uc3Qgbm9kZURhdGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKG5vZGUsIGRhdGVQYXRoKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIG5vZGVEYXRlICYmXHJcbiAgICAgICAgKCFsYXJnZXN0RGF0ZSB8fCBuZXcgRGF0ZShub2RlRGF0ZSkgPiBuZXcgRGF0ZShsYXJnZXN0RGF0ZSkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxhcmdlc3REYXRlID0gbm9kZURhdGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICB0cmF2ZXJzZShjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgbm9kZUxpc3QuZm9yRWFjaCgobm9kZSkgPT4gdHJhdmVyc2Uobm9kZSkpO1xyXG4gICAgcmV0dXJuIGxhcmdlc3REYXRlO1xyXG4gIH1cclxuICAjaGFuZGxlRmV0Y2hlZEl0ZW1zKFxyXG4gICAgb3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyxcclxuICAgIHJlczogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGE/Lmxlbmd0aCkge1xyXG4gICAgICByZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKFxyXG4gICAgICAgICAgYSxcclxuICAgICAgICAgIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGhcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcbiAgICAgICAgICBiLFxyXG4gICAgICAgICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGZpcnN0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShzZWNvbmQpLmdldFRpbWUoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy4jZmluZE5vZGUoXHJcbiAgICAgICAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSxcclxuICAgICAgICAgIG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSxcclxuICAgICAgICAgIG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG4gICAgICAgICAgZWxlbWVudFtvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXldXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWFwcGVkRWxlbWVudCA9IG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtlbGVtZW50XSlbMF07XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIC8vIGVkaXQgOiB1cGRhdGUgaXRlbSBpbiBjYWNoZVxyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRTb3VyY2UgPSBfb21pdChcclxuICAgICAgICAgICAgbWFwcGVkRWxlbWVudCxcclxuICAgICAgICAgICAgb3B0aW9ucy5leGNsdWRlS2V5c1doZW5VcGRhdGVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBfYXNzaWduKGl0ZW0sIGZpbHRlcmVkU291cmNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gYWRkIDogY2hlY2sgZGF0ZSB0byBkZXRlcm1pbmUgd2hlcmUgd2lsbCBpbnNlcnRcclxuXHJcbiAgICAgICAgICAvLyBpZiBpdGVtIHBhcmVudCBub3QgZm91bmQgYWRkIGFzIHJvb3QgZWxzZSB3aWxsIGFkZCBsZWF2ZXMgdG8gc3ViUGFyZW50XHJcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy4jZmluZE5vZGUoXHJcbiAgICAgICAgICAgIHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhLFxyXG4gICAgICAgICAgICBvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXksXHJcbiAgICAgICAgICAgIG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG4gICAgICAgICAgICBlbGVtZW50W29wdGlvbnMucGFyZW50S2V5XVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICAvLyB3aWxsIGNvbXBhcmUgd2l0aCBub2RlIGNoaWxkIHRvIGFkZFxyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgICBvcHRpb25zLmNoaWxkcmVuUGF0aFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLiNhZGRJdGVtc1RvKG9wdGlvbnMsIGNoaWxkcmVuLCBlbGVtZW50KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHdpbGwgY29tcGFyZSB3aXRoIHJvb3QgbGV2ZWwgdG8gYWRkXHJcbiAgICAgICAgICAgIHRoaXMuI2FkZEl0ZW1zVG8oXHJcbiAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSxcclxuICAgICAgICAgICAgICBlbGVtZW50XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldID0gb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoXHJcbiAgICAgICAgcmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEgPSByZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XTtcclxuICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnJlc3VsdHNDb3VudCA9XHJcbiAgICAgICAgcmVzW29wdGlvbnMucmVzdWx0c0NvdW50XTtcclxuICAgIH1cclxuICAgIGlmIChyZXNbb3B0aW9ucy50b3RhbFBhZ2VLZXldIC0gcmVzW29wdGlvbnMucGFnZUtleV0gPiAxKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCh7XHJcbiAgICAgICAgLi4uKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5wYXJhbXMgfHwge30pLFxyXG4gICAgICAgIFtvcHRpb25zLnBhZ2VLZXldOiByZXNbb3B0aW9ucy5wYWdlS2V5XSArIDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNhZGRJdGVtc1RvKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMsIGRhdGE6IGFueVtdLCBpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IGZpcnN0Q2FjaGVkTW9kaWZpZWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKFxyXG4gICAgICBkYXRhWzBdLFxyXG4gICAgICBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoXHJcbiAgICApO1xyXG4gICAgY29uc3QgY3VycmVudE1vZGlmaWVkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShcclxuICAgICAgaXRlbSxcclxuICAgICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG4gICAgKTtcclxuICAgIGlmIChmaXJzdENhY2hlZE1vZGlmaWVkIDwgY3VycmVudE1vZGlmaWVkKSB7XHJcbiAgICAgIGRhdGEudW5zaGlmdCguLi5vcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyhbaXRlbV0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGEucHVzaCguLi5vcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyhbaXRlbV0pKTtcclxuICAgIH1cclxuICB9XHJcbiAgI3ByZXBhcmVPcHRpb25zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuICAgIG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nID1cclxuICAgICAgb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRVBBUkVfREFUQTtcclxuICAgIG9wdGlvbnMucGFnZUtleSA9IG9wdGlvbnMucGFnZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUEFHRV9LRVk7XHJcbiAgICBvcHRpb25zLnRvdGFsUGFnZUtleSA9XHJcbiAgICAgIG9wdGlvbnMudG90YWxQYWdlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5UT1RBTF9QQUdFX0tFWTtcclxuICAgIG9wdGlvbnMucmVzdWx0c0NvdW50ID1cclxuICAgICAgb3B0aW9ucy5yZXN1bHRzQ291bnQgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlJFU1VMVFNfQ09VTlRfS0VZO1xyXG4gICAgb3B0aW9ucy5tYXBwZWREYXRhS2V5ID1cclxuICAgICAgb3B0aW9ucy5tYXBwZWREYXRhS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5NQVBQRURfREFUQV9LRVk7XHJcbiAgICBvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXkgPVxyXG4gICAgICBvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlVOSVFVRV9DT01QQVJFX0tFWTtcclxuICAgIG9wdGlvbnMubWluQ29tcGFyZURhdGVLZXkgPVxyXG4gICAgICBvcHRpb25zLm1pbkNvbXBhcmVEYXRlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5NSU5fQ09NUEFSRV9EQVRFX0tFWTtcclxuICAgIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZUtleSA9XHJcbiAgICAgIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTEFTVF9NT0RJRklFRF9LRVk7XHJcbiAgICBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoID1cclxuICAgICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTEFTVF9NT0RJRklFRF9QQVRIO1xyXG4gICAgb3B0aW9ucy5leGNsdWRlS2V5c1doZW5VcGRhdGUgPVxyXG4gICAgICBvcHRpb25zLmV4Y2x1ZGVLZXlzV2hlblVwZGF0ZSB8fFxyXG4gICAgICBERUZBVUxUX0NBQ0hFX09QVElPTlMuRVhDTFVERV9LRVlTX1dIRU5fVVBEQVRFO1xyXG4gICAgb3B0aW9ucy5jaGlsZHJlblBhdGggPVxyXG4gICAgICBvcHRpb25zLmNoaWxkcmVuUGF0aCB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuQ0hJTERSRU5fUEFUSDtcclxuICAgIG9wdGlvbnMucGFyZW50S2V5ID0gb3B0aW9ucy5wYXJlbnRLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlBBUkVOVF9LRVk7XHJcbiAgfVxyXG4gICNwcmVwYXJlQ29uZmlnKCkge1xyXG4gICAgREVGQVVMVF9UVExfQ09ORklHLlRUTCA9XHJcbiAgICAgIEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy50dGwgfHwgREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuICAgIERFRkFVTFRfVFRMX0NPTkZJRy5VTklUID1cclxuICAgICAgRW52TWFuYWdlci5lbnZpcm9ubWVudD8uY2FjaGU/LnR0bFVuaXQgfHwgREVGQVVMVF9UVExfQ09ORklHLlVOSVQ7XHJcbiAgICBERUZBVUxUX1RUTF9DT05GSUcuQVVUT19DSEVDSyA9XHJcbiAgICAgIEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy5hdXRvQ2hlY2sgPT0gXCJZRVNcIjtcclxuICAgIERFRkFVTFRfVFRMX0NPTkZJRy5SRVRSWSA9XHJcbiAgICAgIEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy5yZXRyeSB8fCBERUZBVUxUX1RUTF9DT05GSUcuUkVUUlk7XHJcbiAgfVxyXG4gICNhZGQxU2Vjb25kVG9Nb2RpZmllZERhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgbGV0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcbiAgICBuZXdEYXRlLnNldFNlY29uZHMobmV3RGF0ZS5nZXRTZWNvbmRzKCkgKyAxKTtcclxuICAgIHJldHVybiBuZXdEYXRlO1xyXG4gIH1cclxuICAjY2xlYXIodXNlck5hbWU6IHN0cmluZywga2V5T3JBbGw6IHN0cmluZyA9IFwiXCIpIHtcclxuICAgIE9iamVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcbiAgICAgIC5maWx0ZXIoKHEpID0+XHJcbiAgICAgICAgcS5zdGFydHNXaXRoKGAke3VzZXJOYW1lfV9fJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7a2V5T3JBbGx9YClcclxuICAgICAgKVxyXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAjdmFsaWRhdGVUVExGb3JLZXkob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG4gICAgY29uc3QgZmlyc3RGZXRjaGluZ0RhdGUgPSB0aGlzLiNnZXRJdGVtKG9wdGlvbnMpPy5maXJzdEZldGNoaW5nRGF0ZTtcclxuXHJcbiAgICBpZiAoIWZpcnN0RmV0Y2hpbmdEYXRlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbW9tZW50RGF0ZTEgPSBtb21lbnQobmV3IERhdGUoZmlyc3RGZXRjaGluZ0RhdGUpKTtcclxuICAgIGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG5cclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKG1vbWVudERhdGUxLCBERUZBVUxUX1RUTF9DT05GSUcuVU5JVCk7XHJcblxyXG4gICAgaWYgKGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTClcclxuICAgICAgdGhpcy4jY2xlYXIob3B0aW9ucy51c2VyTmFtZSwgb3B0aW9ucy5jYWNoZUtleSk7XHJcbiAgfVxyXG4gICNzZXRJdGVtSW5NYXAoa2V5OiBzdHJpbmcsIHZhbD86IENhY2hlSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZW1wdHk6IENhY2hlSW5mbyA9IHtcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIGZpcnN0RmV0Y2hpbmdEYXRlOiBcIlwiLFxyXG4gICAgICBsYXN0TW9kaWZpZWREYXRlOiBcIlwiLFxyXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXHJcbiAgICAgIGZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyOiBmYWxzZSxcclxuICAgICAgb25GaW5pc2hGZXRjaGluZzogbmV3IFN1YmplY3Q8Q2FjaGVJbmZvPigpLFxyXG4gICAgfTtcclxuICAgIGxldCB2YWx1ZTogQ2FjaGVJbmZvID0gdmFsID8gdmFsIDogZW1wdHk7XHJcbiAgICB0aGlzLiNmZXRjaGVkSXRlbXNba2V5XSA9IHZhbHVlO1xyXG4gIH1cclxuICAjZ2V0SXRlbShvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcbiAgICBsZXQgZGF0YTogQ2FjaGVJbmZvO1xyXG4gICAgaWYgKG9wdGlvbnMuaW5NZW1vcnkpIHtcclxuICAgICAgZGF0YSA9IHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldChcclxuICAgICAgICBgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7b3B0aW9ucy5jYWNoZUtleX1gXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghdmFsdWUpIHJldHVybjtcclxuICAgICAgZGF0YSA9IEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gICNzZXRJdGVtKHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcbiAgICBpZiAob3B0aW9ucy5pbk1lbW9yeSkgcmV0dXJuO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5zZXQoXHJcbiAgICAgICAgYCR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH0ke29wdGlvbnMuY2FjaGVLZXl9YCxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY2FjaGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFrQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQ1Usc0JBQThDLEVBQzlDLGNBQThCO1FBRDlCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCOztRQUp4Qyx5Q0FBd0MsSUFBSSxHQUFHLEVBQXFCLEVBQUM7UUFNbkUsdUJBQUEsSUFBSSxvRUFBZSxNQUFuQixJQUFJLENBQWlCLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnQjtRQUN0QixPQUFPLElBQUksQ0FB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QUMsc0JBQXNCLENBQUMsR0FBRyxDQUMzQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQ3JELENBQUM7UUFDRixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsaUVBQ1EsS0FBMEIsRUFBRSxPQUF5QjtJQUM1RCxJQUFJLE9BQU8sQ0FBQyxRQUFRO1FBQUUsT0FBTztTQUN4QjtRQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQzdCLEdBQUcscUJBQXFCLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDdEIsQ0FBQztLQUNIO0FBQ0gsQ0FBQzs4R0F0WFUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZXhwYW5kLCBsYXN0LCBtYXAsIHJldHJ5LCB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IERFRkFVTFRfQ0FDSEVfT1BUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBCYXNlQ2FjaGVPcHRpb25zLCBDYWNoZUluZm8gfSBmcm9tIFwiLi9tb2RlbHNcIjtcclxuaW1wb3J0IF9vbWl0IGZyb20gXCJsb2Rhc2gvb21pdFwiO1xyXG5pbXBvcnQgX2Fzc2lnbiBmcm9tIFwibG9kYXNoL2Fzc2lnblwiO1xyXG5pbXBvcnQgX2Nsb25lRGVlcCBmcm9tIFwibG9kYXNoL2Nsb25lRGVlcFwiO1xyXG5pbXBvcnQgeyBERUZBVUxUX1RUTF9DT05GSUcgfSBmcm9tIFwiLi9jb25maWdcIjtcclxuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3VzZXIvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbGl0aWVzL3V0aWxpdHkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFbnZNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvZW52L2Vudi1tYW5hZ2VyXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWNoZUJhc2VTZXJ2aWNlIHtcclxuICAjZmV0Y2hlZEl0ZW1zOiBNYXA8c3RyaW5nLCBDYWNoZUluZm8+ID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlSW5mbz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy4jcHJlcGFyZUNvbmZpZygpO1xyXG4gIH1cclxuXHJcbiAgaGFzSXRlbShjYWNoZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmhhc0l0ZW0oXHJcbiAgICAgIGAke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtjYWNoZUtleX1gXHJcbiAgICApO1xyXG4gIH1cclxuICBjbGVhckFsbCh1c2VyTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLiNjbGVhcih1c2VyTmFtZSk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlVFRMKHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICghREVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgfHwgIXVzZXJOYW1lKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcHJlZml4ID0gYCR7dXNlck5hbWV9X18ke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9YDtcclxuICAgIE9iamVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcbiAgICAgIC5maWx0ZXIoKHEpID0+IHEuc3RhcnRzV2l0aChwcmVmaXgpKVxyXG4gICAgICAuZmlsdGVyKChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zID0ge1xyXG4gICAgICAgICAgY2FjaGVLZXk6IGtleS5yZXBsYWNlKHByZWZpeCwgXCJcIiksXHJcbiAgICAgICAgICB1c2VyTmFtZTogdXNlck5hbWUsXHJcbiAgICAgICAgICByZXF1ZXN0OiBERUZBVUxUX0NBQ0hFX09QVElPTlMuUkVRVUVTVCxcclxuICAgICAgICAgIHByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZzogREVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRVBBUkVfREFUQSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGZpcnN0RmV0Y2hpbmdEYXRlID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKT8uZmlyc3RGZXRjaGluZ0RhdGU7XHJcbiAgICAgICAgaWYgKCFmaXJzdEZldGNoaW5nRGF0ZSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBtb21lbnREYXRlMSA9IG1vbWVudChuZXcgRGF0ZShmaXJzdEZldGNoaW5nRGF0ZSkpO1xyXG4gICAgICAgIGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKFxyXG4gICAgICAgICAgbW9tZW50RGF0ZTEsXHJcbiAgICAgICAgICBERUZBVUxUX1RUTF9DT05GSUcuVU5JVFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuICAgICAgfSlcclxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc3RhcnRGZXRjaGluZ0l0ZW1zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy4jdmFsaWRhdGVUVExGb3JLZXkob3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XT8uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI2ZldGNoZWRJdGVtc1tcclxuICAgICAgICBvcHRpb25zLmNhY2hlS2V5XHJcbiAgICAgIF0ub25GaW5pc2hGZXRjaGluZy5hc09ic2VydmFibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuI2hhbmRsZUNhY2hlSXRlbXMob3B0aW9ucykucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgcmV0dXJuIHRoaXMuI2ZldGNoZWRJdGVtc1tcclxuICAgICAgICBvcHRpb25zLmNhY2hlS2V5XHJcbiAgICAgIF0ub25GaW5pc2hGZXRjaGluZy5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgI2hhbmRsZUNhY2hlSXRlbXMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgb2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgdGhpcy4jcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuI2dldEl0ZW0ob3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKGNhY2hlZEl0ZW0pIHtcclxuICAgICAgdGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXksIHtcclxuICAgICAgICAuLi5jYWNoZWRJdGVtLFxyXG4gICAgICAgIGZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyOiBmYWxzZSxcclxuICAgICAgICBvbkZpbmlzaEZldGNoaW5nOiBuZXcgU3ViamVjdDxDYWNoZUluZm8+KCksXHJcbiAgICAgICAgcmVxdWVzdDogb3B0aW9ucy5yZXF1ZXN0LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICBbb3B0aW9ucy5wYWdlS2V5XTogMCxcclxuICAgICAgICBbb3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleV06IHRoaXMuI2FkZDFTZWNvbmRUb01vZGlmaWVkRGF0ZShcclxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5sYXN0TW9kaWZpZWREYXRlKVxyXG4gICAgICAgICkudG9JU09TdHJpbmcoKSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnBhcmFtcyA9IHBhcmFtcztcclxuICAgICAgb2JzZXJ2YWJsZSA9IG9wdGlvbnMucmVxdWVzdChwYXJhbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXkpO1xyXG4gICAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdDtcclxuICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmZpcnN0RmV0Y2hpbmdEYXRlID1cclxuICAgICAgICBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIG9ic2VydmFibGUgPSBvcHRpb25zLnJlcXVlc3QoeyBbb3B0aW9ucy5wYWdlS2V5XTogMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSB0cnVlO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGUucGlwZShcclxuICAgICAgcmV0cnkoREVGQVVMVF9UVExfQ09ORklHLlJFVFJZKSxcclxuICAgICAgZXhwYW5kKChyZXN1bHRzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgYW5vdGhlckNhbGw6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBhbm90aGVyQ2FsbCA9IHRoaXMuI2hhbmRsZUZldGNoZWRJdGVtcyhvcHRpb25zLCByZXN1bHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFub3RoZXJDYWxsID8gYW5vdGhlckNhbGwgOiBFTVBUWTtcclxuICAgICAgfSksXHJcbiAgICAgIGxhc3QoKSxcclxuICAgICAgbWFwKChfKSA9PiB7XHJcbiAgICAgICAgbGV0IF9mZXRjaGVkSXRlbXMgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0gYXMgQ2FjaGVJbmZvO1xyXG4gICAgICAgIF9mZXRjaGVkSXRlbXMuZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAoX2ZldGNoZWRJdGVtcy5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgIF9mZXRjaGVkSXRlbXMubGFzdE1vZGlmaWVkRGF0ZSA9IHRoaXMuI2ZpbmRMYXJnZXN0RGF0ZShcclxuICAgICAgICAgICAgX2ZldGNoZWRJdGVtcy5kYXRhLFxyXG4gICAgICAgICAgICBvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuICAgICAgICAgICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuI3NldEl0ZW0oXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBkYXRhOiBfZmV0Y2hlZEl0ZW1zLmRhdGEsXHJcbiAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkRGF0ZTogX2ZldGNoZWRJdGVtcy5sYXN0TW9kaWZpZWREYXRlLFxyXG4gICAgICAgICAgICAgIGZpcnN0RmV0Y2hpbmdEYXRlOiBfZmV0Y2hlZEl0ZW1zLmZpcnN0RmV0Y2hpbmdEYXRlLFxyXG4gICAgICAgICAgICAgIHJlc3VsdHNDb3VudDogX2ZldGNoZWRJdGVtc1tvcHRpb25zLnJlc3VsdHNDb3VudF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBfZmV0Y2hlZEl0ZW1zO1xyXG4gICAgICB9KSxcclxuICAgICAgbWFwKChyZXMpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBfY2xvbmVEZWVwKHtcclxuICAgICAgICAgIFtvcHRpb25zLm1hcHBlZERhdGFLZXldOiByZXMuZGF0YSxcclxuICAgICAgICAgIFtvcHRpb25zLmxhc3RNb2RpZmllZERhdGVLZXldOiByZXMubGFzdE1vZGlmaWVkRGF0ZSxcclxuICAgICAgICAgIFtvcHRpb25zLnJlc3VsdHNDb3VudF06IHJlc1tvcHRpb25zLnJlc3VsdHNDb3VudF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzLm9uRmluaXNoRmV0Y2hpbmcubmV4dChyZXN1bHQpO1xyXG4gICAgICAgIHJlcy5vbkZpbmlzaEZldGNoaW5nLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXI7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAjZmluZE5vZGUoXHJcbiAgICBpdGVtczogYW55W10sXHJcbiAgICB1bmlxdWVDb21wYXJlS2V5OiBzdHJpbmcsXHJcbiAgICBjaGlsZHJlblBhdGg6IHN0cmluZyxcclxuICAgIHZhbHVlOiBhbnlcclxuICApIHtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBpdGVtcykge1xyXG4gICAgICBpZiAobm9kZVt1bmlxdWVDb21wYXJlS2V5XSA9PT0gdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgY2hpbGRyZW5QYXRoKTtcclxuICAgICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy4jZmluZE5vZGUoXHJcbiAgICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICAgIHVuaXF1ZUNvbXBhcmVLZXksXHJcbiAgICAgICAgICBjaGlsZHJlblBhdGgsXHJcbiAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAjZmluZExhcmdlc3REYXRlKFxyXG4gICAgbm9kZUxpc3Q6IGFueVtdLFxyXG4gICAgY2hpbGRyZW5QYXRoOiBzdHJpbmcsXHJcbiAgICBkYXRlUGF0aDogc3RyaW5nXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGxldCBsYXJnZXN0RGF0ZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGNvbnN0IHRyYXZlcnNlID0gKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKG5vZGUsIGNoaWxkcmVuUGF0aCk7XHJcbiAgICAgIGNvbnN0IG5vZGVEYXRlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBkYXRlUGF0aCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBub2RlRGF0ZSAmJlxyXG4gICAgICAgICghbGFyZ2VzdERhdGUgfHwgbmV3IERhdGUobm9kZURhdGUpID4gbmV3IERhdGUobGFyZ2VzdERhdGUpKVxyXG4gICAgICApIHtcclxuICAgICAgICBsYXJnZXN0RGF0ZSA9IG5vZGVEYXRlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgICAgdHJhdmVyc2UoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIG5vZGVMaXN0LmZvckVhY2goKG5vZGUpID0+IHRyYXZlcnNlKG5vZGUpKTtcclxuICAgIHJldHVybiBsYXJnZXN0RGF0ZTtcclxuICB9XHJcbiAgI2hhbmRsZUZldGNoZWRJdGVtcyhcclxuICAgIG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMsXHJcbiAgICByZXM6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgcmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV0uc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShcclxuICAgICAgICAgIGEsXHJcbiAgICAgICAgICBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzZWNvbmQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKFxyXG4gICAgICAgICAgYixcclxuICAgICAgICAgIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGhcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShmaXJzdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoc2Vjb25kKS5nZXRUaW1lKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuI2ZpbmROb2RlKFxyXG4gICAgICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEsXHJcbiAgICAgICAgICBvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXksXHJcbiAgICAgICAgICBvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuICAgICAgICAgIGVsZW1lbnRbb3B0aW9ucy51bmlxdWVDb21wYXJlS2V5XVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IG1hcHBlZEVsZW1lbnQgPSBvcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyhbZWxlbWVudF0pWzBdO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAvLyBlZGl0IDogdXBkYXRlIGl0ZW0gaW4gY2FjaGVcclxuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkU291cmNlID0gX29taXQoXHJcbiAgICAgICAgICAgIG1hcHBlZEVsZW1lbnQsXHJcbiAgICAgICAgICAgIG9wdGlvbnMuZXhjbHVkZUtleXNXaGVuVXBkYXRlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgX2Fzc2lnbihpdGVtLCBmaWx0ZXJlZFNvdXJjZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGFkZCA6IGNoZWNrIGRhdGUgdG8gZGV0ZXJtaW5lIHdoZXJlIHdpbGwgaW5zZXJ0XHJcblxyXG4gICAgICAgICAgLy8gaWYgaXRlbSBwYXJlbnQgbm90IGZvdW5kIGFkZCBhcyByb290IGVsc2Ugd2lsbCBhZGQgbGVhdmVzIHRvIHN1YlBhcmVudFxyXG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuI2ZpbmROb2RlKFxyXG4gICAgICAgICAgICB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSxcclxuICAgICAgICAgICAgb3B0aW9ucy51bmlxdWVDb21wYXJlS2V5LFxyXG4gICAgICAgICAgICBvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuICAgICAgICAgICAgZWxlbWVudFtvcHRpb25zLnBhcmVudEtleV1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgLy8gd2lsbCBjb21wYXJlIHdpdGggbm9kZSBjaGlsZCB0byBhZGRcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKFxyXG4gICAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgICAgb3B0aW9ucy5jaGlsZHJlblBhdGhcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy4jYWRkSXRlbXNUbyhvcHRpb25zLCBjaGlsZHJlbiwgZWxlbWVudCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB3aWxsIGNvbXBhcmUgd2l0aCByb290IGxldmVsIHRvIGFkZFxyXG4gICAgICAgICAgICB0aGlzLiNhZGRJdGVtc1RvKFxyXG4gICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEsXHJcbiAgICAgICAgICAgICAgZWxlbWVudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XSA9IG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFxyXG4gICAgICAgIHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhID0gcmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV07XHJcbiAgICAgIHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5yZXN1bHRzQ291bnQgPVxyXG4gICAgICAgIHJlc1tvcHRpb25zLnJlc3VsdHNDb3VudF07XHJcbiAgICB9XHJcbiAgICBpZiAocmVzW29wdGlvbnMudG90YWxQYWdlS2V5XSAtIHJlc1tvcHRpb25zLnBhZ2VLZXldID4gMSkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnJlcXVlc3Qoe1xyXG4gICAgICAgIC4uLih0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucGFyYW1zIHx8IHt9KSxcclxuICAgICAgICBbb3B0aW9ucy5wYWdlS2V5XTogcmVzW29wdGlvbnMucGFnZUtleV0gKyAxLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAjYWRkSXRlbXNUbyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zLCBkYXRhOiBhbnlbXSwgaXRlbTogYW55KSB7XHJcbiAgICBjb25zdCBmaXJzdENhY2hlZE1vZGlmaWVkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShcclxuICAgICAgZGF0YVswXSxcclxuICAgICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGN1cnJlbnRNb2RpZmllZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcbiAgICAgIGl0ZW0sXHJcbiAgICAgIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGhcclxuICAgICk7XHJcbiAgICBpZiAoZmlyc3RDYWNoZWRNb2RpZmllZCA8IGN1cnJlbnRNb2RpZmllZCkge1xyXG4gICAgICBkYXRhLnVuc2hpZnQoLi4ub3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoW2l0ZW1dKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXRhLnB1c2goLi4ub3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoW2l0ZW1dKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNwcmVwYXJlT3B0aW9ucyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcbiAgICBvcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyA9XHJcbiAgICAgIG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVQQVJFX0RBVEE7XHJcbiAgICBvcHRpb25zLnBhZ2VLZXkgPSBvcHRpb25zLnBhZ2VLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlBBR0VfS0VZO1xyXG4gICAgb3B0aW9ucy50b3RhbFBhZ2VLZXkgPVxyXG4gICAgICBvcHRpb25zLnRvdGFsUGFnZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuVE9UQUxfUEFHRV9LRVk7XHJcbiAgICBvcHRpb25zLnJlc3VsdHNDb3VudCA9XHJcbiAgICAgIG9wdGlvbnMucmVzdWx0c0NvdW50IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5SRVNVTFRTX0NPVU5UX0tFWTtcclxuICAgIG9wdGlvbnMubWFwcGVkRGF0YUtleSA9XHJcbiAgICAgIG9wdGlvbnMubWFwcGVkRGF0YUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTUFQUEVEX0RBVEFfS0VZO1xyXG4gICAgb3B0aW9ucy51bmlxdWVDb21wYXJlS2V5ID1cclxuICAgICAgb3B0aW9ucy51bmlxdWVDb21wYXJlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5VTklRVUVfQ09NUEFSRV9LRVk7XHJcbiAgICBvcHRpb25zLm1pbkNvbXBhcmVEYXRlS2V5ID1cclxuICAgICAgb3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTUlOX0NPTVBBUkVfREFURV9LRVk7XHJcbiAgICBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVLZXkgPVxyXG4gICAgICBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkxBU1RfTU9ESUZJRURfS0VZO1xyXG4gICAgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCA9XHJcbiAgICAgIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGggfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkxBU1RfTU9ESUZJRURfUEFUSDtcclxuICAgIG9wdGlvbnMuZXhjbHVkZUtleXNXaGVuVXBkYXRlID1cclxuICAgICAgb3B0aW9ucy5leGNsdWRlS2V5c1doZW5VcGRhdGUgfHxcclxuICAgICAgREVGQVVMVF9DQUNIRV9PUFRJT05TLkVYQ0xVREVfS0VZU19XSEVOX1VQREFURTtcclxuICAgIG9wdGlvbnMuY2hpbGRyZW5QYXRoID1cclxuICAgICAgb3B0aW9ucy5jaGlsZHJlblBhdGggfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkNISUxEUkVOX1BBVEg7XHJcbiAgICBvcHRpb25zLnBhcmVudEtleSA9IG9wdGlvbnMucGFyZW50S2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QQVJFTlRfS0VZO1xyXG4gIH1cclxuICAjcHJlcGFyZUNvbmZpZygpIHtcclxuICAgIERFRkFVTFRfVFRMX0NPTkZJRy5UVEwgPVxyXG4gICAgICBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8udHRsIHx8IERFRkFVTFRfVFRMX0NPTkZJRy5UVEw7XHJcbiAgICBERUZBVUxUX1RUTF9DT05GSUcuVU5JVCA9XHJcbiAgICAgIEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy50dGxVbml0IHx8IERFRkFVTFRfVFRMX0NPTkZJRy5VTklUO1xyXG4gICAgREVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgPVxyXG4gICAgICBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8uYXV0b0NoZWNrID09IFwiWUVTXCI7XHJcbiAgICBERUZBVUxUX1RUTF9DT05GSUcuUkVUUlkgPVxyXG4gICAgICBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8ucmV0cnkgfHwgREVGQVVMVF9UVExfQ09ORklHLlJFVFJZO1xyXG4gIH1cclxuICAjYWRkMVNlY29uZFRvTW9kaWZpZWREYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgIGxldCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgbmV3RGF0ZS5zZXRTZWNvbmRzKG5ld0RhdGUuZ2V0U2Vjb25kcygpICsgMSk7XHJcbiAgICByZXR1cm4gbmV3RGF0ZTtcclxuICB9XHJcbiAgI2NsZWFyKHVzZXJOYW1lOiBzdHJpbmcsIGtleU9yQWxsOiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICBPYmplY3Qua2V5cyh3aW5kb3cubG9jYWxTdG9yYWdlKVxyXG4gICAgICAuZmlsdGVyKChxKSA9PlxyXG4gICAgICAgIHEuc3RhcnRzV2l0aChgJHt1c2VyTmFtZX1fXyR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH0ke2tleU9yQWxsfWApXHJcbiAgICAgIClcclxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgI3ZhbGlkYXRlVFRMRm9yS2V5KG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZpcnN0RmV0Y2hpbmdEYXRlID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKT8uZmlyc3RGZXRjaGluZ0RhdGU7XHJcblxyXG4gICAgaWYgKCFmaXJzdEZldGNoaW5nRGF0ZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG1vbWVudERhdGUxID0gbW9tZW50KG5ldyBEYXRlKGZpcnN0RmV0Y2hpbmdEYXRlKSk7XHJcbiAgICBjb25zdCBtb21lbnREYXRlMiA9IG1vbWVudChuZXcgRGF0ZSgpKTtcclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gbW9tZW50RGF0ZTIuZGlmZihtb21lbnREYXRlMSwgREVGQVVMVF9UVExfQ09ORklHLlVOSVQpO1xyXG5cclxuICAgIGlmIChkaWZmZXJlbmNlID49IERFRkFVTFRfVFRMX0NPTkZJRy5UVEwpXHJcbiAgICAgIHRoaXMuI2NsZWFyKG9wdGlvbnMudXNlck5hbWUsIG9wdGlvbnMuY2FjaGVLZXkpO1xyXG4gIH1cclxuICAjc2V0SXRlbUluTWFwKGtleTogc3RyaW5nLCB2YWw/OiBDYWNoZUluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGVtcHR5OiBDYWNoZUluZm8gPSB7XHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgICBmaXJzdEZldGNoaW5nRGF0ZTogXCJcIixcclxuICAgICAgbGFzdE1vZGlmaWVkRGF0ZTogXCJcIixcclxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxyXG4gICAgICBmZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlcjogZmFsc2UsXHJcbiAgICAgIG9uRmluaXNoRmV0Y2hpbmc6IG5ldyBTdWJqZWN0PENhY2hlSW5mbz4oKSxcclxuICAgIH07XHJcbiAgICBsZXQgdmFsdWU6IENhY2hlSW5mbyA9IHZhbCA/IHZhbCA6IGVtcHR5O1xyXG4gICAgdGhpcy4jZmV0Y2hlZEl0ZW1zW2tleV0gPSB2YWx1ZTtcclxuICB9XHJcbiAgI2dldEl0ZW0ob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG4gICAgbGV0IGRhdGE6IENhY2hlSW5mbztcclxuICAgIGlmIChvcHRpb25zLmluTWVtb3J5KSB7XHJcbiAgICAgIGRhdGEgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH0ke29wdGlvbnMuY2FjaGVLZXl9YFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm47XHJcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICAjc2V0SXRlbSh2YWx1ZTogUmVjb3JkPHN0cmluZywgYW55Piwgb3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMuaW5NZW1vcnkpIHJldHVybjtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2Uuc2V0KFxyXG4gICAgICAgIGAke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtvcHRpb25zLmNhY2hlS2V5fWAsXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFsdWUpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2610,7 +2610,8 @@ class CacheBaseService {
2610
2610
  return __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].onFinishFetching.asObservable();
2611
2611
  }
2612
2612
  else {
2613
- return __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_handleCacheItems).call(this, options);
2613
+ __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_handleCacheItems).call(this, options).pipe(take(1)).subscribe();
2614
+ return __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].onFinishFetching.asObservable();
2614
2615
  }
2615
2616
  }
2616
2617
  }
@@ -2665,6 +2666,8 @@ _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = ne
2665
2666
  res.onFinishFetching.next(result);
2666
2667
  res.onFinishFetching.complete();
2667
2668
  return result;
2669
+ }), catchError((er) => {
2670
+ throw er;
2668
2671
  }));
2669
2672
  }, _CacheBaseService_findNode = function _CacheBaseService_findNode(items, uniqueCompareKey, childrenPath, value) {
2670
2673
  for (const node of items) {