ntk-cms-api 1.2.239 → 1.2.240

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.
@@ -57,15 +57,10 @@ export class ApiCmsServerBase extends ApiServerBase {
57
57
  const serviceName = 'ServiceGetOneById';
58
58
  const serviceNameKay = serviceName + '_' + id;
59
59
  if (this.getModuleCashService().includes(serviceName)) {
60
- if (this.cachApiResult[serviceNameKay]?.isSuccess && this.cachApiCallDate[serviceNameKay]) {
61
- if ((new Date().getTime() - this.cachApiCallDate[serviceNameKay].getTime()) < this.cashApiSeconds)
60
+ do {
61
+ if (this.cashApiIsValid(serviceNameKay))
62
62
  return of(this.cachApiResult[serviceNameKay]);
63
- this.cachApiResult[serviceNameKay] = null;
64
- }
65
- while (this.cachApiCallDate[serviceNameKay] && (new Date().getTime() - this.cachApiCallDate[serviceNameKay].getTime()) < this.cashApiSeconds) {
66
- if (this.cachApiResult[serviceNameKay]?.isSuccess)
67
- return of(this.cachApiResult[serviceNameKay]);
68
- }
63
+ } while (this.cachApiCallDate[serviceNameKay] && (new Date().getTime() - this.cachApiCallDate[serviceNameKay].getTime()) < this.cashApiSeconds);
69
64
  this.cachApiCallDate[serviceNameKay] = new Date();
70
65
  }
71
66
  //! optimaze call api
@@ -78,8 +73,10 @@ export class ApiCmsServerBase extends ApiServerBase {
78
73
  // catchError(this.handleError)
79
74
  map((ret) => {
80
75
  //! optimaze call api
81
- if (this.getModuleCashService().includes(serviceName))
76
+ if (this.getModuleCashService().includes(serviceName)) {
82
77
  this.cachApiResult[serviceNameKay] = ret;
78
+ this.cachApiResult[serviceNameKay].dateResult = new Date();
79
+ }
83
80
  //! optimaze call api
84
81
  return this.errorExceptionResultCheck(ret);
85
82
  }));
@@ -446,4 +443,4 @@ ApiCmsServerBase.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ver
446
443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApiCmsServerBase, decorators: [{
447
444
  type: Injectable
448
445
  }] });
449
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ21zU2VydmVyQmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnRrLWNtcy1hcGkvc3JjL2xpYi9zZXJ2aWNlL2Jhc2UvYXBpQ21zU2VydmVyQmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8zQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBYzNFLE1BQU0sT0FBTyxnQkFBNkMsU0FBUSxhQUFhO0lBQzdFLGdCQUFnQjtRQUNkLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxZQUFZLEVBQUU7WUFDckUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDM0IsQ0FBQzthQUNELElBQUk7UUFDSCwrQkFBK0I7UUFDL0IsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNELHVCQUF1QjtRQUNyQiwyQkFBMkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFz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Q0FBQzthQUNELElBQUksQ0FDSCxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxQiwrQkFBK0I7UUFDL0IsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNELG9CQUFvQixDQUFDLEVBQVE7UUFDM0IsMkJBQTJCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUMvRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUMzQixDQUFDO2FBQ0QsSUFBSSxDQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFCLCtCQUErQjtRQUMvQixHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOzs2R0E5ZlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgcmV0cnksIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFwaVNlcnZlckJhc2UgfSBmcm9tICcuL2FwaVNlcnZlckJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVycm9yRXhjZXB0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0JztcclxuaW1wb3J0IHsgRXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0QmFzZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdGVyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5L2Jhc2UvZmlsdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBFcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5L2Jhc2UvZXJyb3JFeGNlcHRpb25SZXN1bHRFeHBvcnRGaWxlJztcclxuaW1wb3J0IHsgUmVjb3JkU3RhdHVzRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcy9iYXNlL3JlY29yZFN0YXR1c0VudW0nO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRW50aXR5UmVwb3J0RmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1haW4vY29yZU1vZHVsZUVudGl0eVJlcG9ydEZpbGVNb2RlbCc7XHJcbmltcG9ydCB7IElBcGlDbXNTZXJ2ZXJCYXNlIH0gZnJvbSAnLi9pQXBpQ21zU2VydmVyQmFzZSc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGVEYXRhTWVtb01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1vZHVsZS1kYXRhL2NvcmVNb2R1bGVEYXRhTWVtb01vZGVsJztcclxuaW1wb3J0IHsgRXhwb3J0RmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2V4cG9ydEZpbGVNb2RlbCc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGVTaG93S2V5RHRvTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHRvL2NvcmUtbW9kdWxlL2NvcmVNb2R1bGVTaG93S2V5RHRvTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlTG9nU2hvd0tleU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1vZHVsZS1sb2cvY29yZU1vZHVsZUxvZ1Nob3dLZXlNb2RlbCc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGVEYXRhQ29tbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1vZHVsZS1kYXRhL2NvcmVNb2R1bGVEYXRhQ29tbWVudE1vZGVsJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZURhdGFQaW5Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHkvY29yZS1tb2R1bGUtZGF0YS9jb3JlTW9kdWxlRGF0YVBpbk1vZGVsJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZURhdGFUYXNrTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5L2NvcmUtbW9kdWxlLWRhdGEvY29yZU1vZHVsZURhdGFUYXNrTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRGF0YU1lbW9EdG9Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vY29yZS1tb2R1bGUvY29yZU1vZHVsZURhdGFNZW1vRHRvTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRGF0YVRhc2tEdG9Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vY29yZS1tb2R1bGUvY29yZU1vZHVsZURhdGFUYXNrRHRvTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRGF0YVBpbkR0b01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R0by9jb3JlLW1vZHVsZS9jb3JlTW9kdWxlRGF0YVBpbkR0b01vZGVsJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZURhdGFDb21tZW50RHRvTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHRvL2NvcmUtbW9kdWxlL2NvcmVNb2R1bGVEYXRhQ29tbWVudER0b01vZGVsJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBpQ21zU2VydmVyQmFzZTxUTW9kZWwsIFRLZXksIFRGaWx0ZXJNb2RlbD4gZXh0ZW5kcyBBcGlTZXJ2ZXJCYXNlIGltcGxlbWVudHMgSUFwaUNtc1NlcnZlckJhc2Uge1xyXG4gIFNlcnZpY2VWaWV3TW9kZWwoKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9WaWV3TW9kZWwnLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VSZXBvcnRGaWxlR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZUVudGl0eVJlcG9ydEZpbGVNb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1JlcG9ydEZpbGVHZXRBbGwnLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBTZXJ2aWNlR2V0QWxsKG1vZGVsOiBURmlsdGVyTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PFRNb2RlbD4+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvZ2V0QWxsJywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZUdldEFsbEVkaXRvcihtb2RlbDogVEZpbHRlck1vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL2dldEFsbEVkaXRvcicsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VHZXRPbmVCeUlkKGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICAvLyEgb3B0aW1hemUgY2FsbCBhcGlcclxuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gJ1NlcnZpY2VHZXRPbmVCeUlkJztcclxuICAgIGNvbnN0IHNlcnZpY2VOYW1lS2F5ID0gc2VydmljZU5hbWUgKyAnXycgKyBpZDtcclxuICAgIGlmICh0aGlzLmdldE1vZHVsZUNhc2hTZXJ2aWNlKCkuaW5jbHVkZXMoc2VydmljZU5hbWUpKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hBcGlSZXN1bHRbc2VydmljZU5hbWVLYXldPy5pc1N1Y2Nlc3MgJiYgdGhpcy5jYWNoQXBpQ2FsbERhdGVbc2VydmljZU5hbWVLYXldKSB7XHJcbiAgICAgICAgaWYgKChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuY2FjaEFwaUNhbGxEYXRlW3NlcnZpY2VOYW1lS2F5XS5nZXRUaW1lKCkpIDwgdGhpcy5jYXNoQXBpU2Vjb25kcylcclxuICAgICAgICAgIHJldHVybiBvZih0aGlzLmNhY2hBcGlSZXN1bHRbc2VydmljZU5hbWVLYXldKTtcclxuICAgICAgICB0aGlzLmNhY2hBcGlSZXN1bHRbc2VydmljZU5hbWVLYXldID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgd2hpbGUgKHRoaXMuY2FjaEFwaUNhbGxEYXRlW3NlcnZpY2VOYW1lS2F5XSAmJiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLmNhY2hBcGlDYWxsRGF0ZVtzZXJ2aWNlTmFtZUtheV0uZ2V0VGltZSgpKSA8IHRoaXMuY2FzaEFwaVNlY29uZHMpIHtcclxuICAgICAgICBpZiAodGhpcy5jYWNoQXBpUmVzdWx0W3NlcnZpY2VOYW1lS2F5XT8uaXNTdWNjZXNzKVxyXG4gICAgICAgICAgcmV0dXJuIG9mKHRoaXMuY2FjaEFwaVJlc3VsdFtzZXJ2aWNlTmFtZUtheV0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FjaEFwaUNhbGxEYXRlW3NlcnZpY2VOYW1lS2F5XSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICAvLyEgb3B0aW1hemUgY2FsbCBhcGlcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8hIG9wdGltYXplIGNhbGwgYXBpXHJcbiAgICAgICAgICBpZiAodGhpcy5nZXRNb2R1bGVDYXNoU2VydmljZSgpLmluY2x1ZGVzKHNlcnZpY2VOYW1lKSlcclxuICAgICAgICAgICAgdGhpcy5jYWNoQXBpUmVzdWx0W3NlcnZpY2VOYW1lS2F5XSA9IHJldDtcclxuICAgICAgICAgIC8vISBvcHRpbWF6ZSBjYWxsIGFwaVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgU2VydmljZUdldENvdW50KG1vZGVsOiBGaWx0ZXJNb2RlbCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL0NvdW50JywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZUNoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VTZXRTdGF0dXMoaWQ6IFRLZXksIHJlY29yZFN0YXR1czogUmVjb3JkU3RhdHVzRW51bSk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8VE1vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvU2V0U3RhdHVzLycgKyBpZCArIFwiL1wiICsgcmVjb3JkU3RhdHVzLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VHZXRFeGlzdChtb2RlbDogRmlsdGVyTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9leGlzdCcsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdEJhc2VDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgU2VydmljZUV4cG9ydEZpbGUobW9kZWw6IEZpbHRlck1vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGU+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvRXhwb3J0RmlsZScsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrRXhwb3J0RmlsZShyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgU2VydmljZUV4cG9ydEZpbGVHZXRPbmUoaWQ6IFRLZXksIG1vZGVsOiBFeHBvcnRGaWxlTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0RXhwb3J0RmlsZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICBpZiAobW9kZWwgPT0gbnVsbCkge1xyXG4gICAgICBtb2RlbCA9IG5ldyBFeHBvcnRGaWxlTW9kZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL0V4cG9ydEZpbGUvJyArIGlkLCBtb2RlbCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVja0V4cG9ydEZpbGUocmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZUFkZChtb2RlbDogVE1vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvJywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIFNlcnZpY2VFZGl0KG1vZGVsOiBUTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PFRNb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucHV0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnLycsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBTZXJ2aWNlRGVsZXRlKGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZGVsZXRlKHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlRGVsZXRlTGlzdChpZHM6IFRLZXlbXSk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvRGVsZXRlTGlzdCcsIGlkcywge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlRGVsZXRlRW50aXR5KG1vZGVsOiBUTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL2RlbGV0ZScsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKk1lbW8gKi9cclxuICBTZXJ2aWNlTWVtb0FkZChtb2RlbDogQ29yZU1vZHVsZURhdGFNZW1vRHRvTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL01lbW9BZGQnLCBtb2RlbCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlTWVtb0RlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL01lbW9EZWxldGUvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VNZW1vR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZURhdGFNZW1vTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9NZW1vR2V0QWxsLycsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZU1lbW9HZXRBbGxFbnRpdHkoaWQ6IFRLZXkpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhTWVtb01vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvTWVtb0dldEFsbC8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqTWVtbyAqL1xyXG4gIC8qKlBpbiAqL1xyXG4gIFNlcnZpY2VQaW5BZGQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9QaW5BZGQvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VQaW5EZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9QaW5EZWxldGUvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VQaW5DaGVjayhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1BpbkNoZWNrLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlUGluR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZURhdGFQaW5Nb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1BpbkdldEFsbC8nLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VQaW5HZXRBbGxFbnRpdHkoaWQ6IFRLZXkpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhUGluTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9QaW5HZXRBbGwvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlBpbiAqL1xyXG4gIC8qKlRhc2sgKi9cclxuICBTZXJ2aWNlVGFza0FkZChtb2RlbDogQ29yZU1vZHVsZURhdGFUYXNrRHRvTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1Rhc2tBZGQnLCBtb2RlbCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlVGFza0RlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1Rhc2tEZWxldGUvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VUYXNrR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZURhdGFUYXNrTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9UYXNrR2V0QWxsLycsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZVRhc2tHZXRBbGxFbnRpdHkoaWQ6IFRLZXkpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhVGFza01vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvVGFza0dldEFsbC8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqVGFzayAqL1xyXG4gIC8qKmNvbW1lbnQgKi9cclxuXHJcbiAgU2VydmljZUNvbW1lbnRBZGQobW9kZWw6IENvcmVNb2R1bGVEYXRhQ29tbWVudER0b01vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9Db21tZW50QWRkJywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZUNvbW1lbnREZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9Db21tZW50RGVsZXRlLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlQ29tbWVudEdldEFsbCgpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhQ29tbWVudE1vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvQ29tbWVudEdldEFsbC8nLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VDb21tZW50R2V0QWxsRW50aXR5KGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxDb3JlTW9kdWxlRGF0YUNvbW1lbnRNb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL0NvbW1lbnRHZXRBbGwvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipjb21tZW50ICovXHJcbiAgU2VydmljZVNob3dLZXlBZGQobW9kZWw6IENvcmVNb2R1bGVTaG93S2V5RHRvTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVMb2dTaG93S2V5TW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvU2hvd0tleUFkZCcsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VTaG93S2V5R2V0QWxsKGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxDb3JlTW9kdWxlTG9nU2hvd0tleU1vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvU2hvd0tleUdldEFsbC8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIl19
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ21zU2VydmVyQmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnRrLWNtcy1hcGkvc3JjL2xpYi9zZXJ2aWNlL2Jhc2UvYXBpQ21zU2VydmVyQmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8zQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBYzNFLE1BQU0sT0FBTyxnQkFBNkMsU0FBUSxhQUFhO0lBQzdFLGdCQUFnQjtRQUNkLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxZQUFZLEVBQUU7WUFDckUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDM0IsQ0FBQzthQUNELElBQUk7UUFDSCwrQkFBK0I7UUFDL0IsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNELHVCQUF1QjtRQUNyQiwyQkFBMkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFz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QUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUMvRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUMzQixDQUFDO2FBQ0QsSUFBSSxDQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFCLCtCQUErQjtRQUMvQixHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOzs2R0ExZlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgcmV0cnksIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFwaVNlcnZlckJhc2UgfSBmcm9tICcuL2FwaVNlcnZlckJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVycm9yRXhjZXB0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0JztcclxuaW1wb3J0IHsgRXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0QmFzZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdGVyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5L2Jhc2UvZmlsdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBFcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5L2Jhc2UvZXJyb3JFeGNlcHRpb25SZXN1bHRFeHBvcnRGaWxlJztcclxuaW1wb3J0IHsgUmVjb3JkU3RhdHVzRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcy9iYXNlL3JlY29yZFN0YXR1c0VudW0nO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRW50aXR5UmVwb3J0RmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1haW4vY29yZU1vZHVsZUVudGl0eVJlcG9ydEZpbGVNb2RlbCc7XHJcbmltcG9ydCB7IElBcGlDbXNTZXJ2ZXJCYXNlIH0gZnJvbSAnLi9pQXBpQ21zU2VydmVyQmFzZSc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGVEYXRhTWVtb01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1vZHVsZS1kYXRhL2NvcmVNb2R1bGVEYXRhTWVtb01vZGVsJztcclxuaW1wb3J0IHsgRXhwb3J0RmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2V4cG9ydEZpbGVNb2RlbCc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGVTaG93S2V5RHRvTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHRvL2NvcmUtbW9kdWxlL2NvcmVNb2R1bGVTaG93S2V5RHRvTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlTG9nU2hvd0tleU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1vZHVsZS1sb2cvY29yZU1vZHVsZUxvZ1Nob3dLZXlNb2RlbCc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGVEYXRhQ29tbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9jb3JlLW1vZHVsZS1kYXRhL2NvcmVNb2R1bGVEYXRhQ29tbWVudE1vZGVsJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZURhdGFQaW5Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHkvY29yZS1tb2R1bGUtZGF0YS9jb3JlTW9kdWxlRGF0YVBpbk1vZGVsJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZURhdGFUYXNrTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5L2NvcmUtbW9kdWxlLWRhdGEvY29yZU1vZHVsZURhdGFUYXNrTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRGF0YU1lbW9EdG9Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vY29yZS1tb2R1bGUvY29yZU1vZHVsZURhdGFNZW1vRHRvTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRGF0YVRhc2tEdG9Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vY29yZS1tb2R1bGUvY29yZU1vZHVsZURhdGFUYXNrRHRvTW9kZWwnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlRGF0YVBpbkR0b01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R0by9jb3JlLW1vZHVsZS9jb3JlTW9kdWxlRGF0YVBpbkR0b01vZGVsJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZURhdGFDb21tZW50RHRvTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHRvL2NvcmUtbW9kdWxlL2NvcmVNb2R1bGVEYXRhQ29tbWVudER0b01vZGVsJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBpQ21zU2VydmVyQmFzZTxUTW9kZWwsIFRLZXksIFRGaWx0ZXJNb2RlbD4gZXh0ZW5kcyBBcGlTZXJ2ZXJCYXNlIGltcGxlbWVudHMgSUFwaUNtc1NlcnZlckJhc2Uge1xyXG4gIFNlcnZpY2VWaWV3TW9kZWwoKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9WaWV3TW9kZWwnLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VSZXBvcnRGaWxlR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZUVudGl0eVJlcG9ydEZpbGVNb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1JlcG9ydEZpbGVHZXRBbGwnLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBTZXJ2aWNlR2V0QWxsKG1vZGVsOiBURmlsdGVyTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PFRNb2RlbD4+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvZ2V0QWxsJywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZUdldEFsbEVkaXRvcihtb2RlbDogVEZpbHRlck1vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL2dldEFsbEVkaXRvcicsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VHZXRPbmVCeUlkKGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICAvLyEgb3B0aW1hemUgY2FsbCBhcGlcclxuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gJ1NlcnZpY2VHZXRPbmVCeUlkJztcclxuICAgIGNvbnN0IHNlcnZpY2VOYW1lS2F5ID0gc2VydmljZU5hbWUgKyAnXycgKyBpZDtcclxuICAgIGlmICh0aGlzLmdldE1vZHVsZUNhc2hTZXJ2aWNlKCkuaW5jbHVkZXMoc2VydmljZU5hbWUpKSB7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICBpZiAodGhpcy5jYXNoQXBpSXNWYWxpZChzZXJ2aWNlTmFtZUtheSkpXHJcbiAgICAgICAgICByZXR1cm4gb2YodGhpcy5jYWNoQXBpUmVzdWx0W3NlcnZpY2VOYW1lS2F5XSk7XHJcbiAgICAgIH0gd2hpbGUgKHRoaXMuY2FjaEFwaUNhbGxEYXRlW3NlcnZpY2VOYW1lS2F5XSAmJiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLmNhY2hBcGlDYWxsRGF0ZVtzZXJ2aWNlTmFtZUtheV0uZ2V0VGltZSgpKSA8IHRoaXMuY2FzaEFwaVNlY29uZHMpO1xyXG4gICAgICB0aGlzLmNhY2hBcGlDYWxsRGF0ZVtzZXJ2aWNlTmFtZUtheV0gPSBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgLy8hIG9wdGltYXplIGNhbGwgYXBpXHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vISBvcHRpbWF6ZSBjYWxsIGFwaVxyXG4gICAgICAgICAgaWYgKHRoaXMuZ2V0TW9kdWxlQ2FzaFNlcnZpY2UoKS5pbmNsdWRlcyhzZXJ2aWNlTmFtZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jYWNoQXBpUmVzdWx0W3NlcnZpY2VOYW1lS2F5XSA9IHJldDtcclxuICAgICAgICAgICAgdGhpcy5jYWNoQXBpUmVzdWx0W3NlcnZpY2VOYW1lS2F5XS5kYXRlUmVzdWx0ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vISBvcHRpbWF6ZSBjYWxsIGFwaVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgU2VydmljZUdldENvdW50KG1vZGVsOiBGaWx0ZXJNb2RlbCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL0NvdW50JywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZUNoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VTZXRTdGF0dXMoaWQ6IFRLZXksIHJlY29yZFN0YXR1czogUmVjb3JkU3RhdHVzRW51bSk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8VE1vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvU2V0U3RhdHVzLycgKyBpZCArIFwiL1wiICsgcmVjb3JkU3RhdHVzLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VHZXRFeGlzdChtb2RlbDogRmlsdGVyTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9leGlzdCcsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdEJhc2VDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgU2VydmljZUV4cG9ydEZpbGUobW9kZWw6IEZpbHRlck1vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGU+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvRXhwb3J0RmlsZScsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrRXhwb3J0RmlsZShyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgU2VydmljZUV4cG9ydEZpbGVHZXRPbmUoaWQ6IFRLZXksIG1vZGVsOiBFeHBvcnRGaWxlTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0RXhwb3J0RmlsZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICBpZiAobW9kZWwgPT0gbnVsbCkge1xyXG4gICAgICBtb2RlbCA9IG5ldyBFeHBvcnRGaWxlTW9kZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL0V4cG9ydEZpbGUvJyArIGlkLCBtb2RlbCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVja0V4cG9ydEZpbGUocmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZUFkZChtb2RlbDogVE1vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvJywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIFNlcnZpY2VFZGl0KG1vZGVsOiBUTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PFRNb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucHV0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnLycsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBTZXJ2aWNlRGVsZXRlKGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZGVsZXRlKHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlRGVsZXRlTGlzdChpZHM6IFRLZXlbXSk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvRGVsZXRlTGlzdCcsIGlkcywge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlRGVsZXRlRW50aXR5KG1vZGVsOiBUTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL2RlbGV0ZScsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKk1lbW8gKi9cclxuICBTZXJ2aWNlTWVtb0FkZChtb2RlbDogQ29yZU1vZHVsZURhdGFNZW1vRHRvTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL01lbW9BZGQnLCBtb2RlbCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlTWVtb0RlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL01lbW9EZWxldGUvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VNZW1vR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZURhdGFNZW1vTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9NZW1vR2V0QWxsLycsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZU1lbW9HZXRBbGxFbnRpdHkoaWQ6IFRLZXkpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhTWVtb01vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvTWVtb0dldEFsbC8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqTWVtbyAqL1xyXG4gIC8qKlBpbiAqL1xyXG4gIFNlcnZpY2VQaW5BZGQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9QaW5BZGQvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VQaW5EZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9QaW5EZWxldGUvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VQaW5DaGVjayhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1BpbkNoZWNrLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlUGluR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZURhdGFQaW5Nb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1BpbkdldEFsbC8nLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VQaW5HZXRBbGxFbnRpdHkoaWQ6IFRLZXkpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhUGluTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9QaW5HZXRBbGwvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlBpbiAqL1xyXG4gIC8qKlRhc2sgKi9cclxuICBTZXJ2aWNlVGFza0FkZChtb2RlbDogQ29yZU1vZHVsZURhdGFUYXNrRHRvTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1Rhc2tBZGQnLCBtb2RlbCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlVGFza0RlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL1Rhc2tEZWxldGUvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VUYXNrR2V0QWxsKCk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHQ8Q29yZU1vZHVsZURhdGFUYXNrTW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9UYXNrR2V0QWxsLycsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZVRhc2tHZXRBbGxFbnRpdHkoaWQ6IFRLZXkpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhVGFza01vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvVGFza0dldEFsbC8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqVGFzayAqL1xyXG4gIC8qKmNvbW1lbnQgKi9cclxuXHJcbiAgU2VydmljZUNvbW1lbnRBZGQobW9kZWw6IENvcmVNb2R1bGVEYXRhQ29tbWVudER0b01vZGVsKTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2U+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9Db21tZW50QWRkJywgbW9kZWwsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbiAgU2VydmljZUNvbW1lbnREZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlPiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmdldEJhc2VVcmwoKSArIHRoaXMuZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpICsgJy9Db21tZW50RGVsZXRlLycgKyBpZCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSh0aGlzLmNvbmZpZ0FwaVJldHJ5KSxcclxuICAgICAgICAvLyBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICAgbWFwKChyZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjayhyZXQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuICBTZXJ2aWNlQ29tbWVudEdldEFsbCgpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVEYXRhQ29tbWVudE1vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvQ29tbWVudEdldEFsbC8nLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VDb21tZW50R2V0QWxsRW50aXR5KGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxDb3JlTW9kdWxlRGF0YUNvbW1lbnRNb2RlbD4+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz10cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZ2V0QmFzZVVybCgpICsgdGhpcy5nZXRNb2R1bGVDb250cm9sbGVyVXJsKCkgKyAnL0NvbW1lbnRHZXRBbGwvJyArIGlkLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipjb21tZW50ICovXHJcbiAgU2VydmljZVNob3dLZXlBZGQobW9kZWw6IENvcmVNb2R1bGVTaG93S2V5RHRvTW9kZWwpOiBPYnNlcnZhYmxlPEVycm9yRXhjZXB0aW9uUmVzdWx0PENvcmVNb2R1bGVMb2dTaG93S2V5TW9kZWw+PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9dHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvU2hvd0tleUFkZCcsIG1vZGVsLCB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHJldHJ5KHRoaXMuY29uZmlnQXBpUmV0cnkpLFxyXG4gICAgICAgIC8vIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgICBtYXAoKHJldDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrKHJldCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIFNlcnZpY2VTaG93S2V5R2V0QWxsKGlkOiBUS2V5KTogT2JzZXJ2YWJsZTxFcnJvckV4Y2VwdGlvblJlc3VsdDxDb3JlTW9kdWxlTG9nU2hvd0tleU1vZGVsPj4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPXRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5nZXRCYXNlVXJsKCkgKyB0aGlzLmdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKSArICcvU2hvd0tleUdldEFsbC8nICsgaWQsIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgcmV0cnkodGhpcy5jb25maWdBcGlSZXRyeSksXHJcbiAgICAgICAgLy8gY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICAgICAgIG1hcCgocmV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2socmV0KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIl19
@@ -27,6 +27,15 @@ export class ApiServerBase {
27
27
  localStorage.setItem(this.keyBaseUrl, url);
28
28
  this.configApiRetry = apiRetry;
29
29
  }
30
+ cashApiIsValid(serviceNameKay) {
31
+ if (!this.cachApiResult[serviceNameKay])
32
+ return false;
33
+ if (!this.cachApiResult[serviceNameKay].isSuccess)
34
+ return true;
35
+ if (this.cachApiResult[serviceNameKay].dateResult && (new Date().getTime() - this.cachApiResult[serviceNameKay].dateResult) < this.cashApiSeconds)
36
+ return true;
37
+ return false;
38
+ }
30
39
  childConstructor() {
31
40
  // test
32
41
  }
@@ -185,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
185
194
  type: Inject,
186
195
  args: [HttpClient]
187
196
  }] }, { type: i1.NtkCmsApiStoreService }]; } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpU2VydmVyQmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnRrLWNtcy1hcGkvc3JjL2xpYi9zZXJ2aWNlL2Jhc2UvYXBpU2VydmVyQmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTRCLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVM1RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUF1QyxJQUFnQixFQUFTLFdBQWtDO1FBQTNELFNBQUksR0FBSixJQUFJLENBQVk7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFJM0YsWUFBTyxHQUFHLDJCQUEyQixDQUFDO1FBQ3RDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQixtQkFBYyxHQUFHLGFBQWEsQ0FBQztRQUMvQixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBRWYsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU8zQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQXBCcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUMzQyxDQUFDO0lBV0QsU0FBUyxDQUFDLEdBQVcsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixZQUFZLENB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VUFBVTs4R0FEbkIsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkFFSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVycm9yRXhjZXB0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0JztcclxuaW1wb3J0IHsgRXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0QmFzZSc7XHJcbmltcG9ydCB7IEVycm9yRXhjZXB0aW9uUmVzdWx0RXhwb3J0RmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHkvYmFzZS9lcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGUnO1xyXG5pbXBvcnQgeyBNYW5hZ2VVc2VyQWNjZXNzRGF0YVR5cGVzRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcy9iYXNlL21hbmFnZVVzZXJBY2Nlc3NEYXRhVHlwZXNFbnVtJztcclxuaW1wb3J0IHsgTnRrQ21zQXBpU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVkdWNlcnMvbnRrQ21zQXBpU3RvcmUuc2VydmljZSc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBpU2VydmVyQmFzZSB7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChIdHRwQ2xpZW50KSBwdWJsaWMgaHR0cDogSHR0cENsaWVudCwgcHVibGljIGNtc0FwaVN0b3JlOiBOdGtDbXNBcGlTdG9yZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuY2hpbGRDb25zdHJ1Y3RvcigpO1xyXG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICB9XHJcbiAgcHVibGljIGJhc2VVcmwgPSAnaHR0cHM6Ly9hcGljbXMuaXIvYXBpL3YyLyc7XHJcbiAgcHVibGljIHVzZXJUb2tlbiA9ICcnO1xyXG4gIHB1YmxpYyBkZXZpY2VUb2tlbiA9ICcnO1xyXG4gIHB1YmxpYyBjb25maWdBcGlSZXRyeSA9IDA7XHJcbiAga2V5VXNlclRva2VuID0gJ3VzZXJUb2tlbic7XHJcbiAga2V5RGV2aWNlVG9rZW4gPSAnZGV2aWNlVG9rZW4nO1xyXG4gIGtleUJhc2VVcmwgPSAnYmFzZVVybCc7XHJcbiAgcHJpdmF0ZSBoZWFkZXJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByaXZhdGUgYWNjZXNzTG9hZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYWNjZXNzRGF0YVR5cGU6IE1hbmFnZVVzZXJBY2Nlc3NEYXRhVHlwZXNFbnVtO1xyXG4gIHNldENvbmZpZyh1cmw6IHN0cmluZywgYXBpUmV0cnkgPSAxKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSB1cmw7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleUJhc2VVcmwsIHVybCk7XHJcbiAgICB0aGlzLmNvbmZpZ0FwaVJldHJ5ID0gYXBpUmV0cnk7XHJcbiAgfVxyXG4gIGNhY2hBcGlSZXN1bHQgPSBbXTtcclxuICBjYWNoQXBpQ2FsbERhdGUgPSBbXTtcclxuICBjYXNoQXBpU2Vjb25kcyA9IDUwMDA7XHJcbiAgY2hpbGRDb25zdHJ1Y3RvcigpOiBhbnkge1xyXG4gICAgLy8gdGVzdFxyXG4gIH1cclxuICBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBCYXNlVXJsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlCYXNlVXJsKTtcclxuICAgIGlmIChCYXNlVXJsICYmIEJhc2VVcmwubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gQmFzZVVybDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhc2VVcmw7XHJcbiAgfVxyXG4gIGdldE1vZHVsZUNvbnRyb2xsZXJVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnRW1wdHknO1xyXG4gIH1cclxuICBnZXRNb2R1bGVDYXNoU2VydmljZSgpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG4gIHNldEhlYWRlcnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVycy5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgfVxyXG4gIHNldEFjY2Vzc0xvYWQoc3RhdHVzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY2Nlc3NMb2FkID0gc3RhdHVzO1xyXG4gIH1cclxuICBzZXRBY2Nlc3NEYXRhVHlwZShzdGF0dXM6IE1hbmFnZVVzZXJBY2Nlc3NEYXRhVHlwZXNFbnVtKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjY2Vzc0RhdGFUeXBlID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMudXNlclRva2VuICYmIHRoaXMudXNlclRva2VuLmxlbmd0aCA+IDApIHsgcmV0dXJuIHRoaXMudXNlclRva2VuOyB9XHJcbiAgICBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5VXNlclRva2VuKTtcclxuICAgIGlmICh0b2tlbiAmJiB0b2tlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0b2tlbjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpdGxlID0gJ9iq2KfbjNuM2K8g2KrZiNqp2YYnO1xyXG4gICAgY29uc3QgbWVzc2FnZSA9ICfZhNi32YHYpyDZhdis2K/Yr9inINmI2KfYsdivINit2LPYp9ioINqp2KfYsdio2LHbjCDYrtmI2K8g2LTZiNuM2K8nO1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXREZXZpY2VUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLmRldmljZVRva2VuICYmIHRoaXMuZGV2aWNlVG9rZW4ubGVuZ3RoID4gMCkgeyByZXR1cm4gdGhpcy5kZXZpY2VUb2tlbjsgfVxyXG4gICAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleURldmljZVRva2VuKTtcclxuICAgIGlmICh0b2tlbiAmJiB0b2tlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0b2tlbjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgc2V0VG9rZW4odXNlclRva2VuOiBzdHJpbmcsIGRldmljZVRva2VuOiBzdHJpbmcsIHJlZnJlc2hUb2tlbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoKCF1c2VyVG9rZW4gfHwgdXNlclRva2VuLmxlbmd0aCA9PT0gMCkgJiYgKCFkZXZpY2VUb2tlbiB8fCBkZXZpY2VUb2tlbi5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5VXNlclRva2VuKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5rZXlEZXZpY2VUb2tlbik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMua2V5VXNlclRva2VuLCB1c2VyVG9rZW4pO1xyXG4gICAgaWYgKGRldmljZVRva2VuICYmIGRldmljZVRva2VuLmxlbmd0aCA+IDApIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlEZXZpY2VUb2tlbiwgZGV2aWNlVG9rZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXREZXZpY2VUb2tlbihkZXZpY2VUb2tlbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWRldmljZVRva2VuIHx8IGRldmljZVRva2VuLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleURldmljZVRva2VuKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlEZXZpY2VUb2tlbiwgZGV2aWNlVG9rZW4pO1xyXG4gIH1cclxuICByZW1vdmVUb2tlbigpOiB2b2lkIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5VXNlclRva2VuKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5RGV2aWNlVG9rZW4pO1xyXG4gIH1cclxuICBnZXRIZWFkZXJzKCk6IGFueSB7XHJcbiAgICAvKkF1dGhvcml6YXRpb24qL1xyXG4gICAgaWYgKHRoaXMuZ2V0VXNlclRva2VuKCkgJiYgdGhpcy5nZXRVc2VyVG9rZW4oKS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldFVzZXJUb2tlbigpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5oZWFkZXJzLmhhcygnQXV0aG9yaXphdGlvbicpKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5kZWxldGUoJ0F1dGhvcml6YXRpb24nKTtcclxuICAgIH1cclxuICAgIC8qRGV2aWNlVG9rZW4qL1xyXG4gICAgaWYgKHRoaXMuZ2V0RGV2aWNlVG9rZW4oKSAmJiB0aGlzLmdldERldmljZVRva2VuKCkubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmhlYWRlcnMuc2V0KCdEZXZpY2VUb2tlbicsIHRoaXMuZ2V0RGV2aWNlVG9rZW4oKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhZGVycy5oYXMoJ0RldmljZVRva2VuJykpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzLmRlbGV0ZSgnRGV2aWNlVG9rZW4nKTtcclxuICAgIH1cclxuICAgIC8qQWNjZXNzTG9hZCovXHJcbiAgICBpZiAodGhpcy5hY2Nlc3NMb2FkKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ0FjY2Vzc0xvYWQnLCAndHJ1ZScpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5oZWFkZXJzLmhhcygnQWNjZXNzTG9hZCcpKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5kZWxldGUoJ0FjY2Vzc0xvYWQnKTtcclxuICAgIH1cclxuICAgIC8qQWNjZXNzRGF0YVR5cGUqL1xyXG4gICAgaWYgKHRoaXMuYWNjZXNzRGF0YVR5cGUpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzLnNldCgnQWNjZXNzRGF0YVR5cGUnLCB0aGlzLmFjY2Vzc0RhdGFUeXBlLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5oZWFkZXJzLmhhcygnQWNjZXNzRGF0YVR5cGUnKSkge1xyXG4gICAgICB0aGlzLmhlYWRlcnMuZGVsZXRlKCdBY2Nlc3NEYXRhVHlwZScpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0T3V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIHRoaXMuaGVhZGVycykge1xyXG4gICAgICByZXRPdXRba10gPSB2OyAvLyBsb29rIG91dCEgS2V5IG11c3QgYmUgYSBzdHJpbmchXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0T3V0O1xyXG4gIH1cclxuXHJcbiAgZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVjazxUTW9kZWw+KG1vZGVsOiBFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+KTogRXJyb3JFeGNlcHRpb25SZXN1bHQ8VE1vZGVsPiB7XHJcbiAgICBpZiAobW9kZWwpIHtcclxuICAgICAgaWYgKCFtb2RlbC5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9ICfYrti32Kcg2K/YsSDYr9ix24zYp9mB2Kog2KfYt9mE2KfYudin2Kog2KfYsiDYs9ix2YjYsSc7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG1vZGVsLmVycm9yTWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vZGVsO1xyXG4gIH1cclxuICBlcnJvckV4Y2VwdGlvblJlc3VsdEJhc2VDaGVjayhtb2RlbDogRXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlKTogRXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlIHtcclxuICAgIGlmIChtb2RlbCkge1xyXG4gICAgICBpZiAoIW1vZGVsLmlzU3VjY2Vzcykge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlID0gJ9iu2LfYpyDYr9ixINiv2LHbjNin2YHYqiDYp9i32YTYp9i52KfYqiDYp9iyINiz2LHZiNixJztcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gbW9kZWwuZXJyb3JNZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTdGF0dXM9ZmFsc2U7XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG4gIGVycm9yRXhjZXB0aW9uUmVzdWx0Q2hlY2tFeHBvcnRGaWxlKG1vZGVsOiBFcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGUpOiBFcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGUge1xyXG4gICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgIGlmICghbW9kZWwuaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgY29uc3QgdGl0bGUgPSAn2K7Yt9inINiv2LEg2K/YsduM2KfZgdiqINin2LfZhNin2LnYp9iqINin2LIg2LPYsdmI2LEnO1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBtb2RlbC5lcnJvck1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz1mYWxzZTtcclxuICAgIHJldHVybiBtb2RlbDtcclxuICB9XHJcbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgY2F1Z2h0OiBPYnNlcnZhYmxlPGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IGVycm9yTWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzKSB7XHJcbiAgICAgIC8vIHNlcnZlci1zaWRlIGVycm9yXHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBDbXMgRXJyb3IgQ29kZTogJHtlcnJvci5zdGF0dXN9XFxuTWVzc2FnZTogJHtlcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSB8fCBlcnJvci5zdGF0dXMgPT09ICc0MDEnKSB7XHJcbiAgICAgICAgY29uc3QgdGl0bGUgPSAn2K7Yt9in24wg2KfZhdmG24zYqtuMJztcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gJ9mE2LfZgdinINmF2KzYr9ivINmI2KfYsdivINiz24zYs9iq2YUg2LTZiNivJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcclxuICAgICAgLy8gY2xpZW50LXNpZGUgZXJyb3JcclxuICAgICAgZXJyb3JNZXNzYWdlID0gYENtcyBFcnJvcjogJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcclxuICB9XHJcbn1cclxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpU2VydmVyQmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnRrLWNtcy1hcGkvc3JjL2xpYi9zZXJ2aWNlL2Jhc2UvYXBpU2VydmVyQmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTRCLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVM1RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUF1QyxJQUFnQixFQUFTLFdBQWtDO1FBQTNELFNBQUksR0FBSixJQUFJLENBQVk7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFJM0YsWUFBTyxHQUFHLDJCQUEyQixDQUFDO1FBQ3RDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQixtQkFBYyxHQUFHLGFBQWEsQ0FBQztRQUMvQixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBRWYsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU8zQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQXBCcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUMzQyxDQUFDO0lBV0QsU0FBUyxDQUFDLEdBQVcsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixZQUFZLENB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QixLQUFLLENBQUMsTUFBTSxjQUFjLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1RSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNsRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUM7Z0JBQzVCLE1BQU0sT0FBTyxHQUFHLDBCQUEwQixDQUFDO2FBQzVDO1NBQ0Y7YUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLFlBQVksVUFBVSxFQUFFO1lBQzVDLG9CQUFvQjtZQUNwQixZQUFZLEdBQUcsY0FBYyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3BEO1FBRUQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7MEdBaExVLGFBQWEsa0JBQ0osVUFBVTs4R0FEbkIsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkFFSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVycm9yRXhjZXB0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0JztcclxuaW1wb3J0IHsgRXJyb3JFeGNlcHRpb25SZXN1bHRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS9iYXNlL2Vycm9yRXhjZXB0aW9uUmVzdWx0QmFzZSc7XHJcbmltcG9ydCB7IEVycm9yRXhjZXB0aW9uUmVzdWx0RXhwb3J0RmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHkvYmFzZS9lcnJvckV4Y2VwdGlvblJlc3VsdEV4cG9ydEZpbGUnO1xyXG5pbXBvcnQgeyBNYW5hZ2VVc2VyQWNjZXNzRGF0YVR5cGVzRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcy9iYXNlL21hbmFnZVVzZXJBY2Nlc3NEYXRhVHlwZXNFbnVtJztcclxuaW1wb3J0IHsgTnRrQ21zQXBpU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVkdWNlcnMvbnRrQ21zQXBpU3RvcmUuc2VydmljZSc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBpU2VydmVyQmFzZSB7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChIdHRwQ2xpZW50KSBwdWJsaWMgaHR0cDogSHR0cENsaWVudCwgcHVibGljIGNtc0FwaVN0b3JlOiBOdGtDbXNBcGlTdG9yZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuY2hpbGRDb25zdHJ1Y3RvcigpO1xyXG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICB9XHJcbiAgcHVibGljIGJhc2VVcmwgPSAnaHR0cHM6Ly9hcGljbXMuaXIvYXBpL3YyLyc7XHJcbiAgcHVibGljIHVzZXJUb2tlbiA9ICcnO1xyXG4gIHB1YmxpYyBkZXZpY2VUb2tlbiA9ICcnO1xyXG4gIHB1YmxpYyBjb25maWdBcGlSZXRyeSA9IDA7XHJcbiAga2V5VXNlclRva2VuID0gJ3VzZXJUb2tlbic7XHJcbiAga2V5RGV2aWNlVG9rZW4gPSAnZGV2aWNlVG9rZW4nO1xyXG4gIGtleUJhc2VVcmwgPSAnYmFzZVVybCc7XHJcbiAgcHJpdmF0ZSBoZWFkZXJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByaXZhdGUgYWNjZXNzTG9hZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYWNjZXNzRGF0YVR5cGU6IE1hbmFnZVVzZXJBY2Nlc3NEYXRhVHlwZXNFbnVtO1xyXG4gIHNldENvbmZpZyh1cmw6IHN0cmluZywgYXBpUmV0cnkgPSAxKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSB1cmw7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleUJhc2VVcmwsIHVybCk7XHJcbiAgICB0aGlzLmNvbmZpZ0FwaVJldHJ5ID0gYXBpUmV0cnk7XHJcbiAgfVxyXG4gIGNhY2hBcGlSZXN1bHQgPSBbXTtcclxuICBjYWNoQXBpQ2FsbERhdGUgPSBbXTtcclxuICBjYXNoQXBpU2Vjb25kcyA9IDUwMDA7XHJcbiAgY2FzaEFwaUlzVmFsaWQoc2VydmljZU5hbWVLYXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmNhY2hBcGlSZXN1bHRbc2VydmljZU5hbWVLYXldKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuY2FjaEFwaVJlc3VsdFtzZXJ2aWNlTmFtZUtheV0uaXNTdWNjZXNzKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmNhY2hBcGlSZXN1bHRbc2VydmljZU5hbWVLYXldLmRhdGVSZXN1bHQgJiYgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5jYWNoQXBpUmVzdWx0W3NlcnZpY2VOYW1lS2F5XS5kYXRlUmVzdWx0KSA8IHRoaXMuY2FzaEFwaVNlY29uZHMpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBjaGlsZENvbnN0cnVjdG9yKCk6IGFueSB7XHJcbiAgICAvLyB0ZXN0XHJcbiAgfVxyXG4gIGdldEJhc2VVcmwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IEJhc2VVcmwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleUJhc2VVcmwpO1xyXG4gICAgaWYgKEJhc2VVcmwgJiYgQmFzZVVybC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiBCYXNlVXJsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFzZVVybDtcclxuICB9XHJcbiAgZ2V0TW9kdWxlQ29udHJvbGxlclVybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdFbXB0eSc7XHJcbiAgfVxyXG4gIGdldE1vZHVsZUNhc2hTZXJ2aWNlKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcbiAgc2V0SGVhZGVycyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5oZWFkZXJzLnNldChrZXksIHZhbHVlKTtcclxuICB9XHJcbiAgc2V0QWNjZXNzTG9hZChzdGF0dXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjY2Vzc0xvYWQgPSBzdGF0dXM7XHJcbiAgfVxyXG4gIHNldEFjY2Vzc0RhdGFUeXBlKHN0YXR1czogTWFuYWdlVXNlckFjY2Vzc0RhdGFUeXBlc0VudW0pOiB2b2lkIHtcclxuICAgIHRoaXMuYWNjZXNzRGF0YVR5cGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy51c2VyVG9rZW4gJiYgdGhpcy51c2VyVG9rZW4ubGVuZ3RoID4gMCkgeyByZXR1cm4gdGhpcy51c2VyVG9rZW47IH1cclxuICAgIGNvbnN0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlVc2VyVG9rZW4pO1xyXG4gICAgaWYgKHRva2VuICYmIHRva2VuLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRva2VuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGl0bGUgPSAn2KrYp9uM24zYryDYqtmI2qnZhic7XHJcbiAgICBjb25zdCBtZXNzYWdlID0gJ9mE2LfZgdinINmF2KzYr9iv2Kcg2YjYp9ix2K8g2K3Ys9in2Kgg2qnYp9ix2KjYsduMINiu2YjYryDYtNmI24zYryc7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGdldERldmljZVRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZGV2aWNlVG9rZW4gJiYgdGhpcy5kZXZpY2VUb2tlbi5sZW5ndGggPiAwKSB7IHJldHVybiB0aGlzLmRldmljZVRva2VuOyB9XHJcbiAgICBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5RGV2aWNlVG9rZW4pO1xyXG4gICAgaWYgKHRva2VuICYmIHRva2VuLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRva2VuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBzZXRUb2tlbih1c2VyVG9rZW46IHN0cmluZywgZGV2aWNlVG9rZW46IHN0cmluZywgcmVmcmVzaFRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICgoIXVzZXJUb2tlbiB8fCB1c2VyVG9rZW4ubGVuZ3RoID09PSAwKSAmJiAoIWRldmljZVRva2VuIHx8IGRldmljZVRva2VuLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5rZXlVc2VyVG9rZW4pO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleURldmljZVRva2VuKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlVc2VyVG9rZW4sIHVzZXJUb2tlbik7XHJcbiAgICBpZiAoZGV2aWNlVG9rZW4gJiYgZGV2aWNlVG9rZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleURldmljZVRva2VuLCBkZXZpY2VUb2tlbik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldERldmljZVRva2VuKGRldmljZVRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghZGV2aWNlVG9rZW4gfHwgZGV2aWNlVG9rZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5RGV2aWNlVG9rZW4pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleURldmljZVRva2VuLCBkZXZpY2VUb2tlbik7XHJcbiAgfVxyXG4gIHJlbW92ZVRva2VuKCk6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5rZXlVc2VyVG9rZW4pO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5rZXlEZXZpY2VUb2tlbik7XHJcbiAgfVxyXG4gIGdldEhlYWRlcnMoKTogYW55IHtcclxuICAgIC8qQXV0aG9yaXphdGlvbiovXHJcbiAgICBpZiAodGhpcy5nZXRVc2VyVG9rZW4oKSAmJiB0aGlzLmdldFVzZXJUb2tlbigpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0VXNlclRva2VuKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYWRlcnMuaGFzKCdBdXRob3JpemF0aW9uJykpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzLmRlbGV0ZSgnQXV0aG9yaXphdGlvbicpO1xyXG4gICAgfVxyXG4gICAgLypEZXZpY2VUb2tlbiovXHJcbiAgICBpZiAodGhpcy5nZXREZXZpY2VUb2tlbigpICYmIHRoaXMuZ2V0RGV2aWNlVG9rZW4oKS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ0RldmljZVRva2VuJywgdGhpcy5nZXREZXZpY2VUb2tlbigpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5oZWFkZXJzLmhhcygnRGV2aWNlVG9rZW4nKSkge1xyXG4gICAgICB0aGlzLmhlYWRlcnMuZGVsZXRlKCdEZXZpY2VUb2tlbicpO1xyXG4gICAgfVxyXG4gICAgLypBY2Nlc3NMb2FkKi9cclxuICAgIGlmICh0aGlzLmFjY2Vzc0xvYWQpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzLnNldCgnQWNjZXNzTG9hZCcsICd0cnVlJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmhlYWRlcnMuaGFzKCdBY2Nlc3NMb2FkJykpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzLmRlbGV0ZSgnQWNjZXNzTG9hZCcpO1xyXG4gICAgfVxyXG4gICAgLypBY2Nlc3NEYXRhVHlwZSovXHJcbiAgICBpZiAodGhpcy5hY2Nlc3NEYXRhVHlwZSkge1xyXG4gICAgICB0aGlzLmhlYWRlcnMuc2V0KCdBY2Nlc3NEYXRhVHlwZScsIHRoaXMuYWNjZXNzRGF0YVR5cGUudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmhlYWRlcnMuaGFzKCdBY2Nlc3NEYXRhVHlwZScpKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5kZWxldGUoJ0FjY2Vzc0RhdGFUeXBlJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXRPdXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgdGhpcy5oZWFkZXJzKSB7XHJcbiAgICAgIHJldE91dFtrXSA9IHY7IC8vIGxvb2sgb3V0ISBLZXkgbXVzdCBiZSBhIHN0cmluZyFcclxuICAgIH1cclxuICAgIHJldHVybiByZXRPdXQ7XHJcbiAgfVxyXG5cclxuICBlcnJvckV4Y2VwdGlvblJlc3VsdENoZWNrPFRNb2RlbD4obW9kZWw6IEVycm9yRXhjZXB0aW9uUmVzdWx0PFRNb2RlbD4pOiBFcnJvckV4Y2VwdGlvblJlc3VsdDxUTW9kZWw+IHtcclxuICAgIGlmIChtb2RlbCkge1xyXG4gICAgICBpZiAoIW1vZGVsLmlzU3VjY2Vzcykge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlID0gJ9iu2LfYpyDYr9ixINiv2LHbjNin2YHYqiDYp9i32YTYp9i52KfYqiDYp9iyINiz2LHZiNixJztcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gbW9kZWwuZXJyb3JNZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG4gIGVycm9yRXhjZXB0aW9uUmVzdWx0QmFzZUNoZWNrKG1vZGVsOiBFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2UpOiBFcnJvckV4Y2VwdGlvblJlc3VsdEJhc2Uge1xyXG4gICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgIGlmICghbW9kZWwuaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgY29uc3QgdGl0bGUgPSAn2K7Yt9inINiv2LEg2K/YsduM2KfZgdiqINin2LfZhNin2LnYp9iqINin2LIg2LPYsdmI2LEnO1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBtb2RlbC5lcnJvck1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMubG9hZGluZ1N0YXR1cz1mYWxzZTtcclxuICAgIHJldHVybiBtb2RlbDtcclxuICB9XHJcbiAgZXJyb3JFeGNlcHRpb25SZXN1bHRDaGVja0V4cG9ydEZpbGUobW9kZWw6IEVycm9yRXhjZXB0aW9uUmVzdWx0RXhwb3J0RmlsZSk6IEVycm9yRXhjZXB0aW9uUmVzdWx0RXhwb3J0RmlsZSB7XHJcbiAgICBpZiAobW9kZWwpIHtcclxuICAgICAgaWYgKCFtb2RlbC5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9ICfYrti32Kcg2K/YsSDYr9ix24zYp9mB2Kog2KfYt9mE2KfYudin2Kog2KfYsiDYs9ix2YjYsSc7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG1vZGVsLmVycm9yTWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3RhdHVzPWZhbHNlO1xyXG4gICAgcmV0dXJuIG1vZGVsO1xyXG4gIH1cclxuICBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBjYXVnaHQ6IE9ic2VydmFibGU8YW55Pik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcclxuICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMpIHtcclxuICAgICAgLy8gc2VydmVyLXNpZGUgZXJyb3JcclxuICAgICAgZXJyb3JNZXNzYWdlID0gYENtcyBFcnJvciBDb2RlOiAke2Vycm9yLnN0YXR1c31cXG5NZXNzYWdlOiAke2Vycm9yLm1lc3NhZ2V9YDtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IGVycm9yLnN0YXR1cyA9PT0gJzQwMScpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9ICfYrti32KfbjCDYp9mF2YbbjNiq24wnO1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAn2YTYt9mB2Kcg2YXYrNiv2K8g2YjYp9ix2K8g2LPbjNiz2KrZhSDYtNmI2K8nO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAvLyBjbGllbnQtc2lkZSBlcnJvclxyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQ21zIEVycm9yOiAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1277,6 +1277,15 @@ class ApiServerBase {
1277
1277
  localStorage.setItem(this.keyBaseUrl, url);
1278
1278
  this.configApiRetry = apiRetry;
1279
1279
  }
1280
+ cashApiIsValid(serviceNameKay) {
1281
+ if (!this.cachApiResult[serviceNameKay])
1282
+ return false;
1283
+ if (!this.cachApiResult[serviceNameKay].isSuccess)
1284
+ return true;
1285
+ if (this.cachApiResult[serviceNameKay].dateResult && (new Date().getTime() - this.cachApiResult[serviceNameKay].dateResult) < this.cashApiSeconds)
1286
+ return true;
1287
+ return false;
1288
+ }
1280
1289
  childConstructor() {
1281
1290
  // test
1282
1291
  }
@@ -1679,20 +1688,14 @@ class ApiCmsServerBase extends ApiServerBase {
1679
1688
  }));
1680
1689
  }
1681
1690
  ServiceGetOneById(id) {
1682
- var _a, _b;
1683
1691
  //! optimaze call api
1684
1692
  const serviceName = 'ServiceGetOneById';
1685
1693
  const serviceNameKay = serviceName + '_' + id;
1686
1694
  if (this.getModuleCashService().includes(serviceName)) {
1687
- if (((_a = this.cachApiResult[serviceNameKay]) === null || _a === void 0 ? void 0 : _a.isSuccess) && this.cachApiCallDate[serviceNameKay]) {
1688
- if ((new Date().getTime() - this.cachApiCallDate[serviceNameKay].getTime()) < this.cashApiSeconds)
1689
- return of(this.cachApiResult[serviceNameKay]);
1690
- this.cachApiResult[serviceNameKay] = null;
1691
- }
1692
- while (this.cachApiCallDate[serviceNameKay] && (new Date().getTime() - this.cachApiCallDate[serviceNameKay].getTime()) < this.cashApiSeconds) {
1693
- if ((_b = this.cachApiResult[serviceNameKay]) === null || _b === void 0 ? void 0 : _b.isSuccess)
1695
+ do {
1696
+ if (this.cashApiIsValid(serviceNameKay))
1694
1697
  return of(this.cachApiResult[serviceNameKay]);
1695
- }
1698
+ } while (this.cachApiCallDate[serviceNameKay] && (new Date().getTime() - this.cachApiCallDate[serviceNameKay].getTime()) < this.cashApiSeconds);
1696
1699
  this.cachApiCallDate[serviceNameKay] = new Date();
1697
1700
  }
1698
1701
  //! optimaze call api
@@ -1705,8 +1708,10 @@ class ApiCmsServerBase extends ApiServerBase {
1705
1708
  // catchError(this.handleError)
1706
1709
  map((ret) => {
1707
1710
  //! optimaze call api
1708
- if (this.getModuleCashService().includes(serviceName))
1711
+ if (this.getModuleCashService().includes(serviceName)) {
1709
1712
  this.cachApiResult[serviceNameKay] = ret;
1713
+ this.cachApiResult[serviceNameKay].dateResult = new Date();
1714
+ }
1710
1715
  //! optimaze call api
1711
1716
  return this.errorExceptionResultCheck(ret);
1712
1717
  }));