@gipisistemas/ng-core 1.1.14 → 1.1.16
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/bundles/gipisistemas-ng-core.umd.js +651 -42
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +9 -9
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
- package/core/utils/acbr-validator-ie.d.ts +36 -0
- package/core/utils/document.util.d.ts +6 -4
- package/esm2015/core/utils/acbr-validator-ie.js +582 -0
- package/esm2015/core/utils/document.util.js +6 -39
- package/esm2015/gipi-components.js +2 -1
- package/esm2015/shared/gipi-components/qr-code/qr-code.component.js +46 -0
- package/esm2015/shared/shared.module.js +5 -1
- package/esm5/core/utils/acbr-validator-ie.js +598 -0
- package/esm5/core/utils/document.util.js +6 -39
- package/esm5/gipi-components.js +2 -1
- package/esm5/shared/gipi-components/qr-code/qr-code.component.js +47 -0
- package/esm5/shared/shared.module.js +5 -1
- package/fesm2015/gipisistemas-ng-core.js +634 -40
- package/fesm2015/gipisistemas-ng-core.js.map +1 -1
- package/fesm5/gipisistemas-ng-core.js +649 -40
- package/fesm5/gipisistemas-ng-core.js.map +1 -1
- package/gipi-components.d.ts +1 -0
- package/gipisistemas-ng-core.metadata.json +1 -1
- package/package.json +3 -2
- package/shared/gipi-components/qr-code/qr-code.component.d.ts +8 -0
@@ -0,0 +1,582 @@
|
|
1
|
+
const cUFsValidas = [
|
2
|
+
'AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA',
|
3
|
+
'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN',
|
4
|
+
'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO', 'EX'
|
5
|
+
];
|
6
|
+
export class ACBrValidadorIE {
|
7
|
+
constructor() {
|
8
|
+
this._fsIgnorarChar = './-';
|
9
|
+
this._fsDocumento = '';
|
10
|
+
this.fsDocto = '';
|
11
|
+
this._Complemento = '';
|
12
|
+
this.fsMsgErro = '';
|
13
|
+
this.fsDigitoCalculado = '';
|
14
|
+
this.fsPermiteVazio = false;
|
15
|
+
this.fsExibeDigitoCorreto = false;
|
16
|
+
this.fsAjustarTamanho = false;
|
17
|
+
}
|
18
|
+
get IgnorarChar() {
|
19
|
+
return this._fsIgnorarChar;
|
20
|
+
}
|
21
|
+
set IgnorarChar(value) {
|
22
|
+
this._fsIgnorarChar = value;
|
23
|
+
}
|
24
|
+
get Documento() {
|
25
|
+
return this._fsDocumento;
|
26
|
+
}
|
27
|
+
set Documento(value) {
|
28
|
+
if (this._fsDocumento === value) {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
this._fsDocumento = value;
|
32
|
+
this.fsMsgErro = 'Função Validar não foi chamada';
|
33
|
+
this.fsDigitoCalculado = '';
|
34
|
+
this.fsDocto = this._LimpaDocto(this._fsDocumento);
|
35
|
+
}
|
36
|
+
get Complemento() {
|
37
|
+
return this._Complemento;
|
38
|
+
}
|
39
|
+
set Complemento(value) {
|
40
|
+
this._Complemento = value;
|
41
|
+
}
|
42
|
+
isValid(IE, UF, ignorarChar = './-') {
|
43
|
+
this.Documento = IE;
|
44
|
+
this.Complemento = UF;
|
45
|
+
this.IgnorarChar = ignorarChar || './-';
|
46
|
+
this.Documento = this.formatar();
|
47
|
+
if (this._validar()) {
|
48
|
+
return { ie: this.Documento, isValid: true, error: '' };
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
return { ie: this.Documento, isValid: false, error: this.fsMsgErro };
|
52
|
+
}
|
53
|
+
}
|
54
|
+
_validar() {
|
55
|
+
this.fsMsgErro = '';
|
56
|
+
this.fsDocto = this._LimpaDocto(this._fsDocumento);
|
57
|
+
this.fsDigitoCalculado = '';
|
58
|
+
if (this.fsDocto === '') {
|
59
|
+
if (this.fsPermiteVazio) {
|
60
|
+
return true;
|
61
|
+
}
|
62
|
+
else {
|
63
|
+
this.fsMsgErro = `Inscrição Estadual não pode ser vazio.`;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
if (this.fsMsgErro === '') {
|
67
|
+
this._ValidarIE();
|
68
|
+
}
|
69
|
+
return (this.fsMsgErro === '');
|
70
|
+
}
|
71
|
+
formatar() {
|
72
|
+
const doc = this._LimpaDocto(this._fsDocumento);
|
73
|
+
return this._FormatarIE(doc);
|
74
|
+
}
|
75
|
+
_ValidarIE() {
|
76
|
+
const c0_9 = '0-9';
|
77
|
+
const cPesos = [
|
78
|
+
[0, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6],
|
79
|
+
[0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5],
|
80
|
+
[2, 0, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6],
|
81
|
+
[0, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0],
|
82
|
+
[0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0],
|
83
|
+
[0, 2, 3, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0],
|
84
|
+
[0, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5],
|
85
|
+
[0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 8],
|
86
|
+
[0, 0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7],
|
87
|
+
[0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 0],
|
88
|
+
[0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 3, 0],
|
89
|
+
[0, 0, 0, 0, 10, 8, 7, 6, 5, 4, 3, 1, 0, 0],
|
90
|
+
[0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 0, 0],
|
91
|
+
[0, 0, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7]
|
92
|
+
];
|
93
|
+
let vDigitos;
|
94
|
+
let xROT;
|
95
|
+
let yROT;
|
96
|
+
let Tamanho;
|
97
|
+
let FatorF;
|
98
|
+
let FatorG;
|
99
|
+
let xMD;
|
100
|
+
let xTP;
|
101
|
+
let yMD;
|
102
|
+
let yTP;
|
103
|
+
let DV;
|
104
|
+
let DVX;
|
105
|
+
let DVY;
|
106
|
+
let SOMA;
|
107
|
+
let SOMAq;
|
108
|
+
let nD;
|
109
|
+
let M;
|
110
|
+
let OK;
|
111
|
+
let Passo;
|
112
|
+
let D;
|
113
|
+
let LPrefixo;
|
114
|
+
if (this.fsDocto.toUpperCase().trim() === 'ISENTO') {
|
115
|
+
return;
|
116
|
+
}
|
117
|
+
if (this.Complemento === '') {
|
118
|
+
this.fsMsgErro = 'Informe a UF no campo complemento';
|
119
|
+
return;
|
120
|
+
}
|
121
|
+
this._ValidarUF(this.Complemento);
|
122
|
+
if (this.fsMsgErro !== '') {
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
/**
|
126
|
+
* Somente digitos ou letra P na primeira posicao
|
127
|
+
* P é usado pela Insc.Estadual de Produtor Rural de SP
|
128
|
+
*/
|
129
|
+
if (!this._StrIsNumber(this.fsDocto.substring(1)) ||
|
130
|
+
(!this._CharIsNum(this.fsDocto[0]) && this.fsDocto[0] !== 'P')) {
|
131
|
+
this.fsMsgErro = 'Caracteres inválidos na inscrição estadual';
|
132
|
+
return;
|
133
|
+
}
|
134
|
+
Tamanho = 0;
|
135
|
+
xROT = 'E';
|
136
|
+
xMD = 11;
|
137
|
+
xTP = 1;
|
138
|
+
yROT = '';
|
139
|
+
yMD = 0;
|
140
|
+
yTP = 0;
|
141
|
+
FatorF = 0;
|
142
|
+
FatorG = 0;
|
143
|
+
vDigitos = Array(14).fill('');
|
144
|
+
if (this.Complemento === 'AC') {
|
145
|
+
if (this.fsDocto.length === 9) {
|
146
|
+
Tamanho = 9;
|
147
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1', '0', '', '', '', '', ''];
|
148
|
+
}
|
149
|
+
else {
|
150
|
+
Tamanho = 13;
|
151
|
+
xTP = 2;
|
152
|
+
yROT = 'E';
|
153
|
+
yMD = 11;
|
154
|
+
yTP = 1;
|
155
|
+
vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1', '0', ''];
|
156
|
+
}
|
157
|
+
}
|
158
|
+
if (this.Complemento === 'AL') {
|
159
|
+
Tamanho = 9;
|
160
|
+
xROT = 'BD';
|
161
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '4', '2', '', '', '', '', ''];
|
162
|
+
}
|
163
|
+
if (this.Complemento === 'AP') {
|
164
|
+
Tamanho = 9;
|
165
|
+
xROT = 'CE';
|
166
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '3', '0', '', '', '', '', ''];
|
167
|
+
if ((this.fsDocto >= '030170010') && (this.fsDocto <= '030190229')) {
|
168
|
+
FatorF = 1;
|
169
|
+
}
|
170
|
+
else if (this.fsDocto >= '030190230') {
|
171
|
+
xROT = 'E';
|
172
|
+
}
|
173
|
+
}
|
174
|
+
if (this.Complemento === 'AM') {
|
175
|
+
Tamanho = 9;
|
176
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
|
177
|
+
}
|
178
|
+
if (this.Complemento === 'BA') {
|
179
|
+
if (this.fsDocto.length < 9) {
|
180
|
+
this.fsDocto = this._PadLeft(this.fsDocto, 9, '0');
|
181
|
+
}
|
182
|
+
Tamanho = 9;
|
183
|
+
xTP = 2;
|
184
|
+
yTP = 3;
|
185
|
+
yROT = 'E';
|
186
|
+
vDigitos = ['DVX', 'DVY', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
|
187
|
+
if ('0123458'.includes(this.fsDocto[1])) {
|
188
|
+
xMD = 10;
|
189
|
+
yMD = 10;
|
190
|
+
}
|
191
|
+
else {
|
192
|
+
xMD = 11;
|
193
|
+
yMD = 11;
|
194
|
+
}
|
195
|
+
}
|
196
|
+
if (this.Complemento === 'CE') {
|
197
|
+
Tamanho = 9;
|
198
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '0', '', '', '', '', ''];
|
199
|
+
}
|
200
|
+
if (this.Complemento === 'DF') {
|
201
|
+
Tamanho = 13;
|
202
|
+
xTP = 2;
|
203
|
+
yROT = 'E';
|
204
|
+
yMD = 11;
|
205
|
+
yTP = 1;
|
206
|
+
vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '7,8', '0', ''];
|
207
|
+
}
|
208
|
+
if (this.Complemento === 'ES') {
|
209
|
+
Tamanho = 9;
|
210
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
|
211
|
+
}
|
212
|
+
if (this.Complemento === 'GO') {
|
213
|
+
Tamanho = 9;
|
214
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1,2', '', '', '', '', ''];
|
215
|
+
LPrefixo = this.fsDocto[0] + this.fsDocto[1];
|
216
|
+
const prefixoValido = [10, 11, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29];
|
217
|
+
if (!prefixoValido.includes(parseInt(LPrefixo))) {
|
218
|
+
this.fsMsgErro = 'Prefixo IE inválido 10 ou 11 / 20 a 29';
|
219
|
+
}
|
220
|
+
if ((parseInt(this.fsDocto) >= 101031050) && (parseInt(this.fsDocto) <= 101199979)) {
|
221
|
+
FatorG = 1;
|
222
|
+
}
|
223
|
+
}
|
224
|
+
if (this.Complemento === 'MA') {
|
225
|
+
Tamanho = 9;
|
226
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '2', '1', '', '', '', '', ''];
|
227
|
+
}
|
228
|
+
if (this.Complemento === 'MT') {
|
229
|
+
if (this.fsDocto.length === 9) {
|
230
|
+
this.fsDocto = this._PadLeft(this.fsDocto, 11, '0');
|
231
|
+
}
|
232
|
+
Tamanho = 11;
|
233
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', ''];
|
234
|
+
}
|
235
|
+
if (this.Complemento === 'MS') {
|
236
|
+
Tamanho = 9;
|
237
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '8', '2', '', '', '', '', ''];
|
238
|
+
}
|
239
|
+
if (this.Complemento === 'MG') {
|
240
|
+
Tamanho = 13;
|
241
|
+
xROT = 'AE';
|
242
|
+
xMD = 10;
|
243
|
+
xTP = 10;
|
244
|
+
yROT = 'E';
|
245
|
+
yMD = 11;
|
246
|
+
yTP = 11;
|
247
|
+
vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, ''];
|
248
|
+
}
|
249
|
+
if (this.Complemento === 'PA') {
|
250
|
+
Tamanho = 9;
|
251
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '5', '1,7', '', '', '', '', ''];
|
252
|
+
}
|
253
|
+
if (this.Complemento === 'PB') {
|
254
|
+
Tamanho = 9;
|
255
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '6', '1', '', '', '', '', ''];
|
256
|
+
}
|
257
|
+
if (this.Complemento === 'PR') {
|
258
|
+
Tamanho = 10;
|
259
|
+
xTP = 9;
|
260
|
+
yROT = 'E';
|
261
|
+
yMD = 11;
|
262
|
+
yTP = 8;
|
263
|
+
vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', ''];
|
264
|
+
}
|
265
|
+
if (this.Complemento === 'PE') {
|
266
|
+
if (this.fsDocto.length === 14) {
|
267
|
+
//Antigo CACEPE
|
268
|
+
Tamanho = 14;
|
269
|
+
xTP = 7;
|
270
|
+
FatorF = 1;
|
271
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1-9', '8', '1'];
|
272
|
+
}
|
273
|
+
else {
|
274
|
+
Tamanho = 9;
|
275
|
+
xTP = 14;
|
276
|
+
yROT = 'E';
|
277
|
+
yMD = 11;
|
278
|
+
yTP = 7;
|
279
|
+
vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
|
280
|
+
}
|
281
|
+
}
|
282
|
+
if (this.Complemento === 'PI') {
|
283
|
+
Tamanho = 9;
|
284
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '9', '1', '', '', '', '', ''];
|
285
|
+
}
|
286
|
+
if (this.Complemento === 'RJ') {
|
287
|
+
Tamanho = 8;
|
288
|
+
xTP = 8;
|
289
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1,7,8,9', '', '', '', '', '', ''];
|
290
|
+
}
|
291
|
+
if (this.Complemento === 'RN') {
|
292
|
+
if (this.fsDocto.length === 9) {
|
293
|
+
Tamanho = 9;
|
294
|
+
xROT = 'BD';
|
295
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '0', '2', '', '', '', '', ''];
|
296
|
+
}
|
297
|
+
else {
|
298
|
+
Tamanho = 10;
|
299
|
+
xROT = 'BD';
|
300
|
+
xTP = 11;
|
301
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '0', '2', '', '', '', ''];
|
302
|
+
}
|
303
|
+
}
|
304
|
+
if (this.Complemento === 'RS') {
|
305
|
+
Tamanho = 10;
|
306
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', ''];
|
307
|
+
}
|
308
|
+
if (this.Complemento === 'RO') {
|
309
|
+
FatorF = 1;
|
310
|
+
if (this.fsDocto.length === 9) {
|
311
|
+
Tamanho = 9;
|
312
|
+
xTP = 4;
|
313
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1-9', '', '', '', '', ''];
|
314
|
+
}
|
315
|
+
else {
|
316
|
+
Tamanho = 14;
|
317
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9];
|
318
|
+
}
|
319
|
+
}
|
320
|
+
if (this.Complemento === 'RR') {
|
321
|
+
Tamanho = 9;
|
322
|
+
xROT = 'D';
|
323
|
+
xMD = 9;
|
324
|
+
xTP = 5;
|
325
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '4', '2', '', '', '', '', ''];
|
326
|
+
}
|
327
|
+
if ((this.Complemento === 'SC') || (this.Complemento === 'SE')) {
|
328
|
+
Tamanho = 9;
|
329
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
|
330
|
+
}
|
331
|
+
if (this.Complemento === 'SP') {
|
332
|
+
xROT = 'D';
|
333
|
+
xTP = 12;
|
334
|
+
if (this.fsDocto[0] === 'P') {
|
335
|
+
Tamanho = 13;
|
336
|
+
vDigitos = [c0_9, c0_9, c0_9, 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, 'P', ''];
|
337
|
+
}
|
338
|
+
else {
|
339
|
+
Tamanho = 12;
|
340
|
+
yROT = 'D';
|
341
|
+
yMD = 11;
|
342
|
+
yTP = 13;
|
343
|
+
vDigitos = ['DVY', c0_9, c0_9, 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', ''];
|
344
|
+
}
|
345
|
+
}
|
346
|
+
if (this.Complemento === 'TO') {
|
347
|
+
if (this.fsDocto.length === 11) {
|
348
|
+
Tamanho = 11;
|
349
|
+
xTP = 6;
|
350
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1,2,3,9', '0,9', '9', '2', '', '', ''];
|
351
|
+
}
|
352
|
+
else {
|
353
|
+
/**
|
354
|
+
* Tamanho = 10;
|
355
|
+
* vDigitos = ['DVX',c0_9,c0_9,c0_9,c0_9,c0_9,c0_9,c0_9,c0_9,'0-4','','','',''];
|
356
|
+
*/
|
357
|
+
Tamanho = 9;
|
358
|
+
vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
|
359
|
+
}
|
360
|
+
}
|
361
|
+
/** Verificando se o Tamanho Total está correto */
|
362
|
+
if (this.fsAjustarTamanho) {
|
363
|
+
this.fsDocto = this._PadLeft(this.fsDocto, Tamanho, '0');
|
364
|
+
}
|
365
|
+
OK = (Tamanho > 0) && (this.fsDocto.length === Tamanho);
|
366
|
+
if (!OK) {
|
367
|
+
this.fsMsgErro = `Tamanho inválido: Esperado ${Tamanho} caracteres, mas foram digitados somente ${this.fsDocto.length} caracteres.`;
|
368
|
+
}
|
369
|
+
/** Verificando os digitos nas posicoes são permitidos */
|
370
|
+
this.fsDocto = this._PadLeft(this.fsDocto, 14);
|
371
|
+
DVX = 0;
|
372
|
+
DVY = 0;
|
373
|
+
let I = 13;
|
374
|
+
while (OK && I >= 0) {
|
375
|
+
const D = this.fsDocto[13 - I];
|
376
|
+
if (vDigitos[I] === '') {
|
377
|
+
OK = (D === ' ');
|
378
|
+
}
|
379
|
+
else if (vDigitos[I] === 'DVX' || vDigitos[I] === 'DVY' || vDigitos[I] === c0_9) {
|
380
|
+
OK = this._CharIsNum(D);
|
381
|
+
if (vDigitos[I] === 'DVX') {
|
382
|
+
DVX = parseInt(D, 10);
|
383
|
+
}
|
384
|
+
else if (vDigitos[I] === 'DVY') {
|
385
|
+
DVY = parseInt(D, 10);
|
386
|
+
}
|
387
|
+
}
|
388
|
+
else if (vDigitos[I].includes(',')) {
|
389
|
+
OK = vDigitos[I].split(',').includes(D);
|
390
|
+
}
|
391
|
+
else if (vDigitos[I].includes('-')) {
|
392
|
+
const [min, max] = vDigitos[I].split('-');
|
393
|
+
OK = (D >= min && D <= max);
|
394
|
+
}
|
395
|
+
else {
|
396
|
+
OK = (D === vDigitos[I]);
|
397
|
+
}
|
398
|
+
if (!OK) {
|
399
|
+
this.fsMsgErro = `Dígito ${13 - I - (13 - Tamanho)} deveria ser ${vDigitos[I]}`;
|
400
|
+
}
|
401
|
+
I--;
|
402
|
+
}
|
403
|
+
Passo = 'X';
|
404
|
+
while (OK && xTP > 0) {
|
405
|
+
SOMA = 0;
|
406
|
+
SOMAq = 0;
|
407
|
+
I = 14;
|
408
|
+
while (OK && I > 0) {
|
409
|
+
D = this.fsDocto[14 - I];
|
410
|
+
if (this._CharIsNum(D)) {
|
411
|
+
nD = parseInt(D, 10);
|
412
|
+
M = nD * cPesos[xTP - 1][I - 1];
|
413
|
+
SOMA += M;
|
414
|
+
if (xROT.includes('A')) {
|
415
|
+
SOMAq += Math.floor(M / 10);
|
416
|
+
}
|
417
|
+
}
|
418
|
+
I--;
|
419
|
+
}
|
420
|
+
if (xROT.includes('A')) {
|
421
|
+
SOMA += SOMAq;
|
422
|
+
}
|
423
|
+
else if (xROT.includes('B')) {
|
424
|
+
SOMA *= 10;
|
425
|
+
}
|
426
|
+
else if (xROT.includes('C')) {
|
427
|
+
SOMA += (5 + (4 * FatorF));
|
428
|
+
}
|
429
|
+
/** Calculando digito verificador */
|
430
|
+
DV = SOMA % xMD;
|
431
|
+
if (xROT.includes('E')) {
|
432
|
+
DV = xMD - DV;
|
433
|
+
}
|
434
|
+
if (DV === 10) {
|
435
|
+
DV = FatorG; /** Apenas GO modifica o FatorG para diferente de 0 */
|
436
|
+
}
|
437
|
+
else if (DV === 11) {
|
438
|
+
DV = FatorF;
|
439
|
+
}
|
440
|
+
if (Passo === 'X') {
|
441
|
+
OK = (DVX === DV);
|
442
|
+
}
|
443
|
+
else {
|
444
|
+
OK = (DVY === DV);
|
445
|
+
}
|
446
|
+
this.fsDigitoCalculado = DV.toString();
|
447
|
+
if (!OK) {
|
448
|
+
this.fsMsgErro = 'Dígito verificador inválido.';
|
449
|
+
if (this.fsExibeDigitoCorreto) {
|
450
|
+
this.fsMsgErro += `.. Calculado: ${this.fsDigitoCalculado}`;
|
451
|
+
}
|
452
|
+
}
|
453
|
+
if (Passo === 'X') {
|
454
|
+
Passo = 'Y';
|
455
|
+
xROT = yROT;
|
456
|
+
xMD = yMD;
|
457
|
+
xTP = yTP;
|
458
|
+
}
|
459
|
+
else {
|
460
|
+
break;
|
461
|
+
}
|
462
|
+
}
|
463
|
+
this.fsDocto = this.fsDocto.trim();
|
464
|
+
if (this.fsMsgErro !== '') {
|
465
|
+
this.fsMsgErro = `Inscrição estadual inválida para ${this.Complemento}. ${this.fsMsgErro}`;
|
466
|
+
}
|
467
|
+
}
|
468
|
+
_ValidarUF(uf) {
|
469
|
+
if (!cUFsValidas.includes(uf.toUpperCase())) {
|
470
|
+
this.fsMsgErro = `UF inválido: ${uf}`;
|
471
|
+
}
|
472
|
+
}
|
473
|
+
_StrIsNumber(s) {
|
474
|
+
return /^\d+$/.test(s);
|
475
|
+
}
|
476
|
+
_CharIsNum(c) {
|
477
|
+
return /^\d$/.test(c);
|
478
|
+
}
|
479
|
+
_PadLeft(value, length, padChar) {
|
480
|
+
return value.padStart(length, padChar);
|
481
|
+
}
|
482
|
+
_LimpaDocto(aString) {
|
483
|
+
let result = '';
|
484
|
+
for (let a = 0; a < aString.length; a++) {
|
485
|
+
if (!this.IgnorarChar.includes(aString[a])) {
|
486
|
+
result += aString[a].toUpperCase();
|
487
|
+
}
|
488
|
+
}
|
489
|
+
return result.trim();
|
490
|
+
}
|
491
|
+
_MascaraIE(AValue) {
|
492
|
+
let LenDoc = AValue.length;
|
493
|
+
let Mascara = '*'.repeat(LenDoc);
|
494
|
+
if (this.Complemento === 'AC')
|
495
|
+
Mascara = '**.***.***/***-**';
|
496
|
+
if (this.Complemento === 'AL')
|
497
|
+
Mascara = '*********';
|
498
|
+
if (this.Complemento === 'AP')
|
499
|
+
Mascara = '*********';
|
500
|
+
if (this.Complemento === 'AM')
|
501
|
+
Mascara = '**.***.***-*';
|
502
|
+
if (this.Complemento === 'BA')
|
503
|
+
Mascara = '*******-**';
|
504
|
+
if (this.Complemento === 'CE')
|
505
|
+
Mascara = '********-*';
|
506
|
+
if (this.Complemento === 'DF')
|
507
|
+
Mascara = '***********-**';
|
508
|
+
if (this.Complemento === 'ES')
|
509
|
+
Mascara = '*********';
|
510
|
+
if (this.Complemento === 'GO')
|
511
|
+
Mascara = '**.***.***-*';
|
512
|
+
if (this.Complemento === 'MA')
|
513
|
+
Mascara = '*********';
|
514
|
+
if (this.Complemento === 'MT')
|
515
|
+
Mascara = '**********-*';
|
516
|
+
if (this.Complemento === 'MS')
|
517
|
+
Mascara = '**.***.***-*';
|
518
|
+
if (this.Complemento === 'MG')
|
519
|
+
Mascara = '***.***.***/****';
|
520
|
+
if (this.Complemento === 'PA')
|
521
|
+
Mascara = '**-******-*';
|
522
|
+
if (this.Complemento === 'PB')
|
523
|
+
Mascara = '********-*';
|
524
|
+
if (this.Complemento === 'PR')
|
525
|
+
Mascara = '***.*****-**';
|
526
|
+
if (this.Complemento === 'PE')
|
527
|
+
Mascara = (LenDoc > 9) ? '**.*.***.*******-*' : '*******-**';
|
528
|
+
if (this.Complemento === 'PI')
|
529
|
+
Mascara = '*********';
|
530
|
+
if (this.Complemento === 'RJ')
|
531
|
+
Mascara = '**.***.**-*';
|
532
|
+
if (this.Complemento === 'RN')
|
533
|
+
Mascara = (LenDoc > 9) ? '**.*.***.***-*' : '**.***.***-*';
|
534
|
+
if (this.Complemento === 'RS')
|
535
|
+
Mascara = '***/*******';
|
536
|
+
if (this.Complemento === 'RO')
|
537
|
+
Mascara = (LenDoc > 13) ? '*************-*' : '***.*****-*';
|
538
|
+
if (this.Complemento === 'RR')
|
539
|
+
Mascara = '********-*';
|
540
|
+
if (this.Complemento === 'SC')
|
541
|
+
Mascara = '***.***.***';
|
542
|
+
if (this.Complemento === 'SP')
|
543
|
+
Mascara = ((LenDoc > 1) && (AValue[0] === 'P')) ? '*-********.*/***' : '***.***.***.***';
|
544
|
+
if (this.Complemento === 'SE')
|
545
|
+
Mascara = '**.***.***-*';
|
546
|
+
if (this.Complemento === 'TO')
|
547
|
+
Mascara = (LenDoc = 11) ? '**.**.******-*' : '**.***.***-*';
|
548
|
+
return Mascara;
|
549
|
+
}
|
550
|
+
_FormatarIE(AValue) {
|
551
|
+
if (AValue.trim().toUpperCase() === 'ISENTO') {
|
552
|
+
return AValue;
|
553
|
+
}
|
554
|
+
const Mascara = this._MascaraIE(AValue);
|
555
|
+
return this._FormatarMascaraNumerica(this._OnlyAlphaNum(AValue), Mascara);
|
556
|
+
}
|
557
|
+
_OnlyAlphaNum(str) {
|
558
|
+
return str.replace(/[^a-zA-Z0-9]/g, '');
|
559
|
+
}
|
560
|
+
_FormatarMascaraNumerica(numValue, mascara) {
|
561
|
+
let result = '';
|
562
|
+
const wNumValue = numValue.trim();
|
563
|
+
const lenMas = mascara.length;
|
564
|
+
const lenDoc = wNumValue.length;
|
565
|
+
let j = lenMas;
|
566
|
+
for (let i = lenMas - 1; i >= 0; i--) {
|
567
|
+
let c = mascara[i];
|
568
|
+
if (c === '*') {
|
569
|
+
if (j <= (lenMas - lenDoc)) {
|
570
|
+
c = '0';
|
571
|
+
}
|
572
|
+
else {
|
573
|
+
c = wNumValue[j - (lenMas - lenDoc) - 1];
|
574
|
+
}
|
575
|
+
j--;
|
576
|
+
}
|
577
|
+
result = c + result;
|
578
|
+
}
|
579
|
+
return result;
|
580
|
+
}
|
581
|
+
}
|
582
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNici12YWxpZGF0b3ItaWUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL3V0aWxzL2FjYnItdmFsaWRhdG9yLWllLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sV0FBVyxHQUFzQjtJQUNuQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzFELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDMUQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDakQsQ0FBQztBQVFGLE1BQU0sT0FBTyxlQUFlO0lBeUN4QjtRQXhDUSxtQkFBYyxHQUFXLEtBQUssQ0FBQztRQVEvQixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQWdCMUIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQVE1QixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO0lBRTFCLENBQUM7SUF2Q2pCLElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsV0FBVyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUdELElBQVcsU0FBUztR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RUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FB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QztnQkFDRCxDQUFDLEVBQUUsQ0FBQzthQUNQO1lBRUQsTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjVUZzVmFsaWRhczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gICAgJ0FDJywgJ0FMJywgJ0FQJywgJ0FNJywgJ0JBJywgJ0NFJywgJ0RGJywgJ0VTJywgJ0dPJywgJ01BJyxcbiAgICAnTVQnLCAnTVMnLCAnTUcnLCAnUEEnLCAnUEInLCAnUFInLCAnUEUnLCAnUEknLCAnUkonLCAnUk4nLFxuICAgICdSUycsICdSTycsICdSUicsICdTQycsICdTUCcsICdTRScsICdUTycsICdFWCdcbl07XG5cbmV4cG9ydCB0eXBlIEFDQlJfVUZzID0gKFxuICAgIHwgJ0FDJyB8ICdBTCcgfCAnQVAnIHwgJ0FNJyB8ICdCQScgfCAnQ0UnIHwgJ0RGJyB8ICdFUycgfCAnR08nIHwgJ01BJ1xuICAgIHwgJ01UJyB8ICdNUycgfCAnTUcnIHwgJ1BBJyB8ICdQQicgfCAnUFInIHwgJ1BFJyB8ICdQSScgfCAnUkonIHwgJ1JOJ1xuICAgIHwgJ1JTJyB8ICdSTycgfCAnUlInIHwgJ1NDJyB8ICdTUCcgfCAnU0UnIHwgJ1RPJyB8ICdFWCcgfCAnJ1xuKTtcblxuZXhwb3J0IGNsYXNzIEFDQnJWYWxpZGFkb3JJRSB7XG4gICAgcHJpdmF0ZSBfZnNJZ25vcmFyQ2hhcjogc3RyaW5nID0gJy4vLSc7XG4gICAgcHVibGljIGdldCBJZ25vcmFyQ2hhcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZnNJZ25vcmFyQ2hhcjtcbiAgICB9XG4gICAgcHVibGljIHNldCBJZ25vcmFyQ2hhcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZzSWdub3JhckNoYXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9mc0RvY3VtZW50bzogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGdldCBEb2N1bWVudG8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZzRG9jdW1lbnRvO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IERvY3VtZW50byh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9mc0RvY3VtZW50byA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZzRG9jdW1lbnRvID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZnNNc2dFcnJvID0gJ0Z1bsOnw6NvIFZhbGlkYXIgbsOjbyBmb2kgY2hhbWFkYSc7XG4gICAgICAgIHRoaXMuZnNEaWdpdG9DYWxjdWxhZG8gPSAnJztcblxuICAgICAgICB0aGlzLmZzRG9jdG8gPSB0aGlzLl9MaW1wYURvY3RvKHRoaXMuX2ZzRG9jdW1lbnRvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZzRG9jdG86IHN0cmluZyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfQ29tcGxlbWVudG86IEFDQlJfVUZzID0gJyc7XG4gICAgcHVibGljIGdldCBDb21wbGVtZW50bygpOiBBQ0JSX1VGcyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9Db21wbGVtZW50bztcbiAgICB9XG4gICAgcHVibGljIHNldCBDb21wbGVtZW50byh2YWx1ZTogQUNCUl9VRnMpIHtcbiAgICAgICAgdGhpcy5fQ29tcGxlbWVudG8gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZzTXNnRXJybzogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBmc0RpZ2l0b0NhbGN1bGFkbzogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBmc1Blcm1pdGVWYXppbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgZnNFeGliZURpZ2l0b0NvcnJldG86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGZzQWp1c3RhclRhbWFuaG86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZChJRTogc3RyaW5nLCBVRjogQUNCUl9VRnMsIGlnbm9yYXJDaGFyOiBzdHJpbmcgPSAnLi8tJyk6IHsgaWU6IHN0cmluZywgaXNWYWxpZDogYm9vbGVhbjsgZXJyb3I6IHN0cmluZzsgfSB7XG4gICAgICAgIHRoaXMuRG9jdW1lbnRvID0gSUU7XG4gICAgICAgIHRoaXMuQ29tcGxlbWVudG8gPSBVRjtcbiAgICAgICAgdGhpcy5JZ25vcmFyQ2hhciA9IGlnbm9yYXJDaGFyIHx8ICcuLy0nO1xuXG4gICAgICAgIHRoaXMuRG9jdW1lbnRvID0gdGhpcy5mb3JtYXRhcigpO1xuXG4gICAgICAgIGlmICh0aGlzLl92YWxpZGFyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGllOiB0aGlzLkRvY3VtZW50bywgaXNWYWxpZDogdHJ1ZSwgZXJyb3I6ICcnIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyBpZTogdGhpcy5Eb2N1bWVudG8sIGlzVmFsaWQ6IGZhbHNlLCBlcnJvcjogdGhpcy5mc01zZ0Vycm8gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHRoaXMuZnNNc2dFcnJvID0gJyc7XG4gICAgICAgIHRoaXMuZnNEb2N0byA9IHRoaXMuX0xpbXBhRG9jdG8odGhpcy5fZnNEb2N1bWVudG8pO1xuICAgICAgICB0aGlzLmZzRGlnaXRvQ2FsY3VsYWRvID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuZnNEb2N0byA9PT0gJycpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZzUGVybWl0ZVZhemlvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gYEluc2NyacOnw6NvIEVzdGFkdWFsIG7Do28gcG9kZSBzZXIgdmF6aW8uYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZzTXNnRXJybyA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuX1ZhbGlkYXJJRSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLmZzTXNnRXJybyA9PT0gJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRhcigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkb2M6IHN0cmluZyA9IHRoaXMuX0xpbXBhRG9jdG8odGhpcy5fZnNEb2N1bWVudG8pXG4gICAgICAgIHJldHVybiB0aGlzLl9Gb3JtYXRhcklFKGRvYyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfVmFsaWRhcklFKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjMF85OiBzdHJpbmcgPSAnMC05JztcbiAgICAgICAgY29uc3QgY1Blc29zOiBudW1iZXJbXVtdID0gW1xuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDIsIDMsIDQsIDUsIDZdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDIsIDMsIDQsIDVdLFxuICAgICAgICAgICAgWzIsIDAsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDIsIDMsIDQsIDUsIDZdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDAsIDAsIDgsIDksIDAsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEsIDIsIDMsIDQsIDVdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDIsIDMsIDQsIDUsIDYsIDcsIDhdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDMsIDQsIDUsIDYsIDcsIDIsIDMsIDQsIDUsIDYsIDddLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDEsIDIsIDEsIDIsIDEsIDIsIDEsIDEsIDIsIDEsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMiwgMywgMF0sXG4gICAgICAgICAgICBbMCwgMCwgMCwgMCwgMTAsIDgsIDcsIDYsIDUsIDQsIDMsIDEsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAyLCAzLCAwLCAwXSxcbiAgICAgICAgICAgIFswLCAwLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCAzLCA0LCA1LCA2LCA3XVxuICAgICAgICBdO1xuXG4gICAgICAgIGxldCB2RGlnaXRvczogc3RyaW5nW107XG4gICAgICAgIGxldCB4Uk9UOiBzdHJpbmc7XG4gICAgICAgIGxldCB5Uk9UOiBzdHJpbmc7XG4gICAgICAgIGxldCBUYW1hbmhvOiBudW1iZXI7XG4gICAgICAgIGxldCBGYXRvckY6IG51bWJlcjtcbiAgICAgICAgbGV0IEZhdG9yRzogbnVtYmVyO1xuICAgICAgICBsZXQgeE1EOiBudW1iZXI7XG4gICAgICAgIGxldCB4VFA6IG51bWJlcjtcbiAgICAgICAgbGV0IHlNRDogbnVtYmVyO1xuICAgICAgICBsZXQgeVRQOiBudW1iZXI7XG4gICAgICAgIGxldCBEVjogbnVtYmVyO1xuICAgICAgICBsZXQgRFZYOiBudW1iZXI7XG4gICAgICAgIGxldCBEVlk6IG51bWJlcjtcbiAgICAgICAgbGV0IFNPTUE6IG51bWJlcjtcbiAgICAgICAgbGV0IFNPTUFxOiBudW1iZXI7XG4gICAgICAgIGxldCBuRDogbnVtYmVyO1xuICAgICAgICBsZXQgTTogbnVtYmVyO1xuICAgICAgICBsZXQgT0s6IEJvb2xlYW47XG4gICAgICAgIGxldCBQYXNzbzogc3RyaW5nO1xuICAgICAgICBsZXQgRDogc3RyaW5nO1xuICAgICAgICBsZXQgTFByZWZpeG86IHN0cmluZztcblxuICAgICAgICBpZiAodGhpcy5mc0RvY3RvLnRvVXBwZXJDYXNlKCkudHJpbSgpID09PSAnSVNFTlRPJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmZzTXNnRXJybyA9ICdJbmZvcm1lIGEgVUYgbm8gY2FtcG8gY29tcGxlbWVudG8nO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fVmFsaWRhclVGKHRoaXMuQ29tcGxlbWVudG8pO1xuICAgICAgICBpZiAodGhpcy5mc01zZ0Vycm8gIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU29tZW50ZSBkaWdpdG9zIG91IGxldHJhIFAgbmEgcHJpbWVpcmEgcG9zaWNhb1xuICAgICAgICAgKiBQIMOpIHVzYWRvIHBlbGEgSW5zYy5Fc3RhZHVhbCBkZSBQcm9kdXRvciBSdXJhbCBkZSBTUFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuX1N0cklzTnVtYmVyKHRoaXMuZnNEb2N0by5zdWJzdHJpbmcoMSkpIHx8XG4gICAgICAgICAgICAoIXRoaXMuX0NoYXJJc051bSh0aGlzLmZzRG9jdG9bMF0pICYmIHRoaXMuZnNEb2N0b1swXSAhPT0gJ1AnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gJ0NhcmFjdGVyZXMgaW52w6FsaWRvcyBuYSBpbnNjcmnDp8OjbyBlc3RhZHVhbCc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBUYW1hbmhvID0gMDtcbiAgICAgICAgeFJPVCA9ICdFJztcbiAgICAgICAgeE1EID0gMTE7XG4gICAgICAgIHhUUCA9IDE7XG4gICAgICAgIHlST1QgPSAnJztcbiAgICAgICAgeU1EID0gMDtcbiAgICAgICAgeVRQID0gMDtcbiAgICAgICAgRmF0b3JGID0gMDtcbiAgICAgICAgRmF0b3JHID0gMDtcblxuICAgICAgICB2RGlnaXRvcyA9IEFycmF5KDE0KS5maWxsKCcnKTtcblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0FDJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDkpIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzEnLCAnMCcsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFRhbWFuaG8gPSAxMztcbiAgICAgICAgICAgICAgICB4VFAgPSAyO1xuICAgICAgICAgICAgICAgIHlST1QgPSAnRSc7XG4gICAgICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICAgICAgeVRQID0gMTtcbiAgICAgICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZZJywgJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcxJywgJzAnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0FMJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB4Uk9UID0gJ0JEJztcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnNCcsICcyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQVAnKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHhST1QgPSAnQ0UnO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICczJywgJzAnLCAnJywgJycsICcnLCAnJywgJyddO1xuXG4gICAgICAgICAgICBpZiAoKHRoaXMuZnNEb2N0byA+PSAnMDMwMTcwMDEwJykgJiYgKHRoaXMuZnNEb2N0byA8PSAnMDMwMTkwMjI5JykpIHtcbiAgICAgICAgICAgICAgICBGYXRvckYgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZzRG9jdG8gPj0gJzAzMDE5MDIzMCcpIHtcbiAgICAgICAgICAgICAgICB4Uk9UID0gJ0UnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdBTScpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0JBJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPCA5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mc0RvY3RvID0gdGhpcy5fUGFkTGVmdCh0aGlzLmZzRG9jdG8sIDksICcwJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgeFRQID0gMjtcbiAgICAgICAgICAgIHlUUCA9IDM7XG4gICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsICdEVlknLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnLCAnJywgJyddO1xuXG4gICAgICAgICAgICBpZiAoJzAxMjM0NTgnLmluY2x1ZGVzKHRoaXMuZnNEb2N0b1sxXSkpIHtcbiAgICAgICAgICAgICAgICB4TUQgPSAxMDtcbiAgICAgICAgICAgICAgICB5TUQgPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgeE1EID0gMTE7XG4gICAgICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0NFJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzAnLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdERicpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSAxMztcbiAgICAgICAgICAgIHhUUCA9IDI7XG4gICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICB5VFAgPSAxO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWScsICdEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnNyw4JywgJzAnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0VTJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnR08nKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMSwyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgICAgIExQcmVmaXhvID0gdGhpcy5mc0RvY3RvWzBdICsgdGhpcy5mc0RvY3RvWzFdO1xuXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhvVmFsaWRvOiBudW1iZXJbXSA9IFsxMCwgMTEsIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XTtcbiAgICAgICAgICAgIGlmICghcHJlZml4b1ZhbGlkby5pbmNsdWRlcyhwYXJzZUludChMUHJlZml4bykpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mc01zZ0Vycm8gPSAnUHJlZml4byBJRSBpbnbDoWxpZG8gMTAgb3UgMTEgLyAyMCBhIDI5JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKChwYXJzZUludCh0aGlzLmZzRG9jdG8pID49IDEwMTAzMTA1MCkgJiYgKHBhcnNlSW50KHRoaXMuZnNEb2N0bykgPD0gMTAxMTk5OTc5KSkge1xuICAgICAgICAgICAgICAgIEZhdG9yRyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01BJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzInLCAnMScsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01UJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZzRG9jdG8gPSB0aGlzLl9QYWRMZWZ0KHRoaXMuZnNEb2N0bywgMTEsICcwJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFRhbWFuaG8gPSAxMTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnTVMnKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnOCcsICcyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnTUcnKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gMTM7XG4gICAgICAgICAgICB4Uk9UID0gJ0FFJztcbiAgICAgICAgICAgIHhNRCA9IDEwO1xuICAgICAgICAgICAgeFRQID0gMTA7XG4gICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICB5VFAgPSAxMTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlknLCAnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQQScpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICc1JywgJzEsNycsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1BCJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzYnLCAnMScsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1BSJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDEwO1xuICAgICAgICAgICAgeFRQID0gOTtcbiAgICAgICAgICAgIHlST1QgPSAnRSc7XG4gICAgICAgICAgICB5TUQgPSAxMTtcbiAgICAgICAgICAgIHlUUCA9IDg7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZZJywgJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUEUnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mc0RvY3RvLmxlbmd0aCA9PT0gMTQpIHtcbiAgICAgICAgICAgICAgICAvL0FudGlnbyBDQUNFUEVcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gMTQ7XG4gICAgICAgICAgICAgICAgeFRQID0gNztcbiAgICAgICAgICAgICAgICBGYXRvckYgPSAxO1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMS05JywgJzgnLCAnMSddO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgICAgICB4VFAgPSAxNDtcbiAgICAgICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgICAgIHlNRCA9IDExO1xuICAgICAgICAgICAgICAgIHlUUCA9IDc7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWScsICdEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQSScpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICc5JywgJzEnLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSSicpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA4O1xuICAgICAgICAgICAgeFRQID0gODtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMSw3LDgsOScsICcnLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSTicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZzRG9jdG8ubGVuZ3RoID09PSA5KSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICAgICAgeFJPVCA9ICdCRCc7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcwJywgJzInLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gMTA7XG4gICAgICAgICAgICAgICAgeFJPVCA9ICdCRCc7XG4gICAgICAgICAgICAgICAgeFRQID0gMTE7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcwJywgJzInLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1JTJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDEwO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUk8nKSB7XG4gICAgICAgICAgICBGYXRvckYgPSAxO1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDkpIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgICAgICB4VFAgPSA0O1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMS05JywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDE0O1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUlInKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHhST1QgPSAnRCc7XG4gICAgICAgICAgICB4TUQgPSA5O1xuICAgICAgICAgICAgeFRQID0gNTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnNCcsICcyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodGhpcy5Db21wbGVtZW50byA9PT0gJ1NDJykgfHwgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdTRScpKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdTUCcpIHtcbiAgICAgICAgICAgIHhST1QgPSAnRCc7XG4gICAgICAgICAgICB4VFAgPSAxMjtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0b1swXSA9PT0gJ1AnKSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDEzO1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gW2MwXzksIGMwXzksIGMwXzksICdEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnUCcsICcnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDEyO1xuICAgICAgICAgICAgICAgIHlST1QgPSAnRCc7IHlNRCA9IDExOyB5VFAgPSAxMztcbiAgICAgICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZZJywgYzBfOSwgYzBfOSwgJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1RPJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDExKSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDExO1xuICAgICAgICAgICAgICAgIHhUUCA9IDY7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcxLDIsMyw5JywgJzAsOScsICc5JywgJzInLCAnJywgJycsICcnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogVGFtYW5obyA9IDEwO1xuICAgICAgICAgICAgICAgICAqIHZEaWdpdG9zID0gWydEVlgnLGMwXzksYzBfOSxjMF85LGMwXzksYzBfOSxjMF85LGMwXzksYzBfOSwnMC00JywnJywnJywnJywnJ107XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVmVyaWZpY2FuZG8gc2UgbyBUYW1hbmhvIFRvdGFsIGVzdMOhIGNvcnJldG8gKi9cbiAgICAgICAgaWYgKHRoaXMuZnNBanVzdGFyVGFtYW5obykge1xuICAgICAgICAgICAgdGhpcy5mc0RvY3RvID0gdGhpcy5fUGFkTGVmdCh0aGlzLmZzRG9jdG8sIFRhbWFuaG8sICcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBPSyA9IChUYW1hbmhvID4gMCkgJiYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IFRhbWFuaG8pO1xuICAgICAgICBpZiAoIU9LKSB7XG4gICAgICAgICAgICB0aGlzLmZzTXNnRXJybyA9IGBUYW1hbmhvIGludsOhbGlkbzogRXNwZXJhZG8gJHtUYW1hbmhvfSBjYXJhY3RlcmVzLCBtYXMgZm9yYW0gZGlnaXRhZG9zIHNvbWVudGUgJHt0aGlzLmZzRG9jdG8ubGVuZ3RofSBjYXJhY3RlcmVzLmA7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVmVyaWZpY2FuZG8gb3MgZGlnaXRvcyBuYXMgcG9zaWNvZXMgc8OjbyBwZXJtaXRpZG9zICovXG4gICAgICAgIHRoaXMuZnNEb2N0byA9IHRoaXMuX1BhZExlZnQodGhpcy5mc0RvY3RvLCAxNCk7XG4gICAgICAgIERWWCA9IDA7XG4gICAgICAgIERWWSA9IDA7XG4gICAgICAgIGxldCBJOiBudW1iZXIgPSAxMztcblxuICAgICAgICB3aGlsZSAoT0sgJiYgSSA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBEOiBzdHJpbmcgPSB0aGlzLmZzRG9jdG9bMTMgLSBJXTtcblxuICAgICAgICAgICAgaWYgKHZEaWdpdG9zW0ldID09PSAnJykge1xuICAgICAgICAgICAgICAgIE9LID0gKEQgPT09ICcgJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZEaWdpdG9zW0ldID09PSAnRFZYJyB8fCB2RGlnaXRvc1tJXSA9PT0gJ0RWWScgfHwgdkRpZ2l0b3NbSV0gPT09IGMwXzkpIHtcbiAgICAgICAgICAgICAgICBPSyA9IHRoaXMuX0NoYXJJc051bShEKTtcblxuICAgICAgICAgICAgICAgIGlmICh2RGlnaXRvc1tJXSA9PT0gJ0RWWCcpIHtcbiAgICAgICAgICAgICAgICAgICAgRFZYID0gcGFyc2VJbnQoRCwgMTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodkRpZ2l0b3NbSV0gPT09ICdEVlknKSB7XG4gICAgICAgICAgICAgICAgICAgIERWWSA9IHBhcnNlSW50KEQsIDEwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZEaWdpdG9zW0ldLmluY2x1ZGVzKCcsJykpIHtcbiAgICAgICAgICAgICAgICBPSyA9IHZEaWdpdG9zW0ldLnNwbGl0KCcsJykuaW5jbHVkZXMoRCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZEaWdpdG9zW0ldLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gdkRpZ2l0b3NbSV0uc3BsaXQoJy0nKTtcbiAgICAgICAgICAgICAgICBPSyA9IChEID49IG1pbiAmJiBEIDw9IG1heCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9LID0gKEQgPT09IHZEaWdpdG9zW0ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFPSykge1xuICAgICAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gYETDrWdpdG8gJHsxMyAtIEkgLSAoMTMgLSBUYW1hbmhvKX0gZGV2ZXJpYSBzZXIgJHt2RGlnaXRvc1tJXX1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBJLS07XG4gICAgICAgIH1cblxuICAgICAgICBQYXNzbyA9ICdYJztcbiAgICAgICAgd2hpbGUgKE9LICYmIHhUUCA+IDApIHtcbiAgICAgICAgICAgIFNPTUEgPSAwO1xuICAgICAgICAgICAgU09NQXEgPSAwO1xuICAgICAgICAgICAgSSA9IDE0O1xuXG4gICAgICAgICAgICB3aGlsZSAoT0sgJiYgSSA+IDApIHtcbiAgICAgICAgICAgICAgICBEID0gdGhpcy5mc0RvY3RvWzE0IC0gSV07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fQ2hhcklzTnVtKEQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5EID0gcGFyc2VJbnQoRCwgMTApO1xuICAgICAgICAgICAgICAgICAgICBNID0gbkQgKiBjUGVzb3NbeFRQIC0gMV1bSSAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBTT01BICs9IE07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHhST1QuaW5jbHVkZXMoJ0EnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU09NQXEgKz0gTWF0aC5mbG9vcihNIC8gMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSS0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoeFJPVC5pbmNsdWRlcygnQScpKSB7XG4gICAgICAgICAgICAgICAgU09NQSArPSBTT01BcTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeFJPVC5pbmNsdWRlcygnQicpKSB7XG4gICAgICAgICAgICAgICAgU09NQSAqPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeFJPVC5pbmNsdWRlcygnQycpKSB7XG4gICAgICAgICAgICAgICAgU09NQSArPSAoNSArICg0ICogRmF0b3JGKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKiBDYWxjdWxhbmRvIGRpZ2l0byB2ZXJpZmljYWRvciAqL1xuICAgICAgICAgICAgRFYgPSBTT01BICUgeE1EO1xuICAgICAgICAgICAgaWYgKHhST1QuaW5jbHVkZXMoJ0UnKSkge1xuICAgICAgICAgICAgICAgIERWID0geE1EIC0gRFY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChEViA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICBEViA9IEZhdG9yRzsgLyoqIEFwZW5hcyBHTyBtb2RpZmljYSBvIEZhdG9yRyBwYXJhIGRpZmVyZW50ZSBkZSAwICovXG4gICAgICAgICAgICB9IGVsc2UgaWYgKERWID09PSAxMSkge1xuICAgICAgICAgICAgICAgIERWID0gRmF0b3JGO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoUGFzc28gPT09ICdYJykge1xuICAgICAgICAgICAgICAgIE9LID0gKERWWCA9PT0gRFYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPSyA9IChEVlkgPT09IERWKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mc0RpZ2l0b0NhbGN1bGFkbyA9IERWLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoIU9LKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mc01zZ0Vycm8gPSAnRMOtZ2l0byB2ZXJpZmljYWRvciBpbnbDoWxpZG8uJztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZzRXhpYmVEaWdpdG9Db3JyZXRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvICs9IGAuLiBDYWxjdWxhZG86ICR7dGhpcy5mc0RpZ2l0b0NhbGN1bGFkb31gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFBhc3NvID09PSAnWCcpIHtcbiAgICAgICAgICAgICAgICBQYXNzbyA9ICdZJztcbiAgICAgICAgICAgICAgICB4Uk9UID0geVJPVDtcbiAgICAgICAgICAgICAgICB4TUQgPSB5TUQ7XG4gICAgICAgICAgICAgICAgeFRQID0geVRQO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZnNEb2N0byA9IHRoaXMuZnNEb2N0by50cmltKCk7XG4gICAgICAgIGlmICh0aGlzLmZzTXNnRXJybyAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gYEluc2NyacOnw6NvIGVzdGFkdWFsIGludsOhbGlkYSBwYXJhICR7dGhpcy5Db21wbGVtZW50b30uICR7dGhpcy5mc01zZ0Vycm99YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX1ZhbGlkYXJVRih1ZjogQUNCUl9VRnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjVUZzVmFsaWRhcy5pbmNsdWRlcyh1Zi50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgdGhpcy5mc01zZ0Vycm8gPSBgVUYgaW52w6FsaWRvOiAke3VmfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9TdHJJc051bWJlcihzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eXFxkKyQvLnRlc3Qocyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfQ2hhcklzTnVtKGM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15cXGQkLy50ZXN0KGMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX1BhZExlZnQodmFsdWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIsIHBhZENoYXI/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUucGFkU3RhcnQobGVuZ3RoLCBwYWRDaGFyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9MaW1wYURvY3RvKGFTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBhU3RyaW5nLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuSWdub3JhckNoYXIuaW5jbHVkZXMoYVN0cmluZ1thXSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYVN0cmluZ1thXS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50cmltKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfTWFzY2FyYUlFKEFWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IExlbkRvYzogbnVtYmVyID0gQVZhbHVlLmxlbmd0aDtcbiAgICAgICAgbGV0IE1hc2NhcmE6IHN0cmluZyA9ICcqJy5yZXBlYXQoTGVuRG9jKTtcblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0FDJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLyoqKi0qKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQUwnKSBNYXNjYXJhID0gJyoqKioqKioqKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQVAnKSBNYXNjYXJhID0gJyoqKioqKioqKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQU0nKSBNYXNjYXJhID0gJyoqLioqKi4qKiotKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQkEnKSBNYXNjYXJhID0gJyoqKioqKiotKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0NFJykgTWFzY2FyYSA9ICcqKioqKioqKi0qJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdERicpIE1hc2NhcmEgPSAnKioqKioqKioqKiotKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0VTJykgTWFzY2FyYSA9ICcqKioqKioqKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0dPJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01BJykgTWFzY2FyYSA9ICcqKioqKioqKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01UJykgTWFzY2FyYSA9ICcqKioqKioqKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01TJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01HJykgTWFzY2FyYSA9ICcqKiouKioqLioqKi8qKioqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQQScpIE1hc2NhcmEgPSAnKiotKioqKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1BCJykgTWFzY2FyYSA9ICcqKioqKioqKi0qJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQUicpIE1hc2NhcmEgPSAnKioqLioqKioqLSoqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQRScpIE1hc2NhcmEgPSAoTGVuRG9jID4gOSkgPyAnKiouKi4qKiouKioqKioqKi0qJyA6ICcqKioqKioqLSoqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQSScpIE1hc2NhcmEgPSAnKioqKioqKioqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSSicpIE1hc2NhcmEgPSAnKiouKioqLioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1JOJykgTWFzY2FyYSA9IChMZW5Eb2MgPiA5KSA/ICcqKi4qLioqKi4qKiotKicgOiAnKiouKioqLioqKi0qJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSUycpIE1hc2NhcmEgPSAnKioqLyoqKioqKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1JPJykgTWFzY2FyYSA9IChMZW5Eb2MgPiAxMykgPyAnKioqKioqKioqKioqKi0qJyA6ICcqKiouKioqKiotKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUlInKSBNYXNjYXJhID0gJyoqKioqKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1NDJykgTWFzY2FyYSA9ICcqKiouKioqLioqKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnU1AnKSBNYXNjYXJhID0gKChMZW5Eb2MgPiAxKSAmJiAoQVZhbHVlWzBdID09PSAnUCcpKSA/ICcqLSoqKioqKioqLiovKioqJyA6ICcqKiouKioqLioqKi4qKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1NFJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1RPJykgTWFzY2FyYSA9IChMZW5Eb2MgPSAxMSkgPyAnKiouKiouKioqKioqLSonIDogJyoqLioqKi4qKiotKic7XG5cbiAgICAgICAgcmV0dXJuIE1hc2NhcmE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfRm9ybWF0YXJJRShBVmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChBVmFsdWUudHJpbSgpLnRvVXBwZXJDYXNlKCkgPT09ICdJU0VOVE8nKSB7XG4gICAgICAgICAgICByZXR1cm4gQVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgTWFzY2FyYTogc3RyaW5nID0gdGhpcy5fTWFzY2FyYUlFKEFWYWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9Gb3JtYXRhck1hc2NhcmFOdW1lcmljYSh0aGlzLl9Pbmx5QWxwaGFOdW0oQVZhbHVlKSwgTWFzY2FyYSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfT25seUFscGhhTnVtKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX0Zvcm1hdGFyTWFzY2FyYU51bWVyaWNhKG51bVZhbHVlOiBzdHJpbmcsIG1hc2NhcmE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xuICAgICAgICBjb25zdCB3TnVtVmFsdWU6IHN0cmluZyA9IG51bVZhbHVlLnRyaW0oKTtcbiAgICAgICAgY29uc3QgbGVuTWFzOiBudW1iZXIgPSBtYXNjYXJhLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGVuRG9jOiBudW1iZXIgPSB3TnVtVmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGxldCBqOiBudW1iZXIgPSBsZW5NYXM7XG4gICAgICAgIGZvciAobGV0IGkgPSBsZW5NYXMgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGMgPSBtYXNjYXJhW2ldO1xuXG4gICAgICAgICAgICBpZiAoYyA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPD0gKGxlbk1hcyAtIGxlbkRvYykpIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9ICcwJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjID0gd051bVZhbHVlW2ogLSAobGVuTWFzIC0gbGVuRG9jKSAtIDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGMgKyByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxufVxuIl19
|