@micropermit/client-angular 0.2.3 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/micropermit-client-angular.umd.js +32 -4
- package/bundles/micropermit-client-angular.umd.js.map +1 -1
- package/bundles/micropermit-client-angular.umd.min.js +1 -1
- package/bundles/micropermit-client-angular.umd.min.js.map +1 -1
- package/esm2015/lib/link-field-paging-support.js +2 -2
- package/esm2015/lib/microclient.module.js +1 -1
- package/esm2015/lib/microclient.service.js +30 -5
- package/esm5/lib/link-field-paging-support.js +2 -2
- package/esm5/lib/microclient.module.js +1 -1
- package/esm5/lib/microclient.service.js +34 -6
- package/fesm2015/micropermit-client-angular.js +30 -5
- package/fesm2015/micropermit-client-angular.js.map +1 -1
- package/fesm5/micropermit-client-angular.js +34 -6
- package/fesm5/micropermit-client-angular.js.map +1 -1
- package/lib/microclient.module.d.ts +1 -1
- package/lib/microclient.service.d.ts +4 -1
- package/micropermit-client-angular.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import { Injectable } from '@angular/core';
|
|
6
6
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
7
7
|
import { MicroObject } from './microobject';
|
|
8
|
-
import { throwError } from 'rxjs';
|
|
9
|
-
import { catchError, finalize, map } from 'rxjs/operators';
|
|
8
|
+
import { Subject, throwError } from 'rxjs';
|
|
9
|
+
import { catchError, finalize, map, take, shareReplay } from 'rxjs/operators';
|
|
10
10
|
import { ParamUtils } from './paramutils';
|
|
11
11
|
import { MicroError } from './error/microerror';
|
|
12
12
|
export class MicroClient {
|
|
@@ -15,6 +15,8 @@ export class MicroClient {
|
|
|
15
15
|
*/
|
|
16
16
|
constructor(httpClient) {
|
|
17
17
|
this.httpClient = httpClient;
|
|
18
|
+
this.entryPointSubject = new Subject();
|
|
19
|
+
this.entryPointObs = this.entryPointSubject.pipe(shareReplay(1), take(1));
|
|
18
20
|
this.usePost = true;
|
|
19
21
|
this.sendAsPermitTokenHeader = true;
|
|
20
22
|
}
|
|
@@ -41,11 +43,23 @@ export class MicroClient {
|
|
|
41
43
|
this.authHeader = authHeader;
|
|
42
44
|
}
|
|
43
45
|
/**
|
|
44
|
-
* @template T
|
|
45
46
|
* @return {?}
|
|
46
47
|
*/
|
|
47
48
|
getEntryPoint() {
|
|
48
|
-
return
|
|
49
|
+
return this.entryPoint;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @param {?=} cb
|
|
53
|
+
* @return {?}
|
|
54
|
+
*/
|
|
55
|
+
waitForEntryPoint(cb) {
|
|
56
|
+
/** @type {?} */
|
|
57
|
+
let obs = this.entryPointObs.pipe(take(1));
|
|
58
|
+
if (cb != null) {
|
|
59
|
+
obs.subscribe(cb);
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return obs.toPromise();
|
|
49
63
|
}
|
|
50
64
|
/**
|
|
51
65
|
* @param {?} other
|
|
@@ -75,6 +89,7 @@ export class MicroClient {
|
|
|
75
89
|
else {
|
|
76
90
|
throw Error('Expected the entryPoint to contain a "permitToken" within the "__meta" field');
|
|
77
91
|
}
|
|
92
|
+
this.entryPointSubject.next(entryPoint);
|
|
78
93
|
}
|
|
79
94
|
}
|
|
80
95
|
/**
|
|
@@ -384,6 +399,16 @@ if (false) {
|
|
|
384
399
|
* @private
|
|
385
400
|
*/
|
|
386
401
|
MicroClient.prototype.entryPoint;
|
|
402
|
+
/**
|
|
403
|
+
* @type {?}
|
|
404
|
+
* @private
|
|
405
|
+
*/
|
|
406
|
+
MicroClient.prototype.entryPointSubject;
|
|
407
|
+
/**
|
|
408
|
+
* @type {?}
|
|
409
|
+
* @private
|
|
410
|
+
*/
|
|
411
|
+
MicroClient.prototype.entryPointObs;
|
|
387
412
|
/**
|
|
388
413
|
* @type {?}
|
|
389
414
|
* @private
|
|
@@ -479,4 +504,4 @@ if (false) {
|
|
|
479
504
|
*/
|
|
480
505
|
MicroClientLoadError.prototype.defaultHandler;
|
|
481
506
|
}
|
|
482
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxNQUFNLE9BQU8sV0FBVzs7OztJQVdwQixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSm5DLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFZiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFJdEMsQ0FBQzs7Ozs7SUFFTSwwQkFBMEIsQ0FBQyx1QkFBZ0M7UUFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQzNELENBQUM7Ozs7O0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBRU0sYUFBYSxDQUFDLFVBQWtCO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBRU0sYUFBYTtR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QUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQzs7OztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQztDQUNKOzs7Ozs7SUFsQ0csdUNBQXdCOzs7OztJQUN4QixnREFBaUM7Ozs7O0lBRXJCLHFDQUFrQjs7Ozs7SUFBRSw4Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4vbWljcm9vYmplY3QnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQYXJhbVV0aWxzfSBmcm9tICcuL3BhcmFtdXRpbHMnO1xuaW1wb3J0IHtNaWNyb0Vycm9yfSBmcm9tICcuL2Vycm9yL21pY3JvZXJyb3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWljcm9DbGllbnQge1xuXG4gICAgcHJpdmF0ZSBhdXRoSGVhZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwZXJtaXRUb2tlbjogc3RyaW5nO1xuICAgIHByaXZhdGUgZW50cnlQb2ludDogTWljcm9PYmplY3Q7XG4gICAgcHJpdmF0ZSB1cmxSZXdyaXRlcjogKHN0cmluZykgPT4gc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmYXVsdEVycm9ySGFuZGxlcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1pY3JvRXJyb3I6IE1pY3JvT2JqZWN0KSA9PiB2b2lkO1xuICAgIHB1YmxpYyB1c2VQb3N0ID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBzZW5kQXNQZXJtaXRUb2tlbkhlYWRlciA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcblxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZW5kQXNQZXJtaXRUb2tlbkhlYWRlcihzZW5kQXNQZXJtaXRUb2tlbkhlYWRlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNlbmRBc1Blcm1pdFRva2VuSGVhZGVyID0gc2VuZEFzUGVybWl0VG9rZW5IZWFkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9ICdCZWFyZXIgJyArIHRva2VuO1xuICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gdG9rZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dGhIZWFkZXIoYXV0aEhlYWRlcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IGF1dGhIZWFkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVudHJ5UG9pbnQ8VCBleHRlbmRzIE1pY3JvT2JqZWN0PigpOiBUIHtcbiAgICAgICAgcmV0dXJuIDxUPnRoaXMuZW50cnlQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUF1dGhBbmRFbnRyeXBvaW50T2Yob3RoZXI6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IG90aGVyLmF1dGhIZWFkZXI7XG4gICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBvdGhlci5wZXJtaXRUb2tlbjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gb3RoZXIuZW50cnlQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RW50cnlQb2ludDxUIGV4dGVuZHMgTWljcm9PYmplY3Q+KGVudHJ5UG9pbnQ6IGFueSkge1xuICAgICAgICBpZiAoZW50cnlQb2ludCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gZW50cnlQb2ludDtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJ5UG9pbnQuX19tZXRhICYmIHRoaXMuZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEF1dGhUb2tlbih0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbnRyeVBvaW50IHRvIGNvbnRhaW4gYSBcInBlcm1pdFRva2VuXCIgd2l0aGluIHRoZSBcIl9fbWV0YVwiIGZpZWxkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEVycm9ySGFuZGxlcihoYW5kbGVyOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgbWljcm9FcnJvcjogTWljcm9PYmplY3QpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRXJyb3IoaHR0cEVycjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3QgbWljcm9FcnJvciA9IE1pY3JvQ2xpZW50LnRvTWljcm9FcnJvcihodHRwRXJyKTtcbiAgICAgICAgICAgIGlmIChtaWNyb0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWljcm9SZXN1bHRPYmo6IE1pY3JvT2JqZWN0ID0gPE1pY3JvT2JqZWN0Pk1pY3JvT2JqZWN0LmZyb21PYmplY3QoaHR0cEVyci5lcnJvciwgdGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG1pY3JvUmVzdWx0T2JqKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlnbml0ZTxUIGV4dGVuZHMgKE1pY3JvT2JqZWN0IHwgTWljcm9PYmplY3RbXSk+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgdXNlcm5hbWU6IFN0cmluZyA9IG51bGwsXG4gICAgICAgIHBhc3N3b3JkOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBoZWFkZXJzOiBvYmplY3QgPSB7fVxuICAgICk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICAgIGZvciAoY29uc3QgaGVhZGVyS2V5IGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWRlcktleSkpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldChoZWFkZXJLZXksIGhlYWRlcnNbaGVhZGVyS2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXNlcm5hbWUgIT0gbnVsbCB8fCBwYXNzd29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeVBvaW50ID0gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeVBvaW50IGluc3RhbmNlb2YgTWljcm9PYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbnRyeVBvaW50KGVudHJ5UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlQb2ludCBhcyBUO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0aGUgZW50cnlQb2ludCB0byBiZSBhIE9iamVjdCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZDxUIGV4dGVuZHMgKG9iamVjdCB8IG9iamVjdFtdKT4oXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBwYXJhbXM/OiBvYmplY3QsXG4gICAgICAgIHJlcXVlc3RPcHRpb25zPzogb2JqZWN0XG4gICAgKTogT2JzZXJ2YWJsZTxUIHwgVFtdPiB7XG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBpZiAodGhpcy5hdXRoSGVhZGVyKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuYXV0aEhlYWRlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbmRBc1Blcm1pdFRva2VuSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ01pY3JvUGVybWl0VG9rZW4nLCB0aGlzLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBpZiAocGFyYW1zICE9IG51bGwgfHwgdGhpcy51c2VQb3N0KSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhcmFtc1N0ciA9IFBhcmFtVXRpbHMuZ2V0UGFyYW0odXJsLCAnb1BhcmFtcycsIHRydWUpO1xuICAgICAgICAgICAgbGV0IGV4aXN0aW5nUGFyYW1zO1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nUGFyYW1zU3RyKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdQYXJhbXMgPSBKU09OLnBhcnNlKGV4aXN0aW5nUGFyYW1zU3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9QYXJhbXMgPSBPYmplY3QuYXNzaWduKGV4aXN0aW5nUGFyYW1zLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcbiAgICAgICAgaWYgKHJlcXVlc3RPcHRpb25zICE9IG51bGwgfHwgdGhpcy51c2VQb3N0KSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2T3B0aW9uc1N0ciA9IFBhcmFtVXRpbHMuZ2V0UGFyYW0odXJsLCAnb3B0aW9ucycsIHRydWUpO1xuICAgICAgICAgICAgaWYgKHByZXZPcHRpb25zU3RyKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IEpTT04ucGFyc2UocHJldk9wdGlvbnNTdHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gUGFyYW1VdGlscy5nZXRQYXJhbXModXJsKTtcblxuICAgICAgICBsZXQgaHR0cE9icyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnVzZVBvc3QpIHtcblxuICAgICAgICAgICAgbGV0IGJPUGFyYW1zO1xuICAgICAgICAgICAgY29uc3QgZW5jQk9QYXJhbXMgPSBxdWVyeVBhcmFtc1snYk9QYXJhbXMnXTtcbiAgICAgICAgICAgIGlmIChlbmNCT1BhcmFtcykge1xuICAgICAgICAgICAgICAgIGJPUGFyYW1zID0gSlNPTi5wYXJzZShQYXJhbVV0aWxzLmJhc2U2NFVybERlY29kZShlbmNCT1BhcmFtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXSxcbiAgICAgICAgICAgICAgICBvUGFyYW1zOiBvUGFyYW1zLFxuICAgICAgICAgICAgICAgIGJQYXJhbXM6IHF1ZXJ5UGFyYW1zWydiUGFyYW1zJ10sXG4gICAgICAgICAgICAgICAgYk9QYXJhbXM6IGJPUGFyYW1zLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydvUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2JQYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snYk9QYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snb3B0aW9ucyddO1xuXG4gICAgICAgICAgICB1cmwgPSBQYXJhbVV0aWxzLnNldFBhcmFtcyh1cmwsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLnVybFJld3JpdGVyKHVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0dHBPYnMgPSB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwsIGJvZHksIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob1BhcmFtcykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zWydvUGFyYW1zJ10gPSBQYXJhbVV0aWxzLmJhc2U2NFVybEVuY29kZShKU09OLnN0cmluZ2lmeShvUGFyYW1zKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNbJ29wdGlvbnMnXSA9IFBhcmFtVXRpbHMuYmFzZTY0VXJsRW5jb2RlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybCA9IFBhcmFtVXRpbHMuc2V0UGFyYW1zKHVybCwgcXVlcnlQYXJhbXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaHR0cE9icyA9IHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaHR0cE9icyA9IGh0dHBPYnMucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBNaWNyb09iamVjdC5mcm9tT2JqZWN0KHZhbCwgdGhpcykgYXMgVDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKVxuICAgICAgICA7XG5cbiAgICAgICAgcmV0dXJuIGh0dHBPYnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaEFuZEhhbmRsZUVycm9yPFQ+KCk6ICgoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbG9hZEVycm9yID0gbmV3IE1pY3JvQ2xpZW50TG9hZEVycm9yKGVyciwgKGVyclRvSGFuZGxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVyclRvSGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGxvYWRFcnJvcikucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvYWRFcnJvci5zaG91bGRQcmV2ZW50RGVmYXVsdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRFcnJvci5oYW5kbGVEZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ2hpbGRDbGllbnRGb3JFbnRyeVBvaW50KGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0KTogTWljcm9DbGllbnQge1xuICAgICAgICBpZiAoZW50cnlQb2ludC5fX21ldGEgJiYgZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQ2xpZW50OiBNaWNyb0NsaWVudCA9IE9iamVjdC5jcmVhdGUodGhpcywge1xuICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYXV0aEhlYWRlcjoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwZXJtaXRUb2tlbjoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjaGlsZENsaWVudC5zZXRFbnRyeVBvaW50KGVudHJ5UG9pbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkQ2xpZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgc3VwcGxpZWQgdmFsdWUgY2FuXFwndCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIGNoaWxkIE1pY3JvQ2xpZW50IGJlY2F1c2UgaXQgZG9lc25cXCd0IGNvbnRhaW4gbWV0YWRhdGEgd2l0aCBhIHBlcm1pdFRva2VuICcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFVSTFJld3JpdGVyKHJld3JpdGVyOiAoc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51cmxSZXdyaXRlciA9IHJld3JpdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9NaWNyb0Vycm9yKGh0dHBSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiBNaWNyb0Vycm9yIHtcbiAgICAgICAgY29uc3QgcmVzID0gaHR0cFJlc3BvbnNlLmVycm9yO1xuICAgICAgICBpZiAocmVzICYmIHJlcy5fX21ldGEgJiYgcmVzLl9fbWV0YS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IE1pY3JvRXJyb3IoKSwgcmVzLl9fbWV0YS5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgc3RhdGljQ29udGVudFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1thLXpBLVowLTldOi8vLiooOlswLTldKyk/KC8uKikqL3N0YXRpYygvLiooXFxcXD8uKik/KCMuKik/KT8nKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuXG4gICAgICAgIC8vIExhc3QgVVJMLVNlZ2VtZW50IGlzIHN0YXRpY1xuICAgICAgICBpZiAoTWljcm9DbGllbnQuc3RhdGljQ29udGVudFJlZ0V4cC50ZXN0KGhyZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gaHJlZi5yZXBsYWNlKG5ldyBSZWdFeHAoJy9zdGF0aWMvLionKSwgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgnLyMvLionKSwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5zdGFydHNXaXRoKCdmaWxlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICsgJzo4MDgwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3Vlc3NNaWNyb0NvbXBvbmVudEF1dGhvcml6ZVVSTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzc01pY3JvQ29tcG9uZW50QmFzZVVSTCgpICsgJy9hdXRob3JpemUnO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50TG9hZEVycm9yIHtcbiAgICBwcml2YXRlIGhhbmRsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRvUHJldmVudERlZmF1bHQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXJyb3I6IGFueSwgcHJpdmF0ZSBkZWZhdWx0SGFuZGxlcjogKGVycjogYW55KSA9PiB2b2lkKSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRGVmYXVsdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdEhhbmRsZXIodGhpcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVycm9yKGhhbmRsZXI6IChlcnJvcjogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIGhhbmRsZXIodGhpcy5lcnJvcik7XG4gICAgICAgIHRoaXMuaGFuZGxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGFuZGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdWxkUHJldmVudERlZmF1bHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvUHJldmVudERlZmF1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZlbnREZWZhdWx0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvUHJldmVudERlZmF1bHQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNEZWZhdWx0SGFuZGxlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEhhbmRsZXIgIT0gbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
507
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxNQUFNLE9BQU8sV0FBVzs7OztJQWtCcEIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVpsQyxzQkFBaUIsR0FBeUIsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUNyRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQy9DLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1YsQ0FBQztRQUlLLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFZiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFJdEMsQ0FBQzs7Ozs7SUFFTSwwQkFBMEIsQ0FBQyx1QkFBZ0M7UUFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQzNELENBQUM7Ozs7O0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDN0Is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OztJQUk3QixZQUFvQixLQUFVLEVBQVUsY0FBa0M7UUFBdEQsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQUhsRSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQUlqQyxDQUFDOzs7O0lBRU0sYUFBYTtRQUNoQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDTCxDQUFDOzs7OztJQUVNLFdBQVcsQ0FBQyxPQUE2QjtRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTSxvQkFBb0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQzs7OztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQztDQUNKOzs7Ozs7SUFsQ0csdUNBQXdCOzs7OztJQUN4QixnREFBaUM7Ozs7O0lBRXJCLHFDQUFrQjs7Ozs7SUFBRSw4Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4vbWljcm9vYmplY3QnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFrZSwgc2hhcmVSZXBsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGFyYW1VdGlsc30gZnJvbSAnLi9wYXJhbXV0aWxzJztcbmltcG9ydCB7TWljcm9FcnJvcn0gZnJvbSAnLi9lcnJvci9taWNyb2Vycm9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50IHtcblxuICAgIHByaXZhdGUgYXV0aEhlYWRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcGVybWl0VG9rZW46IHN0cmluZztcbiAgICBwcml2YXRlIGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0O1xuXG4gICAgcHJpdmF0ZSBlbnRyeVBvaW50U3ViamVjdDogU3ViamVjdDxNaWNyb09iamVjdD4gPSBuZXcgU3ViamVjdDxNaWNyb09iamVjdD4oKTtcbiAgICBwcml2YXRlIGVudHJ5UG9pbnRPYnMgPSB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0LnBpcGUoXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgICB0YWtlKDEpXG4gICAgKTtcblxuICAgIHByaXZhdGUgdXJsUmV3cml0ZXI6IChzdHJpbmcpID0+IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRFcnJvckhhbmRsZXI6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtaWNyb0Vycm9yOiBNaWNyb09iamVjdCkgPT4gdm9pZDtcbiAgICBwdWJsaWMgdXNlUG9zdCA9IHRydWU7XG5cbiAgICBwdWJsaWMgc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VuZEFzUGVybWl0VG9rZW5IZWFkZXIoc2VuZEFzUGVybWl0VG9rZW5IZWFkZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlciA9IHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSAnQmVhcmVyICcgKyB0b2tlbjtcbiAgICAgICAgdGhpcy5wZXJtaXRUb2tlbiA9IHRva2VuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoSGVhZGVyKGF1dGhIZWFkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBhdXRoSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbnRyeVBvaW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHdhaXRGb3JFbnRyeVBvaW50KGNiPzogKGVudHJ5UG9pbnQ6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGxldCBvYnMgPSB0aGlzLmVudHJ5UG9pbnRPYnMucGlwZShcbiAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGNiICE9IG51bGwpIHtcbiAgICAgICAgICAgIG9icy5zdWJzY3JpYmUoY2IpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9icy50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUF1dGhBbmRFbnRyeXBvaW50T2Yob3RoZXI6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IG90aGVyLmF1dGhIZWFkZXI7XG4gICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBvdGhlci5wZXJtaXRUb2tlbjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gb3RoZXIuZW50cnlQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RW50cnlQb2ludDxUIGV4dGVuZHMgTWljcm9PYmplY3Q+KGVudHJ5UG9pbnQ6IGFueSkge1xuICAgICAgICBpZiAoZW50cnlQb2ludCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gZW50cnlQb2ludDtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJ5UG9pbnQuX19tZXRhICYmIHRoaXMuZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEF1dGhUb2tlbih0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbnRyeVBvaW50IHRvIGNvbnRhaW4gYSBcInBlcm1pdFRva2VuXCIgd2l0aGluIHRoZSBcIl9fbWV0YVwiIGZpZWxkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0Lm5leHQoZW50cnlQb2ludCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEVycm9ySGFuZGxlcihoYW5kbGVyOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgbWljcm9FcnJvcjogTWljcm9PYmplY3QpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRXJyb3IoaHR0cEVycjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3QgbWljcm9FcnJvciA9IE1pY3JvQ2xpZW50LnRvTWljcm9FcnJvcihodHRwRXJyKTtcbiAgICAgICAgICAgIGlmIChtaWNyb0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWljcm9SZXN1bHRPYmo6IE1pY3JvT2JqZWN0ID0gPE1pY3JvT2JqZWN0Pk1pY3JvT2JqZWN0LmZyb21PYmplY3QoaHR0cEVyci5lcnJvciwgdGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG1pY3JvUmVzdWx0T2JqKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlnbml0ZTxUIGV4dGVuZHMgKE1pY3JvT2JqZWN0IHwgTWljcm9PYmplY3RbXSk+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgdXNlcm5hbWU6IFN0cmluZyA9IG51bGwsXG4gICAgICAgIHBhc3N3b3JkOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBoZWFkZXJzOiBvYmplY3QgPSB7fVxuICAgICk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICAgIGZvciAoY29uc3QgaGVhZGVyS2V5IGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWRlcktleSkpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldChoZWFkZXJLZXksIGhlYWRlcnNbaGVhZGVyS2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXNlcm5hbWUgIT0gbnVsbCB8fCBwYXNzd29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeVBvaW50ID0gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeVBvaW50IGluc3RhbmNlb2YgTWljcm9PYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbnRyeVBvaW50KGVudHJ5UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlQb2ludCBhcyBUO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0aGUgZW50cnlQb2ludCB0byBiZSBhIE9iamVjdCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZDxUIGV4dGVuZHMgKG9iamVjdCB8IG9iamVjdFtdKT4oXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBwYXJhbXM/OiBvYmplY3QsXG4gICAgICAgIHJlcXVlc3RPcHRpb25zPzogb2JqZWN0XG4gICAgKTogT2JzZXJ2YWJsZTxUIHwgVFtdPiB7XG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBpZiAodGhpcy5hdXRoSGVhZGVyKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuYXV0aEhlYWRlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbmRBc1Blcm1pdFRva2VuSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ01pY3JvUGVybWl0VG9rZW4nLCB0aGlzLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBpZiAocGFyYW1zICE9IG51bGwgfHwgdGhpcy51c2VQb3N0KSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhcmFtc1N0ciA9IFBhcmFtVXRpbHMuZ2V0UGFyYW0odXJsLCAnb1BhcmFtcycsIHRydWUpO1xuICAgICAgICAgICAgbGV0IGV4aXN0aW5nUGFyYW1zO1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nUGFyYW1zU3RyKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdQYXJhbXMgPSBKU09OLnBhcnNlKGV4aXN0aW5nUGFyYW1zU3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9QYXJhbXMgPSBPYmplY3QuYXNzaWduKGV4aXN0aW5nUGFyYW1zLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcbiAgICAgICAgaWYgKHJlcXVlc3RPcHRpb25zICE9IG51bGwgfHwgdGhpcy51c2VQb3N0KSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2T3B0aW9uc1N0ciA9IFBhcmFtVXRpbHMuZ2V0UGFyYW0odXJsLCAnb3B0aW9ucycsIHRydWUpO1xuICAgICAgICAgICAgaWYgKHByZXZPcHRpb25zU3RyKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IEpTT04ucGFyc2UocHJldk9wdGlvbnNTdHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gUGFyYW1VdGlscy5nZXRQYXJhbXModXJsKTtcblxuICAgICAgICBsZXQgaHR0cE9icyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnVzZVBvc3QpIHtcblxuICAgICAgICAgICAgbGV0IGJPUGFyYW1zO1xuICAgICAgICAgICAgY29uc3QgZW5jQk9QYXJhbXMgPSBxdWVyeVBhcmFtc1snYk9QYXJhbXMnXTtcbiAgICAgICAgICAgIGlmIChlbmNCT1BhcmFtcykge1xuICAgICAgICAgICAgICAgIGJPUGFyYW1zID0gSlNPTi5wYXJzZShQYXJhbVV0aWxzLmJhc2U2NFVybERlY29kZShlbmNCT1BhcmFtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXSxcbiAgICAgICAgICAgICAgICBvUGFyYW1zOiBvUGFyYW1zLFxuICAgICAgICAgICAgICAgIGJQYXJhbXM6IHF1ZXJ5UGFyYW1zWydiUGFyYW1zJ10sXG4gICAgICAgICAgICAgICAgYk9QYXJhbXM6IGJPUGFyYW1zLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydvUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2JQYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snYk9QYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snb3B0aW9ucyddO1xuXG4gICAgICAgICAgICB1cmwgPSBQYXJhbVV0aWxzLnNldFBhcmFtcyh1cmwsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLnVybFJld3JpdGVyKHVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0dHBPYnMgPSB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwsIGJvZHksIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob1BhcmFtcykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zWydvUGFyYW1zJ10gPSBQYXJhbVV0aWxzLmJhc2U2NFVybEVuY29kZShKU09OLnN0cmluZ2lmeShvUGFyYW1zKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNbJ29wdGlvbnMnXSA9IFBhcmFtVXRpbHMuYmFzZTY0VXJsRW5jb2RlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybCA9IFBhcmFtVXRpbHMuc2V0UGFyYW1zKHVybCwgcXVlcnlQYXJhbXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaHR0cE9icyA9IHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaHR0cE9icyA9IGh0dHBPYnMucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBNaWNyb09iamVjdC5mcm9tT2JqZWN0KHZhbCwgdGhpcykgYXMgVDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKVxuICAgICAgICA7XG5cbiAgICAgICAgcmV0dXJuIGh0dHBPYnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaEFuZEhhbmRsZUVycm9yPFQ+KCk6ICgoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbG9hZEVycm9yID0gbmV3IE1pY3JvQ2xpZW50TG9hZEVycm9yKGVyciwgKGVyclRvSGFuZGxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVyclRvSGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGxvYWRFcnJvcikucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvYWRFcnJvci5zaG91bGRQcmV2ZW50RGVmYXVsdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRFcnJvci5oYW5kbGVEZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ2hpbGRDbGllbnRGb3JFbnRyeVBvaW50KGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0KTogTWljcm9DbGllbnQge1xuICAgICAgICBpZiAoZW50cnlQb2ludC5fX21ldGEgJiYgZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQ2xpZW50OiBNaWNyb0NsaWVudCA9IE9iamVjdC5jcmVhdGUodGhpcywge1xuICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYXV0aEhlYWRlcjoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwZXJtaXRUb2tlbjoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjaGlsZENsaWVudC5zZXRFbnRyeVBvaW50KGVudHJ5UG9pbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkQ2xpZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgc3VwcGxpZWQgdmFsdWUgY2FuXFwndCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIGNoaWxkIE1pY3JvQ2xpZW50IGJlY2F1c2UgaXQgZG9lc25cXCd0IGNvbnRhaW4gbWV0YWRhdGEgd2l0aCBhIHBlcm1pdFRva2VuICcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFVSTFJld3JpdGVyKHJld3JpdGVyOiAoc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51cmxSZXdyaXRlciA9IHJld3JpdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9NaWNyb0Vycm9yKGh0dHBSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiBNaWNyb0Vycm9yIHtcbiAgICAgICAgY29uc3QgcmVzID0gaHR0cFJlc3BvbnNlLmVycm9yO1xuICAgICAgICBpZiAocmVzICYmIHJlcy5fX21ldGEgJiYgcmVzLl9fbWV0YS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IE1pY3JvRXJyb3IoKSwgcmVzLl9fbWV0YS5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgc3RhdGljQ29udGVudFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1thLXpBLVowLTldOi8vLiooOlswLTldKyk/KC8uKikqL3N0YXRpYygvLiooXFxcXD8uKik/KCMuKik/KT8nKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuXG4gICAgICAgIC8vIExhc3QgVVJMLVNlZ2VtZW50IGlzIHN0YXRpY1xuICAgICAgICBpZiAoTWljcm9DbGllbnQuc3RhdGljQ29udGVudFJlZ0V4cC50ZXN0KGhyZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gaHJlZi5yZXBsYWNlKG5ldyBSZWdFeHAoJy9zdGF0aWMvLionKSwgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgnLyMvLionKSwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5zdGFydHNXaXRoKCdmaWxlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICsgJzo4MDgwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3Vlc3NNaWNyb0NvbXBvbmVudEF1dGhvcml6ZVVSTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzc01pY3JvQ29tcG9uZW50QmFzZVVSTCgpICsgJy9hdXRob3JpemUnO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50TG9hZEVycm9yIHtcbiAgICBwcml2YXRlIGhhbmRsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRvUHJldmVudERlZmF1bHQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXJyb3I6IGFueSwgcHJpdmF0ZSBkZWZhdWx0SGFuZGxlcjogKGVycjogYW55KSA9PiB2b2lkKSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRGVmYXVsdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdEhhbmRsZXIodGhpcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVycm9yKGhhbmRsZXI6IChlcnJvcjogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIGhhbmRsZXIodGhpcy5lcnJvcik7XG4gICAgICAgIHRoaXMuaGFuZGxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGFuZGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdWxkUHJldmVudERlZmF1bHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvUHJldmVudERlZmF1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZlbnREZWZhdWx0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvUHJldmVudERlZmF1bHQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNEZWZhdWx0SGFuZGxlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEhhbmRsZXIgIT0gbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -220,7 +220,7 @@ var LinkFieldPagingSupport = /** @class */ (function () {
|
|
|
220
220
|
function () {
|
|
221
221
|
/** @type {?} */
|
|
222
222
|
var lastRow = this.lastRow();
|
|
223
|
-
if (lastRow) {
|
|
223
|
+
if (lastRow && lastRow.__meta) {
|
|
224
224
|
this.loadedCompletely = lastRow.__meta.nextPage == null;
|
|
225
225
|
}
|
|
226
226
|
else {
|
|
@@ -384,4 +384,4 @@ if (false) {
|
|
|
384
384
|
/** @type {?} */
|
|
385
385
|
SortInfo.prototype.dir;
|
|
386
386
|
}
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1maWVsZC1wYWdpbmctc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9saW5rLWZpZWxkLXBhZ2luZy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0E7SUFFSSxnQ0FDWSxRQUFrQyxFQUNsQyxpQkFBb0MsRUFDckMsU0FBdUI7UUFIbEMsaUJBS0M7UUFGVSwwQkFBQSxFQUFBLGVBQXVCO1FBRnRCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUkxQixVQUFLLEdBQWUsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFVLElBQUksQ0FBQztRQUNwQix3QkFBbUIsR0FBaUIsSUFBSSxDQUFDO1FBc0N6QyxvQkFBZTs7O1FBQUc7WUFDdEIsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUM7SUFoREYsQ0FBQztJQWFELHNCQUFJLHdDQUFJOzs7O1FBQVI7WUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3ZCO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUM7OztPQUFBOzs7Ozs7O0lBRWEsMkJBQUk7Ozs7OztJQUFsQixVQUNJLFFBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxTQUF1QjtRQUF2QiwwQkFBQSxFQUFBLGVBQXVCO1FBRXZCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7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dUJBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xpbmtGaWVsZH0gZnJvbSAnLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtNaWNyb09iamVjdH0gZnJvbSAnLi9taWNyb29iamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQYWdpbmdTdXBwb3J0IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHBhZ2VMaW5rOiBMaW5rRmllbGQ8TWljcm9PYmplY3RbXT4sXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgcGFnZUxpbWl0OiBudW1iZXIgPSAyMDBcbiAgICApIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRzOiBTb3J0SW5mb1tdID0gbnVsbDtcblxuICAgIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIGhhc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Jvd3M6IGFueVtdID0gbnVsbDtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICBwdWJsaWMgcm93c0NoYW5nZUNhbGxiYWNrOiAocm93czogYW55W10pID0+IHZvaWQ7XG4gICAgcHVibGljIGlzTG9hZGluZ0NhbGxiYWNrOiAoaXNMb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgZ2V0IHJvd3MoKTogYW55W10ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWROZXh0UGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbShcbiAgICAgICAgcGFnZUxpbms6IExpbmtGaWVsZDxNaWNyb09iamVjdFtdPixcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwYWdlTGltaXQ6IG51bWJlciA9IDIwMFxuICAgICk6IExpbmtGaWVsZFBhZ2luZ1N1cHBvcnQge1xuICAgICAgICByZXR1cm4gbmV3IExpbmtGaWVsZFBhZ2luZ1N1cHBvcnQocGFnZUxpbmssIGNoYW5nZURldGVjdG9yUmVmLCBwYWdlTGltaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseVNvcnQoc29ydHM6IFNvcnRJbmZvW10sIGV4dGVybmFsU29ydGluZyA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zb3J0cyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBudWxsO1xuXG4gICAgICAgIGlmIChleHRlcm5hbFNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydHMgPSBzb3J0cztcbiAgICAgICAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkQ29tcGxldGVseSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE5leHRQYWdlKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkaW5nQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBsb2FkTmV4dFBhZ2UocGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnZUxpbWl0LCByZXN1bHRDYWxsYmFjazogKChwYWdlOiBhbnlbXSwgYWxsOiBhbnlbXSkgPT4gdm9pZCkgPSBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VMaW5rICYmICF0aGlzLmlzTG9hZGluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGFzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkQ29tcGxldGVseSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Jvd3MgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcU9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnRzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucy5zb3J0aW5nID0gdGhpcy5zb3J0cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VTaXplICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gdGhpcy5wYWdlTGluay5pbml0V2l0aE9icyhudWxsLCByZXFPcHRpb25zKS5zdWJzY3JpYmUoKGZpcnN0UGFnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJvd3MoZmlyc3RQYWdlLCByZXN1bHRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5sb2FkaW5nQ2FsbGJhY2ssIHRoaXMubG9hZGluZ0NhbGxiYWNrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdFJvdyA9IHRoaXMubGFzdFJvdygpO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Um93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Um93Ll9fbWV0YS5uZXh0UGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcU9wdGlvbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VTaXplICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogcGFnZVNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGFnZU9iczogT2JzZXJ2YWJsZTxNaWNyb09iamVjdFtdPiA9IGxhc3RSb3cuX19tZXRhLm5leHRQYWdlLmluaXRXaXRoT2JzKG51bGwsIHJlcU9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRQYWdlT2JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG5leHRQYWdlT2JzLnN1YnNjcmliZSgobmV4dFBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSb3dzKG5leHRQYWdlLCByZXN1bHRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5sb2FkaW5nQ2FsbGJhY2ssIHRoaXMubG9hZGluZ0NhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTGluaykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclJvd3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRXZlcnl0aGluZygpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXN0Um93KCk6IE1pY3JvT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3NbdGhpcy5fcm93cy5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJvd3MoYWRkaXRpb25hbFBhZ2U6IGFueVtdLCBsb2FkQ2FsbGJhY2s6ICgocGFnZTogYW55W10sIGFsbDogYW55W10pID0+IHZvaWQpKSB7XG4gICAgICAgIGlmICh0aGlzLl9yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dzID0gWy4uLnRoaXMucm93cywgLi4uYWRkaXRpb25hbFBhZ2VdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93cyA9IGFkZGl0aW9uYWxQYWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2FkQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGxvYWRDYWxsYmFjayhhZGRpdGlvbmFsUGFnZSwgdGhpcy5fcm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZsZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJSb3dzKCkge1xuICAgICAgICBpZiAodGhpcy5fcm93cyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucmVmbGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVmbGVjdENoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IGxhc3RSb3cgPSB0aGlzLmxhc3RSb3coKTtcbiAgICAgICAgaWYgKGxhc3RSb3cpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkQ29tcGxldGVseSA9IGxhc3RSb3cuX19tZXRhLm5leHRQYWdlID09IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5yb3dzQ2hhbmdlQ2FsbGJhY2sodGhpcy5fcm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMb2FkaW5nKGlzTG9hZGluZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2sodGhpcy5pc0xvYWRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwb3NlKCkge1xuICAgICAgICB0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2sgPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQYWdlTGluayhwYWdlTGluazogTGlua0ZpZWxkPE1pY3JvT2JqZWN0W10+KSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdGF0ZSgpO1xuICAgICAgICB0aGlzLnBhZ2VMaW5rID0gcGFnZUxpbms7XG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0xvYWRlZENvbXBsZXRlbHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbXBsZXRlbHk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXQocm93c0NoYW5nZUNhbGxiYWNrOiAocm93czogYW55W10pID0+IHZvaWQsIGlzTG9hZGluZ0NhbGxiYWNrOiAoKGlzTG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCkgPSBudWxsKSB7XG4gICAgICAgIHRoaXMucm93c0NoYW5nZUNhbGxiYWNrID0gcm93c0NoYW5nZUNhbGxiYWNrO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0NhbGxiYWNrID0gaXNMb2FkaW5nQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclN0YXRlKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm93cyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvcnRJbmZvIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZmllbGQ6IHN0cmluZywgcHVibGljIGRpcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlyID0gZGlyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmICghKHRoaXMuZGlyID09PSAnQVNDJyB8fCB0aGlzLmRpciA9PT0gJ0RFU0MnKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ2RpciBjYW4gb25seSBiZSBcXCdBU0NcXCcgb3IgXFwnREVTQ1xcJycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1maWVsZC1wYWdpbmctc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9saW5rLWZpZWxkLXBhZ2luZy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0E7SUFFSSxnQ0FDWSxRQUFrQyxFQUNsQyxpQkFBb0MsRUFDckMsU0FBdUI7UUFIbEMsaUJBS0M7UUFGVSwwQkFBQSxFQUFBLGVBQXVCO1FBRnRCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUkxQixVQUFLLEdBQWUsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFVLElBQUksQ0FBQztRQUNwQix3QkFBbUIsR0FBaUIsSUFBSSxDQUFDO1FBc0N6QyxvQkFBZTs7O1FBQUc7WUFDdEIsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUM7SUFoREYsQ0FBQztJQWFELHNCQUFJLHdDQUFJOzs7O1FBQVI7WUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3ZCO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUM7OztPQUFBOzs7Ozs7O0lBRWEsMkJBQUk7Ozs7OztJQUFsQixVQUNJLFFBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxTQUF1QjtRQUF2QiwwQkFBQSxFQUFBLGVBQXVCO1FBRXZCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7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Ozs7SUFOZSx5QkFBb0I7O0lBQUUsdUJBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xpbmtGaWVsZH0gZnJvbSAnLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtNaWNyb09iamVjdH0gZnJvbSAnLi9taWNyb29iamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQYWdpbmdTdXBwb3J0IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHBhZ2VMaW5rOiBMaW5rRmllbGQ8TWljcm9PYmplY3RbXT4sXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgcGFnZUxpbWl0OiBudW1iZXIgPSAyMDBcbiAgICApIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRzOiBTb3J0SW5mb1tdID0gbnVsbDtcblxuICAgIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIGhhc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Jvd3M6IGFueVtdID0gbnVsbDtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICBwdWJsaWMgcm93c0NoYW5nZUNhbGxiYWNrOiAocm93czogYW55W10pID0+IHZvaWQ7XG4gICAgcHVibGljIGlzTG9hZGluZ0NhbGxiYWNrOiAoaXNMb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgZ2V0IHJvd3MoKTogYW55W10ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWROZXh0UGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbShcbiAgICAgICAgcGFnZUxpbms6IExpbmtGaWVsZDxNaWNyb09iamVjdFtdPixcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwYWdlTGltaXQ6IG51bWJlciA9IDIwMFxuICAgICk6IExpbmtGaWVsZFBhZ2luZ1N1cHBvcnQge1xuICAgICAgICByZXR1cm4gbmV3IExpbmtGaWVsZFBhZ2luZ1N1cHBvcnQocGFnZUxpbmssIGNoYW5nZURldGVjdG9yUmVmLCBwYWdlTGltaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseVNvcnQoc29ydHM6IFNvcnRJbmZvW10sIGV4dGVybmFsU29ydGluZyA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zb3J0cyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBudWxsO1xuXG4gICAgICAgIGlmIChleHRlcm5hbFNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydHMgPSBzb3J0cztcbiAgICAgICAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkQ29tcGxldGVseSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE5leHRQYWdlKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkaW5nQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBsb2FkTmV4dFBhZ2UocGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnZUxpbWl0LCByZXN1bHRDYWxsYmFjazogKChwYWdlOiBhbnlbXSwgYWxsOiBhbnlbXSkgPT4gdm9pZCkgPSBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VMaW5rICYmICF0aGlzLmlzTG9hZGluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGFzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkQ29tcGxldGVseSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Jvd3MgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcU9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnRzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucy5zb3J0aW5nID0gdGhpcy5zb3J0cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VTaXplICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gdGhpcy5wYWdlTGluay5pbml0V2l0aE9icyhudWxsLCByZXFPcHRpb25zKS5zdWJzY3JpYmUoKGZpcnN0UGFnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJvd3MoZmlyc3RQYWdlLCByZXN1bHRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5sb2FkaW5nQ2FsbGJhY2ssIHRoaXMubG9hZGluZ0NhbGxiYWNrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdFJvdyA9IHRoaXMubGFzdFJvdygpO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Um93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Um93Ll9fbWV0YS5uZXh0UGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcU9wdGlvbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VTaXplICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogcGFnZVNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGFnZU9iczogT2JzZXJ2YWJsZTxNaWNyb09iamVjdFtdPiA9IGxhc3RSb3cuX19tZXRhLm5leHRQYWdlLmluaXRXaXRoT2JzKG51bGwsIHJlcU9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRQYWdlT2JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG5leHRQYWdlT2JzLnN1YnNjcmliZSgobmV4dFBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSb3dzKG5leHRQYWdlLCByZXN1bHRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5sb2FkaW5nQ2FsbGJhY2ssIHRoaXMubG9hZGluZ0NhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTGluaykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclJvd3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRXZlcnl0aGluZygpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXN0Um93KCk6IE1pY3JvT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3NbdGhpcy5fcm93cy5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJvd3MoYWRkaXRpb25hbFBhZ2U6IGFueVtdLCBsb2FkQ2FsbGJhY2s6ICgocGFnZTogYW55W10sIGFsbDogYW55W10pID0+IHZvaWQpKSB7XG4gICAgICAgIGlmICh0aGlzLl9yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dzID0gWy4uLnRoaXMucm93cywgLi4uYWRkaXRpb25hbFBhZ2VdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93cyA9IGFkZGl0aW9uYWxQYWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2FkQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGxvYWRDYWxsYmFjayhhZGRpdGlvbmFsUGFnZSwgdGhpcy5fcm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZsZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJSb3dzKCkge1xuICAgICAgICBpZiAodGhpcy5fcm93cyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucmVmbGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVmbGVjdENoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IGxhc3RSb3cgPSB0aGlzLmxhc3RSb3coKTtcbiAgICAgICAgaWYgKGxhc3RSb3cgJiYgbGFzdFJvdy5fX21ldGEpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkQ29tcGxldGVseSA9IGxhc3RSb3cuX19tZXRhLm5leHRQYWdlID09IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5yb3dzQ2hhbmdlQ2FsbGJhY2sodGhpcy5fcm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMb2FkaW5nKGlzTG9hZGluZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2sodGhpcy5pc0xvYWRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwb3NlKCkge1xuICAgICAgICB0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2sgPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQYWdlTGluayhwYWdlTGluazogTGlua0ZpZWxkPE1pY3JvT2JqZWN0W10+KSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdGF0ZSgpO1xuICAgICAgICB0aGlzLnBhZ2VMaW5rID0gcGFnZUxpbms7XG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0xvYWRlZENvbXBsZXRlbHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbXBsZXRlbHk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXQocm93c0NoYW5nZUNhbGxiYWNrOiAocm93czogYW55W10pID0+IHZvaWQsIGlzTG9hZGluZ0NhbGxiYWNrOiAoKGlzTG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCkgPSBudWxsKSB7XG4gICAgICAgIHRoaXMucm93c0NoYW5nZUNhbGxiYWNrID0gcm93c0NoYW5nZUNhbGxiYWNrO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0NhbGxiYWNrID0gaXNMb2FkaW5nQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclN0YXRlKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm93cyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvcnRJbmZvIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZmllbGQ6IHN0cmluZywgcHVibGljIGRpcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlyID0gZGlyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmICghKHRoaXMuZGlyID09PSAnQVNDJyB8fCB0aGlzLmRpciA9PT0gJ0RFU0MnKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ2RpciBjYW4gb25seSBiZSBcXCdBU0NcXCcgb3IgXFwnREVTQ1xcJycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -58,4 +58,4 @@ var MicroClientModule = /** @class */ (function () {
|
|
|
58
58
|
return MicroClientModule;
|
|
59
59
|
}());
|
|
60
60
|
export { MicroClientModule };
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1pY3JvcGVybWl0L2NsaWVudC1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL21pY3JvY2xpZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLG9DQUFvQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDN0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV0RjtJQUFBO0lBa0NBLENBQUM7Ozs7SUFSVSwrQkFBYTs7O0lBQXBCO1FBQ0ksT0FBTztZQUNILFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNQLFdBQVc7YUFDZDtTQUNKLENBQUM7SUFDTixDQUFDOztnQkFqQ0osUUFBUSxTQUFDO29CQUNOLGVBQWUsRUFBRTt3QkFDYixvQ0FBb0M7d0JBQ3BDLGtDQUFrQztxQkFDckM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGdCQUFnQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLG9DQUFvQzt3QkFDcEMsa0NBQWtDO3dCQUNsQywwQkFBMEI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixrQ0FBa0M7d0JBQ2xDLG9DQUFvQzt3QkFDcEMsMEJBQTBCO3FCQUM3QjtpQkFDSjs7SUFVRCx3QkFBQztDQUFBLEFBbENELElBa0NDO1NBVFksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01pY3JvQ2xpZW50TG9hZGluZ0luZGljYXRvckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2xvYWRpbmdpbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TGlua0ZpZWxkUGlwZX0gZnJvbSAnLi9waXBlcy9saW5rZmllbGQucGlwZSc7XG5pbXBvcnQge0xpbmtGaWVsZERpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2xpbmtmaWVsZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNaWNyb0NsaWVudH0gZnJvbSAnLi9taWNyb2NsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cENsaWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtDYWxsTGlua0RpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2NhbGwtbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNaWNyb0NsaWVudEVycm9ySW5kaWNhdG9yQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZXJyb3JpbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TWljcm9MaW5rVmFsaWRhdGVEaXJlY3RpdmV9IGZyb20gJy4vZGlyZWN0aXZlcy9taWNyby1saW5rLXZhbGlkYXRlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgICAgIE1pY3JvQ2xpZW50TG9hZGluZ0luZGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgTWljcm9DbGllbnRFcnJvckluZGljYXRvckNvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgTGlua0ZpZWxkUGlwZSxcbiAgICAgICAgTGlua0ZpZWxkRGlyZWN0aXZlLFxuICAgICAgICBDYWxsTGlua0RpcmVjdGl2ZSxcbiAgICAgICAgTWljcm9DbGllbnRMb2FkaW5nSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBNaWNyb0NsaWVudEVycm9ySW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBNaWNyb0xpbmtWYWxpZGF0ZURpcmVjdGl2ZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBMaW5rRmllbGRQaXBlLFxuICAgICAgICBMaW5rRmllbGREaXJlY3RpdmUsXG4gICAgICAgIENhbGxMaW5rRGlyZWN0aXZlLFxuICAgICAgICBNaWNyb0NsaWVudEVycm9ySW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBNaWNyb0NsaWVudExvYWRpbmdJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgICAgIE1pY3JvTGlua1ZhbGlkYXRlRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudE1vZHVsZSB7XG4gICAgc3RhdGljIGZvckNsaWVudFJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxNaWNyb0NsaWVudE1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE1pY3JvQ2xpZW50TW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgTWljcm9DbGllbnRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
import { Injectable } from '@angular/core';
|
|
6
6
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
7
7
|
import { MicroObject } from './microobject';
|
|
8
|
-
import { throwError } from 'rxjs';
|
|
9
|
-
import { catchError, finalize, map } from 'rxjs/operators';
|
|
8
|
+
import { Subject, throwError } from 'rxjs';
|
|
9
|
+
import { catchError, finalize, map, take, shareReplay } from 'rxjs/operators';
|
|
10
10
|
import { ParamUtils } from './paramutils';
|
|
11
11
|
import { MicroError } from './error/microerror';
|
|
12
12
|
var MicroClient = /** @class */ (function () {
|
|
13
13
|
function MicroClient(httpClient) {
|
|
14
14
|
this.httpClient = httpClient;
|
|
15
|
+
this.entryPointSubject = new Subject();
|
|
16
|
+
this.entryPointObs = this.entryPointSubject.pipe(shareReplay(1), take(1));
|
|
15
17
|
this.usePost = true;
|
|
16
18
|
this.sendAsPermitTokenHeader = true;
|
|
17
19
|
}
|
|
@@ -50,15 +52,30 @@ var MicroClient = /** @class */ (function () {
|
|
|
50
52
|
this.authHeader = authHeader;
|
|
51
53
|
};
|
|
52
54
|
/**
|
|
53
|
-
* @template T
|
|
54
55
|
* @return {?}
|
|
55
56
|
*/
|
|
56
57
|
MicroClient.prototype.getEntryPoint = /**
|
|
57
|
-
* @template T
|
|
58
58
|
* @return {?}
|
|
59
59
|
*/
|
|
60
60
|
function () {
|
|
61
|
-
return
|
|
61
|
+
return this.entryPoint;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* @param {?=} cb
|
|
65
|
+
* @return {?}
|
|
66
|
+
*/
|
|
67
|
+
MicroClient.prototype.waitForEntryPoint = /**
|
|
68
|
+
* @param {?=} cb
|
|
69
|
+
* @return {?}
|
|
70
|
+
*/
|
|
71
|
+
function (cb) {
|
|
72
|
+
/** @type {?} */
|
|
73
|
+
var obs = this.entryPointObs.pipe(take(1));
|
|
74
|
+
if (cb != null) {
|
|
75
|
+
obs.subscribe(cb);
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return obs.toPromise();
|
|
62
79
|
};
|
|
63
80
|
/**
|
|
64
81
|
* @param {?} other
|
|
@@ -97,6 +114,7 @@ var MicroClient = /** @class */ (function () {
|
|
|
97
114
|
else {
|
|
98
115
|
throw Error('Expected the entryPoint to contain a "permitToken" within the "__meta" field');
|
|
99
116
|
}
|
|
117
|
+
this.entryPointSubject.next(entryPoint);
|
|
100
118
|
}
|
|
101
119
|
};
|
|
102
120
|
/**
|
|
@@ -460,6 +478,16 @@ if (false) {
|
|
|
460
478
|
* @private
|
|
461
479
|
*/
|
|
462
480
|
MicroClient.prototype.entryPoint;
|
|
481
|
+
/**
|
|
482
|
+
* @type {?}
|
|
483
|
+
* @private
|
|
484
|
+
*/
|
|
485
|
+
MicroClient.prototype.entryPointSubject;
|
|
486
|
+
/**
|
|
487
|
+
* @type {?}
|
|
488
|
+
* @private
|
|
489
|
+
*/
|
|
490
|
+
MicroClient.prototype.entryPointObs;
|
|
463
491
|
/**
|
|
464
492
|
* @type {?}
|
|
465
493
|
* @private
|
|
@@ -572,4 +600,4 @@ if (false) {
|
|
|
572
600
|
*/
|
|
573
601
|
MicroClientLoadError.prototype.defaultHandler;
|
|
574
602
|
}
|
|
575
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QztJQVlJLHFCQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSm5DLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFZiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFJdEMsQ0FBQzs7Ozs7SUFFTSxnREFBMEI7Ozs7SUFBakMsVUFBa0MsdUJBQWdDO1FBQzlELElBQUksQ0FBQyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztJQUMzRCxDQUFDOzs7OztJQUVNLGtDQUFZOzs7O0lBQW5CLFVBQW9CLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBRU0sbUNBQWE7Ozs7SUFBcEIsVUFBcUIsVUFBa0I7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQzs7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QUNMLENBQUM7Ozs7O0lBRU0sMENBQVc7Ozs7SUFBbEIsVUFBbUIsT0FBNkI7UUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDOzs7O0lBRU0sd0NBQVM7OztJQUFoQjtRQUNJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzs7O0lBRU0sbURBQW9COzs7SUFBM0I7UUFDSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0sNkNBQWM7OztJQUFyQjtRQUNJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7OztJQUVNLGdEQUFpQjs7O0lBQXhCO1FBQ0ksT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQUFDLEFBbkNELElBbUNDOzs7Ozs7O0lBbENHLHVDQUF3Qjs7Ozs7SUFDeEIsZ0RBQWlDOzs7OztJQUVyQixxQ0FBa0I7Ozs7O0lBQUUsOENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge01pY3JvT2JqZWN0fSBmcm9tICcuL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGFyYW1VdGlsc30gZnJvbSAnLi9wYXJhbXV0aWxzJztcbmltcG9ydCB7TWljcm9FcnJvcn0gZnJvbSAnLi9lcnJvci9taWNyb2Vycm9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50IHtcblxuICAgIHByaXZhdGUgYXV0aEhlYWRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcGVybWl0VG9rZW46IHN0cmluZztcbiAgICBwcml2YXRlIGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0O1xuICAgIHByaXZhdGUgdXJsUmV3cml0ZXI6IChzdHJpbmcpID0+IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRFcnJvckhhbmRsZXI6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtaWNyb0Vycm9yOiBNaWNyb09iamVjdCkgPT4gdm9pZDtcbiAgICBwdWJsaWMgdXNlUG9zdCA9IHRydWU7XG5cbiAgICBwdWJsaWMgc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VuZEFzUGVybWl0VG9rZW5IZWFkZXIoc2VuZEFzUGVybWl0VG9rZW5IZWFkZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlciA9IHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSAnQmVhcmVyICcgKyB0b2tlbjtcbiAgICAgICAgdGhpcy5wZXJtaXRUb2tlbiA9IHRva2VuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoSGVhZGVyKGF1dGhIZWFkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBhdXRoSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbnRyeVBvaW50PFQgZXh0ZW5kcyBNaWNyb09iamVjdD4oKTogVCB7XG4gICAgICAgIHJldHVybiA8VD50aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlBdXRoQW5kRW50cnlwb2ludE9mKG90aGVyOiBNaWNyb0NsaWVudCkge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBvdGhlci5hdXRoSGVhZGVyO1xuICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gb3RoZXIucGVybWl0VG9rZW47XG4gICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG90aGVyLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVudHJ5UG9pbnQ8VCBleHRlbmRzIE1pY3JvT2JqZWN0PihlbnRyeVBvaW50OiBhbnkpIHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludCA9IGVudHJ5UG9pbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyeVBvaW50Ll9fbWV0YSAmJiB0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdXRoVG9rZW4odGhpcy5lbnRyeVBvaW50Ll9fbWV0YS5wZXJtaXRUb2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0aGUgZW50cnlQb2ludCB0byBjb250YWluIGEgXCJwZXJtaXRUb2tlblwiIHdpdGhpbiB0aGUgXCJfX21ldGFcIiBmaWVsZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERlZmF1bHRFcnJvckhhbmRsZXIoaGFuZGxlcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1pY3JvRXJyb3I6IE1pY3JvT2JqZWN0KSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlciA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVycm9yKGh0dHBFcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRFcnJvckhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pY3JvRXJyb3IgPSBNaWNyb0NsaWVudC50b01pY3JvRXJyb3IoaHR0cEVycik7XG4gICAgICAgICAgICBpZiAobWljcm9FcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pY3JvUmVzdWx0T2JqOiBNaWNyb09iamVjdCA9IDxNaWNyb09iamVjdD5NaWNyb09iamVjdC5mcm9tT2JqZWN0KGh0dHBFcnIuZXJyb3IsIHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcihodHRwRXJyLCBtaWNyb1Jlc3VsdE9iaik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcihodHRwRXJyLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpZ25pdGU8VCBleHRlbmRzIChNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10pPihcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIHVzZXJuYW1lOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBwYXNzd29yZDogU3RyaW5nID0gbnVsbCxcbiAgICAgICAgaGVhZGVyczogb2JqZWN0ID0ge31cbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBmb3IgKGNvbnN0IGhlYWRlcktleSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShoZWFkZXJLZXkpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoaGVhZGVyS2V5LCBoZWFkZXJzW2hlYWRlcktleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVzZXJuYW1lICE9IG51bGwgfHwgcGFzc3dvcmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnlQb2ludCA9IE1pY3JvT2JqZWN0LmZyb21PYmplY3QodmFsLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnlQb2ludCBpbnN0YW5jZW9mIE1pY3JvT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5UG9pbnQgYXMgVDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgdGhlIGVudHJ5UG9pbnQgdG8gYmUgYSBPYmplY3QnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hBbmRIYW5kbGVFcnJvcigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWQ8VCBleHRlbmRzIChvYmplY3QgfCBvYmplY3RbXSk+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgcGFyYW1zPzogb2JqZWN0LFxuICAgICAgICByZXF1ZXN0T3B0aW9ucz86IG9iamVjdFxuICAgICk6IE9ic2VydmFibGU8VCB8IFRbXT4ge1xuICAgICAgICBsZXQgcmVxdWVzdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuYXV0aEhlYWRlcikge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmF1dGhIZWFkZXIpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlcikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMuc2V0KCdNaWNyb1Blcm1pdFRva2VuJywgdGhpcy5wZXJtaXRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb1BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgaWYgKHBhcmFtcyAhPSBudWxsIHx8IHRoaXMudXNlUG9zdCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdQYXJhbXNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHVybCwgJ29QYXJhbXMnLCB0cnVlKTtcbiAgICAgICAgICAgIGxldCBleGlzdGluZ1BhcmFtcztcbiAgICAgICAgICAgIGlmIChleGlzdGluZ1BhcmFtc1N0cikge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyYW1zID0gSlNPTi5wYXJzZShleGlzdGluZ1BhcmFtc1N0cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyYW1zID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvUGFyYW1zID0gT2JqZWN0LmFzc2lnbihleGlzdGluZ1BhcmFtcywgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvcHRpb25zID0gcmVxdWVzdE9wdGlvbnM7XG4gICAgICAgIGlmIChyZXF1ZXN0T3B0aW9ucyAhPSBudWxsIHx8IHRoaXMudXNlUG9zdCkge1xuICAgICAgICAgICAgY29uc3QgcHJldk9wdGlvbnNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHVybCwgJ29wdGlvbnMnLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChwcmV2T3B0aW9uc1N0cikge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBKU09OLnBhcnNlKHByZXZPcHRpb25zU3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IFBhcmFtVXRpbHMuZ2V0UGFyYW1zKHVybCk7XG5cbiAgICAgICAgbGV0IGh0dHBPYnMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy51c2VQb3N0KSB7XG5cbiAgICAgICAgICAgIGxldCBiT1BhcmFtcztcbiAgICAgICAgICAgIGNvbnN0IGVuY0JPUGFyYW1zID0gcXVlcnlQYXJhbXNbJ2JPUGFyYW1zJ107XG4gICAgICAgICAgICBpZiAoZW5jQk9QYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBiT1BhcmFtcyA9IEpTT04ucGFyc2UoUGFyYW1VdGlscy5iYXNlNjRVcmxEZWNvZGUoZW5jQk9QYXJhbXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtc1sncGFyYW1zJ10sXG4gICAgICAgICAgICAgICAgb1BhcmFtczogb1BhcmFtcyxcbiAgICAgICAgICAgICAgICBiUGFyYW1zOiBxdWVyeVBhcmFtc1snYlBhcmFtcyddLFxuICAgICAgICAgICAgICAgIGJPUGFyYW1zOiBiT1BhcmFtcyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snb1BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydiUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2JPUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ29wdGlvbnMnXTtcblxuICAgICAgICAgICAgdXJsID0gUGFyYW1VdGlscy5zZXRQYXJhbXModXJsLCBxdWVyeVBhcmFtcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnVybFJld3JpdGVyKSB7XG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBodHRwT2JzID0gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBib2R5LCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9QYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snb1BhcmFtcyddID0gUGFyYW1VdGlscy5iYXNlNjRVcmxFbmNvZGUoSlNPTi5zdHJpbmdpZnkob1BhcmFtcykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zWydvcHRpb25zJ10gPSBQYXJhbVV0aWxzLmJhc2U2NFVybEVuY29kZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmwgPSBQYXJhbVV0aWxzLnNldFBhcmFtcyh1cmwsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLnVybFJld3JpdGVyKHVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0dHBPYnMgPSB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGh0dHBPYnMgPSBodHRwT2JzLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpIGFzIFQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hBbmRIYW5kbGVFcnJvcigpXG4gICAgICAgIClcbiAgICAgICAgO1xuXG4gICAgICAgIHJldHVybiBodHRwT2JzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2F0Y2hBbmRIYW5kbGVFcnJvcjxUPigpOiAoKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gT2JzZXJ2YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvYWRFcnJvciA9IG5ldyBNaWNyb0NsaWVudExvYWRFcnJvcihlcnIsIChlcnJUb0hhbmRsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJUb0hhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihsb2FkRXJyb3IpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2FkRXJyb3Iuc2hvdWxkUHJldmVudERlZmF1bHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkRXJyb3IuaGFuZGxlRGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUNoaWxkQ2xpZW50Rm9yRW50cnlQb2ludChlbnRyeVBvaW50OiBNaWNyb09iamVjdCk6IE1pY3JvQ2xpZW50IHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQuX19tZXRhICYmIGVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZENsaWVudDogTWljcm9DbGllbnQgPSBPYmplY3QuY3JlYXRlKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGF1dGhIZWFkZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGVybWl0VG9rZW46IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hpbGRDbGllbnQuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZENsaWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHN1cHBsaWVkIHZhbHVlIGNhblxcJ3QgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBjaGlsZCBNaWNyb0NsaWVudCBiZWNhdXNlIGl0IGRvZXNuXFwndCBjb250YWluIG1ldGFkYXRhIHdpdGggYSBwZXJtaXRUb2tlbiAnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRVUkxSZXdyaXRlcihyZXdyaXRlcjogKHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudXJsUmV3cml0ZXIgPSByZXdyaXRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvTWljcm9FcnJvcihodHRwUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogTWljcm9FcnJvciB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGh0dHBSZXNwb25zZS5lcnJvcjtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuX19tZXRhICYmIHJlcy5fX21ldGEuZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBNaWNyb0Vycm9yKCksIHJlcy5fX21ldGEuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHN0YXRpY0NvbnRlbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCdbYS16QS1aMC05XTovLy4qKDpbMC05XSspPygvLiopKi9zdGF0aWMoLy4qKFxcXFw/LiopPygjLiopPyk/Jyk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRCYXNlVVJMKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcblxuICAgICAgICAvLyBMYXN0IFVSTC1TZWdlbWVudCBpcyBzdGF0aWNcbiAgICAgICAgaWYgKE1pY3JvQ2xpZW50LnN0YXRpY0NvbnRlbnRSZWdFeHAudGVzdChocmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIGhyZWYucmVwbGFjZShuZXcgUmVnRXhwKCcvc3RhdGljLy4qJyksICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoJy8jLy4qJyksICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuc3RhcnRzV2l0aCgnZmlsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vbG9jYWxob3N0OjgwODAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICc6ODA4MCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRBdXRob3JpemVVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKSArICcvYXV0aG9yaXplJztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudExvYWRFcnJvciB7XG4gICAgcHJpdmF0ZSBoYW5kbGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkb1ByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVycm9yOiBhbnksIHByaXZhdGUgZGVmYXVsdEhhbmRsZXI6IChlcnI6IGFueSkgPT4gdm9pZCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURlZmF1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRIYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcihoYW5kbGVyOiAoZXJyb3I6IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBoYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hhbmRsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFByZXZlbnREZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb1ByZXZlbnREZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2ZW50RGVmYXVsdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRGVmYXVsdEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRIYW5kbGVyICE9IG51bGw7XG4gICAgfVxufVxuIl19
|
|
603
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QztJQW1CSSxxQkFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVpsQyxzQkFBaUIsR0FBeUIsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUNyRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQy9DLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1YsQ0FBQztRQUlLLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFZiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFJdEMsQ0FBQzs7Ozs7SUFFTSxnREFBMEI7Ozs7SUFBakMsVUFBa0MsdUJBQWdDO1FBQzlELElBQUksQ0FBQyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztJQUMzRCxDQUFDOzs7OztJQUVNLGtDQUFZOzs7O0lBQW5CLFVBQW9CLEtBQWE7UUFD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QUFDO0lBQ0wsMkJBQUM7QUFBRCxDQUFDLEFBbkNELElBbUNDOzs7Ozs7O0lBbENHLHVDQUF3Qjs7Ozs7SUFDeEIsZ0RBQWlDOzs7OztJQUVyQixxQ0FBa0I7Ozs7O0lBQUUsOENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge01pY3JvT2JqZWN0fSBmcm9tICcuL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIHRha2UsIHNoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhcmFtVXRpbHN9IGZyb20gJy4vcGFyYW11dGlscyc7XG5pbXBvcnQge01pY3JvRXJyb3J9IGZyb20gJy4vZXJyb3IvbWljcm9lcnJvcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudCB7XG5cbiAgICBwcml2YXRlIGF1dGhIZWFkZXI6IHN0cmluZztcbiAgICBwcml2YXRlIHBlcm1pdFRva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBlbnRyeVBvaW50OiBNaWNyb09iamVjdDtcblxuICAgIHByaXZhdGUgZW50cnlQb2ludFN1YmplY3Q6IFN1YmplY3Q8TWljcm9PYmplY3Q+ID0gbmV3IFN1YmplY3Q8TWljcm9PYmplY3Q+KCk7XG4gICAgcHJpdmF0ZSBlbnRyeVBvaW50T2JzID0gdGhpcy5lbnRyeVBvaW50U3ViamVjdC5waXBlKFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICk7XG5cbiAgICBwcml2YXRlIHVybFJld3JpdGVyOiAoc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZhdWx0RXJyb3JIYW5kbGVyOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgbWljcm9FcnJvcjogTWljcm9PYmplY3QpID0+IHZvaWQ7XG4gICAgcHVibGljIHVzZVBvc3QgPSB0cnVlO1xuXG4gICAgcHVibGljIHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlbmRBc1Blcm1pdFRva2VuSGVhZGVyKHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIgPSBzZW5kQXNQZXJtaXRUb2tlbkhlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0aFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gJ0JlYXJlciAnICsgdG9rZW47XG4gICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSB0b2tlbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0aEhlYWRlcihhdXRoSGVhZGVyOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gYXV0aEhlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW50cnlQb2ludCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyeVBvaW50O1xuICAgIH1cblxuICAgIHB1YmxpYyB3YWl0Rm9yRW50cnlQb2ludChjYj86IChlbnRyeVBvaW50OiBhbnkpID0+IHZvaWQpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBsZXQgb2JzID0gdGhpcy5lbnRyeVBvaW50T2JzLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjYiAhPSBudWxsKSB7XG4gICAgICAgICAgICBvYnMuc3Vic2NyaWJlKGNiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnMudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlBdXRoQW5kRW50cnlwb2ludE9mKG90aGVyOiBNaWNyb0NsaWVudCkge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBvdGhlci5hdXRoSGVhZGVyO1xuICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gb3RoZXIucGVybWl0VG9rZW47XG4gICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG90aGVyLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVudHJ5UG9pbnQ8VCBleHRlbmRzIE1pY3JvT2JqZWN0PihlbnRyeVBvaW50OiBhbnkpIHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludCA9IGVudHJ5UG9pbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyeVBvaW50Ll9fbWV0YSAmJiB0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdXRoVG9rZW4odGhpcy5lbnRyeVBvaW50Ll9fbWV0YS5wZXJtaXRUb2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0aGUgZW50cnlQb2ludCB0byBjb250YWluIGEgXCJwZXJtaXRUb2tlblwiIHdpdGhpbiB0aGUgXCJfX21ldGFcIiBmaWVsZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50U3ViamVjdC5uZXh0KGVudHJ5UG9pbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERlZmF1bHRFcnJvckhhbmRsZXIoaGFuZGxlcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1pY3JvRXJyb3I6IE1pY3JvT2JqZWN0KSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlciA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVycm9yKGh0dHBFcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRFcnJvckhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pY3JvRXJyb3IgPSBNaWNyb0NsaWVudC50b01pY3JvRXJyb3IoaHR0cEVycik7XG4gICAgICAgICAgICBpZiAobWljcm9FcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pY3JvUmVzdWx0T2JqOiBNaWNyb09iamVjdCA9IDxNaWNyb09iamVjdD5NaWNyb09iamVjdC5mcm9tT2JqZWN0KGh0dHBFcnIuZXJyb3IsIHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcihodHRwRXJyLCBtaWNyb1Jlc3VsdE9iaik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcihodHRwRXJyLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpZ25pdGU8VCBleHRlbmRzIChNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10pPihcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIHVzZXJuYW1lOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBwYXNzd29yZDogU3RyaW5nID0gbnVsbCxcbiAgICAgICAgaGVhZGVyczogb2JqZWN0ID0ge31cbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBmb3IgKGNvbnN0IGhlYWRlcktleSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShoZWFkZXJLZXkpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoaGVhZGVyS2V5LCBoZWFkZXJzW2hlYWRlcktleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVzZXJuYW1lICE9IG51bGwgfHwgcGFzc3dvcmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnlQb2ludCA9IE1pY3JvT2JqZWN0LmZyb21PYmplY3QodmFsLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnlQb2ludCBpbnN0YW5jZW9mIE1pY3JvT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5UG9pbnQgYXMgVDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgdGhlIGVudHJ5UG9pbnQgdG8gYmUgYSBPYmplY3QnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hBbmRIYW5kbGVFcnJvcigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWQ8VCBleHRlbmRzIChvYmplY3QgfCBvYmplY3RbXSk+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgcGFyYW1zPzogb2JqZWN0LFxuICAgICAgICByZXF1ZXN0T3B0aW9ucz86IG9iamVjdFxuICAgICk6IE9ic2VydmFibGU8VCB8IFRbXT4ge1xuICAgICAgICBsZXQgcmVxdWVzdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuYXV0aEhlYWRlcikge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmF1dGhIZWFkZXIpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlcikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMuc2V0KCdNaWNyb1Blcm1pdFRva2VuJywgdGhpcy5wZXJtaXRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb1BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgaWYgKHBhcmFtcyAhPSBudWxsIHx8IHRoaXMudXNlUG9zdCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdQYXJhbXNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHVybCwgJ29QYXJhbXMnLCB0cnVlKTtcbiAgICAgICAgICAgIGxldCBleGlzdGluZ1BhcmFtcztcbiAgICAgICAgICAgIGlmIChleGlzdGluZ1BhcmFtc1N0cikge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyYW1zID0gSlNPTi5wYXJzZShleGlzdGluZ1BhcmFtc1N0cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyYW1zID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvUGFyYW1zID0gT2JqZWN0LmFzc2lnbihleGlzdGluZ1BhcmFtcywgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvcHRpb25zID0gcmVxdWVzdE9wdGlvbnM7XG4gICAgICAgIGlmIChyZXF1ZXN0T3B0aW9ucyAhPSBudWxsIHx8IHRoaXMudXNlUG9zdCkge1xuICAgICAgICAgICAgY29uc3QgcHJldk9wdGlvbnNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHVybCwgJ29wdGlvbnMnLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChwcmV2T3B0aW9uc1N0cikge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBKU09OLnBhcnNlKHByZXZPcHRpb25zU3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IFBhcmFtVXRpbHMuZ2V0UGFyYW1zKHVybCk7XG5cbiAgICAgICAgbGV0IGh0dHBPYnMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy51c2VQb3N0KSB7XG5cbiAgICAgICAgICAgIGxldCBiT1BhcmFtcztcbiAgICAgICAgICAgIGNvbnN0IGVuY0JPUGFyYW1zID0gcXVlcnlQYXJhbXNbJ2JPUGFyYW1zJ107XG4gICAgICAgICAgICBpZiAoZW5jQk9QYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBiT1BhcmFtcyA9IEpTT04ucGFyc2UoUGFyYW1VdGlscy5iYXNlNjRVcmxEZWNvZGUoZW5jQk9QYXJhbXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtc1sncGFyYW1zJ10sXG4gICAgICAgICAgICAgICAgb1BhcmFtczogb1BhcmFtcyxcbiAgICAgICAgICAgICAgICBiUGFyYW1zOiBxdWVyeVBhcmFtc1snYlBhcmFtcyddLFxuICAgICAgICAgICAgICAgIGJPUGFyYW1zOiBiT1BhcmFtcyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snb1BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydiUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2JPUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ29wdGlvbnMnXTtcblxuICAgICAgICAgICAgdXJsID0gUGFyYW1VdGlscy5zZXRQYXJhbXModXJsLCBxdWVyeVBhcmFtcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnVybFJld3JpdGVyKSB7XG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBodHRwT2JzID0gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBib2R5LCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9QYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snb1BhcmFtcyddID0gUGFyYW1VdGlscy5iYXNlNjRVcmxFbmNvZGUoSlNPTi5zdHJpbmdpZnkob1BhcmFtcykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zWydvcHRpb25zJ10gPSBQYXJhbVV0aWxzLmJhc2U2NFVybEVuY29kZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmwgPSBQYXJhbVV0aWxzLnNldFBhcmFtcyh1cmwsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLnVybFJld3JpdGVyKHVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0dHBPYnMgPSB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGh0dHBPYnMgPSBodHRwT2JzLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpIGFzIFQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hBbmRIYW5kbGVFcnJvcigpXG4gICAgICAgIClcbiAgICAgICAgO1xuXG4gICAgICAgIHJldHVybiBodHRwT2JzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2F0Y2hBbmRIYW5kbGVFcnJvcjxUPigpOiAoKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gT2JzZXJ2YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvYWRFcnJvciA9IG5ldyBNaWNyb0NsaWVudExvYWRFcnJvcihlcnIsIChlcnJUb0hhbmRsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJUb0hhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihsb2FkRXJyb3IpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2FkRXJyb3Iuc2hvdWxkUHJldmVudERlZmF1bHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkRXJyb3IuaGFuZGxlRGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUNoaWxkQ2xpZW50Rm9yRW50cnlQb2ludChlbnRyeVBvaW50OiBNaWNyb09iamVjdCk6IE1pY3JvQ2xpZW50IHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQuX19tZXRhICYmIGVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZENsaWVudDogTWljcm9DbGllbnQgPSBPYmplY3QuY3JlYXRlKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGF1dGhIZWFkZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGVybWl0VG9rZW46IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hpbGRDbGllbnQuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZENsaWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHN1cHBsaWVkIHZhbHVlIGNhblxcJ3QgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBjaGlsZCBNaWNyb0NsaWVudCBiZWNhdXNlIGl0IGRvZXNuXFwndCBjb250YWluIG1ldGFkYXRhIHdpdGggYSBwZXJtaXRUb2tlbiAnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRVUkxSZXdyaXRlcihyZXdyaXRlcjogKHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudXJsUmV3cml0ZXIgPSByZXdyaXRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvTWljcm9FcnJvcihodHRwUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogTWljcm9FcnJvciB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGh0dHBSZXNwb25zZS5lcnJvcjtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuX19tZXRhICYmIHJlcy5fX21ldGEuZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBNaWNyb0Vycm9yKCksIHJlcy5fX21ldGEuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHN0YXRpY0NvbnRlbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCdbYS16QS1aMC05XTovLy4qKDpbMC05XSspPygvLiopKi9zdGF0aWMoLy4qKFxcXFw/LiopPygjLiopPyk/Jyk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRCYXNlVVJMKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcblxuICAgICAgICAvLyBMYXN0IFVSTC1TZWdlbWVudCBpcyBzdGF0aWNcbiAgICAgICAgaWYgKE1pY3JvQ2xpZW50LnN0YXRpY0NvbnRlbnRSZWdFeHAudGVzdChocmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIGhyZWYucmVwbGFjZShuZXcgUmVnRXhwKCcvc3RhdGljLy4qJyksICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoJy8jLy4qJyksICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuc3RhcnRzV2l0aCgnZmlsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vbG9jYWxob3N0OjgwODAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICc6ODA4MCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRBdXRob3JpemVVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKSArICcvYXV0aG9yaXplJztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudExvYWRFcnJvciB7XG4gICAgcHJpdmF0ZSBoYW5kbGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkb1ByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVycm9yOiBhbnksIHByaXZhdGUgZGVmYXVsdEhhbmRsZXI6IChlcnI6IGFueSkgPT4gdm9pZCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURlZmF1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRIYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcihoYW5kbGVyOiAoZXJyb3I6IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBoYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hhbmRsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFByZXZlbnREZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb1ByZXZlbnREZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2ZW50RGVmYXVsdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRGVmYXVsdEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRIYW5kbGVyICE9IG51bGw7XG4gICAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable, Component, Pipe, ChangeDetectorRef, Input, EventEmitter, Directive, ViewContainerRef, TemplateRef, ComponentFactoryResolver, Output, HostListener, forwardRef, NgModule } from '@angular/core';
|
|
2
2
|
import { HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http';
|
|
3
|
-
import { of, throwError, timer } from 'rxjs';
|
|
4
|
-
import { shareReplay, map, catchError, finalize, switchMap, delay } from 'rxjs/operators';
|
|
3
|
+
import { of, Subject, throwError, timer } from 'rxjs';
|
|
4
|
+
import { shareReplay, map, take, catchError, finalize, switchMap, delay } from 'rxjs/operators';
|
|
5
5
|
import { AsyncPipe } from '@angular/common';
|
|
6
6
|
import { FormGroup, NG_ASYNC_VALIDATORS } from '@angular/forms';
|
|
7
7
|
|
|
@@ -868,6 +868,8 @@ class MicroClient {
|
|
|
868
868
|
*/
|
|
869
869
|
constructor(httpClient) {
|
|
870
870
|
this.httpClient = httpClient;
|
|
871
|
+
this.entryPointSubject = new Subject();
|
|
872
|
+
this.entryPointObs = this.entryPointSubject.pipe(shareReplay(1), take(1));
|
|
871
873
|
this.usePost = true;
|
|
872
874
|
this.sendAsPermitTokenHeader = true;
|
|
873
875
|
}
|
|
@@ -894,11 +896,23 @@ class MicroClient {
|
|
|
894
896
|
this.authHeader = authHeader;
|
|
895
897
|
}
|
|
896
898
|
/**
|
|
897
|
-
* @template T
|
|
898
899
|
* @return {?}
|
|
899
900
|
*/
|
|
900
901
|
getEntryPoint() {
|
|
901
|
-
return
|
|
902
|
+
return this.entryPoint;
|
|
903
|
+
}
|
|
904
|
+
/**
|
|
905
|
+
* @param {?=} cb
|
|
906
|
+
* @return {?}
|
|
907
|
+
*/
|
|
908
|
+
waitForEntryPoint(cb) {
|
|
909
|
+
/** @type {?} */
|
|
910
|
+
let obs = this.entryPointObs.pipe(take(1));
|
|
911
|
+
if (cb != null) {
|
|
912
|
+
obs.subscribe(cb);
|
|
913
|
+
return null;
|
|
914
|
+
}
|
|
915
|
+
return obs.toPromise();
|
|
902
916
|
}
|
|
903
917
|
/**
|
|
904
918
|
* @param {?} other
|
|
@@ -928,6 +942,7 @@ class MicroClient {
|
|
|
928
942
|
else {
|
|
929
943
|
throw Error('Expected the entryPoint to contain a "permitToken" within the "__meta" field');
|
|
930
944
|
}
|
|
945
|
+
this.entryPointSubject.next(entryPoint);
|
|
931
946
|
}
|
|
932
947
|
}
|
|
933
948
|
/**
|
|
@@ -1237,6 +1252,16 @@ if (false) {
|
|
|
1237
1252
|
* @private
|
|
1238
1253
|
*/
|
|
1239
1254
|
MicroClient.prototype.entryPoint;
|
|
1255
|
+
/**
|
|
1256
|
+
* @type {?}
|
|
1257
|
+
* @private
|
|
1258
|
+
*/
|
|
1259
|
+
MicroClient.prototype.entryPointSubject;
|
|
1260
|
+
/**
|
|
1261
|
+
* @type {?}
|
|
1262
|
+
* @private
|
|
1263
|
+
*/
|
|
1264
|
+
MicroClient.prototype.entryPointObs;
|
|
1240
1265
|
/**
|
|
1241
1266
|
* @type {?}
|
|
1242
1267
|
* @private
|
|
@@ -2270,7 +2295,7 @@ class LinkFieldPagingSupport {
|
|
|
2270
2295
|
reflectChanges() {
|
|
2271
2296
|
/** @type {?} */
|
|
2272
2297
|
const lastRow = this.lastRow();
|
|
2273
|
-
if (lastRow) {
|
|
2298
|
+
if (lastRow && lastRow.__meta) {
|
|
2274
2299
|
this.loadedCompletely = lastRow.__meta.nextPage == null;
|
|
2275
2300
|
}
|
|
2276
2301
|
else {
|