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