ng2-rest 13.0.19 → 13.0.20
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/browser/esm2020/lib/content-type.mjs +12 -0
- package/browser/esm2020/lib/index.mjs +2 -1
- package/browser/esm2020/lib/models.mjs +1 -1
- package/browser/esm2020/lib/resource.service.mjs +6 -11
- package/browser/esm2020/lib/rest-request.mjs +2 -1
- package/browser/esm2020/lib/rest.class.mjs +11 -8
- package/browser/fesm2015/ng2-rest.mjs +27 -17
- package/browser/fesm2015/ng2-rest.mjs.map +1 -1
- package/browser/fesm2020/ng2-rest.mjs +27 -17
- package/browser/fesm2020/ng2-rest.mjs.map +1 -1
- package/browser/lib/content-type.d.ts +5 -0
- package/browser/lib/index.d.ts +1 -0
- package/browser/lib/resource.service.d.ts +1 -2
- package/browser/lib/rest.class.d.ts +2 -5
- package/client/esm2020/lib/content-type.mjs +12 -0
- package/client/esm2020/lib/index.mjs +2 -1
- package/client/esm2020/lib/models.mjs +1 -1
- package/client/esm2020/lib/resource.service.mjs +6 -11
- package/client/esm2020/lib/rest-request.mjs +2 -1
- package/client/esm2020/lib/rest.class.mjs +11 -8
- package/client/fesm2015/ng2-rest.mjs +27 -17
- package/client/fesm2015/ng2-rest.mjs.map +1 -1
- package/client/fesm2020/ng2-rest.mjs +27 -17
- package/client/fesm2020/ng2-rest.mjs.map +1 -1
- package/client/lib/content-type.d.ts +5 -0
- package/client/lib/index.d.ts +1 -0
- package/client/lib/resource.service.d.ts +1 -2
- package/client/lib/rest.class.d.ts +2 -5
- package/lib/content-type.d.ts +5 -0
- package/lib/content-type.js +15 -0
- package/lib/content-type.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/models.js.map +1 -1
- package/lib/resource.service.d.ts +1 -2
- package/lib/resource.service.js +5 -10
- package/lib/resource.service.js.map +1 -1
- package/lib/rest-request.js +1 -0
- package/lib/rest-request.js.map +1 -1
- package/lib/rest.class.d.ts +2 -5
- package/lib/rest.class.js +11 -8
- package/lib/rest.class.js.map +1 -1
- package/package.json +4 -4
- package/tmp-environment.json +27 -26
package/browser/lib/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ export * from './rest.class';
|
|
|
5
5
|
export * from './rest-headers';
|
|
6
6
|
export * from './helpers';
|
|
7
7
|
export * from './request-cache';
|
|
8
|
+
export * from './content-type';
|
|
8
9
|
export { SimpleResource } from './other/simple-resource';
|
|
9
10
|
export { interpolateParamsToUrl } from './params';
|
|
@@ -7,7 +7,6 @@ import { Mapping } from './mapping';
|
|
|
7
7
|
import { Models } from './models';
|
|
8
8
|
import { Circ } from 'json10/browser';
|
|
9
9
|
export declare class Resource<E, T, TA> {
|
|
10
|
-
static DEFAULT_HEADERS: RestHeaders;
|
|
11
10
|
protected static _listenErrors: Subject<Models.BackendError>;
|
|
12
11
|
protected static _listenSuccess: Subject<Models.HttpResponse<any>>;
|
|
13
12
|
static get listenErrors(): Observable<Models.BackendError>;
|
|
@@ -20,7 +19,7 @@ export declare class Resource<E, T, TA> {
|
|
|
20
19
|
private static endpoints;
|
|
21
20
|
static getModel(endpoint: string, model: string): Rest<any>;
|
|
22
21
|
private static request;
|
|
23
|
-
static create<A, TA = A[]>(e: string, model?: string, entityMapping?: Mapping.Mapping, circular?: Circ[]): Models.ResourceModel<A, TA>;
|
|
22
|
+
static create<A, TA = A[]>(e: string, model?: string, entityMapping?: Mapping.Mapping, circular?: Circ[], customContentType?: RestHeaders): Models.ResourceModel<A, TA>;
|
|
24
23
|
static reset(): void;
|
|
25
24
|
private constructor();
|
|
26
25
|
static Cookies: Cookie;
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { Models } from './models';
|
|
2
2
|
import { RestRequest } from './rest-request';
|
|
3
3
|
import { RestHeaders } from './rest-headers';
|
|
4
|
-
export declare const DEFAULT_HEADERS: {
|
|
5
|
-
'Content-Type': string;
|
|
6
|
-
Accept: string;
|
|
7
|
-
};
|
|
8
4
|
export declare class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T, TA> {
|
|
9
5
|
private request;
|
|
10
6
|
private meta;
|
|
7
|
+
private customContentType;
|
|
11
8
|
private mockHttp;
|
|
12
9
|
mock(mock: Models.MockHttp): Models.FnMethodsHttp<T, TA>;
|
|
13
10
|
private __meta_endpoint;
|
|
@@ -18,7 +15,7 @@ export declare class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T
|
|
|
18
15
|
private creatUrl;
|
|
19
16
|
private _headers;
|
|
20
17
|
get headers(): RestHeaders;
|
|
21
|
-
constructor(endpoint: string, request: RestRequest, meta: Models.MetaRequest);
|
|
18
|
+
constructor(endpoint: string, request: RestRequest, meta: Models.MetaRequest, customContentType: RestHeaders);
|
|
22
19
|
private req;
|
|
23
20
|
replay(method: Models.HttpMethod): void;
|
|
24
21
|
array: {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RestHeaders } from "./rest-headers";
|
|
2
|
+
export const CONTENT_TYPE = {
|
|
3
|
+
APPLICATION_JSON: RestHeaders.from({
|
|
4
|
+
'Content-Type': 'application/json',
|
|
5
|
+
'Accept': 'application/json'
|
|
6
|
+
}),
|
|
7
|
+
APPLICATINO_VND_API_JSON: RestHeaders.from({
|
|
8
|
+
'Content-Type': 'application/vnd.api+json',
|
|
9
|
+
'Accept': 'application/vnd.api+json'
|
|
10
|
+
}),
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL2NvbnRlbnQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDakMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxRQUFRLEVBQUUsa0JBQWtCO0tBQzdCLENBQUM7SUFDRix3QkFBd0IsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3pDLGNBQWMsRUFBRSwwQkFBMEI7UUFDMUMsUUFBUSxFQUFFLDBCQUEwQjtLQUNyQyxDQUFDO0NBQ0gsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RIZWFkZXJzIH0gZnJvbSBcIi4vcmVzdC1oZWFkZXJzXCI7XG5cblxuZXhwb3J0IGNvbnN0IENPTlRFTlRfVFlQRSA9IHtcbiAgQVBQTElDQVRJT05fSlNPTjogUmVzdEhlYWRlcnMuZnJvbSh7XG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gIH0pLFxuICBBUFBMSUNBVElOT19WTkRfQVBJX0pTT046IFJlc3RIZWFkZXJzLmZyb20oe1xuICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmFwaStqc29uJyxcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbidcbiAgfSksXG59XG4iXX0=
|
|
@@ -5,6 +5,7 @@ export * from './rest.class';
|
|
|
5
5
|
export * from './rest-headers';
|
|
6
6
|
export * from './helpers';
|
|
7
7
|
export * from './request-cache';
|
|
8
|
+
export * from './content-type';
|
|
8
9
|
export { SimpleResource } from './other/simple-resource';
|
|
9
10
|
export { interpolateParamsToUrl } from './params';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL25nMi1yZXN0L3Byb2plY3RzL25nMi1yZXN0L3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwcGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXN0LWhlYWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtdHlwZSc7XG5leHBvcnQgeyBTaW1wbGVSZXNvdXJjZSB9IGZyb20gJy4vb3RoZXIvc2ltcGxlLXJlc291cmNlJztcbmV4cG9ydCB7IGludGVycG9sYXRlUGFyYW1zVG9VcmwgfSBmcm9tICcuL3BhcmFtcyc7XG4iXX0=
|
|
@@ -139,4 +139,4 @@ export var Models;
|
|
|
139
139
|
}
|
|
140
140
|
Models.HttpResponseError = HttpResponseError;
|
|
141
141
|
})(Models || (Models = {}));
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyw0REFBNEQ7QUFFNUQsTUFBTSxLQUFXLE1BQU0sQ0FvUXRCO0FBcFFELFdBQWlCLE1BQU07SUFLUCxtQkFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDMUMsa0JBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3hDLGtCQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQTtJQTRFcEQsQ0FBQztJQUtELENBQUM7SUFXRCxFQUFFLENBQUM7SUFFSixNQUFzQixRQUFRO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxHQUFHLEtBQUs7WUFDeEMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSTtvQkFDRixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEI7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRzthQUNoQjtpQkFB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QUFTLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekMsQ0FBQztLQUNGO0lBZlksd0JBQWlCLG9CQWU3QixDQUFBO0FBY0gsQ0FBQyxFQXBRZ0IsTUFBTSxLQUFOLE1BQU0sUUFvUXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnLi9jb29raWUnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgTW9kZWxzIGFzIEhlbHBlcnNNb2RlbHMgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3NlcidcbmltcG9ydCB7IEpTT04xMCwgQ2lyYyB9IGZyb20gJ2pzb24xMC9icm93c2VyJztcbmltcG9ydCB7IFJlcXVlc3RDYWNoZSB9IGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb25maWdNb2RlbHMgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuLy8gY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzdCBuYW1lc3BhY2UnLCBMZXZlbC5fX05PVEhJTkcpXG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuICBleHBvcnQgaW1wb3J0IEh0dHBNZXRob2QgPSBDb25maWdNb2RlbHMuSHR0cE1ldGhvZDtcbiAgZXhwb3J0IGltcG9ydCBQYXJhbVR5cGUgPSBDb25maWdNb2RlbHMuUGFyYW1UeXBlO1xuXG4gIGV4cG9ydCBpbXBvcnQgTWV0aG9kQ29uZmlnID0gSGVscGVyc01vZGVscy5NZXRob2RDb25maWc7XG4gIGV4cG9ydCBpbXBvcnQgQ2xhc3NDb25maWcgPSBIZWxwZXJzTW9kZWxzLkNsYXNzQ29uZmlnO1xuICBleHBvcnQgaW1wb3J0IFBhcmFtQ29uZmlnID0gSGVscGVyc01vZGVscy5QYXJhbUNvbmZpZ1xuXG5cbiAgZXhwb3J0IGludGVyZmFjZSBIYW5kbGVSZXN1bHRPcHRpb25zIHtcbiAgICByZXM6IE1vZGVscy5Nb2NrUmVzcG9uc2U7XG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZDtcbiAgICBqb2JpZD86IG51bWJlcjtcbiAgICBpc0FycmF5PzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMge1xuICAgIHVybDogc3RyaW5nLFxuICAgIG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsXG4gICAgLy8gaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgIGJvZHk6IGFueSxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgQmFja2VuZEVycm9yID0ge1xuICAgIG1zZz86IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZ1tdO1xuICAgIGRhdGE6IGFueTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIE1ldGFSZXF1ZXN0ID0ge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIGVudGl0eTogTWFwcGluZy5NYXBwaW5nO1xuICAgIGNpcmN1bGFyOiBDaXJjW107XG4gIH1cbiAgZXhwb3J0IHR5cGUgSHR0cENvZGUgPSAyMDAgfCA0MDAgfCA0MDEgfCA0MDQgfCA1MDA7XG5cbiAgZXhwb3J0IHR5cGUgUHJvbWlzZU9ic2VydmFibGVNaXg8VD4gPSBQcm9taXNlPFQ+ICYge1xuICAgIGNhY2hlPzogUmVxdWVzdENhY2hlLFxuICAgIG9ic2VydmFibGU6IE9ic2VydmFibGU8VD47XG4gIH1cblxuICBleHBvcnQgdHlwZSBNZXRob2RXaXRob3V0Qm9keTxFLCBULCBSID0gUHJvbWlzZU9ic2VydmFibGVNaXg8RT4+ID0gKHBhcmFtcz86IFVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pID0+IFJcbiAgZXhwb3J0IHR5cGUgTWV0aG9kV2l0aEJvZHk8RSwgVCwgUiA9IFByb21pc2VPYnNlcnZhYmxlTWl4PEU+PiA9IChpdGVtPzogVCwgcGFyYW1zPzogVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbikgPT4gUlxuICBleHBvcnQgdHlwZSBSZXBsYXlEYXRhID0ge1xuICAgIHN1YmplY3Q6IFN1YmplY3Q8YW55PixcbiAgICBkYXRhOiB7IHVybDogc3RyaW5nLCBib2R5OiBzdHJpbmcsIGhlYWRlcnM6IFJlc3RIZWFkZXJzLCBpc0FycmF5OiBib29sZWFuOyB9LFxuICAgIC8qKlxuICAgICAqIGpvYmlkXG4gICAgICovXG4gICAgaWQ6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUmVxUGFyYW1zID0geyB1cmw6IHN0cmluZywgbWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCwgaGVhZGVycz86IFJlc3RIZWFkZXJzLCBib2R5PzogYW55LCBqb2JpZDogbnVtYmVyLCBpc0FycmF5OiBib29sZWFuIH07XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgbW9kZWw6IChwYXRoTW9kZWxzPzogT2JqZWN0LCByZXNwb25zZU9iamVjdFR5cGU/OiBGdW5jdGlvbikgPT4gUmVzdDxBLCBUQT4sXG4gICAgcmVwbGF5OiAobWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCkgPT4gdm9pZDtcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTmcyUmVzdE1ldGhvZHM8RSwgVD4ge1xuICAgIGdldDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAgcG9zdDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgcHV0OiBNZXRob2RXaXRoQm9keTxFLCBUPjtcbiAgICBwYXRjaDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgaGVhZDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAgZGVsZXRlOiBNZXRob2RXaXRob3V0Qm9keTxFLCBUPjtcbiAgICBqc29ucDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gIH1cblxuICBleHBvcnQgdHlwZSBNb2NrQ29udHJvbGxlciA9IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBtZXRob2Q6IENvbmZpZ01vZGVscy5IdHRwTWV0aG9kLFxuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycyxcbiAgICBib2R5PzogYW55XG4gICkgPT4gTW9ja1Jlc3BvbnNlO1xuXG4gIGV4cG9ydCB0eXBlIE1vY2tIdHRwID0gKE1vY2tSZXNwb25zZSB8IE1vY2tDb250cm9sbGVyKTtcblxuICBleHBvcnQgaW50ZXJmYWNlIEZuTWV0aG9kc0h0dHA8VCwgVEE+IGV4dGVuZHMgTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFQ+LCBUPiB7XG4gICAgYXJyYXk6IE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUQT4sIFRBPjtcbiAgfTtcblxuICBleHBvcnQgaW50ZXJmYWNlIEZuTWV0aG9kc0h0dHBXaXRoTW9jazxULCBUQT4gZXh0ZW5kcyBOZzJSZXN0TWV0aG9kczxIdHRwUmVzcG9uc2U8VD4sIFQ+IHtcbiAgICBhcnJheTogTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFRBPiwgVEE+O1xuICAgIG1vY2sobW9jazogTW9ja0h0dHAsIGNvZGU6IEh0dHBDb2RlKTogRm5NZXRob2RzSHR0cDxULCBUQT47XG4gIH07XG5cblxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTmVzdGVkUGFyYW1zIHtcbiAgICBbcGFyYW1zOiBzdHJpbmddOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVybFBhcmFtcyB7XG4gICAgW3VybE1vZGVsTmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlZ0V4cCB8IE9iamVjdDtcbiAgICByZWdleD86IFJlZ0V4cDtcbiAgfVtdO1xuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQm9keSB7XG4gICAgcHJvdGVjdGVkIHRvSlNPTihkYXRhLCBpc0pTT05BcnJheSA9IGZhbHNlKSB7XG4gICAgICBsZXQgciA9IGlzSlNPTkFycmF5ID8gW10gOiB7fTtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByIGFzIGFueTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cEJvZHk8VD4gZXh0ZW5kcyBCYXNlQm9keSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvZHk6IHN0cmluZywgcHJpdmF0ZSBpc0FycmF5ID0gZmFsc2UsXG4gICAgICBwcml2YXRlIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLFxuICAgICAgcHJpdmF0ZSBjaXJjdWxhcjogQ2lyY1tdXG4gICAgKSB7XG4gICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhblZhbHVlKCkge1xuICAgICAgcmV0dXJuIFsnb2snLCAndHJ1ZSddLmluY2x1ZGVzKHRoaXMuYm9keS50cmltKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmF3SnNvbigpOiBQYXJ0aWFsPFQ+IHtcbiAgICAgIGxldCByZXMgPSB0aGlzLnRvSlNPTih0aGlzLmJvZHksIHRoaXMuaXNBcnJheSk7XG4gICAgICBpZiAodGhpcy5jaXJjdWxhciAmJiBBcnJheS5pc0FycmF5KHRoaXMuY2lyY3VsYXIpKSB7XG4gICAgICAgIHJlcyA9IEpTT04xMC5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpLCB0aGlzLmNpcmN1bGFyKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGpzb24oKTogVCB7XG5cbiAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0eXBlb2YgdGhpcy5lbnRpdHkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnRvSlNPTih0aGlzLmJvZHksIHRoaXMuaXNBcnJheSk7XG4gICAgICAgIHJldHVybiBNYXBwaW5nLmVuY29kZShqc29uLCB0aGlzLmVudGl0eSwgdGhpcy5jaXJjdWxhcikgYXMgYW55O1xuICAgICAgfVxuICAgICAgbGV0IHJlcyA9IHRoaXMudG9KU09OKHRoaXMuYm9keSwgdGhpcy5pc0FycmF5KTtcbiAgICAgIGlmICh0aGlzLmNpcmN1bGFyICYmIEFycmF5LmlzQXJyYXkodGhpcy5jaXJjdWxhcikpIHtcbiAgICAgICAgcmVzID0gSlNPTjEwLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcyksIHRoaXMuY2lyY3VsYXIpXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHRleHQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ib2R5LnJlcGxhY2UoL15cXFwiLywgJycpLnJlcGxhY2UoL1xcXCIkLywgJycpXG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEVycm9yQm9keSBleHRlbmRzIEJhc2VCb2R5IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGEpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBqc29uKCk6IE9iamVjdCB7XG4gICAgICByZXR1cm4gdGhpcy50b0pTT04odGhpcy5kYXRhKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB0ZXh0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YVxuICAgIH1cbiAgfVxuXG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXNwb25zZTxUPiB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBjb29raWVzID0gQ29va2llLkluc3RhbmNlO1xuXG4gICAgcHVibGljIGdldCBjb29raWVzKCkge1xuICAgICAgcmV0dXJuIEJhc2VSZXNwb25zZS5jb29raWVzO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyByZXNwb25zZVRleHQ/OiBzdHJpbmcsXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBIdHRwQ29kZSB8IG51bWJlcixcbiAgICAgIHB1YmxpYyBpc0FycmF5ID0gZmFsc2VcbiAgICApIHtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cFJlc3BvbnNlPFQ+IGV4dGVuZHMgQmFzZVJlc3BvbnNlPFQ+IHtcbiAgICBwdWJsaWMgYm9keT86IEh0dHBCb2R5PFQ+O1xuICAgIC8vIHB1YmxpYyByZWFkb25seSBUT1RBTF9DT1VOVF9IRUFERVIgPSAnWC1Ub3RhbC1Db3VudCcudG9Mb3dlckNhc2UoKTtcbiAgICAvLyBwdWJsaWMgZ2V0IHRvdGFsRWxlbWVudHMoKTogbnVtYmVyIHtcbiAgICAvLyAgICAgcmV0dXJuIE51bWJlcih0aGlzLmhlYWRlcnMuZ2V0KHRoaXMuVE9UQUxfQ09VTlRfSEVBREVSKSk7XG4gICAgLy8gfVxuICAgIHJxOiBSZXF1ZXN0Q2FjaGU7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgc291cmNlUmVxdWVzdDogTW9kZWxzLkhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zLFxuICAgICAgcHVibGljIHJlc3BvbnNlVGV4dD86IHN0cmluZyxcbiAgICAgIHB1YmxpYyBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBwdWJsaWMgc3RhdHVzQ29kZT86IEh0dHBDb2RlIHwgbnVtYmVyLFxuICAgICAgcHVibGljIGVudGl0eT86IE1hcHBpbmcuTWFwcGluZyxcbiAgICAgIHB1YmxpYyBjaXJjdWxhcj86IENpcmNbXSxcbiAgICAgIHB1YmxpYyBqb2JpZD86IG51bWJlcixcbiAgICAgIHB1YmxpYyBpc0FycmF5ID0gZmFsc2UsXG4gICAgKSB7XG4gICAgICBzdXBlcihyZXNwb25zZVRleHQsIGhlYWRlcnMsIHN0YXR1c0NvZGUsIGlzQXJyYXkpO1xuICAgICAgdGhpcy5pbml0KClcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdCgpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRpdHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIGNvbnN0IGhlYWRlcldpdGhNYXBwaW5nID0gaGVhZGVycy5nZXQoZW50aXR5KTtcbiAgICAgICAgbGV0IGVudGl0eUpTT04gPSB0aGlzLmhlYWRlcnMuZ2V0QWxsKHRoaXMuZW50aXR5KVxuICAgICAgICBpZiAoISFlbnRpdHlKU09OKSB7XG4gICAgICAgICAgdGhpcy5lbnRpdHkgPSBKU09OLnBhcnNlKGVudGl0eUpTT04uam9pbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNpcmN1bGFyID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBjb25zdCBoZWFkZXJXaXRoTWFwcGluZyA9IGhlYWRlcnMuZ2V0KGNpcmN1bGFyKTtcbiAgICAgICAgbGV0IGNpcmN1cmFsSlNPTiA9IHRoaXMuaGVhZGVycy5nZXRBbGwodGhpcy5jaXJjdWxhcik7XG4gICAgICAgIGlmICghIWNpcmN1cmFsSlNPTikge1xuICAgICAgICAgIHRoaXMuY2lyY3VsYXIgPSBKU09OLnBhcnNlKGNpcmN1cmFsSlNPTi5qb2luKCkpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICAgIHRoaXMuYm9keSA9IG5ldyBIdHRwQm9keSh0aGlzLnJlc3BvbnNlVGV4dCwgdGhpcy5pc0FycmF5LCB0aGlzLmVudGl0eSwgdGhpcy5jaXJjdWxhcikgYXMgYW55O1xuICAgIH1cblxuICAgIGdldCBjYWNoZSgpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucnEpKSB7XG4gICAgICAgIHRoaXMucnEgPSBuZXcgUmVxdWVzdENhY2hlKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSZXF1ZXN0Q2FjaGUodGhpcyk7XG4gICAgfVxuXG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cFJlc3BvbnNlRXJyb3IgZXh0ZW5kcyBCYXNlUmVzcG9uc2U8YW55PiB7XG4gICAgcHJpdmF0ZSBib2R5OiBFcnJvckJvZHk7XG4gICAgLy8gcHVibGljIHRyeVJlY2NvbmVjdCgpIHtcblxuICAgIC8vIH1cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICByZXNwb25zZVRleHQ/OiBzdHJpbmcsXG4gICAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBzdGF0dXNDb2RlPzogSHR0cENvZGUgfCBudW1iZXIsXG4gICAgICBwdWJsaWMgam9iaWQ/OiBudW1iZXIsXG4gICAgKSB7XG4gICAgICBzdXBlcihyZXNwb25zZVRleHQsIGhlYWRlcnMsIHN0YXR1c0NvZGUpO1xuICAgICAgdGhpcy5ib2R5ID0gbmV3IEVycm9yQm9keShyZXNwb25zZVRleHQpXG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNb2NrUmVzcG9uc2Uge1xuICAgIGRhdGE/OiBhbnk7XG4gICAgY29kZT86IEh0dHBDb2RlO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycztcbiAgICBqb2JpZD86IG51bWJlcjtcbiAgICBpc0FycmF5OiBib29sZWFuO1xuICB9XG5cblxuXG5cbn1cbiJdfQ==
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyw0REFBNEQ7QUFFNUQsTUFBTSxLQUFXLE1BQU0sQ0FpUXRCO0FBalFELFdBQWlCLE1BQU07SUFLUCxtQkFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDMUMsa0JBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3hDLGtCQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQTtJQTRFcEQsQ0FBQztJQUtELENBQUM7SUFXRCxFQUFFLENBQUM7SUFFSixNQUFzQixRQUFRO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxHQUFHLEtBQUs7WUFDeEMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSTtvQkFDRixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEI7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRzthQUNoQjtpQkFB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QUFTLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekMsQ0FBQztLQUNGO0lBZlksd0JBQWlCLG9CQWU3QixDQUFBO0FBV0gsQ0FBQyxFQWpRZ0IsTUFBTSxLQUFOLE1BQU0sUUFpUXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnLi9jb29raWUnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgTW9kZWxzIGFzIEhlbHBlcnNNb2RlbHMgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3NlcidcbmltcG9ydCB7IEpTT04xMCwgQ2lyYyB9IGZyb20gJ2pzb24xMC9icm93c2VyJztcbmltcG9ydCB7IFJlcXVlc3RDYWNoZSB9IGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb25maWdNb2RlbHMgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuLy8gY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzdCBuYW1lc3BhY2UnLCBMZXZlbC5fX05PVEhJTkcpXG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuICBleHBvcnQgaW1wb3J0IEh0dHBNZXRob2QgPSBDb25maWdNb2RlbHMuSHR0cE1ldGhvZDtcbiAgZXhwb3J0IGltcG9ydCBQYXJhbVR5cGUgPSBDb25maWdNb2RlbHMuUGFyYW1UeXBlO1xuXG4gIGV4cG9ydCBpbXBvcnQgTWV0aG9kQ29uZmlnID0gSGVscGVyc01vZGVscy5NZXRob2RDb25maWc7XG4gIGV4cG9ydCBpbXBvcnQgQ2xhc3NDb25maWcgPSBIZWxwZXJzTW9kZWxzLkNsYXNzQ29uZmlnO1xuICBleHBvcnQgaW1wb3J0IFBhcmFtQ29uZmlnID0gSGVscGVyc01vZGVscy5QYXJhbUNvbmZpZ1xuXG5cbiAgZXhwb3J0IGludGVyZmFjZSBIYW5kbGVSZXN1bHRPcHRpb25zIHtcbiAgICByZXM6IE1vZGVscy5Nb2NrUmVzcG9uc2U7XG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZDtcbiAgICBqb2JpZD86IG51bWJlcjtcbiAgICBpc0FycmF5PzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMge1xuICAgIHVybDogc3RyaW5nLFxuICAgIG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsXG4gICAgLy8gaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgIGJvZHk6IGFueSxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgQmFja2VuZEVycm9yID0ge1xuICAgIG1zZz86IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZ1tdO1xuICAgIGRhdGE6IGFueTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIE1ldGFSZXF1ZXN0ID0ge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIGVudGl0eTogTWFwcGluZy5NYXBwaW5nO1xuICAgIGNpcmN1bGFyOiBDaXJjW107XG4gIH1cbiAgZXhwb3J0IHR5cGUgSHR0cENvZGUgPSAyMDAgfCA0MDAgfCA0MDEgfCA0MDQgfCA1MDA7XG5cbiAgZXhwb3J0IHR5cGUgUHJvbWlzZU9ic2VydmFibGVNaXg8VD4gPSBQcm9taXNlPFQ+ICYge1xuICAgIGNhY2hlPzogUmVxdWVzdENhY2hlLFxuICAgIG9ic2VydmFibGU6IE9ic2VydmFibGU8VD47XG4gIH1cblxuICBleHBvcnQgdHlwZSBNZXRob2RXaXRob3V0Qm9keTxFLCBULCBSID0gUHJvbWlzZU9ic2VydmFibGVNaXg8RT4+ID0gKHBhcmFtcz86IFVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pID0+IFJcbiAgZXhwb3J0IHR5cGUgTWV0aG9kV2l0aEJvZHk8RSwgVCwgUiA9IFByb21pc2VPYnNlcnZhYmxlTWl4PEU+PiA9IChpdGVtPzogVCwgcGFyYW1zPzogVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbikgPT4gUlxuICBleHBvcnQgdHlwZSBSZXBsYXlEYXRhID0ge1xuICAgIHN1YmplY3Q6IFN1YmplY3Q8YW55PixcbiAgICBkYXRhOiB7IHVybDogc3RyaW5nLCBib2R5OiBzdHJpbmcsIGhlYWRlcnM6IFJlc3RIZWFkZXJzLCBpc0FycmF5OiBib29sZWFuOyB9LFxuICAgIC8qKlxuICAgICAqIGpvYmlkXG4gICAgICovXG4gICAgaWQ6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUmVxUGFyYW1zID0geyB1cmw6IHN0cmluZywgbWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCwgaGVhZGVycz86IFJlc3RIZWFkZXJzLCBib2R5PzogYW55LCBqb2JpZDogbnVtYmVyLCBpc0FycmF5OiBib29sZWFuIH07XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgbW9kZWw6IChwYXRoTW9kZWxzPzogT2JqZWN0LCByZXNwb25zZU9iamVjdFR5cGU/OiBGdW5jdGlvbikgPT4gUmVzdDxBLCBUQT4sXG4gICAgcmVwbGF5OiAobWV0aG9kOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZCkgPT4gdm9pZDtcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTmcyUmVzdE1ldGhvZHM8RSwgVD4ge1xuICAgIGdldDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAgcG9zdDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgcHV0OiBNZXRob2RXaXRoQm9keTxFLCBUPjtcbiAgICBwYXRjaDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgaGVhZDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAgZGVsZXRlOiBNZXRob2RXaXRob3V0Qm9keTxFLCBUPjtcbiAgICBqc29ucDogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gIH1cblxuICBleHBvcnQgdHlwZSBNb2NrQ29udHJvbGxlciA9IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBtZXRob2Q6IENvbmZpZ01vZGVscy5IdHRwTWV0aG9kLFxuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycyxcbiAgICBib2R5PzogYW55XG4gICkgPT4gTW9ja1Jlc3BvbnNlO1xuXG4gIGV4cG9ydCB0eXBlIE1vY2tIdHRwID0gKE1vY2tSZXNwb25zZSB8IE1vY2tDb250cm9sbGVyKTtcblxuICBleHBvcnQgaW50ZXJmYWNlIEZuTWV0aG9kc0h0dHA8VCwgVEE+IGV4dGVuZHMgTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFQ+LCBUPiB7XG4gICAgYXJyYXk6IE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUQT4sIFRBPjtcbiAgfTtcblxuICBleHBvcnQgaW50ZXJmYWNlIEZuTWV0aG9kc0h0dHBXaXRoTW9jazxULCBUQT4gZXh0ZW5kcyBOZzJSZXN0TWV0aG9kczxIdHRwUmVzcG9uc2U8VD4sIFQ+IHtcbiAgICBhcnJheTogTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFRBPiwgVEE+O1xuICAgIG1vY2sobW9jazogTW9ja0h0dHAsIGNvZGU6IEh0dHBDb2RlKTogRm5NZXRob2RzSHR0cDxULCBUQT47XG4gIH07XG5cblxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTmVzdGVkUGFyYW1zIHtcbiAgICBbcGFyYW1zOiBzdHJpbmddOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVybFBhcmFtcyB7XG4gICAgW3VybE1vZGVsTmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlZ0V4cCB8IE9iamVjdDtcbiAgICByZWdleD86IFJlZ0V4cDtcbiAgfVtdO1xuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQm9keSB7XG4gICAgcHJvdGVjdGVkIHRvSlNPTihkYXRhLCBpc0pTT05BcnJheSA9IGZhbHNlKSB7XG4gICAgICBsZXQgciA9IGlzSlNPTkFycmF5ID8gW10gOiB7fTtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByIGFzIGFueTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cEJvZHk8VD4gZXh0ZW5kcyBCYXNlQm9keSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvZHk6IHN0cmluZywgcHJpdmF0ZSBpc0FycmF5ID0gZmFsc2UsXG4gICAgICBwcml2YXRlIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLFxuICAgICAgcHJpdmF0ZSBjaXJjdWxhcjogQ2lyY1tdXG4gICAgKSB7XG4gICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhblZhbHVlKCkge1xuICAgICAgcmV0dXJuIFsnb2snLCAndHJ1ZSddLmluY2x1ZGVzKHRoaXMuYm9keS50cmltKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmF3SnNvbigpOiBQYXJ0aWFsPFQ+IHtcbiAgICAgIGxldCByZXMgPSB0aGlzLnRvSlNPTih0aGlzLmJvZHksIHRoaXMuaXNBcnJheSk7XG4gICAgICBpZiAodGhpcy5jaXJjdWxhciAmJiBBcnJheS5pc0FycmF5KHRoaXMuY2lyY3VsYXIpKSB7XG4gICAgICAgIHJlcyA9IEpTT04xMC5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpLCB0aGlzLmNpcmN1bGFyKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGpzb24oKTogVCB7XG5cbiAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0eXBlb2YgdGhpcy5lbnRpdHkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnRvSlNPTih0aGlzLmJvZHksIHRoaXMuaXNBcnJheSk7XG4gICAgICAgIHJldHVybiBNYXBwaW5nLmVuY29kZShqc29uLCB0aGlzLmVudGl0eSwgdGhpcy5jaXJjdWxhcikgYXMgYW55O1xuICAgICAgfVxuICAgICAgbGV0IHJlcyA9IHRoaXMudG9KU09OKHRoaXMuYm9keSwgdGhpcy5pc0FycmF5KTtcbiAgICAgIGlmICh0aGlzLmNpcmN1bGFyICYmIEFycmF5LmlzQXJyYXkodGhpcy5jaXJjdWxhcikpIHtcbiAgICAgICAgcmVzID0gSlNPTjEwLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcyksIHRoaXMuY2lyY3VsYXIpXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHRleHQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ib2R5LnJlcGxhY2UoL15cXFwiLywgJycpLnJlcGxhY2UoL1xcXCIkLywgJycpXG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEVycm9yQm9keSBleHRlbmRzIEJhc2VCb2R5IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGEpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBqc29uKCk6IE9iamVjdCB7XG4gICAgICByZXR1cm4gdGhpcy50b0pTT04odGhpcy5kYXRhKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB0ZXh0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YVxuICAgIH1cbiAgfVxuXG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXNwb25zZTxUPiB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBjb29raWVzID0gQ29va2llLkluc3RhbmNlO1xuXG4gICAgcHVibGljIGdldCBjb29raWVzKCkge1xuICAgICAgcmV0dXJuIEJhc2VSZXNwb25zZS5jb29raWVzO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyByZXNwb25zZVRleHQ/OiBzdHJpbmcsXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBIdHRwQ29kZSB8IG51bWJlcixcbiAgICAgIHB1YmxpYyBpc0FycmF5ID0gZmFsc2VcbiAgICApIHtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cFJlc3BvbnNlPFQ+IGV4dGVuZHMgQmFzZVJlc3BvbnNlPFQ+IHtcbiAgICBwdWJsaWMgYm9keT86IEh0dHBCb2R5PFQ+O1xuICAgIC8vIHB1YmxpYyByZWFkb25seSBUT1RBTF9DT1VOVF9IRUFERVIgPSAnWC1Ub3RhbC1Db3VudCcudG9Mb3dlckNhc2UoKTtcbiAgICAvLyBwdWJsaWMgZ2V0IHRvdGFsRWxlbWVudHMoKTogbnVtYmVyIHtcbiAgICAvLyAgICAgcmV0dXJuIE51bWJlcih0aGlzLmhlYWRlcnMuZ2V0KHRoaXMuVE9UQUxfQ09VTlRfSEVBREVSKSk7XG4gICAgLy8gfVxuICAgIHJxOiBSZXF1ZXN0Q2FjaGU7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgc291cmNlUmVxdWVzdDogTW9kZWxzLkhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zLFxuICAgICAgcHVibGljIHJlc3BvbnNlVGV4dD86IHN0cmluZyxcbiAgICAgIHB1YmxpYyBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBwdWJsaWMgc3RhdHVzQ29kZT86IEh0dHBDb2RlIHwgbnVtYmVyLFxuICAgICAgcHVibGljIGVudGl0eT86IE1hcHBpbmcuTWFwcGluZyxcbiAgICAgIHB1YmxpYyBjaXJjdWxhcj86IENpcmNbXSxcbiAgICAgIHB1YmxpYyBqb2JpZD86IG51bWJlcixcbiAgICAgIHB1YmxpYyBpc0FycmF5ID0gZmFsc2UsXG4gICAgKSB7XG4gICAgICBzdXBlcihyZXNwb25zZVRleHQsIGhlYWRlcnMsIHN0YXR1c0NvZGUsIGlzQXJyYXkpO1xuICAgICAgdGhpcy5pbml0KClcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdCgpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRpdHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIGNvbnN0IGhlYWRlcldpdGhNYXBwaW5nID0gaGVhZGVycy5nZXQoZW50aXR5KTtcbiAgICAgICAgbGV0IGVudGl0eUpTT04gPSB0aGlzLmhlYWRlcnMuZ2V0QWxsKHRoaXMuZW50aXR5KVxuICAgICAgICBpZiAoISFlbnRpdHlKU09OKSB7XG4gICAgICAgICAgdGhpcy5lbnRpdHkgPSBKU09OLnBhcnNlKGVudGl0eUpTT04uam9pbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNpcmN1bGFyID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBjb25zdCBoZWFkZXJXaXRoTWFwcGluZyA9IGhlYWRlcnMuZ2V0KGNpcmN1bGFyKTtcbiAgICAgICAgbGV0IGNpcmN1cmFsSlNPTiA9IHRoaXMuaGVhZGVycy5nZXRBbGwodGhpcy5jaXJjdWxhcik7XG4gICAgICAgIGlmICghIWNpcmN1cmFsSlNPTikge1xuICAgICAgICAgIHRoaXMuY2lyY3VsYXIgPSBKU09OLnBhcnNlKGNpcmN1cmFsSlNPTi5qb2luKCkpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICAgIHRoaXMuYm9keSA9IG5ldyBIdHRwQm9keSh0aGlzLnJlc3BvbnNlVGV4dCwgdGhpcy5pc0FycmF5LCB0aGlzLmVudGl0eSwgdGhpcy5jaXJjdWxhcikgYXMgYW55O1xuICAgIH1cblxuICAgIGdldCBjYWNoZSgpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucnEpKSB7XG4gICAgICAgIHRoaXMucnEgPSBuZXcgUmVxdWVzdENhY2hlKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSZXF1ZXN0Q2FjaGUodGhpcyk7XG4gICAgfVxuXG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cFJlc3BvbnNlRXJyb3IgZXh0ZW5kcyBCYXNlUmVzcG9uc2U8YW55PiB7XG4gICAgcHJpdmF0ZSBib2R5OiBFcnJvckJvZHk7XG4gICAgLy8gcHVibGljIHRyeVJlY2NvbmVjdCgpIHtcblxuICAgIC8vIH1cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICByZXNwb25zZVRleHQ/OiBzdHJpbmcsXG4gICAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBzdGF0dXNDb2RlPzogSHR0cENvZGUgfCBudW1iZXIsXG4gICAgICBwdWJsaWMgam9iaWQ/OiBudW1iZXIsXG4gICAgKSB7XG4gICAgICBzdXBlcihyZXNwb25zZVRleHQsIGhlYWRlcnMsIHN0YXR1c0NvZGUpO1xuICAgICAgdGhpcy5ib2R5ID0gbmV3IEVycm9yQm9keShyZXNwb25zZVRleHQpXG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNb2NrUmVzcG9uc2Uge1xuICAgIGRhdGE/OiBhbnk7XG4gICAgY29kZT86IEh0dHBDb2RlO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycztcbiAgICBqb2JpZD86IG51bWJlcjtcbiAgICBpc0FycmF5OiBib29sZWFuO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -3,7 +3,6 @@ import { Log, Level } from 'ng2-logger/browser';
|
|
|
3
3
|
const log = Log.create('resouce-service', Level.__NOTHING);
|
|
4
4
|
import { Rest } from './rest.class';
|
|
5
5
|
import { RestRequest } from './rest-request';
|
|
6
|
-
import { RestHeaders } from './rest-headers';
|
|
7
6
|
import { Cookie } from './cookie';
|
|
8
7
|
import { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';
|
|
9
8
|
import { Helpers } from 'tnp-core/browser';
|
|
@@ -92,7 +91,7 @@ export class Resource {
|
|
|
92
91
|
}
|
|
93
92
|
//#endregion
|
|
94
93
|
//#region create
|
|
95
|
-
static create(e, model, entityMapping, circular) {
|
|
94
|
+
static create(e, model, entityMapping, circular, customContentType) {
|
|
96
95
|
const badRestRegEX = new RegExp('((\/:)[a-z]+)+', 'g');
|
|
97
96
|
const matchArr = model.match(badRestRegEX) || [];
|
|
98
97
|
const badModelsNextToEachOther = matchArr.join();
|
|
@@ -108,7 +107,7 @@ Instead use nested approach: /book/:bookid/author/:authorid
|
|
|
108
107
|
}
|
|
109
108
|
;
|
|
110
109
|
Resource.map(e, e);
|
|
111
|
-
Resource.instance.add(e, model ? model : '', entityMapping, circular);
|
|
110
|
+
Resource.instance.add(e, model ? model : '', entityMapping, circular, customContentType);
|
|
112
111
|
// if (model.charAt(model.length - 1) !== '/') model = `${model}/`;
|
|
113
112
|
return {
|
|
114
113
|
model: (params) => Resource.instance.api(e, interpolateParamsToUrl(params, model)),
|
|
@@ -165,7 +164,7 @@ Instead use nested approach: /book/:bookid/author/:authorid
|
|
|
165
164
|
* @param {string} model
|
|
166
165
|
* @returns {boolean}
|
|
167
166
|
*/
|
|
168
|
-
add(endpoint, model, entity, circular) {
|
|
167
|
+
add(endpoint, model, entity, circular, customContentType) {
|
|
169
168
|
log.i(`I am maping ${model} on ${endpoint}`);
|
|
170
169
|
model = Resource.prepareModel(model);
|
|
171
170
|
let e;
|
|
@@ -186,8 +185,8 @@ Instead use nested approach: /book/:bookid/author/:authorid
|
|
|
186
185
|
endpoint: e,
|
|
187
186
|
path: model,
|
|
188
187
|
entity,
|
|
189
|
-
circular
|
|
190
|
-
});
|
|
188
|
+
circular,
|
|
189
|
+
}, customContentType); // TODO put custom content type in meta ?
|
|
191
190
|
return;
|
|
192
191
|
}
|
|
193
192
|
//#endregion
|
|
@@ -237,10 +236,6 @@ Instead use nested approach: /book/:bookid/author/:authorid
|
|
|
237
236
|
return res;
|
|
238
237
|
}
|
|
239
238
|
}
|
|
240
|
-
Resource.DEFAULT_HEADERS = RestHeaders.from({
|
|
241
|
-
'Content-Type': 'application/json',
|
|
242
|
-
'Accept': 'application/json'
|
|
243
|
-
});
|
|
244
239
|
Resource._listenErrors = new Subject();
|
|
245
240
|
Resource._listenSuccess = new Subject();
|
|
246
241
|
Resource.enableWarnings = true;
|
|
@@ -257,4 +252,4 @@ Resource.Cookies = Cookie.Instance;
|
|
|
257
252
|
// isArray: true
|
|
258
253
|
// })
|
|
259
254
|
// .array.
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUN0QyxLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFBO0FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHbEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXRGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQU0xQyxNQUFNLE9BQU8sUUFBUTtJQXNIbkIsWUFBWTtJQUVaLHFCQUFxQjtJQUNyQjtRQUNFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7YUFBRTtZQUFBLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBckhNLE1BQU0sS0FBSyxZQUFZO1FB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Q25FLDRCQUE0QjtZQUM1Qiw4QkFBOEI7WUFDOUIsR0FBRyxDQUFDLGVBQWUsR0FBRyxHQUFHLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztTQUNoRDthQUFNO1lBQ0wsR0FBRyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUM5QjtRQUFBLENBQUM7UUFFRixrREFBa0Q7UUFDbEQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztBQXRQYSx3QkFBZSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0MsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxRQUFRLEVBQUUsa0JBQWtCO0NBQzdCLENBQUMsQ0FBQztBQUVjLHNCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFDbkQsdUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztBQVE1RCx1QkFBYyxHQUFZLElBQUksQ0FBQztBQStDOUIsaUJBQVEsR0FBRyxJQUFJLFFBQVEsRUFBb0IsQ0FBQztBQUM1QyxrQkFBUyxHQUFHLEVBQUUsQ0FBQztBQVFmLGdCQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7QUF1RHhELFlBQVk7QUFFRSxnQkFBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUE4SDFDLGtDQUFrQztBQUNsQyxjQUFjO0FBQ2QsWUFBWTtBQUNaLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsb0JBQW9CO0FBQ3BCLE9BQU87QUFDUCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIGltcG9ydHNcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzb3VjZS1zZXJ2aWNlJyxcbiAgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJy4vY29va2llJztcbmltcG9ydCB7IE1hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGVQYXJhbXNUb1VybCwgaXNWYWxpZCwgY29udGFpbnNNb2RlbHMsIGdldE1vZGVscyB9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7IENpcmMgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcidcbi8vI2VuZHJlZ2lvblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuXG4gIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9IRUFERVJTID0gUmVzdEhlYWRlcnMuZnJvbSh7XG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgX2xpc3RlbkVycm9ycyA9IG5ldyBTdWJqZWN0PE1vZGVscy5CYWNrZW5kRXJyb3I+KCk7XG4gIHByb3RlY3RlZCBzdGF0aWMgX2xpc3RlblN1Y2Nlc3MgPSBuZXcgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KCk7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlbkVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdGVuRXJyb3JzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgbGlzdGVuU3VjY2Vzc09wZXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlblN1Y2Nlc3MuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBlbmFibGVXYXJuaW5nczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLy8jcmVnaW9uIHByaXZhdGUgbXRob2RzIGFuZCBmaWVsZHNcbiAgcHJpdmF0ZSBnZXRab25lKCkge1xuICAgIGNvbnN0IGlzTm9kZSA9ICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICBpZiAoaXNOb2RlKSB7IHJldHVybiB9O1xuICAgIGNvbnN0IG5nID0gd2luZG93WyduZyddO1xuICAgIGNvbnN0IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMgPSB3aW5kb3dbJ2dldEFsbEFuZ3VsYXJSb290RWxlbWVudHMnXTtcbiAgICBpZiAoIW5nIHx8ICFnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb2JlID0gbmcucHJvYmU7XG4gICAgY29uc3QgY29yZVRva2VucyA9IG5nLmNvcmVUb2tlbnM7XG4gICAgaWYgKCFjb3JlVG9rZW5zIHx8ICFjb3JlVG9rZW5zLk5nWm9uZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lQ2xhc3MgPSBjb3JlVG9rZW5zLk5nWm9uZTtcbiAgICBpZiAoIXByb2JlIHx8IHR5cGVvZiBwcm9iZSAhPT0gJ2Z1bmN0aW9uJyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBhbmd1bGFyRWxlbWVudHM6IGFueVtdID0gZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cygpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhbmd1bGFyRWxlbWVudHMpIHx8IGFuZ3VsYXJFbGVtZW50cy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBuZy5wcm9iZShhbmd1bGFyRWxlbWVudHNbMF0pO1xuICAgIGlmICghcm9vdEVsZW1lbnQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgaW5qZWN0b3IgPSByb290RWxlbWVudC5pbmplY3RvcjtcbiAgICBpZiAoIWluamVjdG9yIHx8ICFpbmplY3Rvci5nZXQgfHwgdHlwZW9mIGluamVjdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lID0gaW5qZWN0b3IuZ2V0KHpvbmVDbGFzcylcbiAgICByZXR1cm4gem9uZTtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBpbml0QW5ndWxhck5nWm9uZSh6b25lKSB7XG4gICAgUmVzdFJlcXVlc3Quem9uZSA9IHpvbmU7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTmVzdGVkTW9kZWxzKG1vZGVsOiBzdHJpbmcsIGFsbE1vZGVsczogT2JqZWN0KSB7XG4gICAgLy8gaWYgKG1vZGVsLmluZGV4T2YoJy8nKSAhPT0gLTEpIHsgLy9UT0RPIG1ha2UgdGhpcyBiZXR0ZXIsIGJlY291c2Ugbm93IEkgdW5lY2VzYXJ5IGNoZWNraW5nIHNoaXRcbiAgICBmb3IgKGxldCBwIGluIGFsbE1vZGVscykge1xuICAgICAgaWYgKGFsbE1vZGVscy5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICBsZXQgbSA9IGFsbE1vZGVsc1twXTtcbiAgICAgICAgaWYgKGlzVmFsaWQocCkpIHtcbiAgICAgICAgICBsZXQgdXJsTW9kZWxzID0gZ2V0TW9kZWxzKHApO1xuICAgICAgICAgIGlmIChjb250YWluc01vZGVscyhtb2RlbCwgdXJsTW9kZWxzKSkge1xuICAgICAgICAgICAgbW9kZWwgPSBwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIH1cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZSA9IG5ldyBSZXNvdXJjZTxzdHJpbmcsIGFueSwgYW55PigpO1xuICBwcml2YXRlIHN0YXRpYyBlbmRwb2ludHMgPSB7fTtcbiAgcHVibGljIHN0YXRpYyBnZXRNb2RlbChlbmRwb2ludDogc3RyaW5nLCBtb2RlbDogc3RyaW5nKTogUmVzdDxhbnk+IHtcbiAgICBtb2RlbCA9IFJlc291cmNlLnByZXBhcmVNb2RlbChtb2RlbCk7XG4gICAgY29uc3QgZSA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF07XG4gICAgaWYgKCFlKSB7IHJldHVybiB2b2lkIDA7IH1cbiAgICBjb25zdCByID0gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICAgIHJldHVybiBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdLm1vZGVsc1ttb2RlbF07XG4gIH1cbiAgcHJpdmF0ZSBzdGF0aWMgcmVxdWVzdDogUmVzdFJlcXVlc3QgPSBuZXcgUmVzdFJlcXVlc3QoKTtcbiAgLy8jZW5kcmVnaW9uXG5cblxuICAvLyNyZWdpb24gY3JlYXRlXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlPEEsIFRBID0gQVtdPihcbiAgICBlOiBzdHJpbmcsXG4gICAgbW9kZWw/OiBzdHJpbmcsXG4gICAgZW50aXR5TWFwcGluZz86IE1hcHBpbmcuTWFwcGluZyxcbiAgICBjaXJjdWxhcj86IENpcmNbXVxuICApOiBNb2RlbHMuUmVzb3VyY2VNb2RlbDxBLCBUQT4ge1xuICAgIGNvbnN0IGJhZFJlc3RSZWdFWCA9IG5ldyBSZWdFeHAoJygoXFwvOilbYS16XSspKycsICdnJyk7XG4gICAgY29uc3QgbWF0Y2hBcnIgPSBtb2RlbC5tYXRjaChiYWRSZXN0UmVnRVgpIHx8IFtdO1xuICAgIGNvbnN0IGJhZE1vZGVsc05leHRUb0VhY2hPdGhlciA9IG1hdGNoQXJyLmpvaW4oKTtcbiAgICBjb25zdCBhdGxlYXMyRG91YmxlRG90cyA9ICgoYmFkTW9kZWxzTmV4dFRvRWFjaE90aGVyLm1hdGNoKG5ldyBSZWdFeHAoJzonLCAnZycpKSB8fCBbXSkubGVuZ3RoID49IDIpO1xuICAgIGlmIChhdGxlYXMyRG91YmxlRG90cyAmJiBtb2RlbC5zZWFyY2goYmFkTW9kZWxzTmV4dFRvRWFjaE90aGVyKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXG5cbkJhZCByZXN0IG1vZGVsOiAke21vZGVsfVxuXG5EbyBub3QgY3JlYXRlIHJlc3QgbW9kZWxzIGxpa2UgdGhpczogICAgL2Jvb2svYXV0aG9yLzpib29raWQvOmF1dGhvcmlkXG5JbnN0ZWFkIHVzZSBuZXN0ZWQgYXBwcm9hY2g6ICAgICAgICAgICAgL2Jvb2svOmJvb2tpZC9hdXRob3IvOmF1dGhvcmlkXG4gICAgICAgICAgICBgKVxuICAgIH07XG4gICAgUmVzb3VyY2UubWFwKGUsIGUpO1xuICAgIFJlc291cmNlLmluc3RhbmNlLmFkZChlLCBtb2RlbCA/IG1vZGVsIDogJycsIGVudGl0eU1hcHBpbmcsIGNpcmN1bGFyKTtcbiAgICAvLyBpZiAobW9kZWwuY2hhckF0KG1vZGVsLmxlbmd0aCAtIDEpICE9PSAnLycpIG1vZGVsID0gYCR7bW9kZWx9L2A7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVsOiAocGFyYW1zPzogT2JqZWN0KSA9PiBSZXNvdXJjZS5pbnN0YW5jZS5hcGkoXG4gICAgICAgIGUsXG4gICAgICAgIGludGVycG9sYXRlUGFyYW1zVG9VcmwocGFyYW1zLCBtb2RlbClcbiAgICAgICksXG4gICAgICByZXBsYXk6IChtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kKSA9PiB7XG4gICAgICAgIFJlc291cmNlLmdldE1vZGVsKGUsIG1vZGVsKS5yZXBsYXkobWV0aG9kKTtcbiAgICAgIH0sXG4gICAgICBnZXQgaGVhZGVycygpIHtcbiAgICAgICAgcmV0dXJuIFJlc291cmNlLmdldE1vZGVsKGUsIG1vZGVsKS5oZWFkZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gcmVzZXRcbiAgcHVibGljIHN0YXRpYyByZXNldCgpIHtcbiAgICBSZXNvdXJjZS5lbmRwb2ludHMgPSB7fTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gY29uc3RydWN0b3JcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHpvbmUgPSB0aGlzLmdldFpvbmUoKTtcbiAgICAgIGlmICghUmVzdFJlcXVlc3Quem9uZSkgeyBSZXN0UmVxdWVzdC56b25lID0gem9uZSB9O1xuICAgIH0pXG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHVibGljIHN0YXRpYyBDb29raWVzID0gQ29va2llLkluc3RhbmNlO1xuXG4gIC8vI3JlZ2lvbiBtYXBcbiAgcHJpdmF0ZSBzdGF0aWMgbWFwKGVuZHBvaW50OiBzdHJpbmcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsb2cuaSgndXJsJywgdXJsKVxuICAgIGxldCByZWdleCA9IC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6ezAsMX1cXHcqKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJSFcXC1cXC9dKSk/LztcbiAgICBsZXQgZSA9IGVuZHBvaW50O1xuICAgIGlmICghcmVnZXgudGVzdCh1cmwpKSB7XG4gICAgICB0aHJvdyBgVXJsIGFkZHJlc3MgaXMgbm90IGNvcnJlY3Q6ICR7dXJsfWA7XG4gICAgfVxuICAgIGlmICh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJy8nKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgIGxvZy5pKCd1cmwgYWZ0ZXInLCB1cmwpXG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXSAhPT0gdm9pZCAwKSB7XG4gICAgICBIZWxwZXJzLmxvZygnQ2Fubm90IHVzZSBtYXAgZnVuY3Rpb24gYXQgdGhlIHNhbWUgQVBJIGVuZHBvaW50IGFnYWluICgnXG4gICAgICAgICsgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybCArICcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFJlc291cmNlLmVuZHBvaW50c1tlXSA9IHtcbiAgICAgIHVybDogdXJsLFxuICAgICAgbW9kZWxzOiB7fSxcbiAgICAgIGVudGl0eTogbnVsbFxuICAgIH07XG4gICAgbG9nLmkoJ2VucG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgc3RhdGljIHByZXBhcmVNb2RlbChtb2RlbCkge1xuICAgIGlmIChtb2RlbC5jaGFyQXQobW9kZWwubGVuZ3RoIC0gMSkgPT09ICcvJykgbW9kZWwgPSBtb2RlbC5zbGljZSgwLCBtb2RlbC5sZW5ndGggLSAxKTtcbiAgICBpZiAobW9kZWwuY2hhckF0KDApID09PSAnLycpIG1vZGVsID0gbW9kZWwuc2xpY2UoMSwgbW9kZWwubGVuZ3RoKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuXG4gIC8vI3JlZ2lvbiBhZGRcbiAgLyoqXG4gICAqIEFuZCBlbmlwb2ludCB0byBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0V9IGVuZHBvaW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHByaXZhdGUgYWRkKGVuZHBvaW50OiBFLCBtb2RlbDogc3RyaW5nLCBlbnRpdHk6IE1hcHBpbmcuTWFwcGluZywgY2lyY3VsYXI/OiBDaXJjW10pIHtcbiAgICBsb2cuaShgSSBhbSBtYXBpbmcgJHttb2RlbH0gb24gJHs8YW55PmVuZHBvaW50fWApO1xuICAgIG1vZGVsID0gUmVzb3VyY2UucHJlcGFyZU1vZGVsKG1vZGVsKTtcblxuICAgIGxldCBlOiBzdHJpbmc7XG4gICAgZSA9IDxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpO1xuXG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFbmRwb2ludCBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbCAnICsgbW9kZWwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdLm1vZGVsc1ttb2RlbF0gIT09IHZvaWQgMCkge1xuICAgICAgaWYgKFJlc291cmNlLmVuYWJsZVdhcm5pbmdzKSBjb25zb2xlLndhcm4oYE1vZGVsICcke21vZGVsfScgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGVuZHBvaW50OiBgXG4gICAgICAgICsgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFJlc291cmNlLmVuZHBvaW50c1tlXS5tb2RlbHNbbW9kZWxdID1cbiAgICAgIG5ldyBSZXN0PFQsIFRBPihSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsXG4gICAgICAgICsgJy8nICsgbW9kZWwsIFJlc291cmNlLnJlcXVlc3QsIHtcbiAgICAgICAgZW5kcG9pbnQ6IGUsXG4gICAgICAgIHBhdGg6IG1vZGVsLFxuICAgICAgICBlbnRpdHksXG4gICAgICAgIGNpcmN1bGFyXG4gICAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIGFwaVxuICAvKipcbiAgICogQWNjZXNzIGFwaSB0aHJvdWdodCBlbmRwb2ludFxuICAgKlxuICAgKiBAcGFyYW0ge0V9IGVuZHBvaW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbFxuICAgKiBAcmV0dXJucyB7UmVzdDxULCBUQT59XG4gICAqL1xuICBwcml2YXRlIGFwaShlbmRwb2ludDogRSwgbW9kZWw6IHN0cmluZyk6IFJlc3Q8VCwgVEE+IHtcbiAgICAvLyBsb2cuaShgW2FwaV1cblxuICAgIC8vIGNyZWF0aW5nIGZvciBlbmRwb2ludDogXCIke2VuZHBvaW50fVwiXG4gICAgLy8gbW9kZWw6IFwiJHttb2RlbH1cIlxuXG4gICAgLy8gYClcbiAgICBpZiAobW9kZWwuY2hhckF0KDApID09PSAnLycpIG1vZGVsID0gbW9kZWwuc2xpY2UoMSwgbW9kZWwubGVuZ3RoKTtcbiAgICBsZXQgZSA9IDxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpO1xuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0gPT09IHZvaWQgMCkge1xuICAgICAgdGhyb3cgYEVuZHBvaW50OiAkezxhbnk+ZW5kcG9pbnR9IGlzIG5vdCBtYXBwZWQgISBDYW5ub3QgYWRkIG1vZGVsOiAke21vZGVsfWA7XG4gICAgfVxuICAgIGxldCBhbGxNb2RlbHM6IE9iamVjdCA9IFJlc291cmNlLmVuZHBvaW50c1tlXS5tb2RlbHM7XG4gICAgbGV0IG9yZ01vZGVsID0gbW9kZWw7XG4gICAgbW9kZWwgPSB0aGlzLmNoZWNrTmVzdGVkTW9kZWxzKG1vZGVsLCBhbGxNb2RlbHMpO1xuXG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXS5tb2RlbHNbbW9kZWxdID09PSB2b2lkIDApIHtcbiAgICAgIC8vIGxvZy5kKCdSZXNvdXJjZS5lbmRwb2ludHMnLCBSZXNvdXJjZS5lbmRwb2ludHMpO1xuICAgICAgdGhyb3cgYE1vZGVsICcke21vZGVsfScgaXMgdW5kZWZpbmVkIGluIGVuZHBvaW50OiAke1Jlc291cmNlLmVuZHBvaW50c1tlXS51cmx9IGA7XG4gICAgfVxuXG4gICAgbGV0IHJlczogUmVzdDxULCBUQT4gPSBSZXNvdXJjZS5lbmRwb2ludHNbPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCldLm1vZGVsc1ttb2RlbF07XG5cbiAgICAvLyBsb2cuZChgXG4gICAgLy8gb3JnTW9kZWw6ICR7b3JnTW9kZWx9XG4gICAgLy8gbW9kZWw6ICR7bW9kZWx9XG5cbiAgICAvLyBgKVxuICAgIGlmIChvcmdNb2RlbCAhPT0gbW9kZWwpIHtcbiAgICAgIGxldCBiYXNlVXJsID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS51cmw7XG4gICAgICAvLyBsb2cuZCgnYmFzZScsIFJlc291cmNlLmVuZHBvaW50c1s8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKV0pXG4gICAgICAvLyBsb2cuZCgnYmFzZVVybCcsIGJhc2VVcmwpXG4gICAgICAvLyBsb2cuZCgnb3JnTW9kZWwnLCBvcmdNb2RlbClcbiAgICAgIHJlcy5fX3Jlc3RfZW5kcG9pbnQgPSBgJHtiYXNlVXJsfS8ke29yZ01vZGVsfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcy5fX3Jlc3RfZW5kcG9pbnQgPSB2b2lkIDA7XG4gICAgfTtcblxuICAgIC8vIGxvZy5pKGBSZXNvdXJjZS5lbmRwb2ludHNgLCBSZXNvdXJjZS5lbmRwb2ludHMpXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICAvLyNlbmRyZWdpb25cblxufVxuXG5cblxuLy8gY29uc3QgcmVzID0gUmVzb3VyY2UuY3JlYXRlKCcnKVxuLy8gcmVzLm1vZGVsKClcbi8vICAgLm1vY2soe1xuLy8gICAgIGNvZGU6IDUwMCxcbi8vICAgICBkYXRhOiB7fSxcbi8vICAgICBpc0FycmF5OiB0cnVlXG4vLyAgIH0pXG4vLyAgIC5hcnJheS5cbiJdfQ==
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUN0QyxLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFBO0FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBTzFDLE1BQU0sT0FBTyxRQUFRO0lBaUhuQixZQUFZO0lBRVoscUJBQXFCO0lBQ3JCO1FBQ0UsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTthQUFFO1lBQUEsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUF0SE0sTUFBTSxLQUFLLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFD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QUFDO1lBQ3BFLG1FQUFtRTtZQUNuRSw0QkFBNEI7WUFDNUIsOEJBQThCO1lBQzlCLEdBQUcsQ0FBQyxlQUFlLEdBQUcsR0FBRyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7U0FDaEQ7YUFBTTtZQUNMLEdBQUcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDOUI7UUFBQSxDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFsUGdCLHNCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFDbkQsdUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztBQVE1RCx1QkFBYyxHQUFZLElBQUksQ0FBQztBQStDOUIsaUJBQVEsR0FBRyxJQUFJLFFBQVEsRUFBb0IsQ0FBQztBQUM1QyxrQkFBUyxHQUFHLEVBQUUsQ0FBQztBQVFmLGdCQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7QUF3RHhELFlBQVk7QUFFRSxnQkFBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUE4SDFDLGtDQUFrQztBQUNsQyxjQUFjO0FBQ2QsWUFBWTtBQUNaLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsb0JBQW9CO0FBQ3BCLE9BQU87QUFDUCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIGltcG9ydHNcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzb3VjZS1zZXJ2aWNlJyxcbiAgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJy4vY29va2llJztcbmltcG9ydCB7IE1hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGVQYXJhbXNUb1VybCwgaXNWYWxpZCwgY29udGFpbnNNb2RlbHMsIGdldE1vZGVscyB9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7IENpcmMgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3NlcidcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbi8vI2VuZHJlZ2lvblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5FcnJvcnMgPSBuZXcgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPigpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5TdWNjZXNzID0gbmV3IFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PigpO1xuICBwdWJsaWMgc3RhdGljIGdldCBsaXN0ZW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlbkVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlblN1Y2Nlc3NPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5TdWNjZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZW5hYmxlV2FybmluZ3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vI3JlZ2lvbiBwcml2YXRlIG10aG9kcyBhbmQgZmllbGRzXG4gIHByaXZhdGUgZ2V0Wm9uZSgpIHtcbiAgICBjb25zdCBpc05vZGUgPSAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgaWYgKGlzTm9kZSkgeyByZXR1cm4gfTtcbiAgICBjb25zdCBuZyA9IHdpbmRvd1snbmcnXTtcbiAgICBjb25zdCBnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzID0gd2luZG93WydnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzJ107XG4gICAgaWYgKCFuZyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm9iZSA9IG5nLnByb2JlO1xuICAgIGNvbnN0IGNvcmVUb2tlbnMgPSBuZy5jb3JlVG9rZW5zO1xuICAgIGlmICghY29yZVRva2VucyB8fCAhY29yZVRva2Vucy5OZ1pvbmUpIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgem9uZUNsYXNzID0gY29yZVRva2Vucy5OZ1pvbmU7XG4gICAgaWYgKCFwcm9iZSB8fCB0eXBlb2YgcHJvYmUgIT09ICdmdW5jdGlvbicgfHwgIWdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgYW5ndWxhckVsZW1lbnRzOiBhbnlbXSA9IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMoKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYW5ndWxhckVsZW1lbnRzKSB8fCBhbmd1bGFyRWxlbWVudHMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gbmcucHJvYmUoYW5ndWxhckVsZW1lbnRzWzBdKTtcbiAgICBpZiAoIXJvb3RFbGVtZW50KSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGluamVjdG9yID0gcm9vdEVsZW1lbnQuaW5qZWN0b3I7XG4gICAgaWYgKCFpbmplY3RvciB8fCAhaW5qZWN0b3IuZ2V0IHx8IHR5cGVvZiBpbmplY3Rvci5nZXQgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgem9uZSA9IGluamVjdG9yLmdldCh6b25lQ2xhc3MpXG4gICAgcmV0dXJuIHpvbmU7XG4gIH1cblxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdEFuZ3VsYXJOZ1pvbmUoem9uZSkge1xuICAgIFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja05lc3RlZE1vZGVscyhtb2RlbDogc3RyaW5nLCBhbGxNb2RlbHM6IE9iamVjdCkge1xuICAgIC8vIGlmIChtb2RlbC5pbmRleE9mKCcvJykgIT09IC0xKSB7IC8vVE9ETyBtYWtlIHRoaXMgYmV0dGVyLCBiZWNvdXNlIG5vdyBJIHVuZWNlc2FyeSBjaGVja2luZyBzaGl0XG4gICAgZm9yIChsZXQgcCBpbiBhbGxNb2RlbHMpIHtcbiAgICAgIGlmIChhbGxNb2RlbHMuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgbGV0IG0gPSBhbGxNb2RlbHNbcF07XG4gICAgICAgIGlmIChpc1ZhbGlkKHApKSB7XG4gICAgICAgICAgbGV0IHVybE1vZGVscyA9IGdldE1vZGVscyhwKTtcbiAgICAgICAgICBpZiAoY29udGFpbnNNb2RlbHMobW9kZWwsIHVybE1vZGVscykpIHtcbiAgICAgICAgICAgIG1vZGVsID0gcDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUmVzb3VyY2U8c3RyaW5nLCBhbnksIGFueT4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW5kcG9pbnRzID0ge307XG4gIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWwoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZyk6IFJlc3Q8YW55PiB7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuICAgIGNvbnN0IGUgPSBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdO1xuICAgIGlmICghZSkgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgY29uc3QgciA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF0ubW9kZWxzW21vZGVsXTtcbiAgICByZXR1cm4gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICB9XG4gIHByaXZhdGUgc3RhdGljIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0ID0gbmV3IFJlc3RSZXF1ZXN0KCk7XG4gIC8vI2VuZHJlZ2lvblxuXG5cbiAgLy8jcmVnaW9uIGNyZWF0ZVxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxBLCBUQSA9IEFbXT4oXG4gICAgZTogc3RyaW5nLFxuICAgIG1vZGVsPzogc3RyaW5nLFxuICAgIGVudGl0eU1hcHBpbmc/OiBNYXBwaW5nLk1hcHBpbmcsXG4gICAgY2lyY3VsYXI/OiBDaXJjW10sXG4gICAgY3VzdG9tQ29udGVudFR5cGU/OiBSZXN0SGVhZGVycyxcbiAgKTogTW9kZWxzLlJlc291cmNlTW9kZWw8QSwgVEE+IHtcbiAgICBjb25zdCBiYWRSZXN0UmVnRVggPSBuZXcgUmVnRXhwKCcoKFxcLzopW2Etel0rKSsnLCAnZycpO1xuICAgIGNvbnN0IG1hdGNoQXJyID0gbW9kZWwubWF0Y2goYmFkUmVzdFJlZ0VYKSB8fCBbXTtcbiAgICBjb25zdCBiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIgPSBtYXRjaEFyci5qb2luKCk7XG4gICAgY29uc3QgYXRsZWFzMkRvdWJsZURvdHMgPSAoKGJhZE1vZGVsc05leHRUb0VhY2hPdGhlci5tYXRjaChuZXcgUmVnRXhwKCc6JywgJ2cnKSkgfHwgW10pLmxlbmd0aCA+PSAyKTtcbiAgICBpZiAoYXRsZWFzMkRvdWJsZURvdHMgJiYgbW9kZWwuc2VhcmNoKGJhZE1vZGVsc05leHRUb0VhY2hPdGhlcikgIT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuXG5CYWQgcmVzdCBtb2RlbDogJHttb2RlbH1cblxuRG8gbm90IGNyZWF0ZSByZXN0IG1vZGVscyBsaWtlIHRoaXM6ICAgIC9ib29rL2F1dGhvci86Ym9va2lkLzphdXRob3JpZFxuSW5zdGVhZCB1c2UgbmVzdGVkIGFwcHJvYWNoOiAgICAgICAgICAgIC9ib29rLzpib29raWQvYXV0aG9yLzphdXRob3JpZFxuICAgICAgICAgICAgYClcbiAgICB9O1xuICAgIFJlc291cmNlLm1hcChlLCBlKTtcbiAgICBSZXNvdXJjZS5pbnN0YW5jZS5hZGQoZSwgbW9kZWwgPyBtb2RlbCA6ICcnLCBlbnRpdHlNYXBwaW5nLCBjaXJjdWxhciwgY3VzdG9tQ29udGVudFR5cGUpO1xuICAgIC8vIGlmIChtb2RlbC5jaGFyQXQobW9kZWwubGVuZ3RoIC0gMSkgIT09ICcvJykgbW9kZWwgPSBgJHttb2RlbH0vYDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZWw6IChwYXJhbXM/OiBPYmplY3QpID0+IFJlc291cmNlLmluc3RhbmNlLmFwaShcbiAgICAgICAgZSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNUb1VybChwYXJhbXMsIG1vZGVsKVxuICAgICAgKSxcbiAgICAgIHJlcGxheTogKG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QpID0+IHtcbiAgICAgICAgUmVzb3VyY2UuZ2V0TW9kZWwoZSwgbW9kZWwpLnJlcGxheShtZXRob2QpO1xuICAgICAgfSxcbiAgICAgIGdldCBoZWFkZXJzKCkge1xuICAgICAgICByZXR1cm4gUmVzb3VyY2UuZ2V0TW9kZWwoZSwgbW9kZWwpLmhlYWRlcnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiByZXNldFxuICBwdWJsaWMgc3RhdGljIHJlc2V0KCkge1xuICAgIFJlc291cmNlLmVuZHBvaW50cyA9IHt9O1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBjb25zdHJ1Y3RvclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSgpO1xuICAgICAgaWYgKCFSZXN0UmVxdWVzdC56b25lKSB7IFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lIH07XG4gICAgfSlcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwdWJsaWMgc3RhdGljIENvb2tpZXMgPSBDb29raWUuSW5zdGFuY2U7XG5cbiAgLy8jcmVnaW9uIG1hcFxuICBwcml2YXRlIHN0YXRpYyBtYXAoZW5kcG9pbnQ6IHN0cmluZywgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGxvZy5pKCd1cmwnLCB1cmwpXG4gICAgbGV0IHJlZ2V4ID0gLyhodHRwfGh0dHBzKTpcXC9cXC8oXFx3Kzp7MCwxfVxcdyopPyhcXFMrKSg6WzAtOV0rKT8oXFwvfFxcLyhbXFx3IyE6Lj8rPSYlIVxcLVxcL10pKT8vO1xuICAgIGxldCBlID0gZW5kcG9pbnQ7XG4gICAgaWYgKCFyZWdleC50ZXN0KHVybCkpIHtcbiAgICAgIHRocm93IGBVcmwgYWRkcmVzcyBpcyBub3QgY29ycmVjdDogJHt1cmx9YDtcbiAgICB9XG4gICAgaWYgKHVybC5jaGFyQXQodXJsLmxlbmd0aCAtIDEpID09PSAnLycpIHVybCA9IHVybC5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMSk7XG4gICAgbG9nLmkoJ3VybCBhZnRlcicsIHVybClcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdICE9PSB2b2lkIDApIHtcbiAgICAgIEhlbHBlcnMubG9nKCdDYW5ub3QgdXNlIG1hcCBmdW5jdGlvbiBhdCB0aGUgc2FtZSBBUEkgZW5kcG9pbnQgYWdhaW4gKCdcbiAgICAgICAgKyBSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsICsgJyknKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgUmVzb3VyY2UuZW5kcG9pbnRzW2VdID0ge1xuICAgICAgdXJsOiB1cmwsXG4gICAgICBtb2RlbHM6IHt9LFxuICAgICAgZW50aXR5OiBudWxsXG4gICAgfTtcbiAgICBsb2cuaSgnZW5wb2ludHMnLCBSZXNvdXJjZS5lbmRwb2ludHMpXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU1vZGVsKG1vZGVsKSB7XG4gICAgaWYgKG1vZGVsLmNoYXJBdChtb2RlbC5sZW5ndGggLSAxKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDAsIG1vZGVsLmxlbmd0aCAtIDEpO1xuICAgIGlmIChtb2RlbC5jaGFyQXQoMCkgPT09ICcvJykgbW9kZWwgPSBtb2RlbC5zbGljZSgxLCBtb2RlbC5sZW5ndGgpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG5cbiAgLy8jcmVnaW9uIGFkZFxuICAvKipcbiAgICogQW5kIGVuaXBvaW50IHRvIGFwcGxpY2F0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7RX0gZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHJpdmF0ZSBhZGQoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcsIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLCBjaXJjdWxhcj86IENpcmNbXSwgY3VzdG9tQ29udGVudFR5cGU/OiBSZXN0SGVhZGVycykge1xuICAgIGxvZy5pKGBJIGFtIG1hcGluZyAke21vZGVsfSBvbiAkezxhbnk+ZW5kcG9pbnR9YCk7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuXG4gICAgbGV0IGU6IHN0cmluZztcbiAgICBlID0gPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VuZHBvaW50IGlzIG5vdCBtYXBwZWQgISBDYW5ub3QgYWRkIG1vZGVsICcgKyBtb2RlbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAoUmVzb3VyY2UuZW5hYmxlV2FybmluZ3MpIGNvbnNvbGUud2FybihgTW9kZWwgJyR7bW9kZWx9JyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZW5kcG9pbnQ6IGBcbiAgICAgICAgKyBSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLm1vZGVsc1ttb2RlbF0gPVxuICAgICAgbmV3IFJlc3Q8VCwgVEE+KFJlc291cmNlLmVuZHBvaW50c1tlXS51cmxcbiAgICAgICAgKyAnLycgKyBtb2RlbCwgUmVzb3VyY2UucmVxdWVzdCwge1xuICAgICAgICBlbmRwb2ludDogZSxcbiAgICAgICAgcGF0aDogbW9kZWwsXG4gICAgICAgIGVudGl0eSxcbiAgICAgICAgY2lyY3VsYXIsXG4gICAgICB9LCBjdXN0b21Db250ZW50VHlwZSk7IC8vIFRPRE8gcHV0IGN1c3RvbSBjb250ZW50IHR5cGUgaW4gbWV0YSA/XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBhcGlcbiAgLyoqXG4gICAqIEFjY2VzcyBhcGkgdGhyb3VnaHQgZW5kcG9pbnRcbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge1Jlc3Q8VCwgVEE+fVxuICAgKi9cbiAgcHJpdmF0ZSBhcGkoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcpOiBSZXN0PFQsIFRBPiB7XG4gICAgLy8gbG9nLmkoYFthcGldXG5cbiAgICAvLyBjcmVhdGluZyBmb3IgZW5kcG9pbnQ6IFwiJHtlbmRwb2ludH1cIlxuICAgIC8vIG1vZGVsOiBcIiR7bW9kZWx9XCJcblxuICAgIC8vIGApXG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgbGV0IGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGBFbmRwb2ludDogJHs8YW55PmVuZHBvaW50fSBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbDogJHttb2RlbH1gO1xuICAgIH1cbiAgICBsZXQgYWxsTW9kZWxzOiBPYmplY3QgPSBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzO1xuICAgIGxldCBvcmdNb2RlbCA9IG1vZGVsO1xuICAgIG1vZGVsID0gdGhpcy5jaGVja05lc3RlZE1vZGVscyhtb2RlbCwgYWxsTW9kZWxzKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9PT0gdm9pZCAwKSB7XG4gICAgICAvLyBsb2cuZCgnUmVzb3VyY2UuZW5kcG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKTtcbiAgICAgIHRocm93IGBNb2RlbCAnJHttb2RlbH0nIGlzIHVuZGVmaW5lZCBpbiBlbmRwb2ludDogJHtSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsfSBgO1xuICAgIH1cblxuICAgIGxldCByZXM6IFJlc3Q8VCwgVEE+ID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS5tb2RlbHNbbW9kZWxdO1xuXG4gICAgLy8gbG9nLmQoYFxuICAgIC8vIG9yZ01vZGVsOiAke29yZ01vZGVsfVxuICAgIC8vIG1vZGVsOiAke21vZGVsfVxuXG4gICAgLy8gYClcbiAgICBpZiAob3JnTW9kZWwgIT09IG1vZGVsKSB7XG4gICAgICBsZXQgYmFzZVVybCA9IFJlc291cmNlLmVuZHBvaW50c1s8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKV0udXJsO1xuICAgICAgLy8gbG9nLmQoJ2Jhc2UnLCBSZXNvdXJjZS5lbmRwb2ludHNbPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCldKVxuICAgICAgLy8gbG9nLmQoJ2Jhc2VVcmwnLCBiYXNlVXJsKVxuICAgICAgLy8gbG9nLmQoJ29yZ01vZGVsJywgb3JnTW9kZWwpXG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gYCR7YmFzZVVybH0vJHtvcmdNb2RlbH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gdm9pZCAwO1xuICAgIH07XG5cbiAgICAvLyBsb2cuaShgUmVzb3VyY2UuZW5kcG9pbnRzYCwgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbn1cblxuXG5cbi8vIGNvbnN0IHJlcyA9IFJlc291cmNlLmNyZWF0ZSgnJylcbi8vIHJlcy5tb2RlbCgpXG4vLyAgIC5tb2NrKHtcbi8vICAgICBjb2RlOiA1MDAsXG4vLyAgICAgZGF0YToge30sXG4vLyAgICAgaXNBcnJheTogdHJ1ZVxuLy8gICB9KVxuLy8gICAuYXJyYXkuXG4iXX0=
|
|
@@ -106,6 +106,7 @@ export class RestRequest {
|
|
|
106
106
|
responseType: 'text',
|
|
107
107
|
headers: headers.toJSON(),
|
|
108
108
|
cancelToken: source.token,
|
|
109
|
+
// withCredentials: true, // this can be done manually
|
|
109
110
|
});
|
|
110
111
|
// log.d(`after response of jobid: ${jobid}`);
|
|
111
112
|
}
|
|
@@ -349,4 +350,4 @@ export class RestRequest {
|
|
|
349
350
|
}
|
|
350
351
|
}
|
|
351
352
|
RestRequest.jobId = 0;
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQTtBQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUN6QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDOUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzVCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUdoQyxzQkFBc0I7QUFDdEIsWUFBWTtBQUVaLE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSVUsa0JB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QUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3BDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDNUUsQ0FBQzs7QUE3YWMsaUJBQUssR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFJlc3RIZWFkZXJzIH0gZnJvbSAnLi9yZXN0LWhlYWRlcnMnO1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZywgTG9nZ2VyIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcblxuaW1wb3J0IHsgUmVxdWVzdENhY2hlIH0gZnJvbSAnLi9yZXF1ZXN0LWNhY2hlJztcbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ1tuZzItcmVzdF0gcmVzdC1yZXF1ZXN0J1xuICAsIExldmVsLl9fTk9USElOR1xuKVxuXG5jb25zdCBqb2JJRGtleSA9ICdqb2JJRCc7XG5jb25zdCBjdXN0b21PYnMgPSAnY3VzdG9tT2JzJztcbmNvbnN0IGNhbmNlbEZuID0gJ2NhbmNlbEZuJztcbmNvbnN0IGlzQ2FuY2VsZWQgPSAnaXNDYW5jZWxlZCc7XG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG4vLyNyZWdpb24gbW9jayByZXF1ZXN0XG4vLyNlbmRyZWdpb25cblxuZXhwb3J0IGNsYXNzIFJlc3RSZXF1ZXN0IHtcblxuICBwdWJsaWMgc3RhdGljIHpvbmU7XG4gIHByaXZhdGUgc3RhdGljIGpvYklkID0gMDtcbiAgcHJpdmF0ZSBzdWJqZWN0SW51VXNlOiB7IFtpZDogbnVtYmVyXTogU3ViamVjdDxhbnk+IH0gPSB7fTtcbiAgcHJpdmF0ZSBtZXRhOiB7IFtpZDogbnVtYmVyXTogTW9kZWxzLk1ldGFSZXF1ZXN0IH0gPSB7fTtcblxuXG4gIHByaXZhdGUgaGFuZGxlclJlc3VsdChvcHRpb25zOiBNb2RlbHMuSGFuZGxlUmVzdWx0T3B0aW9ucyxcbiAgICBzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgICAgb3B0aW9ucyA9IHt9IGFzIGFueTtcbiAgICB9XG4gICAgLy8gbG9nLmQoYEhBTkRMRSBSRVNVTFQgKGpvYmlkOiR7b3B0aW9ucy5qb2JpZH0pICR7c291cmNlUmVxdWVzdC51cmx9YCk7XG4gICAgY29uc3QgeyByZXMsIGpvYmlkLCBpc0FycmF5LCBtZXRob2QgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAodHlwZW9mIHJlcyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVzcG9zbnNlIGZvciByZXF1ZXN0LiAnKTtcbiAgICB9XG5cbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIHJlcy5oZWFkZXJzID0gUmVzdEhlYWRlcnMuZnJvbShyZXMuaGVhZGVycyk7XG4gICAgfVxuXG4gICAgLy8gZXJyb3Igbm8gaW50ZXJuZXRcbiAgICBpZiAocmVzLmVycm9yKSB7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLmVycm9yKG5ldyBNb2RlbHMuSHR0cFJlc3BvbnNlRXJyb3IocmVzLmVycm9yLCByZXMuZGF0YSwgcmVzLmhlYWRlcnMsIHJlcy5jb2RlLCBqb2JpZCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLm1ldGFbam9iaWRdLmVudGl0eTtcbiAgICBjb25zdCBjaXJjdWxhciA9IHRoaXMubWV0YVtqb2JpZF0uY2lyY3VsYXI7XG5cbiAgICBjb25zdCBzdWNjZXNzID0gKFJlc291cmNlWydfbGlzdGVuU3VjY2VzcyddIGFzIFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PilcblxuICAgIGNvbnN0IHJlcVJlc3AgPSBuZXcgTW9kZWxzLkh0dHBSZXNwb25zZShzb3VyY2VSZXF1ZXN0LCByZXMuZGF0YSwgcmVzLmhlYWRlcnMsIHJlcy5jb2RlLCBlbnRpdHksIGNpcmN1bGFyLCBqb2JpZCwgaXNBcnJheSk7XG4gICAgc3VjY2Vzcy5uZXh0KHJlcVJlc3ApO1xuXG4gICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5uZXh0KHJlcVJlc3ApO1xuICAgIHRoaXMubWV0YVtqb2JpZF0gPSB2b2lkIDA7XG4gICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5jb21wbGV0ZSgpO1xuICB9XG4gIGNoZWNrQ2FjaGUoc291cmNlUmVxdWVzdDogTW9kZWxzLkhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zLCBqb2JpZDogbnVtYmVyKSB7XG4gICAgY29uc3QgZXhpc3RlZEluQ2FjaGUgPSBSZXF1ZXN0Q2FjaGUuZmluZEJ5KHNvdXJjZVJlcXVlc3QpO1xuICAgIGlmIChleGlzdGVkSW5DYWNoZSkge1xuICAgICAgbG9nLmkoJ2NhY2hlIGV4aXN0cycsIGV4aXN0ZWRJbkNhY2hlKVxuICAgICAgY29uc3Qgc3VjY2VzcyA9IChSZXNvdXJjZVsnX2xpc3RlblN1Y2Nlc3MnXSBhcyBTdWJqZWN0PE1vZGVscy5IdHRwUmVzcG9uc2U8YW55Pj4pO1xuICAgICAgc3VjY2Vzcy5uZXh0KGV4aXN0ZWRJbkNhY2hlLnJlc3BvbnNlKTtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0ubmV4dChleGlzdGVkSW5DYWNoZSk7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLmNvbXBsZXRlKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gbG9nLmkoYGNhY2hlIG5vdCBleGlzdHMgZm9yIGpvYmlkICR7am9iaWR9YClcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlcShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kLFxuICAgIGhlYWRlcnM/OiBSZXN0SGVhZGVycyxcbiAgICBib2R5PzogYW55LFxuICAgIGpvYmlkPzogbnVtYmVyLFxuICAgIGlzQXJyYXkgPSBmYWxzZSxcbiAgICBtb2NrSHR0cD86IE1vZGVscy5Nb2NrSHR0cFxuICApIHtcbiAgICBpZiAodGhpcy5jaGVja0NhY2hlKHtcbiAgICAgIHVybCxcbiAgICAgIGJvZHksXG4gICAgICBpc0FycmF5LFxuICAgICAgbWV0aG9kXG4gICAgfSwgam9iaWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgQ2FuY2VsVG9rZW4gPSBheGlvcy5DYW5jZWxUb2tlbjtcbiAgICBjb25zdCBzb3VyY2UgPSBDYW5jZWxUb2tlbi5zb3VyY2UoKTtcbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSA9IHNvdXJjZS5jYW5jZWw7XG5cbiAgICB2YXIgcmVzcG9uc2U6IEF4aW9zUmVzcG9uc2U8YW55PjtcbiAgICBpZiAobW9ja0h0dHApIHtcblxuICAgICAgaWYgKHR5cGVvZiBtb2NrSHR0cCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgZGF0YTogbW9ja0h0dHAuZGF0YSxcbiAgICAgICAgICBzdGF0dXM6IG1vY2tIdHRwLmNvZGUsXG4gICAgICAgICAgaGVhZGVyczogbW9ja0h0dHAuaGVhZGVycyxcbiAgICAgICAgICBzdGF0dXNUZXh0OiBtb2NrSHR0cC5lcnJvcixcbiAgICAgICAgICBjb25maWc6IHt9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vY2tIdHRwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBtb2NrSHR0cCh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSk7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IHIuZGF0YSxcbiAgICAgICAgICBzdGF0dXM6IHIuY29kZSxcbiAgICAgICAgICBoZWFkZXJzOiByLmhlYWRlcnMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogci5lcnJvcixcbiAgICAgICAgICBjb25maWc6IHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICBsb2cuZChgWyR7bWV0aG9kfV0gKGpvYmlkPSR7am9iaWR9KSByZXF1ZXN0IHRvOiAgJHt1cmx9YClcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMudG9KU09OKCksXG4gICAgICAgICAgY2FuY2VsVG9rZW46IHNvdXJjZS50b2tlbixcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxvZy5kKGBhZnRlciByZXNwb25zZSBvZiBqb2JpZDogJHtqb2JpZH1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICByZXM6IHtcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5zdGF0dXMgYXMgYW55LFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgam9iaWQsXG4gICAgICAgICAgaGVhZGVyczogUmVzdEhlYWRlcnMuZnJvbShyZXNwb25zZS5oZWFkZXJzKVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGpvYmlkLFxuICAgICAgICBpc0FycmF5XG4gICAgICB9LCB7XG4gICAgICAgIHVybCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBpc0FycmF5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F0Y2hlZEVycm9yKSB7XG4gICAgICBpZiAodGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb25zb2xlLmxvZygnRVJST1IgUkVTUE9ORVNFIGNhdGNoZWRFcnJvciB0eXBlb2YgJywgdHlwZW9mIGNhdGNoZWRFcnJvcilcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdFUlJPUiBSRVNQT05FU0UgY2F0Y2hlZEVycm9yJywgY2F0Y2hlZEVycm9yKVxuICAgICAgaWYgKHR5cGVvZiBjYXRjaGVkRXJyb3IgPT09ICdvYmplY3QnICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBjb25zdCBlcnIgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YTtcbiAgICAgICAgY29uc3QgbXNnOiBzdHJpbmcgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgICBsZXQgc3RhY2s6IHN0cmluZ1tdID0gKGVyci5zdGFjayB8fCAnJykuc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgIGNvbnN0IGVyck9icyA9IChSZXNvdXJjZVsnX2xpc3RlbkVycm9ycyddIGFzIFN1YmplY3Q8TW9kZWxzLkJhY2tlbmRFcnJvcj4pO1xuICAgICAgICBlcnJPYnMubmV4dCh7XG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGRhdGE6IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBgWyR7Y2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1c1RleHR9XTogYCA6ICcnO1xuICAgICAgdGhpcy5oYW5kbGVyUmVzdWx0KHtcbiAgICAgICAgcmVzOiB7XG4gICAgICAgICAgY29kZTogKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UpID8gY2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1cyBhcyBhbnkgOiB2b2lkIDAsXG4gICAgICAgICAgZXJyb3I6IGAke2Vycm9yfSR7Y2F0Y2hlZEVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICBkYXRhOiAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBKU09OLnN0cmluZ2lmeShjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkgOiB2b2lkIDAsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlLmhlYWRlcnMpXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgam9iaWQsXG4gICAgICAgIGlzQXJyYXlcbiAgICAgIH0sIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBib2R5LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBtZXRob2RcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwbGF5KG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCwgb25seUdldExhc3RSZXBsYXlGb3JNZXRob2Q6IGJvb2xlYW4pOiBNb2RlbHMuUmVwbGF5RGF0YSB7XG4gICAgbGV0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGE7XG5cbiAgICAvLyNyZWdpb24gcHJldmVudCBlbXB0eSB0cmVlXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkgYCk7XG4gICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdID0ge307XG4gICAgfVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdID0ge307XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgY29uc3Qgb2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA9IChPYmplY3Qua2V5cyh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXSBhcyBPYmplY3QpLmxlbmd0aCkgK1xuICAgICAgKG9ubHlHZXRMYXN0UmVwbGF5Rm9yTWV0aG9kID8gMCA6IDEpO1xuICAgIGlmIChvbmx5R2V0TGFzdFJlcGxheUZvck1ldGhvZCAmJiAob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiByZXBsYXk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF1bb2JqZWN0SURUb0NyZWF0ZU9yTGFzdF0pKSB7XG4gICAgICAvLyBsb2cuaShgKCR7bWV0YS5lbmRwb2ludH0pKCR7bWV0YS5wYXRofSkoJHttZXRob2R9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdW29iamVjdElEVG9DcmVhdGVPckxhc3RdID0gPE1vZGVscy5SZXBsYXlEYXRhPntcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcbiAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXBsYXkgPSB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVtvYmplY3RJRFRvQ3JlYXRlT3JMYXN0XTtcblxuICAgIGlmICghXy5pc051bWJlcihyZXBsYXkuaWQpKSB7XG4gICAgICBpZiAoUmVzdFJlcXVlc3Quam9iSWQgPT09IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIFJlc3RSZXF1ZXN0LmpvYklkID0gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgam9iaWQ6IG51bWJlciA9IFJlc3RSZXF1ZXN0LmpvYklkKys7XG4gICAgICByZXBsYXkuaWQgPSBqb2JpZDtcbiAgICAgIGNvbnN0IHN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IHJlcGxheS5zdWJqZWN0O1xuICAgICAgc3ViamVjdFtqb2JJRGtleV0gPSBqb2JpZDsgLy8gbW9kaWZ5IGludGVybmFsIHJ4anMgc3ViamVjdCBvYmpcblxuICAgICAgdGhpcy5tZXRhW2pvYmlkXSA9IG1ldGE7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdID0gc3ViamVjdDtcblxuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjdXN0b21PYnNdID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgIC8vIG9ic2VydmVyLnJlbW92ZSgoKSA9PiB7XG5cbiAgICAgICAgLy8gfSk7XG4gICAgICAgIG9ic2VydmVyLmFkZCgoKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYGNhbmNlbCBvYnNlcnZhYmxlIGpvYiR7am9iaWR9YClcbiAgICAgICAgICBpZiAoIXRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSgnW25nMi1yZXN0XSBvbiBwdXJwb3NlIGNhbmNlbGVkIGh0dHAgcmVxdWVzdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc29tZWhvdyBzZWNvbmQgdGltZSBjYW5jZWwgJHtqb2JpZH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc3ViID0gc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGEgPT4gb2JzZXJ2ZXIubmV4dChhKSxcbiAgICAgICAgICBlcnJvcjogYSA9PiBvYnNlcnZlci5lcnJvcihhKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuXG4gICAgICAvLyNyZWdpb24gRElTUE9TRSAgQFVOQ09NTUVOVCBBRlRFUiBURVNUU1xuICAgICAgLy8gaWYgKG9iamVjdElEVG9DcmVhdGVPckxhc3QgPiAyKSB7XG4gICAgICAvLyAgIGNvbnN0IG9sZFJlcTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVsob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCAtIDIpXTtcbiAgICAgIC8vICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5tZXRhW29sZFJlcS5pZF0pKSB7XG4gICAgICAvLyAgICAgLy8gY2FudCBkZWxldGUgdGhpcyAtIGZvciBjb3VudGVyIHB1cnBvc2VcbiAgICAgIC8vICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVsob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCAtIDIpXSA9IHt9O1xuICAgICAgLy8gICAgIGRlbGV0ZSB0aGlzLnN1YmplY3RJbnVVc2Vbb2xkUmVxLmlkXTtcbiAgICAgIC8vICAgICBkZWxldGUgdGhpcy5tZXRhW29sZFJlcS5pZF07XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIC8vI2VuZHJlZ2lvblxuICAgIH1cblxuICAgIHJldHVybiByZXBsYXk7XG4gIH1cblxuXG4gIC8vI3JlZ2lvbiBodHRwIG1ldGhvZHNcblxuICBwcml2YXRlIGdlbmVyYWxSZXEoXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheShtZXRob2QsIG1ldGEsIGZhbHNlKTtcbiAgICByZXBsYXkuZGF0YSA9IHsgdXJsLCBib2R5LCBoZWFkZXJzLCBpc0FycmF5IH07XG5cbiAgICAoKHB0aGlzLCBwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkgPT4ge1xuICAgICAgLy8gbG9nLmQoYGZvciAke3B1cmx9IGpvYmlkICR7cGlkfWApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBwdGhpcy5yZXEocHVybCwgcG1ldGhvZCwgcGhlYWRlcnMsIHBib2R5LCBwaWQsIHBpc0FycmF5LCBwbW9ja0h0dHApKTtcbiAgICB9KSh0aGlzLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5LCBtb2NrSHR0cClcblxuICAgIGNvbnN0IHJlc3A6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+ID0gZmlyc3RWYWx1ZUZyb20ocmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXSkgYXMgYW55O1xuICAgIHJlc3Aub2JzZXJ2YWJsZSA9IHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic107XG4gICAgcmVzcC5jYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoe1xuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2QsXG4gICAgICB1cmxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcDtcbiAgfVxuXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2dldCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2hlYWQnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdkZWxldGUnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLFxuICAgIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICAgIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ3Bvc3QnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncHV0JywgdXJsLCBib2R5LCBoZWFkZXJzLCBtZXRhLCBpc0FycmF5LCBtb2NrSHR0cCk7XG4gIH1cblxuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncGF0Y2gnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIGpzb25wKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheSgnanNvbnAnLCBtZXRhLCBmYWxzZSk7XG4gICAgY29uc3Qgam9iaWQgPSByZXBsYXkuaWQ7XG4gICAgY29uc3QgbWV0aG9kID0gJ2pzb25wJ1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHVybC5lbmRzV2l0aCgnLycpKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpXG4gICAgICBsZXQgbnVtID0gTWF0aC5yb3VuZCgxMDAwMCAqIE1hdGgucmFuZG9tKCkpO1xuICAgICAgbGV0IGNhbGxiYWNrTWV0aG9kTmFtZSA9IFwiY2JfXCIgKyBudW07XG4gICAgICB3aW5kb3dbY2FsbGJhY2tNZXRob2ROYW1lXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrQ2FjaGUoe1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgbWV0aG9kXG4gICAgICAgIH0sIGpvYmlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICAgIHJlczoge1xuICAgICAgICAgICAgZGF0YSwgaXNBcnJheVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGpvYmlkLFxuICAgICAgICAgIGlzQXJyYXlcbiAgICAgICAgfSwge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgbGV0IHNjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzYy5zcmMgPSBgJHt1cmx9P2NhbGxiYWNrPSR7Y2FsbGJhY2tNZXRob2ROYW1lfWA7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2MpO1xuICAgIH0pXG5cbiAgICBjb25zdCByZXNwOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiA9IGZpcnN0VmFsdWVGcm9tKHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic10pIGFzIGFueTtcbiAgICByZXNwLm9ic2VydmFibGUgPSByZXBsYXkuc3ViamVjdFtjdXN0b21PYnNdO1xuICAgIGNvbnNvbGUubG9nKCdhc3NpZ2luZyBjdXN0b20gb2JzZXJ2YWJsZScpXG4gICAgcmVzcC5jYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoe1xuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2QsXG4gICAgICB1cmxcbiAgICB9KVxuICAgIHJldHVybiByZXNwO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICBwcml2YXRlIHJlcGxheVN1YmplY3RzID0ge307XG4gIHB1YmxpYyByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCwgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0KSB7XG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KG1ldGhvZCwgbWV0YSwgdHJ1ZSk7XG4gICAgaWYgKCFyZXBsYXkgfHwgIXJlcGxheS5kYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vIHJlcGxheSBmaXJzdCAke21ldGhvZH0gcmVxdWVzdCBmcm9tICR7bWV0YS5lbmRwb2ludH0vJHttZXRhLnBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfTtcbiAgICBpZiAocmVwbGF5ICYmIHJlcGxheS5zdWJqZWN0ICYmIEFycmF5LmlzQXJyYXkocmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzKSAmJlxuICAgICAgcmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKGBObyBvYnNlcnZhdG9ycyBmb3IgJHttZXRob2R9IHJlcXVlc3QgZnJvbSAke21ldGEuZW5kcG9pbnR9LyR7bWV0YS5wYXRofWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSByZXBsYXkuZGF0YS51cmw7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcGxheS5kYXRhLmhlYWRlcnM7XG4gICAgY29uc3QgYm9keSA9IHJlcGxheS5kYXRhLmJvZHk7XG4gICAgY29uc3QgaXNBcnJheSA9IHJlcGxheS5kYXRhLmlzQXJyYXk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlcSh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5KSlcbiAgfVxuXG59XG4iXX0=
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQTtBQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUN6QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDOUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzVCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUdoQyxzQkFBc0I7QUFDdEIsWUFBWTtBQUVaLE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSVUsa0JB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QUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUM1RSxDQUFDOztBQS9hYyxpQkFBSyxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmltcG9ydCBheGlvcywgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nLCBMb2dnZXIgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuXG5pbXBvcnQgeyBSZXF1ZXN0Q2FjaGUgfSBmcm9tICcuL3JlcXVlc3QtY2FjaGUnO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnW25nMi1yZXN0XSByZXN0LXJlcXVlc3QnXG4gICwgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmNvbnN0IGpvYklEa2V5ID0gJ2pvYklEJztcbmNvbnN0IGN1c3RvbU9icyA9ICdjdXN0b21PYnMnO1xuY29uc3QgY2FuY2VsRm4gPSAnY2FuY2VsRm4nO1xuY29uc3QgaXNDYW5jZWxlZCA9ICdpc0NhbmNlbGVkJztcbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBhbnk7XG5cbi8vI3JlZ2lvbiBtb2NrIHJlcXVlc3Rcbi8vI2VuZHJlZ2lvblxuXG5leHBvcnQgY2xhc3MgUmVzdFJlcXVlc3Qge1xuXG4gIHB1YmxpYyBzdGF0aWMgem9uZTtcbiAgcHJpdmF0ZSBzdGF0aWMgam9iSWQgPSAwO1xuICBwcml2YXRlIHN1YmplY3RJbnVVc2U6IHsgW2lkOiBudW1iZXJdOiBTdWJqZWN0PGFueT4gfSA9IHt9O1xuICBwcml2YXRlIG1ldGE6IHsgW2lkOiBudW1iZXJdOiBNb2RlbHMuTWV0YVJlcXVlc3QgfSA9IHt9O1xuXG5cbiAgcHJpdmF0ZSBoYW5kbGVyUmVzdWx0KG9wdGlvbnM6IE1vZGVscy5IYW5kbGVSZXN1bHRPcHRpb25zLFxuICAgIHNvdXJjZVJlcXVlc3Q6IE1vZGVscy5IYW5kbGVSZXN1bHRTb3VyY2VSZXF1ZXN0T3B0aW9ucykge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMpKSB7XG4gICAgICBvcHRpb25zID0ge30gYXMgYW55O1xuICAgIH1cbiAgICAvLyBsb2cuZChgSEFORExFIFJFU1VMVCAoam9iaWQ6JHtvcHRpb25zLmpvYmlkfSkgJHtzb3VyY2VSZXF1ZXN0LnVybH1gKTtcbiAgICBjb25zdCB7IHJlcywgam9iaWQsIGlzQXJyYXksIG1ldGhvZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICh0eXBlb2YgcmVzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZXNwb3Nuc2UgZm9yIHJlcXVlc3QuICcpO1xuICAgIH1cblxuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgcmVzLmhlYWRlcnMgPSBSZXN0SGVhZGVycy5mcm9tKHJlcy5oZWFkZXJzKTtcbiAgICB9XG5cbiAgICAvLyBlcnJvciBubyBpbnRlcm5ldFxuICAgIGlmIChyZXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0uZXJyb3IobmV3IE1vZGVscy5IdHRwUmVzcG9uc2VFcnJvcihyZXMuZXJyb3IsIHJlcy5kYXRhLCByZXMuaGVhZGVycywgcmVzLmNvZGUsIGpvYmlkKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMubWV0YVtqb2JpZF0uZW50aXR5O1xuICAgIGNvbnN0IGNpcmN1bGFyID0gdGhpcy5tZXRhW2pvYmlkXS5jaXJjdWxhcjtcblxuICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KVxuXG4gICAgY29uc3QgcmVxUmVzcCA9IG5ldyBNb2RlbHMuSHR0cFJlc3BvbnNlKHNvdXJjZVJlcXVlc3QsIHJlcy5kYXRhLCByZXMuaGVhZGVycywgcmVzLmNvZGUsIGVudGl0eSwgY2lyY3VsYXIsIGpvYmlkLCBpc0FycmF5KTtcbiAgICBzdWNjZXNzLm5leHQocmVxUmVzcCk7XG5cbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQocmVxUmVzcCk7XG4gICAgdGhpcy5tZXRhW2pvYmlkXSA9IHZvaWQgMDtcbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLmNvbXBsZXRlKCk7XG4gIH1cbiAgY2hlY2tDYWNoZShzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMsIGpvYmlkOiBudW1iZXIpIHtcbiAgICBjb25zdCBleGlzdGVkSW5DYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoc291cmNlUmVxdWVzdCk7XG4gICAgaWYgKGV4aXN0ZWRJbkNhY2hlKSB7XG4gICAgICBsb2cuaSgnY2FjaGUgZXhpc3RzJywgZXhpc3RlZEluQ2FjaGUpXG4gICAgICBjb25zdCBzdWNjZXNzID0gKFJlc291cmNlWydfbGlzdGVuU3VjY2VzcyddIGFzIFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+Pik7XG4gICAgICBzdWNjZXNzLm5leHQoZXhpc3RlZEluQ2FjaGUucmVzcG9uc2UpO1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5uZXh0KGV4aXN0ZWRJbkNhY2hlKTtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0uY29tcGxldGUoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBsb2cuaShgY2FjaGUgbm90IGV4aXN0cyBmb3Igam9iaWQgJHtqb2JpZH1gKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVxKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsXG4gICAgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgIGJvZHk/OiBhbnksXG4gICAgam9iaWQ/OiBudW1iZXIsXG4gICAgaXNBcnJheSA9IGZhbHNlLFxuICAgIG1vY2tIdHRwPzogTW9kZWxzLk1vY2tIdHRwXG4gICkge1xuICAgIGlmICh0aGlzLmNoZWNrQ2FjaGUoe1xuICAgICAgdXJsLFxuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2RcbiAgICB9LCBqb2JpZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBDYW5jZWxUb2tlbiA9IGF4aW9zLkNhbmNlbFRva2VuO1xuICAgIGNvbnN0IHNvdXJjZSA9IENhbmNlbFRva2VuLnNvdXJjZSgpO1xuICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dID0gc291cmNlLmNhbmNlbDtcblxuICAgIHZhciByZXNwb25zZTogQXhpb3NSZXNwb25zZTxhbnk+O1xuICAgIGlmIChtb2NrSHR0cCkge1xuXG4gICAgICBpZiAodHlwZW9mIG1vY2tIdHRwID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXNwb25zZSA9IHtcbiAgICAgICAgICBkYXRhOiBtb2NrSHR0cC5kYXRhLFxuICAgICAgICAgIHN0YXR1czogbW9ja0h0dHAuY29kZSxcbiAgICAgICAgICBoZWFkZXJzOiBtb2NrSHR0cC5oZWFkZXJzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IG1vY2tIdHRwLmVycm9yLFxuICAgICAgICAgIGNvbmZpZzoge31cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbW9ja0h0dHAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgciA9IG1vY2tIdHRwKHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5KTtcbiAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgZGF0YTogci5kYXRhLFxuICAgICAgICAgIHN0YXR1czogci5jb2RlLFxuICAgICAgICAgIGhlYWRlcnM6IHIuaGVhZGVycyxcbiAgICAgICAgICBzdGF0dXNUZXh0OiByLmVycm9yLFxuICAgICAgICAgIGNvbmZpZzoge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICAgIGxvZy5kKGBbJHttZXRob2R9XSAoam9iaWQ9JHtqb2JpZH0pIHJlcXVlc3QgdG86ICAke3VybH1gKTtcblxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGRhdGE6IGJvZHksXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgICAgaGVhZGVyczogaGVhZGVycy50b0pTT04oKSxcbiAgICAgICAgICBjYW5jZWxUb2tlbjogc291cmNlLnRva2VuLFxuICAgICAgICAgIC8vIHdpdGhDcmVkZW50aWFsczogdHJ1ZSwgLy8gdGhpcyBjYW4gYmUgZG9uZSBtYW51YWxseVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gbG9nLmQoYGFmdGVyIHJlc3BvbnNlIG9mIGpvYmlkOiAke2pvYmlkfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFuZGxlclJlc3VsdCh7XG4gICAgICAgIHJlczoge1xuICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLnN0YXR1cyBhcyBhbnksXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgam9iaWQsXG4gICAgICAgIGlzQXJyYXlcbiAgICAgIH0sIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBib2R5LFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGlzQXJyYXksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChjYXRjaGVkRXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2lzQ2FuY2VsZWRdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdFUlJPUiBSRVNQT05FU0UgY2F0Y2hlZEVycm9yIHR5cGVvZiAnLCB0eXBlb2YgY2F0Y2hlZEVycm9yKVxuICAgICAgLy8gY29uc29sZS5sb2coJ0VSUk9SIFJFU1BPTkVTRSBjYXRjaGVkRXJyb3InLCBjYXRjaGVkRXJyb3IpXG4gICAgICBpZiAodHlwZW9mIGNhdGNoZWRFcnJvciA9PT0gJ29iamVjdCcgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhO1xuICAgICAgICBjb25zdCBtc2c6IHN0cmluZyA9IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhLm1lc3NhZ2UgfHwgJyc7XG4gICAgICAgIGxldCBzdGFjazogc3RyaW5nW10gPSAoZXJyLnN0YWNrIHx8ICcnKS5zcGxpdCgnXFxuJyk7XG5cbiAgICAgICAgY29uc3QgZXJyT2JzID0gKFJlc291cmNlWydfbGlzdGVuRXJyb3JzJ10gYXMgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPik7XG4gICAgICAgIGVyck9icy5uZXh0KHtcbiAgICAgICAgICBtc2csXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgZGF0YTogY2F0Y2hlZEVycm9yLnJlc3BvbnNlLmRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBlcnJvciA9IChjYXRjaGVkRXJyb3IgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlKSA/IGBbJHtjYXRjaGVkRXJyb3IucmVzcG9uc2Uuc3RhdHVzVGV4dH1dOiBgIDogJyc7XG4gICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICByZXM6IHtcbiAgICAgICAgICBjb2RlOiAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBjYXRjaGVkRXJyb3IucmVzcG9uc2Uuc3RhdHVzIGFzIGFueSA6IHZvaWQgMCxcbiAgICAgICAgICBlcnJvcjogYCR7ZXJyb3J9JHtjYXRjaGVkRXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgIGRhdGE6IChjYXRjaGVkRXJyb3IgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlKSA/IEpTT04uc3RyaW5naWZ5KGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhKSA6IHZvaWQgMCxcbiAgICAgICAgICBpc0FycmF5LFxuICAgICAgICAgIGpvYmlkLFxuICAgICAgICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLmZyb20oY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UuaGVhZGVycylcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBqb2JpZCxcbiAgICAgICAgaXNBcnJheVxuICAgICAgfSwge1xuICAgICAgICB1cmwsXG4gICAgICAgIGJvZHksXG4gICAgICAgIGlzQXJyYXksXG4gICAgICAgIG1ldGhvZFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCwgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LCBvbmx5R2V0TGFzdFJlcGxheUZvck1ldGhvZDogYm9vbGVhbik6IE1vZGVscy5SZXBsYXlEYXRhIHtcbiAgICBsZXQgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YTtcblxuICAgIC8vI3JlZ2lvbiBwcmV2ZW50IGVtcHR5IHRyZWVcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdKSkge1xuICAgICAgLy8gbG9nLmkoYCgke21ldGEuZW5kcG9pbnR9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF0gPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdKSkge1xuICAgICAgLy8gbG9nLmkoYCgke21ldGEuZW5kcG9pbnR9KSgke21ldGEucGF0aH0pIGApO1xuICAgICAgdGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdID0ge307XG4gICAgfVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdKSkge1xuICAgICAgLy8gbG9nLmkoYCgke21ldGEuZW5kcG9pbnR9KSgke21ldGEucGF0aH0pIGApO1xuICAgICAgdGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF0gPSB7fTtcbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICBjb25zdCBvYmplY3RJRFRvQ3JlYXRlT3JMYXN0ID0gKE9iamVjdC5rZXlzKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdIGFzIE9iamVjdCkubGVuZ3RoKSArXG4gICAgICAob25seUdldExhc3RSZXBsYXlGb3JNZXRob2QgPyAwIDogMSk7XG4gICAgaWYgKG9ubHlHZXRMYXN0UmVwbGF5Rm9yTWV0aG9kICYmIChvYmplY3RJRFRvQ3JlYXRlT3JMYXN0ID09PSAwKSkge1xuICAgICAgcmV0dXJuIHJlcGxheTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVtvYmplY3RJRFRvQ3JlYXRlT3JMYXN0XSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSgke21ldGhvZH0pIGApO1xuICAgICAgdGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF1bb2JqZWN0SURUb0NyZWF0ZU9yTGFzdF0gPSA8TW9kZWxzLlJlcGxheURhdGE+e1xuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpLFxuICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJlcGxheSA9IHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdW29iamVjdElEVG9DcmVhdGVPckxhc3RdO1xuXG4gICAgaWYgKCFfLmlzTnVtYmVyKHJlcGxheS5pZCkpIHtcbiAgICAgIGlmIChSZXN0UmVxdWVzdC5qb2JJZCA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgUmVzdFJlcXVlc3Quam9iSWQgPSAwO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBqb2JpZDogbnVtYmVyID0gUmVzdFJlcXVlc3Quam9iSWQrKztcbiAgICAgIHJlcGxheS5pZCA9IGpvYmlkO1xuICAgICAgY29uc3Qgc3ViamVjdDogU3ViamVjdDxhbnk+ID0gcmVwbGF5LnN1YmplY3Q7XG4gICAgICBzdWJqZWN0W2pvYklEa2V5XSA9IGpvYmlkOyAvLyBtb2RpZnkgaW50ZXJuYWwgcnhqcyBzdWJqZWN0IG9ialxuXG4gICAgICB0aGlzLm1ldGFbam9iaWRdID0gbWV0YTtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0gPSBzdWJqZWN0O1xuXG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2N1c3RvbU9ic10gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgLy8gb2JzZXJ2ZXIucmVtb3ZlKCgpID0+IHtcblxuICAgICAgICAvLyB9KTtcbiAgICAgICAgb2JzZXJ2ZXIuYWRkKCgpID0+IHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgY2FuY2VsIG9ic2VydmFibGUgam9iJHtqb2JpZH1gKVxuICAgICAgICAgIGlmICghdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dKCdbbmcyLXJlc3RdIG9uIHB1cnBvc2UgY2FuY2VsZWQgaHR0cCByZXF1ZXN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBzb21laG93IHNlY29uZCB0aW1lIGNhbmNlbCAke2pvYmlkfWApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzdWIgPSBzdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogYSA9PiBvYnNlcnZlci5uZXh0KGEpLFxuICAgICAgICAgIGVycm9yOiBhID0+IG9ic2VydmVyLmVycm9yKGEpLFxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG5cbiAgICAgIC8vI3JlZ2lvbiBESVNQT1NFICBAVU5DT01NRU5UIEFGVEVSIFRFU1RTXG4gICAgICAvLyBpZiAob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA+IDIpIHtcbiAgICAgIC8vICAgY29uc3Qgb2xkUmVxOiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdWyhvYmplY3RJRFRvQ3JlYXRlT3JMYXN0IC0gMildO1xuICAgICAgLy8gICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLm1ldGFbb2xkUmVxLmlkXSkpIHtcbiAgICAgIC8vICAgICAvLyBjYW50IGRlbGV0ZSB0aGlzIC0gZm9yIGNvdW50ZXIgcHVycG9zZVxuICAgICAgLy8gICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdWyhvYmplY3RJRFRvQ3JlYXRlT3JMYXN0IC0gMildID0ge307XG4gICAgICAvLyAgICAgZGVsZXRlIHRoaXMuc3ViamVjdEludVVzZVtvbGRSZXEuaWRdO1xuICAgICAgLy8gICAgIGRlbGV0ZSB0aGlzLm1ldGFbb2xkUmVxLmlkXTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgICAgLy8jZW5kcmVnaW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcGxheTtcbiAgfVxuXG5cbiAgLy8jcmVnaW9uIGh0dHAgbWV0aG9kc1xuXG4gIHByaXZhdGUgZ2VuZXJhbFJlcShcbiAgICBtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kLFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuXG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KG1ldGhvZCwgbWV0YSwgZmFsc2UpO1xuICAgIHJlcGxheS5kYXRhID0geyB1cmwsIGJvZHksIGhlYWRlcnMsIGlzQXJyYXkgfTtcblxuICAgICgocHRoaXMsIHB1cmwsIHBtZXRob2QsIHBoZWFkZXJzLCBwYm9keSwgcGlkLCBwaXNBcnJheSwgcG1vY2tIdHRwKSA9PiB7XG4gICAgICAvLyBsb2cuZChgZm9yICR7cHVybH0gam9iaWQgJHtwaWR9YCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHB0aGlzLnJlcShwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkpO1xuICAgIH0pKHRoaXMsIHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXBsYXkuaWQsIGlzQXJyYXksIG1vY2tIdHRwKVxuXG4gICAgY29uc3QgcmVzcDogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4gPSBmaXJzdFZhbHVlRnJvbShyZXBsYXkuc3ViamVjdFtjdXN0b21PYnNdKSBhcyBhbnk7XG4gICAgcmVzcC5vYnNlcnZhYmxlID0gcmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXTtcbiAgICByZXNwLmNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeSh7XG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybFxuICAgIH0pO1xuICAgIHJldHVybiByZXNwO1xuICB9XG5cbiAgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbiwgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgnZ2V0JywgdXJsLCBib2R5LCBoZWFkZXJzLCBtZXRhLCBpc0FycmF5LCBtb2NrSHR0cCk7XG4gIH1cblxuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbiwgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgnaGVhZCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2RlbGV0ZScsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncG9zdCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdwdXQnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdwYXRjaCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAganNvbnAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLFxuICAgIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICAgIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuXG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KCdqc29ucCcsIG1ldGEsIGZhbHNlKTtcbiAgICBjb25zdCBqb2JpZCA9IHJlcGxheS5pZDtcbiAgICBjb25zdCBtZXRob2QgPSAnanNvbnAnXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMSlcbiAgICAgIGxldCBudW0gPSBNYXRoLnJvdW5kKDEwMDAwICogTWF0aC5yYW5kb20oKSk7XG4gICAgICBsZXQgY2FsbGJhY2tNZXRob2ROYW1lID0gXCJjYl9cIiArIG51bTtcbiAgICAgIHdpbmRvd1tjYWxsYmFja01ldGhvZE5hbWVdID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBtZXRob2RcbiAgICAgICAgfSwgam9iaWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlclJlc3VsdCh7XG4gICAgICAgICAgcmVzOiB7XG4gICAgICAgICAgICBkYXRhLCBpc0FycmF5XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgam9iaWQsXG4gICAgICAgICAgaXNBcnJheVxuICAgICAgICB9LCB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBsZXQgc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjLnNyYyA9IGAke3VybH0/Y2FsbGJhY2s9JHtjYWxsYmFja01ldGhvZE5hbWV9YDtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2MpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzYyk7XG4gICAgfSlcblxuICAgIGNvbnN0IHJlc3A6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+ID0gZmlyc3RWYWx1ZUZyb20ocmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXSkgYXMgYW55O1xuICAgIHJlc3Aub2JzZXJ2YWJsZSA9IHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic107XG4gICAgY29uc29sZS5sb2coJ2Fzc2lnaW5nIGN1c3RvbSBvYnNlcnZhYmxlJylcbiAgICByZXNwLmNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeSh7XG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybFxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIHByaXZhdGUgcmVwbGF5U3ViamVjdHMgPSB7fTtcbiAgcHVibGljIHJlcGxheShtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kLCBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QpIHtcbiAgICBjb25zdCByZXBsYXk6IE1vZGVscy5SZXBsYXlEYXRhID0gdGhpcy5nZXRSZXBsYXkobWV0aG9kLCBtZXRhLCB0cnVlKTtcbiAgICBpZiAoIXJlcGxheSB8fCAhcmVwbGF5LmRhdGEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ2Fubm8gcmVwbGF5IGZpcnN0ICR7bWV0aG9kfSByZXF1ZXN0IGZyb20gJHttZXRhLmVuZHBvaW50fS8ke21ldGEucGF0aH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9O1xuICAgIGlmIChyZXBsYXkgJiYgcmVwbGF5LnN1YmplY3QgJiYgQXJyYXkuaXNBcnJheShyZXBsYXkuc3ViamVjdC5vYnNlcnZlcnMpICYmXG4gICAgICByZXBsYXkuc3ViamVjdC5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLndhcm4oYE5vIG9ic2VydmF0b3JzIGZvciAke21ldGhvZH0gcmVxdWVzdCBmcm9tICR7bWV0YS5lbmRwb2ludH0vJHttZXRhLnBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHJlcGxheS5kYXRhLnVybDtcbiAgICBjb25zdCBoZWFkZXJzID0gcmVwbGF5LmRhdGEuaGVhZGVycztcbiAgICBjb25zdCBib2R5ID0gcmVwbGF5LmRhdGEuYm9keTtcbiAgICBjb25zdCBpc0FycmF5ID0gcmVwbGF5LmRhdGEuaXNBcnJheTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVxKHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXBsYXkuaWQsIGlzQXJyYXkpKVxuICB9XG5cbn1cbiJdfQ==
|