mapa-library-ui 0.25.3 → 0.26.0

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.
Files changed (54) hide show
  1. package/esm2020/lib/core/js-brasil/index.mjs +16 -0
  2. package/esm2020/lib/core/js-brasil/src/create.mjs +455 -0
  3. package/esm2020/lib/core/js-brasil/src/createNumberMask.mjs +115 -0
  4. package/esm2020/lib/core/js-brasil/src/estados.mjs +34 -0
  5. package/esm2020/lib/core/js-brasil/src/index.mjs +34 -0
  6. package/esm2020/lib/core/js-brasil/src/inscricaoestadual.mjs +702 -0
  7. package/esm2020/lib/core/js-brasil/src/interfaces.mjs +2 -0
  8. package/esm2020/lib/core/js-brasil/src/iptu.mjs +25 -0
  9. package/esm2020/lib/core/js-brasil/src/iptu_create.mjs +60 -0
  10. package/esm2020/lib/core/js-brasil/src/iptu_mask.mjs +38 -0
  11. package/esm2020/lib/core/js-brasil/src/iptu_validate.mjs +67 -0
  12. package/esm2020/lib/core/js-brasil/src/mask.mjs +579 -0
  13. package/esm2020/lib/core/js-brasil/src/name.mjs +371 -0
  14. package/esm2020/lib/core/js-brasil/src/placa.mjs +162 -0
  15. package/esm2020/lib/core/js-brasil/src/rg.mjs +63 -0
  16. package/esm2020/lib/core/js-brasil/src/saude.mjs +62 -0
  17. package/esm2020/lib/core/js-brasil/src/utils.mjs +304 -0
  18. package/esm2020/lib/core/js-brasil/src/validate.mjs +627 -0
  19. package/esm2020/lib/core/pipes/cpf.mjs +17 -0
  20. package/esm2020/public-api.mjs +3 -1
  21. package/esm2020/src/lib/components/table/lib/components/table/public-api.mjs +2 -1
  22. package/esm2020/src/lib/components/table/lib/components/table/src/table.module.mjs +10 -3
  23. package/fesm2015/mapa-library-ui-src-lib-components-table.mjs +31 -24
  24. package/fesm2015/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
  25. package/fesm2015/mapa-library-ui.mjs +3675 -2
  26. package/fesm2015/mapa-library-ui.mjs.map +1 -1
  27. package/fesm2020/mapa-library-ui-src-lib-components-table.mjs +31 -24
  28. package/fesm2020/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
  29. package/fesm2020/mapa-library-ui.mjs +3682 -2
  30. package/fesm2020/mapa-library-ui.mjs.map +1 -1
  31. package/lib/core/js-brasil/index.d.ts +15 -0
  32. package/lib/core/js-brasil/src/create.d.ts +37 -0
  33. package/lib/core/js-brasil/src/createNumberMask.d.ts +13 -0
  34. package/lib/core/js-brasil/src/estados.d.ts +7 -0
  35. package/lib/core/js-brasil/src/index.d.ts +34 -0
  36. package/lib/core/js-brasil/src/inscricaoestadual.d.ts +7 -0
  37. package/lib/core/js-brasil/src/interfaces.d.ts +51 -0
  38. package/lib/core/js-brasil/src/iptu.d.ts +3 -0
  39. package/lib/core/js-brasil/src/iptu_create.d.ts +5 -0
  40. package/lib/core/js-brasil/src/iptu_mask.d.ts +2 -0
  41. package/lib/core/js-brasil/src/iptu_validate.d.ts +10 -0
  42. package/lib/core/js-brasil/src/mask.d.ts +53 -0
  43. package/lib/core/js-brasil/src/name.d.ts +9 -0
  44. package/lib/core/js-brasil/src/placa.d.ts +6 -0
  45. package/lib/core/js-brasil/src/rg.d.ts +5 -0
  46. package/lib/core/js-brasil/src/saude.d.ts +84 -0
  47. package/lib/core/js-brasil/src/utils.d.ts +71 -0
  48. package/lib/core/js-brasil/src/validate.d.ts +90 -0
  49. package/lib/core/pipes/cpf.d.ts +7 -0
  50. package/mapa-library-ui-0.26.0.tgz +0 -0
  51. package/package.json +1 -1
  52. package/public-api.d.ts +2 -0
  53. package/src/lib/components/table/lib/components/table/public-api.d.ts +1 -0
  54. package/mapa-library-ui-0.25.3.tgz +0 -0
@@ -0,0 +1,16 @@
1
+ export * from './src';
2
+ export * from './src/create';
3
+ export * from './src/estados';
4
+ export * from './src/inscricaoestadual';
5
+ export * from './src/interfaces';
6
+ export * from './src/iptu_create';
7
+ export * from './src/iptu_mask';
8
+ export * from './src/iptu_validate';
9
+ export * from './src/iptu';
10
+ export * from './src/name';
11
+ export * from './src/placa';
12
+ export * from './src/rg';
13
+ export * from './src/saude';
14
+ export * from './src/utils';
15
+ export * from './src/validate';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBhLWxpYnJhcnktdWkvc3JjL2xpYi9jb3JlL2pzLWJyYXNpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NyZWF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9lc3RhZG9zJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2luc2NyaWNhb2VzdGFkdWFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvaXB0dV9jcmVhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvaXB0dV9tYXNrJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2lwdHVfdmFsaWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvaXB0dSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9uYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BsYWNhJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JnJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3NhdWRlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3ZhbGlkYXRlJzsiXX0=
@@ -0,0 +1,455 @@
1
+ import { ESTADOS_SIGLA } from './estados';
2
+ import { getAllDigits, fillString, modulo11Custom } from './utils';
3
+ /**
4
+ *
5
+ * @param uf - UF do número da guia. Ex: 35(SP), 81(PE)
6
+ * @param ano - ANO do número da guia. Ex: 2018, 2019
7
+ * @param tipo - TIPO da guia. Aih = 1, APAC = 2
8
+ */
9
+ export function create_aih(value) {
10
+ value = getAllDigits(value.toString());
11
+ if (value.length > 12) {
12
+ value = value.toString().substr(0, value.length - 1);
13
+ }
14
+ const cod = parseInt(value);
15
+ const calc = Math.ceil(cod - (cod / 11));
16
+ const digito = calc.toString().substr(-1);
17
+ return digito;
18
+ }
19
+ export function create_certidao(value) {
20
+ if (value.length > 30) {
21
+ value = value.substring(0, value.length - 2);
22
+ }
23
+ let b1 = parseInt(value.slice(29));
24
+ let b2 = parseInt(value.slice(28, 29));
25
+ let b3 = parseInt(value.slice(27, 28));
26
+ let b4 = parseInt(value.slice(26, 27));
27
+ let b5 = parseInt(value.slice(25, 26));
28
+ let b6 = parseInt(value.slice(24, 25));
29
+ let b7 = parseInt(value.slice(23, 24));
30
+ let b8 = parseInt(value.slice(22, 23));
31
+ let b9 = parseInt(value.slice(21, 22));
32
+ let b10 = parseInt(value.slice(20, 21));
33
+ let b11 = parseInt(value.slice(19, 20));
34
+ let b12 = parseInt(value.slice(18, 19));
35
+ let b13 = parseInt(value.slice(17, 18));
36
+ let b14 = parseInt(value.slice(16, 17));
37
+ let b15 = parseInt(value.slice(15, 16));
38
+ let b16 = parseInt(value.slice(14, 15));
39
+ let b17 = parseInt(value.slice(13, 14));
40
+ let b18 = parseInt(value.slice(12, 13));
41
+ let b19 = parseInt(value.slice(11, 12));
42
+ let b20 = parseInt(value.slice(10, 11));
43
+ let b21 = parseInt(value.slice(9, 10));
44
+ let b22 = parseInt(value.slice(8, 9));
45
+ let b23 = parseInt(value.slice(7, 8));
46
+ let b24 = parseInt(value.slice(6, 7));
47
+ let b25 = parseInt(value.slice(5, 6));
48
+ let b26 = parseInt(value.slice(4, 5));
49
+ let b27 = parseInt(value.slice(3, 4));
50
+ let b28 = parseInt(value.slice(2, 3));
51
+ let b29 = parseInt(value.slice(1, 2));
52
+ let b30 = parseInt(value.slice(0, 1));
53
+ let certPriDig = (b1 * 9 + b2 * 8 + b3 * 7 + b4 * 6 + b5 * 5 + b6 * 4 + b7 * 3 + b8 * 2 + b9 * 1 + b10 * 0 + b11 * 10 + b12 * 9 + b13 * 8 + b14 * 7 + b15 * 6 + b16 * 5 + b17 * 4 + b18 * 3 + b19 * 2 + b20 * 1 + b21 * 0 + b22 * 10 + b23 * 9 + b24 * 8 + b25 * 7 + b26 * 6 + b27 * 5 + b28 * 4 + b29 * 3 + b30 * 2) % 11;
54
+ if (certPriDig == 10) {
55
+ certPriDig = 1;
56
+ }
57
+ let certSegDig = (certPriDig * 9 + b1 * 8 + b2 * 7 + b3 * 6 + b4 * 5 + b5 * 4 + b6 * 3 + b7 * 2 + b8 * 1 + b9 * 0 + b10 * 10 + b11 * 9 + b12 * 8 + b13 * 7 + b14 * 6 + b15 * 5 + b16 * 4 + b17 * 3 + b18 * 2 + b19 * 1 + b20 * 0 + b21 * 10 + b22 * 9 + b23 * 8 + b24 * 7 + b25 * 6 + b26 * 5 + b27 * 4 + b28 * 3 + b29 * 2 + b30 * 1) % 11;
58
+ if (certSegDig == 10) {
59
+ certSegDig = 1;
60
+ }
61
+ let certDV = certPriDig * 10 + certSegDig;
62
+ if (certDV == 0) {
63
+ certDV = "00";
64
+ }
65
+ if (certDV > 0 && certDV < 10) {
66
+ certDV = "0" + certDV;
67
+ }
68
+ return certDV.toString();
69
+ }
70
+ export function create_cnhespelho(value) {
71
+ let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 8, false);
72
+ return v1;
73
+ }
74
+ export function create_renachestadual(value) {
75
+ const state = value.substr(0, 2).toLowerCase();
76
+ if (!ESTADOS_SIGLA.includes(state)) {
77
+ return false;
78
+ }
79
+ let digits = value.substr(2);
80
+ digits = digits.replace(/[^\d]/g, '');
81
+ if (digits.length !== 9) {
82
+ return false;
83
+ }
84
+ let v1 = modulo11Custom(digits.substr(0, digits.length - 1), 1, 11);
85
+ return '' + v1;
86
+ }
87
+ /**
88
+ *
89
+ * @param value
90
+ * @returns
91
+ */
92
+ export function create_renachseguranca(value) {
93
+ value = value.replace(/[^\d]+/g, '');
94
+ if (value.length !== 11) {
95
+ return false;
96
+ }
97
+ let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 11);
98
+ return "" + v1;
99
+ }
100
+ /**
101
+ * Dígito verificador da CNH não é mais o módulo 11 conforme últimas resoluções
102
+ * @param value
103
+ * @returns
104
+ */
105
+ export function create_cnh(value) {
106
+ value = value.replace(/[^\d]+/g, '');
107
+ if (value.length != 11 || value === '0') {
108
+ return false;
109
+ }
110
+ // let v1 = modulo11Custom(value.substr(0, value.length - 2), 2);
111
+ // if (v1 === '10') v1 = '00'
112
+ let v1 = value.substr(-2);
113
+ return v1;
114
+ }
115
+ export function create_cnpj(cnpj) {
116
+ cnpj = cnpj.replace(/[^\d]+/g, '');
117
+ if (cnpj === '') {
118
+ return false;
119
+ }
120
+ if (cnpj.length !== 14) {
121
+ return false;
122
+ }
123
+ // Elimina CNPJs invalidos conhecidos
124
+ if (cnpj === '00000000000000' ||
125
+ cnpj === '11111111111111' ||
126
+ cnpj === '22222222222222' ||
127
+ cnpj === '33333333333333' ||
128
+ cnpj === '44444444444444' ||
129
+ cnpj === '55555555555555' ||
130
+ cnpj === '66666666666666' ||
131
+ cnpj === '77777777777777' ||
132
+ cnpj === '88888888888888' ||
133
+ cnpj === '99999999999999') {
134
+ return false;
135
+ }
136
+ // Valida DVs
137
+ let tamanho = cnpj.length - 2;
138
+ let numeros = cnpj.substring(0, tamanho);
139
+ let soma = 0;
140
+ let pos = tamanho - 7;
141
+ for (let i = tamanho; i >= 1; i--) {
142
+ soma += numeros.charAt(tamanho - i) * pos--;
143
+ if (pos < 2) {
144
+ pos = 9;
145
+ }
146
+ }
147
+ const resultados = [0, 0];
148
+ resultados[0] = soma % 11 < 2 ? 0 : 11 - soma % 11;
149
+ tamanho = tamanho + 1;
150
+ numeros = cnpj.substring(0, tamanho);
151
+ soma = 0;
152
+ pos = tamanho - 7;
153
+ for (let i = tamanho; i >= 1; i--) {
154
+ soma += numeros.charAt(tamanho - i) * pos--;
155
+ if (pos < 2) {
156
+ pos = 9;
157
+ }
158
+ }
159
+ resultados[1] = soma % 11 < 2 ? 0 : 11 - soma % 11;
160
+ return resultados;
161
+ }
162
+ export function create_cns(number) {
163
+ number = getAllDigits(number);
164
+ let somaInicial = 0;
165
+ for (let i = 0; i < number.length - 1; i++) {
166
+ somaInicial += parseInt(number[i]) * (15 - i);
167
+ }
168
+ let soma = somaInicial;
169
+ let rest = 0;
170
+ while (soma % 11 !== 0) {
171
+ rest++;
172
+ soma = somaInicial + (rest * 1);
173
+ }
174
+ return number.substr(-2, 1) + rest;
175
+ }
176
+ export function create_cpf(strCPF) {
177
+ strCPF = strCPF.replace(/[^\d]+/g, '');
178
+ if (strCPF === '00000000000') {
179
+ return false;
180
+ }
181
+ // const r1 = modulo11(strCPF.substr(0, strCPF.length - 2))
182
+ // const r2 = modulo11(strCPF.substr(0, strCPF.length - 2) + '' + r1)
183
+ // const restos = [
184
+ // r1, r2
185
+ // ];
186
+ const restoscustom = modulo11Custom(strCPF.substr(0, strCPF.length - 2), 2, 12);
187
+ return restoscustom;
188
+ }
189
+ export function create_cartaocredito(number) {
190
+ // if (number.length > 18) { alert("Erro. A rotina não abrange cartões\ncom mais de 18 dígitos (fora o DV).\nIntroduza 18 dígitos, no máximo."); }
191
+ number = "00000000000000000" + number;
192
+ number = number.slice(number.length - 18);
193
+ let b1 = parseInt(number.slice(17));
194
+ let b2 = parseInt(number.slice(16, 17));
195
+ let b3 = parseInt(number.slice(15, 16));
196
+ let b4 = parseInt(number.slice(14, 15));
197
+ let b5 = parseInt(number.slice(13, 14));
198
+ let b6 = parseInt(number.slice(12, 13));
199
+ let b7 = parseInt(number.slice(11, 12));
200
+ let b8 = parseInt(number.slice(10, 11));
201
+ let b9 = parseInt(number.slice(9, 10));
202
+ let b10 = parseInt(number.slice(8, 9));
203
+ let b11 = parseInt(number.slice(7, 8));
204
+ let b12 = parseInt(number.slice(6, 7));
205
+ let b13 = parseInt(number.slice(5, 6));
206
+ let b14 = parseInt(number.slice(4, 5));
207
+ let b15 = parseInt(number.slice(3, 4));
208
+ let b16 = parseInt(number.slice(2, 3));
209
+ let b17 = parseInt(number.slice(1, 2));
210
+ let b18 = parseInt(number.slice(0, 1));
211
+ let ci17 = b1 * 2;
212
+ if (ci17 > 9) {
213
+ ci17 = ci17 - 9;
214
+ }
215
+ let ci1516 = b3 * 2;
216
+ if (ci1516 > 9) {
217
+ ci1516 = ci1516 - 9;
218
+ }
219
+ let ci1314 = b5 * 2;
220
+ if (ci1314 > 9) {
221
+ ci1314 = ci1314 - 9;
222
+ }
223
+ let ci1112 = b7 * 2;
224
+ if (ci1112 > 9) {
225
+ ci1112 = ci1112 - 9;
226
+ }
227
+ let ci910 = b9 * 2;
228
+ if (ci910 > 9) {
229
+ ci910 = ci910 - 9;
230
+ }
231
+ let ci78 = b11 * 2;
232
+ if (ci78 > 9) {
233
+ ci78 = ci78 - 9;
234
+ }
235
+ let ci56 = b13 * 2;
236
+ if (ci56 > 9) {
237
+ ci56 = ci56 - 9;
238
+ }
239
+ let ci34 = b15 * 2;
240
+ if (ci34 > 9) {
241
+ ci34 = ci34 - 9;
242
+ }
243
+ let ci12 = b17 * 2;
244
+ if (ci12 > 9) {
245
+ ci12 = ci12 - 9;
246
+ }
247
+ let ci1617 = b2;
248
+ let ci1415 = b4;
249
+ let ci1213 = b6;
250
+ let ci1011 = b8;
251
+ let ci89 = b10;
252
+ let ci67 = b12;
253
+ let ci45 = b14;
254
+ let ci23 = b16;
255
+ let ci01 = b18;
256
+ let ccredDig = (ci1617 + ci1415 + ci1213 + ci1011 + ci89 + ci67 + ci45 + ci23 + ci01 + ci17 + ci1516 + ci1314 + ci1112 + ci910 + ci78 + ci56 + ci34 + ci12) % 10;
257
+ ccredDig = 10 - ccredDig;
258
+ if (ccredDig == 10) {
259
+ ccredDig = 0;
260
+ }
261
+ return ccredDig;
262
+ }
263
+ export function create_ect(number) {
264
+ number = getAllDigits(number);
265
+ number = "0000000" + number;
266
+ number = number.slice(number.length - 8);
267
+ let b1 = parseInt(number.slice(7));
268
+ let b2 = parseInt(number.slice(6, 7));
269
+ let b3 = parseInt(number.slice(5, 6));
270
+ let b4 = parseInt(number.slice(4, 5));
271
+ let b5 = parseInt(number.slice(3, 4));
272
+ let b6 = parseInt(number.slice(2, 3));
273
+ let b7 = parseInt(number.slice(1, 2));
274
+ let b8 = parseInt(number.slice(0, 1));
275
+ let regEctDig = (b1 * 7 + b2 * 9 + b3 * 5 + b4 * 3 + b5 * 2 + b6 * 4 + b7 * 6 + b8 * 8) % 11;
276
+ regEctDig = 11 - regEctDig;
277
+ if (regEctDig == 11) {
278
+ regEctDig = 5;
279
+ }
280
+ if (regEctDig == 10) {
281
+ regEctDig = 0;
282
+ }
283
+ return regEctDig;
284
+ }
285
+ export function create_pispasep(number) {
286
+ number = getAllDigits(number);
287
+ let nis = fillString(number, 11, '0');
288
+ let d;
289
+ let p = 2, c = 9;
290
+ for (d = 0; c >= 0; c--, (p < 9) ? p++ : p = 2) {
291
+ d += parseInt(nis[c]) * p;
292
+ }
293
+ const digit = (((10 * d) % 11) % 10);
294
+ return digit;
295
+ }
296
+ export function create_renavam(renavam) {
297
+ let dig1 = 0;
298
+ while (renavam.length < 11) {
299
+ renavam = '0' + renavam;
300
+ }
301
+ dig1 = (renavam.charCodeAt(0) - 48) * 3 + (renavam.charCodeAt(1) - 48) * 2 + (renavam.charCodeAt(2) - 48) * 9 + (renavam.charCodeAt(3) - 48) * 8 +
302
+ (renavam.charCodeAt(4) - 48) * 7 + (renavam.charCodeAt(5) - 48) * 6 + (renavam.charCodeAt(6) - 48) * 5 +
303
+ (renavam.charCodeAt(7) - 48) * 4 + (renavam.charCodeAt(8) - 48) * 3 + (renavam.charCodeAt(9) - 48) * 2;
304
+ dig1 = dig1 * 10;
305
+ let resto = (dig1 % 11);
306
+ if (resto === 10) {
307
+ return 0;
308
+ }
309
+ else {
310
+ return resto;
311
+ }
312
+ }
313
+ /**
314
+ *
315
+ * Font: http://ghiorzi.org/index.htm
316
+ * @param number
317
+ */
318
+ export function create_processo(number) {
319
+ number = getAllDigits(number);
320
+ number = "00000000000000000" + number;
321
+ number = number.slice(number.length - 18);
322
+ let b1 = parseInt(number.slice(0, 1)) * 10000000000;
323
+ let b2 = parseInt(number.slice(1, 2)) * 1000000000;
324
+ let b3 = parseInt(number.slice(2, 3)) * 100000000;
325
+ let b4 = parseInt(number.slice(3, 4)) * 10000000;
326
+ let b5 = parseInt(number.slice(4, 5)) * 1000000;
327
+ let b6 = parseInt(number.slice(5, 6)) * 100000;
328
+ let b7 = parseInt(number.slice(6, 7)) * 10000;
329
+ let b8 = parseInt(number.slice(7, 8)) * 1000;
330
+ let b9 = parseInt(number.slice(8, 9)) * 100;
331
+ let b10 = parseInt(number.slice(9, 10)) * 10;
332
+ let b11 = parseInt(number.slice(10, 11));
333
+ const proc1a11 = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11;
334
+ const resto1 = proc1a11 % 97;
335
+ let b12 = parseInt(number.slice(11, 12)) * 1000000;
336
+ let b13 = parseInt(number.slice(12, 13)) * 100000;
337
+ let b14 = parseInt(number.slice(13, 14)) * 10000;
338
+ let b15 = parseInt(number.slice(14, 15)) * 1000;
339
+ let b16 = parseInt(number.slice(15, 16)) * 100;
340
+ let b17 = parseInt(number.slice(16, 17)) * 10;
341
+ let b18 = parseInt(number.slice(17));
342
+ const proc12a18 = b12 + b13 + b14 + b15 + b16 + b17 + b18;
343
+ const resto2 = (resto1 * 10000000 * 100 + proc12a18 * 100) % 97;
344
+ let procJudDV = 98 - resto2;
345
+ if (procJudDV < 10) {
346
+ procJudDV = "0" + procJudDV;
347
+ }
348
+ let procJudCompl = b1 / 10000 + b2 / 10000 + b3 / 10000 + b4 / 10000 + b5 / 10000 + b6 / 10000 + b7 / 10000 + "-" + procJudDV + "." + b8 / 1000 + b9 / 100 + b10 / 10 + b11 + "." + b12 / 1000000 + "." + b13 / 100000 + b14 / 10000 + "." + b15 / 1000 + b16 / 100 + b17 / 10 + b18;
349
+ procJudCompl = "000000" + procJudCompl;
350
+ const result = procJudCompl.slice(procJudCompl.length - 25);
351
+ return result;
352
+ }
353
+ export function create_titulo_atual(titulo) {
354
+ const tit = titulo;
355
+ let dig1 = 0;
356
+ let dig2 = 0;
357
+ const tam = tit.length;
358
+ const estado = tit.substr(tam - 4, 2);
359
+ titulo = tit.substr(0, tam - 2);
360
+ titulo = '000000000000' + titulo;
361
+ titulo = titulo.substr(titulo.length - 11, titulo.length - 1);
362
+ const exce = (estado === '01') || (estado === '02');
363
+ dig1 = (titulo.charCodeAt(0) - 48) * 2 + (titulo.charCodeAt(1) - 48) * 9 + (titulo.charCodeAt(2) - 48) * 8 +
364
+ (titulo.charCodeAt(3) - 48) * 7 + (titulo.charCodeAt(4) - 48) * 6 + (titulo.charCodeAt(5) - 48) * 5 +
365
+ (titulo.charCodeAt(6) - 48) * 4 + (titulo.charCodeAt(7) - 48) * 3 + (titulo.charCodeAt(8) - 48) * 2;
366
+ let resto = (dig1 % 11);
367
+ if (resto === 0) {
368
+ if (exce) {
369
+ dig1 = 1;
370
+ }
371
+ else {
372
+ dig1 = 0;
373
+ }
374
+ }
375
+ else {
376
+ if (resto === 1) {
377
+ dig1 = 0;
378
+ }
379
+ else {
380
+ dig1 = 11 - resto;
381
+ }
382
+ }
383
+ dig2 = (titulo.charCodeAt(9) - 48) * 4 + (titulo.charCodeAt(10) - 48) * 3 + dig1 * 2;
384
+ resto = (dig2 % 11);
385
+ if (resto === 0) {
386
+ if (exce) {
387
+ dig2 = 1;
388
+ }
389
+ else {
390
+ dig2 = 0;
391
+ }
392
+ }
393
+ else {
394
+ if (resto === 1) {
395
+ dig2 = 0;
396
+ }
397
+ else {
398
+ dig2 = 11 - resto;
399
+ }
400
+ }
401
+ return dig1.toString() + dig2.toString();
402
+ }
403
+ export function create_titulo(titNum) {
404
+ titNum = getAllDigits(titNum);
405
+ if (titNum.length > 11) {
406
+ titNum = titNum.substr(0, 11);
407
+ }
408
+ titNum = "00000000" + titNum;
409
+ titNum = titNum.slice(titNum.length - 11);
410
+ let a1 = parseInt(titNum.slice(10));
411
+ let a2 = parseInt(titNum.slice(9, 10));
412
+ let a3 = parseInt(titNum.slice(8, 9));
413
+ let a4 = parseInt(titNum.slice(7, 8));
414
+ let a5 = parseInt(titNum.slice(6, 7));
415
+ let a6 = parseInt(titNum.slice(5, 6));
416
+ let a7 = parseInt(titNum.slice(4, 5));
417
+ let a8 = parseInt(titNum.slice(3, 4));
418
+ let a9 = parseInt(titNum.slice(2, 3));
419
+ let a10 = parseInt(titNum.slice(1, 2));
420
+ let a11 = parseInt(titNum.slice(0, 1));
421
+ if (a2 * 10 + a1 == 0 || a2 * 10 + a1 > 28) {
422
+ throw new Error("Esse nº é suspeito, porque a identificação da \nUF (últimos 2 dígitos) deve estar entre 01 e 28.");
423
+ }
424
+ let titExcecao1 = 0;
425
+ let titExcecao2 = 0;
426
+ let titPriDig = (a3 * 9 + a4 * 8 + a5 * 7 + a6 * 6 + a7 * 5 + a8 * 4 + a9 * 3 + a10 * 2 + a11 * 9) % 11;
427
+ if (titPriDig == 0) {
428
+ titExcecao1 = 1;
429
+ }
430
+ if (titPriDig == 10) {
431
+ titPriDig = 0;
432
+ }
433
+ if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao1 == 1)) {
434
+ titPriDig = 1;
435
+ }
436
+ let titSegDig = (titPriDig * 9 + a1 * 8 + a2 * 7) % 11;
437
+ if (titSegDig == 0) {
438
+ titExcecao2 = 1;
439
+ }
440
+ if (titSegDig == 10) {
441
+ titSegDig = 0;
442
+ }
443
+ if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao2 == 1)) {
444
+ titSegDig = 1;
445
+ }
446
+ let titDV = titPriDig * 10 + titSegDig;
447
+ if (titDV == 0) {
448
+ titDV = "00";
449
+ }
450
+ if (titDV > 0 && titDV < 10) {
451
+ titDV = "0" + titDV;
452
+ }
453
+ return titDV.toString();
454
+ }
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwYS1saWJyYXJ5LXVpL3NyYy9saWIvY29yZS9qcy1icmFzaWwvc3JjL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVuRTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBOEI7SUFDdkQsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1FBQ3JCLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3REO0lBQ0QsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWE7SUFFM0MsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRTtRQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUM5QztJQUNELElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzVCxJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUU7UUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDekMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdB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QUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFHdkMsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDckQsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtRQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDN0QsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtRQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDN0QsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtRQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDN0QsSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtRQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDekQsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNmLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNmLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNmLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNmLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUVmLElBQUksUUFBUSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakssUUFBUSxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFBQyxJQUFJLFFBQVEsSUFBSSxFQUFFLEVBQUU7UUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFFL0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYztJQUN2QyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQzVCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFekMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0QyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3RixTQUFTLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUMzQixJQUFJLFNBQVMsSUFBSSxFQUFFLEVBQUU7UUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdkMsSUFBSSxTQUFTLElBQUksRUFBRSxFQUFFO1FBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQztLQUFFO0lBQ3ZDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFFNUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV0QyxJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxD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QUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNsRCxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDakQsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ2hELElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMvQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDOUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzdDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0MsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFekMsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUN4RSxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBRTdCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNuRCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbEQsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNoRCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDL0MsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckMsTUFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQzFELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVoRSxJQUFJLFNBQVMsR0FBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRWpDLElBQUksU0FBUyxHQUFHLEVBQUUsRUFBRTtRQUNsQixTQUFTLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztLQUM3QjtJQUVELElBQUksWUFBWSxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUVyUixZQUFZLEdBQUcsUUFBUSxHQUFHLFlBQVksQ0FBQztJQUN2QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUdELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjO0lBQ2hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUNuQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUN4RyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDbkcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLENBQUM7U0FDVjtLQUNGO1NBQU07UUFDTCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNMLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0tBQ0Y7SUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7SUFDckYsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1Y7S0FDRjtTQUFNO1FBQ0wsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2YsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxJQUFJLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztTQUNuQjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDMUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1FBQ3RCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUMvQjtJQUVELE1BQU0sR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFMUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2QyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrR0FBa0csQ0FBQyxDQUFDO0tBQ3JIO0lBRUQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztJQUVwQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hHLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRTtRQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7S0FBRTtJQUN4QyxJQUFJLFNBQVMsSUFBSSxFQUFFLEVBQUU7UUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUFFLFNBQVMsR0FBRyxDQUFDLENBQUM7S0FBRTtJQUV0RixJQUFJLFNBQVMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZELElBQUksU0FBUyxJQUFJLENBQUMsRUFBRTtRQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7S0FBRTtJQUN4QyxJQUFJLFNBQVMsSUFBSSxFQUFFLEVBQUU7UUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0tBQUU7SUFDdkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUFFLFNBQVMsR0FBRyxDQUFDLENBQUM7S0FBRTtJQUV0RixJQUFJLEtBQUssR0FBUSxTQUFTLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7UUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0tBQUU7SUFDakMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7UUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztLQUFFO0lBRXJELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFU1RBRE9TX1NJR0xBIH0gZnJvbSAnLi9lc3RhZG9zJztcbmltcG9ydCB7IGdldEFsbERpZ2l0cywgZmlsbFN0cmluZywgbW9kdWxvMTFDdXN0b20gfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB1ZiAtIFVGIGRvIG7Dum1lcm8gZGEgZ3VpYS4gRXg6IDM1KFNQKSwgODEoUEUpXG4gKiBAcGFyYW0gYW5vIC0gQU5PIGRvIG7Dum1lcm8gZGEgZ3VpYS4gRXg6IDIwMTgsIDIwMTlcbiAqIEBwYXJhbSB0aXBvIC0gVElQTyBkYSBndWlhLiBBaWggPSAxLCBBUEFDID0gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2FpaCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYW55W10pIHtcbiAgdmFsdWUgPSBnZXRBbGxEaWdpdHModmFsdWUudG9TdHJpbmcoKSk7XG4gIGlmICh2YWx1ZS5sZW5ndGggPiAxMikge1xuICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS5zdWJzdHIoMCwgdmFsdWUubGVuZ3RoIC0gMSk7XG4gIH1cbiAgY29uc3QgY29kID0gcGFyc2VJbnQodmFsdWUpO1xuICBjb25zdCBjYWxjID0gTWF0aC5jZWlsKGNvZCAtIChjb2QgLyAxMSkpO1xuICBjb25zdCBkaWdpdG8gPSBjYWxjLnRvU3RyaW5nKCkuc3Vic3RyKC0xKTtcbiAgcmV0dXJuIGRpZ2l0bztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9jZXJ0aWRhbyh2YWx1ZTogc3RyaW5nKSB7XG5cbiAgaWYgKHZhbHVlLmxlbmd0aCA+IDMwKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgdmFsdWUubGVuZ3RoIC0gMik7XG4gIH1cbiAgbGV0IGIxID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMjkpKTtcbiAgbGV0IGIyID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMjgsIDI5KSk7XG4gIGxldCBiMyA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDI3LCAyOCkpO1xuICBsZXQgYjQgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyNiwgMjcpKTtcbiAgbGV0IGI1ID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMjUsIDI2KSk7XG4gIGxldCBiNiA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDI0LCAyNSkpO1xuICBsZXQgYjcgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyMywgMjQpKTtcbiAgbGV0IGI4ID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMjIsIDIzKSk7XG4gIGxldCBiOSA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDIxLCAyMikpO1xuICBsZXQgYjEwID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMjAsIDIxKSk7XG4gIGxldCBiMTEgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgxOSwgMjApKTtcbiAgbGV0IGIxMiA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDE4LCAxOSkpO1xuICBsZXQgYjEzID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMTcsIDE4KSk7XG4gIGxldCBiMTQgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgxNiwgMTcpKTtcbiAgbGV0IGIxNSA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDE1LCAxNikpO1xuICBsZXQgYjE2ID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMTQsIDE1KSk7XG4gIGxldCBiMTcgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgxMywgMTQpKTtcbiAgbGV0IGIxOCA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDEyLCAxMykpO1xuICBsZXQgYjE5ID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMTEsIDEyKSk7XG4gIGxldCBiMjAgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgxMCwgMTEpKTtcbiAgbGV0IGIyMSA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDksIDEwKSk7XG4gIGxldCBiMjIgPSBwYXJzZUludCh2YWx1ZS5zbGljZSg4LCA5KSk7XG4gIGxldCBiMjMgPSBwYXJzZUludCh2YWx1ZS5zbGljZSg3LCA4KSk7XG4gIGxldCBiMjQgPSBwYXJzZUludCh2YWx1ZS5zbGljZSg2LCA3KSk7XG4gIGxldCBiMjUgPSBwYXJzZUludCh2YWx1ZS5zbGljZSg1LCA2KSk7XG4gIGxldCBiMjYgPSBwYXJzZUludCh2YWx1ZS5zbGljZSg0LCA1KSk7XG4gIGxldCBiMjcgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgzLCA0KSk7XG4gIGxldCBiMjggPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyLCAzKSk7XG4gIGxldCBiMjkgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgxLCAyKSk7XG4gIGxldCBiMzAgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgwLCAxKSk7XG5cbiAgbGV0IGNlcnRQcmlEaWcgPSAoYjEgKiA5ICsgYjIgKiA4ICsgYjMgKiA3ICsgYjQgKiA2ICsgYjUgKiA1ICsgYjYgKiA0ICsgYjcgKiAzICsgYjggKiAyICsgYjkgKiAxICsgYjEwICogMCArIGIxMSAqIDEwICsgYjEyICogOSArIGIxMyAqIDggKyBiMTQgKiA3ICsgYjE1ICogNiArIGIxNiAqIDUgKyBiMTcgKiA0ICsgYjE4ICogMyArIGIxOSAqIDIgKyBiMjAgKiAxICsgYjIxICogMCArIGIyMiAqIDEwICsgYjIzICogOSArIGIyNCAqIDggKyBiMjUgKiA3ICsgYjI2ICogNiArIGIyNyAqIDUgKyBiMjggKiA0ICsgYjI5ICogMyArIGIzMCAqIDIpICUgMTE7XG4gIGlmIChjZXJ0UHJpRGlnID09IDEwKSB7IGNlcnRQcmlEaWcgPSAxOyB9XG4gIGxldCBjZXJ0U2VnRGlnID0gKGNlcnRQcmlEaWcgKiA5ICsgYjEgKiA4ICsgYjIgKiA3ICsgYjMgKiA2ICsgYjQgKiA1ICsgYjUgKiA0ICsgYjYgKiAzICsgYjcgKiAyICsgYjggKiAxICsgYjkgKiAwICsgYjEwICogMTAgKyBiMTEgKiA5ICsgYjEyICogOCArIGIxMyAqIDcgKyBiMTQgKiA2ICsgYjE1ICogNSArIGIxNiAqIDQgKyBiMTcgKiAzICsgYjE4ICogMiArIGIxOSAqIDEgKyBiMjAgKiAwICsgYjIxICogMTAgKyBiMjIgKiA5ICsgYjIzICogOCArIGIyNCAqIDcgKyBiMjUgKiA2ICsgYjI2ICogNSArIGIyNyAqIDQgKyBiMjggKiAzICsgYjI5ICogMiArIGIzMCAqIDEpICUgMTE7XG4gIGlmIChjZXJ0U2VnRGlnID09IDEwKSB7IGNlcnRTZWdEaWcgPSAxOyB9XG4gIGxldCBjZXJ0RFY6IGFueSA9IGNlcnRQcmlEaWcgKiAxMCArIGNlcnRTZWdEaWc7XG4gIGlmIChjZXJ0RFYgPT0gMCkgeyBjZXJ0RFYgPSBcIjAwXCI7IH1cbiAgaWYgKGNlcnREViA+IDAgJiYgY2VydERWIDwgMTApIHsgY2VydERWID0gXCIwXCIgKyBjZXJ0RFY7IH1cblxuICByZXR1cm4gY2VydERWLnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfY25oZXNwZWxobyh2YWx1ZTogc3RyaW5nKSB7XG4gIGxldCB2MSA9IG1vZHVsbzExQ3VzdG9tKHZhbHVlLnN1YnN0cigwLCB2YWx1ZS5sZW5ndGggLSAxKSwgMSwgOCwgZmFsc2UpO1xuICByZXR1cm4gdjFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9yZW5hY2hlc3RhZHVhbCh2YWx1ZTogc3RyaW5nKSB7XG5cbiAgY29uc3Qgc3RhdGUgPSB2YWx1ZS5zdWJzdHIoMCwgMikudG9Mb3dlckNhc2UoKVxuICBpZiAoIUVTVEFET1NfU0lHTEEuaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBsZXQgZGlnaXRzID0gdmFsdWUuc3Vic3RyKDIpXG4gIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xuICBpZiAoZGlnaXRzLmxlbmd0aCAhPT0gOSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCB2MSA9IG1vZHVsbzExQ3VzdG9tKGRpZ2l0cy5zdWJzdHIoMCwgZGlnaXRzLmxlbmd0aCAtIDEpLCAxLCAxMSk7XG4gIHJldHVybiAnJyArIHYxXG59XG5cbi8qKlxuICogXG4gKiBAcGFyYW0gdmFsdWUgXG4gKiBAcmV0dXJucyBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9yZW5hY2hzZWd1cmFuY2EodmFsdWU6IHN0cmluZykge1xuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuICBpZiAodmFsdWUubGVuZ3RoICE9PSAxMSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCB2MSA9IG1vZHVsbzExQ3VzdG9tKHZhbHVlLnN1YnN0cigwLCB2YWx1ZS5sZW5ndGggLSAxKSwgMSwgMTEpO1xuICByZXR1cm4gXCJcIiArIHYxO1xufVxuXG4vKipcbiAqIETDrWdpdG8gdmVyaWZpY2Fkb3IgZGEgQ05IIG7Do28gw6kgbWFpcyBvIG3Ds2R1bG8gMTEgY29uZm9ybWUgw7psdGltYXMgcmVzb2x1w6fDtWVzXG4gKiBAcGFyYW0gdmFsdWUgXG4gKiBAcmV0dXJucyBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9jbmgodmFsdWU6IHN0cmluZykge1xuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuXG4gIGlmICh2YWx1ZS5sZW5ndGggIT0gMTEgfHwgdmFsdWUgPT09ICcwJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBsZXQgdjEgPSBtb2R1bG8xMUN1c3RvbSh2YWx1ZS5zdWJzdHIoMCwgdmFsdWUubGVuZ3RoIC0gMiksIDIpO1xuICAvLyBpZiAodjEgPT09ICcxMCcpIHYxID0gJzAwJ1xuICBsZXQgdjEgPSB2YWx1ZS5zdWJzdHIoLTIpXG4gIHJldHVybiB2MTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9jbnBqKGNucGo6IHN0cmluZykge1xuICBjbnBqID0gY25wai5yZXBsYWNlKC9bXlxcZF0rL2csICcnKTtcblxuICBpZiAoY25waiA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRWxpbWluYSBDTlBKcyBpbnZhbGlkb3MgY29uaGVjaWRvc1xuICBpZiAoY25waiA9PT0gJzAwMDAwMDAwMDAwMDAwJyB8fFxuICAgIGNucGogPT09ICcxMTExMTExMTExMTExMScgfHxcbiAgICBjbnBqID09PSAnMjIyMjIyMjIyMjIyMjInIHx8XG4gICAgY25waiA9PT0gJzMzMzMzMzMzMzMzMzMzJyB8fFxuICAgIGNucGogPT09ICc0NDQ0NDQ0NDQ0NDQ0NCcgfHxcbiAgICBjbnBqID09PSAnNTU1NTU1NTU1NTU1NTUnIHx8XG4gICAgY25waiA9PT0gJzY2NjY2NjY2NjY2NjY2JyB8fFxuICAgIGNucGogPT09ICc3Nzc3Nzc3Nzc3Nzc3NycgfHxcbiAgICBjbnBqID09PSAnODg4ODg4ODg4ODg4ODgnIHx8XG4gICAgY25waiA9PT0gJzk5OTk5OTk5OTk5OTk5Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFZhbGlkYSBEVnNcbiAgbGV0IHRhbWFuaG86IG51bWJlciA9IGNucGoubGVuZ3RoIC0gMlxuICBsZXQgbnVtZXJvczogYW55ID0gY25wai5zdWJzdHJpbmcoMCwgdGFtYW5obyk7XG4gIGxldCBzb21hOiBhbnkgPSAwO1xuICBsZXQgcG9zID0gdGFtYW5obyAtIDc7XG4gIGZvciAobGV0IGkgPSB0YW1hbmhvOyBpID49IDE7IGktLSkge1xuICAgIHNvbWEgKz0gbnVtZXJvcy5jaGFyQXQodGFtYW5obyAtIGkpICogcG9zLS07XG4gICAgaWYgKHBvcyA8IDIpIHtcbiAgICAgIHBvcyA9IDk7XG4gICAgfVxuXG4gIH1cbiAgY29uc3QgcmVzdWx0YWRvcyA9IFswLCAwXTtcbiAgcmVzdWx0YWRvc1swXSA9IHNvbWEgJSAxMSA8IDIgPyAwIDogMTEgLSBzb21hICUgMTE7XG5cbiAgdGFtYW5obyA9IHRhbWFuaG8gKyAxO1xuICBudW1lcm9zID0gY25wai5zdWJzdHJpbmcoMCwgdGFtYW5obyk7XG4gIHNvbWEgPSAwO1xuICBwb3MgPSB0YW1hbmhvIC0gNztcbiAgZm9yIChsZXQgaSA9IHRhbWFuaG87IGkgPj0gMTsgaS0tKSB7XG4gICAgc29tYSArPSBudW1lcm9zLmNoYXJBdCh0YW1hbmhvIC0gaSkgKiBwb3MtLTtcbiAgICBpZiAocG9zIDwgMikge1xuICAgICAgcG9zID0gOTtcbiAgICB9XG4gIH1cbiAgcmVzdWx0YWRvc1sxXSA9IHNvbWEgJSAxMSA8IDIgPyAwIDogMTEgLSBzb21hICUgMTE7XG4gIHJldHVybiByZXN1bHRhZG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2NucyhudW1iZXI6IHN0cmluZykge1xuICBudW1iZXIgPSBnZXRBbGxEaWdpdHMobnVtYmVyKTtcbiAgbGV0IHNvbWFJbmljaWFsID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXIubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgc29tYUluaWNpYWwgKz0gcGFyc2VJbnQobnVtYmVyW2ldKSAqICgxNSAtIGkpO1xuICB9XG4gIGxldCBzb21hID0gc29tYUluaWNpYWw7XG4gIGxldCByZXN0ID0gMDtcbiAgd2hpbGUgKHNvbWEgJSAxMSAhPT0gMCkge1xuICAgIHJlc3QrKztcbiAgICBzb21hID0gc29tYUluaWNpYWwgKyAocmVzdCAqIDEpXG4gIH1cbiAgcmV0dXJuIG51bWJlci5zdWJzdHIoLTIsIDEpICsgcmVzdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9jcGYoc3RyQ1BGOiBzdHJpbmcpIHtcbiAgc3RyQ1BGID0gc3RyQ1BGLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuICBpZiAoc3RyQ1BGID09PSAnMDAwMDAwMDAwMDAnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gY29uc3QgcjEgPSBtb2R1bG8xMShzdHJDUEYuc3Vic3RyKDAsIHN0ckNQRi5sZW5ndGggLSAyKSlcbiAgLy8gY29uc3QgcjIgPSBtb2R1bG8xMShzdHJDUEYuc3Vic3RyKDAsIHN0ckNQRi5sZW5ndGggLSAyKSArICcnICsgcjEpXG4gIC8vIGNvbnN0IHJlc3RvcyA9IFtcbiAgLy8gICByMSwgcjJcbiAgLy8gXTtcblxuICBjb25zdCByZXN0b3NjdXN0b20gPSBtb2R1bG8xMUN1c3RvbShzdHJDUEYuc3Vic3RyKDAsIHN0ckNQRi5sZW5ndGggLSAyKSwgMiwgMTIpO1xuICByZXR1cm4gcmVzdG9zY3VzdG9tXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfY2FydGFvY3JlZGl0byhudW1iZXI6IHN0cmluZykge1xuXG4gIC8vIGlmIChudW1iZXIubGVuZ3RoID4gMTgpIHsgYWxlcnQoXCJFcnJvLiBBIHJvdGluYSBuw6NvIGFicmFuZ2UgY2FydMO1ZXNcXG5jb20gbWFpcyBkZSAxOCBkw61naXRvcyAoZm9yYSBvIERWKS5cXG5JbnRyb2R1emEgMTggZMOtZ2l0b3MsIG5vIG3DoXhpbW8uXCIpOyB9XG5cbiAgbnVtYmVyID0gXCIwMDAwMDAwMDAwMDAwMDAwMFwiICsgbnVtYmVyO1xuICBudW1iZXIgPSBudW1iZXIuc2xpY2UobnVtYmVyLmxlbmd0aCAtIDE4KTtcblxuICBsZXQgYjEgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMTcpKTtcbiAgbGV0IGIyID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDE2LCAxNykpO1xuICBsZXQgYjMgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMTUsIDE2KSk7XG4gIGxldCBiNCA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxNCwgMTUpKTtcbiAgbGV0IGI1ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDEzLCAxNCkpO1xuICBsZXQgYjYgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMTIsIDEzKSk7XG4gIGxldCBiNyA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxMSwgMTIpKTtcbiAgbGV0IGI4ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDEwLCAxMSkpO1xuICBsZXQgYjkgPSBwYXJzZUludChudW1iZXIuc2xpY2UoOSwgMTApKTtcbiAgbGV0IGIxMCA9IHBhcnNlSW50KG51bWJlci5zbGljZSg4LCA5KSk7XG4gIGxldCBiMTEgPSBwYXJzZUludChudW1iZXIuc2xpY2UoNywgOCkpO1xuICBsZXQgYjEyID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDYsIDcpKTtcbiAgbGV0IGIxMyA9IHBhcnNlSW50KG51bWJlci5zbGljZSg1LCA2KSk7XG4gIGxldCBiMTQgPSBwYXJzZUludChudW1iZXIuc2xpY2UoNCwgNSkpO1xuICBsZXQgYjE1ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDMsIDQpKTtcbiAgbGV0IGIxNiA9IHBhcnNlSW50KG51bWJlci5zbGljZSgyLCAzKSk7XG4gIGxldCBiMTcgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMSwgMikpO1xuICBsZXQgYjE4ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDAsIDEpKTtcblxuXG4gIGxldCBjaTE3ID0gYjEgKiAyOyBpZiAoY2kxNyA+IDkpIHsgY2kxNyA9IGNpMTcgLSA5OyB9XG4gIGxldCBjaTE1MTYgPSBiMyAqIDI7IGlmIChjaTE1MTYgPiA5KSB7IGNpMTUxNiA9IGNpMTUxNiAtIDk7IH1cbiAgbGV0IGNpMTMxNCA9IGI1ICogMjsgaWYgKGNpMTMxNCA+IDkpIHsgY2kxMzE0ID0gY2kxMzE0IC0gOTsgfVxuICBsZXQgY2kxMTEyID0gYjcgKiAyOyBpZiAoY2kxMTEyID4gOSkgeyBjaTExMTIgPSBjaTExMTIgLSA5OyB9XG4gIGxldCBjaTkxMCA9IGI5ICogMjsgaWYgKGNpOTEwID4gOSkgeyBjaTkxMCA9IGNpOTEwIC0gOTsgfVxuICBsZXQgY2k3OCA9IGIxMSAqIDI7IGlmIChjaTc4ID4gOSkgeyBjaTc4ID0gY2k3OCAtIDk7IH1cbiAgbGV0IGNpNTYgPSBiMTMgKiAyOyBpZiAoY2k1NiA+IDkpIHsgY2k1NiA9IGNpNTYgLSA5OyB9XG4gIGxldCBjaTM0ID0gYjE1ICogMjsgaWYgKGNpMzQgPiA5KSB7IGNpMzQgPSBjaTM0IC0gOTsgfVxuICBsZXQgY2kxMiA9IGIxNyAqIDI7IGlmIChjaTEyID4gOSkgeyBjaTEyID0gY2kxMiAtIDk7IH1cbiAgbGV0IGNpMTYxNyA9IGIyO1xuICBsZXQgY2kxNDE1ID0gYjQ7XG4gIGxldCBjaTEyMTMgPSBiNjtcbiAgbGV0IGNpMTAxMSA9IGI4O1xuICBsZXQgY2k4OSA9IGIxMDtcbiAgbGV0IGNpNjcgPSBiMTI7XG4gIGxldCBjaTQ1ID0gYjE0O1xuICBsZXQgY2kyMyA9IGIxNjtcbiAgbGV0IGNpMDEgPSBiMTg7XG5cbiAgbGV0IGNjcmVkRGlnID0gKGNpMTYxNyArIGNpMTQxNSArIGNpMTIxMyArIGNpMTAxMSArIGNpODkgKyBjaTY3ICsgY2k0NSArIGNpMjMgKyBjaTAxICsgY2kxNyArIGNpMTUxNiArIGNpMTMxNCArIGNpMTExMiArIGNpOTEwICsgY2k3OCArIGNpNTYgKyBjaTM0ICsgY2kxMikgJSAxMDtcbiAgY2NyZWREaWcgPSAxMCAtIGNjcmVkRGlnOyBpZiAoY2NyZWREaWcgPT0gMTApIHsgY2NyZWREaWcgPSAwOyB9XG5cbiAgcmV0dXJuIGNjcmVkRGlnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2VjdChudW1iZXI6IHN0cmluZykge1xuICBudW1iZXIgPSBnZXRBbGxEaWdpdHMobnVtYmVyKTtcbiAgbnVtYmVyID0gXCIwMDAwMDAwXCIgKyBudW1iZXI7XG4gIG51bWJlciA9IG51bWJlci5zbGljZShudW1iZXIubGVuZ3RoIC0gOCk7XG5cbiAgbGV0IGIxID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDcpKTtcbiAgbGV0IGIyID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDYsIDcpKTtcbiAgbGV0IGIzID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDUsIDYpKTtcbiAgbGV0IGI0ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDQsIDUpKTtcbiAgbGV0IGI1ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDMsIDQpKTtcbiAgbGV0IGI2ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDIsIDMpKTtcbiAgbGV0IGI3ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDEsIDIpKTtcbiAgbGV0IGI4ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDAsIDEpKTtcblxuICBsZXQgcmVnRWN0RGlnID0gKGIxICogNyArIGIyICogOSArIGIzICogNSArIGI0ICogMyArIGI1ICogMiArIGI2ICogNCArIGI3ICogNiArIGI4ICogOCkgJSAxMTtcbiAgcmVnRWN0RGlnID0gMTEgLSByZWdFY3REaWc7XG4gIGlmIChyZWdFY3REaWcgPT0gMTEpIHsgcmVnRWN0RGlnID0gNTsgfVxuICBpZiAocmVnRWN0RGlnID09IDEwKSB7IHJlZ0VjdERpZyA9IDA7IH1cbiAgcmV0dXJuIHJlZ0VjdERpZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9waXNwYXNlcChudW1iZXI6IHN0cmluZykge1xuXG4gIG51bWJlciA9IGdldEFsbERpZ2l0cyhudW1iZXIpO1xuICBsZXQgbmlzID0gZmlsbFN0cmluZyhudW1iZXIsIDExLCAnMCcpO1xuXG4gIGxldCBkO1xuICBsZXQgcCA9IDIsIGMgPSA5O1xuICBmb3IgKGQgPSAwOyBjID49IDA7IGMtLSwgKHAgPCA5KSA/IHArKyA6IHAgPSAyKSB7XG4gICAgZCArPSBwYXJzZUludChuaXNbY10pICogcDtcbiAgfVxuXG4gIGNvbnN0IGRpZ2l0ID0gKCgoMTAgKiBkKSAlIDExKSAlIDEwKTtcbiAgcmV0dXJuIGRpZ2l0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX3JlbmF2YW0ocmVuYXZhbTogc3RyaW5nKSB7XG4gIGxldCBkaWcxID0gMDtcbiAgd2hpbGUgKHJlbmF2YW0ubGVuZ3RoIDwgMTEpIHtcbiAgICByZW5hdmFtID0gJzAnICsgcmVuYXZhbTtcbiAgfVxuXG4gIGRpZzEgPSAocmVuYXZhbS5jaGFyQ29kZUF0KDApIC0gNDgpICogMyArIChyZW5hdmFtLmNoYXJDb2RlQXQoMSkgLSA0OCkgKiAyICsgKHJlbmF2YW0uY2hhckNvZGVBdCgyKSAtIDQ4KSAqIDkgKyAocmVuYXZhbS5jaGFyQ29kZUF0KDMpIC0gNDgpICogOCArXG4gICAgKHJlbmF2YW0uY2hhckNvZGVBdCg0KSAtIDQ4KSAqIDcgKyAocmVuYXZhbS5jaGFyQ29kZUF0KDUpIC0gNDgpICogNiArIChyZW5hdmFtLmNoYXJDb2RlQXQoNikgLSA0OCkgKiA1ICtcbiAgICAocmVuYXZhbS5jaGFyQ29kZUF0KDcpIC0gNDgpICogNCArIChyZW5hdmFtLmNoYXJDb2RlQXQoOCkgLSA0OCkgKiAzICsgKHJlbmF2YW0uY2hhckNvZGVBdCg5KSAtIDQ4KSAqIDI7XG4gIGRpZzEgPSBkaWcxICogMTA7XG4gIGxldCByZXN0byA9IChkaWcxICUgMTEpO1xuICBpZiAocmVzdG8gPT09IDEwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3RvO1xuICB9XG59XG5cblxuXG4vKipcbiAqIFxuICogRm9udDogaHR0cDovL2doaW9yemkub3JnL2luZGV4Lmh0bVxuICogQHBhcmFtIG51bWJlciBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9wcm9jZXNzbyhudW1iZXI6IHN0cmluZykge1xuICBudW1iZXIgPSBnZXRBbGxEaWdpdHMobnVtYmVyKTtcbiAgbnVtYmVyID0gXCIwMDAwMDAwMDAwMDAwMDAwMFwiICsgbnVtYmVyO1xuICBudW1iZXIgPSBudW1iZXIuc2xpY2UobnVtYmVyLmxlbmd0aCAtIDE4KTtcblxuICBsZXQgYjEgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMCwgMSkpICogMTAwMDAwMDAwMDA7XG4gIGxldCBiMiA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxLCAyKSkgKiAxMDAwMDAwMDAwO1xuICBsZXQgYjMgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMiwgMykpICogMTAwMDAwMDAwO1xuICBsZXQgYjQgPSBwYXJzZUludChudW1iZXIuc2xpY2UoMywgNCkpICogMTAwMDAwMDA7XG4gIGxldCBiNSA9IHBhcnNlSW50KG51bWJlci5zbGljZSg0LCA1KSkgKiAxMDAwMDAwO1xuICBsZXQgYjYgPSBwYXJzZUludChudW1iZXIuc2xpY2UoNSwgNikpICogMTAwMDAwO1xuICBsZXQgYjcgPSBwYXJzZUludChudW1iZXIuc2xpY2UoNiwgNykpICogMTAwMDA7XG4gIGxldCBiOCA9IHBhcnNlSW50KG51bWJlci5zbGljZSg3LCA4KSkgKiAxMDAwO1xuICBsZXQgYjkgPSBwYXJzZUludChudW1iZXIuc2xpY2UoOCwgOSkpICogMTAwO1xuICBsZXQgYjEwID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDksIDEwKSkgKiAxMDtcbiAgbGV0IGIxMSA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxMCwgMTEpKTtcblxuICBjb25zdCBwcm9jMWExMSA9IGIxICsgYjIgKyBiMyArIGI0ICsgYjUgKyBiNiArIGI3ICsgYjggKyBiOSArIGIxMCArIGIxMTtcbiAgY29uc3QgcmVzdG8xID0gcHJvYzFhMTEgJSA5NztcblxuICBsZXQgYjEyID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDExLCAxMikpICogMTAwMDAwMDtcbiAgbGV0IGIxMyA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxMiwgMTMpKSAqIDEwMDAwMDtcbiAgbGV0IGIxNCA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxMywgMTQpKSAqIDEwMDAwO1xuICBsZXQgYjE1ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDE0LCAxNSkpICogMTAwMDtcbiAgbGV0IGIxNiA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxNSwgMTYpKSAqIDEwMDtcbiAgbGV0IGIxNyA9IHBhcnNlSW50KG51bWJlci5zbGljZSgxNiwgMTcpKSAqIDEwO1xuICBsZXQgYjE4ID0gcGFyc2VJbnQobnVtYmVyLnNsaWNlKDE3KSk7XG5cbiAgY29uc3QgcHJvYzEyYTE4ID0gYjEyICsgYjEzICsgYjE0ICsgYjE1ICsgYjE2ICsgYjE3ICsgYjE4O1xuICBjb25zdCByZXN0bzIgPSAocmVzdG8xICogMTAwMDAwMDAgKiAxMDAgKyBwcm9jMTJhMTggKiAxMDApICUgOTc7XG5cbiAgbGV0IHByb2NKdWREVjogYW55ID0gOTggLSByZXN0bzI7XG5cbiAgaWYgKHByb2NKdWREViA8IDEwKSB7XG4gICAgcHJvY0p1ZERWID0gXCIwXCIgKyBwcm9jSnVkRFY7XG4gIH1cblxuICBsZXQgcHJvY0p1ZENvbXBsID0gYjEgLyAxMDAwMCArIGIyIC8gMTAwMDAgKyBiMyAvIDEwMDAwICsgYjQgLyAxMDAwMCArIGI1IC8gMTAwMDAgKyBiNiAvIDEwMDAwICsgYjcgLyAxMDAwMCArIFwiLVwiICsgcHJvY0p1ZERWICsgXCIuXCIgKyBiOCAvIDEwMDAgKyBiOSAvIDEwMCArIGIxMCAvIDEwICsgYjExICsgXCIuXCIgKyBiMTIgLyAxMDAwMDAwICsgXCIuXCIgKyBiMTMgLyAxMDAwMDAgKyBiMTQgLyAxMDAwMCArIFwiLlwiICsgYjE1IC8gMTAwMCArIGIxNiAvIDEwMCArIGIxNyAvIDEwICsgYjE4O1xuXG4gIHByb2NKdWRDb21wbCA9IFwiMDAwMDAwXCIgKyBwcm9jSnVkQ29tcGw7XG4gIGNvbnN0IHJlc3VsdCA9IHByb2NKdWRDb21wbC5zbGljZShwcm9jSnVkQ29tcGwubGVuZ3RoIC0gMjUpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfdGl0dWxvX2F0dWFsKHRpdHVsbzogc3RyaW5nKSB7XG4gIGNvbnN0IHRpdCA9IHRpdHVsbztcbiAgbGV0IGRpZzEgPSAwO1xuICBsZXQgZGlnMiA9IDA7XG4gIGNvbnN0IHRhbSA9IHRpdC5sZW5ndGg7XG4gIGNvbnN0IGVzdGFkbyA9IHRpdC5zdWJzdHIodGFtIC0gNCwgMik7XG4gIHRpdHVsbyA9IHRpdC5zdWJzdHIoMCwgdGFtIC0gMik7XG4gIHRpdHVsbyA9ICcwMDAwMDAwMDAwMDAnICsgdGl0dWxvO1xuICB0aXR1bG8gPSB0aXR1bG8uc3Vic3RyKHRpdHVsby5sZW5ndGggLSAxMSwgdGl0dWxvLmxlbmd0aCAtIDEpO1xuICBjb25zdCBleGNlID0gKGVzdGFkbyA9PT0gJzAxJykgfHwgKGVzdGFkbyA9PT0gJzAyJyk7XG4gIGRpZzEgPSAodGl0dWxvLmNoYXJDb2RlQXQoMCkgLSA0OCkgKiAyICsgKHRpdHVsby5jaGFyQ29kZUF0KDEpIC0gNDgpICogOSArICh0aXR1bG8uY2hhckNvZGVBdCgyKSAtIDQ4KSAqIDggK1xuICAgICh0aXR1bG8uY2hhckNvZGVBdCgzKSAtIDQ4KSAqIDcgKyAodGl0dWxvLmNoYXJDb2RlQXQoNCkgLSA0OCkgKiA2ICsgKHRpdHVsby5jaGFyQ29kZUF0KDUpIC0gNDgpICogNSArXG4gICAgKHRpdHVsby5jaGFyQ29kZUF0KDYpIC0gNDgpICogNCArICh0aXR1bG8uY2hhckNvZGVBdCg3KSAtIDQ4KSAqIDMgKyAodGl0dWxvLmNoYXJDb2RlQXQoOCkgLSA0OCkgKiAyO1xuICBsZXQgcmVzdG8gPSAoZGlnMSAlIDExKTtcbiAgaWYgKHJlc3RvID09PSAwKSB7XG4gICAgaWYgKGV4Y2UpIHtcbiAgICAgIGRpZzEgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaWcxID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJlc3RvID09PSAxKSB7XG4gICAgICBkaWcxID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlnMSA9IDExIC0gcmVzdG87XG4gICAgfVxuICB9XG4gIGRpZzIgPSAodGl0dWxvLmNoYXJDb2RlQXQoOSkgLSA0OCkgKiA0ICsgKHRpdHVsby5jaGFyQ29kZUF0KDEwKSAtIDQ4KSAqIDMgKyBkaWcxICogMjtcbiAgcmVzdG8gPSAoZGlnMiAlIDExKTtcbiAgaWYgKHJlc3RvID09PSAwKSB7XG4gICAgaWYgKGV4Y2UpIHtcbiAgICAgIGRpZzIgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaWcyID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJlc3RvID09PSAxKSB7XG4gICAgICBkaWcyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlnMiA9IDExIC0gcmVzdG87XG4gICAgfVxuICB9XG4gIHJldHVybiBkaWcxLnRvU3RyaW5nKCkgKyBkaWcyLnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfdGl0dWxvKHRpdE51bTogc3RyaW5nKSB7XG4gIHRpdE51bSA9IGdldEFsbERpZ2l0cyh0aXROdW0pO1xuXG4gIGlmICh0aXROdW0ubGVuZ3RoID4gMTEpIHtcbiAgICB0aXROdW0gPSB0aXROdW0uc3Vic3RyKDAsIDExKTtcbiAgfVxuXG4gIHRpdE51bSA9IFwiMDAwMDAwMDBcIiArIHRpdE51bTtcbiAgdGl0TnVtID0gdGl0TnVtLnNsaWNlKHRpdE51bS5sZW5ndGggLSAxMSk7XG5cbiAgbGV0IGExID0gcGFyc2VJbnQodGl0TnVtLnNsaWNlKDEwKSk7XG4gIGxldCBhMiA9IHBhcnNlSW50KHRpdE51bS5zbGljZSg5LCAxMCkpO1xuICBsZXQgYTMgPSBwYXJzZUludCh0aXROdW0uc2xpY2UoOCwgOSkpO1xuICBsZXQgYTQgPSBwYXJzZUludCh0aXROdW0uc2xpY2UoNywgOCkpO1xuICBsZXQgYTUgPSBwYXJzZUludCh0aXROdW0uc2xpY2UoNiwgNykpO1xuICBsZXQgYTYgPSBwYXJzZUludCh0aXROdW0uc2xpY2UoNSwgNikpO1xuICBsZXQgYTcgPSBwYXJzZUludCh0aXROdW0uc2xpY2UoNCwgNSkpO1xuICBsZXQgYTggPSBwYXJzZUludCh0aXROdW0uc2xpY2UoMywgNCkpO1xuICBsZXQgYTkgPSBwYXJzZUludCh0aXROdW0uc2xpY2UoMiwgMykpO1xuICBsZXQgYTEwID0gcGFyc2VJbnQodGl0TnVtLnNsaWNlKDEsIDIpKTtcbiAgbGV0IGExMSA9IHBhcnNlSW50KHRpdE51bS5zbGljZSgwLCAxKSk7XG5cbiAgaWYgKGEyICogMTAgKyBhMSA9PSAwIHx8IGEyICogMTAgKyBhMSA+IDI4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXNzZSBuwrogw6kgc3VzcGVpdG8sIHBvcnF1ZSBhIGlkZW50aWZpY2HDp8OjbyBkYSBcXG5VRiAow7psdGltb3MgMiBkw61naXRvcykgZGV2ZSBlc3RhciBlbnRyZSAwMSBlIDI4LlwiKTtcbiAgfVxuXG4gIGxldCB0aXRFeGNlY2FvMSA9IDA7XG4gIGxldCB0aXRFeGNlY2FvMiA9IDA7XG5cbiAgbGV0IHRpdFByaURpZyA9IChhMyAqIDkgKyBhNCAqIDggKyBhNSAqIDcgKyBhNiAqIDYgKyBhNyAqIDUgKyBhOCAqIDQgKyBhOSAqIDMgKyBhMTAgKiAyICsgYTExICogOSkgJSAxMTtcbiAgaWYgKHRpdFByaURpZyA9PSAwKSB7IHRpdEV4Y2VjYW8xID0gMTsgfVxuICBpZiAodGl0UHJpRGlnID09IDEwKSB7IHRpdFByaURpZyA9IDA7IH1cbiAgaWYgKChhMiAqIDEwICsgYTEgPT0gMSB8fCBhMiAqIDEwICsgYTEgPT0gMikgJiYgKHRpdEV4Y2VjYW8xID09IDEpKSB7IHRpdFByaURpZyA9IDE7IH1cblxuICBsZXQgdGl0U2VnRGlnID0gKHRpdFByaURpZyAqIDkgKyBhMSAqIDggKyBhMiAqIDcpICUgMTE7XG4gIGlmICh0aXRTZWdEaWcgPT0gMCkgeyB0aXRFeGNlY2FvMiA9IDE7IH1cbiAgaWYgKHRpdFNlZ0RpZyA9PSAxMCkgeyB0aXRTZWdEaWcgPSAwOyB9XG4gIGlmICgoYTIgKiAxMCArIGExID09IDEgfHwgYTIgKiAxMCArIGExID09IDIpICYmICh0aXRFeGNlY2FvMiA9PSAxKSkgeyB0aXRTZWdEaWcgPSAxOyB9XG5cbiAgbGV0IHRpdERWOiBhbnkgPSB0aXRQcmlEaWcgKiAxMCArIHRpdFNlZ0RpZztcbiAgaWYgKHRpdERWID09IDApIHsgdGl0RFYgPSBcIjAwXCI7IH1cbiAgaWYgKHRpdERWID4gMCAmJiB0aXREViA8IDEwKSB7IHRpdERWID0gXCIwXCIgKyB0aXREVjsgfVxuXG4gIHJldHVybiB0aXREVi50b1N0cmluZygpO1xufSJdfQ==