@magic-xpa/utils 4.1200.0-dev4120.21 → 4.1200.0-dev4120.212
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/fesm2022/magic-xpa-utils.mjs +1222 -72
- package/fesm2022/magic-xpa-utils.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/package.json +2 -4
- package/src/MsgInterface.d.ts +5 -0
- package/src/StrUtil.d.ts +1 -0
- package/src/XMLConstants.d.ts +2 -0
- package/esm2022/index.mjs +0 -27
- package/esm2022/magic-xpa-utils.mjs +0 -2
- package/esm2022/src/Base64.mjs +0 -164
- package/esm2022/src/ChoiceUtils.mjs +0 -79
- package/esm2022/src/Constants.mjs +0 -74
- package/esm2022/src/DateTimeUtils.mjs +0 -54
- package/esm2022/src/DateUtil.mjs +0 -58
- package/esm2022/src/InternalInterface.mjs +0 -341
- package/esm2022/src/JSON_Utils.mjs +0 -7
- package/esm2022/src/Logger.mjs +0 -216
- package/esm2022/src/MagicConstants.mjs +0 -12
- package/esm2022/src/Misc.mjs +0 -98
- package/esm2022/src/MsgInterface.mjs +0 -192
- package/esm2022/src/PICInterface.mjs +0 -60
- package/esm2022/src/PlatformUtils.mjs +0 -11
- package/esm2022/src/Queue.mjs +0 -28
- package/esm2022/src/Randomizer.mjs +0 -34
- package/esm2022/src/RequestInfo.mjs +0 -28
- package/esm2022/src/Rtf.mjs +0 -614
- package/esm2022/src/StorageAttribute.mjs +0 -84
- package/esm2022/src/StrUtil.mjs +0 -453
- package/esm2022/src/SyncExecutionHelper.mjs +0 -21
- package/esm2022/src/UtilDateJpn.mjs +0 -232
- package/esm2022/src/UtilImeJpn.mjs +0 -13
- package/esm2022/src/UtilStrByteMode.mjs +0 -300
- package/esm2022/src/XMLConstants.mjs +0 -169
- package/esm2022/src/Xml/XmlParser.mjs +0 -247
- package/esm2022/src/enums.mjs +0 -1763
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import { Encoding, StringBuilder } from "@magic-xpa/mscorelib";
|
|
2
|
-
export class UtilStrByteMode {
|
|
3
|
-
static Encoding = Encoding.UTF8;
|
|
4
|
-
static strNavigatorLang = window.navigator.language;
|
|
5
|
-
static _bLocaleDefLangJPN = UtilStrByteMode.strNavigatorLang.startsWith('ja');
|
|
6
|
-
static _bLocaleDefLangCHN = UtilStrByteMode.strNavigatorLang.startsWith('zh');
|
|
7
|
-
static _bLocaleDefLangKOR = UtilStrByteMode.strNavigatorLang.startsWith('ko');
|
|
8
|
-
static isLocaleDefLangDBCS() {
|
|
9
|
-
return UtilStrByteMode._bLocaleDefLangJPN || UtilStrByteMode._bLocaleDefLangCHN || UtilStrByteMode._bLocaleDefLangKOR;
|
|
10
|
-
}
|
|
11
|
-
static isLocaleDefLangJPN() {
|
|
12
|
-
return UtilStrByteMode._bLocaleDefLangJPN;
|
|
13
|
-
}
|
|
14
|
-
static isLocaleDefLangKOR() {
|
|
15
|
-
return UtilStrByteMode._bLocaleDefLangKOR;
|
|
16
|
-
}
|
|
17
|
-
static isKoreanCharacter(c) {
|
|
18
|
-
return (44032 <= c && c <= 55203) || (4352 <= c && c <= 4607) || (12592 <= c && c <= 12687) || (43360 <= c && c <= 43391) || (55216 <= c && c <= 55295);
|
|
19
|
-
}
|
|
20
|
-
static lenB(strVal) {
|
|
21
|
-
return UtilStrByteMode.Encoding.GetByteCount(strVal);
|
|
22
|
-
}
|
|
23
|
-
static midB(strVal, ofs, len) {
|
|
24
|
-
let intValidMaxIndex = -1;
|
|
25
|
-
let intValidMinIndex = -1;
|
|
26
|
-
let bHeadSpace = false;
|
|
27
|
-
let bEndSpace = false;
|
|
28
|
-
let strRet;
|
|
29
|
-
if (len <= 0)
|
|
30
|
-
return "";
|
|
31
|
-
if (ofs <= 0) {
|
|
32
|
-
ofs = 0;
|
|
33
|
-
intValidMinIndex = 0;
|
|
34
|
-
bHeadSpace = false;
|
|
35
|
-
}
|
|
36
|
-
let intByteLength = UtilStrByteMode.lenB(strVal);
|
|
37
|
-
if (intByteLength < ofs)
|
|
38
|
-
return "";
|
|
39
|
-
let LenMax = intByteLength - ofs;
|
|
40
|
-
if (LenMax < len)
|
|
41
|
-
len = LenMax;
|
|
42
|
-
intByteLength = 0;
|
|
43
|
-
for (let intIndex = 0; intIndex < strVal.length; intIndex = intIndex + 1) {
|
|
44
|
-
let s = strVal.substr(intIndex, 1);
|
|
45
|
-
intByteLength = intByteLength + UtilStrByteMode.Encoding.GetByteCount(s);
|
|
46
|
-
if (intValidMinIndex === -1) {
|
|
47
|
-
if (intByteLength === ofs) {
|
|
48
|
-
intValidMinIndex = intIndex + 1;
|
|
49
|
-
bHeadSpace = false;
|
|
50
|
-
}
|
|
51
|
-
else if (intByteLength > ofs) {
|
|
52
|
-
intValidMinIndex = intIndex + 1;
|
|
53
|
-
bHeadSpace = true;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (intValidMaxIndex === -1) {
|
|
57
|
-
if (intByteLength === ofs + len) {
|
|
58
|
-
intValidMaxIndex = intIndex;
|
|
59
|
-
bEndSpace = false;
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
else if (intByteLength > ofs + len) {
|
|
63
|
-
intValidMaxIndex = intIndex - 1;
|
|
64
|
-
bEndSpace = true;
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
let strbufAddingBuf = new StringBuilder(len);
|
|
70
|
-
if (bHeadSpace) {
|
|
71
|
-
strbufAddingBuf.Append(' ');
|
|
72
|
-
}
|
|
73
|
-
if (intValidMinIndex <= intValidMaxIndex) {
|
|
74
|
-
strbufAddingBuf.Append(strVal.substr(intValidMinIndex, intValidMaxIndex + 1 - intValidMinIndex));
|
|
75
|
-
}
|
|
76
|
-
if (bEndSpace) {
|
|
77
|
-
strbufAddingBuf.Append(' ');
|
|
78
|
-
}
|
|
79
|
-
strRet = strbufAddingBuf.ToString();
|
|
80
|
-
strbufAddingBuf = null;
|
|
81
|
-
return strRet;
|
|
82
|
-
}
|
|
83
|
-
static leftB(strVal, len) {
|
|
84
|
-
return UtilStrByteMode.midB(strVal, 0, len);
|
|
85
|
-
}
|
|
86
|
-
static rightB(strVal, len) {
|
|
87
|
-
let byteFldsValLen = UtilStrByteMode.lenB(strVal);
|
|
88
|
-
if (len < 0) {
|
|
89
|
-
len = 0;
|
|
90
|
-
}
|
|
91
|
-
let ofs = byteFldsValLen - len;
|
|
92
|
-
if (ofs < 0) {
|
|
93
|
-
ofs = 0;
|
|
94
|
-
}
|
|
95
|
-
return UtilStrByteMode.midB(strVal, ofs, len);
|
|
96
|
-
}
|
|
97
|
-
static insB(strTarget, strSource, ofs, len) {
|
|
98
|
-
if (ofs < 0) {
|
|
99
|
-
ofs = 0;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
if (ofs >= 1) {
|
|
103
|
-
ofs = ofs - 1;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (len < 0) {
|
|
107
|
-
len = 0;
|
|
108
|
-
}
|
|
109
|
-
let intTargetLenB = UtilStrByteMode.lenB(strTarget);
|
|
110
|
-
let intSourceLenB = UtilStrByteMode.lenB(strSource);
|
|
111
|
-
let strbufRetVal = new StringBuilder(ofs + len);
|
|
112
|
-
strbufRetVal.Append(UtilStrByteMode.leftB(strTarget, ofs));
|
|
113
|
-
for (let intAddSpaceLen = ofs - intTargetLenB; intAddSpaceLen > 0; intAddSpaceLen = intAddSpaceLen - 1) {
|
|
114
|
-
strbufRetVal.Append(' ');
|
|
115
|
-
}
|
|
116
|
-
strbufRetVal.Append(UtilStrByteMode.leftB(strSource, len));
|
|
117
|
-
for (let i = len - intSourceLenB; i > 0; i = i - 1) {
|
|
118
|
-
strbufRetVal.Append(' ');
|
|
119
|
-
}
|
|
120
|
-
strbufRetVal.Append(UtilStrByteMode.rightB(strTarget, intTargetLenB - ofs));
|
|
121
|
-
return strbufRetVal.ToString();
|
|
122
|
-
}
|
|
123
|
-
static delB(strVal, ofs, len) {
|
|
124
|
-
if (ofs < 0) {
|
|
125
|
-
ofs = 0;
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
if (ofs >= 1) {
|
|
129
|
-
ofs = ofs - 1;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
let intValLenB = UtilStrByteMode.lenB(strVal);
|
|
133
|
-
if (ofs + len > intValLenB) {
|
|
134
|
-
len = intValLenB - ofs;
|
|
135
|
-
}
|
|
136
|
-
let strRet;
|
|
137
|
-
if (len <= 0) {
|
|
138
|
-
strRet = strVal;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
let intRightSideLenB = intValLenB - ofs - len;
|
|
142
|
-
if (intRightSideLenB < 0) {
|
|
143
|
-
strRet = strVal;
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
let strbufRetVal = new StringBuilder(ofs + intRightSideLenB);
|
|
147
|
-
strbufRetVal.Append(UtilStrByteMode.leftB(strVal, ofs));
|
|
148
|
-
strbufRetVal.Append(UtilStrByteMode.rightB(strVal, intRightSideLenB));
|
|
149
|
-
strRet = strbufRetVal.ToString();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return strRet;
|
|
153
|
-
}
|
|
154
|
-
static instrB(strTarget, strSearch) {
|
|
155
|
-
if (strSearch.length === 0) {
|
|
156
|
-
return 0;
|
|
157
|
-
}
|
|
158
|
-
let ofs = strTarget.indexOf(strSearch);
|
|
159
|
-
if (ofs < 0) {
|
|
160
|
-
return 0;
|
|
161
|
-
}
|
|
162
|
-
return UtilStrByteMode.lenB(strTarget.substr(0, ofs)) + 1;
|
|
163
|
-
}
|
|
164
|
-
static repB(strTarget, strOrigin, ofs, len) {
|
|
165
|
-
let strbufAddingBuf = new StringBuilder();
|
|
166
|
-
if (ofs < 0) {
|
|
167
|
-
ofs = 0;
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
if (ofs >= 1) {
|
|
171
|
-
ofs = ofs - 1;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
if (len < 0) {
|
|
175
|
-
len = 0;
|
|
176
|
-
}
|
|
177
|
-
strbufAddingBuf.Append(UtilStrByteMode.leftB(strTarget, ofs));
|
|
178
|
-
let intAddSpaceLen = ofs - UtilStrByteMode.lenB(strTarget);
|
|
179
|
-
for (; intAddSpaceLen > 0; intAddSpaceLen--)
|
|
180
|
-
strbufAddingBuf.Append(' ');
|
|
181
|
-
strbufAddingBuf.Append(UtilStrByteMode.leftB(strOrigin, len));
|
|
182
|
-
let intRightLen = UtilStrByteMode.lenB(strTarget) - (ofs + len);
|
|
183
|
-
if (intRightLen > 0) {
|
|
184
|
-
strbufAddingBuf.Append(UtilStrByteMode.rightB(strTarget, intRightLen));
|
|
185
|
-
}
|
|
186
|
-
intAddSpaceLen = len - UtilStrByteMode.lenB(strOrigin);
|
|
187
|
-
for (; intAddSpaceLen > 0; intAddSpaceLen--) {
|
|
188
|
-
strbufAddingBuf.Append(' ');
|
|
189
|
-
}
|
|
190
|
-
return strbufAddingBuf.ToString();
|
|
191
|
-
}
|
|
192
|
-
static repC(strTarget, strOrigin, ofs, len) {
|
|
193
|
-
let strbufAddingBuf = new StringBuilder();
|
|
194
|
-
if (ofs < 0) {
|
|
195
|
-
ofs = 0;
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
if (ofs >= 1) {
|
|
199
|
-
ofs = ofs - 1;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
if (len < 0) {
|
|
203
|
-
len = 0;
|
|
204
|
-
}
|
|
205
|
-
strbufAddingBuf.Append(strTarget.substr(0, ofs));
|
|
206
|
-
let intAddSpaceLen = ofs - strTarget.length;
|
|
207
|
-
for (; intAddSpaceLen > 0; intAddSpaceLen--)
|
|
208
|
-
strbufAddingBuf.Append(' ');
|
|
209
|
-
strbufAddingBuf.Append(strOrigin.substr(0, len));
|
|
210
|
-
let intRightLen = strTarget.length - (ofs + len);
|
|
211
|
-
if (intRightLen > 0) {
|
|
212
|
-
strbufAddingBuf.Append(strTarget.substr(ofs + len));
|
|
213
|
-
}
|
|
214
|
-
for (let i = len - strOrigin.length; i > 0; i = i - 1) {
|
|
215
|
-
strbufAddingBuf.Append(' ');
|
|
216
|
-
}
|
|
217
|
-
return strbufAddingBuf.ToString();
|
|
218
|
-
}
|
|
219
|
-
static isHalfWidth(str) {
|
|
220
|
-
let letter = str.charCodeAt(0);
|
|
221
|
-
if (32 <= letter && letter <= 126) {
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
let len = UtilStrByteMode.lenB(str);
|
|
226
|
-
if (len === 1)
|
|
227
|
-
return true;
|
|
228
|
-
}
|
|
229
|
-
return false;
|
|
230
|
-
}
|
|
231
|
-
static isDigit(letter) {
|
|
232
|
-
return 48 <= letter.charCodeAt(0) && letter.charCodeAt(0) <= 57;
|
|
233
|
-
}
|
|
234
|
-
static asNumeric(letter) {
|
|
235
|
-
let result;
|
|
236
|
-
switch (letter.charCodeAt(0)) {
|
|
237
|
-
case 42:
|
|
238
|
-
case 43:
|
|
239
|
-
case 44:
|
|
240
|
-
case 45:
|
|
241
|
-
case 46:
|
|
242
|
-
case 47:
|
|
243
|
-
result = true;
|
|
244
|
-
break;
|
|
245
|
-
default:
|
|
246
|
-
result = false;
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
return result;
|
|
250
|
-
}
|
|
251
|
-
static convPos(strSource, strDest, pos, isAdvance) {
|
|
252
|
-
let retPos;
|
|
253
|
-
if (pos < 0)
|
|
254
|
-
return 0;
|
|
255
|
-
if (pos > strSource.length)
|
|
256
|
-
pos = strSource.length;
|
|
257
|
-
let diffLen = UtilStrByteMode.lenB(strSource) - UtilStrByteMode.lenB(strDest);
|
|
258
|
-
if (diffLen > 0) {
|
|
259
|
-
let stringBuilder = new StringBuilder(strDest);
|
|
260
|
-
for (; diffLen > 0; diffLen--)
|
|
261
|
-
stringBuilder.Append(' ');
|
|
262
|
-
strDest = stringBuilder.ToString();
|
|
263
|
-
}
|
|
264
|
-
let byteSource = UtilStrByteMode.Encoding.GetBytes(strSource.substr(0, pos));
|
|
265
|
-
let strLeftB = UtilStrByteMode.leftB(strDest, byteSource.length);
|
|
266
|
-
retPos = strLeftB.length;
|
|
267
|
-
if (!isAdvance && retPos > 0 && strLeftB.charCodeAt(retPos - 1) === 32 && strDest.charCodeAt(retPos - 1) !== 32) {
|
|
268
|
-
retPos = retPos - 1;
|
|
269
|
-
}
|
|
270
|
-
return retPos;
|
|
271
|
-
}
|
|
272
|
-
static getMinLenPicture(str, picture) {
|
|
273
|
-
let len = 0;
|
|
274
|
-
if (UtilStrByteMode.lenB(picture) - UtilStrByteMode.lenB(str) > 0) {
|
|
275
|
-
len = UtilStrByteMode.convPos(str, picture, str.length, false);
|
|
276
|
-
}
|
|
277
|
-
else
|
|
278
|
-
len = picture.length;
|
|
279
|
-
return len;
|
|
280
|
-
}
|
|
281
|
-
static strcmp(str1, str2) {
|
|
282
|
-
let array1 = UtilStrByteMode.Encoding.GetBytes(str1);
|
|
283
|
-
let array2 = UtilStrByteMode.Encoding.GetBytes(str2);
|
|
284
|
-
for (let i = 0; i < array1.length && i < array2.length; i++) {
|
|
285
|
-
if (array1[i] > array2[i]) {
|
|
286
|
-
return 1;
|
|
287
|
-
}
|
|
288
|
-
else if (array1[i] < array2[i]) {
|
|
289
|
-
return -1;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
if (array1.length > array2.length)
|
|
293
|
-
return 1;
|
|
294
|
-
if (array1.length < array2.length)
|
|
295
|
-
return -1;
|
|
296
|
-
else
|
|
297
|
-
return 0;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbFN0ckJ5dGVNb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL1V0aWxTdHJCeXRlTW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE1BQU0sT0FBTyxlQUFlO0lBQ25CLE1BQU0sQ0FBQyxRQUFRLEdBQWEsUUFBUSxDQUFDLElBQUksQ0FBQztJQUVqRCxNQUFNLENBQUMsZ0JBQWdCLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDcEQsTUFBTSxDQUFDLGtCQUFrQixHQUFZLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsTUFBTSxDQUFDLGtCQUFrQixHQUFZLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsTUFBTSxDQUFDLGtCQUFrQixHQUFZLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFTL0YsTUFBTSxDQUFDLG1CQUFtQjtRQUN4QixPQUFPLGVBQWUsQ0FBQyxrQkFBa0IsSUFBSSxlQUFlLENBQUMsa0JBQWtCLElBQUksZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQ3hILENBQUM7SUFRRCxNQUFNLENBQUMsa0JBQWtCO1FBQ3ZCLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFRRCxNQUFNLENBQUMsa0JBQWtCO1FBQ3ZCLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBUztRQUNoQyxPQUFPLENBQUMsS0FBSyxJQUFXLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFRLElBQUksQ0FBQyxJQUFJLElBQVcs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QUFDLEVBQUUsRUFBRTtZQUNuRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQ0ksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7U0FDRjtRQUVILElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTTtZQUMvQixPQUFPLENBQUMsQ0FBQztRQUVYLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTTtZQUMvQixPQUFPLENBQUMsQ0FBQyxDQUFDOztZQUVWLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8c3VtbWFyeT5KUE46IERCQ1Mgc3VwcG9ydFxyXG4vLy8gVXRpbGl0eSBDbGFzcyBmb3IgU3RyaW5nXHJcbi8vLyBJbiB0aGlzIGNsYXNzLCBjb25zaWRlcmluZyBEQkNTLCBzdHJpbmdzIGFyZSBjb3VudGVkIGJ5IHRoZSBudW1iZXJcclxuLy8vIG9mIGJ5dGVzLCBub3QgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG4vLy8gPGF1dGhvcj4gIFRvc2hpcm8gTmFrYXlvc2hpIChNU0opIDwvYXV0aG9yPlxyXG5pbXBvcnQge0VuY29kaW5nLCBTdHJpbmdCdWlsZGVyfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBVdGlsU3RyQnl0ZU1vZGUgIHtcclxuICBwdWJsaWMgc3RhdGljIEVuY29kaW5nOiBFbmNvZGluZyA9IEVuY29kaW5nLlVURjg7XHJcbiAgICAvLyBUT0RPIDogbmVlZCB0byBjaGVjayB3aGF0IHRvIGRvIHdpdGggQ3VsdHVyZUluZm9cclxuICBzdGF0aWMgc3RyTmF2aWdhdG9yTGFuZzogc3RyaW5nID0gd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZTtcclxuICBwcml2YXRlIHN0YXRpYyBfYkxvY2FsZURlZkxhbmdKUE46IGJvb2xlYW4gPSBVdGlsU3RyQnl0ZU1vZGUuc3RyTmF2aWdhdG9yTGFuZy5zdGFydHNXaXRoKCdqYScpO1xyXG4gIHByaXZhdGUgc3RhdGljIF9iTG9jYWxlRGVmTGFuZ0NITjogYm9vbGVhbiA9IFV0aWxTdHJCeXRlTW9kZS5zdHJOYXZpZ2F0b3JMYW5nLnN0YXJ0c1dpdGgoJ3poJyk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2JMb2NhbGVEZWZMYW5nS09SOiBib29sZWFuID0gVXRpbFN0ckJ5dGVNb2RlLnN0ck5hdmlnYXRvckxhbmcuc3RhcnRzV2l0aCgna28nKTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3MgdGhlIGVudmlyb25tZW50IHdoZXRoZXIgaXQgaXMgcnVubmluZyBvbiBEQkNTIGVudmlyb25tZW50XHJcbiAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBMb2NhbGUgaXNcclxuICAvLy8gREJDUyBsYW5ndWFnZSAoaW4gbm9uLVVuaWNvZGUgZW5jb2RpbmcpLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIERCQ1MsIG9yIGZhbHNlIGlmIFNCQ1NcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpc0xvY2FsZURlZkxhbmdEQkNTKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFV0aWxTdHJCeXRlTW9kZS5fYkxvY2FsZURlZkxhbmdKUE4gfHwgVXRpbFN0ckJ5dGVNb2RlLl9iTG9jYWxlRGVmTGFuZ0NITiB8fCBVdGlsU3RyQnl0ZU1vZGUuX2JMb2NhbGVEZWZMYW5nS09SO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3Mgd2hldGhlciB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBMb2NhbGVcclxuICAvLy8gaXMgSkFQQU5FU0UuXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgaWYgSkFQQU5FU0UsIG9yIGZhbHNlIGlmIG5vdFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGlzTG9jYWxlRGVmTGFuZ0pQTigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBVdGlsU3RyQnl0ZU1vZGUuX2JMb2NhbGVEZWZMYW5nSlBOO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3Mgd2hldGhlciB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBMb2NhbGVcclxuICAvLy8gaXMgS09SRUFOLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIEtPUkVBTiwgb3IgZmFsc2UgaWYgbm90XHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgaXNMb2NhbGVEZWZMYW5nS09SKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFV0aWxTdHJCeXRlTW9kZS5fYkxvY2FsZURlZkxhbmdLT1I7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNLb3JlYW5DaGFyYWN0ZXIoYzogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKDQ0MDMyIDw9IC8qJ+qwgCcqL2MgJiYgYyA8PSA1NTIwMy8qJ+2eoycqLykgfHwgKDQzNTIgPD0gLyon4YSAJyovYyAmJiBjIDw9IDQ2MDcvKifhh78nKi8pIHx8ICgxMjU5MiA8PSAvKifjhLAnKi9jICYmIGMgPD0gMTI2ODcvKifjho8nKi8pIHx8ICg0MzM2MCA8PSAvKifqpaAnKi9jICYmIGMgPD0gNDMzOTEvKifqpb8nKi8pIHx8ICg1NTIxNiA8PSAvKiftnrAnKi9jICYmIGMgPD0gNTUyOTUvKiftn78nKi8pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBMZW5ndGggb2YgU3RyaW5nXHJcbiAgLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyAoaW4gZGVmYXVsdCBlbmNvZGluZykuXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJWYWw6XCI+c3RyaW5nIChpbiBVbmljb2RlKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIG51bWJlciBvZiBieXRlcyAoaW4gZGVmYXVsdCBlbmNvZGluZylcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogbGVuQihcImFiWFljXCIpXHJcbiAgLy8vIFdoZXJlICdhJywgJ2InIGFuZCAgJ2MnIGFyZSBTQkNTLCBhbmQgJ1gnIGFuZCAnWScgYXJlIERCQ1MsIGl0IHJldHVybnNcclxuICAvLy8gNy5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBsZW5CKHN0clZhbDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIC8vIGNvbnZlcnQgdG8gYnl0ZVtdIGJ5IGRlZmF1bHQtZW5jb2RpbmdcclxuICAgIHJldHVybiBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcuR2V0Qnl0ZUNvdW50KHN0clZhbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFN1YnN0cmluZyBvZiBTdHJpbmdcclxuICAvLy8gRXh0cmFjdHMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgKGEgc3Vic3RyaW5nKSBmcm9tIGEgc3RyaW5nLlxyXG4gIC8vLyBJZiBhIERCQ1MgY2hhcmFjdGVyIGlzIGRpdmlkZWQgaW4gdHdvLCBpdCB3aWxsIGJlIHJlcGxhY2UgdG8gYSBzcGFjZS5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clZhbDpcIj5zdHJpbmcgKGluIFVuaWNvZGUpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2ZzOlwiPnN0YXJ0aW5nIHBvc2l0aW9uIChieXRlKSBvZiB0aGUgc3Vic3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPm51bWJlciBvZiBieXRlcyB0byBiZSBleHRyYWN0ZWQgKGkuZS4gYnl0ZXMgb2Ygc3Vic3RyaW5nKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gc3Vic3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IG1pZEIoXCJhYlhZY1wiLCAyLCA0KVxyXG4gIC8vLyBXaGVyZSAnYScsICdiJyBhbmQgICdjJyBhcmUgU0JDUywgYW5kICdYJyBhbmQgJ1knIGFyZSBEQkNTLCBpdCByZXR1cm5zXHJcbiAgLy8vIFwiYlggXCIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgbWlkQihzdHJWYWw6IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBpbnRWYWxpZE1heEluZGV4OiBudW1iZXIgPSAtMTsgLy8gcGFyYW0gIzEgb2Ygc3Vic3RyaW5nXHJcbiAgICBsZXQgaW50VmFsaWRNaW5JbmRleDogbnVtYmVyID0gLTE7IC8vIHBhcmFtICMyIG9mIHN1YnN0cmluZ1xyXG4gICAgbGV0IGJIZWFkU3BhY2U6IGJvb2xlYW4gPSBmYWxzZTsgICAvLyBmbGFnOiBuZWVkIHRvIGFkZCBzcGFjZVxyXG4gICAgbGV0IGJFbmRTcGFjZTogYm9vbGVhbiA9IGZhbHNlOyAgICAvLyBmbGFnOiBuZWVkIHRvIGFkZCBzcGFjZVxyXG5cclxuICAgIGxldCBzdHJSZXQ6IHN0cmluZztcclxuXHJcbiAgICAvLyBjaGVjayBhbmQgbW9kaWZ5IG9mcyAmIGxlblxyXG4gICAgaWYgKGxlbiA8PSAwKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICBpZiAob2ZzIDw9IDApIHtcclxuICAgICAgb2ZzID0gMDtcclxuICAgICAgaW50VmFsaWRNaW5JbmRleCA9IDA7XHJcbiAgICAgIGJIZWFkU3BhY2UgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaW50Qnl0ZUxlbmd0aDogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVmFsKTtcclxuXHJcbiAgICBpZiAoaW50Qnl0ZUxlbmd0aCA8IG9mcylcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgbGV0IExlbk1heDogbnVtYmVyID0gaW50Qnl0ZUxlbmd0aCAtIG9mcztcclxuICAgIGlmIChMZW5NYXggPCBsZW4pXHJcbiAgICAgIGxlbiA9IExlbk1heDtcclxuXHJcbiAgICAvLyBzZXQgTWluSW5kZXggYW5kIE1heEluZGV4IGZvciBzdWJzdHJpbmdcclxuICAgIGludEJ5dGVMZW5ndGggPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGludEluZGV4OiBudW1iZXIgPSAwOyBpbnRJbmRleCA8IHN0clZhbC5sZW5ndGg7IGludEluZGV4ID0gaW50SW5kZXggKyAxKSB7XHJcbiAgICAgIGxldCBzOiBzdHJpbmcgPSBzdHJWYWwuc3Vic3RyKGludEluZGV4LCAxKTtcclxuICAgICAgaW50Qnl0ZUxlbmd0aCA9IGludEJ5dGVMZW5ndGggKyBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcuR2V0Qnl0ZUNvdW50KHMpO1xyXG5cclxuICAgICAgaWYgKGludFZhbGlkTWluSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgaWYgKGludEJ5dGVMZW5ndGggPT09IG9mcykge1xyXG4gICAgICAgICAgaW50VmFsaWRNaW5JbmRleCA9IGludEluZGV4ICsgMTtcclxuICAgICAgICAgIGJIZWFkU3BhY2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW50Qnl0ZUxlbmd0aCA+IG9mcykge1xyXG4gICAgICAgICAgaW50VmFsaWRNaW5JbmRleCA9IGludEluZGV4ICsgMTtcclxuICAgICAgICAgIGJIZWFkU3BhY2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGludFZhbGlkTWF4SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgaWYgKGludEJ5dGVMZW5ndGggPT09IG9mcyArIGxlbikge1xyXG4gICAgICAgICAgaW50VmFsaWRNYXhJbmRleCA9IGludEluZGV4O1xyXG4gICAgICAgICAgYkVuZFNwYWNlID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW50Qnl0ZUxlbmd0aCA+IG9mcyArIGxlbikge1xyXG4gICAgICAgICAgaW50VmFsaWRNYXhJbmRleCA9IGludEluZGV4IC0gMTtcclxuICAgICAgICAgIGJFbmRTcGFjZSA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBwcmVwYXJlIGZvciBzdWJzdHJpbmdcclxuICAgIGxldCBzdHJidWZBZGRpbmdCdWY6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihsZW4pO1xyXG5cclxuICAgIC8vIGV4ZWN1dGUgTWlkXHJcbiAgICBpZiAoYkhlYWRTcGFjZSkge1xyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGludFZhbGlkTWluSW5kZXggPD0gaW50VmFsaWRNYXhJbmRleCkge1xyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKHN0clZhbC5zdWJzdHIoaW50VmFsaWRNaW5JbmRleCwgaW50VmFsaWRNYXhJbmRleCArIDEgLSBpbnRWYWxpZE1pbkluZGV4KSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJFbmRTcGFjZSkge1xyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RyUmV0ID0gc3RyYnVmQWRkaW5nQnVmLlRvU3RyaW5nKCk7XHJcbiAgICBzdHJidWZBZGRpbmdCdWYgPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBzdHJSZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEdldCBDaGFyYWN0ZXJzIGZyb20gTGVmdCBvZiBTdHJpbmdcclxuICAvLy8gUmV0dXJucyBhIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIGEgc3RyaW5nLlxyXG4gIC8vLyBJZiBhIERCQ1MgY2hhcmFjdGVyIGlzIGRpdmlkZWQgaW4gdHdvLCBpdCB3aWxsIGJlIHJlcGxhY2UgdG8gYSBzcGFjZS5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clZhbDpcIj5zdHJpbmcgKGluIFVuaWNvZGUpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPm51bWJlciBvZiBieXRlcyB0byBiZSByZXR1cmVkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IGxlZnRCKFwiYWJYWWNcIiwgNClcclxuICAvLy8gV2hlcmUgJ2EnLCAnYicgYW5kICAnYycgYXJlIFNCQ1MsIGFuZCAnWCcgYW5kICdZJyBhcmUgREJDUywgaXQgcmV0dXJuc1xyXG4gIC8vLyBcImFiWFwiLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGxlZnRCKHN0clZhbDogc3RyaW5nLCBsZW46IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbFN0ckJ5dGVNb2RlLm1pZEIoc3RyVmFsLCAwLCBsZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBHZXQgQ2hhcmFjdGVycyBmcm9tIFJpZ2h0IG9mIFN0cmluZ1xyXG4gIC8vLyBSZXR1cm5zIGEgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSByaWdodCBzaWRlIG9mIGEgc3RyaW5nLlxyXG4gIC8vLyBJZiBhIERCQ1MgY2hhcmFjdGVyIGlzIGRpdmlkZWQgaW4gdHdvLCBpdCB3aWxsIGJlIHJlcGxhY2UgdG8gYSBzcGFjZS5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clZhbDpcIj5zdHJpbmcgKGluIFVuaWNvZGUpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPm51bWJlciBvZiBieXRlcyB0byBiZSByZXR1cmVkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IHJpZ2h0QihcImFiWFljXCIsIDQpXHJcbiAgLy8vIFdoZXJlICdhJywgJ2InIGFuZCAgJ2MnIGFyZSBTQkNTLCBhbmQgJ1gnIGFuZCAnWScgYXJlIERCQ1MsIGl0IHJldHVybnNcclxuICAvLy8gXCIgWWNcIi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyByaWdodEIoc3RyVmFsOiBzdHJpbmcsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBieXRlRmxkc1ZhbExlbjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVmFsKTtcclxuXHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgbGV0IG9mczogbnVtYmVyID0gYnl0ZUZsZHNWYWxMZW4gLSBsZW47XHJcbiAgICBpZiAob2ZzIDwgMCkge1xyXG4gICAgICBvZnMgPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFV0aWxTdHJCeXRlTW9kZS5taWRCKHN0clZhbCwgb2ZzLCBsZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBJbnNlcnQgU3RyaW5nXHJcbiAgLy8vIEluc2VydHMgb25lIHN0cmluZyBpbnRvIGFub3RoZXIuXHJcbiAgLy8vIElmIGEgREJDUyBjaGFyYWN0ZXIgaXMgZGl2aWRlZCBpbiB0d28sIGl0IHdpbGwgYmUgcmVwbGFjZSB0byBhIHNwYWNlLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVGFyZ2V0OlwiPkEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgdGFyZ2V0IHN0cmluZy5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJTb3VyY2U6XCI+QSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzb3VyY2Ugc3RyaW5nLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mczpcIj5BIG51bWJlciB0aGF0IHJlcHJlc2VudHMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIChieXRlKSBpblxyXG4gIC8vLyB0aGUgdGFyZ2V0LlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlbjpcIj5BIG51bWJlciB0aGF0IHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZVxyXG4gIC8vLyBzb3VyY2UgdGhhdCB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlIHRhcmdldC5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG91dHB1dCBzdHJpbmdcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogaW5zQihcImFiWFljXCIsIFwiZGVcIiwgNCwgMSlcclxuICAvLy8gV2hlcmUgJ2EnLCAnYicsICdjJywgJ2QnIGFuZCAnZScgYXJlIFNCQ1MsIGFuZCAnWCcgYW5kICdZJyBhcmUgREJDUyxcclxuICAvLy8gaXQgcmV0dXJucyBcImFiIGQgWWNcIi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpbnNCKHN0clRhcmdldDogc3RyaW5nLCBzdHJTb3VyY2U6IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAob2ZzIDwgMCkge1xyXG4gICAgICBvZnMgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChvZnMgPj0gMSkge1xyXG4gICAgICAgIG9mcyA9IG9mcyAtIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgbGV0IGludFRhcmdldExlbkI6IG51bWJlciA9IFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0clRhcmdldCk7XHJcbiAgICBsZXQgaW50U291cmNlTGVuQjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyU291cmNlKTtcclxuICAgIGxldCBzdHJidWZSZXRWYWw6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihvZnMgKyBsZW4pO1xyXG5cclxuICAgIHN0cmJ1ZlJldFZhbC5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0clRhcmdldCwgb2ZzKSk7XHJcbiAgICBmb3IgKGxldCBpbnRBZGRTcGFjZUxlbjogbnVtYmVyID0gb2ZzIC0gaW50VGFyZ2V0TGVuQjsgaW50QWRkU3BhY2VMZW4gPiAwOyBpbnRBZGRTcGFjZUxlbiA9IGludEFkZFNwYWNlTGVuIC0gMSkge1xyXG4gICAgICBzdHJidWZSZXRWYWwuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcbiAgICBzdHJidWZSZXRWYWwuQXBwZW5kKFV0aWxTdHJCeXRlTW9kZS5sZWZ0QihzdHJTb3VyY2UsIGxlbikpO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gbGVuIC0gaW50U291cmNlTGVuQjsgaSA+IDA7IGkgPSBpIC0gMSkge1xyXG4gICAgICBzdHJidWZSZXRWYWwuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcbiAgICBzdHJidWZSZXRWYWwuQXBwZW5kKFV0aWxTdHJCeXRlTW9kZS5yaWdodEIoc3RyVGFyZ2V0LCBpbnRUYXJnZXRMZW5CIC0gb2ZzKSk7XHJcbiAgICByZXR1cm4gc3RyYnVmUmV0VmFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IERlbGV0ZSBDaGFyYWN0ZXJzXHJcbiAgLy8vIERlbGV0ZSBjaGFyYWN0ZXJzIGZyb20gYSBzdHJpbmcuXHJcbiAgLy8vIElmIGEgREJDUyBjaGFyYWN0ZXIgaXMgZGl2aWRlZCBpbiB0d28sIGl0IHdpbGwgYmUgcmVwbGFjZSB0byBhIHNwYWNlLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVmFsOlwiPnN0cmluZyAoaW4gVW5pY29kZSlcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvZnM6XCI+VGhlIHBvc2l0aW9uIChieXRlKSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIGJlIGRlbGV0ZWQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPlRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBiZSBkZWxldGVkLCBiZWdpbm5pbmcgd2l0aFxyXG4gIC8vLyBwb3NpdGlvbiBzdGFydCBhbmQgcHJvY2VlZGluZyByaWdodHdhcmQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IGRlbEIoXCJhYlhZY1wiLCAyLCA0KVxyXG4gIC8vLyBXaGVyZSAnYScsICdiJyBhbmQgICdjJyBhcmUgU0JDUywgYW5kICdYJyBhbmQgJ1knIGFyZSBEQkNTLCBpdCByZXR1cm5zXHJcbiAgLy8vIFwiYSBjXCIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgZGVsQihzdHJWYWw6IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAob2ZzIDwgMCkge1xyXG4gICAgICBvZnMgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICggb2ZzID49IDEpIHtcclxuICAgICAgICBvZnMgPSBvZnMgLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaW50VmFsTGVuQjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVmFsKTtcclxuICAgIGlmIChvZnMgKyBsZW4gPiBpbnRWYWxMZW5CKSB7XHJcbiAgICAgIGxlbiA9IGludFZhbExlbkIgLSBvZnM7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyUmV0OiBzdHJpbmc7XHJcbiAgICBpZiAobGVuIDw9IDApIHtcclxuICAgICAgc3RyUmV0ID0gc3RyVmFsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBpbnRSaWdodFNpZGVMZW5COiBudW1iZXIgPSBpbnRWYWxMZW5CIC0gb2ZzIC0gbGVuO1xyXG4gICAgICBpZiAoaW50UmlnaHRTaWRlTGVuQiA8IDApIHtcclxuICAgICAgICBzdHJSZXQgPSBzdHJWYWw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHN0cmJ1ZlJldFZhbDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKG9mcyArIGludFJpZ2h0U2lkZUxlbkIpO1xyXG4gICAgICAgIHN0cmJ1ZlJldFZhbC5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0clZhbCwgb2ZzKSk7XHJcbiAgICAgICAgc3RyYnVmUmV0VmFsLkFwcGVuZChVdGlsU3RyQnl0ZU1vZGUucmlnaHRCKHN0clZhbCwgaW50UmlnaHRTaWRlTGVuQikpO1xyXG4gICAgICAgIHN0clJldCA9IHN0cmJ1ZlJldFZhbC5Ub1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyUmV0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBJbi1TdHJpbmcgU2VhcmNoXHJcbiAgLy8vIFJldHVybnMgYSBudW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBmaXJzdCBwb3NpdGlvbiAoYnl0ZSkgb2YgYVxyXG4gIC8vLyBzdWJzdHJpbmcgd2l0aGluIGEgc3RyaW5nLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVGFyZ2V0OlwiPnN0cmluZyAoaW4gVW5pY29kZSlcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJTZWFyY2g6XCI+c3RyaW5nIHdoaWNoIHdpbGwgYmUgdGhlIHNlYXJjaCBhcmd1bWVudCBpbiBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG51bWJlciwgMCBpZiBub3QgZm91bmRcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogaW5zdHJCKFwiYWJYWWNcIiwgXCJZXCIpXHJcbiAgLy8vIFdoZXJlICdhJywgJ2InIGFuZCAgJ2MnIGFyZSBTQkNTLCBhbmQgJ1gnIGFuZCAnWScgYXJlIERCQ1MsIGl0IHJldHVybnNcclxuICAvLy8gNS5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpbnN0ckIoc3RyVGFyZ2V0OiBzdHJpbmcsIHN0clNlYXJjaDogc3RyaW5nKTogbnVtYmVyIHtcclxuXHJcbiAgICBpZiAoc3RyU2VhcmNoLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAvLyBub3RoaW5nIHRvIGxvb2sgZm9yXHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvZnM6IG51bWJlciA9IHN0clRhcmdldC5pbmRleE9mKHN0clNlYXJjaCk7XHJcblxyXG4gICAgaWYgKG9mcyA8IDApIHtcclxuICAgICAgLy8gbm90IGZvdW5kXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVGFyZ2V0LnN1YnN0cigwLCBvZnMpKSArIDE7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFJlcGxhY2UgU3Vic3RyaW5nIFdpdGhpbiBhIFN0cmluZyAoQnl0ZSBNb2RlKVxyXG4gIC8vLyBSZXBsYWNlcyBhIHN1YnN0cmluZyB3aXRoaW4gYSBzdHJpbmcgd2l0aCBhbm90aGVyIHN1YnN0cmluZy5cclxuICAvLy8gSWYgYSBEQkNTIGNoYXJhY3RlciBpcyBkaXZpZGVkIGluIHR3bywgaXQgd2lsbCBiZSByZXBsYWNlIHRvIGEgc3BhY2UuXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJUYXJnZXQ6XCI+dGFyZ2V0IHN0cmluZyB3aGVyZSB0aGUgcmVwbGFjZW1lbnQgd2lsbCB0YWtlIHBsYWNlLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0ck9yaWdpbjpcIj5zdHJpbmcgdGhhdCBwcm92aWRlcyB0aGUgc3Vic3RyaW5nIHRvIGJlIGNvcGllZCB0b1xyXG4gIC8vLyB0YXJnZXQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2ZzOlwiPnRoZSBmaXJzdCBwb3NpdGlvbiAoYnl0ZSkgaW4gdGhlIHRhcmdldCBzdHJpbmcgdGhhdCB3aWxsXHJcbiAgLy8vIHJlY2VpdmUgdGhlIHN1YnN0cmluZyBmcm9tIG9yaWdpbi5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW46XCI+dGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdpbGwgYmUgbW92ZWQgZnJvbSBvcmlnaW4gdG9cclxuICAvLy8gdGFyZ2V0LCBzdGFydGluZyBmcm9tIHRoZSBsZWZ0bW9zdCBjaGFyYWN0ZXIgb2Ygb3JpZ2luLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gc3RyaW5nIGNvbnRhaW5pbmcgbW9kaWZpZWQgdGFyZ2V0IHN0cmluZ1xyXG4gIC8vL1xyXG4gIC8vLyBFeGFtcGxlOiByZXBCKFwiYWJYWWNcIiwgXCJkZVwiLCA0LCAyKVxyXG4gIC8vLyBXaGVyZSAnYScsICdiJywgJ2MnLCAnZCcgYW5kICdlJyBhcmUgU0JDUywgYW5kICdYJyBhbmQgJ1knIGFyZSBEQkNTLFxyXG4gIC8vLyBpdCByZXR1cm5zIFwiYWIgZGUgY1wiLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIHJlcEIoc3RyVGFyZ2V0OiBzdHJpbmcsIHN0ck9yaWdpbjogc3RyaW5nLCBvZnM6IG51bWJlciwgbGVuOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmJ1ZkFkZGluZ0J1ZjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcblxyXG4gICAgaWYgKG9mcyA8IDApIHtcclxuICAgICAgb2ZzID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAob2ZzID49IDEpIHtcclxuICAgICAgICBvZnMgPSBvZnMgLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZChVdGlsU3RyQnl0ZU1vZGUubGVmdEIoc3RyVGFyZ2V0LCBvZnMpKTtcclxuXHJcbiAgICBsZXQgaW50QWRkU3BhY2VMZW46IG51bWJlciA9IG9mcyAtIFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0clRhcmdldCk7XHJcbiAgICBmb3IgKDsgaW50QWRkU3BhY2VMZW4gPiAwOyBpbnRBZGRTcGFjZUxlbi0tKVxyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKCcgJyk7XHJcblxyXG5cclxuICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0ck9yaWdpbiwgbGVuKSk7XHJcblxyXG4gICAgbGV0IGludFJpZ2h0TGVuOiBudW1iZXIgPSBVdGlsU3RyQnl0ZU1vZGUubGVuQihzdHJUYXJnZXQpIC0gKG9mcyArIGxlbik7XHJcbiAgICBpZiAoaW50UmlnaHRMZW4gPiAwKSB7XHJcbiAgICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLnJpZ2h0QihzdHJUYXJnZXQsIGludFJpZ2h0TGVuKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIGJsYW5rcyB0byB0aGUgZW5kXHJcbiAgICBpbnRBZGRTcGFjZUxlbiA9IGxlbiAtIFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0ck9yaWdpbik7XHJcbiAgICBmb3IgKDsgaW50QWRkU3BhY2VMZW4gPiAwOyBpbnRBZGRTcGFjZUxlbi0tKSB7XHJcbiAgICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoJyAnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyYnVmQWRkaW5nQnVmLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFJlcGxhY2UgU3Vic3RyaW5nIFdpdGhpbiBhIFN0cmluZyAoQ2hhcmFjdGVyIE1vZGUpXHJcbiAgLy8vIFJlcGxhY2VzIGEgc3Vic3RyaW5nIHdpdGhpbiBhIHN0cmluZyB3aXRoIGFub3RoZXIgc3Vic3RyaW5nLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVGFyZ2V0OlwiPnRhcmdldCBzdHJpbmcgd2hlcmUgdGhlIHJlcGxhY2VtZW50IHdpbGwgdGFrZSBwbGFjZS5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJPcmlnaW46XCI+c3RyaW5nIHRoYXQgcHJvdmlkZXMgdGhlIHN1YnN0cmluZyB0byBiZSBjb3BpZWQgdG9cclxuICAvLy8gdGFyZ2V0LlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mczpcIj50aGUgZmlyc3QgcG9zaXRpb24gKGNoYXJhY3RlcikgaW4gdGhlIHRhcmdldCBzdHJpbmcgdGhhdFxyXG4gIC8vLyB3aWxsIHJlY2VpdmUgdGhlIHN1YnN0cmluZyBmcm9tIG9yaWdpbi5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW46XCI+dGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBiZSBtb3ZlZCBmcm9tIG9yaWdpblxyXG4gIC8vLyB0byB0YXJnZXQsIHN0YXJ0aW5nIGZyb20gdGhlIGxlZnRtb3N0IGNoYXJhY3RlciBvZiBvcmlnaW4uXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBzdHJpbmcgY29udGFpbmluZyBtb2RpZmllZCB0YXJnZXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IHJlcEIoXCJhYlhZY1wiLCBcImRlXCIsIDQsIDIpXHJcbiAgLy8vIFdoZXRoZXIgZWFjaCBjaGFyYWN0ZXIgaXMgU0JDUyBvciBEQkNTLCBpdCByZXR1cm5zIFwiYWJYZGVcIi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyByZXBDKHN0clRhcmdldDogc3RyaW5nLCBzdHJPcmlnaW46IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHJidWZBZGRpbmdCdWY6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgaWYgKG9mcyA8IDApIHtcclxuICAgICAgb2ZzID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAob2ZzID49IDEpIHtcclxuICAgICAgICBvZnMgPSBvZnMgLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZChzdHJUYXJnZXQuc3Vic3RyKDAsIG9mcykpO1xyXG5cclxuICAgIC8vIGFkZCBibGFua3MgYmV0d2VlbiBzdHJUYXJnZXQgYW5kIHN0ck9yaWdpblxyXG4gICAgbGV0IGludEFkZFNwYWNlTGVuOiBudW1iZXIgPSBvZnMgLSBzdHJUYXJnZXQubGVuZ3RoO1xyXG4gICAgZm9yICg7IGludEFkZFNwYWNlTGVuID4gMDsgaW50QWRkU3BhY2VMZW4tLSlcclxuICAgICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZCgnICcpO1xyXG5cclxuICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoc3RyT3JpZ2luLnN1YnN0cigwLCBsZW4pKTtcclxuXHJcbiAgICBsZXQgaW50UmlnaHRMZW46IG51bWJlciA9IHN0clRhcmdldC5sZW5ndGggLSAob2ZzICsgbGVuKTtcclxuXHJcbiAgICBpZiAoaW50UmlnaHRMZW4gPiAwKSB7XHJcbiAgICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoc3RyVGFyZ2V0LnN1YnN0cihvZnMgKyBsZW4pKTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IGxlbiAtIHN0ck9yaWdpbi5sZW5ndGg7IGkgPiAwOyBpID0gaSAtIDEpIHtcclxuICAgICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZCgnICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cmJ1ZkFkZGluZ0J1Zi5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3Mgd2hldGhlciBhIGNoYXJhY3RlciBpcyAxIGJ5dGUgKGhhbGZ3aWR0aCkgb3Igbm90IChmdWxsd2lkdGgpXHJcbiAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIGJ5IDEgYnl0ZSBpbiBub24tVW5pY29kZVxyXG4gIC8vLyBlbmNvZGluZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxldHRlcjpcIj5hIGNoYXJhY3RlciB0byBiZSBjaGVja2VkLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIGhhbGZ3aWR0aCAoU0JDUyksIG9yIGZhbHNlIGlmIGl0IGlzXHJcbiAgLy8vIGZ1bGx3aWR0aCAoREJDUykuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgaXNIYWxmV2lkdGgoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHJcbiAgICBsZXQgbGV0dGVyOiBudW1iZXIgPSBzdHIuY2hhckNvZGVBdCgwKTtcclxuICAgIGlmICgzMiA8PSAvKicgJyovbGV0dGVyICYmIGxldHRlciA8PSAxMjYvKid+JyovKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGxlbjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyKTtcclxuICAgICAgaWYgKGxlbiA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQ2hlY2tzIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgaGFsZndpZHRoIGRpZ2l0IGxldHRlclxyXG4gIC8vLyBEbyBub3QgdXNlIFwiQ2hhcmFjdGVyLmlzRGlnaXRcIiB3aGljaCBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlblxyXG4gIC8vLyBoYWxmd2lkdGggZGlnaXQgbGV0dGVyKFNCQ1MpIGFuZCBmdWxsd2lkdGggZGlmaXQgbGV0dGVyKERCQ1MpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGV0dGVyOlwiPmEgY2hhcmFjdGVyIHRvIGJlIGNoZWNrZWQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMgaGFsZndpZHRoIGRpZ2l0IGxldHRlciwgb3JcclxuICAvLy8gZmFsc2UgaWYgaXQgaXMgREJDUyBvciBub3QgZGlnaXQgbGV0dGVyLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGlzRGlnaXQobGV0dGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiA0OCA8PSAvKicwJyovbGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgbGV0dGVyLmNoYXJDb2RlQXQoMCkgPD0gNTcvKic5JyovO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PkNoZWNrcyB3aGV0aGVyIGEgY2hhcmFjdGVyIGlzIG9uZSBvZiB0aG9zZSBzdXBwb3J0ZWQgZm9yICMgQWxwaGEgTWFzazwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZXR0ZXI6XCI+YSBjaGFyYWN0ZXIgdG8gYmUgY2hlY2tlZC5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBoYWxmd2lkdGggZGlnaXQgbGV0dGVyLCBvclxyXG4gIC8vLyBmYWxzZSBpZiBpdCBpcyBEQkNTIG9yIG5vdCBkaWdpdCBsZXR0ZXIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgYXNOdW1lcmljKGxldHRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xyXG4gICAgc3dpdGNoIChsZXR0ZXIuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICBjYXNlIDQyOi8qJyonKi9cclxuICAgICAgY2FzZSA0MzovKicrJyovXHJcbiAgICAgIGNhc2UgNDQ6LyonLCcqL1xyXG4gICAgICBjYXNlIDQ1Oi8qJy0nKi9cclxuICAgICAgY2FzZSA0NjovKicuJyovXHJcbiAgICAgIGNhc2UgNDc6LyonLycqL1xyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDb252ZXJ0cyBhIHBvc2l0aW9uIGZvciB0aGUgMXN0IHN0cmluZyAoU291cmNlKSB0byBhIHBvc2l0aW9uIGZvclxyXG4gIC8vLyB0aGUgMm5kIHN0cmluZyAoRGVzdCkuXHJcbiAgLy8vIElmIGEgZG91YmxlIGJ5dGUgY2hhcmFjdGVyIGV4aXN0cyBpbiB0aGUgc3RyaW5ncywgdGhlIHBvc2l0aW9uIGZvciB0aGVcclxuICAvLy8gU291cmNlIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBwb3NpdGlvbiBmb3IgdGhlIERlc3QuXHJcbiAgLy8vIChEQkNTIFN1cHBvcnQpXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJTb3VyY2U6XCI+U291cmNlIHN0cmluZ1xyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0ckRlc3Q6XCI+RGVzdCBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwb3M6XCI+cG9zaXRpb24gaW4gdGhlIFNvdXJjZSBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc0FkdmFuY2U6XCI+YWR2YW5jZSBvciByZXRyZWF0IHRoZSByZXQgcG9zIGlmIGEgREJDUyBjaGFyIGlzIHNwbGl0XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBwb3NpdGlvbiBpbiB0aGUgRGVzdCBzdHJpbmdcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogY29udlBvcyhcImFiY1laXCIsIFwiWVphYmNcIiwgNClcclxuICAvLy8gSXQgcmV0dXJucyA0LCBpZiB0aGUgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ3MgYXJlIFNCQ1MuXHJcbiAgLy8vXHJcbiAgLy8vIElmICdhJywgJ2InIGFuZCAnYycgYXJlIFNCQ1MsIGFuZCAnWScgYW5kICdaJyBhcmUgREJDUywgaXRcclxuICAvLy8gcmV0dXJucyAzLlxyXG4gIC8vLyBwb3NcclxuICAvLy8gVW5pY29kZSBpbmRleCAgMCAxIDIgIDMgIFs0XVxyXG4gIC8vLyArLS0tLS0tLS0tLS0tLStcclxuICAvLy8gU291cmNlIHN0cmluZyB8YXxifGN8IFkgfCBaIHxcclxuICAvLy8gKy0tLS0tLS0tLS0tLS0rXHJcbiAgLy8vIEFOU0kgaW5kZXggICAgIDAgMSAyIDMgNFs1XTZcclxuICAvLy8gKy0tLS0tLS0tLS0tLS0rXHJcbiAgLy8vIERlc3Qgc3RyaW5nICAgfCBZIHwgWiB8YXxifGN8XHJcbiAgLy8vICstLS0tLS0tLS0tLS0tK1xyXG4gIC8vLyBVbmljb2RlIGluZGV4ICAgMCAgIDEgIDJbM100XHJcbiAgLy8vIHJldFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGNvbnZQb3Moc3RyU291cmNlOiBzdHJpbmcsIHN0ckRlc3Q6IHN0cmluZywgcG9zOiBudW1iZXIsIGlzQWR2YW5jZTogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICBsZXQgcmV0UG9zOiBudW1iZXI7XHJcbiAgICBpZiAocG9zIDwgMClcclxuICAgICAgcmV0dXJuIDA7XHJcblxyXG4gICAgaWYgKHBvcyA+IHN0clNvdXJjZS5sZW5ndGgpXHJcbiAgICAgIHBvcyA9IHN0clNvdXJjZS5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBhZGQgYmxhbmtzIHRvIHRoZSBEZXN0IHN0cmluZyBpZiBpdCBpcyBzaG9ydGVyIHRoYW4gdGhlIFNyYyBzdHJpbmdcclxuICAgICAgbGV0IGRpZmZMZW46IG51bWJlciA9IFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0clNvdXJjZSkgLSBVdGlsU3RyQnl0ZU1vZGUubGVuQihzdHJEZXN0KTtcclxuICAgICAgaWYgKGRpZmZMZW4gPiAwKSB7XHJcbiAgICAgICAgbGV0IHN0cmluZ0J1aWxkZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihzdHJEZXN0KTtcclxuICAgICAgICBmb3IgKDsgZGlmZkxlbiA+IDA7IGRpZmZMZW4tLSlcclxuICAgICAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKCcgJyk7XHJcblxyXG4gICAgICAgIHN0ckRlc3QgPSBzdHJpbmdCdWlsZGVyLlRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBieXRlU291cmNlOiBVaW50OEFycmF5ID0gVXRpbFN0ckJ5dGVNb2RlLkVuY29kaW5nLkdldEJ5dGVzKHN0clNvdXJjZS5zdWJzdHIoMCwgcG9zKSk7XHJcbiAgICAgIGxldCBzdHJMZWZ0Qjogc3RyaW5nID0gVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0ckRlc3QsIGJ5dGVTb3VyY2UubGVuZ3RoKTtcclxuICAgICAgcmV0UG9zID0gc3RyTGVmdEIubGVuZ3RoO1xyXG4gICAgICBpZiAoIWlzQWR2YW5jZSAmJiByZXRQb3MgPiAwICYmIHN0ckxlZnRCLmNoYXJDb2RlQXQocmV0UG9zIC0gMSkgPT09IDMyLyonICcqLyAmJiBzdHJEZXN0LmNoYXJDb2RlQXQocmV0UG9zIC0gMSkgIT09IDMyLyonICcqLykge1xyXG4gICAgICAgIHJldFBvcyA9IHJldFBvcyAtIDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0UG9zO1xyXG4gIH1cclxuICAvLy8gPHN1bW1hcnk+IHJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb2YgcGljdHVyZSB3aGljaCBjb3JyZXNwb25kcyB0b1xyXG4gIC8vLyBnaXZlbiBzdHJpbmcuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHI6XCI+Z2l2ZW4gc3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicGljdHVyZTpcIj5waWN0dXJlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBtaW5pbWFsIGxlbmd0aCBvZiBwaWN0dXJlXHJcbiAgLy8vIEV4YW1wbGU6IGdldE1pbkxlblBpY3R1cmUoXCJaWjIwLzExL1wiLCBcIkpKSkpZWS9NTS9ERFwiKSBbWlogaXMgREJDU11cclxuICAvLy8gSXQgcmV0dXJucyAxMC5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIC8vLyAoREJDUyBTdXBwb3J0KVxyXG4gIHN0YXRpYyBnZXRNaW5MZW5QaWN0dXJlKHN0cjogc3RyaW5nLCBwaWN0dXJlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgbGV0IGxlbjogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAoVXRpbFN0ckJ5dGVNb2RlLmxlbkIocGljdHVyZSkgLSBVdGlsU3RyQnl0ZU1vZGUubGVuQihzdHIpID4gMCkge1xyXG4gICAgICBsZW4gPSBVdGlsU3RyQnl0ZU1vZGUuY29udlBvcyhzdHIsIHBpY3R1cmUsIHN0ci5sZW5ndGgsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgbGVuID0gcGljdHVyZS5sZW5ndGg7XHJcblxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gPC9zdW1tYXJ5PiBDb21wYXJlcyB0d28gc3BlY2lmaWVkIHN0cmluZ3MgaW4gdGhlIERCQ1Mgc29ydCBvcmRlciBhbmQgcmV0dXJucyBhbiBpbnRlZ2VyXHJcbiAgLy8vIHRoYXQgaW5kaWNhdGVzIHRoZWlyIHJlbGF0aXZlIHBvc2l0aW9uLlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0cjE6XCI+VGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0cjI6XCI+VGhlIHNlY29uZCBzdHJpbmcgdG8gY29tcGFyZS5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+YW4gaW50ZWdlciB0aGF0IGluZGljYXRlcyB0aGUgbGV4aWNhbCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdHdvIHN0cmluZ3MuXHJcbiAgLy8vICAtMTogc3RyMSBpcyBsZXNzIHRoYW4gc3RyMi5cclxuICAvLy8gICAwOiBzdHIxIGVxdWFscyBzdHIyLlxyXG4gIC8vLyAgIDE6IHN0cjEgaXMgZ3JlYXRlciB0aGFuIHN0cjIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgc3RyY21wKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBhcnJheTE6IFVpbnQ4QXJyYXkgPSBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcuR2V0Qnl0ZXMoc3RyMSk7XHJcbiAgICBsZXQgYXJyYXkyOiBVaW50OEFycmF5ID0gVXRpbFN0ckJ5dGVNb2RlLkVuY29kaW5nLkdldEJ5dGVzKHN0cjIpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcnJheTEubGVuZ3RoICYmIGkgPCBhcnJheTIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGFycmF5MVtpXSA+IGFycmF5MltpXSkge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGFycmF5MVtpXSA8IGFycmF5MltpXSkge1xyXG4gICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIGlmIChhcnJheTEubGVuZ3RoID4gYXJyYXkyLmxlbmd0aClcclxuICAgICAgcmV0dXJuIDE7XHJcblxyXG4gICAgaWYgKGFycmF5MS5sZW5ndGggPCBhcnJheTIubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiAwO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
export class XMLConstants {
|
|
2
|
-
static MG_TAG_XML = "xml";
|
|
3
|
-
static MG_TAG_XML_END = "/xml";
|
|
4
|
-
static TAG_TERM = "/>";
|
|
5
|
-
static TAG_OPEN = "<";
|
|
6
|
-
static TAG_CLOSE = ">";
|
|
7
|
-
static XML_ATTR_DELIM = "\"";
|
|
8
|
-
static START_TAG = "\n <";
|
|
9
|
-
static END_TAG = "</";
|
|
10
|
-
static XML_TAB = " ";
|
|
11
|
-
static MG_ATTR_ID = "id";
|
|
12
|
-
static MG_TAG_XML_END_TAGGED = XMLConstants.END_TAG + XMLConstants.MG_TAG_XML + XMLConstants.TAG_CLOSE;
|
|
13
|
-
static MG_TAG_OPEN = XMLConstants.TAG_OPEN + XMLConstants.MG_TAG_XML + " " + XMLConstants.MG_ATTR_ID + "=\"MGDATA\">";
|
|
14
|
-
static MG_TAG_TASK = "task";
|
|
15
|
-
static MG_TAG_TASK_END = "/task";
|
|
16
|
-
static MG_TAG_RECOMPUTE = "recompute";
|
|
17
|
-
static MG_ATTR_VB_VIEW_ROWIDX = "db_view_rowidx";
|
|
18
|
-
static MG_ATTR_CONTROL_ISN = "controlIsn";
|
|
19
|
-
static MG_HOR_ALIGMENT_IS_INHERITED = "horizontalAlignmentIsFromSystemDefault";
|
|
20
|
-
static MAX_PATH = 260;
|
|
21
|
-
static FILE_NAME_SIZE = XMLConstants.MAX_PATH + 1;
|
|
22
|
-
static CDATA_START = "<![CDATA[";
|
|
23
|
-
static CDATA_END = "]]>";
|
|
24
|
-
static MG_ATTR_VALUE = "val";
|
|
25
|
-
static MG_ATTR_STUDIO_VALUE = "studioValue";
|
|
26
|
-
static MG_ATTR_NAME = "name";
|
|
27
|
-
static MG_ATTR_TYPE = "type";
|
|
28
|
-
static MG_ATTR_SIZE = "size";
|
|
29
|
-
static MG_ATTR_VAR_NAME = "var_name";
|
|
30
|
-
static MG_ATTR_VAR_DISP_NAME = "var_disp_name";
|
|
31
|
-
static MG_ATTR_VEC_CELLS_SIZE = "vecCellsSize";
|
|
32
|
-
static MG_ATTR_VEC_CELLS_ATTR = "vec_cells_attr";
|
|
33
|
-
static MG_ATTR_VEC_CELLS_CONTENT = "CellContentType";
|
|
34
|
-
static MG_ATTR_NULLVALUE = "nullvalue";
|
|
35
|
-
static MG_ATTR_NULLDISPLAY = "nulldisplay";
|
|
36
|
-
static MG_ATTR_NULLDEFAULT = "nulldefault";
|
|
37
|
-
static MG_ATTR_DB_MODIFIABLE = "db_modifiable";
|
|
38
|
-
static MG_ATTR_DEFAULTVALUE = "defaultvalue";
|
|
39
|
-
static MG_ATTR_NULLALLOWED = "nullallowed";
|
|
40
|
-
static MG_ATTR_BLOB_CONTENT = "ContentType";
|
|
41
|
-
static MG_ATTR_PART_OF_DATAVIEW = "partOfDataview";
|
|
42
|
-
static MG_ATTR_DATA_TYPE = "dataType";
|
|
43
|
-
static MG_ATTR_DATA_CTRL = "data_ctrl";
|
|
44
|
-
static MG_ATTR_LINKED_PARENT = "linked_parent";
|
|
45
|
-
static MG_ATTR_CONTAINER = "container";
|
|
46
|
-
static MG_ATTR_IS_FRAMESET = "isFrameSet";
|
|
47
|
-
static MG_ATTR_IS_LIGAL_RC_FORM = "isLegalRcForm";
|
|
48
|
-
static MG_ATTR_USERSTATE_ID = "userStateId";
|
|
49
|
-
static MG_ATTR_PB_IMAGES_NUMBER = "PBImagesNumber";
|
|
50
|
-
static MG_ATTR_FORM_ISN = "formIsn";
|
|
51
|
-
static MG_ATTR_TASKID = "taskid";
|
|
52
|
-
static MG_ATTR_IS_MODAL = "IsModal";
|
|
53
|
-
static MG_ATTR_TASK_IS_SERIALIZATION_PARTIAL = "isSerializationPartial";
|
|
54
|
-
static MG_ATTR_XML_TRUE = "1";
|
|
55
|
-
static MG_ATTR_XML_FALSE = "0";
|
|
56
|
-
static MG_ATTR_TOOLKIT_PARENT_TASK = "toolkit_parent_task";
|
|
57
|
-
static MG_ATTR_CTL_IDX = "ctl_idx";
|
|
58
|
-
static MG_ATTR_MAINPRG = "mainprg";
|
|
59
|
-
static MG_ATTR_NULL_ARITHMETIC = "nullArithmetic";
|
|
60
|
-
static MG_ATTR_INTERACTIVE = "interactive";
|
|
61
|
-
static MG_ATTR_IS_OFFLINE = "IsOffline";
|
|
62
|
-
static MG_ATTR_RETURN_VALUE_EXP = "returnValueExp";
|
|
63
|
-
static MG_ATTR_PARALLEL = "ParallelExecution";
|
|
64
|
-
static MG_ATTR_OPEN_WIN = "OpenWin";
|
|
65
|
-
static MG_ATTR_ALLOW_EVENTS = "AllowEvents";
|
|
66
|
-
static MG_ATTR_ISPRG = "isPrg";
|
|
67
|
-
static MG_ATTR_APPL_GUID = "applicationGuid";
|
|
68
|
-
static MG_ATTR_PROGRAM_ISN = "programIsn";
|
|
69
|
-
static MG_ATTR_TASK_ISN = "taskIsn";
|
|
70
|
-
static MG_ATTR_ROUTER_PATH = "RouterPath";
|
|
71
|
-
static MG_ATTR_IN_DEFAULT_ROUTER_OUTLET = "InDefaultRouterOutlet";
|
|
72
|
-
static MG_ATTR_EXPAND = "expand";
|
|
73
|
-
static MG_ATTR_EXP = "exp";
|
|
74
|
-
static MG_ATTR_ERROR_EXP = "errorExp";
|
|
75
|
-
static MG_ATTR_ERROR = "errorMsg";
|
|
76
|
-
static MG_ATTR_IS_GENERIC = "isGeneric";
|
|
77
|
-
static MG_ATTR_HASHCODE = "hashCode";
|
|
78
|
-
static MG_ATTR_PICTURE = "picture";
|
|
79
|
-
static MG_ATTR_STORAGE = "storage";
|
|
80
|
-
static MG_ATTR_DITIDX = "ditidx";
|
|
81
|
-
static MG_ATTR_ICON_FILE_NAME = "iconFileName";
|
|
82
|
-
static MG_ATTR_SYS_CONTEXT_MENU = "systemContextMenu";
|
|
83
|
-
static MG_TAG_FLDH = "fldh";
|
|
84
|
-
static MG_TAG_DVHEADER = "dvheader";
|
|
85
|
-
static MG_ATTR_MENUS_FILE_NAME = "menusFileName";
|
|
86
|
-
static MG_ATTR_MENU_CONTENT = "MenusContent";
|
|
87
|
-
static MG_ATTR_SORT_BY_RECENTLY_USED = "SortWindowListByRecentlyUsed";
|
|
88
|
-
static MG_ATTR_CONTROL_Z_ORDER = "zorder";
|
|
89
|
-
static MG_TAG_PROP = "prop";
|
|
90
|
-
static MG_TAG_CONTROL = "control";
|
|
91
|
-
static MG_TAG_FORM = "form";
|
|
92
|
-
static MG_TAG_FORM_PROPERTIES = "propertiesForm";
|
|
93
|
-
static MG_TAG_FORMS = "forms";
|
|
94
|
-
static MG_TAG_TREE = "tree";
|
|
95
|
-
static MG_TAG_NODE = "node";
|
|
96
|
-
static MG_TAG_FLD = "fld";
|
|
97
|
-
static MG_ATTR_CHILDREN_RETRIEVED = "children_retrieved";
|
|
98
|
-
static MG_TAG_HELPTABLE = "helptable";
|
|
99
|
-
static MG_TAG_HELPITEM = "helpitem";
|
|
100
|
-
static MG_ATTR_FULLNAME = "fullname";
|
|
101
|
-
static MG_ATTR_ISSPECIFIC = "isSpecific";
|
|
102
|
-
static MG_ATTR_IS_GUI_THREAD_EXECUTION = "isGuiThreadExecution";
|
|
103
|
-
static MG_TAG_TASKDEFINITIONID_ENTRY = "taskDefinitionId";
|
|
104
|
-
static MG_TAG_OBJECT_REFERENCE = "objectRef";
|
|
105
|
-
static MG_ATTR_HLP_TYP_TOOLTIP = "T";
|
|
106
|
-
static MG_ATTR_HLP_TYP_PROMPT = "P";
|
|
107
|
-
static MG_ATTR_HLP_TYP_URL = "U";
|
|
108
|
-
static MG_ATTR_HLP_TYP_INTERNAL = "I";
|
|
109
|
-
static MG_ATTR_HLP_TYP_WINDOWS = "W";
|
|
110
|
-
static MG_ATTR_INTERNAL_HELP_TYPE = "type";
|
|
111
|
-
static MG_ATTR_INTERNAL_HELP_NAME = "name";
|
|
112
|
-
static MG_ATTR_INTERNAL_HELP_FRAMEX = "framex";
|
|
113
|
-
static MG_ATTR_INTERNAL_HELP_FRAMEY = "framey";
|
|
114
|
-
static MG_ATTR_INTERNAL_HELP_FRAMEDX = "famedx";
|
|
115
|
-
static MG_ATTR_INTERNAL_HELP_FRAMEDY = "framedy";
|
|
116
|
-
static MG_ATTR_INTERNAL_HELP_SIZEDX = "sizedx";
|
|
117
|
-
static MG_ATTR_INTERNAL_HELP_SIZEDY = "sizedy";
|
|
118
|
-
static MG_ATTR_INTERNAL_HELP_FACTORX = "factorx";
|
|
119
|
-
static MG_ATTR_INTERNAL_HELP_FACTORY = "factory";
|
|
120
|
-
static MG_ATTR_INTERNAL_HELP_BORDERSTYLE = "borderstyle";
|
|
121
|
-
static MG_ATTR_INTERNAL_TITLE_BAR = "titlebar";
|
|
122
|
-
static MG_ATTR_INTERNAL_HELP_SYSTEM_MENU = "sysmenu";
|
|
123
|
-
static MG_ATTR_INTERNAL_HELP_FONT_TABLE_INDEX = "fonttableindex";
|
|
124
|
-
static MG_ATTR_WINDOWS_HELP_FILE = "file";
|
|
125
|
-
static MG_ATTR_WINDOWS_HELP_COMMAND = "command";
|
|
126
|
-
static MG_ATTR_WINDOWS_HELP_KEY = "key";
|
|
127
|
-
static MG_TAG_PRINT_DATA = "Print_data";
|
|
128
|
-
static MG_TAG_PRINT_DATA_END = "/Print_data";
|
|
129
|
-
static MG_TAG_RECORD = "Record";
|
|
130
|
-
static MG_TAG_RECORD_END = "/Record";
|
|
131
|
-
static MG_TAG_CUSTOM_VALIDATORS = "CustomValidators";
|
|
132
|
-
static MG_TAG_CUSTOM_VALIDATORS_END = "/CustomValidators";
|
|
133
|
-
static MG_TAG_CUSTOM_VALIDATOR = "CustomValidator";
|
|
134
|
-
static ERROR_LOG_TIME_FORMAT = "HH:mm:ss.S";
|
|
135
|
-
static ERROR_LOG_DATE_FORMAT = "DD/MM/YYYY";
|
|
136
|
-
static HTTP_ERROR_TIME_FORMAT = "HH:mm:ss";
|
|
137
|
-
static CACHED_DATE_TIME_FORMAT = "DD/MM/YYYY HH:mm:ss";
|
|
138
|
-
static MG_TAG_WS_READ_REQUEST = "Read";
|
|
139
|
-
static MG_TAG_WS_CREATE_REQUEST = "Create";
|
|
140
|
-
static MG_TAG_WS_CREATE_REQUEST_END = "/Create";
|
|
141
|
-
static MG_TAG_WS_UPDATE_REQUEST = "Update";
|
|
142
|
-
static MG_TAG_WS_UPDATE_REQUEST_END = "/Update";
|
|
143
|
-
static MG_TAG_WS_DELETE_REQUEST = "Delete";
|
|
144
|
-
static MG_TAG_WS_DELETE_REQUEST_END = "/Delete";
|
|
145
|
-
static MG_TAG_WS_MANIPULATE_REQUEST = "Manipulate";
|
|
146
|
-
static MG_TAG_WS_MANIPULATE_REQUEST_END = "/Manipulate";
|
|
147
|
-
static MG_TAG_WS_DATABASE = "Database";
|
|
148
|
-
static MG_TAG_WS_DATASOURCE = "Datasource";
|
|
149
|
-
static MG_TAG_WS_COLUMNS = "Columns";
|
|
150
|
-
static MG_TAG_WS_COLUMN = "string";
|
|
151
|
-
static MG_TAG_WS_RANGES = "Ranges";
|
|
152
|
-
static MG_TAG_WS_RANGES_END = "/Ranges";
|
|
153
|
-
static MG_TAG_WS_MIN = "Min";
|
|
154
|
-
static MG_TAG_WS_MAX = "Max";
|
|
155
|
-
static MG_TAG_WS_RECORD = "Row";
|
|
156
|
-
static MG_TAG_WS_RECORD_END = "/Row";
|
|
157
|
-
static MG_TAG_WS_WHERE = "Where";
|
|
158
|
-
static MG_TAG_WS_WHERE_END = "/Where";
|
|
159
|
-
static MG_TAG_WS_RESPONSE = "Response";
|
|
160
|
-
static MG_TAG_WS_ERROR = "Error";
|
|
161
|
-
static MG_TAG_WS_ERROR_CODE = "errorCode";
|
|
162
|
-
static MG_TAG_WS_DESCRIPTION = "description";
|
|
163
|
-
static MG_TAG_MENUS_OPEN = "Menus";
|
|
164
|
-
static MG_TAG_MENUS_CLOSE = "/Menus";
|
|
165
|
-
static MG_TAG_MENU = "Menu";
|
|
166
|
-
constructor() {
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWE1MQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL1hNTENvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtJQUN2QixNQUFNLENBQVUsVUFBVSxHQUFXLEtBQUssQ0FBQztJQUMzQyxNQUFNLENBQVUsY0FBYyxHQUFXLE1BQU0sQ0FBQztJQUVoRCxNQUFNLENBQVUsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QyxNQUFNLENBQVUsUUFBUSxHQUFXLEdBQUcsQ0FBQztJQUN2QyxNQUFNLENBQVUsU0FBUyxHQUFXLEdBQUcsQ0FBQztJQUN4QyxNQUFNLENBQVUsY0FBYyxHQUFXLElBQUksQ0FBQztJQUM5QyxNQUFNLENBQVUsU0FBUyxHQUFXLFFBQVEsQ0FBQztJQUM3QyxNQUFNLENBQVUsT0FBTyxHQUFXLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQVUsT0FBTyxHQUFXLEtBQUssQ0FBQztJQUV4QyxNQUFNLENBQVUsVUFBVSxHQUFXLElBQUksQ0FBQztJQUUxQyxNQUFNLENBQVUscUJBQXFCLEdBQVcsWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDeEgsTUFBTSxDQUFVLFdBQVcsR0FBVyxZQUFZLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ3ZJLE1BQU0sQ0FBVSxXQUFXLEdBQVcsTUFBTSxDQUFDO0lBQzdDLE1BQU0sQ0FBVSxlQUFlLEdBQVcsT0FBTyxDQUFDO0lBQ2xELE1BQU0sQ0FBVSxnQkFBZ0IsR0FBVyxXQUFXLENBQUM7SUFJdkQsTUFBTSxDQUFVLHNCQUFzQixHQUFXLGdCQUFnQixDQUFDO0lBQ2xFLE1BQU0sQ0FBVSxtQkFBbUIsR0FBVyxZQUFZLENB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QUNsRCxNQUFNLENBQVUsb0JBQW9CLEdBQVcsV0FBVyxDQUFDO0lBQzNELE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxhQUFhLENBQUM7SUFFOUQsTUFBTSxDQUFVLGlCQUFpQixHQUFXLE9BQU8sQ0FBQztJQUNwRCxNQUFNLENBQVUsa0JBQWtCLEdBQVcsUUFBUSxDQUFDO0lBQ3RELE1BQU0sQ0FBVSxXQUFXLEdBQVcsTUFBTSxDQUFDO0lBRTdDO0lBRUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBYTUxDb25zdGFudHMge1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfWE1MOiBzdHJpbmcgPSBcInhtbFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfWE1MX0VORDogc3RyaW5nID0gXCIveG1sXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBUQUdfVEVSTTogc3RyaW5nID0gXCIvPlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBUQUdfT1BFTjogc3RyaW5nID0gXCI8XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRBR19DTE9TRTogc3RyaW5nID0gXCI+XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFhNTF9BVFRSX0RFTElNOiBzdHJpbmcgPSBcIlxcXCJcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBUlRfVEFHOiBzdHJpbmcgPSBcIlxcbiAgIDxcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgRU5EX1RBRzogc3RyaW5nID0gXCI8L1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBYTUxfVEFCOiBzdHJpbmcgPSBcIiAgIFwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JRDogc3RyaW5nID0gXCJpZFwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1hNTF9FTkRfVEFHR0VEOiBzdHJpbmcgPSBYTUxDb25zdGFudHMuRU5EX1RBRyArIFhNTENvbnN0YW50cy5NR19UQUdfWE1MICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRTtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX09QRU46IHN0cmluZyA9IFhNTENvbnN0YW50cy5UQUdfT1BFTiArIFhNTENvbnN0YW50cy5NR19UQUdfWE1MICsgXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9JRCArIFwiPVxcXCJNR0RBVEFcXFwiPlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfVEFTSzogc3RyaW5nID0gXCJ0YXNrXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19UQVNLX0VORDogc3RyaW5nID0gXCIvdGFza1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfUkVDT01QVVRFOiBzdHJpbmcgPSBcInJlY29tcHV0ZVwiO1xyXG5cclxuICAvL1RPRE86IHRoaXMgY2xhc3MgY29udGFpbnMgdGhlIGNvbnN0YW50cyB3aGljaCBhcmUgdXNlZCBmb3IgWE1MIHBhcnNpbmcuXHJcbiAgLy9DaGVjayBpZiB3ZSBjYW4gbW92ZSBpdCB0byBVdGlsLmRsbFxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1ZCX1ZJRVdfUk9XSURYOiBzdHJpbmcgPSBcImRiX3ZpZXdfcm93aWR4XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfQ09OVFJPTF9JU046IHN0cmluZyA9IFwiY29udHJvbElzblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19IT1JfQUxJR01FTlRfSVNfSU5IRVJJVEVEOiBzdHJpbmcgPSBcImhvcml6b250YWxBbGlnbm1lbnRJc0Zyb21TeXN0ZW1EZWZhdWx0XCI7XHJcblxyXG4gIC8vIE1haW5IZWFkZXJzXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9QQVRIOiBudW1iZXIgPSAyNjA7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEZJTEVfTkFNRV9TSVpFOiBudW1iZXIgPSBYTUxDb25zdGFudHMuTUFYX1BBVEggKyAxO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgQ0RBVEFfU1RBUlQ6IHN0cmluZyA9IFwiPCFbQ0RBVEFbXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IENEQVRBX0VORDogc3RyaW5nID0gXCJdXT5cIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVkFMVUU6IHN0cmluZyA9IFwidmFsXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfU1RVRElPX1ZBTFVFOiBzdHJpbmcgPSBcInN0dWRpb1ZhbHVlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTkFNRTogc3RyaW5nID0gXCJuYW1lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVFlQRTogc3RyaW5nID0gXCJ0eXBlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfU0laRTogc3RyaW5nID0gXCJzaXplXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVkFSX05BTUU6IHN0cmluZyA9IFwidmFyX25hbWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9WQVJfRElTUF9OQU1FOiBzdHJpbmcgPSBcInZhcl9kaXNwX25hbWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9WRUNfQ0VMTFNfU0laRTogc3RyaW5nID0gXCJ2ZWNDZWxsc1NpemVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9WRUNfQ0VMTFNfQVRUUjogc3RyaW5nID0gXCJ2ZWNfY2VsbHNfYXR0clwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1ZFQ19DRUxMU19DT05URU5UOiBzdHJpbmcgPSBcIkNlbGxDb250ZW50VHlwZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX05VTExWQUxVRTogc3RyaW5nID0gXCJudWxsdmFsdWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9OVUxMRElTUExBWTogc3RyaW5nID0gXCJudWxsZGlzcGxheVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX05VTExERUZBVUxUOiBzdHJpbmcgPSBcIm51bGxkZWZhdWx0XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfREJfTU9ESUZJQUJMRTogc3RyaW5nID0gXCJkYl9tb2RpZmlhYmxlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfREVGQVVMVFZBTFVFOiBzdHJpbmcgPSBcImRlZmF1bHR2YWx1ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX05VTExBTExPV0VEOiBzdHJpbmcgPSBcIm51bGxhbGxvd2VkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfQkxPQl9DT05URU5UOiBzdHJpbmcgPSBcIkNvbnRlbnRUeXBlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfUEFSVF9PRl9EQVRBVklFVzogc3RyaW5nID0gXCJwYXJ0T2ZEYXRhdmlld1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0RBVEFfVFlQRTogc3RyaW5nID0gXCJkYXRhVHlwZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0RBVEFfQ1RSTDogc3RyaW5nID0gXCJkYXRhX2N0cmxcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9MSU5LRURfUEFSRU5UOiBzdHJpbmcgPSBcImxpbmtlZF9wYXJlbnRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9DT05UQUlORVI6IHN0cmluZyA9IFwiY29udGFpbmVyXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSVNfRlJBTUVTRVQ6IHN0cmluZyA9IFwiaXNGcmFtZVNldFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX0xJR0FMX1JDX0ZPUk06IHN0cmluZyA9IFwiaXNMZWdhbFJjRm9ybVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1VTRVJTVEFURV9JRDogc3RyaW5nID0gXCJ1c2VyU3RhdGVJZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1BCX0lNQUdFU19OVU1CRVI6IHN0cmluZyA9IFwiUEJJbWFnZXNOdW1iZXJcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9GT1JNX0lTTjogc3RyaW5nID0gXCJmb3JtSXNuXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVEFTS0lEOiBzdHJpbmcgPSBcInRhc2tpZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX01PREFMOiBzdHJpbmcgPSBcIklzTW9kYWxcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9UQVNLX0lTX1NFUklBTElaQVRJT05fUEFSVElBTDogc3RyaW5nID0gXCJpc1NlcmlhbGl6YXRpb25QYXJ0aWFsXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfWE1MX1RSVUU6IHN0cmluZyA9IFwiMVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1hNTF9GQUxTRTogc3RyaW5nID0gXCIwXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVE9PTEtJVF9QQVJFTlRfVEFTSzogc3RyaW5nID0gXCJ0b29sa2l0X3BhcmVudF90YXNrXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfQ1RMX0lEWDogc3RyaW5nID0gXCJjdGxfaWR4XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTUFJTlBSRzogc3RyaW5nID0gXCJtYWlucHJnXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTlVMTF9BUklUSE1FVElDOiBzdHJpbmcgPSBcIm51bGxBcml0aG1ldGljXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJBQ1RJVkU6IHN0cmluZyA9IFwiaW50ZXJhY3RpdmVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JU19PRkZMSU5FOiBzdHJpbmcgPSBcIklzT2ZmbGluZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1JFVFVSTl9WQUxVRV9FWFA6IHN0cmluZyA9IFwicmV0dXJuVmFsdWVFeHBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9QQVJBTExFTDogc3RyaW5nID0gXCJQYXJhbGxlbEV4ZWN1dGlvblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX09QRU5fV0lOOiBzdHJpbmcgPSBcIk9wZW5XaW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9BTExPV19FVkVOVFM6IHN0cmluZyA9IFwiQWxsb3dFdmVudHNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JU1BSRzogc3RyaW5nID0gXCJpc1ByZ1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0FQUExfR1VJRDogc3RyaW5nID0gXCJhcHBsaWNhdGlvbkd1aWRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9QUk9HUkFNX0lTTjogc3RyaW5nID0gXCJwcm9ncmFtSXNuXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVEFTS19JU046IHN0cmluZyA9IFwidGFza0lzblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1JPVVRFUl9QQVRIOiBzdHJpbmcgPSBcIlJvdXRlclBhdGhcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTl9ERUZBVUxUX1JPVVRFUl9PVVRMRVQ6IHN0cmluZyA9IFwiSW5EZWZhdWx0Um91dGVyT3V0bGV0XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfRVhQQU5EOiBzdHJpbmcgPSBcImV4cGFuZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0VYUDogc3RyaW5nID0gXCJleHBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9FUlJPUl9FWFA6IHN0cmluZyA9IFwiZXJyb3JFeHBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9FUlJPUjogc3RyaW5nID0gXCJlcnJvck1zZ1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX0dFTkVSSUM6IHN0cmluZyA9IFwiaXNHZW5lcmljXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSEFTSENPREU6IHN0cmluZyA9IFwiaGFzaENvZGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9QSUNUVVJFOiBzdHJpbmcgPSBcInBpY3R1cmVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9TVE9SQUdFOiBzdHJpbmcgPSBcInN0b3JhZ2VcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9ESVRJRFg6IHN0cmluZyA9IFwiZGl0aWR4XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSUNPTl9GSUxFX05BTUU6IHN0cmluZyA9IFwiaWNvbkZpbGVOYW1lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfU1lTX0NPTlRFWFRfTUVOVTogc3RyaW5nID0gXCJzeXN0ZW1Db250ZXh0TWVudVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfRkxESDogc3RyaW5nID0gXCJmbGRoXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19EVkhFQURFUjogc3RyaW5nID0gXCJkdmhlYWRlclwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX01FTlVTX0ZJTEVfTkFNRTogc3RyaW5nID0gXCJtZW51c0ZpbGVOYW1lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTUVOVV9DT05URU5UOiBzdHJpbmcgPSBcIk1lbnVzQ29udGVudFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1NPUlRfQllfUkVDRU5UTFlfVVNFRDogc3RyaW5nID0gXCJTb3J0V2luZG93TGlzdEJ5UmVjZW50bHlVc2VkXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0NPTlRST0xfWl9PUkRFUjogc3RyaW5nID0gXCJ6b3JkZXJcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19QUk9QOiBzdHJpbmcgPSBcInByb3BcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX0NPTlRST0w6IHN0cmluZyA9IFwiY29udHJvbFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfRk9STTogc3RyaW5nID0gXCJmb3JtXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19GT1JNX1BST1BFUlRJRVM6IHN0cmluZyA9IFwicHJvcGVydGllc0Zvcm1cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX0ZPUk1TOiBzdHJpbmcgPSBcImZvcm1zXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19UUkVFOiBzdHJpbmcgPSBcInRyZWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX05PREU6IHN0cmluZyA9IFwibm9kZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfRkxEOiBzdHJpbmcgPSBcImZsZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0NISUxEUkVOX1JFVFJJRVZFRDogc3RyaW5nID0gXCJjaGlsZHJlbl9yZXRyaWV2ZWRcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19IRUxQVEFCTEU6IHN0cmluZyA9IFwiaGVscHRhYmxlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19IRUxQSVRFTTogc3RyaW5nID0gXCJoZWxwaXRlbVwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9GVUxMTkFNRTogc3RyaW5nID0gXCJmdWxsbmFtZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTU1BFQ0lGSUM6IHN0cmluZyA9IFwiaXNTcGVjaWZpY1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX0dVSV9USFJFQURfRVhFQ1VUSU9OOiBzdHJpbmcgPSBcImlzR3VpVGhyZWFkRXhlY3V0aW9uXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfVEFTS0RFRklOSVRJT05JRF9FTlRSWTogc3RyaW5nID0gXCJ0YXNrRGVmaW5pdGlvbklkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19PQkpFQ1RfUkVGRVJFTkNFOiBzdHJpbmcgPSBcIm9iamVjdFJlZlwiO1xyXG5cclxuICAvL0hlbHAgdHlwZXNcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9ITFBfVFlQX1RPT0xUSVA6IHN0cmluZyA9IFwiVFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0hMUF9UWVBfUFJPTVBUOiBzdHJpbmcgPSBcIlBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9ITFBfVFlQX1VSTDogc3RyaW5nID0gXCJVXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSExQX1RZUF9JTlRFUk5BTDogc3RyaW5nID0gXCJJXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSExQX1RZUF9XSU5ET1dTOiBzdHJpbmcgPSBcIldcIjtcclxuXHJcbiAgLy9JbnRlcm5hbCBoZWxwIGF0dHJpYnV0ZXMuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJOQUxfSEVMUF9UWVBFOiBzdHJpbmcgPSBcInR5cGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX05BTUU6IHN0cmluZyA9IFwibmFtZVwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWDogc3RyaW5nID0gXCJmcmFtZXhcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWTogc3RyaW5nID0gXCJmcmFtZXlcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRURYOiBzdHJpbmcgPSBcImZhbWVkeFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVEWTogc3RyaW5nID0gXCJmcmFtZWR5XCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURYOiBzdHJpbmcgPSBcInNpemVkeFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURZOiBzdHJpbmcgPSBcInNpemVkeVwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZBQ1RPUlg6IHN0cmluZyA9IFwiZmFjdG9yeFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfRkFDVE9SWTogc3RyaW5nID0gXCJmYWN0b3J5XCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfQk9SREVSU1RZTEU6IHN0cmluZyA9IFwiYm9yZGVyc3R5bGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9USVRMRV9CQVI6IHN0cmluZyA9IFwidGl0bGViYXJcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NZU1RFTV9NRU5VOiBzdHJpbmcgPSBcInN5c21lbnVcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJOQUxfSEVMUF9GT05UX1RBQkxFX0lOREVYOiBzdHJpbmcgPSBcImZvbnR0YWJsZWluZGV4XCI7XHJcblxyXG4gIC8vV2luZG93cyBoZWxwIGF0dHJpYnV0ZXMuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfV0lORE9XU19IRUxQX0ZJTEU6IHN0cmluZyA9IFwiZmlsZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1dJTkRPV1NfSEVMUF9DT01NQU5EOiBzdHJpbmcgPSBcImNvbW1hbmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9XSU5ET1dTX0hFTFBfS0VZOiBzdHJpbmcgPSBcImtleVwiO1xyXG5cclxuICAvL1ByaW50IGRhdGEgYXR0cmlidXRlcy5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1BSSU5UX0RBVEE6IHN0cmluZyA9IFwiUHJpbnRfZGF0YVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfUFJJTlRfREFUQV9FTkQ6IHN0cmluZyA9IFwiL1ByaW50X2RhdGFcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1JFQ09SRDogc3RyaW5nID0gXCJSZWNvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1JFQ09SRF9FTkQ6IHN0cmluZyA9IFwiL1JlY29yZFwiO1xyXG5cclxuICAvL0N1c3RvbSBWYWxpZGF0b3JzICBhdHRyaWJ1dGVzLlxyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfQ1VTVE9NX1ZBTElEQVRPUlM6IHN0cmluZyA9IFwiQ3VzdG9tVmFsaWRhdG9yc1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfQ1VTVE9NX1ZBTElEQVRPUlNfRU5EOiBzdHJpbmcgPSBcIi9DdXN0b21WYWxpZGF0b3JzXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19DVVNUT01fVkFMSURBVE9SOiBzdHJpbmcgPSBcIkN1c3RvbVZhbGlkYXRvclwiO1xyXG5cclxuICAvLyBkYXRlL3RpbWUgZm9ybWF0cyBmb3IgRGF0ZVRpbWVVdGlsc1xyXG4gIC8vVE9ETzogaXNvbGF0ZSB0byBhIGRpZmZlcmVudCBmaWxlP1xyXG4gIHN0YXRpYyByZWFkb25seSBFUlJPUl9MT0dfVElNRV9GT1JNQVQ6IHN0cmluZyA9IFwiSEg6bW06c3MuU1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBFUlJPUl9MT0dfREFURV9GT1JNQVQ6IHN0cmluZyA9IFwiREQvTU0vWVlZWVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBIVFRQX0VSUk9SX1RJTUVfRk9STUFUOiBzdHJpbmcgPSBcIkhIOm1tOnNzXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFRF9EQVRFX1RJTUVfRk9STUFUOiBzdHJpbmcgPSBcIkREL01NL1lZWVkgSEg6bW06c3NcIjtcclxuXHJcbiAgLy93ZWJzIGNvbnN0YW50c1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfUkVBRF9SRVFVRVNUOiBzdHJpbmcgPSBcIlJlYWRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0NSRUFURV9SRVFVRVNUOiBzdHJpbmcgPSBcIkNyZWF0ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfQ1JFQVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9DcmVhdGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1VQREFURV9SRVFVRVNUOiBzdHJpbmcgPSBcIlVwZGF0ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfVVBEQVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9VcGRhdGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0RFTEVURV9SRVFVRVNUOiBzdHJpbmcgPSBcIkRlbGV0ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfREVMRVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9EZWxldGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX01BTklQVUxBVEVfUkVRVUVTVDogc3RyaW5nID0gXCJNYW5pcHVsYXRlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19NQU5JUFVMQVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9NYW5pcHVsYXRlXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfREFUQUJBU0U6IHN0cmluZyA9IFwiRGF0YWJhc2VcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0RBVEFTT1VSQ0U6IHN0cmluZyA9IFwiRGF0YXNvdXJjZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfQ09MVU1OUzogc3RyaW5nID0gXCJDb2x1bW5zXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19DT0xVTU46IHN0cmluZyA9IFwic3RyaW5nXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19SQU5HRVM6IHN0cmluZyA9IFwiUmFuZ2VzXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19SQU5HRVNfRU5EOiBzdHJpbmcgPSBcIi9SYW5nZXNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX01JTjogc3RyaW5nID0gXCJNaW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX01BWDogc3RyaW5nID0gXCJNYXhcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1JFQ09SRDogc3RyaW5nID0gXCJSb3dcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1JFQ09SRF9FTkQ6IHN0cmluZyA9IFwiL1Jvd1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfV0hFUkU6IHN0cmluZyA9IFwiV2hlcmVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1dIRVJFX0VORDogc3RyaW5nID0gXCIvV2hlcmVcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19SRVNQT05TRTogc3RyaW5nID0gXCJSZXNwb25zZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfRVJST1I6IHN0cmluZyA9IFwiRXJyb3JcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0VSUk9SX0NPREU6IHN0cmluZyA9IFwiZXJyb3JDb2RlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19ERVNDUklQVElPTjogc3RyaW5nID0gXCJkZXNjcmlwdGlvblwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX01FTlVTX09QRU46IHN0cmluZyA9IFwiTWVudXNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX01FTlVTX0NMT1NFOiBzdHJpbmcgPSBcIi9NZW51c1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfTUVOVTogc3RyaW5nID0gXCJNZW51XCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICB9XHJcbn1cclxuIl19
|