ato-water-lib 0.0.87 → 0.0.90
Sign up to get free protection for your applications and to get access to all the features.
- package/{esm2020 → esm2022}/lib/ato-water-lib.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/ato-water-lib.module.mjs +15 -15
- package/{esm2020 → esm2022}/lib/ato-water-lib.service.mjs +5 -5
- package/esm2022/lib/components/asset-flow/asset-flow.component.mjs +174 -0
- package/{esm2020 → esm2022}/lib/components/asset-params-view/asset-params-view.component.mjs +7 -9
- package/esm2022/lib/components/flow-diagram-lib/flow-diagram-lib.component.mjs +55 -0
- package/esm2022/lib/directive/ato-loading.directive.mjs +59 -0
- package/esm2022/lib/directive/ng-var.directive.mjs +33 -0
- package/esm2022/lib/models/default-gojs-editor.model.mjs +3582 -0
- package/esm2022/lib/models/gojs-data.model.mjs +10 -0
- package/esm2022/lib/models/gojs-editor.model.mjs +1799 -0
- package/esm2022/lib/services/utils/utils.service.mjs +133 -0
- package/{fesm2020 → fesm2022}/ato-water-lib.mjs +199 -168
- package/fesm2022/ato-water-lib.mjs.map +1 -0
- package/lib/components/asset-flow/asset-flow.component.d.ts +1 -1
- package/lib/components/asset-params-view/asset-params-view.component.d.ts +1 -1
- package/lib/components/flow-diagram-lib/flow-diagram-lib.component.d.ts +1 -1
- package/lib/constants/components-group-const.d.ts +1 -1
- package/lib/directive/ato-loading.directive.d.ts +1 -1
- package/lib/directive/ng-var.directive.d.ts +1 -1
- package/lib/models/default-gojs-editor.model.d.ts +2 -2
- package/lib/models/gojs-editor.model.d.ts +4 -4
- package/package.json +7 -13
- package/esm2020/lib/components/asset-flow/asset-flow.component.mjs +0 -165
- package/esm2020/lib/components/flow-diagram-lib/flow-diagram-lib.component.mjs +0 -54
- package/esm2020/lib/directive/ato-loading.directive.mjs +0 -55
- package/esm2020/lib/directive/ng-var.directive.mjs +0 -31
- package/esm2020/lib/models/default-gojs-editor.model.mjs +0 -3567
- package/esm2020/lib/models/gojs-data.model.mjs +0 -6
- package/esm2020/lib/models/gojs-editor.model.mjs +0 -1797
- package/esm2020/lib/services/utils/utils.service.mjs +0 -133
- package/fesm2015/ato-water-lib.mjs +0 -9049
- package/fesm2015/ato-water-lib.mjs.map +0 -1
- package/fesm2020/ato-water-lib.mjs.map +0 -1
- /package/{esm2020 → esm2022}/ato-water-lib.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/applicable-prefixes-const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/base64.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/components-group-const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/icon-base64.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/key.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/plant.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/value.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/ato-asset-flow.model.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -0,0 +1,133 @@
|
|
1
|
+
import { DecimalPipe } from '@angular/common';
|
2
|
+
import { Injectable } from '@angular/core';
|
3
|
+
import { ATO_ABBREVIATION, APPLICABLE_PREFIXES, ROUNDED_NUMBER, } from '../../constants/applicable-prefixes-const';
|
4
|
+
import { v4 as uuidV4 } from 'uuid';
|
5
|
+
import _ from 'lodash';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
export class UtilsService {
|
8
|
+
static convertPrefixesData(data) {
|
9
|
+
if (!data?.unit || (!+data?.value && data?.value !== '0')) {
|
10
|
+
return {
|
11
|
+
shortenedNumber: data?.value ?? '0',
|
12
|
+
unitPrefixes: '',
|
13
|
+
};
|
14
|
+
}
|
15
|
+
const [unitToConvert, suffixUnit] = data?.unit?.split('/');
|
16
|
+
if (unitToConvert === ATO_ABBREVIATION.kWh) {
|
17
|
+
return this.getDataFormatSpecialKwh(data?.value, data?.isChangeUnitKwh);
|
18
|
+
}
|
19
|
+
return this.getDataFormatUnit(data?.value, unitToConvert);
|
20
|
+
}
|
21
|
+
static getDataFormatSpecialKwh(value, isChangeUnitKwh) {
|
22
|
+
const _DecimalPipe = new DecimalPipe('en');
|
23
|
+
if (!!isChangeUnitKwh) {
|
24
|
+
// 1.000.000 KWh => 1 GWh
|
25
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.MILLION) {
|
26
|
+
return {
|
27
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
|
28
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.BILLION],
|
29
|
+
};
|
30
|
+
}
|
31
|
+
// 1000 KWh => 1 MWh
|
32
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.THOUSAND) {
|
33
|
+
return {
|
34
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.THOUSAND) ?? 0, '1.0-2'),
|
35
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.MILLION],
|
36
|
+
};
|
37
|
+
}
|
38
|
+
}
|
39
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.BILLION) {
|
40
|
+
return {
|
41
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
|
42
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.BILLION],
|
43
|
+
};
|
44
|
+
}
|
45
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.MILLION) {
|
46
|
+
return {
|
47
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
|
48
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.MILLION],
|
49
|
+
};
|
50
|
+
}
|
51
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.THOUSAND) {
|
52
|
+
return {
|
53
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.THOUSAND) ?? 0, '1.0-2'),
|
54
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.THOUSAND],
|
55
|
+
};
|
56
|
+
}
|
57
|
+
return {
|
58
|
+
shortenedNumber: _DecimalPipe.transform(+value ?? 0, '1.0-2') ?? '0',
|
59
|
+
unitPrefixes: '',
|
60
|
+
};
|
61
|
+
}
|
62
|
+
static getDataFormatUnit(value, unit) {
|
63
|
+
const _DecimalPipe = new DecimalPipe('en');
|
64
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.BILLION) {
|
65
|
+
return {
|
66
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.BILLION) ?? 0, '1.0-2'),
|
67
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[unit]?.[ROUNDED_NUMBER.BILLION],
|
68
|
+
};
|
69
|
+
}
|
70
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.MILLION) {
|
71
|
+
return {
|
72
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
|
73
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[unit]?.[ROUNDED_NUMBER.MILLION],
|
74
|
+
};
|
75
|
+
}
|
76
|
+
if (Math.abs(value) >= ROUNDED_NUMBER.THOUSAND) {
|
77
|
+
return {
|
78
|
+
shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.THOUSAND) ?? 0, '1.0-2'),
|
79
|
+
unitPrefixes: APPLICABLE_PREFIXES?.[unit]?.[ROUNDED_NUMBER.THOUSAND],
|
80
|
+
};
|
81
|
+
}
|
82
|
+
return {
|
83
|
+
shortenedNumber: _DecimalPipe.transform(+value ?? 0, '1.0-2') ?? '0',
|
84
|
+
unitPrefixes: '',
|
85
|
+
};
|
86
|
+
}
|
87
|
+
static convertSpecialUnit(unit, unitPrefixes) {
|
88
|
+
switch (unit) {
|
89
|
+
case ATO_ABBREVIATION.kWh: {
|
90
|
+
return unitPrefixes ? ATO_ABBREVIATION.Wh : ATO_ABBREVIATION.kWh;
|
91
|
+
}
|
92
|
+
case ATO_ABBREVIATION.m3: {
|
93
|
+
return ATO_ABBREVIATION.m3_Special;
|
94
|
+
}
|
95
|
+
case ATO_ABBREVIATION.m3_unit: {
|
96
|
+
return ATO_ABBREVIATION.m3_unit_Special;
|
97
|
+
}
|
98
|
+
case ATO_ABBREVIATION.degC: {
|
99
|
+
return ATO_ABBREVIATION.degC_unit_Special;
|
100
|
+
}
|
101
|
+
case ATO_ABBREVIATION.degF: {
|
102
|
+
return ATO_ABBREVIATION.degF_unit_Special;
|
103
|
+
}
|
104
|
+
default: {
|
105
|
+
unit = UtilsService.replaceAll(unit ?? '', ATO_ABBREVIATION.m3, ATO_ABBREVIATION.m3_Special);
|
106
|
+
return UtilsService.replaceAll(unit ?? '', ATO_ABBREVIATION.CO2, ATO_ABBREVIATION.CO2_Special);
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
static generateUUID() {
|
111
|
+
const id = UtilsService.replaceAll(uuidV4(), '-', '').toUpperCase();
|
112
|
+
const randomPosition = _.random(0, 32);
|
113
|
+
const randomNumber = _.random(0, 9).toString();
|
114
|
+
const leftChar = id.slice(0, randomPosition);
|
115
|
+
const rightChar = id.slice(randomPosition);
|
116
|
+
return `${leftChar}${randomNumber}${rightChar}`;
|
117
|
+
}
|
118
|
+
static replaceAll(text, find, replace) {
|
119
|
+
function escapeRegExp(str) {
|
120
|
+
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
|
121
|
+
}
|
122
|
+
return text.replace(new RegExp(escapeRegExp(find), 'g'), replace);
|
123
|
+
}
|
124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
125
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UtilsService, providedIn: 'root' });
|
126
|
+
}
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UtilsService, decorators: [{
|
128
|
+
type: Injectable,
|
129
|
+
args: [{
|
130
|
+
providedIn: 'root',
|
131
|
+
}]
|
132
|
+
}] });
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0by13YXRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy91dGlscy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEdBQUcsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBS3ZCLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFxRjtRQUk1RyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPO2dCQUNILGVBQWUsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUc7Z0JBQ25DLFlBQVksRUFBRSxFQUFFO2FBQ25CLENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzRCxJQUFJLGFBQWEsS0FBSyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsT0FBTyxJ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ZW50IjpbImltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFUT19BQkJSRVZJQVRJT04sIEFQUExJQ0FCTEVfUFJFRklYRVMsIFJPVU5ERURfTlVNQkVSLCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcHBsaWNhYmxlLXByZWZpeGVzLWNvbnN0JztcbmltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcbiAgICBzdGF0aWMgY29udmVydFByZWZpeGVzRGF0YShkYXRhOiB7IHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBhbnk7IHVuaXQ6IHN0cmluZyB8IGFueTsgaXNDaGFuZ2VVbml0S3doPzogYm9vbGVhbiB9KToge1xuICAgICAgICBzaG9ydGVuZWROdW1iZXI6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gICAgICAgIHVuaXRQcmVmaXhlczogbnVtYmVyIHwgbnVsbCB8IHN0cmluZztcbiAgICB9IHtcbiAgICAgICAgaWYgKCFkYXRhPy51bml0IHx8ICghK2RhdGE/LnZhbHVlICYmIGRhdGE/LnZhbHVlICE9PSAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogZGF0YT8udmFsdWUgPz8gJzAnLFxuICAgICAgICAgICAgICAgIHVuaXRQcmVmaXhlczogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW3VuaXRUb0NvbnZlcnQsIHN1ZmZpeFVuaXRdID0gZGF0YT8udW5pdD8uc3BsaXQoJy8nKTtcblxuICAgICAgICBpZiAodW5pdFRvQ29udmVydCA9PT0gQVRPX0FCQlJFVklBVElPTi5rV2gpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGFGb3JtYXRTcGVjaWFsS3doKGRhdGE/LnZhbHVlLCBkYXRhPy5pc0NoYW5nZVVuaXRLd2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZvcm1hdFVuaXQoZGF0YT8udmFsdWUsIHVuaXRUb0NvbnZlcnQpO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXREYXRhRm9ybWF0U3BlY2lhbEt3aCh2YWx1ZTogYW55LCBpc0NoYW5nZVVuaXRLd2g6IGFueSkge1xuICAgICAgICBjb25zdCBfRGVjaW1hbFBpcGUgPSBuZXcgRGVjaW1hbFBpcGUoJ2VuJyk7XG5cbiAgICAgICAgaWYgKCEhaXNDaGFuZ2VVbml0S3doKSB7XG4gICAgICAgICAgICAvLyAxLjAwMC4wMDAgS1doID0+IDEgR1doXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModmFsdWUpID49IFJPVU5ERURfTlVNQkVSLk1JTExJT04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oKyh2YWx1ZSAvIFJPVU5ERURfTlVNQkVSLk1JTExJT04pID8/IDAsICcxLjAtMicpLFxuICAgICAgICAgICAgICAgICAgICB1bml0UHJlZml4ZXM6IEFQUExJQ0FCTEVfUFJFRklYRVM/LltBVE9fQUJCUkVWSUFUSU9OLmtXaF0/LltST1VOREVEX05VTUJFUi5CSUxMSU9OXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMTAwMCBLV2ggPT4gMSBNV2hcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh2YWx1ZSkgPj0gUk9VTkRFRF9OVU1CRVIuVEhPVVNBTkQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oKyh2YWx1ZSAvIFJPVU5ERURfTlVNQkVSLlRIT1VTQU5EKSA/PyAwLCAnMS4wLTInKSxcbiAgICAgICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiBBUFBMSUNBQkxFX1BSRUZJWEVTPy5bQVRPX0FCQlJFVklBVElPTi5rV2hdPy5bUk9VTkRFRF9OVU1CRVIuTUlMTElPTl0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnModmFsdWUpID49IFJPVU5ERURfTlVNQkVSLkJJTExJT04pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2hvcnRlbmVkTnVtYmVyOiBfRGVjaW1hbFBpcGUudHJhbnNmb3JtKCsodmFsdWUgLyBST1VOREVEX05VTUJFUi5NSUxMSU9OKSA/PyAwLCAnMS4wLTInKSxcbiAgICAgICAgICAgICAgICB1bml0UHJlZml4ZXM6IEFQUExJQ0FCTEVfUFJFRklYRVM/LltBVE9fQUJCUkVWSUFUSU9OLmtXaF0/LltST1VOREVEX05VTUJFUi5CSUxMSU9OXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5NSUxMSU9OKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrKHZhbHVlIC8gUk9VTkRFRF9OVU1CRVIuTUlMTElPTikgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiBBUFBMSUNBQkxFX1BSRUZJWEVTPy5bQVRPX0FCQlJFVklBVElPTi5rV2hdPy5bUk9VTkRFRF9OVU1CRVIuTUlMTElPTl0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyh2YWx1ZSkgPj0gUk9VTkRFRF9OVU1CRVIuVEhPVVNBTkQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2hvcnRlbmVkTnVtYmVyOiBfRGVjaW1hbFBpcGUudHJhbnNmb3JtKCsodmFsdWUgLyBST1VOREVEX05VTUJFUi5USE9VU0FORCkgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiBBUFBMSUNBQkxFX1BSRUZJWEVTPy5bQVRPX0FCQlJFVklBVElPTi5rV2hdPy5bUk9VTkRFRF9OVU1CRVIuVEhPVVNBTkRdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oK3ZhbHVlID8/IDAsICcxLjAtMicpID8/ICcwJyxcbiAgICAgICAgICAgIHVuaXRQcmVmaXhlczogJycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldERhdGFGb3JtYXRVbml0KHZhbHVlOiBhbnksIHVuaXQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBfRGVjaW1hbFBpcGUgPSBuZXcgRGVjaW1hbFBpcGUoJ2VuJyk7XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5CSUxMSU9OKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrKHZhbHVlIC8gUk9VTkRFRF9OVU1CRVIuQklMTElPTikgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiAoQVBQTElDQUJMRV9QUkVGSVhFUyBhcyBhbnkpPy5bdW5pdF0/LltST1VOREVEX05VTUJFUi5CSUxMSU9OXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5NSUxMSU9OKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrKHZhbHVlIC8gUk9VTkRFRF9OVU1CRVIuTUlMTElPTikgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiAoQVBQTElDQUJMRV9QUkVGSVhFUyBhcyBhbnkpPy5bdW5pdF0/LltST1VOREVEX05VTUJFUi5NSUxMSU9OXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5USE9VU0FORCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oKyh2YWx1ZSAvIFJPVU5ERURfTlVNQkVSLlRIT1VTQU5EKSA/PyAwLCAnMS4wLTInKSxcbiAgICAgICAgICAgICAgICB1bml0UHJlZml4ZXM6IChBUFBMSUNBQkxFX1BSRUZJWEVTIGFzIGFueSk/Llt1bml0XT8uW1JPVU5ERURfTlVNQkVSLlRIT1VTQU5EXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrdmFsdWUgPz8gMCwgJzEuMC0yJykgPz8gJzAnLFxuICAgICAgICAgICAgdW5pdFByZWZpeGVzOiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY29udmVydFNwZWNpYWxVbml0KHVuaXQ6IHN0cmluZywgdW5pdFByZWZpeGVzPzogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgICAgICAgY2FzZSBBVE9fQUJCUkVWSUFUSU9OLmtXaDoge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bml0UHJlZml4ZXMgPyBBVE9fQUJCUkVWSUFUSU9OLldoIDogQVRPX0FCQlJFVklBVElPTi5rV2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFUT19BQkJSRVZJQVRJT04ubTM6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQVRPX0FCQlJFVklBVElPTi5tM19TcGVjaWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBVE9fQUJCUkVWSUFUSU9OLm0zX3VuaXQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQVRPX0FCQlJFVklBVElPTi5tM191bml0X1NwZWNpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFUT19BQkJSRVZJQVRJT04uZGVnQzoge1xuICAgICAgICAgICAgICAgIHJldHVybiBBVE9fQUJCUkVWSUFUSU9OLmRlZ0NfdW5pdF9TcGVjaWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBVE9fQUJCUkVWSUFUSU9OLmRlZ0Y6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQVRPX0FCQlJFVklBVElPTi5kZWdGX3VuaXRfU3BlY2lhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB1bml0ID0gVXRpbHNTZXJ2aWNlLnJlcGxhY2VBbGwodW5pdCA/PyAnJywgQVRPX0FCQlJFVklBVElPTi5tMywgQVRPX0FCQlJFVklBVElPTi5tM19TcGVjaWFsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gVXRpbHNTZXJ2aWNlLnJlcGxhY2VBbGwodW5pdCA/PyAnJywgQVRPX0FCQlJFVklBVElPTi5DTzIsIEFUT19BQkJSRVZJQVRJT04uQ08yX1NwZWNpYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGdlbmVyYXRlVVVJRCgpIHtcbiAgICAgICAgY29uc3QgaWQgPSBVdGlsc1NlcnZpY2UucmVwbGFjZUFsbCh1dWlkVjQoKSwgJy0nLCAnJykudG9VcHBlckNhc2UoKTtcbiAgICAgICAgY29uc3QgcmFuZG9tUG9zaXRpb24gPSBfLnJhbmRvbSgwLCAzMik7XG4gICAgICAgIGNvbnN0IHJhbmRvbU51bWJlciA9IF8ucmFuZG9tKDAsIDkpLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGxlZnRDaGFyID0gaWQuc2xpY2UoMCwgcmFuZG9tUG9zaXRpb24pO1xuICAgICAgICBjb25zdCByaWdodENoYXIgPSBpZC5zbGljZShyYW5kb21Qb3NpdGlvbik7XG4gICAgICAgIHJldHVybiBgJHtsZWZ0Q2hhcn0ke3JhbmRvbU51bWJlcn0ke3JpZ2h0Q2hhcn1gO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXBsYWNlQWxsKHRleHQ6IGFueSwgZmluZDogYW55LCByZXBsYWNlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFxcW1xcXVxcL1xcXFxdKS9nLCAnXFxcXCQxJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChmaW5kKSwgJ2cnKSwgcmVwbGFjZSk7XG4gICAgfVxufVxuIl19
|