@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.
@@ -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