@leofcoin/chain 1.7.49 → 1.7.52

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.
@@ -1,4 +1,5 @@
1
- import { B as BigNumber, L as Logger, v as version$1, h as hexZeroPad, i as isBigNumberish, a as arrayify, b as isBytes, T as TransactionMessage, t as toBase58, C as ContractMessage, R as RawTransactionMessage, g as getDefaultExportFromCjs, c as BlockMessage, d as BWMessage, e as BWRequestMessage } from './index-XTbRdu6H.js';
1
+ import { T as TransactionMessage, t as toBase58, C as ContractMessage, R as RawTransactionMessage, B as BlockMessage, a as BWMessage, b as BWRequestMessage } from './index-jJAWNcIz.js';
2
+ import { warn } from 'console';
2
3
 
3
4
  if (!globalThis.DEBUG) {
4
5
  let DEBUG = [];
@@ -34,6 +35,4208 @@ if (!globalThis.debug) {
34
35
  globalThis.createDebugger = createDebugger;
35
36
  }
36
37
 
38
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
39
+
40
+ function getDefaultExportFromCjs (x) {
41
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
42
+ }
43
+
44
+ function getAugmentedNamespace(n) {
45
+ if (n.__esModule) return n;
46
+ var f = n.default;
47
+ if (typeof f == "function") {
48
+ var a = function a () {
49
+ if (this instanceof a) {
50
+ return Reflect.construct(f, arguments, this.constructor);
51
+ }
52
+ return f.apply(this, arguments);
53
+ };
54
+ a.prototype = f.prototype;
55
+ } else a = {};
56
+ Object.defineProperty(a, '__esModule', {value: true});
57
+ Object.keys(n).forEach(function (k) {
58
+ var d = Object.getOwnPropertyDescriptor(n, k);
59
+ Object.defineProperty(a, k, d.get ? d : {
60
+ enumerable: true,
61
+ get: function () {
62
+ return n[k];
63
+ }
64
+ });
65
+ });
66
+ return a;
67
+ }
68
+
69
+ var bn = {exports: {}};
70
+
71
+ var _nodeResolve_empty = {};
72
+
73
+ var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
74
+ __proto__: null,
75
+ default: _nodeResolve_empty
76
+ });
77
+
78
+ var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
79
+
80
+ bn.exports;
81
+
82
+ (function (module) {
83
+ (function (module, exports) {
84
+
85
+ // Utils
86
+ function assert (val, msg) {
87
+ if (!val) throw new Error(msg || 'Assertion failed');
88
+ }
89
+
90
+ // Could use `inherits` module, but don't want to move from single file
91
+ // architecture yet.
92
+ function inherits (ctor, superCtor) {
93
+ ctor.super_ = superCtor;
94
+ var TempCtor = function () {};
95
+ TempCtor.prototype = superCtor.prototype;
96
+ ctor.prototype = new TempCtor();
97
+ ctor.prototype.constructor = ctor;
98
+ }
99
+
100
+ // BN
101
+
102
+ function BN (number, base, endian) {
103
+ if (BN.isBN(number)) {
104
+ return number;
105
+ }
106
+
107
+ this.negative = 0;
108
+ this.words = null;
109
+ this.length = 0;
110
+
111
+ // Reduction context
112
+ this.red = null;
113
+
114
+ if (number !== null) {
115
+ if (base === 'le' || base === 'be') {
116
+ endian = base;
117
+ base = 10;
118
+ }
119
+
120
+ this._init(number || 0, base || 10, endian || 'be');
121
+ }
122
+ }
123
+ if (typeof module === 'object') {
124
+ module.exports = BN;
125
+ } else {
126
+ exports.BN = BN;
127
+ }
128
+
129
+ BN.BN = BN;
130
+ BN.wordSize = 26;
131
+
132
+ var Buffer;
133
+ try {
134
+ if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
135
+ Buffer = window.Buffer;
136
+ } else {
137
+ Buffer = require$$0.Buffer;
138
+ }
139
+ } catch (e) {
140
+ }
141
+
142
+ BN.isBN = function isBN (num) {
143
+ if (num instanceof BN) {
144
+ return true;
145
+ }
146
+
147
+ return num !== null && typeof num === 'object' &&
148
+ num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
149
+ };
150
+
151
+ BN.max = function max (left, right) {
152
+ if (left.cmp(right) > 0) return left;
153
+ return right;
154
+ };
155
+
156
+ BN.min = function min (left, right) {
157
+ if (left.cmp(right) < 0) return left;
158
+ return right;
159
+ };
160
+
161
+ BN.prototype._init = function init (number, base, endian) {
162
+ if (typeof number === 'number') {
163
+ return this._initNumber(number, base, endian);
164
+ }
165
+
166
+ if (typeof number === 'object') {
167
+ return this._initArray(number, base, endian);
168
+ }
169
+
170
+ if (base === 'hex') {
171
+ base = 16;
172
+ }
173
+ assert(base === (base | 0) && base >= 2 && base <= 36);
174
+
175
+ number = number.toString().replace(/\s+/g, '');
176
+ var start = 0;
177
+ if (number[0] === '-') {
178
+ start++;
179
+ this.negative = 1;
180
+ }
181
+
182
+ if (start < number.length) {
183
+ if (base === 16) {
184
+ this._parseHex(number, start, endian);
185
+ } else {
186
+ this._parseBase(number, base, start);
187
+ if (endian === 'le') {
188
+ this._initArray(this.toArray(), base, endian);
189
+ }
190
+ }
191
+ }
192
+ };
193
+
194
+ BN.prototype._initNumber = function _initNumber (number, base, endian) {
195
+ if (number < 0) {
196
+ this.negative = 1;
197
+ number = -number;
198
+ }
199
+ if (number < 0x4000000) {
200
+ this.words = [number & 0x3ffffff];
201
+ this.length = 1;
202
+ } else if (number < 0x10000000000000) {
203
+ this.words = [
204
+ number & 0x3ffffff,
205
+ (number / 0x4000000) & 0x3ffffff
206
+ ];
207
+ this.length = 2;
208
+ } else {
209
+ assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
210
+ this.words = [
211
+ number & 0x3ffffff,
212
+ (number / 0x4000000) & 0x3ffffff,
213
+ 1
214
+ ];
215
+ this.length = 3;
216
+ }
217
+
218
+ if (endian !== 'le') return;
219
+
220
+ // Reverse the bytes
221
+ this._initArray(this.toArray(), base, endian);
222
+ };
223
+
224
+ BN.prototype._initArray = function _initArray (number, base, endian) {
225
+ // Perhaps a Uint8Array
226
+ assert(typeof number.length === 'number');
227
+ if (number.length <= 0) {
228
+ this.words = [0];
229
+ this.length = 1;
230
+ return this;
231
+ }
232
+
233
+ this.length = Math.ceil(number.length / 3);
234
+ this.words = new Array(this.length);
235
+ for (var i = 0; i < this.length; i++) {
236
+ this.words[i] = 0;
237
+ }
238
+
239
+ var j, w;
240
+ var off = 0;
241
+ if (endian === 'be') {
242
+ for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
243
+ w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
244
+ this.words[j] |= (w << off) & 0x3ffffff;
245
+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
246
+ off += 24;
247
+ if (off >= 26) {
248
+ off -= 26;
249
+ j++;
250
+ }
251
+ }
252
+ } else if (endian === 'le') {
253
+ for (i = 0, j = 0; i < number.length; i += 3) {
254
+ w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
255
+ this.words[j] |= (w << off) & 0x3ffffff;
256
+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
257
+ off += 24;
258
+ if (off >= 26) {
259
+ off -= 26;
260
+ j++;
261
+ }
262
+ }
263
+ }
264
+ return this._strip();
265
+ };
266
+
267
+ function parseHex4Bits (string, index) {
268
+ var c = string.charCodeAt(index);
269
+ // '0' - '9'
270
+ if (c >= 48 && c <= 57) {
271
+ return c - 48;
272
+ // 'A' - 'F'
273
+ } else if (c >= 65 && c <= 70) {
274
+ return c - 55;
275
+ // 'a' - 'f'
276
+ } else if (c >= 97 && c <= 102) {
277
+ return c - 87;
278
+ } else {
279
+ assert(false, 'Invalid character in ' + string);
280
+ }
281
+ }
282
+
283
+ function parseHexByte (string, lowerBound, index) {
284
+ var r = parseHex4Bits(string, index);
285
+ if (index - 1 >= lowerBound) {
286
+ r |= parseHex4Bits(string, index - 1) << 4;
287
+ }
288
+ return r;
289
+ }
290
+
291
+ BN.prototype._parseHex = function _parseHex (number, start, endian) {
292
+ // Create possibly bigger array to ensure that it fits the number
293
+ this.length = Math.ceil((number.length - start) / 6);
294
+ this.words = new Array(this.length);
295
+ for (var i = 0; i < this.length; i++) {
296
+ this.words[i] = 0;
297
+ }
298
+
299
+ // 24-bits chunks
300
+ var off = 0;
301
+ var j = 0;
302
+
303
+ var w;
304
+ if (endian === 'be') {
305
+ for (i = number.length - 1; i >= start; i -= 2) {
306
+ w = parseHexByte(number, start, i) << off;
307
+ this.words[j] |= w & 0x3ffffff;
308
+ if (off >= 18) {
309
+ off -= 18;
310
+ j += 1;
311
+ this.words[j] |= w >>> 26;
312
+ } else {
313
+ off += 8;
314
+ }
315
+ }
316
+ } else {
317
+ var parseLength = number.length - start;
318
+ for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
319
+ w = parseHexByte(number, start, i) << off;
320
+ this.words[j] |= w & 0x3ffffff;
321
+ if (off >= 18) {
322
+ off -= 18;
323
+ j += 1;
324
+ this.words[j] |= w >>> 26;
325
+ } else {
326
+ off += 8;
327
+ }
328
+ }
329
+ }
330
+
331
+ this._strip();
332
+ };
333
+
334
+ function parseBase (str, start, end, mul) {
335
+ var r = 0;
336
+ var b = 0;
337
+ var len = Math.min(str.length, end);
338
+ for (var i = start; i < len; i++) {
339
+ var c = str.charCodeAt(i) - 48;
340
+
341
+ r *= mul;
342
+
343
+ // 'a'
344
+ if (c >= 49) {
345
+ b = c - 49 + 0xa;
346
+
347
+ // 'A'
348
+ } else if (c >= 17) {
349
+ b = c - 17 + 0xa;
350
+
351
+ // '0' - '9'
352
+ } else {
353
+ b = c;
354
+ }
355
+ assert(c >= 0 && b < mul, 'Invalid character');
356
+ r += b;
357
+ }
358
+ return r;
359
+ }
360
+
361
+ BN.prototype._parseBase = function _parseBase (number, base, start) {
362
+ // Initialize as zero
363
+ this.words = [0];
364
+ this.length = 1;
365
+
366
+ // Find length of limb in base
367
+ for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
368
+ limbLen++;
369
+ }
370
+ limbLen--;
371
+ limbPow = (limbPow / base) | 0;
372
+
373
+ var total = number.length - start;
374
+ var mod = total % limbLen;
375
+ var end = Math.min(total, total - mod) + start;
376
+
377
+ var word = 0;
378
+ for (var i = start; i < end; i += limbLen) {
379
+ word = parseBase(number, i, i + limbLen, base);
380
+
381
+ this.imuln(limbPow);
382
+ if (this.words[0] + word < 0x4000000) {
383
+ this.words[0] += word;
384
+ } else {
385
+ this._iaddn(word);
386
+ }
387
+ }
388
+
389
+ if (mod !== 0) {
390
+ var pow = 1;
391
+ word = parseBase(number, i, number.length, base);
392
+
393
+ for (i = 0; i < mod; i++) {
394
+ pow *= base;
395
+ }
396
+
397
+ this.imuln(pow);
398
+ if (this.words[0] + word < 0x4000000) {
399
+ this.words[0] += word;
400
+ } else {
401
+ this._iaddn(word);
402
+ }
403
+ }
404
+
405
+ this._strip();
406
+ };
407
+
408
+ BN.prototype.copy = function copy (dest) {
409
+ dest.words = new Array(this.length);
410
+ for (var i = 0; i < this.length; i++) {
411
+ dest.words[i] = this.words[i];
412
+ }
413
+ dest.length = this.length;
414
+ dest.negative = this.negative;
415
+ dest.red = this.red;
416
+ };
417
+
418
+ function move (dest, src) {
419
+ dest.words = src.words;
420
+ dest.length = src.length;
421
+ dest.negative = src.negative;
422
+ dest.red = src.red;
423
+ }
424
+
425
+ BN.prototype._move = function _move (dest) {
426
+ move(dest, this);
427
+ };
428
+
429
+ BN.prototype.clone = function clone () {
430
+ var r = new BN(null);
431
+ this.copy(r);
432
+ return r;
433
+ };
434
+
435
+ BN.prototype._expand = function _expand (size) {
436
+ while (this.length < size) {
437
+ this.words[this.length++] = 0;
438
+ }
439
+ return this;
440
+ };
441
+
442
+ // Remove leading `0` from `this`
443
+ BN.prototype._strip = function strip () {
444
+ while (this.length > 1 && this.words[this.length - 1] === 0) {
445
+ this.length--;
446
+ }
447
+ return this._normSign();
448
+ };
449
+
450
+ BN.prototype._normSign = function _normSign () {
451
+ // -0 = 0
452
+ if (this.length === 1 && this.words[0] === 0) {
453
+ this.negative = 0;
454
+ }
455
+ return this;
456
+ };
457
+
458
+ // Check Symbol.for because not everywhere where Symbol defined
459
+ // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility
460
+ if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {
461
+ try {
462
+ BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;
463
+ } catch (e) {
464
+ BN.prototype.inspect = inspect;
465
+ }
466
+ } else {
467
+ BN.prototype.inspect = inspect;
468
+ }
469
+
470
+ function inspect () {
471
+ return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
472
+ }
473
+
474
+ /*
475
+
476
+ var zeros = [];
477
+ var groupSizes = [];
478
+ var groupBases = [];
479
+
480
+ var s = '';
481
+ var i = -1;
482
+ while (++i < BN.wordSize) {
483
+ zeros[i] = s;
484
+ s += '0';
485
+ }
486
+ groupSizes[0] = 0;
487
+ groupSizes[1] = 0;
488
+ groupBases[0] = 0;
489
+ groupBases[1] = 0;
490
+ var base = 2 - 1;
491
+ while (++base < 36 + 1) {
492
+ var groupSize = 0;
493
+ var groupBase = 1;
494
+ while (groupBase < (1 << BN.wordSize) / base) {
495
+ groupBase *= base;
496
+ groupSize += 1;
497
+ }
498
+ groupSizes[base] = groupSize;
499
+ groupBases[base] = groupBase;
500
+ }
501
+
502
+ */
503
+
504
+ var zeros = [
505
+ '',
506
+ '0',
507
+ '00',
508
+ '000',
509
+ '0000',
510
+ '00000',
511
+ '000000',
512
+ '0000000',
513
+ '00000000',
514
+ '000000000',
515
+ '0000000000',
516
+ '00000000000',
517
+ '000000000000',
518
+ '0000000000000',
519
+ '00000000000000',
520
+ '000000000000000',
521
+ '0000000000000000',
522
+ '00000000000000000',
523
+ '000000000000000000',
524
+ '0000000000000000000',
525
+ '00000000000000000000',
526
+ '000000000000000000000',
527
+ '0000000000000000000000',
528
+ '00000000000000000000000',
529
+ '000000000000000000000000',
530
+ '0000000000000000000000000'
531
+ ];
532
+
533
+ var groupSizes = [
534
+ 0, 0,
535
+ 25, 16, 12, 11, 10, 9, 8,
536
+ 8, 7, 7, 7, 7, 6, 6,
537
+ 6, 6, 6, 6, 6, 5, 5,
538
+ 5, 5, 5, 5, 5, 5, 5,
539
+ 5, 5, 5, 5, 5, 5, 5
540
+ ];
541
+
542
+ var groupBases = [
543
+ 0, 0,
544
+ 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
545
+ 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
546
+ 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
547
+ 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
548
+ 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
549
+ ];
550
+
551
+ BN.prototype.toString = function toString (base, padding) {
552
+ base = base || 10;
553
+ padding = padding | 0 || 1;
554
+
555
+ var out;
556
+ if (base === 16 || base === 'hex') {
557
+ out = '';
558
+ var off = 0;
559
+ var carry = 0;
560
+ for (var i = 0; i < this.length; i++) {
561
+ var w = this.words[i];
562
+ var word = (((w << off) | carry) & 0xffffff).toString(16);
563
+ carry = (w >>> (24 - off)) & 0xffffff;
564
+ off += 2;
565
+ if (off >= 26) {
566
+ off -= 26;
567
+ i--;
568
+ }
569
+ if (carry !== 0 || i !== this.length - 1) {
570
+ out = zeros[6 - word.length] + word + out;
571
+ } else {
572
+ out = word + out;
573
+ }
574
+ }
575
+ if (carry !== 0) {
576
+ out = carry.toString(16) + out;
577
+ }
578
+ while (out.length % padding !== 0) {
579
+ out = '0' + out;
580
+ }
581
+ if (this.negative !== 0) {
582
+ out = '-' + out;
583
+ }
584
+ return out;
585
+ }
586
+
587
+ if (base === (base | 0) && base >= 2 && base <= 36) {
588
+ // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
589
+ var groupSize = groupSizes[base];
590
+ // var groupBase = Math.pow(base, groupSize);
591
+ var groupBase = groupBases[base];
592
+ out = '';
593
+ var c = this.clone();
594
+ c.negative = 0;
595
+ while (!c.isZero()) {
596
+ var r = c.modrn(groupBase).toString(base);
597
+ c = c.idivn(groupBase);
598
+
599
+ if (!c.isZero()) {
600
+ out = zeros[groupSize - r.length] + r + out;
601
+ } else {
602
+ out = r + out;
603
+ }
604
+ }
605
+ if (this.isZero()) {
606
+ out = '0' + out;
607
+ }
608
+ while (out.length % padding !== 0) {
609
+ out = '0' + out;
610
+ }
611
+ if (this.negative !== 0) {
612
+ out = '-' + out;
613
+ }
614
+ return out;
615
+ }
616
+
617
+ assert(false, 'Base should be between 2 and 36');
618
+ };
619
+
620
+ BN.prototype.toNumber = function toNumber () {
621
+ var ret = this.words[0];
622
+ if (this.length === 2) {
623
+ ret += this.words[1] * 0x4000000;
624
+ } else if (this.length === 3 && this.words[2] === 0x01) {
625
+ // NOTE: at this stage it is known that the top bit is set
626
+ ret += 0x10000000000000 + (this.words[1] * 0x4000000);
627
+ } else if (this.length > 2) {
628
+ assert(false, 'Number can only safely store up to 53 bits');
629
+ }
630
+ return (this.negative !== 0) ? -ret : ret;
631
+ };
632
+
633
+ BN.prototype.toJSON = function toJSON () {
634
+ return this.toString(16, 2);
635
+ };
636
+
637
+ if (Buffer) {
638
+ BN.prototype.toBuffer = function toBuffer (endian, length) {
639
+ return this.toArrayLike(Buffer, endian, length);
640
+ };
641
+ }
642
+
643
+ BN.prototype.toArray = function toArray (endian, length) {
644
+ return this.toArrayLike(Array, endian, length);
645
+ };
646
+
647
+ var allocate = function allocate (ArrayType, size) {
648
+ if (ArrayType.allocUnsafe) {
649
+ return ArrayType.allocUnsafe(size);
650
+ }
651
+ return new ArrayType(size);
652
+ };
653
+
654
+ BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
655
+ this._strip();
656
+
657
+ var byteLength = this.byteLength();
658
+ var reqLength = length || Math.max(1, byteLength);
659
+ assert(byteLength <= reqLength, 'byte array longer than desired length');
660
+ assert(reqLength > 0, 'Requested array length <= 0');
661
+
662
+ var res = allocate(ArrayType, reqLength);
663
+ var postfix = endian === 'le' ? 'LE' : 'BE';
664
+ this['_toArrayLike' + postfix](res, byteLength);
665
+ return res;
666
+ };
667
+
668
+ BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {
669
+ var position = 0;
670
+ var carry = 0;
671
+
672
+ for (var i = 0, shift = 0; i < this.length; i++) {
673
+ var word = (this.words[i] << shift) | carry;
674
+
675
+ res[position++] = word & 0xff;
676
+ if (position < res.length) {
677
+ res[position++] = (word >> 8) & 0xff;
678
+ }
679
+ if (position < res.length) {
680
+ res[position++] = (word >> 16) & 0xff;
681
+ }
682
+
683
+ if (shift === 6) {
684
+ if (position < res.length) {
685
+ res[position++] = (word >> 24) & 0xff;
686
+ }
687
+ carry = 0;
688
+ shift = 0;
689
+ } else {
690
+ carry = word >>> 24;
691
+ shift += 2;
692
+ }
693
+ }
694
+
695
+ if (position < res.length) {
696
+ res[position++] = carry;
697
+
698
+ while (position < res.length) {
699
+ res[position++] = 0;
700
+ }
701
+ }
702
+ };
703
+
704
+ BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {
705
+ var position = res.length - 1;
706
+ var carry = 0;
707
+
708
+ for (var i = 0, shift = 0; i < this.length; i++) {
709
+ var word = (this.words[i] << shift) | carry;
710
+
711
+ res[position--] = word & 0xff;
712
+ if (position >= 0) {
713
+ res[position--] = (word >> 8) & 0xff;
714
+ }
715
+ if (position >= 0) {
716
+ res[position--] = (word >> 16) & 0xff;
717
+ }
718
+
719
+ if (shift === 6) {
720
+ if (position >= 0) {
721
+ res[position--] = (word >> 24) & 0xff;
722
+ }
723
+ carry = 0;
724
+ shift = 0;
725
+ } else {
726
+ carry = word >>> 24;
727
+ shift += 2;
728
+ }
729
+ }
730
+
731
+ if (position >= 0) {
732
+ res[position--] = carry;
733
+
734
+ while (position >= 0) {
735
+ res[position--] = 0;
736
+ }
737
+ }
738
+ };
739
+
740
+ if (Math.clz32) {
741
+ BN.prototype._countBits = function _countBits (w) {
742
+ return 32 - Math.clz32(w);
743
+ };
744
+ } else {
745
+ BN.prototype._countBits = function _countBits (w) {
746
+ var t = w;
747
+ var r = 0;
748
+ if (t >= 0x1000) {
749
+ r += 13;
750
+ t >>>= 13;
751
+ }
752
+ if (t >= 0x40) {
753
+ r += 7;
754
+ t >>>= 7;
755
+ }
756
+ if (t >= 0x8) {
757
+ r += 4;
758
+ t >>>= 4;
759
+ }
760
+ if (t >= 0x02) {
761
+ r += 2;
762
+ t >>>= 2;
763
+ }
764
+ return r + t;
765
+ };
766
+ }
767
+
768
+ BN.prototype._zeroBits = function _zeroBits (w) {
769
+ // Short-cut
770
+ if (w === 0) return 26;
771
+
772
+ var t = w;
773
+ var r = 0;
774
+ if ((t & 0x1fff) === 0) {
775
+ r += 13;
776
+ t >>>= 13;
777
+ }
778
+ if ((t & 0x7f) === 0) {
779
+ r += 7;
780
+ t >>>= 7;
781
+ }
782
+ if ((t & 0xf) === 0) {
783
+ r += 4;
784
+ t >>>= 4;
785
+ }
786
+ if ((t & 0x3) === 0) {
787
+ r += 2;
788
+ t >>>= 2;
789
+ }
790
+ if ((t & 0x1) === 0) {
791
+ r++;
792
+ }
793
+ return r;
794
+ };
795
+
796
+ // Return number of used bits in a BN
797
+ BN.prototype.bitLength = function bitLength () {
798
+ var w = this.words[this.length - 1];
799
+ var hi = this._countBits(w);
800
+ return (this.length - 1) * 26 + hi;
801
+ };
802
+
803
+ function toBitArray (num) {
804
+ var w = new Array(num.bitLength());
805
+
806
+ for (var bit = 0; bit < w.length; bit++) {
807
+ var off = (bit / 26) | 0;
808
+ var wbit = bit % 26;
809
+
810
+ w[bit] = (num.words[off] >>> wbit) & 0x01;
811
+ }
812
+
813
+ return w;
814
+ }
815
+
816
+ // Number of trailing zero bits
817
+ BN.prototype.zeroBits = function zeroBits () {
818
+ if (this.isZero()) return 0;
819
+
820
+ var r = 0;
821
+ for (var i = 0; i < this.length; i++) {
822
+ var b = this._zeroBits(this.words[i]);
823
+ r += b;
824
+ if (b !== 26) break;
825
+ }
826
+ return r;
827
+ };
828
+
829
+ BN.prototype.byteLength = function byteLength () {
830
+ return Math.ceil(this.bitLength() / 8);
831
+ };
832
+
833
+ BN.prototype.toTwos = function toTwos (width) {
834
+ if (this.negative !== 0) {
835
+ return this.abs().inotn(width).iaddn(1);
836
+ }
837
+ return this.clone();
838
+ };
839
+
840
+ BN.prototype.fromTwos = function fromTwos (width) {
841
+ if (this.testn(width - 1)) {
842
+ return this.notn(width).iaddn(1).ineg();
843
+ }
844
+ return this.clone();
845
+ };
846
+
847
+ BN.prototype.isNeg = function isNeg () {
848
+ return this.negative !== 0;
849
+ };
850
+
851
+ // Return negative clone of `this`
852
+ BN.prototype.neg = function neg () {
853
+ return this.clone().ineg();
854
+ };
855
+
856
+ BN.prototype.ineg = function ineg () {
857
+ if (!this.isZero()) {
858
+ this.negative ^= 1;
859
+ }
860
+
861
+ return this;
862
+ };
863
+
864
+ // Or `num` with `this` in-place
865
+ BN.prototype.iuor = function iuor (num) {
866
+ while (this.length < num.length) {
867
+ this.words[this.length++] = 0;
868
+ }
869
+
870
+ for (var i = 0; i < num.length; i++) {
871
+ this.words[i] = this.words[i] | num.words[i];
872
+ }
873
+
874
+ return this._strip();
875
+ };
876
+
877
+ BN.prototype.ior = function ior (num) {
878
+ assert((this.negative | num.negative) === 0);
879
+ return this.iuor(num);
880
+ };
881
+
882
+ // Or `num` with `this`
883
+ BN.prototype.or = function or (num) {
884
+ if (this.length > num.length) return this.clone().ior(num);
885
+ return num.clone().ior(this);
886
+ };
887
+
888
+ BN.prototype.uor = function uor (num) {
889
+ if (this.length > num.length) return this.clone().iuor(num);
890
+ return num.clone().iuor(this);
891
+ };
892
+
893
+ // And `num` with `this` in-place
894
+ BN.prototype.iuand = function iuand (num) {
895
+ // b = min-length(num, this)
896
+ var b;
897
+ if (this.length > num.length) {
898
+ b = num;
899
+ } else {
900
+ b = this;
901
+ }
902
+
903
+ for (var i = 0; i < b.length; i++) {
904
+ this.words[i] = this.words[i] & num.words[i];
905
+ }
906
+
907
+ this.length = b.length;
908
+
909
+ return this._strip();
910
+ };
911
+
912
+ BN.prototype.iand = function iand (num) {
913
+ assert((this.negative | num.negative) === 0);
914
+ return this.iuand(num);
915
+ };
916
+
917
+ // And `num` with `this`
918
+ BN.prototype.and = function and (num) {
919
+ if (this.length > num.length) return this.clone().iand(num);
920
+ return num.clone().iand(this);
921
+ };
922
+
923
+ BN.prototype.uand = function uand (num) {
924
+ if (this.length > num.length) return this.clone().iuand(num);
925
+ return num.clone().iuand(this);
926
+ };
927
+
928
+ // Xor `num` with `this` in-place
929
+ BN.prototype.iuxor = function iuxor (num) {
930
+ // a.length > b.length
931
+ var a;
932
+ var b;
933
+ if (this.length > num.length) {
934
+ a = this;
935
+ b = num;
936
+ } else {
937
+ a = num;
938
+ b = this;
939
+ }
940
+
941
+ for (var i = 0; i < b.length; i++) {
942
+ this.words[i] = a.words[i] ^ b.words[i];
943
+ }
944
+
945
+ if (this !== a) {
946
+ for (; i < a.length; i++) {
947
+ this.words[i] = a.words[i];
948
+ }
949
+ }
950
+
951
+ this.length = a.length;
952
+
953
+ return this._strip();
954
+ };
955
+
956
+ BN.prototype.ixor = function ixor (num) {
957
+ assert((this.negative | num.negative) === 0);
958
+ return this.iuxor(num);
959
+ };
960
+
961
+ // Xor `num` with `this`
962
+ BN.prototype.xor = function xor (num) {
963
+ if (this.length > num.length) return this.clone().ixor(num);
964
+ return num.clone().ixor(this);
965
+ };
966
+
967
+ BN.prototype.uxor = function uxor (num) {
968
+ if (this.length > num.length) return this.clone().iuxor(num);
969
+ return num.clone().iuxor(this);
970
+ };
971
+
972
+ // Not ``this`` with ``width`` bitwidth
973
+ BN.prototype.inotn = function inotn (width) {
974
+ assert(typeof width === 'number' && width >= 0);
975
+
976
+ var bytesNeeded = Math.ceil(width / 26) | 0;
977
+ var bitsLeft = width % 26;
978
+
979
+ // Extend the buffer with leading zeroes
980
+ this._expand(bytesNeeded);
981
+
982
+ if (bitsLeft > 0) {
983
+ bytesNeeded--;
984
+ }
985
+
986
+ // Handle complete words
987
+ for (var i = 0; i < bytesNeeded; i++) {
988
+ this.words[i] = ~this.words[i] & 0x3ffffff;
989
+ }
990
+
991
+ // Handle the residue
992
+ if (bitsLeft > 0) {
993
+ this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
994
+ }
995
+
996
+ // And remove leading zeroes
997
+ return this._strip();
998
+ };
999
+
1000
+ BN.prototype.notn = function notn (width) {
1001
+ return this.clone().inotn(width);
1002
+ };
1003
+
1004
+ // Set `bit` of `this`
1005
+ BN.prototype.setn = function setn (bit, val) {
1006
+ assert(typeof bit === 'number' && bit >= 0);
1007
+
1008
+ var off = (bit / 26) | 0;
1009
+ var wbit = bit % 26;
1010
+
1011
+ this._expand(off + 1);
1012
+
1013
+ if (val) {
1014
+ this.words[off] = this.words[off] | (1 << wbit);
1015
+ } else {
1016
+ this.words[off] = this.words[off] & ~(1 << wbit);
1017
+ }
1018
+
1019
+ return this._strip();
1020
+ };
1021
+
1022
+ // Add `num` to `this` in-place
1023
+ BN.prototype.iadd = function iadd (num) {
1024
+ var r;
1025
+
1026
+ // negative + positive
1027
+ if (this.negative !== 0 && num.negative === 0) {
1028
+ this.negative = 0;
1029
+ r = this.isub(num);
1030
+ this.negative ^= 1;
1031
+ return this._normSign();
1032
+
1033
+ // positive + negative
1034
+ } else if (this.negative === 0 && num.negative !== 0) {
1035
+ num.negative = 0;
1036
+ r = this.isub(num);
1037
+ num.negative = 1;
1038
+ return r._normSign();
1039
+ }
1040
+
1041
+ // a.length > b.length
1042
+ var a, b;
1043
+ if (this.length > num.length) {
1044
+ a = this;
1045
+ b = num;
1046
+ } else {
1047
+ a = num;
1048
+ b = this;
1049
+ }
1050
+
1051
+ var carry = 0;
1052
+ for (var i = 0; i < b.length; i++) {
1053
+ r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
1054
+ this.words[i] = r & 0x3ffffff;
1055
+ carry = r >>> 26;
1056
+ }
1057
+ for (; carry !== 0 && i < a.length; i++) {
1058
+ r = (a.words[i] | 0) + carry;
1059
+ this.words[i] = r & 0x3ffffff;
1060
+ carry = r >>> 26;
1061
+ }
1062
+
1063
+ this.length = a.length;
1064
+ if (carry !== 0) {
1065
+ this.words[this.length] = carry;
1066
+ this.length++;
1067
+ // Copy the rest of the words
1068
+ } else if (a !== this) {
1069
+ for (; i < a.length; i++) {
1070
+ this.words[i] = a.words[i];
1071
+ }
1072
+ }
1073
+
1074
+ return this;
1075
+ };
1076
+
1077
+ // Add `num` to `this`
1078
+ BN.prototype.add = function add (num) {
1079
+ var res;
1080
+ if (num.negative !== 0 && this.negative === 0) {
1081
+ num.negative = 0;
1082
+ res = this.sub(num);
1083
+ num.negative ^= 1;
1084
+ return res;
1085
+ } else if (num.negative === 0 && this.negative !== 0) {
1086
+ this.negative = 0;
1087
+ res = num.sub(this);
1088
+ this.negative = 1;
1089
+ return res;
1090
+ }
1091
+
1092
+ if (this.length > num.length) return this.clone().iadd(num);
1093
+
1094
+ return num.clone().iadd(this);
1095
+ };
1096
+
1097
+ // Subtract `num` from `this` in-place
1098
+ BN.prototype.isub = function isub (num) {
1099
+ // this - (-num) = this + num
1100
+ if (num.negative !== 0) {
1101
+ num.negative = 0;
1102
+ var r = this.iadd(num);
1103
+ num.negative = 1;
1104
+ return r._normSign();
1105
+
1106
+ // -this - num = -(this + num)
1107
+ } else if (this.negative !== 0) {
1108
+ this.negative = 0;
1109
+ this.iadd(num);
1110
+ this.negative = 1;
1111
+ return this._normSign();
1112
+ }
1113
+
1114
+ // At this point both numbers are positive
1115
+ var cmp = this.cmp(num);
1116
+
1117
+ // Optimization - zeroify
1118
+ if (cmp === 0) {
1119
+ this.negative = 0;
1120
+ this.length = 1;
1121
+ this.words[0] = 0;
1122
+ return this;
1123
+ }
1124
+
1125
+ // a > b
1126
+ var a, b;
1127
+ if (cmp > 0) {
1128
+ a = this;
1129
+ b = num;
1130
+ } else {
1131
+ a = num;
1132
+ b = this;
1133
+ }
1134
+
1135
+ var carry = 0;
1136
+ for (var i = 0; i < b.length; i++) {
1137
+ r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
1138
+ carry = r >> 26;
1139
+ this.words[i] = r & 0x3ffffff;
1140
+ }
1141
+ for (; carry !== 0 && i < a.length; i++) {
1142
+ r = (a.words[i] | 0) + carry;
1143
+ carry = r >> 26;
1144
+ this.words[i] = r & 0x3ffffff;
1145
+ }
1146
+
1147
+ // Copy rest of the words
1148
+ if (carry === 0 && i < a.length && a !== this) {
1149
+ for (; i < a.length; i++) {
1150
+ this.words[i] = a.words[i];
1151
+ }
1152
+ }
1153
+
1154
+ this.length = Math.max(this.length, i);
1155
+
1156
+ if (a !== this) {
1157
+ this.negative = 1;
1158
+ }
1159
+
1160
+ return this._strip();
1161
+ };
1162
+
1163
+ // Subtract `num` from `this`
1164
+ BN.prototype.sub = function sub (num) {
1165
+ return this.clone().isub(num);
1166
+ };
1167
+
1168
+ function smallMulTo (self, num, out) {
1169
+ out.negative = num.negative ^ self.negative;
1170
+ var len = (self.length + num.length) | 0;
1171
+ out.length = len;
1172
+ len = (len - 1) | 0;
1173
+
1174
+ // Peel one iteration (compiler can't do it, because of code complexity)
1175
+ var a = self.words[0] | 0;
1176
+ var b = num.words[0] | 0;
1177
+ var r = a * b;
1178
+
1179
+ var lo = r & 0x3ffffff;
1180
+ var carry = (r / 0x4000000) | 0;
1181
+ out.words[0] = lo;
1182
+
1183
+ for (var k = 1; k < len; k++) {
1184
+ // Sum all words with the same `i + j = k` and accumulate `ncarry`,
1185
+ // note that ncarry could be >= 0x3ffffff
1186
+ var ncarry = carry >>> 26;
1187
+ var rword = carry & 0x3ffffff;
1188
+ var maxJ = Math.min(k, num.length - 1);
1189
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1190
+ var i = (k - j) | 0;
1191
+ a = self.words[i] | 0;
1192
+ b = num.words[j] | 0;
1193
+ r = a * b + rword;
1194
+ ncarry += (r / 0x4000000) | 0;
1195
+ rword = r & 0x3ffffff;
1196
+ }
1197
+ out.words[k] = rword | 0;
1198
+ carry = ncarry | 0;
1199
+ }
1200
+ if (carry !== 0) {
1201
+ out.words[k] = carry | 0;
1202
+ } else {
1203
+ out.length--;
1204
+ }
1205
+
1206
+ return out._strip();
1207
+ }
1208
+
1209
+ // TODO(indutny): it may be reasonable to omit it for users who don't need
1210
+ // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
1211
+ // multiplication (like elliptic secp256k1).
1212
+ var comb10MulTo = function comb10MulTo (self, num, out) {
1213
+ var a = self.words;
1214
+ var b = num.words;
1215
+ var o = out.words;
1216
+ var c = 0;
1217
+ var lo;
1218
+ var mid;
1219
+ var hi;
1220
+ var a0 = a[0] | 0;
1221
+ var al0 = a0 & 0x1fff;
1222
+ var ah0 = a0 >>> 13;
1223
+ var a1 = a[1] | 0;
1224
+ var al1 = a1 & 0x1fff;
1225
+ var ah1 = a1 >>> 13;
1226
+ var a2 = a[2] | 0;
1227
+ var al2 = a2 & 0x1fff;
1228
+ var ah2 = a2 >>> 13;
1229
+ var a3 = a[3] | 0;
1230
+ var al3 = a3 & 0x1fff;
1231
+ var ah3 = a3 >>> 13;
1232
+ var a4 = a[4] | 0;
1233
+ var al4 = a4 & 0x1fff;
1234
+ var ah4 = a4 >>> 13;
1235
+ var a5 = a[5] | 0;
1236
+ var al5 = a5 & 0x1fff;
1237
+ var ah5 = a5 >>> 13;
1238
+ var a6 = a[6] | 0;
1239
+ var al6 = a6 & 0x1fff;
1240
+ var ah6 = a6 >>> 13;
1241
+ var a7 = a[7] | 0;
1242
+ var al7 = a7 & 0x1fff;
1243
+ var ah7 = a7 >>> 13;
1244
+ var a8 = a[8] | 0;
1245
+ var al8 = a8 & 0x1fff;
1246
+ var ah8 = a8 >>> 13;
1247
+ var a9 = a[9] | 0;
1248
+ var al9 = a9 & 0x1fff;
1249
+ var ah9 = a9 >>> 13;
1250
+ var b0 = b[0] | 0;
1251
+ var bl0 = b0 & 0x1fff;
1252
+ var bh0 = b0 >>> 13;
1253
+ var b1 = b[1] | 0;
1254
+ var bl1 = b1 & 0x1fff;
1255
+ var bh1 = b1 >>> 13;
1256
+ var b2 = b[2] | 0;
1257
+ var bl2 = b2 & 0x1fff;
1258
+ var bh2 = b2 >>> 13;
1259
+ var b3 = b[3] | 0;
1260
+ var bl3 = b3 & 0x1fff;
1261
+ var bh3 = b3 >>> 13;
1262
+ var b4 = b[4] | 0;
1263
+ var bl4 = b4 & 0x1fff;
1264
+ var bh4 = b4 >>> 13;
1265
+ var b5 = b[5] | 0;
1266
+ var bl5 = b5 & 0x1fff;
1267
+ var bh5 = b5 >>> 13;
1268
+ var b6 = b[6] | 0;
1269
+ var bl6 = b6 & 0x1fff;
1270
+ var bh6 = b6 >>> 13;
1271
+ var b7 = b[7] | 0;
1272
+ var bl7 = b7 & 0x1fff;
1273
+ var bh7 = b7 >>> 13;
1274
+ var b8 = b[8] | 0;
1275
+ var bl8 = b8 & 0x1fff;
1276
+ var bh8 = b8 >>> 13;
1277
+ var b9 = b[9] | 0;
1278
+ var bl9 = b9 & 0x1fff;
1279
+ var bh9 = b9 >>> 13;
1280
+
1281
+ out.negative = self.negative ^ num.negative;
1282
+ out.length = 19;
1283
+ /* k = 0 */
1284
+ lo = Math.imul(al0, bl0);
1285
+ mid = Math.imul(al0, bh0);
1286
+ mid = (mid + Math.imul(ah0, bl0)) | 0;
1287
+ hi = Math.imul(ah0, bh0);
1288
+ var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1289
+ c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
1290
+ w0 &= 0x3ffffff;
1291
+ /* k = 1 */
1292
+ lo = Math.imul(al1, bl0);
1293
+ mid = Math.imul(al1, bh0);
1294
+ mid = (mid + Math.imul(ah1, bl0)) | 0;
1295
+ hi = Math.imul(ah1, bh0);
1296
+ lo = (lo + Math.imul(al0, bl1)) | 0;
1297
+ mid = (mid + Math.imul(al0, bh1)) | 0;
1298
+ mid = (mid + Math.imul(ah0, bl1)) | 0;
1299
+ hi = (hi + Math.imul(ah0, bh1)) | 0;
1300
+ var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1301
+ c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
1302
+ w1 &= 0x3ffffff;
1303
+ /* k = 2 */
1304
+ lo = Math.imul(al2, bl0);
1305
+ mid = Math.imul(al2, bh0);
1306
+ mid = (mid + Math.imul(ah2, bl0)) | 0;
1307
+ hi = Math.imul(ah2, bh0);
1308
+ lo = (lo + Math.imul(al1, bl1)) | 0;
1309
+ mid = (mid + Math.imul(al1, bh1)) | 0;
1310
+ mid = (mid + Math.imul(ah1, bl1)) | 0;
1311
+ hi = (hi + Math.imul(ah1, bh1)) | 0;
1312
+ lo = (lo + Math.imul(al0, bl2)) | 0;
1313
+ mid = (mid + Math.imul(al0, bh2)) | 0;
1314
+ mid = (mid + Math.imul(ah0, bl2)) | 0;
1315
+ hi = (hi + Math.imul(ah0, bh2)) | 0;
1316
+ var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1317
+ c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
1318
+ w2 &= 0x3ffffff;
1319
+ /* k = 3 */
1320
+ lo = Math.imul(al3, bl0);
1321
+ mid = Math.imul(al3, bh0);
1322
+ mid = (mid + Math.imul(ah3, bl0)) | 0;
1323
+ hi = Math.imul(ah3, bh0);
1324
+ lo = (lo + Math.imul(al2, bl1)) | 0;
1325
+ mid = (mid + Math.imul(al2, bh1)) | 0;
1326
+ mid = (mid + Math.imul(ah2, bl1)) | 0;
1327
+ hi = (hi + Math.imul(ah2, bh1)) | 0;
1328
+ lo = (lo + Math.imul(al1, bl2)) | 0;
1329
+ mid = (mid + Math.imul(al1, bh2)) | 0;
1330
+ mid = (mid + Math.imul(ah1, bl2)) | 0;
1331
+ hi = (hi + Math.imul(ah1, bh2)) | 0;
1332
+ lo = (lo + Math.imul(al0, bl3)) | 0;
1333
+ mid = (mid + Math.imul(al0, bh3)) | 0;
1334
+ mid = (mid + Math.imul(ah0, bl3)) | 0;
1335
+ hi = (hi + Math.imul(ah0, bh3)) | 0;
1336
+ var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1337
+ c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
1338
+ w3 &= 0x3ffffff;
1339
+ /* k = 4 */
1340
+ lo = Math.imul(al4, bl0);
1341
+ mid = Math.imul(al4, bh0);
1342
+ mid = (mid + Math.imul(ah4, bl0)) | 0;
1343
+ hi = Math.imul(ah4, bh0);
1344
+ lo = (lo + Math.imul(al3, bl1)) | 0;
1345
+ mid = (mid + Math.imul(al3, bh1)) | 0;
1346
+ mid = (mid + Math.imul(ah3, bl1)) | 0;
1347
+ hi = (hi + Math.imul(ah3, bh1)) | 0;
1348
+ lo = (lo + Math.imul(al2, bl2)) | 0;
1349
+ mid = (mid + Math.imul(al2, bh2)) | 0;
1350
+ mid = (mid + Math.imul(ah2, bl2)) | 0;
1351
+ hi = (hi + Math.imul(ah2, bh2)) | 0;
1352
+ lo = (lo + Math.imul(al1, bl3)) | 0;
1353
+ mid = (mid + Math.imul(al1, bh3)) | 0;
1354
+ mid = (mid + Math.imul(ah1, bl3)) | 0;
1355
+ hi = (hi + Math.imul(ah1, bh3)) | 0;
1356
+ lo = (lo + Math.imul(al0, bl4)) | 0;
1357
+ mid = (mid + Math.imul(al0, bh4)) | 0;
1358
+ mid = (mid + Math.imul(ah0, bl4)) | 0;
1359
+ hi = (hi + Math.imul(ah0, bh4)) | 0;
1360
+ var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1361
+ c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
1362
+ w4 &= 0x3ffffff;
1363
+ /* k = 5 */
1364
+ lo = Math.imul(al5, bl0);
1365
+ mid = Math.imul(al5, bh0);
1366
+ mid = (mid + Math.imul(ah5, bl0)) | 0;
1367
+ hi = Math.imul(ah5, bh0);
1368
+ lo = (lo + Math.imul(al4, bl1)) | 0;
1369
+ mid = (mid + Math.imul(al4, bh1)) | 0;
1370
+ mid = (mid + Math.imul(ah4, bl1)) | 0;
1371
+ hi = (hi + Math.imul(ah4, bh1)) | 0;
1372
+ lo = (lo + Math.imul(al3, bl2)) | 0;
1373
+ mid = (mid + Math.imul(al3, bh2)) | 0;
1374
+ mid = (mid + Math.imul(ah3, bl2)) | 0;
1375
+ hi = (hi + Math.imul(ah3, bh2)) | 0;
1376
+ lo = (lo + Math.imul(al2, bl3)) | 0;
1377
+ mid = (mid + Math.imul(al2, bh3)) | 0;
1378
+ mid = (mid + Math.imul(ah2, bl3)) | 0;
1379
+ hi = (hi + Math.imul(ah2, bh3)) | 0;
1380
+ lo = (lo + Math.imul(al1, bl4)) | 0;
1381
+ mid = (mid + Math.imul(al1, bh4)) | 0;
1382
+ mid = (mid + Math.imul(ah1, bl4)) | 0;
1383
+ hi = (hi + Math.imul(ah1, bh4)) | 0;
1384
+ lo = (lo + Math.imul(al0, bl5)) | 0;
1385
+ mid = (mid + Math.imul(al0, bh5)) | 0;
1386
+ mid = (mid + Math.imul(ah0, bl5)) | 0;
1387
+ hi = (hi + Math.imul(ah0, bh5)) | 0;
1388
+ var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1389
+ c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
1390
+ w5 &= 0x3ffffff;
1391
+ /* k = 6 */
1392
+ lo = Math.imul(al6, bl0);
1393
+ mid = Math.imul(al6, bh0);
1394
+ mid = (mid + Math.imul(ah6, bl0)) | 0;
1395
+ hi = Math.imul(ah6, bh0);
1396
+ lo = (lo + Math.imul(al5, bl1)) | 0;
1397
+ mid = (mid + Math.imul(al5, bh1)) | 0;
1398
+ mid = (mid + Math.imul(ah5, bl1)) | 0;
1399
+ hi = (hi + Math.imul(ah5, bh1)) | 0;
1400
+ lo = (lo + Math.imul(al4, bl2)) | 0;
1401
+ mid = (mid + Math.imul(al4, bh2)) | 0;
1402
+ mid = (mid + Math.imul(ah4, bl2)) | 0;
1403
+ hi = (hi + Math.imul(ah4, bh2)) | 0;
1404
+ lo = (lo + Math.imul(al3, bl3)) | 0;
1405
+ mid = (mid + Math.imul(al3, bh3)) | 0;
1406
+ mid = (mid + Math.imul(ah3, bl3)) | 0;
1407
+ hi = (hi + Math.imul(ah3, bh3)) | 0;
1408
+ lo = (lo + Math.imul(al2, bl4)) | 0;
1409
+ mid = (mid + Math.imul(al2, bh4)) | 0;
1410
+ mid = (mid + Math.imul(ah2, bl4)) | 0;
1411
+ hi = (hi + Math.imul(ah2, bh4)) | 0;
1412
+ lo = (lo + Math.imul(al1, bl5)) | 0;
1413
+ mid = (mid + Math.imul(al1, bh5)) | 0;
1414
+ mid = (mid + Math.imul(ah1, bl5)) | 0;
1415
+ hi = (hi + Math.imul(ah1, bh5)) | 0;
1416
+ lo = (lo + Math.imul(al0, bl6)) | 0;
1417
+ mid = (mid + Math.imul(al0, bh6)) | 0;
1418
+ mid = (mid + Math.imul(ah0, bl6)) | 0;
1419
+ hi = (hi + Math.imul(ah0, bh6)) | 0;
1420
+ var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1421
+ c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
1422
+ w6 &= 0x3ffffff;
1423
+ /* k = 7 */
1424
+ lo = Math.imul(al7, bl0);
1425
+ mid = Math.imul(al7, bh0);
1426
+ mid = (mid + Math.imul(ah7, bl0)) | 0;
1427
+ hi = Math.imul(ah7, bh0);
1428
+ lo = (lo + Math.imul(al6, bl1)) | 0;
1429
+ mid = (mid + Math.imul(al6, bh1)) | 0;
1430
+ mid = (mid + Math.imul(ah6, bl1)) | 0;
1431
+ hi = (hi + Math.imul(ah6, bh1)) | 0;
1432
+ lo = (lo + Math.imul(al5, bl2)) | 0;
1433
+ mid = (mid + Math.imul(al5, bh2)) | 0;
1434
+ mid = (mid + Math.imul(ah5, bl2)) | 0;
1435
+ hi = (hi + Math.imul(ah5, bh2)) | 0;
1436
+ lo = (lo + Math.imul(al4, bl3)) | 0;
1437
+ mid = (mid + Math.imul(al4, bh3)) | 0;
1438
+ mid = (mid + Math.imul(ah4, bl3)) | 0;
1439
+ hi = (hi + Math.imul(ah4, bh3)) | 0;
1440
+ lo = (lo + Math.imul(al3, bl4)) | 0;
1441
+ mid = (mid + Math.imul(al3, bh4)) | 0;
1442
+ mid = (mid + Math.imul(ah3, bl4)) | 0;
1443
+ hi = (hi + Math.imul(ah3, bh4)) | 0;
1444
+ lo = (lo + Math.imul(al2, bl5)) | 0;
1445
+ mid = (mid + Math.imul(al2, bh5)) | 0;
1446
+ mid = (mid + Math.imul(ah2, bl5)) | 0;
1447
+ hi = (hi + Math.imul(ah2, bh5)) | 0;
1448
+ lo = (lo + Math.imul(al1, bl6)) | 0;
1449
+ mid = (mid + Math.imul(al1, bh6)) | 0;
1450
+ mid = (mid + Math.imul(ah1, bl6)) | 0;
1451
+ hi = (hi + Math.imul(ah1, bh6)) | 0;
1452
+ lo = (lo + Math.imul(al0, bl7)) | 0;
1453
+ mid = (mid + Math.imul(al0, bh7)) | 0;
1454
+ mid = (mid + Math.imul(ah0, bl7)) | 0;
1455
+ hi = (hi + Math.imul(ah0, bh7)) | 0;
1456
+ var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1457
+ c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
1458
+ w7 &= 0x3ffffff;
1459
+ /* k = 8 */
1460
+ lo = Math.imul(al8, bl0);
1461
+ mid = Math.imul(al8, bh0);
1462
+ mid = (mid + Math.imul(ah8, bl0)) | 0;
1463
+ hi = Math.imul(ah8, bh0);
1464
+ lo = (lo + Math.imul(al7, bl1)) | 0;
1465
+ mid = (mid + Math.imul(al7, bh1)) | 0;
1466
+ mid = (mid + Math.imul(ah7, bl1)) | 0;
1467
+ hi = (hi + Math.imul(ah7, bh1)) | 0;
1468
+ lo = (lo + Math.imul(al6, bl2)) | 0;
1469
+ mid = (mid + Math.imul(al6, bh2)) | 0;
1470
+ mid = (mid + Math.imul(ah6, bl2)) | 0;
1471
+ hi = (hi + Math.imul(ah6, bh2)) | 0;
1472
+ lo = (lo + Math.imul(al5, bl3)) | 0;
1473
+ mid = (mid + Math.imul(al5, bh3)) | 0;
1474
+ mid = (mid + Math.imul(ah5, bl3)) | 0;
1475
+ hi = (hi + Math.imul(ah5, bh3)) | 0;
1476
+ lo = (lo + Math.imul(al4, bl4)) | 0;
1477
+ mid = (mid + Math.imul(al4, bh4)) | 0;
1478
+ mid = (mid + Math.imul(ah4, bl4)) | 0;
1479
+ hi = (hi + Math.imul(ah4, bh4)) | 0;
1480
+ lo = (lo + Math.imul(al3, bl5)) | 0;
1481
+ mid = (mid + Math.imul(al3, bh5)) | 0;
1482
+ mid = (mid + Math.imul(ah3, bl5)) | 0;
1483
+ hi = (hi + Math.imul(ah3, bh5)) | 0;
1484
+ lo = (lo + Math.imul(al2, bl6)) | 0;
1485
+ mid = (mid + Math.imul(al2, bh6)) | 0;
1486
+ mid = (mid + Math.imul(ah2, bl6)) | 0;
1487
+ hi = (hi + Math.imul(ah2, bh6)) | 0;
1488
+ lo = (lo + Math.imul(al1, bl7)) | 0;
1489
+ mid = (mid + Math.imul(al1, bh7)) | 0;
1490
+ mid = (mid + Math.imul(ah1, bl7)) | 0;
1491
+ hi = (hi + Math.imul(ah1, bh7)) | 0;
1492
+ lo = (lo + Math.imul(al0, bl8)) | 0;
1493
+ mid = (mid + Math.imul(al0, bh8)) | 0;
1494
+ mid = (mid + Math.imul(ah0, bl8)) | 0;
1495
+ hi = (hi + Math.imul(ah0, bh8)) | 0;
1496
+ var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1497
+ c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
1498
+ w8 &= 0x3ffffff;
1499
+ /* k = 9 */
1500
+ lo = Math.imul(al9, bl0);
1501
+ mid = Math.imul(al9, bh0);
1502
+ mid = (mid + Math.imul(ah9, bl0)) | 0;
1503
+ hi = Math.imul(ah9, bh0);
1504
+ lo = (lo + Math.imul(al8, bl1)) | 0;
1505
+ mid = (mid + Math.imul(al8, bh1)) | 0;
1506
+ mid = (mid + Math.imul(ah8, bl1)) | 0;
1507
+ hi = (hi + Math.imul(ah8, bh1)) | 0;
1508
+ lo = (lo + Math.imul(al7, bl2)) | 0;
1509
+ mid = (mid + Math.imul(al7, bh2)) | 0;
1510
+ mid = (mid + Math.imul(ah7, bl2)) | 0;
1511
+ hi = (hi + Math.imul(ah7, bh2)) | 0;
1512
+ lo = (lo + Math.imul(al6, bl3)) | 0;
1513
+ mid = (mid + Math.imul(al6, bh3)) | 0;
1514
+ mid = (mid + Math.imul(ah6, bl3)) | 0;
1515
+ hi = (hi + Math.imul(ah6, bh3)) | 0;
1516
+ lo = (lo + Math.imul(al5, bl4)) | 0;
1517
+ mid = (mid + Math.imul(al5, bh4)) | 0;
1518
+ mid = (mid + Math.imul(ah5, bl4)) | 0;
1519
+ hi = (hi + Math.imul(ah5, bh4)) | 0;
1520
+ lo = (lo + Math.imul(al4, bl5)) | 0;
1521
+ mid = (mid + Math.imul(al4, bh5)) | 0;
1522
+ mid = (mid + Math.imul(ah4, bl5)) | 0;
1523
+ hi = (hi + Math.imul(ah4, bh5)) | 0;
1524
+ lo = (lo + Math.imul(al3, bl6)) | 0;
1525
+ mid = (mid + Math.imul(al3, bh6)) | 0;
1526
+ mid = (mid + Math.imul(ah3, bl6)) | 0;
1527
+ hi = (hi + Math.imul(ah3, bh6)) | 0;
1528
+ lo = (lo + Math.imul(al2, bl7)) | 0;
1529
+ mid = (mid + Math.imul(al2, bh7)) | 0;
1530
+ mid = (mid + Math.imul(ah2, bl7)) | 0;
1531
+ hi = (hi + Math.imul(ah2, bh7)) | 0;
1532
+ lo = (lo + Math.imul(al1, bl8)) | 0;
1533
+ mid = (mid + Math.imul(al1, bh8)) | 0;
1534
+ mid = (mid + Math.imul(ah1, bl8)) | 0;
1535
+ hi = (hi + Math.imul(ah1, bh8)) | 0;
1536
+ lo = (lo + Math.imul(al0, bl9)) | 0;
1537
+ mid = (mid + Math.imul(al0, bh9)) | 0;
1538
+ mid = (mid + Math.imul(ah0, bl9)) | 0;
1539
+ hi = (hi + Math.imul(ah0, bh9)) | 0;
1540
+ var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1541
+ c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
1542
+ w9 &= 0x3ffffff;
1543
+ /* k = 10 */
1544
+ lo = Math.imul(al9, bl1);
1545
+ mid = Math.imul(al9, bh1);
1546
+ mid = (mid + Math.imul(ah9, bl1)) | 0;
1547
+ hi = Math.imul(ah9, bh1);
1548
+ lo = (lo + Math.imul(al8, bl2)) | 0;
1549
+ mid = (mid + Math.imul(al8, bh2)) | 0;
1550
+ mid = (mid + Math.imul(ah8, bl2)) | 0;
1551
+ hi = (hi + Math.imul(ah8, bh2)) | 0;
1552
+ lo = (lo + Math.imul(al7, bl3)) | 0;
1553
+ mid = (mid + Math.imul(al7, bh3)) | 0;
1554
+ mid = (mid + Math.imul(ah7, bl3)) | 0;
1555
+ hi = (hi + Math.imul(ah7, bh3)) | 0;
1556
+ lo = (lo + Math.imul(al6, bl4)) | 0;
1557
+ mid = (mid + Math.imul(al6, bh4)) | 0;
1558
+ mid = (mid + Math.imul(ah6, bl4)) | 0;
1559
+ hi = (hi + Math.imul(ah6, bh4)) | 0;
1560
+ lo = (lo + Math.imul(al5, bl5)) | 0;
1561
+ mid = (mid + Math.imul(al5, bh5)) | 0;
1562
+ mid = (mid + Math.imul(ah5, bl5)) | 0;
1563
+ hi = (hi + Math.imul(ah5, bh5)) | 0;
1564
+ lo = (lo + Math.imul(al4, bl6)) | 0;
1565
+ mid = (mid + Math.imul(al4, bh6)) | 0;
1566
+ mid = (mid + Math.imul(ah4, bl6)) | 0;
1567
+ hi = (hi + Math.imul(ah4, bh6)) | 0;
1568
+ lo = (lo + Math.imul(al3, bl7)) | 0;
1569
+ mid = (mid + Math.imul(al3, bh7)) | 0;
1570
+ mid = (mid + Math.imul(ah3, bl7)) | 0;
1571
+ hi = (hi + Math.imul(ah3, bh7)) | 0;
1572
+ lo = (lo + Math.imul(al2, bl8)) | 0;
1573
+ mid = (mid + Math.imul(al2, bh8)) | 0;
1574
+ mid = (mid + Math.imul(ah2, bl8)) | 0;
1575
+ hi = (hi + Math.imul(ah2, bh8)) | 0;
1576
+ lo = (lo + Math.imul(al1, bl9)) | 0;
1577
+ mid = (mid + Math.imul(al1, bh9)) | 0;
1578
+ mid = (mid + Math.imul(ah1, bl9)) | 0;
1579
+ hi = (hi + Math.imul(ah1, bh9)) | 0;
1580
+ var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1581
+ c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
1582
+ w10 &= 0x3ffffff;
1583
+ /* k = 11 */
1584
+ lo = Math.imul(al9, bl2);
1585
+ mid = Math.imul(al9, bh2);
1586
+ mid = (mid + Math.imul(ah9, bl2)) | 0;
1587
+ hi = Math.imul(ah9, bh2);
1588
+ lo = (lo + Math.imul(al8, bl3)) | 0;
1589
+ mid = (mid + Math.imul(al8, bh3)) | 0;
1590
+ mid = (mid + Math.imul(ah8, bl3)) | 0;
1591
+ hi = (hi + Math.imul(ah8, bh3)) | 0;
1592
+ lo = (lo + Math.imul(al7, bl4)) | 0;
1593
+ mid = (mid + Math.imul(al7, bh4)) | 0;
1594
+ mid = (mid + Math.imul(ah7, bl4)) | 0;
1595
+ hi = (hi + Math.imul(ah7, bh4)) | 0;
1596
+ lo = (lo + Math.imul(al6, bl5)) | 0;
1597
+ mid = (mid + Math.imul(al6, bh5)) | 0;
1598
+ mid = (mid + Math.imul(ah6, bl5)) | 0;
1599
+ hi = (hi + Math.imul(ah6, bh5)) | 0;
1600
+ lo = (lo + Math.imul(al5, bl6)) | 0;
1601
+ mid = (mid + Math.imul(al5, bh6)) | 0;
1602
+ mid = (mid + Math.imul(ah5, bl6)) | 0;
1603
+ hi = (hi + Math.imul(ah5, bh6)) | 0;
1604
+ lo = (lo + Math.imul(al4, bl7)) | 0;
1605
+ mid = (mid + Math.imul(al4, bh7)) | 0;
1606
+ mid = (mid + Math.imul(ah4, bl7)) | 0;
1607
+ hi = (hi + Math.imul(ah4, bh7)) | 0;
1608
+ lo = (lo + Math.imul(al3, bl8)) | 0;
1609
+ mid = (mid + Math.imul(al3, bh8)) | 0;
1610
+ mid = (mid + Math.imul(ah3, bl8)) | 0;
1611
+ hi = (hi + Math.imul(ah3, bh8)) | 0;
1612
+ lo = (lo + Math.imul(al2, bl9)) | 0;
1613
+ mid = (mid + Math.imul(al2, bh9)) | 0;
1614
+ mid = (mid + Math.imul(ah2, bl9)) | 0;
1615
+ hi = (hi + Math.imul(ah2, bh9)) | 0;
1616
+ var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1617
+ c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
1618
+ w11 &= 0x3ffffff;
1619
+ /* k = 12 */
1620
+ lo = Math.imul(al9, bl3);
1621
+ mid = Math.imul(al9, bh3);
1622
+ mid = (mid + Math.imul(ah9, bl3)) | 0;
1623
+ hi = Math.imul(ah9, bh3);
1624
+ lo = (lo + Math.imul(al8, bl4)) | 0;
1625
+ mid = (mid + Math.imul(al8, bh4)) | 0;
1626
+ mid = (mid + Math.imul(ah8, bl4)) | 0;
1627
+ hi = (hi + Math.imul(ah8, bh4)) | 0;
1628
+ lo = (lo + Math.imul(al7, bl5)) | 0;
1629
+ mid = (mid + Math.imul(al7, bh5)) | 0;
1630
+ mid = (mid + Math.imul(ah7, bl5)) | 0;
1631
+ hi = (hi + Math.imul(ah7, bh5)) | 0;
1632
+ lo = (lo + Math.imul(al6, bl6)) | 0;
1633
+ mid = (mid + Math.imul(al6, bh6)) | 0;
1634
+ mid = (mid + Math.imul(ah6, bl6)) | 0;
1635
+ hi = (hi + Math.imul(ah6, bh6)) | 0;
1636
+ lo = (lo + Math.imul(al5, bl7)) | 0;
1637
+ mid = (mid + Math.imul(al5, bh7)) | 0;
1638
+ mid = (mid + Math.imul(ah5, bl7)) | 0;
1639
+ hi = (hi + Math.imul(ah5, bh7)) | 0;
1640
+ lo = (lo + Math.imul(al4, bl8)) | 0;
1641
+ mid = (mid + Math.imul(al4, bh8)) | 0;
1642
+ mid = (mid + Math.imul(ah4, bl8)) | 0;
1643
+ hi = (hi + Math.imul(ah4, bh8)) | 0;
1644
+ lo = (lo + Math.imul(al3, bl9)) | 0;
1645
+ mid = (mid + Math.imul(al3, bh9)) | 0;
1646
+ mid = (mid + Math.imul(ah3, bl9)) | 0;
1647
+ hi = (hi + Math.imul(ah3, bh9)) | 0;
1648
+ var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1649
+ c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
1650
+ w12 &= 0x3ffffff;
1651
+ /* k = 13 */
1652
+ lo = Math.imul(al9, bl4);
1653
+ mid = Math.imul(al9, bh4);
1654
+ mid = (mid + Math.imul(ah9, bl4)) | 0;
1655
+ hi = Math.imul(ah9, bh4);
1656
+ lo = (lo + Math.imul(al8, bl5)) | 0;
1657
+ mid = (mid + Math.imul(al8, bh5)) | 0;
1658
+ mid = (mid + Math.imul(ah8, bl5)) | 0;
1659
+ hi = (hi + Math.imul(ah8, bh5)) | 0;
1660
+ lo = (lo + Math.imul(al7, bl6)) | 0;
1661
+ mid = (mid + Math.imul(al7, bh6)) | 0;
1662
+ mid = (mid + Math.imul(ah7, bl6)) | 0;
1663
+ hi = (hi + Math.imul(ah7, bh6)) | 0;
1664
+ lo = (lo + Math.imul(al6, bl7)) | 0;
1665
+ mid = (mid + Math.imul(al6, bh7)) | 0;
1666
+ mid = (mid + Math.imul(ah6, bl7)) | 0;
1667
+ hi = (hi + Math.imul(ah6, bh7)) | 0;
1668
+ lo = (lo + Math.imul(al5, bl8)) | 0;
1669
+ mid = (mid + Math.imul(al5, bh8)) | 0;
1670
+ mid = (mid + Math.imul(ah5, bl8)) | 0;
1671
+ hi = (hi + Math.imul(ah5, bh8)) | 0;
1672
+ lo = (lo + Math.imul(al4, bl9)) | 0;
1673
+ mid = (mid + Math.imul(al4, bh9)) | 0;
1674
+ mid = (mid + Math.imul(ah4, bl9)) | 0;
1675
+ hi = (hi + Math.imul(ah4, bh9)) | 0;
1676
+ var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1677
+ c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
1678
+ w13 &= 0x3ffffff;
1679
+ /* k = 14 */
1680
+ lo = Math.imul(al9, bl5);
1681
+ mid = Math.imul(al9, bh5);
1682
+ mid = (mid + Math.imul(ah9, bl5)) | 0;
1683
+ hi = Math.imul(ah9, bh5);
1684
+ lo = (lo + Math.imul(al8, bl6)) | 0;
1685
+ mid = (mid + Math.imul(al8, bh6)) | 0;
1686
+ mid = (mid + Math.imul(ah8, bl6)) | 0;
1687
+ hi = (hi + Math.imul(ah8, bh6)) | 0;
1688
+ lo = (lo + Math.imul(al7, bl7)) | 0;
1689
+ mid = (mid + Math.imul(al7, bh7)) | 0;
1690
+ mid = (mid + Math.imul(ah7, bl7)) | 0;
1691
+ hi = (hi + Math.imul(ah7, bh7)) | 0;
1692
+ lo = (lo + Math.imul(al6, bl8)) | 0;
1693
+ mid = (mid + Math.imul(al6, bh8)) | 0;
1694
+ mid = (mid + Math.imul(ah6, bl8)) | 0;
1695
+ hi = (hi + Math.imul(ah6, bh8)) | 0;
1696
+ lo = (lo + Math.imul(al5, bl9)) | 0;
1697
+ mid = (mid + Math.imul(al5, bh9)) | 0;
1698
+ mid = (mid + Math.imul(ah5, bl9)) | 0;
1699
+ hi = (hi + Math.imul(ah5, bh9)) | 0;
1700
+ var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1701
+ c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
1702
+ w14 &= 0x3ffffff;
1703
+ /* k = 15 */
1704
+ lo = Math.imul(al9, bl6);
1705
+ mid = Math.imul(al9, bh6);
1706
+ mid = (mid + Math.imul(ah9, bl6)) | 0;
1707
+ hi = Math.imul(ah9, bh6);
1708
+ lo = (lo + Math.imul(al8, bl7)) | 0;
1709
+ mid = (mid + Math.imul(al8, bh7)) | 0;
1710
+ mid = (mid + Math.imul(ah8, bl7)) | 0;
1711
+ hi = (hi + Math.imul(ah8, bh7)) | 0;
1712
+ lo = (lo + Math.imul(al7, bl8)) | 0;
1713
+ mid = (mid + Math.imul(al7, bh8)) | 0;
1714
+ mid = (mid + Math.imul(ah7, bl8)) | 0;
1715
+ hi = (hi + Math.imul(ah7, bh8)) | 0;
1716
+ lo = (lo + Math.imul(al6, bl9)) | 0;
1717
+ mid = (mid + Math.imul(al6, bh9)) | 0;
1718
+ mid = (mid + Math.imul(ah6, bl9)) | 0;
1719
+ hi = (hi + Math.imul(ah6, bh9)) | 0;
1720
+ var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1721
+ c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
1722
+ w15 &= 0x3ffffff;
1723
+ /* k = 16 */
1724
+ lo = Math.imul(al9, bl7);
1725
+ mid = Math.imul(al9, bh7);
1726
+ mid = (mid + Math.imul(ah9, bl7)) | 0;
1727
+ hi = Math.imul(ah9, bh7);
1728
+ lo = (lo + Math.imul(al8, bl8)) | 0;
1729
+ mid = (mid + Math.imul(al8, bh8)) | 0;
1730
+ mid = (mid + Math.imul(ah8, bl8)) | 0;
1731
+ hi = (hi + Math.imul(ah8, bh8)) | 0;
1732
+ lo = (lo + Math.imul(al7, bl9)) | 0;
1733
+ mid = (mid + Math.imul(al7, bh9)) | 0;
1734
+ mid = (mid + Math.imul(ah7, bl9)) | 0;
1735
+ hi = (hi + Math.imul(ah7, bh9)) | 0;
1736
+ var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1737
+ c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
1738
+ w16 &= 0x3ffffff;
1739
+ /* k = 17 */
1740
+ lo = Math.imul(al9, bl8);
1741
+ mid = Math.imul(al9, bh8);
1742
+ mid = (mid + Math.imul(ah9, bl8)) | 0;
1743
+ hi = Math.imul(ah9, bh8);
1744
+ lo = (lo + Math.imul(al8, bl9)) | 0;
1745
+ mid = (mid + Math.imul(al8, bh9)) | 0;
1746
+ mid = (mid + Math.imul(ah8, bl9)) | 0;
1747
+ hi = (hi + Math.imul(ah8, bh9)) | 0;
1748
+ var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1749
+ c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
1750
+ w17 &= 0x3ffffff;
1751
+ /* k = 18 */
1752
+ lo = Math.imul(al9, bl9);
1753
+ mid = Math.imul(al9, bh9);
1754
+ mid = (mid + Math.imul(ah9, bl9)) | 0;
1755
+ hi = Math.imul(ah9, bh9);
1756
+ var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1757
+ c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
1758
+ w18 &= 0x3ffffff;
1759
+ o[0] = w0;
1760
+ o[1] = w1;
1761
+ o[2] = w2;
1762
+ o[3] = w3;
1763
+ o[4] = w4;
1764
+ o[5] = w5;
1765
+ o[6] = w6;
1766
+ o[7] = w7;
1767
+ o[8] = w8;
1768
+ o[9] = w9;
1769
+ o[10] = w10;
1770
+ o[11] = w11;
1771
+ o[12] = w12;
1772
+ o[13] = w13;
1773
+ o[14] = w14;
1774
+ o[15] = w15;
1775
+ o[16] = w16;
1776
+ o[17] = w17;
1777
+ o[18] = w18;
1778
+ if (c !== 0) {
1779
+ o[19] = c;
1780
+ out.length++;
1781
+ }
1782
+ return out;
1783
+ };
1784
+
1785
+ // Polyfill comb
1786
+ if (!Math.imul) {
1787
+ comb10MulTo = smallMulTo;
1788
+ }
1789
+
1790
+ function bigMulTo (self, num, out) {
1791
+ out.negative = num.negative ^ self.negative;
1792
+ out.length = self.length + num.length;
1793
+
1794
+ var carry = 0;
1795
+ var hncarry = 0;
1796
+ for (var k = 0; k < out.length - 1; k++) {
1797
+ // Sum all words with the same `i + j = k` and accumulate `ncarry`,
1798
+ // note that ncarry could be >= 0x3ffffff
1799
+ var ncarry = hncarry;
1800
+ hncarry = 0;
1801
+ var rword = carry & 0x3ffffff;
1802
+ var maxJ = Math.min(k, num.length - 1);
1803
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1804
+ var i = k - j;
1805
+ var a = self.words[i] | 0;
1806
+ var b = num.words[j] | 0;
1807
+ var r = a * b;
1808
+
1809
+ var lo = r & 0x3ffffff;
1810
+ ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
1811
+ lo = (lo + rword) | 0;
1812
+ rword = lo & 0x3ffffff;
1813
+ ncarry = (ncarry + (lo >>> 26)) | 0;
1814
+
1815
+ hncarry += ncarry >>> 26;
1816
+ ncarry &= 0x3ffffff;
1817
+ }
1818
+ out.words[k] = rword;
1819
+ carry = ncarry;
1820
+ ncarry = hncarry;
1821
+ }
1822
+ if (carry !== 0) {
1823
+ out.words[k] = carry;
1824
+ } else {
1825
+ out.length--;
1826
+ }
1827
+
1828
+ return out._strip();
1829
+ }
1830
+
1831
+ function jumboMulTo (self, num, out) {
1832
+ // Temporary disable, see https://github.com/indutny/bn.js/issues/211
1833
+ // var fftm = new FFTM();
1834
+ // return fftm.mulp(self, num, out);
1835
+ return bigMulTo(self, num, out);
1836
+ }
1837
+
1838
+ BN.prototype.mulTo = function mulTo (num, out) {
1839
+ var res;
1840
+ var len = this.length + num.length;
1841
+ if (this.length === 10 && num.length === 10) {
1842
+ res = comb10MulTo(this, num, out);
1843
+ } else if (len < 63) {
1844
+ res = smallMulTo(this, num, out);
1845
+ } else if (len < 1024) {
1846
+ res = bigMulTo(this, num, out);
1847
+ } else {
1848
+ res = jumboMulTo(this, num, out);
1849
+ }
1850
+
1851
+ return res;
1852
+ };
1853
+
1854
+ // Multiply `this` by `num`
1855
+ BN.prototype.mul = function mul (num) {
1856
+ var out = new BN(null);
1857
+ out.words = new Array(this.length + num.length);
1858
+ return this.mulTo(num, out);
1859
+ };
1860
+
1861
+ // Multiply employing FFT
1862
+ BN.prototype.mulf = function mulf (num) {
1863
+ var out = new BN(null);
1864
+ out.words = new Array(this.length + num.length);
1865
+ return jumboMulTo(this, num, out);
1866
+ };
1867
+
1868
+ // In-place Multiplication
1869
+ BN.prototype.imul = function imul (num) {
1870
+ return this.clone().mulTo(num, this);
1871
+ };
1872
+
1873
+ BN.prototype.imuln = function imuln (num) {
1874
+ var isNegNum = num < 0;
1875
+ if (isNegNum) num = -num;
1876
+
1877
+ assert(typeof num === 'number');
1878
+ assert(num < 0x4000000);
1879
+
1880
+ // Carry
1881
+ var carry = 0;
1882
+ for (var i = 0; i < this.length; i++) {
1883
+ var w = (this.words[i] | 0) * num;
1884
+ var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
1885
+ carry >>= 26;
1886
+ carry += (w / 0x4000000) | 0;
1887
+ // NOTE: lo is 27bit maximum
1888
+ carry += lo >>> 26;
1889
+ this.words[i] = lo & 0x3ffffff;
1890
+ }
1891
+
1892
+ if (carry !== 0) {
1893
+ this.words[i] = carry;
1894
+ this.length++;
1895
+ }
1896
+
1897
+ return isNegNum ? this.ineg() : this;
1898
+ };
1899
+
1900
+ BN.prototype.muln = function muln (num) {
1901
+ return this.clone().imuln(num);
1902
+ };
1903
+
1904
+ // `this` * `this`
1905
+ BN.prototype.sqr = function sqr () {
1906
+ return this.mul(this);
1907
+ };
1908
+
1909
+ // `this` * `this` in-place
1910
+ BN.prototype.isqr = function isqr () {
1911
+ return this.imul(this.clone());
1912
+ };
1913
+
1914
+ // Math.pow(`this`, `num`)
1915
+ BN.prototype.pow = function pow (num) {
1916
+ var w = toBitArray(num);
1917
+ if (w.length === 0) return new BN(1);
1918
+
1919
+ // Skip leading zeroes
1920
+ var res = this;
1921
+ for (var i = 0; i < w.length; i++, res = res.sqr()) {
1922
+ if (w[i] !== 0) break;
1923
+ }
1924
+
1925
+ if (++i < w.length) {
1926
+ for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
1927
+ if (w[i] === 0) continue;
1928
+
1929
+ res = res.mul(q);
1930
+ }
1931
+ }
1932
+
1933
+ return res;
1934
+ };
1935
+
1936
+ // Shift-left in-place
1937
+ BN.prototype.iushln = function iushln (bits) {
1938
+ assert(typeof bits === 'number' && bits >= 0);
1939
+ var r = bits % 26;
1940
+ var s = (bits - r) / 26;
1941
+ var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
1942
+ var i;
1943
+
1944
+ if (r !== 0) {
1945
+ var carry = 0;
1946
+
1947
+ for (i = 0; i < this.length; i++) {
1948
+ var newCarry = this.words[i] & carryMask;
1949
+ var c = ((this.words[i] | 0) - newCarry) << r;
1950
+ this.words[i] = c | carry;
1951
+ carry = newCarry >>> (26 - r);
1952
+ }
1953
+
1954
+ if (carry) {
1955
+ this.words[i] = carry;
1956
+ this.length++;
1957
+ }
1958
+ }
1959
+
1960
+ if (s !== 0) {
1961
+ for (i = this.length - 1; i >= 0; i--) {
1962
+ this.words[i + s] = this.words[i];
1963
+ }
1964
+
1965
+ for (i = 0; i < s; i++) {
1966
+ this.words[i] = 0;
1967
+ }
1968
+
1969
+ this.length += s;
1970
+ }
1971
+
1972
+ return this._strip();
1973
+ };
1974
+
1975
+ BN.prototype.ishln = function ishln (bits) {
1976
+ // TODO(indutny): implement me
1977
+ assert(this.negative === 0);
1978
+ return this.iushln(bits);
1979
+ };
1980
+
1981
+ // Shift-right in-place
1982
+ // NOTE: `hint` is a lowest bit before trailing zeroes
1983
+ // NOTE: if `extended` is present - it will be filled with destroyed bits
1984
+ BN.prototype.iushrn = function iushrn (bits, hint, extended) {
1985
+ assert(typeof bits === 'number' && bits >= 0);
1986
+ var h;
1987
+ if (hint) {
1988
+ h = (hint - (hint % 26)) / 26;
1989
+ } else {
1990
+ h = 0;
1991
+ }
1992
+
1993
+ var r = bits % 26;
1994
+ var s = Math.min((bits - r) / 26, this.length);
1995
+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
1996
+ var maskedWords = extended;
1997
+
1998
+ h -= s;
1999
+ h = Math.max(0, h);
2000
+
2001
+ // Extended mode, copy masked part
2002
+ if (maskedWords) {
2003
+ for (var i = 0; i < s; i++) {
2004
+ maskedWords.words[i] = this.words[i];
2005
+ }
2006
+ maskedWords.length = s;
2007
+ }
2008
+
2009
+ if (s === 0) ; else if (this.length > s) {
2010
+ this.length -= s;
2011
+ for (i = 0; i < this.length; i++) {
2012
+ this.words[i] = this.words[i + s];
2013
+ }
2014
+ } else {
2015
+ this.words[0] = 0;
2016
+ this.length = 1;
2017
+ }
2018
+
2019
+ var carry = 0;
2020
+ for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
2021
+ var word = this.words[i] | 0;
2022
+ this.words[i] = (carry << (26 - r)) | (word >>> r);
2023
+ carry = word & mask;
2024
+ }
2025
+
2026
+ // Push carried bits as a mask
2027
+ if (maskedWords && carry !== 0) {
2028
+ maskedWords.words[maskedWords.length++] = carry;
2029
+ }
2030
+
2031
+ if (this.length === 0) {
2032
+ this.words[0] = 0;
2033
+ this.length = 1;
2034
+ }
2035
+
2036
+ return this._strip();
2037
+ };
2038
+
2039
+ BN.prototype.ishrn = function ishrn (bits, hint, extended) {
2040
+ // TODO(indutny): implement me
2041
+ assert(this.negative === 0);
2042
+ return this.iushrn(bits, hint, extended);
2043
+ };
2044
+
2045
+ // Shift-left
2046
+ BN.prototype.shln = function shln (bits) {
2047
+ return this.clone().ishln(bits);
2048
+ };
2049
+
2050
+ BN.prototype.ushln = function ushln (bits) {
2051
+ return this.clone().iushln(bits);
2052
+ };
2053
+
2054
+ // Shift-right
2055
+ BN.prototype.shrn = function shrn (bits) {
2056
+ return this.clone().ishrn(bits);
2057
+ };
2058
+
2059
+ BN.prototype.ushrn = function ushrn (bits) {
2060
+ return this.clone().iushrn(bits);
2061
+ };
2062
+
2063
+ // Test if n bit is set
2064
+ BN.prototype.testn = function testn (bit) {
2065
+ assert(typeof bit === 'number' && bit >= 0);
2066
+ var r = bit % 26;
2067
+ var s = (bit - r) / 26;
2068
+ var q = 1 << r;
2069
+
2070
+ // Fast case: bit is much higher than all existing words
2071
+ if (this.length <= s) return false;
2072
+
2073
+ // Check bit and return
2074
+ var w = this.words[s];
2075
+
2076
+ return !!(w & q);
2077
+ };
2078
+
2079
+ // Return only lowers bits of number (in-place)
2080
+ BN.prototype.imaskn = function imaskn (bits) {
2081
+ assert(typeof bits === 'number' && bits >= 0);
2082
+ var r = bits % 26;
2083
+ var s = (bits - r) / 26;
2084
+
2085
+ assert(this.negative === 0, 'imaskn works only with positive numbers');
2086
+
2087
+ if (this.length <= s) {
2088
+ return this;
2089
+ }
2090
+
2091
+ if (r !== 0) {
2092
+ s++;
2093
+ }
2094
+ this.length = Math.min(s, this.length);
2095
+
2096
+ if (r !== 0) {
2097
+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
2098
+ this.words[this.length - 1] &= mask;
2099
+ }
2100
+
2101
+ return this._strip();
2102
+ };
2103
+
2104
+ // Return only lowers bits of number
2105
+ BN.prototype.maskn = function maskn (bits) {
2106
+ return this.clone().imaskn(bits);
2107
+ };
2108
+
2109
+ // Add plain number `num` to `this`
2110
+ BN.prototype.iaddn = function iaddn (num) {
2111
+ assert(typeof num === 'number');
2112
+ assert(num < 0x4000000);
2113
+ if (num < 0) return this.isubn(-num);
2114
+
2115
+ // Possible sign change
2116
+ if (this.negative !== 0) {
2117
+ if (this.length === 1 && (this.words[0] | 0) <= num) {
2118
+ this.words[0] = num - (this.words[0] | 0);
2119
+ this.negative = 0;
2120
+ return this;
2121
+ }
2122
+
2123
+ this.negative = 0;
2124
+ this.isubn(num);
2125
+ this.negative = 1;
2126
+ return this;
2127
+ }
2128
+
2129
+ // Add without checks
2130
+ return this._iaddn(num);
2131
+ };
2132
+
2133
+ BN.prototype._iaddn = function _iaddn (num) {
2134
+ this.words[0] += num;
2135
+
2136
+ // Carry
2137
+ for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
2138
+ this.words[i] -= 0x4000000;
2139
+ if (i === this.length - 1) {
2140
+ this.words[i + 1] = 1;
2141
+ } else {
2142
+ this.words[i + 1]++;
2143
+ }
2144
+ }
2145
+ this.length = Math.max(this.length, i + 1);
2146
+
2147
+ return this;
2148
+ };
2149
+
2150
+ // Subtract plain number `num` from `this`
2151
+ BN.prototype.isubn = function isubn (num) {
2152
+ assert(typeof num === 'number');
2153
+ assert(num < 0x4000000);
2154
+ if (num < 0) return this.iaddn(-num);
2155
+
2156
+ if (this.negative !== 0) {
2157
+ this.negative = 0;
2158
+ this.iaddn(num);
2159
+ this.negative = 1;
2160
+ return this;
2161
+ }
2162
+
2163
+ this.words[0] -= num;
2164
+
2165
+ if (this.length === 1 && this.words[0] < 0) {
2166
+ this.words[0] = -this.words[0];
2167
+ this.negative = 1;
2168
+ } else {
2169
+ // Carry
2170
+ for (var i = 0; i < this.length && this.words[i] < 0; i++) {
2171
+ this.words[i] += 0x4000000;
2172
+ this.words[i + 1] -= 1;
2173
+ }
2174
+ }
2175
+
2176
+ return this._strip();
2177
+ };
2178
+
2179
+ BN.prototype.addn = function addn (num) {
2180
+ return this.clone().iaddn(num);
2181
+ };
2182
+
2183
+ BN.prototype.subn = function subn (num) {
2184
+ return this.clone().isubn(num);
2185
+ };
2186
+
2187
+ BN.prototype.iabs = function iabs () {
2188
+ this.negative = 0;
2189
+
2190
+ return this;
2191
+ };
2192
+
2193
+ BN.prototype.abs = function abs () {
2194
+ return this.clone().iabs();
2195
+ };
2196
+
2197
+ BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
2198
+ var len = num.length + shift;
2199
+ var i;
2200
+
2201
+ this._expand(len);
2202
+
2203
+ var w;
2204
+ var carry = 0;
2205
+ for (i = 0; i < num.length; i++) {
2206
+ w = (this.words[i + shift] | 0) + carry;
2207
+ var right = (num.words[i] | 0) * mul;
2208
+ w -= right & 0x3ffffff;
2209
+ carry = (w >> 26) - ((right / 0x4000000) | 0);
2210
+ this.words[i + shift] = w & 0x3ffffff;
2211
+ }
2212
+ for (; i < this.length - shift; i++) {
2213
+ w = (this.words[i + shift] | 0) + carry;
2214
+ carry = w >> 26;
2215
+ this.words[i + shift] = w & 0x3ffffff;
2216
+ }
2217
+
2218
+ if (carry === 0) return this._strip();
2219
+
2220
+ // Subtraction overflow
2221
+ assert(carry === -1);
2222
+ carry = 0;
2223
+ for (i = 0; i < this.length; i++) {
2224
+ w = -(this.words[i] | 0) + carry;
2225
+ carry = w >> 26;
2226
+ this.words[i] = w & 0x3ffffff;
2227
+ }
2228
+ this.negative = 1;
2229
+
2230
+ return this._strip();
2231
+ };
2232
+
2233
+ BN.prototype._wordDiv = function _wordDiv (num, mode) {
2234
+ var shift = this.length - num.length;
2235
+
2236
+ var a = this.clone();
2237
+ var b = num;
2238
+
2239
+ // Normalize
2240
+ var bhi = b.words[b.length - 1] | 0;
2241
+ var bhiBits = this._countBits(bhi);
2242
+ shift = 26 - bhiBits;
2243
+ if (shift !== 0) {
2244
+ b = b.ushln(shift);
2245
+ a.iushln(shift);
2246
+ bhi = b.words[b.length - 1] | 0;
2247
+ }
2248
+
2249
+ // Initialize quotient
2250
+ var m = a.length - b.length;
2251
+ var q;
2252
+
2253
+ if (mode !== 'mod') {
2254
+ q = new BN(null);
2255
+ q.length = m + 1;
2256
+ q.words = new Array(q.length);
2257
+ for (var i = 0; i < q.length; i++) {
2258
+ q.words[i] = 0;
2259
+ }
2260
+ }
2261
+
2262
+ var diff = a.clone()._ishlnsubmul(b, 1, m);
2263
+ if (diff.negative === 0) {
2264
+ a = diff;
2265
+ if (q) {
2266
+ q.words[m] = 1;
2267
+ }
2268
+ }
2269
+
2270
+ for (var j = m - 1; j >= 0; j--) {
2271
+ var qj = (a.words[b.length + j] | 0) * 0x4000000 +
2272
+ (a.words[b.length + j - 1] | 0);
2273
+
2274
+ // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
2275
+ // (0x7ffffff)
2276
+ qj = Math.min((qj / bhi) | 0, 0x3ffffff);
2277
+
2278
+ a._ishlnsubmul(b, qj, j);
2279
+ while (a.negative !== 0) {
2280
+ qj--;
2281
+ a.negative = 0;
2282
+ a._ishlnsubmul(b, 1, j);
2283
+ if (!a.isZero()) {
2284
+ a.negative ^= 1;
2285
+ }
2286
+ }
2287
+ if (q) {
2288
+ q.words[j] = qj;
2289
+ }
2290
+ }
2291
+ if (q) {
2292
+ q._strip();
2293
+ }
2294
+ a._strip();
2295
+
2296
+ // Denormalize
2297
+ if (mode !== 'div' && shift !== 0) {
2298
+ a.iushrn(shift);
2299
+ }
2300
+
2301
+ return {
2302
+ div: q || null,
2303
+ mod: a
2304
+ };
2305
+ };
2306
+
2307
+ // NOTE: 1) `mode` can be set to `mod` to request mod only,
2308
+ // to `div` to request div only, or be absent to
2309
+ // request both div & mod
2310
+ // 2) `positive` is true if unsigned mod is requested
2311
+ BN.prototype.divmod = function divmod (num, mode, positive) {
2312
+ assert(!num.isZero());
2313
+
2314
+ if (this.isZero()) {
2315
+ return {
2316
+ div: new BN(0),
2317
+ mod: new BN(0)
2318
+ };
2319
+ }
2320
+
2321
+ var div, mod, res;
2322
+ if (this.negative !== 0 && num.negative === 0) {
2323
+ res = this.neg().divmod(num, mode);
2324
+
2325
+ if (mode !== 'mod') {
2326
+ div = res.div.neg();
2327
+ }
2328
+
2329
+ if (mode !== 'div') {
2330
+ mod = res.mod.neg();
2331
+ if (positive && mod.negative !== 0) {
2332
+ mod.iadd(num);
2333
+ }
2334
+ }
2335
+
2336
+ return {
2337
+ div: div,
2338
+ mod: mod
2339
+ };
2340
+ }
2341
+
2342
+ if (this.negative === 0 && num.negative !== 0) {
2343
+ res = this.divmod(num.neg(), mode);
2344
+
2345
+ if (mode !== 'mod') {
2346
+ div = res.div.neg();
2347
+ }
2348
+
2349
+ return {
2350
+ div: div,
2351
+ mod: res.mod
2352
+ };
2353
+ }
2354
+
2355
+ if ((this.negative & num.negative) !== 0) {
2356
+ res = this.neg().divmod(num.neg(), mode);
2357
+
2358
+ if (mode !== 'div') {
2359
+ mod = res.mod.neg();
2360
+ if (positive && mod.negative !== 0) {
2361
+ mod.isub(num);
2362
+ }
2363
+ }
2364
+
2365
+ return {
2366
+ div: res.div,
2367
+ mod: mod
2368
+ };
2369
+ }
2370
+
2371
+ // Both numbers are positive at this point
2372
+
2373
+ // Strip both numbers to approximate shift value
2374
+ if (num.length > this.length || this.cmp(num) < 0) {
2375
+ return {
2376
+ div: new BN(0),
2377
+ mod: this
2378
+ };
2379
+ }
2380
+
2381
+ // Very short reduction
2382
+ if (num.length === 1) {
2383
+ if (mode === 'div') {
2384
+ return {
2385
+ div: this.divn(num.words[0]),
2386
+ mod: null
2387
+ };
2388
+ }
2389
+
2390
+ if (mode === 'mod') {
2391
+ return {
2392
+ div: null,
2393
+ mod: new BN(this.modrn(num.words[0]))
2394
+ };
2395
+ }
2396
+
2397
+ return {
2398
+ div: this.divn(num.words[0]),
2399
+ mod: new BN(this.modrn(num.words[0]))
2400
+ };
2401
+ }
2402
+
2403
+ return this._wordDiv(num, mode);
2404
+ };
2405
+
2406
+ // Find `this` / `num`
2407
+ BN.prototype.div = function div (num) {
2408
+ return this.divmod(num, 'div', false).div;
2409
+ };
2410
+
2411
+ // Find `this` % `num`
2412
+ BN.prototype.mod = function mod (num) {
2413
+ return this.divmod(num, 'mod', false).mod;
2414
+ };
2415
+
2416
+ BN.prototype.umod = function umod (num) {
2417
+ return this.divmod(num, 'mod', true).mod;
2418
+ };
2419
+
2420
+ // Find Round(`this` / `num`)
2421
+ BN.prototype.divRound = function divRound (num) {
2422
+ var dm = this.divmod(num);
2423
+
2424
+ // Fast case - exact division
2425
+ if (dm.mod.isZero()) return dm.div;
2426
+
2427
+ var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
2428
+
2429
+ var half = num.ushrn(1);
2430
+ var r2 = num.andln(1);
2431
+ var cmp = mod.cmp(half);
2432
+
2433
+ // Round down
2434
+ if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;
2435
+
2436
+ // Round up
2437
+ return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
2438
+ };
2439
+
2440
+ BN.prototype.modrn = function modrn (num) {
2441
+ var isNegNum = num < 0;
2442
+ if (isNegNum) num = -num;
2443
+
2444
+ assert(num <= 0x3ffffff);
2445
+ var p = (1 << 26) % num;
2446
+
2447
+ var acc = 0;
2448
+ for (var i = this.length - 1; i >= 0; i--) {
2449
+ acc = (p * acc + (this.words[i] | 0)) % num;
2450
+ }
2451
+
2452
+ return isNegNum ? -acc : acc;
2453
+ };
2454
+
2455
+ // WARNING: DEPRECATED
2456
+ BN.prototype.modn = function modn (num) {
2457
+ return this.modrn(num);
2458
+ };
2459
+
2460
+ // In-place division by number
2461
+ BN.prototype.idivn = function idivn (num) {
2462
+ var isNegNum = num < 0;
2463
+ if (isNegNum) num = -num;
2464
+
2465
+ assert(num <= 0x3ffffff);
2466
+
2467
+ var carry = 0;
2468
+ for (var i = this.length - 1; i >= 0; i--) {
2469
+ var w = (this.words[i] | 0) + carry * 0x4000000;
2470
+ this.words[i] = (w / num) | 0;
2471
+ carry = w % num;
2472
+ }
2473
+
2474
+ this._strip();
2475
+ return isNegNum ? this.ineg() : this;
2476
+ };
2477
+
2478
+ BN.prototype.divn = function divn (num) {
2479
+ return this.clone().idivn(num);
2480
+ };
2481
+
2482
+ BN.prototype.egcd = function egcd (p) {
2483
+ assert(p.negative === 0);
2484
+ assert(!p.isZero());
2485
+
2486
+ var x = this;
2487
+ var y = p.clone();
2488
+
2489
+ if (x.negative !== 0) {
2490
+ x = x.umod(p);
2491
+ } else {
2492
+ x = x.clone();
2493
+ }
2494
+
2495
+ // A * x + B * y = x
2496
+ var A = new BN(1);
2497
+ var B = new BN(0);
2498
+
2499
+ // C * x + D * y = y
2500
+ var C = new BN(0);
2501
+ var D = new BN(1);
2502
+
2503
+ var g = 0;
2504
+
2505
+ while (x.isEven() && y.isEven()) {
2506
+ x.iushrn(1);
2507
+ y.iushrn(1);
2508
+ ++g;
2509
+ }
2510
+
2511
+ var yp = y.clone();
2512
+ var xp = x.clone();
2513
+
2514
+ while (!x.isZero()) {
2515
+ for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
2516
+ if (i > 0) {
2517
+ x.iushrn(i);
2518
+ while (i-- > 0) {
2519
+ if (A.isOdd() || B.isOdd()) {
2520
+ A.iadd(yp);
2521
+ B.isub(xp);
2522
+ }
2523
+
2524
+ A.iushrn(1);
2525
+ B.iushrn(1);
2526
+ }
2527
+ }
2528
+
2529
+ for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
2530
+ if (j > 0) {
2531
+ y.iushrn(j);
2532
+ while (j-- > 0) {
2533
+ if (C.isOdd() || D.isOdd()) {
2534
+ C.iadd(yp);
2535
+ D.isub(xp);
2536
+ }
2537
+
2538
+ C.iushrn(1);
2539
+ D.iushrn(1);
2540
+ }
2541
+ }
2542
+
2543
+ if (x.cmp(y) >= 0) {
2544
+ x.isub(y);
2545
+ A.isub(C);
2546
+ B.isub(D);
2547
+ } else {
2548
+ y.isub(x);
2549
+ C.isub(A);
2550
+ D.isub(B);
2551
+ }
2552
+ }
2553
+
2554
+ return {
2555
+ a: C,
2556
+ b: D,
2557
+ gcd: y.iushln(g)
2558
+ };
2559
+ };
2560
+
2561
+ // This is reduced incarnation of the binary EEA
2562
+ // above, designated to invert members of the
2563
+ // _prime_ fields F(p) at a maximal speed
2564
+ BN.prototype._invmp = function _invmp (p) {
2565
+ assert(p.negative === 0);
2566
+ assert(!p.isZero());
2567
+
2568
+ var a = this;
2569
+ var b = p.clone();
2570
+
2571
+ if (a.negative !== 0) {
2572
+ a = a.umod(p);
2573
+ } else {
2574
+ a = a.clone();
2575
+ }
2576
+
2577
+ var x1 = new BN(1);
2578
+ var x2 = new BN(0);
2579
+
2580
+ var delta = b.clone();
2581
+
2582
+ while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
2583
+ for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
2584
+ if (i > 0) {
2585
+ a.iushrn(i);
2586
+ while (i-- > 0) {
2587
+ if (x1.isOdd()) {
2588
+ x1.iadd(delta);
2589
+ }
2590
+
2591
+ x1.iushrn(1);
2592
+ }
2593
+ }
2594
+
2595
+ for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
2596
+ if (j > 0) {
2597
+ b.iushrn(j);
2598
+ while (j-- > 0) {
2599
+ if (x2.isOdd()) {
2600
+ x2.iadd(delta);
2601
+ }
2602
+
2603
+ x2.iushrn(1);
2604
+ }
2605
+ }
2606
+
2607
+ if (a.cmp(b) >= 0) {
2608
+ a.isub(b);
2609
+ x1.isub(x2);
2610
+ } else {
2611
+ b.isub(a);
2612
+ x2.isub(x1);
2613
+ }
2614
+ }
2615
+
2616
+ var res;
2617
+ if (a.cmpn(1) === 0) {
2618
+ res = x1;
2619
+ } else {
2620
+ res = x2;
2621
+ }
2622
+
2623
+ if (res.cmpn(0) < 0) {
2624
+ res.iadd(p);
2625
+ }
2626
+
2627
+ return res;
2628
+ };
2629
+
2630
+ BN.prototype.gcd = function gcd (num) {
2631
+ if (this.isZero()) return num.abs();
2632
+ if (num.isZero()) return this.abs();
2633
+
2634
+ var a = this.clone();
2635
+ var b = num.clone();
2636
+ a.negative = 0;
2637
+ b.negative = 0;
2638
+
2639
+ // Remove common factor of two
2640
+ for (var shift = 0; a.isEven() && b.isEven(); shift++) {
2641
+ a.iushrn(1);
2642
+ b.iushrn(1);
2643
+ }
2644
+
2645
+ do {
2646
+ while (a.isEven()) {
2647
+ a.iushrn(1);
2648
+ }
2649
+ while (b.isEven()) {
2650
+ b.iushrn(1);
2651
+ }
2652
+
2653
+ var r = a.cmp(b);
2654
+ if (r < 0) {
2655
+ // Swap `a` and `b` to make `a` always bigger than `b`
2656
+ var t = a;
2657
+ a = b;
2658
+ b = t;
2659
+ } else if (r === 0 || b.cmpn(1) === 0) {
2660
+ break;
2661
+ }
2662
+
2663
+ a.isub(b);
2664
+ } while (true);
2665
+
2666
+ return b.iushln(shift);
2667
+ };
2668
+
2669
+ // Invert number in the field F(num)
2670
+ BN.prototype.invm = function invm (num) {
2671
+ return this.egcd(num).a.umod(num);
2672
+ };
2673
+
2674
+ BN.prototype.isEven = function isEven () {
2675
+ return (this.words[0] & 1) === 0;
2676
+ };
2677
+
2678
+ BN.prototype.isOdd = function isOdd () {
2679
+ return (this.words[0] & 1) === 1;
2680
+ };
2681
+
2682
+ // And first word and num
2683
+ BN.prototype.andln = function andln (num) {
2684
+ return this.words[0] & num;
2685
+ };
2686
+
2687
+ // Increment at the bit position in-line
2688
+ BN.prototype.bincn = function bincn (bit) {
2689
+ assert(typeof bit === 'number');
2690
+ var r = bit % 26;
2691
+ var s = (bit - r) / 26;
2692
+ var q = 1 << r;
2693
+
2694
+ // Fast case: bit is much higher than all existing words
2695
+ if (this.length <= s) {
2696
+ this._expand(s + 1);
2697
+ this.words[s] |= q;
2698
+ return this;
2699
+ }
2700
+
2701
+ // Add bit and propagate, if needed
2702
+ var carry = q;
2703
+ for (var i = s; carry !== 0 && i < this.length; i++) {
2704
+ var w = this.words[i] | 0;
2705
+ w += carry;
2706
+ carry = w >>> 26;
2707
+ w &= 0x3ffffff;
2708
+ this.words[i] = w;
2709
+ }
2710
+ if (carry !== 0) {
2711
+ this.words[i] = carry;
2712
+ this.length++;
2713
+ }
2714
+ return this;
2715
+ };
2716
+
2717
+ BN.prototype.isZero = function isZero () {
2718
+ return this.length === 1 && this.words[0] === 0;
2719
+ };
2720
+
2721
+ BN.prototype.cmpn = function cmpn (num) {
2722
+ var negative = num < 0;
2723
+
2724
+ if (this.negative !== 0 && !negative) return -1;
2725
+ if (this.negative === 0 && negative) return 1;
2726
+
2727
+ this._strip();
2728
+
2729
+ var res;
2730
+ if (this.length > 1) {
2731
+ res = 1;
2732
+ } else {
2733
+ if (negative) {
2734
+ num = -num;
2735
+ }
2736
+
2737
+ assert(num <= 0x3ffffff, 'Number is too big');
2738
+
2739
+ var w = this.words[0] | 0;
2740
+ res = w === num ? 0 : w < num ? -1 : 1;
2741
+ }
2742
+ if (this.negative !== 0) return -res | 0;
2743
+ return res;
2744
+ };
2745
+
2746
+ // Compare two numbers and return:
2747
+ // 1 - if `this` > `num`
2748
+ // 0 - if `this` == `num`
2749
+ // -1 - if `this` < `num`
2750
+ BN.prototype.cmp = function cmp (num) {
2751
+ if (this.negative !== 0 && num.negative === 0) return -1;
2752
+ if (this.negative === 0 && num.negative !== 0) return 1;
2753
+
2754
+ var res = this.ucmp(num);
2755
+ if (this.negative !== 0) return -res | 0;
2756
+ return res;
2757
+ };
2758
+
2759
+ // Unsigned comparison
2760
+ BN.prototype.ucmp = function ucmp (num) {
2761
+ // At this point both numbers have the same sign
2762
+ if (this.length > num.length) return 1;
2763
+ if (this.length < num.length) return -1;
2764
+
2765
+ var res = 0;
2766
+ for (var i = this.length - 1; i >= 0; i--) {
2767
+ var a = this.words[i] | 0;
2768
+ var b = num.words[i] | 0;
2769
+
2770
+ if (a === b) continue;
2771
+ if (a < b) {
2772
+ res = -1;
2773
+ } else if (a > b) {
2774
+ res = 1;
2775
+ }
2776
+ break;
2777
+ }
2778
+ return res;
2779
+ };
2780
+
2781
+ BN.prototype.gtn = function gtn (num) {
2782
+ return this.cmpn(num) === 1;
2783
+ };
2784
+
2785
+ BN.prototype.gt = function gt (num) {
2786
+ return this.cmp(num) === 1;
2787
+ };
2788
+
2789
+ BN.prototype.gten = function gten (num) {
2790
+ return this.cmpn(num) >= 0;
2791
+ };
2792
+
2793
+ BN.prototype.gte = function gte (num) {
2794
+ return this.cmp(num) >= 0;
2795
+ };
2796
+
2797
+ BN.prototype.ltn = function ltn (num) {
2798
+ return this.cmpn(num) === -1;
2799
+ };
2800
+
2801
+ BN.prototype.lt = function lt (num) {
2802
+ return this.cmp(num) === -1;
2803
+ };
2804
+
2805
+ BN.prototype.lten = function lten (num) {
2806
+ return this.cmpn(num) <= 0;
2807
+ };
2808
+
2809
+ BN.prototype.lte = function lte (num) {
2810
+ return this.cmp(num) <= 0;
2811
+ };
2812
+
2813
+ BN.prototype.eqn = function eqn (num) {
2814
+ return this.cmpn(num) === 0;
2815
+ };
2816
+
2817
+ BN.prototype.eq = function eq (num) {
2818
+ return this.cmp(num) === 0;
2819
+ };
2820
+
2821
+ //
2822
+ // A reduce context, could be using montgomery or something better, depending
2823
+ // on the `m` itself.
2824
+ //
2825
+ BN.red = function red (num) {
2826
+ return new Red(num);
2827
+ };
2828
+
2829
+ BN.prototype.toRed = function toRed (ctx) {
2830
+ assert(!this.red, 'Already a number in reduction context');
2831
+ assert(this.negative === 0, 'red works only with positives');
2832
+ return ctx.convertTo(this)._forceRed(ctx);
2833
+ };
2834
+
2835
+ BN.prototype.fromRed = function fromRed () {
2836
+ assert(this.red, 'fromRed works only with numbers in reduction context');
2837
+ return this.red.convertFrom(this);
2838
+ };
2839
+
2840
+ BN.prototype._forceRed = function _forceRed (ctx) {
2841
+ this.red = ctx;
2842
+ return this;
2843
+ };
2844
+
2845
+ BN.prototype.forceRed = function forceRed (ctx) {
2846
+ assert(!this.red, 'Already a number in reduction context');
2847
+ return this._forceRed(ctx);
2848
+ };
2849
+
2850
+ BN.prototype.redAdd = function redAdd (num) {
2851
+ assert(this.red, 'redAdd works only with red numbers');
2852
+ return this.red.add(this, num);
2853
+ };
2854
+
2855
+ BN.prototype.redIAdd = function redIAdd (num) {
2856
+ assert(this.red, 'redIAdd works only with red numbers');
2857
+ return this.red.iadd(this, num);
2858
+ };
2859
+
2860
+ BN.prototype.redSub = function redSub (num) {
2861
+ assert(this.red, 'redSub works only with red numbers');
2862
+ return this.red.sub(this, num);
2863
+ };
2864
+
2865
+ BN.prototype.redISub = function redISub (num) {
2866
+ assert(this.red, 'redISub works only with red numbers');
2867
+ return this.red.isub(this, num);
2868
+ };
2869
+
2870
+ BN.prototype.redShl = function redShl (num) {
2871
+ assert(this.red, 'redShl works only with red numbers');
2872
+ return this.red.shl(this, num);
2873
+ };
2874
+
2875
+ BN.prototype.redMul = function redMul (num) {
2876
+ assert(this.red, 'redMul works only with red numbers');
2877
+ this.red._verify2(this, num);
2878
+ return this.red.mul(this, num);
2879
+ };
2880
+
2881
+ BN.prototype.redIMul = function redIMul (num) {
2882
+ assert(this.red, 'redMul works only with red numbers');
2883
+ this.red._verify2(this, num);
2884
+ return this.red.imul(this, num);
2885
+ };
2886
+
2887
+ BN.prototype.redSqr = function redSqr () {
2888
+ assert(this.red, 'redSqr works only with red numbers');
2889
+ this.red._verify1(this);
2890
+ return this.red.sqr(this);
2891
+ };
2892
+
2893
+ BN.prototype.redISqr = function redISqr () {
2894
+ assert(this.red, 'redISqr works only with red numbers');
2895
+ this.red._verify1(this);
2896
+ return this.red.isqr(this);
2897
+ };
2898
+
2899
+ // Square root over p
2900
+ BN.prototype.redSqrt = function redSqrt () {
2901
+ assert(this.red, 'redSqrt works only with red numbers');
2902
+ this.red._verify1(this);
2903
+ return this.red.sqrt(this);
2904
+ };
2905
+
2906
+ BN.prototype.redInvm = function redInvm () {
2907
+ assert(this.red, 'redInvm works only with red numbers');
2908
+ this.red._verify1(this);
2909
+ return this.red.invm(this);
2910
+ };
2911
+
2912
+ // Return negative clone of `this` % `red modulo`
2913
+ BN.prototype.redNeg = function redNeg () {
2914
+ assert(this.red, 'redNeg works only with red numbers');
2915
+ this.red._verify1(this);
2916
+ return this.red.neg(this);
2917
+ };
2918
+
2919
+ BN.prototype.redPow = function redPow (num) {
2920
+ assert(this.red && !num.red, 'redPow(normalNum)');
2921
+ this.red._verify1(this);
2922
+ return this.red.pow(this, num);
2923
+ };
2924
+
2925
+ // Prime numbers with efficient reduction
2926
+ var primes = {
2927
+ k256: null,
2928
+ p224: null,
2929
+ p192: null,
2930
+ p25519: null
2931
+ };
2932
+
2933
+ // Pseudo-Mersenne prime
2934
+ function MPrime (name, p) {
2935
+ // P = 2 ^ N - K
2936
+ this.name = name;
2937
+ this.p = new BN(p, 16);
2938
+ this.n = this.p.bitLength();
2939
+ this.k = new BN(1).iushln(this.n).isub(this.p);
2940
+
2941
+ this.tmp = this._tmp();
2942
+ }
2943
+
2944
+ MPrime.prototype._tmp = function _tmp () {
2945
+ var tmp = new BN(null);
2946
+ tmp.words = new Array(Math.ceil(this.n / 13));
2947
+ return tmp;
2948
+ };
2949
+
2950
+ MPrime.prototype.ireduce = function ireduce (num) {
2951
+ // Assumes that `num` is less than `P^2`
2952
+ // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
2953
+ var r = num;
2954
+ var rlen;
2955
+
2956
+ do {
2957
+ this.split(r, this.tmp);
2958
+ r = this.imulK(r);
2959
+ r = r.iadd(this.tmp);
2960
+ rlen = r.bitLength();
2961
+ } while (rlen > this.n);
2962
+
2963
+ var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
2964
+ if (cmp === 0) {
2965
+ r.words[0] = 0;
2966
+ r.length = 1;
2967
+ } else if (cmp > 0) {
2968
+ r.isub(this.p);
2969
+ } else {
2970
+ if (r.strip !== undefined) {
2971
+ // r is a BN v4 instance
2972
+ r.strip();
2973
+ } else {
2974
+ // r is a BN v5 instance
2975
+ r._strip();
2976
+ }
2977
+ }
2978
+
2979
+ return r;
2980
+ };
2981
+
2982
+ MPrime.prototype.split = function split (input, out) {
2983
+ input.iushrn(this.n, 0, out);
2984
+ };
2985
+
2986
+ MPrime.prototype.imulK = function imulK (num) {
2987
+ return num.imul(this.k);
2988
+ };
2989
+
2990
+ function K256 () {
2991
+ MPrime.call(
2992
+ this,
2993
+ 'k256',
2994
+ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
2995
+ }
2996
+ inherits(K256, MPrime);
2997
+
2998
+ K256.prototype.split = function split (input, output) {
2999
+ // 256 = 9 * 26 + 22
3000
+ var mask = 0x3fffff;
3001
+
3002
+ var outLen = Math.min(input.length, 9);
3003
+ for (var i = 0; i < outLen; i++) {
3004
+ output.words[i] = input.words[i];
3005
+ }
3006
+ output.length = outLen;
3007
+
3008
+ if (input.length <= 9) {
3009
+ input.words[0] = 0;
3010
+ input.length = 1;
3011
+ return;
3012
+ }
3013
+
3014
+ // Shift by 9 limbs
3015
+ var prev = input.words[9];
3016
+ output.words[output.length++] = prev & mask;
3017
+
3018
+ for (i = 10; i < input.length; i++) {
3019
+ var next = input.words[i] | 0;
3020
+ input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
3021
+ prev = next;
3022
+ }
3023
+ prev >>>= 22;
3024
+ input.words[i - 10] = prev;
3025
+ if (prev === 0 && input.length > 10) {
3026
+ input.length -= 10;
3027
+ } else {
3028
+ input.length -= 9;
3029
+ }
3030
+ };
3031
+
3032
+ K256.prototype.imulK = function imulK (num) {
3033
+ // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
3034
+ num.words[num.length] = 0;
3035
+ num.words[num.length + 1] = 0;
3036
+ num.length += 2;
3037
+
3038
+ // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
3039
+ var lo = 0;
3040
+ for (var i = 0; i < num.length; i++) {
3041
+ var w = num.words[i] | 0;
3042
+ lo += w * 0x3d1;
3043
+ num.words[i] = lo & 0x3ffffff;
3044
+ lo = w * 0x40 + ((lo / 0x4000000) | 0);
3045
+ }
3046
+
3047
+ // Fast length reduction
3048
+ if (num.words[num.length - 1] === 0) {
3049
+ num.length--;
3050
+ if (num.words[num.length - 1] === 0) {
3051
+ num.length--;
3052
+ }
3053
+ }
3054
+ return num;
3055
+ };
3056
+
3057
+ function P224 () {
3058
+ MPrime.call(
3059
+ this,
3060
+ 'p224',
3061
+ 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
3062
+ }
3063
+ inherits(P224, MPrime);
3064
+
3065
+ function P192 () {
3066
+ MPrime.call(
3067
+ this,
3068
+ 'p192',
3069
+ 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
3070
+ }
3071
+ inherits(P192, MPrime);
3072
+
3073
+ function P25519 () {
3074
+ // 2 ^ 255 - 19
3075
+ MPrime.call(
3076
+ this,
3077
+ '25519',
3078
+ '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
3079
+ }
3080
+ inherits(P25519, MPrime);
3081
+
3082
+ P25519.prototype.imulK = function imulK (num) {
3083
+ // K = 0x13
3084
+ var carry = 0;
3085
+ for (var i = 0; i < num.length; i++) {
3086
+ var hi = (num.words[i] | 0) * 0x13 + carry;
3087
+ var lo = hi & 0x3ffffff;
3088
+ hi >>>= 26;
3089
+
3090
+ num.words[i] = lo;
3091
+ carry = hi;
3092
+ }
3093
+ if (carry !== 0) {
3094
+ num.words[num.length++] = carry;
3095
+ }
3096
+ return num;
3097
+ };
3098
+
3099
+ // Exported mostly for testing purposes, use plain name instead
3100
+ BN._prime = function prime (name) {
3101
+ // Cached version of prime
3102
+ if (primes[name]) return primes[name];
3103
+
3104
+ var prime;
3105
+ if (name === 'k256') {
3106
+ prime = new K256();
3107
+ } else if (name === 'p224') {
3108
+ prime = new P224();
3109
+ } else if (name === 'p192') {
3110
+ prime = new P192();
3111
+ } else if (name === 'p25519') {
3112
+ prime = new P25519();
3113
+ } else {
3114
+ throw new Error('Unknown prime ' + name);
3115
+ }
3116
+ primes[name] = prime;
3117
+
3118
+ return prime;
3119
+ };
3120
+
3121
+ //
3122
+ // Base reduction engine
3123
+ //
3124
+ function Red (m) {
3125
+ if (typeof m === 'string') {
3126
+ var prime = BN._prime(m);
3127
+ this.m = prime.p;
3128
+ this.prime = prime;
3129
+ } else {
3130
+ assert(m.gtn(1), 'modulus must be greater than 1');
3131
+ this.m = m;
3132
+ this.prime = null;
3133
+ }
3134
+ }
3135
+
3136
+ Red.prototype._verify1 = function _verify1 (a) {
3137
+ assert(a.negative === 0, 'red works only with positives');
3138
+ assert(a.red, 'red works only with red numbers');
3139
+ };
3140
+
3141
+ Red.prototype._verify2 = function _verify2 (a, b) {
3142
+ assert((a.negative | b.negative) === 0, 'red works only with positives');
3143
+ assert(a.red && a.red === b.red,
3144
+ 'red works only with red numbers');
3145
+ };
3146
+
3147
+ Red.prototype.imod = function imod (a) {
3148
+ if (this.prime) return this.prime.ireduce(a)._forceRed(this);
3149
+
3150
+ move(a, a.umod(this.m)._forceRed(this));
3151
+ return a;
3152
+ };
3153
+
3154
+ Red.prototype.neg = function neg (a) {
3155
+ if (a.isZero()) {
3156
+ return a.clone();
3157
+ }
3158
+
3159
+ return this.m.sub(a)._forceRed(this);
3160
+ };
3161
+
3162
+ Red.prototype.add = function add (a, b) {
3163
+ this._verify2(a, b);
3164
+
3165
+ var res = a.add(b);
3166
+ if (res.cmp(this.m) >= 0) {
3167
+ res.isub(this.m);
3168
+ }
3169
+ return res._forceRed(this);
3170
+ };
3171
+
3172
+ Red.prototype.iadd = function iadd (a, b) {
3173
+ this._verify2(a, b);
3174
+
3175
+ var res = a.iadd(b);
3176
+ if (res.cmp(this.m) >= 0) {
3177
+ res.isub(this.m);
3178
+ }
3179
+ return res;
3180
+ };
3181
+
3182
+ Red.prototype.sub = function sub (a, b) {
3183
+ this._verify2(a, b);
3184
+
3185
+ var res = a.sub(b);
3186
+ if (res.cmpn(0) < 0) {
3187
+ res.iadd(this.m);
3188
+ }
3189
+ return res._forceRed(this);
3190
+ };
3191
+
3192
+ Red.prototype.isub = function isub (a, b) {
3193
+ this._verify2(a, b);
3194
+
3195
+ var res = a.isub(b);
3196
+ if (res.cmpn(0) < 0) {
3197
+ res.iadd(this.m);
3198
+ }
3199
+ return res;
3200
+ };
3201
+
3202
+ Red.prototype.shl = function shl (a, num) {
3203
+ this._verify1(a);
3204
+ return this.imod(a.ushln(num));
3205
+ };
3206
+
3207
+ Red.prototype.imul = function imul (a, b) {
3208
+ this._verify2(a, b);
3209
+ return this.imod(a.imul(b));
3210
+ };
3211
+
3212
+ Red.prototype.mul = function mul (a, b) {
3213
+ this._verify2(a, b);
3214
+ return this.imod(a.mul(b));
3215
+ };
3216
+
3217
+ Red.prototype.isqr = function isqr (a) {
3218
+ return this.imul(a, a.clone());
3219
+ };
3220
+
3221
+ Red.prototype.sqr = function sqr (a) {
3222
+ return this.mul(a, a);
3223
+ };
3224
+
3225
+ Red.prototype.sqrt = function sqrt (a) {
3226
+ if (a.isZero()) return a.clone();
3227
+
3228
+ var mod3 = this.m.andln(3);
3229
+ assert(mod3 % 2 === 1);
3230
+
3231
+ // Fast case
3232
+ if (mod3 === 3) {
3233
+ var pow = this.m.add(new BN(1)).iushrn(2);
3234
+ return this.pow(a, pow);
3235
+ }
3236
+
3237
+ // Tonelli-Shanks algorithm (Totally unoptimized and slow)
3238
+ //
3239
+ // Find Q and S, that Q * 2 ^ S = (P - 1)
3240
+ var q = this.m.subn(1);
3241
+ var s = 0;
3242
+ while (!q.isZero() && q.andln(1) === 0) {
3243
+ s++;
3244
+ q.iushrn(1);
3245
+ }
3246
+ assert(!q.isZero());
3247
+
3248
+ var one = new BN(1).toRed(this);
3249
+ var nOne = one.redNeg();
3250
+
3251
+ // Find quadratic non-residue
3252
+ // NOTE: Max is such because of generalized Riemann hypothesis.
3253
+ var lpow = this.m.subn(1).iushrn(1);
3254
+ var z = this.m.bitLength();
3255
+ z = new BN(2 * z * z).toRed(this);
3256
+
3257
+ while (this.pow(z, lpow).cmp(nOne) !== 0) {
3258
+ z.redIAdd(nOne);
3259
+ }
3260
+
3261
+ var c = this.pow(z, q);
3262
+ var r = this.pow(a, q.addn(1).iushrn(1));
3263
+ var t = this.pow(a, q);
3264
+ var m = s;
3265
+ while (t.cmp(one) !== 0) {
3266
+ var tmp = t;
3267
+ for (var i = 0; tmp.cmp(one) !== 0; i++) {
3268
+ tmp = tmp.redSqr();
3269
+ }
3270
+ assert(i < m);
3271
+ var b = this.pow(c, new BN(1).iushln(m - i - 1));
3272
+
3273
+ r = r.redMul(b);
3274
+ c = b.redSqr();
3275
+ t = t.redMul(c);
3276
+ m = i;
3277
+ }
3278
+
3279
+ return r;
3280
+ };
3281
+
3282
+ Red.prototype.invm = function invm (a) {
3283
+ var inv = a._invmp(this.m);
3284
+ if (inv.negative !== 0) {
3285
+ inv.negative = 0;
3286
+ return this.imod(inv).redNeg();
3287
+ } else {
3288
+ return this.imod(inv);
3289
+ }
3290
+ };
3291
+
3292
+ Red.prototype.pow = function pow (a, num) {
3293
+ if (num.isZero()) return new BN(1).toRed(this);
3294
+ if (num.cmpn(1) === 0) return a.clone();
3295
+
3296
+ var windowSize = 4;
3297
+ var wnd = new Array(1 << windowSize);
3298
+ wnd[0] = new BN(1).toRed(this);
3299
+ wnd[1] = a;
3300
+ for (var i = 2; i < wnd.length; i++) {
3301
+ wnd[i] = this.mul(wnd[i - 1], a);
3302
+ }
3303
+
3304
+ var res = wnd[0];
3305
+ var current = 0;
3306
+ var currentLen = 0;
3307
+ var start = num.bitLength() % 26;
3308
+ if (start === 0) {
3309
+ start = 26;
3310
+ }
3311
+
3312
+ for (i = num.length - 1; i >= 0; i--) {
3313
+ var word = num.words[i];
3314
+ for (var j = start - 1; j >= 0; j--) {
3315
+ var bit = (word >> j) & 1;
3316
+ if (res !== wnd[0]) {
3317
+ res = this.sqr(res);
3318
+ }
3319
+
3320
+ if (bit === 0 && current === 0) {
3321
+ currentLen = 0;
3322
+ continue;
3323
+ }
3324
+
3325
+ current <<= 1;
3326
+ current |= bit;
3327
+ currentLen++;
3328
+ if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
3329
+
3330
+ res = this.mul(res, wnd[current]);
3331
+ currentLen = 0;
3332
+ current = 0;
3333
+ }
3334
+ start = 26;
3335
+ }
3336
+
3337
+ return res;
3338
+ };
3339
+
3340
+ Red.prototype.convertTo = function convertTo (num) {
3341
+ var r = num.umod(this.m);
3342
+
3343
+ return r === num ? r.clone() : r;
3344
+ };
3345
+
3346
+ Red.prototype.convertFrom = function convertFrom (num) {
3347
+ var res = num.clone();
3348
+ res.red = null;
3349
+ return res;
3350
+ };
3351
+
3352
+ //
3353
+ // Montgomery method engine
3354
+ //
3355
+
3356
+ BN.mont = function mont (num) {
3357
+ return new Mont(num);
3358
+ };
3359
+
3360
+ function Mont (m) {
3361
+ Red.call(this, m);
3362
+
3363
+ this.shift = this.m.bitLength();
3364
+ if (this.shift % 26 !== 0) {
3365
+ this.shift += 26 - (this.shift % 26);
3366
+ }
3367
+
3368
+ this.r = new BN(1).iushln(this.shift);
3369
+ this.r2 = this.imod(this.r.sqr());
3370
+ this.rinv = this.r._invmp(this.m);
3371
+
3372
+ this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
3373
+ this.minv = this.minv.umod(this.r);
3374
+ this.minv = this.r.sub(this.minv);
3375
+ }
3376
+ inherits(Mont, Red);
3377
+
3378
+ Mont.prototype.convertTo = function convertTo (num) {
3379
+ return this.imod(num.ushln(this.shift));
3380
+ };
3381
+
3382
+ Mont.prototype.convertFrom = function convertFrom (num) {
3383
+ var r = this.imod(num.mul(this.rinv));
3384
+ r.red = null;
3385
+ return r;
3386
+ };
3387
+
3388
+ Mont.prototype.imul = function imul (a, b) {
3389
+ if (a.isZero() || b.isZero()) {
3390
+ a.words[0] = 0;
3391
+ a.length = 1;
3392
+ return a;
3393
+ }
3394
+
3395
+ var t = a.imul(b);
3396
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
3397
+ var u = t.isub(c).iushrn(this.shift);
3398
+ var res = u;
3399
+
3400
+ if (u.cmp(this.m) >= 0) {
3401
+ res = u.isub(this.m);
3402
+ } else if (u.cmpn(0) < 0) {
3403
+ res = u.iadd(this.m);
3404
+ }
3405
+
3406
+ return res._forceRed(this);
3407
+ };
3408
+
3409
+ Mont.prototype.mul = function mul (a, b) {
3410
+ if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
3411
+
3412
+ var t = a.mul(b);
3413
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
3414
+ var u = t.isub(c).iushrn(this.shift);
3415
+ var res = u;
3416
+ if (u.cmp(this.m) >= 0) {
3417
+ res = u.isub(this.m);
3418
+ } else if (u.cmpn(0) < 0) {
3419
+ res = u.iadd(this.m);
3420
+ }
3421
+
3422
+ return res._forceRed(this);
3423
+ };
3424
+
3425
+ Mont.prototype.invm = function invm (a) {
3426
+ // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
3427
+ var res = this.imod(a._invmp(this.m).mul(this.r2));
3428
+ return res._forceRed(this);
3429
+ };
3430
+ })(module, commonjsGlobal);
3431
+ } (bn));
3432
+
3433
+ var bnExports = bn.exports;
3434
+ var _BN = /*@__PURE__*/getDefaultExportFromCjs(bnExports);
3435
+
3436
+ const version$3 = "logger/5.7.0";
3437
+
3438
+ let _permanentCensorErrors = false;
3439
+ let _censorErrors = false;
3440
+ const LogLevels = { debug: 1, "default": 2, info: 2, warning: 3, error: 4, off: 5 };
3441
+ let _logLevel = LogLevels["default"];
3442
+ let _globalLogger = null;
3443
+ function _checkNormalize() {
3444
+ try {
3445
+ const missing = [];
3446
+ // Make sure all forms of normalization are supported
3447
+ ["NFD", "NFC", "NFKD", "NFKC"].forEach((form) => {
3448
+ try {
3449
+ if ("test".normalize(form) !== "test") {
3450
+ throw new Error("bad normalize");
3451
+ }
3452
+ ;
3453
+ }
3454
+ catch (error) {
3455
+ missing.push(form);
3456
+ }
3457
+ });
3458
+ if (missing.length) {
3459
+ throw new Error("missing " + missing.join(", "));
3460
+ }
3461
+ if (String.fromCharCode(0xe9).normalize("NFD") !== String.fromCharCode(0x65, 0x0301)) {
3462
+ throw new Error("broken implementation");
3463
+ }
3464
+ }
3465
+ catch (error) {
3466
+ return error.message;
3467
+ }
3468
+ return null;
3469
+ }
3470
+ const _normalizeError = _checkNormalize();
3471
+ var LogLevel;
3472
+ (function (LogLevel) {
3473
+ LogLevel["DEBUG"] = "DEBUG";
3474
+ LogLevel["INFO"] = "INFO";
3475
+ LogLevel["WARNING"] = "WARNING";
3476
+ LogLevel["ERROR"] = "ERROR";
3477
+ LogLevel["OFF"] = "OFF";
3478
+ })(LogLevel || (LogLevel = {}));
3479
+ var ErrorCode;
3480
+ (function (ErrorCode) {
3481
+ ///////////////////
3482
+ // Generic Errors
3483
+ // Unknown Error
3484
+ ErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
3485
+ // Not Implemented
3486
+ ErrorCode["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
3487
+ // Unsupported Operation
3488
+ // - operation
3489
+ ErrorCode["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
3490
+ // Network Error (i.e. Ethereum Network, such as an invalid chain ID)
3491
+ // - event ("noNetwork" is not re-thrown in provider.ready; otherwise thrown)
3492
+ ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
3493
+ // Some sort of bad response from the server
3494
+ ErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
3495
+ // Timeout
3496
+ ErrorCode["TIMEOUT"] = "TIMEOUT";
3497
+ ///////////////////
3498
+ // Operational Errors
3499
+ // Buffer Overrun
3500
+ ErrorCode["BUFFER_OVERRUN"] = "BUFFER_OVERRUN";
3501
+ // Numeric Fault
3502
+ // - operation: the operation being executed
3503
+ // - fault: the reason this faulted
3504
+ ErrorCode["NUMERIC_FAULT"] = "NUMERIC_FAULT";
3505
+ ///////////////////
3506
+ // Argument Errors
3507
+ // Missing new operator to an object
3508
+ // - name: The name of the class
3509
+ ErrorCode["MISSING_NEW"] = "MISSING_NEW";
3510
+ // Invalid argument (e.g. value is incompatible with type) to a function:
3511
+ // - argument: The argument name that was invalid
3512
+ // - value: The value of the argument
3513
+ ErrorCode["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
3514
+ // Missing argument to a function:
3515
+ // - count: The number of arguments received
3516
+ // - expectedCount: The number of arguments expected
3517
+ ErrorCode["MISSING_ARGUMENT"] = "MISSING_ARGUMENT";
3518
+ // Too many arguments
3519
+ // - count: The number of arguments received
3520
+ // - expectedCount: The number of arguments expected
3521
+ ErrorCode["UNEXPECTED_ARGUMENT"] = "UNEXPECTED_ARGUMENT";
3522
+ ///////////////////
3523
+ // Blockchain Errors
3524
+ // Call exception
3525
+ // - transaction: the transaction
3526
+ // - address?: the contract address
3527
+ // - args?: The arguments passed into the function
3528
+ // - method?: The Solidity method signature
3529
+ // - errorSignature?: The EIP848 error signature
3530
+ // - errorArgs?: The EIP848 error parameters
3531
+ // - reason: The reason (only for EIP848 "Error(string)")
3532
+ ErrorCode["CALL_EXCEPTION"] = "CALL_EXCEPTION";
3533
+ // Insufficient funds (< value + gasLimit * gasPrice)
3534
+ // - transaction: the transaction attempted
3535
+ ErrorCode["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
3536
+ // Nonce has already been used
3537
+ // - transaction: the transaction attempted
3538
+ ErrorCode["NONCE_EXPIRED"] = "NONCE_EXPIRED";
3539
+ // The replacement fee for the transaction is too low
3540
+ // - transaction: the transaction attempted
3541
+ ErrorCode["REPLACEMENT_UNDERPRICED"] = "REPLACEMENT_UNDERPRICED";
3542
+ // The gas limit could not be estimated
3543
+ // - transaction: the transaction passed to estimateGas
3544
+ ErrorCode["UNPREDICTABLE_GAS_LIMIT"] = "UNPREDICTABLE_GAS_LIMIT";
3545
+ // The transaction was replaced by one with a higher gas price
3546
+ // - reason: "cancelled", "replaced" or "repriced"
3547
+ // - cancelled: true if reason == "cancelled" or reason == "replaced")
3548
+ // - hash: original transaction hash
3549
+ // - replacement: the full TransactionsResponse for the replacement
3550
+ // - receipt: the receipt of the replacement
3551
+ ErrorCode["TRANSACTION_REPLACED"] = "TRANSACTION_REPLACED";
3552
+ ///////////////////
3553
+ // Interaction Errors
3554
+ // The user rejected the action, such as signing a message or sending
3555
+ // a transaction
3556
+ ErrorCode["ACTION_REJECTED"] = "ACTION_REJECTED";
3557
+ })(ErrorCode || (ErrorCode = {}));
3558
+ const HEX = "0123456789abcdef";
3559
+ class Logger {
3560
+ constructor(version) {
3561
+ Object.defineProperty(this, "version", {
3562
+ enumerable: true,
3563
+ value: version,
3564
+ writable: false
3565
+ });
3566
+ }
3567
+ _log(logLevel, args) {
3568
+ const level = logLevel.toLowerCase();
3569
+ if (LogLevels[level] == null) {
3570
+ this.throwArgumentError("invalid log level name", "logLevel", logLevel);
3571
+ }
3572
+ if (_logLevel > LogLevels[level]) {
3573
+ return;
3574
+ }
3575
+ console.log.apply(console, args);
3576
+ }
3577
+ debug(...args) {
3578
+ this._log(Logger.levels.DEBUG, args);
3579
+ }
3580
+ info(...args) {
3581
+ this._log(Logger.levels.INFO, args);
3582
+ }
3583
+ warn(...args) {
3584
+ this._log(Logger.levels.WARNING, args);
3585
+ }
3586
+ makeError(message, code, params) {
3587
+ // Errors are being censored
3588
+ if (_censorErrors) {
3589
+ return this.makeError("censored error", code, {});
3590
+ }
3591
+ if (!code) {
3592
+ code = Logger.errors.UNKNOWN_ERROR;
3593
+ }
3594
+ if (!params) {
3595
+ params = {};
3596
+ }
3597
+ const messageDetails = [];
3598
+ Object.keys(params).forEach((key) => {
3599
+ const value = params[key];
3600
+ try {
3601
+ if (value instanceof Uint8Array) {
3602
+ let hex = "";
3603
+ for (let i = 0; i < value.length; i++) {
3604
+ hex += HEX[value[i] >> 4];
3605
+ hex += HEX[value[i] & 0x0f];
3606
+ }
3607
+ messageDetails.push(key + "=Uint8Array(0x" + hex + ")");
3608
+ }
3609
+ else {
3610
+ messageDetails.push(key + "=" + JSON.stringify(value));
3611
+ }
3612
+ }
3613
+ catch (error) {
3614
+ messageDetails.push(key + "=" + JSON.stringify(params[key].toString()));
3615
+ }
3616
+ });
3617
+ messageDetails.push(`code=${code}`);
3618
+ messageDetails.push(`version=${this.version}`);
3619
+ const reason = message;
3620
+ let url = "";
3621
+ switch (code) {
3622
+ case ErrorCode.NUMERIC_FAULT: {
3623
+ url = "NUMERIC_FAULT";
3624
+ const fault = message;
3625
+ switch (fault) {
3626
+ case "overflow":
3627
+ case "underflow":
3628
+ case "division-by-zero":
3629
+ url += "-" + fault;
3630
+ break;
3631
+ case "negative-power":
3632
+ case "negative-width":
3633
+ url += "-unsupported";
3634
+ break;
3635
+ case "unbound-bitwise-result":
3636
+ url += "-unbound-result";
3637
+ break;
3638
+ }
3639
+ break;
3640
+ }
3641
+ case ErrorCode.CALL_EXCEPTION:
3642
+ case ErrorCode.INSUFFICIENT_FUNDS:
3643
+ case ErrorCode.MISSING_NEW:
3644
+ case ErrorCode.NONCE_EXPIRED:
3645
+ case ErrorCode.REPLACEMENT_UNDERPRICED:
3646
+ case ErrorCode.TRANSACTION_REPLACED:
3647
+ case ErrorCode.UNPREDICTABLE_GAS_LIMIT:
3648
+ url = code;
3649
+ break;
3650
+ }
3651
+ if (url) {
3652
+ message += " [ See: https:/\/links.ethers.org/v5-errors-" + url + " ]";
3653
+ }
3654
+ if (messageDetails.length) {
3655
+ message += " (" + messageDetails.join(", ") + ")";
3656
+ }
3657
+ // @TODO: Any??
3658
+ const error = new Error(message);
3659
+ error.reason = reason;
3660
+ error.code = code;
3661
+ Object.keys(params).forEach(function (key) {
3662
+ error[key] = params[key];
3663
+ });
3664
+ return error;
3665
+ }
3666
+ throwError(message, code, params) {
3667
+ throw this.makeError(message, code, params);
3668
+ }
3669
+ throwArgumentError(message, name, value) {
3670
+ return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {
3671
+ argument: name,
3672
+ value: value
3673
+ });
3674
+ }
3675
+ assert(condition, message, code, params) {
3676
+ if (!!condition) {
3677
+ return;
3678
+ }
3679
+ this.throwError(message, code, params);
3680
+ }
3681
+ assertArgument(condition, message, name, value) {
3682
+ if (!!condition) {
3683
+ return;
3684
+ }
3685
+ this.throwArgumentError(message, name, value);
3686
+ }
3687
+ checkNormalize(message) {
3688
+ if (_normalizeError) {
3689
+ this.throwError("platform missing String.prototype.normalize", Logger.errors.UNSUPPORTED_OPERATION, {
3690
+ operation: "String.prototype.normalize", form: _normalizeError
3691
+ });
3692
+ }
3693
+ }
3694
+ checkSafeUint53(value, message) {
3695
+ if (typeof (value) !== "number") {
3696
+ return;
3697
+ }
3698
+ if (message == null) {
3699
+ message = "value not safe";
3700
+ }
3701
+ if (value < 0 || value >= 0x1fffffffffffff) {
3702
+ this.throwError(message, Logger.errors.NUMERIC_FAULT, {
3703
+ operation: "checkSafeInteger",
3704
+ fault: "out-of-safe-range",
3705
+ value: value
3706
+ });
3707
+ }
3708
+ if (value % 1) {
3709
+ this.throwError(message, Logger.errors.NUMERIC_FAULT, {
3710
+ operation: "checkSafeInteger",
3711
+ fault: "non-integer",
3712
+ value: value
3713
+ });
3714
+ }
3715
+ }
3716
+ checkArgumentCount(count, expectedCount, message) {
3717
+ if (message) {
3718
+ message = ": " + message;
3719
+ }
3720
+ else {
3721
+ message = "";
3722
+ }
3723
+ if (count < expectedCount) {
3724
+ this.throwError("missing argument" + message, Logger.errors.MISSING_ARGUMENT, {
3725
+ count: count,
3726
+ expectedCount: expectedCount
3727
+ });
3728
+ }
3729
+ if (count > expectedCount) {
3730
+ this.throwError("too many arguments" + message, Logger.errors.UNEXPECTED_ARGUMENT, {
3731
+ count: count,
3732
+ expectedCount: expectedCount
3733
+ });
3734
+ }
3735
+ }
3736
+ checkNew(target, kind) {
3737
+ if (target === Object || target == null) {
3738
+ this.throwError("missing new", Logger.errors.MISSING_NEW, { name: kind.name });
3739
+ }
3740
+ }
3741
+ checkAbstract(target, kind) {
3742
+ if (target === kind) {
3743
+ this.throwError("cannot instantiate abstract class " + JSON.stringify(kind.name) + " directly; use a sub-class", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: "new" });
3744
+ }
3745
+ else if (target === Object || target == null) {
3746
+ this.throwError("missing new", Logger.errors.MISSING_NEW, { name: kind.name });
3747
+ }
3748
+ }
3749
+ static globalLogger() {
3750
+ if (!_globalLogger) {
3751
+ _globalLogger = new Logger(version$3);
3752
+ }
3753
+ return _globalLogger;
3754
+ }
3755
+ static setCensorship(censorship, permanent) {
3756
+ if (!censorship && permanent) {
3757
+ this.globalLogger().throwError("cannot permanently disable censorship", Logger.errors.UNSUPPORTED_OPERATION, {
3758
+ operation: "setCensorship"
3759
+ });
3760
+ }
3761
+ if (_permanentCensorErrors) {
3762
+ if (!censorship) {
3763
+ return;
3764
+ }
3765
+ this.globalLogger().throwError("error censorship permanent", Logger.errors.UNSUPPORTED_OPERATION, {
3766
+ operation: "setCensorship"
3767
+ });
3768
+ }
3769
+ _censorErrors = !!censorship;
3770
+ _permanentCensorErrors = !!permanent;
3771
+ }
3772
+ static setLogLevel(logLevel) {
3773
+ const level = LogLevels[logLevel.toLowerCase()];
3774
+ if (level == null) {
3775
+ Logger.globalLogger().warn("invalid log level - " + logLevel);
3776
+ return;
3777
+ }
3778
+ _logLevel = level;
3779
+ }
3780
+ static from(version) {
3781
+ return new Logger(version);
3782
+ }
3783
+ }
3784
+ Logger.errors = ErrorCode;
3785
+ Logger.levels = LogLevel;
3786
+
3787
+ const version$2 = "bytes/5.7.0";
3788
+
3789
+ const logger$3 = new Logger(version$2);
3790
+ ///////////////////////////////
3791
+ function isHexable(value) {
3792
+ return !!(value.toHexString);
3793
+ }
3794
+ function addSlice(array) {
3795
+ if (array.slice) {
3796
+ return array;
3797
+ }
3798
+ array.slice = function () {
3799
+ const args = Array.prototype.slice.call(arguments);
3800
+ return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));
3801
+ };
3802
+ return array;
3803
+ }
3804
+ function isInteger(value) {
3805
+ return (typeof (value) === "number" && value == value && (value % 1) === 0);
3806
+ }
3807
+ function isBytes(value) {
3808
+ if (value == null) {
3809
+ return false;
3810
+ }
3811
+ if (value.constructor === Uint8Array) {
3812
+ return true;
3813
+ }
3814
+ if (typeof (value) === "string") {
3815
+ return false;
3816
+ }
3817
+ if (!isInteger(value.length) || value.length < 0) {
3818
+ return false;
3819
+ }
3820
+ for (let i = 0; i < value.length; i++) {
3821
+ const v = value[i];
3822
+ if (!isInteger(v) || v < 0 || v >= 256) {
3823
+ return false;
3824
+ }
3825
+ }
3826
+ return true;
3827
+ }
3828
+ function arrayify(value, options) {
3829
+ if (!options) {
3830
+ options = {};
3831
+ }
3832
+ if (typeof (value) === "number") {
3833
+ logger$3.checkSafeUint53(value, "invalid arrayify value");
3834
+ const result = [];
3835
+ while (value) {
3836
+ result.unshift(value & 0xff);
3837
+ value = parseInt(String(value / 256));
3838
+ }
3839
+ if (result.length === 0) {
3840
+ result.push(0);
3841
+ }
3842
+ return addSlice(new Uint8Array(result));
3843
+ }
3844
+ if (options.allowMissingPrefix && typeof (value) === "string" && value.substring(0, 2) !== "0x") {
3845
+ value = "0x" + value;
3846
+ }
3847
+ if (isHexable(value)) {
3848
+ value = value.toHexString();
3849
+ }
3850
+ if (isHexString(value)) {
3851
+ let hex = value.substring(2);
3852
+ if (hex.length % 2) {
3853
+ if (options.hexPad === "left") {
3854
+ hex = "0" + hex;
3855
+ }
3856
+ else if (options.hexPad === "right") {
3857
+ hex += "0";
3858
+ }
3859
+ else {
3860
+ logger$3.throwArgumentError("hex data is odd-length", "value", value);
3861
+ }
3862
+ }
3863
+ const result = [];
3864
+ for (let i = 0; i < hex.length; i += 2) {
3865
+ result.push(parseInt(hex.substring(i, i + 2), 16));
3866
+ }
3867
+ return addSlice(new Uint8Array(result));
3868
+ }
3869
+ if (isBytes(value)) {
3870
+ return addSlice(new Uint8Array(value));
3871
+ }
3872
+ return logger$3.throwArgumentError("invalid arrayify value", "value", value);
3873
+ }
3874
+ function isHexString(value, length) {
3875
+ if (typeof (value) !== "string" || !value.match(/^0x[0-9A-Fa-f]*$/)) {
3876
+ return false;
3877
+ }
3878
+ return true;
3879
+ }
3880
+ const HexCharacters = "0123456789abcdef";
3881
+ function hexlify(value, options) {
3882
+ if (!options) {
3883
+ options = {};
3884
+ }
3885
+ if (typeof (value) === "number") {
3886
+ logger$3.checkSafeUint53(value, "invalid hexlify value");
3887
+ let hex = "";
3888
+ while (value) {
3889
+ hex = HexCharacters[value & 0xf] + hex;
3890
+ value = Math.floor(value / 16);
3891
+ }
3892
+ if (hex.length) {
3893
+ if (hex.length % 2) {
3894
+ hex = "0" + hex;
3895
+ }
3896
+ return "0x" + hex;
3897
+ }
3898
+ return "0x00";
3899
+ }
3900
+ if (typeof (value) === "bigint") {
3901
+ value = value.toString(16);
3902
+ if (value.length % 2) {
3903
+ return ("0x0" + value);
3904
+ }
3905
+ return "0x" + value;
3906
+ }
3907
+ if (options.allowMissingPrefix && typeof (value) === "string" && value.substring(0, 2) !== "0x") {
3908
+ value = "0x" + value;
3909
+ }
3910
+ if (isHexable(value)) {
3911
+ return value.toHexString();
3912
+ }
3913
+ if (isHexString(value)) {
3914
+ if (value.length % 2) {
3915
+ if (options.hexPad === "left") {
3916
+ value = "0x0" + value.substring(2);
3917
+ }
3918
+ else if (options.hexPad === "right") {
3919
+ value += "0";
3920
+ }
3921
+ else {
3922
+ logger$3.throwArgumentError("hex data is odd-length", "value", value);
3923
+ }
3924
+ }
3925
+ return value.toLowerCase();
3926
+ }
3927
+ if (isBytes(value)) {
3928
+ let result = "0x";
3929
+ for (let i = 0; i < value.length; i++) {
3930
+ let v = value[i];
3931
+ result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];
3932
+ }
3933
+ return result;
3934
+ }
3935
+ return logger$3.throwArgumentError("invalid hexlify value", "value", value);
3936
+ }
3937
+ function hexZeroPad(value, length) {
3938
+ if (typeof (value) !== "string") {
3939
+ value = hexlify(value);
3940
+ }
3941
+ else if (!isHexString(value)) {
3942
+ logger$3.throwArgumentError("invalid hex string", "value", value);
3943
+ }
3944
+ if (value.length > 2 * length + 2) {
3945
+ logger$3.throwArgumentError("value out of range", "value", arguments[1]);
3946
+ }
3947
+ while (value.length < 2 * length + 2) {
3948
+ value = "0x0" + value.substring(2);
3949
+ }
3950
+ return value;
3951
+ }
3952
+
3953
+ const version$1 = "bignumber/5.7.0";
3954
+
3955
+ var BN = _BN.BN;
3956
+ const logger$2 = new Logger(version$1);
3957
+ const _constructorGuard$1 = {};
3958
+ const MAX_SAFE = 0x1fffffffffffff;
3959
+ function isBigNumberish(value) {
3960
+ return (value != null) && (BigNumber.isBigNumber(value) ||
3961
+ (typeof (value) === "number" && (value % 1) === 0) ||
3962
+ (typeof (value) === "string" && !!value.match(/^-?[0-9]+$/)) ||
3963
+ isHexString(value) ||
3964
+ (typeof (value) === "bigint") ||
3965
+ isBytes(value));
3966
+ }
3967
+ // Only warn about passing 10 into radix once
3968
+ let _warnedToStringRadix = false;
3969
+ class BigNumber {
3970
+ constructor(constructorGuard, hex) {
3971
+ if (constructorGuard !== _constructorGuard$1) {
3972
+ logger$2.throwError("cannot call constructor directly; use BigNumber.from", Logger.errors.UNSUPPORTED_OPERATION, {
3973
+ operation: "new (BigNumber)"
3974
+ });
3975
+ }
3976
+ this._hex = hex;
3977
+ this._isBigNumber = true;
3978
+ Object.freeze(this);
3979
+ }
3980
+ fromTwos(value) {
3981
+ return toBigNumber(toBN(this).fromTwos(value));
3982
+ }
3983
+ toTwos(value) {
3984
+ return toBigNumber(toBN(this).toTwos(value));
3985
+ }
3986
+ abs() {
3987
+ if (this._hex[0] === "-") {
3988
+ return BigNumber.from(this._hex.substring(1));
3989
+ }
3990
+ return this;
3991
+ }
3992
+ add(other) {
3993
+ return toBigNumber(toBN(this).add(toBN(other)));
3994
+ }
3995
+ sub(other) {
3996
+ return toBigNumber(toBN(this).sub(toBN(other)));
3997
+ }
3998
+ div(other) {
3999
+ const o = BigNumber.from(other);
4000
+ if (o.isZero()) {
4001
+ throwFault$1("division-by-zero", "div");
4002
+ }
4003
+ return toBigNumber(toBN(this).div(toBN(other)));
4004
+ }
4005
+ mul(other) {
4006
+ return toBigNumber(toBN(this).mul(toBN(other)));
4007
+ }
4008
+ mod(other) {
4009
+ const value = toBN(other);
4010
+ if (value.isNeg()) {
4011
+ throwFault$1("division-by-zero", "mod");
4012
+ }
4013
+ return toBigNumber(toBN(this).umod(value));
4014
+ }
4015
+ pow(other) {
4016
+ const value = toBN(other);
4017
+ if (value.isNeg()) {
4018
+ throwFault$1("negative-power", "pow");
4019
+ }
4020
+ return toBigNumber(toBN(this).pow(value));
4021
+ }
4022
+ and(other) {
4023
+ const value = toBN(other);
4024
+ if (this.isNegative() || value.isNeg()) {
4025
+ throwFault$1("unbound-bitwise-result", "and");
4026
+ }
4027
+ return toBigNumber(toBN(this).and(value));
4028
+ }
4029
+ or(other) {
4030
+ const value = toBN(other);
4031
+ if (this.isNegative() || value.isNeg()) {
4032
+ throwFault$1("unbound-bitwise-result", "or");
4033
+ }
4034
+ return toBigNumber(toBN(this).or(value));
4035
+ }
4036
+ xor(other) {
4037
+ const value = toBN(other);
4038
+ if (this.isNegative() || value.isNeg()) {
4039
+ throwFault$1("unbound-bitwise-result", "xor");
4040
+ }
4041
+ return toBigNumber(toBN(this).xor(value));
4042
+ }
4043
+ mask(value) {
4044
+ if (this.isNegative() || value < 0) {
4045
+ throwFault$1("negative-width", "mask");
4046
+ }
4047
+ return toBigNumber(toBN(this).maskn(value));
4048
+ }
4049
+ shl(value) {
4050
+ if (this.isNegative() || value < 0) {
4051
+ throwFault$1("negative-width", "shl");
4052
+ }
4053
+ return toBigNumber(toBN(this).shln(value));
4054
+ }
4055
+ shr(value) {
4056
+ if (this.isNegative() || value < 0) {
4057
+ throwFault$1("negative-width", "shr");
4058
+ }
4059
+ return toBigNumber(toBN(this).shrn(value));
4060
+ }
4061
+ eq(other) {
4062
+ return toBN(this).eq(toBN(other));
4063
+ }
4064
+ lt(other) {
4065
+ return toBN(this).lt(toBN(other));
4066
+ }
4067
+ lte(other) {
4068
+ return toBN(this).lte(toBN(other));
4069
+ }
4070
+ gt(other) {
4071
+ return toBN(this).gt(toBN(other));
4072
+ }
4073
+ gte(other) {
4074
+ return toBN(this).gte(toBN(other));
4075
+ }
4076
+ isNegative() {
4077
+ return (this._hex[0] === "-");
4078
+ }
4079
+ isZero() {
4080
+ return toBN(this).isZero();
4081
+ }
4082
+ toNumber() {
4083
+ try {
4084
+ return toBN(this).toNumber();
4085
+ }
4086
+ catch (error) {
4087
+ throwFault$1("overflow", "toNumber", this.toString());
4088
+ }
4089
+ return null;
4090
+ }
4091
+ toBigInt() {
4092
+ try {
4093
+ return BigInt(this.toString());
4094
+ }
4095
+ catch (e) { }
4096
+ return logger$2.throwError("this platform does not support BigInt", Logger.errors.UNSUPPORTED_OPERATION, {
4097
+ value: this.toString()
4098
+ });
4099
+ }
4100
+ toString() {
4101
+ // Lots of people expect this, which we do not support, so check (See: #889)
4102
+ if (arguments.length > 0) {
4103
+ if (arguments[0] === 10) {
4104
+ if (!_warnedToStringRadix) {
4105
+ _warnedToStringRadix = true;
4106
+ logger$2.warn("BigNumber.toString does not accept any parameters; base-10 is assumed");
4107
+ }
4108
+ }
4109
+ else if (arguments[0] === 16) {
4110
+ logger$2.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()", Logger.errors.UNEXPECTED_ARGUMENT, {});
4111
+ }
4112
+ else {
4113
+ logger$2.throwError("BigNumber.toString does not accept parameters", Logger.errors.UNEXPECTED_ARGUMENT, {});
4114
+ }
4115
+ }
4116
+ return toBN(this).toString(10);
4117
+ }
4118
+ toHexString() {
4119
+ return this._hex;
4120
+ }
4121
+ toJSON(key) {
4122
+ return { type: "BigNumber", hex: this.toHexString() };
4123
+ }
4124
+ static from(value) {
4125
+ if (value instanceof BigNumber) {
4126
+ return value;
4127
+ }
4128
+ if (typeof (value) === "string") {
4129
+ if (value.match(/^-?0x[0-9a-f]+$/i)) {
4130
+ return new BigNumber(_constructorGuard$1, toHex(value));
4131
+ }
4132
+ if (value.match(/^-?[0-9]+$/)) {
4133
+ return new BigNumber(_constructorGuard$1, toHex(new BN(value)));
4134
+ }
4135
+ return logger$2.throwArgumentError("invalid BigNumber string", "value", value);
4136
+ }
4137
+ if (typeof (value) === "number") {
4138
+ if (value % 1) {
4139
+ throwFault$1("underflow", "BigNumber.from", value);
4140
+ }
4141
+ if (value >= MAX_SAFE || value <= -MAX_SAFE) {
4142
+ throwFault$1("overflow", "BigNumber.from", value);
4143
+ }
4144
+ return BigNumber.from(String(value));
4145
+ }
4146
+ const anyValue = value;
4147
+ if (typeof (anyValue) === "bigint") {
4148
+ return BigNumber.from(anyValue.toString());
4149
+ }
4150
+ if (isBytes(anyValue)) {
4151
+ return BigNumber.from(hexlify(anyValue));
4152
+ }
4153
+ if (anyValue) {
4154
+ // Hexable interface (takes priority)
4155
+ if (anyValue.toHexString) {
4156
+ const hex = anyValue.toHexString();
4157
+ if (typeof (hex) === "string") {
4158
+ return BigNumber.from(hex);
4159
+ }
4160
+ }
4161
+ else {
4162
+ // For now, handle legacy JSON-ified values (goes away in v6)
4163
+ let hex = anyValue._hex;
4164
+ // New-form JSON
4165
+ if (hex == null && anyValue.type === "BigNumber") {
4166
+ hex = anyValue.hex;
4167
+ }
4168
+ if (typeof (hex) === "string") {
4169
+ if (isHexString(hex) || (hex[0] === "-" && isHexString(hex.substring(1)))) {
4170
+ return BigNumber.from(hex);
4171
+ }
4172
+ }
4173
+ }
4174
+ }
4175
+ return logger$2.throwArgumentError("invalid BigNumber value", "value", value);
4176
+ }
4177
+ static isBigNumber(value) {
4178
+ return !!(value && value._isBigNumber);
4179
+ }
4180
+ }
4181
+ // Normalize the hex string
4182
+ function toHex(value) {
4183
+ // For BN, call on the hex string
4184
+ if (typeof (value) !== "string") {
4185
+ return toHex(value.toString(16));
4186
+ }
4187
+ // If negative, prepend the negative sign to the normalized positive value
4188
+ if (value[0] === "-") {
4189
+ // Strip off the negative sign
4190
+ value = value.substring(1);
4191
+ // Cannot have multiple negative signs (e.g. "--0x04")
4192
+ if (value[0] === "-") {
4193
+ logger$2.throwArgumentError("invalid hex", "value", value);
4194
+ }
4195
+ // Call toHex on the positive component
4196
+ value = toHex(value);
4197
+ // Do not allow "-0x00"
4198
+ if (value === "0x00") {
4199
+ return value;
4200
+ }
4201
+ // Negate the value
4202
+ return "-" + value;
4203
+ }
4204
+ // Add a "0x" prefix if missing
4205
+ if (value.substring(0, 2) !== "0x") {
4206
+ value = "0x" + value;
4207
+ }
4208
+ // Normalize zero
4209
+ if (value === "0x") {
4210
+ return "0x00";
4211
+ }
4212
+ // Make the string even length
4213
+ if (value.length % 2) {
4214
+ value = "0x0" + value.substring(2);
4215
+ }
4216
+ // Trim to smallest even-length string
4217
+ while (value.length > 4 && value.substring(0, 4) === "0x00") {
4218
+ value = "0x" + value.substring(4);
4219
+ }
4220
+ return value;
4221
+ }
4222
+ function toBigNumber(value) {
4223
+ return BigNumber.from(toHex(value));
4224
+ }
4225
+ function toBN(value) {
4226
+ const hex = BigNumber.from(value).toHexString();
4227
+ if (hex[0] === "-") {
4228
+ return (new BN("-" + hex.substring(3), 16));
4229
+ }
4230
+ return new BN(hex.substring(2), 16);
4231
+ }
4232
+ function throwFault$1(fault, operation, value) {
4233
+ const params = { fault: fault, operation: operation };
4234
+ if (value != null) {
4235
+ params.value = value;
4236
+ }
4237
+ return logger$2.throwError(fault, Logger.errors.NUMERIC_FAULT, params);
4238
+ }
4239
+
37
4240
  const logger$1 = new Logger(version$1);
38
4241
  const _constructorGuard = {};
39
4242
  const Zero = BigNumber.from(0);
@@ -433,10 +4636,10 @@ const formatBytes = (bytes, decimals = 2) => {
433
4636
  return `${parseFloat((bytes / Math.pow(k, i)).toFixed(decimals))} ${byteFormats[i]}`;
434
4637
  };
435
4638
 
436
- var contractFactory$1 = "IHNY2GQH4SZA65EVFBZOO2FVWS4LA3MFXTQ5BANT4KVFU77PKGVHDRVDNNY";
437
- var nativeToken$1 = "IHNY2GQGBP7HN3D4GEK6H3TGI3HQXC7WKP6WZZBVE55OKNVNVIQIC566NBG";
438
- var nameService$1 = "IHNY2GQHYWAS23DVVGOM3RB6M7ZKRGI7WMZNBDUNOCCIDGLTPDPT4X4MKAY";
439
- var validators$1 = "IHNY2GQHQQ75R6JHGO5OGTFT5CBAOHNJWLA4SK334TREFSOLZLNVP5GRBSP";
4639
+ var contractFactory$1 = "IHNY2GQHUE4PTLSDCQFK44M4V56IYCLPHBC73NATR7ZM2J7HVM7XAZLTZAT";
4640
+ var nativeToken$1 = "IHNY2GQH2YS5GXF7JWKY7MKGO6MKNZ3CFWZQLE5CE5HOIEIFQXK3ZJMD2OD";
4641
+ var nameService$1 = "IHNY2GQG7BA4ZMFQFGVBMBMGRFD7Q7EFIFZRFO4TT2FWIVTJ5UFH2I2XGSC";
4642
+ var validators$1 = "IHNY2GQHSAUS5VBGDP3QXDACWVVM6HTZEF7JWZ5KBMHTZ664TXKFXINRHSU";
440
4643
  var addresses$1 = {
441
4644
  contractFactory: contractFactory$1,
442
4645
  nativeToken: nativeToken$1,
@@ -455,10 +4658,10 @@ var addresses = {
455
4658
  validators: validators$2
456
4659
  };
457
4660
 
458
- var contractFactory = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,221,52,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,118,111,116,101,115,61,123,125,59,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,49,59,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,49,55,50,56,101,53,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,38,38,40,116,104,105,115,46,35,118,111,116,101,115,61,115,116,97,116,101,46,118,111,116,101,115,44,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,115,116,97,116,101,46,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,115,116,97,116,101,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,41,125,103,101,116,32,118,111,116,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,118,111,116,101,115,125,125,103,101,116,32,118,111,116,105,110,103,68,117,114,97,116,105,111,110,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,103,101,116,32,118,111,116,105,110,103,68,105,115,97,98,108,101,100,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,118,111,116,101,115,58,116,104,105,115,46,35,118,111,116,101,115,44,118,111,116,105,110,103,68,105,115,97,98,108,101,100,58,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,118,111,116,105,110,103,68,117,114,97,116,105,111,110,58,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,125,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,99,97,110,86,111,116,101,63,46,40,41,125,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,98,101,102,111,114,101,86,111,116,101,63,46,40,41,125,35,97,102,116,101,114,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,97,102,116,101,114,86,111,116,101,63,46,40,41,125,99,114,101,97,116,101,86,111,116,101,40,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,44,101,110,100,84,105,109,101,44,109,101,116,104,111,100,44,97,114,103,115,61,91,93,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,99,114,101,97,116,101,32,97,32,118,111,116,101,34,41,59,99,111,110,115,116,32,105,100,61,99,114,121,112,116,111,46,114,97,110,100,111,109,85,85,73,68,40,41,59,116,104,105,115,46,35,118,111,116,101,115,91,105,100,93,61,123,116,105,116,108,101,58,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,58,100,101,115,99,114,105,112,116,105,111,110,44,109,101,116,104,111,100,58,109,101,116,104,111,100,44,101,110,100,84,105,109,101,58,101,110,100,84,105,109,101,44,97,114,103,115,58,97,114,103,115,125,125,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,123,108,101,116,32,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,49,61,61,61,114,101,115,117,108,116,41,41,44,100,105,115,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,48,61,61,61,114,101,115,117,108,116,41,41,59,97,103,114,101,101,46,108,101,110,103,116,104,62,100,105,115,97,103,114,101,101,46,108,101,110,103,116,104,38,38,116,104,105,115,91,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,109,101,116,104,111,100,93,40,46,46,46,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,97,114,103,115,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,61,33,48,125,97,115,121,110,99,32,118,111,116,101,40,118,111,116,101,73,100,44,118,111,116,101,41,123,105,102,40,48,33,61,61,40,118,111,116,101,61,78,117,109,98,101,114,40,118,111,116,101,41,41,38,38,46,53,33,61,61,118,111,116,101,38,38,49,33,61,61,118,111,116,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,118,111,116,101,32,118,97,108,117,101,32,36,123,118,111,116,101,125,96,41,59,105,102,40,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,78,111,116,104,105,110,103,32,102,111,117,110,100,32,102,111,114,32,36,123,118,111,116,101,73,100,125,96,41,59,99,111,110,115,116,32,101,110,100,101,100,61,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,62,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,101,110,100,84,105,109,101,59,105,102,40,101,110,100,101,100,38,38,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,44,101,110,100,101,100,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,111,116,105,110,103,32,97,108,114,101,97,100,121,32,101,110,100,101,100,34,41,59,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,118,111,116,101,34,41,59,97,119,97,105,116,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,91,109,115,103,46,115,101,110,100,101,114,93,61,118,111,116,101,44,97,119,97,105,116,32,116,104,105,115,46,35,97,102,116,101,114,86,111,116,101,40,41,125,103,101,116,32,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,40,41,123,114,101,116,117,114,110,32,79,98,106,101,99,116,46,101,110,116,114,105,101,115,40,116,104,105,115,46,35,118,111,116,101,115,41,46,102,105,108,116,101,114,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,33,118,111,116,101,46,102,105,110,105,115,104,101,100,41,41,46,109,97,112,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,40,123,46,46,46,118,111,116,101,44,105,100,58,105,100,125,41,41,41,125,35,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,48,125,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,100,105,115,97,98,108,101,32,118,111,116,105,110,103,34,44,34,87,97,114,110,105,110,103,32,116,104,105,115,32,100,105,115,97,98,108,101,115,32,97,108,108,32,118,111,116,105,110,103,32,102,101,97,116,117,114,101,115,32,102,111,114,101,118,101,114,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,100,105,115,97,98,108,101,86,111,116,105,110,103,34,44,91,93,41,125,115,121,110,99,40,41,123,102,111,114,40,99,111,110,115,116,32,118,111,116,101,32,111,102,32,116,104,105,115,46,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,41,118,111,116,101,46,101,110,100,84,105,109,101,60,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,46,105,100,41,125,125,99,108,97,115,115,32,80,117,98,108,105,99,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,86,111,116,105,110,103,123,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,125,125,99,108,97,115,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,32,101,120,116,101,110,100,115,32,80,117,98,108,105,99,86,111,116,105,110,103,123,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,82,101,99,101,105,118,101,114,59,35,118,111,116,101,84,121,112,101,61,34,116,114,97,110,115,102,101,114,34,59,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,98,117,114,110,115,44,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,115,116,97,116,101,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,115,116,97,116,101,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,115,116,97,116,101,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,115,116,97,116,101,46,118,111,116,101,84,121,112,101,41,58,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,109,115,103,46,99,111,110,116,114,97,99,116,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,98,117,114,110,115,38,38,40,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,34,98,117,114,110,34,41,41,125,103,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,82,101,99,101,105,118,101,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,116,111,107,101,110,82,101,99,101,105,118,101,114,58,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,111,107,101,110,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,118,111,116,101,84,121,112,101,58,116,104,105,115,46,35,118,111,116,101,84,121,112,101,125,125,97,115,121,110,99,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,40,97,119,97,105,116,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,109,115,103,46,115,101,110,100,101,114,93,41,41,46,103,116,101,40,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,125,97,115,121,110,99,32,95,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,125,97,115,121,110,99,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,34,98,117,114,110,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,63,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,58,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,125,97,115,121,110,99,32,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,117,114,110,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,99,97,110,80,97,121,40,41,123,114,101,116,117,114,110,40,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,34,44,91,93,41,41,46,103,116,101,40,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,125,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,97,100,100,114,101,115,115,41,123,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,97,100,100,114,101,115,115,125,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,97,109,111,117,110,116,41,123,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,97,109,111,117,110,116,125,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,116,121,112,101,125,35,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,114,101,116,117,114,110,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,34,116,114,97,110,115,102,101,114,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,114,101,99,101,105,118,101,114,44,97,109,111,117,110,116,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,38,38,40,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,41,46,103,116,40,48,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,34,44,91,116,121,112,101,93,41,125,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,34,44,96,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,32,116,111,32,36,123,114,101,99,101,105,118,101,114,125,96,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,103,101,116,84,111,107,101,110,115,79,117,116,34,44,91,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,93,41,125,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,35,98,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,33,40,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,41,46,101,113,40,48,41,38,38,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,32,116,111,32,97,32,110,101,119,32,97,100,100,114,101,115,115,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,125,99,108,97,115,115,32,70,97,99,116,111,114,121,32,101,120,116,101,110,100,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,123,35,110,97,109,101,61,34,76,101,111,102,99,111,105,110,67,111,110,116,114,97,99,116,70,97,99,116,111,114,121,34,59,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,48,41,59,35,99,111,110,116,114,97,99,116,115,61,91,93,59,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,115,116,97,116,101,41,123,115,117,112,101,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,33,48,44,115,116,97,116,101,41,44,115,116,97,116,101,38,38,40,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,61,115,116,97,116,101,46,99,111,110,116,114,97,99,116,115,44,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,61,115,116,97,116,101,46,116,111,116,97,108,67,111,110,116,114,97,99,116,115,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,116,111,116,97,108,67,111,110,116,114,97,99,116,115,58,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,44,99,111,110,116,114,97,99,116,115,58,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,125,125,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,99,111,110,116,114,97,99,116,115,40,41,123,114,101,116,117,114,110,91,46,46,46,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,93,125,103,101,116,32,116,111,116,97,108,67,111,110,116,114,97,99,116,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,125,105,115,82,101,103,105,115,116,101,114,101,100,40,97,100,100,114,101,115,115,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,125,35,105,115,67,114,101,97,116,111,114,40,97,100,100,114,101,115,115,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,97,100,100,114,101,115,115,44,34,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,34,41,125,97,115,121,110,99,32,114,101,103,105,115,116,101,114,67,111,110,116,114,97,99,116,40,97,100,100,114,101,115,115,41,123,105,102,40,33,116,104,105,115,46,95,99,97,110,80,97,121,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,99,97,110,39,116,32,114,101,103,105,115,116,101,114,44,32,98,97,108,97,110,99,101,32,116,111,32,108,111,119,34,41,59,105,102,40,33,97,119,97,105,116,32,116,104,105,115,46,35,105,115,67,114,101,97,116,111,114,40,97,100,100,114,101,115,115,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,89,111,117,32,100,111,110,39,116,32,111,119,110,32,116,104,97,116,32,99,111,110,116,114,97,99,116,34,41,59,105,102,40,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,108,114,101,97,100,121,32,114,101,103,105,115,116,101,114,101,100,34,41,59,97,119,97,105,116,32,116,104,105,115,46,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,44,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,46,97,100,100,40,49,41,44,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,46,112,117,115,104,40,97,100,100,114,101,115,115,41,125,125,114,101,116,117,114,110,32,70,97,99,116,111,114,121,59,88,91,34,73,72,78,89,50,71,81,71,66,80,55,72,78,51,68,52,71,69,75,54,72,51,84,71,73,51,72,81,88,67,55,87,75,80,54,87,90,90,66,86,69,53,53,79,75,78,86,78,86,73,81,73,67,53,54,54,78,66,71,34,44,34,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,34,93";
459
- var nativeToken = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,194,35,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,82,111,108,101,115,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,114,111,108,101,115,61,123,79,87,78,69,82,58,91,93,44,77,73,78,84,58,91,93,44,66,85,82,78,58,91,93,125,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,105,102,40,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,46,114,111,108,101,115,41,123,105,102,40,33,40,115,116,97,116,101,46,114,111,108,101,115,32,105,110,115,116,97,110,99,101,111,102,32,79,98,106,101,99,116,41,41,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,34,101,120,112,101,99,116,101,100,32,114,111,108,101,115,32,116,111,32,98,101,32,97,110,32,111,98,106,101,99,116,34,41,59,116,104,105,115,46,35,114,111,108,101,115,61,123,46,46,46,115,116,97,116,101,46,114,111,108,101,115,44,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,101,108,115,101,32,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,114,111,108,101,115,58,116,104,105,115,46,114,111,108,101,115,125,125,103,101,116,32,114,111,108,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,114,101,116,117,114,110,33,33,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,38,38,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,125,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,103,114,97,110,116,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,112,117,115,104,40,97,100,100,114,101,115,115,41,125,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,114,101,118,111,107,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,105,102,40,34,79,87,78,69,82,34,61,61,61,114,111,108,101,38,38,49,61,61,61,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,108,101,110,103,116,104,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,116,108,101,97,115,116,32,111,110,101,32,111,119,110,101,114,32,105,115,32,110,101,101,100,101,100,33,34,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,115,112,108,105,99,101,40,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,100,101,120,79,102,40,97,100,100,114,101,115,115,41,41,125,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,125,99,108,97,115,115,32,84,111,107,101,110,32,101,120,116,101,110,100,115,32,82,111,108,101,115,123,35,110,97,109,101,59,35,115,121,109,98,111,108,59,35,104,111,108,100,101,114,115,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,48,41,59,35,98,97,108,97,110,99,101,115,61,123,125,59,35,97,112,112,114,111,118,97,108,115,61,123,125,59,35,100,101,99,105,109,97,108,115,61,49,56,59,35,116,111,116,97,108,83,117,112,112,108,121,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,48,41,59,35,115,116,97,107,105,110,103,67,111,110,116,114,97,99,116,59,99,111,110,115,116,114,117,99,116,111,114,40,110,97,109,101,44,115,121,109,98,111,108,44,100,101,99,105,109,97,108,115,61,49,56,44,115,116,97,116,101,41,123,105,102,40,33,110,97,109,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,97,109,101,32,117,110,100,101,102,105,110,101,100,34,41,59,105,102,40,33,115,121,109,98,111,108,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,115,121,109,98,111,108,32,117,110,100,101,102,105,110,101,100,34,41,59,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,98,97,108,97,110,99,101,115,61,40,98,97,108,97,110,99,101,115,61,62,123,99,111,110,115,116,32,95,98,97,108,97,110,99,101,115,61,123,125,59,102,111,114,40,99,111,110,115,116,32,97,100,100,114,101,115,115,32,105,110,32,98,97,108,97,110,99,101,115,41,95,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,41,59,114,101,116,117,114,110,32,95,98,97,108,97,110,99,101,115,125,41,40,115,116,97,116,101,46,98,97,108,97,110,99,101,115,41,44,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,61,40,97,112,112,114,111,118,97,108,115,61,62,123,99,111,110,115,116,32,95,97,112,112,114,111,118,97,108,115,61,123,125,59,102,111,114,40,99,111,110,115,116,32,111,119,110,101,114,32,105,110,32,97,112,112,114,111,118,97,108,115,41,123,95,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,61,123,125,59,102,111,114,40,99,111,110,115,116,32,111,112,101,114,97,116,111,114,32,105,110,32,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,41,95,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,41,125,114,101,116,117,114,110,32,95,97,112,112,114,111,118,97,108,115,125,41,40,115,116,97,116,101,46,97,112,112,114,111,118,97,108,115,41,44,116,104,105,115,46,35,104,111,108,100,101,114,115,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,115,116,97,116,101,46,104,111,108,100,101,114,115,41,44,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,115,116,97,116,101,46,116,111,116,97,108,83,117,112,112,108,121,41,44,116,104,105,115,46,35,110,97,109,101,61,110,97,109,101,44,116,104,105,115,46,35,115,121,109,98,111,108,61,115,121,109,98,111,108,44,116,104,105,115,46,35,100,101,99,105,109,97,108,115,61,100,101,99,105,109,97,108,115,41,58,40,116,104,105,115,46,35,110,97,109,101,61,110,97,109,101,44,116,104,105,115,46,35,115,121,109,98,111,108,61,115,121,109,98,111,108,44,116,104,105,115,46,35,100,101,99,105,109,97,108,115,61,100,101,99,105,109,97,108,115,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,110,97,109,101,58,116,104,105,115,46,35,110,97,109,101,44,115,121,109,98,111,108,58,116,104,105,115,46,35,115,121,109,98,111,108,44,100,101,99,105,109,97,108,115,58,116,104,105,115,46,35,100,101,99,105,109,97,108,115,44,104,111,108,100,101,114,115,58,116,104,105,115,46,104,111,108,100,101,114,115,44,98,97,108,97,110,99,101,115,58,116,104,105,115,46,98,97,108,97,110,99,101,115,44,97,112,112,114,111,118,97,108,115,58,123,46,46,46,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,125,44,116,111,116,97,108,83,117,112,112,108,121,58,116,104,105,115,46,116,111,116,97,108,83,117,112,112,108,121,125,125,103,101,116,32,116,111,116,97,108,83,117,112,112,108,121,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,125,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,115,121,109,98,111,108,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,115,121,109,98,111,108,125,103,101,116,32,104,111,108,100,101,114,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,104,111,108,100,101,114,115,125,103,101,116,32,98,97,108,97,110,99,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,98,97,108,97,110,99,101,115,125,125,103,101,116,32,97,112,112,114,111,118,97,108,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,125,103,101,116,32,100,101,99,105,109,97,108,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,100,101,99,105,109,97,108,115,125,109,105,110,116,40,116,111,44,97,109,111,117,110,116,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,77,73,78,84,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,46,97,100,100,40,97,109,111,117,110,116,41,44,116,104,105,115,46,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,116,111,44,97,109,111,117,110,116,41,125,98,117,114,110,40,102,114,111,109,44,97,109,111,117,110,116,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,66,85,82,78,34,41,124,124,109,115,103,46,115,101,110,100,101,114,33,61,61,102,114,111,109,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,108,108,111,119,101,100,34,41,59,99,111,110,115,116,32,116,111,116,97,108,61,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,46,115,117,98,40,97,109,111,117,110,116,41,59,116,111,116,97,108,46,103,116,101,40,48,41,38,38,40,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,116,111,116,97,108,44,116,104,105,115,46,35,100,101,99,114,101,97,115,101,66,97,108,97,110,99,101,40,102,114,111,109,44,97,109,111,117,110,116,41,41,125,35,98,101,102,111,114,101,84,114,97,110,115,102,101,114,40,102,114,111,109,44,116,111,44,97,109,111,117,110,116,41,123,105,102,40,33,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,102,114,111,109,93,124,124,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,102,114,111,109,93,60,97,109,111,117,110,116,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,109,111,117,110,116,32,101,120,99,101,101,100,115,32,98,97,108,97,110,99,101,34,41,125,35,117,112,100,97,116,101,72,111,108,100,101,114,115,40,97,100,100,114,101,115,115,44,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,41,123,34,48,120,48,48,34,61,61,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,46,116,111,72,101,120,83,116,114,105,110,103,40,41,63,116,104,105,115,46,35,104,111,108,100,101,114,115,46,115,117,98,40,49,41,58,34,48,120,48,48,34,33,61,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,46,116,111,72,101,120,83,116,114,105,110,103,40,41,38,38,34,48,120,48,48,34,61,61,61,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,46,116,111,72,101,120,83,116,114,105,110,103,40,41,38,38,116,104,105,115,46,35,104,111,108,100,101,114,115,46,97,100,100,40,49,41,125,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,97,100,100,114,101,115,115,44,97,109,111,117,110,116,41,123,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,124,124,40,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,48,41,41,59,99,111,110,115,116,32,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,59,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,46,97,100,100,40,97,109,111,117,110,116,41,44,116,104,105,115,46,35,117,112,100,97,116,101,72,111,108,100,101,114,115,40,97,100,100,114,101,115,115,44,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,41,125,35,100,101,99,114,101,97,115,101,66,97,108,97,110,99,101,40,97,100,100,114,101,115,115,44,97,109,111,117,110,116,41,123,99,111,110,115,116,32,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,59,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,46,115,117,98,40,97,109,111,117,110,116,41,44,116,104,105,115,46,35,117,112,100,97,116,101,72,111,108,100,101,114,115,40,97,100,100,114,101,115,115,44,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,41,125,98,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,109,115,103,46,115,101,110,100,101,114,93,125,98,97,108,97,110,99,101,79,102,40,97,100,100,114,101,115,115,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,125,115,101,116,65,112,112,114,111,118,97,108,40,111,112,101,114,97,116,111,114,44,97,109,111,117,110,116,41,123,99,111,110,115,116,32,111,119,110,101,114,61,109,115,103,46,115,101,110,100,101,114,59,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,124,124,40,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,61,123,125,41,44,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,97,109,111,117,110,116,41,125,97,112,112,114,111,118,101,100,40,111,119,110,101,114,44,111,112,101,114,97,116,111,114,44,97,109,111,117,110,116,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,61,61,61,97,109,111,117,110,116,125,116,114,97,110,115,102,101,114,40,102,114,111,109,44,116,111,44,97,109,111,117,110,116,41,123,97,109,111,117,110,116,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,97,109,111,117,110,116,41,44,116,104,105,115,46,35,98,101,102,111,114,101,84,114,97,110,115,102,101,114,40,102,114,111,109,44,116,111,44,97,109,111,117,110,116,41,44,116,104,105,115,46,35,100,101,99,114,101,97,115,101,66,97,108,97,110,99,101,40,102,114,111,109,44,97,109,111,117,110,116,41,44,116,104,105,115,46,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,116,111,44,97,109,111,117,110,116,41,125,125,99,108,97,115,115,32,76,101,111,102,99,111,105,110,32,101,120,116,101,110,100,115,32,84,111,107,101,110,123,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,34,76,101,111,102,99,111,105,110,34,44,34,76,70,67,34,44,49,56,44,115,116,97,116,101,41,125,125,114,101,116,117,114,110,32,76,101,111,102,99,111,105,110,59,2,91,93";
460
- var nameService = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,160,53,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,118,111,116,101,115,61,123,125,59,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,49,59,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,49,55,50,56,101,53,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,38,38,40,116,104,105,115,46,35,118,111,116,101,115,61,115,116,97,116,101,46,118,111,116,101,115,44,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,115,116,97,116,101,46,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,115,116,97,116,101,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,41,125,103,101,116,32,118,111,116,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,118,111,116,101,115,125,125,103,101,116,32,118,111,116,105,110,103,68,117,114,97,116,105,111,110,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,103,101,116,32,118,111,116,105,110,103,68,105,115,97,98,108,101,100,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,118,111,116,101,115,58,116,104,105,115,46,35,118,111,116,101,115,44,118,111,116,105,110,103,68,105,115,97,98,108,101,100,58,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,118,111,116,105,110,103,68,117,114,97,116,105,111,110,58,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,125,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,99,97,110,86,111,116,101,63,46,40,41,125,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,98,101,102,111,114,101,86,111,116,101,63,46,40,41,125,35,97,102,116,101,114,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,97,102,116,101,114,86,111,116,101,63,46,40,41,125,99,114,101,97,116,101,86,111,116,101,40,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,44,101,110,100,84,105,109,101,44,109,101,116,104,111,100,44,97,114,103,115,61,91,93,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,99,114,101,97,116,101,32,97,32,118,111,116,101,34,41,59,99,111,110,115,116,32,105,100,61,99,114,121,112,116,111,46,114,97,110,100,111,109,85,85,73,68,40,41,59,116,104,105,115,46,35,118,111,116,101,115,91,105,100,93,61,123,116,105,116,108,101,58,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,58,100,101,115,99,114,105,112,116,105,111,110,44,109,101,116,104,111,100,58,109,101,116,104,111,100,44,101,110,100,84,105,109,101,58,101,110,100,84,105,109,101,44,97,114,103,115,58,97,114,103,115,125,125,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,123,108,101,116,32,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,49,61,61,61,114,101,115,117,108,116,41,41,44,100,105,115,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,48,61,61,61,114,101,115,117,108,116,41,41,59,97,103,114,101,101,46,108,101,110,103,116,104,62,100,105,115,97,103,114,101,101,46,108,101,110,103,116,104,38,38,116,104,105,115,91,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,109,101,116,104,111,100,93,40,46,46,46,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,97,114,103,115,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,61,33,48,125,97,115,121,110,99,32,118,111,116,101,40,118,111,116,101,73,100,44,118,111,116,101,41,123,105,102,40,48,33,61,61,40,118,111,116,101,61,78,117,109,98,101,114,40,118,111,116,101,41,41,38,38,46,53,33,61,61,118,111,116,101,38,38,49,33,61,61,118,111,116,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,118,111,116,101,32,118,97,108,117,101,32,36,123,118,111,116,101,125,96,41,59,105,102,40,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,78,111,116,104,105,110,103,32,102,111,117,110,100,32,102,111,114,32,36,123,118,111,116,101,73,100,125,96,41,59,99,111,110,115,116,32,101,110,100,101,100,61,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,62,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,101,110,100,84,105,109,101,59,105,102,40,101,110,100,101,100,38,38,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,44,101,110,100,101,100,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,111,116,105,110,103,32,97,108,114,101,97,100,121,32,101,110,100,101,100,34,41,59,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,118,111,116,101,34,41,59,97,119,97,105,116,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,91,109,115,103,46,115,101,110,100,101,114,93,61,118,111,116,101,44,97,119,97,105,116,32,116,104,105,115,46,35,97,102,116,101,114,86,111,116,101,40,41,125,103,101,116,32,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,40,41,123,114,101,116,117,114,110,32,79,98,106,101,99,116,46,101,110,116,114,105,101,115,40,116,104,105,115,46,35,118,111,116,101,115,41,46,102,105,108,116,101,114,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,33,118,111,116,101,46,102,105,110,105,115,104,101,100,41,41,46,109,97,112,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,40,123,46,46,46,118,111,116,101,44,105,100,58,105,100,125,41,41,41,125,35,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,48,125,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,100,105,115,97,98,108,101,32,118,111,116,105,110,103,34,44,34,87,97,114,110,105,110,103,32,116,104,105,115,32,100,105,115,97,98,108,101,115,32,97,108,108,32,118,111,116,105,110,103,32,102,101,97,116,117,114,101,115,32,102,111,114,101,118,101,114,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,100,105,115,97,98,108,101,86,111,116,105,110,103,34,44,91,93,41,125,115,121,110,99,40,41,123,102,111,114,40,99,111,110,115,116,32,118,111,116,101,32,111,102,32,116,104,105,115,46,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,41,118,111,116,101,46,101,110,100,84,105,109,101,60,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,46,105,100,41,125,125,99,108,97,115,115,32,80,117,98,108,105,99,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,86,111,116,105,110,103,123,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,125,125,99,108,97,115,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,32,101,120,116,101,110,100,115,32,80,117,98,108,105,99,86,111,116,105,110,103,123,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,82,101,99,101,105,118,101,114,59,35,118,111,116,101,84,121,112,101,61,34,116,114,97,110,115,102,101,114,34,59,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,98,117,114,110,115,44,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,115,116,97,116,101,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,115,116,97,116,101,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,115,116,97,116,101,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,115,116,97,116,101,46,118,111,116,101,84,121,112,101,41,58,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,109,115,103,46,99,111,110,116,114,97,99,116,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,98,117,114,110,115,38,38,40,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,34,98,117,114,110,34,41,41,125,103,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,82,101,99,101,105,118,101,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,116,111,107,101,110,82,101,99,101,105,118,101,114,58,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,111,107,101,110,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,118,111,116,101,84,121,112,101,58,116,104,105,115,46,35,118,111,116,101,84,121,112,101,125,125,97,115,121,110,99,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,40,97,119,97,105,116,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,109,115,103,46,115,101,110,100,101,114,93,41,41,46,103,116,101,40,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,125,97,115,121,110,99,32,95,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,125,97,115,121,110,99,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,34,98,117,114,110,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,63,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,58,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,125,97,115,121,110,99,32,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,117,114,110,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,99,97,110,80,97,121,40,41,123,114,101,116,117,114,110,40,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,34,44,91,93,41,41,46,103,116,101,40,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,125,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,97,100,100,114,101,115,115,41,123,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,97,100,100,114,101,115,115,125,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,97,109,111,117,110,116,41,123,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,97,109,111,117,110,116,125,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,116,121,112,101,125,35,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,114,101,116,117,114,110,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,34,116,114,97,110,115,102,101,114,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,114,101,99,101,105,118,101,114,44,97,109,111,117,110,116,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,38,38,40,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,41,46,103,116,40,48,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,34,44,91,116,121,112,101,93,41,125,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,34,44,96,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,32,116,111,32,36,123,114,101,99,101,105,118,101,114,125,96,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,103,101,116,84,111,107,101,110,115,79,117,116,34,44,91,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,93,41,125,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,35,98,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,33,40,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,41,46,101,113,40,48,41,38,38,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,32,116,111,32,97,32,110,101,119,32,97,100,100,114,101,115,115,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,125,99,108,97,115,115,32,78,97,109,101,83,101,114,118,105,99,101,32,101,120,116,101,110,100,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,123,35,110,97,109,101,61,34,76,101,111,102,99,111,105,110,78,97,109,101,83,101,114,118,105,99,101,34,59,35,114,101,103,105,115,116,114,121,61,123,125,59,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,114,101,103,105,115,116,114,121,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,114,101,103,105,115,116,114,121,125,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,114,101,103,105,115,116,114,121,58,116,104,105,115,46,35,114,101,103,105,115,116,114,121,125,125,99,111,110,115,116,114,117,99,116,111,114,40,102,97,99,116,111,114,121,65,100,100,114,101,115,115,44,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,118,97,108,105,100,97,116,111,114,65,100,100,114,101,115,115,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,115,116,97,116,101,41,123,115,117,112,101,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,33,48,44,115,116,97,116,101,41,44,115,116,97,116,101,63,116,104,105,115,46,35,114,101,103,105,115,116,114,121,61,115,116,97,116,101,46,114,101,103,105,115,116,114,121,58,40,116,104,105,115,46,35,114,101,103,105,115,116,114,121,46,76,101,111,102,99,111,105,110,67,111,110,116,114,97,99,116,70,97,99,116,111,114,121,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,102,97,99,116,111,114,121,65,100,100,114,101,115,115,125,44,116,104,105,115,46,35,114,101,103,105,115,116,114,121,46,76,101,111,102,99,111,105,110,84,111,107,101,110,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,116,111,107,101,110,84,111,82,101,99,101,105,118,101,125,44,116,104,105,115,46,35,114,101,103,105,115,116,114,121,46,76,101,111,102,99,111,105,110,86,97,108,105,100,97,116,111,114,115,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,118,97,108,105,100,97,116,111,114,65,100,100,114,101,115,115,125,41,125,97,115,121,110,99,32,112,117,114,99,104,97,115,101,78,97,109,101,40,110,97,109,101,44,97,100,100,114,101,115,115,41,123,97,119,97,105,116,32,116,104,105,115,46,95,99,97,110,80,97,121,40,41,44,97,119,97,105,116,32,116,104,105,115,46,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,44,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,97,100,100,114,101,115,115,125,125,108,111,111,107,117,112,40,110,97,109,101,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,125,116,114,97,110,115,102,101,114,79,119,110,101,114,115,104,105,112,40,110,97,109,101,44,116,111,41,123,105,102,40,109,115,103,46,115,101,110,100,101,114,33,61,61,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,111,119,110,101,114,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,111,119,110,101,114,61,116,111,125,99,104,97,110,103,101,65,100,100,114,101,115,115,40,110,97,109,101,44,97,100,100,114,101,115,115,41,123,105,102,40,109,115,103,46,115,101,110,100,101,114,33,61,61,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,111,119,110,101,114,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,97,100,100,114,101,115,115,61,97,100,100,114,101,115,115,125,125,114,101,116,117,114,110,32,78,97,109,101,83,101,114,118,105,99,101,59,212,1,91,34,73,72,78,89,50,71,81,72,52,83,90,65,54,53,69,86,70,66,90,79,79,50,70,86,87,83,52,76,65,51,77,70,88,84,81,53,66,65,78,84,52,75,86,70,85,55,55,80,75,71,86,72,68,82,86,68,78,78,89,34,44,34,73,72,78,89,50,71,81,71,66,80,55,72,78,51,68,52,71,69,75,54,72,51,84,71,73,51,72,81,88,67,55,87,75,80,54,87,90,90,66,86,69,53,53,79,75,78,86,78,86,73,81,73,67,53,54,54,78,66,71,34,44,34,73,72,78,89,50,71,81,72,81,81,55,53,82,54,74,72,71,79,53,79,71,84,70,84,53,67,66,65,79,72,78,74,87,76,65,52,83,75,51,51,52,84,82,69,70,83,79,76,90,76,78,86,80,53,71,82,66,83,80,34,44,34,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,34,93";
461
- var validators = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,135,33,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,82,111,108,101,115,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,114,111,108,101,115,61,123,79,87,78,69,82,58,91,93,44,77,73,78,84,58,91,93,44,66,85,82,78,58,91,93,125,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,105,102,40,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,46,114,111,108,101,115,41,123,105,102,40,33,40,115,116,97,116,101,46,114,111,108,101,115,32,105,110,115,116,97,110,99,101,111,102,32,79,98,106,101,99,116,41,41,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,34,101,120,112,101,99,116,101,100,32,114,111,108,101,115,32,116,111,32,98,101,32,97,110,32,111,98,106,101,99,116,34,41,59,116,104,105,115,46,35,114,111,108,101,115,61,123,46,46,46,115,116,97,116,101,46,114,111,108,101,115,44,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,101,108,115,101,32,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,114,111,108,101,115,58,116,104,105,115,46,114,111,108,101,115,125,125,103,101,116,32,114,111,108,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,114,101,116,117,114,110,33,33,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,38,38,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,125,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,103,114,97,110,116,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,112,117,115,104,40,97,100,100,114,101,115,115,41,125,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,114,101,118,111,107,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,105,102,40,34,79,87,78,69,82,34,61,61,61,114,111,108,101,38,38,49,61,61,61,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,108,101,110,103,116,104,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,116,108,101,97,115,116,32,111,110,101,32,111,119,110,101,114,32,105,115,32,110,101,101,100,101,100,33,34,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,115,112,108,105,99,101,40,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,100,101,120,79,102,40,97,100,100,114,101,115,115,41,41,125,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,125,99,111,110,115,116,32,98,101,116,119,101,101,110,61,40,109,105,110,44,109,97,120,44,108,101,110,103,116,104,61,49,41,61,62,123,108,101,116,32,97,114,114,61,91,93,59,102,111,114,40,108,101,116,32,105,61,48,59,105,60,108,101,110,103,116,104,59,43,43,105,41,97,114,114,61,91,46,46,46,97,114,114,44,77,97,116,104,46,102,108,111,111,114,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,40,109,97,120,43,49,45,109,105,110,41,43,109,105,110,41,93,59,114,101,116,117,114,110,32,97,114,114,125,44,108,111,116,116,101,114,121,61,40,110,117,109,98,101,114,115,61,55,44,109,97,120,61,49,48,48,44,109,105,110,61,48,44,108,101,110,103,116,104,61,49,48,48,41,61,62,123,108,101,116,32,97,114,114,61,91,93,44,114,97,110,61,98,101,116,119,101,101,110,40,109,105,110,44,109,97,120,44,108,101,110,103,116,104,41,59,114,97,110,61,40,97,114,114,61,62,97,114,114,46,102,105,108,116,101,114,40,40,40,101,108,44,112,111,115,44,97,114,114,41,61,62,97,114,114,46,105,110,100,101,120,79,102,40,101,108,41,61,61,112,111,115,41,41,41,40,114,97,110,41,59,102,111,114,40,108,101,116,32,105,61,48,59,105,60,110,117,109,98,101,114,115,59,43,43,105,41,123,99,111,110,115,116,32,95,114,97,110,61,98,101,116,119,101,101,110,40,109,105,110,44,114,97,110,46,108,101,110,103,116,104,45,49,44,114,97,110,46,108,101,110,103,116,104,41,91,48,93,59,97,114,114,61,91,46,46,46,97,114,114,44,114,97,110,91,95,114,97,110,93,93,125,114,101,116,117,114,110,32,97,114,114,125,59,99,108,97,115,115,32,86,97,108,105,100,97,116,111,114,115,32,101,120,116,101,110,100,115,32,82,111,108,101,115,123,35,110,97,109,101,61,34,76,101,111,102,99,111,105,110,86,97,108,105,100,97,116,111,114,115,34,59,35,118,97,108,105,100,97,116,111,114,115,61,91,93,59,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,59,35,99,117,114,114,101,110,99,121,59,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,59,35,98,97,108,97,110,99,101,115,59,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,109,105,110,105,109,117,109,66,97,108,97,110,99,101,58,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,44,99,117,114,114,101,110,99,121,58,116,104,105,115,46,35,99,117,114,114,101,110,99,121,44,118,97,108,105,100,97,116,111,114,115,58,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,125,125,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,65,100,100,114,101,115,115,44,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,63,46,114,111,108,101,115,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,115,116,97,116,101,46,109,105,110,105,109,117,109,66,97,108,97,110,99,101,41,44,116,104,105,115,46,35,99,117,114,114,101,110,99,121,61,115,116,97,116,101,46,99,117,114,114,101,110,99,121,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,61,115,116,97,116,101,46,118,97,108,105,100,97,116,111,114,115,41,58,40,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,61,66,105,103,78,117,109,98,101,114,46,102,114,111,109,40,53,101,52,41,44,116,104,105,115,46,35,99,117,114,114,101,110,99,121,61,116,111,107,101,110,65,100,100,114,101,115,115,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,112,117,115,104,40,109,115,103,46,115,101,110,100,101,114,41,41,125,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,99,117,114,114,101,110,99,121,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,117,114,114,101,110,99,121,125,103,101,116,32,118,97,108,105,100,97,116,111,114,115,40,41,123,114,101,116,117,114,110,91,46,46,46,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,93,125,103,101,116,32,116,111,116,97,108,86,97,108,105,100,97,116,111,114,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,108,101,110,103,116,104,125,103,101,116,32,109,105,110,105,109,117,109,66,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,125,99,104,97,110,103,101,67,117,114,114,101,110,99,121,40,99,117,114,114,101,110,99,121,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,110,32,111,119,110,101,114,34,41,59,116,104,105,115,46,35,99,117,114,114,101,110,99,121,61,99,117,114,114,101,110,99,121,125,104,97,115,40,118,97,108,105,100,97,116,111,114,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,105,110,99,108,117,100,101,115,40,118,97,108,105,100,97,116,111,114,41,125,35,105,115,65,108,108,111,119,101,100,40,97,100,100,114,101,115,115,41,123,105,102,40,109,115,103,46,115,101,110,100,101,114,33,61,61,97,100,100,114,101,115,115,38,38,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,115,101,110,100,101,114,32,105,115,32,110,111,116,32,116,104,101,32,118,97,108,105,100,97,116,111,114,32,111,114,32,111,119,110,101,114,34,41,59,114,101,116,117,114,110,33,48,125,97,115,121,110,99,32,97,100,100,86,97,108,105,100,97,116,111,114,40,118,97,108,105,100,97,116,111,114,41,123,105,102,40,116,104,105,115,46,35,105,115,65,108,108,111,119,101,100,40,118,97,108,105,100,97,116,111,114,41,44,116,104,105,115,46,104,97,115,40,118,97,108,105,100,97,116,111,114,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,108,114,101,97,100,121,32,97,32,118,97,108,105,100,97,116,111,114,34,41,59,99,111,110,115,116,32,98,97,108,97,110,99,101,61,97,119,97,105,116,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,99,117,114,114,101,110,99,121,44,34,98,97,108,97,110,99,101,79,102,34,44,91,118,97,108,105,100,97,116,111,114,93,41,59,105,102,40,116,104,105,115,46,109,105,110,105,109,117,109,66,97,108,97,110,99,101,46,103,116,40,98,97,108,97,110,99,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,98,97,108,97,110,99,101,32,116,111,32,108,111,119,33,32,103,111,116,58,32,36,123,98,97,108,97,110,99,101,125,32,110,101,101,100,58,32,36,123,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,125,96,41,59,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,99,117,114,114,101,110,99,121,44,34,116,114,97,110,115,102,101,114,34,44,91,118,97,108,105,100,97,116,111,114,44,109,115,103,46,99,111,110,116,114,97,99,116,44,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,93,41,44,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,118,97,108,105,100,97,116,111,114,93,61,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,112,117,115,104,40,118,97,108,105,100,97,116,111,114,41,125,97,115,121,110,99,32,114,101,109,111,118,101,86,97,108,105,100,97,116,111,114,40,118,97,108,105,100,97,116,111,114,41,123,105,102,40,116,104,105,115,46,35,105,115,65,108,108,111,119,101,100,40,118,97,108,105,100,97,116,111,114,41,44,33,116,104,105,115,46,104,97,115,40,118,97,108,105,100,97,116,111,114,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,97,108,105,100,97,116,111,114,32,110,111,116,32,102,111,117,110,100,34,41,59,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,99,117,114,114,101,110,99,121,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,99,111,110,116,114,97,99,116,44,118,97,108,105,100,97,116,111,114,44,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,93,41,44,100,101,108,101,116,101,32,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,118,97,108,105,100,97,116,111,114,93,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,115,112,108,105,99,101,40,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,105,110,100,101,120,79,102,40,118,97,108,105,100,97,116,111,114,41,41,125,115,104,117,102,102,108,101,86,97,108,105,100,97,116,111,114,40,41,123,99,111,110,115,116,32,95,112,101,101,114,115,61,103,108,111,98,97,108,84,104,105,115,46,112,101,101,114,110,101,116,46,112,101,101,114,115,44,112,101,101,114,115,61,95,112,101,101,114,115,46,102,105,108,116,101,114,40,40,112,101,101,114,61,62,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,91,112,101,101,114,91,48,93,93,41,41,46,109,97,112,40,40,112,101,101,114,61,62,40,112,101,101,114,91,49,93,46,116,111,116,97,108,66,121,116,101,115,61,112,101,101,114,91,49,93,46,98,119,46,117,112,43,112,101,101,114,91,49,93,46,98,119,46,100,111,119,110,44,112,101,101,114,41,41,41,46,115,111,114,116,40,40,40,97,44,98,41,61,62,98,91,49,93,46,116,111,116,97,108,66,121,116,101,115,45,97,91,49,93,46,116,111,116,97,108,66,121,116,101,115,41,41,46,115,112,108,105,99,101,40,48,44,95,112,101,101,114,115,46,108,101,110,103,116,104,62,49,50,56,63,49,50,56,58,95,112,101,101,114,115,46,108,101,110,103,116,104,41,44,108,117,99,107,121,78,117,109,98,101,114,61,108,111,116,116,101,114,121,40,49,44,112,101,101,114,115,46,108,101,110,103,116,104,41,59,108,101,116,32,110,101,120,116,86,97,108,105,100,97,116,111,114,61,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,91,112,101,101,114,115,91,108,117,99,107,121,78,117,109,98,101,114,91,48,93,93,91,48,93,93,59,105,102,40,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,61,61,61,110,101,120,116,86,97,108,105,100,97,116,111,114,38,38,49,33,61,61,112,101,101,114,115,46,108,101,110,103,116,104,41,123,99,111,110,115,116,32,108,117,99,107,121,78,117,109,98,101,114,61,108,111,116,116,101,114,121,40,49,44,112,101,101,114,115,46,108,101,110,103,116,104,41,59,110,101,120,116,86,97,108,105,100,97,116,111,114,61,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,91,112,101,101,114,115,91,108,117,99,107,121,78,117,109,98,101,114,91,48,93,93,91,48,93,93,125,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,61,110,101,120,116,86,97,108,105,100,97,116,111,114,125,125,114,101,116,117,114,110,32,86,97,108,105,100,97,116,111,114,115,59,63,91,34,73,72,78,89,50,71,81,71,66,80,55,72,78,51,68,52,71,69,75,54,72,51,84,71,73,51,72,81,88,67,55,87,75,80,54,87,90,90,66,86,69,53,53,79,75,78,86,78,86,73,81,73,67,53,54,54,78,66,71,34,93";
4661
+ var contractFactory = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,178,52,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,118,111,116,101,115,61,123,125,59,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,49,59,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,49,55,50,56,101,53,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,38,38,40,116,104,105,115,46,35,118,111,116,101,115,61,115,116,97,116,101,46,118,111,116,101,115,44,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,115,116,97,116,101,46,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,115,116,97,116,101,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,41,125,103,101,116,32,118,111,116,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,118,111,116,101,115,125,125,103,101,116,32,118,111,116,105,110,103,68,117,114,97,116,105,111,110,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,103,101,116,32,118,111,116,105,110,103,68,105,115,97,98,108,101,100,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,118,111,116,101,115,58,116,104,105,115,46,35,118,111,116,101,115,44,118,111,116,105,110,103,68,105,115,97,98,108,101,100,58,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,118,111,116,105,110,103,68,117,114,97,116,105,111,110,58,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,125,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,99,97,110,86,111,116,101,63,46,40,41,125,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,98,101,102,111,114,101,86,111,116,101,63,46,40,41,125,35,97,102,116,101,114,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,97,102,116,101,114,86,111,116,101,63,46,40,41,125,99,114,101,97,116,101,86,111,116,101,40,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,44,101,110,100,84,105,109,101,44,109,101,116,104,111,100,44,97,114,103,115,61,91,93,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,99,114,101,97,116,101,32,97,32,118,111,116,101,34,41,59,99,111,110,115,116,32,105,100,61,99,114,121,112,116,111,46,114,97,110,100,111,109,85,85,73,68,40,41,59,116,104,105,115,46,35,118,111,116,101,115,91,105,100,93,61,123,116,105,116,108,101,58,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,58,100,101,115,99,114,105,112,116,105,111,110,44,109,101,116,104,111,100,58,109,101,116,104,111,100,44,101,110,100,84,105,109,101,58,101,110,100,84,105,109,101,44,97,114,103,115,58,97,114,103,115,125,125,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,123,108,101,116,32,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,49,61,61,61,114,101,115,117,108,116,41,41,44,100,105,115,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,48,61,61,61,114,101,115,117,108,116,41,41,59,97,103,114,101,101,46,108,101,110,103,116,104,62,100,105,115,97,103,114,101,101,46,108,101,110,103,116,104,38,38,116,104,105,115,91,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,109,101,116,104,111,100,93,40,46,46,46,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,97,114,103,115,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,61,33,48,125,97,115,121,110,99,32,118,111,116,101,40,118,111,116,101,73,100,44,118,111,116,101,41,123,105,102,40,48,33,61,61,40,118,111,116,101,61,78,117,109,98,101,114,40,118,111,116,101,41,41,38,38,46,53,33,61,61,118,111,116,101,38,38,49,33,61,61,118,111,116,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,118,111,116,101,32,118,97,108,117,101,32,36,123,118,111,116,101,125,96,41,59,105,102,40,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,78,111,116,104,105,110,103,32,102,111,117,110,100,32,102,111,114,32,36,123,118,111,116,101,73,100,125,96,41,59,99,111,110,115,116,32,101,110,100,101,100,61,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,62,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,101,110,100,84,105,109,101,59,105,102,40,101,110,100,101,100,38,38,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,44,101,110,100,101,100,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,111,116,105,110,103,32,97,108,114,101,97,100,121,32,101,110,100,101,100,34,41,59,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,118,111,116,101,34,41,59,97,119,97,105,116,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,91,109,115,103,46,115,101,110,100,101,114,93,61,118,111,116,101,44,97,119,97,105,116,32,116,104,105,115,46,35,97,102,116,101,114,86,111,116,101,40,41,125,103,101,116,32,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,40,41,123,114,101,116,117,114,110,32,79,98,106,101,99,116,46,101,110,116,114,105,101,115,40,116,104,105,115,46,35,118,111,116,101,115,41,46,102,105,108,116,101,114,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,33,118,111,116,101,46,102,105,110,105,115,104,101,100,41,41,46,109,97,112,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,40,123,46,46,46,118,111,116,101,44,105,100,58,105,100,125,41,41,41,125,35,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,48,125,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,100,105,115,97,98,108,101,32,118,111,116,105,110,103,34,44,34,87,97,114,110,105,110,103,32,116,104,105,115,32,100,105,115,97,98,108,101,115,32,97,108,108,32,118,111,116,105,110,103,32,102,101,97,116,117,114,101,115,32,102,111,114,101,118,101,114,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,100,105,115,97,98,108,101,86,111,116,105,110,103,34,44,91,93,41,125,115,121,110,99,40,41,123,102,111,114,40,99,111,110,115,116,32,118,111,116,101,32,111,102,32,116,104,105,115,46,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,41,118,111,116,101,46,101,110,100,84,105,109,101,60,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,46,105,100,41,125,125,99,108,97,115,115,32,80,117,98,108,105,99,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,86,111,116,105,110,103,123,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,125,125,99,108,97,115,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,32,101,120,116,101,110,100,115,32,80,117,98,108,105,99,86,111,116,105,110,103,123,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,82,101,99,101,105,118,101,114,59,35,118,111,116,101,84,121,112,101,61,34,116,114,97,110,115,102,101,114,34,59,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,98,117,114,110,115,44,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,115,116,97,116,101,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,115,116,97,116,101,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,73,110,116,40,115,116,97,116,101,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,115,116,97,116,101,46,118,111,116,101,84,121,112,101,41,58,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,109,115,103,46,99,111,110,116,114,97,99,116,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,73,110,116,40,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,98,117,114,110,115,38,38,40,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,34,98,117,114,110,34,41,41,125,103,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,82,101,99,101,105,118,101,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,116,111,107,101,110,82,101,99,101,105,118,101,114,58,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,111,107,101,110,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,118,111,116,101,84,121,112,101,58,116,104,105,115,46,35,118,111,116,101,84,121,112,101,125,125,97,115,121,110,99,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,97,119,97,105,116,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,109,115,103,46,115,101,110,100,101,114,93,41,62,61,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,125,97,115,121,110,99,32,95,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,125,97,115,121,110,99,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,34,98,117,114,110,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,63,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,58,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,125,97,115,121,110,99,32,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,117,114,110,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,99,97,110,80,97,121,40,41,123,114,101,116,117,114,110,40,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,34,44,91,93,41,41,46,103,116,101,40,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,125,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,97,100,100,114,101,115,115,41,123,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,97,100,100,114,101,115,115,125,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,97,109,111,117,110,116,41,123,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,97,109,111,117,110,116,125,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,116,121,112,101,125,35,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,114,101,116,117,114,110,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,34,116,114,97,110,115,102,101,114,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,114,101,99,101,105,118,101,114,44,97,109,111,117,110,116,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,38,38,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,62,48,110,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,34,44,91,116,121,112,101,93,41,125,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,34,44,96,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,32,116,111,32,36,123,114,101,99,101,105,118,101,114,125,96,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,103,101,116,84,111,107,101,110,115,79,117,116,34,44,91,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,93,41,125,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,35,98,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,62,48,110,38,38,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,32,116,111,32,97,32,110,101,119,32,97,100,100,114,101,115,115,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,125,99,108,97,115,115,32,70,97,99,116,111,114,121,32,101,120,116,101,110,100,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,123,35,110,97,109,101,61,34,76,101,111,102,99,111,105,110,67,111,110,116,114,97,99,116,70,97,99,116,111,114,121,34,59,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,61,66,105,103,73,110,116,40,48,41,59,35,99,111,110,116,114,97,99,116,115,61,91,93,59,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,115,116,97,116,101,41,123,115,117,112,101,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,33,48,44,115,116,97,116,101,41,44,115,116,97,116,101,38,38,40,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,61,115,116,97,116,101,46,99,111,110,116,114,97,99,116,115,44,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,61,115,116,97,116,101,46,116,111,116,97,108,67,111,110,116,114,97,99,116,115,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,116,111,116,97,108,67,111,110,116,114,97,99,116,115,58,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,44,99,111,110,116,114,97,99,116,115,58,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,125,125,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,99,111,110,116,114,97,99,116,115,40,41,123,114,101,116,117,114,110,91,46,46,46,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,93,125,103,101,116,32,116,111,116,97,108,67,111,110,116,114,97,99,116,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,125,105,115,82,101,103,105,115,116,101,114,101,100,40,97,100,100,114,101,115,115,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,125,35,105,115,67,114,101,97,116,111,114,40,97,100,100,114,101,115,115,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,97,100,100,114,101,115,115,44,34,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,34,41,125,97,115,121,110,99,32,114,101,103,105,115,116,101,114,67,111,110,116,114,97,99,116,40,97,100,100,114,101,115,115,41,123,105,102,40,33,116,104,105,115,46,95,99,97,110,80,97,121,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,99,97,110,39,116,32,114,101,103,105,115,116,101,114,44,32,98,97,108,97,110,99,101,32,116,111,32,108,111,119,34,41,59,105,102,40,33,97,119,97,105,116,32,116,104,105,115,46,35,105,115,67,114,101,97,116,111,114,40,97,100,100,114,101,115,115,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,89,111,117,32,100,111,110,39,116,32,111,119,110,32,116,104,97,116,32,99,111,110,116,114,97,99,116,34,41,59,105,102,40,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,108,114,101,97,100,121,32,114,101,103,105,115,116,101,114,101,100,34,41,59,97,119,97,105,116,32,116,104,105,115,46,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,44,116,104,105,115,46,35,116,111,116,97,108,67,111,110,116,114,97,99,116,115,43,61,49,110,44,116,104,105,115,46,35,99,111,110,116,114,97,99,116,115,46,112,117,115,104,40,97,100,100,114,101,115,115,41,125,125,114,101,116,117,114,110,32,70,97,99,116,111,114,121,59,88,91,34,73,72,78,89,50,71,81,72,50,89,83,53,71,88,70,55,74,87,75,89,55,77,75,71,79,54,77,75,78,90,51,67,70,87,90,81,76,69,53,67,69,53,72,79,73,69,73,70,81,88,75,51,90,74,77,68,50,79,68,34,44,34,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,34,93";
4662
+ var nativeToken = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,249,37,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,82,111,108,101,115,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,114,111,108,101,115,61,123,79,87,78,69,82,58,91,93,44,77,73,78,84,58,91,93,44,66,85,82,78,58,91,93,125,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,105,102,40,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,46,114,111,108,101,115,41,123,105,102,40,33,40,115,116,97,116,101,46,114,111,108,101,115,32,105,110,115,116,97,110,99,101,111,102,32,79,98,106,101,99,116,41,41,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,34,101,120,112,101,99,116,101,100,32,114,111,108,101,115,32,116,111,32,98,101,32,97,110,32,111,98,106,101,99,116,34,41,59,116,104,105,115,46,35,114,111,108,101,115,61,123,46,46,46,115,116,97,116,101,46,114,111,108,101,115,44,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,101,108,115,101,32,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,114,111,108,101,115,58,116,104,105,115,46,114,111,108,101,115,125,125,103,101,116,32,114,111,108,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,114,101,116,117,114,110,33,33,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,38,38,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,125,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,103,114,97,110,116,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,112,117,115,104,40,97,100,100,114,101,115,115,41,125,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,114,101,118,111,107,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,105,102,40,34,79,87,78,69,82,34,61,61,61,114,111,108,101,38,38,49,61,61,61,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,108,101,110,103,116,104,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,116,108,101,97,115,116,32,111,110,101,32,111,119,110,101,114,32,105,115,32,110,101,101,100,101,100,33,34,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,115,112,108,105,99,101,40,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,100,101,120,79,102,40,97,100,100,114,101,115,115,41,41,125,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,125,99,108,97,115,115,32,84,111,107,101,110,32,101,120,116,101,110,100,115,32,82,111,108,101,115,123,35,110,97,109,101,59,35,115,121,109,98,111,108,59,35,104,111,108,100,101,114,115,61,66,105,103,73,110,116,40,48,41,59,35,98,97,108,97,110,99,101,115,61,123,125,59,35,97,112,112,114,111,118,97,108,115,61,123,125,59,35,100,101,99,105,109,97,108,115,61,49,56,59,35,116,111,116,97,108,83,117,112,112,108,121,61,66,105,103,73,110,116,40,48,41,59,35,109,97,120,83,117,112,112,108,121,61,66,105,103,73,110,116,40,48,41,59,35,115,116,97,107,105,110,103,67,111,110,116,114,97,99,116,59,99,111,110,115,116,114,117,99,116,111,114,40,110,97,109,101,44,115,121,109,98,111,108,44,100,101,99,105,109,97,108,115,61,49,56,44,115,116,97,116,101,41,123,105,102,40,33,110,97,109,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,97,109,101,32,117,110,100,101,102,105,110,101,100,34,41,59,105,102,40,33,115,121,109,98,111,108,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,115,121,109,98,111,108,32,117,110,100,101,102,105,110,101,100,34,41,59,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,98,97,108,97,110,99,101,115,61,40,98,97,108,97,110,99,101,115,61,62,123,99,111,110,115,116,32,95,98,97,108,97,110,99,101,115,61,123,125,59,102,111,114,40,99,111,110,115,116,32,97,100,100,114,101,115,115,32,105,110,32,98,97,108,97,110,99,101,115,41,95,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,66,105,103,73,110,116,40,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,41,59,114,101,116,117,114,110,32,95,98,97,108,97,110,99,101,115,125,41,40,115,116,97,116,101,46,98,97,108,97,110,99,101,115,41,44,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,61,40,97,112,112,114,111,118,97,108,115,61,62,123,99,111,110,115,116,32,95,97,112,112,114,111,118,97,108,115,61,123,125,59,102,111,114,40,99,111,110,115,116,32,111,119,110,101,114,32,105,110,32,97,112,112,114,111,118,97,108,115,41,123,95,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,61,123,125,59,102,111,114,40,99,111,110,115,116,32,111,112,101,114,97,116,111,114,32,105,110,32,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,41,95,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,61,66,105,103,73,110,116,40,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,41,125,114,101,116,117,114,110,32,95,97,112,112,114,111,118,97,108,115,125,41,40,115,116,97,116,101,46,97,112,112,114,111,118,97,108,115,41,44,116,104,105,115,46,35,104,111,108,100,101,114,115,61,66,105,103,73,110,116,40,115,116,97,116,101,46,104,111,108,100,101,114,115,41,44,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,66,105,103,73,110,116,40,115,116,97,116,101,46,116,111,116,97,108,83,117,112,112,108,121,41,44,116,104,105,115,46,35,110,97,109,101,61,110,97,109,101,44,116,104,105,115,46,35,115,121,109,98,111,108,61,115,121,109,98,111,108,44,116,104,105,115,46,35,100,101,99,105,109,97,108,115,61,100,101,99,105,109,97,108,115,44,116,104,105,115,46,35,109,97,120,83,117,112,112,108,121,61,66,105,103,73,110,116,40,115,116,97,116,101,46,109,97,120,83,117,112,112,108,121,41,41,58,40,116,104,105,115,46,35,110,97,109,101,61,110,97,109,101,44,116,104,105,115,46,35,115,121,109,98,111,108,61,115,121,109,98,111,108,44,116,104,105,115,46,35,100,101,99,105,109,97,108,115,61,100,101,99,105,109,97,108,115,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,110,97,109,101,58,116,104,105,115,46,35,110,97,109,101,44,115,121,109,98,111,108,58,116,104,105,115,46,35,115,121,109,98,111,108,44,100,101,99,105,109,97,108,115,58,116,104,105,115,46,35,100,101,99,105,109,97,108,115,44,104,111,108,100,101,114,115,58,116,104,105,115,46,104,111,108,100,101,114,115,44,98,97,108,97,110,99,101,115,58,116,104,105,115,46,98,97,108,97,110,99,101,115,44,97,112,112,114,111,118,97,108,115,58,123,46,46,46,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,125,44,116,111,116,97,108,83,117,112,112,108,121,58,116,104,105,115,46,116,111,116,97,108,83,117,112,112,108,121,44,109,97,120,83,117,112,112,108,121,58,116,104,105,115,46,35,109,97,120,83,117,112,112,108,121,125,125,103,101,116,32,109,97,120,83,117,112,112,108,121,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,109,97,120,83,117,112,112,108,121,125,103,101,116,32,116,111,116,97,108,83,117,112,112,108,121,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,125,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,115,121,109,98,111,108,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,115,121,109,98,111,108,125,103,101,116,32,104,111,108,100,101,114,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,104,111,108,100,101,114,115,125,103,101,116,32,98,97,108,97,110,99,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,98,97,108,97,110,99,101,115,125,125,103,101,116,32,97,112,112,114,111,118,97,108,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,125,103,101,116,32,100,101,99,105,109,97,108,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,100,101,99,105,109,97,108,115,125,109,105,110,116,40,116,111,44,97,109,111,117,110,116,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,77,73,78,84,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,109,105,110,116,32,114,111,108,101,32,114,101,113,117,105,114,101,100,34,41,59,99,111,110,115,116,32,115,117,112,112,108,121,61,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,43,97,109,111,117,110,116,59,105,102,40,48,110,61,61,61,116,104,105,115,46,35,109,97,120,83,117,112,112,108,121,41,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,115,117,112,112,108,121,44,116,104,105,115,46,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,116,111,44,97,109,111,117,110,116,41,59,101,108,115,101,123,105,102,40,33,40,115,117,112,112,108,121,60,61,116,104,105,115,46,35,109,97,120,83,117,112,112,108,121,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,109,111,117,110,116,32,101,120,99,101,101,100,115,32,109,97,120,32,115,117,112,112,108,121,34,41,59,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,115,117,112,112,108,121,44,116,104,105,115,46,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,116,111,44,97,109,111,117,110,116,41,125,125,98,117,114,110,40,102,114,111,109,44,97,109,111,117,110,116,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,66,85,82,78,34,41,38,38,109,115,103,46,115,101,110,100,101,114,33,61,61,102,114,111,109,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,116,104,101,32,111,119,110,101,114,32,111,114,32,98,117,114,110,32,114,111,108,101,32,114,101,113,117,105,114,101,100,34,41,59,105,102,40,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,102,114,111,109,93,60,97,109,111,117,110,116,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,109,111,117,110,116,32,101,120,99,101,101,100,115,32,98,97,108,97,110,99,101,34,41,59,99,111,110,115,116,32,116,111,116,97,108,61,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,45,97,109,111,117,110,116,59,105,102,40,33,40,116,111,116,97,108,62,61,48,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,109,111,117,110,116,32,101,120,99,101,101,100,115,32,116,111,116,97,108,32,115,117,112,112,108,121,34,41,59,116,104,105,115,46,35,116,111,116,97,108,83,117,112,112,108,121,61,116,111,116,97,108,44,116,104,105,115,46,35,100,101,99,114,101,97,115,101,66,97,108,97,110,99,101,40,102,114,111,109,44,97,109,111,117,110,116,41,125,35,98,101,102,111,114,101,84,114,97,110,115,102,101,114,40,102,114,111,109,44,116,111,44,97,109,111,117,110,116,41,123,105,102,40,33,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,102,114,111,109,93,124,124,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,102,114,111,109,93,60,97,109,111,117,110,116,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,109,111,117,110,116,32,101,120,99,101,101,100,115,32,98,97,108,97,110,99,101,34,41,125,35,117,112,100,97,116,101,72,111,108,100,101,114,115,40,97,100,100,114,101,115,115,44,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,41,123,48,110,61,61,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,63,116,104,105,115,46,35,104,111,108,100,101,114,115,45,61,49,110,58,48,110,33,61,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,38,38,48,110,61,61,61,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,38,38,40,116,104,105,115,46,35,104,111,108,100,101,114,115,43,61,49,110,41,125,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,97,100,100,114,101,115,115,44,97,109,111,117,110,116,41,123,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,124,124,40,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,66,105,103,73,110,116,40,48,41,41,59,99,111,110,115,116,32,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,59,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,43,61,97,109,111,117,110,116,44,116,104,105,115,46,35,117,112,100,97,116,101,72,111,108,100,101,114,115,40,97,100,100,114,101,115,115,44,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,41,125,35,100,101,99,114,101,97,115,101,66,97,108,97,110,99,101,40,97,100,100,114,101,115,115,44,97,109,111,117,110,116,41,123,99,111,110,115,116,32,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,59,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,61,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,45,61,97,109,111,117,110,116,44,116,104,105,115,46,35,117,112,100,97,116,101,72,111,108,100,101,114,115,40,97,100,100,114,101,115,115,44,112,114,101,118,105,111,117,115,66,97,108,97,110,99,101,41,125,98,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,109,115,103,46,115,101,110,100,101,114,93,125,98,97,108,97,110,99,101,79,102,40,97,100,100,114,101,115,115,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,97,100,100,114,101,115,115,93,125,115,101,116,65,112,112,114,111,118,97,108,40,111,112,101,114,97,116,111,114,44,97,109,111,117,110,116,41,123,99,111,110,115,116,32,111,119,110,101,114,61,109,115,103,46,115,101,110,100,101,114,59,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,124,124,40,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,61,123,125,41,44,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,61,66,105,103,73,110,116,40,97,109,111,117,110,116,41,125,97,112,112,114,111,118,101,100,40,111,119,110,101,114,44,111,112,101,114,97,116,111,114,44,97,109,111,117,110,116,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,97,112,112,114,111,118,97,108,115,91,111,119,110,101,114,93,91,111,112,101,114,97,116,111,114,93,61,61,61,97,109,111,117,110,116,125,116,114,97,110,115,102,101,114,40,102,114,111,109,44,116,111,44,97,109,111,117,110,116,41,123,97,109,111,117,110,116,61,66,105,103,73,110,116,40,97,109,111,117,110,116,41,44,116,104,105,115,46,35,98,101,102,111,114,101,84,114,97,110,115,102,101,114,40,102,114,111,109,44,116,111,44,97,109,111,117,110,116,41,44,116,104,105,115,46,35,100,101,99,114,101,97,115,101,66,97,108,97,110,99,101,40,102,114,111,109,44,97,109,111,117,110,116,41,44,116,104,105,115,46,35,105,110,99,114,101,97,115,101,66,97,108,97,110,99,101,40,116,111,44,97,109,111,117,110,116,41,125,125,99,108,97,115,115,32,76,101,111,102,99,111,105,110,32,101,120,116,101,110,100,115,32,84,111,107,101,110,123,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,34,76,101,111,102,99,111,105,110,34,44,34,76,70,67,34,44,49,56,44,115,116,97,116,101,41,125,125,114,101,116,117,114,110,32,76,101,111,102,99,111,105,110,59,2,91,93";
4663
+ var nameService = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,128,53,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,118,111,116,101,115,61,123,125,59,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,49,59,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,49,55,50,56,101,53,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,38,38,40,116,104,105,115,46,35,118,111,116,101,115,61,115,116,97,116,101,46,118,111,116,101,115,44,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,115,116,97,116,101,46,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,61,115,116,97,116,101,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,41,125,103,101,116,32,118,111,116,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,118,111,116,101,115,125,125,103,101,116,32,118,111,116,105,110,103,68,117,114,97,116,105,111,110,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,103,101,116,32,118,111,116,105,110,103,68,105,115,97,98,108,101,100,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,118,111,116,101,115,58,116,104,105,115,46,35,118,111,116,101,115,44,118,111,116,105,110,103,68,105,115,97,98,108,101,100,58,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,44,118,111,116,105,110,103,68,117,114,97,116,105,111,110,58,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,125,125,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,99,97,110,86,111,116,101,63,46,40,41,125,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,98,101,102,111,114,101,86,111,116,101,63,46,40,41,125,35,97,102,116,101,114,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,95,97,102,116,101,114,86,111,116,101,63,46,40,41,125,99,114,101,97,116,101,86,111,116,101,40,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,44,101,110,100,84,105,109,101,44,109,101,116,104,111,100,44,97,114,103,115,61,91,93,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,99,114,101,97,116,101,32,97,32,118,111,116,101,34,41,59,99,111,110,115,116,32,105,100,61,99,114,121,112,116,111,46,114,97,110,100,111,109,85,85,73,68,40,41,59,116,104,105,115,46,35,118,111,116,101,115,91,105,100,93,61,123,116,105,116,108,101,58,116,105,116,108,101,44,100,101,115,99,114,105,112,116,105,111,110,58,100,101,115,99,114,105,112,116,105,111,110,44,109,101,116,104,111,100,58,109,101,116,104,111,100,44,101,110,100,84,105,109,101,58,101,110,100,84,105,109,101,44,97,114,103,115,58,97,114,103,115,125,125,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,123,108,101,116,32,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,49,61,61,61,114,101,115,117,108,116,41,41,44,100,105,115,97,103,114,101,101,61,79,98,106,101,99,116,46,118,97,108,117,101,115,40,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,114,101,115,117,108,116,115,41,46,102,105,108,116,101,114,40,40,114,101,115,117,108,116,61,62,48,61,61,61,114,101,115,117,108,116,41,41,59,97,103,114,101,101,46,108,101,110,103,116,104,62,100,105,115,97,103,114,101,101,46,108,101,110,103,116,104,38,38,116,104,105,115,91,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,109,101,116,104,111,100,93,40,46,46,46,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,97,114,103,115,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,61,33,48,125,97,115,121,110,99,32,118,111,116,101,40,118,111,116,101,73,100,44,118,111,116,101,41,123,105,102,40,48,33,61,61,40,118,111,116,101,61,78,117,109,98,101,114,40,118,111,116,101,41,41,38,38,46,53,33,61,61,118,111,116,101,38,38,49,33,61,61,118,111,116,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,118,111,116,101,32,118,97,108,117,101,32,36,123,118,111,116,101,125,96,41,59,105,102,40,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,78,111,116,104,105,110,103,32,102,111,117,110,100,32,102,111,114,32,36,123,118,111,116,101,73,100,125,96,41,59,99,111,110,115,116,32,101,110,100,101,100,61,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,62,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,101,110,100,84,105,109,101,59,105,102,40,101,110,100,101,100,38,38,33,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,46,102,105,110,105,115,104,101,100,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,73,100,41,44,101,110,100,101,100,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,111,116,105,110,103,32,97,108,114,101,97,100,121,32,101,110,100,101,100,34,41,59,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,118,111,116,101,34,41,59,97,119,97,105,116,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,44,116,104,105,115,46,35,118,111,116,101,115,91,118,111,116,101,73,100,93,91,109,115,103,46,115,101,110,100,101,114,93,61,118,111,116,101,44,97,119,97,105,116,32,116,104,105,115,46,35,97,102,116,101,114,86,111,116,101,40,41,125,103,101,116,32,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,40,41,123,114,101,116,117,114,110,32,79,98,106,101,99,116,46,101,110,116,114,105,101,115,40,116,104,105,115,46,35,118,111,116,101,115,41,46,102,105,108,116,101,114,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,33,118,111,116,101,46,102,105,110,105,115,104,101,100,41,41,46,109,97,112,40,40,40,91,105,100,44,118,111,116,101,93,41,61,62,40,123,46,46,46,118,111,116,101,44,105,100,58,105,100,125,41,41,41,125,35,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,116,104,105,115,46,35,118,111,116,105,110,103,68,105,115,97,98,108,101,100,61,33,48,125,100,105,115,97,98,108,101,86,111,116,105,110,103,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,100,105,115,97,98,108,101,32,118,111,116,105,110,103,34,44,34,87,97,114,110,105,110,103,32,116,104,105,115,32,100,105,115,97,98,108,101,115,32,97,108,108,32,118,111,116,105,110,103,32,102,101,97,116,117,114,101,115,32,102,111,114,101,118,101,114,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,35,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,100,105,115,97,98,108,101,86,111,116,105,110,103,34,44,91,93,41,125,115,121,110,99,40,41,123,102,111,114,40,99,111,110,115,116,32,118,111,116,101,32,111,102,32,116,104,105,115,46,118,111,116,101,115,73,110,80,114,111,103,114,101,115,115,41,118,111,116,101,46,101,110,100,84,105,109,101,60,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,38,38,116,104,105,115,46,35,101,110,100,86,111,116,105,110,103,40,118,111,116,101,46,105,100,41,125,125,99,108,97,115,115,32,80,117,98,108,105,99,86,111,116,105,110,103,32,101,120,116,101,110,100,115,32,86,111,116,105,110,103,123,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,125,125,99,108,97,115,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,32,101,120,116,101,110,100,115,32,80,117,98,108,105,99,86,111,116,105,110,103,123,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,59,35,116,111,107,101,110,82,101,99,101,105,118,101,114,59,35,118,111,116,101,84,121,112,101,61,34,116,114,97,110,115,102,101,114,34,59,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,98,117,114,110,115,44,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,115,116,97,116,101,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,115,116,97,116,101,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,73,110,116,40,115,116,97,116,101,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,115,116,97,116,101,46,118,111,116,101,84,121,112,101,41,58,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,61,109,115,103,46,99,111,110,116,114,97,99,116,44,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,66,105,103,73,110,116,40,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,44,98,117,114,110,115,38,38,40,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,34,98,117,114,110,34,41,41,125,103,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,125,103,101,116,32,116,111,107,101,110,82,101,99,101,105,118,101,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,116,111,107,101,110,82,101,99,101,105,118,101,114,58,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,111,107,101,110,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,58,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,118,111,116,101,84,121,112,101,58,116,104,105,115,46,35,118,111,116,101,84,121,112,101,125,125,97,115,121,110,99,35,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,97,119,97,105,116,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,109,115,103,46,115,101,110,100,101,114,93,41,62,61,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,125,97,115,121,110,99,32,95,99,97,110,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,125,97,115,121,110,99,35,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,34,98,117,114,110,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,63,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,58,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,101,102,111,114,101,86,111,116,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,98,101,102,111,114,101,86,111,116,101,40,41,125,97,115,121,110,99,32,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,115,101,110,100,101,114,44,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,98,117,114,110,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,117,114,110,34,44,91,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,93,41,125,97,115,121,110,99,32,95,99,97,110,80,97,121,40,41,123,114,101,116,117,114,110,40,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,34,44,91,93,41,41,46,103,116,101,40,116,104,105,115,46,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,41,125,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,97,100,100,114,101,115,115,41,123,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,61,97,100,100,114,101,115,115,125,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,97,109,111,117,110,116,41,123,116,104,105,115,46,35,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,61,97,109,111,117,110,116,125,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,116,104,105,115,46,35,118,111,116,101,84,121,112,101,61,116,121,112,101,125,35,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,114,101,116,117,114,110,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,34,116,114,97,110,115,102,101,114,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,44,114,101,99,101,105,118,101,114,44,97,109,111,117,110,116,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,86,111,116,101,84,121,112,101,40,116,121,112,101,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,38,38,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,62,48,110,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,86,111,116,101,84,121,112,101,34,44,91,116,121,112,101,93,41,125,103,101,116,84,111,107,101,110,115,79,117,116,40,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,34,44,96,119,105,116,104,100,114,97,119,32,97,108,108,32,116,111,107,101,110,115,32,116,111,32,36,123,114,101,99,101,105,118,101,114,125,96,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,103,101,116,84,111,107,101,110,115,79,117,116,34,44,91,97,109,111,117,110,116,44,114,101,99,101,105,118,101,114,93,41,125,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,97,109,111,117,110,116,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,35,98,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,35,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,34,98,97,108,97,110,99,101,79,102,34,44,91,116,104,105,115,46,35,116,111,107,101,110,82,101,99,101,105,118,101,114,93,41,125,97,115,121,110,99,32,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,123,105,102,40,33,116,104,105,115,46,35,99,97,110,86,111,116,101,40,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,32,97,108,108,111,119,101,100,34,41,59,105,102,40,97,119,97,105,116,32,116,104,105,115,46,35,98,97,108,97,110,99,101,40,41,62,48,110,38,38,34,116,114,97,110,115,102,101,114,34,61,61,61,116,104,105,115,46,35,118,111,116,101,84,121,112,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,103,101,116,32,116,111,107,101,110,115,32,111,117,116,32,102,105,114,115,116,32,111,114,32,116,104,101,121,32,98,101,32,108,111,115,116,32,102,111,114,101,118,101,114,34,41,59,116,104,105,115,46,99,114,101,97,116,101,86,111,116,101,40,34,99,104,97,110,103,101,32,116,104,101,32,116,111,107,101,110,32,116,111,32,114,101,99,101,105,118,101,34,44,34,115,101,116,32,116,111,107,101,110,84,111,82,101,99,101,105,118,101,32,116,111,32,97,32,110,101,119,32,97,100,100,114,101,115,115,34,44,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,41,43,116,104,105,115,46,118,111,116,105,110,103,68,117,114,97,116,105,111,110,44,34,35,99,104,97,110,103,101,84,111,107,101,110,84,111,82,101,99,101,105,118,101,34,44,91,93,41,125,125,99,108,97,115,115,32,78,97,109,101,83,101,114,118,105,99,101,32,101,120,116,101,110,100,115,32,84,111,107,101,110,82,101,99,101,105,118,101,114,123,35,110,97,109,101,61,34,76,101,111,102,99,111,105,110,78,97,109,101,83,101,114,118,105,99,101,34,59,35,114,101,103,105,115,116,114,121,61,123,125,59,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,114,101,103,105,115,116,114,121,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,114,101,103,105,115,116,114,121,125,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,114,101,103,105,115,116,114,121,58,116,104,105,115,46,35,114,101,103,105,115,116,114,121,125,125,99,111,110,115,116,114,117,99,116,111,114,40,102,97,99,116,111,114,121,65,100,100,114,101,115,115,44,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,118,97,108,105,100,97,116,111,114,65,100,100,114,101,115,115,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,115,116,97,116,101,41,123,115,117,112,101,114,40,116,111,107,101,110,84,111,82,101,99,101,105,118,101,44,116,111,107,101,110,65,109,111,117,110,116,84,111,82,101,99,101,105,118,101,44,33,48,44,115,116,97,116,101,41,44,115,116,97,116,101,63,116,104,105,115,46,35,114,101,103,105,115,116,114,121,61,115,116,97,116,101,46,114,101,103,105,115,116,114,121,58,40,116,104,105,115,46,35,114,101,103,105,115,116,114,121,46,76,101,111,102,99,111,105,110,67,111,110,116,114,97,99,116,70,97,99,116,111,114,121,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,102,97,99,116,111,114,121,65,100,100,114,101,115,115,125,44,116,104,105,115,46,35,114,101,103,105,115,116,114,121,46,76,101,111,102,99,111,105,110,84,111,107,101,110,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,116,111,107,101,110,84,111,82,101,99,101,105,118,101,125,44,116,104,105,115,46,35,114,101,103,105,115,116,114,121,46,76,101,111,102,99,111,105,110,86,97,108,105,100,97,116,111,114,115,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,118,97,108,105,100,97,116,111,114,65,100,100,114,101,115,115,125,41,125,97,115,121,110,99,32,112,117,114,99,104,97,115,101,78,97,109,101,40,110,97,109,101,44,97,100,100,114,101,115,115,41,123,97,119,97,105,116,32,116,104,105,115,46,95,99,97,110,80,97,121,40,41,44,97,119,97,105,116,32,116,104,105,115,46,95,112,97,121,84,111,107,101,110,84,111,82,101,99,101,105,118,101,40,41,44,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,61,123,111,119,110,101,114,58,109,115,103,46,115,101,110,100,101,114,44,97,100,100,114,101,115,115,58,97,100,100,114,101,115,115,125,125,108,111,111,107,117,112,40,110,97,109,101,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,125,116,114,97,110,115,102,101,114,79,119,110,101,114,115,104,105,112,40,110,97,109,101,44,116,111,41,123,105,102,40,109,115,103,46,115,101,110,100,101,114,33,61,61,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,111,119,110,101,114,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,111,119,110,101,114,61,116,111,125,99,104,97,110,103,101,65,100,100,114,101,115,115,40,110,97,109,101,44,97,100,100,114,101,115,115,41,123,105,102,40,109,115,103,46,115,101,110,100,101,114,33,61,61,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,111,119,110,101,114,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,103,105,115,116,114,121,91,110,97,109,101,93,46,97,100,100,114,101,115,115,61,97,100,100,114,101,115,115,125,125,114,101,116,117,114,110,32,78,97,109,101,83,101,114,118,105,99,101,59,212,1,91,34,73,72,78,89,50,71,81,72,85,69,52,80,84,76,83,68,67,81,70,75,52,52,77,52,86,53,54,73,89,67,76,80,72,66,67,55,51,78,65,84,82,55,90,77,50,74,55,72,86,77,55,88,65,90,76,84,90,65,84,34,44,34,73,72,78,89,50,71,81,72,50,89,83,53,71,88,70,55,74,87,75,89,55,77,75,71,79,54,77,75,78,90,51,67,70,87,90,81,76,69,53,67,69,53,72,79,73,69,73,70,81,88,75,51,90,74,77,68,50,79,68,34,44,34,73,72,78,89,50,71,81,72,83,65,85,83,53,86,66,71,68,80,51,81,88,68,65,67,87,86,86,77,54,72,84,90,69,70,55,74,87,90,53,75,66,77,72,84,90,54,54,52,84,88,75,70,88,73,78,82,72,83,85,34,44,34,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,34,93";
4664
+ var validators = "237,198,141,3,53,89,84,113,122,116,99,109,98,57,68,110,99,114,50,116,116,57,77,100,50,104,77,84,106,107,102,72,56,50,68,57,116,118,119,76,106,76,55,78,98,117,67,118,72,111,100,51,114,98,115,70,71,117,237,33,99,111,110,115,116,32,98,101,116,119,101,101,110,61,40,109,105,110,44,109,97,120,44,108,101,110,103,116,104,61,49,41,61,62,123,108,101,116,32,97,114,114,61,91,93,59,102,111,114,40,108,101,116,32,105,61,48,59,105,60,108,101,110,103,116,104,59,43,43,105,41,97,114,114,61,91,46,46,46,97,114,114,44,77,97,116,104,46,102,108,111,111,114,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,40,109,97,120,43,49,45,109,105,110,41,43,109,105,110,41,93,59,114,101,116,117,114,110,32,97,114,114,125,44,108,111,116,116,101,114,121,61,40,110,117,109,98,101,114,115,61,55,44,109,97,120,61,49,48,48,44,109,105,110,61,48,44,108,101,110,103,116,104,61,49,48,48,41,61,62,123,108,101,116,32,97,114,114,61,91,93,44,114,97,110,61,98,101,116,119,101,101,110,40,109,105,110,44,109,97,120,44,108,101,110,103,116,104,41,59,114,97,110,61,40,97,114,114,61,62,97,114,114,46,102,105,108,116,101,114,40,40,40,101,108,44,112,111,115,44,97,114,114,41,61,62,97,114,114,46,105,110,100,101,120,79,102,40,101,108,41,61,61,112,111,115,41,41,41,40,114,97,110,41,59,102,111,114,40,108,101,116,32,105,61,48,59,105,60,110,117,109,98,101,114,115,59,43,43,105,41,123,99,111,110,115,116,32,95,114,97,110,61,98,101,116,119,101,101,110,40,109,105,110,44,114,97,110,46,108,101,110,103,116,104,45,49,44,114,97,110,46,108,101,110,103,116,104,41,91,48,93,59,97,114,114,61,91,46,46,46,97,114,114,44,114,97,110,91,95,114,97,110,93,93,125,114,101,116,117,114,110,32,97,114,114,125,59,99,108,97,115,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,99,114,101,97,116,111,114,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,116,104,105,115,46,35,99,114,101,97,116,111,114,61,115,116,97,116,101,63,115,116,97,116,101,46,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,109,115,103,46,115,101,110,100,101,114,125,103,101,116,32,95,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,114,101,97,116,111,114,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,99,111,110,116,114,97,99,116,67,114,101,97,116,111,114,58,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,103,101,116,32,95,105,115,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,40,41,123,114,101,116,117,114,110,32,109,115,103,46,115,101,110,100,101,114,61,61,61,116,104,105,115,46,35,99,114,101,97,116,111,114,125,125,99,108,97,115,115,32,82,111,108,101,115,32,101,120,116,101,110,100,115,32,67,111,110,116,114,97,99,116,67,114,101,97,116,111,114,123,35,114,111,108,101,115,61,123,79,87,78,69,82,58,91,93,44,77,73,78,84,58,91,93,44,66,85,82,78,58,91,93,125,59,99,111,110,115,116,114,117,99,116,111,114,40,115,116,97,116,101,41,123,105,102,40,115,117,112,101,114,40,115,116,97,116,101,41,44,115,116,97,116,101,63,46,114,111,108,101,115,41,123,105,102,40,33,40,115,116,97,116,101,46,114,111,108,101,115,32,105,110,115,116,97,110,99,101,111,102,32,79,98,106,101,99,116,41,41,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,34,101,120,112,101,99,116,101,100,32,114,111,108,101,115,32,116,111,32,98,101,32,97,110,32,111,98,106,101,99,116,34,41,59,116,104,105,115,46,35,114,111,108,101,115,61,123,46,46,46,115,116,97,116,101,46,114,111,108,101,115,44,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,101,108,115,101,32,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,125,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,114,111,108,101,115,58,116,104,105,115,46,114,111,108,101,115,125,125,103,101,116,32,114,111,108,101,115,40,41,123,114,101,116,117,114,110,123,46,46,46,116,104,105,115,46,35,114,111,108,101,115,125,125,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,114,101,116,117,114,110,33,33,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,38,38,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,99,108,117,100,101,115,40,97,100,100,114,101,115,115,41,125,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,103,114,97,110,116,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,112,117,115,104,40,97,100,100,114,101,115,115,41,125,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,36,123,114,111,108,101,125,32,114,111,108,101,32,97,108,114,101,97,100,121,32,114,101,118,111,107,101,100,32,102,111,114,32,36,123,97,100,100,114,101,115,115,125,96,41,59,105,102,40,34,79,87,78,69,82,34,61,61,61,114,111,108,101,38,38,49,61,61,61,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,108,101,110,103,116,104,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,97,116,108,101,97,115,116,32,111,110,101,32,111,119,110,101,114,32,105,115,32,110,101,101,100,101,100,33,34,41,59,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,115,112,108,105,99,101,40,116,104,105,115,46,35,114,111,108,101,115,91,114,111,108,101,93,46,105,110,100,101,120,79,102,40,97,100,100,114,101,115,115,41,41,125,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,103,114,97,110,116,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,97,100,100,114,101,115,115,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,78,111,116,32,97,108,108,111,119,101,100,34,41,59,116,104,105,115,46,35,114,101,118,111,107,101,82,111,108,101,40,97,100,100,114,101,115,115,44,114,111,108,101,41,125,125,99,108,97,115,115,32,86,97,108,105,100,97,116,111,114,115,32,101,120,116,101,110,100,115,32,82,111,108,101,115,123,35,110,97,109,101,61,34,76,101,111,102,99,111,105,110,86,97,108,105,100,97,116,111,114,115,34,59,35,118,97,108,105,100,97,116,111,114,115,61,91,93,59,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,59,35,99,117,114,114,101,110,99,121,59,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,61,66,105,103,73,110,116,40,53,101,52,41,59,35,98,97,108,97,110,99,101,115,61,123,125,59,103,101,116,32,115,116,97,116,101,40,41,123,114,101,116,117,114,110,123,46,46,46,115,117,112,101,114,46,115,116,97,116,101,44,98,97,108,97,110,99,101,115,58,116,104,105,115,46,35,98,97,108,97,110,99,101,115,44,109,105,110,105,109,117,109,66,97,108,97,110,99,101,58,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,44,99,117,114,114,101,110,99,121,58,116,104,105,115,46,35,99,117,114,114,101,110,99,121,44,118,97,108,105,100,97,116,111,114,115,58,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,44,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,58,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,125,125,99,111,110,115,116,114,117,99,116,111,114,40,116,111,107,101,110,65,100,100,114,101,115,115,44,115,116,97,116,101,41,123,115,117,112,101,114,40,115,116,97,116,101,63,46,114,111,108,101,115,41,44,115,116,97,116,101,63,40,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,61,66,105,103,73,110,116,40,115,116,97,116,101,46,109,105,110,105,109,117,109,66,97,108,97,110,99,101,41,44,116,104,105,115,46,35,99,117,114,114,101,110,99,121,61,115,116,97,116,101,46,99,117,114,114,101,110,99,121,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,61,115,116,97,116,101,46,118,97,108,105,100,97,116,111,114,115,44,116,104,105,115,46,35,98,97,108,97,110,99,101,115,61,115,116,97,116,101,46,98,97,108,97,110,99,101,115,44,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,61,115,116,97,116,101,46,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,41,58,40,116,104,105,115,46,35,99,117,114,114,101,110,99,121,61,116,111,107,101,110,65,100,100,114,101,115,115,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,112,117,115,104,40,109,115,103,46,115,101,110,100,101,114,41,44,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,61,109,115,103,46,115,101,110,100,101,114,41,125,103,101,116,32,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,125,103,101,116,32,110,97,109,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,110,97,109,101,125,103,101,116,32,99,117,114,114,101,110,99,121,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,99,117,114,114,101,110,99,121,125,103,101,116,32,118,97,108,105,100,97,116,111,114,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,125,103,101,116,32,116,111,116,97,108,86,97,108,105,100,97,116,111,114,115,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,108,101,110,103,116,104,125,103,101,116,32,109,105,110,105,109,117,109,66,97,108,97,110,99,101,40,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,125,99,104,97,110,103,101,67,117,114,114,101,110,99,121,40,99,117,114,114,101,110,99,121,41,123,105,102,40,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,110,111,116,32,97,110,32,111,119,110,101,114,34,41,59,116,104,105,115,46,35,99,117,114,114,101,110,99,121,61,99,117,114,114,101,110,99,121,125,104,97,115,40,118,97,108,105,100,97,116,111,114,41,123,114,101,116,117,114,110,32,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,105,110,99,108,117,100,101,115,40,118,97,108,105,100,97,116,111,114,41,125,35,105,115,65,108,108,111,119,101,100,40,97,100,100,114,101,115,115,41,123,105,102,40,109,115,103,46,115,101,110,100,101,114,33,61,61,97,100,100,114,101,115,115,38,38,33,116,104,105,115,46,104,97,115,82,111,108,101,40,109,115,103,46,115,101,110,100,101,114,44,34,79,87,78,69,82,34,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,115,101,110,100,101,114,32,105,115,32,110,111,116,32,116,104,101,32,118,97,108,105,100,97,116,111,114,32,111,114,32,111,119,110,101,114,34,41,59,114,101,116,117,114,110,33,48,125,97,115,121,110,99,32,97,100,100,86,97,108,105,100,97,116,111,114,40,118,97,108,105,100,97,116,111,114,41,123,105,102,40,116,104,105,115,46,35,105,115,65,108,108,111,119,101,100,40,118,97,108,105,100,97,116,111,114,41,44,116,104,105,115,46,104,97,115,40,118,97,108,105,100,97,116,111,114,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,97,108,105,100,97,116,111,114,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,34,41,59,99,111,110,115,116,32,98,97,108,97,110,99,101,61,97,119,97,105,116,32,109,115,103,46,115,116,97,116,105,99,67,97,108,108,40,116,104,105,115,46,99,117,114,114,101,110,99,121,44,34,98,97,108,97,110,99,101,79,102,34,44,91,118,97,108,105,100,97,116,111,114,93,41,59,105,102,40,116,104,105,115,46,109,105,110,105,109,117,109,66,97,108,97,110,99,101,62,98,97,108,97,110,99,101,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,98,97,108,97,110,99,101,32,116,111,32,108,111,119,33,32,103,111,116,58,32,36,123,98,97,108,97,110,99,101,125,32,110,101,101,100,58,32,36,123,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,125,96,41,59,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,99,117,114,114,101,110,99,121,44,34,116,114,97,110,115,102,101,114,34,44,91,118,97,108,105,100,97,116,111,114,44,109,115,103,46,99,111,110,116,114,97,99,116,44,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,93,41,44,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,118,97,108,105,100,97,116,111,114,93,61,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,112,117,115,104,40,118,97,108,105,100,97,116,111,114,41,125,97,115,121,110,99,32,114,101,109,111,118,101,86,97,108,105,100,97,116,111,114,40,118,97,108,105,100,97,116,111,114,41,123,105,102,40,116,104,105,115,46,35,105,115,65,108,108,111,119,101,100,40,118,97,108,105,100,97,116,111,114,41,44,33,116,104,105,115,46,104,97,115,40,118,97,108,105,100,97,116,111,114,41,41,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,118,97,108,105,100,97,116,111,114,32,110,111,116,32,102,111,117,110,100,34,41,59,97,119,97,105,116,32,109,115,103,46,99,97,108,108,40,116,104,105,115,46,99,117,114,114,101,110,99,121,44,34,116,114,97,110,115,102,101,114,34,44,91,109,115,103,46,99,111,110,116,114,97,99,116,44,118,97,108,105,100,97,116,111,114,44,116,104,105,115,46,35,109,105,110,105,109,117,109,66,97,108,97,110,99,101,93,41,44,100,101,108,101,116,101,32,116,104,105,115,46,35,98,97,108,97,110,99,101,115,91,118,97,108,105,100,97,116,111,114,93,44,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,115,112,108,105,99,101,40,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,105,110,100,101,120,79,102,40,118,97,108,105,100,97,116,111,114,41,44,49,41,125,115,104,117,102,102,108,101,86,97,108,105,100,97,116,111,114,40,41,123,99,111,110,115,116,32,95,112,101,101,114,115,61,115,116,97,116,101,46,112,101,101,114,115,44,112,101,101,114,115,61,95,112,101,101,114,115,46,102,105,108,116,101,114,40,40,112,101,101,114,61,62,116,104,105,115,46,35,118,97,108,105,100,97,116,111,114,115,46,105,110,99,108,117,100,101,115,40,112,101,101,114,91,48,93,41,41,41,46,109,97,112,40,40,112,101,101,114,61,62,40,112,101,101,114,91,49,93,46,116,111,116,97,108,66,121,116,101,115,61,112,101,101,114,91,49,93,46,98,119,46,117,112,43,112,101,101,114,91,49,93,46,98,119,46,100,111,119,110,44,112,101,101,114,41,41,41,46,115,111,114,116,40,40,40,97,44,98,41,61,62,98,91,49,93,46,116,111,116,97,108,66,121,116,101,115,45,97,91,49,93,46,116,111,116,97,108,66,121,116,101,115,41,41,46,115,112,108,105,99,101,40,48,44,95,112,101,101,114,115,46,108,101,110,103,116,104,62,49,50,56,63,49,50,56,58,95,112,101,101,114,115,46,108,101,110,103,116,104,41,59,108,101,116,32,110,101,120,116,86,97,108,105,100,97,116,111,114,61,112,101,101,114,115,91,108,111,116,116,101,114,121,40,49,44,112,101,101,114,115,46,108,101,110,103,116,104,45,49,41,91,48,93,93,91,48,93,59,105,102,40,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,61,61,61,110,101,120,116,86,97,108,105,100,97,116,111,114,38,38,49,33,61,61,112,101,101,114,115,46,108,101,110,103,116,104,41,123,110,101,120,116,86,97,108,105,100,97,116,111,114,61,112,101,101,114,115,91,108,111,116,116,101,114,121,40,49,44,112,101,101,114,115,46,108,101,110,103,116,104,45,49,41,91,48,93,93,91,48,93,125,116,104,105,115,46,35,99,117,114,114,101,110,116,86,97,108,105,100,97,116,111,114,61,110,101,120,116,86,97,108,105,100,97,116,111,114,125,125,114,101,116,117,114,110,32,86,97,108,105,100,97,116,111,114,115,59,63,91,34,73,72,78,89,50,71,81,72,50,89,83,53,71,88,70,55,74,87,75,89,55,77,75,71,79,54,77,75,78,90,51,67,70,87,90,81,76,69,53,67,69,53,72,79,73,69,73,70,81,88,75,51,90,74,77,68,50,79,68,34,93";
462
4665
  var bytecodes = {
463
4666
  contractFactory: contractFactory,
464
4667
  nativeToken: nativeToken,
@@ -3183,15 +7386,15 @@ class Machine {
3183
7386
  },
3184
7387
  accounts: {},
3185
7388
  info: {
3186
- nativeCalls: BigNumber.from(0),
3187
- nativeMints: BigNumber.from(0),
3188
- nativeBurns: BigNumber.from(0),
3189
- nativeTransfers: BigNumber.from(0),
3190
- totalBurnAmount: BigNumber.from(0),
3191
- totalMintAmount: BigNumber.from(0),
3192
- totalTransferAmount: BigNumber.from(0),
3193
- totalTransactions: BigNumber.from(0),
3194
- totalBlocks: BigNumber.from(0)
7389
+ nativeCalls: BigInt(0),
7390
+ nativeMints: BigInt(0),
7391
+ nativeBurns: BigInt(0),
7392
+ nativeTransfers: BigInt(0),
7393
+ totalBurnAmount: BigInt(0),
7394
+ totalMintAmount: BigInt(0),
7395
+ totalTransferAmount: BigInt(0),
7396
+ totalTransactions: BigInt(0),
7397
+ totalBlocks: BigInt(0)
3195
7398
  }
3196
7399
  };
3197
7400
  this.wantList = [];
@@ -3263,6 +7466,12 @@ class Machine {
3263
7466
  this.wantList.push(data.input);
3264
7467
  }
3265
7468
  }
7469
+ else if (data.question === 'peers') {
7470
+ this.worker.postMessage({ id: data.id, input: peernet.peers });
7471
+ }
7472
+ else {
7473
+ this.worker.postMessage({ id: data.id, input: data.input });
7474
+ }
3266
7475
  }
3267
7476
  }
3268
7477
  }
@@ -3375,7 +7584,7 @@ class Machine {
3375
7584
  this.states.accounts = JSON.parse(new TextDecoder().decode(await stateStore.get('accounts')));
3376
7585
  const info = JSON.parse(new TextDecoder().decode(await stateStore.get('info')));
3377
7586
  for (const key in info) {
3378
- info[key] = BigNumber.from(info[key]);
7587
+ info[key] = BigInt(info[key]);
3379
7588
  }
3380
7589
  this.states.info = info;
3381
7590
  }
@@ -3384,15 +7593,15 @@ class Machine {
3384
7593
  this.states.accounts = {};
3385
7594
  // todo try fetching info from fully synced peer
3386
7595
  this.states.info = {
3387
- nativeCalls: BigNumber.from(0),
3388
- nativeMints: BigNumber.from(0),
3389
- nativeBurns: BigNumber.from(0),
3390
- nativeTransfers: BigNumber.from(0),
3391
- totalBurnAmount: BigNumber.from(0),
3392
- totalMintAmount: BigNumber.from(0),
3393
- totalTransferAmount: BigNumber.from(0),
3394
- totalTransactions: BigNumber.from(0),
3395
- totalBlocks: BigNumber.from(0)
7596
+ nativeCalls: BigInt(0),
7597
+ nativeMints: BigInt(0),
7598
+ nativeBurns: BigInt(0),
7599
+ nativeTransfers: BigInt(0),
7600
+ totalBurnAmount: BigInt(0),
7601
+ totalMintAmount: BigInt(0),
7602
+ totalTransferAmount: BigInt(0),
7603
+ totalTransactions: BigInt(0),
7604
+ totalBlocks: BigInt(0)
3396
7605
  };
3397
7606
  }
3398
7607
  }
@@ -4252,7 +8461,8 @@ class VersionControl extends State {
4252
8461
  constructor(config) {
4253
8462
  super(config);
4254
8463
  }
4255
- #currentVersion = '1.2.1';
8464
+ #currentVersion = '0.1.0';
8465
+ #reachedOneZeroZero = false;
4256
8466
  async #setCurrentVersion() {
4257
8467
  this.version = this.#currentVersion;
4258
8468
  await globalThis.chainStore.put('version', this.version);
@@ -4265,13 +8475,21 @@ class VersionControl extends State {
4265
8475
  console.log(this.version, this.#currentVersion);
4266
8476
  /**
4267
8477
  * protocol version control!
4268
- * Note that before v0.2.0 everything gets deleted because of big changes,
4269
- * this is not what we want in the future.
8478
+ * Note that before v1.2.2 everything gets deleted because of big changes,
8479
+ * This will be removed in the future by setting the #reachedOneZeroZero flag to true
8480
+ *
8481
+ * This is because we are still in development and the protocol is still changing a lot.
8482
+ *
8483
+ * # this is not what we want in the future.
4270
8484
  * In the future we want newer nodes to handle the new changes and still confirm old version transactions
4271
8485
  * Unless there is a security issue!
4272
- * But for now the protocoll isn't finished enough and still has to much breaking changes.
4273
8486
  */
4274
- if (semver$1.compare('1.2.0', this.version) === 1) {
8487
+ // check if we are above v1.0.0 and if we still not reached v1.0.0
8488
+ // if so, clear all data
8489
+ // once v1.0.0 is reached this will not run and we can remove this check once every node is above v1.0.0
8490
+ warn('the reachedZeroZero flag is set to false, this will clear all data on every start if above v1.0.0');
8491
+ if (semver$1.compare(this.version, '1.0.0') === 1 && !this.#reachedOneZeroZero) {
8492
+ warn('clearing all data because we are below v1.0.0');
4275
8493
  await this.clearAll();
4276
8494
  }
4277
8495
  if (semver$1.compare(this.#currentVersion, this.version) === 1) {
@@ -4287,7 +8505,6 @@ class VersionControl extends State {
4287
8505
  }
4288
8506
  }
4289
8507
 
4290
- globalThis.BigNumber = BigNumber;
4291
8508
  const debug = globalThis.createDebugger('leofcoin/chain');
4292
8509
  // check if browser or local
4293
8510
  class Chain extends VersionControl {
@@ -4388,7 +8605,7 @@ class Chain extends VersionControl {
4388
8605
  const initialized = await globalThis.contractStore.has(addresses.contractFactory);
4389
8606
  if (!initialized)
4390
8607
  await this.#setup();
4391
- this.utils = { BigNumber, formatUnits, parseUnits };
8608
+ this.utils = { formatUnits, parseUnits };
4392
8609
  // this.#state = new State()
4393
8610
  // todo some functions rely on state
4394
8611
  await super.init();
@@ -4645,7 +8862,7 @@ class Chain extends VersionControl {
4645
8862
  let block = {
4646
8863
  transactions: [],
4647
8864
  validators: [],
4648
- fees: BigNumber.from(0),
8865
+ fees: BigInt(0),
4649
8866
  timestamp,
4650
8867
  previousHash: '',
4651
8868
  reward: parseUnits('150'),