@esolve/ng-esolve-connect 0.29.4 → 0.29.6

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.
@@ -19,6 +19,11 @@ export class EsolveAuthService {
19
19
  this.errorHandler = errorHandler;
20
20
  this.cookieService = cookieService;
21
21
  }
22
+ static preValidate(auth) {
23
+ return () => {
24
+ return auth.validateCachedTokens();
25
+ };
26
+ }
22
27
  getAccessToken(email, password, anonymous = false) {
23
28
  let params = new HttpParams();
24
29
  if (anonymous) {
@@ -46,7 +51,8 @@ export class EsolveAuthService {
46
51
  this.handleAuthentication(responseData.additional_data);
47
52
  }));
48
53
  }
49
- autoLogin() {
54
+ async autoLogin() {
55
+ await this.validateCachedTokens();
50
56
  this.session.restore(this.handleExpiration(), () => {
51
57
  firstValueFrom(this.getAccessToken('', '', true)).then(() => {
52
58
  // empty
@@ -107,6 +113,24 @@ export class EsolveAuthService {
107
113
  }
108
114
  throw new Error('Invalid response');
109
115
  }
116
+ async validateCachedTokens() {
117
+ let valid = false;
118
+ try {
119
+ const session = this.session.getCachedSession();
120
+ if (!session) {
121
+ throw null;
122
+ }
123
+ const result = await firstValueFrom(this.checkAccessToken(session));
124
+ if (!result.key) {
125
+ throw null;
126
+ }
127
+ valid = true;
128
+ }
129
+ catch (error) {
130
+ this.session.resetSessionCache();
131
+ }
132
+ return valid;
133
+ }
110
134
  checkAccessToken(session) {
111
135
  session = session || this.session.currentSession;
112
136
  const token = session?.key ?? '';
@@ -182,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
182
206
  type: Inject,
183
207
  args: [ESOLVE_CONNECT_CONFIG]
184
208
  }] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveCookieService }]; } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNILFVBQVUsRUFDVixVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFJMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQVV6RSxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLE9BQTZCLEVBQzdCLFlBQXVDLEVBQ3ZDLGFBQWtDO1FBSkgsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQzFDLENBQUM7SUFFRSxjQUFjLENBQ2pCLEtBQWEsRUFDYixRQUFnQixFQUNoQixZQUFxQixLQUFLO1FBRTFCLElBQUksTUFBTSxHQUFHLElBQUksVUFB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QUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUN6QztRQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OzhHQW5QUSxpQkFBaUIsa0JBRWQscUJBQXFCO2tIQUZ4QixpQkFBaUIsY0FGZCxNQUFNOzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBIdHRwQ2xpZW50LFxyXG4gICAgSHR0cFBhcmFtcyxcclxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgSHR0cEhlYWRlcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlQ29va2llU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb29raWUvZXNvbHZlLWNvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb24gfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtbG9naW4tcG9zdC1yZXNwb25zZS1pdGVtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB9IGZyb20gJy4vZXNvbHZlLWF1dGgtZ2V0LXJlc3BvbnNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYXV0aC1jaGVjay1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBdXRoUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYXV0aC1yZXN1bHQudHlwZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbjogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBFc29sdmVDb29raWVTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW4oXHJcbiAgICAgICAgZW1haWw6IHN0cmluZyxcclxuICAgICAgICBwYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgIGFub255bW91czogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVBdXRoR2V0UmVzcG9uc2U+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGFub255bW91cykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdhbm9ueW1vdXMnLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbWFpbCAhPT0gJycpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZW1haWwnLCBlbWFpbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocGFzc3dvcmQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Bhc3N3b3JkJywgcGFzc3dvcmQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnKicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcclxuICAgICAgICAgICAgICAgIHRhcCgocmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhdXRvTG9naW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLnJlc3RvcmUoXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXhwaXJhdGlvbigpLFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLmdldEFjY2Vzc1Rva2VuKCcnLCAnJywgdHJ1ZSkpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlbXB0eVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ2luKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGxvZ2luOiB7XHJcbiAgICAgICAgICAgICAgICBlbWFpbCxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbG9naW4ucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VfbG9nIG9mIGxvZ2luX3Jlc3BvbnNlLmxvZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VfbG9nLnR5cGUgPT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZV9sb2cubWVzc2FnZV9jb2RlID09PSAnbG9naW5fc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbl9kYXRhID0gbG9naW5fcmVzcG9uc2Uuc2Vzc2lvbl9kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlcl9pZCA9ICtsb2dpbl9yZXNwb25zZS5lc29sdmVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbl9pZCA9ICtzZXNzaW9uX2RhdGEubG9jYXRpb25faWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVVwZGF0ZVNlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGxvZ2luX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWxvZ2luJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGxvZ291dCgpOiBQcm9taXNlPEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4ge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jbGVhclRpbWVyKCk7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZSgnX3dzX2lkJyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5nZXRBY2Nlc3NUb2tlbignJywgJycsIHRydWUpKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZXNwb25zZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tBY2Nlc3NUb2tlbihzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbik6IE9ic2VydmFibGU8RXNvbHZlQXV0aFJlc3VsdD4ge1xyXG4gICAgICAgIHNlc3Npb24gPSBzZXNzaW9uIHx8IHRoaXMuc2Vzc2lvbi5jdXJyZW50U2Vzc2lvbjtcclxuXHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBzZXNzaW9uPy5rZXkgPz8gJyc7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVBdXRoQ2hlY2tSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGtleTogdG9rZW4gfSxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnR5cGUgPT09ICdlcnJvcicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2V4Y2VwdGlvbicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICghcmVzcG9uc2VEYXRhLmFkZGl0aW9uYWxfZGF0YS5rZXlfb2theSlcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbF9kYXRhID0gcmVzcG9uc2VEYXRhLmFkZGl0aW9uYWxfZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRva2VuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzOiBhZGRpdGlvbmFsX2RhdGEuZXhwaXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJ5X3RpbWU6IGFkZGl0aW9uYWxfZGF0YS5leHBpcnlfdGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGFkZGl0aW9uYWxfZGF0YS5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogYWRkaXRpb25hbF9kYXRhLnVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZXJzXHJcbiAgICBwcml2YXRlIGhhbmRsZUV4cGlyYXRpb24oKTogKHNlc3Npb24/OiBFc29sdmVTZXNzaW9uKSA9PiB2b2lkIHtcclxuICAgICAgICByZXR1cm4gKHNlc3Npb24/OiBFc29sdmVTZXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGZpcnN0VmFsdWVGcm9tKHRoaXMuY2hlY2tBY2Nlc3NUb2tlbihzZXNzaW9uKSkudGhlbihcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXJlc3VsdC5rZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVNlc3Npb24oXHJcbiAgICAgICAgICAgICtyZXN1bHQudXNlcl9pZCxcclxuICAgICAgICAgICAgK3Jlc3VsdC5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgcmVzdWx0LmtleSxcclxuICAgICAgICAgICAgK3Jlc3VsdC5leHBpcnlfdGltZSxcclxuICAgICAgICAgICAgK3Jlc3VsdC5leHBpcmVzLFxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV4cGlyYXRpb24oKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoXHJcbiAgICAgICAgZXJyb3JSZXM6IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB8IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcsXHJcbiAgICAgICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgKCFlcnJvclJlcy50eXBlKSB8fFxyXG4gICAgICAgICAgICAoIWVycm9yUmVzLnNlcnZpY2VfdHlwZSkgfHxcclxuICAgICAgICAgICAgKCFlcnJvclJlcy5tZXNzYWdlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3JSZXMubWVzc2FnZS50cmltKCkgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBlcnJvclJlcy5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YSkge1xyXG4gICAgICAgICAgICBlcnJvci5kYXRhID0gZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNILFVBQVUsRUFDVixVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFJMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQVV6RSxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLE9BQTZCLEVBQzdCLFlBQXVDLEVBQ3ZDLGFBQWtDO1FBSkgsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQzNDLENBQUM7SUFFRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQXVCO1FBQzdDLE9BQU8sR0FBRyxFQUFFO1lBQ1IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sY0FBYyxDQUNqQixLQUFhLEVBQ2IsUUFBZ0IsRUFDaEIsWUFBcUIsS0FBSztRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksU0FBUyxFQUFFO1lBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM3QztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLEVBQzdDO1lBQ0ksTUFBTTtZQUNOLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsaUJBQWlCLEVBQUUsR0FBRzthQUN6QixDQUFDO1NBQ0wsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNqQixJQUNJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7Z0JBQy9CLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsRUFDckM7Z0JBQ0UsTUFBTSxZQUFZLENBQUM7YUFDdEI7UUFDTCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUM1QixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDbEIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQ3ZCLEdBQUcsRUFBRTtZQUNELGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsRUFBRTtnQkFDRCxRQUFRO1lBQ1osQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQ0osQ0FBQztRQUNOLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDeEMsTUFBTSxJQUFJLEdBQUc7WUFDVCxLQUFLLEVBQUU7Z0JBQ0gsS0FBSztnQkFDTCxRQUFRO2FBQ1g7U0FDSixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLElBQUksQ0FDRCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsRUFDdEMsSUFBSSxFQUNKO1lBQ0ksT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFBRSxrREFBa0Q7YUFDckU7WUFDRCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtTQUNsQixDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFDSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO2dCQUNsQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUNsQztnQkFDRSxNQUFNLFFBQVEsQ0FBQzthQUNsQjtZQUVELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0MsSUFDSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztnQkFDM0MsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsRUFDN0M7Z0JBQ0UsTUFBTSxjQUFjLENBQUM7YUFDeEI7WUFFRCxLQUFLLE1BQU0sWUFBWSxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNDLElBQ0ksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztvQkFDakMsQ0FBQyxZQUFZLENBQUMsWUFBWSxLQUFLLGVBQWUsQ0FBQyxFQUNqRDtvQkFDRSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO29CQUNqRCxNQUFNLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7b0JBQzFDLE1BQU0sV0FBVyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztvQkFFOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDN0IsT0FBTyxFQUFFLE9BQU87d0JBQ2hCLFdBQVcsRUFBRSxXQUFXO3FCQUMzQixDQUFDLENBQUM7b0JBRUgsT0FBTyxPQUFPLENBQUM7aUJBQ2xCO2FBQ0o7WUFFRCxNQUFNLGNBQWMsQ0FBQztRQUN6QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxRQUFpQyxFQUFFLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RSxJQUFJLFFBQVEsRUFBRTtZQUNWLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CO1FBQzdCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVsQixJQUFJO1lBQ0EsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRWhELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1YsTUFBTSxJQUFJLENBQUM7YUFDZDtZQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxDQUFDO2FBQ2Q7WUFFRCxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ2hCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDcEM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBdUI7UUFDNUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUVqRCxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHVCQUF1QixFQUM3QztZQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDdEIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixpQkFBaUIsRUFBRSxHQUFHO2FBQ3pCLENBQUM7U0FDTCxDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2pCLElBQ0ksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztnQkFDL0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQzFDO2dCQUNFLE1BQU0sWUFBWSxDQUFDO2FBQ3RCO1lBRUQsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUVyRCxNQUFNLE1BQU0sR0FBcUI7Z0JBQzdCLEdBQUcsRUFBRSxLQUFLO2dCQUNWLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTztnQkFDaEMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO2dCQUN4QyxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7Z0JBQ3hDLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTzthQUNuQyxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFRCxXQUFXO0lBQ0gsZ0JBQWdCO1FBQ3BCLE9BQU8sQ0FBQyxPQUF1QixFQUFFLEVBQUU7WUFDL0IsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0MsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDVCxJQUFJLFFBQVEsRUFBRTtvQkFDVixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3ZDO1lBQ0wsQ0FBQyxFQUNELEdBQUcsRUFBRTtnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUNKLENBQUM7UUFDTixDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBd0I7UUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FDdEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUNmLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFDbkIsTUFBTSxDQUFDLEdBQUcsRUFDVixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQ25CLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQ2YsUUFBeUQ7UUFFekQsTUFBTSxLQUFLLEdBQUc7WUFDVixPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLElBQUksRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVGLElBQ0ksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDaEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDeEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDckI7WUFDRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEMsS0FBSyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUN6QztRQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OzhHQW5SUSxpQkFBaUIsa0JBRWQscUJBQXFCO2tIQUZ4QixpQkFBaUIsY0FGZCxNQUFNOzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBIdHRwQ2xpZW50LFxyXG4gICAgSHR0cFBhcmFtcyxcclxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgSHR0cEhlYWRlcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlQ29va2llU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb29raWUvZXNvbHZlLWNvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb24gfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtbG9naW4tcG9zdC1yZXNwb25zZS1pdGVtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB9IGZyb20gJy4vZXNvbHZlLWF1dGgtZ2V0LXJlc3BvbnNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYXV0aC1jaGVjay1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBdXRoUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYXV0aC1yZXN1bHQudHlwZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbjogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBFc29sdmVDb29raWVTZXJ2aWNlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHJlVmFsaWRhdGUoYXV0aDogRXNvbHZlQXV0aFNlcnZpY2UpIHtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYXV0aC52YWxpZGF0ZUNhY2hlZFRva2VucygpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFjY2Vzc1Rva2VuKFxyXG4gICAgICAgIGVtYWlsOiBzdHJpbmcsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBhbm9ueW1vdXM6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgIGlmIChhbm9ueW1vdXMpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnYW5vbnltb3VzJywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZW1haWwgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2VtYWlsJywgZW1haWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAnJykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVBdXRoR2V0UmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcCgocmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnR5cGUgPT09ICdlcnJvcicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2V4Y2VwdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksXHJcbiAgICAgICAgICAgICAgICB0YXAoKHJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aGVudGljYXRpb24ocmVzcG9uc2VEYXRhLmFkZGl0aW9uYWxfZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgYXV0b0xvZ2luKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVDYWNoZWRUb2tlbnMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLnJlc3RvcmUoXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXhwaXJhdGlvbigpLFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLmdldEFjY2Vzc1Rva2VuKCcnLCAnJywgdHJ1ZSkpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlbXB0eVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ2luKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGxvZ2luOiB7XHJcbiAgICAgICAgICAgICAgICBlbWFpbCxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbG9naW4ucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VfbG9nIG9mIGxvZ2luX3Jlc3BvbnNlLmxvZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VfbG9nLnR5cGUgPT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZV9sb2cubWVzc2FnZV9jb2RlID09PSAnbG9naW5fc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbl9kYXRhID0gbG9naW5fcmVzcG9uc2Uuc2Vzc2lvbl9kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlcl9pZCA9ICtsb2dpbl9yZXNwb25zZS5lc29sdmVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbl9pZCA9ICtzZXNzaW9uX2RhdGEubG9jYXRpb25faWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVVwZGF0ZVNlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGxvZ2luX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWxvZ2luJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGxvZ291dCgpOiBQcm9taXNlPEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4ge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jbGVhclRpbWVyKCk7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZSgnX3dzX2lkJyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5nZXRBY2Nlc3NUb2tlbignJywgJycsIHRydWUpKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZXNwb25zZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNhY2hlZFRva2VucygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbi5nZXRDYWNoZWRTZXNzaW9uKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2hlY2tBY2Nlc3NUb2tlbihzZXNzaW9uKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5rZXkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhbGlkID0gdHJ1ZTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb24ucmVzZXRTZXNzaW9uQ2FjaGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pOiBPYnNlcnZhYmxlPEVzb2x2ZUF1dGhSZXN1bHQ+IHtcclxuICAgICAgICBzZXNzaW9uID0gc2Vzc2lvbiB8fCB0aGlzLnNlc3Npb24uY3VycmVudFNlc3Npb247XHJcblxyXG4gICAgICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvbj8ua2V5ID8/ICcnO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlQXV0aENoZWNrUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBrZXk6IHRva2VuIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJyxcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXJyb3InKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnR5cGUgPT09ICdleGNlcHRpb24nKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoIXJlc3BvbnNlRGF0YS5hZGRpdGlvbmFsX2RhdGEua2V5X29rYXkpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxfZGF0YSA9IHJlc3BvbnNlRGF0YS5hZGRpdGlvbmFsX2RhdGE7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogRXNvbHZlQXV0aFJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0b2tlbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlczogYWRkaXRpb25hbF9kYXRhLmV4cGlyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyeV90aW1lOiBhZGRpdGlvbmFsX2RhdGEuZXhwaXJ5X3RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiBhZGRpdGlvbmFsX2RhdGEubG9jYXRpb25faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IGFkZGl0aW9uYWxfZGF0YS51c2VyX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGVyc1xyXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHBpcmF0aW9uKCk6IChzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbikgPT4gdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIChzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLmNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbikpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5oYW5kbGVTZXNzaW9uKFxyXG4gICAgICAgICAgICArcmVzdWx0LnVzZXJfaWQsXHJcbiAgICAgICAgICAgICtyZXN1bHQubG9jYXRpb25faWQsXHJcbiAgICAgICAgICAgIHJlc3VsdC5rZXksXHJcbiAgICAgICAgICAgICtyZXN1bHQuZXhwaXJ5X3RpbWUsXHJcbiAgICAgICAgICAgICtyZXN1bHQuZXhwaXJlcyxcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHBpcmF0aW9uKCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKFxyXG4gICAgICAgIGVycm9yUmVzOiBFc29sdmVBdXRoR2V0UmVzcG9uc2UgfCBFc29sdmVBdXRoQ2hlY2tSZXNwb25zZSxcclxuICAgICk6IE9ic2VydmFibGU8bmV2ZXI+IHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnLFxyXG4gICAgICAgICAgICBkYXRhOiB7fSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICghZXJyb3JSZXMudHlwZSkgfHxcclxuICAgICAgICAgICAgKCFlcnJvclJlcy5zZXJ2aWNlX3R5cGUpIHx8XHJcbiAgICAgICAgICAgICghZXJyb3JSZXMubWVzc2FnZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yUmVzLm1lc3NhZ2UudHJpbSgpICE9PSAnJykge1xyXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gZXJyb3JSZXMubWVzc2FnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvclJlcy5hZGRpdGlvbmFsX2RhdGEpIHtcclxuICAgICAgICAgICAgZXJyb3IuZGF0YSA9IGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,5 +1,6 @@
1
+ import { isPlatformBrowser } from '@angular/common';
1
2
  import { HttpClient } from '@angular/common/http';
2
- import { Inject, Injectable } from '@angular/core';
3
+ import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
3
4
  import { BehaviorSubject, firstValueFrom, of, Subject } from 'rxjs';
4
5
  import { catchError, map } from 'rxjs/operators';
5
6
  import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect-config.constant';
@@ -9,7 +10,8 @@ import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common/http";
10
11
  import * as i2 from "../shared/cookie/esolve-cookie.service";
11
12
  export class EsolveCouponsService {
12
- constructor(config, http, cookieService) {
13
+ constructor(platformId, config, http, cookieService) {
14
+ this.platformId = platformId;
13
15
  this.config = config;
14
16
  this.http = http;
15
17
  this.cookieService = cookieService;
@@ -19,6 +21,7 @@ export class EsolveCouponsService {
19
21
  this.validation_error = new Subject();
20
22
  this.setStorageKey();
21
23
  this.coupons_cache = this.retrieveCache();
24
+ this.is_browser = isPlatformBrowser(this.platformId);
22
25
  }
23
26
  onValidationError() {
24
27
  return this.validation_error.asObservable();
@@ -96,11 +99,10 @@ export class EsolveCouponsService {
96
99
  this.deleteCoupons();
97
100
  }
98
101
  retrieveCache() {
99
- if (this.cookieService.check(this.storage_key) ||
100
- localStorage.getItem(this.storage_key)) {
102
+ if (this.cookieService.check(this.storage_key) || this.getBackup()) {
101
103
  let coupons_json = this.cookieService.get(this.storage_key);
102
- if (coupons_json === '' && localStorage) {
103
- let local_store_data = localStorage.getItem(this.storage_key);
104
+ if (coupons_json === '') {
105
+ const local_store_data = this.getBackup();
104
106
  if (local_store_data) {
105
107
  coupons_json = local_store_data;
106
108
  }
@@ -118,9 +120,7 @@ export class EsolveCouponsService {
118
120
  if (this.coupons_cache.size > 0) {
119
121
  const coupons_json = this.jsonEncodeMap(this.coupons_cache);
120
122
  this.cookieService.set(this.storage_key, coupons_json, undefined, '/');
121
- if (localStorage) {
122
- localStorage.setItem(this.storage_key, coupons_json);
123
- }
123
+ this.setBackup(coupons_json);
124
124
  }
125
125
  else {
126
126
  this.deleteCoupons();
@@ -129,9 +129,34 @@ export class EsolveCouponsService {
129
129
  deleteCoupons() {
130
130
  this.coupons_cache.clear();
131
131
  this.cookieService.delete(this.storage_key, '/');
132
- if (localStorage) {
133
- localStorage.removeItem(this.storage_key);
132
+ this.removeBackup();
133
+ }
134
+ getBackup() {
135
+ if (!this.is_browser) {
136
+ return null;
137
+ }
138
+ if (!localStorage) {
139
+ return null;
140
+ }
141
+ return localStorage.getItem(this.storage_key);
142
+ }
143
+ setBackup(data) {
144
+ if (!this.is_browser) {
145
+ return;
134
146
  }
147
+ if (!localStorage) {
148
+ return;
149
+ }
150
+ localStorage.setItem(this.storage_key, data);
151
+ }
152
+ removeBackup() {
153
+ if (!this.is_browser) {
154
+ return;
155
+ }
156
+ if (!localStorage) {
157
+ return;
158
+ }
159
+ localStorage.removeItem(this.storage_key);
135
160
  }
136
161
  addCoupon(id, key) {
137
162
  if (!this.coupons_cache.has(id)) {
@@ -187,7 +212,7 @@ export class EsolveCouponsService {
187
212
  return coupons;
188
213
  }
189
214
  }
190
- EsolveCouponsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: EsolveCouponsService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
215
+ EsolveCouponsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: EsolveCouponsService, deps: [{ token: PLATFORM_ID }, { token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
191
216
  EsolveCouponsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: EsolveCouponsService, providedIn: 'root' });
192
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: EsolveCouponsService, decorators: [{
193
218
  type: Injectable,
@@ -195,7 +220,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
195
220
  providedIn: 'root',
196
221
  }]
197
222
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
223
+ type: Inject,
224
+ args: [PLATFORM_ID]
225
+ }] }, { type: undefined, decorators: [{
198
226
  type: Inject,
199
227
  args: [ESOLVE_CONNECT_CONFIG]
200
228
  }] }, { type: i1.HttpClient }, { type: i2.EsolveCookieService }]; } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNvdXBvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jb3Vwb25zL2Vzb2x2ZS1jb3Vwb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUc3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7O0FBWXpDLE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsYUFBa0M7UUFGSCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVJ0QyxnQkFBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ2pDLGtCQUFhLEdBQXVCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDOUMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUEyQyxDQUFDO1FBTzlFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxh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RyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4QjtTQUNKO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzs7aUhBdk9RLG9CQUFvQixrQkFPakIscUJBQXFCO3FIQVB4QixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFRUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Nvb2tpZS9lc29sdmUtY29va2llLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb3Vwb24gfSBmcm9tICcuL2NsYXNzZXMnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlQ291cG9uUmVjb3JkLFxyXG4gICAgRXNvbHZlQ291cG9uVmFsaWRhdGlvbixcclxuICAgIEVzb2x2ZUNvdXBvblZhbGlkYXRpb25FcnJvcixcclxuICAgIEVzb2x2ZUNvdXBvblZhbGlkYXRpb25SZXN1bHQsXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXNvbHZlQ291cG9uc0NhY2hlIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVDb3Vwb25zU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHN0b3JhZ2Vfa2V5ID0gJ19uZ19lc2x2X2NvdXBvbnMnO1xyXG4gICAgcHJpdmF0ZSBjb3Vwb25zX2NhY2hlOiBFc29sdmVDb3Vwb25zQ2FjaGUgPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIGFwcGxpZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XHJcbiAgICBwcml2YXRlIHZhbGlkYXRpb25fZXJyb3IgPSBuZXcgU3ViamVjdDxFc29sdmVDb3Vwb25WYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQ+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IEVzb2x2ZUNvb2tpZVNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNldFN0b3JhZ2VLZXkoKTtcclxuICAgICAgICB0aGlzLmNvdXBvbnNfY2FjaGUgPSB0aGlzLnJldHJpZXZlQ2FjaGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25WYWxpZGF0aW9uRXJyb3IoKTogT2JzZXJ2YWJsZTxFc29sdmVDb3Vwb25WYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uX2Vycm9yLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkFwcGxpZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbGllZC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmFsaWRhdGUoY291cG9uX2tleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVDb3Vwb25WYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUNvdXBvblZhbGlkYXRpb24+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC12YWxpZGF0ZS1jb3Vwb24ucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291cG9uX2tleSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWQgPSByZXNwb25zZS5yZWNvcmRzLnZhbGlkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZUNvdXBvblZhbGlkYXRpb25SZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSByZXNwb25zZS5yZWNvcmRzLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25fZXJyb3IubmV4dChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWQgPSByZXNwb25zZS5yZWNvcmRzLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uX2Vycm9yLm5leHQodW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgdmFsaWQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGFwcGx5Q291cG9uKGNvdXBvbl9rZXk6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChjb3Vwb25fa2V5LnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy52YWxpZGF0ZShjb3Vwb25fa2V5KSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbGlkICYmIHJlc3VsdC5pZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDb3Vwb24ocmVzdWx0LmlkLCBjb3Vwb25fa2V5KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC52YWxpZDtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVDb3Vwb24oaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY291cG9uc19jYWNoZS5kZWxldGUoaWQpO1xyXG5cclxuICAgICAgICB0aGlzLmNhY2hlQ291cG9ucygpO1xyXG4gICAgICAgIHRoaXMuYXBwbGllZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFwcGxpZWRDb3Vwb25LZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gWy4uLnRoaXMuY291cG9uc19jYWNoZS52YWx1ZXMoKV07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFwcGxpZWRDb3Vwb25zKCk6IE9ic2VydmFibGU8RXNvbHZlQ291cG9uW10+IHtcclxuICAgICAgICBjb25zdCBjb3Vwb25faWRzID0gWy4uLnRoaXMuY291cG9uc19jYWNoZS5rZXlzKCldO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQ291cG9uUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1hcHBsaWVkLWNvdXBvbnMucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291cG9uczogY291cG9uX2lkcy5qb2luKCcsJyksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb3Vwb25zKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlQ291cG9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmV0cmlldmVDYWNoZSgpOiBFc29sdmVDb3Vwb25zQ2FjaGUge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKHRoaXMuc3RvcmFnZV9rZXkpIHx8XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGxldCBjb3Vwb25zX2pzb24gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuc3RvcmFnZV9rZXkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvdXBvbnNfanNvbiA9PT0gJycgJiYgbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxfc3RvcmVfZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChsb2NhbF9zdG9yZV9kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY291cG9uc19qc29uID0gbG9jYWxfc3RvcmVfZGF0YTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmpzb25EZWNvZGVNYXAoY291cG9uc19qc29uKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHNvZnQgZXJyb3JcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhY2hlQ291cG9ucygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jb3Vwb25zX2NhY2hlLnNpemUgPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdXBvbnNfanNvbiA9IHRoaXMuanNvbkVuY29kZU1hcCh0aGlzLmNvdXBvbnNfY2FjaGUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldCh0aGlzLnN0b3JhZ2Vfa2V5LCBjb3Vwb25zX2pzb24sIHVuZGVmaW5lZCwgJy8nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXksIGNvdXBvbnNfanNvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUNvdXBvbnMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxldGVDb3Vwb25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY291cG9uc19jYWNoZS5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5zdG9yYWdlX2tleSwgJy8nKTtcclxuXHJcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnN0b3JhZ2Vfa2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRDb3Vwb24oaWQ6IG51bWJlciwga2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY291cG9uc19jYWNoZS5oYXMoaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291cG9uc19jYWNoZS5zZXQoaWQsIGtleSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVDb3Vwb25zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFwcGxpZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0U3RvcmFnZUtleSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbmZpZy5jb3Vwb25fc3RvcmFnZV9rZXkgPT09ICdzdHJpbmcnICYmXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmNvdXBvbl9zdG9yYWdlX2tleSAhPT0gJydcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlX2tleSA9IHRoaXMuY29uZmlnLmNvdXBvbl9zdG9yYWdlX2tleTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBqc29uRW5jb2RlTWFwKGRhdGE6IEVzb2x2ZUNvdXBvbnNDYWNoZSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIE1hcCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcCB0eXBlJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSwgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnTWFwJyxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogWy4uLnZhbHVlXSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGpzb25EZWNvZGVNYXAoanNvbl9kYXRhOiBzdHJpbmcpOiBFc29sdmVDb3Vwb25zQ2FjaGUge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb25fZGF0YSwgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5kYXRhVHlwZSA9PT0gJ01hcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1hcCh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWFwIHR5cGUnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NDb3Vwb25zKHJlY29yZHM6IEVzb2x2ZUNvdXBvblJlY29yZFtdKTogRXNvbHZlQ291cG9uW10ge1xyXG4gICAgICAgIGNvbnN0IGNvdXBvbnM6IEVzb2x2ZUNvdXBvbltdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvdXBvbiA9IG5ldyBFc29sdmVDb3Vwb24ocmVjb3JkKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb3Vwb25zLnB1c2goY291cG9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNvdXBvbnM7XHJcbiAgICB9XHJcbn1cclxuIl19
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNvdXBvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jb3Vwb25zL2Vzb2x2ZS1jb3Vwb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQVl6QyxNQUFNLE9BQU8sb0JBQW9CO0lBUzdCLFlBQ2lDLFVBQWtCLEVBQ1IsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsYUFBa0M7UUFIYixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ1IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFadEMsZ0JBQVcsR0FBRyxrQkFBa0IsQ0FBQztRQUNqQyxrQkFBYSxHQUF1QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzlDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUMvQyxxQkFBZ0IsR0FB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bW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Nvb2tpZS9lc29sdmUtY29va2llLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb3Vwb24gfSBmcm9tICcuL2NsYXNzZXMnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlQ291cG9uUmVjb3JkLFxyXG4gICAgRXNvbHZlQ291cG9uVmFsaWRhdGlvbixcclxuICAgIEVzb2x2ZUNvdXBvblZhbGlkYXRpb25FcnJvcixcclxuICAgIEVzb2x2ZUNvdXBvblZhbGlkYXRpb25SZXN1bHQsXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXNvbHZlQ291cG9uc0NhY2hlIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVDb3Vwb25zU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHN0b3JhZ2Vfa2V5ID0gJ19uZ19lc2x2X2NvdXBvbnMnO1xyXG4gICAgcHJpdmF0ZSBjb3Vwb25zX2NhY2hlOiBFc29sdmVDb3Vwb25zQ2FjaGUgPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIGFwcGxpZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XHJcbiAgICBwcml2YXRlIHZhbGlkYXRpb25fZXJyb3IgPSBuZXcgU3ViamVjdDxcclxuICAgICAgICBFc29sdmVDb3Vwb25WYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWRcclxuICAgID4oKTtcclxuICAgIHByaXZhdGUgaXNfYnJvd3NlcjogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdCxcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgY29va2llU2VydmljZTogRXNvbHZlQ29va2llU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RvcmFnZUtleSgpO1xyXG4gICAgICAgIHRoaXMuY291cG9uc19jYWNoZSA9IHRoaXMucmV0cmlldmVDYWNoZSgpO1xyXG4gICAgICAgIHRoaXMuaXNfYnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uVmFsaWRhdGlvbkVycm9yKCk6IE9ic2VydmFibGU8XHJcbiAgICAgICAgRXNvbHZlQ291cG9uVmFsaWRhdGlvbkVycm9yIHwgdW5kZWZpbmVkXHJcbiAgICA+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uX2Vycm9yLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkFwcGxpZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbGllZC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmFsaWRhdGUoXHJcbiAgICAgICAgY291cG9uX2tleTogc3RyaW5nLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVDb3Vwb25WYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUNvdXBvblZhbGlkYXRpb24+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC12YWxpZGF0ZS1jb3Vwb24ucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291cG9uX2tleSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWQgPSByZXNwb25zZS5yZWNvcmRzLnZhbGlkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZUNvdXBvblZhbGlkYXRpb25SZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSByZXNwb25zZS5yZWNvcmRzLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25fZXJyb3IubmV4dChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWQgPSByZXNwb25zZS5yZWNvcmRzLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uX2Vycm9yLm5leHQodW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgdmFsaWQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGFwcGx5Q291cG9uKGNvdXBvbl9rZXk6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChjb3Vwb25fa2V5LnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy52YWxpZGF0ZShjb3Vwb25fa2V5KSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbGlkICYmIHJlc3VsdC5pZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDb3Vwb24ocmVzdWx0LmlkLCBjb3Vwb25fa2V5KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC52YWxpZDtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVDb3Vwb24oaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY291cG9uc19jYWNoZS5kZWxldGUoaWQpO1xyXG5cclxuICAgICAgICB0aGlzLmNhY2hlQ291cG9ucygpO1xyXG4gICAgICAgIHRoaXMuYXBwbGllZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFwcGxpZWRDb3Vwb25LZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gWy4uLnRoaXMuY291cG9uc19jYWNoZS52YWx1ZXMoKV07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFwcGxpZWRDb3Vwb25zKCk6IE9ic2VydmFibGU8RXNvbHZlQ291cG9uW10+IHtcclxuICAgICAgICBjb25zdCBjb3Vwb25faWRzID0gWy4uLnRoaXMuY291cG9uc19jYWNoZS5rZXlzKCldO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQ291cG9uUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1hcHBsaWVkLWNvdXBvbnMucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291cG9uczogY291cG9uX2lkcy5qb2luKCcsJyksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb3Vwb25zKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlQ291cG9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmV0cmlldmVDYWNoZSgpOiBFc29sdmVDb3Vwb25zQ2FjaGUge1xyXG4gICAgICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2sodGhpcy5zdG9yYWdlX2tleSkgfHwgdGhpcy5nZXRCYWNrdXAoKSkge1xyXG4gICAgICAgICAgICBsZXQgY291cG9uc19qc29uID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLnN0b3JhZ2Vfa2V5KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjb3Vwb25zX2pzb24gPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbF9zdG9yZV9kYXRhID0gdGhpcy5nZXRCYWNrdXAoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxfc3RvcmVfZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdXBvbnNfanNvbiA9IGxvY2FsX3N0b3JlX2RhdGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5qc29uRGVjb2RlTWFwKGNvdXBvbnNfanNvbik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzb2Z0IGVycm9yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYWNoZUNvdXBvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY291cG9uc19jYWNoZS5zaXplID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3Vwb25zX2pzb24gPSB0aGlzLmpzb25FbmNvZGVNYXAodGhpcy5jb3Vwb25zX2NhY2hlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Vfa2V5LFxyXG4gICAgICAgICAgICAgICAgY291cG9uc19qc29uLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgJy8nLFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXRCYWNrdXAoY291cG9uc19qc29uKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUNvdXBvbnMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxldGVDb3Vwb25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY291cG9uc19jYWNoZS5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5zdG9yYWdlX2tleSwgJy8nKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW1vdmVCYWNrdXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEJhY2t1cCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNfYnJvd3Nlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QmFja3VwKGRhdGE6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc19icm93c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXksIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlQmFja3VwKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc19icm93c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuc3RvcmFnZV9rZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkQ291cG9uKGlkOiBudW1iZXIsIGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvdXBvbnNfY2FjaGUuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvdXBvbnNfY2FjaGUuc2V0KGlkLCBrZXkpO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlQ291cG9ucygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hcHBsaWVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFN0b3JhZ2VLZXkoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb25maWcuY291cG9uX3N0b3JhZ2Vfa2V5ID09PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5jb3Vwb25fc3RvcmFnZV9rZXkgIT09ICcnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZV9rZXkgPSB0aGlzLmNvbmZpZy5jb3Vwb25fc3RvcmFnZV9rZXk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUganNvbkVuY29kZU1hcChkYXRhOiBFc29sdmVDb3Vwb25zQ2FjaGUpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghKGRhdGEgaW5zdGFuY2VvZiBNYXApKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXAgdHlwZScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEsIChrZXksIHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ01hcCcsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFsuLi52YWx1ZV0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBqc29uRGVjb2RlTWFwKGpzb25fZGF0YTogc3RyaW5nKTogRXNvbHZlQ291cG9uc0NhY2hlIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uX2RhdGEsIChrZXksIHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuZGF0YVR5cGUgPT09ICdNYXAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXAodmFsdWUudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTWFwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcCB0eXBlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzQ291cG9ucyhyZWNvcmRzOiBFc29sdmVDb3Vwb25SZWNvcmRbXSk6IEVzb2x2ZUNvdXBvbltdIHtcclxuICAgICAgICBjb25zdCBjb3Vwb25zOiBFc29sdmVDb3Vwb25bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb3Vwb24gPSBuZXcgRXNvbHZlQ291cG9uKHJlY29yZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY291cG9ucy5wdXNoKGNvdXBvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb3Vwb25zO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -25,6 +25,26 @@ export class EsolveSessionService {
25
25
  clearTimeout(this.key_expiration_timer);
26
26
  }
27
27
  }
28
+ getCachedSession() {
29
+ let json_data = this.cookieService.get(this.storage_key);
30
+ if (json_data === '') {
31
+ const local_store_data = this.getBackup();
32
+ if (local_store_data) {
33
+ json_data = local_store_data;
34
+ }
35
+ }
36
+ const stored_session = (json_data ? JSON.parse(json_data) : null);
37
+ if (!stored_session) {
38
+ return null;
39
+ }
40
+ const expiration_date = new Date(stored_session.expiration_date);
41
+ const loaded_session = new EsolveSession(stored_session.id, stored_session.location_id, stored_session.key, expiration_date);
42
+ return loaded_session;
43
+ }
44
+ resetSessionCache() {
45
+ this.cookieService.delete(this.storage_key, '/');
46
+ this.removeBackup();
47
+ }
28
48
  restore(expirationCallback, invalidSessionCallback) {
29
49
  if (this.currentSession.valid) {
30
50
  return;
@@ -106,6 +126,15 @@ export class EsolveSessionService {
106
126
  }
107
127
  localStorage.setItem(this.storage_key, data);
108
128
  }
129
+ removeBackup() {
130
+ if (!this.is_browser) {
131
+ return;
132
+ }
133
+ if (!localStorage) {
134
+ return;
135
+ }
136
+ localStorage.removeItem(this.storage_key);
137
+ }
109
138
  }
110
139
  EsolveSessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: EsolveSessionService, deps: [{ token: PLATFORM_ID }, { token: ESOLVE_CONNECT_CONFIG }, { token: i1.EsolveCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
111
140
  EsolveSessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: EsolveSessionService, providedIn: 'root' });
@@ -121,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
121
150
  type: Inject,
122
151
  args: [ESOLVE_CONNECT_CONFIG]
123
152
  }] }, { type: i1.EsolveCookieService }]; } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFZdkQsTUFBTSxPQUFPLG9CQUFvQjtJQVk3QixZQUNpQyxVQUFrQixFQUNSLE1BQTJCLEVBQzFELGFBQWtDO1FBRmIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNSLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVZ0QyxnQkFBVyxHQUFHLG1CQUFtQixDQUFDO1FBWXRDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFiRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJ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QyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sU0FBUyxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNmLE9BQU87U0FDVjtRQUVELFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDOztpSEFoTFEsb0JBQW9CLGtCQWFqQixXQUFXLGFBQ1gscUJBQXFCO3FIQWR4QixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFjUSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Nvb2tpZS9lc29sdmUtY29va2llLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlU3RvcmVkU2Vzc2lvbiB9IGZyb20gJy4vZXNvbHZlLXN0b3JlZC1zZXNzaW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb24gfSBmcm9tICcuL2Vzb2x2ZS1zZXNzaW9uLm1vZGVsJztcclxuXHJcbi8vIFRPRE86IFJld3JpdGUgc2Vzc2lvbiBtYW5hZ2VyIHRvIHVzZSBhIHB1cmUgcnhqcyBzb2x1dGlvbi5cclxuXHJcbmludGVyZmFjZSBTZXNzaW9uVXBkYXRlT3B0aW9ucyB7XHJcbiAgICB1c2VyX2lkPzogbnVtYmVyO1xyXG4gICAgbG9jYXRpb25faWQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVNlc3Npb25TZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBzZXNzaW9uOiBPYnNlcnZhYmxlPEVzb2x2ZVNlc3Npb24+O1xyXG5cclxuICAgIHByaXZhdGUgX3Nlc3Npb246IEJlaGF2aW9yU3ViamVjdDxFc29sdmVTZXNzaW9uPjtcclxuICAgIHByaXZhdGUga2V5X2V4cGlyYXRpb25fdGltZXI6IGFueTtcclxuICAgIHByaXZhdGUgc3RvcmFnZV9rZXkgPSAnbmdFc2x2VXNlclNlc3Npb24nO1xyXG4gICAgcHJpdmF0ZSBpc19icm93c2VyOiBib29sZWFuO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgY3VycmVudFNlc3Npb24oKTogRXNvbHZlU2Vzc2lvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nlc3Npb24udmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgY29va2llU2VydmljZTogRXNvbHZlQ29va2llU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RvcmFnZUtleSgpO1xyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVzb2x2ZVNlc3Npb24+KG5ldyBFc29sdmVTZXNzaW9uKCkpO1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IHRoaXMuX3Nlc3Npb24uYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5pc19icm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xlYXJUaW1lcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5rZXlfZXhwaXJhdGlvbl90aW1lcikge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5rZXlfZXhwaXJhdGlvbl90aW1lcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXN0b3JlKFxyXG4gICAgICAgIGV4cGlyYXRpb25DYWxsYmFjazogKHNlc3Npb24/OiBFc29sdmVTZXNzaW9uKSA9PiB2b2lkLFxyXG4gICAgICAgIGludmFsaWRTZXNzaW9uQ2FsbGJhY2s6ICgpID0+IHZvaWQsXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbi52YWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQganNvbl9kYXRhID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLnN0b3JhZ2Vfa2V5KTtcclxuXHJcbiAgICAgICAgaWYgKGpzb25fZGF0YSA9PT0gJycpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9jYWxfc3RvcmVfZGF0YSA9IHRoaXMuZ2V0QmFja3VwKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAobG9jYWxfc3RvcmVfZGF0YSkge1xyXG4gICAgICAgICAgICAgICAganNvbl9kYXRhID0gbG9jYWxfc3RvcmVfZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3RvcmVkX3Nlc3Npb246IEVzb2x2ZVN0b3JlZFNlc3Npb24gfCBudWxsID0gKGpzb25fZGF0YSA/IEpTT04ucGFyc2UoanNvbl9kYXRhKSA6IG51bGwpO1xyXG5cclxuICAgICAgICBpZiAoIXN0b3JlZF9zZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGludmFsaWRTZXNzaW9uQ2FsbGJhY2soKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGV4cGlyYXRpb25fZGF0ZSA9IG5ldyBEYXRlKHN0b3JlZF9zZXNzaW9uLmV4cGlyYXRpb25fZGF0ZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxvYWRlZF9zZXNzaW9uID0gbmV3IEVzb2x2ZVNlc3Npb24oXHJcbiAgICAgICAgICAgIHN0b3JlZF9zZXNzaW9uLmlkLFxyXG4gICAgICAgICAgICBzdG9yZWRfc2Vzc2lvbi5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgc3RvcmVkX3Nlc3Npb24ua2V5LFxyXG4gICAgICAgICAgICBleHBpcmF0aW9uX2RhdGUsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKCFsb2FkZWRfc2Vzc2lvbi5leHBpcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24ubmV4dChsb2FkZWRfc2Vzc2lvbik7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4cGlyYXRpb25fZHVyYXRpb24gPSBleHBpcmF0aW9uX2RhdGUuZ2V0VGltZSgpIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcihleHBpcmF0aW9uQ2FsbGJhY2ssIGV4cGlyYXRpb25fZHVyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cGlyYXRpb25DYWxsYmFjayhsb2FkZWRfc2Vzc2lvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVTZXNzaW9uKFxyXG4gICAgICAgIHVzZXJfaWQ6IG51bWJlcixcclxuICAgICAgICBsb2NhdGlvbl9pZDogbnVtYmVyLFxyXG4gICAgICAgIGtleTogc3RyaW5nLFxyXG4gICAgICAgIGV4cGlyeV90aW1lOiBudW1iZXIsXHJcbiAgICAgICAgZXhwaXJlczogbnVtYmVyLFxyXG4gICAgICAgIGV4cGlyYXRpb25DYWxsYmFjazogKCkgPT4gdm9pZCxcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV4cGlyYXRpb25fZGF0ZSA9IG5ldyBEYXRlKGV4cGlyeV90aW1lICogMTAwMCk7XHJcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBFc29sdmVTZXNzaW9uKFxyXG4gICAgICAgICAgICB1c2VyX2lkLFxyXG4gICAgICAgICAgICBsb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICBleHBpcmF0aW9uX2RhdGUsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QganNvbl9kYXRhID0gSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbik7XHJcblxyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZV9rZXksXHJcbiAgICAgICAgICAgIGpzb25fZGF0YSxcclxuICAgICAgICAgICAgZXhwaXJhdGlvbl9kYXRlLFxyXG4gICAgICAgICAgICAnLycsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRCYWNrdXAoanNvbl9kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi5uZXh0KHNlc3Npb24pO1xyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lcihleHBpcmF0aW9uQ2FsbGJhY2ssIGV4cGlyZXMgKiAxMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlVXBkYXRlU2Vzc2lvbihcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHVzZXJfaWQsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uX2lkLFxyXG4gICAgICAgIH06IFNlc3Npb25VcGRhdGVPcHRpb25zLFxyXG4gICAgICAgIGNhbGxiYWNrPzogKCkgPT4gdm9pZCxcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRfc2Vzc2lvbiA9IHRoaXMuY3VycmVudFNlc3Npb247XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdXNlcl9pZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgY3VycmVudF9zZXNzaW9uLnVwZGF0ZVVzZXIodXNlcl9pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIGxvY2F0aW9uX2lkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBjdXJyZW50X3Nlc3Npb24udXBkYXRlTG9jYXRpb24obG9jYXRpb25faWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QganNvbl9kYXRhID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudF9zZXNzaW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlX2tleSxcclxuICAgICAgICAgICAganNvbl9kYXRhLFxyXG4gICAgICAgICAgICBjdXJyZW50X3Nlc3Npb24uZXhwaXJhdGlvbl9kYXRlLFxyXG4gICAgICAgICAgICAnLycsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRCYWNrdXAoanNvbl9kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi5uZXh0KGN1cnJlbnRfc2Vzc2lvbik7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTdG9yYWdlS2V5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHR5cGVvZiB0aGlzLmNvbmZpZy51c2VyX3Nlc3Npb25fc3RvcmFnZV9rZXkgPT09ICdzdHJpbmcnKSAmJlxyXG4gICAgICAgICAgICAodGhpcy5jb25maWcudXNlcl9zZXNzaW9uX3N0b3JhZ2Vfa2V5ICE9PSAnJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlX2tleSA9IHRoaXMuY29uZmlnLnVzZXJfc2Vzc2lvbl9zdG9yYWdlX2tleTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydFRpbWVyKGNhbGxiYWNrOiAoKSA9PiB2b2lkLCBkdXJhdGlvbjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNfYnJvd3Nlcikge1xyXG4gICAgICAgICAgICB0aGlzLmtleV9leHBpcmF0aW9uX3RpbWVyID0gc2V0VGltZW91dChjYWxsYmFjaywgZHVyYXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEJhY2t1cCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNfYnJvd3Nlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QmFja3VwKGRhdGE6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc19icm93c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXksIGRhdGEpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFZdkQsTUFBTSxPQUFPLG9CQUFvQjtJQVk3QixZQUNpQyxVQUFrQixFQUNSLE1BQTJCLEVBQzFELGFBQWtDO1FBRmIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNSLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVZ0QyxnQkFBVyxHQUFHLG1CQUFtQixDQUFDO1FBWXRDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFiRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJ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RUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7aUhBL05RLG9CQUFvQixrQkFhakIsV0FBVyxhQUNYLHFCQUFxQjtxSEFkeEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29va2llU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb29raWUvZXNvbHZlLWNvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b3JlZFNlc3Npb24gfSBmcm9tICcuL2Vzb2x2ZS1zdG9yZWQtc2Vzc2lvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uIH0gZnJvbSAnLi9lc29sdmUtc2Vzc2lvbi5tb2RlbCc7XHJcblxyXG4vLyBUT0RPOiBSZXdyaXRlIHNlc3Npb24gbWFuYWdlciB0byB1c2UgYSBwdXJlIHJ4anMgc29sdXRpb24uXHJcblxyXG5pbnRlcmZhY2UgU2Vzc2lvblVwZGF0ZU9wdGlvbnMge1xyXG4gICAgdXNlcl9pZD86IG51bWJlcjtcclxuICAgIGxvY2F0aW9uX2lkPzogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVTZXNzaW9uU2VydmljZSB7XHJcbiAgICBwdWJsaWMgc2Vzc2lvbjogT2JzZXJ2YWJsZTxFc29sdmVTZXNzaW9uPjtcclxuXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBCZWhhdmlvclN1YmplY3Q8RXNvbHZlU2Vzc2lvbj47XHJcbiAgICBwcml2YXRlIGtleV9leHBpcmF0aW9uX3RpbWVyOiBhbnk7XHJcbiAgICBwcml2YXRlIHN0b3JhZ2Vfa2V5ID0gJ25nRXNsdlVzZXJTZXNzaW9uJztcclxuICAgIHByaXZhdGUgaXNfYnJvd3NlcjogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRTZXNzaW9uKCk6IEVzb2x2ZVNlc3Npb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0LFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IEVzb2x2ZUNvb2tpZVNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNldFN0b3JhZ2VLZXkoKTtcclxuICAgICAgICB0aGlzLl9zZXNzaW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFc29sdmVTZXNzaW9uPihuZXcgRXNvbHZlU2Vzc2lvbigpKTtcclxuICAgICAgICB0aGlzLnNlc3Npb24gPSB0aGlzLl9zZXNzaW9uLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMuaXNfYnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsZWFyVGltZXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMua2V5X2V4cGlyYXRpb25fdGltZXIpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMua2V5X2V4cGlyYXRpb25fdGltZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2FjaGVkU2Vzc2lvbigpOiBFc29sdmVTZXNzaW9uIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGpzb25fZGF0YSA9IHRoaXMuY29va2llU2VydmljZS5nZXQodGhpcy5zdG9yYWdlX2tleSk7XHJcblxyXG4gICAgICAgIGlmIChqc29uX2RhdGEgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsX3N0b3JlX2RhdGEgPSB0aGlzLmdldEJhY2t1cCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGxvY2FsX3N0b3JlX2RhdGEpIHtcclxuICAgICAgICAgICAgICAgIGpzb25fZGF0YSA9IGxvY2FsX3N0b3JlX2RhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHN0b3JlZF9zZXNzaW9uOiBFc29sdmVTdG9yZWRTZXNzaW9uIHwgbnVsbCA9IChqc29uX2RhdGEgPyBKU09OLnBhcnNlKGpzb25fZGF0YSkgOiBudWxsKTtcclxuXHJcbiAgICAgICAgaWYgKCFzdG9yZWRfc2Vzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGV4cGlyYXRpb25fZGF0ZSA9IG5ldyBEYXRlKHN0b3JlZF9zZXNzaW9uLmV4cGlyYXRpb25fZGF0ZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxvYWRlZF9zZXNzaW9uID0gbmV3IEVzb2x2ZVNlc3Npb24oXHJcbiAgICAgICAgICAgIHN0b3JlZF9zZXNzaW9uLmlkLFxyXG4gICAgICAgICAgICBzdG9yZWRfc2Vzc2lvbi5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgc3RvcmVkX3Nlc3Npb24ua2V5LFxyXG4gICAgICAgICAgICBleHBpcmF0aW9uX2RhdGUsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGxvYWRlZF9zZXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFNlc3Npb25DYWNoZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKHRoaXMuc3RvcmFnZV9rZXksICcvJyk7XHJcblxyXG4gICAgICAgIHRoaXMucmVtb3ZlQmFja3VwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc3RvcmUoXHJcbiAgICAgICAgZXhwaXJhdGlvbkNhbGxiYWNrOiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHZvaWQsXHJcbiAgICAgICAgaW52YWxpZFNlc3Npb25DYWxsYmFjazogKCkgPT4gdm9pZCxcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uLnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBqc29uX2RhdGEgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuc3RvcmFnZV9rZXkpO1xyXG5cclxuICAgICAgICBpZiAoanNvbl9kYXRhID09PSAnJykge1xyXG4gICAgICAgICAgICBjb25zdCBsb2NhbF9zdG9yZV9kYXRhID0gdGhpcy5nZXRCYWNrdXAoKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NhbF9zdG9yZV9kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBqc29uX2RhdGEgPSBsb2NhbF9zdG9yZV9kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzdG9yZWRfc2Vzc2lvbjogRXNvbHZlU3RvcmVkU2Vzc2lvbiB8IG51bGwgPSAoanNvbl9kYXRhID8gSlNPTi5wYXJzZShqc29uX2RhdGEpIDogbnVsbCk7XHJcblxyXG4gICAgICAgIGlmICghc3RvcmVkX3Nlc3Npb24pIHtcclxuICAgICAgICAgICAgaW52YWxpZFNlc3Npb25DYWxsYmFjaygpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZXhwaXJhdGlvbl9kYXRlID0gbmV3IERhdGUoc3RvcmVkX3Nlc3Npb24uZXhwaXJhdGlvbl9kYXRlKTtcclxuXHJcbiAgICAgICAgY29uc3QgbG9hZGVkX3Nlc3Npb24gPSBuZXcgRXNvbHZlU2Vzc2lvbihcclxuICAgICAgICAgICAgc3RvcmVkX3Nlc3Npb24uaWQsXHJcbiAgICAgICAgICAgIHN0b3JlZF9zZXNzaW9uLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICBzdG9yZWRfc2Vzc2lvbi5rZXksXHJcbiAgICAgICAgICAgIGV4cGlyYXRpb25fZGF0ZSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoIWxvYWRlZF9zZXNzaW9uLmV4cGlyZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5uZXh0KGxvYWRlZF9zZXNzaW9uKTtcclxuICAgICAgICAgICAgY29uc3QgZXhwaXJhdGlvbl9kdXJhdGlvbiA9IGV4cGlyYXRpb25fZGF0ZS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVyKGV4cGlyYXRpb25DYWxsYmFjaywgZXhwaXJhdGlvbl9kdXJhdGlvbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwaXJhdGlvbkNhbGxiYWNrKGxvYWRlZF9zZXNzaW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZVNlc3Npb24oXHJcbiAgICAgICAgdXNlcl9pZDogbnVtYmVyLFxyXG4gICAgICAgIGxvY2F0aW9uX2lkOiBudW1iZXIsXHJcbiAgICAgICAga2V5OiBzdHJpbmcsXHJcbiAgICAgICAgZXhwaXJ5X3RpbWU6IG51bWJlcixcclxuICAgICAgICBleHBpcmVzOiBudW1iZXIsXHJcbiAgICAgICAgZXhwaXJhdGlvbkNhbGxiYWNrOiAoKSA9PiB2b2lkLFxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZXhwaXJhdGlvbl9kYXRlID0gbmV3IERhdGUoZXhwaXJ5X3RpbWUgKiAxMDAwKTtcclxuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IEVzb2x2ZVNlc3Npb24oXHJcbiAgICAgICAgICAgIHVzZXJfaWQsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgIGV4cGlyYXRpb25fZGF0ZSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCBqc29uX2RhdGEgPSBKU09OLnN0cmluZ2lmeShzZXNzaW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlX2tleSxcclxuICAgICAgICAgICAganNvbl9kYXRhLFxyXG4gICAgICAgICAgICBleHBpcmF0aW9uX2RhdGUsXHJcbiAgICAgICAgICAgICcvJyxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnNldEJhY2t1cChqc29uX2RhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLl9zZXNzaW9uLm5leHQoc2Vzc2lvbik7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVyKGV4cGlyYXRpb25DYWxsYmFjaywgZXhwaXJlcyAqIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVVcGRhdGVTZXNzaW9uKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdXNlcl9pZCxcclxuICAgICAgICAgICAgbG9jYXRpb25faWQsXHJcbiAgICAgICAgfTogU2Vzc2lvblVwZGF0ZU9wdGlvbnMsXHJcbiAgICAgICAgY2FsbGJhY2s/OiAoKSA9PiB2b2lkLFxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudF9zZXNzaW9uID0gdGhpcy5jdXJyZW50U2Vzc2lvbjtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VyX2lkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBjdXJyZW50X3Nlc3Npb24udXBkYXRlVXNlcih1c2VyX2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbG9jYXRpb25faWQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRfc2Vzc2lvbi51cGRhdGVMb2NhdGlvbihsb2NhdGlvbl9pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBqc29uX2RhdGEgPSBKU09OLnN0cmluZ2lmeShjdXJyZW50X3Nlc3Npb24pO1xyXG5cclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFxyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2Vfa2V5LFxyXG4gICAgICAgICAgICBqc29uX2RhdGEsXHJcbiAgICAgICAgICAgIGN1cnJlbnRfc2Vzc2lvbi5leHBpcmF0aW9uX2RhdGUsXHJcbiAgICAgICAgICAgICcvJyxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnNldEJhY2t1cChqc29uX2RhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLl9zZXNzaW9uLm5leHQoY3VycmVudF9zZXNzaW9uKTtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFN0b3JhZ2VLZXkoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAodHlwZW9mIHRoaXMuY29uZmlnLnVzZXJfc2Vzc2lvbl9zdG9yYWdlX2tleSA9PT0gJ3N0cmluZycpICYmXHJcbiAgICAgICAgICAgICh0aGlzLmNvbmZpZy51c2VyX3Nlc3Npb25fc3RvcmFnZV9rZXkgIT09ICcnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2Vfa2V5ID0gdGhpcy5jb25maWcudXNlcl9zZXNzaW9uX3N0b3JhZ2Vfa2V5O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXJ0VGltZXIoY2FsbGJhY2s6ICgpID0+IHZvaWQsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc19icm93c2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMua2V5X2V4cGlyYXRpb25fdGltZXIgPSBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkdXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0QmFja3VwKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICghdGhpcy5pc19icm93c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlX2tleSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRCYWNrdXAoZGF0YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzX2Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlX2tleSwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVCYWNrdXAoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzX2Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlX2tleSk7XHJcbiAgICB9XHJcbn1cclxuIl19