@hestia-earth/ui-components 0.23.23 → 0.24.0-0
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/node-utils.d.ts +22 -3
- package/cycles/cycles-completeness/cycles-completeness.component.d.ts +90 -24
- package/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.d.ts +4 -2
- package/cycles/cycles-nodes/cycles-nodes.component.d.ts +193 -0
- package/cycles/cycles-nodes-timeline/cycles-nodes-timeline.component.d.ts +20 -0
- package/cycles/cycles.module.d.ts +12 -19
- package/cycles/index.d.ts +2 -9
- package/engine/engine.service.d.ts +2 -1
- package/esm2022/common/node-utils.mjs +19 -1
- package/esm2022/cycles/cycles-completeness/cycles-completeness.component.mjs +68 -50
- package/esm2022/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.mjs +9 -4
- package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +211 -0
- package/esm2022/cycles/cycles-nodes-timeline/cycles-nodes-timeline.component.mjs +50 -0
- package/esm2022/cycles/cycles.module.mjs +11 -39
- package/esm2022/cycles/index.mjs +3 -10
- package/esm2022/engine/engine.service.mjs +9 -10
- package/esm2022/files/files-form/files-form.component.mjs +1 -1
- package/esm2022/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.mjs +99 -87
- package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +85 -111
- package/esm2022/impact-assessments/impact-assessments.module.mjs +1 -5
- package/esm2022/impact-assessments/index.mjs +1 -2
- package/esm2022/node/index.mjs +2 -1
- package/esm2022/node/node-logs-models/node-logs-models.component.mjs +172 -118
- package/esm2022/node/node-logs-models/node-logs-models.model.mjs +5 -8
- package/esm2022/node/node-store.service.mjs +108 -0
- package/esm2022/search/search.service.mjs +6 -4
- package/esm2022/sites/index.mjs +1 -2
- package/esm2022/sites/sites-maps/sites-maps.component.mjs +36 -39
- package/esm2022/sites/sites-measurements/sites-measurements.component.mjs +71 -72
- package/esm2022/sites/sites.module.mjs +3 -4
- package/fesm2022/hestia-earth-ui-components.mjs +942 -1222
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.d.ts +23 -15
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +91 -47
- package/impact-assessments/impact-assessments.module.d.ts +8 -9
- package/impact-assessments/index.d.ts +0 -1
- package/node/index.d.ts +1 -0
- package/node/node-logs-models/node-logs-models.component.d.ts +78 -57
- package/node/node-logs-models/node-logs-models.model.d.ts +6 -9
- package/node/node-store.service.d.ts +38 -0
- package/package.json +1 -1
- package/search/search.service.d.ts +1 -0
- package/sites/index.d.ts +0 -1
- package/sites/sites-maps/sites-maps.component.d.ts +18 -11
- package/sites/sites-measurements/sites-measurements.component.d.ts +79 -25
- package/sites/sites.module.d.ts +6 -7
- package/cycles/cycles-activity/cycles-activity.component.d.ts +0 -44
- package/cycles/cycles-activity-logs/cycles-activity-logs.component.d.ts +0 -69
- package/cycles/cycles-animals/cycles-animals.component.d.ts +0 -27
- package/cycles/cycles-completeness-logs/cycles-completeness-logs.component.d.ts +0 -62
- package/cycles/cycles-emissions/cycles-emissions.component.d.ts +0 -51
- package/cycles/cycles-emissions-logs/cycles-emissions-logs.component.d.ts +0 -70
- package/cycles/cycles-practices/cycles-practices.component.d.ts +0 -44
- package/cycles/cycles-practices-logs/cycles-practices-logs.component.d.ts +0 -70
- package/cycles/cycles-practices-timeline/cycles-practices-timeline.component.d.ts +0 -18
- package/esm2022/cycles/cycles-activity/cycles-activity.component.mjs +0 -118
- package/esm2022/cycles/cycles-activity-logs/cycles-activity-logs.component.mjs +0 -44
- package/esm2022/cycles/cycles-animals/cycles-animals.component.mjs +0 -79
- package/esm2022/cycles/cycles-completeness-logs/cycles-completeness-logs.component.mjs +0 -35
- package/esm2022/cycles/cycles-emissions/cycles-emissions.component.mjs +0 -127
- package/esm2022/cycles/cycles-emissions-logs/cycles-emissions-logs.component.mjs +0 -58
- package/esm2022/cycles/cycles-practices/cycles-practices.component.mjs +0 -116
- package/esm2022/cycles/cycles-practices-logs/cycles-practices-logs.component.mjs +0 -58
- package/esm2022/cycles/cycles-practices-timeline/cycles-practices-timeline.component.mjs +0 -42
- package/esm2022/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.mjs +0 -64
- package/esm2022/sites/sites-measurements-logs/sites-measurements-logs.component.mjs +0 -53
- package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +0 -64
- package/sites/sites-measurements-logs/sites-measurements-logs.component.d.ts +0 -66
package/common/node-utils.d.ts
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
import { Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, EmissionMethodTier, ITermJSONLD, Completeness,
|
|
1
|
+
import { Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, EmissionMethodTier, ITermJSONLD, Completeness, Emission, Measurement, Practice, Product, Input, Property, Indicator, Animal, Management, Transformation } from '@hestia-earth/schema';
|
|
2
|
+
export type blankNode = Animal | Emission | Input | Product | Property | Practice | Indicator | Measurement | Management;
|
|
3
|
+
export type blankNodesKey = 'animals' | 'emissions' | 'emissionsResourceUse' | 'endpoints' | 'impacts' | 'inputs' | 'management' | 'measurements' | 'products' | 'practices';
|
|
4
|
+
export declare enum BlankNodesKey {
|
|
5
|
+
animals = "animals",
|
|
6
|
+
emissions = "emissions",
|
|
7
|
+
emissionsResourceUse = "emissionsResourceUse",
|
|
8
|
+
endpoints = "endpoints",
|
|
9
|
+
impacts = "impacts",
|
|
10
|
+
inputs = "inputs",
|
|
11
|
+
management = "management",
|
|
12
|
+
measurements = "measurements",
|
|
13
|
+
products = "products",
|
|
14
|
+
practices = "practices"
|
|
15
|
+
}
|
|
16
|
+
export declare const filterBlankNode: (filterTerm: string) => ({ term }: blankNode) => boolean;
|
|
17
|
+
export type nonBlankNode = Completeness;
|
|
18
|
+
export type nonBlankNodesKey = 'completeness';
|
|
19
|
+
export declare enum NonBlankNodesKey {
|
|
20
|
+
completeness = "completeness"
|
|
21
|
+
}
|
|
2
22
|
export declare const ignoreKeys: string[];
|
|
3
23
|
export declare const isValidKey: (key: string) => boolean;
|
|
4
24
|
export declare const isMethodModelAllowed: (filterMethod?: Term) => (node: Indicator) => boolean;
|
|
@@ -9,7 +29,6 @@ export declare enum NodeKeyState {
|
|
|
9
29
|
deleted = "deleted",
|
|
10
30
|
unchanged = "unchanged"
|
|
11
31
|
}
|
|
12
|
-
export type blankNode = Completeness | Infrastructure | Input | Emission | Measurement | Practice | Product | Property;
|
|
13
32
|
export declare const isState: (node: blankNode, key: string, state: NodeKeyState) => any;
|
|
14
33
|
export interface IGroupedNode<T> {
|
|
15
34
|
node: T;
|
|
@@ -58,4 +77,4 @@ export declare const grouppedKeys: <T>(values: {
|
|
|
58
77
|
}[];
|
|
59
78
|
export declare const methodTierOrder: (methodTier: EmissionMethodTier) => number;
|
|
60
79
|
export declare const grouppedValueKeys: string[];
|
|
61
|
-
export declare const groupNodesByTerm: <T extends ISiteJSONLD | ICycleJSONLD | IImpactAssessmentJSONLD, R>(nodes: T[], key:
|
|
80
|
+
export declare const groupNodesByTerm: <T extends ISiteJSONLD | Transformation | Animal | ICycleJSONLD | IImpactAssessmentJSONLD, R>(nodes: T[], key: blankNodesKey, originalValues?: T[], includeNode?: (_node: any) => boolean) => IGroupedNodes<R>;
|
|
@@ -1,35 +1,101 @@
|
|
|
1
|
-
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
1
|
import { DataState } from '@hestia-earth/api';
|
|
3
|
-
import { ICycleJSONLD } from '@hestia-earth/schema';
|
|
2
|
+
import { ICycleJSONLD, NodeType } from '@hestia-earth/schema';
|
|
3
|
+
import { HeNodeStoreService } from '../../node/node-store.service';
|
|
4
|
+
import { NonBlankNodesKey } from '../../common/node-utils';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
declare enum View {
|
|
6
|
-
table = "
|
|
7
|
-
logs = "logs"
|
|
7
|
+
table = "Table view",
|
|
8
|
+
logs = "Recalculations logs"
|
|
8
9
|
}
|
|
9
|
-
export declare class CyclesCompletenessComponent
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
dataState
|
|
13
|
-
baseUrl: string;
|
|
14
|
-
defaultLabel: (node?: any) => any;
|
|
15
|
-
keyToLabel: (key: string) => string;
|
|
16
|
-
getCompleteness: (cycle: any) => any;
|
|
17
|
-
headerKeys: string[];
|
|
18
|
-
showDownload: boolean;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
10
|
+
export declare class CyclesCompletenessComponent {
|
|
11
|
+
private nodeStoreService;
|
|
12
|
+
protected _dataState: import("@angular/core").WritableSignal<DataState>;
|
|
13
|
+
set dataState(value: DataState);
|
|
14
|
+
protected baseUrl: string;
|
|
15
|
+
protected defaultLabel: (node?: any) => any;
|
|
16
|
+
protected keyToLabel: (key: string) => string;
|
|
17
|
+
protected getCompleteness: (cycle: any) => any;
|
|
18
|
+
protected headerKeys: string[];
|
|
19
|
+
protected showDownload: boolean;
|
|
20
|
+
protected nodeKey: NonBlankNodesKey;
|
|
21
|
+
protected View: typeof View;
|
|
22
|
+
protected viewIcon: {
|
|
23
|
+
"Table view": string;
|
|
24
|
+
"Recalculations logs": string;
|
|
25
|
+
};
|
|
26
|
+
private showView;
|
|
27
|
+
protected views: import("@angular/core").Signal<View[]>;
|
|
28
|
+
protected selectedView: import("@angular/core").WritableSignal<View>;
|
|
29
|
+
private originalCycles;
|
|
30
|
+
private _allCycles;
|
|
31
|
+
protected cycles: import("@angular/core").Signal<ICycleJSONLD[]>;
|
|
32
|
+
private selectedIndex;
|
|
33
|
+
private ogirinalSelectedCycle;
|
|
34
|
+
private selectedCycle;
|
|
35
|
+
protected selectedLogsKey: import("@angular/core").Signal<any>;
|
|
36
|
+
protected selectedOriginalValues: import("@angular/core").Signal<any>;
|
|
37
|
+
protected selectedRecalculatedValues: import("@angular/core").Signal<any>;
|
|
38
|
+
protected selectedNode: import("@angular/core").Signal<{
|
|
39
|
+
'@type': NodeType;
|
|
40
|
+
type: NodeType;
|
|
41
|
+
dataState: DataState;
|
|
42
|
+
description?: string;
|
|
43
|
+
treatment?: string;
|
|
44
|
+
commercialPracticeTreatment?: boolean;
|
|
45
|
+
endDate?: string;
|
|
46
|
+
startDate?: string;
|
|
47
|
+
startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
|
|
48
|
+
cycleDuration?: number;
|
|
49
|
+
site?: import("@hestia-earth/schema").ISiteJSONLD;
|
|
50
|
+
otherSites?: import("@hestia-earth/schema").ISiteJSONLD[];
|
|
51
|
+
siteDuration?: number;
|
|
52
|
+
otherSitesDuration?: number[];
|
|
53
|
+
functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
|
|
54
|
+
functionalUnitDetails?: string;
|
|
55
|
+
numberOfCycles?: number;
|
|
56
|
+
numberOfReplications?: number;
|
|
57
|
+
sampleWeight?: number;
|
|
58
|
+
harvestedArea?: number;
|
|
59
|
+
defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
|
|
60
|
+
defaultMethodClassificationDescription?: string;
|
|
61
|
+
defaultSource?: import("@hestia-earth/schema").ISourceJSONLD;
|
|
62
|
+
completeness?: import("@hestia-earth/schema").Completeness;
|
|
63
|
+
practices?: import("@hestia-earth/schema").Practice[];
|
|
64
|
+
animals?: import("@hestia-earth/schema").Animal[];
|
|
65
|
+
inputs?: import("@hestia-earth/schema").Input[];
|
|
66
|
+
products?: import("@hestia-earth/schema").Product[];
|
|
67
|
+
transformations?: import("@hestia-earth/schema").Transformation[];
|
|
68
|
+
emissions?: import("@hestia-earth/schema").Emission[];
|
|
69
|
+
dataPrivate?: boolean;
|
|
70
|
+
originalId?: string;
|
|
71
|
+
schemaVersion?: string;
|
|
72
|
+
added?: string[];
|
|
73
|
+
addedVersion?: string[];
|
|
74
|
+
updated?: string[];
|
|
75
|
+
updatedVersion?: string[];
|
|
76
|
+
aggregated?: boolean;
|
|
77
|
+
aggregatedVersion?: string;
|
|
78
|
+
aggregatedQualityScore?: number;
|
|
79
|
+
aggregatedQualityScoreMax?: number;
|
|
80
|
+
aggregatedCycles?: ICycleJSONLD[];
|
|
81
|
+
aggregatedSources?: import("@hestia-earth/schema").ISourceJSONLD[];
|
|
82
|
+
createdAt?: Date;
|
|
83
|
+
updatedAt?: Date;
|
|
84
|
+
'@context': string | (string | import("@hestia-earth/schema").IContext)[];
|
|
85
|
+
'@id': string;
|
|
86
|
+
name: string;
|
|
87
|
+
}>;
|
|
88
|
+
protected hasData: import("@angular/core").Signal<number>;
|
|
89
|
+
protected isOriginal: import("@angular/core").Signal<boolean>;
|
|
90
|
+
protected completenessKeys: import("@angular/core").Signal<string[]>;
|
|
91
|
+
constructor(nodeStoreService: HeNodeStoreService);
|
|
92
|
+
protected trackById(_index: number, item: ICycleJSONLD): string;
|
|
93
|
+
protected selectIndex({ target: { value } }: {
|
|
28
94
|
target: {
|
|
29
95
|
value: any;
|
|
30
96
|
};
|
|
31
97
|
}): void;
|
|
32
98
|
static ɵfac: i0.ɵɵFactoryDeclaration<CyclesCompletenessComponent, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CyclesCompletenessComponent, "he-cycles-completeness", never, { "
|
|
99
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CyclesCompletenessComponent, "he-cycles-completeness", never, { "dataState": { "alias": "dataState"; "required": false; }; }, {}, never, never, false, never>;
|
|
34
100
|
}
|
|
35
101
|
export {};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ICycleJSONLD, CycleFunctionalUnit } from '@hestia-earth/schema';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class CyclesFunctionalUnitMeasureComponent {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
private _cycle;
|
|
5
|
+
set cycle(value: ICycleJSONLD);
|
|
6
|
+
protected functionalUnit: import("@angular/core").Signal<CycleFunctionalUnit>;
|
|
7
|
+
protected CycleFunctionalUnit: typeof CycleFunctionalUnit;
|
|
6
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<CyclesFunctionalUnitMeasureComponent, never>;
|
|
7
9
|
static ɵcmp: i0.ɵɵComponentDeclaration<CyclesFunctionalUnitMeasureComponent, "he-cycles-functional-unit-measure", never, { "cycle": { "alias": "cycle"; "required": false; }; }, {}, never, never, false, never>;
|
|
8
10
|
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { DataState } from '@hestia-earth/api';
|
|
2
|
+
import { ICycleJSONLD, Input as HestiaInput, Product, NodeType, Animal, Emission, Practice, TermTermType, EmissionMethodTier, Term, Transformation } from '@hestia-earth/schema';
|
|
3
|
+
import { BlankNodesKey, blankNode } from '../../common/node-utils';
|
|
4
|
+
import { HeNodeStoreService } from '../../node/node-store.service';
|
|
5
|
+
import { IGroupedKeys } from '../../common/node-utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
declare enum View {
|
|
8
|
+
table = "Table view",
|
|
9
|
+
chart = "Chart view",
|
|
10
|
+
timeline = "Operations Timeline",
|
|
11
|
+
logs = "Recalculations logs"
|
|
12
|
+
}
|
|
13
|
+
type groupedEmissions = {
|
|
14
|
+
[methodTier in EmissionMethodTier]: IGroupedKeys<Emission>[];
|
|
15
|
+
};
|
|
16
|
+
export declare enum CycleNodesKeyGroup {
|
|
17
|
+
animals = "animals",
|
|
18
|
+
transformations = "transformations"
|
|
19
|
+
}
|
|
20
|
+
type groupedNode = Animal | Transformation;
|
|
21
|
+
export declare class CyclesNodesComponent {
|
|
22
|
+
private nodeStoreService;
|
|
23
|
+
protected _dataState: import("@angular/core").WritableSignal<DataState>;
|
|
24
|
+
set dataState(value: DataState);
|
|
25
|
+
protected BlankNodesKey: typeof BlankNodesKey;
|
|
26
|
+
protected firstNodeKey: import("@angular/core").Signal<BlankNodesKey>;
|
|
27
|
+
protected selectedNodeKey: import("@angular/core").WritableSignal<BlankNodesKey>;
|
|
28
|
+
protected _nodeKeys: import("@angular/core").WritableSignal<BlankNodesKey[]>;
|
|
29
|
+
set nodeKeys(value: BlankNodesKey[]);
|
|
30
|
+
protected selectedGroupTerm: import("@angular/core").WritableSignal<Term>;
|
|
31
|
+
protected _nodeKeyGroup: import("@angular/core").WritableSignal<CycleNodesKeyGroup>;
|
|
32
|
+
set nodeKeyGroup(value: CycleNodesKeyGroup);
|
|
33
|
+
protected baseUrl: string;
|
|
34
|
+
protected propertyValue: (value: string | number | (string | number)[], termId?: string) => number;
|
|
35
|
+
protected defaultLabel: (node?: any) => any;
|
|
36
|
+
protected showDownload: boolean;
|
|
37
|
+
protected headerKeys: import("@angular/core").Signal<string[]>;
|
|
38
|
+
protected View: typeof View;
|
|
39
|
+
protected viewIcon: {
|
|
40
|
+
"Table view": string;
|
|
41
|
+
"Chart view": string;
|
|
42
|
+
"Operations Timeline": string;
|
|
43
|
+
"Recalculations logs": string;
|
|
44
|
+
};
|
|
45
|
+
private showView;
|
|
46
|
+
protected views: import("@angular/core").Signal<View[]>;
|
|
47
|
+
protected selectedView: import("@angular/core").WritableSignal<View>;
|
|
48
|
+
private _allNodes;
|
|
49
|
+
private originalNodes;
|
|
50
|
+
private currentNodes;
|
|
51
|
+
protected originalCycles: import("@angular/core").Signal<ICycleJSONLD[] | groupedNode[]>;
|
|
52
|
+
protected cycles: import("@angular/core").Signal<ICycleJSONLD[] | groupedNode[]>;
|
|
53
|
+
private selectedIndex;
|
|
54
|
+
private ogirinalSelectedCycle;
|
|
55
|
+
private selectedCycle;
|
|
56
|
+
protected selectedLogsKey: import("@angular/core").Signal<any>;
|
|
57
|
+
protected selectedOriginalValues: import("@angular/core").Signal<any>;
|
|
58
|
+
protected selectedRecalculatedValues: import("@angular/core").Signal<any>;
|
|
59
|
+
protected selectedNode: import("@angular/core").Signal<{
|
|
60
|
+
'@type': NodeType;
|
|
61
|
+
type: NodeType;
|
|
62
|
+
dataState: DataState;
|
|
63
|
+
description?: string;
|
|
64
|
+
treatment?: string;
|
|
65
|
+
commercialPracticeTreatment?: boolean;
|
|
66
|
+
endDate?: string;
|
|
67
|
+
startDate?: string;
|
|
68
|
+
startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
|
|
69
|
+
cycleDuration?: number;
|
|
70
|
+
site?: import("@hestia-earth/schema").ISiteJSONLD;
|
|
71
|
+
otherSites?: import("@hestia-earth/schema").ISiteJSONLD[];
|
|
72
|
+
siteDuration?: number;
|
|
73
|
+
otherSitesDuration?: number[];
|
|
74
|
+
functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
|
|
75
|
+
functionalUnitDetails?: string;
|
|
76
|
+
numberOfCycles?: number;
|
|
77
|
+
numberOfReplications?: number;
|
|
78
|
+
sampleWeight?: number;
|
|
79
|
+
harvestedArea?: number;
|
|
80
|
+
defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
|
|
81
|
+
defaultMethodClassificationDescription?: string;
|
|
82
|
+
defaultSource?: import("@hestia-earth/schema").ISourceJSONLD;
|
|
83
|
+
completeness?: import("@hestia-earth/schema").Completeness;
|
|
84
|
+
practices?: Practice[];
|
|
85
|
+
animals?: Animal[];
|
|
86
|
+
inputs?: HestiaInput[];
|
|
87
|
+
products?: Product[];
|
|
88
|
+
transformations?: Transformation[];
|
|
89
|
+
emissions?: Emission[];
|
|
90
|
+
dataPrivate?: boolean;
|
|
91
|
+
originalId?: string;
|
|
92
|
+
schemaVersion?: string;
|
|
93
|
+
added?: string[];
|
|
94
|
+
addedVersion?: string[];
|
|
95
|
+
updated?: string[];
|
|
96
|
+
updatedVersion?: string[];
|
|
97
|
+
aggregated?: boolean;
|
|
98
|
+
aggregatedVersion?: string;
|
|
99
|
+
aggregatedQualityScore?: number;
|
|
100
|
+
aggregatedQualityScoreMax?: number;
|
|
101
|
+
aggregatedCycles?: ICycleJSONLD[];
|
|
102
|
+
aggregatedSources?: import("@hestia-earth/schema").ISourceJSONLD[];
|
|
103
|
+
createdAt?: Date;
|
|
104
|
+
updatedAt?: Date;
|
|
105
|
+
'@context': string | (string | import("@hestia-earth/schema").IContext)[];
|
|
106
|
+
'@id': string;
|
|
107
|
+
name: string;
|
|
108
|
+
} | {
|
|
109
|
+
'@type': NodeType;
|
|
110
|
+
type: NodeType;
|
|
111
|
+
dataState: DataState;
|
|
112
|
+
transformationId?: string;
|
|
113
|
+
term?: Term;
|
|
114
|
+
description?: string;
|
|
115
|
+
startDate?: string;
|
|
116
|
+
endDate?: string;
|
|
117
|
+
transformationDuration?: number;
|
|
118
|
+
previousTransformationId?: string;
|
|
119
|
+
transformedShare?: number;
|
|
120
|
+
site?: import("@hestia-earth/schema").Site;
|
|
121
|
+
inputs?: HestiaInput[];
|
|
122
|
+
emissions?: Emission[];
|
|
123
|
+
products?: Product[];
|
|
124
|
+
practices?: Practice[];
|
|
125
|
+
schemaVersion?: string;
|
|
126
|
+
added?: string[];
|
|
127
|
+
addedVersion?: string[];
|
|
128
|
+
updated?: string[];
|
|
129
|
+
updatedVersion?: string[];
|
|
130
|
+
id?: string;
|
|
131
|
+
} | {
|
|
132
|
+
'@type': NodeType;
|
|
133
|
+
type: NodeType;
|
|
134
|
+
dataState: DataState;
|
|
135
|
+
term?: Term;
|
|
136
|
+
description?: string;
|
|
137
|
+
referencePeriod?: import("@hestia-earth/schema").AnimalReferencePeriod;
|
|
138
|
+
value?: number;
|
|
139
|
+
sd?: number;
|
|
140
|
+
min?: number;
|
|
141
|
+
max?: number;
|
|
142
|
+
statsDefinition?: import("@hestia-earth/schema").AnimalStatsDefinition;
|
|
143
|
+
observations?: number;
|
|
144
|
+
price?: number;
|
|
145
|
+
currency?: string;
|
|
146
|
+
methodClassification?: import("@hestia-earth/schema").AnimalMethodClassification;
|
|
147
|
+
methodClassificationDescription?: string;
|
|
148
|
+
source?: import("@hestia-earth/schema").Source;
|
|
149
|
+
properties?: import("@hestia-earth/schema").Property[];
|
|
150
|
+
inputs?: HestiaInput[];
|
|
151
|
+
practices?: Practice[];
|
|
152
|
+
schemaVersion?: string;
|
|
153
|
+
added?: string[];
|
|
154
|
+
addedVersion?: string[];
|
|
155
|
+
updated?: string[];
|
|
156
|
+
updatedVersion?: string[];
|
|
157
|
+
aggregated?: string[];
|
|
158
|
+
aggregatedVersion?: string[];
|
|
159
|
+
id?: string;
|
|
160
|
+
}>;
|
|
161
|
+
private isOriginal;
|
|
162
|
+
private originalValues;
|
|
163
|
+
protected showSwitchToRecalculated: import("@angular/core").Signal<boolean>;
|
|
164
|
+
protected timelineValues: import("@angular/core").Signal<blankNode[]>;
|
|
165
|
+
private enableTimeline;
|
|
166
|
+
protected isNodeKeyAllowed: import("@angular/core").Signal<boolean>;
|
|
167
|
+
private groupedNodes;
|
|
168
|
+
protected groupNodeTerms: import("@angular/core").Signal<Term[]>;
|
|
169
|
+
protected isGroupNode: import("@angular/core").Signal<boolean>;
|
|
170
|
+
protected isEmission: import("@angular/core").Signal<boolean>;
|
|
171
|
+
protected data: import("@angular/core").Signal<groupedEmissions | {
|
|
172
|
+
[k: string]: IGroupedKeys<Product>[];
|
|
173
|
+
}>;
|
|
174
|
+
protected dataKeys: import("@angular/core").Signal<string[]>;
|
|
175
|
+
protected hasData: import("@angular/core").Signal<boolean>;
|
|
176
|
+
protected filterTermTypes: import("@angular/core").Signal<TermTermType[]>;
|
|
177
|
+
protected filterTerm: import("@angular/core").WritableSignal<string>;
|
|
178
|
+
protected csvFilename: import("@angular/core").Signal<string>;
|
|
179
|
+
constructor(nodeStoreService: HeNodeStoreService);
|
|
180
|
+
private groupNodesByKey;
|
|
181
|
+
private groupEmissions;
|
|
182
|
+
protected trackById(_index: number, item: ICycleJSONLD): string;
|
|
183
|
+
protected togglePopover(popover: any, context: any): any;
|
|
184
|
+
protected filterByTerm(term: string): void;
|
|
185
|
+
protected selectIndex({ target: { value } }: {
|
|
186
|
+
target: {
|
|
187
|
+
value: any;
|
|
188
|
+
};
|
|
189
|
+
}): void;
|
|
190
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CyclesNodesComponent, never>;
|
|
191
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CyclesNodesComponent, "he-cycles-nodes", never, { "dataState": { "alias": "dataState"; "required": false; }; "nodeKeys": { "alias": "nodeKeys"; "required": false; }; "nodeKeyGroup": { "alias": "nodeKeyGroup"; "required": false; }; }, {}, never, never, false, never>;
|
|
192
|
+
}
|
|
193
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { DataState } from '@hestia-earth/api';
|
|
3
|
+
import { TermTermType } from '@hestia-earth/schema';
|
|
4
|
+
import { blankNode } from '../../common/node-utils';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class CyclesNodesTimelineComponent {
|
|
7
|
+
private el;
|
|
8
|
+
private _recalculatedValues;
|
|
9
|
+
set recalculatedValues(value: blankNode[]);
|
|
10
|
+
protected _dataState: import("@angular/core").WritableSignal<DataState>;
|
|
11
|
+
set dataState(value: DataState);
|
|
12
|
+
protected now: Date;
|
|
13
|
+
protected TermTermType: typeof TermTermType;
|
|
14
|
+
protected blankNodes: import("@angular/core").Signal<blankNode[]>;
|
|
15
|
+
constructor(el: ElementRef);
|
|
16
|
+
trackByBlankNode(_index: number, { term }: blankNode): any;
|
|
17
|
+
get lineWidth(): number;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CyclesNodesTimelineComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CyclesNodesTimelineComponent, "he-cycles-nodes-timeline", never, { "recalculatedValues": { "alias": "recalculatedValues"; "required": false; }; "dataState": { "alias": "dataState"; "required": false; }; }, {}, never, never, false, never>;
|
|
20
|
+
}
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "./cycles-
|
|
3
|
-
import * as i2 from "./cycles-
|
|
4
|
-
import * as i3 from "./cycles-
|
|
5
|
-
import * as i4 from "./cycles-
|
|
6
|
-
import * as i5 from "./cycles-
|
|
7
|
-
import * as i6 from "./cycles-
|
|
8
|
-
import * as i7 from "
|
|
9
|
-
import * as i8 from "
|
|
10
|
-
import * as i9 from "
|
|
11
|
-
import * as i10 from "
|
|
12
|
-
import * as i11 from "
|
|
13
|
-
import * as i12 from "./cycles-practices-timeline/cycles-practices-timeline.component";
|
|
14
|
-
import * as i13 from "./cycles-result/cycles-result.component";
|
|
15
|
-
import * as i14 from "@angular/common";
|
|
16
|
-
import * as i15 from "@angular/forms";
|
|
17
|
-
import * as i16 from "../common/common.module";
|
|
18
|
-
import * as i17 from "../node/node.module";
|
|
19
|
-
import * as i18 from "../terms/terms.module";
|
|
2
|
+
import * as i1 from "./cycles-completeness/cycles-completeness.component";
|
|
3
|
+
import * as i2 from "./cycles-emissions-chart/cycles-emissions-chart.component";
|
|
4
|
+
import * as i3 from "./cycles-functional-unit-measure/cycles-functional-unit-measure.component";
|
|
5
|
+
import * as i4 from "./cycles-nodes/cycles-nodes.component";
|
|
6
|
+
import * as i5 from "./cycles-nodes-timeline/cycles-nodes-timeline.component";
|
|
7
|
+
import * as i6 from "./cycles-result/cycles-result.component";
|
|
8
|
+
import * as i7 from "@angular/common";
|
|
9
|
+
import * as i8 from "@angular/forms";
|
|
10
|
+
import * as i9 from "../common/common.module";
|
|
11
|
+
import * as i10 from "../node/node.module";
|
|
12
|
+
import * as i11 from "../terms/terms.module";
|
|
20
13
|
export declare class HeCyclesModule {
|
|
21
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeCyclesModule, never>;
|
|
22
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<HeCyclesModule, [typeof i1.
|
|
15
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<HeCyclesModule, [typeof i1.CyclesCompletenessComponent, typeof i2.CyclesEmissionsChartComponent, typeof i3.CyclesFunctionalUnitMeasureComponent, typeof i4.CyclesNodesComponent, typeof i5.CyclesNodesTimelineComponent, typeof i6.CyclesResultComponent], [typeof i7.CommonModule, typeof i8.FormsModule, typeof i9.HeCommonModule, typeof i10.HeNodeModule, typeof i11.HeTermsModule], [typeof i1.CyclesCompletenessComponent, typeof i2.CyclesEmissionsChartComponent, typeof i3.CyclesFunctionalUnitMeasureComponent, typeof i4.CyclesNodesComponent, typeof i5.CyclesNodesTimelineComponent, typeof i6.CyclesResultComponent]>;
|
|
23
16
|
static ɵinj: i0.ɵɵInjectorDeclaration<HeCyclesModule>;
|
|
24
17
|
}
|
package/cycles/index.d.ts
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
export * from './cycles.model';
|
|
2
2
|
export * from './cycles.module';
|
|
3
|
-
export { CyclesActivityComponent } from './cycles-activity/cycles-activity.component';
|
|
4
|
-
export { CyclesActivityLogsComponent } from './cycles-activity-logs/cycles-activity-logs.component';
|
|
5
|
-
export { CyclesAnimalsComponent } from './cycles-animals/cycles-animals.component';
|
|
6
3
|
export { CyclesCompletenessComponent } from './cycles-completeness/cycles-completeness.component';
|
|
7
|
-
export { CyclesCompletenessLogsComponent } from './cycles-completeness-logs/cycles-completeness-logs.component';
|
|
8
4
|
export { CyclesEmissionsChartComponent } from './cycles-emissions-chart/cycles-emissions-chart.component';
|
|
9
|
-
export { CyclesEmissionsLogsComponent } from './cycles-emissions-logs/cycles-emissions-logs.component';
|
|
10
|
-
export { CyclesEmissionsComponent } from './cycles-emissions/cycles-emissions.component';
|
|
11
5
|
export { CyclesFunctionalUnitMeasureComponent } from './cycles-functional-unit-measure/cycles-functional-unit-measure.component';
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export { CyclesPracticesTimelineComponent } from './cycles-practices-timeline/cycles-practices-timeline.component';
|
|
6
|
+
export { CyclesNodesComponent, CycleNodesKeyGroup } from './cycles-nodes/cycles-nodes.component';
|
|
7
|
+
export { CyclesNodesTimelineComponent } from './cycles-nodes-timeline/cycles-nodes-timeline.component';
|
|
15
8
|
export { CyclesResultComponent } from './cycles-result/cycles-result.component';
|
|
@@ -102,7 +102,7 @@ export declare class HeEngineService {
|
|
|
102
102
|
private init;
|
|
103
103
|
private loadModels;
|
|
104
104
|
private get models$();
|
|
105
|
-
|
|
105
|
+
allModels$(includeEcoinvent?: boolean): Observable<IModel[]>;
|
|
106
106
|
model$(model: Partial<IModel>): Observable<IModel>;
|
|
107
107
|
nodeModel$(node: Partial<blankNode>, key?: string): Observable<IModel>;
|
|
108
108
|
model(model: Partial<IModel>): Promise<IModel>;
|
|
@@ -115,6 +115,7 @@ export declare class HeEngineService {
|
|
|
115
115
|
getTermIds$(params: ICalculationsRequirementsParams): Observable<string[]>;
|
|
116
116
|
getTermIds(params: ICalculationsRequirementsParams): Promise<any[] | string[]>;
|
|
117
117
|
orchestratorConfigUrl(type?: NodeType): string;
|
|
118
|
+
ochestratorConfig$(type: NodeType, id?: string): Observable<IOrchestratorConfig>;
|
|
118
119
|
ochestratorConfig(type: NodeType, id?: string): Promise<IOrchestratorConfig>;
|
|
119
120
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeEngineService, never>;
|
|
120
121
|
static ɵprov: i0.ɵɵInjectableDeclaration<HeEngineService>;
|
|
@@ -2,6 +2,24 @@ import get from 'lodash.get';
|
|
|
2
2
|
import { EmissionMethodTier } from '@hestia-earth/schema';
|
|
3
3
|
import { propertyValue } from '@hestia-earth/utils/dist/term';
|
|
4
4
|
import { getDefaultModelId } from '@hestia-earth/glossary';
|
|
5
|
+
export var BlankNodesKey;
|
|
6
|
+
(function (BlankNodesKey) {
|
|
7
|
+
BlankNodesKey["animals"] = "animals";
|
|
8
|
+
BlankNodesKey["emissions"] = "emissions";
|
|
9
|
+
BlankNodesKey["emissionsResourceUse"] = "emissionsResourceUse";
|
|
10
|
+
BlankNodesKey["endpoints"] = "endpoints";
|
|
11
|
+
BlankNodesKey["impacts"] = "impacts";
|
|
12
|
+
BlankNodesKey["inputs"] = "inputs";
|
|
13
|
+
BlankNodesKey["management"] = "management";
|
|
14
|
+
BlankNodesKey["measurements"] = "measurements";
|
|
15
|
+
BlankNodesKey["products"] = "products";
|
|
16
|
+
BlankNodesKey["practices"] = "practices";
|
|
17
|
+
})(BlankNodesKey || (BlankNodesKey = {}));
|
|
18
|
+
export const filterBlankNode = (filterTerm) => ({ term }) => !filterTerm || term?.name?.toLowerCase()?.includes(filterTerm.toLowerCase());
|
|
19
|
+
export var NonBlankNodesKey;
|
|
20
|
+
(function (NonBlankNodesKey) {
|
|
21
|
+
NonBlankNodesKey["completeness"] = "completeness";
|
|
22
|
+
})(NonBlankNodesKey || (NonBlankNodesKey = {}));
|
|
5
23
|
export const ignoreKeys = ['@type', 'type', 'added', 'updated', 'addedVersion', 'updatedVersion'];
|
|
6
24
|
export const isValidKey = (key) => !ignoreKeys.includes(key);
|
|
7
25
|
export const isMethodModelAllowed = (filterMethod) => (node) => node.methodModel?.['@id'] === (filterMethod ? filterMethod['@id'] : getDefaultModelId(node.term?.['@id']));
|
|
@@ -91,4 +109,4 @@ export const groupNodesByTerm = (nodes = [], key, originalValues = [], includeNo
|
|
|
91
109
|
});
|
|
92
110
|
return groups;
|
|
93
111
|
};
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbm9kZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUtMLGtCQUFrQixFQVduQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFckUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxZQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQWUsRUFBRSxFQUFFLENBQy9FLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sQ0FBTixJQUFZLFlBTVg7QUFORCxXQUFZLFlBQVk7SUFDdEIsK0JBQWUsQ0FBQTtJQUNmLG1DQUFtQixDQUFBO0lBQ25CLHlDQUF5QixDQUFBO0lBQ3pCLG1DQUFtQixDQUFBO0lBQ25CLHVDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFOVyxZQUFZLEtBQVosWUFBWSxRQU12QjtBQUlELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQWUsRUFBRSxHQUFXLEVBQUUsS0FBbUIsRUFBRSxFQUFFLENBQzNFLEtBQUssSUFBSSxJQUFLLElBQUksQ0FBQyxPQUFPLElBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBK0NwRyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBSSxNQUE0QixFQUErQixFQUFFLENBQzNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFVLEVBQUUsUUFBYSxFQUFFLEVBQUU7SUFDekQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RSxPQUFPLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUE4QixFQUFFLEVBQUUsQ0FDaEU7SUFDRSxrQkFBa0IsQ0FBQyxRQUFRO0lBQzNCLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztJQUM1QixrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDNUIsa0JBQWtCLENBQUMsUUFBUSxDQUFDO0lBQzVCLGtCQUFrQixDQUFDLFVBQVU7SUFDN0Isa0JBQWtCLENBQUMsY0FBYyxDQUFDO0NBQ25DLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE9BQU87SUFDUCxJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxRQUFRO0lBQ1IsWUFBWTtJQUNaLFlBQVk7SUFDWixXQUFXO0lBQ1gsU0FBUztJQUNULFlBQVk7SUFDWixhQUFhO0lBQ2IsT0FBTztJQUNQLFFBQVE7Q0FDVCxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFxQixFQUFFLE9BQWtCLEVBQUUsRUFBRSxDQUNsRSxDQUFDLFVBQVU7SUFDWCxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFekcsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLFFBQWEsRUFBRSxFQUNmLEdBU2EsRUFDYixpQkFBc0IsRUFBRSxFQUN4QixjQUFjLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQ2hCLEVBQUU7SUFDcEIsTUFBTSxNQUFNLEdBQXFCLEtBQUssQ0FBQyxNQUFNLENBQzNDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFDNUMsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtZQUN2QyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7WUFDcEIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQ2hDLGVBQWUsRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUN0RCxNQUFNLEVBQUUsRUFBRTtZQUNWLGNBQWMsRUFBRSxFQUFFO1NBQ25CLENBQUM7UUFDRixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDdkcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztZQUNyRyxDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQzNELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNoQixDQUFDO1FBQ0YsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUc7Z0JBQzNDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckQsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDVixFQUFzQixDQUN2QixDQUFDO0lBRUYsMEJBQTBCO0lBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUN2RSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQ3pDLENBQUM7WUFDRixJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBWSxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0csS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7YUFDeEU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCB7XG4gIFRlcm0sXG4gIElDeWNsZUpTT05MRCxcbiAgSVNpdGVKU09OTEQsXG4gIElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELFxuICBFbWlzc2lvbk1ldGhvZFRpZXIsXG4gIElUZXJtSlNPTkxELFxuICBDb21wbGV0ZW5lc3MsXG4gIEluZnJhc3RydWN0dXJlLFxuICBFbWlzc2lvbixcbiAgTWVhc3VyZW1lbnQsXG4gIFByYWN0aWNlLFxuICBQcm9kdWN0LFxuICBJbnB1dCxcbiAgUHJvcGVydHksXG4gIEluZGljYXRvclxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE1vZGVsSWQgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2dsb3NzYXJ5JztcblxuZXhwb3J0IGNvbnN0IGlnbm9yZUtleXMgPSBbJ0B0eXBlJywgJ3R5cGUnLCAnYWRkZWQnLCAndXBkYXRlZCcsICdhZGRlZFZlcnNpb24nLCAndXBkYXRlZFZlcnNpb24nXTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRLZXkgPSAoa2V5OiBzdHJpbmcpID0+ICFpZ25vcmVLZXlzLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBpc01ldGhvZE1vZGVsQWxsb3dlZCA9IChmaWx0ZXJNZXRob2Q/OiBUZXJtKSA9PiAobm9kZTogSW5kaWNhdG9yKSA9PlxuICBub2RlLm1ldGhvZE1vZGVsPy5bJ0BpZCddID09PSAoZmlsdGVyTWV0aG9kID8gZmlsdGVyTWV0aG9kWydAaWQnXSA6IGdldERlZmF1bHRNb2RlbElkKG5vZGUudGVybT8uWydAaWQnXSkpO1xuXG5leHBvcnQgZW51bSBOb2RlS2V5U3RhdGUge1xuICBhZGRlZCA9ICdhZGRlZCcsXG4gIHVwZGF0ZWQgPSAndXBkYXRlZCcsXG4gIGFnZ3JlZ2F0ZWQgPSAnYWdncmVnYXRlZCcsXG4gIGRlbGV0ZWQgPSAnZGVsZXRlZCcsXG4gIHVuY2hhbmdlZCA9ICd1bmNoYW5nZWQnXG59XG5cbmV4cG9ydCB0eXBlIGJsYW5rTm9kZSA9IENvbXBsZXRlbmVzcyB8IEluZnJhc3RydWN0dXJlIHwgSW5wdXQgfCBFbWlzc2lvbiB8IE1lYXN1cmVtZW50IHwgUHJhY3RpY2UgfCBQcm9kdWN0IHwgUHJvcGVydHk7XG5cbmV4cG9ydCBjb25zdCBpc1N0YXRlID0gKG5vZGU6IGJsYW5rTm9kZSwga2V5OiBzdHJpbmcsIHN0YXRlOiBOb2RlS2V5U3RhdGUpID0+XG4gIHN0YXRlIGluIG5vZGUhICYmICh0eXBlb2Ygbm9kZSFbc3RhdGVdID09PSAnYm9vbGVhbicgPyBub2RlIVtzdGF0ZV0gOiBub2RlIVtzdGF0ZV0uaW5jbHVkZXMoa2V5KSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2RlPFQ+IHtcbiAgLy8gc3RvcmUgdGhlIG5vZGUgd2l0aCB0aGUgaGlnaGVzdCBcInN0YXRlXCJcbiAgbm9kZTogVDtcbiAgbm9kZXM6IFRbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcltdO1xuICBkYXRlcz86IGFueVtdO1xuICBzZD86IG51bWJlcltdO1xuICBtaW4/OiBudW1iZXJbXTtcbiAgbWF4PzogbnVtYmVyW107XG4gIGlucHV0cz86IGFueVtdO1xuICBkZXB0aFVwcGVyPzogbnVtYmVyW107XG4gIGRlcHRoTG93ZXI/OiBudW1iZXJbXTtcbiAgc3RhcnREYXRlPzogc3RyaW5nW107XG4gIGVuZERhdGU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGVzVmFsdWVzPFQ+IHtcbiAgW25vZGVJZDogc3RyaW5nXTogSUdyb3VwZWROb2RlPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXNWYWx1ZTxUPiB7XG4gIHRlcm06IElUZXJtSlNPTkxEO1xuICBtZXRob2RUaWVyPzogRW1pc3Npb25NZXRob2RUaWVyO1xuICAvKipcbiAgICogRW5hYmxlIG9yZGVyaW5nIG55IG1ldGhvZFRpZXJcbiAgICovXG4gIG1ldGhvZFRpZXJPcmRlcjogbnVtYmVyO1xuICB2YWx1ZXM6IElHcm91cGVkTm9kZXNWYWx1ZXM8VD47XG4gIG9yaWdpbmFsVmFsdWVzOiB7XG4gICAgW25vZGVJZDogc3RyaW5nXToge1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXM8VD4ge1xuICBbdGVybUlkOiBzdHJpbmddOiBJR3JvdXBlZE5vZGVzVmFsdWU8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWRLZXlzPFQ+IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBJR3JvdXBlZE5vZGVzVmFsdWU8VD47XG59XG5cbmV4cG9ydCBjb25zdCBncm91cHBlZEtleXMgPSA8VD4odmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IFQgfSk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBUIH1bXSA9PlxuICBPYmplY3QuZW50cmllcyh2YWx1ZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoeyBrZXksIHZhbHVlIH0pKTtcblxuY29uc3QgY29uY2F0QmxhbmtOb2RlVmFsdWUgPSAodmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gIGNvbnN0IG5ld1ZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSA/IG5ld1ZhbHVlIDogW25ld1ZhbHVlXTtcbiAgcmV0dXJuIFsuLi52YWx1ZUFycmF5LCAuLi5uZXdWYWx1ZUFycmF5XTtcbn07XG5cbmV4cG9ydCBjb25zdCBtZXRob2RUaWVyT3JkZXIgPSAobWV0aG9kVGllcjogRW1pc3Npb25NZXRob2RUaWVyKSA9PlxuICBbXG4gICAgRW1pc3Npb25NZXRob2RUaWVyLm1lYXN1cmVkLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllclsndGllciAzJ10sXG4gICAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDInXSxcbiAgICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMSddLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllclsnbm90IHJlbGV2YW50J11cbiAgXS5pbmRleE9mKG1ldGhvZFRpZXIpO1xuXG5leHBvcnQgY29uc3QgZ3JvdXBwZWRWYWx1ZUtleXMgPSBbXG4gICdkYXRlcycsXG4gICdzZCcsXG4gICdtaW4nLFxuICAnbWF4JyxcbiAgJ2lucHV0cycsXG4gICdkZXB0aFVwcGVyJyxcbiAgJ2RlcHRoTG93ZXInLFxuICAnc3RhcnREYXRlJyxcbiAgJ2VuZERhdGUnLFxuICAnbWV0aG9kVGllcicsXG4gICdtZXRob2RNb2RlbCcsXG4gICdtb2RlbCcsXG4gICdtZXRob2QnXG5dO1xuXG5jb25zdCBpc0hpZ2hlclN0YXRlID0gKHNvdXJjZU5vZGU6IGJsYW5rTm9kZSwgbmV3Tm9kZTogYmxhbmtOb2RlKSA9PlxuICAhc291cmNlTm9kZSB8fFxuICBpc1N0YXRlKG5ld05vZGUsICd2YWx1ZScsIE5vZGVLZXlTdGF0ZS51cGRhdGVkKSB8fFxuICAoIWlzU3RhdGUoc291cmNlTm9kZSwgJ3ZhbHVlJywgTm9kZUtleVN0YXRlLnVwZGF0ZWQpICYmIGlzU3RhdGUobmV3Tm9kZSwgJ3ZhbHVlJywgTm9kZUtleVN0YXRlLmFkZGVkKSk7XG5cbmNvbnN0IGdyb3VwTm9kZUtleSA9ICh7IHRlcm0gfTogYW55KSA9PiB0ZXJtPy5uYW1lIHx8IHRlcm0/LlsnQGlkJ107XG5cbmV4cG9ydCBjb25zdCBncm91cE5vZGVzQnlUZXJtID0gPFQgZXh0ZW5kcyBJQ3ljbGVKU09OTEQgfCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCB8IElTaXRlSlNPTkxELCBSPihcbiAgbm9kZXM6IFRbXSA9IFtdLFxuICBrZXk6XG4gICAgfCAnZW5kcG9pbnRzJ1xuICAgIHwgJ2ltcGFjdHMnXG4gICAgfCAnZW1pc3Npb25zUmVzb3VyY2VVc2UnXG4gICAgfCAnaW5wdXRzJ1xuICAgIHwgJ3Byb2R1Y3RzJ1xuICAgIHwgJ3ByYWN0aWNlcydcbiAgICB8ICdlbWlzc2lvbnMnXG4gICAgfCAnbWVhc3VyZW1lbnRzJ1xuICAgIHwgJ2FuaW1hbHMnLFxuICBvcmlnaW5hbFZhbHVlczogVFtdID0gW10sXG4gIGluY2x1ZGVOb2RlID0gKF9ub2RlOiBhbnkpID0+IHRydWVcbik6IElHcm91cGVkTm9kZXM8Uj4gPT4ge1xuICBjb25zdCBncm91cHM6IElHcm91cGVkTm9kZXM8Uj4gPSBub2Rlcy5yZWR1Y2UoXG4gICAgKHByZXYsIG5vZGUsIGluZGV4KSA9PlxuICAgICAgKG5vZGVba2V5XSB8fCBbXSkucmVkdWNlKChncm91cCwgYmxhbmtOb2RlKSA9PiB7XG4gICAgICAgIC8vIHNraXAgbm9kZSBiYXNlZCBvbiBjb25kaXRpb25cbiAgICAgICAgaWYgKCFpbmNsdWRlTm9kZShibGFua05vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9kZUlkID0gbm9kZVsnQGlkJ107XG4gICAgICAgIGNvbnN0IGdyb3VwZWRLZXkgPSBncm91cE5vZGVLZXkoYmxhbmtOb2RlKTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0gPSBncm91cFtncm91cGVkS2V5XSB8fCB7XG4gICAgICAgICAgdGVybTogYmxhbmtOb2RlLnRlcm0sXG4gICAgICAgICAgbWV0aG9kVGllcjogYmxhbmtOb2RlLm1ldGhvZFRpZXIsXG4gICAgICAgICAgbWV0aG9kVGllck9yZGVyOiBtZXRob2RUaWVyT3JkZXIoYmxhbmtOb2RlLm1ldGhvZFRpZXIpLFxuICAgICAgICAgIHZhbHVlczoge30sXG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZXM6IHt9XG4gICAgICAgIH07XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdID0gZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0gfHwgeyBpbmRleCwgbm9kZXM6IFtdLCB2YWx1ZTogW10gfTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0ubm9kZSA9IGlzSGlnaGVyU3RhdGUoZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0ubm9kZSwgYmxhbmtOb2RlKVxuICAgICAgICAgID8gYmxhbmtOb2RlXG4gICAgICAgICAgOiBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS5ub2RlO1xuICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS5ub2Rlcy5wdXNoKGJsYW5rTm9kZSk7XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLnZhbHVlID0gY29uY2F0QmxhbmtOb2RlVmFsdWUoXG4gICAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0udmFsdWUsXG4gICAgICAgICAgYmxhbmtOb2RlLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGdyb3VwcGVkVmFsdWVLZXlzLmZvckVhY2goYXJyYXlLZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0KGJsYW5rTm9kZSwgYXJyYXlLZXksIFtdKTtcbiAgICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXVthcnJheUtleV0gPSBbXG4gICAgICAgICAgICAuLi4oZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF1bYXJyYXlLZXldIHx8IFtdKSxcbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSA/IG5ld1ZhbHVlIDogW25ld1ZhbHVlXSlcbiAgICAgICAgICBdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgfSwgcHJldiksXG4gICAge30gYXMgSUdyb3VwZWROb2RlczxSPlxuICApO1xuXG4gIC8vIGNvbXBpbGUgb3JpZ2luYWwgdmFsdWVzXG4gIE9iamVjdC52YWx1ZXMoZ3JvdXBzKS5tYXAoZ3JvdXAgPT4ge1xuICAgIE9iamVjdC5rZXlzKGdyb3VwLnZhbHVlcykubWFwKG5vZGVJZCA9PiB7XG4gICAgICBjb25zdCB7IGluZGV4IH0gPSBncm91cC52YWx1ZXNbbm9kZUlkXTtcbiAgICAgIGNvbnN0IHRlcm1JZCA9IGdyb3VwLnRlcm1bJ0BpZCddO1xuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGdldChvcmlnaW5hbFZhbHVlcywgYFske2luZGV4fV0uJHtrZXl9YCwgW10pLmZpbHRlcihcbiAgICAgICAgKHZhbDogYW55KSA9PiB2YWwudGVybVsnQGlkJ10gPT09IHRlcm1JZFxuICAgICAgKTtcbiAgICAgIGlmIChvcmlnaW5hbFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvcmlnaW5hbFZhbHVlLnJlZHVjZSgoYXJyYXk6IGFueVtdLCBjdXJyOiBhbnkpID0+IGNvbmNhdEJsYW5rTm9kZVZhbHVlKGFycmF5LCBjdXJyLnZhbHVlKSwgW10pO1xuICAgICAgICBncm91cC5vcmlnaW5hbFZhbHVlc1tub2RlSWRdID0geyB2YWx1ZTogcHJvcGVydHlWYWx1ZSh2YWx1ZSwgdGVybUlkKSB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gZ3JvdXBzO1xufTtcbiJdfQ==
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbm9kZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUtMLGtCQUFrQixFQWFuQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQXlCM0QsTUFBTSxDQUFOLElBQVksYUFXWDtBQVhELFdBQVksYUFBYTtJQUN2QixvQ0FBbUIsQ0FBQTtJQUNuQix3Q0FBdUIsQ0FBQTtJQUN2Qiw4REFBNkMsQ0FBQTtJQUM3Qyx3Q0FBdUIsQ0FBQTtJQUN2QixvQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBaUIsQ0FBQTtJQUNqQiwwQ0FBeUIsQ0FBQTtJQUN6Qiw4Q0FBNkIsQ0FBQTtJQUM3QixzQ0FBcUIsQ0FBQTtJQUNyQix3Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBWFcsYUFBYSxLQUFiLGFBQWEsUUFXeEI7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQzFCLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQ3ZCLENBQUMsRUFBRSxJQUFJLEVBQWEsRUFBRSxFQUFFLENBQ3RCLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBS2pGLE1BQU0sQ0FBTixJQUFZLGdCQUVYO0FBRkQsV0FBWSxnQkFBZ0I7SUFDMUIsaURBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQUZXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFFM0I7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxT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QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQzthQUN4RTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IHtcbiAgVGVybSxcbiAgSUN5Y2xlSlNPTkxELFxuICBJU2l0ZUpTT05MRCxcbiAgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsXG4gIEVtaXNzaW9uTWV0aG9kVGllcixcbiAgSVRlcm1KU09OTEQsXG4gIENvbXBsZXRlbmVzcyxcbiAgRW1pc3Npb24sXG4gIE1lYXN1cmVtZW50LFxuICBQcmFjdGljZSxcbiAgUHJvZHVjdCxcbiAgSW5wdXQsXG4gIFByb3BlcnR5LFxuICBJbmRpY2F0b3IsXG4gIEFuaW1hbCxcbiAgTWFuYWdlbWVudCxcbiAgVHJhbnNmb3JtYXRpb25cbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcbmltcG9ydCB7IGdldERlZmF1bHRNb2RlbElkIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9nbG9zc2FyeSc7XG5cbmV4cG9ydCB0eXBlIGJsYW5rTm9kZSA9XG4gIHwgQW5pbWFsXG4gIHwgRW1pc3Npb25cbiAgfCBJbnB1dFxuICB8IFByb2R1Y3RcbiAgfCBQcm9wZXJ0eVxuICB8IFByYWN0aWNlXG4gIHwgSW5kaWNhdG9yXG4gIHwgTWVhc3VyZW1lbnRcbiAgfCBNYW5hZ2VtZW50O1xuXG5leHBvcnQgdHlwZSBibGFua05vZGVzS2V5ID1cbiAgfCAnYW5pbWFscydcbiAgfCAnZW1pc3Npb25zJ1xuICB8ICdlbWlzc2lvbnNSZXNvdXJjZVVzZSdcbiAgfCAnZW5kcG9pbnRzJ1xuICB8ICdpbXBhY3RzJ1xuICB8ICdpbnB1dHMnXG4gIHwgJ21hbmFnZW1lbnQnXG4gIHwgJ21lYXN1cmVtZW50cydcbiAgfCAncHJvZHVjdHMnXG4gIHwgJ3ByYWN0aWNlcyc7XG5cbmV4cG9ydCBlbnVtIEJsYW5rTm9kZXNLZXkge1xuICBhbmltYWxzID0gJ2FuaW1hbHMnLFxuICBlbWlzc2lvbnMgPSAnZW1pc3Npb25zJyxcbiAgZW1pc3Npb25zUmVzb3VyY2VVc2UgPSAnZW1pc3Npb25zUmVzb3VyY2VVc2UnLFxuICBlbmRwb2ludHMgPSAnZW5kcG9pbnRzJyxcbiAgaW1wYWN0cyA9ICdpbXBhY3RzJyxcbiAgaW5wdXRzID0gJ2lucHV0cycsXG4gIG1hbmFnZW1lbnQgPSAnbWFuYWdlbWVudCcsXG4gIG1lYXN1cmVtZW50cyA9ICdtZWFzdXJlbWVudHMnLFxuICBwcm9kdWN0cyA9ICdwcm9kdWN0cycsXG4gIHByYWN0aWNlcyA9ICdwcmFjdGljZXMnXG59XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJCbGFua05vZGUgPVxuICAoZmlsdGVyVGVybTogc3RyaW5nKSA9PlxuICAoeyB0ZXJtIH06IGJsYW5rTm9kZSkgPT5cbiAgICAhZmlsdGVyVGVybSB8fCB0ZXJtPy5uYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkpO1xuXG5leHBvcnQgdHlwZSBub25CbGFua05vZGUgPSBDb21wbGV0ZW5lc3M7XG5leHBvcnQgdHlwZSBub25CbGFua05vZGVzS2V5ID0gJ2NvbXBsZXRlbmVzcyc7XG5cbmV4cG9ydCBlbnVtIE5vbkJsYW5rTm9kZXNLZXkge1xuICBjb21wbGV0ZW5lc3MgPSAnY29tcGxldGVuZXNzJ1xufVxuXG5leHBvcnQgY29uc3QgaWdub3JlS2V5cyA9IFsnQHR5cGUnLCAndHlwZScsICdhZGRlZCcsICd1cGRhdGVkJywgJ2FkZGVkVmVyc2lvbicsICd1cGRhdGVkVmVyc2lvbiddO1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZEtleSA9IChrZXk6IHN0cmluZykgPT4gIWlnbm9yZUtleXMuaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IGlzTWV0aG9kTW9kZWxBbGxvd2VkID0gKGZpbHRlck1ldGhvZD86IFRlcm0pID0+IChub2RlOiBJbmRpY2F0b3IpID0+XG4gIG5vZGUubWV0aG9kTW9kZWw/LlsnQGlkJ10gPT09IChmaWx0ZXJNZXRob2QgPyBmaWx0ZXJNZXRob2RbJ0BpZCddIDogZ2V0RGVmYXVsdE1vZGVsSWQobm9kZS50ZXJtPy5bJ0BpZCddKSk7XG5cbmV4cG9ydCBlbnVtIE5vZGVLZXlTdGF0ZSB7XG4gIGFkZGVkID0gJ2FkZGVkJyxcbiAgdXBkYXRlZCA9ICd1cGRhdGVkJyxcbiAgYWdncmVnYXRlZCA9ICdhZ2dyZWdhdGVkJyxcbiAgZGVsZXRlZCA9ICdkZWxldGVkJyxcbiAgdW5jaGFuZ2VkID0gJ3VuY2hhbmdlZCdcbn1cblxuZXhwb3J0IGNvbnN0IGlzU3RhdGUgPSAobm9kZTogYmxhbmtOb2RlLCBrZXk6IHN0cmluZywgc3RhdGU6IE5vZGVLZXlTdGF0ZSkgPT5cbiAgc3RhdGUgaW4gbm9kZSEgJiYgKHR5cGVvZiBub2RlIVtzdGF0ZV0gPT09ICdib29sZWFuJyA/IG5vZGUhW3N0YXRlXSA6IG5vZGUhW3N0YXRlXS5pbmNsdWRlcyhrZXkpKTtcblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGU8VD4ge1xuICAvLyBzdG9yZSB0aGUgbm9kZSB3aXRoIHRoZSBoaWdoZXN0IFwic3RhdGVcIlxuICBub2RlOiBUO1xuICBub2RlczogVFtdO1xuICBpbmRleDogbnVtYmVyO1xuICB2YWx1ZTogbnVtYmVyW107XG4gIGRhdGVzPzogYW55W107XG4gIHNkPzogbnVtYmVyW107XG4gIG1pbj86IG51bWJlcltdO1xuICBtYXg/OiBudW1iZXJbXTtcbiAgaW5wdXRzPzogYW55W107XG4gIGRlcHRoVXBwZXI/OiBudW1iZXJbXTtcbiAgZGVwdGhMb3dlcj86IG51bWJlcltdO1xuICBzdGFydERhdGU/OiBzdHJpbmdbXTtcbiAgZW5kRGF0ZT86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXNWYWx1ZXM8VD4ge1xuICBbbm9kZUlkOiBzdHJpbmddOiBJR3JvdXBlZE5vZGU8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2Rlc1ZhbHVlPFQ+IHtcbiAgdGVybTogSVRlcm1KU09OTEQ7XG4gIG1ldGhvZFRpZXI/OiBFbWlzc2lvbk1ldGhvZFRpZXI7XG4gIC8qKlxuICAgKiBFbmFibGUgb3JkZXJpbmcgbnkgbWV0aG9kVGllclxuICAgKi9cbiAgbWV0aG9kVGllck9yZGVyOiBudW1iZXI7XG4gIHZhbHVlczogSUdyb3VwZWROb2Rlc1ZhbHVlczxUPjtcbiAgb3JpZ2luYWxWYWx1ZXM6IHtcbiAgICBbbm9kZUlkOiBzdHJpbmddOiB7XG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2RlczxUPiB7XG4gIFt0ZXJtSWQ6IHN0cmluZ106IElHcm91cGVkTm9kZXNWYWx1ZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZEtleXM8VD4ge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IElHcm91cGVkTm9kZXNWYWx1ZTxUPjtcbn1cblxuZXhwb3J0IGNvbnN0IGdyb3VwcGVkS2V5cyA9IDxUPih2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogVCB9KTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IFQgfVtdID0+XG4gIE9iamVjdC5lbnRyaWVzKHZhbHVlcykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWUgfSkpO1xuXG5jb25zdCBjb25jYXRCbGFua05vZGVWYWx1ZSA9ICh2YWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gIGNvbnN0IHZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgY29uc3QgbmV3VmFsdWVBcnJheSA9IEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdO1xuICByZXR1cm4gWy4uLnZhbHVlQXJyYXksIC4uLm5ld1ZhbHVlQXJyYXldO1xufTtcblxuZXhwb3J0IGNvbnN0IG1ldGhvZFRpZXJPcmRlciA9IChtZXRob2RUaWVyOiBFbWlzc2lvbk1ldGhvZFRpZXIpID0+XG4gIFtcbiAgICBFbWlzc2lvbk1ldGhvZFRpZXIubWVhc3VyZWQsXG4gICAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDMnXSxcbiAgICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMiddLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllclsndGllciAxJ10sXG4gICAgRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmQsXG4gICAgRW1pc3Npb25NZXRob2RUaWVyWydub3QgcmVsZXZhbnQnXVxuICBdLmluZGV4T2YobWV0aG9kVGllcik7XG5cbmV4cG9ydCBjb25zdCBncm91cHBlZFZhbHVlS2V5cyA9IFtcbiAgJ2RhdGVzJyxcbiAgJ3NkJyxcbiAgJ21pbicsXG4gICdtYXgnLFxuICAnaW5wdXRzJyxcbiAgJ2RlcHRoVXBwZXInLFxuICAnZGVwdGhMb3dlcicsXG4gICdzdGFydERhdGUnLFxuICAnZW5kRGF0ZScsXG4gICdtZXRob2RUaWVyJyxcbiAgJ21ldGhvZE1vZGVsJyxcbiAgJ21vZGVsJyxcbiAgJ21ldGhvZCdcbl07XG5cbmNvbnN0IGlzSGlnaGVyU3RhdGUgPSAoc291cmNlTm9kZTogYmxhbmtOb2RlLCBuZXdOb2RlOiBibGFua05vZGUpID0+XG4gICFzb3VyY2VOb2RlIHx8XG4gIGlzU3RhdGUobmV3Tm9kZSwgJ3ZhbHVlJywgTm9kZUtleVN0YXRlLnVwZGF0ZWQpIHx8XG4gICghaXNTdGF0ZShzb3VyY2VOb2RlLCAndmFsdWUnLCBOb2RlS2V5U3RhdGUudXBkYXRlZCkgJiYgaXNTdGF0ZShuZXdOb2RlLCAndmFsdWUnLCBOb2RlS2V5U3RhdGUuYWRkZWQpKTtcblxuY29uc3QgZ3JvdXBOb2RlS2V5ID0gKHsgdGVybSB9OiBhbnkpID0+IHRlcm0/Lm5hbWUgfHwgdGVybT8uWydAaWQnXTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwTm9kZXNCeVRlcm0gPSA8XG4gIFQgZXh0ZW5kcyBJQ3ljbGVKU09OTEQgfCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCB8IElTaXRlSlNPTkxEIHwgQW5pbWFsIHwgVHJhbnNmb3JtYXRpb24sXG4gIFJcbj4oXG4gIG5vZGVzOiBUW10gPSBbXSxcbiAga2V5OiBibGFua05vZGVzS2V5LFxuICBvcmlnaW5hbFZhbHVlczogVFtdID0gW10sXG4gIGluY2x1ZGVOb2RlID0gKF9ub2RlOiBhbnkpID0+IHRydWVcbik6IElHcm91cGVkTm9kZXM8Uj4gPT4ge1xuICBjb25zdCBncm91cHM6IElHcm91cGVkTm9kZXM8Uj4gPSBub2Rlcy5yZWR1Y2UoXG4gICAgKHByZXYsIG5vZGUsIGluZGV4KSA9PlxuICAgICAgKG5vZGVba2V5XSB8fCBbXSkucmVkdWNlKChncm91cCwgYmxhbmtOb2RlKSA9PiB7XG4gICAgICAgIC8vIHNraXAgbm9kZSBiYXNlZCBvbiBjb25kaXRpb25cbiAgICAgICAgaWYgKCFpbmNsdWRlTm9kZShibGFua05vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9kZUlkID0gbm9kZVsnQGlkJ107XG4gICAgICAgIGNvbnN0IGdyb3VwZWRLZXkgPSBncm91cE5vZGVLZXkoYmxhbmtOb2RlKTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0gPSBncm91cFtncm91cGVkS2V5XSB8fCB7XG4gICAgICAgICAgdGVybTogYmxhbmtOb2RlLnRlcm0sXG4gICAgICAgICAgbWV0aG9kVGllcjogYmxhbmtOb2RlLm1ldGhvZFRpZXIsXG4gICAgICAgICAgbWV0aG9kVGllck9yZGVyOiBtZXRob2RUaWVyT3JkZXIoYmxhbmtOb2RlLm1ldGhvZFRpZXIpLFxuICAgICAgICAgIHZhbHVlczoge30sXG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZXM6IHt9XG4gICAgICAgIH07XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdID0gZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0gfHwgeyBpbmRleCwgbm9kZXM6IFtdLCB2YWx1ZTogW10gfTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0ubm9kZSA9IGlzSGlnaGVyU3RhdGUoZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0ubm9kZSwgYmxhbmtOb2RlKVxuICAgICAgICAgID8gYmxhbmtOb2RlXG4gICAgICAgICAgOiBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS5ub2RlO1xuICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS5ub2Rlcy5wdXNoKGJsYW5rTm9kZSk7XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLnZhbHVlID0gY29uY2F0QmxhbmtOb2RlVmFsdWUoXG4gICAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0udmFsdWUsXG4gICAgICAgICAgYmxhbmtOb2RlLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGdyb3VwcGVkVmFsdWVLZXlzLmZvckVhY2goYXJyYXlLZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0KGJsYW5rTm9kZSwgYXJyYXlLZXksIFtdKTtcbiAgICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXVthcnJheUtleV0gPSBbXG4gICAgICAgICAgICAuLi4oZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF1bYXJyYXlLZXldIHx8IFtdKSxcbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSA/IG5ld1ZhbHVlIDogW25ld1ZhbHVlXSlcbiAgICAgICAgICBdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgfSwgcHJldiksXG4gICAge30gYXMgSUdyb3VwZWROb2RlczxSPlxuICApO1xuXG4gIC8vIGNvbXBpbGUgb3JpZ2luYWwgdmFsdWVzXG4gIE9iamVjdC52YWx1ZXMoZ3JvdXBzKS5tYXAoZ3JvdXAgPT4ge1xuICAgIE9iamVjdC5rZXlzKGdyb3VwLnZhbHVlcykubWFwKG5vZGVJZCA9PiB7XG4gICAgICBjb25zdCB7IGluZGV4IH0gPSBncm91cC52YWx1ZXNbbm9kZUlkXTtcbiAgICAgIGNvbnN0IHRlcm1JZCA9IGdyb3VwLnRlcm1bJ0BpZCddO1xuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGdldChvcmlnaW5hbFZhbHVlcywgYFske2luZGV4fV0uJHtrZXl9YCwgW10pLmZpbHRlcihcbiAgICAgICAgKHZhbDogYW55KSA9PiB2YWwudGVybVsnQGlkJ10gPT09IHRlcm1JZFxuICAgICAgKTtcbiAgICAgIGlmIChvcmlnaW5hbFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvcmlnaW5hbFZhbHVlLnJlZHVjZSgoYXJyYXk6IGFueVtdLCBjdXJyOiBhbnkpID0+IGNvbmNhdEJsYW5rTm9kZVZhbHVlKGFycmF5LCBjdXJyLnZhbHVlKSwgW10pO1xuICAgICAgICBncm91cC5vcmlnaW5hbFZhbHVlc1tub2RlSWRdID0geyB2YWx1ZTogcHJvcGVydHlWYWx1ZSh2YWx1ZSwgdGVybUlkKSB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gZ3JvdXBzO1xufTtcbiJdfQ==
|