@esolve/ng-esolve-connect 0.7.4 → 0.9.1

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.
Files changed (37) hide show
  1. package/esm2020/lib/account/esolve-account.service.mjs +81 -1
  2. package/esm2020/lib/account/esolve-change-password-result.mjs +8 -0
  3. package/esm2020/lib/account/esolve-forgot-password-response.mjs +2 -0
  4. package/esm2020/lib/account/esolve-reset-password-result.mjs +11 -0
  5. package/esm2020/lib/banners/esolve-banner.service.mjs +1 -1
  6. package/esm2020/lib/category-tree/esolve-category-tree-item-options.mjs +2 -0
  7. package/esm2020/lib/category-tree/esolve-category-tree.service.mjs +1 -1
  8. package/esm2020/lib/news/esolve-news-article-options.mjs +2 -0
  9. package/esm2020/lib/news/esolve-news.service.mjs +1 -1
  10. package/esm2020/lib/payment/esolve-payment.service.mjs +22 -2
  11. package/esm2020/lib/payment/esolve-vault-item.mjs +3 -2
  12. package/esm2020/lib/shared/error-handler/esolve-error-handler.service.mjs +56 -25
  13. package/esm2020/lib/shared/esolve-response.mjs +1 -1
  14. package/esm2020/lib/shared/esolve-result.mjs +8 -0
  15. package/esm2020/lib/stock/esolve-stock-item-options.mjs +1 -1
  16. package/esm2020/lib/stock/esolve-stock.service.mjs +4 -1
  17. package/esm2020/public-api.mjs +12 -3
  18. package/fesm2015/esolve-ng-esolve-connect.mjs +200 -44
  19. package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
  20. package/fesm2020/esolve-ng-esolve-connect.mjs +200 -44
  21. package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
  22. package/lib/account/esolve-account.service.d.ts +10 -3
  23. package/lib/account/esolve-change-password-result.d.ts +6 -0
  24. package/lib/account/esolve-forgot-password-response.d.ts +7 -0
  25. package/lib/account/esolve-reset-password-result.d.ts +9 -0
  26. package/lib/category-tree/esolve-category-tree-item-options.d.ts +18 -0
  27. package/lib/category-tree/esolve-category-tree.service.d.ts +1 -19
  28. package/lib/news/esolve-news-article-options.d.ts +11 -0
  29. package/lib/news/esolve-news.service.d.ts +1 -12
  30. package/lib/payment/esolve-payment.service.d.ts +2 -0
  31. package/lib/payment/esolve-vault-item.d.ts +2 -1
  32. package/lib/shared/error-handler/esolve-error-handler.service.d.ts +7 -2
  33. package/lib/shared/esolve-response.d.ts +15 -9
  34. package/lib/shared/esolve-result.d.ts +6 -0
  35. package/lib/stock/esolve-stock-item-options.d.ts +1 -0
  36. package/package.json +1 -1
  37. package/public-api.d.ts +11 -2
@@ -2,11 +2,14 @@ import { Inject, Injectable } from '@angular/core';
2
2
  import { throwError } from 'rxjs';
3
3
  import { catchError, map } from 'rxjs/operators';
4
4
  import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect.config';
5
+ import { EsolveResult } from '../shared/esolve-result';
5
6
  import { EsolveAddress } from './esolve-address';
6
7
  import { EsolveAddressResult } from './esolve-address-result';
7
8
  import { EsolveRegistrationResult } from './esolve-registration-result';
8
9
  import { EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact } from './esolve-user-account';
9
10
  import { EsolveUserAccountResult } from './esolve-user-account-result';
11
+ import { EsolveChangePasswordResult } from './esolve-change-password-result';
12
+ import { EsolveResetPasswordResult } from './esolve-reset-password-result';
10
13
  import * as i0 from "@angular/core";
11
14
  import * as i1 from "@angular/common/http";
12
15
  import * as i2 from "../session/esolve-session.service";
@@ -124,6 +127,25 @@ export class EsolveAccountService {
124
127
  return this.processUserAddress(response.records);
125
128
  }));
126
129
  }
130
+ deleteAddress(id) {
131
+ return this.http.delete(`${this.config.api_url}/service/delete-address.php`, {
132
+ params: {
133
+ ws_id: this.config.wsid,
134
+ id: id
135
+ },
136
+ responseType: 'json',
137
+ observe: 'body'
138
+ }).pipe(map(http_response => {
139
+ if ((http_response.result === undefined) ||
140
+ (http_response.result === null) ||
141
+ (http_response.result.status !== 'success')) {
142
+ throw http_response;
143
+ }
144
+ return new EsolveResult(http_response.result.status, http_response.result.code, http_response.result.message);
145
+ }), catchError((errorRes) => {
146
+ return this.errorHandler.handleHttpDeleteError('delete-address', errorRes);
147
+ }));
148
+ }
127
149
  register(user_registration) {
128
150
  const body = {
129
151
  user: user_registration
@@ -146,6 +168,64 @@ export class EsolveAccountService {
146
168
  return this.errorHandler.handleHttpPostError('set-registration', errorRes);
147
169
  }));
148
170
  }
171
+ changePassword(password, confirm_password) {
172
+ const body = {
173
+ password,
174
+ confirm_password
175
+ };
176
+ return this.http.post(`${this.config.api_url}/service/set-change-password.php`, body, {
177
+ headers: {
178
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
179
+ },
180
+ params: {
181
+ ws_id: this.config.wsid
182
+ },
183
+ responseType: 'json',
184
+ observe: 'body'
185
+ }).pipe(map(http_response => this.responseHandler.validateSingleHttpResponse(http_response, (response) => {
186
+ return new EsolveChangePasswordResult(response);
187
+ })), catchError((errorRes) => {
188
+ return this.errorHandler.handleHttpPostError('set-change-password', errorRes);
189
+ }));
190
+ }
191
+ sendForgotPasswordRequest(email) {
192
+ return this.http.get(`${this.config.api_url}/service/get-forgot-password.php`, {
193
+ params: {
194
+ ws_id: this.config.wsid,
195
+ email: email
196
+ }
197
+ }).pipe(map(response => {
198
+ if ((response.records === undefined) ||
199
+ !('reset_link_sent' in response.records)) {
200
+ throw response;
201
+ }
202
+ return response.records.reset_link_sent;
203
+ }));
204
+ }
205
+ resetPassword(reset_key, password, confirm_password, auto_login = true) {
206
+ return this.http.post(`${this.config.api_url}/service/set-forgot-password.php`, {
207
+ reset_key,
208
+ password,
209
+ confirm_password,
210
+ auto_login
211
+ }, {
212
+ headers: {
213
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
214
+ },
215
+ params: {
216
+ ws_id: this.config.wsid
217
+ },
218
+ responseType: 'json',
219
+ observe: 'body'
220
+ }).pipe(map(http_response => this.responseHandler.validateSingleHttpResponse(http_response, (response) => {
221
+ if (!response.login_required) {
222
+ this.sessionService.handleUpdateSession(response.esolve_id);
223
+ }
224
+ return new EsolveResetPasswordResult(response);
225
+ })), catchError((errorRes) => {
226
+ return this.errorHandler.handleHttpPostError('set-forgot-password', errorRes);
227
+ }));
228
+ }
149
229
  }
150
230
  EsolveAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EsolveAccountService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveSessionService }, { token: i3.EsolveErrorHandlerService }, { token: i4.EsolveResponseHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });
151
231
  EsolveAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EsolveAccountService, providedIn: 'root' });
@@ -158,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
158
238
  type: Inject,
159
239
  args: [ESOLVE_CONNECT_CONFIG]
160
240
  }] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveResponseHandlerService }]; } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTXhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRy9HLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFLdkUsTUFBTSxPQUFPLG9CQUFvQjtJQWU3QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQixFQUNoQixjQUFvQyxFQUNwQyxZQUF1QyxFQUN2QyxlQUE2QztRQUpkLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7UUFuQmpELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFxQmpCLElBQUksQ0FBQyxjQUFj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bUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9EO1lBRUQsT0FBTyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FDSixDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs7aUhBOU9RLG9CQUFvQixrQkFnQmpCLHFCQUFxQjtxSEFoQnhCLG9CQUFvQixjQUZqQixNQUFNOzJGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWlCUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzcyB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUG9zdERhdGEgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzLXNldC1kYXRhJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEgfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtcmVnaXN0cmF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi9lc29sdmUtc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UsIEVzb2x2ZVNldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3ItaGFuZGxlci9lc29sdmUtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZS1oYW5kbGVyL2Vzb2x2ZS1yZXNwb25zZS1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudCwgRXNvbHZlVXNlckFjY291bnRCdXNpbmVzcywgRXNvbHZlVXNlckFjY291bnRDb250YWN0IH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50JztcclxuaW1wb3J0IHsgRXNvbHZlVXNlckFjY291bnRSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlVXNlckFjY291bnREYXRhIH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50LWRhdGEnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudFJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudC1yZXN1bHQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBY2NvdW50U2VydmljZSB7XHJcbiAgICBwcml2YXRlIF91c2VyX2lkID0gMDtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHVzZXJfaWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlcl9pZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IHVzZXJfaWQodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHZhbHVlID0gKCh2YWx1ZSA+IDApID8gdmFsdWUgOiAwKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3VzZXJfaWQgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXJfaWQgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBFc29sdmVTZXNzaW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcjogRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXNzaW9uLnN1YnNjcmliZSgoc2Vzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2Vzc2lvbi5rZXkgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJfaWQgPSBzZXNzaW9uLmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVXNlckFjY291bnQocmVjb3JkOiBFc29sdmVVc2VyQWNjb3VudFJlY29yZCk6IEVzb2x2ZVVzZXJBY2NvdW50IHtcclxuICAgICAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjb3JkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoK3JlY29yZC51c2VyaWQgIT09IHRoaXMuX3VzZXJfaWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIgYWNjb3VudCByZXRyaWV2ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVzZXJfYWNjb3VudCA9IG5ldyBFc29sdmVVc2VyQWNjb3VudChcclxuICAgICAgICAgICAgK3JlY29yZC51c2VyaWQsXHJcbiAgICAgICAgICAgIHJlY29yZC5lbWFpbCxcclxuICAgICAgICAgICAgcmVjb3JkLnJlZ2lzdHJhdGlvbl90eXBlLFxyXG4gICAgICAgICAgICByZWNvcmQudGl0bGUsXHJcbiAgICAgICAgICAgIHJlY29yZC5maXJzdG5hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC5zdXJuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQuaW5pdGlhbHMsXHJcbiAgICAgICAgICAgIHJlY29yZC5nZW5kZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5pZG51bWJlclxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHVzZXJfYWNjb3VudC5jb250YWN0X2RldGFpbHMgPSBuZXcgRXNvbHZlVXNlckFjY291bnRDb250YWN0KFxyXG4gICAgICAgICAgICByZWNvcmQudGVsbnVtYmVyLFxyXG4gICAgICAgICAgICByZWNvcmQuY2VsbG51bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLmZheFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHVzZXJfYWNjb3VudC5idXNpbmVzc19kZXRhaWxzID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MoXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQudmF0bnVtLFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzZGVzY3JpcHQsXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNpbmVzc190eXBlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWNjb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWRkcmVzcyhyZWNvcmRzOiBFc29sdmVBZGRyZXNzUmVjb3JkW10pOiBFc29sdmVBZGRyZXNzW10ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJfYWRkcmVzc2VzOiBFc29sdmVBZGRyZXNzW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFyZWNvcmRzIHx8ICh0aGlzLl91c2VyX2lkID09PSAwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXNlcl9hZGRyZXNzZXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGlmICgrcmVjb3JkLnVzZXJpZCAhPT0gdGhpcy5fdXNlcl9pZCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHVzZXJfYWRkcmVzc2VzLnB1c2gobmV3IEVzb2x2ZUFkZHJlc3MoXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnJlY2lwaWVudCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5hZGRyZXNzX3R5cGUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucG9ib3gsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucGxhY2VfbmFtZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdHJlZXRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdWJ1cmIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuY2l0eSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBvc3RhbF9jb2RlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5sYXRpdHVkZSxcclxuICAgICAgICAgICAgICAgICtyZWNvcmQubG9uZ2l0dWRlXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWRkcmVzc2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVVc2VyQWNjb3VudCh1c2VyX2FjY291bnRfZGF0YTogRXNvbHZlVXNlckFjY291bnREYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVVc2VyQWNjb3VudFJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGFjY291bnQ6IHVzZXJfYWNjb3VudF9kYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9zZXQtdXNlci1hY2NvdW50LnBocGAsXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlVXNlckFjY291bnRSZXN1bHQocmVzcG9uc2UpXHJcbiAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtdXNlci1hY2NvdW50JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFVzZXJBY2NvdW50KCk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVVc2VyQWNjb3VudFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZ2V0LWFjY291bnQucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBY2NvdW50KHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0QWRkcmVzcyhhZGRyZXNzX3Bvc3RfZGF0YTogRXNvbHZlQWRkcmVzc1Bvc3REYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVBZGRyZXNzUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzc19wb3N0X2RhdGFcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1Jlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LWFkZHJlc3MucGhwYCxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVBZGRyZXNzUmVzdWx0KHJlc3BvbnNlKVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXJlZ2lzdHJhdGlvbicsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBZGRyZXNzZXMoKTogT2JzZXJ2YWJsZTxFc29sdmVBZGRyZXNzW10+IHtcclxuICAgICAgICBpZiAodGhpcy51c2VyX2lkIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0xvZyBpbiBpcyByZXF1aXJlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1JlY29yZFtdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZ2V0LWFkZHJlc3Nlcy5waHBgLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZCxcclxuICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVXNlckFkZHJlc3MocmVzcG9uc2UucmVjb3Jkcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIodXNlcl9yZWdpc3RyYXRpb246IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEpOiBPYnNlcnZhYmxlPEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIHVzZXI6IHVzZXJfcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9zZXQtcmVnaXN0cmF0aW9uLnBocGAsXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChodHRwX3Jlc3BvbnNlID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5hdXRvX2xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UuaGFuZGxlVXBkYXRlU2Vzc2lvbihyZXNwb25zZS5lc29sdmVfaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXJlZ2lzdHJhdGlvbicsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDM0IsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBUzNFLE1BQU0sT0FBTyxvQkFBb0I7SUFlN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsY0FBb0MsRUFDcEMsWUFBdUMsRUFDdkMsZUFBNkM7UUFKZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxD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UUFBUSxDQUFDLGNBQWMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0Q7WUFFRCxPQUFPLElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUNKLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxRQUFpQyxFQUFFLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOztpSEEvV1Esb0JBQW9CLGtCQWdCakIscUJBQXFCO3FIQWhCeEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBaUJRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdCc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVEZWxldGVSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlU2V0UmVzcG9uc2VcclxufSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvci1oYW5kbGVyL2Vzb2x2ZS1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlLWhhbmRsZXIvZXNvbHZlLXJlc3BvbnNlLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUFkZHJlc3MgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUG9zdERhdGEgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzLXNldC1kYXRhJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEgfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtcmVnaXN0cmF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbSc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVVc2VyQWNjb3VudCxcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MsXHJcbiAgICBFc29sdmVVc2VyQWNjb3VudENvbnRhY3RcclxufSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudFJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudC1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudERhdGEgfSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQtZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50LXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtY2hhbmdlLXBhc3N3b3JkLXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2UgfSBmcm9tICcuL2Vzb2x2ZS1mb3Jnb3QtcGFzc3dvcmQtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtcmVzZXQtcGFzc3dvcmQtcmVzdWx0JztcclxuXHJcbmludGVyZmFjZSBFc29sdmVGb3Jnb3RQYXNzd29yZEdldFJlc3VsdCB7XHJcbiAgICByZXNldF9saW5rX3NlbnQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQWNjb3VudFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXNlcl9pZCA9IDA7XHJcblxyXG4gICAgcHVibGljIGdldCB1c2VyX2lkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJfaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB1c2VyX2lkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB2YWx1ZSA9ICgodmFsdWUgPiAwKSA/IHZhbHVlIDogMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl91c2VyX2lkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyX2lkID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2Vzc2lvbi5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlc3Npb24ua2V5ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyX2lkID0gc2Vzc2lvbi5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1VzZXJBY2NvdW50KHJlY29yZDogRXNvbHZlVXNlckFjY291bnRSZWNvcmQpOiBFc29sdmVVc2VyQWNjb3VudCB7XHJcbiAgICAgICAgaWYgKCFyZWNvcmQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY29yZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCtyZWNvcmQudXNlcmlkICE9PSB0aGlzLl91c2VyX2lkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGFjY291bnQgcmV0cmlldmVkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyX2FjY291bnQgPSBuZXcgRXNvbHZlVXNlckFjY291bnQoXHJcbiAgICAgICAgICAgICtyZWNvcmQudXNlcmlkLFxyXG4gICAgICAgICAgICByZWNvcmQuZW1haWwsXHJcbiAgICAgICAgICAgIHJlY29yZC5yZWdpc3RyYXRpb25fdHlwZSxcclxuICAgICAgICAgICAgcmVjb3JkLnRpdGxlLFxyXG4gICAgICAgICAgICByZWNvcmQuZmlyc3RuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQuc3VybmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLmluaXRpYWxzLFxyXG4gICAgICAgICAgICByZWNvcmQuZ2VuZGVyLFxyXG4gICAgICAgICAgICByZWNvcmQuaWRudW1iZXJcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB1c2VyX2FjY291bnQuY29udGFjdF9kZXRhaWxzID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50Q29udGFjdChcclxuICAgICAgICAgICAgcmVjb3JkLnRlbG51bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLmNlbGxudW1iZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5mYXhcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB1c2VyX2FjY291bnQuYnVzaW5lc3NfZGV0YWlscyA9IG5ldyBFc29sdmVVc2VyQWNjb3VudEJ1c2luZXNzKFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzbmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnZhdG51bSxcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c2Rlc2NyaXB0LFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzaW5lc3NfdHlwZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB1c2VyX2FjY291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVXNlckFkZHJlc3MocmVjb3JkczogRXNvbHZlQWRkcmVzc1JlY29yZFtdKTogRXNvbHZlQWRkcmVzc1tdIHtcclxuICAgICAgICBjb25zdCB1c2VyX2FkZHJlc3NlczogRXNvbHZlQWRkcmVzc1tdID0gW107XHJcblxyXG4gICAgICAgIGlmICghcmVjb3JkcyB8fCAodGhpcy5fdXNlcl9pZCA9PT0gMCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVzZXJfYWRkcmVzc2VzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICBpZiAoK3JlY29yZC51c2VyaWQgIT09IHRoaXMuX3VzZXJfaWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1c2VyX2FkZHJlc3Nlcy5wdXNoKG5ldyBFc29sdmVBZGRyZXNzKFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5yZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuYWRkcmVzc190eXBlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBvYm94LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBsYWNlX25hbWUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3RyZWV0X251bWJlcixcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdHJlZXQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3VidXJiLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNpdHksXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucHJvdmluY2UsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuY291bnRyeSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wb3N0YWxfY29kZSxcclxuICAgICAgICAgICAgICAgICtyZWNvcmQubGF0aXR1ZGUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmxvbmdpdHVkZVxyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1c2VyX2FkZHJlc3NlcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlVXNlckFjY291bnQodXNlcl9hY2NvdW50X2RhdGE6IEVzb2x2ZVVzZXJBY2NvdW50RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhY2NvdW50OiB1c2VyX2FjY291bnRfZGF0YVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LXVzZXItYWNjb3VudC5waHBgLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0KHJlc3BvbnNlKVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXVzZXItYWNjb3VudCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRVc2VyQWNjb3VudCgpOiBPYnNlcnZhYmxlPEVzb2x2ZVVzZXJBY2NvdW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVXNlckFjY291bnRSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1hY2NvdW50LnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSByZXNwb25zZS5yZWNvcmRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NVc2VyQWNjb3VudChyZWNvcmQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldEFkZHJlc3MoYWRkcmVzc19wb3N0X2RhdGE6IEVzb2x2ZUFkZHJlc3NQb3N0RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1Jlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NfcG9zdF9kYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZXNwb25zZT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL3NldC1hZGRyZXNzLnBocGAsXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlQWRkcmVzc1Jlc3VsdChyZXNwb25zZSlcclxuICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWRkcmVzc2VzKCk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1tdPiB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlcl9pZCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdMb2cgaW4gaXMgcmVxdWlyZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1hZGRyZXNzZXMucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogdGhpcy51c2VyX2lkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBZGRyZXNzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZUFkZHJlc3MoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8RXNvbHZlRGVsZXRlUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2RlbGV0ZS1hZGRyZXNzLnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChodHRwX3Jlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IG51bGwpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyAhPT0gJ3N1Y2Nlc3MnKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaHR0cF9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc3VsdChcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5tZXNzYWdlXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cERlbGV0ZUVycm9yKCdkZWxldGUtYWRkcmVzcycsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlcih1c2VyX3JlZ2lzdHJhdGlvbjogRXNvbHZlUmVnaXN0cmF0aW9uRGF0YSk6IE9ic2VydmFibGU8RXNvbHZlUmVnaXN0cmF0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgdXNlcjogdXNlcl9yZWdpc3RyYXRpb25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL3NldC1yZWdpc3RyYXRpb24ucGhwYCxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKGh0dHBfcmVzcG9uc2UgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmF1dG9fbG9naW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHJlc3BvbnNlLmVzb2x2ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtcmVnaXN0cmF0aW9uJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcsIGNvbmZpcm1fcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LWNoYW5nZS1wYXNzd29yZC5waHBgLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoaHR0cF9yZXNwb25zZSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1jaGFuZ2UtcGFzc3dvcmQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VuZEZvcmdvdFBhc3N3b3JkUmVxdWVzdChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlRm9yZ290UGFzc3dvcmRHZXRSZXN1bHQ+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtZm9yZ290LXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBlbWFpbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgISgncmVzZXRfbGlua19zZW50JyBpbiByZXNwb25zZS5yZWNvcmRzKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlY29yZHMucmVzZXRfbGlua19zZW50O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0UGFzc3dvcmQoXHJcbiAgICAgICAgcmVzZXRfa2V5OiBzdHJpbmcsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgYXV0b19sb2dpbiA9IHRydWVcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVGb3Jnb3RQYXNzd29yZFJlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2Uvc2V0LWZvcmdvdC1wYXNzd29yZC5waHBgLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICByZXNldF9rZXksXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1fcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICBhdXRvX2xvZ2luXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3c19pZDogdGhpcy5jb25maWcud3NpZFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChodHRwX3Jlc3BvbnNlID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UubG9naW5fcmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHJlc3BvbnNlLmVzb2x2ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc2V0UGFzc3dvcmRSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWZvcmdvdC1wYXNzd29yZCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { EsolveResponseResult } from '../shared/response-handler/esolve-response-result';
2
+ export class EsolveChangePasswordResult extends EsolveResponseResult {
3
+ constructor(response) {
4
+ super(response);
5
+ this.password_updated = (response.status.state === 'success');
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNoYW5nZS1wYXNzd29yZC1yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLWNoYW5nZS1wYXNzd29yZC1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG9CQUFvQjtJQUdoRSxZQUNJLFFBQWdDO1FBRWhDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlLWhhbmRsZXIvZXNvbHZlLXJlc3BvbnNlLXJlc3VsdCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQgZXh0ZW5kcyBFc29sdmVSZXNwb25zZVJlc3VsdCB7XHJcbiAgICBwdWJsaWMgcGFzc3dvcmRfdXBkYXRlZDogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICByZXNwb25zZTogRXNvbHZlUG9zdFJlc3BvbnNlSXRlbVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIocmVzcG9uc2UpO1xyXG5cclxuICAgICAgICB0aGlzLnBhc3N3b3JkX3VwZGF0ZWQgPSAocmVzcG9uc2Uuc3RhdHVzLnN0YXRlID09PSAnc3VjY2VzcycpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWZvcmdvdC1wYXNzd29yZC1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtZm9yZ290LXBhc3N3b3JkLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2UgZXh0ZW5kcyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIHtcclxuICAgIGVzb2x2ZV9pZDogbnVtYmVyO1xyXG4gICAgcmVzZXRfc3VjY2VzczogYm9vbGVhbjtcclxuICAgIHBhc3N3b3JkX21hdGNoZXNfb2xkOiBib29sZWFuO1xyXG4gICAgbG9naW5fcmVxdWlyZWQ6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -0,0 +1,11 @@
1
+ import { EsolveResponseResult } from '../shared/response-handler/esolve-response-result';
2
+ export class EsolveResetPasswordResult extends EsolveResponseResult {
3
+ constructor(response) {
4
+ super(response);
5
+ this.id = response.esolve_id;
6
+ this.reset_success = response.reset_success;
7
+ this.password_matches_old = response.password_matches_old;
8
+ this.login_required = response.login_required;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJlc2V0LXBhc3N3b3JkLXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtcmVzZXQtcGFzc3dvcmQtcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBR3pGLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxvQkFBb0I7SUFNL0QsWUFDSSxRQUFzQztRQUV0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUNsRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZS1oYW5kbGVyL2Vzb2x2ZS1yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVGb3Jnb3RQYXNzd29yZFJlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtZm9yZ290LXBhc3N3b3JkLXJlc3BvbnNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0IGV4dGVuZHMgRXNvbHZlUmVzcG9uc2VSZXN1bHQge1xyXG4gICAgcHVibGljIGlkOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcmVzZXRfc3VjY2VzczogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBwYXNzd29yZF9tYXRjaGVzX29sZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBsb2dpbl9yZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICByZXNwb25zZTogRXNvbHZlRm9yZ290UGFzc3dvcmRSZXNwb25zZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIocmVzcG9uc2UpO1xyXG5cclxuICAgICAgICB0aGlzLmlkID0gcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG4gICAgICAgIHRoaXMucmVzZXRfc3VjY2VzcyA9IHJlc3BvbnNlLnJlc2V0X3N1Y2Nlc3M7XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZF9tYXRjaGVzX29sZCA9IHJlc3BvbnNlLnBhc3N3b3JkX21hdGNoZXNfb2xkO1xyXG4gICAgICAgIHRoaXMubG9naW5fcmVxdWlyZWQgPSByZXNwb25zZS5sb2dpbl9yZXF1aXJlZDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -101,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
101
101
  type: Inject,
102
102
  args: [ESOLVE_CONNECT_CONFIG]
103
103
  }] }, { type: i1.HttpClient }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9iYW5uZXJzL2Vzb2x2ZS1iYW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd0RixPQUFPLEVBQUUsWUFBWSxFQUF3QixNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFRekUsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDeEIsQ0FBQztJQUVHLDBCQUEwQixDQUFDLGVBQWlEO1FBQ2hGLE1BQU0sUUFBUSxHQUErQixFQUFFLENBQUM7UUFFaEQsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QixLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRTtnQkFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSx3QkFBd0IsQ0FDeEMsY0FBYyxDQUFDLEdBQUcsRUFDbEIsY0FBYyxDQUFDLE1BQU0sRUFDckIsY0FBYyxDQUFDLE1BQU0sRUFDckIsY0FBYyxDQUFDLGFBQWEsQ0FDL0IsQ0FBQztnQkFFRixRQUFRLENBQUMsSUFBSSxD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O2dCQUNSLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3ZCLGtCQUFrQjthQUNyQjtTQUNKLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxFQUFFO1lBQ1osTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSx3QkFBd0IsRUFBRTtZQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sMEJBQTBCLEVBQ2hELEVBQUUsTUFBTSxFQUFFLENBQ2IsQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ1gsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOztnSEFySVEsbUJBQW1CLGtCQUVoQixxQkFBcUI7b0hBRnhCLG1CQUFtQixjQUZoQixNQUFNOzJGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlQmFubmVyVHlwZSB9IGZyb20gJy4vZXNvbHZlLWJhbm5lci10eXBlJztcclxuaW1wb3J0IHsgRXNvbHZlQmFubmVyLCBFc29sdmVCYW5uZXJJbWFnZVNldCB9IGZyb20gJy4vZXNvbHZlLWJhbm5lcic7XHJcbmltcG9ydCB7IEVzb2x2ZUJhbm5lckltYWdlIH0gZnJvbSAnLi9lc29sdmUtYmFubmVyLWltYWdlJztcclxuaW1wb3J0IHsgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90IH0gZnJvbSAnLi9lc29sdmUtYmFubmVyLWltYWdlLWhvdHNwb3QnO1xyXG5pbXBvcnQgeyBFc29sdmVCYW5uZXJSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1iYW5uZXItcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90UmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYmFubmVyLWltYWdlLWhvdHNwb3QtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlQmFubmVySW1hZ2VSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1iYW5uZXItaW1hZ2UtcmVjb3JkJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQmFubmVyU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgICApIHsgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc0Jhbm5lckltYWdlSG90c3BvdHMoaG90c3BvdF9yZWNvcmRzOiBFc29sdmVCYW5uZXJJbWFnZUhvdHNwb3RSZWNvcmRbXSk6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFtdIHtcclxuICAgICAgICBjb25zdCBob3RzcG90czogRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90W10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKGhvdHNwb3RfcmVjb3Jkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaG90c3BvdF9yZWNvcmQgb2YgaG90c3BvdF9yZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBob3RzcG90ID0gbmV3IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdChcclxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC51cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgaG90c3BvdF9yZWNvcmQudGFyZ2V0LFxyXG4gICAgICAgICAgICAgICAgICAgIGhvdHNwb3RfcmVjb3JkLmNvb3JkcyxcclxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC5jb29yZHNfc3RyaW5nXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGhvdHNwb3RzLnB1c2goaG90c3BvdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBob3RzcG90cztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NCYW5uZXJJbWFnZXMoaW1hZ2VfcmVjb3JkczogRXNvbHZlQmFubmVySW1hZ2VSZWNvcmRbXSwgYmFubmVyX3R5cGU6IEVzb2x2ZUJhbm5lclR5cGUpOiBFc29sdmVCYW5uZXJJbWFnZVtdIHtcclxuICAgICAgICBjb25zdCBpbWFnZXM6IEVzb2x2ZUJhbm5lckltYWdlW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKGltYWdlX3JlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGltYWdlX3JlY29yZCBvZiBpbWFnZV9yZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBFc29sdmVCYW5uZXJJbWFnZShcclxuICAgICAgICAgICAgICAgICAgICAraW1hZ2VfcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlX3JlY29yZC5pbWFnZV90eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICtpbWFnZV9yZWNvcmQud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgK2ltYWdlX3JlY29yZC5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfcmVjb3JkLmZpbGVuYW1lXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICgoYmFubmVyX3R5cGUgPT09ICdob3RzcG90JykgJiYgKGltYWdlX3JlY29yZC5ob3RzcG90cykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBob3RzcG90cyA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlSG90c3BvdHMoaW1hZ2VfcmVjb3JkLmhvdHNwb3RzKTtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZS5ob3RzcG90cyA9IGhvdHNwb3RzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGltYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGltYWdlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3MgYmFubmVyIHJlY29yZHMgaW50byBiYW5uZXIgb2JqZWN0c1xyXG4gICAgICogQHBhcmFtIHJlY29yZHMgQXJyYXkgb2YgcmVjb3Jkc1xyXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBiYW5uZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc0Jhbm5lcnMocmVjb3JkczogRXNvbHZlQmFubmVyUmVjb3JkW10pOiBFc29sdmVCYW5uZXJbXSB7XHJcbiAgICAgICAgY29uc3QgYmFubmVyczogRXNvbHZlQmFubmVyW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKChyZWNvcmRzKSAmJiAocmVjb3Jkcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZV9zZXRzOiBFc29sdmVCYW5uZXJJbWFnZVNldCA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQuaW1hZ2VzLmRlc2t0b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLmRlc2t0b3AgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMocmVjb3JkLmltYWdlcy5kZXNrdG9wLCByZWNvcmQudHlwZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5pbWFnZXMubW9iaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vfc2V0cy5tb2JpbGUgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMocmVjb3JkLmltYWdlcy5tb2JpbGUsIHJlY29yZC50eXBlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmltYWdlcy5zdWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLnN1YiA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlcyhyZWNvcmQuaW1hZ2VzLnN1YiwgcmVjb3JkLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGJhbm5lciA9IG5ldyBFc29sdmVCYW5uZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYXJ0aWNsZSxcclxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnNvcnRfcHJpb3JpdHksXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlY29yZC5saW5rLnVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByZWNvcmQubGluay50YXJnZXRcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlX3NldHNcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgYmFubmVycy5wdXNoKGJhbm5lcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBiYW5uZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGJhbm5lcnMgcmVjb3JkcyBmcm9tIGVTb2x2ZSBpbnN0YW5jZVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgZVNvbHZlIGJhbm5lcnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRCYW5uZXJzKFxyXG4gICAgICAgIGlkZW50aWZpZXI/OiBzdHJpbmcsXHJcbiAgICAgICAgYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyPzogc3RyaW5nLFxyXG4gICAgICAgIGVuYWJsZV9kYXRlX2ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUJhbm5lcltdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xyXG4gICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVfZGF0ZV9maWx0ZXJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoaWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpZGVudGlmaWVyJywgaWRlbnRpZmllcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Jhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcicsIGJhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVCYW5uZXJSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1iYW5uZXJzLnBocGAsXHJcbiAgICAgICAgICAgIHsgcGFyYW1zIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0Jhbm5lcnMocmVzcG9uc2UucmVjb3Jkcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9iYW5uZXJzL2Vzb2x2ZS1iYW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd0RixPQUFPLEVBQUUsWUFBWSxFQUF3QixNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFRekUsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDeEIsQ0FBQztJQUVHLDBCQUEwQixDQUFDLGVBQWlEO1FBQ2hGLE1BQU0sUUFBUSxHQUErQixFQUFFLENBQUM7UUFFaEQsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QixLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRTtnQkFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSx3QkFBd0IsQ0FDeEMsY0FBYyxDQUFDLEdBQUcsRUFDbEIsY0FBYyxDQUFDLE1BQU0sRUFDckIsY0FBYyxDQUFDLE1BQU0sRUFDckIsY0FBYyxDQUFDLGFBQWEsQ0FDL0IsQ0FBQztnQkFFRixRQUFRLENBQUMsSUFBSSxD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QUU7Z0JBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtnQkFDdkIsa0JBQWtCO2FBQ3JCO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUU7WUFDWixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDakQ7UUFFRCxJQUFJLHdCQUF3QixFQUFFO1lBQzFCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDN0U7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNoQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywwQkFBMEIsRUFDaEQsRUFBRSxNQUFNLEVBQUUsQ0FDYixDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDWCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO2dCQUNoQyxNQUFNLFFBQVEsQ0FBQzthQUNsQjtZQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7O2dIQXhJUSxtQkFBbUIsa0JBRWhCLHFCQUFxQjtvSEFGeEIsbUJBQW1CLGNBRmhCLE1BQU07MkZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVCYW5uZXJUeXBlIH0gZnJvbSAnLi9lc29sdmUtYmFubmVyLXR5cGUnO1xyXG5pbXBvcnQgeyBFc29sdmVCYW5uZXIsIEVzb2x2ZUJhbm5lckltYWdlU2V0IH0gZnJvbSAnLi9lc29sdmUtYmFubmVyJztcclxuaW1wb3J0IHsgRXNvbHZlQmFubmVySW1hZ2UgfSBmcm9tICcuL2Vzb2x2ZS1iYW5uZXItaW1hZ2UnO1xyXG5pbXBvcnQgeyBFc29sdmVCYW5uZXJJbWFnZUhvdHNwb3QgfSBmcm9tICcuL2Vzb2x2ZS1iYW5uZXItaW1hZ2UtaG90c3BvdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUJhbm5lclJlY29yZCB9IGZyb20gJy4vZXNvbHZlLWJhbm5lci1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVCYW5uZXJJbWFnZUhvdHNwb3RSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1iYW5uZXItaW1hZ2UtaG90c3BvdC1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVCYW5uZXJJbWFnZVJlY29yZCB9IGZyb20gJy4vZXNvbHZlLWJhbm5lci1pbWFnZS1yZWNvcmQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVCYW5uZXJTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzQmFubmVySW1hZ2VIb3RzcG90cyhob3RzcG90X3JlY29yZHM6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFJlY29yZFtdKTogRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90W10ge1xyXG4gICAgICAgIGNvbnN0IGhvdHNwb3RzOiBFc29sdmVCYW5uZXJJbWFnZUhvdHNwb3RbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoaG90c3BvdF9yZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBob3RzcG90X3JlY29yZCBvZiBob3RzcG90X3JlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhvdHNwb3QgPSBuZXcgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90KFxyXG4gICAgICAgICAgICAgICAgICAgIGhvdHNwb3RfcmVjb3JkLnVybCxcclxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC50YXJnZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgaG90c3BvdF9yZWNvcmQuY29vcmRzLFxyXG4gICAgICAgICAgICAgICAgICAgIGhvdHNwb3RfcmVjb3JkLmNvb3Jkc19zdHJpbmdcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgaG90c3BvdHMucHVzaChob3RzcG90KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGhvdHNwb3RzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc0Jhbm5lckltYWdlcyhcclxuICAgICAgICBpbWFnZV9yZWNvcmRzOiBFc29sdmVCYW5uZXJJbWFnZVJlY29yZFtdLFxyXG4gICAgICAgIGJhbm5lcl90eXBlOiBFc29sdmVCYW5uZXJUeXBlXHJcbiAgICApOiBFc29sdmVCYW5uZXJJbWFnZVtdIHtcclxuICAgICAgICBjb25zdCBpbWFnZXM6IEVzb2x2ZUJhbm5lckltYWdlW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKGltYWdlX3JlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGltYWdlX3JlY29yZCBvZiBpbWFnZV9yZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBFc29sdmVCYW5uZXJJbWFnZShcclxuICAgICAgICAgICAgICAgICAgICAraW1hZ2VfcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlX3JlY29yZC5pbWFnZV90eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICtpbWFnZV9yZWNvcmQud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgK2ltYWdlX3JlY29yZC5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfcmVjb3JkLmZpbGVuYW1lXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICgoYmFubmVyX3R5cGUgPT09ICdob3RzcG90JykgJiYgKGltYWdlX3JlY29yZC5ob3RzcG90cykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBob3RzcG90cyA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlSG90c3BvdHMoaW1hZ2VfcmVjb3JkLmhvdHNwb3RzKTtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZS5ob3RzcG90cyA9IGhvdHNwb3RzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGltYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGltYWdlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3MgYmFubmVyIHJlY29yZHMgaW50byBiYW5uZXIgb2JqZWN0c1xyXG4gICAgICogQHBhcmFtIHJlY29yZHMgQXJyYXkgb2YgcmVjb3Jkc1xyXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBiYW5uZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc0Jhbm5lcnMocmVjb3JkczogRXNvbHZlQmFubmVyUmVjb3JkW10pOiBFc29sdmVCYW5uZXJbXSB7XHJcbiAgICAgICAgY29uc3QgYmFubmVyczogRXNvbHZlQmFubmVyW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKChyZWNvcmRzKSAmJiAocmVjb3Jkcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZV9zZXRzOiBFc29sdmVCYW5uZXJJbWFnZVNldCA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQuaW1hZ2VzLmRlc2t0b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLmRlc2t0b3AgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMocmVjb3JkLmltYWdlcy5kZXNrdG9wLCByZWNvcmQudHlwZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5pbWFnZXMubW9iaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vfc2V0cy5tb2JpbGUgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMocmVjb3JkLmltYWdlcy5tb2JpbGUsIHJlY29yZC50eXBlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmltYWdlcy5zdWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLnN1YiA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlcyhyZWNvcmQuaW1hZ2VzLnN1YiwgcmVjb3JkLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGJhbm5lciA9IG5ldyBFc29sdmVCYW5uZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYXJ0aWNsZSxcclxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnNvcnRfcHJpb3JpdHksXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlY29yZC5saW5rLnVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByZWNvcmQubGluay50YXJnZXRcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlX3NldHNcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgYmFubmVycy5wdXNoKGJhbm5lcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBiYW5uZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGJhbm5lcnMgcmVjb3JkcyBmcm9tIGVTb2x2ZSBpbnN0YW5jZVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgZVNvbHZlIGJhbm5lcnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRCYW5uZXJzKFxyXG4gICAgICAgIGlkZW50aWZpZXI/OiBzdHJpbmcsXHJcbiAgICAgICAgYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyPzogc3RyaW5nLFxyXG4gICAgICAgIGVuYWJsZV9kYXRlX2ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUJhbm5lcltdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xyXG4gICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWQsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVfZGF0ZV9maWx0ZXJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoaWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpZGVudGlmaWVyJywgaWRlbnRpZmllcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Jhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcicsIGJhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVCYW5uZXJSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1iYW5uZXJzLnBocGAsXHJcbiAgICAgICAgICAgIHsgcGFyYW1zIH1cclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0Jhbm5lcnMocmVzcG9uc2UucmVjb3Jkcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhdGVnb3J5LXRyZWUtaXRlbS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jYXRlZ29yeS10cmVlL2Vzb2x2ZS1jYXRlZ29yeS10cmVlLWl0ZW0tb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVDYXRlZ29yeVRyZWVJdGVtT3B0aW9ucyB7XHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlZCBJRC4gRG9lcyBub3QgcmVxdWlyZSB0eXBlIHRvIGJlIHNldC5cclxuICAgICAqL1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIFR5cGUgY2F0ZWdvcnkgdHJlZSBpdGVtLiBSZXF1aXJlZCBmb3IgaWYgZXNvbHZlX2lkIG9yIHNlZl9kZXNjcmlwdGlvbiBpcyBzZXRcclxuICAgICAqL1xyXG4gICAgdHlwZT86ICdjYXRlZ29yeScgfCAnc3ViY2F0ZWdvcnknO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZWFyY2ggZW5naW5lIGZyaWVuZGx5IGRlc2NyaXB0aW9uLiBSZXF1aXJlcyB0eXBlIHRvIGJlIHNldC5cclxuICAgICAqL1xyXG4gICAgc2VmX2Rlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJRCBmcm9tIGVTb2x2ZS4gUmVxdWlyZXMgdHlwZSB0byBiZSBzZXQuXHJcbiAgICAgKi9cclxuICAgIGVzb2x2ZV9pZD86IG51bWJlciB8IHN0cmluZztcclxufVxyXG4iXX0=
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
123
123
  type: Inject,
124
124
  args: [ESOLVE_CONNECT_CONFIG]
125
125
  }] }, { type: i1.HttpClient }]; } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhdGVnb3J5LXRyZWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvY2F0ZWdvcnktdHJlZS9lc29sdmUtY2F0ZWdvcnktdHJlZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQTZCckUsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQyxZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDeEIsQ0FBQztJQUVMOzs7T0FHRztJQUNLLFdBQVcsQ0FBQyxZQUFnRTtRQUNoRixNQUFNLFVBQVUsR0FBNkIsRUFBRSxDQUFDO1FBRWhELElBQUksWUFBWSxFQUFFO1lBQ2QsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUU7Z0JBQ3BDLElBQUksU0FBUyxHQUFvQixFQUFFLENBQUM7Z0JBQ3BDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxRQUFRLEdBQTZCLEVBQUUsQ0FBQztnQkFFNUMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtvQkFDakMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFB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QUcsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUN0RTtZQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLDRCQUE0QixFQUNsRCxFQUFFLE1BQU0sRUFBRSxDQUNiLENBQUMsSUFBSSxDQUNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFO29CQUNwRSxNQUFNLFFBQVEsQ0FBQztpQkFDbEI7Z0JBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFFRCxPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O3NIQXZLUSx5QkFBeUIsa0JBR3RCLHFCQUFxQjswSEFIeEIseUJBQXlCLGNBRnRCLE1BQU07MkZBRVQseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBSVEsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlQ2F0ZWdvcnlSZWNvcmQsIEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1SZWNvcmQsIEVzb2x2ZVN1YmNhdGVnb3J5UmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtY2F0ZWdvcnktdHJlZS1pdGVtLXJlY29yZCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0gfSBmcm9tICcuL2Vzb2x2ZS1jYXRlZ29yeS10cmVlLWl0ZW0nO1xyXG5cclxuaW50ZXJmYWNlIEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1PcHRpb25zIHtcclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVkIElELiBEb2VzIG5vdCByZXF1aXJlIHR5cGUgdG8gYmUgc2V0LlxyXG4gICAgICovXHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogVHlwZSBjYXRlZ29yeSB0cmVlIGl0ZW0uIFJlcXVpcmVkIGZvciBpZiBlc29sdmVfaWQgb3Igc2VmX2Rlc2NyaXB0aW9uIGlzIHNldFxyXG4gICAgICovXHJcbiAgICB0eXBlPzogJ2NhdGVnb3J5JyB8ICdzdWJjYXRlZ29yeSc7XHJcbiAgICAvKipcclxuICAgICAqIFNlYXJjaCBlbmdpbmUgZnJpZW5kbHkgZGVzY3JpcHRpb24uIFJlcXVpcmVzIHR5cGUgdG8gYmUgc2V0LlxyXG4gICAgICovXHJcbiAgICBzZWZfZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIElEIGZyb20gZVNvbHZlLiBSZXF1aXJlcyB0eXBlIHRvIGJlIHNldC5cclxuICAgICAqL1xyXG4gICAgZXNvbHZlX2lkPzogbnVtYmVyIHwgc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlQ2F0ZWdvcnlJZGVudGlmaWVyIHtcclxuICAgIHR5cGU6ICdjYXRlZ29yeScgfCAnc3ViY2F0ZWdvcnknO1xyXG4gICAgZXNvbHZlX2lkOiBudW1iZXIgfCBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQ2F0ZWdvcnlUcmVlU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHRyZWUgcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSBpbnRvIHRoZSBjb3JyZWN0IGZvcm1hdC5cclxuICAgICAqIEBwYXJhbSB0cmVlX3JlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc1RyZWUodHJlZV9yZWNvcmRzOiAoRXNvbHZlQ2F0ZWdvcnlSZWNvcmQgfCBFc29sdmVTdWJjYXRlZ29yeVJlY29yZClbXSk6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXSB7XHJcbiAgICAgICAgY29uc3QgdHJlZV9pdGVtczogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVtdID0gW107XHJcblxyXG4gICAgICAgIGlmICh0cmVlX3JlY29yZHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB0cmVlX3JlY29yZCBvZiB0cmVlX3JlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlc29sdmVfaWQ6IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudF9pZCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuOiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHJlZV9yZWNvcmQudHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gdGhpcy5wcm9jZXNzVHJlZSh0cmVlX3JlY29yZC5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgZXNvbHZlX2lkID0gdHJlZV9yZWNvcmQubWVudV9pZDtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSB0cmVlX3JlY29yZC5vd25lcl9tZW51X2lkO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlc29sdmVfaWQgPSB0cmVlX3JlY29yZC5pZDtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSB0cmVlX3JlY29yZC5tZW51X2lkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRyZWVfaXRlbXMucHVzaChuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcclxuICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCxcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuc2VmX2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNlb19kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zb3J0X3ByaW9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLmFjdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5kaXNwbGF5X29ubHksXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuaW1hZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuc2VvX3BhZ2VfdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuc2VvX2tleXdvcmRzLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNob3J0X2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRyZWVfaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVHJlZUl0ZW0ocmVjb3JkOiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtUmVjb3JkKTogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbXtcclxuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0oXHJcbiAgICAgICAgICAgIHJlY29yZC50eXBlLFxyXG4gICAgICAgICAgICByZWNvcmQuaWQsXHJcbiAgICAgICAgICAgIHJlY29yZC5wYXJlbnRfaWQsXHJcbiAgICAgICAgICAgIHJlY29yZC5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgcmVjb3JkLnNlZl9kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgcmVjb3JkLnNob3J0X2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICByZWNvcmQuc29ydF9wcmlvcml0eSxcclxuICAgICAgICAgICAgcmVjb3JkLmFjdGl2ZSxcclxuICAgICAgICAgICAgcmVjb3JkLmRpc3BsYXlfb25seSxcclxuICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgIHJlY29yZC5zZW9fcGFnZV90aXRsZSxcclxuICAgICAgICAgICAgcmVjb3JkLnNlb19rZXl3b3JkcyxcclxuICAgICAgICAgICAgcmVjb3JkLnNlb19kZXNjcmlwdGlvblxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzSUQoaWQ6IHN0cmluZyk6IEVzb2x2ZUNhdGVnb3J5SWRlbnRpZmllciB8IG51bGwge1xyXG4gICAgICAgIGxldCB0eXBlOiAnY2F0ZWdvcnknIHwgJ3N1YmNhdGVnb3J5JztcclxuICAgICAgICBsZXQgZXNvbHZlX2lkOiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gICAgICAgIGNvbnN0IHR5cGVfY29kZV9yZWdleCA9IC9eXFw8XFw8KENBVHxTVUIpXFw+XFw+L2c7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0cyA9IGlkLm1hdGNoKHR5cGVfY29kZV9yZWdleCk7XHJcblxyXG4gICAgICAgIGlmIChtYXRjaF9yZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGVfY29kZSA9IG1hdGNoX3Jlc3VsdHNbMF07XHJcblxyXG4gICAgICAgICAgICB0eXBlID0gKHR5cGVfY29kZSA9PT0gJzw8Q0FUPj4nID8gJ2NhdGVnb3J5JyA6ICdzdWJjYXRlZ29yeScpO1xyXG4gICAgICAgICAgICBlc29sdmVfaWQgPSBpZC5yZXBsYWNlKHR5cGVfY29kZV9yZWdleCwgJycpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgICAgICBlc29sdmVfaWRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBjYXRlZ29yeSB0cmVlIGZyb20gZVNvbHZlIGluc3RhbmNlIGFuZCBjb3ZlcnRzIGl0IHRvIHRoZSBjb3JyZWN0IGZvcm1hdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldENhdGVnb3J5VHJlZSgpOiBPYnNlcnZhYmxlPEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3dzX2lkJywgdGhpcy5jb25maWcud3NpZCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPChFc29sdmVDYXRlZ29yeVJlY29yZCB8IEVzb2x2ZVN1YmNhdGVnb3J5UmVjb3JkKVtdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZ2V0LXRyZWUucGhwYCxcclxuICAgICAgICAgICAgeyBwYXJhbXMgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVHJlZShyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgdGhlIGRldGFpbHMgb2YgYSBjYXRlZ29yeSB0cmVlIGl0ZW0gZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIGFuZCBjb252ZXJ0cyBpdCB0byB0aGUgY29ycmVjdCBmb3JtYXQuXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlUcmVlSXRlbShvcHRpb25zOiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtT3B0aW9ucyk6IE9ic2VydmFibGU8RXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbT4ge1xyXG4gICAgICAgIGxldCB0eXBlITogJ2NhdGVnb3J5JyB8ICdzdWJjYXRlZ29yeSc7XHJcbiAgICAgICAgbGV0IGVzb2x2ZV9pZCE6IG51bWJlciB8IHN0cmluZztcclxuICAgICAgICBsZXQgc2VmX2Rlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5pZCkge1xyXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkZW50aWZpZXIgPSB0aGlzLnByb2Nlc3NJRChvcHRpb25zLmlkKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeUlkZW50aWZpZXIpIHtcclxuICAgICAgICAgICAgICAgIHR5cGUgPSBjYXRlZ29yeUlkZW50aWZpZXIudHlwZTtcclxuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IGNhdGVnb3J5SWRlbnRpZmllci5lc29sdmVfaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudHlwZSkge1xyXG4gICAgICAgICAgICB0eXBlID0gb3B0aW9ucy50eXBlO1xyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZXNvbHZlX2lkKSB7XHJcbiAgICAgICAgICAgICAgICBlc29sdmVfaWQgPSBvcHRpb25zLmVzb2x2ZV9pZDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnNlZl9kZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc2VmX2Rlc2NyaXB0aW9uID0gb3B0aW9ucy5zZWZfZGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlICYmIChlc29sdmVfaWQgfHwgc2VmX2Rlc2NyaXB0aW9uKSkge1xyXG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3dzX2lkJywgdGhpcy5jb25maWcud3NpZC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndHlwZScsIHR5cGUudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXNvbHZlX2lkKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpZCcsIGVzb2x2ZV9pZC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNlZl9kZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VmX2Rlc2NyaXB0aW9uJywgc2VmX2Rlc2NyaXB0aW9uLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVDYXRlZ29yeVRyZWVJdGVtUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZ2V0LXRyZWUtaXRlbS5waHBgLFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfVxyXG4gICAgICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fCAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVHJlZUl0ZW0ocmVzcG9uc2UucmVjb3Jkc1swXSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhdGVnb3J5LXRyZWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvY2F0ZWdvcnktdHJlZS9lc29sdmUtY2F0ZWdvcnktdHJlZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFNdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQVdyRSxNQUFNLE9BQU8seUJBQXlCO0lBRWxDLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCO1FBRGUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN4QixDQUFDO0lBRUw7OztPQUdHO0lBQ0ssV0FBVyxDQUFDLFlBQWdFO1FBQ2hGLE1BQU0sVUFBVSxHQUE2QixFQUFFLENBQUM7UUFFaEQsSUFBSSxZQUFZLEVBQUU7WUFDZCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRTtnQkFDcEMsSUFBSSxTQUFTLEdBQW9CLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLFFBQVEsR0FBNkIsRUFBRSxDQUFDO2dCQUU1QyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO29CQUNqQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFB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RyxDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sNEJBQTRCLEVBQ2xELEVBQUUsTUFBTSxFQUFFLENBQ2IsQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQ3BFLE1BQU0sUUFBUSxDQUFDO2lCQUNsQjtnQkFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUVELE9BQU8sVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekMsQ0FBQzs7c0hBdktRLHlCQUF5QixrQkFHdEIscUJBQXFCOzBIQUh4Qix5QkFBeUIsY0FGdEIsTUFBTTsyRkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFJUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlQ2F0ZWdvcnlSZWNvcmQsXHJcbiAgICBFc29sdmVDYXRlZ29yeVRyZWVJdGVtUmVjb3JkLFxyXG4gICAgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmRcclxufSBmcm9tICcuL2Vzb2x2ZS1jYXRlZ29yeS10cmVlLWl0ZW0tcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbSB9IGZyb20gJy4vZXNvbHZlLWNhdGVnb3J5LXRyZWUtaXRlbSc7XHJcbmltcG9ydCB7IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1PcHRpb25zIH0gZnJvbSAnLi9lc29sdmUtY2F0ZWdvcnktdHJlZS1pdGVtLW9wdGlvbnMnO1xyXG5cclxuaW50ZXJmYWNlIEVzb2x2ZUNhdGVnb3J5SWRlbnRpZmllciB7XHJcbiAgICB0eXBlOiAnY2F0ZWdvcnknIHwgJ3N1YmNhdGVnb3J5JztcclxuICAgIGVzb2x2ZV9pZDogbnVtYmVyIHwgc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUNhdGVnb3J5VHJlZVNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSB0cmVlIHJlY29yZHMgYW5kIGNvbnZlcnRzIHRoZW0gaW50byB0aGUgY29ycmVjdCBmb3JtYXQuXHJcbiAgICAgKiBAcGFyYW0gdHJlZV9yZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NUcmVlKHRyZWVfcmVjb3JkczogKEVzb2x2ZUNhdGVnb3J5UmVjb3JkIHwgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmQpW10pOiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IHRyZWVfaXRlbXM6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodHJlZV9yZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdHJlZV9yZWNvcmQgb2YgdHJlZV9yZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXNvbHZlX2lkOiBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRfaWQgPSAnJztcclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbjogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVtdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRyZWVfcmVjb3JkLnR5cGUgPT09ICdjYXRlZ29yeScpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHRoaXMucHJvY2Vzc1RyZWUodHJlZV9yZWNvcmQuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IHRyZWVfcmVjb3JkLm1lbnVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50X2lkID0gdHJlZV9yZWNvcmQub3duZXJfbWVudV9pZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXNvbHZlX2lkID0gdHJlZV9yZWNvcmQuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50X2lkID0gdHJlZV9yZWNvcmQubWVudV9pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0cmVlX2l0ZW1zLnB1c2gobmV3IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQudHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBlc29sdmVfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50X2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNlZl9kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZW9fZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuc29ydF9wcmlvcml0eSxcclxuICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5hY3RpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuZGlzcGxheV9vbmx5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLmltYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNlb19wYWdlX3RpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNlb19rZXl3b3JkcyxcclxuICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zaG9ydF9kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cmVlX2l0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1RyZWVJdGVtKHJlY29yZDogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVJlY29yZCk6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcclxuICAgICAgICAgICAgcmVjb3JkLnR5cGUsXHJcbiAgICAgICAgICAgIHJlY29yZC5pZCxcclxuICAgICAgICAgICAgcmVjb3JkLnBhcmVudF9pZCxcclxuICAgICAgICAgICAgcmVjb3JkLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICByZWNvcmQuc2VmX2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICByZWNvcmQuc2hvcnRfZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIHJlY29yZC5zb3J0X3ByaW9yaXR5LFxyXG4gICAgICAgICAgICByZWNvcmQuYWN0aXZlLFxyXG4gICAgICAgICAgICByZWNvcmQuZGlzcGxheV9vbmx5LFxyXG4gICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgcmVjb3JkLnNlb19wYWdlX3RpdGxlLFxyXG4gICAgICAgICAgICByZWNvcmQuc2VvX2tleXdvcmRzLFxyXG4gICAgICAgICAgICByZWNvcmQuc2VvX2Rlc2NyaXB0aW9uXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NJRChpZDogc3RyaW5nKTogRXNvbHZlQ2F0ZWdvcnlJZGVudGlmaWVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IHR5cGU6ICdjYXRlZ29yeScgfCAnc3ViY2F0ZWdvcnknO1xyXG4gICAgICAgIGxldCBlc29sdmVfaWQ6IG51bWJlciB8IHN0cmluZztcclxuXHJcbiAgICAgICAgY29uc3QgdHlwZV9jb2RlX3JlZ2V4ID0gL15cXDxcXDwoQ0FUfFNVQilcXD5cXD4vZztcclxuICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzID0gaWQubWF0Y2godHlwZV9jb2RlX3JlZ2V4KTtcclxuXHJcbiAgICAgICAgaWYgKG1hdGNoX3Jlc3VsdHMpIHtcclxuICAgICAgICAgICAgY29uc3QgdHlwZV9jb2RlID0gbWF0Y2hfcmVzdWx0c1swXTtcclxuXHJcbiAgICAgICAgICAgIHR5cGUgPSAodHlwZV9jb2RlID09PSAnPDxDQVQ+PicgPyAnY2F0ZWdvcnknIDogJ3N1YmNhdGVnb3J5Jyk7XHJcbiAgICAgICAgICAgIGVzb2x2ZV9pZCA9IGlkLnJlcGxhY2UodHlwZV9jb2RlX3JlZ2V4LCAnJyk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNhdGVnb3J5IHRyZWUgZnJvbSBlU29sdmUgaW5zdGFuY2UgYW5kIGNvdmVydHMgaXQgdG8gdGhlIGNvcnJlY3QgZm9ybWF0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlUcmVlKCk6IE9ic2VydmFibGU8RXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVtdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnd3NfaWQnLCB0aGlzLmNvbmZpZy53c2lkKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8KEVzb2x2ZUNhdGVnb3J5UmVjb3JkIHwgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmQpW10+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtdHJlZS5waHBgLFxyXG4gICAgICAgICAgICB7IHBhcmFtcyB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NUcmVlKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSB0aGUgZGV0YWlscyBvZiBhIGNhdGVnb3J5IHRyZWUgaXRlbSBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgYW5kIGNvbnZlcnRzIGl0IHRvIHRoZSBjb3JyZWN0IGZvcm1hdC5cclxuICAgICAqIEBwYXJhbSBvcHRpb25zIEZpbHRlciBvcHRpb25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRDYXRlZ29yeVRyZWVJdGVtKG9wdGlvbnM6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1PcHRpb25zKTogT2JzZXJ2YWJsZTxFc29sdmVDYXRlZ29yeVRyZWVJdGVtPiB7XHJcbiAgICAgICAgbGV0IHR5cGUhOiAnY2F0ZWdvcnknIHwgJ3N1YmNhdGVnb3J5JztcclxuICAgICAgICBsZXQgZXNvbHZlX2lkITogbnVtYmVyIHwgc3RyaW5nO1xyXG4gICAgICAgIGxldCBzZWZfZGVzY3JpcHRpb247XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5SWRlbnRpZmllciA9IHRoaXMucHJvY2Vzc0lEKG9wdGlvbnMuaWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNhdGVnb3J5SWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICAgICAgdHlwZSA9IGNhdGVnb3J5SWRlbnRpZmllci50eXBlO1xyXG4gICAgICAgICAgICAgICAgZXNvbHZlX2lkID0gY2F0ZWdvcnlJZGVudGlmaWVyLmVzb2x2ZV9pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlKSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSBvcHRpb25zLnR5cGU7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5lc29sdmVfaWQpIHtcclxuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IG9wdGlvbnMuZXNvbHZlX2lkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc2VmX2Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBzZWZfZGVzY3JpcHRpb24gPSBvcHRpb25zLnNlZl9kZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGUgJiYgKGVzb2x2ZV9pZCB8fCBzZWZfZGVzY3JpcHRpb24pKSB7XHJcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnd3NfaWQnLCB0aGlzLmNvbmZpZy53c2lkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0eXBlJywgdHlwZS50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChlc29sdmVfaWQpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lkJywgZXNvbHZlX2lkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2VmX2Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWZfZGVzY3JpcHRpb24nLCBzZWZfZGVzY3JpcHRpb24udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1SZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtdHJlZS1pdGVtLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtcyB9XHJcbiAgICAgICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8IChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NUcmVlSXRlbShyZXNwb25zZS5yZWNvcmRzWzBdKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSW52YWxpZCBvcHRpb25zJyk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW5ld3MtYXJ0aWNsZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9uZXdzL2Vzb2x2ZS1uZXdzLWFydGljbGUtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVOZXdzQXJ0aWNsZU9wdGlvbnMge1xyXG4gICAgcm93cz86IG51bWJlcjtcclxuICAgIHBhZ2U/OiBudW1iZXI7XHJcbiAgICBuZXdzX2dyb3VwX2lkPzogbnVtYmVyO1xyXG4gICAgbmV3c19ncm91cF9zZWY/OiBzdHJpbmc7XHJcbiAgICBmZWF0dXJlX29ubHk/OiBib29sZWFuO1xyXG4gICAgbWFudWZhY3R1cmVyc19pZD86IG51bWJlcjtcclxuICAgIHJhbmdlc19pZD86IG51bWJlcjtcclxuICAgIGZyb21fZGF0ZT86IHN0cmluZztcclxuICAgIHRvX2RhdGU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
104
104
  type: Inject,
105
105
  args: [ESOLVE_CONNECT_CONFIG]
106
106
  }] }, { type: i1.HttpClient }]; } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW5ld3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbmV3cy9lc29sdmUtbmV3cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBaUJuRSxNQUFNLE9BQU8saUJBQWlCO0lBRTFCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCO1FBRGUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN4QixDQUFDO0lBRUcsY0FBYyxDQUFDLE1BQWtCO1FBQ3JDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHVCQUF1QixFQUM3QyxFQUFFLE1BQU0sRUFBRSxDQUNiLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQWtCO1FB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LENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFtQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHVCQUF1QixDQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDdEIsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQ3JCLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDMUIsQ0FBQztRQUVGLE9BQU8sSUFBSSxpQkFBaUIsQ0FDeEIsVUFBVSxDQUFDLEVBQUUsRUFDYixVQUFVLENBQUMsS0FBSyxFQUNoQixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsT0FBTyxFQUNsQixVQUFVLENBQUMsaUJBQWlCLEVBQzVCLFVBQVUsQ0FBQyxNQUFNLEVBQ2pCLFVBQVUsQ0FBQyxNQUFNLEVBQ2pCLFVBQVUsQ0FBQyxLQUFLLEVBQ2hCLFVBQVUsQ0FBQyxRQUFRLEVBQ25CLE1BQU0sRUFDTixVQUFVLENBQUMsY0FBYyxFQUN6QixVQUFVLENBQUMsWUFBWSxDQUMxQixDQUFDO0lBQ04sQ0FBQzs7OEdBaEpRLGlCQUFpQixrQkFHZCxxQkFBcUI7a0hBSHhCLGlCQUFpQixjQUZkLE1BQU07MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBSVEsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlTmV3c0FydGljbGUgfSBmcm9tICcuL2Vzb2x2ZS1uZXdzLWFydGljbGUnO1xyXG5pbXBvcnQgeyBFc29sdmVOZXdzR3JvdXAgfSBmcm9tICcuL2Vzb2x2ZS1uZXdzLWdyb3VwJztcclxuaW1wb3J0IHsgRXNvbHZlTmV3c0FydGljbGVSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1uZXdzLWFydGljbGUtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlTmV3c0FydGljbGVBdXRob3IgfSBmcm9tICcuL2Vzb2x2ZS1uZXdzLWFydGljbGUtYXV0aG9yJztcclxuaW1wb3J0IHsgRXNvbHZlTmV3c0dyb3VwUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtbmV3cy1ncm91cC1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVOZXdzQXJ0aWNsZUxpc3QgfSBmcm9tICcuL2Vzb2x2ZS1uZXdzLWFydGljbGUtbGlzdCc7XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlTmV3c0FydGljbGVPcHRpb25zIHtcclxuICAgIHJvd3M/OiBudW1iZXI7XHJcbiAgICBwYWdlPzogbnVtYmVyO1xyXG4gICAgbmV3c19ncm91cF9pZD86IG51bWJlcjtcclxuICAgIG5ld3NfZ3JvdXBfc2VmPzogc3RyaW5nO1xyXG4gICAgZmVhdHVyZV9vbmx5PzogYm9vbGVhbjtcclxuICAgIG1hbnVmYWN0dXJlcnNfaWQ/OiBudW1iZXI7XHJcbiAgICByYW5nZXNfaWQ/OiBudW1iZXI7XHJcbiAgICBmcm9tX2RhdGU/OiBzdHJpbmc7XHJcbiAgICB0b19kYXRlPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZU5ld3NTZXJ2aWNlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgICApIHsgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TmV3c1JlY29yZHMocGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVOZXdzQXJ0aWNsZVJlY29yZFtdPj4ge1xyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3dzX2lkJywgdGhpcy5jb25maWcud3NpZCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZU5ld3NBcnRpY2xlUmVjb3JkW10+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtbmV3cy5waHBgLFxyXG4gICAgICAgICAgICB7IHBhcmFtcyB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROZXdzQXJ0aWNsZShpZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZU5ld3NBcnRpY2xlPiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xyXG4gICAgICAgICAgICBmcm9tT2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICBzZWZfdGl0bGU6IGlkZW50aWZpZXJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdzUmVjb3JkcyhwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHwgKHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3c1JlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFuZXdzUmVjb3JkLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NOZXdzQXJ0aWNsZShuZXdzUmVjb3JkKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE5ld3NBcnRpY2xlcyhvcHRpb25zOiBFc29sdmVOZXdzQXJ0aWNsZU9wdGlvbnMpOiBPYnNlcnZhYmxlPEVzb2x2ZU5ld3NBcnRpY2xlTGlzdD4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5uZXdzX2dyb3VwX2lkKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ25ld3NfZ3JvdXBfaWQnLCBvcHRpb25zLm5ld3NfZ3JvdXBfaWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLm5ld3NfZ3JvdXBfc2VmKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ25ld3NfZ3JvdXBfc2VmJywgb3B0aW9ucy5uZXdzX2dyb3VwX3NlZi50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnBhZ2UpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncm93cycsIG9wdGlvbnMucm93cy50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmZlYXR1cmVfb25seSkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdmZWF0dXJlX29ubHknLCBvcHRpb25zLmZlYXR1cmVfb25seS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbWFudWZhY3R1cmVyc19pZCcsIG9wdGlvbnMubWFudWZhY3R1cmVyc19pZC50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnJhbmdlc19pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyYW5nZXNfaWQnLCBvcHRpb25zLnJhbmdlc19pZC50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmZyb21fZGF0ZSkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdmcm9tX2RhdGUnLCBvcHRpb25zLmZyb21fZGF0ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnRvX2RhdGUpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG9fZGF0ZScsIG9wdGlvbnMudG9fZGF0ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld3NSZWNvcmRzKHBhcmFtcykucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdzQXJ0aWNsZXM6IEVzb2x2ZU5ld3NBcnRpY2xlW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2gobmV3c0FydGljbGVSZWNvcmQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld3NBcnRpY2xlcy5wdXNoKHRoaXMucHJvY2Vzc05ld3NBcnRpY2xlKG5ld3NBcnRpY2xlUmVjb3JkKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZU5ld3NBcnRpY2xlTGlzdChuZXdzQXJ0aWNsZXMsIHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzLCBvcHRpb25zLnBhZ2UgfHwgMCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROZXdzR3JvdXBzKCk6IE9ic2VydmFibGU8RXNvbHZlTmV3c0dyb3VwW10+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd3c19pZCcsIHRoaXMuY29uZmlnLndzaWQpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVOZXdzR3JvdXBSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1uZXdzLWdyb3Vwcy5waHBgLFxyXG4gICAgICAgICAgICB7IHBhcmFtcyB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NHcm91cHM6IEVzb2x2ZU5ld3NHcm91cFtdID0gW107XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2gobmV3c0dyb3VwUmVjb3JkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdzR3JvdXBzLnB1c2gobmV3IEVzb2x2ZU5ld3NHcm91cChcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3c0dyb3VwUmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdzR3JvdXBSZWNvcmQubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3c0dyb3VwUmVjb3JkLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdzR3JvdXBSZWNvcmQuc2VmX25hbWVcclxuICAgICAgICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdzR3JvdXBzO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzTmV3c0FydGljbGUobmV3c1JlY29yZDogRXNvbHZlTmV3c0FydGljbGVSZWNvcmQpOiBFc29sdmVOZXdzQXJ0aWNsZSB7XHJcbiAgICAgICAgY29uc3QgYXV0aG9yID0gbmV3IEVzb2x2ZU5ld3NBcnRpY2xlQXV0aG9yKFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLnVzZXIudXNlcmlkLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLnVzZXIuZW1haWwsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQudXNlci5maXJzdG5hbWUsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQudXNlci5zdXJuYW1lXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVOZXdzQXJ0aWNsZShcclxuICAgICAgICAgICAgbmV3c1JlY29yZC5pZCxcclxuICAgICAgICAgICAgbmV3c1JlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgbmV3c1JlY29yZC5zZWZfdGl0bGUsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuYXJ0aWNsZSxcclxuICAgICAgICAgICAgbmV3c1JlY29yZC5zaG9ydF9kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgbmV3c1JlY29yZC50eGRhdGUsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuYWN0aXZlLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLmltYWdlLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLmZlYXR1cmVkLFxyXG4gICAgICAgICAgICBhdXRob3IsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuc2VvX3BhZ2VfdGl0bGUsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuc2VvX2tleXdvcmRzXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW5ld3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbmV3cy9lc29sdmUtbmV3cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBTW5FLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0I7UUFEZSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3hCLENBQUM7SUFFRyxjQUFjLENBQUMsTUFBa0I7UUFDckMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLEVBQzdDLEVBQUUsTUFBTSxFQUFFLENBQ2IsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjLENBQUMsVUFBa0I7UUFD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Q0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLGtCQUFrQixDQUFDLFVBQW1DO1FBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksdUJBQXVCLENBQ3RDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFDckIsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQ3pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUMxQixDQUFDO1FBRUYsT0FBTyxJQUFJLGlCQUFpQixDQUN4QixVQUFVLENBQUMsRUFBRSxFQUNiLFVBQVUsQ0FBQyxLQUFLLEVBQ2hCLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFVBQVUsQ0FBQyxPQUFPLEVBQ2xCLFVBQVUsQ0FBQyxpQkFBaUIsRUFDNUIsVUFBVSxDQUFDLE1BQU0sRUFDakIsVUFBVSxDQUFDLE1BQU0sRUFDakIsVUFBVSxDQUFDLEtBQUssRUFDaEIsVUFBVSxDQUFDLFFBQVEsRUFDbkIsTUFBTSxFQUNOLFVBQVUsQ0FBQyxjQUFjLEVBQ3pCLFVBQVUsQ0FBQyxZQUFZLENBQzFCLENBQUM7SUFDTixDQUFDOzs4R0FoSlEsaUJBQWlCLGtCQUdkLHFCQUFxQjtrSEFIeEIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFJUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVOZXdzQXJ0aWNsZSB9IGZyb20gJy4vZXNvbHZlLW5ld3MtYXJ0aWNsZSc7XHJcbmltcG9ydCB7IEVzb2x2ZU5ld3NHcm91cCB9IGZyb20gJy4vZXNvbHZlLW5ld3MtZ3JvdXAnO1xyXG5pbXBvcnQgeyBFc29sdmVOZXdzQXJ0aWNsZVJlY29yZCB9IGZyb20gJy4vZXNvbHZlLW5ld3MtYXJ0aWNsZS1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVOZXdzQXJ0aWNsZUF1dGhvciB9IGZyb20gJy4vZXNvbHZlLW5ld3MtYXJ0aWNsZS1hdXRob3InO1xyXG5pbXBvcnQgeyBFc29sdmVOZXdzR3JvdXBSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1uZXdzLWdyb3VwLXJlY29yZCc7XHJcbmltcG9ydCB7IEVzb2x2ZU5ld3NBcnRpY2xlTGlzdCB9IGZyb20gJy4vZXNvbHZlLW5ld3MtYXJ0aWNsZS1saXN0JztcclxuaW1wb3J0IHsgRXNvbHZlTmV3c0FydGljbGVPcHRpb25zIH0gZnJvbSAnLi9lc29sdmUtbmV3cy1hcnRpY2xlLW9wdGlvbnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVOZXdzU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBwcml2YXRlIGdldE5ld3NSZWNvcmRzKHBhcmFtczogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTmV3c0FydGljbGVSZWNvcmRbXT4+IHtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd3c19pZCcsIHRoaXMuY29uZmlnLndzaWQpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVOZXdzQXJ0aWNsZVJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NlcnZpY2UvZ2V0LW5ld3MucGhwYCxcclxuICAgICAgICAgICAgeyBwYXJhbXMgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmV3c0FydGljbGUoaWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVOZXdzQXJ0aWNsZT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xyXG4gICAgICAgICAgICAgICAgc2VmX3RpdGxlOiBpZGVudGlmaWVyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3c1JlY29yZHMocGFyYW1zKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8IChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NSZWNvcmQgPSByZXNwb25zZS5yZWNvcmRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghbmV3c1JlY29yZC5hY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTmV3c0FydGljbGUobmV3c1JlY29yZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROZXdzQXJ0aWNsZXMob3B0aW9uczogRXNvbHZlTmV3c0FydGljbGVPcHRpb25zKTogT2JzZXJ2YWJsZTxFc29sdmVOZXdzQXJ0aWNsZUxpc3Q+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMubmV3c19ncm91cF9pZCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCduZXdzX2dyb3VwX2lkJywgb3B0aW9ucy5uZXdzX2dyb3VwX2lkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5uZXdzX2dyb3VwX3NlZikge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCduZXdzX2dyb3VwX3NlZicsIG9wdGlvbnMubmV3c19ncm91cF9zZWYudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCBvcHRpb25zLnBhZ2UudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5yb3dzKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5mZWF0dXJlX29ubHkpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZmVhdHVyZV9vbmx5Jywgb3B0aW9ucy5mZWF0dXJlX29ubHkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ21hbnVmYWN0dXJlcnNfaWQnLCBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5yYW5nZXNfaWQpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmFuZ2VzX2lkJywgb3B0aW9ucy5yYW5nZXNfaWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5mcm9tX2RhdGUpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZnJvbV9kYXRlJywgb3B0aW9ucy5mcm9tX2RhdGUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy50b19kYXRlKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvX2RhdGUnLCBvcHRpb25zLnRvX2RhdGUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdzUmVjb3JkcyhwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3c0FydGljbGVzOiBFc29sdmVOZXdzQXJ0aWNsZVtdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5mb3JFYWNoKG5ld3NBcnRpY2xlUmVjb3JkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdzQXJ0aWNsZXMucHVzaCh0aGlzLnByb2Nlc3NOZXdzQXJ0aWNsZShuZXdzQXJ0aWNsZVJlY29yZCkpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVOZXdzQXJ0aWNsZUxpc3QobmV3c0FydGljbGVzLCByZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3Jkcywgb3B0aW9ucy5wYWdlIHx8IDApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmV3c0dyb3VwcygpOiBPYnNlcnZhYmxlPEVzb2x2ZU5ld3NHcm91cFtdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnd3NfaWQnLCB0aGlzLmNvbmZpZy53c2lkKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTmV3c0dyb3VwUmVjb3JkW10+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtbmV3cy1ncm91cHMucGhwYCxcclxuICAgICAgICAgICAgeyBwYXJhbXMgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdzR3JvdXBzOiBFc29sdmVOZXdzR3JvdXBbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5mb3JFYWNoKG5ld3NHcm91cFJlY29yZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c0dyb3Vwcy5wdXNoKG5ldyBFc29sdmVOZXdzR3JvdXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NHcm91cFJlY29yZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3c0dyb3VwUmVjb3JkLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NHcm91cFJlY29yZC5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3c0dyb3VwUmVjb3JkLnNlZl9uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3c0dyb3VwcztcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc05ld3NBcnRpY2xlKG5ld3NSZWNvcmQ6IEVzb2x2ZU5ld3NBcnRpY2xlUmVjb3JkKTogRXNvbHZlTmV3c0FydGljbGUge1xyXG4gICAgICAgIGNvbnN0IGF1dGhvciA9IG5ldyBFc29sdmVOZXdzQXJ0aWNsZUF1dGhvcihcclxuICAgICAgICAgICAgbmV3c1JlY29yZC51c2VyLnVzZXJpZCxcclxuICAgICAgICAgICAgbmV3c1JlY29yZC51c2VyLmVtYWlsLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLnVzZXIuZmlyc3RuYW1lLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLnVzZXIuc3VybmFtZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlTmV3c0FydGljbGUoXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuaWQsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQudGl0bGUsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuc2VmX3RpdGxlLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLmFydGljbGUsXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQuc2hvcnRfZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIG5ld3NSZWNvcmQudHhkYXRlLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLmFjdGl2ZSxcclxuICAgICAgICAgICAgbmV3c1JlY29yZC5pbWFnZSxcclxuICAgICAgICAgICAgbmV3c1JlY29yZC5mZWF0dXJlZCxcclxuICAgICAgICAgICAgYXV0aG9yLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLnNlb19wYWdlX3RpdGxlLFxyXG4gICAgICAgICAgICBuZXdzUmVjb3JkLnNlb19rZXl3b3Jkc1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19