@hestia-earth/ui-components 0.9.3 → 0.9.5
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/common/compound.d.ts +1 -1
- package/common/compound.pipe.d.ts +1 -1
- package/engine/aggregation-engine.service.d.ts +1 -23
- package/esm2020/common/compound.mjs +8 -6
- package/esm2020/engine/aggregation-engine.service.mjs +2 -28
- package/esm2020/files/files-form.model.mjs +2 -2
- package/esm2020/node/node-logs-models/node-logs-models.component.mjs +3 -3
- package/fesm2015/hestia-earth-ui-components.mjs +11 -36
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +11 -34
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/package.json +2 -1
package/common/compound.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class CompoundPipe implements PipeTransform {
|
|
4
|
-
transform(value: string):
|
|
4
|
+
transform(value: string): any;
|
|
5
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<CompoundPipe, never>;
|
|
6
6
|
static ɵpipe: i0.ɵɵPipeDeclaration<CompoundPipe, "compound", false>;
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { NodeType
|
|
2
|
+
import { NodeType } from '@hestia-earth/schema';
|
|
3
3
|
import { HeNodeService } from '../node/node.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare const lookups: Readonly<{
|
|
@@ -19,24 +19,12 @@ export interface IAggregationModel {
|
|
|
19
19
|
dataPath: string;
|
|
20
20
|
'@id'?: string;
|
|
21
21
|
}
|
|
22
|
-
export interface ILookups {
|
|
23
|
-
crop: any[];
|
|
24
|
-
cropYield: any[];
|
|
25
|
-
}
|
|
26
|
-
export interface ITriggerCountryParams {
|
|
27
|
-
country: Term;
|
|
28
|
-
product: Product;
|
|
29
|
-
'@type'?: NodeType;
|
|
30
|
-
}
|
|
31
22
|
export declare class HeAggregationEngineService {
|
|
32
23
|
protected http: HttpClient;
|
|
33
24
|
protected nodeService: HeNodeService;
|
|
34
25
|
private modelsLoading;
|
|
35
26
|
private modelsLoaded;
|
|
36
27
|
private _models;
|
|
37
|
-
private lookupsLoading;
|
|
38
|
-
private lookupsLoaded;
|
|
39
|
-
private _lookups;
|
|
40
28
|
constructor(http: HttpClient, nodeService: HeNodeService);
|
|
41
29
|
private init;
|
|
42
30
|
private loadModels;
|
|
@@ -44,16 +32,6 @@ export declare class HeAggregationEngineService {
|
|
|
44
32
|
models(): Promise<IAggregationModel[]>;
|
|
45
33
|
model$(model: Partial<IAggregationModel>): import("rxjs").Observable<IAggregationModel>;
|
|
46
34
|
model(model: Partial<IAggregationModel>): Promise<IAggregationModel>;
|
|
47
|
-
private loadLookup;
|
|
48
|
-
private loadLookups;
|
|
49
|
-
get lookups$(): import("rxjs").Observable<{
|
|
50
|
-
cropYield: any[];
|
|
51
|
-
crop: any[];
|
|
52
|
-
}>;
|
|
53
|
-
lookups(): Promise<{
|
|
54
|
-
cropYield: any[];
|
|
55
|
-
crop: any[];
|
|
56
|
-
}>;
|
|
57
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeAggregationEngineService, never>;
|
|
58
36
|
static ɵprov: i0.ɵɵInjectableDeclaration<HeAggregationEngineService>;
|
|
59
37
|
}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* @param value The compound as a string (e.g. NO3)
|
|
5
5
|
* @returns HTML version with subscript and superscript tags.
|
|
6
6
|
*/
|
|
7
|
-
export const compoundToHtml = (value) =>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const compoundToHtml = (value) => typeof value === 'string'
|
|
8
|
+
? (value || '')
|
|
9
|
+
.replace(/([A-Z]+[\d]+)([\d]{1}[\-\+])/g, '$1<sup>$2</sup>')
|
|
10
|
+
.replace(/([A-Z]+)([\d]{1})([\-\+])/g, '$1<sub>$2</sub><sup>$3</sup>')
|
|
11
|
+
.replace(/([A-LN-Za-ln-z])(\d+)/g, '$1<sub>$2</sub>')
|
|
12
|
+
.replace(/([O])([x])/g, '$1<sub>$2</sub>')
|
|
13
|
+
: value;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbXBvdW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDM0MsT0FBTyxLQUFLLEtBQUssUUFBUTtJQUN2QixDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1NBQ1osT0FBTyxDQUFDLCtCQUErQixFQUFFLGlCQUFpQixDQUFDO1NBQzNELE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSw4QkFBOEIsQ0FBQztTQUNyRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLENBQUM7U0FDcEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztJQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIYW5kbGVzIDxzdXA+IGFuZCA8c3ViPiBodG1sIHRhZ3MgZm9yIGNvbXBvdW5kcy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGNvbXBvdW5kIGFzIGEgc3RyaW5nIChlLmcuIE5PMylcbiAqIEByZXR1cm5zIEhUTUwgdmVyc2lvbiB3aXRoIHN1YnNjcmlwdCBhbmQgc3VwZXJzY3JpcHQgdGFncy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBvdW5kVG9IdG1sID0gKHZhbHVlOiBhbnkpID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICA/ICh2YWx1ZSB8fCAnJylcbiAgICAgIC5yZXBsYWNlKC8oW0EtWl0rW1xcZF0rKShbXFxkXXsxfVtcXC1cXCtdKS9nLCAnJDE8c3VwPiQyPC9zdXA+JylcbiAgICAgIC5yZXBsYWNlKC8oW0EtWl0rKShbXFxkXXsxfSkoW1xcLVxcK10pL2csICckMTxzdWI+JDI8L3N1Yj48c3VwPiQzPC9zdXA+JylcbiAgICAgIC5yZXBsYWNlKC8oW0EtTE4tWmEtbG4tel0pKFxcZCspL2csICckMTxzdWI+JDI8L3N1Yj4nKVxuICAgICAgLnJlcGxhY2UoLyhbT10pKFt4XSkvZywgJyQxPHN1Yj4kMjwvc3ViPicpXG4gICAgOiB2YWx1ZTtcbiJdfQ==
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { of, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { catchError, map, take } from 'rxjs/operators';
|
|
4
|
-
import { TermTermType } from '@hestia-earth/schema';
|
|
5
|
-
import * as csvtojson from 'csvtojson';
|
|
6
4
|
import { gitBranch, gitHome, gitRawBaseUrl } from '../common/utils';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
6
|
import * as i1 from "@angular/common/http";
|
|
@@ -20,9 +18,6 @@ export class HeAggregationEngineService {
|
|
|
20
18
|
this.modelsLoading = false;
|
|
21
19
|
this.modelsLoaded = false;
|
|
22
20
|
this._models = new ReplaySubject(1);
|
|
23
|
-
this.lookupsLoading = false;
|
|
24
|
-
this.lookupsLoaded = false;
|
|
25
|
-
this._lookups = new ReplaySubject(1);
|
|
26
21
|
this.init();
|
|
27
22
|
}
|
|
28
23
|
async init() {
|
|
@@ -53,27 +48,6 @@ export class HeAggregationEngineService {
|
|
|
53
48
|
model(model) {
|
|
54
49
|
return this.model$(model).pipe(take(1)).toPromise();
|
|
55
50
|
}
|
|
56
|
-
async loadLookup(filename) {
|
|
57
|
-
const data = await this.nodeService.downloadLookup(filename);
|
|
58
|
-
return csvtojson({ delimiter: 'auto' }).fromString(data);
|
|
59
|
-
}
|
|
60
|
-
loadLookups() {
|
|
61
|
-
return forkJoin({
|
|
62
|
-
cropYield: from(this.loadLookup(lookups.cropYield)),
|
|
63
|
-
crop: from(this.loadLookup(TermTermType.crop))
|
|
64
|
-
}).pipe(map(values => {
|
|
65
|
-
this._lookups.next(values);
|
|
66
|
-
this.lookupsLoading = false;
|
|
67
|
-
this.lookupsLoaded = true;
|
|
68
|
-
return values;
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
71
|
-
get lookups$() {
|
|
72
|
-
return this.lookupsLoading || this.lookupsLoaded ? this._lookups.asObservable() : this.loadLookups();
|
|
73
|
-
}
|
|
74
|
-
lookups() {
|
|
75
|
-
return this.lookups$.pipe(take(1)).toPromise();
|
|
76
|
-
}
|
|
77
51
|
}
|
|
78
52
|
HeAggregationEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1.HttpClient }, { token: i2.HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
53
|
HeAggregationEngineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: HeAggregationEngineService, providedIn: 'root' });
|
|
@@ -83,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
83
57
|
providedIn: 'root'
|
|
84
58
|
}]
|
|
85
59
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeNodeService }]; } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2FnZ3JlZ2F0aW9uLWVuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFcEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLHFDQUFxQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQ2xGLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsYUFBYSxvQ0FBb0MsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUV2RixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuQyxTQUFTLEVBQUUsaURBQWlEO0lBQzVELGtCQUFrQixFQUFFLCtCQUErQjtDQUNwRCxDQUFDLENBQUM7QUF1QkgsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQyxZQUNZLElBQWdCLEVBQ2hCLFdBQTBCO1FBRDFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFOOUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksYUFBYSxDQUFzQixDQUFDLENBQUMsQ0FBQztRQU0xRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUk7UUFDaEIsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBeUIsR0FBRyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQy9FLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUE0QixDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RFLEdBQUcsSUFBSTtnQkFDUCxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLE9BQU8sRUFBRTthQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQVksT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWlDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFpQztRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7O3VIQWpEVSwwQkFBMEI7MkhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzJGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vZGVUeXBlLCBQcm9kdWN0LCBUZXJtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2l0QnJhbmNoLCBnaXRIb21lLCBnaXRSYXdCYXNlVXJsIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgZ2l0VXJsID0gKCkgPT4gYCR7Z2l0SG9tZX0vaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZS8tL2Jsb2IvJHtnaXRCcmFuY2goKX1gO1xuY29uc3QgcmF3VXJsID0gKCkgPT4gYCR7Z2l0UmF3QmFzZVVybH0vaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZS8tL3Jhdy8ke2dpdEJyYW5jaCgpfWA7XG5cbmV4cG9ydCBjb25zdCBsb29rdXBzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGNyb3BZaWVsZDogJ3JlZ2lvbi1jcm9wLWNyb3BHcm91cGluZ0Zhb3N0YXRQcm9kdWN0aW9uLXlpZWxkJyxcbiAgY3JvcEdyb3VwaW5nQ29sdW1uOiAnY3JvcEdyb3VwaW5nRmFvc3RhdFByb2R1Y3Rpb24nXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBJQWdncmVnYXRpb25Nb2RlbCB7XG4gIHR5cGU6IE5vZGVUeXBlO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgaW1wbGVtZW50YXRpb24gKGNvZGUpIG9mIHRoZSBtb2RlbC5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZGVsLlxuICAgKi9cbiAgZG9jUGF0aDogc3RyaW5nO1xuICBkYXRhUGF0aDogc3RyaW5nO1xuICAnQGlkJz86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElBZ2dyZWdhdGlvbk1vZGVsTGlua3Mge1xuICBsaW5rczogSUFnZ3JlZ2F0aW9uTW9kZWxbXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVBZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2Uge1xuICBwcml2YXRlIG1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbW9kZWxzID0gbmV3IFJlcGxheVN1YmplY3Q8SUFnZ3JlZ2F0aW9uTW9kZWxbXT4oMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIG5vZGVTZXJ2aWNlOiBIZU5vZGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZE1vZGVscygpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWxzKCkge1xuICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SUFnZ3JlZ2F0aW9uTW9kZWxMaW5rcz4oYCR7cmF3VXJsKCl9L21vZGVsLWxpbmtzLmpzb25gKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih7IGxpbmtzOiBbXSB9IGFzIElBZ2dyZWdhdGlvbk1vZGVsTGlua3MpKSxcbiAgICAgIG1hcCgoeyBsaW5rcyB9KSA9PiB7XG4gICAgICAgIHRoaXMuX21vZGVscy5uZXh0KGxpbmtzLm1hcCgoeyBwYXRoOiBtb2RlbFBhdGgsIGRvY1BhdGgsIC4uLmxpbmsgfSkgPT4gKHtcbiAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgIHBhdGg6IGAke2dpdFVybCgpfS8ke21vZGVsUGF0aH1gLFxuICAgICAgICAgIGRvY1BhdGg6IGAke2dpdFVybCgpfS8ke2RvY1BhdGh9YFxuICAgICAgICB9KSkpO1xuICAgICAgICB0aGlzLm1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2RlbHNMb2FkZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbGlua3M7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBtb2RlbHMkKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsc0xvYWRpbmcgfHwgdGhpcy5tb2RlbHNMb2FkZWQgPyB0aGlzLl9tb2RlbHMuYXNPYnNlcnZhYmxlKCkgOiB0aGlzLmxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGVsJChtb2RlbDogUGFydGlhbDxJQWdncmVnYXRpb25Nb2RlbD4pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHMkLnBpcGUoXG4gICAgICBtYXAobW9kZWxzID0+IG1vZGVscy5maW5kKG0gPT4gT2JqZWN0LmVudHJpZXMobW9kZWwpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0+IHZhbHVlID09PSBtW2tleV0pKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1vZGVsKG1vZGVsOiBQYXJ0aWFsPElBZ2dyZWdhdGlvbk1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVsJChtb2RlbCkucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable complexity */
|
|
2
2
|
import get from 'lodash.get';
|
|
3
|
-
import
|
|
3
|
+
import moment from 'moment';
|
|
4
4
|
import 'moment/locale/en-gb';
|
|
5
5
|
import { v4 as uuidv4 } from 'uuid';
|
|
6
6
|
import { diffInDays, isNumber } from '@hestia-earth/utils';
|
|
@@ -541,4 +541,4 @@ export const calculateCycleStartDate = (properties, property) => {
|
|
|
541
541
|
const endDate = siblingProperty(properties, property, 'endDate');
|
|
542
542
|
return moment(endDate.value).locale('en-gb').subtract(cycleDuration.value, 'days').format('YYYY-MM-DD');
|
|
543
543
|
};
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFDZSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUNqRCxnQkFBZ0IsRUFDL0MsTUFBTSxzQkFBc0IsQ0FBQztBQUs5QixPQUFPLEVBQ2Esd0JBQXdCLEVBQUUsV0FBVyxFQUN2RCx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUMvRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFDdkMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQ3pGLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUNqRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLFVBQVU7Q0FDWCxDQUFDO0FBR0YsTUFBTSxD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bGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2VuLWdiJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZGlmZkluRGF5cywgaXNOdW1iZXIgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7XG4gIEpTT04gYXMgSGVzdGlhSnNvbiwgU2NoZW1hVHlwZSwgTm9kZVR5cGUsIGlzVHlwZU5vZGUsIGlzVHlwZVZhbGlkLCBpc0V4cGFuZGFibGUsXG4gIFNpdGUsIE9yZ2FuaXNhdGlvbiwgUHJvcGVydHksIHR5cGVUb1NjaGVtYVR5cGVcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHtcbiAgZGVmaW5pdGlvbnMsIGRlZmluaXRpb24sIElEZWZpbml0aW9uT2JqZWN0LCBJRGVmaW5pdGlvbkFycmF5LCBnZW5lcmljVHlwZVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL2pzb24tc2NoZW1hJztcblxuaW1wb3J0IHtcbiAgSVZhbGlkYXRpb25FcnJvciwgZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlLCBmb3JtYXRFcnJvcixcbiAgbWlzc2luZ05vZGVFcnJvck1lc3NhZ2UsIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IsIGVycm9ySGFzRXJyb3IsIGVycm9ySGFzV2FybmluZywgdmFsaWRhdGlvbkVycm9yTGV2ZWwsXG4gIG1pc3NpbmdOb2RlRXJyb3JzLCBpc01pc3NpbmdPbmVPZkVycm9yXG59IGZyb20gJy4vZmlsZXMtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtcbiAgc2NoZW1hUmVxdWlyZWRQcm9wZXJ0aWVzLCB2YWx1ZVR5cGVUb0RlZmF1bHQsIGRlZmluaXRpb25Ub1NjaGVtYVR5cGUsIGF2YWlsYWJsZVByb3BlcnRpZXMsXG4gIG5lc3RpbmdUeXBlRW5hYmxlZCwgbmVzdGluZ0VuYWJsZWQsIGxpbmtUeXBlRW5hYmxlZCwgaXNTY2hlbWFJcmlcbn0gZnJvbSAnLi4vc2NoZW1hL3NjaGVtYS5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoQ291bnRyeSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gubW9kZWwnO1xuaW1wb3J0IHsgYmFzZVVybCwgbWFwc1VybCwgc2FmZUpTT05QYXJzZSwgc2FmZUpTT05TdHJpbmdpZnkgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgQVJSQVlfREVMSU1JVEVSID0gJzsnO1xuY29uc3QgcHJpdmF0ZUtleXMgPSBbXG4gICdmaWxlcGF0aCdcbl07XG5cbmV4cG9ydCB0eXBlIHN1Z2dlc3Rpb25UeXBlID0gTm9kZVR5cGUgfCAnc2VsZWN0JyB8ICdkZWZhdWx0JztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U3VnZ2VzdGlvblR5cGU6IHN1Z2dlc3Rpb25UeXBlID0gJ2RlZmF1bHQnO1xuXG5pbnRlcmZhY2UgSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24ge1xuICB0eXBlPzogc3VnZ2VzdGlvblR5cGU7XG4gIHF1ZXJpZXM/OiBhbnlbXTtcbiAgdmFsdWVzPzogc3RyaW5nW107XG4gIHBhcmVudExldmVsPzogbnVtYmVyO1xuICBpc0xpbmtOb2RlPzogYm9vbGVhbjtcbiAgaXNVbmlxdWVLZXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTmV3UHJvcGVydHkge1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9wPzogZGVmaW5pdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRXJyb3JQcm9wZXJ0eSB7XG4gIGxldmVsPzogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHByb3BlcnR5IHdhcyBhZGRlZCBieSB0aGUgdXNlclxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgaXNBZGRlZD86IGJvb2xlYW47XG4gIHNjaGVtYVR5cGU6IFNjaGVtYVR5cGU7XG4gIGtleTogc3RyaW5nO1xuICBmdWxsS2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG4gIGFkZFByb3BlcnR5RW5hYmxlZDogYm9vbGVhbjtcbiAgc3VnZ2VzdGlvbnM/OiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbjtcbiAgc2NoZW1hPzogZGVmaW5pdGlvbjtcbiAgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yO1xuICBoYXNFcnJvcj86IGJvb2xlYW47XG4gIGhhc1dhcm5pbmc/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGNsb3NlZFZpc2libGU/OiBib29sZWFuO1xuICBuZXdQcm9wZXJ0eT86IElOZXdQcm9wZXJ0eTtcbiAgbmV3RXJyb3I/OiBJRXJyb3JQcm9wZXJ0eTtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbiAgaXNBcnJheT86IGJvb2xlYW47XG4gIGlzRXhwYW5kYWJsZT86IGJvb2xlYW47XG4gIGlzT3Blbj86IGJvb2xlYW47XG4gIHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGV4dGVybmFsVXJsPzoge1xuICAgIHVybD86IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGRlZmF1bHQgaXMgZXh0ZXJuYWwtbGluay1hbHRcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHVybFBhcmFtVmFsdWU/OiBib29sZWFuO1xuICB9O1xuICAvLyBtYWtpbmcgY2hhbmdlcyBvbiB0aGUgcHJvcGVydHlcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIC8vIHVzZXIgbWFkZSBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICBjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxuY29uc3Qgc3RyaW5nVmFsdWUgPSAodmFsdWU6IGFueSkgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKS50b1N0cmluZygpO1xuY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGggPSAoa2V5OiBzdHJpbmcpID0+IGtleS5yZXBsYWNlKC9cXFtcXGQrXFxdJC8sICcnKTtcbmV4cG9ydCBjb25zdCBrZXlUb0RhdGFQYXRoID0gKGtleTogc3RyaW5nKSA9PiBrZXk/Lmxlbmd0aCA/IGAuJHtrZXl9YCA6ICcnO1xuZXhwb3J0IGNvbnN0IGRhdGFQYXRoVG9LZXkgPSAoZGF0YVBhdGggPSAnJywgdHJpbUFycmF5ID0gZmFsc2UpID0+XG4gIHRyaW1BcnJheSA/IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoLnN1YnN0cmluZygxKSkgOiBkYXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5leHBvcnQgY29uc3QgcGFyZW50S2V5ID0gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGtleXMgPSAoa2V5LnN0YXJ0c1dpdGgoJy4nKSA/IGtleS5zdWJzdHJpbmcoMSkgOiBrZXkpLnNwbGl0KCcuJyk7XG4gIGtleXMucG9wKCk7XG4gIHJldHVybiBrZXlzLmpvaW4oJy4nKTtcbn07XG5cbi8qKlxuICogU29ydCBwcm9wZXJ0aWVzIGhhdmluZyBlcnJvcnMsIHR5cGUsIGlkLCAuLi5wcm9wZXJ0aWVzIChzaW1wbGUpLCBhbmQgZmluYWxseSB0aGUgZ3JvdXBzXG4gKlxuICogQHBhcmFtIGEge0lOb2RlUHJvcGVydHl9XG4gKiBAcGFyYW0gYiB7SU5vZGVQcm9wZXJ0eX1cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRQcm9wZXJ0aWVzID0gKGE6IElOb2RlUHJvcGVydHksIGI6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgaWYgKGlzTnVtYmVyKGEua2V5KSAmJiBpc051bWJlcihiLmtleSkpIHtcbiAgICByZXR1cm4gK2Eua2V5IC0gK2Iua2V5O1xuICB9XG4gIGlmIChhLmlzRXhwYW5kYWJsZSkge1xuICAgIHJldHVybiBiLmlzRXhwYW5kYWJsZSA/IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpIDogMTtcbiAgfVxuICBpZiAoYi5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhLmtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBjb25zdCBhS2V5ID0gYS5rZXkucmVwbGFjZSgnQCcsICcnKTtcbiAgY29uc3QgYktleSA9IGIua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGlmIChhS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGJLZXkgPT09ICd0eXBlJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChhS2V5ID09PSAnaWQnICYmIGJLZXkgIT09ICd0eXBlJykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoYS5oYXNFcnJvciB8fCBhLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpO1xufTtcblxuY29uc3QgZGVmYXVsdFByb3BlcnR5RXJyb3I6IHtcbiAgW2tleTogc3RyaW5nXTogKGVycm9yOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59ID0ge1xuICBtYXg6ICh7IG1heCB9KSA9PiBgc2hvdWxkIGJlIDw9ICR7bWF4fWAsXG4gIG1pbjogKHsgbWluIH0pID0+IGBzaG91bGQgYmUgPj0gJHttaW59YCxcbiAgcGF0dGVybjogKHsgcmVxdWlyZWRQYXR0ZXJuIH0pID0+IGBzaG91bGQgbWF0Y2ggcGF0dGVybiBcIiR7cmVxdWlyZWRQYXR0ZXJufVwiYCxcbiAgcmVxdWlyZWQ6IChfZSwgeyBzY2hlbWFUeXBlIH0pID0+IHNjaGVtYVR5cGUgPyBgc2hvdWxkIGJlIHNldCBvciBsaW5rZWQgdG8gYW5vdGhlciAke3NjaGVtYVR5cGV9YCA6IHVuZGVmaW5lZFxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFByb3BlcnR5RXJyb3IgPSAoZXJyb3JzOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF07XG4gIHJldHVybiBrZXkgaW4gZGVmYXVsdFByb3BlcnR5RXJyb3IgPyBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UoZGVmYXVsdFByb3BlcnR5RXJyb3Jba2V5XShlcnJvcnNba2V5XSwgcHJvcGVydHkpKSA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0Vycm9yID0gdmFsdWUgPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5zb21lKGhhc0Vycm9yKSA6IHZhbHVlLmhhc0Vycm9yO1xuXG5leHBvcnQgY29uc3QgaGFzV2FybmluZyA9IHZhbHVlID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc29tZShoYXNXYXJuaW5nKSA6IHZhbHVlLmhhc1dhcm5pbmc7XG5cbmNvbnN0IGNvbXBpbGVTdWdnZXN0aW9uUXVlcmllcyA9IChrZXk6IHN0cmluZywgYWxsT2Y6IGFueVtdKSA9PiB7XG4gIGNvbnN0IGNvbmRpdGlvbnMgPSAoYWxsT2YgfHwgW10pXG4gICAgLmZpbHRlcih2ID0+ICh2LmlmPy5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKHYgPT4gdi50aGVuPy5wcm9wZXJ0aWVzW2tleV0pXG4gICAgLm1hcCh2ID0+IHY/Lml0ZW1zPy5wcm9wZXJ0aWVzIHx8IHY/LnByb3BlcnRpZXMpXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGNvbmRpdGlvbnMubGVuZ3RoID8gW3tcbiAgICBib29sOiB7XG4gICAgICBzaG91bGQ6IGNvbmRpdGlvbnMuZmxhdE1hcChjb25kID0+IE9iamVjdC5rZXlzKGNvbmQpLmZsYXRNYXAoayA9PiAoY29uZFtrXS5lbnVtIHx8IFtdKS5tYXAodiA9PiAoe1xuICAgICAgICBtYXRjaDogeyBba106IHYgfVxuICAgICAgfSkpKSksXG4gICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgIH1cbiAgfV0gOiBbXTtcbn07XG5cbi8vIGRlZmF1bHQgc3VnZ2VzdCBmb3IgbGlua2luZyBub2RlcyB0b2dldGhlciB1c2luZyB0aGUgYGlkYCBmaWVsZFxuY29uc3Qgc3VnZ2VzdExpbmtOb2RlcyA9ICh0eXBlOiBOb2RlVHlwZSwgZnVsbEtleTogc3RyaW5nKTogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5ID09PSAnaWQnICYmIGtleXMubGVuZ3RoID49IDEgPyB7IHR5cGUsIGlzTGlua05vZGU6IHRydWUgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHN1Z2dlc3RFeGlzdGluZ05vZGUgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA+PSAxICYmIFsnQGlkJywgJ29wZW5MQ0FJZCddLmluY2x1ZGVzKGtleSkgPyB7IHR5cGUsIGlzVW5pcXVlS2V5OiAnQGlkJyB9IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbiA9ICh0eXBlOiBOb2RlVHlwZSkgPT4gKGZ1bGxLZXk6IHN0cmluZykgPT5cbiAgc3VnZ2VzdExpbmtOb2Rlcyh0eXBlLCBmdWxsS2V5KSB8fCBzdWdnZXN0RXhpc3RpbmdOb2RlKHR5cGUsIGZ1bGxLZXkpO1xuXG5jb25zdCB0ZXJtU3VnZ2VzdGlvbnMgPSAocGFyZW50OiBzdHJpbmcsIHsgYWxsT2YgfTogSURlZmluaXRpb25PYmplY3QpID0+ICh7XG4gIHR5cGU6IE5vZGVUeXBlLlRlcm0sXG4gIHF1ZXJpZXM6IFtcbiAgICAuLi5jb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMobm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgocGFyZW50KSwgYWxsT2YhKSxcbiAgICAuLi4oWydjb3VudHJ5J10uaW5jbHVkZXMocGFyZW50KSA/IFttYXRjaENvdW50cnldIDogW10pXG4gIF1cbn0pO1xuXG5jb25zdCB0eXBlVG9TdWdnZXN0aW9uOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGV8Tm9kZVR5cGV8Z2VuZXJpY1R5cGV8J2ludGVnZXInXT86IChcbiAgICBmdWxsS2V5OiBzdHJpbmcsIHBhcmVudFNjaGVtYT86IGRlZmluaXRpb24sIHNjaGVtYT86IGRlZmluaXRpb25cbiAgKSA9PiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbnxhbnk7XG59ID0ge1xuICBbTm9kZVR5cGUuQWN0b3JdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLkFjdG9yKSxcbiAgW05vZGVUeXBlLkN5Y2xlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5DeWNsZSksXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50KSxcbiAgW05vZGVUeXBlLk9yZ2FuaXNhdGlvbl06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuT3JnYW5pc2F0aW9uKSxcbiAgW05vZGVUeXBlLlNpdGVdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlNpdGUpLFxuICBbTm9kZVR5cGUuU291cmNlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5Tb3VyY2UpLFxuICBbTm9kZVR5cGUuVGVybV06IChmdWxsS2V5LCBwYXJlbnRTY2hlbWEpID0+IHtcbiAgICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICAgIHJldHVybiBbJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGtleXMubGVuZ3RoID49IDEgP1xuICAgICAgdGVybVN1Z2dlc3Rpb25zKGtleXMucG9wKCkhLCBwYXJlbnRTY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpIDpcbiAgICAgIGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuVGVybSkoZnVsbEtleSk7XG4gIH0sXG4gIFtTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeV06IChmdWxsS2V5KSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnBvcCgpITtcbiAgICAvLyBwcmV2ZW50IHJlcGxhY2luZyBhIHRvcC1sZXZlbCBzb3VyY2VcbiAgICByZXR1cm4gWyd0aXRsZScsICdkb2N1bWVudERPSScsICdzY29wdXMnXS5pbmNsdWRlcyhrZXkpICYmIHBhcmVudCA9PT0gJ2JpYmxpb2dyYXBoeScgJiYga2V5cy5sZW5ndGggPj0gMSA/IHtcbiAgICAgIHR5cGU6IE5vZGVUeXBlLlNvdXJjZSxcbiAgICAgIHBhcmVudExldmVsOiAxXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgbnVtYmVyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIGludGVnZXI6IChfYSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/IFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDogW107XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgc3RyaW5nOiAoZnVsbEtleSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID9cbiAgICAgIFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDpcbiAgICAgICgoc2NoZW1hIGFzIGFueSkuZW51bSB8fCBbXSkuZmlsdGVyKHZhbCA9PiAhT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5pbmNsdWRlcyh2YWwpKTtcbiAgICBjb25zdCBrZXkgPSBmdWxsS2V5LnNwbGl0KCcuJykucG9wKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwICYmIGtleSAhPT0gJ3R5cGUnID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBib29sZWFuOiAoX2EpID0+ICh7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgdmFsdWVzOiBbJ3RydWUnLCAnZmFsc2UnXVxuICB9KVxufTtcblxuY29uc3QgZW5hYmxlU3VnZ2VzdGlvbnMgPSAoXG4gIHBhcmVudFNjaGVtYTogZGVmaW5pdGlvbiwgdHlwZTogU2NoZW1hVHlwZSB8IE5vZGVUeXBlIHwgZ2VuZXJpY1R5cGUsIGZ1bGxLZXk6IHN0cmluZywgc2NoZW1hPzogZGVmaW5pdGlvblxuKSA9PiB7XG4gIGNvbnN0IHN1Z2dlc3Rpb24gPSB0eXBlIGluIHR5cGVUb1N1Z2dlc3Rpb24gPyB0eXBlVG9TdWdnZXN0aW9uW3R5cGVdIShmdWxsS2V5LCBwYXJlbnRTY2hlbWEpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gc3VnZ2VzdGlvbiB8fCAoXG4gICAgc2NoZW1hICYmIHNjaGVtYS50eXBlIGFzIGdlbmVyaWNUeXBlIGluIHR5cGVUb1N1Z2dlc3Rpb24gP1xuICAgICAgdHlwZVRvU3VnZ2VzdGlvbltzY2hlbWEudHlwZSBhcyBnZW5lcmljVHlwZV0hKGZ1bGxLZXksIHBhcmVudFNjaGVtYSwgc2NoZW1hKSA6XG4gICAgICB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBub2RlQXZhaWxhYmxlUHJvcGVydGllcyA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgeyBmdWxsS2V5LCBzY2hlbWEsIHNjaGVtYVR5cGUgfTogUGFydGlhbDxJTm9kZVByb3BlcnR5PlxuKSA9PiBhdmFpbGFibGVQcm9wZXJ0aWVzKHNjaGVtYSEsIHNjaGVtYVR5cGUhLCBmdWxsS2V5ID8gZ2V0KG5vZGUsIGZ1bGxLZXksIHt9KSA6IG5vZGUsIGZ1bGxLZXkhLmxlbmd0aCA+IDApO1xuXG5leHBvcnQgY29uc3QgaXNBZGRQcm9wZXJ0eUVuYWJsZWQgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIHNjaGVtYVR5cGU6IFNjaGVtYVR5cGUsIHNjaGVtYTogZGVmaW5pdGlvbiwgZnVsbEtleSA9ICcnXG4pID0+ICEhc2NoZW1hICYmXG4gICEhT2JqZWN0LmtleXMobm9kZUF2YWlsYWJsZVByb3BlcnRpZXMobm9kZSwgeyBmdWxsS2V5LCBzY2hlbWEgfSkpLmxlbmd0aCAmJlxuICAoIWZ1bGxLZXkgfHwgbmVzdGluZ1R5cGVFbmFibGVkKHNjaGVtYVR5cGUpKTtcblxuY29uc3QgZWRpdGFibGVLZXkgPSAoa2V5OiBzdHJpbmcpID0+ICFbJ3R5cGUnLCAnQHR5cGUnLCAndGVybVR5cGUnXS5pbmNsdWRlcyhrZXkpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlJZCA9ICgpID0+IHV1aWR2NCgpO1xuXG5jb25zdCBwcm9wZXJ0eVVybCA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZykgPT5cbiAgWydAaWQnLCAnbmFtZSddLmluY2x1ZGVzKGtleSkgJiYgbGlua1R5cGVFbmFibGVkKG5vZGVbJ0B0eXBlJ10pID9cbiAgICB7XG4gICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vJHtub2RlWydAdHlwZSddLnRvTG93ZXJDYXNlKCl9LyR7bm9kZVsnQGlkJ119YCxcbiAgICAgIHRpdGxlOiAnT3BlbidcbiAgICB9IDpcbiAgICAoXG4gICAgICBub2RlLnR5cGUgPT09IFNjaGVtYVR5cGUuVGVybSAmJiBbJ25hbWUnXS5pbmNsdWRlcyhrZXkpID8ge1xuICAgICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/cXVlcnk9YCxcbiAgICAgICAgdXJsUGFyYW1WYWx1ZTogdHJ1ZSxcbiAgICAgICAgdGl0bGU6ICdTZWFyY2ggaW4gR2xvc3NhcnknXG4gICAgICB9IDogdW5kZWZpbmVkXG4gICAgKTtcblxuY29uc3QgcHJvcGVydHlNYXBzVXJsID0gKG5vZGU6IFNpdGUgfCBPcmdhbmlzYXRpb24sIGtleTogc3RyaW5nLCB2YWx1ZSkgPT5cbiAgWyd0eXBlJ10uaW5jbHVkZXMoa2V5KSAmJiBbXG4gICAgU2NoZW1hVHlwZS5TaXRlLnRvU3RyaW5nKCksXG4gICAgU2NoZW1hVHlwZS5PcmdhbmlzYXRpb24udG9TdHJpbmcoKVxuICBdLmluY2x1ZGVzKHN0cmluZ1ZhbHVlKHZhbHVlKSB8fCBub2RlLnR5cGUpID9cbiAgICB7XG4gICAgICB1cmw6IG1hcHNVcmwoeyBsYXQ6IG5vZGUubGF0aXR1ZGUsIGxuZzogbm9kZS5sb25naXR1ZGUgfSksXG4gICAgICB0aXRsZTogJ1ZpZXcgb24gbWFwcycsXG4gICAgICBpY29uOiAnbWFwJ1xuICAgIH0gOlxuICAgIHVuZGVmaW5lZDtcblxuY29uc3QgcHJvcGVydHlFeHRlcm5hbFVybCA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT5cbiAgcHJvcGVydHlVcmwobm9kZSwga2V5KSB8fFxuICBwcm9wZXJ0eU1hcHNVcmwobm9kZSBhcyBhbnksIGtleSwgdmFsdWUpO1xuXG5jb25zdCBhcnJheVBsYWNlaG9sZGVyID0gKHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUpID0+IGBUeXBlIGEgJHt2YWx1ZVR5cGV9IHRoZW4gcHJlc3MgRW50ZXJgO1xuXG5jb25zdCBkZWZhdWx0UGxhY2Vob2xkZXIgPSAoeyB0eXBlLCBleGFtcGxlcyB9OiBhbnksIHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUpID0+IGV4YW1wbGVzPy5sZW5ndGggPyAoXG4gIEFycmF5LmlzQXJyYXkoZXhhbXBsZXNbMF0pID8gYXJyYXlQbGFjZWhvbGRlcih2YWx1ZVR5cGUpIDogZXhhbXBsZXNbMF1cbikgOiBgTXVzdCBiZSBvZiB0eXBlICR7dHlwZSB8fCB2YWx1ZVR5cGV9YDtcblxuY29uc3Qgc2NoZW1hUGxhY2hvbGRlciA9IChzY2hlbWE6IGFueSwgZnVsbEtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFtwYXJlbnQsIC4uLmtleXNdID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gc2NoZW1hLnByb3BlcnRpZXMgfHwge307XG4gIGNvbnN0IHsgZXhhbXBsZXMgfSA9IHBhcmVudCBpbiBwcm9wZXJ0aWVzID8gcHJvcGVydGllc1twYXJlbnRdIDogeyBleGFtcGxlczogW10gfTtcbiAgcmV0dXJuIGV4YW1wbGVzPy5sZW5ndGggJiYgdHlwZW9mIGV4YW1wbGVzWzBdID09PSAnb2JqZWN0JyA/IGdldChleGFtcGxlc1swXSwga2V5cy5qb2luKCcuJyksIG51bGwpOiBudWxsO1xufTtcblxuY29uc3QgcHJvcGVydHlQbGFjZWhvbGRlciA9IChzY2hlbWE6IGFueSwgdmFsdWVUeXBlOiBnZW5lcmljVHlwZSwgZnVsbEtleSA9ICcnLCBwYXJlbnRTY2hlbWE/OiBhbnkpID0+XG4gIHNjaGVtYS50eXBlID09PSAnYXJyYXknID9cbiAgICBhcnJheVBsYWNlaG9sZGVyKHZhbHVlVHlwZSkgOiAoXG4gICAgICBwYXJlbnRTY2hlbWEgJiYgZnVsbEtleT8ubGVuZ3RoID8gc2NoZW1hUGxhY2hvbGRlcihwYXJlbnRTY2hlbWEsIGZ1bGxLZXkpIDogbnVsbFxuICAgICkgfHwgZGVmYXVsdFBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlKTtcblxuY29uc3QgcHJvcGVydHlUeXBlVmFsdWU6IHtcbiAgW3R5cGU6IHN0cmluZ106ICh2YWx1ZTogYW55LCBzY2hlbWE6IGRlZmluaXRpb24pID0+IGFueTtcbn0gPSB7XG4gIG9iamVjdDogdmFsID0+IHNhZmVKU09OU3RyaW5naWZ5KHZhbCksXG4gIGFycmF5OiAodmFsLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICByZXR1cm4gJyRyZWYnIGluIGl0ZW1zID8gdmFsIDogKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWwpID9cbiAgICAgICAgdmFsLm1hcCh2YWx1ZSA9PiBwcm9wZXJ0eVZhbHVlKGl0ZW1zLCB2YWx1ZSkpLmpvaW4oQVJSQVlfREVMSU1JVEVSKSA6XG4gICAgICAgIHZhbFxuICAgICk7XG4gIH0sXG4gIGpzb246IHZhbCA9PiB2YWwgfHwgJycsXG4gIHN0cmluZzogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudHJpbSgpLFxuICBudW1iZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGludGVnZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGJvb2xlYW46IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xufTtcblxuY29uc3QgcHJvcGVydHlWYWx1ZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlOiBhbnkpID0+XG4gIHNjaGVtYS50eXBlID8gKFxuICAgIEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpID9cbiAgICAgIHByb3BlcnR5VHlwZVZhbHVlW3R5cGVvZiB2YWx1ZV0odmFsdWUsIHNjaGVtYSkgOlxuICAgICAgcHJvcGVydHlUeXBlVmFsdWVbc2NoZW1hLnR5cGUgYXMgc3RyaW5nXSh2YWx1ZSwgc2NoZW1hKVxuICApIDpcbiAgc2FmZUpTT05TdHJpbmdpZnkodmFsdWUpO1xuXG5jb25zdCBwcm9wZXJ0eVZhbHVlVHlwZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlPzogYW55KSA9PlxuICAoc2NoZW1hLnR5cGUgPyAoXG4gICAgQXJyYXkuaXNBcnJheShzY2hlbWEudHlwZSkgP1xuICAgICAgc2NoZW1hLnR5cGVbMF0gOlxuICAgICAgc2NoZW1hLnR5cGUgPT09ICdhcnJheScgP1xuICAgICAgICBwcm9wZXJ0eVZhbHVlVHlwZSh7IC4uLnNjaGVtYSwgdHlwZTogW3NjaGVtYS5pdGVtcy50eXBlIGFzIGdlbmVyaWNUeXBlXSB9KSA6XG4gICAgICAgIHNjaGVtYS50eXBlXG4gICkgOiB0eXBlb2YgdmFsdWUpIGFzIGdlbmVyaWNUeXBlO1xuXG5jb25zdCBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiAodmFsdWU6IGFueSwgc2NoZW1hOiBkZWZpbml0aW9uKSA9PiBhbnk7XG59ID0ge1xuICB1bmRlZmluZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgb2JqZWN0OiB2YWwgPT4gc2FmZUpTT05QYXJzZSh2YWwpLFxuICBhcnJheTogKHZhbCwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgcmV0dXJuICckcmVmJyBpbiBpdGVtcyA/IHZhbCA6IChcbiAgICAgICF2YWwgfHwgQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogdmFsLnNwbGl0KEFSUkFZX0RFTElNSVRFUikubWFwKHZhbHVlID0+IHBhcnNlTmV3VmFsdWUoaXRlbXMsIHZhbHVlKSlcbiAgICApO1xuICB9LFxuICBqc29uOiB2YWwgPT4gdmFsIHx8ICcnLFxuICBzdHJpbmc6IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRyaW0oKSxcbiAgbnVtYmVyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBpbnRlZ2VyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBib29sZWFuOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbn07XG5cbi8qKlxuICogQ29udmVydCB2YWx1ZSB0byB0aGUgZmluYWwgdHlwZSBpbiB0aGUgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgRGVmaW5pdGlvbiBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEByZXR1cm5zIFZhbHVlIGluIHRoZSBjb3JyZWN0IGZvcm1hdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlTmV3VmFsdWUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZTogYW55KSA9PlxuICBzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSA/XG4gICAgICBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlW3R5cGVvZiB2YWx1ZV0odmFsdWUsIHNjaGVtYSkgOlxuICAgICAgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZVtzY2hlbWEudHlwZSBhcyBzdHJpbmddKHZhbHVlLCBzY2hlbWEpXG4gICkgOiB2YWx1ZTtcblxuY29uc3QgaXNPcGVuRGVmYXVsdCA9IChzY2hlbWFUeXBlOiBTY2hlbWFUeXBlKSA9PiBbXG4gIFNjaGVtYVR5cGUuVGVybVxuXS5pbmNsdWRlcyhzY2hlbWFUeXBlKTtcblxuLy8gY2FuIHRoZSBwcm9wZXJ0eSBiZSBzZWVuIHdoZW4gdGhlIGdyb3VwIGlzIGNsb3NlZFxuY29uc3QgaXNLZXlDbG9zZWRWaXNpYmxlID0gKGtleTogc3RyaW5nKSA9PiBbJ3R5cGUnLCAnaWQnLCAnQHR5cGUnLCAnQGlkJ10uaW5jbHVkZXMoa2V5KTtcblxuY29uc3QgaXNLZXlIaWRkZW4gPSAoa2V5OiBzdHJpbmcpID0+IFsndHlwZScsICdAdHlwZSddLmluY2x1ZGVzKGtleSk7XG5cbmNvbnN0IGlzS2V5UmVxdWlyZWQgPSAoa2V5OiBzdHJpbmcsIGRlZj86IElEZWZpbml0aW9uT2JqZWN0KSA9PlxuICBbJ3R5cGUnLCAnaWQnXS5pbmNsdWRlcyhrZXkpIHx8IChkZWY/LnJlcXVpcmVkIHx8IFtdKS5pbmNsdWRlcyhrZXkpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlFcnJvciA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT4gKGRhdGFQYXRoOiBzdHJpbmcsIG5vbkV4cGFuZGFibGVBcnJheSA9IGZhbHNlKSA9PlxuICBlcnJvcnMuZmluZChlcnJvciA9PlxuICAgIChcbiAgICAgIGVycm9yLmRhdGFQYXRoID09PSBkYXRhUGF0aCB8fCAoXG4gICAgICAgIG5vbkV4cGFuZGFibGVBcnJheSAmJiBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChlcnJvci5kYXRhUGF0aCEpID09PSBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChkYXRhUGF0aClcbiAgICAgIClcbiAgICApICYmIChkYXRhUGF0aC5sZW5ndGggPiAwIHx8ICFpc01pc3NpbmdQcm9wZXJ0eUVycm9yKGVycm9yKSlcbiAgKTtcblxuY29uc3QgbWlzc2luZ1Byb3BlcnR5RXJyb3JzID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgcGFyZW50ID0gJydcbik6IElOb2RlUHJvcGVydHlbXSA9PiB7XG4gIGNvbnN0IGFsbEVycm9ycyA9IGVycm9ycy5maWx0ZXIoZXJyb3IgPT5cbiAgICBlcnJvci5kYXRhUGF0aCA9PT0ga2V5VG9EYXRhUGF0aChwYXJlbnQpICYmIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IoZXJyb3IpXG4gICk7XG4gIC8vIGNoZWNrIGZvciBub2RlIG5vdCBmb3VuZCBlcnJvcnNcbiAgY29uc3QgbWlzc2luZ05vZGUgPSBtaXNzaW5nTm9kZUVycm9ycyhhbGxFcnJvcnMpO1xuICByZXR1cm4gbWlzc2luZ05vZGUubGVuZ3RoID09PSAyID8gW3tcbiAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICBzdWdnZXN0aW9uczogeyB0eXBlOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUgfSxcbiAgICBrZXk6ICcnLFxuICAgIGZ1bGxLZXk6IHBhcmVudCxcbiAgICB2YWx1ZTogJycsXG4gICAgZXJyb3I6IHtcbiAgICAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogbWlzc2luZ05vZGVFcnJvck1lc3NhZ2Uobm9kZSlcbiAgICB9LFxuICAgIGhhc0Vycm9yOiB0cnVlLFxuICAgIHByb3BlcnRpZXM6IFtdLFxuICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2VcbiAgfV0gOiBhbGxFcnJvcnMubWFwKGVycm9yID0+IHtcbiAgICBjb25zdCB7IG1pc3NpbmdQcm9wZXJ0eSB9ID0gZXJyb3IucGFyYW1zITtcbiAgICBjb25zdCBmdWxsS2V5ID0gcGFyZW50ID8gYCR7cGFyZW50fS4ke21pc3NpbmdQcm9wZXJ0eX1gIDogbWlzc2luZ1Byb3BlcnR5O1xuICAgIGNvbnN0IG1pc3NpbmdPbmVPZiA9IGlzTWlzc2luZ09uZU9mRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgc3VnZ2VzdGlvbnM6IHsgdHlwZTogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlIH0sXG4gICAgICBrZXk6IG1pc3NpbmdQcm9wZXJ0eSxcbiAgICAgIGZ1bGxLZXksXG4gICAgICB2YWx1ZTogJ0FkZCBmaWVsZCB0byBmaXgnLFxuICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgZXJyb3I6IGZvcm1hdEVycm9yKGVycm9yKSxcbiAgICAgIGhhc0Vycm9yOiBtaXNzaW5nT25lT2YgPyBmYWxzZSA6IGVycm9ySGFzRXJyb3IoZXJyb3IpLFxuICAgICAgaGFzV2FybmluZzogbWlzc2luZ09uZU9mIHx8IGVycm9ySGFzV2FybmluZyhlcnJvciksXG4gICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogdHJ1ZVxuICAgIH07XG4gIH0pO1xufTtcblxuY29uc3QgcHJvcGVydHlGcm9tTm9kZSA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBkZWVwRWRpdGFibGU6IGJvb2xlYW4sIHBhcmVudCA9ICcnLCBub2RlOiBhbnlcbikgPT4gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHZhbHVlID0gbm9kZVtrZXldO1xuICBjb25zdCBleHBhbmRhYmxlID0gaXNFeHBhbmRhYmxlKHZhbHVlKTtcbiAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICBjb25zdCBub25FeHBhbmRhYmxlQXJyYXkgPSBpc0FycmF5ICYmICFleHBhbmRhYmxlO1xuICBjb25zdCBmdWxsS2V5ID0gQXJyYXkuaXNBcnJheShub2RlKSA/IGAke3BhcmVudH1bJHtrZXl9XWAgOiBbXG4gICAgcGFyZW50LFxuICAgIGtleVxuICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gIGNvbnN0IG5vZGVUeXBlID0gbm9kZS50eXBlIHx8IG5vZGVbJ0B0eXBlJ107XG4gIGNvbnN0IHNjaGVtYVR5cGUgPSBleHBhbmRhYmxlID8gKFxuICAgIGlzQXJyYXkgJiYgdmFsdWUubGVuZ3RoID8gdmFsdWVbMF0udHlwZSB8fCB2YWx1ZVswXVsnQHR5cGUnXSA6IHZhbHVlLnR5cGUgfHwgdmFsdWVbJ0B0eXBlJ11cbiAgKSA6IG5vZGVUeXBlO1xuICBjb25zdCBzY2hlbWEgPSAoc2NoZW1hcyAmJiBpc1R5cGVWYWxpZCh7IHR5cGU6IHNjaGVtYVR5cGUgfSkgPyAoXG4gICAgZXhwYW5kYWJsZSA/IHNjaGVtYXNbc2NoZW1hVHlwZV0gOiBzY2hlbWFzW3NjaGVtYVR5cGVdLnByb3BlcnRpZXNba2V5XVxuICApIDogbnVsbCkgfHwge307XG4gIGNvbnN0IGlzSXJpID0gaXNTY2hlbWFJcmkoc2NoZW1hKTtcbiAgY29uc3QgZXJyb3IgPSBwcm9wZXJ0eUVycm9yKGVycm9ycykoa2V5VG9EYXRhUGF0aChmdWxsS2V5KSwgbm9uRXhwYW5kYWJsZUFycmF5KTtcbiAgY29uc3QgcGFyZW50U2NoZW1hID0gZXhwYW5kYWJsZSA/IChcbiAgICAvLyBUT0RPOiBmb3Igbm9uLWFycmF5LCBzaG91bGQgYmUgc2NoZW1hIHVubGVzcyBsYXN0IHJlY3Vyc2lvblxuICAgIGlzQXJyYXkgPyBzY2hlbWEgOiBub2RlU2NoZW1hXG4gICkgOiBub2RlU2NoZW1hO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gZXhwYW5kYWJsZSB8fCBpc0lyaSA/XG4gICAgcmVjdXJzaXZlUHJvcGVydGllcyhzY2hlbWFzLCBlcnJvcnMsIHBhcmVudFNjaGVtYSwgZGVlcEVkaXRhYmxlLCBmdWxsS2V5KSh2YWx1ZSkgOiBbXTtcbiAgY29uc3QgaW5FcnJvciA9IGVycm9ySGFzRXJyb3IoZXJyb3IpIHx8IGhhc0Vycm9yKHByb3BlcnRpZXMpO1xuICBjb25zdCBpbldhcm5pbmcgPSBlcnJvckhhc1dhcm5pbmcoZXJyb3IpIHx8IGhhc1dhcm5pbmcocHJvcGVydGllcyk7XG4gIGNvbnN0IGVkaXRhYmxlID0gaXNUeXBlTm9kZShub2RlWydAdHlwZSddKSB8fCAoZXhwYW5kYWJsZSAmJiBpc1R5cGVOb2RlKHZhbHVlWydAdHlwZSddKSkgP1xuICAgIGZhbHNlIDpcbiAgICAoXG4gICAgICAvLyBwcmV2ZW50IGVkaXRpbmcvYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIG9uIGV4aXN0aW5nIHN1Yi1ub2Rlc1xuICAgICAgIWRlZXBFZGl0YWJsZSAmJiBpc1R5cGVOb2RlKHNjaGVtYVR5cGUpICYmIChcbiAgICAgICAgZXhwYW5kYWJsZSA/IHZhbHVlLnR5cGUgIT09IE5vZGVUeXBlLlRlcm0gOiBwYXJlbnQgJiYgbm9kZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtXG4gICAgICApID9cbiAgICAgICAgZmFsc2UgOlxuICAgICAgICAvLyBoYW5kbGUgSVJJXG4gICAgICAgICghc2NoZW1hVHlwZSAmJiBrZXkgPT09ICdAaWQnKSB8fCBlZGl0YWJsZUtleShrZXkpXG4gICAgKTtcbiAgY29uc3QgdmFsdWVUeXBlID0gcHJvcGVydHlWYWx1ZVR5cGUoc2NoZW1hLCB2YWx1ZSk7XG4gIHJldHVybiB7XG4gICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICBzY2hlbWFUeXBlOiBpc0lyaSA/IG51bGwgOiBzY2hlbWFUeXBlLFxuICAgIHNjaGVtYSxcbiAgICBrZXksXG4gICAgZnVsbEtleSxcbiAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZShzY2hlbWEsIHZhbHVlKSxcbiAgICBlZGl0YWJsZTogaW5FcnJvciB8fCBlZGl0YWJsZSxcbiAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgbm9kZS50eXBlLCBmdWxsS2V5LCBzY2hlbWEpLFxuICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQobm9kZSwgc2NoZW1hVHlwZSwgc2NoZW1hLCBmdWxsS2V5KSxcbiAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgaXNIaWRkZW46IHBhcmVudCAmJiBpc0tleUhpZGRlbihrZXkpLFxuICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgIGhhc0Vycm9yOiBpbkVycm9yLFxuICAgIGhhc1dhcm5pbmc6IGluV2FybmluZyxcbiAgICBpc1JlcXVpcmVkOiBpc0tleVJlcXVpcmVkKGtleSwgc2NoZW1hc1tub2RlVHlwZV0pLFxuICAgIGlzQXJyYXksXG4gICAgaXNFeHBhbmRhYmxlOiBleHBhbmRhYmxlLFxuICAgIGlzT3BlbjogaXNPcGVuRGVmYXVsdChzY2hlbWFUeXBlKSxcbiAgICBwcm9wZXJ0aWVzLFxuICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eVBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlLCBmdWxsS2V5LCBwYXJlbnRTY2hlbWEpLFxuICAgIGV4dGVybmFsVXJsOiBwcm9wZXJ0eUV4dGVybmFsVXJsKG5vZGUsIGtleSwgdmFsdWUpXG4gIH0gYXMgSU5vZGVQcm9wZXJ0eTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaW5nbGVQcm9wZXJ0eSA9IChzY2hlbWFzOiBkZWZpbml0aW9ucywgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIG5vZGU6IGFueSwgZnVsbEtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFtfdCwgLi4ua2V5c10gPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICBjb25zdCBwYXJlbnQgPSBrZXlzLmpvaW4oJy4nKTtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IHBhcmVudC5sZW5ndGggPyBnZXQobm9kZSwgcGFyZW50KSA6IG5vZGU7XG4gIGNvbnN0IHNjaGVtYVR5cGUgPSB0eXBlVG9TY2hlbWFUeXBlKHBhcmVudE5vZGUudHlwZSB8fCBwYXJlbnROb2RlWydAdHlwZSddKTtcbiAgY29uc3QgcGFyZW50U2NoZW1hID0gc2NoZW1hc1tzY2hlbWFUeXBlXTtcbiAgcmV0dXJuIHByb3BlcnR5RnJvbU5vZGUoc2NoZW1hcywgZXJyb3JzLCBwYXJlbnRTY2hlbWEsIHRydWUsIHBhcmVudCwgcGFyZW50Tm9kZSkoa2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWN1cnNpdmVQcm9wZXJ0aWVzID0gKFxuICBzY2hlbWFzOiBkZWZpbml0aW9ucywgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sIGRlZXBFZGl0YWJsZTogYm9vbGVhbiwgcGFyZW50ID0gJydcbikgPT4gKG5vZGU6IGFueSk6IElOb2RlUHJvcGVydHlbXSA9PlxuICBPYmplY3Qua2V5cyhub2RlKVxuICAgIC5maWx0ZXIoa2V5ID0+ICFwcml2YXRlS2V5cy5pbmNsdWRlcyhrZXkpKVxuICAgIC5tYXAocHJvcGVydHlGcm9tTm9kZShzY2hlbWFzLCBlcnJvcnMsIG5vZGVTY2hlbWEsIGRlZXBFZGl0YWJsZSwgcGFyZW50LCBub2RlKSlcbiAgICAuY29uY2F0KC4uLm1pc3NpbmdQcm9wZXJ0eUVycm9ycyhub2RlLCBlcnJvcnMsIHBhcmVudCkpXG4gICAgLnNvcnQoc29ydFByb3BlcnRpZXMpO1xuXG5jb25zdCBmdWxsS2V5UGFydHMgPSAoZnVsbEtleTogc3RyaW5nKSA9PiBmdWxsS2V5LnNwbGl0KCcuJykuZmxhdE1hcCh2YWwgPT4ge1xuICBpZiAodmFsLmVuZHNXaXRoKCddJykpIHtcbiAgICBjb25zdCBba2V5LCBpbmRleF0gPSB2YWwuc3BsaXQoJ1snKTtcbiAgICByZXR1cm4gW2tleSwgaW5kZXgucmVwbGFjZSgnXScsICcnKV07XG4gIH1cbiAgcmV0dXJuIHZhbDtcbn0pO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUHJvcGVydGllcyA9ICh7IHByb3BlcnRpZXMgfTogUGFydGlhbDxJTm9kZVByb3BlcnR5PiwgdXBkYXRlcjogKHByb3A6IElOb2RlUHJvcGVydHkpID0+IElOb2RlUHJvcGVydHkpID0+XG4gIChwcm9wZXJ0aWVzIHx8IFtdKS5tYXAocHJvcCA9PiB1cGRhdGVQcm9wZXJ0aWVzKHVwZGF0ZXIocHJvcCksIHVwZGF0ZXIpKTtcblxuZXhwb3J0IGNvbnN0IHR5cGVUb05ld1Byb3BlcnR5ID0gKFxuICBzY2hlbWFzOiBkZWZpbml0aW9ucywgc2NoZW1hOiBkZWZpbml0aW9uLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBub2RlOiBhbnksIGZ1bGxLZXk6IHN0cmluZ1xuKTogSU5vZGVQcm9wZXJ0eSA9PiB7XG4gIGNvbnN0IGtleSA9IGZ1bGxLZXlQYXJ0cyhmdWxsS2V5KS5wb3AoKSE7XG4gIGNvbnN0IG1hcHBpbmdzOiB7XG4gICAgW2tleTogc3RyaW5nXTogKCkgPT4gSU5vZGVQcm9wZXJ0eTtcbiAgfSA9IHtcbiAgICBvYmplY3Q6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgc2NoZW1hVHlwZSwgcHJvcGVydGllcyB9ID0gc2NoZW1hUmVxdWlyZWRQcm9wZXJ0aWVzKHNjaGVtYXMsIHNjaGVtYSBhcyBJRGVmaW5pdGlvbk9iamVjdCk7XG4gICAgICBub2RlW2tleV0gPSBub2RlW2tleV0gfHwge307XG4gICAgICBub2RlW2tleV0udHlwZSA9IHNjaGVtYVR5cGU7XG4gICAgICAvLyBUT0RPOiBoYW5kbGUgbG9hZCBzY2hlbWFzIGZyb20gaHR0cCBzb3VyY2VcbiAgICAgIGlmIChzY2hlbWFUeXBlLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICByZXR1cm4gdHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgeyB0eXBlOiAnanNvbicgfSBhcyBhbnksIG5vZGVTY2hlbWEsIG5vZGUsIGZ1bGxLZXkpO1xuICAgICAgfVxuICAgICAgLy8gVE9ETzogaGFuZGxlIG5vZGVTY2hlbWEgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICAgIGNvbnN0IHByb3BzID0gcHJvcGVydGllc1xuICAgICAgICAuZmlsdGVyKHByb3AgPT4gbmVzdGluZ0VuYWJsZWQoc2NoZW1hVHlwZSwgcHJvcC5rZXkpICYmICEhcHJvcC52YWx1ZSlcbiAgICAgICAgLm1hcChcbiAgICAgICAgICB2ID0+ICh7XG4gICAgICAgICAgICAuLi50eXBlVG9OZXdQcm9wZXJ0eShzY2hlbWFzLCB2LnZhbHVlLCBub2RlU2NoZW1hLCBub2RlW2tleV0sIGAke2Z1bGxLZXl9LiR7di5rZXl9YCksXG4gICAgICAgICAgICBpc1JlcXVpcmVkOiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoeyAuLi5wcmV2LCBbY3Vyci5rZXldOiBjdXJyLnZhbHVlIH0pLCB7fSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWE6IHNjaGVtYXNbc2NoZW1hVHlwZV0sXG4gICAgICAgIHNjaGVtYVR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBzY2hlbWFUeXBlLCBmdWxsS2V5KSxcbiAgICAgICAgcHJvcGVydGllczogcHJvcHMuc29ydChzb3J0UHJvcGVydGllcyksXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQobm9kZSwgc2NoZW1hVHlwZSwgc2NoZW1hc1tzY2hlbWFUeXBlXSwga2V5KSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzUmVxdWlyZWQ6IGlzS2V5UmVxdWlyZWQoa2V5LCBzY2hlbWEgYXMgYW55KSxcbiAgICAgICAgaXNBcnJheTogZmFsc2UsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgaXNPcGVuOiBpc09wZW5EZWZhdWx0KHNjaGVtYVR5cGUpXG4gICAgICB9O1xuICAgIH0sXG4gICAgYXJyYXk6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgICAgLy8gYXJyYXkgb2Ygc3RyaW5nLCBudW1iZXIgYW5kIGJvb2xlYW5cbiAgICAgIGlmIChpdGVtcy50eXBlKSB7XG4gICAgICAgIHJldHVybiBtYXBwaW5ncy5kZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWFUeXBlID0gZGVmaW5pdGlvblRvU2NoZW1hVHlwZShpdGVtcyBhcyBJRGVmaW5pdGlvbk9iamVjdCk7XG4gICAgICBub2RlW2tleV0gPSBub2RlW2tleV0gfHwgW107XG4gICAgICBub2RlW2tleV0ucHVzaCh7IH0pO1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0eXBlVG9OZXdQcm9wZXJ0eShzY2hlbWFzLCBpdGVtcywgc2NoZW1hc1tzY2hlbWFUeXBlXSwgbm9kZVtrZXldWzBdLCBgJHtmdWxsS2V5fVswXWApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzY2hlbWFUeXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlOiBbcHJvcGVydHkudmFsdWVdLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wZXJ0aWVzOiBbcHJvcGVydHldLFxuICAgICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICAgICAgaXNBcnJheTogdHJ1ZSxcbiAgICAgICAgaXNFeHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlXG4gICAgICB9O1xuICAgIH0sXG4gICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVUeXBlID0gcHJvcGVydHlWYWx1ZVR5cGUoc2NoZW1hKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gc2NoZW1hLmRlZmF1bHQgfHwgKHNjaGVtYSBhcyBhbnkpLmNvbnN0IHx8IHZhbHVlVHlwZVRvRGVmYXVsdFt2YWx1ZVR5cGVdO1xuICAgICAgbm9kZVtrZXldID0gdmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZShzY2hlbWEsIHZhbHVlKSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5UGxhY2Vob2xkZXIoc2NoZW1hLCB2YWx1ZVR5cGUsIGZ1bGxLZXksIG5vZGVTY2hlbWEpLFxuICAgICAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKSxcbiAgICAgICAgcHJvcGVydGllczogW10sXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9O1xuICBjb25zdCBtYXBwZWQgPSAhc2NoZW1hLnR5cGUgPyBtYXBwaW5ncy5vYmplY3QgOiAoXG4gICAgc2NoZW1hLnR5cGUgYXMgc3RyaW5nIGluIG1hcHBpbmdzID8gbWFwcGluZ3Nbc2NoZW1hLnR5cGUgYXMgc3RyaW5nXSA6IG1hcHBpbmdzLmRlZmF1bHRcbiAgKTtcbiAgcmV0dXJuIG1hcHBlZCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBmb3IgKGNvbnN0IHAgb2YgcHJvcGVydGllcykge1xuICAgIGlmIChwLmZ1bGxLZXkgPT09IGZ1bGxLZXkpIHtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZFAgPSBmaW5kUHJvcGVydHkocC5wcm9wZXJ0aWVzLCBmdWxsS2V5KTtcbiAgICBpZiAoY2hpbGRQKSB7XG4gICAgICByZXR1cm4gY2hpbGRQO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJlbnRQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGFsbEtleXMgPSBwcm9wZXJ0eS5mdWxsS2V5LnNwbGl0KCcuJyk7XG4gIFsuLi5uZXcgQXJyYXkocHJvcGVydHkuc3VnZ2VzdGlvbnM/LnBhcmVudExldmVsIHx8IDApXS5tYXAoKCkgPT4gYWxsS2V5cy5wb3AoKSk7XG4gIGNvbnN0IHBhcmVudEtleXMgPSBmdWxsS2V5UGFydHMoYWxsS2V5cy5qb2luKCcuJykpO1xuICBwYXJlbnRLZXlzLnBvcCgpO1xuICBjb25zdCBwYXJlbnQgPSAocGFyZW50S2V5cy5yZWR1Y2UoKHByZXYsIGN1cnIsIGN1cnJJbmRleCk6IGFueSA9PiB7XG4gICAgY29uc3QgcHJvcCA9IHByZXYuZmluZCh2ID0+IHYua2V5ID09PSBjdXJyKTtcbiAgICByZXR1cm4gY3VyckluZGV4ID09PSBwYXJlbnRLZXlzLmxlbmd0aCAtIDEgPyAocHJvcCB8fCB7fSBhcyBJTm9kZVByb3BlcnR5KSA6IChwcm9wIS5wcm9wZXJ0aWVzIHx8IFtdKTtcbiAgfSwgcHJvcGVydGllcykgYXMgYW55KSBhcyBJTm9kZVByb3BlcnR5O1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJlbnQpID8gcHJvcGVydHkgOiBwYXJlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgbmVzdGVkUHJvcGVydHkgPSAoeyBwcm9wZXJ0aWVzIH06IElOb2RlUHJvcGVydHksIG5lc3RlZEtleTogc3RyaW5nKSA9PlxuICBwcm9wZXJ0aWVzLmZpbmQoKHsga2V5IH0pID0+IGtleSA9PT0gbmVzdGVkS2V5KTtcblxuZXhwb3J0IGNvbnN0IHNpYmxpbmdQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCBzaWJsaW5nS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcGFyZW50ID0gcGFyZW50UHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHkpO1xuICBjb25zdCBwYXJlbnRQcm9wZXJ0aWVzID0gcGFyZW50ID09PSBwcm9wZXJ0eSA/IHByb3BlcnRpZXMgOiBwYXJlbnQucHJvcGVydGllcztcbiAgcmV0dXJuIHBhcmVudFByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3Aua2V5ID09PSBzaWJsaW5nS2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCBncm91cENoYW5nZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBrZXk6IHN0cmluZywgdmFsdWU/OiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGtleSk7XG4gICAgcGFyZW50S2V5cy5yZWR1Y2UoKHByZXYsIGN1cnIsIGN1cnJJbmRleCkgPT4ge1xuICAgICAgaWYgKGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcmV2LnNwbGljZShwcmV2LmZpbmRJbmRleCh2ID0+IHYua2V5ID09PSBjdXJyKSwgMSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IHByZXYuZmluZCh2ID0+IHYua2V5ID09PSBjdXJyKSE7XG4gICAgICAgIHByb3AuY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBwcm9wLnByb3BlcnRpZXM7XG4gICAgICB9XG4gICAgfSwgcHJvcGVydGllcyk7XG4gIH1cbiAgY2F0Y2ggKF9lcnIpIHt9XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb3BlcnR5S2V5cyA9IChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT5cbiAgcHJvcGVydHkucHJvcGVydGllcy5tYXAoKHByb3AsIGkpID0+IHtcbiAgICBwcm9wLmZ1bGxLZXkgPSBgJHtwcm9wZXJ0eS5mdWxsS2V5fSR7cHJvcGVydHkuaXNBcnJheSA/IGBbJHtpfV1gIDogYC4ke3Byb3Aua2V5fWB9YDtcbiAgICBwcm9wLmtleSA9IHByb3BlcnR5LmlzQXJyYXkgPyBgJHtpfWAgOiBwcm9wLmtleTtcbiAgICByZXR1cm4gcmVmcmVzaFByb3BlcnR5S2V5cyhwcm9wKTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpO1xuICByZXR1cm4gISFzdGFydERhdGU/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbiA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBkaWZmSW5EYXlzKHN0YXJ0RGF0ZS52YWx1ZSwgZW5kRGF0ZS52YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgY3ljbGVEdXJhdGlvbiA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2N5Y2xlRHVyYXRpb24nKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhY3ljbGVEdXJhdGlvbj8udmFsdWUgJiYgISFlbmREYXRlPy52YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJykhO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpITtcbiAgcmV0dXJuIG1vbWVudChlbmREYXRlLnZhbHVlKS5sb2NhbGUoJ2VuLWdiJykuc3VidHJhY3QoY3ljbGVEdXJhdGlvbi52YWx1ZSwgJ2RheXMnKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbn07XG4iXX0=
|
|
544
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ2UsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFDM0QsZ0JBQWdCLEVBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUNhLHdCQUF3QixFQUFFLFdBQVcsRUFDdkQsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFDL0UsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQ3ZDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUN6RixrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFDakUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLFdBQVcsR0FBRztJQUNsQixVQUFVO0NBQ1gsQ0FBQztBQUdGLE1BQU0sQ0FBQyxN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bXBsZXhpdHkgKi9cbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZW4tZ2InO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBkaWZmSW5EYXlzLCBpc051bWJlciB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHtcbiAgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlLCBOb2RlVHlwZSwgaXNUeXBlTm9kZSwgaXNUeXBlVmFsaWQsIGlzRXhwYW5kYWJsZSxcbiAgU2l0ZSwgT3JnYW5pc2F0aW9uLCB0eXBlVG9TY2hlbWFUeXBlXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7XG4gIGRlZmluaXRpb25zLCBkZWZpbml0aW9uLCBJRGVmaW5pdGlvbk9iamVjdCwgSURlZmluaXRpb25BcnJheSwgZ2VuZXJpY1R5cGVcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5cbmltcG9ydCB7XG4gIElWYWxpZGF0aW9uRXJyb3IsIGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZSwgZm9ybWF0RXJyb3IsXG4gIG1pc3NpbmdOb2RlRXJyb3JNZXNzYWdlLCBpc01pc3NpbmdQcm9wZXJ0eUVycm9yLCBlcnJvckhhc0Vycm9yLCBlcnJvckhhc1dhcm5pbmcsIHZhbGlkYXRpb25FcnJvckxldmVsLFxuICBtaXNzaW5nTm9kZUVycm9ycywgaXNNaXNzaW5nT25lT2ZFcnJvclxufSBmcm9tICcuL2ZpbGVzLWVycm9yLm1vZGVsJztcbmltcG9ydCB7XG4gIHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcywgdmFsdWVUeXBlVG9EZWZhdWx0LCBkZWZpbml0aW9uVG9TY2hlbWFUeXBlLCBhdmFpbGFibGVQcm9wZXJ0aWVzLFxuICBuZXN0aW5nVHlwZUVuYWJsZWQsIG5lc3RpbmdFbmFibGVkLCBsaW5rVHlwZUVuYWJsZWQsIGlzU2NoZW1hSXJpXG59IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEuc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaENvdW50cnkgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IGJhc2VVcmwsIG1hcHNVcmwsIHNhZmVKU09OUGFyc2UsIHNhZmVKU09OU3RyaW5naWZ5IH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEFSUkFZX0RFTElNSVRFUiA9ICc7JztcbmNvbnN0IHByaXZhdGVLZXlzID0gW1xuICAnZmlsZXBhdGgnXG5dO1xuXG5leHBvcnQgdHlwZSBzdWdnZXN0aW9uVHlwZSA9IE5vZGVUeXBlIHwgJ3NlbGVjdCcgfCAnZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgZGVmYXVsdFN1Z2dlc3Rpb25UeXBlOiBzdWdnZXN0aW9uVHlwZSA9ICdkZWZhdWx0JztcblxuaW50ZXJmYWNlIElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHtcbiAgdHlwZT86IHN1Z2dlc3Rpb25UeXBlO1xuICBxdWVyaWVzPzogYW55W107XG4gIHZhbHVlcz86IHN0cmluZ1tdO1xuICBwYXJlbnRMZXZlbD86IG51bWJlcjtcbiAgaXNMaW5rTm9kZT86IGJvb2xlYW47XG4gIGlzVW5pcXVlS2V5Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU5ld1Byb3BlcnR5IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcHJvcD86IGRlZmluaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVycm9yUHJvcGVydHkge1xuICBsZXZlbD86IHZhbGlkYXRpb25FcnJvckxldmVsO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlUHJvcGVydHkge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgYnkgdGhlIHVzZXJcbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIGlzQWRkZWQ/OiBib29sZWFuO1xuICBzY2hlbWFUeXBlOiBTY2hlbWFUeXBlO1xuICBrZXk6IHN0cmluZztcbiAgZnVsbEtleTogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGJvb2xlYW47XG4gIHN1Z2dlc3Rpb25zPzogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb247XG4gIHNjaGVtYT86IGRlZmluaXRpb247XG4gIGVycm9yPzogSVZhbGlkYXRpb25FcnJvcjtcbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBjbG9zZWRWaXNpYmxlPzogYm9vbGVhbjtcbiAgbmV3UHJvcGVydHk/OiBJTmV3UHJvcGVydHk7XG4gIG5ld0Vycm9yPzogSUVycm9yUHJvcGVydHk7XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIGlzQXJyYXk/OiBib29sZWFuO1xuICBpc0V4cGFuZGFibGU/OiBib29sZWFuO1xuICBpc09wZW4/OiBib29sZWFuO1xuICBwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W107XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBleHRlcm5hbFVybD86IHtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvLyBkZWZhdWx0IGlzIGV4dGVybmFsLWxpbmstYWx0XG4gICAgaWNvbj86IHN0cmluZztcbiAgICB1cmxQYXJhbVZhbHVlPzogYm9vbGVhbjtcbiAgfTtcbiAgLy8gbWFraW5nIGNoYW5nZXMgb24gdGhlIHByb3BlcnR5XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICAvLyB1c2VyIG1hZGUgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgY2hhbmdlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IHN0cmluZ1ZhbHVlID0gKHZhbHVlOiBhbnkpID0+ICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSkudG9TdHJpbmcoKTtcbmNvbnN0IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoID0gKGtleTogc3RyaW5nKSA9PiBrZXkucmVwbGFjZSgvXFxbXFxkK1xcXSQvLCAnJyk7XG5leHBvcnQgY29uc3Qga2V5VG9EYXRhUGF0aCA9IChrZXk6IHN0cmluZykgPT4ga2V5Py5sZW5ndGggPyBgLiR7a2V5fWAgOiAnJztcbmV4cG9ydCBjb25zdCBkYXRhUGF0aFRvS2V5ID0gKGRhdGFQYXRoID0gJycsIHRyaW1BcnJheSA9IGZhbHNlKSA9PlxuICB0cmltQXJyYXkgPyBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChkYXRhUGF0aC5zdWJzdHJpbmcoMSkpIDogZGF0YVBhdGguc3Vic3RyaW5nKDEpO1xuZXhwb3J0IGNvbnN0IHBhcmVudEtleSA9IChrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBrZXlzID0gKGtleS5zdGFydHNXaXRoKCcuJykgPyBrZXkuc3Vic3RyaW5nKDEpIDoga2V5KS5zcGxpdCgnLicpO1xuICBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5cy5qb2luKCcuJyk7XG59O1xuXG4vKipcbiAqIFNvcnQgcHJvcGVydGllcyBoYXZpbmcgZXJyb3JzLCB0eXBlLCBpZCwgLi4ucHJvcGVydGllcyAoc2ltcGxlKSwgYW5kIGZpbmFsbHkgdGhlIGdyb3Vwc1xuICpcbiAqIEBwYXJhbSBhIHtJTm9kZVByb3BlcnR5fVxuICogQHBhcmFtIGIge0lOb2RlUHJvcGVydHl9XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0UHJvcGVydGllcyA9IChhOiBJTm9kZVByb3BlcnR5LCBiOiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGlmIChpc051bWJlcihhLmtleSkgJiYgaXNOdW1iZXIoYi5rZXkpKSB7XG4gICAgcmV0dXJuICthLmtleSAtICtiLmtleTtcbiAgfVxuICBpZiAoYS5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gYi5pc0V4cGFuZGFibGUgPyBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KSA6IDE7XG4gIH1cbiAgaWYgKGIuaXNFeHBhbmRhYmxlKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYS5rZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgY29uc3QgYUtleSA9IGEua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGNvbnN0IGJLZXkgPSBiLmtleS5yZXBsYWNlKCdAJywgJycpO1xuICBpZiAoYUtleSA9PT0gJ3R5cGUnKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChiS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBpZiAoYUtleSA9PT0gJ2lkJyAmJiBiS2V5ICE9PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGEuaGFzRXJyb3IgfHwgYS5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KTtcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wZXJ0eUVycm9yOiB7XG4gIFtrZXk6IHN0cmluZ106IChlcnJvcjogYW55LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgbWF4OiAoeyBtYXggfSkgPT4gYHNob3VsZCBiZSA8PSAke21heH1gLFxuICBtaW46ICh7IG1pbiB9KSA9PiBgc2hvdWxkIGJlID49ICR7bWlufWAsXG4gIHBhdHRlcm46ICh7IHJlcXVpcmVkUGF0dGVybiB9KSA9PiBgc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCIke3JlcXVpcmVkUGF0dGVybn1cImAsXG4gIHJlcXVpcmVkOiAoX2UsIHsgc2NoZW1hVHlwZSB9KSA9PiBzY2hlbWFUeXBlID8gYHNob3VsZCBiZSBzZXQgb3IgbGlua2VkIHRvIGFub3RoZXIgJHtzY2hlbWFUeXBlfWAgOiB1bmRlZmluZWRcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRQcm9wZXJ0eUVycm9yID0gKGVycm9yczogYW55LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpWzBdO1xuICByZXR1cm4ga2V5IGluIGRlZmF1bHRQcm9wZXJ0eUVycm9yID8gZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlKGRlZmF1bHRQcm9wZXJ0eUVycm9yW2tleV0oZXJyb3JzW2tleV0sIHByb3BlcnR5KSkgOiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNFcnJvciA9IHZhbHVlID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc29tZShoYXNFcnJvcikgOiB2YWx1ZS5oYXNFcnJvcjtcblxuZXhwb3J0IGNvbnN0IGhhc1dhcm5pbmcgPSB2YWx1ZSA9PiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNvbWUoaGFzV2FybmluZykgOiB2YWx1ZS5oYXNXYXJuaW5nO1xuXG5jb25zdCBjb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMgPSAoa2V5OiBzdHJpbmcsIGFsbE9mOiBhbnlbXSkgPT4ge1xuICBjb25zdCBjb25kaXRpb25zID0gKGFsbE9mIHx8IFtdKVxuICAgIC5maWx0ZXIodiA9PiAodi5pZj8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKGtleSkpXG4gICAgLm1hcCh2ID0+IHYudGhlbj8ucHJvcGVydGllc1trZXldKVxuICAgIC5tYXAodiA9PiB2Py5pdGVtcz8ucHJvcGVydGllcyB8fCB2Py5wcm9wZXJ0aWVzKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBjb25kaXRpb25zLmxlbmd0aCA/IFt7XG4gICAgYm9vbDoge1xuICAgICAgc2hvdWxkOiBjb25kaXRpb25zLmZsYXRNYXAoY29uZCA9PiBPYmplY3Qua2V5cyhjb25kKS5mbGF0TWFwKGsgPT4gKGNvbmRba10uZW51bSB8fCBbXSkubWFwKHYgPT4gKHtcbiAgICAgICAgbWF0Y2g6IHsgW2tdOiB2IH1cbiAgICAgIH0pKSkpLFxuICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICB9XG4gIH1dIDogW107XG59O1xuXG4vLyBkZWZhdWx0IHN1Z2dlc3QgZm9yIGxpbmtpbmcgbm9kZXMgdG9nZXRoZXIgdXNpbmcgdGhlIGBpZGAgZmllbGRcbmNvbnN0IHN1Z2dlc3RMaW5rTm9kZXMgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKTtcbiAgcmV0dXJuIGtleSA9PT0gJ2lkJyAmJiBrZXlzLmxlbmd0aCA+PSAxID8geyB0eXBlLCBpc0xpbmtOb2RlOiB0cnVlIH0gOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBzdWdnZXN0RXhpc3RpbmdOb2RlID0gKHR5cGU6IE5vZGVUeXBlLCBmdWxsS2V5OiBzdHJpbmcpOiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICByZXR1cm4ga2V5cy5sZW5ndGggPj0gMSAmJiBbJ0BpZCcsICdvcGVuTENBSWQnXS5pbmNsdWRlcyhrZXkpID8geyB0eXBlLCBpc1VuaXF1ZUtleTogJ0BpZCcgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24gPSAodHlwZTogTm9kZVR5cGUpID0+IChmdWxsS2V5OiBzdHJpbmcpID0+XG4gIHN1Z2dlc3RMaW5rTm9kZXModHlwZSwgZnVsbEtleSkgfHwgc3VnZ2VzdEV4aXN0aW5nTm9kZSh0eXBlLCBmdWxsS2V5KTtcblxuY29uc3QgdGVybVN1Z2dlc3Rpb25zID0gKHBhcmVudDogc3RyaW5nLCB7IGFsbE9mIH06IElEZWZpbml0aW9uT2JqZWN0KSA9PiAoe1xuICB0eXBlOiBOb2RlVHlwZS5UZXJtLFxuICBxdWVyaWVzOiBbXG4gICAgLi4uY29tcGlsZVN1Z2dlc3Rpb25RdWVyaWVzKG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKHBhcmVudCksIGFsbE9mISksXG4gICAgLi4uKFsnY291bnRyeSddLmluY2x1ZGVzKHBhcmVudCkgPyBbbWF0Y2hDb3VudHJ5XSA6IFtdKVxuICBdXG59KTtcblxuY29uc3QgdHlwZVRvU3VnZ2VzdGlvbjoge1xuICBbdHlwZSBpbiBTY2hlbWFUeXBlfE5vZGVUeXBlfGdlbmVyaWNUeXBlfCdpbnRlZ2VyJ10/OiAoXG4gICAgZnVsbEtleTogc3RyaW5nLCBwYXJlbnRTY2hlbWE/OiBkZWZpbml0aW9uLCBzY2hlbWE/OiBkZWZpbml0aW9uXG4gICkgPT4gSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb258YW55O1xufSA9IHtcbiAgW05vZGVUeXBlLkFjdG9yXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5BY3RvciksXG4gIFtOb2RlVHlwZS5DeWNsZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuQ3ljbGUpLFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCksXG4gIFtOb2RlVHlwZS5PcmdhbmlzYXRpb25dOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLk9yZ2FuaXNhdGlvbiksXG4gIFtOb2RlVHlwZS5TaXRlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5TaXRlKSxcbiAgW05vZGVUeXBlLlNvdXJjZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuU291cmNlKSxcbiAgW05vZGVUeXBlLlRlcm1dOiAoZnVsbEtleSwgcGFyZW50U2NoZW1hKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgICByZXR1cm4gWyduYW1lJ10uaW5jbHVkZXMoa2V5KSAmJiBrZXlzLmxlbmd0aCA+PSAxID9cbiAgICAgIHRlcm1TdWdnZXN0aW9ucyhrZXlzLnBvcCgpISwgcGFyZW50U2NoZW1hIGFzIElEZWZpbml0aW9uT2JqZWN0KSA6XG4gICAgICBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlRlcm0pKGZ1bGxLZXkpO1xuICB9LFxuICBbU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHldOiAoZnVsbEtleSkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5wb3AoKSE7XG4gICAgLy8gcHJldmVudCByZXBsYWNpbmcgYSB0b3AtbGV2ZWwgc291cmNlXG4gICAgcmV0dXJuIFsndGl0bGUnLCAnZG9jdW1lbnRET0knLCAnc2NvcHVzJ10uaW5jbHVkZXMoa2V5KSAmJiBwYXJlbnQgPT09ICdiaWJsaW9ncmFwaHknICYmIGtleXMubGVuZ3RoID49IDEgPyB7XG4gICAgICB0eXBlOiBOb2RlVHlwZS5Tb3VyY2UsXG4gICAgICBwYXJlbnRMZXZlbDogMVxuICAgIH0gOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG51bWJlcjogKF9hLCBfYiwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID8gWyhzY2hlbWEgYXMgYW55KS5jb25zdF0gOiBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdmFsdWVzLmxlbmd0aCA+IDAgPyAnc2VsZWN0JyA6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSxcbiAgICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBpbnRlZ2VyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIHN0cmluZzogKGZ1bGxLZXksIF9iLCBzY2hlbWEpID0+IHtcbiAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/XG4gICAgICBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6XG4gICAgICAoKHNjaGVtYSBhcyBhbnkpLmVudW0gfHwgW10pLmZpbHRlcih2YWwgPT4gIU9iamVjdC52YWx1ZXMoU2NoZW1hVHlwZSkuaW5jbHVkZXModmFsKSk7XG4gICAgY29uc3Qga2V5ID0gZnVsbEtleS5zcGxpdCgnLicpLnBvcCgpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCAmJiBrZXkgIT09ICd0eXBlJyA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgYm9vbGVhbjogKF9hKSA9PiAoe1xuICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgIHZhbHVlczogWyd0cnVlJywgJ2ZhbHNlJ11cbiAgfSlcbn07XG5cbmNvbnN0IGVuYWJsZVN1Z2dlc3Rpb25zID0gKFxuICBwYXJlbnRTY2hlbWE6IGRlZmluaXRpb24sIHR5cGU6IFNjaGVtYVR5cGUgfCBOb2RlVHlwZSB8IGdlbmVyaWNUeXBlLCBmdWxsS2V5OiBzdHJpbmcsIHNjaGVtYT86IGRlZmluaXRpb25cbikgPT4ge1xuICBjb25zdCBzdWdnZXN0aW9uID0gdHlwZSBpbiB0eXBlVG9TdWdnZXN0aW9uID8gdHlwZVRvU3VnZ2VzdGlvblt0eXBlXSEoZnVsbEtleSwgcGFyZW50U2NoZW1hKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHN1Z2dlc3Rpb24gfHwgKFxuICAgIHNjaGVtYSAmJiBzY2hlbWEudHlwZSBhcyBnZW5lcmljVHlwZSBpbiB0eXBlVG9TdWdnZXN0aW9uID9cbiAgICAgIHR5cGVUb1N1Z2dlc3Rpb25bc2NoZW1hLnR5cGUgYXMgZ2VuZXJpY1R5cGVdIShmdWxsS2V5LCBwYXJlbnRTY2hlbWEsIHNjaGVtYSkgOlxuICAgICAgdW5kZWZpbmVkXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9kZUF2YWlsYWJsZVByb3BlcnRpZXMgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIHsgZnVsbEtleSwgc2NoZW1hLCBzY2hlbWFUeXBlIH06IFBhcnRpYWw8SU5vZGVQcm9wZXJ0eT5cbikgPT4gYXZhaWxhYmxlUHJvcGVydGllcyhzY2hlbWEhLCBzY2hlbWFUeXBlISwgZnVsbEtleSA/IGdldChub2RlLCBmdWxsS2V5LCB7fSkgOiBub2RlLCBmdWxsS2V5IS5sZW5ndGggPiAwKTtcblxuZXhwb3J0IGNvbnN0IGlzQWRkUHJvcGVydHlFbmFibGVkID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBzY2hlbWFUeXBlOiBTY2hlbWFUeXBlLCBzY2hlbWE6IGRlZmluaXRpb24sIGZ1bGxLZXkgPSAnJ1xuKSA9PiAhIXNjaGVtYSAmJlxuICAhIU9iamVjdC5rZXlzKG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzKG5vZGUsIHsgZnVsbEtleSwgc2NoZW1hIH0pKS5sZW5ndGggJiZcbiAgKCFmdWxsS2V5IHx8IG5lc3RpbmdUeXBlRW5hYmxlZChzY2hlbWFUeXBlKSk7XG5cbmNvbnN0IGVkaXRhYmxlS2V5ID0gKGtleTogc3RyaW5nKSA9PiAhWyd0eXBlJywgJ0B0eXBlJywgJ3Rlcm1UeXBlJ10uaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnR5SWQgPSAoKSA9PiB1dWlkdjQoKTtcblxuY29uc3QgcHJvcGVydHlVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcpID0+XG4gIFsnQGlkJywgJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGxpbmtUeXBlRW5hYmxlZChub2RlWydAdHlwZSddKSA/XG4gICAge1xuICAgICAgdXJsOiBgJHtiYXNlVXJsKCl9LyR7bm9kZVsnQHR5cGUnXS50b0xvd2VyQ2FzZSgpfS8ke25vZGVbJ0BpZCddfWAsXG4gICAgICB0aXRsZTogJ09wZW4nXG4gICAgfSA6XG4gICAgKFxuICAgICAgbm9kZS50eXBlID09PSBTY2hlbWFUeXBlLlRlcm0gJiYgWyduYW1lJ10uaW5jbHVkZXMoa2V5KSA/IHtcbiAgICAgICAgdXJsOiBgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5P3F1ZXJ5PWAsXG4gICAgICAgIHVybFBhcmFtVmFsdWU6IHRydWUsXG4gICAgICAgIHRpdGxlOiAnU2VhcmNoIGluIEdsb3NzYXJ5J1xuICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbmNvbnN0IHByb3BlcnR5TWFwc1VybCA9IChub2RlOiBTaXRlIHwgT3JnYW5pc2F0aW9uLCBrZXk6IHN0cmluZywgdmFsdWUpID0+XG4gIFsndHlwZSddLmluY2x1ZGVzKGtleSkgJiYgW1xuICAgIFNjaGVtYVR5cGUuU2l0ZS50b1N0cmluZygpLFxuICAgIFNjaGVtYVR5cGUuT3JnYW5pc2F0aW9uLnRvU3RyaW5nKClcbiAgXS5pbmNsdWRlcyhzdHJpbmdWYWx1ZSh2YWx1ZSkgfHwgbm9kZS50eXBlKSA/XG4gICAge1xuICAgICAgdXJsOiBtYXBzVXJsKHsgbGF0OiBub2RlLmxhdGl0dWRlLCBsbmc6IG5vZGUubG9uZ2l0dWRlIH0pLFxuICAgICAgdGl0bGU6ICdWaWV3IG9uIG1hcHMnLFxuICAgICAgaWNvbjogJ21hcCdcbiAgICB9IDpcbiAgICB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5RXh0ZXJuYWxVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+XG4gIHByb3BlcnR5VXJsKG5vZGUsIGtleSkgfHxcbiAgcHJvcGVydHlNYXBzVXJsKG5vZGUgYXMgYW55LCBrZXksIHZhbHVlKTtcblxuY29uc3QgYXJyYXlQbGFjZWhvbGRlciA9ICh2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBgVHlwZSBhICR7dmFsdWVUeXBlfSB0aGVuIHByZXNzIEVudGVyYDtcblxuY29uc3QgZGVmYXVsdFBsYWNlaG9sZGVyID0gKHsgdHlwZSwgZXhhbXBsZXMgfTogYW55LCB2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBleGFtcGxlcz8ubGVuZ3RoID8gKFxuICBBcnJheS5pc0FycmF5KGV4YW1wbGVzWzBdKSA/IGFycmF5UGxhY2Vob2xkZXIodmFsdWVUeXBlKSA6IGV4YW1wbGVzWzBdXG4pIDogYE11c3QgYmUgb2YgdHlwZSAke3R5cGUgfHwgdmFsdWVUeXBlfWA7XG5cbmNvbnN0IHNjaGVtYVBsYWNob2xkZXIgPSAoc2NoZW1hOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbcGFyZW50LCAuLi5rZXlzXSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9O1xuICBjb25zdCB7IGV4YW1wbGVzIH0gPSBwYXJlbnQgaW4gcHJvcGVydGllcyA/IHByb3BlcnRpZXNbcGFyZW50XSA6IHsgZXhhbXBsZXM6IFtdIH07XG4gIHJldHVybiBleGFtcGxlcz8ubGVuZ3RoICYmIHR5cGVvZiBleGFtcGxlc1swXSA9PT0gJ29iamVjdCcgPyBnZXQoZXhhbXBsZXNbMF0sIGtleXMuam9pbignLicpLCBudWxsKTogbnVsbDtcbn07XG5cbmNvbnN0IHByb3BlcnR5UGxhY2Vob2xkZXIgPSAoc2NoZW1hOiBhbnksIHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUsIGZ1bGxLZXkgPSAnJywgcGFyZW50U2NoZW1hPzogYW55KSA9PlxuICBzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyA/XG4gICAgYXJyYXlQbGFjZWhvbGRlcih2YWx1ZVR5cGUpIDogKFxuICAgICAgcGFyZW50U2NoZW1hICYmIGZ1bGxLZXk/Lmxlbmd0aCA/IHNjaGVtYVBsYWNob2xkZXIocGFyZW50U2NoZW1hLCBmdWxsS2V5KSA6IG51bGxcbiAgICApIHx8IGRlZmF1bHRQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSk7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVZhbHVlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiAodmFsdWU6IGFueSwgc2NoZW1hOiBkZWZpbml0aW9uKSA9PiBhbnk7XG59ID0ge1xuICBvYmplY3Q6IHZhbCA9PiBzYWZlSlNPTlN0cmluZ2lmeSh2YWwpLFxuICBhcnJheTogKHZhbCwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgcmV0dXJuICckcmVmJyBpbiBpdGVtcyA/IHZhbCA6IChcbiAgICAgIEFycmF5LmlzQXJyYXkodmFsKSA/XG4gICAgICAgIHZhbC5tYXAodmFsdWUgPT4gcHJvcGVydHlWYWx1ZShpdGVtcywgdmFsdWUpKS5qb2luKEFSUkFZX0RFTElNSVRFUikgOlxuICAgICAgICB2YWxcbiAgICApO1xuICB9LFxuICBqc29uOiB2YWwgPT4gdmFsIHx8ICcnLFxuICBzdHJpbmc6IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRyaW0oKSxcbiAgbnVtYmVyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBpbnRlZ2VyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBib29sZWFuOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbn07XG5cbmNvbnN0IHByb3BlcnR5VmFsdWUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZTogYW55KSA9PlxuICBzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSA/XG4gICAgICBwcm9wZXJ0eVR5cGVWYWx1ZVt0eXBlb2YgdmFsdWVdKHZhbHVlLCBzY2hlbWEpIDpcbiAgICAgIHByb3BlcnR5VHlwZVZhbHVlW3NjaGVtYS50eXBlIGFzIHN0cmluZ10odmFsdWUsIHNjaGVtYSlcbiAgKSA6XG4gIHNhZmVKU09OU3RyaW5naWZ5KHZhbHVlKTtcblxuY29uc3QgcHJvcGVydHlWYWx1ZVR5cGUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZT86IGFueSkgPT5cbiAgKHNjaGVtYS50eXBlID8gKFxuICAgIEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpID9cbiAgICAgIHNjaGVtYS50eXBlWzBdIDpcbiAgICAgIHNjaGVtYS50eXBlID09PSAnYXJyYXknID9cbiAgICAgICAgcHJvcGVydHlWYWx1ZVR5cGUoeyAuLi5zY2hlbWEsIHR5cGU6IFtzY2hlbWEuaXRlbXMudHlwZSBhcyBnZW5lcmljVHlwZV0gfSkgOlxuICAgICAgICBzY2hlbWEudHlwZVxuICApIDogdHlwZW9mIHZhbHVlKSBhcyBnZW5lcmljVHlwZTtcblxuY29uc3QgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZToge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlOiBhbnksIHNjaGVtYTogZGVmaW5pdGlvbikgPT4gYW55O1xufSA9IHtcbiAgdW5kZWZpbmVkOiAoKSA9PiB1bmRlZmluZWQsXG4gIG9iamVjdDogdmFsID0+IHNhZmVKU09OUGFyc2UodmFsKSxcbiAgYXJyYXk6ICh2YWwsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgIHJldHVybiAnJHJlZicgaW4gaXRlbXMgPyB2YWwgOiAoXG4gICAgICAhdmFsIHx8IEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IHZhbC5zcGxpdChBUlJBWV9ERUxJTUlURVIpLm1hcCh2YWx1ZSA9PiBwYXJzZU5ld1ZhbHVlKGl0ZW1zLCB2YWx1ZSkpXG4gICAgKTtcbiAgfSxcbiAganNvbjogdmFsID0+IHZhbCB8fCAnJyxcbiAgc3RyaW5nOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50cmltKCksXG4gIG51bWJlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgaW50ZWdlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgYm9vbGVhbjogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnXG59O1xuXG4vKipcbiAqIENvbnZlcnQgdmFsdWUgdG8gdGhlIGZpbmFsIHR5cGUgaW4gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIERlZmluaXRpb24gb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcmV0dXJucyBWYWx1ZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZU5ld1ZhbHVlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU6IGFueSkgPT5cbiAgc2NoZW1hLnR5cGUgPyAoXG4gICAgQXJyYXkuaXNBcnJheShzY2hlbWEudHlwZSkgP1xuICAgICAgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZVt0eXBlb2YgdmFsdWVdKHZhbHVlLCBzY2hlbWEpIDpcbiAgICAgIHByb3BlcnR5VHlwZVBhcnNlVmFsdWVbc2NoZW1hLnR5cGUgYXMgc3RyaW5nXSh2YWx1ZSwgc2NoZW1hKVxuICApIDogdmFsdWU7XG5cbmNvbnN0IGlzT3BlbkRlZmF1bHQgPSAoc2NoZW1hVHlwZTogU2NoZW1hVHlwZSkgPT4gW1xuICBTY2hlbWFUeXBlLlRlcm1cbl0uaW5jbHVkZXMoc2NoZW1hVHlwZSk7XG5cbi8vIGNhbiB0aGUgcHJvcGVydHkgYmUgc2VlbiB3aGVuIHRoZSBncm91cCBpcyBjbG9zZWRcbmNvbnN0IGlzS2V5Q2xvc2VkVmlzaWJsZSA9IChrZXk6IHN0cmluZykgPT4gWyd0eXBlJywgJ2lkJywgJ0B0eXBlJywgJ0BpZCddLmluY2x1ZGVzKGtleSk7XG5cbmNvbnN0IGlzS2V5SGlkZGVuID0gKGtleTogc3RyaW5nKSA9PiBbJ3R5cGUnLCAnQHR5cGUnXS5pbmNsdWRlcyhrZXkpO1xuXG5jb25zdCBpc0tleVJlcXVpcmVkID0gKGtleTogc3RyaW5nLCBkZWY/OiBJRGVmaW5pdGlvbk9iamVjdCkgPT5cbiAgWyd0eXBlJywgJ2lkJ10uaW5jbHVkZXMoa2V5KSB8fCAoZGVmPy5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnR5RXJyb3IgPSAoZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10pID0+IChkYXRhUGF0aDogc3RyaW5nLCBub25FeHBhbmRhYmxlQXJyYXkgPSBmYWxzZSkgPT5cbiAgZXJyb3JzLmZpbmQoZXJyb3IgPT5cbiAgICAoXG4gICAgICBlcnJvci5kYXRhUGF0aCA9PT0gZGF0YVBhdGggfHwgKFxuICAgICAgICBub25FeHBhbmRhYmxlQXJyYXkgJiYgbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZXJyb3IuZGF0YVBhdGghKSA9PT0gbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZGF0YVBhdGgpXG4gICAgICApXG4gICAgKSAmJiAoZGF0YVBhdGgubGVuZ3RoID4gMCB8fCAhaXNNaXNzaW5nUHJvcGVydHlFcnJvcihlcnJvcikpXG4gICk7XG5cbmNvbnN0IG1pc3NpbmdQcm9wZXJ0eUVycm9ycyA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIHBhcmVudCA9ICcnXG4pOiBJTm9kZVByb3BlcnR5W10gPT4ge1xuICBjb25zdCBhbGxFcnJvcnMgPSBlcnJvcnMuZmlsdGVyKGVycm9yID0+XG4gICAgZXJyb3IuZGF0YVBhdGggPT09IGtleVRvRGF0YVBhdGgocGFyZW50KSAmJiBpc01pc3NpbmdQcm9wZXJ0eUVycm9yKGVycm9yKVxuICApO1xuICAvLyBjaGVjayBmb3Igbm9kZSBub3QgZm91bmQgZXJyb3JzXG4gIGNvbnN0IG1pc3NpbmdOb2RlID0gbWlzc2luZ05vZGVFcnJvcnMoYWxsRXJyb3JzKTtcbiAgcmV0dXJuIG1pc3NpbmdOb2RlLmxlbmd0aCA9PT0gMiA/IFt7XG4gICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgc3VnZ2VzdGlvbnM6IHsgdHlwZTogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlIH0sXG4gICAga2V5OiAnJyxcbiAgICBmdWxsS2V5OiBwYXJlbnQsXG4gICAgdmFsdWU6ICcnLFxuICAgIGVycm9yOiB7XG4gICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IG1pc3NpbmdOb2RlRXJyb3JNZXNzYWdlKG5vZGUpXG4gICAgfSxcbiAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlXG4gIH1dIDogYWxsRXJyb3JzLm1hcChlcnJvciA9PiB7XG4gICAgY29uc3QgeyBtaXNzaW5nUHJvcGVydHkgfSA9IGVycm9yLnBhcmFtcyE7XG4gICAgY29uc3QgZnVsbEtleSA9IHBhcmVudCA/IGAke3BhcmVudH0uJHttaXNzaW5nUHJvcGVydHl9YCA6IG1pc3NpbmdQcm9wZXJ0eTtcbiAgICBjb25zdCBtaXNzaW5nT25lT2YgPSBpc01pc3NpbmdPbmVPZkVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICAgIHN1Z2dlc3Rpb25zOiB7IHR5cGU6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSB9LFxuICAgICAga2V5OiBtaXNzaW5nUHJvcGVydHksXG4gICAgICBmdWxsS2V5LFxuICAgICAgdmFsdWU6ICdBZGQgZmllbGQgdG8gZml4JyxcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgICBoYXNFcnJvcjogbWlzc2luZ09uZU9mID8gZmFsc2UgOiBlcnJvckhhc0Vycm9yKGVycm9yKSxcbiAgICAgIGhhc1dhcm5pbmc6IG1pc3NpbmdPbmVPZiB8fCBlcnJvckhhc1dhcm5pbmcoZXJyb3IpLFxuICAgICAgcHJvcGVydGllczogW10sXG4gICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IHRydWVcbiAgICB9O1xuICB9KTtcbn07XG5cbmNvbnN0IHByb3BlcnR5RnJvbU5vZGUgPSAoXG4gIHNjaGVtYXM6IGRlZmluaXRpb25zLCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgZGVlcEVkaXRhYmxlOiBib29sZWFuLCBwYXJlbnQgPSAnJywgbm9kZTogYW55XG4pID0+IChrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCB2YWx1ZSA9IG5vZGVba2V5XTtcbiAgY29uc3QgZXhwYW5kYWJsZSA9IGlzRXhwYW5kYWJsZSh2YWx1ZSk7XG4gIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5ID0gaXNBcnJheSAmJiAhZXhwYW5kYWJsZTtcbiAgY29uc3QgZnVsbEtleSA9IEFycmF5LmlzQXJyYXkobm9kZSkgPyBgJHtwYXJlbnR9WyR7a2V5fV1gIDogW1xuICAgIHBhcmVudCxcbiAgICBrZXlcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuICBjb25zdCBub2RlVHlwZSA9IG5vZGUudHlwZSB8fCBub2RlWydAdHlwZSddO1xuICBjb25zdCBzY2hlbWFUeXBlID0gZXhwYW5kYWJsZSA/IChcbiAgICBpc0FycmF5ICYmIHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdLnR5cGUgfHwgdmFsdWVbMF1bJ0B0eXBlJ10gOiB2YWx1ZS50eXBlIHx8IHZhbHVlWydAdHlwZSddXG4gICkgOiBub2RlVHlwZTtcbiAgY29uc3Qgc2NoZW1hID0gKHNjaGVtYXMgJiYgaXNUeXBlVmFsaWQoeyB0eXBlOiBzY2hlbWFUeXBlIH0pID8gKFxuICAgIGV4cGFuZGFibGUgPyBzY2hlbWFzW3NjaGVtYVR5cGVdIDogc2NoZW1hc1tzY2hlbWFUeXBlXS5wcm9wZXJ0aWVzW2tleV1cbiAgKSA6IG51bGwpIHx8IHt9O1xuICBjb25zdCBpc0lyaSA9IGlzU2NoZW1hSXJpKHNjaGVtYSk7XG4gIGNvbnN0IGVycm9yID0gcHJvcGVydHlFcnJvcihlcnJvcnMpKGtleVRvRGF0YVBhdGgoZnVsbEtleSksIG5vbkV4cGFuZGFibGVBcnJheSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IGV4cGFuZGFibGUgPyAoXG4gICAgLy8gVE9ETzogZm9yIG5vbi1hcnJheSwgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICBpc0FycmF5ID8gc2NoZW1hIDogbm9kZVNjaGVtYVxuICApIDogbm9kZVNjaGVtYTtcbiAgY29uc3QgcHJvcGVydGllcyA9IGV4cGFuZGFibGUgfHwgaXNJcmkgP1xuICAgIHJlY3Vyc2l2ZVByb3BlcnRpZXMoc2NoZW1hcywgZXJyb3JzLCBwYXJlbnRTY2hlbWEsIGRlZXBFZGl0YWJsZSwgZnVsbEtleSkodmFsdWUpIDogW107XG4gIGNvbnN0IGluRXJyb3IgPSBlcnJvckhhc0Vycm9yKGVycm9yKSB8fCBoYXNFcnJvcihwcm9wZXJ0aWVzKTtcbiAgY29uc3QgaW5XYXJuaW5nID0gZXJyb3JIYXNXYXJuaW5nKGVycm9yKSB8fCBoYXNXYXJuaW5nKHByb3BlcnRpZXMpO1xuICBjb25zdCBlZGl0YWJsZSA9IGlzVHlwZU5vZGUobm9kZVsnQHR5cGUnXSkgfHwgKGV4cGFuZGFibGUgJiYgaXNUeXBlTm9kZSh2YWx1ZVsnQHR5cGUnXSkpID9cbiAgICBmYWxzZSA6XG4gICAgKFxuICAgICAgLy8gcHJldmVudCBlZGl0aW5nL2FkZGluZyBuZXcgcHJvcGVydGllcyBvbiBleGlzdGluZyBzdWItbm9kZXNcbiAgICAgICFkZWVwRWRpdGFibGUgJiYgaXNUeXBlTm9kZShzY2hlbWFUeXBlKSAmJiAoXG4gICAgICAgIGV4cGFuZGFibGUgPyB2YWx1ZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtIDogcGFyZW50ICYmIG5vZGUudHlwZSAhPT0gTm9kZVR5cGUuVGVybVxuICAgICAgKSA/XG4gICAgICAgIGZhbHNlIDpcbiAgICAgICAgLy8gaGFuZGxlIElSSVxuICAgICAgICAoIXNjaGVtYVR5cGUgJiYga2V5ID09PSAnQGlkJykgfHwgZWRpdGFibGVLZXkoa2V5KVxuICAgICk7XG4gIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSwgdmFsdWUpO1xuICByZXR1cm4ge1xuICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgc2NoZW1hVHlwZTogaXNJcmkgPyBudWxsIDogc2NoZW1hVHlwZSxcbiAgICBzY2hlbWEsXG4gICAga2V5LFxuICAgIGZ1bGxLZXksXG4gICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgZWRpdGFibGU6IGluRXJyb3IgfHwgZWRpdGFibGUsXG4gICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYSwgZnVsbEtleSksXG4gICAgbmV3UHJvcGVydHk6IHt9LFxuICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICBlcnJvcjogZm9ybWF0RXJyb3IoZXJyb3IpLFxuICAgIGlzSGlkZGVuOiBwYXJlbnQgJiYgaXNLZXlIaWRkZW4oa2V5KSxcbiAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICBoYXNFcnJvcjogaW5FcnJvcixcbiAgICBoYXNXYXJuaW5nOiBpbldhcm5pbmcsXG4gICAgaXNSZXF1aXJlZDogaXNLZXlSZXF1aXJlZChrZXksIHNjaGVtYXNbbm9kZVR5cGVdKSxcbiAgICBpc0FycmF5LFxuICAgIGlzRXhwYW5kYWJsZTogZXhwYW5kYWJsZSxcbiAgICBpc09wZW46IGlzT3BlbkRlZmF1bHQoc2NoZW1hVHlwZSksXG4gICAgcHJvcGVydGllcyxcbiAgICBwbGFjZWhvbGRlcjogcHJvcGVydHlQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSwgZnVsbEtleSwgcGFyZW50U2NoZW1hKSxcbiAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKVxuICB9IGFzIElOb2RlUHJvcGVydHk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2luZ2xlUHJvcGVydHkgPSAoc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbX3QsIC4uLmtleXNdID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgY29uc3QgcGFyZW50ID0ga2V5cy5qb2luKCcuJyk7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBwYXJlbnQubGVuZ3RoID8gZ2V0KG5vZGUsIHBhcmVudCkgOiBub2RlO1xuICBjb25zdCBzY2hlbWFUeXBlID0gdHlwZVRvU2NoZW1hVHlwZShwYXJlbnROb2RlLnR5cGUgfHwgcGFyZW50Tm9kZVsnQHR5cGUnXSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IHNjaGVtYXNbc2NoZW1hVHlwZV07XG4gIHJldHVybiBwcm9wZXJ0eUZyb21Ob2RlKHNjaGVtYXMsIGVycm9ycywgcGFyZW50U2NoZW1hLCB0cnVlLCBwYXJlbnQsIHBhcmVudE5vZGUpKGtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdXJzaXZlUHJvcGVydGllcyA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBkZWVwRWRpdGFibGU6IGJvb2xlYW4sIHBhcmVudCA9ICcnXG4pID0+IChub2RlOiBhbnkpOiBJTm9kZVByb3BlcnR5W10gPT5cbiAgT2JqZWN0LmtleXMobm9kZSlcbiAgICAuZmlsdGVyKGtleSA9PiAhcHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKHByb3BlcnR5RnJvbU5vZGUoc2NoZW1hcywgZXJyb3JzLCBub2RlU2NoZW1hLCBkZWVwRWRpdGFibGUsIHBhcmVudCwgbm9kZSkpXG4gICAgLmNvbmNhdCguLi5taXNzaW5nUHJvcGVydHlFcnJvcnMobm9kZSwgZXJyb3JzLCBwYXJlbnQpKVxuICAgIC5zb3J0KHNvcnRQcm9wZXJ0aWVzKTtcblxuY29uc3QgZnVsbEtleVBhcnRzID0gKGZ1bGxLZXk6IHN0cmluZykgPT4gZnVsbEtleS5zcGxpdCgnLicpLmZsYXRNYXAodmFsID0+IHtcbiAgaWYgKHZhbC5lbmRzV2l0aCgnXScpKSB7XG4gICAgY29uc3QgW2tleSwgaW5kZXhdID0gdmFsLnNwbGl0KCdbJyk7XG4gICAgcmV0dXJuIFtrZXksIGluZGV4LnJlcGxhY2UoJ10nLCAnJyldO1xuICB9XG4gIHJldHVybiB2YWw7XG59KTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVByb3BlcnRpZXMgPSAoeyBwcm9wZXJ0aWVzIH06IFBhcnRpYWw8SU5vZGVQcm9wZXJ0eT4sIHVwZGF0ZXI6IChwcm9wOiBJTm9kZVByb3BlcnR5KSA9PiBJTm9kZVByb3BlcnR5KSA9PlxuICAocHJvcGVydGllcyB8fCBbXSkubWFwKHByb3AgPT4gdXBkYXRlUHJvcGVydGllcyh1cGRhdGVyKHByb3ApLCB1cGRhdGVyKSk7XG5cbmV4cG9ydCBjb25zdCB0eXBlVG9OZXdQcm9wZXJ0eSA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIHNjaGVtYTogZGVmaW5pdGlvbiwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgbm9kZTogYW55LCBmdWxsS2V5OiBzdHJpbmdcbik6IElOb2RlUHJvcGVydHkgPT4ge1xuICBjb25zdCBrZXkgPSBmdWxsS2V5UGFydHMoZnVsbEtleSkucG9wKCkhO1xuICBjb25zdCBtYXBwaW5nczoge1xuICAgIFtrZXk6IHN0cmluZ106ICgpID0+IElOb2RlUHJvcGVydHk7XG4gIH0gPSB7XG4gICAgb2JqZWN0OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IHNjaGVtYVR5cGUsIHByb3BlcnRpZXMgfSA9IHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcyhzY2hlbWFzLCBzY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IHt9O1xuICAgICAgbm9kZVtrZXldLnR5cGUgPSBzY2hlbWFUeXBlO1xuICAgICAgLy8gVE9ETzogaGFuZGxlIGxvYWQgc2NoZW1hcyBmcm9tIGh0dHAgc291cmNlXG4gICAgICBpZiAoc2NoZW1hVHlwZS5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIHsgdHlwZTogJ2pzb24nIH0gYXMgYW55LCBub2RlU2NoZW1hLCBub2RlLCBmdWxsS2V5KTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IGhhbmRsZSBub2RlU2NoZW1hIHNob3VsZCBiZSBzY2hlbWEgdW5sZXNzIGxhc3QgcmVjdXJzaW9uXG4gICAgICBjb25zdCBwcm9wcyA9IHByb3BlcnRpZXNcbiAgICAgICAgLmZpbHRlcihwcm9wID0+IG5lc3RpbmdFbmFibGVkKHNjaGVtYVR5cGUsIHByb3Aua2V5KSAmJiAhIXByb3AudmFsdWUpXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgdiA9PiAoe1xuICAgICAgICAgICAgLi4udHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgdi52YWx1ZSwgbm9kZVNjaGVtYSwgbm9kZVtrZXldLCBgJHtmdWxsS2V5fS4ke3Yua2V5fWApLFxuICAgICAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHByb3BzLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHsgLi4ucHJldiwgW2N1cnIua2V5XTogY3Vyci52YWx1ZSB9KSwge30pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWFzW3NjaGVtYVR5cGVdLFxuICAgICAgICBzY2hlbWFUeXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgc2NoZW1hVHlwZSwgZnVsbEtleSksXG4gICAgICAgIHByb3BlcnRpZXM6IHByb3BzLnNvcnQoc29ydFByb3BlcnRpZXMpLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIGtleSksXG4gICAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgICBpc1JlcXVpcmVkOiBpc0tleVJlcXVpcmVkKGtleSwgc2NoZW1hIGFzIGFueSksXG4gICAgICAgIGlzQXJyYXk6IGZhbHNlLFxuICAgICAgICBpc0V4cGFuZGFibGU6IHRydWUsXG4gICAgICAgIGlzT3BlbjogaXNPcGVuRGVmYXVsdChzY2hlbWFUeXBlKVxuICAgICAgfTtcbiAgICB9LFxuICAgIGFycmF5OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICAgIC8vIGFycmF5IG9mIHN0cmluZywgbnVtYmVyIGFuZCBib29sZWFuXG4gICAgICBpZiAoaXRlbXMudHlwZSkge1xuICAgICAgICByZXR1cm4gbWFwcGluZ3MuZGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NoZW1hVHlwZSA9IGRlZmluaXRpb25Ub1NjaGVtYVR5cGUoaXRlbXMgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IFtdO1xuICAgICAgbm9kZVtrZXldLnB1c2goeyB9KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgaXRlbXMsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIG5vZGVba2V5XVswXSwgYCR7ZnVsbEtleX1bMF1gKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgc2NoZW1hVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogW3Byb3BlcnR5LnZhbHVlXSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvcGVydGllczogW3Byb3BlcnR5XSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZVxuICAgICAgfTtcbiAgICB9LFxuICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHNjaGVtYS5kZWZhdWx0IHx8IChzY2hlbWEgYXMgYW55KS5jb25zdCB8fCB2YWx1ZVR5cGVUb0RlZmF1bHRbdmFsdWVUeXBlXTtcbiAgICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBub2RlLnR5cGUsIGZ1bGxLZXksIHNjaGVtYSksXG4gICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eVBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlLCBmdWxsS2V5LCBub2RlU2NoZW1hKSxcbiAgICAgICAgZXh0ZXJuYWxVcmw6IHByb3BlcnR5RXh0ZXJuYWxVcmwobm9kZSwga2V5LCB2YWx1ZSksXG4gICAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbWFwcGVkID0gIXNjaGVtYS50eXBlID8gbWFwcGluZ3Mub2JqZWN0IDogKFxuICAgIHNjaGVtYS50eXBlIGFzIHN0cmluZyBpbiBtYXBwaW5ncyA/IG1hcHBpbmdzW3NjaGVtYS50eXBlIGFzIHN0cmluZ10gOiBtYXBwaW5ncy5kZWZhdWx0XG4gICk7XG4gIHJldHVybiBtYXBwZWQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgZm9yIChjb25zdCBwIG9mIHByb3BlcnRpZXMpIHtcbiAgICBpZiAocC5mdWxsS2V5ID09PSBmdWxsS2V5KSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRQID0gZmluZFByb3BlcnR5KHAucHJvcGVydGllcywgZnVsbEtleSk7XG4gICAgaWYgKGNoaWxkUCkge1xuICAgICAgcmV0dXJuIGNoaWxkUDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyZW50UHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBhbGxLZXlzID0gcHJvcGVydHkuZnVsbEtleS5zcGxpdCgnLicpO1xuICBbLi4ubmV3IEFycmF5KHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5wYXJlbnRMZXZlbCB8fCAwKV0ubWFwKCgpID0+IGFsbEtleXMucG9wKCkpO1xuICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGFsbEtleXMuam9pbignLicpKTtcbiAgcGFyZW50S2V5cy5wb3AoKTtcbiAgY29uc3QgcGFyZW50ID0gKHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3Vycik7XG4gICAgcmV0dXJuIGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxID8gKHByb3AgfHwge30gYXMgSU5vZGVQcm9wZXJ0eSkgOiAocHJvcCEucHJvcGVydGllcyB8fCBbXSk7XG4gIH0sIHByb3BlcnRpZXMpIGFzIGFueSkgYXMgSU5vZGVQcm9wZXJ0eTtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFyZW50KSA/IHByb3BlcnR5IDogcGFyZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IG5lc3RlZFByb3BlcnR5ID0gKHsgcHJvcGVydGllcyB9OiBJTm9kZVByb3BlcnR5LCBuZXN0ZWRLZXk6IHN0cmluZykgPT5cbiAgcHJvcGVydGllcy5maW5kKCh7IGtleSB9KSA9PiBrZXkgPT09IG5lc3RlZEtleSk7XG5cbmV4cG9ydCBjb25zdCBzaWJsaW5nUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgc2libGluZ0tleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgY29uc3QgcGFyZW50UHJvcGVydGllcyA9IHBhcmVudCA9PT0gcHJvcGVydHkgPyBwcm9wZXJ0aWVzIDogcGFyZW50LnByb3BlcnRpZXM7XG4gIHJldHVybiBwYXJlbnRQcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wLmtleSA9PT0gc2libGluZ0tleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBDaGFuZ2VkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwga2V5OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyZW50S2V5cyA9IGZ1bGxLZXlQYXJ0cyhrZXkpO1xuICAgIHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpID0+IHtcbiAgICAgIGlmIChjdXJySW5kZXggPT09IHBhcmVudEtleXMubGVuZ3RoIC0gMSAmJiB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJldi5zcGxpY2UocHJldi5maW5kSW5kZXgodiA9PiB2LmtleSA9PT0gY3VyciksIDEpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3VycikhO1xuICAgICAgICBwcm9wLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gcHJvcC5wcm9wZXJ0aWVzO1xuICAgICAgfVxuICAgIH0sIHByb3BlcnRpZXMpO1xuICB9XG4gIGNhdGNoIChfZXJyKSB7fVxufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9wZXJ0eUtleXMgPSAocHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+XG4gIHByb3BlcnR5LnByb3BlcnRpZXMubWFwKChwcm9wLCBpKSA9PiB7XG4gICAgcHJvcC5mdWxsS2V5ID0gYCR7cHJvcGVydHkuZnVsbEtleX0ke3Byb3BlcnR5LmlzQXJyYXkgPyBgWyR7aX1dYCA6IGAuJHtwcm9wLmtleX1gfWA7XG4gICAgcHJvcC5rZXkgPSBwcm9wZXJ0eS5pc0FycmF5ID8gYCR7aX1gIDogcHJvcC5rZXk7XG4gICAgcmV0dXJuIHJlZnJlc2hQcm9wZXJ0eUtleXMocHJvcCk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBzdGFydERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdzdGFydERhdGUnKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhc3RhcnREYXRlPy52YWx1ZSAmJiAhIWVuZERhdGU/LnZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24gPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBzdGFydERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdzdGFydERhdGUnKSE7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJykhO1xuICByZXR1cm4gZGlmZkluRGF5cyhzdGFydERhdGUudmFsdWUsIGVuZERhdGUudmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJyk7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJyk7XG4gIHJldHVybiAhIWN5Y2xlRHVyYXRpb24/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGUgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBjeWNsZUR1cmF0aW9uID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnY3ljbGVEdXJhdGlvbicpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBtb21lbnQoZW5kRGF0ZS52YWx1ZSkubG9jYWxlKCdlbi1nYicpLnN1YnRyYWN0KGN5Y2xlRHVyYXRpb24udmFsdWUsICdkYXlzJykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG59O1xuIl19
|