[wip] factoring vdk out into several packages
This commit is contained in:
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
export declare const rlp: {
|
||||
decoded: import("./jex_include/local-vdk-0.1.0/dist/rlp.js").decoded_data;
|
||||
encoded: Uint8Array;
|
||||
}[];
|
||||
export declare const base58: {
|
||||
encoded: string;
|
||||
decoded: Uint8Array;
|
||||
}[];
|
||||
export declare const base64: {
|
||||
decoded: Uint8Array;
|
||||
encoded: string;
|
||||
}[];
|
||||
Vendored
+3657
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
declare function encode(binary: Uint8Array): string;
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
declare function decode(base58: string): Uint8Array;
|
||||
@@ -0,0 +1,308 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
export { encode, decode };
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
function encode(binary) {
|
||||
let num_leading_zeros = nlz(binary);
|
||||
let rest = binary.slice(num_leading_zeros);
|
||||
let ones = encode_zeros(num_leading_zeros);
|
||||
let rest_b58 = encode_rest(rest);
|
||||
let result = ones + rest_b58;
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* count the number of leading zeros in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function nlz(bytes) {
|
||||
let n = 0;
|
||||
for (let this_byte of bytes) {
|
||||
if (0 === this_byte) {
|
||||
n++;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Generate a bunch of '1's for however many leading zeros there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_zeros(how_many) {
|
||||
let ones = '';
|
||||
for (let i = 1; i <= how_many; i++) {
|
||||
ones += '1';
|
||||
}
|
||||
return ones;
|
||||
}
|
||||
/**
|
||||
* Encode a Uint8Array that has no leading zeros
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_rest(bytes) {
|
||||
let bytes_bignum = bytes_to_bigint(bytes);
|
||||
let result = bignum_to_base58(bytes_bignum);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Convert a bytestring to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bytes_to_bigint(bytes) {
|
||||
let acc_bigint = 0n;
|
||||
for (let this_byte of bytes) {
|
||||
acc_bigint <<= 8n;
|
||||
acc_bigint += BigInt(this_byte);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
/**
|
||||
* Convert a BigInt to Base58
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bignum_to_base58(q) {
|
||||
let s = '';
|
||||
while (q !== 0n) {
|
||||
let this_n = q % 58n;
|
||||
q /= 58n;
|
||||
let this_b58_char = bigint_to_char(this_n);
|
||||
s = this_b58_char + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
function decode(base58) {
|
||||
let num_leading_ones = nlo(base58);
|
||||
let rest = base58.slice(num_leading_ones);
|
||||
let zeros = decode_ones(num_leading_ones);
|
||||
let rest_arr = decode_rest(rest);
|
||||
let pre_result = zeros.concat(rest_arr);
|
||||
return new Uint8Array(pre_result);
|
||||
}
|
||||
/**
|
||||
* count the number of leading 1 characters in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function nlo(base58) {
|
||||
let n = 0;
|
||||
for (let this_char of base58) {
|
||||
if ('1' === this_char) {
|
||||
n++;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Generate a bunch of '0's for however many leading ones there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_ones(how_many) {
|
||||
let zeros = [];
|
||||
for (let i = 1; i <= how_many; i++) {
|
||||
zeros.push(0);
|
||||
}
|
||||
return zeros;
|
||||
}
|
||||
/**
|
||||
* Decode a string that has no leading 1s
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_rest(base58) {
|
||||
let result_bignum = base58_to_bigint(base58);
|
||||
let result = bigint_to_base256(result_bignum);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Convert a base58 string to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function base58_to_bigint(base58) {
|
||||
let acc_bigint = 0n;
|
||||
for (let this_char of base58) {
|
||||
acc_bigint *= 58n;
|
||||
acc_bigint += char_to_bigint(this_char);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
/**
|
||||
* convert a bignum into a byte array
|
||||
*
|
||||
* @end
|
||||
*/
|
||||
function bigint_to_base256(q) {
|
||||
let arr_reverse = [];
|
||||
while (q !== 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return arr_reverse;
|
||||
}
|
||||
//=============================================================================
|
||||
// TRANSLATION TABLES
|
||||
//=============================================================================
|
||||
/**
|
||||
* Base58 integer -> character conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bigint_to_char(n) {
|
||||
switch (n) {
|
||||
case 0n: return '1';
|
||||
case 1n: return '2';
|
||||
case 2n: return '3';
|
||||
case 3n: return '4';
|
||||
case 4n: return '5';
|
||||
case 5n: return '6';
|
||||
case 6n: return '7';
|
||||
case 7n: return '8';
|
||||
case 8n: return '9';
|
||||
case 9n: return 'A';
|
||||
case 10n: return 'B';
|
||||
case 11n: return 'C';
|
||||
case 12n: return 'D';
|
||||
case 13n: return 'E';
|
||||
case 14n: return 'F';
|
||||
case 15n: return 'G';
|
||||
case 16n: return 'H';
|
||||
case 17n: return 'J';
|
||||
case 18n: return 'K';
|
||||
case 19n: return 'L';
|
||||
case 20n: return 'M';
|
||||
case 21n: return 'N';
|
||||
case 22n: return 'P';
|
||||
case 23n: return 'Q';
|
||||
case 24n: return 'R';
|
||||
case 25n: return 'S';
|
||||
case 26n: return 'T';
|
||||
case 27n: return 'U';
|
||||
case 28n: return 'V';
|
||||
case 29n: return 'W';
|
||||
case 30n: return 'X';
|
||||
case 31n: return 'Y';
|
||||
case 32n: return 'Z';
|
||||
case 33n: return 'a';
|
||||
case 34n: return 'b';
|
||||
case 35n: return 'c';
|
||||
case 36n: return 'd';
|
||||
case 37n: return 'e';
|
||||
case 38n: return 'f';
|
||||
case 39n: return 'g';
|
||||
case 40n: return 'h';
|
||||
case 41n: return 'i';
|
||||
case 42n: return 'j';
|
||||
case 43n: return 'k';
|
||||
case 44n: return 'm';
|
||||
case 45n: return 'n';
|
||||
case 46n: return 'o';
|
||||
case 47n: return 'p';
|
||||
case 48n: return 'q';
|
||||
case 49n: return 'r';
|
||||
case 50n: return 's';
|
||||
case 51n: return 't';
|
||||
case 52n: return 'u';
|
||||
case 53n: return 'v';
|
||||
case 54n: return 'w';
|
||||
case 55n: return 'x';
|
||||
case 56n: return 'y';
|
||||
case 57n: return 'z';
|
||||
default:
|
||||
throw new Error('invalid base58 bigint: ' + n);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Base58 character -> integer conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function char_to_bigint(s) {
|
||||
switch (s) {
|
||||
case '1': return 0n;
|
||||
case '2': return 1n;
|
||||
case '3': return 2n;
|
||||
case '4': return 3n;
|
||||
case '5': return 4n;
|
||||
case '6': return 5n;
|
||||
case '7': return 6n;
|
||||
case '8': return 7n;
|
||||
case '9': return 8n;
|
||||
case 'A': return 9n;
|
||||
case 'B': return 10n;
|
||||
case 'C': return 11n;
|
||||
case 'D': return 12n;
|
||||
case 'E': return 13n;
|
||||
case 'F': return 14n;
|
||||
case 'G': return 15n;
|
||||
case 'H': return 16n;
|
||||
case 'J': return 17n;
|
||||
case 'K': return 18n;
|
||||
case 'L': return 19n;
|
||||
case 'M': return 20n;
|
||||
case 'N': return 21n;
|
||||
case 'P': return 22n;
|
||||
case 'Q': return 23n;
|
||||
case 'R': return 24n;
|
||||
case 'S': return 25n;
|
||||
case 'T': return 26n;
|
||||
case 'U': return 27n;
|
||||
case 'V': return 28n;
|
||||
case 'W': return 29n;
|
||||
case 'X': return 30n;
|
||||
case 'Y': return 31n;
|
||||
case 'Z': return 32n;
|
||||
case 'a': return 33n;
|
||||
case 'b': return 34n;
|
||||
case 'c': return 35n;
|
||||
case 'd': return 36n;
|
||||
case 'e': return 37n;
|
||||
case 'f': return 38n;
|
||||
case 'g': return 39n;
|
||||
case 'h': return 40n;
|
||||
case 'i': return 41n;
|
||||
case 'j': return 42n;
|
||||
case 'k': return 43n;
|
||||
case 'm': return 44n;
|
||||
case 'n': return 45n;
|
||||
case 'o': return 46n;
|
||||
case 'p': return 47n;
|
||||
case 'q': return 48n;
|
||||
case 'r': return 49n;
|
||||
case 's': return 50n;
|
||||
case 't': return 51n;
|
||||
case 'u': return 52n;
|
||||
case 'v': return 53n;
|
||||
case 'w': return 54n;
|
||||
case 'x': return 55n;
|
||||
case 'y': return 56n;
|
||||
case 'z': return 57n;
|
||||
default:
|
||||
throw new Error('invalid base58 char: ' + s);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=b58.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
declare function encode(bytes: Uint8Array): string;
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
declare function decode(base64_str: string): Uint8Array;
|
||||
@@ -0,0 +1,507 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
function encode(bytes) {
|
||||
// slice the array
|
||||
// length of head is a multiple of 3
|
||||
// treat the tail as a special case
|
||||
let { head, tail, tail_len } = slice3k(bytes);
|
||||
let head_str = encode_head(head);
|
||||
let tail_str = encode_tail(tail, tail_len);
|
||||
return head_str + tail_str;
|
||||
}
|
||||
/**
|
||||
* Take a Uint8Array, take the first 3k (k >= 0) bytes, put them in head, and
|
||||
* the remaining 0,1, or 2 bytes, put them in tail
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function slice3k(bytes) {
|
||||
let len = bytes.length;
|
||||
// too lazy to look up how to do integer division in js so this will do
|
||||
let tail_len = len % 3;
|
||||
let head_len = len - tail_len;
|
||||
// for slice:
|
||||
// first argument is the 0-index of the start
|
||||
// second - first is the length of the slice
|
||||
let head = bytes.slice(0, head_len);
|
||||
// empty second argument means go to the end
|
||||
let tail = bytes.slice(head_len);
|
||||
return { head: head,
|
||||
tail: tail,
|
||||
tail_len: tail_len };
|
||||
}
|
||||
/**
|
||||
* Encode a Uint8Array whose length is known to be a multiple of 3
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_head(head_bytes) {
|
||||
// can assume length of bytes is a multiple of 3
|
||||
// start index at 0
|
||||
// increment by 3
|
||||
let head_bytes_len = head_bytes.length;
|
||||
let max_idx0 = head_bytes_len - 1;
|
||||
let head_str_acc = '';
|
||||
for (let this_3slice_start_idx0 = 0; this_3slice_start_idx0 <= max_idx0; this_3slice_start_idx0 += 3) {
|
||||
let this_3slice_bytes = head_bytes.slice(this_3slice_start_idx0, this_3slice_start_idx0 + 3);
|
||||
let this_3slice_str = encode3(this_3slice_bytes);
|
||||
head_str_acc += this_3slice_str;
|
||||
}
|
||||
return head_str_acc;
|
||||
}
|
||||
/**
|
||||
* Encode a 3 bytes into base64 notation
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode3(bytes) {
|
||||
let b0 = bytes[0];
|
||||
let b1 = bytes[1];
|
||||
let b2 = bytes[2];
|
||||
// ABCDEFGH 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// ABCDEF GH1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
let n0 = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// b2 = abcdefgh
|
||||
// b2 >> 6 = ______ab
|
||||
// n2 = __5678ab
|
||||
let n2 = ((b1 % 16) << 2) + (b2 >> 6);
|
||||
// b2 = abcdefgh
|
||||
// 64 = _1______
|
||||
// n3 = __cdefgh
|
||||
let n3 = b2 % 64;
|
||||
// convert to chars
|
||||
let s0 = int2char(n0);
|
||||
let s1 = int2char(n1);
|
||||
let s2 = int2char(n2);
|
||||
let s3 = int2char(n3);
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + s3;
|
||||
}
|
||||
/**
|
||||
* Encode the final 0, 1, or 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_tail(tail_bytes, tail_len) {
|
||||
switch (tail_len) {
|
||||
case 0: return '';
|
||||
case 1: return encode1(tail_bytes);
|
||||
case 2: return encode2(tail_bytes);
|
||||
default:
|
||||
throw new Error('encode_tail with tail_len = ' + tail_len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a single byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode1(bytes) {
|
||||
let b0 = bytes[0];
|
||||
// n0 = __ABCDEF
|
||||
// b0 = ABCDEFGH
|
||||
// b0 >> 2 = __ABCDEF
|
||||
let n0 = b0 >> 2;
|
||||
// n1 = __GH____
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
let n1 = (b0 % 4) << 4;
|
||||
return int2char(n0) + int2char(n1) + '==';
|
||||
}
|
||||
/**
|
||||
* Encode two bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode2(bytes) {
|
||||
let b0 = bytes[0];
|
||||
let b1 = bytes[1];
|
||||
// ABCDEFGH 12345678
|
||||
// b0 b1
|
||||
// ABCDEF GH1234 5678__
|
||||
// n0 n1 n2
|
||||
let n0 = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// n2 = __5678__
|
||||
let n2 = (b1 % 16) << 2;
|
||||
// convert to chars
|
||||
let s0 = int2char(n0);
|
||||
let s1 = int2char(n1);
|
||||
let s2 = int2char(n2);
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + '=';
|
||||
}
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
function decode(base64_str) {
|
||||
// length of the string is guaranteed to be a multiple of 4
|
||||
// if the string is empty, return the empty array
|
||||
let len = base64_str.length;
|
||||
// this branching contains the implicit assertion that the length is a
|
||||
// multiple of 4. If this is not true, the bottom branch is triggered.
|
||||
// general case goes first because speeeeeed
|
||||
if ((4 < len)
|
||||
&& (0 === (len % 4))) {
|
||||
// split the head and tail
|
||||
let tail_start_idx0 = len - 4;
|
||||
let head_s = base64_str.slice(0, tail_start_idx0);
|
||||
let tail_s = base64_str.slice(tail_start_idx0);
|
||||
// Using arrays because Uint8Arrays don't have a concat operation
|
||||
let head_arr = decode_head(head_s);
|
||||
let tail_arr = decode_tail(tail_s);
|
||||
// silly to put these in variables but this is exactly the type of
|
||||
// situation where JS type insanity shows up
|
||||
//
|
||||
// see: i forgot
|
||||
// > [1,2,3] + [4,5,6]
|
||||
// '1,2,34,5,6'
|
||||
//
|
||||
// Originally, I used + like some sort of moron who codes in a sane
|
||||
// language
|
||||
//
|
||||
// seriously what is this language
|
||||
//
|
||||
// this is some clown behavior
|
||||
let total_arr = head_arr.concat(tail_arr);
|
||||
return new Uint8Array(total_arr);
|
||||
}
|
||||
// special case if the length is exactly 4
|
||||
else if (4 === len) {
|
||||
// it's just a tail
|
||||
return new Uint8Array(decode_tail(base64_str));
|
||||
}
|
||||
// empty string
|
||||
else if (0 === len) {
|
||||
return new Uint8Array([]);
|
||||
}
|
||||
else {
|
||||
throw new Error('base64 decode: invalid string length: ' + len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a string known to not have any padding
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_head(s) {
|
||||
// go 4 characters at a time
|
||||
let max_i0 = s.length - 1;
|
||||
let decoded_acc = [];
|
||||
for (let i0 = 0; i0 <= max_i0; i0 += 4) {
|
||||
let this_slice_s = s.slice(i0, i0 + 4);
|
||||
let this_slice_arr = decode3(this_slice_s);
|
||||
// update accumulator
|
||||
decoded_acc = decoded_acc.concat(this_slice_arr);
|
||||
}
|
||||
return decoded_acc;
|
||||
}
|
||||
/**
|
||||
* Decode 4 characters that correspond to either 3 bytes, 2, bytes, or 1 byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_tail(s) {
|
||||
// all that matters right now is the last 2 chars
|
||||
// s0, s1, s2, s3
|
||||
// 0 based indexing is so annoying
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
// braaaaaaaaaaaaaaaaaench
|
||||
// two equals signs means 1 byte
|
||||
if (('=' === s3) && ('=' === s2)) {
|
||||
return decode1(s);
|
||||
}
|
||||
// one equals sign means 2 bytes
|
||||
else if (('=' === s3)) {
|
||||
return decode2(s);
|
||||
}
|
||||
// 0 equals signs means 3 bytes
|
||||
else {
|
||||
return decode3(s);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 3 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode3(s) {
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
let n2 = char2int(s2);
|
||||
let n3 = char2int(s3);
|
||||
// abcdef gh1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
// abcdefgh 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678ab
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
// n2 = __5678ab
|
||||
// 4 = _____1__
|
||||
// n2 % 4 = ______ab
|
||||
// (n2 % 4) << 6 = ab______
|
||||
// n3 = __cdefgh
|
||||
let b2 = ((n2 % 4) << 6) + n3;
|
||||
return [b0, b1, b2];
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode2(s) {
|
||||
// xyz=
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
let s2 = s[2];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
let n2 = char2int(s2);
|
||||
// abcdef gh1234 5678__
|
||||
// n0 n1 n2
|
||||
// abcdefgh 12345678
|
||||
// b0 b1
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678__
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
return [b0, b1];
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode1(s) {
|
||||
// xy==
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
// abcdef gh____
|
||||
// n0 n1
|
||||
// abcdefgh
|
||||
// b0
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh____
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
return [b0];
|
||||
}
|
||||
// FIXME: these tables would *probably* be faster if they were made into objects
|
||||
/**
|
||||
* Conversion table for base64 encode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function int2char(n) {
|
||||
switch (n) {
|
||||
case 0: return 'A';
|
||||
case 1: return 'B';
|
||||
case 2: return 'C';
|
||||
case 3: return 'D';
|
||||
case 4: return 'E';
|
||||
case 5: return 'F';
|
||||
case 6: return 'G';
|
||||
case 7: return 'H';
|
||||
case 8: return 'I';
|
||||
case 9: return 'J';
|
||||
case 10: return 'K';
|
||||
case 11: return 'L';
|
||||
case 12: return 'M';
|
||||
case 13: return 'N';
|
||||
case 14: return 'O';
|
||||
case 15: return 'P';
|
||||
case 16: return 'Q';
|
||||
case 17: return 'R';
|
||||
case 18: return 'S';
|
||||
case 19: return 'T';
|
||||
case 20: return 'U';
|
||||
case 21: return 'V';
|
||||
case 22: return 'W';
|
||||
case 23: return 'X';
|
||||
case 24: return 'Y';
|
||||
case 25: return 'Z';
|
||||
case 26: return 'a';
|
||||
case 27: return 'b';
|
||||
case 28: return 'c';
|
||||
case 29: return 'd';
|
||||
case 30: return 'e';
|
||||
case 31: return 'f';
|
||||
case 32: return 'g';
|
||||
case 33: return 'h';
|
||||
case 34: return 'i';
|
||||
case 35: return 'j';
|
||||
case 36: return 'k';
|
||||
case 37: return 'l';
|
||||
case 38: return 'm';
|
||||
case 39: return 'n';
|
||||
case 40: return 'o';
|
||||
case 41: return 'p';
|
||||
case 42: return 'q';
|
||||
case 43: return 'r';
|
||||
case 44: return 's';
|
||||
case 45: return 't';
|
||||
case 46: return 'u';
|
||||
case 47: return 'v';
|
||||
case 48: return 'w';
|
||||
case 49: return 'x';
|
||||
case 50: return 'y';
|
||||
case 51: return 'z';
|
||||
case 52: return '0';
|
||||
case 53: return '1';
|
||||
case 54: return '2';
|
||||
case 55: return '3';
|
||||
case 56: return '4';
|
||||
case 57: return '5';
|
||||
case 58: return '6';
|
||||
case 59: return '7';
|
||||
case 60: return '8';
|
||||
case 61: return '9';
|
||||
case 62: return '+';
|
||||
case 63: return '/';
|
||||
default: throw new Error("invalid base64 encode byte: " + n);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Conversion table for base64 decode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function char2int(s) {
|
||||
switch (s) {
|
||||
case 'A': return 0;
|
||||
case 'B': return 1;
|
||||
case 'C': return 2;
|
||||
case 'D': return 3;
|
||||
case 'E': return 4;
|
||||
case 'F': return 5;
|
||||
case 'G': return 6;
|
||||
case 'H': return 7;
|
||||
case 'I': return 8;
|
||||
case 'J': return 9;
|
||||
case 'K': return 10;
|
||||
case 'L': return 11;
|
||||
case 'M': return 12;
|
||||
case 'N': return 13;
|
||||
case 'O': return 14;
|
||||
case 'P': return 15;
|
||||
case 'Q': return 16;
|
||||
case 'R': return 17;
|
||||
case 'S': return 18;
|
||||
case 'T': return 19;
|
||||
case 'U': return 20;
|
||||
case 'V': return 21;
|
||||
case 'W': return 22;
|
||||
case 'X': return 23;
|
||||
case 'Y': return 24;
|
||||
case 'Z': return 25;
|
||||
case 'a': return 26;
|
||||
case 'b': return 27;
|
||||
case 'c': return 28;
|
||||
case 'd': return 29;
|
||||
case 'e': return 30;
|
||||
case 'f': return 31;
|
||||
case 'g': return 32;
|
||||
case 'h': return 33;
|
||||
case 'i': return 34;
|
||||
case 'j': return 35;
|
||||
case 'k': return 36;
|
||||
case 'l': return 37;
|
||||
case 'm': return 38;
|
||||
case 'n': return 39;
|
||||
case 'o': return 40;
|
||||
case 'p': return 41;
|
||||
case 'q': return 42;
|
||||
case 'r': return 43;
|
||||
case 's': return 44;
|
||||
case 't': return 45;
|
||||
case 'u': return 46;
|
||||
case 'v': return 47;
|
||||
case 'w': return 48;
|
||||
case 'x': return 49;
|
||||
case 'y': return 50;
|
||||
case 'z': return 51;
|
||||
case '0': return 52;
|
||||
case '1': return 53;
|
||||
case '2': return 54;
|
||||
case '3': return 55;
|
||||
case '4': return 56;
|
||||
case '5': return 57;
|
||||
case '6': return 58;
|
||||
case '7': return 59;
|
||||
case '8': return 60;
|
||||
case '9': return 61;
|
||||
case '+': return 62;
|
||||
case '/': return 63;
|
||||
default: throw new Error("invalid base64 character: " + s);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=b64.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { bytes_to_bigint, bigint_to_bytes, concat, strong_rand_bytes };
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
declare function concat(arr1: Uint8Array, arr2: Uint8Array): Uint8Array;
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
declare function strong_rand_bytes(how_many: number): Uint8Array;
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
declare function bytes_to_bigint(bytes: Uint8Array): bigint;
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
declare function bigint_to_bytes(q: bigint): Uint8Array;
|
||||
@@ -0,0 +1,266 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { bytes_to_bigint, bigint_to_bytes, concat, strong_rand_bytes };
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
function concat(arr1, arr2) {
|
||||
let len1 = arr1.length;
|
||||
let len2 = arr2.length;
|
||||
let arr1_idx0_offset = 0;
|
||||
let arr2_idx0_offset = len1;
|
||||
let result_len = len1 + len2;
|
||||
let result = new Uint8Array(result_len);
|
||||
// copy first array into result
|
||||
for (let arr1_idx0 = 0; arr1_idx0 < len1; arr1_idx0++) {
|
||||
// no offset here
|
||||
let result_idx0 = arr1_idx0 + arr1_idx0_offset;
|
||||
result[result_idx0] = arr1[arr1_idx0];
|
||||
}
|
||||
// copy second array into result
|
||||
for (let arr2_idx0 = 0; arr2_idx0 < len2; arr2_idx0++) {
|
||||
// offset by the length of the first array
|
||||
let result_idx0 = arr2_idx0 + arr2_idx0_offset;
|
||||
result[result_idx0] = arr2[arr2_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
function strong_rand_bytes(how_many) {
|
||||
let arr = new Uint8Array(how_many);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
function bytes_to_bigint(bytes) {
|
||||
let n = 0n;
|
||||
for (let b of bytes) {
|
||||
// move first, then add
|
||||
// otherwise it ends on a move
|
||||
// imperative languages are for losers
|
||||
n <<= 8n;
|
||||
n += BigInt(b);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
function bigint_to_bytes(q) {
|
||||
if (q < 0n) {
|
||||
throw new Error('q < 0n: ' + q);
|
||||
}
|
||||
let arr_reverse = [];
|
||||
while (q > 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return new Uint8Array(arr_reverse);
|
||||
}
|
||||
/**
|
||||
* Get an uninitialized bitstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bits_null(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 0.
|
||||
*/
|
||||
function bits_zeros(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
for (let i0 = 0; i0 < byte_length; i0++) {
|
||||
result[i0] = 0;
|
||||
}
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 1.
|
||||
*/
|
||||
function bits_ones(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
// fill everything except the last byte with 255s
|
||||
for (let i0 = 0; i0 < (byte_length - 1); i0++) {
|
||||
result[i0] = 255;
|
||||
}
|
||||
// alright so the last byte
|
||||
// ok so the number of leading 0s is
|
||||
// 8 - (bit_length % 8)
|
||||
let num_trailing_zero_bits = 8 - (bit_length % 8);
|
||||
// the trailing byte is 255 << that
|
||||
// e.g. 3 trailing 0s
|
||||
// 1111_1111 -> 1111_1000
|
||||
let last_byte = 255 << num_trailing_zero_bits;
|
||||
let last_byte_idx0 = byte_length - 1;
|
||||
result[last_byte_idx0] = last_byte;
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get the bit at a given 0-index
|
||||
*/
|
||||
function bits_i0th(bit_idx0, bits) {
|
||||
// first task is figuring out what byte we're at
|
||||
// for instance if we want bit 27
|
||||
// 3*8 = 24 =< 27 < 4*8
|
||||
// so it's Math.floor(bit_idx0 / 8)
|
||||
let byte_idx0 = Math.floor(bit_idx0 / 8);
|
||||
// let's fetch the byte and work with that
|
||||
let the_byte = bits.bytes[byte_idx0];
|
||||
// ok so let's go with 27 again
|
||||
// 27 = 3 mod 8
|
||||
// so we bitshift right by (8 - 3)
|
||||
// and then take the remainder dividing by 2
|
||||
// --B-_---- -> ----_---B -> 0000_000B
|
||||
let bsr = 8 - (bit_idx0 % 8);
|
||||
return (the_byte >> bsr) % 2;
|
||||
}
|
||||
/**
|
||||
* Concatenate two bitstrings
|
||||
*/
|
||||
function bits_concat(bits1, bits2) {
|
||||
let result_bit_length = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 = bits1.bytes;
|
||||
let bytes2 = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits = bits_null(result_bit_length);
|
||||
let result_bytes = result_bits.bytes;
|
||||
// go along each byte in result, and compute the byte boundary
|
||||
for (let i = 0; i < result_bytes.length; i++) {
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// this is the bit index of the leftmost bit in this byte
|
||||
let start_bit_bi0 = i * 8;
|
||||
let next_start_bit_bi0 = start_bit_bi0 + 8;
|
||||
// does the bit at the beginning of this byte correspond to the first array?
|
||||
// strict comparison:
|
||||
// suppose i = 0,
|
||||
// suppose bit_length1 is 0
|
||||
// then this says no, go to second array
|
||||
// suppose bl1 = 1,
|
||||
// this says start at first array
|
||||
let start_bit_is_of_first_array = start_bit_bi0 < bits1.bit_length;
|
||||
// weak comparison:
|
||||
// suppose bit_length1 = 8
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// ^
|
||||
// start_bit_bi0 ^ next_start_bit_bi0
|
||||
let stop_bit_is_of_first_array = next_start_bit_bi0 <= bits1.bit_length;
|
||||
// is this a bytes1 byte
|
||||
let is_bytes1_byte = start_bit_is_of_first_array && stop_bit_is_of_first_array;
|
||||
let is_boundary_byte = start_bit_is_of_first_array && !stop_bit_is_of_first_array;
|
||||
// need to work out the ping_pong bs up here because js is dumb and I
|
||||
// can't put lets between elseifs
|
||||
// alright, now we're in the case of only copying from the second array
|
||||
// we have two cases:
|
||||
// ping-pong:
|
||||
// ABCD_EFGH 1234_5678
|
||||
// - ---- ---
|
||||
// copying these bits
|
||||
// ping:
|
||||
// ABCD_EFGH <end>
|
||||
// - ---- 000
|
||||
//
|
||||
// how to distinguish between these two??
|
||||
//
|
||||
// we're in the ping case when the start_bit_bi0 corresponds to the
|
||||
// final byte of the second array
|
||||
//
|
||||
// ok
|
||||
//
|
||||
// we need to compute the bit address in the second array that
|
||||
// corresponds to the bit address at the beginning of this byte in the
|
||||
// result array
|
||||
let bits2_addr_bi0 = start_bit_bi0 - bits1.bit_length;
|
||||
// I think the variable is
|
||||
// bits_left_to_copy = bits2.bit_length - bit_addr2_bi0
|
||||
// no + 1 because the current bit is uncopied,
|
||||
// so if bit_addr2_bi0 = 7 and bits2.bit_length is 8, it means we
|
||||
// have the last bit to copy
|
||||
// cases:
|
||||
// bits_left_to_copy <= 0 ->
|
||||
// this would mean we have more bits to copy, but are out of
|
||||
// source bits. should be impossible if bits_null is correct
|
||||
// bits_left_to_copy <= 8 ->
|
||||
// this would mean we are going to fill this last byte in the
|
||||
// result array with the correct bits from array2, but how we
|
||||
// do this will depend on how those are arranged in bytes2
|
||||
// (whether we grab one or two bytes)
|
||||
//
|
||||
// this is the tricky case
|
||||
//
|
||||
// I think what matters here is the byte address in the second array
|
||||
// if we're on the last byte
|
||||
// 8 < bits_left_to_copy ->
|
||||
// this means we can safely grab two bytes from bytes2, and do
|
||||
// our bitshifting to make it correct
|
||||
//
|
||||
// FIXME
|
||||
let bits_left_to_copy = bits2.bit_length - bits2_addr_bi0;
|
||||
// no the variable that matters is which byte we're on in the result
|
||||
let this_bytes2_addr_i0 = Math.floor(bits2_addr_bi0 / 8);
|
||||
let next_bytes2_addr_i0 = this_bytes2_addr_i0 + 1;
|
||||
let bitshift_amt = bits1.bit_length % 8;
|
||||
let ping = next_bytes2_addr_i0 === bytes2.length;
|
||||
// simple case: this is a byte from the first array
|
||||
// just copy it
|
||||
if (is_bytes1_byte)
|
||||
result_bytes[i] = bytes1[i];
|
||||
// this is a boundary byte
|
||||
// further cases:
|
||||
// second bit length is 0 ->
|
||||
// ABCD_EF-- <empty>
|
||||
// ^ starting here
|
||||
// just copy first byte and move along
|
||||
else if (is_boundary_byte && (bits2.bit_length === 0))
|
||||
result_bytes[i] = bytes1[i];
|
||||
// boundary byte, and there is at least one byte in the second array
|
||||
else if (is_boundary_byte) {
|
||||
// copy over the first byte
|
||||
result_bytes[i] = bytes1[i];
|
||||
// take the first byte from the second array
|
||||
let first_byte_of_second_array = bytes2[0];
|
||||
// bytes1:
|
||||
// ABCD_EF00
|
||||
// 6
|
||||
// bytes2:
|
||||
// 1234_5678
|
||||
// 0000_0012
|
||||
// and bitshift it right by that amount
|
||||
let bitshift_amt = bits1.bit_length % 8;
|
||||
result_bytes[i] ^= first_byte_of_second_array >> bitshift_amt;
|
||||
}
|
||||
// last byte of second array
|
||||
else if (ping)
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt);
|
||||
// ping-pong: not last byte of second array
|
||||
else
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt) ^ (bytes2[next_bytes2_addr_i0] << bitshift_amt);
|
||||
}
|
||||
return { bit_length: result_bit_length,
|
||||
bytes: result_bytes };
|
||||
}
|
||||
//# sourceMappingURL=bin.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { encode, decode, byte_of_word, check_word, check_byte, words };
|
||||
import * as safe from './safe.js';
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
declare function encode(bytes: Uint8Array): string;
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
declare function decode(faert: string): safe.Safe<Uint8Array, string>;
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
declare function byte_of_word(word: string): safe.Safe<number, string>;
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
declare function check_word(bytes: Uint8Array): string;
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
declare function check_byte(bytes: Uint8Array): number;
|
||||
declare let words: string[];
|
||||
@@ -0,0 +1,344 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { encode, decode, byte_of_word, check_word, check_byte, words };
|
||||
import * as safe from './safe.js';
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
function encode(bytes) {
|
||||
// initial accumulator
|
||||
let words_acc = [];
|
||||
// go along each byte and look up the word
|
||||
// add it to the accumulator
|
||||
for (let this_byte of bytes) {
|
||||
let this_word = words[this_byte];
|
||||
words_acc.push(this_word);
|
||||
}
|
||||
// prepend check word to phrase
|
||||
// yes craig it would be faster to do the check byte inline
|
||||
// the usage case here is 64 byte strings
|
||||
// double pass is not a big deal
|
||||
return check_word(bytes) + ' ' + words_acc.join(' ');
|
||||
}
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
function decode(faert) {
|
||||
let all_words = faert.split(' ');
|
||||
let input_check_word = all_words[0];
|
||||
let input_words = all_words.slice(1);
|
||||
// accumulator
|
||||
let computed_bytes = [];
|
||||
// loop over words and figure out accumulator
|
||||
for (let this_input_word of input_words) {
|
||||
let maybe_this_byte = byte_of_word(this_input_word);
|
||||
// if the word is an allowable word, add it to the accumulator
|
||||
if (maybe_this_byte.ok) {
|
||||
let this_byte = maybe_this_byte.result;
|
||||
computed_bytes.push(this_byte);
|
||||
}
|
||||
// error case, propagate the error up the call chain
|
||||
else
|
||||
return maybe_this_byte;
|
||||
}
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_bytes_u8s = new Uint8Array(computed_bytes);
|
||||
let computed_check_word = check_word(computed_bytes_u8s);
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
}
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
function byte_of_word(word) {
|
||||
for (let i = 0; i <= 255; i++) {
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
}
|
||||
return safe.error('invalid word: ' + word);
|
||||
}
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
function check_word(bytes) {
|
||||
return words[check_byte(bytes)];
|
||||
}
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
function check_byte(bytes) {
|
||||
let check_byte = 0;
|
||||
for (let this_byte of bytes)
|
||||
check_byte ^= this_byte;
|
||||
return check_byte;
|
||||
}
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
"adjust",
|
||||
"agent",
|
||||
"air",
|
||||
"alert",
|
||||
"alpha",
|
||||
"anger",
|
||||
"answer",
|
||||
"any",
|
||||
"argue",
|
||||
"around",
|
||||
"assume",
|
||||
"asthma",
|
||||
"aunt",
|
||||
"awkward",
|
||||
"balcony",
|
||||
"barrel",
|
||||
"because",
|
||||
"behave",
|
||||
"bicycle",
|
||||
"bike",
|
||||
"blind",
|
||||
"blouse",
|
||||
"bonus",
|
||||
"bottom",
|
||||
"breeze",
|
||||
"brother",
|
||||
"bubble",
|
||||
"burger",
|
||||
"butter",
|
||||
"can",
|
||||
"cannon",
|
||||
"cargo",
|
||||
"catalog",
|
||||
"caught",
|
||||
"century",
|
||||
"chaos",
|
||||
"chicken",
|
||||
"churn",
|
||||
"cinnamon",
|
||||
"clever",
|
||||
"clock",
|
||||
"clown",
|
||||
"collect",
|
||||
"conduct",
|
||||
"convince",
|
||||
"correct",
|
||||
"cradle",
|
||||
"crane",
|
||||
"crime",
|
||||
"cross",
|
||||
"crystal",
|
||||
"curve",
|
||||
"daughter",
|
||||
"debris",
|
||||
"decrease",
|
||||
"deny",
|
||||
"deputy",
|
||||
"despair",
|
||||
"diesel",
|
||||
"dinner",
|
||||
"distance",
|
||||
"document",
|
||||
"donate",
|
||||
"drama",
|
||||
"drink",
|
||||
"dutch",
|
||||
"earth",
|
||||
"educate",
|
||||
"elbow",
|
||||
"employ",
|
||||
"endless",
|
||||
"enlist",
|
||||
"enter",
|
||||
"equal",
|
||||
"eternal",
|
||||
"example",
|
||||
"exhibit",
|
||||
"exotic",
|
||||
"faculty",
|
||||
"famous",
|
||||
"fault",
|
||||
"feature",
|
||||
"fiber",
|
||||
"filter",
|
||||
"firm",
|
||||
"flame",
|
||||
"flush",
|
||||
"follow",
|
||||
"forward",
|
||||
"frame",
|
||||
"fringe",
|
||||
"future",
|
||||
"game",
|
||||
"gate",
|
||||
"gift",
|
||||
"glare",
|
||||
"glow",
|
||||
"goat",
|
||||
"grab",
|
||||
"grief",
|
||||
"guilt",
|
||||
"hand",
|
||||
"hawk",
|
||||
"health",
|
||||
"hen",
|
||||
"hire",
|
||||
"honey",
|
||||
"hover",
|
||||
"hurry",
|
||||
"hybrid",
|
||||
"impose",
|
||||
"inch",
|
||||
"inherit",
|
||||
"injury",
|
||||
"install",
|
||||
"iron",
|
||||
"jazz",
|
||||
"joke",
|
||||
"just",
|
||||
"kit",
|
||||
"kitchen",
|
||||
"language",
|
||||
"laundry",
|
||||
"leader",
|
||||
"lend",
|
||||
"leopard",
|
||||
"license",
|
||||
"live",
|
||||
"lobster",
|
||||
"lounge",
|
||||
"magnet",
|
||||
"mail",
|
||||
"mansion",
|
||||
"mass",
|
||||
"math",
|
||||
"media",
|
||||
"message",
|
||||
"metal",
|
||||
"misery",
|
||||
"mix",
|
||||
"more",
|
||||
"mountain",
|
||||
"museum",
|
||||
"mutual",
|
||||
"narrow",
|
||||
"nerve",
|
||||
"next",
|
||||
"note",
|
||||
"obey",
|
||||
"obtain",
|
||||
"offer",
|
||||
"once",
|
||||
"orange",
|
||||
"ostrich",
|
||||
"over",
|
||||
"owner",
|
||||
"palace",
|
||||
"patch",
|
||||
"pave",
|
||||
"pen",
|
||||
"phrase",
|
||||
"piece",
|
||||
"pizza",
|
||||
"plunge",
|
||||
"polar",
|
||||
"pool",
|
||||
"power",
|
||||
"pretty",
|
||||
"private",
|
||||
"protect",
|
||||
"pulp",
|
||||
"purity",
|
||||
"quit",
|
||||
"quote",
|
||||
"raise",
|
||||
"razor",
|
||||
"recall",
|
||||
"region",
|
||||
"relief",
|
||||
"rent",
|
||||
"rescue",
|
||||
"review",
|
||||
"ride",
|
||||
"risk",
|
||||
"roof",
|
||||
"rough",
|
||||
"saddle",
|
||||
"salmon",
|
||||
"sand",
|
||||
"scene",
|
||||
"scrub",
|
||||
"season",
|
||||
"seek",
|
||||
"series",
|
||||
"shed",
|
||||
"shoe",
|
||||
"sick",
|
||||
"silent",
|
||||
"situate",
|
||||
"skill",
|
||||
"slide",
|
||||
"slush",
|
||||
"snack",
|
||||
"solar",
|
||||
"soul",
|
||||
"special",
|
||||
"sphere",
|
||||
"spot",
|
||||
"spy",
|
||||
"stairs",
|
||||
"stereo",
|
||||
"strategy",
|
||||
"stuff",
|
||||
"success",
|
||||
"sunny",
|
||||
"surge",
|
||||
"swear",
|
||||
"symptom",
|
||||
"tail",
|
||||
"ten",
|
||||
"tent",
|
||||
"theme",
|
||||
"thumb",
|
||||
"tiny",
|
||||
"toe",
|
||||
"tooth",
|
||||
"topic",
|
||||
"trade",
|
||||
"trash",
|
||||
"trophy",
|
||||
"truly",
|
||||
"tumble",
|
||||
"typical",
|
||||
"uncle",
|
||||
"unfair",
|
||||
"until",
|
||||
"upper",
|
||||
"useless",
|
||||
"van",
|
||||
"venue",
|
||||
"video",
|
||||
"visa",
|
||||
"vocal",
|
||||
"walk",
|
||||
"waste",
|
||||
"wedding",
|
||||
"weekend",
|
||||
"wide",
|
||||
"winner",
|
||||
"wise",
|
||||
"wood",
|
||||
"wrist",
|
||||
"zero"
|
||||
];
|
||||
//# sourceMappingURL=faert.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"faert.js","sourceRoot":"","sources":["../src/faert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACH,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,KAAK,EACR,CAAA;AAED,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC;;GAEG;AACH,SACA,MAAM,CACD,KAAkB;IAGnB,sBAAsB;IACtB,IAAI,SAAS,GAAoB,EAAE,CAAC;IAEpC,0CAA0C;IAC1C,4BAA4B;IAC5B,KAAK,IAAI,SAAS,IAAI,KAAK,EAC3B;QACI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,+BAA+B;IAC/B,2DAA2D;IAC3D,yCAAyC;IACzC,gCAAgC;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AAID;;GAEG;AACH,SACA,MAAM,CACD,KAAc;IAGf,IAAI,SAAS,GAA0B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,gBAAgB,GAAmB,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,WAAW,GAAwB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEzD,cAAc;IACd,IAAI,cAAc,GAAmB,EAAE,CAAC;IAExC,6CAA6C;IAC7C,KAAK,IAAI,eAAe,IAAI,WAAW,EACvC;QACI,IAAI,eAAe,GAA+B,YAAY,CAAC,eAAe,CAAC,CAAC;QAChF,8DAA8D;QAC9D,IAAI,eAAe,CAAC,EAAE,EACtB;YACI,IAAI,SAAS,GAAY,eAAe,CAAC,MAAM,CAAC;YAChD,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClC;QACD,oDAAoD;;YAEhD,OAAO,eAAe,CAAC;KAC9B;IAED,8DAA8D;IAC9D,yBAAyB;IACzB,IAAI,kBAAkB,GAAiB,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,mBAAmB,GAAY,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAElE,yBAAyB;IACzB,mCAAmC;IACnC,IAAI,mBAAmB,KAAK,gBAAgB;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACvC,6BAA6B;;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,yCAAyC,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;AACvI,CAAC;AAID;;GAEG;AACH,SACA,YAAY,CACP,IAAY;IAGb,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAE,GAAG,EAAE,CAAC,EAAE,EACzB;QACI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACzB;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAC/C,CAAC;AAID;;GAEG;AACH,SACA,UAAU,CACL,KAAiB;IAGlB,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAGD;;GAEG;AACH,SACA,UAAU,CACL,KAAiB;IAGlB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,SAAS,IAAI,KAAK;QACvB,UAAU,IAAI,SAAS,CAAC;IAC5B,OAAO,UAAU,CAAC;AACtB,CAAC;AAID,IAAI,KAAK,GAAG;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;CACT,CAAA"}
|
||||
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { decoded_data, decode_result, decode, encode };
|
||||
/**
|
||||
* Data that RLP can encode. Also the result of decoding.
|
||||
*/
|
||||
declare type decoded_data = Uint8Array | Array<decoded_data>;
|
||||
/**
|
||||
* Decoding can have a remainder
|
||||
*/
|
||||
declare type decode_result = {
|
||||
decoded_data: decoded_data;
|
||||
remainder: Uint8Array;
|
||||
};
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
declare function decode(bytes: Uint8Array): decode_result;
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
declare function encode(data: decoded_data): Uint8Array;
|
||||
@@ -0,0 +1,382 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { decode, encode };
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
function decode(bytes) {
|
||||
// check the first byte
|
||||
let first_byte = bytes[0];
|
||||
let rest = bytes.slice(1);
|
||||
// if the first byte is between 0 and 127, that is the data
|
||||
if (first_byte <= 127) {
|
||||
return dr(new Uint8Array([first_byte]), rest);
|
||||
}
|
||||
// if the first byte is between 128 and 183 = 128 + 55, it is a bytestring
|
||||
// and the length is Byte - 128
|
||||
else if (first_byte <= 183) {
|
||||
let payload_byte_length = first_byte - 128;
|
||||
let payload = rest.slice(0, payload_byte_length);
|
||||
let rest2 = rest.slice(payload_byte_length);
|
||||
return dr(payload, rest2);
|
||||
}
|
||||
// if the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
// bytestring. the byte length of bytestring is FirstByte - 183. Then pull
|
||||
// out the actual data
|
||||
else if (first_byte <= 191) {
|
||||
let byte_length_of_byte_length = first_byte - 183;
|
||||
let bytes_of_byte_length = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length = bytes_to_number(bytes_of_byte_length);
|
||||
let bytes = rest.slice(byte_length_of_byte_length, byte_length + byte_length_of_byte_length);
|
||||
let rest2 = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(bytes, rest2);
|
||||
}
|
||||
// If the first byte is between 192 and 247 = 192 + 55, it is a list. The
|
||||
// byte length of the list-payload is FirstByte - 192. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else if (first_byte <= 247) {
|
||||
let byte_length_of_list = first_byte - 192;
|
||||
let list_payload = rest.slice(0, byte_length_of_list);
|
||||
let list = decode_list(list_payload);
|
||||
let rest2 = rest.slice(byte_length_of_list);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
// If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a
|
||||
// list. The byte length of the byte length of the list-payload is
|
||||
// FirstByte - 247. Then the byte length of the list. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else {
|
||||
let byte_length_of_byte_length = first_byte - 247;
|
||||
let bytes_of_byte_length = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length = bytes_to_number(bytes_of_byte_length);
|
||||
let list_bytes = rest.slice(byte_length_of_byte_length, byte_length + byte_length_of_byte_length);
|
||||
let list = decode_list(list_bytes);
|
||||
let rest2 = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a list payload (non-prefixed) into an `Array<decoded_data>`.
|
||||
*
|
||||
* Repeatedly decodes an element off the list until remainder is empty.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_list(bytes) {
|
||||
let arr = [];
|
||||
while (bytes.length > 0) {
|
||||
// grab an item off the bytes
|
||||
let { decoded_data, remainder } = decode(bytes);
|
||||
// push it
|
||||
arr.push(decoded_data);
|
||||
// update bytes
|
||||
bytes = remainder;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
/**
|
||||
* Convert bytestring to number
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bytes_to_number(bytes) {
|
||||
let n = 0;
|
||||
for (let b of bytes) {
|
||||
n <<= 8;
|
||||
n += b;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Make a `decode_result` containing the two arguments
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function dr(x, y) {
|
||||
return { decoded_data: x,
|
||||
remainder: y };
|
||||
}
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
function encode(data) {
|
||||
// is it an array or data
|
||||
if (is_binary(data)) {
|
||||
return encode_binary(data);
|
||||
}
|
||||
else if (is_list(data)) {
|
||||
return encode_list(data);
|
||||
}
|
||||
else {
|
||||
throw new Error('encode told to encode something that is not an array or a binary: ' + data);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a binary into RLP
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_binary(bytes) {
|
||||
let len = bytes.length;
|
||||
// single byte case when the byte is between 0..127
|
||||
// result is the bytestring containing the byte itself
|
||||
if ((len === 1) &&
|
||||
(bytes[0] <= 127)) {
|
||||
return bytes;
|
||||
}
|
||||
// if the bytestring is 0..55 bytes long, the first byte in the result is
|
||||
// 128 + Length, the rest of the result bytestring is the input string
|
||||
else if (len <= 55) {
|
||||
// construct the result
|
||||
// <<128 + Len, Bytes/binary>>
|
||||
let result = new Uint8Array(len + 1);
|
||||
// first byte is 128 + length
|
||||
result[0] = 128 + len;
|
||||
// copy input bytes into result
|
||||
for (let input_idx0 = 0; input_idx0 < len; input_idx0++) {
|
||||
let result_idx0 = input_idx0 + 1;
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the bytestring is more than 55 bytes long, the first byte is 183 +
|
||||
// ByteLengthOfByteLength, followed by the byte length, followed by the
|
||||
// bytes
|
||||
else {
|
||||
let len_bytes = encode_unsigned(len);
|
||||
let len_bytes_length = len_bytes.length;
|
||||
// total array is
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
let result = new Uint8Array(1 + len_bytes_length + len);
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 183 + len_bytes_length;
|
||||
// copy len_bytes into result
|
||||
for (let len_bytes_idx0 = 0; len_bytes_idx0 < len_bytes_length; len_bytes_idx0++) {
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = len_bytes_idx0 + 1;
|
||||
result[result_idx0] = len_bytes[len_bytes_idx0];
|
||||
}
|
||||
// copy original byte array into result
|
||||
for (let input_idx0 = 0; input_idx0 < len; input_idx0++) {
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = input_idx0 + (1 + len_bytes_length);
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
// finally, return the result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a list
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_list(list) {
|
||||
// first encode every element in the list, then branch
|
||||
let payloads = list.map(encode);
|
||||
let payload = uint8arr_concat(payloads);
|
||||
let payload_size = payload.length;
|
||||
// if the payload size is in 0..55, then the first byte is 192 + payload
|
||||
// size, followed by the payload
|
||||
if (payload_size <= 55) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
let result = new Uint8Array(1 + payload_size);
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 192 + payload_size;
|
||||
// copy the rest of the payload into result
|
||||
for (let payload_idx0 = 0; payload_idx0 < payload_size; payload_idx0++) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = payload_idx0 + 1;
|
||||
result[result_idx0] = payload[payload_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the payload size is greater than 55, the first byte is 247 +
|
||||
// size_of_payload_size, followed by the payload size, followed by the
|
||||
// payload
|
||||
else {
|
||||
// compute the payload size size
|
||||
let payload_size_bytes = encode_unsigned(payload_size);
|
||||
let payload_size_size = payload_size_bytes.length;
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
let result = new Uint8Array(1 + payload_size_size + payload_size);
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// first byte is 247 + payload_size_size
|
||||
result[0] = 247 + payload_size_size;
|
||||
// copy the payload_size_bytes into result
|
||||
for (let psb_idx0 = 0; psb_idx0 < payload_size_size; psb_idx0++) {
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 byte for this
|
||||
let result_idx0 = psb_idx0 + 1;
|
||||
result[result_idx0] = payload_size_bytes[psb_idx0];
|
||||
}
|
||||
// copy the payload into result
|
||||
for (let pb_idx0 = 0; pb_idx0 < payload_size; pb_idx0++) {
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 + payload_size_size bytes for this
|
||||
let result_idx0 = pb_idx0 + (1 + payload_size_size);
|
||||
result[result_idx0] = payload[pb_idx0];
|
||||
}
|
||||
// finally, return result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a number as a bytestring
|
||||
*
|
||||
* Not for general use, this assumes the input number is greater than 55
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_unsigned(n) {
|
||||
// can assume that n initially is greater than 55
|
||||
// have to encode it in reverse order
|
||||
let arr = [];
|
||||
// repeated division by 256 with remainder
|
||||
//
|
||||
// example: suppose bign was 1234 and we were dividing by 10
|
||||
//
|
||||
// iteration 0:
|
||||
// bign = 1234
|
||||
// arr = []
|
||||
// ---
|
||||
// bign / 10 = 123
|
||||
// bign % 10 = 4
|
||||
// ---
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
//
|
||||
// iteration 1:
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
// ---
|
||||
// bign / 10 = 12
|
||||
// bign % 10 = 3
|
||||
// ---
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
//
|
||||
// iteration 2:
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
// ---
|
||||
// bign / 10 = 1
|
||||
// bign % 10 = 2
|
||||
// ---
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
//
|
||||
// iteration 3:
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
// ---
|
||||
// bign / 10 = 0
|
||||
// bign % 10 = 1
|
||||
// ---
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
//
|
||||
// iteration 4:
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
// ---
|
||||
// DONE
|
||||
while (n > 0) {
|
||||
arr.push(n % 256);
|
||||
n >>= 8;
|
||||
}
|
||||
// reverse and make into Uint8Array
|
||||
arr.reverse();
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
/**
|
||||
* concatenate an array of `Uint8Array`s into a single Uint8Array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function uint8arr_concat(arrs) {
|
||||
// total length
|
||||
let total_len = arrs.reduce(// fold
|
||||
function (acc_len, this_uint8array) {
|
||||
return acc_len + this_uint8array.length;
|
||||
},
|
||||
// initial accumulator
|
||||
0);
|
||||
// start up result
|
||||
let result = new Uint8Array(total_len);
|
||||
let result_idx0 = 0;
|
||||
// concatenate
|
||||
for (let this_uint8arr of arrs) {
|
||||
// bytewise copy of this uint8array
|
||||
for (let this_uint8arr_idx0 = 0; this_uint8arr_idx0 < this_uint8arr.length; this_uint8arr_idx0++) {
|
||||
// copy byte and increment result idx0
|
||||
result[result_idx0] = this_uint8arr[this_uint8arr_idx0];
|
||||
result_idx0++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* returns true if input is `instanceof Uint8Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function is_binary(x) {
|
||||
return (x instanceof Uint8Array);
|
||||
}
|
||||
/**
|
||||
* returns true if input is `instanceof Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function is_list(x) {
|
||||
return (x instanceof Array);
|
||||
}
|
||||
//# sourceMappingURL=rlp.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
export { Safe, Ok, Error, ok, error, unsafe };
|
||||
/**
|
||||
* Type that catches positive errors
|
||||
*/
|
||||
declare type Safe<ok_t, err_t> = Ok<ok_t> | Error<err_t>;
|
||||
/**
|
||||
* Ok type
|
||||
*/
|
||||
declare type Ok<ok_t> = {
|
||||
ok: true;
|
||||
result: ok_t;
|
||||
};
|
||||
/**
|
||||
* Error type
|
||||
*/
|
||||
declare type Error<err_t> = {
|
||||
ok: false;
|
||||
error: err_t;
|
||||
};
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
declare function ok<ok_t>(x: ok_t): Ok<ok_t>;
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
declare function error<err_t>(x: err_t): Error<err_t>;
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
declare function unsafe<ok_t, err_t>(x: Safe<ok_t, err_t>): ok_t;
|
||||
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
export { ok, error, unsafe };
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
function ok(x) {
|
||||
return { ok: true, result: x };
|
||||
}
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
function error(x) {
|
||||
return { ok: false, error: x };
|
||||
}
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
function unsafe(x) {
|
||||
if (x.ok)
|
||||
return x.result;
|
||||
else
|
||||
throw x.error;
|
||||
}
|
||||
//# sourceMappingURL=safe.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../src/safe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAIH,EAAE,EACF,KAAK,EACL,MAAM,EACT,CAAA;AA2BD;;GAEG;AACH,SACA,EAAE,CAEG,CAAQ;IAGT,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;AACjC,CAAC;AAID;;GAEG;AACH,SACA,KAAK,CAEA,CAAQ;IAGT,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;AACjC,CAAC;AAID;;;GAGG;AACH,SACA,MAAM,CAED,CAAoB;IAGrB,IAAI,CAAC,CAAC,EAAE;QACJ,OAAO,CAAC,CAAC,MAAM,CAAC;;QAEhB,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC"}
|
||||
@@ -0,0 +1,418 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(binary : Uint8Array)
|
||||
: string
|
||||
{
|
||||
let num_leading_zeros : number = nlz(binary);
|
||||
let rest : Uint8Array = binary.slice(num_leading_zeros);
|
||||
let ones : string = encode_zeros(num_leading_zeros);
|
||||
let rest_b58 : string = encode_rest(rest);
|
||||
let result : string = ones + rest_b58;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* count the number of leading zeros in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
nlz
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let n = 0;
|
||||
for (let this_byte of bytes)
|
||||
{
|
||||
if (0 === this_byte) { n++; }
|
||||
else { break; }
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate a bunch of '1's for however many leading zeros there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_zeros
|
||||
(how_many : number)
|
||||
: string
|
||||
{
|
||||
let ones : string = '';
|
||||
for (let i = 1;
|
||||
i <= how_many;
|
||||
i++)
|
||||
{
|
||||
ones += '1';
|
||||
}
|
||||
|
||||
return ones;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array that has no leading zeros
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_rest
|
||||
(bytes : Uint8Array)
|
||||
: string
|
||||
{
|
||||
let bytes_bignum : bigint = bytes_to_bigint(bytes);
|
||||
let result : string = bignum_to_base58(bytes_bignum);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a bytestring to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bytes_to_bigint
|
||||
(bytes: Uint8Array)
|
||||
: bigint
|
||||
{
|
||||
let acc_bigint : bigint = 0n;
|
||||
for(let this_byte of bytes)
|
||||
{
|
||||
acc_bigint <<= 8n;
|
||||
acc_bigint += BigInt(this_byte);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a BigInt to Base58
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bignum_to_base58
|
||||
(q: bigint)
|
||||
: string
|
||||
{
|
||||
let s = '';
|
||||
while (q !== 0n)
|
||||
{
|
||||
let this_n : bigint = q % 58n;
|
||||
q /= 58n;
|
||||
|
||||
let this_b58_char : string = bigint_to_char(this_n);
|
||||
s = this_b58_char + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(base58: string)
|
||||
: Uint8Array
|
||||
{
|
||||
let num_leading_ones : number = nlo(base58);
|
||||
let rest : string = base58.slice(num_leading_ones);
|
||||
let zeros : Array<number> = decode_ones(num_leading_ones);
|
||||
let rest_arr : Array<number> = decode_rest(rest);
|
||||
let pre_result : Array<number> = zeros.concat(rest_arr);
|
||||
return new Uint8Array(pre_result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* count the number of leading 1 characters in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
nlo
|
||||
(base58: string)
|
||||
: number
|
||||
{
|
||||
let n = 0;
|
||||
for (let this_char of base58)
|
||||
{
|
||||
if ('1' === this_char) { n++; }
|
||||
else { break; }
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate a bunch of '0's for however many leading ones there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_ones
|
||||
(how_many : number)
|
||||
: Array<number>
|
||||
{
|
||||
let zeros : Array<number> = [];
|
||||
for (let i = 1;
|
||||
i <= how_many;
|
||||
i++)
|
||||
{
|
||||
zeros.push(0);
|
||||
}
|
||||
|
||||
return zeros;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a string that has no leading 1s
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_rest
|
||||
(base58: string)
|
||||
: Array<number>
|
||||
{
|
||||
let result_bignum : bigint = base58_to_bigint(base58);
|
||||
let result : Array<number> = bigint_to_base256(result_bignum);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a base58 string to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
base58_to_bigint
|
||||
(base58: string)
|
||||
: bigint
|
||||
{
|
||||
let acc_bigint : bigint = 0n;
|
||||
for(let this_char of base58)
|
||||
{
|
||||
acc_bigint *= 58n;
|
||||
acc_bigint += char_to_bigint(this_char);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* convert a bignum into a byte array
|
||||
*
|
||||
* @end
|
||||
*/
|
||||
function
|
||||
bigint_to_base256
|
||||
(q: bigint)
|
||||
: Array<number>
|
||||
{
|
||||
let arr_reverse = [];
|
||||
while(q !== 0n)
|
||||
{
|
||||
let r: number = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return arr_reverse;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// TRANSLATION TABLES
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/**
|
||||
* Base58 integer -> character conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bigint_to_char
|
||||
(n: bigint)
|
||||
: string
|
||||
{
|
||||
switch(n) {
|
||||
case 0n: return '1';
|
||||
case 1n: return '2';
|
||||
case 2n: return '3';
|
||||
case 3n: return '4';
|
||||
case 4n: return '5';
|
||||
case 5n: return '6';
|
||||
case 6n: return '7';
|
||||
case 7n: return '8';
|
||||
case 8n: return '9';
|
||||
case 9n: return 'A';
|
||||
case 10n: return 'B';
|
||||
case 11n: return 'C';
|
||||
case 12n: return 'D';
|
||||
case 13n: return 'E';
|
||||
case 14n: return 'F';
|
||||
case 15n: return 'G';
|
||||
case 16n: return 'H';
|
||||
case 17n: return 'J';
|
||||
case 18n: return 'K';
|
||||
case 19n: return 'L';
|
||||
case 20n: return 'M';
|
||||
case 21n: return 'N';
|
||||
case 22n: return 'P';
|
||||
case 23n: return 'Q';
|
||||
case 24n: return 'R';
|
||||
case 25n: return 'S';
|
||||
case 26n: return 'T';
|
||||
case 27n: return 'U';
|
||||
case 28n: return 'V';
|
||||
case 29n: return 'W';
|
||||
case 30n: return 'X';
|
||||
case 31n: return 'Y';
|
||||
case 32n: return 'Z';
|
||||
case 33n: return 'a';
|
||||
case 34n: return 'b';
|
||||
case 35n: return 'c';
|
||||
case 36n: return 'd';
|
||||
case 37n: return 'e';
|
||||
case 38n: return 'f';
|
||||
case 39n: return 'g';
|
||||
case 40n: return 'h';
|
||||
case 41n: return 'i';
|
||||
case 42n: return 'j';
|
||||
case 43n: return 'k';
|
||||
case 44n: return 'm';
|
||||
case 45n: return 'n';
|
||||
case 46n: return 'o';
|
||||
case 47n: return 'p';
|
||||
case 48n: return 'q';
|
||||
case 49n: return 'r';
|
||||
case 50n: return 's';
|
||||
case 51n: return 't';
|
||||
case 52n: return 'u';
|
||||
case 53n: return 'v';
|
||||
case 54n: return 'w';
|
||||
case 55n: return 'x';
|
||||
case 56n: return 'y';
|
||||
case 57n: return 'z';
|
||||
default:
|
||||
throw new Error('invalid base58 bigint: ' + n);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Base58 character -> integer conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
char_to_bigint
|
||||
(s: string)
|
||||
: bigint
|
||||
{
|
||||
switch(s) {
|
||||
case '1': return 0n;
|
||||
case '2': return 1n;
|
||||
case '3': return 2n;
|
||||
case '4': return 3n;
|
||||
case '5': return 4n;
|
||||
case '6': return 5n;
|
||||
case '7': return 6n;
|
||||
case '8': return 7n;
|
||||
case '9': return 8n;
|
||||
case 'A': return 9n;
|
||||
case 'B': return 10n;
|
||||
case 'C': return 11n;
|
||||
case 'D': return 12n;
|
||||
case 'E': return 13n;
|
||||
case 'F': return 14n;
|
||||
case 'G': return 15n;
|
||||
case 'H': return 16n;
|
||||
case 'J': return 17n;
|
||||
case 'K': return 18n;
|
||||
case 'L': return 19n;
|
||||
case 'M': return 20n;
|
||||
case 'N': return 21n;
|
||||
case 'P': return 22n;
|
||||
case 'Q': return 23n;
|
||||
case 'R': return 24n;
|
||||
case 'S': return 25n;
|
||||
case 'T': return 26n;
|
||||
case 'U': return 27n;
|
||||
case 'V': return 28n;
|
||||
case 'W': return 29n;
|
||||
case 'X': return 30n;
|
||||
case 'Y': return 31n;
|
||||
case 'Z': return 32n;
|
||||
case 'a': return 33n;
|
||||
case 'b': return 34n;
|
||||
case 'c': return 35n;
|
||||
case 'd': return 36n;
|
||||
case 'e': return 37n;
|
||||
case 'f': return 38n;
|
||||
case 'g': return 39n;
|
||||
case 'h': return 40n;
|
||||
case 'i': return 41n;
|
||||
case 'j': return 42n;
|
||||
case 'k': return 43n;
|
||||
case 'm': return 44n;
|
||||
case 'n': return 45n;
|
||||
case 'o': return 46n;
|
||||
case 'p': return 47n;
|
||||
case 'q': return 48n;
|
||||
case 'r': return 49n;
|
||||
case 's': return 50n;
|
||||
case 't': return 51n;
|
||||
case 'u': return 52n;
|
||||
case 'v': return 53n;
|
||||
case 'w': return 54n;
|
||||
case 'x': return 55n;
|
||||
case 'y': return 56n;
|
||||
case 'z': return 57n;
|
||||
default:
|
||||
throw new Error('invalid base58 char: ' + s);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,655 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
// slice the array
|
||||
// length of head is a multiple of 3
|
||||
// treat the tail as a special case
|
||||
let {head, tail, tail_len} = slice3k(bytes);
|
||||
let head_str : string = encode_head(head);
|
||||
let tail_str : string = encode_tail(tail, tail_len);
|
||||
return head_str + tail_str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
type slice3k
|
||||
= {head : Uint8Array,
|
||||
tail : Uint8Array,
|
||||
tail_len : number};
|
||||
|
||||
/**
|
||||
* Take a Uint8Array, take the first 3k (k >= 0) bytes, put them in head, and
|
||||
* the remaining 0,1, or 2 bytes, put them in tail
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
slice3k
|
||||
(bytes: Uint8Array)
|
||||
: slice3k
|
||||
{
|
||||
let len : number = bytes.length;
|
||||
// too lazy to look up how to do integer division in js so this will do
|
||||
let tail_len : number = len % 3;
|
||||
let head_len : number = len - tail_len;
|
||||
// for slice:
|
||||
// first argument is the 0-index of the start
|
||||
// second - first is the length of the slice
|
||||
let head : Uint8Array = bytes.slice(0, head_len);
|
||||
// empty second argument means go to the end
|
||||
let tail : Uint8Array = bytes.slice(head_len);
|
||||
return {head : head,
|
||||
tail : tail,
|
||||
tail_len : tail_len};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array whose length is known to be a multiple of 3
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_head
|
||||
(head_bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
// can assume length of bytes is a multiple of 3
|
||||
// start index at 0
|
||||
// increment by 3
|
||||
let head_bytes_len : number = head_bytes.length;
|
||||
let max_idx0 : number = head_bytes_len - 1;
|
||||
|
||||
let head_str_acc : string = '';
|
||||
for(let this_3slice_start_idx0 = 0;
|
||||
this_3slice_start_idx0 <= max_idx0;
|
||||
this_3slice_start_idx0 += 3)
|
||||
{
|
||||
let this_3slice_bytes : Uint8Array = head_bytes.slice(this_3slice_start_idx0, this_3slice_start_idx0 + 3);
|
||||
let this_3slice_str : string = encode3(this_3slice_bytes);
|
||||
head_str_acc += this_3slice_str;
|
||||
}
|
||||
|
||||
return head_str_acc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a 3 bytes into base64 notation
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode3
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
let b1 : number = bytes[1];
|
||||
let b2 : number = bytes[2];
|
||||
|
||||
// ABCDEFGH 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// ABCDEF GH1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
let n0 : number = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 : number = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// b2 = abcdefgh
|
||||
// b2 >> 6 = ______ab
|
||||
// n2 = __5678ab
|
||||
let n2 : number = ((b1 % 16) << 2) + (b2 >> 6);
|
||||
// b2 = abcdefgh
|
||||
// 64 = _1______
|
||||
// n3 = __cdefgh
|
||||
let n3 : number = b2 % 64;
|
||||
|
||||
// convert to chars
|
||||
let s0 : string = int2char(n0);
|
||||
let s1 : string = int2char(n1);
|
||||
let s2 : string = int2char(n2);
|
||||
let s3 : string = int2char(n3);
|
||||
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + s3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode the final 0, 1, or 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_tail
|
||||
(tail_bytes : Uint8Array,
|
||||
tail_len : number)
|
||||
: string
|
||||
{
|
||||
switch(tail_len) {
|
||||
case 0: return '';
|
||||
case 1: return encode1(tail_bytes);
|
||||
case 2: return encode2(tail_bytes);
|
||||
default:
|
||||
throw new Error('encode_tail with tail_len = ' + tail_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a single byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode1
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
// n0 = __ABCDEF
|
||||
// b0 = ABCDEFGH
|
||||
// b0 >> 2 = __ABCDEF
|
||||
let n0 : number = b0 >> 2;
|
||||
// n1 = __GH____
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
let n1 : number = (b0 % 4) << 4;
|
||||
|
||||
return int2char(n0) + int2char(n1) + '==';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode two bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode2
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
let b1 : number = bytes[1];
|
||||
|
||||
// ABCDEFGH 12345678
|
||||
// b0 b1
|
||||
// ABCDEF GH1234 5678__
|
||||
// n0 n1 n2
|
||||
let n0 : number = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 : number = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// n2 = __5678__
|
||||
let n2 : number = (b1 % 16) << 2;
|
||||
|
||||
// convert to chars
|
||||
let s0 : string = int2char(n0);
|
||||
let s1 : string = int2char(n1);
|
||||
let s2 : string = int2char(n2);
|
||||
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + '=';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(base64_str : string)
|
||||
: Uint8Array
|
||||
{
|
||||
// length of the string is guaranteed to be a multiple of 4
|
||||
// if the string is empty, return the empty array
|
||||
let len = base64_str.length;
|
||||
// this branching contains the implicit assertion that the length is a
|
||||
// multiple of 4. If this is not true, the bottom branch is triggered.
|
||||
// general case goes first because speeeeeed
|
||||
if ( (4 < len)
|
||||
&& (0 === (len % 4)))
|
||||
{
|
||||
// split the head and tail
|
||||
let tail_start_idx0 : number = len - 4;
|
||||
let head_s : string = base64_str.slice(0, tail_start_idx0);
|
||||
let tail_s : string = base64_str.slice(tail_start_idx0);
|
||||
// Using arrays because Uint8Arrays don't have a concat operation
|
||||
let head_arr : Array<number> = decode_head(head_s);
|
||||
let tail_arr : Array<number> = decode_tail(tail_s);
|
||||
// silly to put these in variables but this is exactly the type of
|
||||
// situation where JS type insanity shows up
|
||||
//
|
||||
// see: i forgot
|
||||
// > [1,2,3] + [4,5,6]
|
||||
// '1,2,34,5,6'
|
||||
//
|
||||
// Originally, I used + like some sort of moron who codes in a sane
|
||||
// language
|
||||
//
|
||||
// seriously what is this language
|
||||
//
|
||||
// this is some clown behavior
|
||||
let total_arr : Array<number> = head_arr.concat(tail_arr);
|
||||
return new Uint8Array(total_arr);
|
||||
}
|
||||
// special case if the length is exactly 4
|
||||
else if (4 === len)
|
||||
{
|
||||
// it's just a tail
|
||||
return new Uint8Array(decode_tail(base64_str));
|
||||
}
|
||||
// empty string
|
||||
else if (0 === len)
|
||||
{
|
||||
return new Uint8Array([]);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Error('base64 decode: invalid string length: ' + len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a string known to not have any padding
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_head
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// go 4 characters at a time
|
||||
let max_i0 : number = s.length - 1;
|
||||
let decoded_acc : Array<number> = [];
|
||||
for(let i0 = 0;
|
||||
i0 <= max_i0;
|
||||
i0 += 4)
|
||||
{
|
||||
let this_slice_s : string = s.slice(i0, i0 + 4);
|
||||
let this_slice_arr : Array<number> = decode3(this_slice_s);
|
||||
// update accumulator
|
||||
decoded_acc = decoded_acc.concat(this_slice_arr);
|
||||
}
|
||||
return decoded_acc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode 4 characters that correspond to either 3 bytes, 2, bytes, or 1 byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_tail
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// all that matters right now is the last 2 chars
|
||||
// s0, s1, s2, s3
|
||||
// 0 based indexing is so annoying
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
|
||||
// braaaaaaaaaaaaaaaaaench
|
||||
// two equals signs means 1 byte
|
||||
if (('=' === s3) && ('=' === s2)) {
|
||||
return decode1(s);
|
||||
}
|
||||
// one equals sign means 2 bytes
|
||||
else if (('=' === s3)) {
|
||||
return decode2(s);
|
||||
}
|
||||
// 0 equals signs means 3 bytes
|
||||
else {
|
||||
return decode3(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 3 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode3
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
let s2 : string = s[2];
|
||||
let s3 : string = s[3];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
let n2 : number = char2int(s2);
|
||||
let n3 : number = char2int(s3);
|
||||
|
||||
// abcdef gh1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
// abcdefgh 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678ab
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 : number = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
// n2 = __5678ab
|
||||
// 4 = _____1__
|
||||
// n2 % 4 = ______ab
|
||||
// (n2 % 4) << 6 = ab______
|
||||
// n3 = __cdefgh
|
||||
let b2 : number = ((n2 % 4) << 6) + n3;
|
||||
|
||||
return [b0, b1, b2];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode2
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// xyz=
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
let s2 : string = s[2];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
let n2 : number = char2int(s2);
|
||||
|
||||
// abcdef gh1234 5678__
|
||||
// n0 n1 n2
|
||||
// abcdefgh 12345678
|
||||
// b0 b1
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678__
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 : number = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
|
||||
return [b0, b1];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode1
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// xy==
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
|
||||
// abcdef gh____
|
||||
// n0 n1
|
||||
// abcdefgh
|
||||
// b0
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh____
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
|
||||
return [b0];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// FIXME: these tables would *probably* be faster if they were made into objects
|
||||
|
||||
/**
|
||||
* Conversion table for base64 encode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
int2char
|
||||
(n: number)
|
||||
: string
|
||||
{
|
||||
switch(n) {
|
||||
case 0: return 'A';
|
||||
case 1: return 'B';
|
||||
case 2: return 'C';
|
||||
case 3: return 'D';
|
||||
case 4: return 'E';
|
||||
case 5: return 'F';
|
||||
case 6: return 'G';
|
||||
case 7: return 'H';
|
||||
case 8: return 'I';
|
||||
case 9: return 'J';
|
||||
case 10: return 'K';
|
||||
case 11: return 'L';
|
||||
case 12: return 'M';
|
||||
case 13: return 'N';
|
||||
case 14: return 'O';
|
||||
case 15: return 'P';
|
||||
case 16: return 'Q';
|
||||
case 17: return 'R';
|
||||
case 18: return 'S';
|
||||
case 19: return 'T';
|
||||
case 20: return 'U';
|
||||
case 21: return 'V';
|
||||
case 22: return 'W';
|
||||
case 23: return 'X';
|
||||
case 24: return 'Y';
|
||||
case 25: return 'Z';
|
||||
case 26: return 'a';
|
||||
case 27: return 'b';
|
||||
case 28: return 'c';
|
||||
case 29: return 'd';
|
||||
case 30: return 'e';
|
||||
case 31: return 'f';
|
||||
case 32: return 'g';
|
||||
case 33: return 'h';
|
||||
case 34: return 'i';
|
||||
case 35: return 'j';
|
||||
case 36: return 'k';
|
||||
case 37: return 'l';
|
||||
case 38: return 'm';
|
||||
case 39: return 'n';
|
||||
case 40: return 'o';
|
||||
case 41: return 'p';
|
||||
case 42: return 'q';
|
||||
case 43: return 'r';
|
||||
case 44: return 's';
|
||||
case 45: return 't';
|
||||
case 46: return 'u';
|
||||
case 47: return 'v';
|
||||
case 48: return 'w';
|
||||
case 49: return 'x';
|
||||
case 50: return 'y';
|
||||
case 51: return 'z';
|
||||
case 52: return '0';
|
||||
case 53: return '1';
|
||||
case 54: return '2';
|
||||
case 55: return '3';
|
||||
case 56: return '4';
|
||||
case 57: return '5';
|
||||
case 58: return '6';
|
||||
case 59: return '7';
|
||||
case 60: return '8';
|
||||
case 61: return '9';
|
||||
case 62: return '+';
|
||||
case 63: return '/';
|
||||
default: throw new Error("invalid base64 encode byte: " + n);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Conversion table for base64 decode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
char2int
|
||||
(s: string)
|
||||
: number
|
||||
{
|
||||
switch(s) {
|
||||
case 'A': return 0;
|
||||
case 'B': return 1;
|
||||
case 'C': return 2;
|
||||
case 'D': return 3;
|
||||
case 'E': return 4;
|
||||
case 'F': return 5;
|
||||
case 'G': return 6;
|
||||
case 'H': return 7;
|
||||
case 'I': return 8;
|
||||
case 'J': return 9;
|
||||
case 'K': return 10;
|
||||
case 'L': return 11;
|
||||
case 'M': return 12;
|
||||
case 'N': return 13;
|
||||
case 'O': return 14;
|
||||
case 'P': return 15;
|
||||
case 'Q': return 16;
|
||||
case 'R': return 17;
|
||||
case 'S': return 18;
|
||||
case 'T': return 19;
|
||||
case 'U': return 20;
|
||||
case 'V': return 21;
|
||||
case 'W': return 22;
|
||||
case 'X': return 23;
|
||||
case 'Y': return 24;
|
||||
case 'Z': return 25;
|
||||
case 'a': return 26;
|
||||
case 'b': return 27;
|
||||
case 'c': return 28;
|
||||
case 'd': return 29;
|
||||
case 'e': return 30;
|
||||
case 'f': return 31;
|
||||
case 'g': return 32;
|
||||
case 'h': return 33;
|
||||
case 'i': return 34;
|
||||
case 'j': return 35;
|
||||
case 'k': return 36;
|
||||
case 'l': return 37;
|
||||
case 'm': return 38;
|
||||
case 'n': return 39;
|
||||
case 'o': return 40;
|
||||
case 'p': return 41;
|
||||
case 'q': return 42;
|
||||
case 'r': return 43;
|
||||
case 's': return 44;
|
||||
case 't': return 45;
|
||||
case 'u': return 46;
|
||||
case 'v': return 47;
|
||||
case 'w': return 48;
|
||||
case 'x': return 49;
|
||||
case 'y': return 50;
|
||||
case 'z': return 51;
|
||||
case '0': return 52;
|
||||
case '1': return 53;
|
||||
case '2': return 54;
|
||||
case '3': return 55;
|
||||
case '4': return 56;
|
||||
case '5': return 57;
|
||||
case '6': return 58;
|
||||
case '7': return 59;
|
||||
case '8': return 60;
|
||||
case '9': return 61;
|
||||
case '+': return 62;
|
||||
case '/': return 63;
|
||||
default: throw new Error("invalid base64 character: " + s);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,377 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
bytes_to_bigint,
|
||||
bigint_to_bytes,
|
||||
concat,
|
||||
strong_rand_bytes
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
function
|
||||
concat
|
||||
(arr1 : Uint8Array,
|
||||
arr2 : Uint8Array)
|
||||
: Uint8Array
|
||||
{
|
||||
let len1 : number = arr1.length;
|
||||
let len2 : number = arr2.length;
|
||||
let arr1_idx0_offset : number = 0;
|
||||
let arr2_idx0_offset : number = len1;
|
||||
let result_len : number = len1 + len2;
|
||||
let result : Uint8Array = new Uint8Array(result_len);
|
||||
// copy first array into result
|
||||
for (let arr1_idx0 = 0;
|
||||
arr1_idx0 < len1;
|
||||
arr1_idx0++)
|
||||
{
|
||||
// no offset here
|
||||
let result_idx0 : number = arr1_idx0 + arr1_idx0_offset;
|
||||
result[result_idx0] = arr1[arr1_idx0];
|
||||
}
|
||||
// copy second array into result
|
||||
for (let arr2_idx0 = 0;
|
||||
arr2_idx0 < len2;
|
||||
arr2_idx0++)
|
||||
{
|
||||
// offset by the length of the first array
|
||||
let result_idx0 : number = arr2_idx0 + arr2_idx0_offset;
|
||||
result[result_idx0] = arr2[arr2_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
function
|
||||
strong_rand_bytes
|
||||
(how_many : number)
|
||||
: Uint8Array
|
||||
{
|
||||
let arr = new Uint8Array(how_many);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
function
|
||||
bytes_to_bigint
|
||||
(bytes: Uint8Array)
|
||||
: bigint
|
||||
{
|
||||
let n : bigint = 0n;
|
||||
for (let b of bytes) {
|
||||
// move first, then add
|
||||
// otherwise it ends on a move
|
||||
// imperative languages are for losers
|
||||
n <<= 8n;
|
||||
n += BigInt(b);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
function
|
||||
bigint_to_bytes
|
||||
(q: bigint)
|
||||
: Uint8Array
|
||||
{
|
||||
if (q < 0n) {
|
||||
throw new Error('q < 0n: ' + q);
|
||||
}
|
||||
|
||||
let arr_reverse = [];
|
||||
while (q > 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return new Uint8Array(arr_reverse);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Oh no, bitstrings in a language that only has bytestrings
|
||||
*
|
||||
* By convention these are `Uint8Array`s with byte length `ceil(bit_length /
|
||||
* 8)`, and all trailing bits are zero.
|
||||
*/
|
||||
type bits =
|
||||
{bit_length : number,
|
||||
bytes : Uint8Array};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get an uninitialized bitstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bits_null
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 0.
|
||||
*/
|
||||
function
|
||||
bits_zeros
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
for (let i0 = 0;
|
||||
i0 < byte_length;
|
||||
i0++)
|
||||
{
|
||||
result[i0] = 0;
|
||||
}
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 1.
|
||||
*/
|
||||
function
|
||||
bits_ones
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
|
||||
// fill everything except the last byte with 255s
|
||||
for (let i0 = 0;
|
||||
i0 < (byte_length - 1);
|
||||
i0++)
|
||||
{
|
||||
result[i0] = 255;
|
||||
}
|
||||
|
||||
// alright so the last byte
|
||||
// ok so the number of leading 0s is
|
||||
// 8 - (bit_length % 8)
|
||||
let num_trailing_zero_bits : number = 8 - (bit_length % 8);
|
||||
// the trailing byte is 255 << that
|
||||
// e.g. 3 trailing 0s
|
||||
// 1111_1111 -> 1111_1000
|
||||
let last_byte : number = 255 << num_trailing_zero_bits;
|
||||
let last_byte_idx0 : number = byte_length - 1;
|
||||
result[last_byte_idx0] = last_byte;
|
||||
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the bit at a given 0-index
|
||||
*/
|
||||
function
|
||||
bits_i0th
|
||||
(bit_idx0 : number,
|
||||
bits : bits)
|
||||
: number
|
||||
{
|
||||
// first task is figuring out what byte we're at
|
||||
// for instance if we want bit 27
|
||||
// 3*8 = 24 =< 27 < 4*8
|
||||
// so it's Math.floor(bit_idx0 / 8)
|
||||
let byte_idx0 : number = Math.floor(bit_idx0 / 8);
|
||||
// let's fetch the byte and work with that
|
||||
let the_byte : number = bits.bytes[byte_idx0];
|
||||
|
||||
// ok so let's go with 27 again
|
||||
// 27 = 3 mod 8
|
||||
// so we bitshift right by (8 - 3)
|
||||
// and then take the remainder dividing by 2
|
||||
// --B-_---- -> ----_---B -> 0000_000B
|
||||
let bsr : number = 8 - (bit_idx0 % 8);
|
||||
return (the_byte >> bsr) % 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Concatenate two bitstrings
|
||||
*/
|
||||
function
|
||||
bits_concat
|
||||
(bits1 : bits,
|
||||
bits2 : bits)
|
||||
: bits
|
||||
{
|
||||
let result_bit_length : number = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 : Uint8Array = bits1.bytes;
|
||||
let bytes2 : Uint8Array = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits : bits = bits_null(result_bit_length);
|
||||
let result_bytes : Uint8Array = result_bits.bytes;
|
||||
|
||||
// go along each byte in result, and compute the byte boundary
|
||||
for (let i = 0;
|
||||
i < result_bytes.length;
|
||||
i++)
|
||||
{
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// this is the bit index of the leftmost bit in this byte
|
||||
let start_bit_bi0 : number = i * 8;
|
||||
let next_start_bit_bi0 : number = start_bit_bi0 + 8;
|
||||
// does the bit at the beginning of this byte correspond to the first array?
|
||||
// strict comparison:
|
||||
// suppose i = 0,
|
||||
// suppose bit_length1 is 0
|
||||
// then this says no, go to second array
|
||||
// suppose bl1 = 1,
|
||||
// this says start at first array
|
||||
let start_bit_is_of_first_array : boolean = start_bit_bi0 < bits1.bit_length;
|
||||
// weak comparison:
|
||||
// suppose bit_length1 = 8
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// ^
|
||||
// start_bit_bi0 ^ next_start_bit_bi0
|
||||
let stop_bit_is_of_first_array : boolean = next_start_bit_bi0 <= bits1.bit_length;
|
||||
// is this a bytes1 byte
|
||||
let is_bytes1_byte : boolean = start_bit_is_of_first_array && stop_bit_is_of_first_array;
|
||||
let is_boundary_byte : boolean = start_bit_is_of_first_array && !stop_bit_is_of_first_array;
|
||||
|
||||
// need to work out the ping_pong bs up here because js is dumb and I
|
||||
// can't put lets between elseifs
|
||||
// alright, now we're in the case of only copying from the second array
|
||||
// we have two cases:
|
||||
// ping-pong:
|
||||
// ABCD_EFGH 1234_5678
|
||||
// - ---- ---
|
||||
// copying these bits
|
||||
// ping:
|
||||
// ABCD_EFGH <end>
|
||||
// - ---- 000
|
||||
//
|
||||
// how to distinguish between these two??
|
||||
//
|
||||
// we're in the ping case when the start_bit_bi0 corresponds to the
|
||||
// final byte of the second array
|
||||
//
|
||||
// ok
|
||||
//
|
||||
// we need to compute the bit address in the second array that
|
||||
// corresponds to the bit address at the beginning of this byte in the
|
||||
// result array
|
||||
let bits2_addr_bi0 : number = start_bit_bi0 - bits1.bit_length;
|
||||
// I think the variable is
|
||||
// bits_left_to_copy = bits2.bit_length - bit_addr2_bi0
|
||||
// no + 1 because the current bit is uncopied,
|
||||
// so if bit_addr2_bi0 = 7 and bits2.bit_length is 8, it means we
|
||||
// have the last bit to copy
|
||||
// cases:
|
||||
// bits_left_to_copy <= 0 ->
|
||||
// this would mean we have more bits to copy, but are out of
|
||||
// source bits. should be impossible if bits_null is correct
|
||||
// bits_left_to_copy <= 8 ->
|
||||
// this would mean we are going to fill this last byte in the
|
||||
// result array with the correct bits from array2, but how we
|
||||
// do this will depend on how those are arranged in bytes2
|
||||
// (whether we grab one or two bytes)
|
||||
//
|
||||
// this is the tricky case
|
||||
//
|
||||
// I think what matters here is the byte address in the second array
|
||||
// if we're on the last byte
|
||||
// 8 < bits_left_to_copy ->
|
||||
// this means we can safely grab two bytes from bytes2, and do
|
||||
// our bitshifting to make it correct
|
||||
//
|
||||
// FIXME
|
||||
let bits_left_to_copy : number = bits2.bit_length - bits2_addr_bi0;
|
||||
// no the variable that matters is which byte we're on in the result
|
||||
let this_bytes2_addr_i0 : number = Math.floor(bits2_addr_bi0 / 8);
|
||||
let next_bytes2_addr_i0 : number = this_bytes2_addr_i0 + 1;
|
||||
let bitshift_amt : number = bits1.bit_length % 8;
|
||||
|
||||
let ping : boolean = next_bytes2_addr_i0 === bytes2.length;
|
||||
|
||||
|
||||
// simple case: this is a byte from the first array
|
||||
// just copy it
|
||||
if (is_bytes1_byte)
|
||||
result_bytes[i] = bytes1[i];
|
||||
// this is a boundary byte
|
||||
// further cases:
|
||||
// second bit length is 0 ->
|
||||
// ABCD_EF-- <empty>
|
||||
// ^ starting here
|
||||
// just copy first byte and move along
|
||||
else if (is_boundary_byte && (bits2.bit_length === 0))
|
||||
result_bytes[i] = bytes1[i];
|
||||
// boundary byte, and there is at least one byte in the second array
|
||||
else if (is_boundary_byte)
|
||||
{
|
||||
// copy over the first byte
|
||||
result_bytes[i] = bytes1[i];
|
||||
// take the first byte from the second array
|
||||
let first_byte_of_second_array : number = bytes2[0];
|
||||
// bytes1:
|
||||
// ABCD_EF00
|
||||
// 6
|
||||
// bytes2:
|
||||
// 1234_5678
|
||||
// 0000_0012
|
||||
// and bitshift it right by that amount
|
||||
let bitshift_amt : number = bits1.bit_length % 8;
|
||||
result_bytes[i] ^= first_byte_of_second_array >> bitshift_amt;
|
||||
}
|
||||
// last byte of second array
|
||||
else if (ping)
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt);
|
||||
// ping-pong: not last byte of second array
|
||||
else
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt) ^ (bytes2[next_bytes2_addr_i0] << bitshift_amt);
|
||||
}
|
||||
|
||||
return {bit_length : result_bit_length,
|
||||
bytes : result_bytes};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,399 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode,
|
||||
byte_of_word,
|
||||
check_word,
|
||||
check_byte,
|
||||
words
|
||||
}
|
||||
|
||||
import * as safe from './safe.js';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(bytes : Uint8Array)
|
||||
: string
|
||||
{
|
||||
// initial accumulator
|
||||
let words_acc : Array<string> = [];
|
||||
|
||||
// go along each byte and look up the word
|
||||
// add it to the accumulator
|
||||
for (let this_byte of bytes)
|
||||
{
|
||||
let this_word = words[this_byte];
|
||||
words_acc.push(this_word);
|
||||
}
|
||||
|
||||
// prepend check word to phrase
|
||||
// yes craig it would be faster to do the check byte inline
|
||||
// the usage case here is 64 byte strings
|
||||
// double pass is not a big deal
|
||||
return check_word(bytes) + ' ' + words_acc.join(' ');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(faert : string)
|
||||
: safe.Safe<Uint8Array, string>
|
||||
{
|
||||
let all_words : Array<string> = faert.split(' ');
|
||||
let input_check_word : string = all_words[0];
|
||||
let input_words : Array<string> = all_words.slice(1)
|
||||
|
||||
// accumulator
|
||||
let computed_bytes : Array<number> = [];
|
||||
|
||||
// loop over words and figure out accumulator
|
||||
for (let this_input_word of input_words)
|
||||
{
|
||||
let maybe_this_byte : safe.Safe<number, string> = byte_of_word(this_input_word);
|
||||
// if the word is an allowable word, add it to the accumulator
|
||||
if (maybe_this_byte.ok)
|
||||
{
|
||||
let this_byte : number = maybe_this_byte.result;
|
||||
computed_bytes.push(this_byte);
|
||||
}
|
||||
// error case, propagate the error up the call chain
|
||||
else
|
||||
return maybe_this_byte;
|
||||
}
|
||||
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_bytes_u8s : Uint8Array = new Uint8Array(computed_bytes);
|
||||
let computed_check_word : string = check_word(computed_bytes_u8s);
|
||||
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
function
|
||||
byte_of_word
|
||||
(word: string)
|
||||
: safe.Safe<number, string>
|
||||
{
|
||||
for (let i=0; i<=255; i++)
|
||||
{
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
}
|
||||
return safe.error('invalid word: ' + word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
function
|
||||
check_word
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
return words[check_byte(bytes)];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
function
|
||||
check_byte
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let check_byte = 0;
|
||||
for (let this_byte of bytes)
|
||||
check_byte ^= this_byte;
|
||||
return check_byte;
|
||||
}
|
||||
|
||||
|
||||
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
"adjust",
|
||||
"agent",
|
||||
"air",
|
||||
"alert",
|
||||
"alpha",
|
||||
"anger",
|
||||
"answer",
|
||||
"any",
|
||||
"argue",
|
||||
"around",
|
||||
"assume",
|
||||
"asthma",
|
||||
"aunt",
|
||||
"awkward",
|
||||
"balcony",
|
||||
"barrel",
|
||||
"because",
|
||||
"behave",
|
||||
"bicycle",
|
||||
"bike",
|
||||
"blind",
|
||||
"blouse",
|
||||
"bonus",
|
||||
"bottom",
|
||||
"breeze",
|
||||
"brother",
|
||||
"bubble",
|
||||
"burger",
|
||||
"butter",
|
||||
"can",
|
||||
"cannon",
|
||||
"cargo",
|
||||
"catalog",
|
||||
"caught",
|
||||
"century",
|
||||
"chaos",
|
||||
"chicken",
|
||||
"churn",
|
||||
"cinnamon",
|
||||
"clever",
|
||||
"clock",
|
||||
"clown",
|
||||
"collect",
|
||||
"conduct",
|
||||
"convince",
|
||||
"correct",
|
||||
"cradle",
|
||||
"crane",
|
||||
"crime",
|
||||
"cross",
|
||||
"crystal",
|
||||
"curve",
|
||||
"daughter",
|
||||
"debris",
|
||||
"decrease",
|
||||
"deny",
|
||||
"deputy",
|
||||
"despair",
|
||||
"diesel",
|
||||
"dinner",
|
||||
"distance",
|
||||
"document",
|
||||
"donate",
|
||||
"drama",
|
||||
"drink",
|
||||
"dutch",
|
||||
"earth",
|
||||
"educate",
|
||||
"elbow",
|
||||
"employ",
|
||||
"endless",
|
||||
"enlist",
|
||||
"enter",
|
||||
"equal",
|
||||
"eternal",
|
||||
"example",
|
||||
"exhibit",
|
||||
"exotic",
|
||||
"faculty",
|
||||
"famous",
|
||||
"fault",
|
||||
"feature",
|
||||
"fiber",
|
||||
"filter",
|
||||
"firm",
|
||||
"flame",
|
||||
"flush",
|
||||
"follow",
|
||||
"forward",
|
||||
"frame",
|
||||
"fringe",
|
||||
"future",
|
||||
"game",
|
||||
"gate",
|
||||
"gift",
|
||||
"glare",
|
||||
"glow",
|
||||
"goat",
|
||||
"grab",
|
||||
"grief",
|
||||
"guilt",
|
||||
"hand",
|
||||
"hawk",
|
||||
"health",
|
||||
"hen",
|
||||
"hire",
|
||||
"honey",
|
||||
"hover",
|
||||
"hurry",
|
||||
"hybrid",
|
||||
"impose",
|
||||
"inch",
|
||||
"inherit",
|
||||
"injury",
|
||||
"install",
|
||||
"iron",
|
||||
"jazz",
|
||||
"joke",
|
||||
"just",
|
||||
"kit",
|
||||
"kitchen",
|
||||
"language",
|
||||
"laundry",
|
||||
"leader",
|
||||
"lend",
|
||||
"leopard",
|
||||
"license",
|
||||
"live",
|
||||
"lobster",
|
||||
"lounge",
|
||||
"magnet",
|
||||
"mail",
|
||||
"mansion",
|
||||
"mass",
|
||||
"math",
|
||||
"media",
|
||||
"message",
|
||||
"metal",
|
||||
"misery",
|
||||
"mix",
|
||||
"more",
|
||||
"mountain",
|
||||
"museum",
|
||||
"mutual",
|
||||
"narrow",
|
||||
"nerve",
|
||||
"next",
|
||||
"note",
|
||||
"obey",
|
||||
"obtain",
|
||||
"offer",
|
||||
"once",
|
||||
"orange",
|
||||
"ostrich",
|
||||
"over",
|
||||
"owner",
|
||||
"palace",
|
||||
"patch",
|
||||
"pave",
|
||||
"pen",
|
||||
"phrase",
|
||||
"piece",
|
||||
"pizza",
|
||||
"plunge",
|
||||
"polar",
|
||||
"pool",
|
||||
"power",
|
||||
"pretty",
|
||||
"private",
|
||||
"protect",
|
||||
"pulp",
|
||||
"purity",
|
||||
"quit",
|
||||
"quote",
|
||||
"raise",
|
||||
"razor",
|
||||
"recall",
|
||||
"region",
|
||||
"relief",
|
||||
"rent",
|
||||
"rescue",
|
||||
"review",
|
||||
"ride",
|
||||
"risk",
|
||||
"roof",
|
||||
"rough",
|
||||
"saddle",
|
||||
"salmon",
|
||||
"sand",
|
||||
"scene",
|
||||
"scrub",
|
||||
"season",
|
||||
"seek",
|
||||
"series",
|
||||
"shed",
|
||||
"shoe",
|
||||
"sick",
|
||||
"silent",
|
||||
"situate",
|
||||
"skill",
|
||||
"slide",
|
||||
"slush",
|
||||
"snack",
|
||||
"solar",
|
||||
"soul",
|
||||
"special",
|
||||
"sphere",
|
||||
"spot",
|
||||
"spy",
|
||||
"stairs",
|
||||
"stereo",
|
||||
"strategy",
|
||||
"stuff",
|
||||
"success",
|
||||
"sunny",
|
||||
"surge",
|
||||
"swear",
|
||||
"symptom",
|
||||
"tail",
|
||||
"ten",
|
||||
"tent",
|
||||
"theme",
|
||||
"thumb",
|
||||
"tiny",
|
||||
"toe",
|
||||
"tooth",
|
||||
"topic",
|
||||
"trade",
|
||||
"trash",
|
||||
"trophy",
|
||||
"truly",
|
||||
"tumble",
|
||||
"typical",
|
||||
"uncle",
|
||||
"unfair",
|
||||
"until",
|
||||
"upper",
|
||||
"useless",
|
||||
"van",
|
||||
"venue",
|
||||
"video",
|
||||
"visa",
|
||||
"vocal",
|
||||
"walk",
|
||||
"waste",
|
||||
"wedding",
|
||||
"weekend",
|
||||
"wide",
|
||||
"winner",
|
||||
"wise",
|
||||
"wood",
|
||||
"wrist",
|
||||
"zero"
|
||||
]
|
||||
@@ -0,0 +1,521 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
decoded_data,
|
||||
decode_result,
|
||||
decode,
|
||||
encode
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/**
|
||||
* Data that RLP can encode. Also the result of decoding.
|
||||
*/
|
||||
type decoded_data
|
||||
= Uint8Array
|
||||
| Array<decoded_data>;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decoding can have a remainder
|
||||
*/
|
||||
type decode_result
|
||||
= {decoded_data : decoded_data,
|
||||
remainder : Uint8Array};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(bytes: Uint8Array)
|
||||
: decode_result
|
||||
{
|
||||
// check the first byte
|
||||
let first_byte: number = bytes[0];
|
||||
let rest : Uint8Array = bytes.slice(1);
|
||||
// if the first byte is between 0 and 127, that is the data
|
||||
if
|
||||
(first_byte <= 127) {
|
||||
return dr(new Uint8Array([first_byte]), rest);
|
||||
}
|
||||
// if the first byte is between 128 and 183 = 128 + 55, it is a bytestring
|
||||
// and the length is Byte - 128
|
||||
else if
|
||||
(first_byte <= 183) {
|
||||
let payload_byte_length : number = first_byte - 128;
|
||||
let payload : Uint8Array = rest.slice(0, payload_byte_length);
|
||||
let rest2 : Uint8Array = rest.slice(payload_byte_length);
|
||||
return dr(payload, rest2);
|
||||
}
|
||||
// if the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
// bytestring. the byte length of bytestring is FirstByte - 183. Then pull
|
||||
// out the actual data
|
||||
else if
|
||||
(first_byte <= 191) {
|
||||
let byte_length_of_byte_length : number = first_byte - 183;
|
||||
let bytes_of_byte_length : Uint8Array = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length : number = bytes_to_number(bytes_of_byte_length);
|
||||
let bytes : Uint8Array = rest.slice(byte_length_of_byte_length,
|
||||
byte_length + byte_length_of_byte_length);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(bytes, rest2);
|
||||
}
|
||||
// If the first byte is between 192 and 247 = 192 + 55, it is a list. The
|
||||
// byte length of the list-payload is FirstByte - 192. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else if
|
||||
(first_byte <= 247) {
|
||||
let byte_length_of_list : number = first_byte - 192;
|
||||
let list_payload : Uint8Array = rest.slice(0, byte_length_of_list);
|
||||
let list : Array<decoded_data> = decode_list(list_payload);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length_of_list);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
// If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a
|
||||
// list. The byte length of the byte length of the list-payload is
|
||||
// FirstByte - 247. Then the byte length of the list. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else {
|
||||
let byte_length_of_byte_length : number = first_byte - 247;
|
||||
let bytes_of_byte_length : Uint8Array = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length : number = bytes_to_number(bytes_of_byte_length);
|
||||
let list_bytes : Uint8Array = rest.slice(byte_length_of_byte_length,
|
||||
byte_length + byte_length_of_byte_length);
|
||||
let list : Array<decoded_data> = decode_list(list_bytes);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a list payload (non-prefixed) into an `Array<decoded_data>`.
|
||||
*
|
||||
* Repeatedly decodes an element off the list until remainder is empty.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_list
|
||||
(bytes: Uint8Array)
|
||||
: Array<decoded_data>
|
||||
{
|
||||
let arr : Array<decoded_data> = [];
|
||||
while (bytes.length > 0) {
|
||||
// grab an item off the bytes
|
||||
let {decoded_data, remainder} = decode(bytes);
|
||||
// push it
|
||||
arr.push(decoded_data);
|
||||
// update bytes
|
||||
bytes = remainder;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert bytestring to number
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bytes_to_number
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let n : number = 0;
|
||||
for (let b of bytes)
|
||||
{
|
||||
n <<= 8;
|
||||
n += b;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Make a `decode_result` containing the two arguments
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
dr
|
||||
(x : decoded_data,
|
||||
y : Uint8Array)
|
||||
: decode_result
|
||||
{
|
||||
return {decoded_data : x,
|
||||
remainder : y};
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(data: decoded_data)
|
||||
: Uint8Array
|
||||
{
|
||||
// is it an array or data
|
||||
if
|
||||
(is_binary(data)) {
|
||||
return encode_binary(data as Uint8Array);
|
||||
}
|
||||
else if
|
||||
(is_list(data)) {
|
||||
return encode_list(data as Array<decoded_data>);
|
||||
}
|
||||
else {
|
||||
throw new Error('encode told to encode something that is not an array or a binary: ' + data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a binary into RLP
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_binary
|
||||
(bytes: Uint8Array)
|
||||
: Uint8Array
|
||||
{
|
||||
let len: number = bytes.length;
|
||||
// single byte case when the byte is between 0..127
|
||||
// result is the bytestring containing the byte itself
|
||||
if
|
||||
((len === 1) &&
|
||||
(bytes[0] <= 127)){
|
||||
return bytes;
|
||||
}
|
||||
// if the bytestring is 0..55 bytes long, the first byte in the result is
|
||||
// 128 + Length, the rest of the result bytestring is the input string
|
||||
else if
|
||||
(len <= 55) {
|
||||
// construct the result
|
||||
// <<128 + Len, Bytes/binary>>
|
||||
let result : Uint8Array = new Uint8Array(len + 1);
|
||||
// first byte is 128 + length
|
||||
result[0] = 128 + len;
|
||||
// copy input bytes into result
|
||||
for (let input_idx0 = 0;
|
||||
input_idx0 < len;
|
||||
input_idx0++)
|
||||
{
|
||||
let result_idx0 : number = input_idx0 + 1;
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the bytestring is more than 55 bytes long, the first byte is 183 +
|
||||
// ByteLengthOfByteLength, followed by the byte length, followed by the
|
||||
// bytes
|
||||
else {
|
||||
let len_bytes : Uint8Array = encode_unsigned(len);
|
||||
let len_bytes_length : number = len_bytes.length;
|
||||
// total array is
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
let result : Uint8Array = new Uint8Array(1 + len_bytes_length + len);
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 183 + len_bytes_length;
|
||||
// copy len_bytes into result
|
||||
for (let len_bytes_idx0 = 0;
|
||||
len_bytes_idx0 < len_bytes_length;
|
||||
len_bytes_idx0++)
|
||||
{
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = len_bytes_idx0 + 1;
|
||||
result[result_idx0] = len_bytes[len_bytes_idx0];
|
||||
}
|
||||
// copy original byte array into result
|
||||
for (let input_idx0 = 0;
|
||||
input_idx0 < len;
|
||||
input_idx0++)
|
||||
{
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = input_idx0 + (1 + len_bytes_length);
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
// finally, return the result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a list
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_list
|
||||
(list: Array<decoded_data>)
|
||||
: Uint8Array
|
||||
{
|
||||
// first encode every element in the list, then branch
|
||||
let payloads : Array<Uint8Array> = list.map(encode);
|
||||
let payload : Uint8Array = uint8arr_concat(payloads);
|
||||
let payload_size : number = payload.length;
|
||||
// if the payload size is in 0..55, then the first byte is 192 + payload
|
||||
// size, followed by the payload
|
||||
if
|
||||
(payload_size <= 55) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
let result : Uint8Array = new Uint8Array(1 + payload_size);
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 192 + payload_size;
|
||||
// copy the rest of the payload into result
|
||||
for (let payload_idx0 = 0;
|
||||
payload_idx0 < payload_size;
|
||||
payload_idx0++)
|
||||
{
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = payload_idx0 + 1;
|
||||
result[result_idx0] = payload[payload_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the payload size is greater than 55, the first byte is 247 +
|
||||
// size_of_payload_size, followed by the payload size, followed by the
|
||||
// payload
|
||||
else {
|
||||
// compute the payload size size
|
||||
let payload_size_bytes : Uint8Array = encode_unsigned(payload_size);
|
||||
let payload_size_size : number = payload_size_bytes.length;
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
let result: Uint8Array = new Uint8Array(1 + payload_size_size + payload_size);
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// first byte is 247 + payload_size_size
|
||||
result[0] = 247 + payload_size_size;
|
||||
// copy the payload_size_bytes into result
|
||||
for (let psb_idx0 = 0;
|
||||
psb_idx0 < payload_size_size;
|
||||
psb_idx0++)
|
||||
{
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 byte for this
|
||||
let result_idx0 : number = psb_idx0 + 1;
|
||||
result[result_idx0] = payload_size_bytes[psb_idx0];
|
||||
}
|
||||
// copy the payload into result
|
||||
for (let pb_idx0 = 0;
|
||||
pb_idx0 < payload_size;
|
||||
pb_idx0++)
|
||||
{
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 + payload_size_size bytes for this
|
||||
let result_idx0 : number = pb_idx0 + (1 + payload_size_size);
|
||||
result[result_idx0] = payload[pb_idx0];
|
||||
}
|
||||
// finally, return result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a number as a bytestring
|
||||
*
|
||||
* Not for general use, this assumes the input number is greater than 55
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_unsigned
|
||||
(n: number)
|
||||
: Uint8Array
|
||||
{
|
||||
// can assume that n initially is greater than 55
|
||||
// have to encode it in reverse order
|
||||
let arr : Array<number> = [];
|
||||
// repeated division by 256 with remainder
|
||||
//
|
||||
// example: suppose bign was 1234 and we were dividing by 10
|
||||
//
|
||||
// iteration 0:
|
||||
// bign = 1234
|
||||
// arr = []
|
||||
// ---
|
||||
// bign / 10 = 123
|
||||
// bign % 10 = 4
|
||||
// ---
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
//
|
||||
// iteration 1:
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
// ---
|
||||
// bign / 10 = 12
|
||||
// bign % 10 = 3
|
||||
// ---
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
//
|
||||
// iteration 2:
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
// ---
|
||||
// bign / 10 = 1
|
||||
// bign % 10 = 2
|
||||
// ---
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
//
|
||||
// iteration 3:
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
// ---
|
||||
// bign / 10 = 0
|
||||
// bign % 10 = 1
|
||||
// ---
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
//
|
||||
// iteration 4:
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
// ---
|
||||
// DONE
|
||||
while (n > 0) {
|
||||
arr.push(n % 256);
|
||||
n >>= 8;
|
||||
}
|
||||
// reverse and make into Uint8Array
|
||||
arr.reverse();
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* concatenate an array of `Uint8Array`s into a single Uint8Array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
uint8arr_concat
|
||||
(arrs: Array<Uint8Array>)
|
||||
: Uint8Array
|
||||
{
|
||||
// total length
|
||||
let total_len = arrs.reduce(// fold
|
||||
function (acc_len: number, this_uint8array: Uint8Array): number {
|
||||
return acc_len + this_uint8array.length;
|
||||
},
|
||||
// initial accumulator
|
||||
0);
|
||||
// start up result
|
||||
let result : Uint8Array = new Uint8Array(total_len);
|
||||
let result_idx0 : number = 0;
|
||||
// concatenate
|
||||
for (let this_uint8arr of arrs) {
|
||||
// bytewise copy of this uint8array
|
||||
for (let this_uint8arr_idx0 = 0;
|
||||
this_uint8arr_idx0 < this_uint8arr.length;
|
||||
this_uint8arr_idx0++)
|
||||
{
|
||||
// copy byte and increment result idx0
|
||||
result[result_idx0] = this_uint8arr[this_uint8arr_idx0];
|
||||
result_idx0++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns true if input is `instanceof Uint8Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
is_binary
|
||||
(x: any)
|
||||
: boolean
|
||||
{
|
||||
return (x instanceof Uint8Array);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* returns true if input is `instanceof Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
is_list
|
||||
(x: any)
|
||||
: boolean
|
||||
{
|
||||
return (x instanceof Array);
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
|
||||
export {
|
||||
Safe,
|
||||
Ok,
|
||||
Error,
|
||||
ok,
|
||||
error,
|
||||
unsafe
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Type that catches positive errors
|
||||
*/
|
||||
type Safe<ok_t, err_t>
|
||||
= Ok<ok_t>
|
||||
| Error<err_t>;
|
||||
|
||||
|
||||
/**
|
||||
* Ok type
|
||||
*/
|
||||
type Ok<ok_t>
|
||||
= {ok : true,
|
||||
result : ok_t};
|
||||
|
||||
|
||||
/**
|
||||
* Error type
|
||||
*/
|
||||
type Error<err_t>
|
||||
= {ok : false,
|
||||
error : err_t};
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
function
|
||||
ok
|
||||
<ok_t>
|
||||
(x : ok_t)
|
||||
: Ok<ok_t>
|
||||
{
|
||||
return {ok: true, result: x};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
function
|
||||
error
|
||||
<err_t>
|
||||
(x: err_t)
|
||||
: Error<err_t>
|
||||
{
|
||||
return {ok: false, error: x};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
function
|
||||
unsafe
|
||||
<ok_t, err_t>
|
||||
(x: Safe<ok_t, err_t>)
|
||||
: ok_t
|
||||
{
|
||||
if (x.ok)
|
||||
return x.result;
|
||||
else
|
||||
throw x.error;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import * as rlp from './jex_include/local-vdk-0.1.0/dist/rlp.js';
|
||||
declare type rlpcases = {
|
||||
decoded: rlp.decoded_data;
|
||||
encoded: Uint8Array;
|
||||
};
|
||||
export declare const cases: Array<rlpcases>;
|
||||
export {};
|
||||
+12568
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,5 @@
|
||||
{type, library}.
|
||||
{realm, local}.
|
||||
{name, vdk_cases}.
|
||||
{version, "0.1.0"}.
|
||||
{deps, ["local-vdk-0.1.0"]}.
|
||||
@@ -0,0 +1,12 @@
|
||||
export declare const rlp: {
|
||||
decoded: import("./jex_include/local-vdk-0.1.0/dist/rlp.js").decoded_data;
|
||||
encoded: Uint8Array;
|
||||
}[];
|
||||
export declare const base58: {
|
||||
encoded: string;
|
||||
decoded: Uint8Array;
|
||||
}[];
|
||||
export declare const base64: {
|
||||
decoded: Uint8Array;
|
||||
encoded: string;
|
||||
}[];
|
||||
+3657
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+12
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
declare function encode(binary: Uint8Array): string;
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
declare function decode(base58: string): Uint8Array;
|
||||
+308
@@ -0,0 +1,308 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
export { encode, decode };
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
function encode(binary) {
|
||||
let num_leading_zeros = nlz(binary);
|
||||
let rest = binary.slice(num_leading_zeros);
|
||||
let ones = encode_zeros(num_leading_zeros);
|
||||
let rest_b58 = encode_rest(rest);
|
||||
let result = ones + rest_b58;
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* count the number of leading zeros in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function nlz(bytes) {
|
||||
let n = 0;
|
||||
for (let this_byte of bytes) {
|
||||
if (0 === this_byte) {
|
||||
n++;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Generate a bunch of '1's for however many leading zeros there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_zeros(how_many) {
|
||||
let ones = '';
|
||||
for (let i = 1; i <= how_many; i++) {
|
||||
ones += '1';
|
||||
}
|
||||
return ones;
|
||||
}
|
||||
/**
|
||||
* Encode a Uint8Array that has no leading zeros
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_rest(bytes) {
|
||||
let bytes_bignum = bytes_to_bigint(bytes);
|
||||
let result = bignum_to_base58(bytes_bignum);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Convert a bytestring to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bytes_to_bigint(bytes) {
|
||||
let acc_bigint = 0n;
|
||||
for (let this_byte of bytes) {
|
||||
acc_bigint <<= 8n;
|
||||
acc_bigint += BigInt(this_byte);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
/**
|
||||
* Convert a BigInt to Base58
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bignum_to_base58(q) {
|
||||
let s = '';
|
||||
while (q !== 0n) {
|
||||
let this_n = q % 58n;
|
||||
q /= 58n;
|
||||
let this_b58_char = bigint_to_char(this_n);
|
||||
s = this_b58_char + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
function decode(base58) {
|
||||
let num_leading_ones = nlo(base58);
|
||||
let rest = base58.slice(num_leading_ones);
|
||||
let zeros = decode_ones(num_leading_ones);
|
||||
let rest_arr = decode_rest(rest);
|
||||
let pre_result = zeros.concat(rest_arr);
|
||||
return new Uint8Array(pre_result);
|
||||
}
|
||||
/**
|
||||
* count the number of leading 1 characters in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function nlo(base58) {
|
||||
let n = 0;
|
||||
for (let this_char of base58) {
|
||||
if ('1' === this_char) {
|
||||
n++;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Generate a bunch of '0's for however many leading ones there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_ones(how_many) {
|
||||
let zeros = [];
|
||||
for (let i = 1; i <= how_many; i++) {
|
||||
zeros.push(0);
|
||||
}
|
||||
return zeros;
|
||||
}
|
||||
/**
|
||||
* Decode a string that has no leading 1s
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_rest(base58) {
|
||||
let result_bignum = base58_to_bigint(base58);
|
||||
let result = bigint_to_base256(result_bignum);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Convert a base58 string to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function base58_to_bigint(base58) {
|
||||
let acc_bigint = 0n;
|
||||
for (let this_char of base58) {
|
||||
acc_bigint *= 58n;
|
||||
acc_bigint += char_to_bigint(this_char);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
/**
|
||||
* convert a bignum into a byte array
|
||||
*
|
||||
* @end
|
||||
*/
|
||||
function bigint_to_base256(q) {
|
||||
let arr_reverse = [];
|
||||
while (q !== 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return arr_reverse;
|
||||
}
|
||||
//=============================================================================
|
||||
// TRANSLATION TABLES
|
||||
//=============================================================================
|
||||
/**
|
||||
* Base58 integer -> character conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bigint_to_char(n) {
|
||||
switch (n) {
|
||||
case 0n: return '1';
|
||||
case 1n: return '2';
|
||||
case 2n: return '3';
|
||||
case 3n: return '4';
|
||||
case 4n: return '5';
|
||||
case 5n: return '6';
|
||||
case 6n: return '7';
|
||||
case 7n: return '8';
|
||||
case 8n: return '9';
|
||||
case 9n: return 'A';
|
||||
case 10n: return 'B';
|
||||
case 11n: return 'C';
|
||||
case 12n: return 'D';
|
||||
case 13n: return 'E';
|
||||
case 14n: return 'F';
|
||||
case 15n: return 'G';
|
||||
case 16n: return 'H';
|
||||
case 17n: return 'J';
|
||||
case 18n: return 'K';
|
||||
case 19n: return 'L';
|
||||
case 20n: return 'M';
|
||||
case 21n: return 'N';
|
||||
case 22n: return 'P';
|
||||
case 23n: return 'Q';
|
||||
case 24n: return 'R';
|
||||
case 25n: return 'S';
|
||||
case 26n: return 'T';
|
||||
case 27n: return 'U';
|
||||
case 28n: return 'V';
|
||||
case 29n: return 'W';
|
||||
case 30n: return 'X';
|
||||
case 31n: return 'Y';
|
||||
case 32n: return 'Z';
|
||||
case 33n: return 'a';
|
||||
case 34n: return 'b';
|
||||
case 35n: return 'c';
|
||||
case 36n: return 'd';
|
||||
case 37n: return 'e';
|
||||
case 38n: return 'f';
|
||||
case 39n: return 'g';
|
||||
case 40n: return 'h';
|
||||
case 41n: return 'i';
|
||||
case 42n: return 'j';
|
||||
case 43n: return 'k';
|
||||
case 44n: return 'm';
|
||||
case 45n: return 'n';
|
||||
case 46n: return 'o';
|
||||
case 47n: return 'p';
|
||||
case 48n: return 'q';
|
||||
case 49n: return 'r';
|
||||
case 50n: return 's';
|
||||
case 51n: return 't';
|
||||
case 52n: return 'u';
|
||||
case 53n: return 'v';
|
||||
case 54n: return 'w';
|
||||
case 55n: return 'x';
|
||||
case 56n: return 'y';
|
||||
case 57n: return 'z';
|
||||
default:
|
||||
throw new Error('invalid base58 bigint: ' + n);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Base58 character -> integer conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function char_to_bigint(s) {
|
||||
switch (s) {
|
||||
case '1': return 0n;
|
||||
case '2': return 1n;
|
||||
case '3': return 2n;
|
||||
case '4': return 3n;
|
||||
case '5': return 4n;
|
||||
case '6': return 5n;
|
||||
case '7': return 6n;
|
||||
case '8': return 7n;
|
||||
case '9': return 8n;
|
||||
case 'A': return 9n;
|
||||
case 'B': return 10n;
|
||||
case 'C': return 11n;
|
||||
case 'D': return 12n;
|
||||
case 'E': return 13n;
|
||||
case 'F': return 14n;
|
||||
case 'G': return 15n;
|
||||
case 'H': return 16n;
|
||||
case 'J': return 17n;
|
||||
case 'K': return 18n;
|
||||
case 'L': return 19n;
|
||||
case 'M': return 20n;
|
||||
case 'N': return 21n;
|
||||
case 'P': return 22n;
|
||||
case 'Q': return 23n;
|
||||
case 'R': return 24n;
|
||||
case 'S': return 25n;
|
||||
case 'T': return 26n;
|
||||
case 'U': return 27n;
|
||||
case 'V': return 28n;
|
||||
case 'W': return 29n;
|
||||
case 'X': return 30n;
|
||||
case 'Y': return 31n;
|
||||
case 'Z': return 32n;
|
||||
case 'a': return 33n;
|
||||
case 'b': return 34n;
|
||||
case 'c': return 35n;
|
||||
case 'd': return 36n;
|
||||
case 'e': return 37n;
|
||||
case 'f': return 38n;
|
||||
case 'g': return 39n;
|
||||
case 'h': return 40n;
|
||||
case 'i': return 41n;
|
||||
case 'j': return 42n;
|
||||
case 'k': return 43n;
|
||||
case 'm': return 44n;
|
||||
case 'n': return 45n;
|
||||
case 'o': return 46n;
|
||||
case 'p': return 47n;
|
||||
case 'q': return 48n;
|
||||
case 'r': return 49n;
|
||||
case 's': return 50n;
|
||||
case 't': return 51n;
|
||||
case 'u': return 52n;
|
||||
case 'v': return 53n;
|
||||
case 'w': return 54n;
|
||||
case 'x': return 55n;
|
||||
case 'y': return 56n;
|
||||
case 'z': return 57n;
|
||||
default:
|
||||
throw new Error('invalid base58 char: ' + s);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=b58.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+12
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
declare function encode(bytes: Uint8Array): string;
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
declare function decode(base64_str: string): Uint8Array;
|
||||
+507
@@ -0,0 +1,507 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
function encode(bytes) {
|
||||
// slice the array
|
||||
// length of head is a multiple of 3
|
||||
// treat the tail as a special case
|
||||
let { head, tail, tail_len } = slice3k(bytes);
|
||||
let head_str = encode_head(head);
|
||||
let tail_str = encode_tail(tail, tail_len);
|
||||
return head_str + tail_str;
|
||||
}
|
||||
/**
|
||||
* Take a Uint8Array, take the first 3k (k >= 0) bytes, put them in head, and
|
||||
* the remaining 0,1, or 2 bytes, put them in tail
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function slice3k(bytes) {
|
||||
let len = bytes.length;
|
||||
// too lazy to look up how to do integer division in js so this will do
|
||||
let tail_len = len % 3;
|
||||
let head_len = len - tail_len;
|
||||
// for slice:
|
||||
// first argument is the 0-index of the start
|
||||
// second - first is the length of the slice
|
||||
let head = bytes.slice(0, head_len);
|
||||
// empty second argument means go to the end
|
||||
let tail = bytes.slice(head_len);
|
||||
return { head: head,
|
||||
tail: tail,
|
||||
tail_len: tail_len };
|
||||
}
|
||||
/**
|
||||
* Encode a Uint8Array whose length is known to be a multiple of 3
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_head(head_bytes) {
|
||||
// can assume length of bytes is a multiple of 3
|
||||
// start index at 0
|
||||
// increment by 3
|
||||
let head_bytes_len = head_bytes.length;
|
||||
let max_idx0 = head_bytes_len - 1;
|
||||
let head_str_acc = '';
|
||||
for (let this_3slice_start_idx0 = 0; this_3slice_start_idx0 <= max_idx0; this_3slice_start_idx0 += 3) {
|
||||
let this_3slice_bytes = head_bytes.slice(this_3slice_start_idx0, this_3slice_start_idx0 + 3);
|
||||
let this_3slice_str = encode3(this_3slice_bytes);
|
||||
head_str_acc += this_3slice_str;
|
||||
}
|
||||
return head_str_acc;
|
||||
}
|
||||
/**
|
||||
* Encode a 3 bytes into base64 notation
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode3(bytes) {
|
||||
let b0 = bytes[0];
|
||||
let b1 = bytes[1];
|
||||
let b2 = bytes[2];
|
||||
// ABCDEFGH 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// ABCDEF GH1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
let n0 = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// b2 = abcdefgh
|
||||
// b2 >> 6 = ______ab
|
||||
// n2 = __5678ab
|
||||
let n2 = ((b1 % 16) << 2) + (b2 >> 6);
|
||||
// b2 = abcdefgh
|
||||
// 64 = _1______
|
||||
// n3 = __cdefgh
|
||||
let n3 = b2 % 64;
|
||||
// convert to chars
|
||||
let s0 = int2char(n0);
|
||||
let s1 = int2char(n1);
|
||||
let s2 = int2char(n2);
|
||||
let s3 = int2char(n3);
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + s3;
|
||||
}
|
||||
/**
|
||||
* Encode the final 0, 1, or 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_tail(tail_bytes, tail_len) {
|
||||
switch (tail_len) {
|
||||
case 0: return '';
|
||||
case 1: return encode1(tail_bytes);
|
||||
case 2: return encode2(tail_bytes);
|
||||
default:
|
||||
throw new Error('encode_tail with tail_len = ' + tail_len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a single byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode1(bytes) {
|
||||
let b0 = bytes[0];
|
||||
// n0 = __ABCDEF
|
||||
// b0 = ABCDEFGH
|
||||
// b0 >> 2 = __ABCDEF
|
||||
let n0 = b0 >> 2;
|
||||
// n1 = __GH____
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
let n1 = (b0 % 4) << 4;
|
||||
return int2char(n0) + int2char(n1) + '==';
|
||||
}
|
||||
/**
|
||||
* Encode two bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode2(bytes) {
|
||||
let b0 = bytes[0];
|
||||
let b1 = bytes[1];
|
||||
// ABCDEFGH 12345678
|
||||
// b0 b1
|
||||
// ABCDEF GH1234 5678__
|
||||
// n0 n1 n2
|
||||
let n0 = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// n2 = __5678__
|
||||
let n2 = (b1 % 16) << 2;
|
||||
// convert to chars
|
||||
let s0 = int2char(n0);
|
||||
let s1 = int2char(n1);
|
||||
let s2 = int2char(n2);
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + '=';
|
||||
}
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
function decode(base64_str) {
|
||||
// length of the string is guaranteed to be a multiple of 4
|
||||
// if the string is empty, return the empty array
|
||||
let len = base64_str.length;
|
||||
// this branching contains the implicit assertion that the length is a
|
||||
// multiple of 4. If this is not true, the bottom branch is triggered.
|
||||
// general case goes first because speeeeeed
|
||||
if ((4 < len)
|
||||
&& (0 === (len % 4))) {
|
||||
// split the head and tail
|
||||
let tail_start_idx0 = len - 4;
|
||||
let head_s = base64_str.slice(0, tail_start_idx0);
|
||||
let tail_s = base64_str.slice(tail_start_idx0);
|
||||
// Using arrays because Uint8Arrays don't have a concat operation
|
||||
let head_arr = decode_head(head_s);
|
||||
let tail_arr = decode_tail(tail_s);
|
||||
// silly to put these in variables but this is exactly the type of
|
||||
// situation where JS type insanity shows up
|
||||
//
|
||||
// see: i forgot
|
||||
// > [1,2,3] + [4,5,6]
|
||||
// '1,2,34,5,6'
|
||||
//
|
||||
// Originally, I used + like some sort of moron who codes in a sane
|
||||
// language
|
||||
//
|
||||
// seriously what is this language
|
||||
//
|
||||
// this is some clown behavior
|
||||
let total_arr = head_arr.concat(tail_arr);
|
||||
return new Uint8Array(total_arr);
|
||||
}
|
||||
// special case if the length is exactly 4
|
||||
else if (4 === len) {
|
||||
// it's just a tail
|
||||
return new Uint8Array(decode_tail(base64_str));
|
||||
}
|
||||
// empty string
|
||||
else if (0 === len) {
|
||||
return new Uint8Array([]);
|
||||
}
|
||||
else {
|
||||
throw new Error('base64 decode: invalid string length: ' + len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a string known to not have any padding
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_head(s) {
|
||||
// go 4 characters at a time
|
||||
let max_i0 = s.length - 1;
|
||||
let decoded_acc = [];
|
||||
for (let i0 = 0; i0 <= max_i0; i0 += 4) {
|
||||
let this_slice_s = s.slice(i0, i0 + 4);
|
||||
let this_slice_arr = decode3(this_slice_s);
|
||||
// update accumulator
|
||||
decoded_acc = decoded_acc.concat(this_slice_arr);
|
||||
}
|
||||
return decoded_acc;
|
||||
}
|
||||
/**
|
||||
* Decode 4 characters that correspond to either 3 bytes, 2, bytes, or 1 byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_tail(s) {
|
||||
// all that matters right now is the last 2 chars
|
||||
// s0, s1, s2, s3
|
||||
// 0 based indexing is so annoying
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
// braaaaaaaaaaaaaaaaaench
|
||||
// two equals signs means 1 byte
|
||||
if (('=' === s3) && ('=' === s2)) {
|
||||
return decode1(s);
|
||||
}
|
||||
// one equals sign means 2 bytes
|
||||
else if (('=' === s3)) {
|
||||
return decode2(s);
|
||||
}
|
||||
// 0 equals signs means 3 bytes
|
||||
else {
|
||||
return decode3(s);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 3 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode3(s) {
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
let n2 = char2int(s2);
|
||||
let n3 = char2int(s3);
|
||||
// abcdef gh1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
// abcdefgh 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678ab
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
// n2 = __5678ab
|
||||
// 4 = _____1__
|
||||
// n2 % 4 = ______ab
|
||||
// (n2 % 4) << 6 = ab______
|
||||
// n3 = __cdefgh
|
||||
let b2 = ((n2 % 4) << 6) + n3;
|
||||
return [b0, b1, b2];
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode2(s) {
|
||||
// xyz=
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
let s2 = s[2];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
let n2 = char2int(s2);
|
||||
// abcdef gh1234 5678__
|
||||
// n0 n1 n2
|
||||
// abcdefgh 12345678
|
||||
// b0 b1
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678__
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
return [b0, b1];
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode1(s) {
|
||||
// xy==
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
// abcdef gh____
|
||||
// n0 n1
|
||||
// abcdefgh
|
||||
// b0
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh____
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
return [b0];
|
||||
}
|
||||
// FIXME: these tables would *probably* be faster if they were made into objects
|
||||
/**
|
||||
* Conversion table for base64 encode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function int2char(n) {
|
||||
switch (n) {
|
||||
case 0: return 'A';
|
||||
case 1: return 'B';
|
||||
case 2: return 'C';
|
||||
case 3: return 'D';
|
||||
case 4: return 'E';
|
||||
case 5: return 'F';
|
||||
case 6: return 'G';
|
||||
case 7: return 'H';
|
||||
case 8: return 'I';
|
||||
case 9: return 'J';
|
||||
case 10: return 'K';
|
||||
case 11: return 'L';
|
||||
case 12: return 'M';
|
||||
case 13: return 'N';
|
||||
case 14: return 'O';
|
||||
case 15: return 'P';
|
||||
case 16: return 'Q';
|
||||
case 17: return 'R';
|
||||
case 18: return 'S';
|
||||
case 19: return 'T';
|
||||
case 20: return 'U';
|
||||
case 21: return 'V';
|
||||
case 22: return 'W';
|
||||
case 23: return 'X';
|
||||
case 24: return 'Y';
|
||||
case 25: return 'Z';
|
||||
case 26: return 'a';
|
||||
case 27: return 'b';
|
||||
case 28: return 'c';
|
||||
case 29: return 'd';
|
||||
case 30: return 'e';
|
||||
case 31: return 'f';
|
||||
case 32: return 'g';
|
||||
case 33: return 'h';
|
||||
case 34: return 'i';
|
||||
case 35: return 'j';
|
||||
case 36: return 'k';
|
||||
case 37: return 'l';
|
||||
case 38: return 'm';
|
||||
case 39: return 'n';
|
||||
case 40: return 'o';
|
||||
case 41: return 'p';
|
||||
case 42: return 'q';
|
||||
case 43: return 'r';
|
||||
case 44: return 's';
|
||||
case 45: return 't';
|
||||
case 46: return 'u';
|
||||
case 47: return 'v';
|
||||
case 48: return 'w';
|
||||
case 49: return 'x';
|
||||
case 50: return 'y';
|
||||
case 51: return 'z';
|
||||
case 52: return '0';
|
||||
case 53: return '1';
|
||||
case 54: return '2';
|
||||
case 55: return '3';
|
||||
case 56: return '4';
|
||||
case 57: return '5';
|
||||
case 58: return '6';
|
||||
case 59: return '7';
|
||||
case 60: return '8';
|
||||
case 61: return '9';
|
||||
case 62: return '+';
|
||||
case 63: return '/';
|
||||
default: throw new Error("invalid base64 encode byte: " + n);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Conversion table for base64 decode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function char2int(s) {
|
||||
switch (s) {
|
||||
case 'A': return 0;
|
||||
case 'B': return 1;
|
||||
case 'C': return 2;
|
||||
case 'D': return 3;
|
||||
case 'E': return 4;
|
||||
case 'F': return 5;
|
||||
case 'G': return 6;
|
||||
case 'H': return 7;
|
||||
case 'I': return 8;
|
||||
case 'J': return 9;
|
||||
case 'K': return 10;
|
||||
case 'L': return 11;
|
||||
case 'M': return 12;
|
||||
case 'N': return 13;
|
||||
case 'O': return 14;
|
||||
case 'P': return 15;
|
||||
case 'Q': return 16;
|
||||
case 'R': return 17;
|
||||
case 'S': return 18;
|
||||
case 'T': return 19;
|
||||
case 'U': return 20;
|
||||
case 'V': return 21;
|
||||
case 'W': return 22;
|
||||
case 'X': return 23;
|
||||
case 'Y': return 24;
|
||||
case 'Z': return 25;
|
||||
case 'a': return 26;
|
||||
case 'b': return 27;
|
||||
case 'c': return 28;
|
||||
case 'd': return 29;
|
||||
case 'e': return 30;
|
||||
case 'f': return 31;
|
||||
case 'g': return 32;
|
||||
case 'h': return 33;
|
||||
case 'i': return 34;
|
||||
case 'j': return 35;
|
||||
case 'k': return 36;
|
||||
case 'l': return 37;
|
||||
case 'm': return 38;
|
||||
case 'n': return 39;
|
||||
case 'o': return 40;
|
||||
case 'p': return 41;
|
||||
case 'q': return 42;
|
||||
case 'r': return 43;
|
||||
case 's': return 44;
|
||||
case 't': return 45;
|
||||
case 'u': return 46;
|
||||
case 'v': return 47;
|
||||
case 'w': return 48;
|
||||
case 'x': return 49;
|
||||
case 'y': return 50;
|
||||
case 'z': return 51;
|
||||
case '0': return 52;
|
||||
case '1': return 53;
|
||||
case '2': return 54;
|
||||
case '3': return 55;
|
||||
case '4': return 56;
|
||||
case '5': return 57;
|
||||
case '6': return 58;
|
||||
case '7': return 59;
|
||||
case '8': return 60;
|
||||
case '9': return 61;
|
||||
case '+': return 62;
|
||||
case '/': return 63;
|
||||
default: throw new Error("invalid base64 character: " + s);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=b64.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+28
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { bytes_to_bigint, bigint_to_bytes, concat, strong_rand_bytes };
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
declare function concat(arr1: Uint8Array, arr2: Uint8Array): Uint8Array;
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
declare function strong_rand_bytes(how_many: number): Uint8Array;
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
declare function bytes_to_bigint(bytes: Uint8Array): bigint;
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
declare function bigint_to_bytes(q: bigint): Uint8Array;
|
||||
+266
@@ -0,0 +1,266 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { bytes_to_bigint, bigint_to_bytes, concat, strong_rand_bytes };
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
function concat(arr1, arr2) {
|
||||
let len1 = arr1.length;
|
||||
let len2 = arr2.length;
|
||||
let arr1_idx0_offset = 0;
|
||||
let arr2_idx0_offset = len1;
|
||||
let result_len = len1 + len2;
|
||||
let result = new Uint8Array(result_len);
|
||||
// copy first array into result
|
||||
for (let arr1_idx0 = 0; arr1_idx0 < len1; arr1_idx0++) {
|
||||
// no offset here
|
||||
let result_idx0 = arr1_idx0 + arr1_idx0_offset;
|
||||
result[result_idx0] = arr1[arr1_idx0];
|
||||
}
|
||||
// copy second array into result
|
||||
for (let arr2_idx0 = 0; arr2_idx0 < len2; arr2_idx0++) {
|
||||
// offset by the length of the first array
|
||||
let result_idx0 = arr2_idx0 + arr2_idx0_offset;
|
||||
result[result_idx0] = arr2[arr2_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
function strong_rand_bytes(how_many) {
|
||||
let arr = new Uint8Array(how_many);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
function bytes_to_bigint(bytes) {
|
||||
let n = 0n;
|
||||
for (let b of bytes) {
|
||||
// move first, then add
|
||||
// otherwise it ends on a move
|
||||
// imperative languages are for losers
|
||||
n <<= 8n;
|
||||
n += BigInt(b);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
function bigint_to_bytes(q) {
|
||||
if (q < 0n) {
|
||||
throw new Error('q < 0n: ' + q);
|
||||
}
|
||||
let arr_reverse = [];
|
||||
while (q > 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return new Uint8Array(arr_reverse);
|
||||
}
|
||||
/**
|
||||
* Get an uninitialized bitstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bits_null(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 0.
|
||||
*/
|
||||
function bits_zeros(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
for (let i0 = 0; i0 < byte_length; i0++) {
|
||||
result[i0] = 0;
|
||||
}
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 1.
|
||||
*/
|
||||
function bits_ones(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
// fill everything except the last byte with 255s
|
||||
for (let i0 = 0; i0 < (byte_length - 1); i0++) {
|
||||
result[i0] = 255;
|
||||
}
|
||||
// alright so the last byte
|
||||
// ok so the number of leading 0s is
|
||||
// 8 - (bit_length % 8)
|
||||
let num_trailing_zero_bits = 8 - (bit_length % 8);
|
||||
// the trailing byte is 255 << that
|
||||
// e.g. 3 trailing 0s
|
||||
// 1111_1111 -> 1111_1000
|
||||
let last_byte = 255 << num_trailing_zero_bits;
|
||||
let last_byte_idx0 = byte_length - 1;
|
||||
result[last_byte_idx0] = last_byte;
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get the bit at a given 0-index
|
||||
*/
|
||||
function bits_i0th(bit_idx0, bits) {
|
||||
// first task is figuring out what byte we're at
|
||||
// for instance if we want bit 27
|
||||
// 3*8 = 24 =< 27 < 4*8
|
||||
// so it's Math.floor(bit_idx0 / 8)
|
||||
let byte_idx0 = Math.floor(bit_idx0 / 8);
|
||||
// let's fetch the byte and work with that
|
||||
let the_byte = bits.bytes[byte_idx0];
|
||||
// ok so let's go with 27 again
|
||||
// 27 = 3 mod 8
|
||||
// so we bitshift right by (8 - 3)
|
||||
// and then take the remainder dividing by 2
|
||||
// --B-_---- -> ----_---B -> 0000_000B
|
||||
let bsr = 8 - (bit_idx0 % 8);
|
||||
return (the_byte >> bsr) % 2;
|
||||
}
|
||||
/**
|
||||
* Concatenate two bitstrings
|
||||
*/
|
||||
function bits_concat(bits1, bits2) {
|
||||
let result_bit_length = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 = bits1.bytes;
|
||||
let bytes2 = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits = bits_null(result_bit_length);
|
||||
let result_bytes = result_bits.bytes;
|
||||
// go along each byte in result, and compute the byte boundary
|
||||
for (let i = 0; i < result_bytes.length; i++) {
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// this is the bit index of the leftmost bit in this byte
|
||||
let start_bit_bi0 = i * 8;
|
||||
let next_start_bit_bi0 = start_bit_bi0 + 8;
|
||||
// does the bit at the beginning of this byte correspond to the first array?
|
||||
// strict comparison:
|
||||
// suppose i = 0,
|
||||
// suppose bit_length1 is 0
|
||||
// then this says no, go to second array
|
||||
// suppose bl1 = 1,
|
||||
// this says start at first array
|
||||
let start_bit_is_of_first_array = start_bit_bi0 < bits1.bit_length;
|
||||
// weak comparison:
|
||||
// suppose bit_length1 = 8
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// ^
|
||||
// start_bit_bi0 ^ next_start_bit_bi0
|
||||
let stop_bit_is_of_first_array = next_start_bit_bi0 <= bits1.bit_length;
|
||||
// is this a bytes1 byte
|
||||
let is_bytes1_byte = start_bit_is_of_first_array && stop_bit_is_of_first_array;
|
||||
let is_boundary_byte = start_bit_is_of_first_array && !stop_bit_is_of_first_array;
|
||||
// need to work out the ping_pong bs up here because js is dumb and I
|
||||
// can't put lets between elseifs
|
||||
// alright, now we're in the case of only copying from the second array
|
||||
// we have two cases:
|
||||
// ping-pong:
|
||||
// ABCD_EFGH 1234_5678
|
||||
// - ---- ---
|
||||
// copying these bits
|
||||
// ping:
|
||||
// ABCD_EFGH <end>
|
||||
// - ---- 000
|
||||
//
|
||||
// how to distinguish between these two??
|
||||
//
|
||||
// we're in the ping case when the start_bit_bi0 corresponds to the
|
||||
// final byte of the second array
|
||||
//
|
||||
// ok
|
||||
//
|
||||
// we need to compute the bit address in the second array that
|
||||
// corresponds to the bit address at the beginning of this byte in the
|
||||
// result array
|
||||
let bits2_addr_bi0 = start_bit_bi0 - bits1.bit_length;
|
||||
// I think the variable is
|
||||
// bits_left_to_copy = bits2.bit_length - bit_addr2_bi0
|
||||
// no + 1 because the current bit is uncopied,
|
||||
// so if bit_addr2_bi0 = 7 and bits2.bit_length is 8, it means we
|
||||
// have the last bit to copy
|
||||
// cases:
|
||||
// bits_left_to_copy <= 0 ->
|
||||
// this would mean we have more bits to copy, but are out of
|
||||
// source bits. should be impossible if bits_null is correct
|
||||
// bits_left_to_copy <= 8 ->
|
||||
// this would mean we are going to fill this last byte in the
|
||||
// result array with the correct bits from array2, but how we
|
||||
// do this will depend on how those are arranged in bytes2
|
||||
// (whether we grab one or two bytes)
|
||||
//
|
||||
// this is the tricky case
|
||||
//
|
||||
// I think what matters here is the byte address in the second array
|
||||
// if we're on the last byte
|
||||
// 8 < bits_left_to_copy ->
|
||||
// this means we can safely grab two bytes from bytes2, and do
|
||||
// our bitshifting to make it correct
|
||||
//
|
||||
// FIXME
|
||||
let bits_left_to_copy = bits2.bit_length - bits2_addr_bi0;
|
||||
// no the variable that matters is which byte we're on in the result
|
||||
let this_bytes2_addr_i0 = Math.floor(bits2_addr_bi0 / 8);
|
||||
let next_bytes2_addr_i0 = this_bytes2_addr_i0 + 1;
|
||||
let bitshift_amt = bits1.bit_length % 8;
|
||||
let ping = next_bytes2_addr_i0 === bytes2.length;
|
||||
// simple case: this is a byte from the first array
|
||||
// just copy it
|
||||
if (is_bytes1_byte)
|
||||
result_bytes[i] = bytes1[i];
|
||||
// this is a boundary byte
|
||||
// further cases:
|
||||
// second bit length is 0 ->
|
||||
// ABCD_EF-- <empty>
|
||||
// ^ starting here
|
||||
// just copy first byte and move along
|
||||
else if (is_boundary_byte && (bits2.bit_length === 0))
|
||||
result_bytes[i] = bytes1[i];
|
||||
// boundary byte, and there is at least one byte in the second array
|
||||
else if (is_boundary_byte) {
|
||||
// copy over the first byte
|
||||
result_bytes[i] = bytes1[i];
|
||||
// take the first byte from the second array
|
||||
let first_byte_of_second_array = bytes2[0];
|
||||
// bytes1:
|
||||
// ABCD_EF00
|
||||
// 6
|
||||
// bytes2:
|
||||
// 1234_5678
|
||||
// 0000_0012
|
||||
// and bitshift it right by that amount
|
||||
let bitshift_amt = bits1.bit_length % 8;
|
||||
result_bytes[i] ^= first_byte_of_second_array >> bitshift_amt;
|
||||
}
|
||||
// last byte of second array
|
||||
else if (ping)
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt);
|
||||
// ping-pong: not last byte of second array
|
||||
else
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt) ^ (bytes2[next_bytes2_addr_i0] << bitshift_amt);
|
||||
}
|
||||
return { bit_length: result_bit_length,
|
||||
bytes: result_bytes };
|
||||
}
|
||||
//# sourceMappingURL=bin.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+30
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { encode, decode, byte_of_word, check_word, check_byte, words };
|
||||
import * as safe from './safe.js';
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
declare function encode(bytes: Uint8Array): string;
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
declare function decode(faert: string): safe.Safe<Uint8Array, string>;
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
declare function byte_of_word(word: string): safe.Safe<number, string>;
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
declare function check_word(bytes: Uint8Array): string;
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
declare function check_byte(bytes: Uint8Array): number;
|
||||
declare let words: string[];
|
||||
+344
@@ -0,0 +1,344 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { encode, decode, byte_of_word, check_word, check_byte, words };
|
||||
import * as safe from './safe.js';
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
function encode(bytes) {
|
||||
// initial accumulator
|
||||
let words_acc = [];
|
||||
// go along each byte and look up the word
|
||||
// add it to the accumulator
|
||||
for (let this_byte of bytes) {
|
||||
let this_word = words[this_byte];
|
||||
words_acc.push(this_word);
|
||||
}
|
||||
// prepend check word to phrase
|
||||
// yes craig it would be faster to do the check byte inline
|
||||
// the usage case here is 64 byte strings
|
||||
// double pass is not a big deal
|
||||
return check_word(bytes) + ' ' + words_acc.join(' ');
|
||||
}
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
function decode(faert) {
|
||||
let all_words = faert.split(' ');
|
||||
let input_check_word = all_words[0];
|
||||
let input_words = all_words.slice(1);
|
||||
// accumulator
|
||||
let computed_bytes = [];
|
||||
// loop over words and figure out accumulator
|
||||
for (let this_input_word of input_words) {
|
||||
let maybe_this_byte = byte_of_word(this_input_word);
|
||||
// if the word is an allowable word, add it to the accumulator
|
||||
if (maybe_this_byte.ok) {
|
||||
let this_byte = maybe_this_byte.result;
|
||||
computed_bytes.push(this_byte);
|
||||
}
|
||||
// error case, propagate the error up the call chain
|
||||
else
|
||||
return maybe_this_byte;
|
||||
}
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_bytes_u8s = new Uint8Array(computed_bytes);
|
||||
let computed_check_word = check_word(computed_bytes_u8s);
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
}
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
function byte_of_word(word) {
|
||||
for (let i = 0; i <= 255; i++) {
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
}
|
||||
return safe.error('invalid word: ' + word);
|
||||
}
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
function check_word(bytes) {
|
||||
return words[check_byte(bytes)];
|
||||
}
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
function check_byte(bytes) {
|
||||
let check_byte = 0;
|
||||
for (let this_byte of bytes)
|
||||
check_byte ^= this_byte;
|
||||
return check_byte;
|
||||
}
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
"adjust",
|
||||
"agent",
|
||||
"air",
|
||||
"alert",
|
||||
"alpha",
|
||||
"anger",
|
||||
"answer",
|
||||
"any",
|
||||
"argue",
|
||||
"around",
|
||||
"assume",
|
||||
"asthma",
|
||||
"aunt",
|
||||
"awkward",
|
||||
"balcony",
|
||||
"barrel",
|
||||
"because",
|
||||
"behave",
|
||||
"bicycle",
|
||||
"bike",
|
||||
"blind",
|
||||
"blouse",
|
||||
"bonus",
|
||||
"bottom",
|
||||
"breeze",
|
||||
"brother",
|
||||
"bubble",
|
||||
"burger",
|
||||
"butter",
|
||||
"can",
|
||||
"cannon",
|
||||
"cargo",
|
||||
"catalog",
|
||||
"caught",
|
||||
"century",
|
||||
"chaos",
|
||||
"chicken",
|
||||
"churn",
|
||||
"cinnamon",
|
||||
"clever",
|
||||
"clock",
|
||||
"clown",
|
||||
"collect",
|
||||
"conduct",
|
||||
"convince",
|
||||
"correct",
|
||||
"cradle",
|
||||
"crane",
|
||||
"crime",
|
||||
"cross",
|
||||
"crystal",
|
||||
"curve",
|
||||
"daughter",
|
||||
"debris",
|
||||
"decrease",
|
||||
"deny",
|
||||
"deputy",
|
||||
"despair",
|
||||
"diesel",
|
||||
"dinner",
|
||||
"distance",
|
||||
"document",
|
||||
"donate",
|
||||
"drama",
|
||||
"drink",
|
||||
"dutch",
|
||||
"earth",
|
||||
"educate",
|
||||
"elbow",
|
||||
"employ",
|
||||
"endless",
|
||||
"enlist",
|
||||
"enter",
|
||||
"equal",
|
||||
"eternal",
|
||||
"example",
|
||||
"exhibit",
|
||||
"exotic",
|
||||
"faculty",
|
||||
"famous",
|
||||
"fault",
|
||||
"feature",
|
||||
"fiber",
|
||||
"filter",
|
||||
"firm",
|
||||
"flame",
|
||||
"flush",
|
||||
"follow",
|
||||
"forward",
|
||||
"frame",
|
||||
"fringe",
|
||||
"future",
|
||||
"game",
|
||||
"gate",
|
||||
"gift",
|
||||
"glare",
|
||||
"glow",
|
||||
"goat",
|
||||
"grab",
|
||||
"grief",
|
||||
"guilt",
|
||||
"hand",
|
||||
"hawk",
|
||||
"health",
|
||||
"hen",
|
||||
"hire",
|
||||
"honey",
|
||||
"hover",
|
||||
"hurry",
|
||||
"hybrid",
|
||||
"impose",
|
||||
"inch",
|
||||
"inherit",
|
||||
"injury",
|
||||
"install",
|
||||
"iron",
|
||||
"jazz",
|
||||
"joke",
|
||||
"just",
|
||||
"kit",
|
||||
"kitchen",
|
||||
"language",
|
||||
"laundry",
|
||||
"leader",
|
||||
"lend",
|
||||
"leopard",
|
||||
"license",
|
||||
"live",
|
||||
"lobster",
|
||||
"lounge",
|
||||
"magnet",
|
||||
"mail",
|
||||
"mansion",
|
||||
"mass",
|
||||
"math",
|
||||
"media",
|
||||
"message",
|
||||
"metal",
|
||||
"misery",
|
||||
"mix",
|
||||
"more",
|
||||
"mountain",
|
||||
"museum",
|
||||
"mutual",
|
||||
"narrow",
|
||||
"nerve",
|
||||
"next",
|
||||
"note",
|
||||
"obey",
|
||||
"obtain",
|
||||
"offer",
|
||||
"once",
|
||||
"orange",
|
||||
"ostrich",
|
||||
"over",
|
||||
"owner",
|
||||
"palace",
|
||||
"patch",
|
||||
"pave",
|
||||
"pen",
|
||||
"phrase",
|
||||
"piece",
|
||||
"pizza",
|
||||
"plunge",
|
||||
"polar",
|
||||
"pool",
|
||||
"power",
|
||||
"pretty",
|
||||
"private",
|
||||
"protect",
|
||||
"pulp",
|
||||
"purity",
|
||||
"quit",
|
||||
"quote",
|
||||
"raise",
|
||||
"razor",
|
||||
"recall",
|
||||
"region",
|
||||
"relief",
|
||||
"rent",
|
||||
"rescue",
|
||||
"review",
|
||||
"ride",
|
||||
"risk",
|
||||
"roof",
|
||||
"rough",
|
||||
"saddle",
|
||||
"salmon",
|
||||
"sand",
|
||||
"scene",
|
||||
"scrub",
|
||||
"season",
|
||||
"seek",
|
||||
"series",
|
||||
"shed",
|
||||
"shoe",
|
||||
"sick",
|
||||
"silent",
|
||||
"situate",
|
||||
"skill",
|
||||
"slide",
|
||||
"slush",
|
||||
"snack",
|
||||
"solar",
|
||||
"soul",
|
||||
"special",
|
||||
"sphere",
|
||||
"spot",
|
||||
"spy",
|
||||
"stairs",
|
||||
"stereo",
|
||||
"strategy",
|
||||
"stuff",
|
||||
"success",
|
||||
"sunny",
|
||||
"surge",
|
||||
"swear",
|
||||
"symptom",
|
||||
"tail",
|
||||
"ten",
|
||||
"tent",
|
||||
"theme",
|
||||
"thumb",
|
||||
"tiny",
|
||||
"toe",
|
||||
"tooth",
|
||||
"topic",
|
||||
"trade",
|
||||
"trash",
|
||||
"trophy",
|
||||
"truly",
|
||||
"tumble",
|
||||
"typical",
|
||||
"uncle",
|
||||
"unfair",
|
||||
"until",
|
||||
"upper",
|
||||
"useless",
|
||||
"van",
|
||||
"venue",
|
||||
"video",
|
||||
"visa",
|
||||
"vocal",
|
||||
"walk",
|
||||
"waste",
|
||||
"wedding",
|
||||
"weekend",
|
||||
"wide",
|
||||
"winner",
|
||||
"wise",
|
||||
"wood",
|
||||
"wrist",
|
||||
"zero"
|
||||
];
|
||||
//# sourceMappingURL=faert.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"faert.js","sourceRoot":"","sources":["../src/faert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACH,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,KAAK,EACR,CAAA;AAED,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC;;GAEG;AACH,SACA,MAAM,CACD,KAAkB;IAGnB,sBAAsB;IACtB,IAAI,SAAS,GAAoB,EAAE,CAAC;IAEpC,0CAA0C;IAC1C,4BAA4B;IAC5B,KAAK,IAAI,SAAS,IAAI,KAAK,EAC3B;QACI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,+BAA+B;IAC/B,2DAA2D;IAC3D,yCAAyC;IACzC,gCAAgC;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AAID;;GAEG;AACH,SACA,MAAM,CACD,KAAc;IAGf,IAAI,SAAS,GAA0B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,gBAAgB,GAAmB,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,WAAW,GAAwB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEzD,cAAc;IACd,IAAI,cAAc,GAAmB,EAAE,CAAC;IAExC,6CAA6C;IAC7C,KAAK,IAAI,eAAe,IAAI,WAAW,EACvC;QACI,IAAI,eAAe,GAA+B,YAAY,CAAC,eAAe,CAAC,CAAC;QAChF,8DAA8D;QAC9D,IAAI,eAAe,CAAC,EAAE,EACtB;YACI,IAAI,SAAS,GAAY,eAAe,CAAC,MAAM,CAAC;YAChD,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClC;QACD,oDAAoD;;YAEhD,OAAO,eAAe,CAAC;KAC9B;IAED,8DAA8D;IAC9D,yBAAyB;IACzB,IAAI,kBAAkB,GAAiB,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,mBAAmB,GAAY,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAElE,yBAAyB;IACzB,mCAAmC;IACnC,IAAI,mBAAmB,KAAK,gBAAgB;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACvC,6BAA6B;;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,yCAAyC,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;AACvI,CAAC;AAID;;GAEG;AACH,SACA,YAAY,CACP,IAAY;IAGb,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAE,GAAG,EAAE,CAAC,EAAE,EACzB;QACI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACzB;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAC/C,CAAC;AAID;;GAEG;AACH,SACA,UAAU,CACL,KAAiB;IAGlB,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAGD;;GAEG;AACH,SACA,UAAU,CACL,KAAiB;IAGlB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,SAAS,IAAI,KAAK;QACvB,UAAU,IAAI,SAAS,CAAC;IAC5B,OAAO,UAAU,CAAC;AACtB,CAAC;AAID,IAAI,KAAK,GAAG;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;CACT,CAAA"}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { decoded_data, decode_result, decode, encode };
|
||||
/**
|
||||
* Data that RLP can encode. Also the result of decoding.
|
||||
*/
|
||||
declare type decoded_data = Uint8Array | Array<decoded_data>;
|
||||
/**
|
||||
* Decoding can have a remainder
|
||||
*/
|
||||
declare type decode_result = {
|
||||
decoded_data: decoded_data;
|
||||
remainder: Uint8Array;
|
||||
};
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
declare function decode(bytes: Uint8Array): decode_result;
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
declare function encode(data: decoded_data): Uint8Array;
|
||||
+382
@@ -0,0 +1,382 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { decode, encode };
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
function decode(bytes) {
|
||||
// check the first byte
|
||||
let first_byte = bytes[0];
|
||||
let rest = bytes.slice(1);
|
||||
// if the first byte is between 0 and 127, that is the data
|
||||
if (first_byte <= 127) {
|
||||
return dr(new Uint8Array([first_byte]), rest);
|
||||
}
|
||||
// if the first byte is between 128 and 183 = 128 + 55, it is a bytestring
|
||||
// and the length is Byte - 128
|
||||
else if (first_byte <= 183) {
|
||||
let payload_byte_length = first_byte - 128;
|
||||
let payload = rest.slice(0, payload_byte_length);
|
||||
let rest2 = rest.slice(payload_byte_length);
|
||||
return dr(payload, rest2);
|
||||
}
|
||||
// if the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
// bytestring. the byte length of bytestring is FirstByte - 183. Then pull
|
||||
// out the actual data
|
||||
else if (first_byte <= 191) {
|
||||
let byte_length_of_byte_length = first_byte - 183;
|
||||
let bytes_of_byte_length = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length = bytes_to_number(bytes_of_byte_length);
|
||||
let bytes = rest.slice(byte_length_of_byte_length, byte_length + byte_length_of_byte_length);
|
||||
let rest2 = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(bytes, rest2);
|
||||
}
|
||||
// If the first byte is between 192 and 247 = 192 + 55, it is a list. The
|
||||
// byte length of the list-payload is FirstByte - 192. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else if (first_byte <= 247) {
|
||||
let byte_length_of_list = first_byte - 192;
|
||||
let list_payload = rest.slice(0, byte_length_of_list);
|
||||
let list = decode_list(list_payload);
|
||||
let rest2 = rest.slice(byte_length_of_list);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
// If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a
|
||||
// list. The byte length of the byte length of the list-payload is
|
||||
// FirstByte - 247. Then the byte length of the list. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else {
|
||||
let byte_length_of_byte_length = first_byte - 247;
|
||||
let bytes_of_byte_length = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length = bytes_to_number(bytes_of_byte_length);
|
||||
let list_bytes = rest.slice(byte_length_of_byte_length, byte_length + byte_length_of_byte_length);
|
||||
let list = decode_list(list_bytes);
|
||||
let rest2 = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a list payload (non-prefixed) into an `Array<decoded_data>`.
|
||||
*
|
||||
* Repeatedly decodes an element off the list until remainder is empty.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_list(bytes) {
|
||||
let arr = [];
|
||||
while (bytes.length > 0) {
|
||||
// grab an item off the bytes
|
||||
let { decoded_data, remainder } = decode(bytes);
|
||||
// push it
|
||||
arr.push(decoded_data);
|
||||
// update bytes
|
||||
bytes = remainder;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
/**
|
||||
* Convert bytestring to number
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bytes_to_number(bytes) {
|
||||
let n = 0;
|
||||
for (let b of bytes) {
|
||||
n <<= 8;
|
||||
n += b;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Make a `decode_result` containing the two arguments
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function dr(x, y) {
|
||||
return { decoded_data: x,
|
||||
remainder: y };
|
||||
}
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
function encode(data) {
|
||||
// is it an array or data
|
||||
if (is_binary(data)) {
|
||||
return encode_binary(data);
|
||||
}
|
||||
else if (is_list(data)) {
|
||||
return encode_list(data);
|
||||
}
|
||||
else {
|
||||
throw new Error('encode told to encode something that is not an array or a binary: ' + data);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a binary into RLP
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_binary(bytes) {
|
||||
let len = bytes.length;
|
||||
// single byte case when the byte is between 0..127
|
||||
// result is the bytestring containing the byte itself
|
||||
if ((len === 1) &&
|
||||
(bytes[0] <= 127)) {
|
||||
return bytes;
|
||||
}
|
||||
// if the bytestring is 0..55 bytes long, the first byte in the result is
|
||||
// 128 + Length, the rest of the result bytestring is the input string
|
||||
else if (len <= 55) {
|
||||
// construct the result
|
||||
// <<128 + Len, Bytes/binary>>
|
||||
let result = new Uint8Array(len + 1);
|
||||
// first byte is 128 + length
|
||||
result[0] = 128 + len;
|
||||
// copy input bytes into result
|
||||
for (let input_idx0 = 0; input_idx0 < len; input_idx0++) {
|
||||
let result_idx0 = input_idx0 + 1;
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the bytestring is more than 55 bytes long, the first byte is 183 +
|
||||
// ByteLengthOfByteLength, followed by the byte length, followed by the
|
||||
// bytes
|
||||
else {
|
||||
let len_bytes = encode_unsigned(len);
|
||||
let len_bytes_length = len_bytes.length;
|
||||
// total array is
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
let result = new Uint8Array(1 + len_bytes_length + len);
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 183 + len_bytes_length;
|
||||
// copy len_bytes into result
|
||||
for (let len_bytes_idx0 = 0; len_bytes_idx0 < len_bytes_length; len_bytes_idx0++) {
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = len_bytes_idx0 + 1;
|
||||
result[result_idx0] = len_bytes[len_bytes_idx0];
|
||||
}
|
||||
// copy original byte array into result
|
||||
for (let input_idx0 = 0; input_idx0 < len; input_idx0++) {
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = input_idx0 + (1 + len_bytes_length);
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
// finally, return the result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a list
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_list(list) {
|
||||
// first encode every element in the list, then branch
|
||||
let payloads = list.map(encode);
|
||||
let payload = uint8arr_concat(payloads);
|
||||
let payload_size = payload.length;
|
||||
// if the payload size is in 0..55, then the first byte is 192 + payload
|
||||
// size, followed by the payload
|
||||
if (payload_size <= 55) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
let result = new Uint8Array(1 + payload_size);
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 192 + payload_size;
|
||||
// copy the rest of the payload into result
|
||||
for (let payload_idx0 = 0; payload_idx0 < payload_size; payload_idx0++) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = payload_idx0 + 1;
|
||||
result[result_idx0] = payload[payload_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the payload size is greater than 55, the first byte is 247 +
|
||||
// size_of_payload_size, followed by the payload size, followed by the
|
||||
// payload
|
||||
else {
|
||||
// compute the payload size size
|
||||
let payload_size_bytes = encode_unsigned(payload_size);
|
||||
let payload_size_size = payload_size_bytes.length;
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
let result = new Uint8Array(1 + payload_size_size + payload_size);
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// first byte is 247 + payload_size_size
|
||||
result[0] = 247 + payload_size_size;
|
||||
// copy the payload_size_bytes into result
|
||||
for (let psb_idx0 = 0; psb_idx0 < payload_size_size; psb_idx0++) {
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 byte for this
|
||||
let result_idx0 = psb_idx0 + 1;
|
||||
result[result_idx0] = payload_size_bytes[psb_idx0];
|
||||
}
|
||||
// copy the payload into result
|
||||
for (let pb_idx0 = 0; pb_idx0 < payload_size; pb_idx0++) {
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 + payload_size_size bytes for this
|
||||
let result_idx0 = pb_idx0 + (1 + payload_size_size);
|
||||
result[result_idx0] = payload[pb_idx0];
|
||||
}
|
||||
// finally, return result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a number as a bytestring
|
||||
*
|
||||
* Not for general use, this assumes the input number is greater than 55
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_unsigned(n) {
|
||||
// can assume that n initially is greater than 55
|
||||
// have to encode it in reverse order
|
||||
let arr = [];
|
||||
// repeated division by 256 with remainder
|
||||
//
|
||||
// example: suppose bign was 1234 and we were dividing by 10
|
||||
//
|
||||
// iteration 0:
|
||||
// bign = 1234
|
||||
// arr = []
|
||||
// ---
|
||||
// bign / 10 = 123
|
||||
// bign % 10 = 4
|
||||
// ---
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
//
|
||||
// iteration 1:
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
// ---
|
||||
// bign / 10 = 12
|
||||
// bign % 10 = 3
|
||||
// ---
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
//
|
||||
// iteration 2:
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
// ---
|
||||
// bign / 10 = 1
|
||||
// bign % 10 = 2
|
||||
// ---
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
//
|
||||
// iteration 3:
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
// ---
|
||||
// bign / 10 = 0
|
||||
// bign % 10 = 1
|
||||
// ---
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
//
|
||||
// iteration 4:
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
// ---
|
||||
// DONE
|
||||
while (n > 0) {
|
||||
arr.push(n % 256);
|
||||
n >>= 8;
|
||||
}
|
||||
// reverse and make into Uint8Array
|
||||
arr.reverse();
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
/**
|
||||
* concatenate an array of `Uint8Array`s into a single Uint8Array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function uint8arr_concat(arrs) {
|
||||
// total length
|
||||
let total_len = arrs.reduce(// fold
|
||||
function (acc_len, this_uint8array) {
|
||||
return acc_len + this_uint8array.length;
|
||||
},
|
||||
// initial accumulator
|
||||
0);
|
||||
// start up result
|
||||
let result = new Uint8Array(total_len);
|
||||
let result_idx0 = 0;
|
||||
// concatenate
|
||||
for (let this_uint8arr of arrs) {
|
||||
// bytewise copy of this uint8array
|
||||
for (let this_uint8arr_idx0 = 0; this_uint8arr_idx0 < this_uint8arr.length; this_uint8arr_idx0++) {
|
||||
// copy byte and increment result idx0
|
||||
result[result_idx0] = this_uint8arr[this_uint8arr_idx0];
|
||||
result_idx0++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* returns true if input is `instanceof Uint8Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function is_binary(x) {
|
||||
return (x instanceof Uint8Array);
|
||||
}
|
||||
/**
|
||||
* returns true if input is `instanceof Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function is_list(x) {
|
||||
return (x instanceof Array);
|
||||
}
|
||||
//# sourceMappingURL=rlp.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+66
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
export { Safe, Ok, Error, ok, error, unsafe };
|
||||
/**
|
||||
* Type that catches positive errors
|
||||
*/
|
||||
declare type Safe<ok_t, err_t> = Ok<ok_t> | Error<err_t>;
|
||||
/**
|
||||
* Ok type
|
||||
*/
|
||||
declare type Ok<ok_t> = {
|
||||
ok: true;
|
||||
result: ok_t;
|
||||
};
|
||||
/**
|
||||
* Error type
|
||||
*/
|
||||
declare type Error<err_t> = {
|
||||
ok: false;
|
||||
error: err_t;
|
||||
};
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
declare function ok<ok_t>(x: ok_t): Ok<ok_t>;
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
declare function error<err_t>(x: err_t): Error<err_t>;
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
declare function unsafe<ok_t, err_t>(x: Safe<ok_t, err_t>): ok_t;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
export { ok, error, unsafe };
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
function ok(x) {
|
||||
return { ok: true, result: x };
|
||||
}
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
function error(x) {
|
||||
return { ok: false, error: x };
|
||||
}
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
function unsafe(x) {
|
||||
if (x.ok)
|
||||
return x.result;
|
||||
else
|
||||
throw x.error;
|
||||
}
|
||||
//# sourceMappingURL=safe.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../src/safe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAIH,EAAE,EACF,KAAK,EACL,MAAM,EACT,CAAA;AA2BD;;GAEG;AACH,SACA,EAAE,CAEG,CAAQ;IAGT,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;AACjC,CAAC;AAID;;GAEG;AACH,SACA,KAAK,CAEA,CAAQ;IAGT,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;AACjC,CAAC;AAID;;;GAGG;AACH,SACA,MAAM,CAED,CAAoB;IAGrB,IAAI,CAAC,CAAC,EAAE;QACJ,OAAO,CAAC,CAAC,MAAM,CAAC;;QAEhB,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC"}
|
||||
+418
@@ -0,0 +1,418 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(binary : Uint8Array)
|
||||
: string
|
||||
{
|
||||
let num_leading_zeros : number = nlz(binary);
|
||||
let rest : Uint8Array = binary.slice(num_leading_zeros);
|
||||
let ones : string = encode_zeros(num_leading_zeros);
|
||||
let rest_b58 : string = encode_rest(rest);
|
||||
let result : string = ones + rest_b58;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* count the number of leading zeros in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
nlz
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let n = 0;
|
||||
for (let this_byte of bytes)
|
||||
{
|
||||
if (0 === this_byte) { n++; }
|
||||
else { break; }
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate a bunch of '1's for however many leading zeros there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_zeros
|
||||
(how_many : number)
|
||||
: string
|
||||
{
|
||||
let ones : string = '';
|
||||
for (let i = 1;
|
||||
i <= how_many;
|
||||
i++)
|
||||
{
|
||||
ones += '1';
|
||||
}
|
||||
|
||||
return ones;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array that has no leading zeros
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_rest
|
||||
(bytes : Uint8Array)
|
||||
: string
|
||||
{
|
||||
let bytes_bignum : bigint = bytes_to_bigint(bytes);
|
||||
let result : string = bignum_to_base58(bytes_bignum);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a bytestring to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bytes_to_bigint
|
||||
(bytes: Uint8Array)
|
||||
: bigint
|
||||
{
|
||||
let acc_bigint : bigint = 0n;
|
||||
for(let this_byte of bytes)
|
||||
{
|
||||
acc_bigint <<= 8n;
|
||||
acc_bigint += BigInt(this_byte);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a BigInt to Base58
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bignum_to_base58
|
||||
(q: bigint)
|
||||
: string
|
||||
{
|
||||
let s = '';
|
||||
while (q !== 0n)
|
||||
{
|
||||
let this_n : bigint = q % 58n;
|
||||
q /= 58n;
|
||||
|
||||
let this_b58_char : string = bigint_to_char(this_n);
|
||||
s = this_b58_char + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(base58: string)
|
||||
: Uint8Array
|
||||
{
|
||||
let num_leading_ones : number = nlo(base58);
|
||||
let rest : string = base58.slice(num_leading_ones);
|
||||
let zeros : Array<number> = decode_ones(num_leading_ones);
|
||||
let rest_arr : Array<number> = decode_rest(rest);
|
||||
let pre_result : Array<number> = zeros.concat(rest_arr);
|
||||
return new Uint8Array(pre_result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* count the number of leading 1 characters in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
nlo
|
||||
(base58: string)
|
||||
: number
|
||||
{
|
||||
let n = 0;
|
||||
for (let this_char of base58)
|
||||
{
|
||||
if ('1' === this_char) { n++; }
|
||||
else { break; }
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate a bunch of '0's for however many leading ones there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_ones
|
||||
(how_many : number)
|
||||
: Array<number>
|
||||
{
|
||||
let zeros : Array<number> = [];
|
||||
for (let i = 1;
|
||||
i <= how_many;
|
||||
i++)
|
||||
{
|
||||
zeros.push(0);
|
||||
}
|
||||
|
||||
return zeros;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a string that has no leading 1s
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_rest
|
||||
(base58: string)
|
||||
: Array<number>
|
||||
{
|
||||
let result_bignum : bigint = base58_to_bigint(base58);
|
||||
let result : Array<number> = bigint_to_base256(result_bignum);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a base58 string to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
base58_to_bigint
|
||||
(base58: string)
|
||||
: bigint
|
||||
{
|
||||
let acc_bigint : bigint = 0n;
|
||||
for(let this_char of base58)
|
||||
{
|
||||
acc_bigint *= 58n;
|
||||
acc_bigint += char_to_bigint(this_char);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* convert a bignum into a byte array
|
||||
*
|
||||
* @end
|
||||
*/
|
||||
function
|
||||
bigint_to_base256
|
||||
(q: bigint)
|
||||
: Array<number>
|
||||
{
|
||||
let arr_reverse = [];
|
||||
while(q !== 0n)
|
||||
{
|
||||
let r: number = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return arr_reverse;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// TRANSLATION TABLES
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/**
|
||||
* Base58 integer -> character conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bigint_to_char
|
||||
(n: bigint)
|
||||
: string
|
||||
{
|
||||
switch(n) {
|
||||
case 0n: return '1';
|
||||
case 1n: return '2';
|
||||
case 2n: return '3';
|
||||
case 3n: return '4';
|
||||
case 4n: return '5';
|
||||
case 5n: return '6';
|
||||
case 6n: return '7';
|
||||
case 7n: return '8';
|
||||
case 8n: return '9';
|
||||
case 9n: return 'A';
|
||||
case 10n: return 'B';
|
||||
case 11n: return 'C';
|
||||
case 12n: return 'D';
|
||||
case 13n: return 'E';
|
||||
case 14n: return 'F';
|
||||
case 15n: return 'G';
|
||||
case 16n: return 'H';
|
||||
case 17n: return 'J';
|
||||
case 18n: return 'K';
|
||||
case 19n: return 'L';
|
||||
case 20n: return 'M';
|
||||
case 21n: return 'N';
|
||||
case 22n: return 'P';
|
||||
case 23n: return 'Q';
|
||||
case 24n: return 'R';
|
||||
case 25n: return 'S';
|
||||
case 26n: return 'T';
|
||||
case 27n: return 'U';
|
||||
case 28n: return 'V';
|
||||
case 29n: return 'W';
|
||||
case 30n: return 'X';
|
||||
case 31n: return 'Y';
|
||||
case 32n: return 'Z';
|
||||
case 33n: return 'a';
|
||||
case 34n: return 'b';
|
||||
case 35n: return 'c';
|
||||
case 36n: return 'd';
|
||||
case 37n: return 'e';
|
||||
case 38n: return 'f';
|
||||
case 39n: return 'g';
|
||||
case 40n: return 'h';
|
||||
case 41n: return 'i';
|
||||
case 42n: return 'j';
|
||||
case 43n: return 'k';
|
||||
case 44n: return 'm';
|
||||
case 45n: return 'n';
|
||||
case 46n: return 'o';
|
||||
case 47n: return 'p';
|
||||
case 48n: return 'q';
|
||||
case 49n: return 'r';
|
||||
case 50n: return 's';
|
||||
case 51n: return 't';
|
||||
case 52n: return 'u';
|
||||
case 53n: return 'v';
|
||||
case 54n: return 'w';
|
||||
case 55n: return 'x';
|
||||
case 56n: return 'y';
|
||||
case 57n: return 'z';
|
||||
default:
|
||||
throw new Error('invalid base58 bigint: ' + n);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Base58 character -> integer conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
char_to_bigint
|
||||
(s: string)
|
||||
: bigint
|
||||
{
|
||||
switch(s) {
|
||||
case '1': return 0n;
|
||||
case '2': return 1n;
|
||||
case '3': return 2n;
|
||||
case '4': return 3n;
|
||||
case '5': return 4n;
|
||||
case '6': return 5n;
|
||||
case '7': return 6n;
|
||||
case '8': return 7n;
|
||||
case '9': return 8n;
|
||||
case 'A': return 9n;
|
||||
case 'B': return 10n;
|
||||
case 'C': return 11n;
|
||||
case 'D': return 12n;
|
||||
case 'E': return 13n;
|
||||
case 'F': return 14n;
|
||||
case 'G': return 15n;
|
||||
case 'H': return 16n;
|
||||
case 'J': return 17n;
|
||||
case 'K': return 18n;
|
||||
case 'L': return 19n;
|
||||
case 'M': return 20n;
|
||||
case 'N': return 21n;
|
||||
case 'P': return 22n;
|
||||
case 'Q': return 23n;
|
||||
case 'R': return 24n;
|
||||
case 'S': return 25n;
|
||||
case 'T': return 26n;
|
||||
case 'U': return 27n;
|
||||
case 'V': return 28n;
|
||||
case 'W': return 29n;
|
||||
case 'X': return 30n;
|
||||
case 'Y': return 31n;
|
||||
case 'Z': return 32n;
|
||||
case 'a': return 33n;
|
||||
case 'b': return 34n;
|
||||
case 'c': return 35n;
|
||||
case 'd': return 36n;
|
||||
case 'e': return 37n;
|
||||
case 'f': return 38n;
|
||||
case 'g': return 39n;
|
||||
case 'h': return 40n;
|
||||
case 'i': return 41n;
|
||||
case 'j': return 42n;
|
||||
case 'k': return 43n;
|
||||
case 'm': return 44n;
|
||||
case 'n': return 45n;
|
||||
case 'o': return 46n;
|
||||
case 'p': return 47n;
|
||||
case 'q': return 48n;
|
||||
case 'r': return 49n;
|
||||
case 's': return 50n;
|
||||
case 't': return 51n;
|
||||
case 'u': return 52n;
|
||||
case 'v': return 53n;
|
||||
case 'w': return 54n;
|
||||
case 'x': return 55n;
|
||||
case 'y': return 56n;
|
||||
case 'z': return 57n;
|
||||
default:
|
||||
throw new Error('invalid base58 char: ' + s);
|
||||
}
|
||||
}
|
||||
+655
@@ -0,0 +1,655 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
// slice the array
|
||||
// length of head is a multiple of 3
|
||||
// treat the tail as a special case
|
||||
let {head, tail, tail_len} = slice3k(bytes);
|
||||
let head_str : string = encode_head(head);
|
||||
let tail_str : string = encode_tail(tail, tail_len);
|
||||
return head_str + tail_str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
type slice3k
|
||||
= {head : Uint8Array,
|
||||
tail : Uint8Array,
|
||||
tail_len : number};
|
||||
|
||||
/**
|
||||
* Take a Uint8Array, take the first 3k (k >= 0) bytes, put them in head, and
|
||||
* the remaining 0,1, or 2 bytes, put them in tail
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
slice3k
|
||||
(bytes: Uint8Array)
|
||||
: slice3k
|
||||
{
|
||||
let len : number = bytes.length;
|
||||
// too lazy to look up how to do integer division in js so this will do
|
||||
let tail_len : number = len % 3;
|
||||
let head_len : number = len - tail_len;
|
||||
// for slice:
|
||||
// first argument is the 0-index of the start
|
||||
// second - first is the length of the slice
|
||||
let head : Uint8Array = bytes.slice(0, head_len);
|
||||
// empty second argument means go to the end
|
||||
let tail : Uint8Array = bytes.slice(head_len);
|
||||
return {head : head,
|
||||
tail : tail,
|
||||
tail_len : tail_len};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array whose length is known to be a multiple of 3
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_head
|
||||
(head_bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
// can assume length of bytes is a multiple of 3
|
||||
// start index at 0
|
||||
// increment by 3
|
||||
let head_bytes_len : number = head_bytes.length;
|
||||
let max_idx0 : number = head_bytes_len - 1;
|
||||
|
||||
let head_str_acc : string = '';
|
||||
for(let this_3slice_start_idx0 = 0;
|
||||
this_3slice_start_idx0 <= max_idx0;
|
||||
this_3slice_start_idx0 += 3)
|
||||
{
|
||||
let this_3slice_bytes : Uint8Array = head_bytes.slice(this_3slice_start_idx0, this_3slice_start_idx0 + 3);
|
||||
let this_3slice_str : string = encode3(this_3slice_bytes);
|
||||
head_str_acc += this_3slice_str;
|
||||
}
|
||||
|
||||
return head_str_acc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a 3 bytes into base64 notation
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode3
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
let b1 : number = bytes[1];
|
||||
let b2 : number = bytes[2];
|
||||
|
||||
// ABCDEFGH 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// ABCDEF GH1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
let n0 : number = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 : number = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// b2 = abcdefgh
|
||||
// b2 >> 6 = ______ab
|
||||
// n2 = __5678ab
|
||||
let n2 : number = ((b1 % 16) << 2) + (b2 >> 6);
|
||||
// b2 = abcdefgh
|
||||
// 64 = _1______
|
||||
// n3 = __cdefgh
|
||||
let n3 : number = b2 % 64;
|
||||
|
||||
// convert to chars
|
||||
let s0 : string = int2char(n0);
|
||||
let s1 : string = int2char(n1);
|
||||
let s2 : string = int2char(n2);
|
||||
let s3 : string = int2char(n3);
|
||||
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + s3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode the final 0, 1, or 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_tail
|
||||
(tail_bytes : Uint8Array,
|
||||
tail_len : number)
|
||||
: string
|
||||
{
|
||||
switch(tail_len) {
|
||||
case 0: return '';
|
||||
case 1: return encode1(tail_bytes);
|
||||
case 2: return encode2(tail_bytes);
|
||||
default:
|
||||
throw new Error('encode_tail with tail_len = ' + tail_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a single byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode1
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
// n0 = __ABCDEF
|
||||
// b0 = ABCDEFGH
|
||||
// b0 >> 2 = __ABCDEF
|
||||
let n0 : number = b0 >> 2;
|
||||
// n1 = __GH____
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
let n1 : number = (b0 % 4) << 4;
|
||||
|
||||
return int2char(n0) + int2char(n1) + '==';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode two bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode2
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
let b1 : number = bytes[1];
|
||||
|
||||
// ABCDEFGH 12345678
|
||||
// b0 b1
|
||||
// ABCDEF GH1234 5678__
|
||||
// n0 n1 n2
|
||||
let n0 : number = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 : number = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// n2 = __5678__
|
||||
let n2 : number = (b1 % 16) << 2;
|
||||
|
||||
// convert to chars
|
||||
let s0 : string = int2char(n0);
|
||||
let s1 : string = int2char(n1);
|
||||
let s2 : string = int2char(n2);
|
||||
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + '=';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(base64_str : string)
|
||||
: Uint8Array
|
||||
{
|
||||
// length of the string is guaranteed to be a multiple of 4
|
||||
// if the string is empty, return the empty array
|
||||
let len = base64_str.length;
|
||||
// this branching contains the implicit assertion that the length is a
|
||||
// multiple of 4. If this is not true, the bottom branch is triggered.
|
||||
// general case goes first because speeeeeed
|
||||
if ( (4 < len)
|
||||
&& (0 === (len % 4)))
|
||||
{
|
||||
// split the head and tail
|
||||
let tail_start_idx0 : number = len - 4;
|
||||
let head_s : string = base64_str.slice(0, tail_start_idx0);
|
||||
let tail_s : string = base64_str.slice(tail_start_idx0);
|
||||
// Using arrays because Uint8Arrays don't have a concat operation
|
||||
let head_arr : Array<number> = decode_head(head_s);
|
||||
let tail_arr : Array<number> = decode_tail(tail_s);
|
||||
// silly to put these in variables but this is exactly the type of
|
||||
// situation where JS type insanity shows up
|
||||
//
|
||||
// see: i forgot
|
||||
// > [1,2,3] + [4,5,6]
|
||||
// '1,2,34,5,6'
|
||||
//
|
||||
// Originally, I used + like some sort of moron who codes in a sane
|
||||
// language
|
||||
//
|
||||
// seriously what is this language
|
||||
//
|
||||
// this is some clown behavior
|
||||
let total_arr : Array<number> = head_arr.concat(tail_arr);
|
||||
return new Uint8Array(total_arr);
|
||||
}
|
||||
// special case if the length is exactly 4
|
||||
else if (4 === len)
|
||||
{
|
||||
// it's just a tail
|
||||
return new Uint8Array(decode_tail(base64_str));
|
||||
}
|
||||
// empty string
|
||||
else if (0 === len)
|
||||
{
|
||||
return new Uint8Array([]);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Error('base64 decode: invalid string length: ' + len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a string known to not have any padding
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_head
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// go 4 characters at a time
|
||||
let max_i0 : number = s.length - 1;
|
||||
let decoded_acc : Array<number> = [];
|
||||
for(let i0 = 0;
|
||||
i0 <= max_i0;
|
||||
i0 += 4)
|
||||
{
|
||||
let this_slice_s : string = s.slice(i0, i0 + 4);
|
||||
let this_slice_arr : Array<number> = decode3(this_slice_s);
|
||||
// update accumulator
|
||||
decoded_acc = decoded_acc.concat(this_slice_arr);
|
||||
}
|
||||
return decoded_acc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode 4 characters that correspond to either 3 bytes, 2, bytes, or 1 byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_tail
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// all that matters right now is the last 2 chars
|
||||
// s0, s1, s2, s3
|
||||
// 0 based indexing is so annoying
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
|
||||
// braaaaaaaaaaaaaaaaaench
|
||||
// two equals signs means 1 byte
|
||||
if (('=' === s3) && ('=' === s2)) {
|
||||
return decode1(s);
|
||||
}
|
||||
// one equals sign means 2 bytes
|
||||
else if (('=' === s3)) {
|
||||
return decode2(s);
|
||||
}
|
||||
// 0 equals signs means 3 bytes
|
||||
else {
|
||||
return decode3(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 3 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode3
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
let s2 : string = s[2];
|
||||
let s3 : string = s[3];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
let n2 : number = char2int(s2);
|
||||
let n3 : number = char2int(s3);
|
||||
|
||||
// abcdef gh1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
// abcdefgh 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678ab
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 : number = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
// n2 = __5678ab
|
||||
// 4 = _____1__
|
||||
// n2 % 4 = ______ab
|
||||
// (n2 % 4) << 6 = ab______
|
||||
// n3 = __cdefgh
|
||||
let b2 : number = ((n2 % 4) << 6) + n3;
|
||||
|
||||
return [b0, b1, b2];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode2
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// xyz=
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
let s2 : string = s[2];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
let n2 : number = char2int(s2);
|
||||
|
||||
// abcdef gh1234 5678__
|
||||
// n0 n1 n2
|
||||
// abcdefgh 12345678
|
||||
// b0 b1
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678__
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 : number = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
|
||||
return [b0, b1];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode1
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// xy==
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
|
||||
// abcdef gh____
|
||||
// n0 n1
|
||||
// abcdefgh
|
||||
// b0
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh____
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
|
||||
return [b0];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// FIXME: these tables would *probably* be faster if they were made into objects
|
||||
|
||||
/**
|
||||
* Conversion table for base64 encode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
int2char
|
||||
(n: number)
|
||||
: string
|
||||
{
|
||||
switch(n) {
|
||||
case 0: return 'A';
|
||||
case 1: return 'B';
|
||||
case 2: return 'C';
|
||||
case 3: return 'D';
|
||||
case 4: return 'E';
|
||||
case 5: return 'F';
|
||||
case 6: return 'G';
|
||||
case 7: return 'H';
|
||||
case 8: return 'I';
|
||||
case 9: return 'J';
|
||||
case 10: return 'K';
|
||||
case 11: return 'L';
|
||||
case 12: return 'M';
|
||||
case 13: return 'N';
|
||||
case 14: return 'O';
|
||||
case 15: return 'P';
|
||||
case 16: return 'Q';
|
||||
case 17: return 'R';
|
||||
case 18: return 'S';
|
||||
case 19: return 'T';
|
||||
case 20: return 'U';
|
||||
case 21: return 'V';
|
||||
case 22: return 'W';
|
||||
case 23: return 'X';
|
||||
case 24: return 'Y';
|
||||
case 25: return 'Z';
|
||||
case 26: return 'a';
|
||||
case 27: return 'b';
|
||||
case 28: return 'c';
|
||||
case 29: return 'd';
|
||||
case 30: return 'e';
|
||||
case 31: return 'f';
|
||||
case 32: return 'g';
|
||||
case 33: return 'h';
|
||||
case 34: return 'i';
|
||||
case 35: return 'j';
|
||||
case 36: return 'k';
|
||||
case 37: return 'l';
|
||||
case 38: return 'm';
|
||||
case 39: return 'n';
|
||||
case 40: return 'o';
|
||||
case 41: return 'p';
|
||||
case 42: return 'q';
|
||||
case 43: return 'r';
|
||||
case 44: return 's';
|
||||
case 45: return 't';
|
||||
case 46: return 'u';
|
||||
case 47: return 'v';
|
||||
case 48: return 'w';
|
||||
case 49: return 'x';
|
||||
case 50: return 'y';
|
||||
case 51: return 'z';
|
||||
case 52: return '0';
|
||||
case 53: return '1';
|
||||
case 54: return '2';
|
||||
case 55: return '3';
|
||||
case 56: return '4';
|
||||
case 57: return '5';
|
||||
case 58: return '6';
|
||||
case 59: return '7';
|
||||
case 60: return '8';
|
||||
case 61: return '9';
|
||||
case 62: return '+';
|
||||
case 63: return '/';
|
||||
default: throw new Error("invalid base64 encode byte: " + n);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Conversion table for base64 decode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
char2int
|
||||
(s: string)
|
||||
: number
|
||||
{
|
||||
switch(s) {
|
||||
case 'A': return 0;
|
||||
case 'B': return 1;
|
||||
case 'C': return 2;
|
||||
case 'D': return 3;
|
||||
case 'E': return 4;
|
||||
case 'F': return 5;
|
||||
case 'G': return 6;
|
||||
case 'H': return 7;
|
||||
case 'I': return 8;
|
||||
case 'J': return 9;
|
||||
case 'K': return 10;
|
||||
case 'L': return 11;
|
||||
case 'M': return 12;
|
||||
case 'N': return 13;
|
||||
case 'O': return 14;
|
||||
case 'P': return 15;
|
||||
case 'Q': return 16;
|
||||
case 'R': return 17;
|
||||
case 'S': return 18;
|
||||
case 'T': return 19;
|
||||
case 'U': return 20;
|
||||
case 'V': return 21;
|
||||
case 'W': return 22;
|
||||
case 'X': return 23;
|
||||
case 'Y': return 24;
|
||||
case 'Z': return 25;
|
||||
case 'a': return 26;
|
||||
case 'b': return 27;
|
||||
case 'c': return 28;
|
||||
case 'd': return 29;
|
||||
case 'e': return 30;
|
||||
case 'f': return 31;
|
||||
case 'g': return 32;
|
||||
case 'h': return 33;
|
||||
case 'i': return 34;
|
||||
case 'j': return 35;
|
||||
case 'k': return 36;
|
||||
case 'l': return 37;
|
||||
case 'm': return 38;
|
||||
case 'n': return 39;
|
||||
case 'o': return 40;
|
||||
case 'p': return 41;
|
||||
case 'q': return 42;
|
||||
case 'r': return 43;
|
||||
case 's': return 44;
|
||||
case 't': return 45;
|
||||
case 'u': return 46;
|
||||
case 'v': return 47;
|
||||
case 'w': return 48;
|
||||
case 'x': return 49;
|
||||
case 'y': return 50;
|
||||
case 'z': return 51;
|
||||
case '0': return 52;
|
||||
case '1': return 53;
|
||||
case '2': return 54;
|
||||
case '3': return 55;
|
||||
case '4': return 56;
|
||||
case '5': return 57;
|
||||
case '6': return 58;
|
||||
case '7': return 59;
|
||||
case '8': return 60;
|
||||
case '9': return 61;
|
||||
case '+': return 62;
|
||||
case '/': return 63;
|
||||
default: throw new Error("invalid base64 character: " + s);
|
||||
}
|
||||
}
|
||||
+377
@@ -0,0 +1,377 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
bytes_to_bigint,
|
||||
bigint_to_bytes,
|
||||
concat,
|
||||
strong_rand_bytes
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
function
|
||||
concat
|
||||
(arr1 : Uint8Array,
|
||||
arr2 : Uint8Array)
|
||||
: Uint8Array
|
||||
{
|
||||
let len1 : number = arr1.length;
|
||||
let len2 : number = arr2.length;
|
||||
let arr1_idx0_offset : number = 0;
|
||||
let arr2_idx0_offset : number = len1;
|
||||
let result_len : number = len1 + len2;
|
||||
let result : Uint8Array = new Uint8Array(result_len);
|
||||
// copy first array into result
|
||||
for (let arr1_idx0 = 0;
|
||||
arr1_idx0 < len1;
|
||||
arr1_idx0++)
|
||||
{
|
||||
// no offset here
|
||||
let result_idx0 : number = arr1_idx0 + arr1_idx0_offset;
|
||||
result[result_idx0] = arr1[arr1_idx0];
|
||||
}
|
||||
// copy second array into result
|
||||
for (let arr2_idx0 = 0;
|
||||
arr2_idx0 < len2;
|
||||
arr2_idx0++)
|
||||
{
|
||||
// offset by the length of the first array
|
||||
let result_idx0 : number = arr2_idx0 + arr2_idx0_offset;
|
||||
result[result_idx0] = arr2[arr2_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
function
|
||||
strong_rand_bytes
|
||||
(how_many : number)
|
||||
: Uint8Array
|
||||
{
|
||||
let arr = new Uint8Array(how_many);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
function
|
||||
bytes_to_bigint
|
||||
(bytes: Uint8Array)
|
||||
: bigint
|
||||
{
|
||||
let n : bigint = 0n;
|
||||
for (let b of bytes) {
|
||||
// move first, then add
|
||||
// otherwise it ends on a move
|
||||
// imperative languages are for losers
|
||||
n <<= 8n;
|
||||
n += BigInt(b);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
function
|
||||
bigint_to_bytes
|
||||
(q: bigint)
|
||||
: Uint8Array
|
||||
{
|
||||
if (q < 0n) {
|
||||
throw new Error('q < 0n: ' + q);
|
||||
}
|
||||
|
||||
let arr_reverse = [];
|
||||
while (q > 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return new Uint8Array(arr_reverse);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Oh no, bitstrings in a language that only has bytestrings
|
||||
*
|
||||
* By convention these are `Uint8Array`s with byte length `ceil(bit_length /
|
||||
* 8)`, and all trailing bits are zero.
|
||||
*/
|
||||
type bits =
|
||||
{bit_length : number,
|
||||
bytes : Uint8Array};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get an uninitialized bitstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bits_null
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 0.
|
||||
*/
|
||||
function
|
||||
bits_zeros
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
for (let i0 = 0;
|
||||
i0 < byte_length;
|
||||
i0++)
|
||||
{
|
||||
result[i0] = 0;
|
||||
}
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 1.
|
||||
*/
|
||||
function
|
||||
bits_ones
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
|
||||
// fill everything except the last byte with 255s
|
||||
for (let i0 = 0;
|
||||
i0 < (byte_length - 1);
|
||||
i0++)
|
||||
{
|
||||
result[i0] = 255;
|
||||
}
|
||||
|
||||
// alright so the last byte
|
||||
// ok so the number of leading 0s is
|
||||
// 8 - (bit_length % 8)
|
||||
let num_trailing_zero_bits : number = 8 - (bit_length % 8);
|
||||
// the trailing byte is 255 << that
|
||||
// e.g. 3 trailing 0s
|
||||
// 1111_1111 -> 1111_1000
|
||||
let last_byte : number = 255 << num_trailing_zero_bits;
|
||||
let last_byte_idx0 : number = byte_length - 1;
|
||||
result[last_byte_idx0] = last_byte;
|
||||
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the bit at a given 0-index
|
||||
*/
|
||||
function
|
||||
bits_i0th
|
||||
(bit_idx0 : number,
|
||||
bits : bits)
|
||||
: number
|
||||
{
|
||||
// first task is figuring out what byte we're at
|
||||
// for instance if we want bit 27
|
||||
// 3*8 = 24 =< 27 < 4*8
|
||||
// so it's Math.floor(bit_idx0 / 8)
|
||||
let byte_idx0 : number = Math.floor(bit_idx0 / 8);
|
||||
// let's fetch the byte and work with that
|
||||
let the_byte : number = bits.bytes[byte_idx0];
|
||||
|
||||
// ok so let's go with 27 again
|
||||
// 27 = 3 mod 8
|
||||
// so we bitshift right by (8 - 3)
|
||||
// and then take the remainder dividing by 2
|
||||
// --B-_---- -> ----_---B -> 0000_000B
|
||||
let bsr : number = 8 - (bit_idx0 % 8);
|
||||
return (the_byte >> bsr) % 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Concatenate two bitstrings
|
||||
*/
|
||||
function
|
||||
bits_concat
|
||||
(bits1 : bits,
|
||||
bits2 : bits)
|
||||
: bits
|
||||
{
|
||||
let result_bit_length : number = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 : Uint8Array = bits1.bytes;
|
||||
let bytes2 : Uint8Array = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits : bits = bits_null(result_bit_length);
|
||||
let result_bytes : Uint8Array = result_bits.bytes;
|
||||
|
||||
// go along each byte in result, and compute the byte boundary
|
||||
for (let i = 0;
|
||||
i < result_bytes.length;
|
||||
i++)
|
||||
{
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// this is the bit index of the leftmost bit in this byte
|
||||
let start_bit_bi0 : number = i * 8;
|
||||
let next_start_bit_bi0 : number = start_bit_bi0 + 8;
|
||||
// does the bit at the beginning of this byte correspond to the first array?
|
||||
// strict comparison:
|
||||
// suppose i = 0,
|
||||
// suppose bit_length1 is 0
|
||||
// then this says no, go to second array
|
||||
// suppose bl1 = 1,
|
||||
// this says start at first array
|
||||
let start_bit_is_of_first_array : boolean = start_bit_bi0 < bits1.bit_length;
|
||||
// weak comparison:
|
||||
// suppose bit_length1 = 8
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// ^
|
||||
// start_bit_bi0 ^ next_start_bit_bi0
|
||||
let stop_bit_is_of_first_array : boolean = next_start_bit_bi0 <= bits1.bit_length;
|
||||
// is this a bytes1 byte
|
||||
let is_bytes1_byte : boolean = start_bit_is_of_first_array && stop_bit_is_of_first_array;
|
||||
let is_boundary_byte : boolean = start_bit_is_of_first_array && !stop_bit_is_of_first_array;
|
||||
|
||||
// need to work out the ping_pong bs up here because js is dumb and I
|
||||
// can't put lets between elseifs
|
||||
// alright, now we're in the case of only copying from the second array
|
||||
// we have two cases:
|
||||
// ping-pong:
|
||||
// ABCD_EFGH 1234_5678
|
||||
// - ---- ---
|
||||
// copying these bits
|
||||
// ping:
|
||||
// ABCD_EFGH <end>
|
||||
// - ---- 000
|
||||
//
|
||||
// how to distinguish between these two??
|
||||
//
|
||||
// we're in the ping case when the start_bit_bi0 corresponds to the
|
||||
// final byte of the second array
|
||||
//
|
||||
// ok
|
||||
//
|
||||
// we need to compute the bit address in the second array that
|
||||
// corresponds to the bit address at the beginning of this byte in the
|
||||
// result array
|
||||
let bits2_addr_bi0 : number = start_bit_bi0 - bits1.bit_length;
|
||||
// I think the variable is
|
||||
// bits_left_to_copy = bits2.bit_length - bit_addr2_bi0
|
||||
// no + 1 because the current bit is uncopied,
|
||||
// so if bit_addr2_bi0 = 7 and bits2.bit_length is 8, it means we
|
||||
// have the last bit to copy
|
||||
// cases:
|
||||
// bits_left_to_copy <= 0 ->
|
||||
// this would mean we have more bits to copy, but are out of
|
||||
// source bits. should be impossible if bits_null is correct
|
||||
// bits_left_to_copy <= 8 ->
|
||||
// this would mean we are going to fill this last byte in the
|
||||
// result array with the correct bits from array2, but how we
|
||||
// do this will depend on how those are arranged in bytes2
|
||||
// (whether we grab one or two bytes)
|
||||
//
|
||||
// this is the tricky case
|
||||
//
|
||||
// I think what matters here is the byte address in the second array
|
||||
// if we're on the last byte
|
||||
// 8 < bits_left_to_copy ->
|
||||
// this means we can safely grab two bytes from bytes2, and do
|
||||
// our bitshifting to make it correct
|
||||
//
|
||||
// FIXME
|
||||
let bits_left_to_copy : number = bits2.bit_length - bits2_addr_bi0;
|
||||
// no the variable that matters is which byte we're on in the result
|
||||
let this_bytes2_addr_i0 : number = Math.floor(bits2_addr_bi0 / 8);
|
||||
let next_bytes2_addr_i0 : number = this_bytes2_addr_i0 + 1;
|
||||
let bitshift_amt : number = bits1.bit_length % 8;
|
||||
|
||||
let ping : boolean = next_bytes2_addr_i0 === bytes2.length;
|
||||
|
||||
|
||||
// simple case: this is a byte from the first array
|
||||
// just copy it
|
||||
if (is_bytes1_byte)
|
||||
result_bytes[i] = bytes1[i];
|
||||
// this is a boundary byte
|
||||
// further cases:
|
||||
// second bit length is 0 ->
|
||||
// ABCD_EF-- <empty>
|
||||
// ^ starting here
|
||||
// just copy first byte and move along
|
||||
else if (is_boundary_byte && (bits2.bit_length === 0))
|
||||
result_bytes[i] = bytes1[i];
|
||||
// boundary byte, and there is at least one byte in the second array
|
||||
else if (is_boundary_byte)
|
||||
{
|
||||
// copy over the first byte
|
||||
result_bytes[i] = bytes1[i];
|
||||
// take the first byte from the second array
|
||||
let first_byte_of_second_array : number = bytes2[0];
|
||||
// bytes1:
|
||||
// ABCD_EF00
|
||||
// 6
|
||||
// bytes2:
|
||||
// 1234_5678
|
||||
// 0000_0012
|
||||
// and bitshift it right by that amount
|
||||
let bitshift_amt : number = bits1.bit_length % 8;
|
||||
result_bytes[i] ^= first_byte_of_second_array >> bitshift_amt;
|
||||
}
|
||||
// last byte of second array
|
||||
else if (ping)
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt);
|
||||
// ping-pong: not last byte of second array
|
||||
else
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt) ^ (bytes2[next_bytes2_addr_i0] << bitshift_amt);
|
||||
}
|
||||
|
||||
return {bit_length : result_bit_length,
|
||||
bytes : result_bytes};
|
||||
|
||||
}
|
||||
+399
@@ -0,0 +1,399 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode,
|
||||
byte_of_word,
|
||||
check_word,
|
||||
check_byte,
|
||||
words
|
||||
}
|
||||
|
||||
import * as safe from './safe.js';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(bytes : Uint8Array)
|
||||
: string
|
||||
{
|
||||
// initial accumulator
|
||||
let words_acc : Array<string> = [];
|
||||
|
||||
// go along each byte and look up the word
|
||||
// add it to the accumulator
|
||||
for (let this_byte of bytes)
|
||||
{
|
||||
let this_word = words[this_byte];
|
||||
words_acc.push(this_word);
|
||||
}
|
||||
|
||||
// prepend check word to phrase
|
||||
// yes craig it would be faster to do the check byte inline
|
||||
// the usage case here is 64 byte strings
|
||||
// double pass is not a big deal
|
||||
return check_word(bytes) + ' ' + words_acc.join(' ');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(faert : string)
|
||||
: safe.Safe<Uint8Array, string>
|
||||
{
|
||||
let all_words : Array<string> = faert.split(' ');
|
||||
let input_check_word : string = all_words[0];
|
||||
let input_words : Array<string> = all_words.slice(1)
|
||||
|
||||
// accumulator
|
||||
let computed_bytes : Array<number> = [];
|
||||
|
||||
// loop over words and figure out accumulator
|
||||
for (let this_input_word of input_words)
|
||||
{
|
||||
let maybe_this_byte : safe.Safe<number, string> = byte_of_word(this_input_word);
|
||||
// if the word is an allowable word, add it to the accumulator
|
||||
if (maybe_this_byte.ok)
|
||||
{
|
||||
let this_byte : number = maybe_this_byte.result;
|
||||
computed_bytes.push(this_byte);
|
||||
}
|
||||
// error case, propagate the error up the call chain
|
||||
else
|
||||
return maybe_this_byte;
|
||||
}
|
||||
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_bytes_u8s : Uint8Array = new Uint8Array(computed_bytes);
|
||||
let computed_check_word : string = check_word(computed_bytes_u8s);
|
||||
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
function
|
||||
byte_of_word
|
||||
(word: string)
|
||||
: safe.Safe<number, string>
|
||||
{
|
||||
for (let i=0; i<=255; i++)
|
||||
{
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
}
|
||||
return safe.error('invalid word: ' + word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
function
|
||||
check_word
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
return words[check_byte(bytes)];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
function
|
||||
check_byte
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let check_byte = 0;
|
||||
for (let this_byte of bytes)
|
||||
check_byte ^= this_byte;
|
||||
return check_byte;
|
||||
}
|
||||
|
||||
|
||||
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
"adjust",
|
||||
"agent",
|
||||
"air",
|
||||
"alert",
|
||||
"alpha",
|
||||
"anger",
|
||||
"answer",
|
||||
"any",
|
||||
"argue",
|
||||
"around",
|
||||
"assume",
|
||||
"asthma",
|
||||
"aunt",
|
||||
"awkward",
|
||||
"balcony",
|
||||
"barrel",
|
||||
"because",
|
||||
"behave",
|
||||
"bicycle",
|
||||
"bike",
|
||||
"blind",
|
||||
"blouse",
|
||||
"bonus",
|
||||
"bottom",
|
||||
"breeze",
|
||||
"brother",
|
||||
"bubble",
|
||||
"burger",
|
||||
"butter",
|
||||
"can",
|
||||
"cannon",
|
||||
"cargo",
|
||||
"catalog",
|
||||
"caught",
|
||||
"century",
|
||||
"chaos",
|
||||
"chicken",
|
||||
"churn",
|
||||
"cinnamon",
|
||||
"clever",
|
||||
"clock",
|
||||
"clown",
|
||||
"collect",
|
||||
"conduct",
|
||||
"convince",
|
||||
"correct",
|
||||
"cradle",
|
||||
"crane",
|
||||
"crime",
|
||||
"cross",
|
||||
"crystal",
|
||||
"curve",
|
||||
"daughter",
|
||||
"debris",
|
||||
"decrease",
|
||||
"deny",
|
||||
"deputy",
|
||||
"despair",
|
||||
"diesel",
|
||||
"dinner",
|
||||
"distance",
|
||||
"document",
|
||||
"donate",
|
||||
"drama",
|
||||
"drink",
|
||||
"dutch",
|
||||
"earth",
|
||||
"educate",
|
||||
"elbow",
|
||||
"employ",
|
||||
"endless",
|
||||
"enlist",
|
||||
"enter",
|
||||
"equal",
|
||||
"eternal",
|
||||
"example",
|
||||
"exhibit",
|
||||
"exotic",
|
||||
"faculty",
|
||||
"famous",
|
||||
"fault",
|
||||
"feature",
|
||||
"fiber",
|
||||
"filter",
|
||||
"firm",
|
||||
"flame",
|
||||
"flush",
|
||||
"follow",
|
||||
"forward",
|
||||
"frame",
|
||||
"fringe",
|
||||
"future",
|
||||
"game",
|
||||
"gate",
|
||||
"gift",
|
||||
"glare",
|
||||
"glow",
|
||||
"goat",
|
||||
"grab",
|
||||
"grief",
|
||||
"guilt",
|
||||
"hand",
|
||||
"hawk",
|
||||
"health",
|
||||
"hen",
|
||||
"hire",
|
||||
"honey",
|
||||
"hover",
|
||||
"hurry",
|
||||
"hybrid",
|
||||
"impose",
|
||||
"inch",
|
||||
"inherit",
|
||||
"injury",
|
||||
"install",
|
||||
"iron",
|
||||
"jazz",
|
||||
"joke",
|
||||
"just",
|
||||
"kit",
|
||||
"kitchen",
|
||||
"language",
|
||||
"laundry",
|
||||
"leader",
|
||||
"lend",
|
||||
"leopard",
|
||||
"license",
|
||||
"live",
|
||||
"lobster",
|
||||
"lounge",
|
||||
"magnet",
|
||||
"mail",
|
||||
"mansion",
|
||||
"mass",
|
||||
"math",
|
||||
"media",
|
||||
"message",
|
||||
"metal",
|
||||
"misery",
|
||||
"mix",
|
||||
"more",
|
||||
"mountain",
|
||||
"museum",
|
||||
"mutual",
|
||||
"narrow",
|
||||
"nerve",
|
||||
"next",
|
||||
"note",
|
||||
"obey",
|
||||
"obtain",
|
||||
"offer",
|
||||
"once",
|
||||
"orange",
|
||||
"ostrich",
|
||||
"over",
|
||||
"owner",
|
||||
"palace",
|
||||
"patch",
|
||||
"pave",
|
||||
"pen",
|
||||
"phrase",
|
||||
"piece",
|
||||
"pizza",
|
||||
"plunge",
|
||||
"polar",
|
||||
"pool",
|
||||
"power",
|
||||
"pretty",
|
||||
"private",
|
||||
"protect",
|
||||
"pulp",
|
||||
"purity",
|
||||
"quit",
|
||||
"quote",
|
||||
"raise",
|
||||
"razor",
|
||||
"recall",
|
||||
"region",
|
||||
"relief",
|
||||
"rent",
|
||||
"rescue",
|
||||
"review",
|
||||
"ride",
|
||||
"risk",
|
||||
"roof",
|
||||
"rough",
|
||||
"saddle",
|
||||
"salmon",
|
||||
"sand",
|
||||
"scene",
|
||||
"scrub",
|
||||
"season",
|
||||
"seek",
|
||||
"series",
|
||||
"shed",
|
||||
"shoe",
|
||||
"sick",
|
||||
"silent",
|
||||
"situate",
|
||||
"skill",
|
||||
"slide",
|
||||
"slush",
|
||||
"snack",
|
||||
"solar",
|
||||
"soul",
|
||||
"special",
|
||||
"sphere",
|
||||
"spot",
|
||||
"spy",
|
||||
"stairs",
|
||||
"stereo",
|
||||
"strategy",
|
||||
"stuff",
|
||||
"success",
|
||||
"sunny",
|
||||
"surge",
|
||||
"swear",
|
||||
"symptom",
|
||||
"tail",
|
||||
"ten",
|
||||
"tent",
|
||||
"theme",
|
||||
"thumb",
|
||||
"tiny",
|
||||
"toe",
|
||||
"tooth",
|
||||
"topic",
|
||||
"trade",
|
||||
"trash",
|
||||
"trophy",
|
||||
"truly",
|
||||
"tumble",
|
||||
"typical",
|
||||
"uncle",
|
||||
"unfair",
|
||||
"until",
|
||||
"upper",
|
||||
"useless",
|
||||
"van",
|
||||
"venue",
|
||||
"video",
|
||||
"visa",
|
||||
"vocal",
|
||||
"walk",
|
||||
"waste",
|
||||
"wedding",
|
||||
"weekend",
|
||||
"wide",
|
||||
"winner",
|
||||
"wise",
|
||||
"wood",
|
||||
"wrist",
|
||||
"zero"
|
||||
]
|
||||
+521
@@ -0,0 +1,521 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
decoded_data,
|
||||
decode_result,
|
||||
decode,
|
||||
encode
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/**
|
||||
* Data that RLP can encode. Also the result of decoding.
|
||||
*/
|
||||
type decoded_data
|
||||
= Uint8Array
|
||||
| Array<decoded_data>;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decoding can have a remainder
|
||||
*/
|
||||
type decode_result
|
||||
= {decoded_data : decoded_data,
|
||||
remainder : Uint8Array};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(bytes: Uint8Array)
|
||||
: decode_result
|
||||
{
|
||||
// check the first byte
|
||||
let first_byte: number = bytes[0];
|
||||
let rest : Uint8Array = bytes.slice(1);
|
||||
// if the first byte is between 0 and 127, that is the data
|
||||
if
|
||||
(first_byte <= 127) {
|
||||
return dr(new Uint8Array([first_byte]), rest);
|
||||
}
|
||||
// if the first byte is between 128 and 183 = 128 + 55, it is a bytestring
|
||||
// and the length is Byte - 128
|
||||
else if
|
||||
(first_byte <= 183) {
|
||||
let payload_byte_length : number = first_byte - 128;
|
||||
let payload : Uint8Array = rest.slice(0, payload_byte_length);
|
||||
let rest2 : Uint8Array = rest.slice(payload_byte_length);
|
||||
return dr(payload, rest2);
|
||||
}
|
||||
// if the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
// bytestring. the byte length of bytestring is FirstByte - 183. Then pull
|
||||
// out the actual data
|
||||
else if
|
||||
(first_byte <= 191) {
|
||||
let byte_length_of_byte_length : number = first_byte - 183;
|
||||
let bytes_of_byte_length : Uint8Array = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length : number = bytes_to_number(bytes_of_byte_length);
|
||||
let bytes : Uint8Array = rest.slice(byte_length_of_byte_length,
|
||||
byte_length + byte_length_of_byte_length);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(bytes, rest2);
|
||||
}
|
||||
// If the first byte is between 192 and 247 = 192 + 55, it is a list. The
|
||||
// byte length of the list-payload is FirstByte - 192. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else if
|
||||
(first_byte <= 247) {
|
||||
let byte_length_of_list : number = first_byte - 192;
|
||||
let list_payload : Uint8Array = rest.slice(0, byte_length_of_list);
|
||||
let list : Array<decoded_data> = decode_list(list_payload);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length_of_list);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
// If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a
|
||||
// list. The byte length of the byte length of the list-payload is
|
||||
// FirstByte - 247. Then the byte length of the list. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else {
|
||||
let byte_length_of_byte_length : number = first_byte - 247;
|
||||
let bytes_of_byte_length : Uint8Array = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length : number = bytes_to_number(bytes_of_byte_length);
|
||||
let list_bytes : Uint8Array = rest.slice(byte_length_of_byte_length,
|
||||
byte_length + byte_length_of_byte_length);
|
||||
let list : Array<decoded_data> = decode_list(list_bytes);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a list payload (non-prefixed) into an `Array<decoded_data>`.
|
||||
*
|
||||
* Repeatedly decodes an element off the list until remainder is empty.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_list
|
||||
(bytes: Uint8Array)
|
||||
: Array<decoded_data>
|
||||
{
|
||||
let arr : Array<decoded_data> = [];
|
||||
while (bytes.length > 0) {
|
||||
// grab an item off the bytes
|
||||
let {decoded_data, remainder} = decode(bytes);
|
||||
// push it
|
||||
arr.push(decoded_data);
|
||||
// update bytes
|
||||
bytes = remainder;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert bytestring to number
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bytes_to_number
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let n : number = 0;
|
||||
for (let b of bytes)
|
||||
{
|
||||
n <<= 8;
|
||||
n += b;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Make a `decode_result` containing the two arguments
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
dr
|
||||
(x : decoded_data,
|
||||
y : Uint8Array)
|
||||
: decode_result
|
||||
{
|
||||
return {decoded_data : x,
|
||||
remainder : y};
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(data: decoded_data)
|
||||
: Uint8Array
|
||||
{
|
||||
// is it an array or data
|
||||
if
|
||||
(is_binary(data)) {
|
||||
return encode_binary(data as Uint8Array);
|
||||
}
|
||||
else if
|
||||
(is_list(data)) {
|
||||
return encode_list(data as Array<decoded_data>);
|
||||
}
|
||||
else {
|
||||
throw new Error('encode told to encode something that is not an array or a binary: ' + data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a binary into RLP
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_binary
|
||||
(bytes: Uint8Array)
|
||||
: Uint8Array
|
||||
{
|
||||
let len: number = bytes.length;
|
||||
// single byte case when the byte is between 0..127
|
||||
// result is the bytestring containing the byte itself
|
||||
if
|
||||
((len === 1) &&
|
||||
(bytes[0] <= 127)){
|
||||
return bytes;
|
||||
}
|
||||
// if the bytestring is 0..55 bytes long, the first byte in the result is
|
||||
// 128 + Length, the rest of the result bytestring is the input string
|
||||
else if
|
||||
(len <= 55) {
|
||||
// construct the result
|
||||
// <<128 + Len, Bytes/binary>>
|
||||
let result : Uint8Array = new Uint8Array(len + 1);
|
||||
// first byte is 128 + length
|
||||
result[0] = 128 + len;
|
||||
// copy input bytes into result
|
||||
for (let input_idx0 = 0;
|
||||
input_idx0 < len;
|
||||
input_idx0++)
|
||||
{
|
||||
let result_idx0 : number = input_idx0 + 1;
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the bytestring is more than 55 bytes long, the first byte is 183 +
|
||||
// ByteLengthOfByteLength, followed by the byte length, followed by the
|
||||
// bytes
|
||||
else {
|
||||
let len_bytes : Uint8Array = encode_unsigned(len);
|
||||
let len_bytes_length : number = len_bytes.length;
|
||||
// total array is
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
let result : Uint8Array = new Uint8Array(1 + len_bytes_length + len);
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 183 + len_bytes_length;
|
||||
// copy len_bytes into result
|
||||
for (let len_bytes_idx0 = 0;
|
||||
len_bytes_idx0 < len_bytes_length;
|
||||
len_bytes_idx0++)
|
||||
{
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = len_bytes_idx0 + 1;
|
||||
result[result_idx0] = len_bytes[len_bytes_idx0];
|
||||
}
|
||||
// copy original byte array into result
|
||||
for (let input_idx0 = 0;
|
||||
input_idx0 < len;
|
||||
input_idx0++)
|
||||
{
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = input_idx0 + (1 + len_bytes_length);
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
// finally, return the result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a list
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_list
|
||||
(list: Array<decoded_data>)
|
||||
: Uint8Array
|
||||
{
|
||||
// first encode every element in the list, then branch
|
||||
let payloads : Array<Uint8Array> = list.map(encode);
|
||||
let payload : Uint8Array = uint8arr_concat(payloads);
|
||||
let payload_size : number = payload.length;
|
||||
// if the payload size is in 0..55, then the first byte is 192 + payload
|
||||
// size, followed by the payload
|
||||
if
|
||||
(payload_size <= 55) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
let result : Uint8Array = new Uint8Array(1 + payload_size);
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 192 + payload_size;
|
||||
// copy the rest of the payload into result
|
||||
for (let payload_idx0 = 0;
|
||||
payload_idx0 < payload_size;
|
||||
payload_idx0++)
|
||||
{
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = payload_idx0 + 1;
|
||||
result[result_idx0] = payload[payload_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the payload size is greater than 55, the first byte is 247 +
|
||||
// size_of_payload_size, followed by the payload size, followed by the
|
||||
// payload
|
||||
else {
|
||||
// compute the payload size size
|
||||
let payload_size_bytes : Uint8Array = encode_unsigned(payload_size);
|
||||
let payload_size_size : number = payload_size_bytes.length;
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
let result: Uint8Array = new Uint8Array(1 + payload_size_size + payload_size);
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// first byte is 247 + payload_size_size
|
||||
result[0] = 247 + payload_size_size;
|
||||
// copy the payload_size_bytes into result
|
||||
for (let psb_idx0 = 0;
|
||||
psb_idx0 < payload_size_size;
|
||||
psb_idx0++)
|
||||
{
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 byte for this
|
||||
let result_idx0 : number = psb_idx0 + 1;
|
||||
result[result_idx0] = payload_size_bytes[psb_idx0];
|
||||
}
|
||||
// copy the payload into result
|
||||
for (let pb_idx0 = 0;
|
||||
pb_idx0 < payload_size;
|
||||
pb_idx0++)
|
||||
{
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 + payload_size_size bytes for this
|
||||
let result_idx0 : number = pb_idx0 + (1 + payload_size_size);
|
||||
result[result_idx0] = payload[pb_idx0];
|
||||
}
|
||||
// finally, return result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a number as a bytestring
|
||||
*
|
||||
* Not for general use, this assumes the input number is greater than 55
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_unsigned
|
||||
(n: number)
|
||||
: Uint8Array
|
||||
{
|
||||
// can assume that n initially is greater than 55
|
||||
// have to encode it in reverse order
|
||||
let arr : Array<number> = [];
|
||||
// repeated division by 256 with remainder
|
||||
//
|
||||
// example: suppose bign was 1234 and we were dividing by 10
|
||||
//
|
||||
// iteration 0:
|
||||
// bign = 1234
|
||||
// arr = []
|
||||
// ---
|
||||
// bign / 10 = 123
|
||||
// bign % 10 = 4
|
||||
// ---
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
//
|
||||
// iteration 1:
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
// ---
|
||||
// bign / 10 = 12
|
||||
// bign % 10 = 3
|
||||
// ---
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
//
|
||||
// iteration 2:
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
// ---
|
||||
// bign / 10 = 1
|
||||
// bign % 10 = 2
|
||||
// ---
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
//
|
||||
// iteration 3:
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
// ---
|
||||
// bign / 10 = 0
|
||||
// bign % 10 = 1
|
||||
// ---
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
//
|
||||
// iteration 4:
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
// ---
|
||||
// DONE
|
||||
while (n > 0) {
|
||||
arr.push(n % 256);
|
||||
n >>= 8;
|
||||
}
|
||||
// reverse and make into Uint8Array
|
||||
arr.reverse();
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* concatenate an array of `Uint8Array`s into a single Uint8Array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
uint8arr_concat
|
||||
(arrs: Array<Uint8Array>)
|
||||
: Uint8Array
|
||||
{
|
||||
// total length
|
||||
let total_len = arrs.reduce(// fold
|
||||
function (acc_len: number, this_uint8array: Uint8Array): number {
|
||||
return acc_len + this_uint8array.length;
|
||||
},
|
||||
// initial accumulator
|
||||
0);
|
||||
// start up result
|
||||
let result : Uint8Array = new Uint8Array(total_len);
|
||||
let result_idx0 : number = 0;
|
||||
// concatenate
|
||||
for (let this_uint8arr of arrs) {
|
||||
// bytewise copy of this uint8array
|
||||
for (let this_uint8arr_idx0 = 0;
|
||||
this_uint8arr_idx0 < this_uint8arr.length;
|
||||
this_uint8arr_idx0++)
|
||||
{
|
||||
// copy byte and increment result idx0
|
||||
result[result_idx0] = this_uint8arr[this_uint8arr_idx0];
|
||||
result_idx0++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns true if input is `instanceof Uint8Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
is_binary
|
||||
(x: any)
|
||||
: boolean
|
||||
{
|
||||
return (x instanceof Uint8Array);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* returns true if input is `instanceof Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
is_list
|
||||
(x: any)
|
||||
: boolean
|
||||
{
|
||||
return (x instanceof Array);
|
||||
}
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
|
||||
export {
|
||||
Safe,
|
||||
Ok,
|
||||
Error,
|
||||
ok,
|
||||
error,
|
||||
unsafe
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Type that catches positive errors
|
||||
*/
|
||||
type Safe<ok_t, err_t>
|
||||
= Ok<ok_t>
|
||||
| Error<err_t>;
|
||||
|
||||
|
||||
/**
|
||||
* Ok type
|
||||
*/
|
||||
type Ok<ok_t>
|
||||
= {ok : true,
|
||||
result : ok_t};
|
||||
|
||||
|
||||
/**
|
||||
* Error type
|
||||
*/
|
||||
type Error<err_t>
|
||||
= {ok : false,
|
||||
error : err_t};
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
function
|
||||
ok
|
||||
<ok_t>
|
||||
(x : ok_t)
|
||||
: Ok<ok_t>
|
||||
{
|
||||
return {ok: true, result: x};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
function
|
||||
error
|
||||
<err_t>
|
||||
(x: err_t)
|
||||
: Error<err_t>
|
||||
{
|
||||
return {ok: false, error: x};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
function
|
||||
unsafe
|
||||
<ok_t, err_t>
|
||||
(x: Safe<ok_t, err_t>)
|
||||
: ok_t
|
||||
{
|
||||
if (x.ok)
|
||||
return x.result;
|
||||
else
|
||||
throw x.error;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as rlp from './jex_include/local-vdk-0.1.0/dist/rlp.js';
|
||||
declare type rlpcases = {
|
||||
decoded: rlp.decoded_data;
|
||||
encoded: Uint8Array;
|
||||
};
|
||||
export declare const cases: Array<rlpcases>;
|
||||
export {};
|
||||
+12568
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
declare function encode(binary: Uint8Array): string;
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
declare function decode(base58: string): Uint8Array;
|
||||
@@ -0,0 +1,308 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
export { encode, decode };
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
function encode(binary) {
|
||||
let num_leading_zeros = nlz(binary);
|
||||
let rest = binary.slice(num_leading_zeros);
|
||||
let ones = encode_zeros(num_leading_zeros);
|
||||
let rest_b58 = encode_rest(rest);
|
||||
let result = ones + rest_b58;
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* count the number of leading zeros in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function nlz(bytes) {
|
||||
let n = 0;
|
||||
for (let this_byte of bytes) {
|
||||
if (0 === this_byte) {
|
||||
n++;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Generate a bunch of '1's for however many leading zeros there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_zeros(how_many) {
|
||||
let ones = '';
|
||||
for (let i = 1; i <= how_many; i++) {
|
||||
ones += '1';
|
||||
}
|
||||
return ones;
|
||||
}
|
||||
/**
|
||||
* Encode a Uint8Array that has no leading zeros
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_rest(bytes) {
|
||||
let bytes_bignum = bytes_to_bigint(bytes);
|
||||
let result = bignum_to_base58(bytes_bignum);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Convert a bytestring to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bytes_to_bigint(bytes) {
|
||||
let acc_bigint = 0n;
|
||||
for (let this_byte of bytes) {
|
||||
acc_bigint <<= 8n;
|
||||
acc_bigint += BigInt(this_byte);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
/**
|
||||
* Convert a BigInt to Base58
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bignum_to_base58(q) {
|
||||
let s = '';
|
||||
while (q !== 0n) {
|
||||
let this_n = q % 58n;
|
||||
q /= 58n;
|
||||
let this_b58_char = bigint_to_char(this_n);
|
||||
s = this_b58_char + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
function decode(base58) {
|
||||
let num_leading_ones = nlo(base58);
|
||||
let rest = base58.slice(num_leading_ones);
|
||||
let zeros = decode_ones(num_leading_ones);
|
||||
let rest_arr = decode_rest(rest);
|
||||
let pre_result = zeros.concat(rest_arr);
|
||||
return new Uint8Array(pre_result);
|
||||
}
|
||||
/**
|
||||
* count the number of leading 1 characters in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function nlo(base58) {
|
||||
let n = 0;
|
||||
for (let this_char of base58) {
|
||||
if ('1' === this_char) {
|
||||
n++;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Generate a bunch of '0's for however many leading ones there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_ones(how_many) {
|
||||
let zeros = [];
|
||||
for (let i = 1; i <= how_many; i++) {
|
||||
zeros.push(0);
|
||||
}
|
||||
return zeros;
|
||||
}
|
||||
/**
|
||||
* Decode a string that has no leading 1s
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_rest(base58) {
|
||||
let result_bignum = base58_to_bigint(base58);
|
||||
let result = bigint_to_base256(result_bignum);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Convert a base58 string to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function base58_to_bigint(base58) {
|
||||
let acc_bigint = 0n;
|
||||
for (let this_char of base58) {
|
||||
acc_bigint *= 58n;
|
||||
acc_bigint += char_to_bigint(this_char);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
/**
|
||||
* convert a bignum into a byte array
|
||||
*
|
||||
* @end
|
||||
*/
|
||||
function bigint_to_base256(q) {
|
||||
let arr_reverse = [];
|
||||
while (q !== 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return arr_reverse;
|
||||
}
|
||||
//=============================================================================
|
||||
// TRANSLATION TABLES
|
||||
//=============================================================================
|
||||
/**
|
||||
* Base58 integer -> character conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bigint_to_char(n) {
|
||||
switch (n) {
|
||||
case 0n: return '1';
|
||||
case 1n: return '2';
|
||||
case 2n: return '3';
|
||||
case 3n: return '4';
|
||||
case 4n: return '5';
|
||||
case 5n: return '6';
|
||||
case 6n: return '7';
|
||||
case 7n: return '8';
|
||||
case 8n: return '9';
|
||||
case 9n: return 'A';
|
||||
case 10n: return 'B';
|
||||
case 11n: return 'C';
|
||||
case 12n: return 'D';
|
||||
case 13n: return 'E';
|
||||
case 14n: return 'F';
|
||||
case 15n: return 'G';
|
||||
case 16n: return 'H';
|
||||
case 17n: return 'J';
|
||||
case 18n: return 'K';
|
||||
case 19n: return 'L';
|
||||
case 20n: return 'M';
|
||||
case 21n: return 'N';
|
||||
case 22n: return 'P';
|
||||
case 23n: return 'Q';
|
||||
case 24n: return 'R';
|
||||
case 25n: return 'S';
|
||||
case 26n: return 'T';
|
||||
case 27n: return 'U';
|
||||
case 28n: return 'V';
|
||||
case 29n: return 'W';
|
||||
case 30n: return 'X';
|
||||
case 31n: return 'Y';
|
||||
case 32n: return 'Z';
|
||||
case 33n: return 'a';
|
||||
case 34n: return 'b';
|
||||
case 35n: return 'c';
|
||||
case 36n: return 'd';
|
||||
case 37n: return 'e';
|
||||
case 38n: return 'f';
|
||||
case 39n: return 'g';
|
||||
case 40n: return 'h';
|
||||
case 41n: return 'i';
|
||||
case 42n: return 'j';
|
||||
case 43n: return 'k';
|
||||
case 44n: return 'm';
|
||||
case 45n: return 'n';
|
||||
case 46n: return 'o';
|
||||
case 47n: return 'p';
|
||||
case 48n: return 'q';
|
||||
case 49n: return 'r';
|
||||
case 50n: return 's';
|
||||
case 51n: return 't';
|
||||
case 52n: return 'u';
|
||||
case 53n: return 'v';
|
||||
case 54n: return 'w';
|
||||
case 55n: return 'x';
|
||||
case 56n: return 'y';
|
||||
case 57n: return 'z';
|
||||
default:
|
||||
throw new Error('invalid base58 bigint: ' + n);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Base58 character -> integer conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function char_to_bigint(s) {
|
||||
switch (s) {
|
||||
case '1': return 0n;
|
||||
case '2': return 1n;
|
||||
case '3': return 2n;
|
||||
case '4': return 3n;
|
||||
case '5': return 4n;
|
||||
case '6': return 5n;
|
||||
case '7': return 6n;
|
||||
case '8': return 7n;
|
||||
case '9': return 8n;
|
||||
case 'A': return 9n;
|
||||
case 'B': return 10n;
|
||||
case 'C': return 11n;
|
||||
case 'D': return 12n;
|
||||
case 'E': return 13n;
|
||||
case 'F': return 14n;
|
||||
case 'G': return 15n;
|
||||
case 'H': return 16n;
|
||||
case 'J': return 17n;
|
||||
case 'K': return 18n;
|
||||
case 'L': return 19n;
|
||||
case 'M': return 20n;
|
||||
case 'N': return 21n;
|
||||
case 'P': return 22n;
|
||||
case 'Q': return 23n;
|
||||
case 'R': return 24n;
|
||||
case 'S': return 25n;
|
||||
case 'T': return 26n;
|
||||
case 'U': return 27n;
|
||||
case 'V': return 28n;
|
||||
case 'W': return 29n;
|
||||
case 'X': return 30n;
|
||||
case 'Y': return 31n;
|
||||
case 'Z': return 32n;
|
||||
case 'a': return 33n;
|
||||
case 'b': return 34n;
|
||||
case 'c': return 35n;
|
||||
case 'd': return 36n;
|
||||
case 'e': return 37n;
|
||||
case 'f': return 38n;
|
||||
case 'g': return 39n;
|
||||
case 'h': return 40n;
|
||||
case 'i': return 41n;
|
||||
case 'j': return 42n;
|
||||
case 'k': return 43n;
|
||||
case 'm': return 44n;
|
||||
case 'n': return 45n;
|
||||
case 'o': return 46n;
|
||||
case 'p': return 47n;
|
||||
case 'q': return 48n;
|
||||
case 'r': return 49n;
|
||||
case 's': return 50n;
|
||||
case 't': return 51n;
|
||||
case 'u': return 52n;
|
||||
case 'v': return 53n;
|
||||
case 'w': return 54n;
|
||||
case 'x': return 55n;
|
||||
case 'y': return 56n;
|
||||
case 'z': return 57n;
|
||||
default:
|
||||
throw new Error('invalid base58 char: ' + s);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=b58.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
declare function encode(bytes: Uint8Array): string;
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
declare function decode(base64_str: string): Uint8Array;
|
||||
@@ -0,0 +1,507 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
export { encode, decode };
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
function encode(bytes) {
|
||||
// slice the array
|
||||
// length of head is a multiple of 3
|
||||
// treat the tail as a special case
|
||||
let { head, tail, tail_len } = slice3k(bytes);
|
||||
let head_str = encode_head(head);
|
||||
let tail_str = encode_tail(tail, tail_len);
|
||||
return head_str + tail_str;
|
||||
}
|
||||
/**
|
||||
* Take a Uint8Array, take the first 3k (k >= 0) bytes, put them in head, and
|
||||
* the remaining 0,1, or 2 bytes, put them in tail
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function slice3k(bytes) {
|
||||
let len = bytes.length;
|
||||
// too lazy to look up how to do integer division in js so this will do
|
||||
let tail_len = len % 3;
|
||||
let head_len = len - tail_len;
|
||||
// for slice:
|
||||
// first argument is the 0-index of the start
|
||||
// second - first is the length of the slice
|
||||
let head = bytes.slice(0, head_len);
|
||||
// empty second argument means go to the end
|
||||
let tail = bytes.slice(head_len);
|
||||
return { head: head,
|
||||
tail: tail,
|
||||
tail_len: tail_len };
|
||||
}
|
||||
/**
|
||||
* Encode a Uint8Array whose length is known to be a multiple of 3
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_head(head_bytes) {
|
||||
// can assume length of bytes is a multiple of 3
|
||||
// start index at 0
|
||||
// increment by 3
|
||||
let head_bytes_len = head_bytes.length;
|
||||
let max_idx0 = head_bytes_len - 1;
|
||||
let head_str_acc = '';
|
||||
for (let this_3slice_start_idx0 = 0; this_3slice_start_idx0 <= max_idx0; this_3slice_start_idx0 += 3) {
|
||||
let this_3slice_bytes = head_bytes.slice(this_3slice_start_idx0, this_3slice_start_idx0 + 3);
|
||||
let this_3slice_str = encode3(this_3slice_bytes);
|
||||
head_str_acc += this_3slice_str;
|
||||
}
|
||||
return head_str_acc;
|
||||
}
|
||||
/**
|
||||
* Encode a 3 bytes into base64 notation
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode3(bytes) {
|
||||
let b0 = bytes[0];
|
||||
let b1 = bytes[1];
|
||||
let b2 = bytes[2];
|
||||
// ABCDEFGH 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// ABCDEF GH1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
let n0 = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// b2 = abcdefgh
|
||||
// b2 >> 6 = ______ab
|
||||
// n2 = __5678ab
|
||||
let n2 = ((b1 % 16) << 2) + (b2 >> 6);
|
||||
// b2 = abcdefgh
|
||||
// 64 = _1______
|
||||
// n3 = __cdefgh
|
||||
let n3 = b2 % 64;
|
||||
// convert to chars
|
||||
let s0 = int2char(n0);
|
||||
let s1 = int2char(n1);
|
||||
let s2 = int2char(n2);
|
||||
let s3 = int2char(n3);
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + s3;
|
||||
}
|
||||
/**
|
||||
* Encode the final 0, 1, or 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_tail(tail_bytes, tail_len) {
|
||||
switch (tail_len) {
|
||||
case 0: return '';
|
||||
case 1: return encode1(tail_bytes);
|
||||
case 2: return encode2(tail_bytes);
|
||||
default:
|
||||
throw new Error('encode_tail with tail_len = ' + tail_len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a single byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode1(bytes) {
|
||||
let b0 = bytes[0];
|
||||
// n0 = __ABCDEF
|
||||
// b0 = ABCDEFGH
|
||||
// b0 >> 2 = __ABCDEF
|
||||
let n0 = b0 >> 2;
|
||||
// n1 = __GH____
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
let n1 = (b0 % 4) << 4;
|
||||
return int2char(n0) + int2char(n1) + '==';
|
||||
}
|
||||
/**
|
||||
* Encode two bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode2(bytes) {
|
||||
let b0 = bytes[0];
|
||||
let b1 = bytes[1];
|
||||
// ABCDEFGH 12345678
|
||||
// b0 b1
|
||||
// ABCDEF GH1234 5678__
|
||||
// n0 n1 n2
|
||||
let n0 = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// n2 = __5678__
|
||||
let n2 = (b1 % 16) << 2;
|
||||
// convert to chars
|
||||
let s0 = int2char(n0);
|
||||
let s1 = int2char(n1);
|
||||
let s2 = int2char(n2);
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + '=';
|
||||
}
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
function decode(base64_str) {
|
||||
// length of the string is guaranteed to be a multiple of 4
|
||||
// if the string is empty, return the empty array
|
||||
let len = base64_str.length;
|
||||
// this branching contains the implicit assertion that the length is a
|
||||
// multiple of 4. If this is not true, the bottom branch is triggered.
|
||||
// general case goes first because speeeeeed
|
||||
if ((4 < len)
|
||||
&& (0 === (len % 4))) {
|
||||
// split the head and tail
|
||||
let tail_start_idx0 = len - 4;
|
||||
let head_s = base64_str.slice(0, tail_start_idx0);
|
||||
let tail_s = base64_str.slice(tail_start_idx0);
|
||||
// Using arrays because Uint8Arrays don't have a concat operation
|
||||
let head_arr = decode_head(head_s);
|
||||
let tail_arr = decode_tail(tail_s);
|
||||
// silly to put these in variables but this is exactly the type of
|
||||
// situation where JS type insanity shows up
|
||||
//
|
||||
// see: i forgot
|
||||
// > [1,2,3] + [4,5,6]
|
||||
// '1,2,34,5,6'
|
||||
//
|
||||
// Originally, I used + like some sort of moron who codes in a sane
|
||||
// language
|
||||
//
|
||||
// seriously what is this language
|
||||
//
|
||||
// this is some clown behavior
|
||||
let total_arr = head_arr.concat(tail_arr);
|
||||
return new Uint8Array(total_arr);
|
||||
}
|
||||
// special case if the length is exactly 4
|
||||
else if (4 === len) {
|
||||
// it's just a tail
|
||||
return new Uint8Array(decode_tail(base64_str));
|
||||
}
|
||||
// empty string
|
||||
else if (0 === len) {
|
||||
return new Uint8Array([]);
|
||||
}
|
||||
else {
|
||||
throw new Error('base64 decode: invalid string length: ' + len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a string known to not have any padding
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_head(s) {
|
||||
// go 4 characters at a time
|
||||
let max_i0 = s.length - 1;
|
||||
let decoded_acc = [];
|
||||
for (let i0 = 0; i0 <= max_i0; i0 += 4) {
|
||||
let this_slice_s = s.slice(i0, i0 + 4);
|
||||
let this_slice_arr = decode3(this_slice_s);
|
||||
// update accumulator
|
||||
decoded_acc = decoded_acc.concat(this_slice_arr);
|
||||
}
|
||||
return decoded_acc;
|
||||
}
|
||||
/**
|
||||
* Decode 4 characters that correspond to either 3 bytes, 2, bytes, or 1 byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_tail(s) {
|
||||
// all that matters right now is the last 2 chars
|
||||
// s0, s1, s2, s3
|
||||
// 0 based indexing is so annoying
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
// braaaaaaaaaaaaaaaaaench
|
||||
// two equals signs means 1 byte
|
||||
if (('=' === s3) && ('=' === s2)) {
|
||||
return decode1(s);
|
||||
}
|
||||
// one equals sign means 2 bytes
|
||||
else if (('=' === s3)) {
|
||||
return decode2(s);
|
||||
}
|
||||
// 0 equals signs means 3 bytes
|
||||
else {
|
||||
return decode3(s);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 3 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode3(s) {
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
let n2 = char2int(s2);
|
||||
let n3 = char2int(s3);
|
||||
// abcdef gh1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
// abcdefgh 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678ab
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
// n2 = __5678ab
|
||||
// 4 = _____1__
|
||||
// n2 % 4 = ______ab
|
||||
// (n2 % 4) << 6 = ab______
|
||||
// n3 = __cdefgh
|
||||
let b2 = ((n2 % 4) << 6) + n3;
|
||||
return [b0, b1, b2];
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode2(s) {
|
||||
// xyz=
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
let s2 = s[2];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
let n2 = char2int(s2);
|
||||
// abcdef gh1234 5678__
|
||||
// n0 n1 n2
|
||||
// abcdefgh 12345678
|
||||
// b0 b1
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678__
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
return [b0, b1];
|
||||
}
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode1(s) {
|
||||
// xy==
|
||||
// pull out strings
|
||||
let s0 = s[0];
|
||||
let s1 = s[1];
|
||||
// convert to numbers
|
||||
let n0 = char2int(s0);
|
||||
let n1 = char2int(s1);
|
||||
// abcdef gh____
|
||||
// n0 n1
|
||||
// abcdefgh
|
||||
// b0
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh____
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 = (n0 << 2) + (n1 >> 4);
|
||||
return [b0];
|
||||
}
|
||||
// FIXME: these tables would *probably* be faster if they were made into objects
|
||||
/**
|
||||
* Conversion table for base64 encode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function int2char(n) {
|
||||
switch (n) {
|
||||
case 0: return 'A';
|
||||
case 1: return 'B';
|
||||
case 2: return 'C';
|
||||
case 3: return 'D';
|
||||
case 4: return 'E';
|
||||
case 5: return 'F';
|
||||
case 6: return 'G';
|
||||
case 7: return 'H';
|
||||
case 8: return 'I';
|
||||
case 9: return 'J';
|
||||
case 10: return 'K';
|
||||
case 11: return 'L';
|
||||
case 12: return 'M';
|
||||
case 13: return 'N';
|
||||
case 14: return 'O';
|
||||
case 15: return 'P';
|
||||
case 16: return 'Q';
|
||||
case 17: return 'R';
|
||||
case 18: return 'S';
|
||||
case 19: return 'T';
|
||||
case 20: return 'U';
|
||||
case 21: return 'V';
|
||||
case 22: return 'W';
|
||||
case 23: return 'X';
|
||||
case 24: return 'Y';
|
||||
case 25: return 'Z';
|
||||
case 26: return 'a';
|
||||
case 27: return 'b';
|
||||
case 28: return 'c';
|
||||
case 29: return 'd';
|
||||
case 30: return 'e';
|
||||
case 31: return 'f';
|
||||
case 32: return 'g';
|
||||
case 33: return 'h';
|
||||
case 34: return 'i';
|
||||
case 35: return 'j';
|
||||
case 36: return 'k';
|
||||
case 37: return 'l';
|
||||
case 38: return 'm';
|
||||
case 39: return 'n';
|
||||
case 40: return 'o';
|
||||
case 41: return 'p';
|
||||
case 42: return 'q';
|
||||
case 43: return 'r';
|
||||
case 44: return 's';
|
||||
case 45: return 't';
|
||||
case 46: return 'u';
|
||||
case 47: return 'v';
|
||||
case 48: return 'w';
|
||||
case 49: return 'x';
|
||||
case 50: return 'y';
|
||||
case 51: return 'z';
|
||||
case 52: return '0';
|
||||
case 53: return '1';
|
||||
case 54: return '2';
|
||||
case 55: return '3';
|
||||
case 56: return '4';
|
||||
case 57: return '5';
|
||||
case 58: return '6';
|
||||
case 59: return '7';
|
||||
case 60: return '8';
|
||||
case 61: return '9';
|
||||
case 62: return '+';
|
||||
case 63: return '/';
|
||||
default: throw new Error("invalid base64 encode byte: " + n);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Conversion table for base64 decode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function char2int(s) {
|
||||
switch (s) {
|
||||
case 'A': return 0;
|
||||
case 'B': return 1;
|
||||
case 'C': return 2;
|
||||
case 'D': return 3;
|
||||
case 'E': return 4;
|
||||
case 'F': return 5;
|
||||
case 'G': return 6;
|
||||
case 'H': return 7;
|
||||
case 'I': return 8;
|
||||
case 'J': return 9;
|
||||
case 'K': return 10;
|
||||
case 'L': return 11;
|
||||
case 'M': return 12;
|
||||
case 'N': return 13;
|
||||
case 'O': return 14;
|
||||
case 'P': return 15;
|
||||
case 'Q': return 16;
|
||||
case 'R': return 17;
|
||||
case 'S': return 18;
|
||||
case 'T': return 19;
|
||||
case 'U': return 20;
|
||||
case 'V': return 21;
|
||||
case 'W': return 22;
|
||||
case 'X': return 23;
|
||||
case 'Y': return 24;
|
||||
case 'Z': return 25;
|
||||
case 'a': return 26;
|
||||
case 'b': return 27;
|
||||
case 'c': return 28;
|
||||
case 'd': return 29;
|
||||
case 'e': return 30;
|
||||
case 'f': return 31;
|
||||
case 'g': return 32;
|
||||
case 'h': return 33;
|
||||
case 'i': return 34;
|
||||
case 'j': return 35;
|
||||
case 'k': return 36;
|
||||
case 'l': return 37;
|
||||
case 'm': return 38;
|
||||
case 'n': return 39;
|
||||
case 'o': return 40;
|
||||
case 'p': return 41;
|
||||
case 'q': return 42;
|
||||
case 'r': return 43;
|
||||
case 's': return 44;
|
||||
case 't': return 45;
|
||||
case 'u': return 46;
|
||||
case 'v': return 47;
|
||||
case 'w': return 48;
|
||||
case 'x': return 49;
|
||||
case 'y': return 50;
|
||||
case 'z': return 51;
|
||||
case '0': return 52;
|
||||
case '1': return 53;
|
||||
case '2': return 54;
|
||||
case '3': return 55;
|
||||
case '4': return 56;
|
||||
case '5': return 57;
|
||||
case '6': return 58;
|
||||
case '7': return 59;
|
||||
case '8': return 60;
|
||||
case '9': return 61;
|
||||
case '+': return 62;
|
||||
case '/': return 63;
|
||||
default: throw new Error("invalid base64 character: " + s);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=b64.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { bytes_to_bigint, bigint_to_bytes, concat, strong_rand_bytes };
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
declare function concat(arr1: Uint8Array, arr2: Uint8Array): Uint8Array;
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
declare function strong_rand_bytes(how_many: number): Uint8Array;
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
declare function bytes_to_bigint(bytes: Uint8Array): bigint;
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
declare function bigint_to_bytes(q: bigint): Uint8Array;
|
||||
@@ -0,0 +1,266 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { bytes_to_bigint, bigint_to_bytes, concat, strong_rand_bytes };
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
function concat(arr1, arr2) {
|
||||
let len1 = arr1.length;
|
||||
let len2 = arr2.length;
|
||||
let arr1_idx0_offset = 0;
|
||||
let arr2_idx0_offset = len1;
|
||||
let result_len = len1 + len2;
|
||||
let result = new Uint8Array(result_len);
|
||||
// copy first array into result
|
||||
for (let arr1_idx0 = 0; arr1_idx0 < len1; arr1_idx0++) {
|
||||
// no offset here
|
||||
let result_idx0 = arr1_idx0 + arr1_idx0_offset;
|
||||
result[result_idx0] = arr1[arr1_idx0];
|
||||
}
|
||||
// copy second array into result
|
||||
for (let arr2_idx0 = 0; arr2_idx0 < len2; arr2_idx0++) {
|
||||
// offset by the length of the first array
|
||||
let result_idx0 = arr2_idx0 + arr2_idx0_offset;
|
||||
result[result_idx0] = arr2[arr2_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
function strong_rand_bytes(how_many) {
|
||||
let arr = new Uint8Array(how_many);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
function bytes_to_bigint(bytes) {
|
||||
let n = 0n;
|
||||
for (let b of bytes) {
|
||||
// move first, then add
|
||||
// otherwise it ends on a move
|
||||
// imperative languages are for losers
|
||||
n <<= 8n;
|
||||
n += BigInt(b);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
function bigint_to_bytes(q) {
|
||||
if (q < 0n) {
|
||||
throw new Error('q < 0n: ' + q);
|
||||
}
|
||||
let arr_reverse = [];
|
||||
while (q > 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return new Uint8Array(arr_reverse);
|
||||
}
|
||||
/**
|
||||
* Get an uninitialized bitstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bits_null(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 0.
|
||||
*/
|
||||
function bits_zeros(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
for (let i0 = 0; i0 < byte_length; i0++) {
|
||||
result[i0] = 0;
|
||||
}
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 1.
|
||||
*/
|
||||
function bits_ones(bit_length) {
|
||||
let byte_length = Math.ceil(bit_length / 8);
|
||||
let result = new Uint8Array(byte_length);
|
||||
// fill everything except the last byte with 255s
|
||||
for (let i0 = 0; i0 < (byte_length - 1); i0++) {
|
||||
result[i0] = 255;
|
||||
}
|
||||
// alright so the last byte
|
||||
// ok so the number of leading 0s is
|
||||
// 8 - (bit_length % 8)
|
||||
let num_trailing_zero_bits = 8 - (bit_length % 8);
|
||||
// the trailing byte is 255 << that
|
||||
// e.g. 3 trailing 0s
|
||||
// 1111_1111 -> 1111_1000
|
||||
let last_byte = 255 << num_trailing_zero_bits;
|
||||
let last_byte_idx0 = byte_length - 1;
|
||||
result[last_byte_idx0] = last_byte;
|
||||
return { bit_length: bit_length,
|
||||
bytes: result };
|
||||
}
|
||||
/**
|
||||
* Get the bit at a given 0-index
|
||||
*/
|
||||
function bits_i0th(bit_idx0, bits) {
|
||||
// first task is figuring out what byte we're at
|
||||
// for instance if we want bit 27
|
||||
// 3*8 = 24 =< 27 < 4*8
|
||||
// so it's Math.floor(bit_idx0 / 8)
|
||||
let byte_idx0 = Math.floor(bit_idx0 / 8);
|
||||
// let's fetch the byte and work with that
|
||||
let the_byte = bits.bytes[byte_idx0];
|
||||
// ok so let's go with 27 again
|
||||
// 27 = 3 mod 8
|
||||
// so we bitshift right by (8 - 3)
|
||||
// and then take the remainder dividing by 2
|
||||
// --B-_---- -> ----_---B -> 0000_000B
|
||||
let bsr = 8 - (bit_idx0 % 8);
|
||||
return (the_byte >> bsr) % 2;
|
||||
}
|
||||
/**
|
||||
* Concatenate two bitstrings
|
||||
*/
|
||||
function bits_concat(bits1, bits2) {
|
||||
let result_bit_length = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 = bits1.bytes;
|
||||
let bytes2 = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits = bits_null(result_bit_length);
|
||||
let result_bytes = result_bits.bytes;
|
||||
// go along each byte in result, and compute the byte boundary
|
||||
for (let i = 0; i < result_bytes.length; i++) {
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// this is the bit index of the leftmost bit in this byte
|
||||
let start_bit_bi0 = i * 8;
|
||||
let next_start_bit_bi0 = start_bit_bi0 + 8;
|
||||
// does the bit at the beginning of this byte correspond to the first array?
|
||||
// strict comparison:
|
||||
// suppose i = 0,
|
||||
// suppose bit_length1 is 0
|
||||
// then this says no, go to second array
|
||||
// suppose bl1 = 1,
|
||||
// this says start at first array
|
||||
let start_bit_is_of_first_array = start_bit_bi0 < bits1.bit_length;
|
||||
// weak comparison:
|
||||
// suppose bit_length1 = 8
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// ^
|
||||
// start_bit_bi0 ^ next_start_bit_bi0
|
||||
let stop_bit_is_of_first_array = next_start_bit_bi0 <= bits1.bit_length;
|
||||
// is this a bytes1 byte
|
||||
let is_bytes1_byte = start_bit_is_of_first_array && stop_bit_is_of_first_array;
|
||||
let is_boundary_byte = start_bit_is_of_first_array && !stop_bit_is_of_first_array;
|
||||
// need to work out the ping_pong bs up here because js is dumb and I
|
||||
// can't put lets between elseifs
|
||||
// alright, now we're in the case of only copying from the second array
|
||||
// we have two cases:
|
||||
// ping-pong:
|
||||
// ABCD_EFGH 1234_5678
|
||||
// - ---- ---
|
||||
// copying these bits
|
||||
// ping:
|
||||
// ABCD_EFGH <end>
|
||||
// - ---- 000
|
||||
//
|
||||
// how to distinguish between these two??
|
||||
//
|
||||
// we're in the ping case when the start_bit_bi0 corresponds to the
|
||||
// final byte of the second array
|
||||
//
|
||||
// ok
|
||||
//
|
||||
// we need to compute the bit address in the second array that
|
||||
// corresponds to the bit address at the beginning of this byte in the
|
||||
// result array
|
||||
let bits2_addr_bi0 = start_bit_bi0 - bits1.bit_length;
|
||||
// I think the variable is
|
||||
// bits_left_to_copy = bits2.bit_length - bit_addr2_bi0
|
||||
// no + 1 because the current bit is uncopied,
|
||||
// so if bit_addr2_bi0 = 7 and bits2.bit_length is 8, it means we
|
||||
// have the last bit to copy
|
||||
// cases:
|
||||
// bits_left_to_copy <= 0 ->
|
||||
// this would mean we have more bits to copy, but are out of
|
||||
// source bits. should be impossible if bits_null is correct
|
||||
// bits_left_to_copy <= 8 ->
|
||||
// this would mean we are going to fill this last byte in the
|
||||
// result array with the correct bits from array2, but how we
|
||||
// do this will depend on how those are arranged in bytes2
|
||||
// (whether we grab one or two bytes)
|
||||
//
|
||||
// this is the tricky case
|
||||
//
|
||||
// I think what matters here is the byte address in the second array
|
||||
// if we're on the last byte
|
||||
// 8 < bits_left_to_copy ->
|
||||
// this means we can safely grab two bytes from bytes2, and do
|
||||
// our bitshifting to make it correct
|
||||
//
|
||||
// FIXME
|
||||
let bits_left_to_copy = bits2.bit_length - bits2_addr_bi0;
|
||||
// no the variable that matters is which byte we're on in the result
|
||||
let this_bytes2_addr_i0 = Math.floor(bits2_addr_bi0 / 8);
|
||||
let next_bytes2_addr_i0 = this_bytes2_addr_i0 + 1;
|
||||
let bitshift_amt = bits1.bit_length % 8;
|
||||
let ping = next_bytes2_addr_i0 === bytes2.length;
|
||||
// simple case: this is a byte from the first array
|
||||
// just copy it
|
||||
if (is_bytes1_byte)
|
||||
result_bytes[i] = bytes1[i];
|
||||
// this is a boundary byte
|
||||
// further cases:
|
||||
// second bit length is 0 ->
|
||||
// ABCD_EF-- <empty>
|
||||
// ^ starting here
|
||||
// just copy first byte and move along
|
||||
else if (is_boundary_byte && (bits2.bit_length === 0))
|
||||
result_bytes[i] = bytes1[i];
|
||||
// boundary byte, and there is at least one byte in the second array
|
||||
else if (is_boundary_byte) {
|
||||
// copy over the first byte
|
||||
result_bytes[i] = bytes1[i];
|
||||
// take the first byte from the second array
|
||||
let first_byte_of_second_array = bytes2[0];
|
||||
// bytes1:
|
||||
// ABCD_EF00
|
||||
// 6
|
||||
// bytes2:
|
||||
// 1234_5678
|
||||
// 0000_0012
|
||||
// and bitshift it right by that amount
|
||||
let bitshift_amt = bits1.bit_length % 8;
|
||||
result_bytes[i] ^= first_byte_of_second_array >> bitshift_amt;
|
||||
}
|
||||
// last byte of second array
|
||||
else if (ping)
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt);
|
||||
// ping-pong: not last byte of second array
|
||||
else
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt) ^ (bytes2[next_bytes2_addr_i0] << bitshift_amt);
|
||||
}
|
||||
return { bit_length: result_bit_length,
|
||||
bytes: result_bytes };
|
||||
}
|
||||
//# sourceMappingURL=bin.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { encode, decode, byte_of_word, check_word, check_byte, words };
|
||||
import * as safe from './safe.js';
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
declare function encode(bytes: Uint8Array): string;
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
declare function decode(faert: string): safe.Safe<Uint8Array, string>;
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
declare function byte_of_word(word: string): safe.Safe<number, string>;
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
declare function check_word(bytes: Uint8Array): string;
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
declare function check_byte(bytes: Uint8Array): number;
|
||||
declare let words: string[];
|
||||
@@ -0,0 +1,344 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { encode, decode, byte_of_word, check_word, check_byte, words };
|
||||
import * as safe from './safe.js';
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
function encode(bytes) {
|
||||
// initial accumulator
|
||||
let words_acc = [];
|
||||
// go along each byte and look up the word
|
||||
// add it to the accumulator
|
||||
for (let this_byte of bytes) {
|
||||
let this_word = words[this_byte];
|
||||
words_acc.push(this_word);
|
||||
}
|
||||
// prepend check word to phrase
|
||||
// yes craig it would be faster to do the check byte inline
|
||||
// the usage case here is 64 byte strings
|
||||
// double pass is not a big deal
|
||||
return check_word(bytes) + ' ' + words_acc.join(' ');
|
||||
}
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
function decode(faert) {
|
||||
let all_words = faert.split(' ');
|
||||
let input_check_word = all_words[0];
|
||||
let input_words = all_words.slice(1);
|
||||
// accumulator
|
||||
let computed_bytes = [];
|
||||
// loop over words and figure out accumulator
|
||||
for (let this_input_word of input_words) {
|
||||
let maybe_this_byte = byte_of_word(this_input_word);
|
||||
// if the word is an allowable word, add it to the accumulator
|
||||
if (maybe_this_byte.ok) {
|
||||
let this_byte = maybe_this_byte.result;
|
||||
computed_bytes.push(this_byte);
|
||||
}
|
||||
// error case, propagate the error up the call chain
|
||||
else
|
||||
return maybe_this_byte;
|
||||
}
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_bytes_u8s = new Uint8Array(computed_bytes);
|
||||
let computed_check_word = check_word(computed_bytes_u8s);
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
}
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
function byte_of_word(word) {
|
||||
for (let i = 0; i <= 255; i++) {
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
}
|
||||
return safe.error('invalid word: ' + word);
|
||||
}
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
function check_word(bytes) {
|
||||
return words[check_byte(bytes)];
|
||||
}
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
function check_byte(bytes) {
|
||||
let check_byte = 0;
|
||||
for (let this_byte of bytes)
|
||||
check_byte ^= this_byte;
|
||||
return check_byte;
|
||||
}
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
"adjust",
|
||||
"agent",
|
||||
"air",
|
||||
"alert",
|
||||
"alpha",
|
||||
"anger",
|
||||
"answer",
|
||||
"any",
|
||||
"argue",
|
||||
"around",
|
||||
"assume",
|
||||
"asthma",
|
||||
"aunt",
|
||||
"awkward",
|
||||
"balcony",
|
||||
"barrel",
|
||||
"because",
|
||||
"behave",
|
||||
"bicycle",
|
||||
"bike",
|
||||
"blind",
|
||||
"blouse",
|
||||
"bonus",
|
||||
"bottom",
|
||||
"breeze",
|
||||
"brother",
|
||||
"bubble",
|
||||
"burger",
|
||||
"butter",
|
||||
"can",
|
||||
"cannon",
|
||||
"cargo",
|
||||
"catalog",
|
||||
"caught",
|
||||
"century",
|
||||
"chaos",
|
||||
"chicken",
|
||||
"churn",
|
||||
"cinnamon",
|
||||
"clever",
|
||||
"clock",
|
||||
"clown",
|
||||
"collect",
|
||||
"conduct",
|
||||
"convince",
|
||||
"correct",
|
||||
"cradle",
|
||||
"crane",
|
||||
"crime",
|
||||
"cross",
|
||||
"crystal",
|
||||
"curve",
|
||||
"daughter",
|
||||
"debris",
|
||||
"decrease",
|
||||
"deny",
|
||||
"deputy",
|
||||
"despair",
|
||||
"diesel",
|
||||
"dinner",
|
||||
"distance",
|
||||
"document",
|
||||
"donate",
|
||||
"drama",
|
||||
"drink",
|
||||
"dutch",
|
||||
"earth",
|
||||
"educate",
|
||||
"elbow",
|
||||
"employ",
|
||||
"endless",
|
||||
"enlist",
|
||||
"enter",
|
||||
"equal",
|
||||
"eternal",
|
||||
"example",
|
||||
"exhibit",
|
||||
"exotic",
|
||||
"faculty",
|
||||
"famous",
|
||||
"fault",
|
||||
"feature",
|
||||
"fiber",
|
||||
"filter",
|
||||
"firm",
|
||||
"flame",
|
||||
"flush",
|
||||
"follow",
|
||||
"forward",
|
||||
"frame",
|
||||
"fringe",
|
||||
"future",
|
||||
"game",
|
||||
"gate",
|
||||
"gift",
|
||||
"glare",
|
||||
"glow",
|
||||
"goat",
|
||||
"grab",
|
||||
"grief",
|
||||
"guilt",
|
||||
"hand",
|
||||
"hawk",
|
||||
"health",
|
||||
"hen",
|
||||
"hire",
|
||||
"honey",
|
||||
"hover",
|
||||
"hurry",
|
||||
"hybrid",
|
||||
"impose",
|
||||
"inch",
|
||||
"inherit",
|
||||
"injury",
|
||||
"install",
|
||||
"iron",
|
||||
"jazz",
|
||||
"joke",
|
||||
"just",
|
||||
"kit",
|
||||
"kitchen",
|
||||
"language",
|
||||
"laundry",
|
||||
"leader",
|
||||
"lend",
|
||||
"leopard",
|
||||
"license",
|
||||
"live",
|
||||
"lobster",
|
||||
"lounge",
|
||||
"magnet",
|
||||
"mail",
|
||||
"mansion",
|
||||
"mass",
|
||||
"math",
|
||||
"media",
|
||||
"message",
|
||||
"metal",
|
||||
"misery",
|
||||
"mix",
|
||||
"more",
|
||||
"mountain",
|
||||
"museum",
|
||||
"mutual",
|
||||
"narrow",
|
||||
"nerve",
|
||||
"next",
|
||||
"note",
|
||||
"obey",
|
||||
"obtain",
|
||||
"offer",
|
||||
"once",
|
||||
"orange",
|
||||
"ostrich",
|
||||
"over",
|
||||
"owner",
|
||||
"palace",
|
||||
"patch",
|
||||
"pave",
|
||||
"pen",
|
||||
"phrase",
|
||||
"piece",
|
||||
"pizza",
|
||||
"plunge",
|
||||
"polar",
|
||||
"pool",
|
||||
"power",
|
||||
"pretty",
|
||||
"private",
|
||||
"protect",
|
||||
"pulp",
|
||||
"purity",
|
||||
"quit",
|
||||
"quote",
|
||||
"raise",
|
||||
"razor",
|
||||
"recall",
|
||||
"region",
|
||||
"relief",
|
||||
"rent",
|
||||
"rescue",
|
||||
"review",
|
||||
"ride",
|
||||
"risk",
|
||||
"roof",
|
||||
"rough",
|
||||
"saddle",
|
||||
"salmon",
|
||||
"sand",
|
||||
"scene",
|
||||
"scrub",
|
||||
"season",
|
||||
"seek",
|
||||
"series",
|
||||
"shed",
|
||||
"shoe",
|
||||
"sick",
|
||||
"silent",
|
||||
"situate",
|
||||
"skill",
|
||||
"slide",
|
||||
"slush",
|
||||
"snack",
|
||||
"solar",
|
||||
"soul",
|
||||
"special",
|
||||
"sphere",
|
||||
"spot",
|
||||
"spy",
|
||||
"stairs",
|
||||
"stereo",
|
||||
"strategy",
|
||||
"stuff",
|
||||
"success",
|
||||
"sunny",
|
||||
"surge",
|
||||
"swear",
|
||||
"symptom",
|
||||
"tail",
|
||||
"ten",
|
||||
"tent",
|
||||
"theme",
|
||||
"thumb",
|
||||
"tiny",
|
||||
"toe",
|
||||
"tooth",
|
||||
"topic",
|
||||
"trade",
|
||||
"trash",
|
||||
"trophy",
|
||||
"truly",
|
||||
"tumble",
|
||||
"typical",
|
||||
"uncle",
|
||||
"unfair",
|
||||
"until",
|
||||
"upper",
|
||||
"useless",
|
||||
"van",
|
||||
"venue",
|
||||
"video",
|
||||
"visa",
|
||||
"vocal",
|
||||
"walk",
|
||||
"waste",
|
||||
"wedding",
|
||||
"weekend",
|
||||
"wide",
|
||||
"winner",
|
||||
"wise",
|
||||
"wood",
|
||||
"wrist",
|
||||
"zero"
|
||||
];
|
||||
//# sourceMappingURL=faert.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"faert.js","sourceRoot":"","sources":["../src/faert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACH,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,KAAK,EACR,CAAA;AAED,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC;;GAEG;AACH,SACA,MAAM,CACD,KAAkB;IAGnB,sBAAsB;IACtB,IAAI,SAAS,GAAoB,EAAE,CAAC;IAEpC,0CAA0C;IAC1C,4BAA4B;IAC5B,KAAK,IAAI,SAAS,IAAI,KAAK,EAC3B;QACI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,+BAA+B;IAC/B,2DAA2D;IAC3D,yCAAyC;IACzC,gCAAgC;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AAID;;GAEG;AACH,SACA,MAAM,CACD,KAAc;IAGf,IAAI,SAAS,GAA0B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,gBAAgB,GAAmB,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,WAAW,GAAwB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEzD,cAAc;IACd,IAAI,cAAc,GAAmB,EAAE,CAAC;IAExC,6CAA6C;IAC7C,KAAK,IAAI,eAAe,IAAI,WAAW,EACvC;QACI,IAAI,eAAe,GAA+B,YAAY,CAAC,eAAe,CAAC,CAAC;QAChF,8DAA8D;QAC9D,IAAI,eAAe,CAAC,EAAE,EACtB;YACI,IAAI,SAAS,GAAY,eAAe,CAAC,MAAM,CAAC;YAChD,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClC;QACD,oDAAoD;;YAEhD,OAAO,eAAe,CAAC;KAC9B;IAED,8DAA8D;IAC9D,yBAAyB;IACzB,IAAI,kBAAkB,GAAiB,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,mBAAmB,GAAY,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAElE,yBAAyB;IACzB,mCAAmC;IACnC,IAAI,mBAAmB,KAAK,gBAAgB;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACvC,6BAA6B;;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,yCAAyC,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;AACvI,CAAC;AAID;;GAEG;AACH,SACA,YAAY,CACP,IAAY;IAGb,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAE,GAAG,EAAE,CAAC,EAAE,EACzB;QACI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACzB;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAC/C,CAAC;AAID;;GAEG;AACH,SACA,UAAU,CACL,KAAiB;IAGlB,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAGD;;GAEG;AACH,SACA,UAAU,CACL,KAAiB;IAGlB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,SAAS,IAAI,KAAK;QACvB,UAAU,IAAI,SAAS,CAAC;IAC5B,OAAO,UAAU,CAAC;AACtB,CAAC;AAID,IAAI,KAAK,GAAG;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;CACT,CAAA"}
|
||||
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { decoded_data, decode_result, decode, encode };
|
||||
/**
|
||||
* Data that RLP can encode. Also the result of decoding.
|
||||
*/
|
||||
declare type decoded_data = Uint8Array | Array<decoded_data>;
|
||||
/**
|
||||
* Decoding can have a remainder
|
||||
*/
|
||||
declare type decode_result = {
|
||||
decoded_data: decoded_data;
|
||||
remainder: Uint8Array;
|
||||
};
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
declare function decode(bytes: Uint8Array): decode_result;
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
declare function encode(data: decoded_data): Uint8Array;
|
||||
@@ -0,0 +1,382 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
export { decode, encode };
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
function decode(bytes) {
|
||||
// check the first byte
|
||||
let first_byte = bytes[0];
|
||||
let rest = bytes.slice(1);
|
||||
// if the first byte is between 0 and 127, that is the data
|
||||
if (first_byte <= 127) {
|
||||
return dr(new Uint8Array([first_byte]), rest);
|
||||
}
|
||||
// if the first byte is between 128 and 183 = 128 + 55, it is a bytestring
|
||||
// and the length is Byte - 128
|
||||
else if (first_byte <= 183) {
|
||||
let payload_byte_length = first_byte - 128;
|
||||
let payload = rest.slice(0, payload_byte_length);
|
||||
let rest2 = rest.slice(payload_byte_length);
|
||||
return dr(payload, rest2);
|
||||
}
|
||||
// if the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
// bytestring. the byte length of bytestring is FirstByte - 183. Then pull
|
||||
// out the actual data
|
||||
else if (first_byte <= 191) {
|
||||
let byte_length_of_byte_length = first_byte - 183;
|
||||
let bytes_of_byte_length = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length = bytes_to_number(bytes_of_byte_length);
|
||||
let bytes = rest.slice(byte_length_of_byte_length, byte_length + byte_length_of_byte_length);
|
||||
let rest2 = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(bytes, rest2);
|
||||
}
|
||||
// If the first byte is between 192 and 247 = 192 + 55, it is a list. The
|
||||
// byte length of the list-payload is FirstByte - 192. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else if (first_byte <= 247) {
|
||||
let byte_length_of_list = first_byte - 192;
|
||||
let list_payload = rest.slice(0, byte_length_of_list);
|
||||
let list = decode_list(list_payload);
|
||||
let rest2 = rest.slice(byte_length_of_list);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
// If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a
|
||||
// list. The byte length of the byte length of the list-payload is
|
||||
// FirstByte - 247. Then the byte length of the list. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else {
|
||||
let byte_length_of_byte_length = first_byte - 247;
|
||||
let bytes_of_byte_length = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length = bytes_to_number(bytes_of_byte_length);
|
||||
let list_bytes = rest.slice(byte_length_of_byte_length, byte_length + byte_length_of_byte_length);
|
||||
let list = decode_list(list_bytes);
|
||||
let rest2 = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Decode a list payload (non-prefixed) into an `Array<decoded_data>`.
|
||||
*
|
||||
* Repeatedly decodes an element off the list until remainder is empty.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function decode_list(bytes) {
|
||||
let arr = [];
|
||||
while (bytes.length > 0) {
|
||||
// grab an item off the bytes
|
||||
let { decoded_data, remainder } = decode(bytes);
|
||||
// push it
|
||||
arr.push(decoded_data);
|
||||
// update bytes
|
||||
bytes = remainder;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
/**
|
||||
* Convert bytestring to number
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function bytes_to_number(bytes) {
|
||||
let n = 0;
|
||||
for (let b of bytes) {
|
||||
n <<= 8;
|
||||
n += b;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
/**
|
||||
* Make a `decode_result` containing the two arguments
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function dr(x, y) {
|
||||
return { decoded_data: x,
|
||||
remainder: y };
|
||||
}
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
function encode(data) {
|
||||
// is it an array or data
|
||||
if (is_binary(data)) {
|
||||
return encode_binary(data);
|
||||
}
|
||||
else if (is_list(data)) {
|
||||
return encode_list(data);
|
||||
}
|
||||
else {
|
||||
throw new Error('encode told to encode something that is not an array or a binary: ' + data);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a binary into RLP
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_binary(bytes) {
|
||||
let len = bytes.length;
|
||||
// single byte case when the byte is between 0..127
|
||||
// result is the bytestring containing the byte itself
|
||||
if ((len === 1) &&
|
||||
(bytes[0] <= 127)) {
|
||||
return bytes;
|
||||
}
|
||||
// if the bytestring is 0..55 bytes long, the first byte in the result is
|
||||
// 128 + Length, the rest of the result bytestring is the input string
|
||||
else if (len <= 55) {
|
||||
// construct the result
|
||||
// <<128 + Len, Bytes/binary>>
|
||||
let result = new Uint8Array(len + 1);
|
||||
// first byte is 128 + length
|
||||
result[0] = 128 + len;
|
||||
// copy input bytes into result
|
||||
for (let input_idx0 = 0; input_idx0 < len; input_idx0++) {
|
||||
let result_idx0 = input_idx0 + 1;
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the bytestring is more than 55 bytes long, the first byte is 183 +
|
||||
// ByteLengthOfByteLength, followed by the byte length, followed by the
|
||||
// bytes
|
||||
else {
|
||||
let len_bytes = encode_unsigned(len);
|
||||
let len_bytes_length = len_bytes.length;
|
||||
// total array is
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
let result = new Uint8Array(1 + len_bytes_length + len);
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 183 + len_bytes_length;
|
||||
// copy len_bytes into result
|
||||
for (let len_bytes_idx0 = 0; len_bytes_idx0 < len_bytes_length; len_bytes_idx0++) {
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = len_bytes_idx0 + 1;
|
||||
result[result_idx0] = len_bytes[len_bytes_idx0];
|
||||
}
|
||||
// copy original byte array into result
|
||||
for (let input_idx0 = 0; input_idx0 < len; input_idx0++) {
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = input_idx0 + (1 + len_bytes_length);
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
// finally, return the result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a list
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_list(list) {
|
||||
// first encode every element in the list, then branch
|
||||
let payloads = list.map(encode);
|
||||
let payload = uint8arr_concat(payloads);
|
||||
let payload_size = payload.length;
|
||||
// if the payload size is in 0..55, then the first byte is 192 + payload
|
||||
// size, followed by the payload
|
||||
if (payload_size <= 55) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
let result = new Uint8Array(1 + payload_size);
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 192 + payload_size;
|
||||
// copy the rest of the payload into result
|
||||
for (let payload_idx0 = 0; payload_idx0 < payload_size; payload_idx0++) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0 = payload_idx0 + 1;
|
||||
result[result_idx0] = payload[payload_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the payload size is greater than 55, the first byte is 247 +
|
||||
// size_of_payload_size, followed by the payload size, followed by the
|
||||
// payload
|
||||
else {
|
||||
// compute the payload size size
|
||||
let payload_size_bytes = encode_unsigned(payload_size);
|
||||
let payload_size_size = payload_size_bytes.length;
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
let result = new Uint8Array(1 + payload_size_size + payload_size);
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// first byte is 247 + payload_size_size
|
||||
result[0] = 247 + payload_size_size;
|
||||
// copy the payload_size_bytes into result
|
||||
for (let psb_idx0 = 0; psb_idx0 < payload_size_size; psb_idx0++) {
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 byte for this
|
||||
let result_idx0 = psb_idx0 + 1;
|
||||
result[result_idx0] = payload_size_bytes[psb_idx0];
|
||||
}
|
||||
// copy the payload into result
|
||||
for (let pb_idx0 = 0; pb_idx0 < payload_size; pb_idx0++) {
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 + payload_size_size bytes for this
|
||||
let result_idx0 = pb_idx0 + (1 + payload_size_size);
|
||||
result[result_idx0] = payload[pb_idx0];
|
||||
}
|
||||
// finally, return result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Encode a number as a bytestring
|
||||
*
|
||||
* Not for general use, this assumes the input number is greater than 55
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function encode_unsigned(n) {
|
||||
// can assume that n initially is greater than 55
|
||||
// have to encode it in reverse order
|
||||
let arr = [];
|
||||
// repeated division by 256 with remainder
|
||||
//
|
||||
// example: suppose bign was 1234 and we were dividing by 10
|
||||
//
|
||||
// iteration 0:
|
||||
// bign = 1234
|
||||
// arr = []
|
||||
// ---
|
||||
// bign / 10 = 123
|
||||
// bign % 10 = 4
|
||||
// ---
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
//
|
||||
// iteration 1:
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
// ---
|
||||
// bign / 10 = 12
|
||||
// bign % 10 = 3
|
||||
// ---
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
//
|
||||
// iteration 2:
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
// ---
|
||||
// bign / 10 = 1
|
||||
// bign % 10 = 2
|
||||
// ---
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
//
|
||||
// iteration 3:
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
// ---
|
||||
// bign / 10 = 0
|
||||
// bign % 10 = 1
|
||||
// ---
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
//
|
||||
// iteration 4:
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
// ---
|
||||
// DONE
|
||||
while (n > 0) {
|
||||
arr.push(n % 256);
|
||||
n >>= 8;
|
||||
}
|
||||
// reverse and make into Uint8Array
|
||||
arr.reverse();
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
/**
|
||||
* concatenate an array of `Uint8Array`s into a single Uint8Array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function uint8arr_concat(arrs) {
|
||||
// total length
|
||||
let total_len = arrs.reduce(// fold
|
||||
function (acc_len, this_uint8array) {
|
||||
return acc_len + this_uint8array.length;
|
||||
},
|
||||
// initial accumulator
|
||||
0);
|
||||
// start up result
|
||||
let result = new Uint8Array(total_len);
|
||||
let result_idx0 = 0;
|
||||
// concatenate
|
||||
for (let this_uint8arr of arrs) {
|
||||
// bytewise copy of this uint8array
|
||||
for (let this_uint8arr_idx0 = 0; this_uint8arr_idx0 < this_uint8arr.length; this_uint8arr_idx0++) {
|
||||
// copy byte and increment result idx0
|
||||
result[result_idx0] = this_uint8arr[this_uint8arr_idx0];
|
||||
result_idx0++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* returns true if input is `instanceof Uint8Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function is_binary(x) {
|
||||
return (x instanceof Uint8Array);
|
||||
}
|
||||
/**
|
||||
* returns true if input is `instanceof Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function is_list(x) {
|
||||
return (x instanceof Array);
|
||||
}
|
||||
//# sourceMappingURL=rlp.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
export { Safe, Ok, Error, ok, error, unsafe };
|
||||
/**
|
||||
* Type that catches positive errors
|
||||
*/
|
||||
declare type Safe<ok_t, err_t> = Ok<ok_t> | Error<err_t>;
|
||||
/**
|
||||
* Ok type
|
||||
*/
|
||||
declare type Ok<ok_t> = {
|
||||
ok: true;
|
||||
result: ok_t;
|
||||
};
|
||||
/**
|
||||
* Error type
|
||||
*/
|
||||
declare type Error<err_t> = {
|
||||
ok: false;
|
||||
error: err_t;
|
||||
};
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
declare function ok<ok_t>(x: ok_t): Ok<ok_t>;
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
declare function error<err_t>(x: err_t): Error<err_t>;
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
declare function unsafe<ok_t, err_t>(x: Safe<ok_t, err_t>): ok_t;
|
||||
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
export { ok, error, unsafe };
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
function ok(x) {
|
||||
return { ok: true, result: x };
|
||||
}
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
function error(x) {
|
||||
return { ok: false, error: x };
|
||||
}
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
function unsafe(x) {
|
||||
if (x.ok)
|
||||
return x.result;
|
||||
else
|
||||
throw x.error;
|
||||
}
|
||||
//# sourceMappingURL=safe.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../src/safe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAIH,EAAE,EACF,KAAK,EACL,MAAM,EACT,CAAA;AA2BD;;GAEG;AACH,SACA,EAAE,CAEG,CAAQ;IAGT,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;AACjC,CAAC;AAID;;GAEG;AACH,SACA,KAAK,CAEA,CAAQ;IAGT,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;AACjC,CAAC;AAID;;;GAGG;AACH,SACA,MAAM,CAED,CAAoB;IAGrB,IAAI,CAAC,CAAC,EAAE;QACJ,OAAO,CAAC,CAAC,MAAM,CAAC;;QAEhB,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC"}
|
||||
@@ -0,0 +1,418 @@
|
||||
/**
|
||||
* Base58 encoding/decoding
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array into base58
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(binary : Uint8Array)
|
||||
: string
|
||||
{
|
||||
let num_leading_zeros : number = nlz(binary);
|
||||
let rest : Uint8Array = binary.slice(num_leading_zeros);
|
||||
let ones : string = encode_zeros(num_leading_zeros);
|
||||
let rest_b58 : string = encode_rest(rest);
|
||||
let result : string = ones + rest_b58;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* count the number of leading zeros in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
nlz
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let n = 0;
|
||||
for (let this_byte of bytes)
|
||||
{
|
||||
if (0 === this_byte) { n++; }
|
||||
else { break; }
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate a bunch of '1's for however many leading zeros there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_zeros
|
||||
(how_many : number)
|
||||
: string
|
||||
{
|
||||
let ones : string = '';
|
||||
for (let i = 1;
|
||||
i <= how_many;
|
||||
i++)
|
||||
{
|
||||
ones += '1';
|
||||
}
|
||||
|
||||
return ones;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array that has no leading zeros
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_rest
|
||||
(bytes : Uint8Array)
|
||||
: string
|
||||
{
|
||||
let bytes_bignum : bigint = bytes_to_bigint(bytes);
|
||||
let result : string = bignum_to_base58(bytes_bignum);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a bytestring to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bytes_to_bigint
|
||||
(bytes: Uint8Array)
|
||||
: bigint
|
||||
{
|
||||
let acc_bigint : bigint = 0n;
|
||||
for(let this_byte of bytes)
|
||||
{
|
||||
acc_bigint <<= 8n;
|
||||
acc_bigint += BigInt(this_byte);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a BigInt to Base58
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bignum_to_base58
|
||||
(q: bigint)
|
||||
: string
|
||||
{
|
||||
let s = '';
|
||||
while (q !== 0n)
|
||||
{
|
||||
let this_n : bigint = q % 58n;
|
||||
q /= 58n;
|
||||
|
||||
let this_b58_char : string = bigint_to_char(this_n);
|
||||
s = this_b58_char + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Decode a Base58 string into a Uint8Array
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(base58: string)
|
||||
: Uint8Array
|
||||
{
|
||||
let num_leading_ones : number = nlo(base58);
|
||||
let rest : string = base58.slice(num_leading_ones);
|
||||
let zeros : Array<number> = decode_ones(num_leading_ones);
|
||||
let rest_arr : Array<number> = decode_rest(rest);
|
||||
let pre_result : Array<number> = zeros.concat(rest_arr);
|
||||
return new Uint8Array(pre_result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* count the number of leading 1 characters in a uint8array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
nlo
|
||||
(base58: string)
|
||||
: number
|
||||
{
|
||||
let n = 0;
|
||||
for (let this_char of base58)
|
||||
{
|
||||
if ('1' === this_char) { n++; }
|
||||
else { break; }
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate a bunch of '0's for however many leading ones there are
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_ones
|
||||
(how_many : number)
|
||||
: Array<number>
|
||||
{
|
||||
let zeros : Array<number> = [];
|
||||
for (let i = 1;
|
||||
i <= how_many;
|
||||
i++)
|
||||
{
|
||||
zeros.push(0);
|
||||
}
|
||||
|
||||
return zeros;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a string that has no leading 1s
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_rest
|
||||
(base58: string)
|
||||
: Array<number>
|
||||
{
|
||||
let result_bignum : bigint = base58_to_bigint(base58);
|
||||
let result : Array<number> = bigint_to_base256(result_bignum);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a base58 string to a bignum
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
base58_to_bigint
|
||||
(base58: string)
|
||||
: bigint
|
||||
{
|
||||
let acc_bigint : bigint = 0n;
|
||||
for(let this_char of base58)
|
||||
{
|
||||
acc_bigint *= 58n;
|
||||
acc_bigint += char_to_bigint(this_char);
|
||||
}
|
||||
return acc_bigint;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* convert a bignum into a byte array
|
||||
*
|
||||
* @end
|
||||
*/
|
||||
function
|
||||
bigint_to_base256
|
||||
(q: bigint)
|
||||
: Array<number>
|
||||
{
|
||||
let arr_reverse = [];
|
||||
while(q !== 0n)
|
||||
{
|
||||
let r: number = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return arr_reverse;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// TRANSLATION TABLES
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/**
|
||||
* Base58 integer -> character conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bigint_to_char
|
||||
(n: bigint)
|
||||
: string
|
||||
{
|
||||
switch(n) {
|
||||
case 0n: return '1';
|
||||
case 1n: return '2';
|
||||
case 2n: return '3';
|
||||
case 3n: return '4';
|
||||
case 4n: return '5';
|
||||
case 5n: return '6';
|
||||
case 6n: return '7';
|
||||
case 7n: return '8';
|
||||
case 8n: return '9';
|
||||
case 9n: return 'A';
|
||||
case 10n: return 'B';
|
||||
case 11n: return 'C';
|
||||
case 12n: return 'D';
|
||||
case 13n: return 'E';
|
||||
case 14n: return 'F';
|
||||
case 15n: return 'G';
|
||||
case 16n: return 'H';
|
||||
case 17n: return 'J';
|
||||
case 18n: return 'K';
|
||||
case 19n: return 'L';
|
||||
case 20n: return 'M';
|
||||
case 21n: return 'N';
|
||||
case 22n: return 'P';
|
||||
case 23n: return 'Q';
|
||||
case 24n: return 'R';
|
||||
case 25n: return 'S';
|
||||
case 26n: return 'T';
|
||||
case 27n: return 'U';
|
||||
case 28n: return 'V';
|
||||
case 29n: return 'W';
|
||||
case 30n: return 'X';
|
||||
case 31n: return 'Y';
|
||||
case 32n: return 'Z';
|
||||
case 33n: return 'a';
|
||||
case 34n: return 'b';
|
||||
case 35n: return 'c';
|
||||
case 36n: return 'd';
|
||||
case 37n: return 'e';
|
||||
case 38n: return 'f';
|
||||
case 39n: return 'g';
|
||||
case 40n: return 'h';
|
||||
case 41n: return 'i';
|
||||
case 42n: return 'j';
|
||||
case 43n: return 'k';
|
||||
case 44n: return 'm';
|
||||
case 45n: return 'n';
|
||||
case 46n: return 'o';
|
||||
case 47n: return 'p';
|
||||
case 48n: return 'q';
|
||||
case 49n: return 'r';
|
||||
case 50n: return 's';
|
||||
case 51n: return 't';
|
||||
case 52n: return 'u';
|
||||
case 53n: return 'v';
|
||||
case 54n: return 'w';
|
||||
case 55n: return 'x';
|
||||
case 56n: return 'y';
|
||||
case 57n: return 'z';
|
||||
default:
|
||||
throw new Error('invalid base58 bigint: ' + n);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Base58 character -> integer conversion table
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
char_to_bigint
|
||||
(s: string)
|
||||
: bigint
|
||||
{
|
||||
switch(s) {
|
||||
case '1': return 0n;
|
||||
case '2': return 1n;
|
||||
case '3': return 2n;
|
||||
case '4': return 3n;
|
||||
case '5': return 4n;
|
||||
case '6': return 5n;
|
||||
case '7': return 6n;
|
||||
case '8': return 7n;
|
||||
case '9': return 8n;
|
||||
case 'A': return 9n;
|
||||
case 'B': return 10n;
|
||||
case 'C': return 11n;
|
||||
case 'D': return 12n;
|
||||
case 'E': return 13n;
|
||||
case 'F': return 14n;
|
||||
case 'G': return 15n;
|
||||
case 'H': return 16n;
|
||||
case 'J': return 17n;
|
||||
case 'K': return 18n;
|
||||
case 'L': return 19n;
|
||||
case 'M': return 20n;
|
||||
case 'N': return 21n;
|
||||
case 'P': return 22n;
|
||||
case 'Q': return 23n;
|
||||
case 'R': return 24n;
|
||||
case 'S': return 25n;
|
||||
case 'T': return 26n;
|
||||
case 'U': return 27n;
|
||||
case 'V': return 28n;
|
||||
case 'W': return 29n;
|
||||
case 'X': return 30n;
|
||||
case 'Y': return 31n;
|
||||
case 'Z': return 32n;
|
||||
case 'a': return 33n;
|
||||
case 'b': return 34n;
|
||||
case 'c': return 35n;
|
||||
case 'd': return 36n;
|
||||
case 'e': return 37n;
|
||||
case 'f': return 38n;
|
||||
case 'g': return 39n;
|
||||
case 'h': return 40n;
|
||||
case 'i': return 41n;
|
||||
case 'j': return 42n;
|
||||
case 'k': return 43n;
|
||||
case 'm': return 44n;
|
||||
case 'n': return 45n;
|
||||
case 'o': return 46n;
|
||||
case 'p': return 47n;
|
||||
case 'q': return 48n;
|
||||
case 'r': return 49n;
|
||||
case 's': return 50n;
|
||||
case 't': return 51n;
|
||||
case 'u': return 52n;
|
||||
case 'v': return 53n;
|
||||
case 'w': return 54n;
|
||||
case 'x': return 55n;
|
||||
case 'y': return 56n;
|
||||
case 'z': return 57n;
|
||||
default:
|
||||
throw new Error('invalid base58 char: ' + s);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,655 @@
|
||||
/**
|
||||
* Base64 Utility Functions in TypeScript
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode an array of bytes as a Uint8Array in base64 notation.
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
// slice the array
|
||||
// length of head is a multiple of 3
|
||||
// treat the tail as a special case
|
||||
let {head, tail, tail_len} = slice3k(bytes);
|
||||
let head_str : string = encode_head(head);
|
||||
let tail_str : string = encode_tail(tail, tail_len);
|
||||
return head_str + tail_str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
type slice3k
|
||||
= {head : Uint8Array,
|
||||
tail : Uint8Array,
|
||||
tail_len : number};
|
||||
|
||||
/**
|
||||
* Take a Uint8Array, take the first 3k (k >= 0) bytes, put them in head, and
|
||||
* the remaining 0,1, or 2 bytes, put them in tail
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
slice3k
|
||||
(bytes: Uint8Array)
|
||||
: slice3k
|
||||
{
|
||||
let len : number = bytes.length;
|
||||
// too lazy to look up how to do integer division in js so this will do
|
||||
let tail_len : number = len % 3;
|
||||
let head_len : number = len - tail_len;
|
||||
// for slice:
|
||||
// first argument is the 0-index of the start
|
||||
// second - first is the length of the slice
|
||||
let head : Uint8Array = bytes.slice(0, head_len);
|
||||
// empty second argument means go to the end
|
||||
let tail : Uint8Array = bytes.slice(head_len);
|
||||
return {head : head,
|
||||
tail : tail,
|
||||
tail_len : tail_len};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a Uint8Array whose length is known to be a multiple of 3
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_head
|
||||
(head_bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
// can assume length of bytes is a multiple of 3
|
||||
// start index at 0
|
||||
// increment by 3
|
||||
let head_bytes_len : number = head_bytes.length;
|
||||
let max_idx0 : number = head_bytes_len - 1;
|
||||
|
||||
let head_str_acc : string = '';
|
||||
for(let this_3slice_start_idx0 = 0;
|
||||
this_3slice_start_idx0 <= max_idx0;
|
||||
this_3slice_start_idx0 += 3)
|
||||
{
|
||||
let this_3slice_bytes : Uint8Array = head_bytes.slice(this_3slice_start_idx0, this_3slice_start_idx0 + 3);
|
||||
let this_3slice_str : string = encode3(this_3slice_bytes);
|
||||
head_str_acc += this_3slice_str;
|
||||
}
|
||||
|
||||
return head_str_acc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a 3 bytes into base64 notation
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode3
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
let b1 : number = bytes[1];
|
||||
let b2 : number = bytes[2];
|
||||
|
||||
// ABCDEFGH 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
// ABCDEF GH1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
let n0 : number = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 : number = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// b2 = abcdefgh
|
||||
// b2 >> 6 = ______ab
|
||||
// n2 = __5678ab
|
||||
let n2 : number = ((b1 % 16) << 2) + (b2 >> 6);
|
||||
// b2 = abcdefgh
|
||||
// 64 = _1______
|
||||
// n3 = __cdefgh
|
||||
let n3 : number = b2 % 64;
|
||||
|
||||
// convert to chars
|
||||
let s0 : string = int2char(n0);
|
||||
let s1 : string = int2char(n1);
|
||||
let s2 : string = int2char(n2);
|
||||
let s3 : string = int2char(n3);
|
||||
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + s3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode the final 0, 1, or 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_tail
|
||||
(tail_bytes : Uint8Array,
|
||||
tail_len : number)
|
||||
: string
|
||||
{
|
||||
switch(tail_len) {
|
||||
case 0: return '';
|
||||
case 1: return encode1(tail_bytes);
|
||||
case 2: return encode2(tail_bytes);
|
||||
default:
|
||||
throw new Error('encode_tail with tail_len = ' + tail_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a single byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode1
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
// n0 = __ABCDEF
|
||||
// b0 = ABCDEFGH
|
||||
// b0 >> 2 = __ABCDEF
|
||||
let n0 : number = b0 >> 2;
|
||||
// n1 = __GH____
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
let n1 : number = (b0 % 4) << 4;
|
||||
|
||||
return int2char(n0) + int2char(n1) + '==';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode two bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode2
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
let b0 : number = bytes[0];
|
||||
let b1 : number = bytes[1];
|
||||
|
||||
// ABCDEFGH 12345678
|
||||
// b0 b1
|
||||
// ABCDEF GH1234 5678__
|
||||
// n0 n1 n2
|
||||
let n0 : number = b0 >> 2;
|
||||
// b0 = ABCDEFGH
|
||||
// 4 = _____1__
|
||||
// b0 % 4 = ______GH
|
||||
// (b0 % 4) << 4 = __GH____
|
||||
// b1 = 12345678
|
||||
// b1 >> 4 = ____1234
|
||||
// n1 = __GH1234
|
||||
let n1 : number = ((b0 % 4) << 4) + (b1 >> 4);
|
||||
// b1 = 12345678
|
||||
// 16 = ___1____
|
||||
// b1 % 16 = ____5678
|
||||
// (b1 % 16) << 2 = __5678__
|
||||
// n2 = __5678__
|
||||
let n2 : number = (b1 % 16) << 2;
|
||||
|
||||
// convert to chars
|
||||
let s0 : string = int2char(n0);
|
||||
let s1 : string = int2char(n1);
|
||||
let s2 : string = int2char(n2);
|
||||
|
||||
// retrvn
|
||||
return s0 + s1 + s2 + '=';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a base64-encoded string
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(base64_str : string)
|
||||
: Uint8Array
|
||||
{
|
||||
// length of the string is guaranteed to be a multiple of 4
|
||||
// if the string is empty, return the empty array
|
||||
let len = base64_str.length;
|
||||
// this branching contains the implicit assertion that the length is a
|
||||
// multiple of 4. If this is not true, the bottom branch is triggered.
|
||||
// general case goes first because speeeeeed
|
||||
if ( (4 < len)
|
||||
&& (0 === (len % 4)))
|
||||
{
|
||||
// split the head and tail
|
||||
let tail_start_idx0 : number = len - 4;
|
||||
let head_s : string = base64_str.slice(0, tail_start_idx0);
|
||||
let tail_s : string = base64_str.slice(tail_start_idx0);
|
||||
// Using arrays because Uint8Arrays don't have a concat operation
|
||||
let head_arr : Array<number> = decode_head(head_s);
|
||||
let tail_arr : Array<number> = decode_tail(tail_s);
|
||||
// silly to put these in variables but this is exactly the type of
|
||||
// situation where JS type insanity shows up
|
||||
//
|
||||
// see: i forgot
|
||||
// > [1,2,3] + [4,5,6]
|
||||
// '1,2,34,5,6'
|
||||
//
|
||||
// Originally, I used + like some sort of moron who codes in a sane
|
||||
// language
|
||||
//
|
||||
// seriously what is this language
|
||||
//
|
||||
// this is some clown behavior
|
||||
let total_arr : Array<number> = head_arr.concat(tail_arr);
|
||||
return new Uint8Array(total_arr);
|
||||
}
|
||||
// special case if the length is exactly 4
|
||||
else if (4 === len)
|
||||
{
|
||||
// it's just a tail
|
||||
return new Uint8Array(decode_tail(base64_str));
|
||||
}
|
||||
// empty string
|
||||
else if (0 === len)
|
||||
{
|
||||
return new Uint8Array([]);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Error('base64 decode: invalid string length: ' + len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a string known to not have any padding
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_head
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// go 4 characters at a time
|
||||
let max_i0 : number = s.length - 1;
|
||||
let decoded_acc : Array<number> = [];
|
||||
for(let i0 = 0;
|
||||
i0 <= max_i0;
|
||||
i0 += 4)
|
||||
{
|
||||
let this_slice_s : string = s.slice(i0, i0 + 4);
|
||||
let this_slice_arr : Array<number> = decode3(this_slice_s);
|
||||
// update accumulator
|
||||
decoded_acc = decoded_acc.concat(this_slice_arr);
|
||||
}
|
||||
return decoded_acc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode 4 characters that correspond to either 3 bytes, 2, bytes, or 1 byte
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_tail
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// all that matters right now is the last 2 chars
|
||||
// s0, s1, s2, s3
|
||||
// 0 based indexing is so annoying
|
||||
let s2 = s[2];
|
||||
let s3 = s[3];
|
||||
|
||||
// braaaaaaaaaaaaaaaaaench
|
||||
// two equals signs means 1 byte
|
||||
if (('=' === s3) && ('=' === s2)) {
|
||||
return decode1(s);
|
||||
}
|
||||
// one equals sign means 2 bytes
|
||||
else if (('=' === s3)) {
|
||||
return decode2(s);
|
||||
}
|
||||
// 0 equals signs means 3 bytes
|
||||
else {
|
||||
return decode3(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 3 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode3
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
let s2 : string = s[2];
|
||||
let s3 : string = s[3];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
let n2 : number = char2int(s2);
|
||||
let n3 : number = char2int(s3);
|
||||
|
||||
// abcdef gh1234 5678ab cdefgh
|
||||
// n0 n1 n2 n3
|
||||
// abcdefgh 12345678 abcdefgh
|
||||
// b0 b1 b2
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678ab
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 : number = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
// n2 = __5678ab
|
||||
// 4 = _____1__
|
||||
// n2 % 4 = ______ab
|
||||
// (n2 % 4) << 6 = ab______
|
||||
// n3 = __cdefgh
|
||||
let b2 : number = ((n2 % 4) << 6) + n3;
|
||||
|
||||
return [b0, b1, b2];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode2
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// xyz=
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
let s2 : string = s[2];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
let n2 : number = char2int(s2);
|
||||
|
||||
// abcdef gh1234 5678__
|
||||
// n0 n1 n2
|
||||
// abcdefgh 12345678
|
||||
// b0 b1
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh1234
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
// n1 = __gh1234
|
||||
// 16 = ___1____
|
||||
// n1 % 16 = ____1234
|
||||
// (n1 % 16) << 4 = 1234____
|
||||
// n2 = __5678__
|
||||
// n2 >> 2 = ____5678
|
||||
// b1 = 12345678
|
||||
let b1 : number = ((n1 % 16) << 4) + (n2 >> 2);
|
||||
|
||||
return [b0, b1];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a 4-character long base64 string corresponding to 2 bytes
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode1
|
||||
(s: string)
|
||||
: Array<number>
|
||||
{
|
||||
// xy==
|
||||
// pull out strings
|
||||
let s0 : string = s[0];
|
||||
let s1 : string = s[1];
|
||||
|
||||
// convert to numbers
|
||||
let n0 : number = char2int(s0);
|
||||
let n1 : number = char2int(s1);
|
||||
|
||||
// abcdef gh____
|
||||
// n0 n1
|
||||
// abcdefgh
|
||||
// b0
|
||||
|
||||
// n0 = __abcdef
|
||||
// n1 = __gh____
|
||||
// n0 << 2 = abcdef__
|
||||
// n1 >> 4 = ______gh
|
||||
// b0 = abcdefgh
|
||||
let b0 : number = (n0 << 2) + (n1 >> 4);
|
||||
|
||||
return [b0];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// FIXME: these tables would *probably* be faster if they were made into objects
|
||||
|
||||
/**
|
||||
* Conversion table for base64 encode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
int2char
|
||||
(n: number)
|
||||
: string
|
||||
{
|
||||
switch(n) {
|
||||
case 0: return 'A';
|
||||
case 1: return 'B';
|
||||
case 2: return 'C';
|
||||
case 3: return 'D';
|
||||
case 4: return 'E';
|
||||
case 5: return 'F';
|
||||
case 6: return 'G';
|
||||
case 7: return 'H';
|
||||
case 8: return 'I';
|
||||
case 9: return 'J';
|
||||
case 10: return 'K';
|
||||
case 11: return 'L';
|
||||
case 12: return 'M';
|
||||
case 13: return 'N';
|
||||
case 14: return 'O';
|
||||
case 15: return 'P';
|
||||
case 16: return 'Q';
|
||||
case 17: return 'R';
|
||||
case 18: return 'S';
|
||||
case 19: return 'T';
|
||||
case 20: return 'U';
|
||||
case 21: return 'V';
|
||||
case 22: return 'W';
|
||||
case 23: return 'X';
|
||||
case 24: return 'Y';
|
||||
case 25: return 'Z';
|
||||
case 26: return 'a';
|
||||
case 27: return 'b';
|
||||
case 28: return 'c';
|
||||
case 29: return 'd';
|
||||
case 30: return 'e';
|
||||
case 31: return 'f';
|
||||
case 32: return 'g';
|
||||
case 33: return 'h';
|
||||
case 34: return 'i';
|
||||
case 35: return 'j';
|
||||
case 36: return 'k';
|
||||
case 37: return 'l';
|
||||
case 38: return 'm';
|
||||
case 39: return 'n';
|
||||
case 40: return 'o';
|
||||
case 41: return 'p';
|
||||
case 42: return 'q';
|
||||
case 43: return 'r';
|
||||
case 44: return 's';
|
||||
case 45: return 't';
|
||||
case 46: return 'u';
|
||||
case 47: return 'v';
|
||||
case 48: return 'w';
|
||||
case 49: return 'x';
|
||||
case 50: return 'y';
|
||||
case 51: return 'z';
|
||||
case 52: return '0';
|
||||
case 53: return '1';
|
||||
case 54: return '2';
|
||||
case 55: return '3';
|
||||
case 56: return '4';
|
||||
case 57: return '5';
|
||||
case 58: return '6';
|
||||
case 59: return '7';
|
||||
case 60: return '8';
|
||||
case 61: return '9';
|
||||
case 62: return '+';
|
||||
case 63: return '/';
|
||||
default: throw new Error("invalid base64 encode byte: " + n);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Conversion table for base64 decode
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
char2int
|
||||
(s: string)
|
||||
: number
|
||||
{
|
||||
switch(s) {
|
||||
case 'A': return 0;
|
||||
case 'B': return 1;
|
||||
case 'C': return 2;
|
||||
case 'D': return 3;
|
||||
case 'E': return 4;
|
||||
case 'F': return 5;
|
||||
case 'G': return 6;
|
||||
case 'H': return 7;
|
||||
case 'I': return 8;
|
||||
case 'J': return 9;
|
||||
case 'K': return 10;
|
||||
case 'L': return 11;
|
||||
case 'M': return 12;
|
||||
case 'N': return 13;
|
||||
case 'O': return 14;
|
||||
case 'P': return 15;
|
||||
case 'Q': return 16;
|
||||
case 'R': return 17;
|
||||
case 'S': return 18;
|
||||
case 'T': return 19;
|
||||
case 'U': return 20;
|
||||
case 'V': return 21;
|
||||
case 'W': return 22;
|
||||
case 'X': return 23;
|
||||
case 'Y': return 24;
|
||||
case 'Z': return 25;
|
||||
case 'a': return 26;
|
||||
case 'b': return 27;
|
||||
case 'c': return 28;
|
||||
case 'd': return 29;
|
||||
case 'e': return 30;
|
||||
case 'f': return 31;
|
||||
case 'g': return 32;
|
||||
case 'h': return 33;
|
||||
case 'i': return 34;
|
||||
case 'j': return 35;
|
||||
case 'k': return 36;
|
||||
case 'l': return 37;
|
||||
case 'm': return 38;
|
||||
case 'n': return 39;
|
||||
case 'o': return 40;
|
||||
case 'p': return 41;
|
||||
case 'q': return 42;
|
||||
case 'r': return 43;
|
||||
case 's': return 44;
|
||||
case 't': return 45;
|
||||
case 'u': return 46;
|
||||
case 'v': return 47;
|
||||
case 'w': return 48;
|
||||
case 'x': return 49;
|
||||
case 'y': return 50;
|
||||
case 'z': return 51;
|
||||
case '0': return 52;
|
||||
case '1': return 53;
|
||||
case '2': return 54;
|
||||
case '3': return 55;
|
||||
case '4': return 56;
|
||||
case '5': return 57;
|
||||
case '6': return 58;
|
||||
case '7': return 59;
|
||||
case '8': return 60;
|
||||
case '9': return 61;
|
||||
case '+': return 62;
|
||||
case '/': return 63;
|
||||
default: throw new Error("invalid base64 character: " + s);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,377 @@
|
||||
/**
|
||||
* Miscellaneous binary utility functions
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
bytes_to_bigint,
|
||||
bigint_to_bytes,
|
||||
concat,
|
||||
strong_rand_bytes
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Concatenate two arrays
|
||||
*/
|
||||
function
|
||||
concat
|
||||
(arr1 : Uint8Array,
|
||||
arr2 : Uint8Array)
|
||||
: Uint8Array
|
||||
{
|
||||
let len1 : number = arr1.length;
|
||||
let len2 : number = arr2.length;
|
||||
let arr1_idx0_offset : number = 0;
|
||||
let arr2_idx0_offset : number = len1;
|
||||
let result_len : number = len1 + len2;
|
||||
let result : Uint8Array = new Uint8Array(result_len);
|
||||
// copy first array into result
|
||||
for (let arr1_idx0 = 0;
|
||||
arr1_idx0 < len1;
|
||||
arr1_idx0++)
|
||||
{
|
||||
// no offset here
|
||||
let result_idx0 : number = arr1_idx0 + arr1_idx0_offset;
|
||||
result[result_idx0] = arr1[arr1_idx0];
|
||||
}
|
||||
// copy second array into result
|
||||
for (let arr2_idx0 = 0;
|
||||
arr2_idx0 < len2;
|
||||
arr2_idx0++)
|
||||
{
|
||||
// offset by the length of the first array
|
||||
let result_idx0 : number = arr2_idx0 + arr2_idx0_offset;
|
||||
result[result_idx0] = arr2[arr2_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Cryptographically random bytes
|
||||
*/
|
||||
function
|
||||
strong_rand_bytes
|
||||
(how_many : number)
|
||||
: Uint8Array
|
||||
{
|
||||
let arr = new Uint8Array(how_many);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a byte array to a bigint
|
||||
*
|
||||
* Equivalent to `binary:decode_unsigned/1` from Erlang
|
||||
*/
|
||||
function
|
||||
bytes_to_bigint
|
||||
(bytes: Uint8Array)
|
||||
: bigint
|
||||
{
|
||||
let n : bigint = 0n;
|
||||
for (let b of bytes) {
|
||||
// move first, then add
|
||||
// otherwise it ends on a move
|
||||
// imperative languages are for losers
|
||||
n <<= 8n;
|
||||
n += BigInt(b);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a bigint to a byte array
|
||||
*
|
||||
* Equivalent to `binary:encode_unsigned/1` from Erlang
|
||||
*
|
||||
* Requires input to be positive
|
||||
*/
|
||||
function
|
||||
bigint_to_bytes
|
||||
(q: bigint)
|
||||
: Uint8Array
|
||||
{
|
||||
if (q < 0n) {
|
||||
throw new Error('q < 0n: ' + q);
|
||||
}
|
||||
|
||||
let arr_reverse = [];
|
||||
while (q > 0n) {
|
||||
let r = Number(q % 256n);
|
||||
q /= 256n;
|
||||
arr_reverse.push(r);
|
||||
}
|
||||
arr_reverse.reverse();
|
||||
return new Uint8Array(arr_reverse);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Oh no, bitstrings in a language that only has bytestrings
|
||||
*
|
||||
* By convention these are `Uint8Array`s with byte length `ceil(bit_length /
|
||||
* 8)`, and all trailing bits are zero.
|
||||
*/
|
||||
type bits =
|
||||
{bit_length : number,
|
||||
bytes : Uint8Array};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get an uninitialized bitstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bits_null
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 0.
|
||||
*/
|
||||
function
|
||||
bits_zeros
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
for (let i0 = 0;
|
||||
i0 < byte_length;
|
||||
i0++)
|
||||
{
|
||||
result[i0] = 0;
|
||||
}
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get a bitstring of a given length where every value is 1.
|
||||
*/
|
||||
function
|
||||
bits_ones
|
||||
(bit_length : number)
|
||||
: bits
|
||||
{
|
||||
let byte_length : number = Math.ceil(bit_length / 8);
|
||||
let result : Uint8Array = new Uint8Array(byte_length);
|
||||
|
||||
// fill everything except the last byte with 255s
|
||||
for (let i0 = 0;
|
||||
i0 < (byte_length - 1);
|
||||
i0++)
|
||||
{
|
||||
result[i0] = 255;
|
||||
}
|
||||
|
||||
// alright so the last byte
|
||||
// ok so the number of leading 0s is
|
||||
// 8 - (bit_length % 8)
|
||||
let num_trailing_zero_bits : number = 8 - (bit_length % 8);
|
||||
// the trailing byte is 255 << that
|
||||
// e.g. 3 trailing 0s
|
||||
// 1111_1111 -> 1111_1000
|
||||
let last_byte : number = 255 << num_trailing_zero_bits;
|
||||
let last_byte_idx0 : number = byte_length - 1;
|
||||
result[last_byte_idx0] = last_byte;
|
||||
|
||||
return {bit_length : bit_length,
|
||||
bytes : result};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the bit at a given 0-index
|
||||
*/
|
||||
function
|
||||
bits_i0th
|
||||
(bit_idx0 : number,
|
||||
bits : bits)
|
||||
: number
|
||||
{
|
||||
// first task is figuring out what byte we're at
|
||||
// for instance if we want bit 27
|
||||
// 3*8 = 24 =< 27 < 4*8
|
||||
// so it's Math.floor(bit_idx0 / 8)
|
||||
let byte_idx0 : number = Math.floor(bit_idx0 / 8);
|
||||
// let's fetch the byte and work with that
|
||||
let the_byte : number = bits.bytes[byte_idx0];
|
||||
|
||||
// ok so let's go with 27 again
|
||||
// 27 = 3 mod 8
|
||||
// so we bitshift right by (8 - 3)
|
||||
// and then take the remainder dividing by 2
|
||||
// --B-_---- -> ----_---B -> 0000_000B
|
||||
let bsr : number = 8 - (bit_idx0 % 8);
|
||||
return (the_byte >> bsr) % 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Concatenate two bitstrings
|
||||
*/
|
||||
function
|
||||
bits_concat
|
||||
(bits1 : bits,
|
||||
bits2 : bits)
|
||||
: bits
|
||||
{
|
||||
let result_bit_length : number = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 : Uint8Array = bits1.bytes;
|
||||
let bytes2 : Uint8Array = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits : bits = bits_null(result_bit_length);
|
||||
let result_bytes : Uint8Array = result_bits.bytes;
|
||||
|
||||
// go along each byte in result, and compute the byte boundary
|
||||
for (let i = 0;
|
||||
i < result_bytes.length;
|
||||
i++)
|
||||
{
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// this is the bit index of the leftmost bit in this byte
|
||||
let start_bit_bi0 : number = i * 8;
|
||||
let next_start_bit_bi0 : number = start_bit_bi0 + 8;
|
||||
// does the bit at the beginning of this byte correspond to the first array?
|
||||
// strict comparison:
|
||||
// suppose i = 0,
|
||||
// suppose bit_length1 is 0
|
||||
// then this says no, go to second array
|
||||
// suppose bl1 = 1,
|
||||
// this says start at first array
|
||||
let start_bit_is_of_first_array : boolean = start_bit_bi0 < bits1.bit_length;
|
||||
// weak comparison:
|
||||
// suppose bit_length1 = 8
|
||||
// ABCD_EFGH _
|
||||
// 0123_4567 8
|
||||
// ^
|
||||
// start_bit_bi0 ^ next_start_bit_bi0
|
||||
let stop_bit_is_of_first_array : boolean = next_start_bit_bi0 <= bits1.bit_length;
|
||||
// is this a bytes1 byte
|
||||
let is_bytes1_byte : boolean = start_bit_is_of_first_array && stop_bit_is_of_first_array;
|
||||
let is_boundary_byte : boolean = start_bit_is_of_first_array && !stop_bit_is_of_first_array;
|
||||
|
||||
// need to work out the ping_pong bs up here because js is dumb and I
|
||||
// can't put lets between elseifs
|
||||
// alright, now we're in the case of only copying from the second array
|
||||
// we have two cases:
|
||||
// ping-pong:
|
||||
// ABCD_EFGH 1234_5678
|
||||
// - ---- ---
|
||||
// copying these bits
|
||||
// ping:
|
||||
// ABCD_EFGH <end>
|
||||
// - ---- 000
|
||||
//
|
||||
// how to distinguish between these two??
|
||||
//
|
||||
// we're in the ping case when the start_bit_bi0 corresponds to the
|
||||
// final byte of the second array
|
||||
//
|
||||
// ok
|
||||
//
|
||||
// we need to compute the bit address in the second array that
|
||||
// corresponds to the bit address at the beginning of this byte in the
|
||||
// result array
|
||||
let bits2_addr_bi0 : number = start_bit_bi0 - bits1.bit_length;
|
||||
// I think the variable is
|
||||
// bits_left_to_copy = bits2.bit_length - bit_addr2_bi0
|
||||
// no + 1 because the current bit is uncopied,
|
||||
// so if bit_addr2_bi0 = 7 and bits2.bit_length is 8, it means we
|
||||
// have the last bit to copy
|
||||
// cases:
|
||||
// bits_left_to_copy <= 0 ->
|
||||
// this would mean we have more bits to copy, but are out of
|
||||
// source bits. should be impossible if bits_null is correct
|
||||
// bits_left_to_copy <= 8 ->
|
||||
// this would mean we are going to fill this last byte in the
|
||||
// result array with the correct bits from array2, but how we
|
||||
// do this will depend on how those are arranged in bytes2
|
||||
// (whether we grab one or two bytes)
|
||||
//
|
||||
// this is the tricky case
|
||||
//
|
||||
// I think what matters here is the byte address in the second array
|
||||
// if we're on the last byte
|
||||
// 8 < bits_left_to_copy ->
|
||||
// this means we can safely grab two bytes from bytes2, and do
|
||||
// our bitshifting to make it correct
|
||||
//
|
||||
// FIXME
|
||||
let bits_left_to_copy : number = bits2.bit_length - bits2_addr_bi0;
|
||||
// no the variable that matters is which byte we're on in the result
|
||||
let this_bytes2_addr_i0 : number = Math.floor(bits2_addr_bi0 / 8);
|
||||
let next_bytes2_addr_i0 : number = this_bytes2_addr_i0 + 1;
|
||||
let bitshift_amt : number = bits1.bit_length % 8;
|
||||
|
||||
let ping : boolean = next_bytes2_addr_i0 === bytes2.length;
|
||||
|
||||
|
||||
// simple case: this is a byte from the first array
|
||||
// just copy it
|
||||
if (is_bytes1_byte)
|
||||
result_bytes[i] = bytes1[i];
|
||||
// this is a boundary byte
|
||||
// further cases:
|
||||
// second bit length is 0 ->
|
||||
// ABCD_EF-- <empty>
|
||||
// ^ starting here
|
||||
// just copy first byte and move along
|
||||
else if (is_boundary_byte && (bits2.bit_length === 0))
|
||||
result_bytes[i] = bytes1[i];
|
||||
// boundary byte, and there is at least one byte in the second array
|
||||
else if (is_boundary_byte)
|
||||
{
|
||||
// copy over the first byte
|
||||
result_bytes[i] = bytes1[i];
|
||||
// take the first byte from the second array
|
||||
let first_byte_of_second_array : number = bytes2[0];
|
||||
// bytes1:
|
||||
// ABCD_EF00
|
||||
// 6
|
||||
// bytes2:
|
||||
// 1234_5678
|
||||
// 0000_0012
|
||||
// and bitshift it right by that amount
|
||||
let bitshift_amt : number = bits1.bit_length % 8;
|
||||
result_bytes[i] ^= first_byte_of_second_array >> bitshift_amt;
|
||||
}
|
||||
// last byte of second array
|
||||
else if (ping)
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt);
|
||||
// ping-pong: not last byte of second array
|
||||
else
|
||||
result_bytes[i] = (bytes2[this_bytes2_addr_i0] << bitshift_amt) ^ (bytes2[next_bytes2_addr_i0] << bitshift_amt);
|
||||
}
|
||||
|
||||
return {bit_length : result_bit_length,
|
||||
bytes : result_bytes};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,399 @@
|
||||
/**
|
||||
* FÆRT: Fast Æternity Recovery Text
|
||||
*
|
||||
* Reference: https://gitlab.com/zxq9/passgas/-/blob/83607fedb08be5dfd03210e331f9c76125bb3467/fullofbeans
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
encode,
|
||||
decode,
|
||||
byte_of_word,
|
||||
check_word,
|
||||
check_byte,
|
||||
words
|
||||
}
|
||||
|
||||
import * as safe from './safe.js';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a bytestring into FÆRT
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(bytes : Uint8Array)
|
||||
: string
|
||||
{
|
||||
// initial accumulator
|
||||
let words_acc : Array<string> = [];
|
||||
|
||||
// go along each byte and look up the word
|
||||
// add it to the accumulator
|
||||
for (let this_byte of bytes)
|
||||
{
|
||||
let this_word = words[this_byte];
|
||||
words_acc.push(this_word);
|
||||
}
|
||||
|
||||
// prepend check word to phrase
|
||||
// yes craig it would be faster to do the check byte inline
|
||||
// the usage case here is 64 byte strings
|
||||
// double pass is not a big deal
|
||||
return check_word(bytes) + ' ' + words_acc.join(' ');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a FAERT string into bytes
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(faert : string)
|
||||
: safe.Safe<Uint8Array, string>
|
||||
{
|
||||
let all_words : Array<string> = faert.split(' ');
|
||||
let input_check_word : string = all_words[0];
|
||||
let input_words : Array<string> = all_words.slice(1)
|
||||
|
||||
// accumulator
|
||||
let computed_bytes : Array<number> = [];
|
||||
|
||||
// loop over words and figure out accumulator
|
||||
for (let this_input_word of input_words)
|
||||
{
|
||||
let maybe_this_byte : safe.Safe<number, string> = byte_of_word(this_input_word);
|
||||
// if the word is an allowable word, add it to the accumulator
|
||||
if (maybe_this_byte.ok)
|
||||
{
|
||||
let this_byte : number = maybe_this_byte.result;
|
||||
computed_bytes.push(this_byte);
|
||||
}
|
||||
// error case, propagate the error up the call chain
|
||||
else
|
||||
return maybe_this_byte;
|
||||
}
|
||||
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_bytes_u8s : Uint8Array = new Uint8Array(computed_bytes);
|
||||
let computed_check_word : string = check_word(computed_bytes_u8s);
|
||||
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* given a word, find its index
|
||||
*/
|
||||
function
|
||||
byte_of_word
|
||||
(word: string)
|
||||
: safe.Safe<number, string>
|
||||
{
|
||||
for (let i=0; i<=255; i++)
|
||||
{
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
}
|
||||
return safe.error('invalid word: ' + word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* compute the check word of an array
|
||||
*/
|
||||
function
|
||||
check_word
|
||||
(bytes: Uint8Array)
|
||||
: string
|
||||
{
|
||||
return words[check_byte(bytes)];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* given an array, compute the xor of all the bytes in the array
|
||||
*/
|
||||
function
|
||||
check_byte
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let check_byte = 0;
|
||||
for (let this_byte of bytes)
|
||||
check_byte ^= this_byte;
|
||||
return check_byte;
|
||||
}
|
||||
|
||||
|
||||
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
"adjust",
|
||||
"agent",
|
||||
"air",
|
||||
"alert",
|
||||
"alpha",
|
||||
"anger",
|
||||
"answer",
|
||||
"any",
|
||||
"argue",
|
||||
"around",
|
||||
"assume",
|
||||
"asthma",
|
||||
"aunt",
|
||||
"awkward",
|
||||
"balcony",
|
||||
"barrel",
|
||||
"because",
|
||||
"behave",
|
||||
"bicycle",
|
||||
"bike",
|
||||
"blind",
|
||||
"blouse",
|
||||
"bonus",
|
||||
"bottom",
|
||||
"breeze",
|
||||
"brother",
|
||||
"bubble",
|
||||
"burger",
|
||||
"butter",
|
||||
"can",
|
||||
"cannon",
|
||||
"cargo",
|
||||
"catalog",
|
||||
"caught",
|
||||
"century",
|
||||
"chaos",
|
||||
"chicken",
|
||||
"churn",
|
||||
"cinnamon",
|
||||
"clever",
|
||||
"clock",
|
||||
"clown",
|
||||
"collect",
|
||||
"conduct",
|
||||
"convince",
|
||||
"correct",
|
||||
"cradle",
|
||||
"crane",
|
||||
"crime",
|
||||
"cross",
|
||||
"crystal",
|
||||
"curve",
|
||||
"daughter",
|
||||
"debris",
|
||||
"decrease",
|
||||
"deny",
|
||||
"deputy",
|
||||
"despair",
|
||||
"diesel",
|
||||
"dinner",
|
||||
"distance",
|
||||
"document",
|
||||
"donate",
|
||||
"drama",
|
||||
"drink",
|
||||
"dutch",
|
||||
"earth",
|
||||
"educate",
|
||||
"elbow",
|
||||
"employ",
|
||||
"endless",
|
||||
"enlist",
|
||||
"enter",
|
||||
"equal",
|
||||
"eternal",
|
||||
"example",
|
||||
"exhibit",
|
||||
"exotic",
|
||||
"faculty",
|
||||
"famous",
|
||||
"fault",
|
||||
"feature",
|
||||
"fiber",
|
||||
"filter",
|
||||
"firm",
|
||||
"flame",
|
||||
"flush",
|
||||
"follow",
|
||||
"forward",
|
||||
"frame",
|
||||
"fringe",
|
||||
"future",
|
||||
"game",
|
||||
"gate",
|
||||
"gift",
|
||||
"glare",
|
||||
"glow",
|
||||
"goat",
|
||||
"grab",
|
||||
"grief",
|
||||
"guilt",
|
||||
"hand",
|
||||
"hawk",
|
||||
"health",
|
||||
"hen",
|
||||
"hire",
|
||||
"honey",
|
||||
"hover",
|
||||
"hurry",
|
||||
"hybrid",
|
||||
"impose",
|
||||
"inch",
|
||||
"inherit",
|
||||
"injury",
|
||||
"install",
|
||||
"iron",
|
||||
"jazz",
|
||||
"joke",
|
||||
"just",
|
||||
"kit",
|
||||
"kitchen",
|
||||
"language",
|
||||
"laundry",
|
||||
"leader",
|
||||
"lend",
|
||||
"leopard",
|
||||
"license",
|
||||
"live",
|
||||
"lobster",
|
||||
"lounge",
|
||||
"magnet",
|
||||
"mail",
|
||||
"mansion",
|
||||
"mass",
|
||||
"math",
|
||||
"media",
|
||||
"message",
|
||||
"metal",
|
||||
"misery",
|
||||
"mix",
|
||||
"more",
|
||||
"mountain",
|
||||
"museum",
|
||||
"mutual",
|
||||
"narrow",
|
||||
"nerve",
|
||||
"next",
|
||||
"note",
|
||||
"obey",
|
||||
"obtain",
|
||||
"offer",
|
||||
"once",
|
||||
"orange",
|
||||
"ostrich",
|
||||
"over",
|
||||
"owner",
|
||||
"palace",
|
||||
"patch",
|
||||
"pave",
|
||||
"pen",
|
||||
"phrase",
|
||||
"piece",
|
||||
"pizza",
|
||||
"plunge",
|
||||
"polar",
|
||||
"pool",
|
||||
"power",
|
||||
"pretty",
|
||||
"private",
|
||||
"protect",
|
||||
"pulp",
|
||||
"purity",
|
||||
"quit",
|
||||
"quote",
|
||||
"raise",
|
||||
"razor",
|
||||
"recall",
|
||||
"region",
|
||||
"relief",
|
||||
"rent",
|
||||
"rescue",
|
||||
"review",
|
||||
"ride",
|
||||
"risk",
|
||||
"roof",
|
||||
"rough",
|
||||
"saddle",
|
||||
"salmon",
|
||||
"sand",
|
||||
"scene",
|
||||
"scrub",
|
||||
"season",
|
||||
"seek",
|
||||
"series",
|
||||
"shed",
|
||||
"shoe",
|
||||
"sick",
|
||||
"silent",
|
||||
"situate",
|
||||
"skill",
|
||||
"slide",
|
||||
"slush",
|
||||
"snack",
|
||||
"solar",
|
||||
"soul",
|
||||
"special",
|
||||
"sphere",
|
||||
"spot",
|
||||
"spy",
|
||||
"stairs",
|
||||
"stereo",
|
||||
"strategy",
|
||||
"stuff",
|
||||
"success",
|
||||
"sunny",
|
||||
"surge",
|
||||
"swear",
|
||||
"symptom",
|
||||
"tail",
|
||||
"ten",
|
||||
"tent",
|
||||
"theme",
|
||||
"thumb",
|
||||
"tiny",
|
||||
"toe",
|
||||
"tooth",
|
||||
"topic",
|
||||
"trade",
|
||||
"trash",
|
||||
"trophy",
|
||||
"truly",
|
||||
"tumble",
|
||||
"typical",
|
||||
"uncle",
|
||||
"unfair",
|
||||
"until",
|
||||
"upper",
|
||||
"useless",
|
||||
"van",
|
||||
"venue",
|
||||
"video",
|
||||
"visa",
|
||||
"vocal",
|
||||
"walk",
|
||||
"waste",
|
||||
"wedding",
|
||||
"weekend",
|
||||
"wide",
|
||||
"winner",
|
||||
"wise",
|
||||
"wood",
|
||||
"wrist",
|
||||
"zero"
|
||||
]
|
||||
@@ -0,0 +1,521 @@
|
||||
/**
|
||||
* Ethereum Recursive-Length Prefix Encoding implementation
|
||||
*
|
||||
* Two reference implementations:
|
||||
*
|
||||
* 1. Ethereum Python implementation
|
||||
* 2. My Erlang implementation (agrees with Ethereum Python in randomized
|
||||
* tests)
|
||||
*
|
||||
* This work can be found in ../test/testgen/
|
||||
*
|
||||
* FIXME: need to have Safe assertions for "i am decoding a list", "i am
|
||||
* decoding a binary", "I am decoding something with no remainder", etc
|
||||
*
|
||||
* @module
|
||||
*/
|
||||
|
||||
export {
|
||||
decoded_data,
|
||||
decode_result,
|
||||
decode,
|
||||
encode
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// DECODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/**
|
||||
* Data that RLP can encode. Also the result of decoding.
|
||||
*/
|
||||
type decoded_data
|
||||
= Uint8Array
|
||||
| Array<decoded_data>;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decoding can have a remainder
|
||||
*/
|
||||
type decode_result
|
||||
= {decoded_data : decoded_data,
|
||||
remainder : Uint8Array};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode an RLP-encoded bytestring into a `decode_result` (decoded data +
|
||||
* whatever wasn't consumed)
|
||||
*/
|
||||
function
|
||||
decode
|
||||
(bytes: Uint8Array)
|
||||
: decode_result
|
||||
{
|
||||
// check the first byte
|
||||
let first_byte: number = bytes[0];
|
||||
let rest : Uint8Array = bytes.slice(1);
|
||||
// if the first byte is between 0 and 127, that is the data
|
||||
if
|
||||
(first_byte <= 127) {
|
||||
return dr(new Uint8Array([first_byte]), rest);
|
||||
}
|
||||
// if the first byte is between 128 and 183 = 128 + 55, it is a bytestring
|
||||
// and the length is Byte - 128
|
||||
else if
|
||||
(first_byte <= 183) {
|
||||
let payload_byte_length : number = first_byte - 128;
|
||||
let payload : Uint8Array = rest.slice(0, payload_byte_length);
|
||||
let rest2 : Uint8Array = rest.slice(payload_byte_length);
|
||||
return dr(payload, rest2);
|
||||
}
|
||||
// if the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
// bytestring. the byte length of bytestring is FirstByte - 183. Then pull
|
||||
// out the actual data
|
||||
else if
|
||||
(first_byte <= 191) {
|
||||
let byte_length_of_byte_length : number = first_byte - 183;
|
||||
let bytes_of_byte_length : Uint8Array = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length : number = bytes_to_number(bytes_of_byte_length);
|
||||
let bytes : Uint8Array = rest.slice(byte_length_of_byte_length,
|
||||
byte_length + byte_length_of_byte_length);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(bytes, rest2);
|
||||
}
|
||||
// If the first byte is between 192 and 247 = 192 + 55, it is a list. The
|
||||
// byte length of the list-payload is FirstByte - 192. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else if
|
||||
(first_byte <= 247) {
|
||||
let byte_length_of_list : number = first_byte - 192;
|
||||
let list_payload : Uint8Array = rest.slice(0, byte_length_of_list);
|
||||
let list : Array<decoded_data> = decode_list(list_payload);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length_of_list);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
// If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a
|
||||
// list. The byte length of the byte length of the list-payload is
|
||||
// FirstByte - 247. Then the byte length of the list. Then the list
|
||||
// payload, which needs to be decoded on its own.
|
||||
else {
|
||||
let byte_length_of_byte_length : number = first_byte - 247;
|
||||
let bytes_of_byte_length : Uint8Array = rest.slice(0, byte_length_of_byte_length);
|
||||
let byte_length : number = bytes_to_number(bytes_of_byte_length);
|
||||
let list_bytes : Uint8Array = rest.slice(byte_length_of_byte_length,
|
||||
byte_length + byte_length_of_byte_length);
|
||||
let list : Array<decoded_data> = decode_list(list_bytes);
|
||||
let rest2 : Uint8Array = rest.slice(byte_length + byte_length_of_byte_length);
|
||||
return dr(list, rest2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Decode a list payload (non-prefixed) into an `Array<decoded_data>`.
|
||||
*
|
||||
* Repeatedly decodes an element off the list until remainder is empty.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
decode_list
|
||||
(bytes: Uint8Array)
|
||||
: Array<decoded_data>
|
||||
{
|
||||
let arr : Array<decoded_data> = [];
|
||||
while (bytes.length > 0) {
|
||||
// grab an item off the bytes
|
||||
let {decoded_data, remainder} = decode(bytes);
|
||||
// push it
|
||||
arr.push(decoded_data);
|
||||
// update bytes
|
||||
bytes = remainder;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert bytestring to number
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
bytes_to_number
|
||||
(bytes: Uint8Array)
|
||||
: number
|
||||
{
|
||||
let n : number = 0;
|
||||
for (let b of bytes)
|
||||
{
|
||||
n <<= 8;
|
||||
n += b;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Make a `decode_result` containing the two arguments
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
dr
|
||||
(x : decoded_data,
|
||||
y : Uint8Array)
|
||||
: decode_result
|
||||
{
|
||||
return {decoded_data : x,
|
||||
remainder : y};
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// ENCODING
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
/**
|
||||
* Encode some decoded data
|
||||
*/
|
||||
function
|
||||
encode
|
||||
(data: decoded_data)
|
||||
: Uint8Array
|
||||
{
|
||||
// is it an array or data
|
||||
if
|
||||
(is_binary(data)) {
|
||||
return encode_binary(data as Uint8Array);
|
||||
}
|
||||
else if
|
||||
(is_list(data)) {
|
||||
return encode_list(data as Array<decoded_data>);
|
||||
}
|
||||
else {
|
||||
throw new Error('encode told to encode something that is not an array or a binary: ' + data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a binary into RLP
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_binary
|
||||
(bytes: Uint8Array)
|
||||
: Uint8Array
|
||||
{
|
||||
let len: number = bytes.length;
|
||||
// single byte case when the byte is between 0..127
|
||||
// result is the bytestring containing the byte itself
|
||||
if
|
||||
((len === 1) &&
|
||||
(bytes[0] <= 127)){
|
||||
return bytes;
|
||||
}
|
||||
// if the bytestring is 0..55 bytes long, the first byte in the result is
|
||||
// 128 + Length, the rest of the result bytestring is the input string
|
||||
else if
|
||||
(len <= 55) {
|
||||
// construct the result
|
||||
// <<128 + Len, Bytes/binary>>
|
||||
let result : Uint8Array = new Uint8Array(len + 1);
|
||||
// first byte is 128 + length
|
||||
result[0] = 128 + len;
|
||||
// copy input bytes into result
|
||||
for (let input_idx0 = 0;
|
||||
input_idx0 < len;
|
||||
input_idx0++)
|
||||
{
|
||||
let result_idx0 : number = input_idx0 + 1;
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the bytestring is more than 55 bytes long, the first byte is 183 +
|
||||
// ByteLengthOfByteLength, followed by the byte length, followed by the
|
||||
// bytes
|
||||
else {
|
||||
let len_bytes : Uint8Array = encode_unsigned(len);
|
||||
let len_bytes_length : number = len_bytes.length;
|
||||
// total array is
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
let result : Uint8Array = new Uint8Array(1 + len_bytes_length + len);
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 183 + len_bytes_length;
|
||||
// copy len_bytes into result
|
||||
for (let len_bytes_idx0 = 0;
|
||||
len_bytes_idx0 < len_bytes_length;
|
||||
len_bytes_idx0++)
|
||||
{
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = len_bytes_idx0 + 1;
|
||||
result[result_idx0] = len_bytes[len_bytes_idx0];
|
||||
}
|
||||
// copy original byte array into result
|
||||
for (let input_idx0 = 0;
|
||||
input_idx0 < len;
|
||||
input_idx0++)
|
||||
{
|
||||
// <<183 + len_bytes_length, len_bytes, Bytes>>
|
||||
// 1 byte len_bytes_length bytes len bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = input_idx0 + (1 + len_bytes_length);
|
||||
result[result_idx0] = bytes[input_idx0];
|
||||
}
|
||||
// finally, return the result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a list
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_list
|
||||
(list: Array<decoded_data>)
|
||||
: Uint8Array
|
||||
{
|
||||
// first encode every element in the list, then branch
|
||||
let payloads : Array<Uint8Array> = list.map(encode);
|
||||
let payload : Uint8Array = uint8arr_concat(payloads);
|
||||
let payload_size : number = payload.length;
|
||||
// if the payload size is in 0..55, then the first byte is 192 + payload
|
||||
// size, followed by the payload
|
||||
if
|
||||
(payload_size <= 55) {
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
let result : Uint8Array = new Uint8Array(1 + payload_size);
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
result[0] = 192 + payload_size;
|
||||
// copy the rest of the payload into result
|
||||
for (let payload_idx0 = 0;
|
||||
payload_idx0 < payload_size;
|
||||
payload_idx0++)
|
||||
{
|
||||
// result: <<(192 + Payload_Size), Payload/binary >>;
|
||||
// 1 byte payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
let result_idx0: number = payload_idx0 + 1;
|
||||
result[result_idx0] = payload[payload_idx0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// if the payload size is greater than 55, the first byte is 247 +
|
||||
// size_of_payload_size, followed by the payload size, followed by the
|
||||
// payload
|
||||
else {
|
||||
// compute the payload size size
|
||||
let payload_size_bytes : Uint8Array = encode_unsigned(payload_size);
|
||||
let payload_size_size : number = payload_size_bytes.length;
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
let result: Uint8Array = new Uint8Array(1 + payload_size_size + payload_size);
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// first byte is 247 + payload_size_size
|
||||
result[0] = 247 + payload_size_size;
|
||||
// copy the payload_size_bytes into result
|
||||
for (let psb_idx0 = 0;
|
||||
psb_idx0 < payload_size_size;
|
||||
psb_idx0++)
|
||||
{
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 byte for this
|
||||
let result_idx0 : number = psb_idx0 + 1;
|
||||
result[result_idx0] = payload_size_bytes[psb_idx0];
|
||||
}
|
||||
// copy the payload into result
|
||||
for (let pb_idx0 = 0;
|
||||
pb_idx0 < payload_size;
|
||||
pb_idx0++)
|
||||
{
|
||||
// result = <<(247 + payload_size_size), payload_size_bytes/binary, payload/binary >>
|
||||
// 1 byte payload_size_size bytes payload_size bytes
|
||||
//
|
||||
// ^ YOU ARE HERE
|
||||
// offset is 1 + payload_size_size bytes for this
|
||||
let result_idx0 : number = pb_idx0 + (1 + payload_size_size);
|
||||
result[result_idx0] = payload[pb_idx0];
|
||||
}
|
||||
// finally, return result
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Encode a number as a bytestring
|
||||
*
|
||||
* Not for general use, this assumes the input number is greater than 55
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
encode_unsigned
|
||||
(n: number)
|
||||
: Uint8Array
|
||||
{
|
||||
// can assume that n initially is greater than 55
|
||||
// have to encode it in reverse order
|
||||
let arr : Array<number> = [];
|
||||
// repeated division by 256 with remainder
|
||||
//
|
||||
// example: suppose bign was 1234 and we were dividing by 10
|
||||
//
|
||||
// iteration 0:
|
||||
// bign = 1234
|
||||
// arr = []
|
||||
// ---
|
||||
// bign / 10 = 123
|
||||
// bign % 10 = 4
|
||||
// ---
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
//
|
||||
// iteration 1:
|
||||
// bign = 123
|
||||
// arr = [4]
|
||||
// ---
|
||||
// bign / 10 = 12
|
||||
// bign % 10 = 3
|
||||
// ---
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
//
|
||||
// iteration 2:
|
||||
// bign = 12
|
||||
// arr = [4, 3]
|
||||
// ---
|
||||
// bign / 10 = 1
|
||||
// bign % 10 = 2
|
||||
// ---
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
//
|
||||
// iteration 3:
|
||||
// bign = 1
|
||||
// arr = [4, 3, 2]
|
||||
// ---
|
||||
// bign / 10 = 0
|
||||
// bign % 10 = 1
|
||||
// ---
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
//
|
||||
// iteration 4:
|
||||
// bign = 0
|
||||
// arr = [4, 3, 2, 1]
|
||||
// ---
|
||||
// DONE
|
||||
while (n > 0) {
|
||||
arr.push(n % 256);
|
||||
n >>= 8;
|
||||
}
|
||||
// reverse and make into Uint8Array
|
||||
arr.reverse();
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* concatenate an array of `Uint8Array`s into a single Uint8Array
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
uint8arr_concat
|
||||
(arrs: Array<Uint8Array>)
|
||||
: Uint8Array
|
||||
{
|
||||
// total length
|
||||
let total_len = arrs.reduce(// fold
|
||||
function (acc_len: number, this_uint8array: Uint8Array): number {
|
||||
return acc_len + this_uint8array.length;
|
||||
},
|
||||
// initial accumulator
|
||||
0);
|
||||
// start up result
|
||||
let result : Uint8Array = new Uint8Array(total_len);
|
||||
let result_idx0 : number = 0;
|
||||
// concatenate
|
||||
for (let this_uint8arr of arrs) {
|
||||
// bytewise copy of this uint8array
|
||||
for (let this_uint8arr_idx0 = 0;
|
||||
this_uint8arr_idx0 < this_uint8arr.length;
|
||||
this_uint8arr_idx0++)
|
||||
{
|
||||
// copy byte and increment result idx0
|
||||
result[result_idx0] = this_uint8arr[this_uint8arr_idx0];
|
||||
result_idx0++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns true if input is `instanceof Uint8Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
is_binary
|
||||
(x: any)
|
||||
: boolean
|
||||
{
|
||||
return (x instanceof Uint8Array);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* returns true if input is `instanceof Array`
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function
|
||||
is_list
|
||||
(x: any)
|
||||
: boolean
|
||||
{
|
||||
return (x instanceof Array);
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* "Safe" error handling
|
||||
*
|
||||
* The idea here is that there are situations where it is known
|
||||
*
|
||||
* ```typescript
|
||||
* type Safe<ok_t, err_t>
|
||||
* = Ok<ok_t>
|
||||
* | Error<err_t>;
|
||||
*
|
||||
* type Ok<ok_t>
|
||||
* = {ok : true,
|
||||
* result : ok_t};
|
||||
*
|
||||
* type Error<err_t>
|
||||
* = {ok : false,
|
||||
* error : err_t};
|
||||
* ```
|
||||
*
|
||||
* 1. a given function call is likely to fail
|
||||
* 2. the likely errors can be enumerated
|
||||
*
|
||||
* These are called "positive errors". An example would be a page script
|
||||
* asking a browser wallet extension to sign a transaction. The following
|
||||
* errors, among others, are likely:
|
||||
*
|
||||
* - the user does not have a wallet installed
|
||||
* - the user has a wallet but does not have the correct signing key
|
||||
* - the user rejects the transaction
|
||||
* - the sign request timed out
|
||||
*
|
||||
* These errors should not generate exceptions, as these behaviors are to some
|
||||
* degree "expected".
|
||||
*/
|
||||
|
||||
export {
|
||||
Safe,
|
||||
Ok,
|
||||
Error,
|
||||
ok,
|
||||
error,
|
||||
unsafe
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Type that catches positive errors
|
||||
*/
|
||||
type Safe<ok_t, err_t>
|
||||
= Ok<ok_t>
|
||||
| Error<err_t>;
|
||||
|
||||
|
||||
/**
|
||||
* Ok type
|
||||
*/
|
||||
type Ok<ok_t>
|
||||
= {ok : true,
|
||||
result : ok_t};
|
||||
|
||||
|
||||
/**
|
||||
* Error type
|
||||
*/
|
||||
type Error<err_t>
|
||||
= {ok : false,
|
||||
error : err_t};
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an `Ok` value from a pure value
|
||||
*/
|
||||
function
|
||||
ok
|
||||
<ok_t>
|
||||
(x : ok_t)
|
||||
: Ok<ok_t>
|
||||
{
|
||||
return {ok: true, result: x};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an `Error` value from a pure value
|
||||
*/
|
||||
function
|
||||
error
|
||||
<err_t>
|
||||
(x: err_t)
|
||||
: Error<err_t>
|
||||
{
|
||||
return {ok: false, error: x};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Takes a `Safe` value, if `ok`, returns the `ok_t`, or if an error throws the
|
||||
* `err_t`
|
||||
*/
|
||||
function
|
||||
unsafe
|
||||
<ok_t, err_t>
|
||||
(x: Safe<ok_t, err_t>)
|
||||
: ok_t
|
||||
{
|
||||
if (x.ok)
|
||||
return x.result;
|
||||
else
|
||||
throw x.error;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
b58_cases_2.eterms
|
||||
b58_cases_3.eterms
|
||||
@@ -0,0 +1,234 @@
|
||||
-module(b58).
|
||||
-export([enc/1, dec/1]).
|
||||
|
||||
%-mode(compile).
|
||||
%-spec enc(binary()) -> string().
|
||||
%% https://digitalbazaar.github.io/base58-spec/#encode
|
||||
|
||||
main([]) ->
|
||||
{ok, Cases} = file:consult("b58_cases_3.eterms"),
|
||||
test_cases(Cases).
|
||||
|
||||
test_cases([{{encoded, E}, {decoded, D}} | Rest]) ->
|
||||
EncodeOk = E =:= enc(D),
|
||||
DecodeOk = D =:= dec(E),
|
||||
ok =
|
||||
case EncodeOk of
|
||||
true -> ok;
|
||||
false -> io:format("===============================~n"
|
||||
"YOU ARE A FAILURE TO ENCODE~n"
|
||||
"===============================~n"
|
||||
"decoded : ~tw~n"
|
||||
"expected : ~ts~n"
|
||||
"actual : ~ts~n~n",
|
||||
[D, E, enc(D)])
|
||||
end,
|
||||
ok =
|
||||
case DecodeOk of
|
||||
true -> ok;
|
||||
false -> io:format("===============================~n"
|
||||
"YOU ARE A FAILURE TO DECODE~n"
|
||||
"===============================~n"
|
||||
"encoded : ~ts~n"
|
||||
"expected : ~tw~n"
|
||||
"actual : ~tw~n~n",
|
||||
[E, D, dec(E)])
|
||||
end,
|
||||
test_cases(Rest);
|
||||
test_cases([]) ->
|
||||
ok.
|
||||
|
||||
% this was much clearer: https://www.youtube.com/watch?v=GedV3S9X89c
|
||||
|
||||
-spec enc(Bytes) -> Base58
|
||||
when Bytes :: binary(),
|
||||
Base58 :: string().
|
||||
|
||||
enc(Bytes) ->
|
||||
% grab leading 0s
|
||||
{NumLeadingZeros, Rest} = split_zeros(Bytes, 0),
|
||||
NBitsInRest = bit_size(Rest),
|
||||
<<RestBigNum:NBitsInRest>> = Rest,
|
||||
ZerosBase58 = [$1 || _ <- lists:seq(1, NumLeadingZeros)],
|
||||
RestBase58 = enc(RestBigNum, []),
|
||||
ZerosBase58 ++ RestBase58.
|
||||
|
||||
|
||||
|
||||
-spec split_zeros(Bytes, InitZeros) -> {NumLeadingZeros, Rest}
|
||||
when Bytes :: binary(),
|
||||
InitZeros :: integer(),
|
||||
NumLeadingZeros :: binary(),
|
||||
Rest :: binary().
|
||||
|
||||
split_zeros(<<0:8, Rest/binary>>, NumZerosAcc) ->
|
||||
NewNumZerosAcc = NumZerosAcc + 1,
|
||||
split_zeros(Rest, NewNumZerosAcc);
|
||||
split_zeros(Rest, NumZerosAcc) ->
|
||||
{NumZerosAcc, Rest}.
|
||||
|
||||
|
||||
|
||||
-spec enc(BytesBigNum, Base58Acc) -> Base58
|
||||
when BytesBigNum :: integer(),
|
||||
Base58Acc :: [0..57],
|
||||
Base58 :: string().
|
||||
|
||||
enc(0, Acc) ->
|
||||
lists:map(fun int2char/1, Acc);
|
||||
enc(BitNum, Acc) ->
|
||||
Q = BitNum div 58,
|
||||
R = BitNum rem 58,
|
||||
enc(Q, [R | Acc]).
|
||||
|
||||
|
||||
|
||||
-spec dec(Base58) -> DecodedBytes
|
||||
when Base58 :: string(),
|
||||
DecodedBytes :: binary().
|
||||
|
||||
dec(Str) ->
|
||||
% the number of leading 1s tells us the number of leading zeros
|
||||
{NumLeadingZeros, RestStr} = split_ones(Str, 0),
|
||||
LeadingZeros = << <<0>> || _ <- lists:seq(1, NumLeadingZeros) >>,
|
||||
RestNs = lists:map(fun char2int/1, RestStr),
|
||||
RestBytes = dec(RestNs, 0),
|
||||
<<LeadingZeros/binary, RestBytes/binary>>.
|
||||
|
||||
split_ones([$1 | Rest], NOnes) ->
|
||||
split_ones(Rest, NOnes + 1);
|
||||
split_ones(B58Str, NOnes) ->
|
||||
{NOnes, B58Str}.
|
||||
|
||||
|
||||
dec([N | Ns], Acc) ->
|
||||
NewAcc = (Acc*58) + N,
|
||||
dec(Ns, NewAcc);
|
||||
dec([], FinalAccN) ->
|
||||
bignum_to_binary_bige(FinalAccN, <<>>).
|
||||
|
||||
bignum_to_binary_bige(0, Acc) ->
|
||||
Acc;
|
||||
bignum_to_binary_bige(N, Acc) ->
|
||||
Q = N div 256,
|
||||
R = N rem 256,
|
||||
NewAcc = <<R, Acc/binary>>,
|
||||
bignum_to_binary_bige(Q, NewAcc).
|
||||
|
||||
int2char( 0) -> $1;
|
||||
int2char( 1) -> $2;
|
||||
int2char( 2) -> $3;
|
||||
int2char( 3) -> $4;
|
||||
int2char( 4) -> $5;
|
||||
int2char( 5) -> $6;
|
||||
int2char( 6) -> $7;
|
||||
int2char( 7) -> $8;
|
||||
int2char( 8) -> $9;
|
||||
int2char( 9) -> $A;
|
||||
int2char(10) -> $B;
|
||||
int2char(11) -> $C;
|
||||
int2char(12) -> $D;
|
||||
int2char(13) -> $E;
|
||||
int2char(14) -> $F;
|
||||
int2char(15) -> $G;
|
||||
int2char(16) -> $H;
|
||||
int2char(17) -> $J;
|
||||
int2char(18) -> $K;
|
||||
int2char(19) -> $L;
|
||||
int2char(20) -> $M;
|
||||
int2char(21) -> $N;
|
||||
int2char(22) -> $P;
|
||||
int2char(23) -> $Q;
|
||||
int2char(24) -> $R;
|
||||
int2char(25) -> $S;
|
||||
int2char(26) -> $T;
|
||||
int2char(27) -> $U;
|
||||
int2char(28) -> $V;
|
||||
int2char(29) -> $W;
|
||||
int2char(30) -> $X;
|
||||
int2char(31) -> $Y;
|
||||
int2char(32) -> $Z;
|
||||
int2char(33) -> $a;
|
||||
int2char(34) -> $b;
|
||||
int2char(35) -> $c;
|
||||
int2char(36) -> $d;
|
||||
int2char(37) -> $e;
|
||||
int2char(38) -> $f;
|
||||
int2char(39) -> $g;
|
||||
int2char(40) -> $h;
|
||||
int2char(41) -> $i;
|
||||
int2char(42) -> $j;
|
||||
int2char(43) -> $k;
|
||||
int2char(44) -> $m;
|
||||
int2char(45) -> $n;
|
||||
int2char(46) -> $o;
|
||||
int2char(47) -> $p;
|
||||
int2char(48) -> $q;
|
||||
int2char(49) -> $r;
|
||||
int2char(50) -> $s;
|
||||
int2char(51) -> $t;
|
||||
int2char(52) -> $u;
|
||||
int2char(53) -> $v;
|
||||
int2char(54) -> $w;
|
||||
int2char(55) -> $x;
|
||||
int2char(56) -> $y;
|
||||
int2char(57) -> $z.
|
||||
|
||||
char2int($1) -> 0;
|
||||
char2int($2) -> 1;
|
||||
char2int($3) -> 2;
|
||||
char2int($4) -> 3;
|
||||
char2int($5) -> 4;
|
||||
char2int($6) -> 5;
|
||||
char2int($7) -> 6;
|
||||
char2int($8) -> 7;
|
||||
char2int($9) -> 8;
|
||||
char2int($A) -> 9;
|
||||
char2int($B) -> 10;
|
||||
char2int($C) -> 11;
|
||||
char2int($D) -> 12;
|
||||
char2int($E) -> 13;
|
||||
char2int($F) -> 14;
|
||||
char2int($G) -> 15;
|
||||
char2int($H) -> 16;
|
||||
char2int($J) -> 17;
|
||||
char2int($K) -> 18;
|
||||
char2int($L) -> 19;
|
||||
char2int($M) -> 20;
|
||||
char2int($N) -> 21;
|
||||
char2int($P) -> 22;
|
||||
char2int($Q) -> 23;
|
||||
char2int($R) -> 24;
|
||||
char2int($S) -> 25;
|
||||
char2int($T) -> 26;
|
||||
char2int($U) -> 27;
|
||||
char2int($V) -> 28;
|
||||
char2int($W) -> 29;
|
||||
char2int($X) -> 30;
|
||||
char2int($Y) -> 31;
|
||||
char2int($Z) -> 32;
|
||||
char2int($a) -> 33;
|
||||
char2int($b) -> 34;
|
||||
char2int($c) -> 35;
|
||||
char2int($d) -> 36;
|
||||
char2int($e) -> 37;
|
||||
char2int($f) -> 38;
|
||||
char2int($g) -> 39;
|
||||
char2int($h) -> 40;
|
||||
char2int($i) -> 41;
|
||||
char2int($j) -> 42;
|
||||
char2int($k) -> 43;
|
||||
char2int($m) -> 44;
|
||||
char2int($n) -> 45;
|
||||
char2int($o) -> 46;
|
||||
char2int($p) -> 47;
|
||||
char2int($q) -> 48;
|
||||
char2int($r) -> 49;
|
||||
char2int($s) -> 50;
|
||||
char2int($t) -> 51;
|
||||
char2int($u) -> 52;
|
||||
char2int($v) -> 53;
|
||||
char2int($w) -> 54;
|
||||
char2int($x) -> 55;
|
||||
char2int($y) -> 56;
|
||||
char2int($z) -> 57.
|
||||
@@ -0,0 +1,204 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
'''
|
||||
generate base58 tests
|
||||
|
||||
really checking to see if my code matches the python base58 package which has
|
||||
159 stars on github
|
||||
'''
|
||||
|
||||
import base58 as b
|
||||
import random as r
|
||||
|
||||
###########################
|
||||
### simple cases (single bytes, two bytes, 10 bytes of same byte)
|
||||
###########################
|
||||
|
||||
## 1 byte cases
|
||||
|
||||
def single_byte_case(byte):
|
||||
'''
|
||||
return the encode/decode pair corresponding to a single byte
|
||||
'''
|
||||
decoded_bytes = bytes([byte])
|
||||
encoded_bytes = b.b58encode(decoded_bytes)
|
||||
return {'db': decoded_bytes, 'eb': encoded_bytes}
|
||||
|
||||
|
||||
def single_byte_cases():
|
||||
'''
|
||||
return the encode/decode pairs corresponding to every single byte case for
|
||||
byte between 0 and 255
|
||||
'''
|
||||
# range(0, 256) = [0, 256) intersect Z
|
||||
return [single_byte_case(n) for n in range(0, 256)]
|
||||
|
||||
## too many of these
|
||||
|
||||
### 2 byte cases
|
||||
#
|
||||
#def two_bytes(n):
|
||||
# '''
|
||||
# return the two bytes corresponding to <<n // 256, n % 256>>
|
||||
# '''
|
||||
# return bytes([n // 256, n % 256])
|
||||
#
|
||||
#
|
||||
#def two_byte_case(n):
|
||||
# '''
|
||||
# return the encode/decode pair corresponding to <<n // 256, n % 256>>
|
||||
# '''
|
||||
# decoded_bytes = two_bytes(n)
|
||||
# encoded_bytes = b.b58encode(decoded_bytes)
|
||||
# return {'db': decoded_bytes, 'eb': encoded_bytes}
|
||||
#
|
||||
#
|
||||
#def two_byte_cases():
|
||||
# '''
|
||||
# return the encode/decode pairs for each two bytes <<n:8, m:8>>
|
||||
# '''
|
||||
# return [two_byte_case(n) for n in range(0, 256*256)]
|
||||
|
||||
|
||||
## 10 byte cases
|
||||
|
||||
def ten_bytes(byte):
|
||||
'''
|
||||
return the ten byte string which is byte repeated 10 times
|
||||
'''
|
||||
return bytes([byte for _ in range(10)])
|
||||
|
||||
|
||||
def ten_byte_case(n):
|
||||
'''
|
||||
return the encode/decode pair corresponding to <<n>> * 10
|
||||
'''
|
||||
decoded_bytes = ten_bytes(n)
|
||||
encoded_bytes = b.b58encode(decoded_bytes)
|
||||
return {'db': decoded_bytes, 'eb': encoded_bytes}
|
||||
|
||||
|
||||
def ten_byte_cases():
|
||||
'''
|
||||
return the encode/decode pairs for each string <<n:8>> * 10
|
||||
'''
|
||||
return [ten_byte_case(n) for n in range(0, 256)]
|
||||
|
||||
|
||||
|
||||
## all simple cases in one function
|
||||
|
||||
def simple_cases():
|
||||
return single_byte_cases() + ten_byte_cases()
|
||||
|
||||
|
||||
###########################
|
||||
### case generation
|
||||
###########################
|
||||
|
||||
def random_bytes():
|
||||
'''
|
||||
return between 0 and 999 random bytes
|
||||
'''
|
||||
# randint is between [left, right]
|
||||
len = r.randint(0, 999)
|
||||
#len = 10
|
||||
acc = []
|
||||
for _ in range(len):
|
||||
# randint is between [left, right]
|
||||
randbyte = r.randint(0, 255)
|
||||
acc.append(randbyte)
|
||||
return bytes(acc)
|
||||
|
||||
|
||||
def case():
|
||||
'''
|
||||
return a random encode/decode pair
|
||||
'''
|
||||
decoded_bytes = random_bytes()
|
||||
encoded_bytes = b.b58encode(decoded_bytes)
|
||||
return {'db': decoded_bytes, 'eb': encoded_bytes}
|
||||
|
||||
|
||||
def cases(n):
|
||||
'''
|
||||
return n randomly generated encode/decode pairs
|
||||
'''
|
||||
return [case() for _ in range(n)]
|
||||
|
||||
|
||||
###########################
|
||||
### js formatting
|
||||
###########################
|
||||
|
||||
def format_decoded_js(decoded_bytes):
|
||||
'''
|
||||
format the bytes as a js Uint8Array
|
||||
'''
|
||||
return f'new Uint8Array({list(decoded_bytes)})'
|
||||
|
||||
def format_encoded_js(encoded_bytes):
|
||||
s = str(encoded_bytes)[2:-1]
|
||||
return '"' + s + '"'
|
||||
|
||||
def format_case_js(case):
|
||||
decoded_bytes = case['db']
|
||||
encoded_bytes = case['eb']
|
||||
db_js = format_decoded_js(decoded_bytes)
|
||||
eb_js = format_encoded_js(encoded_bytes)
|
||||
return '{encoded: ' + eb_js + ',\n ' + 'decoded: ' + db_js + '},\n '
|
||||
|
||||
|
||||
def format_cases_js(cases):
|
||||
s = '['
|
||||
for case in cases:
|
||||
s += format_case_js(case)
|
||||
# each case adds ",\n " so remove that
|
||||
# >>> "12345678"[:-3]
|
||||
# '12345'
|
||||
s = s[:-3]
|
||||
s += ']'
|
||||
return s
|
||||
|
||||
|
||||
###########################
|
||||
### erlang formatting
|
||||
###########################
|
||||
|
||||
def format_decoded_erl(decoded_bytes):
|
||||
'''
|
||||
format the bytes as a erl Uint8Array
|
||||
'''
|
||||
bytes_list = list(decoded_bytes)
|
||||
byteslstr = f'{bytes_list}'
|
||||
return '<<' + byteslstr[1:-1] + '>>'
|
||||
|
||||
def format_encoded_erl(encoded_bytes):
|
||||
s = str(encoded_bytes)[2:-1]
|
||||
return '"' + s + '"'
|
||||
|
||||
def format_case_erl(case):
|
||||
decoded_bytes = case['db']
|
||||
encoded_bytes = case['eb']
|
||||
db_erl = format_decoded_erl(decoded_bytes)
|
||||
eb_erl = format_encoded_erl(encoded_bytes)
|
||||
return '{{encoded, ' + eb_erl + '},\n ' + '{decoded, ' + db_erl + '}}.\n'
|
||||
|
||||
def format_cases_erl(cases):
|
||||
s = ''
|
||||
for case in cases:
|
||||
s += format_case_erl(case)
|
||||
return s
|
||||
|
||||
|
||||
###########################
|
||||
### main
|
||||
###########################
|
||||
|
||||
def main():
|
||||
c = simple_cases() + cases(50)
|
||||
print(format_cases_js(c))
|
||||
#print(format_cases_erl(c))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,236 @@
|
||||
%-module(b58).
|
||||
%-export([enc/1, dec/1]).
|
||||
|
||||
-mode(compile).
|
||||
%-spec enc(binary()) -> string().
|
||||
%% https://digitalbazaar.github.io/base58-spec/#encode
|
||||
|
||||
main([]) ->
|
||||
{ok, Cases} = file:consult("b58_cases_3.eterms"),
|
||||
DoCase =
|
||||
fun(Case) ->
|
||||
spawn(fun() -> test_case(Case) end)
|
||||
end,
|
||||
lists:foreach(DoCase, Cases).
|
||||
|
||||
test_case({{encoded, E}, {decoded, D}}) ->
|
||||
EncodeOk = E =:= enc(D),
|
||||
DecodeOk = D =:= dec(E),
|
||||
ok =
|
||||
case EncodeOk of
|
||||
true -> ok;
|
||||
false -> io:format("===============================~n"
|
||||
"YOU ARE A FAILURE TO ENCODE~n"
|
||||
"===============================~n"
|
||||
"decoded : ~tw~n"
|
||||
"expected : ~ts~n"
|
||||
"actual : ~ts~n~n",
|
||||
[D, E, enc(D)])
|
||||
end,
|
||||
ok =
|
||||
case DecodeOk of
|
||||
true -> ok;
|
||||
false -> io:format("===============================~n"
|
||||
"YOU ARE A FAILURE TO DECODE~n"
|
||||
"===============================~n"
|
||||
"encoded : ~ts~n"
|
||||
"expected : ~tw~n"
|
||||
"actual : ~tw~n~n",
|
||||
[E, D, dec(E)])
|
||||
end,
|
||||
ok.
|
||||
|
||||
% this was much clearer: https://www.youtube.com/watch?v=GedV3S9X89c
|
||||
|
||||
-spec enc(Bytes) -> Base58
|
||||
when Bytes :: binary(),
|
||||
Base58 :: string().
|
||||
|
||||
enc(Bytes) ->
|
||||
% grab leading 0s
|
||||
{NumLeadingZeros, Rest} = split_zeros(Bytes, 0),
|
||||
NBitsInRest = bit_size(Rest),
|
||||
<<RestBigNum:NBitsInRest>> = Rest,
|
||||
ZerosBase58 = [$1 || _ <- lists:seq(1, NumLeadingZeros)],
|
||||
RestBase58 = enc(RestBigNum, []),
|
||||
ZerosBase58 ++ RestBase58.
|
||||
|
||||
|
||||
|
||||
-spec split_zeros(Bytes, InitZeros) -> {NumLeadingZeros, Rest}
|
||||
when Bytes :: binary(),
|
||||
InitZeros :: integer(),
|
||||
NumLeadingZeros :: binary(),
|
||||
Rest :: binary().
|
||||
|
||||
split_zeros(<<0:8, Rest/binary>>, NumZerosAcc) ->
|
||||
NewNumZerosAcc = NumZerosAcc + 1,
|
||||
split_zeros(Rest, NewNumZerosAcc);
|
||||
split_zeros(Rest, NumZerosAcc) ->
|
||||
{NumZerosAcc, Rest}.
|
||||
|
||||
|
||||
|
||||
-spec enc(BytesBigNum, Base58Acc) -> Base58
|
||||
when BytesBigNum :: integer(),
|
||||
Base58Acc :: [0..57],
|
||||
Base58 :: string().
|
||||
|
||||
enc(0, Acc) ->
|
||||
lists:map(fun int2char/1, Acc);
|
||||
enc(BitNum, Acc) ->
|
||||
Q = BitNum div 58,
|
||||
R = BitNum rem 58,
|
||||
enc(Q, [R | Acc]).
|
||||
|
||||
|
||||
|
||||
-spec dec(Base58) -> DecodedBytes
|
||||
when Base58 :: string(),
|
||||
DecodedBytes :: binary().
|
||||
|
||||
dec(Str) ->
|
||||
% the number of leading 1s tells us the number of leading zeros
|
||||
{NumLeadingZeros, RestStr} = split_ones(Str, 0),
|
||||
LeadingZeros = << <<0>> || _ <- lists:seq(1, NumLeadingZeros) >>,
|
||||
RestNs = lists:map(fun char2int/1, RestStr),
|
||||
RestBytes = dec(RestNs, 0),
|
||||
<<LeadingZeros/binary, RestBytes/binary>>.
|
||||
|
||||
split_ones([$1 | Rest], NOnes) ->
|
||||
split_ones(Rest, NOnes + 1);
|
||||
split_ones(B58Str, NOnes) ->
|
||||
{NOnes, B58Str}.
|
||||
|
||||
|
||||
dec([N | Ns], Acc) ->
|
||||
NewAcc = (Acc*58) + N,
|
||||
dec(Ns, NewAcc);
|
||||
dec([], FinalAccN) ->
|
||||
bignum_to_binary_bige(FinalAccN, <<>>).
|
||||
|
||||
bignum_to_binary_bige(0, Acc) ->
|
||||
Acc;
|
||||
bignum_to_binary_bige(N, Acc) ->
|
||||
Q = N div 256,
|
||||
R = N rem 256,
|
||||
NewAcc = <<R, Acc/binary>>,
|
||||
bignum_to_binary_bige(Q, NewAcc).
|
||||
|
||||
int2char( 0) -> $1;
|
||||
int2char( 1) -> $2;
|
||||
int2char( 2) -> $3;
|
||||
int2char( 3) -> $4;
|
||||
int2char( 4) -> $5;
|
||||
int2char( 5) -> $6;
|
||||
int2char( 6) -> $7;
|
||||
int2char( 7) -> $8;
|
||||
int2char( 8) -> $9;
|
||||
int2char( 9) -> $A;
|
||||
int2char(10) -> $B;
|
||||
int2char(11) -> $C;
|
||||
int2char(12) -> $D;
|
||||
int2char(13) -> $E;
|
||||
int2char(14) -> $F;
|
||||
int2char(15) -> $G;
|
||||
int2char(16) -> $H;
|
||||
int2char(17) -> $J;
|
||||
int2char(18) -> $K;
|
||||
int2char(19) -> $L;
|
||||
int2char(20) -> $M;
|
||||
int2char(21) -> $N;
|
||||
int2char(22) -> $P;
|
||||
int2char(23) -> $Q;
|
||||
int2char(24) -> $R;
|
||||
int2char(25) -> $S;
|
||||
int2char(26) -> $T;
|
||||
int2char(27) -> $U;
|
||||
int2char(28) -> $V;
|
||||
int2char(29) -> $W;
|
||||
int2char(30) -> $X;
|
||||
int2char(31) -> $Y;
|
||||
int2char(32) -> $Z;
|
||||
int2char(33) -> $a;
|
||||
int2char(34) -> $b;
|
||||
int2char(35) -> $c;
|
||||
int2char(36) -> $d;
|
||||
int2char(37) -> $e;
|
||||
int2char(38) -> $f;
|
||||
int2char(39) -> $g;
|
||||
int2char(40) -> $h;
|
||||
int2char(41) -> $i;
|
||||
int2char(42) -> $j;
|
||||
int2char(43) -> $k;
|
||||
int2char(44) -> $m;
|
||||
int2char(45) -> $n;
|
||||
int2char(46) -> $o;
|
||||
int2char(47) -> $p;
|
||||
int2char(48) -> $q;
|
||||
int2char(49) -> $r;
|
||||
int2char(50) -> $s;
|
||||
int2char(51) -> $t;
|
||||
int2char(52) -> $u;
|
||||
int2char(53) -> $v;
|
||||
int2char(54) -> $w;
|
||||
int2char(55) -> $x;
|
||||
int2char(56) -> $y;
|
||||
int2char(57) -> $z.
|
||||
|
||||
char2int($1) -> 0;
|
||||
char2int($2) -> 1;
|
||||
char2int($3) -> 2;
|
||||
char2int($4) -> 3;
|
||||
char2int($5) -> 4;
|
||||
char2int($6) -> 5;
|
||||
char2int($7) -> 6;
|
||||
char2int($8) -> 7;
|
||||
char2int($9) -> 8;
|
||||
char2int($A) -> 9;
|
||||
char2int($B) -> 10;
|
||||
char2int($C) -> 11;
|
||||
char2int($D) -> 12;
|
||||
char2int($E) -> 13;
|
||||
char2int($F) -> 14;
|
||||
char2int($G) -> 15;
|
||||
char2int($H) -> 16;
|
||||
char2int($J) -> 17;
|
||||
char2int($K) -> 18;
|
||||
char2int($L) -> 19;
|
||||
char2int($M) -> 20;
|
||||
char2int($N) -> 21;
|
||||
char2int($P) -> 22;
|
||||
char2int($Q) -> 23;
|
||||
char2int($R) -> 24;
|
||||
char2int($S) -> 25;
|
||||
char2int($T) -> 26;
|
||||
char2int($U) -> 27;
|
||||
char2int($V) -> 28;
|
||||
char2int($W) -> 29;
|
||||
char2int($X) -> 30;
|
||||
char2int($Y) -> 31;
|
||||
char2int($Z) -> 32;
|
||||
char2int($a) -> 33;
|
||||
char2int($b) -> 34;
|
||||
char2int($c) -> 35;
|
||||
char2int($d) -> 36;
|
||||
char2int($e) -> 37;
|
||||
char2int($f) -> 38;
|
||||
char2int($g) -> 39;
|
||||
char2int($h) -> 40;
|
||||
char2int($i) -> 41;
|
||||
char2int($j) -> 42;
|
||||
char2int($k) -> 43;
|
||||
char2int($m) -> 44;
|
||||
char2int($n) -> 45;
|
||||
char2int($o) -> 46;
|
||||
char2int($p) -> 47;
|
||||
char2int($q) -> 48;
|
||||
char2int($r) -> 49;
|
||||
char2int($s) -> 50;
|
||||
char2int($t) -> 51;
|
||||
char2int($u) -> 52;
|
||||
char2int($v) -> 53;
|
||||
char2int($w) -> 54;
|
||||
char2int($x) -> 55;
|
||||
char2int($y) -> 56;
|
||||
char2int($z) -> 57.
|
||||
@@ -0,0 +1,200 @@
|
||||
[{encoded: "3rHNek8y9QUCJrDKyLQZep9P8SZp1W41UaccqnjT6VR2Ydn3LbdraAKMsUyvpLvMvdYrQ8s6hLMrJMwpzUyzt6CrAM6Jkk4wkHuNnLQ3wAg9KQTEphUBzULBd39eBdrmDioASsu3PFits2JW36rjvb1fmRYEYRVtmw2A2uqdJJ6b1vaz57XhCUFFSD9f8ALRL3RMqkibs6K2d3kPxmB6xNy8mh9C7ueeBqkntAB7318UVhmipoVTb2539hmbw8wAZdM5i3TVwBftjuMHVw4eLTx2hbrwWvcPMmHiAKMi8yB6LRvuSETb",
|
||||
decoded: new Uint8Array([240, 174, 25, 146, 178, 1, 65, 114, 78, 167, 214, 199, 238, 215, 66, 181, 153, 16, 248, 83, 206, 238, 116, 78, 12, 151, 170, 44, 25, 232, 152, 58, 207, 90, 76, 167, 186, 226, 13, 74, 164, 39, 238, 215, 144, 27, 91, 22, 166, 121, 78, 103, 201, 14, 18, 69, 67, 11, 65, 107, 243, 98, 174, 139, 4, 99, 146, 130, 22, 158, 204, 209, 50, 167, 201, 83, 251, 65, 11, 49, 116, 156, 140, 55, 242, 205, 134, 235, 79, 240, 125, 88, 248, 1, 242, 212, 7, 26, 86, 45, 169, 93, 24, 169, 209, 232, 159, 218, 242, 114, 167, 192, 245, 12, 41, 211, 174, 233, 210, 226, 200, 162, 89, 57, 31, 17, 51, 43, 98, 216, 20, 14, 19, 99, 167, 138, 90, 69, 19, 58, 0, 90, 226, 117, 26, 30, 223, 173, 147, 212, 39, 90, 174, 93, 239, 59, 125, 120, 187, 36, 84, 22, 24, 91, 240, 156, 199, 238, 207, 47, 63, 24, 187, 221, 18, 99, 117, 59, 219, 52, 191, 224, 21, 140, 224, 55, 216, 201, 146, 93, 43, 14, 111, 23, 246, 231, 232, 145, 54, 81, 87, 43, 197, 210, 122, 56, 155, 69, 153, 98, 171, 30, 180, 131, 90, 241, 236, 175, 105, 172, 83, 183, 98, 142, 162])},
|
||||
{encoded: "EvQoY1tY3UrAMevLxXbYiURyDmMTtCJWiSSbYGmssizFcF7tU4AD86RLiYYHm8okU5ALUE1uz3DJBDKXeJ2psaBsjWfsuR2tVi9qdtey4jwd6WwNZ9wAkCwNFTyWZA4ZGgemyk84FTGndrSE4t3gEGTBBFLAQQU4bZCdJST125sTYhPYLmXqDyJyK47SHpoCMVNFdTBZG5ryBXZh5wR8jvgXbiZHn5hGiYpypcUM87VFqfFpSo6eqnmYJiiGzADfja5cRKtR8j8FUx9LeELYq6JH14rowwd51XHJgcKnL4RF1TLqZhjucw7yzaoyx8SzQLPN4Pj1YvWsyvAVBuA81iTf1jzbrR12aQQGwUmPcopgDnTMYLUuDFHsHZosTF11X9SDEJyhTPEct6DLkKtrFfvwR54p5Mf66WvSUTKqdFH1TWpd64nSeHRJSGBbXEvCRoxcwMaSHZTXZqFRRLySVZ8Brd1htTm7o7936Am1VjerWtrTahDz97phqVFp9strF1kpGuCukYTEoXSLtT9T8BPrHLSeysR4npPsLwPRGire9KNzmHupAtAunsS5KA895zkqkxmztLTy5JxeoQ5ekSbZQDrU5Y3ifUGMspdN41GWWbyyTa9KcoFQm6oEAvL15FKTDzPJ1CXzGbLCARkapa3hCBgm7JCkE6ifwmpCroQsieHdFXWbgy1icPJEAex5bdtW2P4mbPeRdm3jXw2HW9znw4nQiqWy2oXpHAGPGmKqhnPN6vsJ9s9mCGXujCM3donsyw8wUDVKfag3P1gB1EwPSeHuaAzfrgArAV9vNmqV1jdEVFEPcWgtqM1ZdSPX34XkF2aQBFQMfPpjFhKjTRAPh8YtaWZ1aaUFC8kEbyyYdQYUpZoWMc1uxFgFvwjTzie8SuJh9rgbKpaUYp7Nn3pKEmpwFF3YyxUzkt5JQjKZfiUKuVdQ1yKWQSzNmD5Wfekxo2Hnhuk8QuKuosxTxnmoeVz3dC8Qq4j7UQoHtf3wmMVdNuHrijhYspwEDX1HgJpiUF4QLxWwkHEUxv2HN4QELNgjqMbbdYwmfS1wX6s5F9UfAJkGf1wd2KZ",
|
||||
decoded: new Uint8Array([70, 66, 87, 43, 39, 149, 226, 198, 195, 32, 101, 145, 214, 2, 43, 224, 171, 114, 154, 127, 192, 232, 253, 174, 181, 49, 174, 61, 240, 86, 203, 65, 78, 244, 255, 30, 161, 156, 93, 165, 169, 147, 219, 103, 139, 29, 254, 81, 224, 90, 104, 29, 129, 75, 252, 182, 38, 203, 235, 87, 206, 51, 116, 191, 55, 35, 104, 231, 6, 50, 28, 205, 60, 145, 195, 158, 231, 176, 35, 136, 138, 154, 139, 173, 160, 176, 48, 111, 3, 86, 120, 240, 83, 242, 254, 250, 106, 203, 71, 219, 165, 190, 138, 0, 93, 230, 222, 120, 97, 166, 195, 182, 125, 81, 86, 230, 90, 86, 219, 114, 176, 201, 9, 115, 36, 62, 143, 20, 88, 253, 36, 215, 108, 9, 12, 191, 73, 48, 227, 238, 197, 110, 243, 185, 188, 115, 175, 135, 140, 10, 113, 39, 48, 2, 9, 60, 239, 151, 143, 93, 9, 215, 119, 227, 106, 254, 82, 172, 116, 181, 31, 105, 75, 37, 64, 181, 215, 92, 5, 96, 170, 93, 112, 11, 212, 7, 10, 86, 106, 104, 120, 195, 190, 125, 148, 209, 37, 224, 167, 248, 64, 84, 111, 54, 252, 128, 108, 244, 98, 14, 17, 205, 161, 217, 123, 14, 2, 91, 148, 171, 45, 196, 236, 41, 10, 80, 190, 148, 238, 72, 65, 15, 63, 42, 174, 72, 190, 100, 250, 249, 183, 17, 69, 63, 55, 62, 245, 101, 13, 240, 200, 183, 203, 86, 94, 71, 103, 23, 115, 91, 121, 136, 21, 85, 34, 70, 213, 167, 108, 50, 19, 8, 230, 224, 196, 107, 125, 209, 140, 92, 86, 253, 131, 70, 139, 164, 160, 38, 222, 108, 89, 20, 85, 35, 94, 102, 159, 140, 199, 232, 13, 91, 86, 148, 171, 149, 179, 42, 70, 1, 101, 184, 116, 127, 252, 71, 201, 175, 122, 216, 98, 1, 216, 41, 228, 251, 0, 87, 252, 210, 155, 16, 115, 212, 188, 66, 43, 214, 195, 138, 203, 69, 143, 225, 185, 1, 91, 141, 210, 127, 127, 4, 179, 211, 31, 86, 60, 109, 54, 106, 32, 244, 178, 239, 80, 206, 19, 250, 86, 219, 133, 86, 132, 42, 232, 158, 252, 154, 220, 132, 238, 86, 118, 225, 134, 181, 11, 234, 141, 253, 107, 188, 161, 58, 132, 156, 105, 225, 88, 102, 36, 129, 168, 117, 126, 171, 150, 53, 136, 118, 121, 239, 239, 228, 233, 67, 216, 242, 108, 148, 134, 165, 172, 85, 97, 37, 183, 120, 62, 22, 45, 188, 128, 117, 28, 159, 94, 232, 54, 137, 187, 55, 86, 16, 234, 19, 247, 37, 188, 71, 47, 136, 86, 238, 153, 25, 14, 44, 25, 159, 219, 102, 96, 183, 237, 145, 252, 82, 141, 220, 150, 71, 47, 238, 86, 35, 193, 2, 222, 246, 244, 245, 189, 25, 248, 99, 246, 66, 222, 39, 123, 19, 84, 178, 5, 2, 120, 152, 232, 207, 1, 232, 102, 40, 40, 100, 183, 220, 135, 153, 245, 49, 50, 152, 214, 69, 47, 215, 150, 150, 80, 31, 57, 121, 49, 235, 236, 34, 237, 211, 23, 188, 116, 35, 120, 185, 94, 69, 138, 199, 179, 96, 220, 176, 67, 142, 13, 185, 198, 139, 3, 161, 203, 193, 163, 92, 250, 166, 162, 71, 243, 95, 112, 174, 13, 86, 12, 237, 44, 94, 0, 183, 175, 120, 123, 52, 215, 238, 36, 28, 208, 164, 237, 242, 163, 93, 40, 232, 233, 79, 145, 124, 59, 13, 7, 216, 190, 105, 178, 165, 176, 230, 185, 250, 9, 101, 255, 18, 30, 247, 11, 240, 206, 176, 86, 38, 63, 95, 169, 187, 247, 154, 119, 162, 247, 115, 56, 237, 201, 94, 220, 84, 59, 118, 223, 84, 184, 27, 44, 145, 38, 65, 188, 66, 83, 230, 44, 105, 123, 140, 44, 34, 219, 214, 41, 6, 247, 156, 36, 21, 235, 199, 128, 28, 47, 0, 61, 173, 99, 2, 98, 138, 67, 24, 83, 110, 111, 60, 220, 60, 164, 110, 16, 149, 249, 134, 124, 110, 44, 3, 77, 204, 63, 177, 229, 147, 138, 221, 248, 172, 114, 216, 253, 86, 252, 28, 246, 45, 225, 64, 4, 206, 133, 26, 212, 138, 137, 113, 53, 47, 178, 116, 171, 236, 28, 193, 204, 254, 57, 193, 206, 200, 28, 194, 136, 149, 92, 232, 234, 144, 83, 199, 193, 80, 202, 200, 167, 45, 38, 245, 175, 167, 86, 96, 232, 166, 55, 110, 241, 199, 41, 161, 180, 213, 37, 222, 28, 183, 63, 187, 194, 27, 201, 231, 224, 22, 108, 169, 169, 27, 100, 220, 41, 173, 131, 104, 179, 212, 216, 153, 110, 116, 88])},
|
||||
{encoded: "NBhiHSJQg8qyWuzE9FjfMiGAoh2cNDLq3RYhNzcpVwFj3KqQPt7hmPZYBtZ8KDkca3UZMqLkRCYTALaMBiQhamtqyi2XGmnxV1y9QsmK12SE9PjzgJTPYa6ZHXqrC66FVDYVRSz3VUzVaEK8rFfj7B9J9fRDWsRfrS5oi8kMGbqTJm6N1whSifThAhfJNn",
|
||||
decoded: new Uint8Array([189, 37, 9, 87, 67, 127, 89, 190, 173, 80, 195, 75, 7, 158, 84, 103, 161, 136, 239, 111, 72, 17, 47, 52, 248, 37, 49, 73, 224, 149, 245, 222, 29, 255, 63, 34, 144, 132, 86, 86, 6, 194, 252, 108, 16, 96, 21, 33, 8, 191, 136, 207, 148, 238, 113, 51, 70, 142, 56, 70, 112, 166, 126, 1, 130, 238, 205, 28, 86, 219, 198, 1, 138, 91, 34, 228, 96, 90, 245, 216, 1, 21, 146, 73, 25, 122, 227, 38, 19, 140, 214, 32, 197, 173, 21, 168, 126, 102, 156, 119, 246, 226, 172, 35, 170, 11, 214, 43, 182, 179, 224, 154, 108, 252, 169, 112, 155, 173, 153, 16, 80, 144, 20, 46, 229, 247, 125, 112, 49, 180, 244, 40, 143, 141, 116, 151, 129, 18, 99])},
|
||||
{encoded: "Fi2PtGTr7x3Sdmd4Q6zgw8jY3cCLDoYPuptoSozGNgG1Jz1tmj9RjgRXgj1Ct4FhYoFFHgN6xgAHzEq8CrRTsucutuw1cZtg7ea1n2JR6PwYix6kCTymGFgsU4xd8482t2q3asvyWxLWTvUheESMjTq1ZdMbEaq3rfTcWqdRYyyQJmnGVGYQapb7NGq8caeJjcN9x7heGCCwhhtEiAoLBF4uf9EErzLvYQG7dCvBfJygCVrBzBozAzvAmC6zNnFg3HYhCcFbgP1cXcd6ot8S4Uzv5bXFSALxGnYJu56tariJyto28JzLTpAVA7Be113XVtAJRFKEEMqk9TEBT4NoGs3pbPeircLUk6rPdLAUBEHmGMtqcaUKKuUGJA8Q3xHs3nwS971QQHMe5HWet9qGup8AD79qBYfMiK5PkUDwF",
|
||||
decoded: new Uint8Array([202, 150, 122, 132, 16, 90, 75, 54, 250, 150, 167, 221, 128, 141, 62, 211, 245, 12, 5, 235, 213, 108, 237, 171, 206, 98, 21, 195, 224, 193, 6, 80, 125, 197, 79, 45, 162, 213, 45, 119, 3, 77, 49, 18, 191, 202, 12, 65, 26, 222, 15, 234, 219, 114, 152, 127, 173, 8, 150, 151, 106, 214, 235, 55, 13, 54, 87, 22, 230, 198, 79, 218, 113, 31, 115, 56, 72, 24, 174, 220, 239, 121, 190, 224, 99, 4, 142, 10, 183, 29, 11, 219, 8, 212, 98, 106, 177, 216, 187, 21, 203, 235, 27, 226, 31, 27, 132, 218, 94, 92, 23, 231, 226, 105, 140, 75, 178, 55, 225, 229, 16, 111, 33, 189, 103, 67, 59, 70, 224, 129, 29, 46, 105, 20, 186, 109, 148, 93, 35, 129, 244, 117, 74, 176, 37, 174, 222, 92, 14, 95, 9, 176, 7, 119, 99, 49, 33, 126, 222, 232, 38, 24, 165, 157, 60, 173, 246, 159, 71, 63, 184, 76, 145, 74, 26, 221, 152, 68, 123, 194, 164, 90, 168, 61, 100, 51, 35, 3, 134, 102, 63, 255, 71, 199, 1, 146, 64, 97, 55, 122, 44, 72, 205, 169, 94, 104, 247, 37, 196, 151, 187, 239, 126, 223, 191, 194, 89, 251, 221, 32, 109, 128, 166, 83, 156, 186, 86, 198, 100, 215, 51, 77, 173, 234, 241, 91, 24, 231, 162, 117, 29, 72, 145, 130, 23, 154, 104, 62, 180, 80, 185, 179, 133, 252, 249, 94, 133, 68, 231, 21, 110, 222, 89, 37, 60, 5, 194, 197, 209, 187, 253, 48, 138, 105, 204, 110, 206, 179, 217, 111, 128, 156, 90, 75, 174, 131, 156, 35, 87, 227, 9, 245, 140, 254, 92, 64, 45, 124, 65, 177, 67, 231, 251, 46, 176, 106, 10, 33, 106, 112, 162])},
|
||||
{encoded: "fTAFzVPynQGszGEiH92LLj5kea3PvaZssHo23xrwbAHDM4qYvjeNF9NQRYS4UoPkyhxpDS36HNdh5PUiLe4xNnySyvVoK6wiDWVP6YerY6cxUntnjoHieaC6FM2pngHdCK6XVhWXtrBgoayJZwHPmSypZtk8T4S5yAzczpriXuJrpXVWapiT1JyNGkczotBHkrhRCYq8CKHRDAadxHFdEbGv9WDThxt8mdgFpTJAds2mUoGb5onMjofN3d7fePRUZXRLhwrehBrgUcfM9U5xe12AyNXJsTCEzwi5S37AH2b8FDuB8UcuGPRBVGF2txM3YLRmC1afjJgY1iYSsHjVH64vTq1PcoJwk2drDyJwv3Gt3EUgjRjJmDzLSkExEDsP2CJ2FiVcjtugwVFXpfrHxy8HTivGwe7sMtZL1TU9iS5cuk8ze7ExvVZgKgt2UAJ5yZNX74MJ1FiFaNNxAoLbj7LWaWRtCLr7nvCqQhP4n7bS9fTZL6zGdNorjLPkSs66CRmXb3hHBvPe833VNdtjaDd9jESDHbxDBKLdAwj2wu9ZVrPAqgBCcPbwL9HAmGsz67bX2qYqhzQN7X9HxFKPwiDo4AGCee5DRr4wMwajEM6YdKmXEvfaAJ45bjyQGbL4cjRyRjvcBxnnJ5MenToGAi1EzChk8Q7HDeVGofW616jHsmEKDx1H8yKgk397m127enJnwmaACmF78ZABjFkhZ4waxHsxzsDrQjWReCdxpHw5x4ge",
|
||||
decoded: new Uint8Array([24, 101, 212, 128, 238, 115, 79, 46, 47, 23, 29, 170, 145, 233, 169, 144, 53, 35, 97, 143, 227, 26, 15, 65, 144, 177, 62, 86, 253, 13, 199, 153, 173, 194, 255, 0, 191, 226, 88, 60, 253, 235, 159, 50, 167, 60, 226, 247, 6, 115, 135, 73, 15, 248, 248, 160, 34, 29, 213, 19, 25, 173, 123, 220, 77, 164, 48, 30, 207, 218, 182, 245, 141, 225, 152, 137, 209, 205, 9, 110, 153, 157, 218, 124, 85, 199, 108, 93, 135, 96, 2, 253, 93, 104, 247, 99, 24, 68, 104, 22, 1, 193, 169, 5, 120, 142, 91, 139, 98, 141, 205, 115, 23, 151, 76, 2, 201, 75, 189, 239, 119, 9, 109, 190, 72, 232, 124, 168, 102, 184, 88, 104, 94, 55, 197, 96, 95, 81, 159, 206, 63, 191, 233, 17, 206, 49, 32, 45, 92, 149, 184, 144, 205, 187, 214, 195, 248, 139, 23, 70, 211, 51, 76, 19, 64, 211, 196, 127, 76, 165, 168, 47, 115, 227, 196, 104, 246, 192, 214, 83, 174, 218, 100, 178, 192, 213, 120, 37, 17, 252, 54, 207, 8, 170, 146, 86, 64, 196, 243, 169, 119, 116, 176, 47, 46, 118, 255, 148, 124, 155, 246, 251, 10, 202, 12, 253, 7, 182, 205, 66, 97, 160, 46, 181, 221, 0, 211, 201, 123, 107, 72, 126, 84, 4, 49, 133, 242, 91, 86, 113, 204, 114, 203, 204, 128, 23, 244, 210, 152, 162, 254, 3, 180, 193, 235, 38, 236, 224, 213, 11, 243, 128, 211, 41, 251, 191, 16, 45, 77, 80, 90, 72, 17, 28, 27, 185, 101, 226, 14, 66, 196, 255, 180, 238, 187, 42, 40, 125, 99, 198, 202, 147, 94, 5, 86, 163, 35, 58, 18, 175, 20, 97, 250, 49, 47, 32, 172, 15, 212, 229, 208, 37, 50, 146, 147, 200, 89, 219, 118, 160, 239, 205, 32, 224, 175, 8, 62, 80, 201, 248, 170, 254, 28, 47, 172, 230, 41, 196, 34, 118, 22, 48, 113, 47, 252, 234, 237, 226, 83, 36, 220, 125, 119, 161, 118, 19, 250, 88, 186, 138, 172, 92, 93, 98, 254, 125, 105, 47, 121, 37, 223, 162, 114, 247, 63, 73, 121, 153, 78, 172, 56, 135, 149, 181, 141, 64, 194, 32, 0, 172, 105, 228, 126, 113, 252, 175, 219, 230, 202, 24, 187, 26, 134, 162, 182, 132, 176, 59, 170, 8, 73, 130, 51, 206, 117, 255, 44, 239, 178, 178, 69, 217, 123, 42, 152, 116, 180, 100, 213, 12, 167, 137, 240, 78, 137, 214, 47, 220, 103, 109, 226, 67, 34, 250, 170, 125, 78, 45, 23, 59, 4, 38, 18, 217, 178, 124, 184, 95, 107, 232, 13, 174, 105, 32, 3, 248, 252, 242, 147, 13, 129, 102, 130, 196, 158, 222, 36, 139, 105, 243, 232, 247, 201, 84, 80, 103, 248, 152, 86, 46, 145, 183, 205, 138, 240, 63, 207, 162, 22, 253, 79, 189, 203, 110, 203, 160, 222, 95, 20, 36, 218, 123, 39, 86, 59, 32, 150, 8, 239, 13, 99, 81, 33, 121, 59, 204, 2, 187, 159, 123, 154, 118, 184, 34, 27, 183, 51, 136, 203, 230, 204, 59, 183, 176, 9, 49, 99, 206, 109, 215, 127])},
|
||||
{encoded: "V3QuWbhehf7sBYbhJDv4RgkQNwvbGcgAkXPxbXHyQL9tZ9WunMV1Ap3kX9cNVGhptxZo45PTwbrbeZ2dUKpK3zTthP23nim8a6XAe6fXMxHKSTVrfJ68SB5wPVZJen5ZN23ZQK3Q2SnkzDGHLrhyfaHjEXciSPN8LdXRLSEZ4MM7Dtv7wpqdh57zK3QXex7MZ183NRwUiVZLBGQNykf3zMTrTYBaG59KTQcc6WpDTaYBxhhzrGEPju5keNjH96865YCdSbwWoAyWknaWoo8q4BKEgQvsYUUFE4brb4Am9FXf2Z2GhErALd3388qvvcPzurqQqaLGdBWYPWzz5ZnpELFGcV8",
|
||||
decoded: new Uint8Array([203, 201, 142, 31, 70, 207, 64, 200, 10, 39, 92, 165, 66, 177, 175, 175, 35, 3, 17, 236, 253, 171, 244, 187, 92, 66, 185, 178, 101, 128, 168, 149, 70, 167, 243, 200, 216, 197, 1, 133, 87, 82, 180, 186, 145, 238, 224, 147, 231, 234, 118, 159, 40, 249, 98, 201, 66, 38, 165, 70, 224, 205, 147, 182, 187, 157, 103, 198, 15, 111, 252, 18, 179, 20, 72, 248, 48, 108, 191, 130, 96, 130, 45, 19, 101, 93, 25, 228, 124, 194, 202, 206, 242, 107, 98, 38, 168, 195, 111, 76, 136, 132, 246, 103, 213, 186, 47, 226, 173, 10, 11, 222, 247, 221, 253, 139, 64, 193, 253, 248, 138, 128, 78, 174, 132, 42, 252, 161, 18, 59, 202, 139, 49, 202, 25, 222, 135, 81, 21, 127, 208, 247, 156, 242, 249, 223, 127, 186, 236, 61, 45, 18, 123, 179, 65, 178, 163, 119, 78, 255, 187, 20, 238, 46, 140, 210, 229, 147, 184, 57, 194, 187, 90, 106, 226, 128, 85, 118, 255, 208, 90, 196, 170, 236, 138, 172, 128, 185, 230, 152, 173, 243, 190, 53, 131, 55, 240, 0, 224, 232, 140, 241, 128, 229, 228, 160, 210, 78, 211, 125, 206, 54, 160, 30, 79, 130, 136, 170, 106, 144, 75, 80, 31, 157, 205, 48, 147, 246, 62, 51, 43, 253, 28, 182, 182, 229, 77, 37, 232, 125, 139, 83, 19, 39, 141, 186, 66, 79, 105, 16, 25, 69, 224, 35])},
|
||||
{encoded: "Epj5YXSMT4bR1TPALM6jbbE83k6bzv26pdSj274g4VQYb1kuuBmsP5vdgFLzd7n2ub3UGVGU5yaXgqgKCaaFDjQMdxG969LPgEoiBp5D4pWR1fq4KuTf1umqVxcPMVRaF9FxWZzbs8YT5fgt2sW1QMKQz2FWzTqKzjDAHebBK6fvZnZNM5nvYjcmL4xsc4WAd546fBCZzdyhiyKwWeen87VQxPV7y2Fr7GjceRRD5XhBAvXWs74RbqQEFdevqVmwuEVPu9vfKfKt5oYfBfHnT6Jn9Np2e2CaR8gvhv7gLHqb5MW1dFfR89Pza59s5C6TMUB3NXPb5PoqgBAWyK7MNM98kSiqCx5aGPDQFKLajTwzVoZTZw3w6dGYkqNBE8dfR1NGFZbyXhbBsqP786Ye7QtrYrxYwXMR3B2Jzgt8wv7BGoU6macien83LHCzZFFLUSBMogxqpkvf5SEmyYFXxgqu3CPXgUimYi454dYLRGzuTYiyuHVkn5gDiHqMVvBFtovBsJEmgHCXa3e3zU4TiwQKzNKxhbkPEZGYYxvQYLU2vrKeb1Qjkn5zW2edv3918rkNkhTAbg437VMyLUSzfzZMkSkg7Fhc8mDKbDdB24ZoTeddKtE5U7Wt38vFcVUKxkzC9wxF8mGVapTi3Ftokn7qEuKuYCHiUtHupCVoFLkGonFv23AUR9FdwryDnmEey8dKfgjGbfJGc7jbbsBYMi3xApFkTnvWNmfwme6qBGApEq6yWxfvQT1xYaf1kciS195LzQEyDEPsFNSAiJkAE4zqqpvrxScVFun4dDWKPfnKmd6RF7Popzj8AbVsgXLyHGAgzMDttE9nWhQR8a2QtcXLy6JxcZZmEvFgxB2iNenLffuEBss44HRK85ZFjbcqR9w8getBUv7EfK9P4FRsDU4XRVjZ1Lpb5ec2j55i1LB8TGuV9ZcvHp7QVaA1YMmbhDUge2Kc6qS7eSjN7ru8xPiaubEsx397nxLewpFw2vYQ5FToSV54HpkfWf35gHwQiMR56bJ5fpvuQcJcXzfgHvP3AnaSw85xG1RKw4v7p7NJ6gyoFcXhbzhnXLuRv1uRkb4w1pr4meWS7aDWjEvqZFCBnjpwU7isBDSLELspcwwXdqpud17K81MuEdRw64kqbeH8Tx1HJan6aM8oLieJMNgUFpXyCT4Lr8Lp48dPZKdxaQKmPtiGB1xtD6smrHcbPrEbrMPdcL7otCuKKGYkjrTUavGB9ytAZ2XNH9U9WKscMNEfGV2HnojP9TKWxPTU4G7qbsUo3N1YV6iEgGaL5NS4UE8rvnRJJxjLXDyRFjsJpFn7cpRAoKsEdgjRz25PHcck6B44n2jjDrX",
|
||||
decoded: new Uint8Array([121, 178, 249, 125, 231, 133, 160, 158, 177, 231, 58, 168, 78, 108, 170, 219, 66, 91, 214, 228, 179, 47, 212, 22, 180, 166, 141, 34, 68, 88, 168, 245, 241, 150, 249, 6, 72, 42, 253, 80, 131, 123, 77, 198, 129, 14, 14, 179, 217, 238, 143, 8, 199, 66, 227, 125, 20, 149, 201, 24, 253, 119, 199, 245, 32, 47, 75, 145, 165, 153, 191, 21, 18, 181, 32, 61, 195, 162, 210, 107, 82, 33, 219, 112, 45, 136, 155, 5, 115, 136, 76, 73, 174, 197, 85, 101, 103, 199, 217, 232, 143, 78, 86, 230, 195, 169, 196, 156, 56, 139, 227, 120, 182, 221, 131, 137, 90, 23, 64, 28, 162, 164, 14, 223, 72, 51, 237, 48, 215, 86, 63, 134, 5, 148, 212, 47, 129, 52, 27, 97, 193, 64, 167, 233, 243, 196, 207, 130, 50, 5, 240, 56, 16, 182, 16, 189, 7, 132, 91, 172, 175, 182, 162, 85, 195, 205, 193, 29, 41, 115, 202, 153, 168, 254, 187, 136, 31, 164, 254, 40, 50, 112, 59, 132, 33, 248, 251, 198, 29, 216, 91, 95, 167, 31, 152, 57, 36, 250, 125, 234, 125, 163, 244, 146, 183, 74, 227, 195, 151, 36, 192, 122, 1, 207, 137, 118, 32, 208, 158, 176, 117, 235, 68, 215, 154, 134, 222, 23, 131, 136, 103, 47, 240, 208, 211, 165, 45, 212, 173, 74, 157, 199, 74, 87, 38, 253, 54, 248, 105, 159, 100, 24, 82, 68, 156, 216, 156, 61, 130, 70, 154, 31, 179, 90, 48, 118, 18, 150, 174, 157, 5, 2, 110, 78, 85, 7, 254, 72, 15, 31, 128, 184, 73, 95, 143, 213, 244, 46, 81, 173, 81, 17, 124, 143, 65, 85, 169, 240, 10, 24, 204, 172, 203, 107, 251, 77, 61, 212, 203, 28, 214, 12, 153, 64, 236, 101, 20, 160, 53, 150, 164, 230, 64, 151, 197, 54, 132, 75, 15, 53, 131, 210, 115, 188, 228, 174, 189, 226, 235, 236, 9, 175, 68, 162, 111, 209, 208, 230, 2, 94, 137, 245, 10, 69, 3, 228, 133, 150, 209, 181, 55, 94, 29, 236, 25, 108, 205, 107, 19, 52, 239, 209, 21, 228, 43, 74, 22, 153, 183, 75, 12, 251, 64, 10, 222, 32, 179, 44, 10, 79, 146, 80, 236, 44, 93, 132, 39, 172, 178, 41, 42, 132, 168, 61, 178, 137, 57, 46, 102, 29, 32, 39, 207, 25, 68, 72, 16, 41, 32, 234, 88, 197, 7, 139, 97, 22, 126, 168, 9, 65, 183, 40, 30, 228, 228, 215, 113, 75, 37, 143, 107, 174, 195, 190, 193, 131, 141, 225, 194, 29, 164, 255, 117, 242, 126, 46, 193, 198, 40, 2, 210, 34, 221, 137, 165, 158, 12, 171, 155, 25, 108, 86, 25, 241, 182, 66, 205, 228, 108, 170, 251, 162, 103, 166, 70, 78, 211, 12, 147, 117, 35, 178, 152, 242, 84, 137, 179, 17, 1, 191, 53, 4, 247, 185, 240, 171, 181, 15, 252, 106, 112, 97, 30, 155, 110, 84, 23, 209, 110, 244, 71, 28, 249, 63, 190, 68, 24, 184, 148, 40, 54, 51, 197, 50, 18, 58, 217, 140, 47, 85, 196, 107, 252, 69, 62, 211, 92, 99, 39, 85, 185, 145, 54, 98, 52, 69, 119, 31, 37, 6, 176, 249, 236, 108, 125, 48, 5, 184, 69, 80, 125, 59, 240, 141, 6, 124, 213, 54, 234, 111, 138, 130, 174, 118, 26, 25, 186, 82, 193, 200, 106, 133, 244, 146, 10, 118, 24, 212, 16, 56, 104, 83, 72, 122, 2, 46, 224, 245, 233, 116, 77, 245, 118, 13, 79, 38, 183, 219, 117, 214, 198, 79, 241, 131, 195, 116, 163, 226, 221, 131, 41, 186, 176, 130, 89, 6, 89, 61, 197, 209, 108, 241, 176, 38, 28, 109, 182, 27, 138, 210, 137, 58, 58, 224, 53, 244, 36, 116, 245, 12, 254, 25, 82, 164, 59, 79, 147, 237, 236, 164, 60, 208, 121, 147, 71, 20, 177, 202, 116, 69, 0, 25, 213, 39, 144, 168, 27, 82, 43, 64, 10, 58, 78, 169, 246, 104, 216, 175, 157, 117, 124, 173, 96, 10, 51, 176, 154, 141, 144, 143, 238, 15, 180, 117, 132, 148, 144, 141, 158, 146, 21, 113, 111, 212, 40, 96, 123, 152, 94, 247, 37, 44, 61, 128, 130, 83, 255, 55, 170, 25, 112, 73, 190, 210, 51, 12, 93, 158, 142, 49, 240, 24, 180, 223, 212, 195, 3, 232, 24, 212, 65, 191, 223, 221, 183, 191, 91, 117, 199, 81, 224, 188, 141, 67, 45, 28, 147, 250, 158, 131, 205, 207, 81, 7, 159, 62, 202, 6, 205, 53, 44, 56, 144, 144, 223, 216, 76, 30, 70, 123, 209, 101, 144, 123, 193, 29, 108, 213, 173, 25, 37, 143, 189, 60, 20, 182, 102, 247, 4, 141, 78, 198, 253, 110, 209, 57, 214, 252, 98, 104, 56, 33, 177, 168, 156, 30, 236, 150, 223, 211, 124, 89, 198, 16, 79, 1, 101, 163, 149, 101, 179, 237, 27, 83, 248, 146, 206, 218, 49, 86, 16, 191, 105, 185, 104, 237, 238, 57, 124, 145, 84, 170, 116, 228, 154, 2, 45, 204, 156, 115, 241, 134, 19, 62, 37, 225, 164, 186, 1, 84, 185, 207, 136, 16, 52, 113, 92, 69, 191, 53, 236, 93, 37, 159, 227, 108, 149, 116, 201, 73, 30, 106, 65, 134, 188, 163, 111, 20, 203, 83, 58, 108, 26, 156, 160, 126, 233, 150, 235, 70, 22, 153, 97, 27, 138, 65, 209, 174, 201, 175, 247, 185, 7, 131, 194, 99, 216, 157, 146, 181, 168, 42, 250, 33, 179, 201, 197, 50, 23, 169, 174, 72, 199, 8, 177, 43, 96, 75, 137, 140, 3, 166, 208, 35, 46, 193, 243, 148, 231, 164, 36, 99, 93, 110, 111, 203, 98, 242, 34, 143, 163, 213, 223, 169, 120])},
|
||||
{encoded: "RwovyJvbKKjcrEgvJ1kkocADEpM3urKjn31jhTgko1dcwkqyAsUKCu1As9dCRhB8HkGNAhg7MF5saVr2p7M4x7mbZEdWASbcK1HDGEe9andYRu1EAeqLJzVGcWZeM4mMLj3qHTPwN8132aasCjwSoZRaEjANmDqpS1PQYppjF5ECnh7Assj2eKGufCPeYEzUca34Y2gJHwajP9cH7xGQoHEc3eEXTDh6baPYc2ffHk9AibEQLMjgQbhqAg61o354U7b3hMt2mrGD5fFaFqNu6Xg331mqtVB9E1WkV2hVfcwnEBys2ajKEaw1pSPzGoNRwGCz4tV1miBP9p94sz53AdxXFMuDLT5EB7s4srhsKhi35q8HeGb366pyPuLRXrHAvWHg6r3rhLuAdGhZmCucZSy4tisZCuuAjZHBAaMKsxkXP9wwNPgAedDmPxsdf2YQHAkgJyxhKczdpKfvLDjfJx5KVub13uUfrULbrdQwNfai7SNihXr9nUJHPucxCpoKDdK9oFjvwehn4phAicFwJvjUx7d7AzG1XUueXfzRM6i3ADB3CALD29N5huiLQ6Bs5eyCPH8wu9Tt5ZdZABMPc6dxWJFgm7gn3VkZYaPdWhcyjF9uWBjawhZiVWoD4iQRRDgG4bvKxaKzsJKMh9cHJfNdhHMp3ch6ps1Zvkuk8tPmjaUwiipnGMk4yGHQyWCG3fQSGQxkY9dkZNnaRmQKVh44EDeRboA5p6cy4KjKLmjMZaJfeb1Y8Jrok8XaJYh1LJJvPqqHFwfpfid9dtBGCXMnhmSo5VASCaqiPKDU4vTUVDfgu5cYjhFujaZtj423ynXnRTTuZXEFQuGvJMvQqtRhuWxmGmzMKgZ5HkFcYN6gReaAqEgskMhRqm7m8Kmhb5ZkR6WdkKsLD9XvqxmipoqCo9b7ZPimnAizDzjiy",
|
||||
decoded: new Uint8Array([209, 131, 21, 37, 220, 196, 43, 196, 53, 121, 161, 90, 188, 147, 134, 104, 54, 173, 119, 30, 94, 22, 130, 177, 96, 70, 115, 12, 203, 57, 166, 8, 217, 150, 16, 206, 30, 160, 189, 0, 243, 121, 234, 166, 225, 37, 15, 17, 149, 35, 251, 127, 69, 232, 255, 204, 71, 162, 25, 182, 17, 135, 130, 244, 58, 222, 91, 153, 170, 39, 192, 229, 147, 212, 234, 22, 212, 59, 198, 84, 15, 218, 127, 33, 75, 85, 234, 112, 60, 172, 4, 9, 15, 162, 153, 186, 126, 219, 104, 21, 150, 186, 172, 79, 60, 90, 122, 71, 0, 22, 118, 131, 238, 100, 22, 31, 164, 14, 181, 25, 250, 153, 144, 48, 115, 45, 251, 13, 58, 180, 226, 14, 104, 61, 72, 152, 45, 84, 42, 220, 120, 87, 54, 188, 14, 176, 122, 165, 110, 205, 94, 198, 8, 116, 9, 129, 156, 207, 205, 202, 186, 121, 96, 57, 214, 16, 237, 81, 243, 15, 157, 155, 154, 251, 204, 224, 117, 59, 162, 255, 105, 186, 99, 49, 167, 6, 86, 14, 197, 138, 188, 23, 14, 25, 183, 95, 118, 219, 219, 73, 62, 32, 58, 188, 141, 166, 94, 46, 150, 203, 31, 252, 33, 216, 112, 53, 93, 178, 1, 253, 47, 167, 175, 153, 139, 10, 220, 231, 96, 137, 47, 95, 10, 49, 224, 165, 93, 155, 212, 154, 77, 146, 80, 252, 190, 87, 102, 170, 205, 63, 195, 76, 9, 254, 232, 56, 72, 135, 197, 222, 226, 73, 234, 247, 236, 29, 0, 0, 211, 53, 228, 3, 181, 87, 133, 26, 61, 86, 85, 89, 167, 179, 63, 162, 190, 210, 105, 2, 207, 5, 15, 71, 100, 128, 199, 150, 126, 40, 24, 99, 88, 233, 139, 243, 19, 223, 210, 66, 18, 198, 198, 128, 247, 114, 117, 98, 239, 35, 101, 83, 254, 197, 105, 81, 220, 241, 82, 7, 56, 28, 112, 149, 91, 15, 201, 235, 241, 72, 103, 28, 224, 209, 7, 203, 91, 255, 53, 183, 174, 176, 135, 156, 10, 250, 62, 31, 7, 5, 167, 126, 28, 60, 221, 35, 204, 101, 201, 108, 177, 52, 162, 183, 75, 253, 239, 83, 236, 181, 28, 86, 201, 233, 150, 244, 169, 55, 95, 82, 174, 40, 48, 12, 224, 186, 104, 132, 251, 23, 96, 174, 251, 245, 106, 200, 136, 82, 184, 0, 146, 209, 80, 170, 5, 45, 244, 226, 137, 215, 173, 230, 40, 251, 108, 162, 226, 158, 7, 242, 140, 169, 199, 215, 37, 51, 120, 96, 163, 203, 68, 58, 42, 35, 102, 169, 35, 169, 232, 196, 9, 158, 145, 224, 24, 182, 216, 125, 27, 11, 227, 146, 160, 187, 74, 39, 62, 1, 129, 117, 3, 221, 171, 238, 99, 132, 194, 75, 93, 244, 6, 179, 58, 50, 175, 241, 209, 54, 165, 131, 156, 43, 251, 182, 145, 0, 18, 242, 64, 72, 146, 10, 116, 79, 232, 212, 113, 114, 101, 206, 182, 158, 158, 225, 215, 103, 214, 197, 227, 238, 206, 100, 51, 17, 223, 17, 31, 68, 147, 13, 154, 63, 220, 202, 197, 147, 52, 198, 231, 127, 177, 48, 95, 0, 225, 11, 241, 1, 178, 49, 14, 111, 128, 111, 41, 28, 46, 222, 101, 82, 64, 96, 95, 210, 83, 35, 188, 0, 179, 88, 140, 233, 186, 103, 118, 37, 221, 182, 231, 42, 223, 104, 58, 182, 204, 96, 66, 171, 235, 231, 121, 52, 208, 0, 40, 61, 227, 63, 194, 242, 60, 206, 141, 75, 29, 3, 167, 251, 185, 97, 242, 27, 79, 149, 122, 21, 194, 116, 14, 166, 85, 253, 127, 161, 170, 180, 50, 211, 185, 90, 219, 182, 88, 190, 94, 45, 107, 245, 187, 157, 202, 150, 209, 19, 227, 250, 9, 83, 170, 214, 120, 188, 44, 26, 53, 151, 234, 108, 131, 229, 62, 230, 74, 150, 111, 246, 142, 137, 83, 182, 89, 44, 193, 235, 94, 235, 27, 37, 149, 69, 182, 208, 58, 163, 98, 235, 73, 114])},
|
||||
{encoded: "6v3f7x2S1sbAoDEbgVUvo57LuZUC4mhKjKqxWkqzJFcMKDDEcScYfHmNK7uv1A6KnMoa9V2jk9XBjkKPteLdMPX7ArVup7tT3MsXp5mHPz5rVRCrvVLQ8pU7k1WLitvmPJP5Wqg7FRykNdydJ4Y19SxawYYs5Pkzm6FC6c34qRJyHX1hZYNGgYgWAP4EUhurW7qVZvUNQabwhw155HtRBJCzfEp7GARfeYRah22Cwas9iJxuTUZwPQjqZRXYq9irC7yUiv5XBU8vFRRP97zQUCrbU8Z2iHjNHAjTjZZsAGreVx9JGW4LsCq5hkFoPXb5BQyyxVUXZ9JbJApos9gSChPW9g4aUV8QKZZVr6Tp1nXHnG3y8t2UUqkJzTFpSWXzD4ycAW7g72q75Kd6eSr2WYHdMNTfjePoZqTvvJD4CtkukXpCvysNahaPhLgav3UKznqAtxwdMs",
|
||||
decoded: new Uint8Array([202, 121, 73, 44, 100, 224, 119, 223, 212, 96, 17, 78, 67, 208, 85, 129, 152, 14, 84, 23, 73, 164, 85, 67, 218, 128, 68, 240, 14, 255, 151, 247, 146, 164, 125, 141, 17, 125, 17, 227, 37, 69, 23, 106, 179, 179, 117, 181, 223, 111, 25, 248, 205, 178, 51, 13, 210, 18, 102, 4, 137, 113, 109, 218, 172, 43, 230, 182, 211, 241, 103, 69, 163, 57, 235, 105, 123, 108, 213, 129, 253, 6, 11, 34, 98, 135, 10, 188, 43, 109, 252, 19, 246, 25, 4, 80, 206, 72, 125, 154, 11, 76, 59, 1, 176, 9, 147, 30, 39, 51, 155, 61, 143, 218, 186, 193, 139, 94, 28, 38, 38, 240, 160, 21, 157, 166, 156, 99, 186, 159, 140, 235, 199, 82, 69, 0, 105, 80, 2, 75, 184, 191, 149, 30, 77, 34, 159, 171, 111, 155, 63, 162, 136, 49, 64, 234, 105, 208, 4, 152, 68, 55, 174, 19, 38, 50, 209, 21, 115, 246, 215, 80, 196, 113, 164, 130, 178, 25, 211, 187, 96, 237, 242, 113, 223, 43, 168, 62, 103, 88, 118, 59, 245, 152, 35, 57, 215, 135, 251, 224, 222, 216, 27, 182, 194, 218, 196, 12, 200, 189, 3, 225, 196, 44, 194, 190, 54, 24, 198, 106, 35, 137, 242, 101, 230, 5, 35, 136, 90, 29, 61, 233, 4, 40, 50, 249, 135, 49, 252, 227, 132, 116, 217, 251, 88, 104, 115, 244, 32, 102, 46, 212, 118, 252, 118, 74, 25, 33, 98, 147, 129, 170, 199, 56, 196, 114, 205, 25, 118, 179, 11, 153, 151, 119, 136, 97, 29, 87, 51, 162, 205, 240, 60, 111, 208, 219, 64, 34, 139, 158, 115, 35, 175, 141, 115, 168, 59, 62, 41, 169, 221, 48, 27, 4, 14, 21, 19, 14, 171, 143, 103, 142, 218, 132, 255, 53, 107, 247, 126, 169, 25, 209, 217, 208, 123, 5, 143, 236, 109, 59, 191, 173, 234, 6, 202])},
|
||||
{encoded: "EopPFQVM9PQLSDoijfH6GnAtDqneTmt6Mfhv22vFSvh1r3DL7ECpV5fbQVUcNzBmUjUWv9uSfhyMS4t4aMCEK51LRtBh7zDzMPNGw9aCWWZkcVYNGPc1QfKbX6LWYSnrqNv2dG8qJWKFZi4KZZxXPaN8gHDygJRYgatBuv8Zn1mC4pmiTDsZykUW2iveuiDntyGukPkH27M9ergvdc4gWAajYzF3oGE9Wyh4ffMym4kfiJRaE3RwkdUwiGffD3tVLgx27y71Dha7GDgPDfVuPBGF829fYqk2XdKNHXYXvzttGn4oeiwFy5FFfL8wjWNE5bBfYBKWXaac36RqKUc8Wye335V9x6hXFCSxvkMmfdAnkzKF9Lz4pYiJPwHWCKcgt1BpEAy3cqMnbzyT4G6j7Z5apgVALwqfeMeagBgsVknAwm9w8N4gmnYktRrqEixjbt1s7jT4byocU4KgXV8nhBz3ginMTznJ3gwqVQ67t5fPF7XdBExqzQRZahBnUvGkNm7wEAQPxUfF533aq1Z3XapE3zfWbb1Mba2ZSjbzfz7QdDpQzt1UVFrYgLgC5qCGnuL1iATQRxmz3eBjTgp5LDA24AfhjRXxQiL15KheEfjfiWSWPhr4dKWgGcT5dZVNBjKb9e4c4gmjU1XkoGwrVGs7AhRdTSceWby3dxDg28xexJQ129GXqFigcvnWThfgMKa1a21ffsCyduPpD7LRCtcwz17vUk6AuNtgNZKNSSVXvhTaxRjKW6hFde1FZDzaDLqLUUV4auaVNuxwNzuF9hWoVa3zmJiewpGENTAVwyAtaacSD6ZeG4WoH47K9c8cUDMnP9M9nCRhvMyS5i3kDKhAYAmQuEqBvmSgggv2V7Sk8qqJ2Kz1Rz4Py13LUDxxZ3zvZjg977xp6topWGVck2hmtNmyHAVMZ9zCkjT19RTuCnt3V6fv4H8UMtUNDfDJdVxPiVsrBuU4MKeuJLef94EMCcRXdUFtrGDrZ1wh",
|
||||
decoded: new Uint8Array([240, 148, 2, 31, 80, 17, 247, 157, 138, 31, 239, 225, 138, 148, 181, 204, 117, 181, 21, 113, 15, 138, 24, 223, 247, 75, 158, 85, 216, 73, 192, 11, 148, 238, 56, 87, 165, 154, 5, 136, 134, 249, 154, 82, 232, 132, 98, 65, 58, 60, 254, 113, 26, 148, 74, 155, 48, 49, 75, 162, 59, 32, 31, 83, 126, 77, 90, 43, 25, 19, 55, 22, 180, 254, 24, 74, 43, 196, 212, 182, 161, 133, 123, 76, 160, 85, 67, 202, 17, 2, 53, 233, 118, 120, 157, 238, 35, 151, 212, 112, 121, 123, 134, 148, 118, 0, 138, 21, 143, 29, 135, 73, 80, 115, 49, 150, 68, 106, 240, 109, 251, 26, 200, 205, 82, 51, 40, 126, 202, 131, 158, 82, 171, 8, 223, 244, 105, 246, 28, 168, 19, 36, 193, 146, 79, 139, 252, 152, 176, 173, 133, 87, 90, 95, 179, 6, 34, 245, 179, 27, 152, 106, 236, 58, 176, 225, 213, 124, 46, 50, 168, 252, 193, 44, 81, 254, 77, 178, 54, 1, 177, 190, 101, 196, 49, 180, 179, 52, 192, 6, 195, 169, 130, 121, 157, 173, 61, 208, 241, 180, 54, 213, 168, 99, 206, 210, 160, 73, 185, 250, 133, 104, 181, 224, 229, 23, 0, 44, 170, 103, 37, 155, 102, 44, 52, 99, 44, 31, 17, 204, 83, 147, 16, 199, 24, 241, 73, 180, 50, 244, 73, 158, 15, 92, 120, 20, 225, 79, 116, 58, 29, 245, 68, 54, 175, 41, 185, 150, 134, 16, 120, 21, 195, 228, 234, 255, 136, 234, 248, 52, 237, 11, 48, 174, 147, 197, 247, 103, 215, 34, 228, 67, 232, 43, 83, 15, 97, 247, 253, 159, 60, 20, 86, 52, 44, 36, 88, 4, 50, 123, 26, 16, 204, 166, 111, 61, 236, 20, 150, 255, 11, 12, 33, 180, 150, 152, 197, 153, 176, 43, 87, 11, 244, 162, 226, 186, 235, 112, 151, 10, 20, 194, 3, 65, 16, 127, 43, 155, 44, 95, 48, 241, 2, 233, 216, 3, 24, 15, 113, 105, 202, 4, 68, 209, 22, 156, 186, 48, 22, 55, 216, 175, 70, 156, 191, 194, 155, 22, 3, 187, 175, 173, 188, 251, 141, 241, 137, 20, 22, 50, 25, 184, 0, 161, 11, 11, 12, 195, 158, 88, 198, 70, 63, 67, 12, 88, 190, 201, 241, 254, 21, 102, 237, 11, 92, 117, 70, 100, 181, 212, 137, 104, 185, 51, 20, 119, 9, 183, 17, 58, 19, 68, 79, 243, 35, 122, 3, 174, 170, 219, 187, 194, 66, 180, 124, 199, 70, 130, 229, 36, 208, 118, 112, 79, 129, 145, 151, 155, 125, 150, 41, 108, 93, 109, 92, 81, 99, 11, 31, 25, 48, 98, 142, 234, 94, 0, 119, 197, 62, 225, 191, 97, 135, 155, 177, 149, 61, 178, 249, 168, 73, 233, 174, 154, 83, 162, 197, 179, 46, 41, 162, 209, 178, 130, 62, 229, 52, 1, 159, 90, 178, 70, 195, 200, 186, 151, 136, 61, 178, 106, 162, 208, 162, 106, 91, 226, 255, 184, 71, 17, 0, 36, 127, 200, 47, 245, 12, 113, 231, 235, 181, 242, 9, 182, 165, 152, 224, 144, 160, 237, 56, 84, 20, 61, 71, 45, 233, 180, 173, 119, 57, 216, 223, 148, 154, 147, 172, 207, 58, 171, 153, 32, 143, 126, 115, 172, 240, 212, 80, 134, 155, 69, 83, 63, 249, 189, 89, 0, 107, 213, 48, 100, 200, 131, 206, 200, 172, 7, 248, 48, 7, 196, 246, 121, 70, 250, 74, 254, 239, 132, 161, 82, 117, 166, 231, 94, 215, 70, 84, 66, 255, 143, 41, 103, 117, 178, 85, 191, 204, 2, 70, 178, 172, 118, 56, 103, 205, 255, 9, 59, 218, 163, 14, 126, 130, 152, 40, 105, 181, 59, 171, 24, 183, 194, 54, 222, 234, 132, 139, 212, 60, 148, 86, 184, 68, 165, 185, 80, 162, 239, 31, 160, 144, 85, 154, 244, 173, 79, 90, 239, 217, 218, 81, 104, 2, 136, 233, 152, 232, 193, 7, 84, 219, 111, 114, 143, 218, 158, 200, 78, 14, 40, 80, 102, 30, 59, 6, 139, 221, 237, 225, 111, 213, 183, 127, 199, 94, 132, 79, 222, 169, 232, 150, 129, 155, 246, 98, 55, 109, 27, 96, 46, 87, 15, 118, 71, 14, 69, 85, 15, 160, 52])},
|
||||
{encoded: "5ZbQio1ewLyxHiTbyV5UdAtipTax6x9YYtYbGw5XyDxEVCbKk7YjJ27Vr3YVWwiXUr71NsrdNuhAABsxKYQdEgP573dke7FbS5zKD4FafQopAfdKXN8PXQBAjDnSKV6cTJ1TQHejhV4yhReTfTCcuuwrxh2Ph5pEz7hC3xdn1t5DCxdh9ya1978WkEiZvqQfa4SPxJLYhHZGYQf7D2CDHGK4ti8GiqRzfKnYhTfKmu589z1G9bU7rV2pgM96JmGzzdZLLP6iCjwST1dnXvXnUokenniAizCYsaweYAEfWbpuKaGswtmmbKuYbzgVpG1kHAiRgsQzw9ZEBFySMS56424DddPTKRXC5b6o53ELR5c3RBpnQCp2o2ptAqQEdFNxHBY1RoRuST53aEGWL7Dtf21ejFshg8SWc8yviFkfWC3xy4jErraBweDzEu67qE6ptcKFTuWn41KAT5fAq4UW5uAWSj2fWEsL3rq1FAbykCgfuCfzjuQVT6Qu38A1fSPyuLRrRZmW1xBNJ3P8q9SXFsuJjNQdRf4gxWeEKWiYHSCFCxZqUproEsabj6kbxcwCnWszNxFojUPRiAqGPtBTQErXgy4gHMRCCnHnEKybwPMBo5vea7ELZ29B3pypaZGWzkhEv4K4YXaURrUqJGDE2FUK7p6fVf15oZzP5yZus93JWQ8ATDcLadDeVaJH6GqKTxYficeWsJPmEwUKKUcFE6eGanRMoem3YTGg67aqCXqqimn47nKrA1eZe6vGhVRnK58VGdRsNb7LvPh2Vh697iom4dtrAjFT6XdZJoG99bPRXVY54Qks5r3tDFhfDTTC",
|
||||
decoded: new Uint8Array([72, 24, 183, 236, 8, 209, 39, 207, 116, 190, 182, 185, 78, 205, 63, 209, 20, 30, 115, 23, 16, 70, 187, 236, 144, 80, 86, 66, 147, 221, 222, 82, 160, 218, 54, 23, 106, 47, 89, 210, 231, 110, 92, 7, 1, 3, 207, 240, 91, 51, 174, 169, 30, 108, 63, 40, 5, 65, 179, 135, 246, 237, 157, 151, 78, 61, 30, 194, 83, 46, 131, 147, 78, 5, 12, 184, 56, 207, 222, 59, 69, 209, 85, 43, 34, 91, 137, 229, 240, 254, 67, 196, 137, 65, 7, 199, 213, 144, 162, 227, 139, 117, 147, 238, 6, 160, 230, 237, 160, 96, 95, 104, 228, 89, 251, 107, 230, 52, 101, 224, 105, 4, 75, 253, 27, 87, 148, 165, 68, 81, 67, 121, 44, 12, 103, 15, 87, 111, 153, 186, 105, 62, 224, 127, 98, 201, 4, 234, 216, 22, 108, 144, 53, 230, 191, 93, 45, 198, 60, 34, 145, 207, 117, 63, 202, 15, 54, 59, 91, 72, 119, 247, 246, 0, 191, 26, 202, 46, 136, 26, 227, 204, 86, 178, 53, 141, 50, 151, 44, 32, 95, 252, 190, 134, 95, 82, 242, 198, 170, 0, 225, 61, 18, 252, 232, 118, 249, 214, 4, 92, 128, 134, 46, 228, 137, 216, 180, 32, 249, 158, 132, 64, 161, 22, 160, 10, 66, 128, 224, 47, 123, 223, 228, 179, 116, 140, 70, 171, 132, 223, 36, 83, 244, 32, 61, 41, 25, 102, 123, 140, 61, 128, 238, 80, 218, 254, 111, 110, 125, 15, 101, 178, 144, 106, 176, 156, 214, 143, 34, 61, 57, 145, 240, 196, 200, 174, 78, 169, 228, 236, 223, 71, 81, 12, 220, 82, 236, 19, 186, 116, 84, 32, 78, 156, 153, 26, 6, 109, 88, 158, 59, 25, 229, 186, 114, 122, 198, 122, 97, 29, 73, 209, 9, 159, 38, 14, 171, 72, 65, 30, 94, 27, 183, 114, 135, 27, 182, 212, 54, 83, 194, 33, 113, 223, 243, 224, 36, 146, 17, 213, 134, 209, 93, 28, 248, 228, 58, 131, 202, 244, 8, 84, 79, 60, 171, 218, 72, 34, 30, 216, 57, 104, 20, 176, 68, 85, 192, 87, 133, 158, 26, 166, 10, 21, 40, 243, 159, 66, 48, 54, 237, 1, 250, 244, 249, 216, 147, 65, 18, 7, 203, 133, 191, 95, 248, 107, 130, 129, 220, 62, 245, 134, 202, 20, 154, 150, 108, 198, 243, 160, 233, 192, 77, 56, 19, 15, 225, 1, 72, 249, 244, 22, 19, 157, 77, 93, 151, 0, 153, 35, 30, 23, 155, 230, 72, 146, 173, 163, 43, 176, 154, 201, 114, 30, 186, 95, 190, 25, 253, 226, 166, 76, 189, 36, 212, 104, 23, 148, 215, 60, 16, 244, 119, 172, 81, 250, 98, 18, 232, 197, 156, 51, 82, 107, 220, 128, 77, 85, 216, 228, 16, 4, 160, 1, 240, 139, 104, 116, 108, 65, 155, 75, 166, 241, 69, 23, 249, 157, 225, 19, 101, 42, 215, 22, 219, 184, 107, 88, 254, 113, 160, 112, 153, 55, 107, 61, 163, 10, 141, 55, 154, 5, 196, 23, 57, 169, 219, 2, 238, 117, 244, 64, 37, 187, 56, 89, 110, 150, 146, 185, 56, 178, 74, 212, 22, 255, 157, 169, 23, 191, 139, 62, 61, 215, 203, 29, 234, 141, 108, 63, 30, 107, 163, 50, 66, 100, 184, 193, 218, 141, 87, 35, 83, 211, 122, 108, 77, 71, 92, 165, 105, 239, 1, 201, 1, 36, 118, 252, 143, 147, 142, 50, 115, 30, 69, 198, 154, 160, 207, 85, 123, 125, 235, 43, 37, 236, 95, 135, 87])},
|
||||
{encoded: "Am18c3LnmpuEvNPbaJiE44zpkeg54oGMNNAecP6bCJLfkAt98L5qKbZ2RUsfE43V56iwmvfQHvWVWrerwhnWC4gm5eaet2BLpdfKhGbyGAsx6yqszMCexGMjzKzpRSRJFbssQh7dXf9dQ5BFiQbUzfcdwcbVYdeJpUFtC8bKgizgPy3QMiRjL1WuCNcvJeorSeuiRAhdsadXui2xbLfEtrPRYEJQWLD5aBrQj7o77cPQFsDF3vm5KLH7nmtGDKdYePSMhfM3ZNjFnk2BUNoFUbiv1aJ1ah3pw7EhSVqs3xEgG3HCs8PhWjyj2wgPvf8sWa4WJeBtLXVBgrH51XbuXJ4BbJBNv4N5cZTWPRX5PVVbjgRakHJR24mCkr12KLBZZT8jEWkUrzPrpP5sYsvmNXVZXshoRT5SmJx4SUWgqPqV8RLtKPXAix7Lo97yY4Tj5hLjqw7yy88ZZQ8pbTX22TMTsyof83Szbx5FenHSmRmU7jngvJdGjzw7ZxV9Ei4qCrpKWx8cc7mhP6K9aZxJrm4z3CRdNUtYC9LZL6sZbcPj1y35dkGiCDx9FDspWscPVVb864xmF4uf9qd5UgogZkWwATAuc9w87Sq3kqDsjYHV5vigwHJd83MqraANZoN1KqDT3xGbGaE8ZDxZr14q6ZExudmT78Dukqy8rzX1WtZMpaBUsqUW4G9bvfbZYNmbC5rtJTVvdf7gXFzPviNa4HCrA5QJnkM7HzEwzLFvke62qCqJKRV5VLpvevkyQn39zNq9wXZAXc655naf2gHoYkviyR37XhjamKBp7wiUpDnzTx6xZ6sHGKmyTCH6ZTxRjDP7fzH3Pwnmp6hRJsypobHxqTvo4tKUn9amgfVz8obTVQHi2xuPthq57FyqTLH5KD8kTWwSdyPe2xKk8mvctvGY8QR5iMVDVYZUxGTwGzjZSHgPTAQYmcdozRLrTd8qrv2ZzemH7GpNfDbAsNtsBgSAg5St2jptxNboG1Kis5bHpnUba3JTsdmy1jctPfSyk4jdpW6FXHqXFkRCwYiKhUR3tgTCU7scF4XgQZEBQ5wGepK1ULp3EZR4XKNVYkjHQHy54dHiYw7qa3e8DQBJWWYKDbQLKXNC33v6siW5NSBCsn7eHMzLsRLwYVxNMP23FYcVeHu4pHWFeVKLAwFDNX6okam9ZQ7zYzMNG6FrdjiAvfaeBoqMBjyhGtTraXN9ptYmQxgjWHbYqqNZ",
|
||||
decoded: new Uint8Array([88, 29, 1, 179, 39, 68, 70, 92, 68, 241, 67, 204, 184, 31, 10, 187, 66, 153, 117, 194, 60, 197, 66, 15, 108, 40, 109, 112, 174, 148, 189, 170, 27, 61, 8, 55, 197, 50, 187, 137, 80, 147, 73, 126, 59, 223, 197, 7, 7, 156, 212, 198, 159, 46, 206, 37, 225, 114, 103, 127, 51, 217, 200, 248, 136, 141, 4, 93, 246, 81, 199, 9, 56, 40, 49, 134, 101, 188, 237, 148, 163, 64, 14, 37, 199, 149, 144, 35, 108, 219, 156, 84, 179, 50, 250, 158, 255, 11, 170, 5, 139, 22, 94, 209, 116, 192, 76, 7, 113, 47, 142, 51, 252, 28, 130, 80, 248, 207, 229, 178, 169, 228, 251, 92, 170, 185, 184, 56, 42, 47, 51, 71, 44, 204, 158, 165, 223, 26, 254, 208, 238, 105, 249, 132, 122, 52, 159, 238, 20, 197, 37, 165, 244, 232, 99, 50, 72, 52, 36, 189, 131, 251, 180, 105, 162, 143, 47, 192, 66, 188, 5, 127, 149, 151, 120, 125, 37, 5, 25, 127, 218, 86, 201, 188, 72, 8, 18, 137, 219, 3, 11, 140, 132, 12, 172, 25, 19, 97, 181, 191, 247, 72, 155, 125, 34, 120, 224, 50, 209, 216, 164, 61, 20, 203, 186, 92, 67, 109, 50, 6, 13, 34, 1, 72, 198, 98, 193, 245, 11, 98, 58, 15, 117, 235, 222, 139, 170, 238, 195, 123, 144, 85, 141, 115, 82, 142, 119, 221, 59, 163, 106, 162, 198, 252, 253, 115, 226, 206, 180, 29, 204, 207, 184, 159, 90, 40, 247, 60, 65, 96, 113, 50, 161, 84, 206, 212, 73, 139, 74, 208, 25, 220, 189, 171, 157, 132, 4, 45, 196, 27, 112, 16, 155, 238, 1, 12, 114, 182, 135, 45, 213, 118, 140, 24, 44, 222, 5, 85, 23, 97, 10, 226, 70, 36, 44, 120, 156, 173, 153, 222, 255, 199, 39, 121, 212, 83, 39, 242, 131, 239, 133, 134, 100, 203, 171, 255, 196, 205, 163, 192, 113, 201, 208, 233, 121, 245, 185, 249, 93, 175, 65, 84, 221, 137, 33, 195, 151, 254, 15, 27, 17, 72, 111, 43, 96, 103, 175, 10, 159, 245, 141, 194, 105, 87, 143, 120, 36, 141, 253, 115, 184, 137, 99, 211, 125, 119, 154, 113, 33, 195, 84, 86, 203, 67, 242, 22, 91, 5, 78, 199, 66, 21, 137, 68, 157, 112, 203, 73, 220, 235, 178, 227, 225, 26, 35, 223, 212, 16, 236, 187, 28, 69, 1, 243, 107, 170, 172, 130, 208, 61, 235, 255, 115, 65, 15, 27, 211, 42, 160, 60, 187, 5, 120, 43, 70, 190, 22, 182, 243, 115, 63, 86, 59, 116, 121, 220, 97, 67, 221, 22, 233, 204, 68, 29, 20, 150, 114, 219, 101, 37, 112, 163, 25, 97, 23, 12, 143, 45, 137, 66, 223, 18, 102, 215, 88, 42, 27, 11, 29, 79, 135, 66, 203, 181, 221, 15, 85, 82, 212, 145, 155, 80, 246, 151, 179, 8, 37, 190, 148, 249, 76, 95, 219, 73, 165, 194, 85, 95, 29, 34, 50, 147, 11, 64, 206, 146, 168, 244, 78, 111, 183, 181, 227, 16, 49, 60, 111, 216, 62, 101, 203, 121, 139, 43, 36, 89, 202, 61, 50, 219, 94, 247, 42, 11, 22, 237, 173, 198, 202, 245, 234, 15, 150, 186, 146, 116, 191, 110, 95, 64, 203, 11, 178, 68, 134, 247, 198, 189, 111, 177, 114, 152, 50, 148, 96, 101, 77, 11, 181, 90, 1, 146, 119, 57, 200, 7, 55, 125, 51, 17, 54, 182, 169, 20, 46, 157, 38, 5, 248, 45, 176, 203, 54, 26, 213, 139, 46, 137, 178, 155, 212, 36, 98, 171, 187, 98, 185, 49, 157, 129, 107, 65, 216, 99, 128, 97, 112, 241, 185, 140, 240, 70, 208, 206, 92, 20, 7, 189, 153, 224, 146, 34, 45, 105, 160, 28, 148, 99, 83, 243, 207, 29, 119, 132, 16, 58, 182, 178, 10, 113, 44, 82, 107, 27, 37, 177, 96, 182, 123, 64, 101, 126, 188, 237, 130, 254, 36, 148, 96, 44, 147, 28, 253, 11, 108, 232, 67, 154, 57, 7, 247, 246, 45, 24, 139, 37, 75, 167, 7, 56, 100, 30, 68, 216, 214, 53, 159, 23, 164, 111, 37, 213, 1, 217, 125, 34, 7, 130, 119, 77, 243, 173, 3, 205, 113, 152, 236, 7, 191, 56, 74, 68, 104, 199, 28, 154, 74, 183, 234, 27, 55, 53, 104, 117, 57, 250, 206, 78, 50, 185, 86, 2, 69, 12, 158, 211, 129, 174, 93, 23, 40, 110, 241, 120, 54, 70, 118, 152, 112, 124, 108, 239, 59, 190, 7, 42, 40, 134, 191, 133, 64, 182, 121, 159, 128, 21, 206, 235, 231, 166, 10, 67, 236, 28, 180, 97, 246, 148, 73, 213, 171, 255, 180, 186, 50, 214, 148, 145, 153, 148, 196, 89, 205, 18, 77, 141, 104, 190, 17, 29, 88, 237, 166, 125, 210, 196, 63, 173, 65, 204, 153, 21, 184, 81, 78, 247, 194, 208, 33, 63, 146, 15, 126, 161, 227, 232, 55, 42, 151, 190, 235, 174, 116, 86, 4, 54, 201, 89, 45, 181, 196, 49, 195, 252, 177, 144, 44, 119, 183, 155, 59, 59, 246, 219, 17, 104, 246, 223, 70, 117, 106, 60, 5, 210, 165, 27, 213, 34, 32, 130, 95, 210])},
|
||||
{encoded: "ZVQYzYgs8jzFFWpcxBCg69Qb7P6u622gaTQaKRS25JB9nvx94ZmfSjDdJUEE4KXp",
|
||||
decoded: new Uint8Array([67, 102, 222, 87, 174, 82, 136, 101, 156, 51, 240, 219, 31, 112, 69, 138, 78, 240, 174, 230, 184, 163, 72, 1, 240, 154, 176, 212, 83, 109, 121, 7, 108, 173, 88, 64, 78, 180, 3, 220, 45, 49, 181, 5, 231, 76, 43])},
|
||||
{encoded: "HCdEauWKrumoPyx91tLe7dpnaX2Tfg27syZPLnU7fM9uoDv8pdYcPFh4esZmUSw8QbtsEDEFmiw4tXXSyuLBPQL3FTgENTxfh3VQYbKh6Xic44HTYm7jig9HdWsZapxZDdTAnbXTWd3a2y4pBULyiHvdybS78LbpUsNcTKHvDxTqDc7CxzXrc62BTmCYQvq3pwqzSZtqfBnHQR6vHDi6RWpHMht6xMsuFh7WRPBFRZX5Yt2cGWhwc3aPc4k2e9U9y4qeTgK7dyggqqWmmkqU36xHqjzmupkn9VzrLwij8byGV7V4twBAoJqhywfXozx6GAUfyi4NJVUGJUfzaXtmQkJz9q2oiYZ6riPYUHUj2xkpaRc9BY6EYNuVMwySRbgar3hY9VvGxxF52XL5bS2KSw5JtWRjjpX4zUKEZE3uNSaWPuMQR9YieEkJwqXwfvVfLN9SxUnr3QvkJ7Zwwu6ownMzPkSDf7royaePpR1sj8U6UHiaeBwdfiwzjeMbz2jKwb5w68ar62DjDQTbC6yneD7CDUoY9kiGNpSyNCQHXts7m95qnaXvaNHjyyjhdiwDxDWks4YQLiRprTSr1FPvoskxcDnrzPVH7TApmf58vnR5kCeVZkLLC4EPiAFBfxyb9CmbtYTJqHHvQG9etx4hPr6yMvpgx5UPSCSqhm3qc7gv1iC6uCFJhy87cTdPAeM9ATCFWR7skaKU22YRkRHPS7K2sSwjWh2vjue1i7CCM3e8Q9KygDWtzgPqCKUMoSo3A9uvLSVRBnU7QbcLz4y2YXvxevZLGxYCKUNzozKESCP456JR7bvL4XWAuAStPJk8ubuP76EwwEB5rr1p42DEghfbRxSe5optfNYySaK2V6fJ78fKkW2NpqGZhngnLMUu7LxoGkFvrjED6rpoJGiueG3U8cBjTp6MYjsdAscRarNWGebLsoEP1CrQxWo5JzwUhUTpcPhprrXFYsNeELXzLbJKMWXShx3JDQfT9k27dwZHCaqvzaDrTmdhtdeLsQFNjXQjY4hDNxkpFGeWGoKko2gcNa4eVkuZx9jpYa3yb26jfFsXCLDNkJBCaPK2Q9kMwzJ2ay717vHaN7rQiqsJ8QZKjQLK2yasHvXZ415VZzmfF1oMD5i5PRVewQ9hWeckcKoTT6abCPLJWYNsKHRSWg8h632BbMtbiM9JhmE1iiViupT9k6V8hbocnZAaxbpPVuLjS1AdWfhqjJpVAN7hYC4og4EperGCc6x25fG1gKKqa1ep15dv54qxoTdb1ELtrWua3NWU6gxmDtrx3GJHHvVVRb8fgmfGdM8G3FpJyvwR1QAojUHcsKvXZE",
|
||||
decoded: new Uint8Array([17, 156, 222, 217, 114, 221, 51, 84, 169, 61, 56, 4, 201, 169, 233, 216, 132, 56, 75, 183, 197, 84, 111, 204, 90, 246, 133, 141, 135, 128, 223, 127, 234, 158, 115, 142, 172, 184, 1, 6, 51, 57, 8, 49, 37, 86, 198, 61, 168, 126, 101, 213, 48, 6, 217, 67, 71, 244, 39, 239, 82, 6, 74, 52, 30, 241, 195, 227, 234, 102, 42, 210, 109, 50, 209, 119, 52, 202, 105, 149, 156, 254, 29, 64, 91, 163, 145, 241, 157, 34, 159, 237, 204, 209, 30, 47, 67, 124, 119, 168, 125, 246, 104, 88, 81, 195, 68, 182, 65, 167, 154, 130, 146, 115, 206, 165, 205, 186, 113, 193, 211, 211, 199, 159, 146, 12, 252, 151, 70, 241, 239, 106, 164, 31, 91, 190, 76, 95, 74, 220, 193, 153, 16, 29, 210, 179, 182, 103, 82, 200, 66, 18, 118, 187, 83, 3, 91, 99, 28, 189, 144, 149, 210, 128, 196, 227, 207, 2, 186, 139, 78, 249, 90, 103, 65, 48, 118, 142, 161, 231, 93, 162, 66, 80, 113, 84, 150, 254, 128, 159, 146, 4, 224, 98, 90, 251, 199, 38, 215, 112, 158, 1, 82, 162, 155, 4, 214, 39, 117, 203, 115, 159, 7, 244, 55, 40, 255, 170, 26, 92, 210, 10, 40, 0, 148, 191, 153, 41, 181, 148, 2, 57, 106, 71, 18, 212, 227, 97, 211, 254, 163, 34, 180, 248, 146, 147, 142, 71, 99, 246, 91, 104, 203, 180, 90, 141, 112, 27, 64, 31, 220, 163, 70, 4, 97, 131, 157, 243, 236, 43, 251, 60, 104, 47, 174, 37, 37, 23, 110, 47, 131, 254, 86, 123, 99, 185, 220, 65, 17, 209, 113, 98, 131, 128, 157, 188, 44, 133, 45, 96, 135, 15, 185, 174, 186, 105, 156, 145, 98, 115, 233, 1, 209, 29, 94, 212, 238, 86, 189, 139, 107, 152, 91, 54, 19, 206, 33, 82, 35, 226, 37, 4, 60, 132, 246, 113, 95, 110, 36, 156, 100, 110, 175, 71, 85, 74, 250, 68, 155, 85, 135, 247, 165, 185, 214, 104, 89, 240, 218, 231, 227, 110, 29, 60, 161, 123, 235, 244, 246, 108, 112, 87, 209, 73, 220, 226, 5, 194, 86, 4, 58, 51, 13, 42, 25, 149, 194, 42, 179, 206, 84, 35, 212, 10, 32, 41, 86, 47, 120, 8, 146, 98, 102, 75, 205, 2, 64, 187, 130, 23, 205, 194, 93, 0, 42, 145, 198, 49, 200, 66, 48, 15, 194, 29, 232, 171, 184, 220, 144, 206, 101, 245, 171, 206, 73, 34, 221, 1, 15, 192, 214, 98, 236, 43, 180, 147, 226, 106, 224, 178, 26, 95, 250, 201, 148, 25, 227, 232, 231, 220, 27, 147, 129, 112, 129, 80, 20, 218, 249, 58, 63, 2, 182, 190, 198, 41, 88, 84, 69, 239, 88, 163, 223, 39, 172, 246, 48, 98, 137, 64, 119, 237, 126, 20, 112, 211, 200, 30, 102, 54, 97, 5, 82, 217, 200, 89, 108, 238, 159, 42, 77, 130, 43, 246, 12, 102, 164, 195, 111, 247, 242, 168, 220, 242, 117, 27, 214, 0, 66, 46, 72, 255, 251, 181, 27, 250, 93, 120, 177, 9, 145, 29, 203, 26, 77, 27, 107, 82, 196, 209, 42, 116, 243, 193, 202, 10, 210, 22, 31, 119, 119, 2, 82, 50, 49, 227, 59, 78, 232, 185, 50, 214, 7, 88, 172, 214, 245, 88, 68, 32, 50, 234, 238, 149, 34, 87, 210, 182, 194, 33, 133, 240, 104, 173, 199, 15, 37, 23, 134, 196, 214, 38, 222, 19, 131, 165, 74, 183, 154, 210, 110, 242, 150, 67, 17, 169, 62, 226, 85, 24, 139, 229, 202, 247, 76, 86, 90, 216, 74, 140, 230, 128, 47, 105, 226, 240, 3, 251, 75, 160, 84, 144, 255, 109, 91, 216, 38, 122, 47, 250, 218, 116, 8, 141, 17, 56, 186, 238, 10, 106, 115, 208, 115, 155, 127, 135, 235, 100, 70, 72, 148, 128, 48, 36, 23, 3, 222, 70, 99, 79, 164, 212, 82, 72, 254, 71, 224, 211, 96, 132, 166, 239, 110, 58, 213, 239, 122, 223, 58, 133, 133, 235, 66, 183, 197, 89, 248, 23, 47, 140, 40, 206, 36, 168, 184, 212, 211, 239, 29, 211, 178, 140, 27, 37, 17, 72, 3, 246, 114, 130, 122, 24, 143, 247, 64, 146, 183, 197, 168, 171, 96, 96, 177, 28, 45, 169, 164, 58, 174, 197, 46, 185, 209, 88, 237, 217, 167, 172, 166, 52, 223, 50, 230, 15, 136, 153, 23, 211, 112, 73, 235, 232, 215, 219, 104, 200, 103, 242, 12, 52, 96, 90, 57, 215, 225, 142, 198, 216, 104, 74, 140, 42, 231, 227, 125, 149, 187, 9, 98, 51, 55, 51, 76, 228, 195, 145, 190, 115, 91, 191, 184, 121, 253, 49, 248, 121, 29, 81, 127, 168, 104, 2, 75, 44, 231, 50, 63, 9, 217, 109, 41, 7, 2, 129, 197, 149, 209, 70, 94, 115, 28, 80, 211, 58, 89, 234, 37, 3, 57, 36, 87, 197, 14, 91, 175, 222, 110, 24, 10, 222, 71, 44, 69, 176, 236, 47, 192, 163, 150, 73, 134, 109, 95, 227, 139, 14, 158, 183, 121, 42, 230, 16, 211, 143, 41, 10, 241, 112, 16, 101, 237, 229, 103, 144, 6, 197, 179, 70, 146, 214, 118, 50, 119, 100, 221, 79, 176, 128, 161, 49, 199, 220, 39, 98, 231, 63, 153, 93, 190, 108, 115, 155, 56, 167, 227, 211, 24, 198, 137, 180, 138, 82, 121, 43, 246, 214, 19, 180, 104, 55, 166, 13, 17, 22, 239, 98, 101, 60, 250, 25, 171, 17, 172, 179, 5, 200, 127, 227, 106, 8, 192, 133, 235, 234, 38, 183, 148, 100, 13, 232, 106, 86, 225, 14, 217, 222, 71, 37, 49, 237])},
|
||||
{encoded: "2b4UJdip8A5WJbNpKFd1S3vHqE8mLSFM2b6LDYZSweLCbYtgRcLMT8AfJXYMjez2JUeQQ7LCkyVrx42tRBRfJG5o6pQu7ZcP3piwVguuQJPGWgcGwEGSSdbCS2YvQyWJ8EfqzCt48N2Qh4Q8sXJZA4Pf1V5D6cGr2VeFqBqeirbtyCEA7JZ7TR8zq75EZoEtk8iA68AgZ8R21Z9gSmk8CuwKghZmAztYNf3Y3EfTgqQFJYA4DrL6VYjzz7vCeckTFtMV5iDtPDYzUKeZUKsz5t4LUqc75Y1wkoMXtGqrJBRk4jzQKE7zQDkXSH7mGY6xMpwWaEaYnC8NZVZaYiZjrQd7FdMQXmbTSBXK2C6ZBdZRjBgE5HfvW3iopC18m6xBqtL53AF7Kg4LVkXNsXyzX38DLd48HMvdeMo6MDuhYcaf8fhqNjcDBTbVgZ9SBYsEqL4gJ1wB5cFsKXa1CsTZasjhFyhZr5BvA5mTavv3HDjx2W5pEwBDmbs6yNrjy66S85V8sgeFDDaaaTjmM6ZQ6N47an2Y4nBKTN96P7hZGZfV6X31LEofAap7ofaqtAhptBRmJLrDjzaEMD86SxK7ZB2MQvXwBFVUmWtpat6ELwQYVyeajry3Sgr7wZWpF68vhLbhqYr1SdDHHrMihSmb1cmASMo3p4BBX1J4KBSzmVSjYpQ2hGdNBmt5sxHEaBBff34ZD4YW3QwruM8ewJMQg8ZjZHZwuNz2NL9uWntur26ikuG5QxRyj8PfNSDVRAkyCa2Qqf44x7V3NT9pn3t1mm77i3QowCE1LzWns5yqMhZ3FcagdLr6rkp2GSoDjp2yGWqyxfDNa84oHDv9GEKVhJNZHDzMxAoMsQVmGeT8xdyGgqbbqHHSz34eTswTrLSYvgxe4PUcZGmMr6vQ1e41NcbH3gQwCzxr8P1qaGSN86gGMtbYy8CjNFA9QUgka2qpWcL3m8vBDAAC248iNRb4RmChzvgesxdxP9ibyUXxwS1EwZ2WriXKyXGACtV9JTbaw6Ky8T1UW3p4ekSf28swjgNzCNabjbHTLufjNeyaxS2eNnXTHykm44ut6uwcdHyQd4TPFkoZqRDCUZZDt8DrjFAPGjdhvHXpYsd9LT2AHt7zGpbZX6jrdfPSXDEm9QYH3LNngoc4XVXvanMTuAhiJFGsQCgp5uFrVvMnqpYCkUhJMvHEdkb7h9nNMREha3Cvh9SMmZwwpHC4t6WUFUgPBivztF4GC9xEJuUJ6DvJZf5kTo8UX5CBu3r7iNRSbdN",
|
||||
decoded: new Uint8Array([143, 161, 185, 240, 217, 247, 111, 131, 117, 251, 182, 68, 113, 88, 179, 106, 219, 91, 191, 223, 133, 151, 55, 186, 252, 250, 79, 107, 175, 63, 82, 137, 11, 201, 85, 98, 203, 219, 222, 33, 60, 79, 145, 44, 44, 65, 238, 140, 100, 44, 121, 184, 60, 214, 217, 244, 28, 227, 101, 206, 132, 108, 234, 236, 151, 33, 129, 158, 17, 126, 181, 158, 148, 70, 162, 58, 252, 203, 253, 114, 175, 170, 193, 124, 132, 249, 153, 201, 174, 41, 83, 133, 15, 123, 62, 70, 78, 6, 222, 37, 66, 54, 246, 237, 159, 251, 73, 214, 215, 56, 70, 24, 86, 73, 218, 231, 208, 62, 165, 153, 177, 103, 120, 195, 220, 18, 186, 188, 12, 224, 85, 123, 177, 156, 108, 101, 2, 138, 198, 166, 221, 146, 26, 230, 181, 232, 239, 16, 198, 8, 255, 224, 107, 40, 203, 250, 185, 106, 139, 184, 79, 54, 86, 254, 106, 103, 217, 76, 67, 211, 191, 217, 1, 0, 252, 132, 166, 42, 112, 66, 233, 1, 73, 5, 17, 50, 16, 154, 90, 108, 77, 233, 67, 118, 163, 169, 29, 207, 82, 72, 129, 177, 39, 236, 9, 83, 52, 13, 136, 145, 207, 249, 54, 212, 171, 92, 78, 65, 32, 151, 238, 114, 151, 36, 101, 107, 73, 10, 82, 87, 47, 133, 100, 143, 58, 243, 232, 95, 163, 23, 40, 122, 205, 160, 187, 182, 139, 112, 114, 23, 69, 191, 136, 109, 144, 21, 31, 101, 51, 121, 130, 175, 232, 96, 182, 153, 161, 191, 91, 83, 238, 95, 96, 122, 242, 129, 167, 63, 26, 76, 179, 219, 15, 21, 16, 197, 246, 165, 90, 243, 58, 200, 201, 223, 128, 229, 187, 230, 175, 206, 216, 187, 136, 171, 224, 165, 71, 86, 172, 57, 33, 4, 170, 191, 225, 64, 18, 125, 74, 184, 151, 110, 184, 202, 85, 12, 204, 191, 169, 221, 30, 158, 85, 82, 94, 124, 55, 153, 122, 123, 240, 70, 81, 71, 67, 64, 94, 239, 214, 223, 81, 194, 110, 179, 231, 130, 112, 230, 192, 39, 142, 114, 121, 39, 7, 59, 48, 189, 226, 32, 213, 91, 210, 7, 146, 120, 204, 119, 13, 30, 17, 117, 201, 149, 80, 147, 198, 95, 129, 109, 71, 11, 19, 119, 175, 206, 155, 129, 240, 136, 109, 148, 3, 19, 7, 25, 98, 201, 22, 157, 36, 232, 93, 66, 246, 240, 188, 145, 49, 228, 89, 35, 95, 10, 95, 136, 98, 63, 117, 218, 0, 151, 36, 68, 21, 180, 249, 233, 144, 78, 115, 59, 36, 167, 173, 208, 86, 84, 138, 68, 68, 187, 53, 18, 64, 172, 185, 133, 46, 46, 234, 160, 227, 42, 0, 184, 202, 145, 101, 112, 178, 163, 218, 216, 170, 90, 238, 9, 117, 151, 21, 250, 214, 57, 192, 61, 38, 0, 240, 190, 70, 74, 134, 59, 130, 216, 228, 81, 245, 114, 3, 84, 26, 87, 235, 172, 118, 125, 230, 118, 187, 2, 103, 138, 107, 130, 142, 186, 34, 240, 166, 164, 190, 24, 184, 88, 127, 172, 115, 159, 180, 150, 226, 85, 73, 47, 192, 87, 229, 93, 10, 98, 211, 42, 102, 136, 103, 41, 116, 141, 123, 142, 153, 247, 168, 21, 117, 241, 145, 170, 75, 6, 172, 106, 238, 202, 149, 206, 172, 55, 78, 188, 75, 91, 34, 13, 56, 136, 10, 237, 66, 42, 161, 237, 170, 62, 55, 223, 23, 204, 96, 197, 164, 82, 191, 67, 133, 252, 231, 74, 109, 114, 79, 146, 65, 161, 153, 83, 23, 239, 199, 61, 94, 22, 138, 113, 226, 168, 35, 150, 26, 58, 14, 148, 98, 141, 117, 246, 178, 180, 251, 240, 239, 204, 119, 30, 101, 233, 150, 146, 196, 248, 91, 230, 68, 25, 69, 24, 169, 110, 250, 26, 184, 10, 31, 237, 28, 202, 129, 9, 169, 74, 85, 235, 13, 97, 65, 249, 111, 131, 9, 209, 124, 43, 203, 126, 88, 187, 157, 243, 82, 47, 9, 184, 150, 192, 92, 137, 75, 78, 210, 5, 218, 175, 230, 110, 72, 35, 35, 70, 219, 49, 0, 52, 200, 83, 24, 7, 33, 130, 193, 19, 163, 86, 5, 53, 110, 58, 221, 122, 142, 243, 15, 192, 237, 25, 151, 18, 238, 9, 150, 1, 69, 58, 24, 58, 122, 236, 138, 220, 13, 103, 65, 228, 127, 87, 60, 115, 198, 109, 177, 116, 208, 16, 46, 159, 95, 59, 67, 195, 97, 216, 163, 11, 223, 23, 232, 41, 165, 56, 82, 27, 21, 63, 167, 143, 234, 6, 31, 255, 25, 156, 218, 69, 250, 78, 248, 63, 20, 123, 205, 57, 90, 175, 36, 233, 237, 243, 193, 2, 33, 102, 121, 34, 5, 126, 188, 159, 147, 202, 5, 187, 238, 105, 215, 156, 246, 83, 14, 241, 57, 44, 145, 229, 154, 228, 245, 190, 33, 81, 72, 224, 189, 175, 57, 41, 227, 16, 228, 236, 183, 159, 157, 11, 95, 32, 180, 232, 96, 151, 33, 24, 125, 87, 176, 95, 252, 132, 116, 199, 138, 95, 103, 22, 12, 79, 235, 84, 239, 230, 135, 78, 125, 193, 156, 76, 197, 197, 119, 70, 85, 192, 147, 39, 158, 103, 195, 128, 157, 53, 187, 231, 144, 137, 35, 213, 84, 147, 33, 198, 4, 43, 56, 108, 86, 103, 83, 111, 116, 134, 91, 95, 238, 214, 245, 163, 146, 196, 85, 23, 62, 9, 131, 57, 193, 184, 6, 1, 12, 30, 217, 130, 208, 40, 200, 205])},
|
||||
{encoded: "ABxm8AvJ54fYUkTPGMERmWRFj6SksQfFsvZYVEctHSiQaPkLhJRVL51WXn3m5HMHTqgRiatSCnUn91aC2JC33fdRP4aRvKDjtub7b3W4wiN77uqnPvhH3ZJ9LPotjePDWq",
|
||||
decoded: new Uint8Array([117, 189, 79, 220, 178, 161, 157, 17, 243, 242, 173, 184, 28, 115, 246, 225, 80, 7, 37, 196, 255, 167, 22, 40, 15, 73, 229, 238, 32, 114, 96, 190, 155, 198, 216, 123, 235, 129, 24, 237, 31, 243, 190, 100, 160, 187, 35, 162, 161, 184, 46, 152, 77, 64, 162, 204, 116, 181, 178, 180, 41, 214, 95, 110, 149, 206, 145, 108, 83, 151, 109, 33, 165, 207, 244, 88, 10, 74, 77, 209, 222, 198, 200, 206, 136, 159, 251, 116, 30, 26, 151, 213, 74, 33, 50])},
|
||||
{encoded: "SkreceN7hpEVV5r13tfFwNkK3PMqhsSYLAteDc5HbrJME5dRcxUXxuBXhw5YhUWYdfnorjYHiDaHduygMq9G4MYFKFa9AxX6UXE6usbh7UTnCVHu1Ui2XHmzFbADYcbZPxcfKc6ar22ucy5axUQaWS5eSH5f8Z3F1xjCnmvEqto5F9PbukLNqrr3CD3pa5jY3aUs93R9MBPY84jtbLpkXuiQBskX7q485qwFryvPasi9h69JH7nF5W5GZfiZDoxjCGsiVtzNgkqTmvwZvhV6ZheECmU6CYEjyevSmLVBvrFUn4sQ78c61dzxdvxZV2bSkHKqDsHbs",
|
||||
decoded: new Uint8Array([68, 208, 37, 157, 54, 219, 81, 238, 246, 70, 238, 86, 28, 6, 223, 6, 29, 82, 162, 127, 144, 118, 18, 38, 190, 62, 74, 219, 64, 171, 110, 229, 1, 81, 176, 242, 224, 221, 109, 158, 65, 217, 72, 56, 10, 72, 127, 215, 30, 244, 178, 168, 19, 126, 119, 252, 220, 149, 101, 198, 59, 208, 255, 64, 31, 16, 105, 42, 237, 92, 245, 0, 48, 175, 182, 39, 95, 130, 229, 153, 86, 135, 78, 66, 50, 75, 212, 197, 165, 98, 186, 203, 10, 25, 114, 215, 141, 39, 118, 223, 138, 230, 188, 163, 29, 2, 182, 149, 251, 107, 129, 194, 238, 54, 81, 30, 153, 210, 156, 93, 101, 69, 255, 64, 65, 142, 169, 242, 109, 251, 232, 126, 157, 228, 3, 245, 112, 193, 198, 183, 18, 70, 86, 18, 68, 144, 86, 115, 177, 8, 72, 236, 173, 102, 23, 49, 119, 113, 142, 186, 168, 202, 255, 98, 162, 243, 218, 180, 227, 182, 92, 204, 31, 174, 186, 225, 213, 103, 161, 11, 189, 212, 188, 34, 200, 17, 81, 195, 58, 230, 161, 229, 134, 38, 198, 218, 168, 199, 92, 75, 39, 188, 238, 252, 55, 154, 251, 58, 169, 85, 103, 185, 84, 52, 189, 163, 185, 6, 213, 150, 67, 216, 216, 188, 183, 43, 38, 195, 82, 81, 34, 162, 107, 97, 119, 156, 89, 74, 141, 30, 54])},
|
||||
{encoded: "Bo14fRGaTxJMGFHrmxWvPcYDMpag3Gqmw45QBzun5qUvhr7kgfmjyZwPB4oUevp3NCBT9pbMfhXVLmWfj5VEnLWvRTibK3phEHErD7TWQgjEAWm8s5etPoNTQBuAe9E1tw9UHmm58CYvfKRkofWaYkLwRZDQmV9DkzdFaMsAsrbf1rS79GAWSusz4aA6aLjfyRDZUtgxZw49q5agMgTruneAHrTQFraUfjCdL6meQpPP7n3sF3YxYkXtbvSEaGdPsWLLGJqLRkqbwmd5UaNkYrRD7fLNNMU7fHES9zfqZ9jERZ6c5gT9NFxmavi9YgKPwyLSXhukzRu15yDZWM9AJd85kjbgpbPAoDhqn3EoKiVHZ8HWDpFb1aXN9FmqmxEjWiEjYnQqFx1ssTY1JAu1HXnvxWNaJ6RjN7ueuDNZE2vQaBwBwKjoXjfgzFJ6mifFSden1Mxe7n18nH3SYcD5E8ZcXGQCgSYZoiXGEbT2x1HHYpqVnkQK4reqPMW3uDw8ZL54VxUkh4MU8nMYBoxn1cpNADvD4sNctPpE21QkXn2Rv7XnCaoXm1t4HHLQmnE2YjHMwe1hbQv46b5bHXRDL4N11B7Ch48JCJbNnuX5Tjobe6ETgrLBJuqVWSfXXdtRMfg3moso35RUGiwXBEHuLvLfmRb29Su1ibxx5FBM3ux5TwXiLU94sPyX7aCyBS8bwozkcJMYMVvJwYG486su3UDjByCyVSNbkVEqULrgewindAqmYxf3bYF9V5nfZ2VDqB4a8dB4UEXMeH6tqhwyri1VveV1bRJB5G8deKbTdvjHfTGSAgWmgPhPkPi1wH7woF2dRZA9CJkbkhV6T1dALZsZSAa6L1BSAnA9qHd3e2f4uHeAdB4LKv6DukRU3TegZaAveNMECeoFveN84CF3989MVewSbgnsPrCVMspKu16gDqchTWQYSKsknttoHA6zJkHPvgf5LWxZ62TH9dQ9JKoSLbA66fJvBkVntQ2VnNkcXWnfP5g84PmLZGxPGp8Kve4Tmw8PfqMM7jjbLfuKqT4H4yKGxbjWz4eezzLvD7xocVEkabqggKEqKvmhk3ingsYhbPrKg1xjc1wWnr5fUESXtmLLyYkJRoqPKEJ62js",
|
||||
decoded: new Uint8Array([123, 176, 50, 84, 233, 147, 178, 112, 47, 139, 124, 155, 180, 87, 229, 193, 126, 6, 197, 179, 222, 10, 185, 31, 97, 128, 59, 134, 175, 27, 239, 192, 40, 133, 175, 111, 91, 184, 112, 197, 155, 135, 188, 51, 3, 233, 180, 39, 200, 71, 165, 212, 244, 28, 140, 75, 7, 196, 123, 35, 89, 165, 238, 185, 34, 45, 226, 18, 156, 196, 225, 139, 243, 57, 21, 27, 111, 108, 65, 50, 49, 46, 170, 102, 209, 156, 81, 100, 112, 58, 34, 73, 255, 179, 82, 81, 219, 95, 183, 215, 73, 245, 68, 230, 51, 74, 7, 175, 50, 133, 131, 18, 127, 220, 229, 205, 172, 172, 55, 146, 231, 221, 2, 149, 210, 151, 71, 204, 130, 168, 134, 62, 135, 198, 127, 89, 169, 187, 154, 255, 134, 47, 96, 85, 160, 65, 115, 84, 68, 223, 185, 58, 145, 112, 167, 43, 96, 194, 126, 189, 7, 240, 0, 33, 144, 164, 21, 122, 130, 68, 221, 47, 200, 254, 117, 188, 131, 76, 249, 165, 125, 114, 39, 136, 174, 106, 49, 122, 156, 100, 186, 250, 108, 217, 153, 65, 147, 104, 203, 166, 213, 200, 246, 148, 131, 53, 228, 19, 137, 94, 236, 141, 60, 59, 238, 49, 63, 169, 167, 182, 222, 76, 241, 29, 195, 219, 129, 138, 47, 209, 91, 57, 123, 229, 249, 82, 179, 184, 38, 110, 18, 198, 86, 114, 58, 126, 180, 157, 82, 148, 21, 125, 80, 150, 214, 71, 108, 1, 181, 48, 201, 4, 74, 186, 241, 198, 241, 223, 214, 190, 137, 234, 48, 183, 101, 5, 162, 116, 96, 31, 96, 213, 75, 70, 223, 140, 209, 51, 197, 186, 29, 101, 8, 154, 190, 217, 84, 170, 94, 116, 69, 24, 132, 194, 167, 94, 24, 1, 130, 98, 42, 185, 38, 106, 3, 55, 12, 188, 134, 52, 159, 79, 152, 38, 15, 107, 26, 127, 194, 160, 162, 97, 151, 146, 44, 231, 107, 185, 226, 44, 162, 53, 143, 148, 129, 163, 195, 60, 188, 52, 214, 89, 52, 204, 56, 67, 203, 6, 72, 211, 123, 130, 220, 52, 248, 247, 8, 254, 24, 191, 115, 175, 98, 2, 196, 99, 84, 133, 44, 35, 126, 28, 115, 119, 31, 125, 55, 46, 205, 160, 103, 156, 142, 37, 230, 229, 243, 60, 101, 20, 112, 8, 139, 41, 152, 173, 234, 151, 59, 32, 66, 45, 246, 81, 37, 232, 116, 39, 159, 2, 54, 59, 185, 29, 158, 212, 222, 95, 237, 190, 6, 114, 9, 75, 87, 195, 126, 203, 79, 77, 113, 175, 108, 7, 16, 161, 105, 217, 192, 119, 161, 122, 127, 196, 197, 173, 238, 243, 144, 97, 128, 12, 142, 76, 223, 24, 12, 205, 91, 22, 67, 57, 52, 157, 138, 251, 24, 164, 200, 78, 132, 30, 158, 254, 86, 185, 54, 28, 169, 209, 43, 175, 213, 168, 143, 185, 132, 92, 158, 62, 82, 245, 220, 145, 155, 1, 229, 28, 233, 138, 96, 64, 112, 52, 44, 95, 135, 73, 80, 198, 12, 106, 4, 193, 128, 170, 125, 112, 211, 153, 62, 18, 49, 138, 127, 148, 32, 72, 231, 58, 219, 146, 10, 183, 77, 53, 153, 224, 0, 77, 184, 194, 230, 239, 45, 50, 137, 36, 109, 240, 107, 46, 231, 143, 241, 246, 235, 72, 59, 106, 33, 56, 223, 30, 215, 141, 4, 192, 130, 120, 14, 110, 183, 111, 196, 59, 205, 231, 244, 60, 105, 49, 162, 160, 72, 148, 144, 161, 231, 133, 220, 10, 163, 86, 102, 50, 157, 229, 85, 49, 123, 230, 64, 86, 182, 77, 152, 148, 123, 107, 154, 130, 164, 222, 102, 221, 31, 46, 149, 58, 12, 142, 170, 109, 176, 111, 213, 136, 68, 39, 141, 129, 16, 205, 226, 16, 71, 206, 112, 217, 171, 170, 114, 48, 65, 22, 49, 96, 0, 150, 27, 209, 171, 159, 183, 190, 150, 170, 222, 46, 248, 53, 87, 235, 161, 195, 142, 135, 192, 74, 138, 194, 114, 230, 88, 155, 119, 248, 93, 185, 196, 126, 151, 96, 128, 23, 58, 204, 26, 232, 211, 166, 55, 132, 43, 9, 41, 196, 170, 212, 198, 176, 74, 231, 12, 153, 216, 109, 73, 232, 247, 44, 140, 192, 222, 114, 127, 232, 82, 43, 208, 174, 21, 248, 238, 216, 167, 148, 250, 249, 234, 134, 237, 85, 254, 59, 244, 26, 10, 233, 138, 211, 161, 104, 69, 99, 143, 129, 134, 179, 123, 101, 70, 63, 26, 39, 183, 197, 106, 230, 124, 65, 169, 34, 241, 170, 129, 186, 187, 123, 10, 186, 195, 3, 37, 234, 107, 239, 163, 46, 37, 213, 241, 48, 19, 227, 47, 45, 217, 91, 87, 250, 172, 87, 215, 205, 119, 131, 227, 115, 231, 236, 226, 167, 227, 185, 112, 5, 255, 148, 228, 150, 24, 174, 227, 33, 60, 82])},
|
||||
{encoded: "mdC8r1jtY64SpdBv3nERX12WHdXHWLzoStHqHDZF9CnFkG2HhbuCxk9FykJJPwt7U8yFeCV8auCaAPikcEr5XgBceGpixuNXkipuuNHnAzN6xFk9ime3EBP4XqsGLvEnc8L2pW21RuLVM953AXtBJ1LeAbhwkm1iCPZRNLH3mPX9wN8C8F3eTmuSQmynwHMtBZhbvHC748KVTnRduywMGLNLER35F1iyhrsNoAfe8b4Q3xr2dtMBMvyM6p15kVnGsV4z3TpSazoM4U5r7YB3Hm3djvotnpx9xqo58c9L9YZNEt3WL9125R1ujN1MfKrK4jjNaXU8SH7t95XcFVZZkmioGRkfpaPZv8kbSkS1XZ5F13ph1V8Upkq8xsuvEnEZaeb8D5SwL6Djkg",
|
||||
decoded: new Uint8Array([8, 144, 66, 123, 49, 132, 140, 124, 186, 86, 152, 120, 81, 10, 9, 178, 135, 138, 158, 217, 184, 236, 79, 103, 249, 69, 221, 77, 246, 52, 77, 255, 131, 72, 217, 178, 81, 34, 4, 164, 8, 15, 19, 80, 226, 123, 78, 26, 56, 103, 158, 243, 108, 170, 60, 158, 27, 231, 108, 16, 100, 207, 115, 156, 245, 65, 76, 245, 22, 174, 120, 137, 140, 172, 118, 255, 81, 94, 168, 140, 48, 163, 17, 32, 70, 197, 20, 43, 47, 236, 194, 134, 222, 75, 22, 158, 246, 107, 177, 136, 237, 88, 158, 53, 100, 131, 224, 169, 140, 89, 202, 160, 136, 234, 192, 185, 229, 111, 220, 136, 37, 1, 45, 140, 187, 180, 46, 105, 33, 235, 43, 179, 198, 31, 13, 205, 36, 101, 10, 108, 61, 49, 239, 121, 154, 102, 189, 79, 56, 140, 26, 57, 62, 240, 237, 177, 230, 129, 222, 183, 218, 35, 238, 56, 37, 26, 194, 72, 119, 142, 124, 182, 13, 27, 111, 49, 212, 162, 125, 82, 122, 94, 192, 179, 105, 100, 249, 36, 80, 19, 230, 19, 89, 163, 233, 179, 198, 48, 52, 77, 146, 192, 122, 91, 89, 75, 94, 89, 219, 118, 159, 143, 202, 240, 173, 45, 172, 147, 122, 107, 12, 157, 75, 176, 24, 148, 232, 205, 162, 39, 228, 20, 218, 149, 66, 55, 43, 220, 89, 188, 30, 64, 92, 147, 243, 7, 110, 145, 59, 90, 44, 23, 61, 23, 35, 192, 146, 52, 169, 138, 61, 2, 226, 223, 57, 232, 169, 49, 83, 58, 92, 170, 6, 83, 219, 22, 190, 54, 170, 142, 237, 69, 1, 178, 128, 150, 238, 95, 16, 154, 119, 221])},
|
||||
{encoded: "4JvLRK7oWQkwMqV14P637APn89jutDgJvGNgCi1fbgf7D2ZVbmVA2fcNgjCVvJBUtoor1s7Q2mshWnLed4otH9rx3QMYpEbSsBBHZcxddrgS6GSi1qPfsgcQzi9oje8Sw3v7Sw73DpqG5sRpMgPhxzBEDkBCxR5LuM3b13mNbhSD9fv8CW7NKBBb5ni8bgVcUBr9Kzz1uW5PdWxVmxX1FjGgaFSkSt8QeyQfTni4n65hyCubtjRBzmfHN73a4DtZ6Dmhm5QpfWrNiXKc3frChX1swBqvirUBS2nNe2vT6AckvhUEWRnhyPHZdeadp6sGZzLcfrTR9rkV4M1m6DaD7WhscPPctTRz2rHV6NF68YEjHyet7MYxms8yRCyAdhPzzWmVM19ENJUBn9yTM6qfvx1sahAcBSXfdVSa7SE5w5s8Ajybi6Yoz5dRTeYko3tvJTEkK4EnR6hVN4JPXhnAJaHQegeobX4nm2ci9Z7cPtqm8xjDcVddsomGNEGAGrZWVsbXmxD2zN23Shefmn7VNoH4bA5jkAuNkanxziryEygutgG",
|
||||
decoded: new Uint8Array([89, 63, 223, 155, 115, 53, 80, 162, 95, 139, 176, 171, 99, 77, 137, 19, 238, 110, 199, 2, 137, 193, 9, 193, 245, 92, 140, 9, 126, 53, 40, 218, 174, 27, 114, 12, 45, 150, 240, 167, 154, 253, 103, 92, 48, 54, 44, 28, 54, 186, 203, 138, 149, 69, 181, 66, 124, 74, 51, 24, 198, 247, 245, 8, 224, 229, 224, 20, 167, 171, 114, 242, 154, 142, 161, 121, 246, 92, 163, 87, 68, 68, 59, 196, 149, 219, 87, 38, 192, 53, 245, 22, 31, 159, 60, 73, 228, 23, 228, 41, 217, 56, 14, 24, 53, 147, 201, 214, 17, 83, 181, 236, 5, 122, 181, 233, 86, 152, 153, 87, 176, 170, 50, 251, 158, 15, 161, 37, 137, 116, 197, 76, 96, 133, 245, 48, 146, 189, 90, 39, 41, 229, 83, 33, 59, 243, 46, 218, 156, 139, 44, 21, 208, 105, 32, 154, 93, 165, 54, 102, 129, 22, 117, 85, 226, 173, 101, 45, 101, 19, 152, 116, 143, 120, 199, 134, 75, 57, 109, 37, 114, 21, 145, 133, 169, 189, 83, 175, 189, 111, 81, 91, 42, 193, 218, 8, 62, 96, 140, 4, 153, 87, 190, 133, 229, 23, 160, 201, 114, 205, 8, 171, 73, 131, 78, 28, 163, 52, 10, 10, 173, 208, 147, 131, 211, 219, 87, 22, 250, 199, 26, 10, 17, 165, 22, 67, 171, 114, 124, 61, 162, 136, 199, 143, 77, 181, 222, 156, 5, 37, 29, 196, 6, 148, 116, 245, 237, 123, 127, 89, 73, 242, 30, 75, 46, 11, 204, 86, 114, 95, 35, 98, 195, 176, 191, 182, 79, 159, 29, 185, 230, 34, 73, 162, 77, 187, 0, 18, 67, 126, 164, 97, 101, 59, 127, 254, 114, 192, 103, 48, 172, 139, 6, 31, 138, 2, 183, 90, 138, 209, 7, 98, 94, 136, 20, 14, 35, 162, 56, 246, 191, 239, 30, 1, 78, 185, 159, 147, 211, 162, 60, 206, 68, 190, 151, 238, 156, 251, 140, 32, 15, 151, 201, 41, 27, 77, 142, 8, 30, 194, 246, 160, 201, 146, 74, 227, 41, 109, 40, 134, 201, 238, 131, 105, 106, 196, 127, 131, 93, 84, 189, 177, 106, 198, 244, 214, 231, 96, 239, 208, 17, 28, 220, 177, 211, 108, 218, 76, 53, 204, 229, 45, 127, 9, 90, 203, 212, 77, 250, 149, 63, 89, 17, 28, 158, 254, 236, 243, 225])},
|
||||
{encoded: "9hVbuGTZautUQtWX368UTdg9Htsp8o9bnSjQuFHfaua28dFuZMKThfNt6CTJ68Vc9ELjjY11t7BT8vc5SkRdNJrKiKGcq8LXq5Edt3fqQY4uTVmYyPL4NPGi94pmfuParR47Z2ZfspsXHx1gwwk2AXAxBfjAmDbbAdx7hRXRHLbJk4HEWUVLoJianBpeuSv9zLsmDuVKCuse6oApa38dSMz89Dj5XGweiNfUHZ77ngvoysjWYMv1Sdd8vvJo76mjfJSdgF5vRj8nzt458E24inUpGMMyDrCnjwziJs78i2Dj2e8VA3h2sa27QyNURo5oKs2QwfKviWQaFKBp2FNt4oc8vujuf9FfGGoVCpas4kmwFA8p3J2SDcxpjnciYo8szcn8sx8bqAuQ9PCf7vxp6FWnD2MMvAMg7EcbGFU4FqLb4Hpmy25fYJTn8TBHy2L25KSc2qxg73E1K8nzFBoYjuqjGSRmqkUkybVFmf3sSS7Z4arwM294vm3huTomT9jodg2nf1yWAtD5TKbvzMfmFxJ8rZUS9YQDhWwmv7hN1v9HgVxZKocAtiNYWn1pwKxVJgYQmdeMgCBgrAgpGCWsVfGfdFknNN4MWheHne2iggHx5RprFJ5m9rmgdbSmVtMpXoBZtqMWC7n7jbq6tsGGARee6MTr",
|
||||
decoded: new Uint8Array([84, 25, 152, 99, 97, 119, 239, 225, 46, 52, 32, 22, 145, 225, 45, 236, 179, 116, 11, 0, 162, 108, 182, 105, 63, 223, 161, 118, 31, 80, 201, 225, 8, 41, 121, 48, 1, 208, 38, 16, 34, 145, 26, 231, 145, 185, 117, 156, 24, 201, 198, 198, 249, 36, 16, 39, 104, 26, 148, 121, 6, 134, 50, 107, 92, 166, 209, 252, 107, 219, 165, 118, 43, 199, 143, 143, 15, 106, 174, 237, 216, 96, 108, 167, 123, 219, 252, 82, 121, 26, 245, 69, 186, 221, 30, 22, 140, 103, 246, 110, 103, 186, 170, 94, 175, 229, 71, 167, 31, 143, 164, 54, 62, 65, 41, 106, 226, 162, 47, 24, 228, 196, 104, 169, 83, 182, 149, 166, 42, 169, 55, 201, 50, 133, 93, 161, 49, 193, 100, 39, 70, 85, 3, 222, 205, 109, 87, 227, 189, 217, 206, 235, 245, 216, 219, 218, 153, 147, 126, 42, 85, 215, 249, 58, 117, 70, 13, 130, 5, 199, 119, 10, 6, 187, 160, 141, 197, 191, 254, 0, 38, 169, 148, 141, 199, 122, 115, 103, 37, 204, 47, 242, 95, 181, 134, 183, 78, 18, 4, 2, 29, 6, 88, 27, 196, 133, 185, 94, 29, 230, 127, 162, 86, 18, 186, 163, 164, 22, 27, 190, 164, 140, 22, 7, 227, 186, 26, 132, 224, 128, 126, 237, 138, 9, 191, 184, 65, 165, 16, 137, 240, 147, 21, 197, 105, 103, 192, 45, 79, 178, 135, 63, 118, 101, 145, 137, 242, 56, 127, 46, 63, 49, 255, 241, 113, 37, 72, 12, 21, 111, 207, 185, 54, 61, 47, 105, 56, 12, 184, 147, 121, 131, 111, 32, 192, 215, 1, 2, 149, 31, 212, 87, 62, 174, 21, 8, 93, 147, 15, 83, 179, 99, 18, 121, 14, 19, 171, 26, 127, 231, 191, 246, 109, 163, 11, 209, 155, 214, 13, 173, 78, 58, 75, 13, 24, 113, 14, 83, 251, 224, 121, 137, 235, 38, 49, 180, 181, 227, 48, 186, 23, 87, 150, 169, 177, 103, 118, 41, 46, 241, 20, 81, 32, 186, 199, 140, 165, 139, 174, 236, 139, 25, 249, 112, 243, 56, 208, 234, 139, 223, 169, 174, 79, 112, 111, 92, 234, 136, 85, 8, 195, 78, 214, 21, 67, 238, 3, 47, 132, 77, 249, 21, 143, 208, 252, 175, 43, 14, 247, 57, 73, 21, 108, 150, 161, 58, 155, 55, 182, 127, 223, 81, 26, 76, 49, 12, 131, 148, 47, 107, 247, 96, 104, 73, 235, 63, 160, 38, 39, 216, 94, 227, 172, 146, 155, 33, 148, 101, 7, 66, 99, 205, 139, 139, 120, 252, 37, 184, 116, 26, 255, 22, 180, 66, 130, 59, 173, 101, 1, 83, 122, 250, 30, 127, 248, 101, 2, 43, 27, 71, 45, 18, 156, 102, 103, 128, 107, 134, 162, 253, 14, 38, 255, 137, 245, 226, 61, 172, 157])},
|
||||
{encoded: "25BoqoZ8cXTghFQMovjsdKnbxUpmp9Go1ck1cuD36XoUL295HNXKkRbBzFd3fdQ8Qn9ayJgTsxiGsjf2nyRRoDpaoqxaq9dDMUugpRQ5TTigynwdSA65YzNr2mrp1s9ioSpLhuyK1sTCnNHwEby6JiH6pbPi3kbUUfvTq8ncciLu2GcS5ensza5QUJbstnTjtjjLBpL1zopj3XGd8x85R3yWj7ZNciPKqaY3Ej6ECEwnanMjVmjRVQ7mLhkFYtmdixBZALjDprobXrRYc5tdYWuod21f4mbSxD9KjMcNbAnfKb2AJ611LDiP4q2JAcSDhRBecbMt5nKwLo7LkT8uyxNW8aHbS6Cpps8VQjuPALGMDhcs7rEWyyrtkrKVEDoinUdBLxZR8iqFPyXZj7owxGXxWbxkekS5yWYRRzmppGscG7Q69fcpj5DfEezxnFgkBMcghnQP64UNjMV1tKDG7QmosGxi5fnTe7mctwkkVv5dfbQ3obCNiH5uDupq493JvL4CdVaG3FXGVFgweH8u8S36tByf1dUdVdobFMe6auVZVCTTAtAExx9SUxLs8WxtMwJeyY8eMKYmYAXxmPr7VpRzUX397pH6WUDpVLorrQ2ChqNoxHSGrhpo7U2Tc8QPaZ63Je6pfmUbxi3uxb6DtbTiCCQxg34vUQ8Zw5HDw89oEykVpVjhUtpEdyTHgh7qBYbi7CLESSULmZpPQf65f4XDVCyUZo5LtveyTY5KMBzb2HTdQ",
|
||||
decoded: new Uint8Array([39, 117, 76, 88, 219, 110, 120, 139, 76, 127, 108, 254, 51, 96, 81, 212, 173, 249, 164, 123, 176, 205, 126, 70, 222, 217, 184, 85, 91, 85, 191, 104, 179, 211, 3, 188, 53, 248, 141, 185, 13, 221, 187, 33, 149, 109, 237, 146, 162, 130, 138, 229, 164, 151, 66, 117, 129, 244, 58, 28, 168, 61, 235, 174, 180, 197, 220, 231, 192, 25, 211, 44, 189, 16, 68, 219, 190, 139, 172, 194, 66, 12, 104, 76, 116, 230, 24, 4, 107, 212, 231, 152, 253, 200, 135, 167, 6, 108, 160, 81, 139, 151, 71, 105, 23, 197, 127, 253, 203, 102, 196, 180, 105, 167, 76, 86, 191, 148, 17, 225, 169, 201, 15, 22, 68, 146, 25, 5, 125, 159, 157, 196, 52, 106, 247, 133, 15, 32, 212, 228, 27, 241, 221, 219, 235, 207, 146, 97, 72, 221, 226, 77, 188, 156, 73, 32, 102, 109, 92, 216, 161, 223, 183, 212, 211, 58, 115, 91, 97, 165, 28, 100, 138, 164, 174, 157, 77, 186, 20, 194, 143, 127, 157, 162, 249, 92, 174, 67, 135, 49, 145, 252, 155, 70, 206, 123, 177, 102, 90, 118, 204, 98, 27, 224, 193, 140, 207, 116, 52, 102, 108, 129, 95, 234, 39, 6, 30, 145, 198, 255, 153, 179, 218, 160, 112, 89, 53, 32, 173, 68, 236, 9, 228, 22, 78, 113, 164, 227, 135, 233, 100, 30, 24, 9, 53, 224, 12, 208, 122, 126, 187, 183, 73, 64, 154, 36, 234, 120, 207, 200, 168, 90, 245, 129, 197, 64, 104, 14, 142, 0, 79, 223, 117, 164, 195, 92, 109, 34, 23, 90, 15, 40, 91, 167, 186, 9, 16, 142, 16, 60, 252, 68, 65, 39, 200, 48, 16, 222, 171, 196, 102, 59, 107, 70, 212, 105, 69, 121, 19, 183, 193, 220, 152, 102, 145, 113, 205, 136, 5, 197, 216, 173, 118, 46, 172, 26, 193, 15, 5, 231, 159, 194, 144, 69, 207, 20, 227, 45, 132, 117, 216, 96, 214, 136, 47, 187, 193, 7, 209, 81, 253, 177, 148, 175, 253, 2, 174, 161, 164, 211, 179, 43, 212, 213, 133, 251, 17, 122, 92, 128, 4, 196, 22, 144, 97, 2, 162, 180, 6, 186, 113, 68, 130, 60, 251, 150, 48, 37, 161, 220, 24, 60, 31, 187, 120, 76, 239, 166, 35, 67, 146, 5, 250, 252, 32, 21, 144, 88, 200, 86, 196, 197, 217, 103, 47, 175, 51, 63, 234, 95, 158, 221, 6, 39, 126, 110, 149, 211, 156, 98, 90, 204, 14, 230, 135, 115, 103, 38, 196, 87, 220, 84, 249, 142, 228, 242, 68, 22, 239, 108, 156, 149, 172, 249, 108, 50, 120, 60, 147, 184, 72, 163, 160, 165, 9, 3, 14, 194, 11, 42, 90, 60, 104, 136, 9, 99, 79, 55, 102, 83, 102, 199, 108, 197, 118, 8, 69, 246, 121, 28, 95, 137, 61, 201, 181, 169, 199, 211, 85, 143, 45, 168, 186, 101, 189, 24, 102, 179, 12, 216, 125, 63, 38, 252, 72, 98, 169, 53, 199, 183, 216, 69, 156, 98, 174, 190, 148, 84, 141, 224, 75, 250, 234, 201, 149, 134, 38, 16, 200, 180, 230, 177, 22, 222, 158, 215, 51, 58, 136, 233, 247])},
|
||||
{encoded: "5pzPXLZvWWx6q983z6fNtd5ouqiV2HAcdksiuqZR5g1g8g93VHrtHuh61HhH3xmdgVn5Kwek31TEanoPHgXVNNhWyX5AhMMpxPgdQFyhVHLkKQKARNTJhSXNDfx2M5LKLLoBtQUetYdxstTyGmptYBu3x3J8824huuam5yj4VBLaejA7jGkjwcWapfgEvn54SJJgVk3MtjhEvtbAxGXQrdaAGgQq3emi5PUZJfA622Vj9t4MdnGpQH8o3Uy5tBH98h8jrw857X78fRmungf2mpefxJ8nUbFuPdXYH3uuYymX8ypf1KisdAdtEHciRGdhzRDciF8Yb6Du1PucX5jo1Ewu9bFxovHwDVTFs",
|
||||
decoded: new Uint8Array([209, 190, 82, 189, 104, 97, 54, 251, 55, 251, 66, 203, 18, 95, 121, 57, 178, 227, 100, 104, 231, 39, 241, 74, 110, 120, 255, 163, 248, 148, 11, 106, 220, 99, 74, 226, 90, 26, 70, 50, 102, 80, 19, 119, 39, 170, 46, 118, 219, 59, 81, 185, 21, 242, 152, 91, 230, 84, 199, 239, 170, 115, 87, 232, 87, 185, 80, 163, 29, 215, 15, 168, 80, 115, 89, 98, 133, 72, 4, 60, 163, 247, 162, 106, 20, 248, 154, 68, 214, 130, 31, 246, 1, 179, 198, 115, 78, 207, 240, 187, 42, 151, 231, 167, 34, 27, 77, 223, 227, 153, 240, 43, 129, 45, 21, 203, 24, 99, 26, 62, 221, 93, 254, 156, 216, 147, 76, 27, 254, 35, 209, 199, 84, 92, 70, 139, 83, 243, 70, 236, 176, 220, 50, 218, 201, 80, 103, 107, 155, 26, 84, 41, 224, 1, 181, 150, 52, 195, 105, 235, 21, 123, 173, 108, 99, 115, 232, 231, 144, 23, 128, 96, 158, 32, 188, 126, 145, 60, 73, 8, 202, 109, 117, 18, 172, 20, 160, 39, 207, 41, 92, 134, 171, 44, 41, 84, 62, 7, 2, 123, 241, 116, 216, 132, 55, 140, 249, 122, 254, 211, 151, 45, 32, 11, 227, 143, 45, 95, 243, 56, 91, 222, 78, 226, 129, 217, 85, 248, 58, 150, 211, 217, 55, 131, 230, 78, 59, 42, 205, 185, 247, 9, 185, 240, 153, 105, 68, 64, 42, 81, 162, 144, 32, 196, 156, 49, 199, 5, 8, 62, 102])},
|
||||
{encoded: "2UZLgKwFNuffmyEwQcUZiPmGov1H52pDjyyXSLeFaUTidoMFMjJTA8KCopWHCtABHjvCiwA1Fs6CP4iVUacmYQr3PFx1cdRYQpEmaikSwJnjAQTpZecbZLt7JhcKokE3H8VEywVCbZqqwoo7ik8k7DHAcddXW6LDjouWD839ZKU3kfw6eUhEnrvhYRjavh3T4sDQNTZKM1E2hmUxquthRV7MeQY9n1Tf11Wkty82XsJc9u7kRKvYS3qU6oei6EZMGTgsqzVSRmbxGB8YgkqhGPWE7YwiuJMVebb5g8WKY4x4a8o4shEQrwwUmUwc18JsiCkV8kF9d85LZz8oJuevEJ2Hc6Rew6qaqPrws1eTo8Ffiid83M9Gv8XmvGGhyUM3fL8HKRSvGdssDyxwsaWWhNeY6kLM4zVXqtLPaAqJHRCnDobGWj7JL1SV4mVbHZVnNtZfuqXXJAFqGRNQntkhPfYoQmgbJTGTh6GMi2HHkLuRuDqMvxdQwnEvbBqGxqGNXe2pM6Hh94ZEsgWrkFAoCDgX7FgnWTMduKMnFZhox683efdMF26gF4aEms6XB7HYLcRKiCFHRAKiXPxzhJLDT9iKQnH6qKh3ASSxCi",
|
||||
decoded: new Uint8Array([181, 107, 157, 183, 82, 0, 124, 2, 10, 234, 212, 206, 115, 37, 122, 10, 75, 51, 22, 188, 127, 84, 37, 153, 118, 3, 176, 42, 59, 180, 123, 130, 188, 20, 128, 70, 91, 88, 199, 87, 74, 142, 85, 73, 184, 213, 154, 76, 47, 138, 95, 41, 226, 253, 101, 5, 165, 60, 22, 242, 247, 16, 124, 91, 102, 96, 14, 242, 125, 126, 204, 207, 235, 19, 230, 187, 58, 248, 144, 135, 177, 126, 14, 201, 44, 4, 10, 186, 70, 126, 221, 177, 125, 35, 211, 245, 42, 93, 171, 244, 24, 20, 232, 248, 253, 196, 232, 47, 246, 79, 188, 30, 81, 231, 1, 199, 229, 33, 92, 91, 170, 180, 234, 62, 245, 210, 145, 166, 193, 0, 140, 80, 33, 103, 219, 243, 93, 19, 106, 199, 243, 197, 137, 231, 59, 208, 171, 124, 205, 163, 155, 74, 82, 86, 54, 124, 234, 227, 134, 36, 224, 46, 54, 192, 232, 47, 162, 50, 0, 193, 106, 44, 45, 124, 98, 191, 163, 203, 114, 10, 105, 138, 244, 152, 99, 86, 172, 3, 20, 131, 226, 224, 98, 185, 142, 89, 165, 214, 6, 151, 38, 131, 230, 255, 150, 212, 79, 173, 35, 153, 235, 154, 58, 88, 16, 41, 250, 176, 140, 161, 128, 202, 142, 82, 56, 44, 88, 17, 195, 235, 62, 22, 126, 21, 221, 9, 28, 49, 166, 35, 73, 44, 113, 220, 245, 21, 53, 187, 45, 10, 108, 191, 229, 19, 62, 206, 201, 27, 159, 219, 231, 7, 99, 146, 211, 10, 115, 38, 148, 10, 156, 234, 204, 209, 150, 200, 212, 23, 81, 133, 178, 218, 39, 177, 24, 163, 153, 137, 46, 249, 186, 97, 130, 120, 201, 16, 102, 171, 67, 159, 54, 51, 25, 19, 114, 55, 123, 141, 188, 93, 144, 64, 254, 140, 99, 148, 26, 49, 120, 72, 164, 166, 129, 50, 122, 233, 92, 228, 238, 151, 181, 221, 40, 215, 172, 26, 64, 63, 38, 74, 185, 27, 135, 195, 116, 82, 138, 163, 9, 111, 123, 53, 234, 180, 192, 44, 131, 82, 223, 22, 171, 85, 183, 68, 198, 249, 236, 133, 127, 85, 5, 196, 71, 200, 38, 85, 3, 242, 128, 99, 174, 9, 108, 220, 202, 170, 247, 128, 27, 117, 66, 128, 226, 38, 7, 14, 167, 155, 188, 32, 199, 17, 25, 91, 236, 3, 5, 97, 46, 233, 65, 156, 5, 147, 235, 0, 12, 47, 77, 91, 68, 108, 255, 9, 79, 34, 219, 188, 31, 25, 252, 109, 84, 26, 236, 227, 17, 199, 188, 83, 158, 156, 29, 241, 234, 109, 219, 18, 251])},
|
||||
{encoded: "Xcm3TjyHjFXZJ6eFBkTKRx16eV4bhYC67NWra2XrcidXirngUNJZmSaM3k1PqLvwMWiD8Vmp9qys4iqckFw3aKRxPgb3zMW9z1WrvN4DjDkPBhdELGM3e8ihKWXhRmvgdskSkYpecfEVe5koaUmDeWtxRbcauNeRwbPnnaMgNfcJPs76RSomfY1PLWNMkXb9NDWTi7gSJaaAU",
|
||||
decoded: new Uint8Array([249, 192, 244, 12, 243, 54, 241, 32, 41, 103, 141, 208, 145, 110, 188, 199, 108, 76, 67, 108, 159, 73, 179, 54, 97, 243, 86, 66, 57, 203, 53, 163, 201, 137, 42, 220, 29, 90, 172, 171, 198, 74, 114, 213, 75, 92, 60, 128, 82, 226, 174, 21, 44, 12, 100, 34, 17, 59, 94, 248, 128, 99, 170, 101, 241, 151, 41, 127, 74, 3, 60, 182, 65, 54, 249, 253, 93, 70, 29, 20, 216, 181, 227, 128, 176, 154, 178, 169, 238, 252, 125, 136, 102, 42, 81, 194, 28, 109, 164, 22, 21, 200, 93, 97, 221, 192, 55, 1, 171, 35, 195, 198, 173, 131, 246, 33, 95, 94, 218, 252, 191, 196, 73, 147, 173, 63, 64, 154, 197, 111, 17, 200, 12, 99, 193, 19, 254, 130, 102, 89, 32, 47, 236, 82, 224, 236, 122, 34, 241, 97])},
|
||||
{encoded: "DJx9PrFU7ZMkrz",
|
||||
decoded: new Uint8Array([219, 25, 223, 214, 111, 135, 61, 215, 159, 255])},
|
||||
{encoded: "U2KcLKzMmKKibFV2ZLheNFPtTL9sJRERAwSrYUsoWRWosHRPCHjRH1oGDC4w2GvE8YXUvkPLcSKdJzKszBNoh6u1ohqfYvZpRxZns2vYJJseRYHPaJv6dDYWTtoHMxDNQ8wbovyhravTYVLr2pY4X7CmXLNbMX9ARy6q941gZzr2MXiSs3AFWy1J1E8ADPnL536Tioz5RteTMHgD7oJ87zB4yW7yN9grrCdyKaibFsMLMnz8yEjWu1DCNEaYJqYzwpbhsLDZShWC65t5ACVEgdkgCjfJyeQRQyqrYWsXpbe22cWAL1XWLSYCXkDAhqv4p3afSnmgTdDWruWyippmEV99PrT3eMZstFxiUUiwms4c82FvaSue2XtMcAF5tWsMudi6XQRUwJsbK8y7sY2QfbwLkJVqgJkw2CQ953ToXT4ny8vtg6T1owrYRzs4pi411Jpym38XaurhwBapN7so9hDYc5w6p1FYn9vobYwKgR3iDVZevPP4Rt9GGEiqh2QycVyH648qVVNgTtRpSRSDS3hakqJKhHtHYgPr67ZKFH6K2nUvyP8FPvMyNd82R3SQps6cR6Jusdhs4scsJwdGa6GiUtcDn2aPoqCT1KCFELKTuLz8qMRuZppEBiEoFZqoZcZ5NzVTE1nwahbmM6RdrRogtxHL2aDKY3mD5q7jMVKqWjWtjwwh1rbV6CgqWPhYtMcBGuyHJNYCHGSDBAm3yyDsZRcj8YkDcH8dGR1L6d6g8CBV2jm45Eg4ExZJEPXENRXjx7M9kUpYYPRn3a6radFkM9hYEGtqSWpXz4GuPrPyU5WyjsCpHMX15bjTmgNAx6TZFV91TMCJtHwC7cUvnpZbVQFQugp4RD7w7Fyh9XLPd1s4pmHaqUqGpywfxmLyr4RzSRUhwinu",
|
||||
decoded: new Uint8Array([61, 153, 175, 231, 46, 152, 50, 143, 89, 173, 232, 215, 0, 11, 191, 87, 24, 111, 203, 111, 164, 239, 174, 23, 54, 17, 24, 101, 154, 106, 108, 80, 164, 63, 79, 42, 128, 248, 182, 172, 188, 153, 151, 113, 246, 55, 178, 5, 214, 225, 186, 73, 71, 63, 220, 102, 0, 122, 123, 81, 183, 255, 9, 172, 9, 32, 122, 141, 123, 163, 81, 201, 127, 10, 61, 159, 237, 30, 91, 210, 115, 117, 6, 243, 106, 67, 61, 124, 217, 0, 5, 29, 153, 208, 255, 69, 21, 120, 17, 188, 110, 16, 8, 220, 192, 48, 120, 238, 24, 150, 19, 228, 111, 126, 82, 128, 160, 244, 144, 173, 106, 178, 189, 76, 190, 88, 93, 217, 157, 79, 160, 187, 66, 114, 159, 141, 164, 106, 72, 64, 206, 105, 220, 70, 18, 21, 115, 28, 243, 102, 63, 12, 92, 86, 98, 186, 83, 57, 86, 203, 155, 120, 192, 103, 252, 0, 25, 75, 124, 30, 10, 125, 255, 243, 114, 74, 190, 13, 180, 9, 156, 5, 119, 144, 156, 232, 213, 38, 96, 122, 208, 169, 68, 227, 238, 214, 145, 37, 155, 169, 14, 219, 109, 158, 156, 67, 82, 20, 240, 148, 217, 221, 110, 249, 244, 102, 77, 252, 34, 250, 75, 75, 202, 206, 195, 180, 50, 143, 159, 197, 137, 0, 90, 47, 168, 25, 190, 6, 122, 68, 96, 10, 251, 224, 190, 186, 88, 85, 5, 68, 30, 57, 34, 214, 138, 37, 231, 127, 178, 237, 234, 111, 194, 4, 49, 46, 193, 147, 184, 239, 220, 191, 194, 4, 33, 85, 186, 139, 27, 3, 230, 15, 26, 117, 5, 84, 144, 150, 78, 76, 6, 53, 218, 121, 98, 189, 71, 218, 210, 145, 161, 58, 2, 191, 195, 79, 74, 52, 126, 136, 228, 193, 78, 97, 200, 139, 77, 185, 48, 1, 78, 135, 175, 244, 64, 58, 20, 234, 123, 22, 87, 39, 151, 25, 1, 25, 24, 194, 177, 74, 109, 148, 197, 207, 124, 183, 171, 25, 170, 77, 11, 157, 96, 190, 72, 219, 172, 114, 226, 107, 1, 7, 25, 3, 167, 6, 231, 244, 206, 63, 49, 166, 84, 186, 198, 152, 35, 159, 170, 234, 154, 75, 43, 86, 195, 141, 27, 144, 241, 12, 10, 206, 143, 25, 205, 191, 106, 62, 169, 35, 61, 110, 15, 161, 123, 198, 252, 22, 236, 246, 145, 61, 89, 210, 204, 136, 163, 70, 155, 199, 113, 95, 66, 59, 199, 159, 86, 20, 36, 233, 154, 225, 19, 204, 252, 192, 213, 171, 105, 247, 34, 49, 73, 142, 124, 54, 243, 20, 234, 46, 128, 17, 11, 49, 138, 83, 23, 171, 183, 156, 123, 36, 126, 242, 147, 194, 248, 101, 99, 28, 42, 27, 190, 187, 73, 142, 65, 72, 113, 140, 136, 23, 65, 161, 35, 45, 84, 152, 106, 50, 247, 164, 147, 227, 235, 58, 238, 243, 224, 253, 49, 100, 191, 9, 15, 95, 110, 117, 125, 163, 206, 81, 132, 8, 220, 28, 161, 43, 119, 56, 129, 213, 182, 137, 163, 102, 205, 239, 173, 57, 29, 229, 254, 145, 127, 92, 247, 206, 6, 0, 203, 115, 130, 83, 58, 200, 203, 220, 115, 28, 211, 243, 185, 140, 0, 252, 39, 175, 226, 16, 15, 224, 18, 88, 32, 222, 195, 17, 244, 18, 162, 229, 7, 113, 139, 210, 142, 177, 112, 199, 122, 203, 184, 18, 202, 73, 192, 191, 113, 198, 172, 66, 167, 135, 23, 73, 199, 85, 43, 37, 207, 251, 197, 191, 199, 29, 24, 200, 61, 112, 156, 164, 158, 237, 223, 250, 246, 39, 66, 118, 140, 211, 15, 230, 153, 106, 189, 85, 235, 8, 248, 243, 224, 157, 61, 27, 178, 254, 224, 109, 151, 65, 172, 23, 170, 249, 190, 21, 91, 20, 74, 124, 9, 225, 225, 116, 41, 236, 213, 99, 156, 181, 148, 149, 122])},
|
||||
{encoded: "5q4y6TYJ3DNQCECC1VWiFKcgCy5SupVSBGRzw7T2NkaS5N1wFaf163mzGoJKGo7HkShsxRoegszQjCzYiu114LqbRnxJVXTTYQDu4yckk3UAhdaKjMbhxRtSHM49xoxAoxjsgyPktqdxEom2vD9xcCLg9vBBqjvuwumssVn7oJN6xm7S9WD95TFH2sW6w2t3eb4dmfQdHomvxjY2m1maTHduyFoRygrYV9RiDBBtBEDeE8psT8enDwME2kWmgvMEg92FYEkVqqcErByf3i9UPjbov4KA39KESKNDhMM5vKvamTGx4JYdUAZJHNdXieZZhcPSBj9U847VBV7rYqDgv31D3FMsVWLGmz5wBdnFnuVesEEmENYxvw3pFERj4zkqm7mTvbvScBaegUkjjEsQMLqzbHBEryU377VqbYYQqhdmPWw3VE2BddCPb8kRTrmhR6PS8TYaBHfsQEAUDdJU4bpKLN2W5A8KJ22zNDWU2Yu1LyErxVTDLAd1SDRQpoKtvi8HSQZhm2rGfPVesxphDobyseVHqoWXhJLnd6jWfhbPqAa3ZqCUNuD3MQQSepzr3Up8YqDVTUtWUU243DmnrbiWQf8bprf7PTU9R9SMAfKSDq5byLx4DJsopVhcRfdAD",
|
||||
decoded: new Uint8Array([166, 131, 86, 20, 172, 232, 163, 110, 202, 176, 12, 75, 208, 150, 186, 185, 163, 236, 105, 85, 79, 155, 208, 54, 18, 12, 203, 218, 75, 21, 251, 34, 131, 140, 209, 241, 179, 233, 254, 254, 106, 89, 47, 39, 234, 212, 80, 50, 237, 124, 62, 252, 232, 8, 50, 60, 141, 155, 137, 247, 182, 216, 214, 28, 122, 154, 24, 215, 105, 101, 179, 117, 163, 86, 212, 123, 77, 53, 40, 19, 68, 74, 192, 57, 232, 112, 22, 45, 148, 230, 18, 202, 5, 126, 127, 224, 27, 16, 142, 202, 233, 88, 41, 26, 197, 109, 11, 88, 248, 125, 199, 235, 216, 74, 29, 106, 221, 136, 73, 90, 53, 50, 211, 205, 214, 59, 135, 152, 22, 69, 215, 183, 82, 196, 155, 136, 233, 246, 162, 14, 210, 136, 127, 140, 194, 83, 224, 252, 32, 174, 198, 146, 71, 111, 183, 182, 88, 115, 152, 176, 42, 212, 226, 163, 238, 193, 141, 29, 12, 186, 166, 150, 235, 103, 170, 119, 110, 175, 208, 164, 130, 154, 163, 23, 65, 237, 202, 11, 212, 179, 0, 37, 184, 95, 190, 125, 18, 129, 78, 174, 190, 203, 104, 36, 239, 98, 119, 166, 22, 129, 239, 247, 163, 245, 113, 179, 163, 199, 196, 102, 91, 76, 124, 153, 178, 119, 10, 241, 7, 161, 151, 237, 46, 107, 239, 63, 7, 25, 35, 184, 241, 250, 19, 83, 115, 153, 185, 186, 42, 91, 118, 231, 28, 64, 22, 123, 30, 199, 205, 137, 136, 83, 93, 223, 72, 198, 75, 161, 50, 172, 165, 192, 166, 255, 255, 191, 34, 239, 100, 31, 130, 83, 4, 177, 198, 104, 33, 8, 15, 166, 56, 227, 146, 186, 4, 172, 18, 121, 39, 147, 178, 136, 43, 45, 113, 90, 58, 36, 209, 74, 134, 248, 224, 246, 172, 171, 37, 22, 135, 202, 175, 109, 212, 207, 47, 34, 196, 20, 205, 139, 202, 80, 39, 232, 222, 185, 18, 55, 98, 203, 99, 198, 232, 252, 150, 34, 132, 55, 202, 65, 5, 206, 248, 252, 36, 138, 160, 147, 27, 45, 232, 220, 57, 237, 231, 64, 73, 42, 93, 164, 120, 169, 19, 23, 38, 137, 6, 109, 236, 54, 128, 121, 196, 18, 153, 129, 62, 107, 56, 116, 144, 56, 187, 59, 119, 98, 208, 211, 24, 187, 92, 178, 117, 39, 74, 152, 96, 7, 96, 108, 1, 147, 95, 207, 181, 71, 156, 152, 221, 123, 45, 110, 236, 245, 28, 34, 180, 212, 69, 59, 73, 41, 135, 124, 171, 111, 161, 245, 210, 117, 198, 62, 80, 182, 188, 166, 42, 220, 180, 183, 226, 217, 90, 91, 143, 253, 181, 138, 21, 131, 163, 67, 182, 44, 108, 124, 246, 54, 118])},
|
||||
{encoded: "5Q7sgDtQxi3vSB15QWaqSXFgfMwszezRRDgpgam2JTbmC1XwepTroKzG3uNbPJcQLWefCBmks4GVjDXuXhTA34AP1KpsnsnL1Q4kqqBBr81NZ1S4aopyDRpaKtHYk1ZWfXt77RPBSdHp1qsJXPReDDny6Bitn2ZNp5edodo1hf9p7eH8dFsPhMNZL7dVsUbVTwQH7QB8qyAUQTwZibrjgm4ParqCfZKjFnV16tjrnQkvuyXa9wFQqfMHBR6JxyWWwzMygS2YN48n2LXYbBDvoZat7pbxhf6vQofKcLWYoo9uqVmsifQtqbS9iytBxVHU19zEK1gnWFNDreZEvgdo5tDCw7p4qGZ5sAQyB51oqDjiLRoBm7hjYq3tjxbSsxXTaEx6ToL6NwnQQ5dAtySdCAxWXh91fedNj3ZMDfroeq3YsekHPmouXjVnAA37JW43uKLhB5bRSa5aM2Cyz4VbdxA4Y4DqVJQnJPMu2RBQaycsQEXuKb2gKXpn1QcHUKywsow3PPgdDxshHb2rM3iKToFqdQRjXKoBwaykCnD6vC88Ap25ahCC8hryeeEMiPJNxpgaVRbsc2LZwBwMA84xRdz4Y5RKVDFJjHiXwT4RPwdxqLRBYbXbN9m3h5vH64H8ndkbk4GFxditfxv2v4yPpfPVxnJKL8XsapuakcWw6sChP7kcozuw6rYdoCzRLrxpUFwtmLSYLF69zqVR1mrQAkHqrhDUPFVS8qGcTfVjttFnZBr6mXxd99J8bG6pYKTjA8X8b1vqFqV1VYyjv4oRrDP8QMkX62PvpT9c2DQrHezLEcgB79J32qtdTs9GiwQZBJHP3e1RMti7VbpC1CWMezCrnx8kmiRxkiTTntLYVkQ2TJJXJ7X9Mgjn4uYXXfv7PuF49axTy6mKfkNQSFTeSiLgWjhjjf8pYJFPb7SQx2cZqoBGPXUHHqbHXdrtVF9UK6os6XB4JPJQrB4q89iw1enp9hjzH43iubvKwzNSPbYcW8vhJkbo7CTx3URogAcHBjSawxGuUhQobjRgC8zUjzKXDsCebEP7Bsrx61DSka5h9cSPC4RiygkWQNQiTD",
|
||||
decoded: new Uint8Array([66, 23, 197, 155, 164, 202, 245, 122, 194, 28, 234, 253, 17, 156, 142, 99, 113, 98, 157, 73, 228, 100, 198, 96, 194, 206, 188, 79, 47, 211, 43, 45, 244, 22, 5, 112, 77, 113, 235, 175, 195, 250, 43, 33, 164, 251, 117, 33, 197, 239, 166, 194, 165, 251, 8, 39, 158, 73, 35, 53, 80, 107, 109, 64, 42, 67, 136, 229, 98, 17, 173, 41, 98, 77, 42, 255, 57, 84, 83, 108, 94, 197, 222, 126, 227, 139, 51, 65, 199, 71, 248, 41, 249, 154, 75, 94, 58, 51, 195, 140, 58, 119, 131, 11, 236, 131, 34, 189, 133, 11, 91, 106, 168, 50, 235, 93, 25, 19, 247, 159, 119, 192, 233, 105, 26, 218, 240, 134, 168, 187, 38, 210, 130, 254, 58, 70, 240, 14, 10, 133, 19, 12, 185, 47, 99, 197, 165, 148, 238, 66, 223, 221, 98, 248, 244, 140, 240, 197, 121, 237, 70, 67, 122, 231, 195, 33, 202, 128, 105, 131, 112, 216, 235, 214, 126, 34, 203, 255, 208, 82, 93, 119, 255, 172, 131, 189, 214, 43, 90, 7, 181, 142, 83, 44, 18, 204, 178, 67, 34, 116, 109, 172, 166, 246, 162, 166, 105, 148, 148, 115, 155, 35, 72, 16, 83, 58, 9, 97, 0, 165, 120, 137, 185, 106, 46, 118, 97, 205, 70, 128, 142, 97, 129, 89, 28, 104, 111, 188, 128, 91, 131, 226, 78, 219, 10, 118, 159, 127, 240, 106, 222, 115, 116, 186, 253, 187, 240, 34, 230, 42, 189, 224, 104, 20, 224, 195, 138, 130, 56, 140, 25, 79, 242, 84, 251, 117, 102, 87, 121, 136, 212, 38, 34, 244, 135, 6, 75, 25, 201, 33, 187, 87, 246, 58, 78, 41, 29, 26, 65, 124, 155, 165, 34, 110, 193, 92, 252, 213, 175, 190, 160, 132, 116, 84, 91, 83, 189, 132, 164, 107, 214, 117, 119, 224, 133, 64, 86, 186, 119, 74, 182, 89, 183, 199, 40, 127, 186, 114, 139, 60, 119, 101, 228, 25, 225, 122, 185, 217, 51, 171, 209, 73, 37, 115, 97, 88, 87, 22, 199, 71, 223, 1, 129, 31, 179, 132, 41, 70, 25, 91, 46, 169, 30, 138, 30, 34, 63, 120, 208, 200, 186, 227, 161, 151, 110, 191, 120, 86, 228, 104, 236, 208, 207, 122, 67, 0, 52, 86, 169, 181, 210, 84, 105, 209, 143, 206, 178, 216, 41, 139, 20, 39, 238, 219, 176, 198, 236, 179, 54, 92, 104, 91, 172, 55, 212, 36, 120, 85, 93, 129, 54, 238, 67, 157, 165, 168, 10, 32, 40, 173, 144, 203, 193, 199, 57, 200, 28, 225, 132, 36, 177, 17, 173, 88, 141, 233, 182, 215, 156, 86, 179, 110, 230, 137, 71, 191, 91, 117, 26, 98, 99, 147, 221, 225, 140, 71, 61, 136, 47, 164, 54, 202, 33, 251, 23, 82, 24, 218, 243, 0, 151, 57, 68, 66, 119, 196, 106, 80, 33, 162, 59, 244, 222, 245, 36, 135, 201, 47, 222, 122, 246, 67, 12, 31, 42, 165, 93, 99, 129, 101, 221, 218, 18, 144, 208, 81, 161, 230, 170, 108, 165, 119, 66, 122, 116, 232, 232, 136, 68, 210, 9, 206, 9, 190, 236, 148, 202, 227, 247, 153, 179, 118, 10, 81, 217, 137, 193, 247, 230, 163, 242, 168, 105, 0, 166, 111, 100, 152, 23, 120, 139, 38, 148, 243, 77, 53, 153, 75, 5, 214, 43, 208, 24, 148, 121, 160, 112, 59, 179, 161, 80, 180, 252, 188, 118, 18, 174, 4, 248, 56, 168, 242, 248, 176, 112, 208, 193, 212, 192, 246, 81, 173, 87, 250, 220, 56, 52, 80, 1, 195, 4, 150, 121, 145, 215, 148, 127, 166, 210, 237, 53, 155, 224, 227, 25, 103, 30, 35, 193, 103, 226, 148, 47, 90, 184, 190, 225, 226, 93, 39, 86, 104, 70, 70, 5, 17, 167, 55, 22, 171, 225, 121, 31, 221, 117, 85, 191, 187, 171, 242, 238, 124, 162, 218, 245, 65, 171, 141, 163, 232, 232, 35, 235, 52, 229, 246, 118, 36, 119, 63, 50, 208, 141, 73, 221, 242, 221, 8, 173, 14, 60, 140, 254, 105, 249, 165, 15, 95, 136, 177, 202, 212, 157, 43, 235, 107, 86, 216, 191, 159, 215, 229, 181, 155, 215, 125, 192, 17, 233, 247, 6, 37, 1, 237, 85, 153, 192, 52, 176, 16, 240, 192, 184, 201, 23, 83, 39, 115, 228, 45, 243, 202, 136, 43, 25, 203, 29, 124, 163, 120, 155, 171, 165, 58, 74, 198, 245, 85, 56, 177, 201, 191, 10, 240, 134, 91, 39, 63, 171, 255, 144, 137, 40, 252, 255, 165, 223, 17, 180, 250, 103, 243, 13, 225, 188])},
|
||||
{encoded: "2MSD77UXYYLe8sjdEbigYj8Xx8YxogCM5ZRcmQtanAwBZ6b1V9BgzvwawZDmqhBaDKERAACFYSrydvSrkEo9cdvY1XYxHtHLmyTbdn4jjkP3NCRLoyRC8Ypi7MccKTmiwdhMtaXWgsiRYvvpAph39MNWdAXtzDsmCMa55pqAL9gugYXeLmQpgtu7pkbTtquoE2dD2WvshMLxRxNtSZMYQvyQFtoFjW2DfWBFJTe16Y9H9PyksfjGPzLDi7xudxRTBjs5sYTCxghL87SSzfS4i6px3FYSiJ4jsJKGj6QuJHkdJCDW3yaTrdCMkisywbFs5kPxdtscBRzRXNMG6X3YBr7VM",
|
||||
decoded: new Uint8Array([191, 117, 203, 154, 52, 136, 146, 195, 30, 226, 0, 116, 80, 252, 253, 145, 218, 8, 198, 187, 148, 249, 214, 149, 44, 107, 97, 54, 193, 238, 220, 119, 141, 32, 13, 238, 96, 131, 123, 105, 201, 220, 36, 176, 93, 48, 163, 236, 220, 191, 40, 217, 236, 142, 240, 161, 229, 106, 159, 210, 104, 99, 8, 37, 129, 85, 62, 58, 207, 206, 211, 125, 227, 139, 22, 166, 120, 191, 37, 156, 136, 201, 210, 164, 191, 37, 139, 173, 91, 174, 235, 212, 116, 186, 133, 166, 100, 131, 149, 155, 63, 104, 217, 230, 101, 155, 97, 31, 44, 255, 24, 249, 222, 255, 83, 187, 154, 39, 153, 95, 183, 159, 179, 204, 73, 180, 88, 30, 248, 38, 34, 132, 147, 183, 160, 112, 71, 129, 222, 96, 91, 253, 139, 81, 21, 5, 205, 226, 87, 181, 36, 248, 140, 103, 72, 208, 198, 24, 44, 171, 109, 75, 133, 38, 178, 239, 42, 194, 127, 180, 207, 44, 191, 72, 31, 27, 154, 225, 136, 100, 224, 78, 29, 16, 37, 169, 58, 34, 185, 241, 230, 71, 9, 253, 132, 116, 237, 75, 155, 65, 18, 82, 49, 245, 181, 60, 152, 156, 174, 69, 34, 59, 83, 84, 107, 22, 240, 112, 53, 173, 88, 154, 150, 106, 54, 145, 96, 115, 113, 53, 254, 158, 227, 118, 160, 70, 206, 176, 205, 11, 33, 20, 29, 124, 179, 193, 122, 167, 227, 239, 66, 108])},
|
||||
{encoded: "C7pVMzbUnGxH7Q9Vnk6DgZ3",
|
||||
decoded: new Uint8Array([20, 101, 222, 187, 158, 254, 32, 36, 97, 134, 182, 6, 156, 134, 76, 106, 14])},
|
||||
{encoded: "3b4ECa5H72AJFCAQHsnDtDVSTTtwF7JMaywgqxvjwcjypu1KsqnLrRnNWzZcpR9Wm9bqQLDSKU95zZ3GJ28f1B1ErPu2VK5P5ixSkywGsfmVGsvsXdiew3qQR2QRfWbarhbCf6EZtrCMEDX1MMH1EX5cgbyxr2STP3xCDvYDqyxpSMoqGrVfuAV683WwgKvYBg4q9Tgj3URYg4eyr632VpEno2tqe4sK1XJtU6WnBDSxLyGv71GxxcS7XVsTgWqgqzfpmL146gZYdYE95FbsKjKDYhVfAZciWYs61UXzhygQQjVYWiTCiczeES3E43Z23eHpSuXSP8ymBwGHRpouCjUWphwMVYC2b7VaSQxc9QWKVBfwUtcUBZi8ERtFx8yRC62eERyJgVUWZz5zhVNw6bE2XxvJ9ETCfLMrSGCUd6d5KJgKJ6cYwTJEpZ1Pwzw4qgLj9vcrZEw2Ai1pgJ6LNhUkeZCKW3sSCpiQaJjmRZBrs16zbvUTEjTSCQZaKCTP4NJquiarzKFxBcNKgp4F",
|
||||
decoded: new Uint8Array([248, 224, 42, 22, 20, 103, 111, 45, 98, 45, 14, 176, 249, 118, 100, 32, 25, 196, 151, 230, 211, 147, 209, 96, 188, 249, 208, 118, 134, 202, 248, 217, 187, 136, 6, 62, 215, 57, 171, 252, 232, 77, 18, 33, 154, 159, 147, 22, 13, 6, 9, 179, 134, 149, 121, 241, 50, 6, 205, 165, 143, 43, 223, 27, 166, 233, 144, 227, 247, 51, 141, 202, 15, 148, 217, 86, 243, 104, 153, 203, 92, 241, 183, 221, 152, 140, 160, 150, 8, 48, 216, 234, 8, 153, 157, 180, 170, 201, 67, 148, 220, 86, 244, 217, 40, 64, 246, 16, 96, 10, 6, 83, 29, 252, 230, 117, 195, 161, 152, 230, 41, 31, 176, 244, 233, 40, 150, 238, 86, 198, 163, 65, 30, 124, 230, 59, 15, 106, 198, 135, 15, 241, 134, 125, 72, 149, 121, 14, 239, 125, 157, 182, 99, 54, 150, 152, 117, 87, 129, 233, 34, 77, 10, 76, 218, 184, 205, 53, 199, 34, 55, 51, 7, 185, 175, 54, 248, 165, 108, 224, 41, 244, 187, 45, 221, 209, 96, 50, 169, 166, 50, 164, 17, 236, 85, 83, 112, 130, 12, 242, 210, 34, 174, 237, 150, 126, 70, 186, 98, 19, 105, 115, 161, 189, 150, 51, 5, 77, 227, 121, 82, 187, 133, 70, 11, 134, 254, 121, 114, 213, 244, 113, 254, 79, 46, 191, 141, 155, 123, 206, 190, 33, 170, 189, 135, 51, 15, 50, 155, 251, 93, 231, 86, 142, 193, 36, 69, 179, 153, 231, 254, 23, 241, 134, 20, 242, 65, 62, 164, 76, 134, 98, 120, 51, 67, 212, 192, 198, 37, 133, 35, 112, 77, 62, 122, 164, 122, 135, 13, 52, 163, 213, 249, 220, 229, 99, 194, 57, 223, 51, 234, 52, 0, 37, 238, 153, 148, 194, 52, 103, 241, 212, 74, 225, 158, 189, 171, 118, 11, 148, 200, 138, 195, 69, 126, 236, 159, 55, 131, 74, 211, 23, 90, 159, 186, 102, 6, 16, 59, 201, 238, 58, 251, 23, 20, 101, 118, 67, 200, 141, 84, 9, 30, 65, 115, 53, 17, 54, 177, 217, 171, 251, 2, 168, 190, 101, 208, 97, 102, 236, 50, 132, 101, 179, 240, 204, 156, 3, 170, 213, 19, 239, 226, 175, 247, 42, 188, 158, 112])},
|
||||
{encoded: "5E64RMTbZP97EuZbsxjKUcZCnM5HGzkq5YrJUwC4JrVJiDut9D2FdQk48Ffm9JtkbXBtds6Mi4cbG3KLqhjC4Xc2KdFo6MFQfX4rVXosxfra98GuQWpBeTkD17qYCag19v2fdwek5tmkEPLvgjZCJJn1PmfhTSW",
|
||||
decoded: new Uint8Array([199, 125, 68, 22, 236, 231, 190, 119, 188, 226, 161, 13, 84, 239, 151, 164, 169, 222, 31, 234, 120, 117, 131, 27, 68, 149, 233, 239, 149, 156, 42, 198, 158, 120, 140, 10, 246, 211, 217, 193, 182, 225, 235, 152, 99, 83, 162, 149, 198, 125, 169, 18, 11, 158, 29, 208, 208, 117, 226, 142, 120, 12, 143, 58, 18, 126, 247, 160, 178, 243, 170, 23, 39, 28, 58, 201, 177, 15, 217, 16, 42, 146, 221, 83, 159, 206, 79, 152, 159, 184, 230, 25, 105, 50, 20, 207, 247, 100, 81, 245, 184, 24, 127, 146, 80, 188, 200, 184, 98, 80, 74, 205, 168, 243, 38, 15])},
|
||||
{encoded: "75YdtMXFvZztpDaikBdwnUvwkas1Ck7yjQTG8HfBnX65uvGxynx2cqJ6PLvad2sk2gaBRAgv9z18NZBXb2RjbydHGUnKWiWDAgoNtpdYdjGL134Yt51KvuuZXH5DQSYjtwmyXQAYvyn6NEx3c2PRZFgsfKBd3EMXw88ARbZhTPs7iVowUf23bdfwGwprcaHMiUSzF93wJNGf6jPYPQ9AAEawWxMaf8BtRisc9oYyoGamtrCnS63xkjtjaZFjipRTMBCgtuF1JJRhZsspqVF7b9T67YGFbS9DcfZ59PecYoeFVHLaZsqjcWkLXaViu9tQDjTMxaMNDhEJz6wp1RFPr2wmR165MzSEvm4YhcYXxCZHpT275YgkdhnzhCTf2KyEa1L1XX5cPsy7wTeavQJcGSGnsuvuPSw5QETdp4msDViJu2faE8prqdHEwAWbTNsPPYeA4r4DZmbMvc91fgBjJ1ATacWnX9zfBQGyuZFp8y2wXCigB37GrEXAZADeU71mfJxWkvMVYd4rA32ioPwV2pf3Et4iicb7P1Y8bSHzbZWX3p5xBYKC13jyJtfmUSu1HbG2Gcfc4m7sxqfbBtG9swvtJyyCfJfoAJNa3zAZCUbbsozxWWD236Ui1SRXHseNG6Z87sDj9tjSgt8nWwTLSm",
|
||||
decoded: new Uint8Array([6, 161, 105, 210, 37, 212, 110, 216, 156, 105, 110, 254, 233, 97, 108, 223, 90, 220, 130, 21, 160, 2, 196, 16, 207, 135, 217, 244, 190, 162, 174, 64, 17, 41, 221, 76, 71, 65, 101, 9, 29, 129, 167, 33, 249, 76, 206, 36, 103, 187, 41, 112, 162, 86, 137, 103, 154, 13, 77, 245, 73, 92, 8, 145, 74, 11, 16, 213, 182, 137, 108, 41, 137, 211, 62, 61, 49, 57, 85, 27, 82, 188, 95, 100, 115, 203, 128, 222, 47, 160, 143, 210, 93, 176, 68, 160, 90, 91, 154, 237, 39, 115, 169, 117, 214, 118, 172, 95, 71, 167, 167, 98, 27, 175, 84, 81, 70, 134, 93, 240, 172, 17, 149, 25, 80, 145, 143, 155, 157, 103, 23, 62, 77, 248, 207, 95, 223, 214, 201, 168, 133, 103, 114, 173, 34, 121, 22, 30, 94, 155, 191, 15, 53, 248, 31, 122, 226, 151, 73, 190, 28, 145, 206, 130, 2, 118, 24, 43, 163, 20, 6, 148, 202, 123, 28, 215, 30, 36, 6, 85, 157, 235, 91, 131, 206, 13, 100, 247, 59, 126, 255, 130, 13, 97, 228, 225, 207, 241, 129, 191, 222, 74, 149, 37, 230, 111, 92, 84, 22, 241, 172, 120, 171, 252, 239, 226, 184, 211, 178, 243, 161, 27, 83, 219, 251, 80, 61, 232, 213, 197, 128, 6, 142, 216, 234, 6, 159, 32, 29, 240, 93, 175, 92, 194, 241, 234, 80, 191, 57, 187, 8, 119, 250, 10, 145, 23, 77, 148, 180, 62, 224, 214, 132, 44, 113, 79, 181, 234, 164, 125, 150, 72, 13, 73, 197, 71, 151, 176, 7, 24, 89, 49, 140, 160, 47, 251, 186, 43, 160, 85, 115, 141, 105, 58, 99, 124, 167, 152, 229, 221, 8, 172, 115, 87, 238, 183, 191, 214, 42, 213, 65, 140, 53, 215, 34, 61, 219, 30, 220, 25, 241, 217, 187, 252, 192, 221, 180, 179, 119, 128, 244, 177, 185, 248, 227, 38, 81, 6, 101, 233, 36, 255, 111, 141, 147, 16, 138, 105, 46, 122, 149, 6, 139, 114, 0, 34, 184, 5, 123, 33, 95, 205, 93, 135, 48, 228, 164, 92, 23, 177, 188, 163, 253, 76, 84, 178, 244, 24, 255, 111, 139, 247, 7, 150, 38, 231, 242, 251, 106, 186, 149, 80, 161, 150, 255, 241, 138, 50, 92, 58, 170, 131, 48, 187, 203, 186, 9, 85, 79, 78, 77, 211, 166, 169, 67, 141, 143, 216, 243, 10, 19, 123, 87, 159, 74, 236, 60, 166, 174, 28, 128, 157, 178, 215, 241, 233, 231, 58, 106, 109, 113, 174, 100, 227, 30, 202, 241, 93, 188, 163, 179, 178, 224, 4, 9, 107, 130, 126, 4, 98, 186, 166, 175, 167, 142, 243, 29, 83, 85, 28, 99, 168, 130, 233, 38, 72, 152, 252, 152, 215, 87, 43, 69, 75, 210])},
|
||||
{encoded: "JPwKAzPVkTwG9C2gRVyNCWpq4NJQqBXauS9a1WG2EkWcERrT1fDpNAaWVTTeRauokLVvg8wkm2sjPQuS9cgrpkEaTbqy8M9WXJLo4kFRMuepPANvpqHAbjJmDVFo7KvhnHTxPZpCfyeMHvyPJtdzYuqcXS9b8WPkmYFYLEdq4T3DBBTKXkSCtpkn6YZq1joyrR3NBkGpLT7hj8GNs28UMKfKLreAUXuaU9MnuAzbeuECK2Ktaks4y5yMesgkAVhxkFooURgbdy9KhsyFu79Qk8iyHcg5KuQhnw6Vn31gfy7xFUkdW4oKzKnSV7fVFZ2w5BFonXs9TFSkVW6ThixGRQ5uH42TZheAQERvdtTCovRVkwZjT2Lvtv4zWF1uB1BoBnu1fsK6E5DAZpNsDDAN3qw2ow9EQRJ5AXefeKekSTfjbPzJo49AFznYc5CU51c72B5fBRijq5TRJ1PeMXAqrVPgF8dFJj",
|
||||
decoded: new Uint8Array([83, 37, 89, 211, 78, 177, 15, 123, 191, 199, 81, 10, 255, 240, 192, 233, 216, 33, 151, 236, 125, 129, 7, 237, 190, 172, 11, 70, 42, 36, 134, 45, 193, 165, 113, 28, 97, 242, 161, 217, 203, 35, 139, 147, 191, 195, 103, 61, 241, 135, 215, 9, 49, 190, 0, 79, 73, 136, 219, 198, 4, 71, 250, 245, 229, 225, 141, 83, 208, 112, 154, 151, 77, 123, 23, 170, 234, 88, 118, 127, 254, 207, 209, 205, 32, 227, 64, 97, 116, 191, 52, 7, 207, 11, 171, 97, 196, 253, 197, 247, 2, 176, 131, 77, 53, 145, 79, 192, 120, 246, 148, 222, 12, 27, 43, 34, 103, 247, 68, 177, 50, 169, 55, 190, 84, 58, 222, 209, 25, 200, 219, 5, 194, 140, 175, 219, 208, 163, 173, 63, 116, 36, 154, 158, 159, 42, 92, 225, 38, 115, 252, 16, 58, 178, 222, 140, 75, 250, 84, 163, 36, 47, 232, 99, 222, 71, 58, 182, 224, 129, 196, 205, 141, 188, 183, 85, 215, 139, 76, 205, 189, 0, 198, 181, 121, 32, 158, 143, 197, 122, 113, 16, 244, 156, 65, 29, 71, 96, 163, 237, 238, 99, 173, 238, 149, 114, 249, 248, 64, 87, 240, 63, 142, 47, 185, 26, 207, 177, 55, 54, 36, 170, 16, 41, 86, 213, 226, 133, 140, 11, 240, 252, 175, 205, 63, 145, 199, 8, 100, 182, 34, 218, 26, 62, 121, 49, 138, 202, 239, 243, 177, 184, 135, 4, 58, 245, 85, 135, 249, 19, 93, 29, 92, 106, 43, 117, 103, 109, 247, 81, 220, 201, 7, 237, 35, 214, 205, 61, 57, 173, 166, 208, 29, 172, 202, 108, 30, 107, 112, 128, 154, 243, 135, 138, 127, 249, 171, 54, 192, 102, 25, 177, 240, 112, 187, 100, 42, 56, 12, 55, 226, 125, 233, 242, 20, 38, 114, 166, 243, 105, 60, 174, 243, 153, 51, 254, 226, 33, 253, 94, 71, 243, 73, 141, 28, 76, 131, 109, 76, 225, 190, 192, 97, 208, 1, 39, 167, 148, 204, 140])},
|
||||
{encoded: "9Dhf8UhXT9xSREH9BZ4sPGwN3jeGWhuKw6JkQiGQtFNgRdxbFkUL1n1gYVCrB9q3dbqZbmTjnpvXRzKBRez1jzZBoBJsuaVos1G5KJ4qVEkkNYwB3o4FQF5xdyQUM8UxW6MojXc8LK4tL3bbvA9oYhfjGzo46ZxXmx3bi73DnABkog8ia8NgPC5aoxkJnpbd8ZZ1522rvTFVWMgKpazZTLysQ4xT3dDYejG3nupUxygUaqTsi5Tqtx8CJY8xSYseSfBjGh4GmvXZYrun5PuvWieweT7stZarmobQkFK6zVms9B1ou3ejkxH567KH1uDdT3GqdkSsqSubdg5hxWEkSQTTf4a7dAdSDJp7pLuYKSoGF74ykKSLd4dpkaPWWsd8bD2dXg6YH6p66Y5K26MhB1yJ5dvEqufwzjtwANeFntMS3Bq3nhdD53HwcSeV7aLdchTnfE4hwwusZMNkMy485WADsJYWWEgh8E1Bgp2FgnZZi4ufTmQKBV7JiefkxHov46mQjRdM9ACYbrgmRG3RQFcWHjJ2TaEsRUaVNtyq6PNMUNL6CMqzXLSXzoWFKRQVjYyJTBKC3GG1arFeuYz8qQ3ktzzfSMrawhZiyEuDHVS938AMr5h5eqxVcZbNMsuS9D9F6W2bcYqTiQdhXgLc6k7Y2VjWRZnq7xCTvehxyU1akpdMbQ1AnT2BjNbUdbdm3YdaeEZQ2aCg9t2tHayqDk3L3GquVbJNdodAxwWuQFdQnKa9H8o3BZVfJJSYCkMS989ABpMqohEYhhU5teUJoi1Wsi5mB4b6qb8iswc2oThCNd6VN5KE79zphUeq8UZ7CXDKLjQAWDMWiSnZ7ExNWfJGf1XYSCpS9efV7JYvMXBJ3KpdhZiAr1jb5wwoh8B8BfyhFb8eTf3reTy6MsjGDDkuPU3NE2KN6HAVwJrV1nLmBrjf18P74fbhCcrt1MZUqrfaxK5XCCVeYMPhQKvBcGjR4efvhqmyPoviHRUHkuHVEAPkubfv83FMF2wy8QwKrqZdULKVvv9FgkfPWSts3",
|
||||
decoded: new Uint8Array([109, 56, 208, 82, 25, 175, 111, 53, 188, 87, 233, 236, 55, 222, 97, 118, 219, 31, 206, 117, 145, 208, 2, 58, 169, 26, 141, 200, 146, 73, 181, 23, 48, 254, 161, 65, 137, 39, 64, 226, 80, 229, 65, 138, 61, 105, 162, 253, 88, 189, 163, 58, 77, 96, 92, 25, 36, 26, 92, 43, 50, 136, 138, 48, 183, 151, 48, 15, 199, 76, 13, 17, 107, 98, 167, 16, 190, 173, 39, 110, 170, 71, 250, 90, 126, 38, 243, 244, 61, 238, 135, 252, 87, 201, 89, 71, 213, 248, 18, 154, 67, 199, 199, 40, 34, 216, 155, 9, 205, 118, 101, 39, 56, 44, 108, 245, 164, 193, 93, 156, 69, 38, 161, 169, 0, 19, 193, 227, 167, 45, 114, 230, 224, 115, 188, 235, 27, 146, 202, 37, 133, 62, 36, 127, 86, 132, 201, 147, 208, 214, 41, 4, 112, 160, 81, 12, 151, 220, 202, 41, 26, 109, 206, 28, 166, 100, 90, 178, 144, 27, 155, 53, 154, 80, 34, 149, 198, 158, 229, 246, 158, 31, 89, 177, 23, 70, 185, 171, 54, 122, 198, 156, 107, 145, 23, 148, 8, 106, 82, 2, 16, 206, 89, 231, 244, 26, 73, 18, 182, 150, 150, 89, 210, 187, 11, 41, 6, 62, 178, 164, 176, 189, 79, 232, 218, 241, 224, 232, 78, 179, 234, 132, 7, 236, 249, 214, 130, 132, 236, 241, 136, 179, 106, 53, 65, 15, 204, 129, 100, 15, 172, 118, 246, 220, 25, 152, 63, 131, 87, 63, 28, 136, 113, 99, 55, 108, 14, 16, 43, 23, 149, 191, 205, 4, 144, 119, 187, 164, 214, 98, 102, 118, 77, 121, 231, 254, 220, 195, 248, 197, 85, 173, 208, 168, 215, 39, 95, 239, 104, 1, 73, 60, 236, 18, 183, 236, 131, 75, 195, 138, 206, 146, 45, 83, 166, 131, 246, 21, 7, 34, 20, 51, 246, 150, 56, 35, 25, 208, 59, 133, 9, 143, 140, 201, 57, 42, 207, 82, 148, 226, 61, 1, 157, 251, 112, 220, 137, 73, 218, 7, 249, 236, 90, 118, 44, 195, 233, 6, 81, 122, 23, 213, 238, 130, 233, 241, 156, 199, 9, 212, 34, 133, 80, 68, 187, 106, 118, 230, 195, 219, 9, 120, 44, 78, 243, 161, 24, 64, 150, 227, 192, 92, 192, 216, 131, 207, 117, 109, 11, 124, 168, 74, 184, 148, 254, 252, 89, 54, 69, 217, 148, 250, 230, 126, 152, 93, 14, 249, 94, 250, 173, 129, 208, 196, 136, 247, 136, 38, 119, 224, 254, 187, 121, 167, 80, 200, 250, 189, 61, 166, 138, 1, 144, 208, 148, 77, 21, 6, 147, 113, 3, 36, 202, 216, 194, 157, 221, 17, 97, 232, 123, 78, 101, 197, 229, 62, 133, 55, 57, 221, 98, 6, 205, 89, 198, 238, 222, 36, 252, 248, 196, 91, 97, 93, 218, 179, 66, 12, 49, 181, 125, 114, 97, 164, 115, 74, 130, 9, 212, 135, 87, 252, 142, 65, 174, 95, 120, 255, 174, 191, 107, 180, 188, 231, 47, 93, 128, 200, 82, 240, 62, 24, 128, 32, 125, 0, 171, 146, 180, 126, 70, 233, 237, 14, 48, 77, 177, 21, 252, 102, 181, 18, 46, 23, 248, 52, 129, 1, 212, 106, 138, 180, 243, 106, 44, 27, 181, 4, 122, 67, 29, 139, 97, 70, 54, 219, 249, 223, 23, 28, 114, 226, 62, 175, 17, 208, 237, 42, 105, 126, 232, 105, 180, 35, 186, 129, 48, 235, 106, 16, 129, 141, 140, 3, 7, 28, 117, 95, 135, 76, 248, 176, 155, 30, 100, 117, 30, 197, 125, 38, 168, 166, 46, 233, 202, 102, 219, 47, 88, 56, 246, 108, 244, 115, 172, 27, 59, 195, 80, 71, 95, 22, 34, 36, 146, 233, 85, 3, 22, 44, 180, 143, 106, 146, 32, 210, 123, 85, 29, 145, 3, 43, 204, 105, 80, 152, 66, 1, 175, 121, 135, 1, 93, 9, 161, 49, 209, 57, 24, 209, 167, 202, 85, 191, 31, 118, 98, 55, 125, 172, 108, 211, 39, 220, 180, 243, 99, 219, 162, 71, 223, 4, 241, 164, 228, 213, 235, 19, 139, 107, 159, 254, 143, 171, 87, 145, 28, 16, 200, 233, 17, 238, 61, 94, 155, 116, 123, 157, 117, 213, 88, 47, 140, 80, 132, 35, 175, 16, 239, 69, 45, 107, 216, 201, 21, 50, 146, 202, 107, 232, 121, 186, 223, 58, 166, 136, 139, 174, 188, 33, 131, 51, 66, 121, 47, 199, 76, 48, 196, 32, 152, 53, 98, 9, 250])},
|
||||
{encoded: "5kVoHmhB32pMQSw9kaJjhscKmbf9snni9wvqCWTaibS4FizKARB9nm7oaMYSH6heWHD4U3pCotMmdUESzZidxc9L6zcpAgkbaw2i8TyD8BtnZZukxyUzdq9yK69R4z9g4pk4zachCD3TdbWQmjE3Uhary1DYFTMej64EkVrGwbQ92UBSkRuXFf2DxqLFSmjgNdh7T7J87Rvk9F1NCpXUbxu1X32UVDNVr3xinmVkuq5hfXNjQXqv8ok",
|
||||
decoded: new Uint8Array([9, 237, 24, 22, 206, 62, 177, 69, 6, 16, 206, 63, 211, 22, 58, 244, 97, 100, 229, 241, 12, 84, 140, 90, 168, 39, 140, 193, 143, 58, 69, 52, 55, 177, 164, 208, 124, 36, 80, 33, 180, 25, 80, 109, 9, 163, 90, 31, 131, 75, 180, 105, 29, 70, 116, 152, 67, 197, 136, 46, 217, 40, 76, 42, 191, 162, 147, 216, 233, 123, 81, 89, 243, 23, 149, 153, 46, 29, 188, 186, 23, 236, 83, 142, 38, 140, 117, 246, 177, 65, 155, 206, 103, 155, 204, 189, 159, 112, 70, 112, 243, 122, 106, 220, 92, 180, 28, 176, 119, 29, 163, 78, 94, 251, 234, 11, 119, 158, 90, 152, 40, 32, 122, 150, 35, 184, 120, 114, 232, 25, 220, 85, 1, 253, 44, 84, 128, 167, 207, 172, 105, 223, 223, 112, 235, 227, 66, 66, 217, 125, 253, 160, 29, 27, 97, 178, 105, 40, 182, 196, 165, 139, 37, 139, 176, 53, 246, 207, 58, 10, 51, 240, 14, 255, 57, 163, 65, 8, 9, 46, 91])},
|
||||
{encoded: "2aZtRYNywVPxF2MrbduiMCCjRPEfFQMAyvQRPYZ7F97myZW3pLXA17WttDHEDNs5QirghhaTGDa3qKEEFey2qeKDstshPHv6SCmw38xGzYWijQZHFkqRF8EhDHjcJVDbze7dDcn9ZKLAVPvTtqGvLW6VHoFDujkqE3XKNHFu85CQ6YkF23CdE3RYBg1oeGhh6Cu6n94K9QbdNtAZT79xTh17s9NL7enZjegatSghhxUk78sun16zjnumPGbEjSyRPzm6wuMxtrX795KbmWADR3RhC8JoVakNZUkJcTA4FxjCtWYkELAw2X7eWjcHSKZan7gErMJJQQtPGjTRrpeWCKQSQ7hAGANy2h4spMNWru27nMUiN5L3xwEEBmsND7LAtWXmQ2qwwA6x7vSQ7wdWB7skqMh3qQEj9MjWhsA4fWUBPSJ7yPT1FEdtPi4xWKcbh3Q6wZWBuCjynnK5QEzLBRqAJTXxExVsxzSFCK4cg2QndQgWE7ZmUkGrM6BznLKhC7AygLdkpESMzgnWaxkmbH5KuY43ewsd1sX246e8fL9TM4go58ahNcenQLA3ZqQH5cDD5vzfTg5MXSjSBMADhntGNjiZFwTENLp3B8DnkkQPeQtv3KGuh8bgcAvYSuhgm7LB6kAJdT9DY2FJ6nsspbNYmSwYyHcohftnvrzijtM79p4aEekjitMxet8KFscViaMkm3RdFeYE9AQsyf3KSeHnBmMxzW8UrzGLbdfvWrtaTV7cfxZwUgiortmrLuyvjz7yGcnuRwZqw9Jqf1rQCtawkVBc1gLhAiKNPormLgp7bpXFq9sLHEFxL5nndZEy7wpYzEdd2Q4HuiUY6NfTnW1ShmCfSaeKjcSW6E8ENYGeeBzu9cbXTB9tuE12jSRpKKgdMAxQErMLpb4Ud1AgVQawieM5FWrTAHLhF5cHGi9NB9uC52A7r5yXrwqeL42DKvTt5bBwpxinUKn4Fx3xb2jbP6fR5UNFCXaFt3UXaruRWrq3KhBWMTy8oBvK8VKQvMQG1E5XrRLYk11ZiduYktWwpNdCK4BhWnmCACrFSQ5XxURqmLQvUQA29XZFXCYhHYvgvfp4",
|
||||
decoded: new Uint8Array([141, 211, 29, 127, 195, 79, 27, 19, 224, 229, 248, 52, 32, 158, 147, 35, 8, 28, 97, 210, 120, 56, 215, 225, 243, 90, 57, 12, 109, 151, 211, 15, 186, 43, 245, 4, 187, 14, 228, 248, 51, 39, 243, 144, 18, 219, 246, 130, 53, 77, 106, 119, 231, 162, 33, 68, 225, 15, 29, 101, 157, 165, 219, 125, 26, 161, 210, 205, 3, 191, 186, 156, 161, 33, 198, 205, 46, 176, 3, 239, 133, 183, 130, 125, 130, 145, 70, 188, 82, 1, 180, 149, 238, 240, 219, 106, 19, 134, 250, 199, 3, 183, 26, 208, 168, 82, 220, 118, 252, 158, 255, 232, 128, 224, 187, 9, 95, 150, 117, 55, 3, 237, 173, 101, 228, 125, 165, 200, 242, 147, 13, 240, 249, 150, 32, 117, 245, 102, 50, 240, 175, 156, 88, 51, 87, 206, 101, 130, 113, 209, 2, 103, 8, 48, 137, 37, 249, 67, 212, 8, 169, 105, 71, 243, 78, 104, 249, 131, 47, 195, 69, 239, 5, 92, 70, 118, 146, 239, 93, 228, 209, 183, 159, 82, 217, 102, 3, 223, 113, 138, 138, 101, 82, 78, 9, 118, 92, 129, 30, 124, 253, 144, 204, 115, 152, 156, 3, 236, 146, 37, 41, 58, 113, 93, 16, 157, 234, 230, 148, 55, 5, 45, 226, 204, 81, 243, 159, 155, 84, 228, 0, 204, 234, 29, 26, 172, 91, 74, 124, 100, 0, 241, 97, 200, 53, 51, 249, 71, 66, 4, 109, 22, 84, 252, 235, 95, 1, 185, 208, 85, 134, 102, 172, 128, 25, 246, 42, 46, 54, 91, 32, 57, 185, 46, 170, 22, 112, 171, 14, 160, 97, 243, 240, 255, 153, 47, 1, 206, 134, 130, 183, 203, 234, 252, 225, 244, 207, 174, 171, 101, 101, 40, 145, 27, 163, 134, 86, 141, 111, 100, 131, 204, 152, 3, 41, 64, 79, 156, 103, 141, 149, 56, 90, 158, 1, 254, 235, 177, 14, 4, 173, 201, 43, 25, 25, 55, 77, 227, 236, 42, 58, 230, 235, 39, 120, 0, 121, 45, 164, 182, 216, 72, 200, 107, 20, 180, 102, 223, 167, 109, 122, 106, 83, 102, 5, 72, 154, 229, 154, 70, 163, 87, 136, 103, 97, 136, 169, 21, 122, 97, 88, 63, 79, 133, 196, 206, 154, 203, 93, 101, 12, 7, 37, 131, 115, 202, 38, 197, 104, 105, 135, 251, 78, 17, 18, 52, 32, 120, 148, 167, 30, 89, 3, 152, 111, 42, 59, 97, 51, 254, 40, 185, 237, 151, 167, 16, 53, 63, 65, 30, 19, 109, 29, 21, 156, 24, 112, 201, 226, 9, 33, 176, 115, 219, 215, 226, 225, 41, 3, 248, 49, 141, 249, 114, 184, 200, 41, 220, 49, 203, 6, 5, 246, 16, 176, 216, 149, 121, 195, 25, 198, 29, 190, 214, 148, 115, 120, 97, 67, 144, 190, 204, 199, 11, 28, 134, 206, 71, 196, 125, 195, 58, 25, 74, 201, 249, 210, 10, 167, 97, 106, 171, 226, 112, 96, 167, 231, 122, 192, 110, 228, 247, 182, 189, 50, 142, 169, 77, 39, 8, 214, 193, 171, 105, 117, 34, 15, 95, 134, 84, 71, 230, 250, 17, 129, 100, 109, 71, 233, 77, 218, 175, 29, 26, 169, 44, 86, 137, 18, 158, 33, 206, 245, 48, 156, 232, 180, 219, 207, 61, 49, 120, 116, 242, 63, 47, 112, 126, 155, 162, 254, 146, 15, 224, 56, 67, 82, 64, 47, 250, 94, 227, 171, 3, 207, 200, 139, 89, 211, 245, 109, 190, 249, 233, 144, 190, 224, 228, 126, 207, 33, 144, 208, 150, 205, 190, 204, 136, 120, 129, 155, 210, 61, 214, 4, 248, 17, 48, 96, 38, 74, 218, 94, 56, 170, 232, 145, 159, 116, 105, 104, 55, 44, 41, 184, 187, 84, 161, 128, 41, 127, 12, 95, 174, 16, 83, 192, 105, 215, 219, 39, 165, 166, 201, 155, 246, 73, 243, 134, 104, 0, 192, 55, 125, 178, 51, 20, 29, 20, 123, 155, 189, 84, 158, 155, 54, 229, 205, 217, 168, 130, 8, 141, 18, 28, 243, 192, 100, 92, 35, 105, 25, 225, 100, 230, 34, 95, 166, 153, 87, 249, 218, 196, 2, 199, 199, 81, 117, 161, 127, 83, 164, 6, 171, 51, 217, 245, 63, 72, 189, 54, 148, 110, 221, 255, 83, 111, 45, 23, 227, 134, 45, 187, 252, 224, 135, 34, 47, 0, 234, 138, 62, 141, 194, 5, 1, 139, 249, 57, 196, 83, 34, 177, 99, 189, 241, 203, 164, 203, 176, 191, 20, 53, 235, 1, 89, 234, 212, 151, 109, 43, 41, 204, 93, 79, 112, 96, 125, 36, 174, 220, 225, 197, 146, 172, 112, 119, 112, 50, 178, 73, 166, 201, 178, 103, 3, 56, 239, 0, 29, 147, 153])},
|
||||
{encoded: "SG3uKsrxn9T3KBvN6aTq27NAb3AsiLctuGJrZGLgdy4dQGYzG4wWBtF4qeXZ5BhcpJajkPg73gu1M4MSEybKchiYVfdpAhyQ8fVaoy9Aakp8VbQXQeimnn75SMZ1DgzD9pBA6qA1Bv9a65dxJ8ph4RWvx2qxPXeApmyZT6DE92k6atvtHRSxommXB2VfaBBmT3BajcsYqHYZEDe7K8np2nGCo3oZbqcYhwb9UW2GHJAhytbiCuBMwTiqVrhry7pwN3wEmUqxbqBKTYQMJwCf9JEu8hx29kYcpfQCixqFnStJ9bNF3mZmfKaHBCKdpPPX71VfGUVYe3BhBdUNqfxXeuABodShoCW3wCypivLJKrZrrFRWFgfaBqTCj5qoj7gLiNRG6NuRD1toH5UnPVFRxaFCjsyKui9u7Ta3LXCh9XzmzLrWhUBo2YxW9vVpiqcrcyNk18Swpuj82nHaHP7YQyjqC2WSL52knUwv4SCymZ9x8GouPmckKphzcodg4SFFZNQKcH4GSR2YX5ggmsykdobq5BYWfVBZBW4EbrCzQvHNLSDe6xncQXkxnS3VoPQ8dV8mTYj9XjgbQJ47d788JzQWxd4mGfjYnuuVx6Kkx75GgVMELdGfmSWVxqC1tdBTJKzTrepoTmSyWpFu1p4XEzCyWCbfPENRGrJxRABxCF4dUpYAbwjTtCmcBFrbAyMg9EySawU6QdhmMv2ij5ydYWocC172J2KQgDfCz8geJfF6m35Q7THMLqP7jFMqRU7TvYjssqyxhejRbKXXoCoytAWutjHoLLKfP7fdqtCV5Q7AkfiSDHg7yELDpPbXwLmFxFENCxt79TzHKvx9nHxQbtzvtzBbqsE9W26ZxkCnYjY1fHUxoJjs1cvnzfitYDGo3RKR1rV4KyX4hgcXWmmW4oENommDfo73XKhget9V8NDHN4kZjnkdLKTrVGnSZm5F",
|
||||
decoded: new Uint8Array([88, 48, 101, 73, 130, 15, 115, 100, 244, 167, 163, 114, 199, 99, 253, 128, 204, 35, 146, 17, 207, 138, 253, 142, 0, 162, 193, 109, 245, 42, 217, 63, 142, 150, 6, 123, 241, 26, 61, 133, 61, 57, 88, 121, 73, 23, 24, 97, 137, 171, 32, 50, 56, 223, 167, 111, 230, 15, 167, 231, 43, 236, 124, 213, 197, 208, 104, 26, 178, 4, 136, 9, 140, 203, 43, 174, 99, 15, 55, 248, 91, 67, 94, 10, 216, 136, 100, 226, 23, 116, 37, 193, 106, 194, 177, 26, 90, 17, 125, 250, 25, 237, 173, 228, 184, 9, 66, 255, 185, 190, 70, 16, 21, 209, 114, 181, 216, 61, 194, 250, 17, 54, 226, 28, 19, 140, 10, 157, 211, 117, 11, 204, 92, 142, 68, 188, 65, 11, 251, 177, 238, 105, 100, 195, 34, 245, 70, 149, 45, 49, 89, 62, 148, 218, 24, 226, 245, 230, 37, 161, 159, 76, 119, 198, 188, 242, 246, 92, 92, 8, 5, 180, 150, 172, 95, 104, 60, 116, 22, 128, 165, 101, 36, 212, 92, 203, 144, 234, 180, 222, 43, 190, 94, 56, 240, 189, 118, 21, 29, 23, 110, 38, 226, 1, 224, 44, 68, 26, 29, 104, 126, 227, 30, 157, 139, 178, 224, 143, 137, 164, 49, 113, 177, 22, 120, 39, 78, 147, 193, 107, 88, 189, 247, 125, 174, 86, 174, 248, 25, 83, 90, 181, 229, 57, 179, 60, 194, 157, 138, 186, 43, 240, 85, 230, 18, 60, 221, 142, 243, 138, 95, 250, 151, 81, 242, 124, 255, 211, 231, 216, 120, 255, 96, 22, 113, 138, 254, 131, 159, 159, 84, 246, 100, 157, 13, 213, 136, 154, 242, 159, 213, 167, 19, 213, 143, 233, 108, 238, 117, 39, 115, 173, 38, 231, 212, 38, 102, 180, 151, 55, 88, 39, 44, 76, 154, 127, 244, 95, 76, 209, 49, 92, 67, 68, 144, 69, 158, 23, 157, 57, 166, 6, 176, 123, 93, 108, 41, 99, 121, 61, 255, 173, 26, 253, 192, 131, 161, 191, 162, 38, 142, 238, 178, 235, 177, 162, 54, 62, 205, 151, 193, 128, 164, 197, 216, 166, 105, 254, 169, 245, 8, 213, 219, 254, 182, 8, 75, 253, 208, 179, 13, 98, 114, 193, 169, 48, 132, 44, 142, 250, 200, 120, 80, 181, 99, 89, 184, 13, 57, 219, 134, 231, 229, 47, 102, 176, 60, 211, 77, 138, 162, 110, 254, 129, 205, 56, 155, 76, 123, 27, 155, 60, 128, 43, 71, 59, 140, 36, 119, 168, 97, 27, 27, 194, 209, 120, 173, 139, 248, 146, 200, 19, 88, 194, 4, 216, 241, 243, 93, 94, 166, 78, 152, 144, 54, 218, 222, 101, 108, 180, 197, 129, 21, 48, 81, 230, 93, 219, 172, 159, 86, 46, 47, 149, 30, 185, 95, 21, 153, 213, 131, 151, 194, 196, 173, 191, 99, 65, 55, 101, 180, 216, 39, 233, 98, 113, 209, 22, 245, 93, 89, 250, 69, 159, 173, 130, 125, 19, 120, 77, 148, 98, 202, 84, 61, 132, 49, 183, 162, 21, 121, 252, 178, 214, 91, 107, 27, 145, 239, 254, 195, 120, 63, 109, 59, 249, 212, 116, 147, 180, 136, 94, 109, 249, 159, 232, 39, 5, 201, 77, 104, 85, 21, 115, 28, 25, 164, 198, 203, 97, 93, 33, 137, 42, 102, 209, 174, 245, 249, 24, 83, 175, 136, 157, 45, 171, 159, 63, 4, 225, 183, 121, 84, 33, 237, 233, 204, 205, 97, 39, 99, 129, 241, 126, 102, 69, 190, 58, 254, 184, 52, 208, 251, 19, 148, 209, 150, 75, 67, 170, 114, 179, 174, 220, 201, 217, 90, 131, 218, 230, 114, 95, 27, 41, 138, 49, 205, 171, 142, 127, 110, 87, 74, 199, 145, 72, 25, 53, 113, 114, 110, 149, 37, 186, 144, 119, 175, 170, 232, 164, 253, 148, 150, 255, 109, 126, 160, 191, 168, 107, 8, 20, 234, 230, 22, 108, 151, 56, 137, 156, 82, 81, 124, 249, 81, 37, 168, 217, 61, 33, 230, 28, 95, 178, 33, 31, 167, 91, 241, 155, 193, 117, 144, 182, 18, 40, 32, 197, 48, 197, 28, 212, 150])},
|
||||
{encoded: "2SrauXMdgiYuzJ5vJdRws3x3fAibHeDDhsuKWc4477JvYoKY6xm7gJk4PNwvE93qHUcQmRtM1WZwoq5hjG51rwpajoQt5zGLeCa3pU1fiAinoAjUctXz7PUvo1rVizCN53zZK1qw1EA7wXvrcjCxNuWQrUrzfxGQD5pmjEawpesaiMcFSGggUPSjvob3KU1Ae4SzPZRmULrjut3jkovzZMipzZgP4S5hJASJdDVcyuZqd5nfFbgBBiYz7mmeanjy5g97i2jfLW9BfHvwzbELcECbcb87qqiraLnT52YYh6D6aAryFCVB5WWV267uHnPjeARPiGPamYt1mHvjYyPtSb5RDDChNE5fvpbCgjtfihFZ5jP7bz3VjzPQERiJ18tsJWDmvuLicJFXKGEE65Tz2rp9EEm9B2JeQoox8kP4pBEFxNAP8XEwcyHNdPoVVUp4qfKEAUiQ5LRUB2iLS9jM2Tpts9vJ4k6sYNwFRBzAvT9igqYTow7F2Waoo3y67HjimmLrXBaugfjegq3shVUQGyJkDK9fBpbDzkh1wukgzDamg1szke2WKo1upHCcG2mPw38HTt4KMeiLhxV1dAwcjY215LkLdrd69vBYmf4FjSuyqqeyrFeMKujFiby5NbcqzVHSR57GqD8r6aU6UgoaZfdYfqD6vTXGW4C6a46zMKq7HSCH8SfFYy39z652kEZ9oCrfCvHMY9eNkvqkMW2VPWwwrfeJC9iE3sDpQSYgo3GNhzx67GtjormCWdQbaMxwH3Dn9hpySMuU648UNrfhHqfdjC9E6Aw8fCXhYZEwRN4pLy664DdYFrR6otmRKcDsyLHypmJB1jSQCy3bLnVs89xJFkEF3ujyW9Q4LHdrjS1bx6hLLSPBUcbDYVX3vLhAm9QySPCPZ9rZMvW818Xy2tT7WzYzk6ap2AXsArx6Ccwg8dZa2zpQ7oWNmCiwH9qcZVj5PJW9zHpmMS28YPRHWBM4c1bvtB2W3N44rmHYJhpUU3aLumAokeCiEcAcW",
|
||||
decoded: new Uint8Array([204, 1, 40, 114, 77, 27, 117, 157, 10, 72, 84, 44, 252, 251, 102, 251, 226, 2, 42, 188, 95, 168, 174, 24, 105, 6, 38, 70, 245, 68, 35, 117, 182, 61, 112, 65, 119, 41, 60, 109, 54, 48, 167, 45, 83, 14, 70, 16, 67, 13, 62, 219, 107, 225, 16, 194, 141, 142, 105, 75, 213, 156, 126, 190, 13, 225, 168, 151, 213, 43, 197, 239, 7, 155, 72, 49, 18, 14, 86, 118, 78, 234, 54, 127, 254, 255, 178, 157, 65, 32, 70, 155, 195, 149, 27, 79, 67, 38, 7, 108, 199, 27, 249, 158, 143, 42, 100, 248, 63, 205, 104, 77, 7, 176, 53, 255, 164, 251, 204, 67, 3, 14, 107, 44, 34, 151, 1, 205, 216, 214, 133, 58, 156, 110, 26, 71, 162, 177, 238, 117, 121, 206, 86, 238, 116, 47, 177, 46, 173, 240, 253, 205, 115, 245, 251, 83, 61, 37, 22, 190, 60, 10, 228, 159, 223, 49, 106, 166, 53, 84, 186, 54, 68, 218, 199, 86, 105, 118, 254, 14, 198, 23, 73, 202, 16, 149, 97, 181, 190, 227, 206, 159, 90, 102, 193, 38, 171, 160, 62, 47, 11, 216, 162, 76, 34, 102, 132, 243, 188, 66, 65, 200, 231, 45, 66, 0, 94, 16, 208, 133, 118, 60, 142, 247, 237, 251, 237, 98, 159, 104, 46, 17, 26, 86, 186, 253, 48, 101, 181, 186, 163, 118, 183, 18, 151, 146, 103, 54, 177, 164, 249, 54, 104, 5, 77, 45, 43, 138, 54, 65, 31, 194, 213, 0, 177, 68, 102, 239, 47, 197, 116, 182, 25, 255, 238, 101, 188, 222, 112, 231, 70, 178, 236, 112, 138, 190, 19, 151, 79, 189, 44, 176, 5, 18, 203, 130, 33, 217, 251, 169, 95, 61, 246, 97, 36, 30, 93, 44, 122, 217, 153, 189, 12, 182, 130, 212, 55, 127, 104, 38, 184, 42, 108, 108, 169, 33, 180, 55, 148, 234, 15, 141, 85, 71, 70, 39, 86, 25, 155, 116, 97, 123, 15, 134, 5, 234, 171, 13, 245, 240, 57, 123, 65, 121, 42, 146, 182, 182, 122, 234, 180, 64, 37, 5, 236, 63, 245, 49, 171, 111, 125, 37, 0, 168, 213, 69, 173, 23, 72, 245, 223, 99, 81, 61, 51, 35, 196, 148, 125, 180, 67, 42, 197, 128, 38, 90, 123, 10, 28, 204, 207, 12, 38, 106, 54, 211, 170, 127, 56, 250, 161, 183, 218, 126, 240, 182, 180, 233, 47, 42, 230, 157, 23, 29, 197, 95, 106, 161, 163, 14, 71, 212, 91, 234, 170, 120, 34, 0, 236, 219, 173, 194, 152, 116, 33, 227, 216, 137, 68, 57, 116, 51, 133, 186, 220, 158, 108, 63, 21, 174, 8, 124, 71, 182, 117, 90, 79, 216, 70, 214, 61, 167, 125, 233, 119, 122, 20, 59, 165, 79, 74, 29, 246, 198, 72, 63, 32, 164, 40, 45, 35, 51, 221, 203, 239, 90, 181, 187, 83, 191, 32, 35, 3, 38, 40, 37, 182, 122, 250, 73, 166, 143, 187, 160, 69, 138, 248, 169, 170, 2, 234, 222, 247, 42, 17, 216, 129, 58, 16, 218, 108, 200, 223, 19, 243, 140, 50, 56, 76, 244, 119, 78, 50, 129, 74, 22, 218, 244, 4, 17, 190, 2, 81, 233, 180, 176, 196, 49, 118, 137, 27, 69, 230, 70, 230, 110, 129, 204, 5, 191, 253, 56, 66, 69, 193, 218, 99, 113, 135, 118, 254, 100, 142, 246, 152, 217, 32, 79, 110, 203, 179, 136, 212, 5, 115, 251, 56, 249, 39, 227, 215, 103, 46, 254, 248, 49, 218, 201, 164, 174, 70, 175, 248, 156, 228, 101, 108, 151, 151, 29, 201, 151, 42, 183, 29, 143, 145, 97, 26, 112, 7, 169, 236, 242, 27, 81, 37, 169, 227, 71, 199, 75, 10, 239, 167, 125, 164, 246, 181, 230, 29, 151, 170, 208, 194, 152, 23, 142, 145, 226, 59, 233, 57, 44, 107, 57, 235, 158, 42, 179, 45, 137, 62, 199, 33, 173, 102, 227, 78, 76, 50, 133, 87, 221, 142, 205, 36, 153, 240, 249, 246, 41, 77, 182, 73, 132, 96, 167, 169, 212, 82, 207, 190, 113, 117, 179, 142, 19, 247, 90, 62, 104, 132, 97, 52, 109, 107, 190, 107, 230, 245, 66, 121, 52, 129, 52, 190, 128, 252, 171, 134, 112, 202, 241, 103, 6, 59, 84, 188, 153, 34, 129, 111, 77, 62, 86, 119])},
|
||||
{encoded: "4bFdGK87dyPL5SLCG9jPNddsA1WTC2bhrhc3TSxGL9sLo3sEhU7QzR1632Y862B1NBVEENEcSnFqJesxm5QQaDXsbpvHcbUJwe7TZ5N6kbAVv4LEGRNXZAEx5pmYRRsvFvoxGJTHCWxzZ44b9sTLzcH2L5ckrgQ6PcBF2oYVKMF1ENiLPwQtrb4BAQAyShngcV8tT",
|
||||
decoded: new Uint8Array([64, 96, 155, 51, 219, 107, 125, 73, 43, 240, 252, 113, 172, 174, 156, 195, 222, 170, 198, 140, 74, 145, 248, 82, 61, 217, 199, 39, 65, 51, 225, 7, 210, 200, 217, 240, 1, 236, 86, 12, 48, 218, 79, 233, 219, 252, 236, 88, 47, 212, 34, 12, 45, 205, 243, 100, 82, 23, 13, 158, 233, 255, 121, 28, 105, 180, 182, 127, 162, 144, 188, 250, 104, 158, 206, 9, 218, 135, 101, 138, 248, 34, 243, 165, 126, 85, 83, 33, 119, 201, 161, 42, 206, 21, 45, 112, 79, 166, 193, 42, 123, 167, 204, 248, 88, 53, 11, 137, 77, 147, 196, 99, 83, 56, 165, 36, 58, 243, 234, 51, 147, 83, 225, 52, 249, 87, 236, 147, 177, 174, 165, 50, 78, 57, 89, 254, 118, 208, 72, 22, 220, 64, 74, 212])},
|
||||
{encoded: "mq1wKWbiXpYp91NWKHQWVGyT5v3uyBuJxNg39YUajFguM4FttUFgCfRpVY9yJgytt5ZWs8jwXgDrZYuvUAM9R7STyT8ETaoPo5H3BYMJ5NvVBTVGK6NUAtXcRSQGGsAwyi4h9S8mWQQHJ5ZgbbRENj6eB5qkuLYgMDw5uVEzzCAtUkf8JCWwkqH37x8awQpL1m6nSQdN3KEjo9xmkFMbR7Lg7TQ7wj55B6mdsVNBpgsNFU73DbeKwr6SBV2cGStQoGE36gHUWHXGoBm7oNAVMxsbELEpEPyW4yJ35SBMnGvJ8RaPSvHeTkQ",
|
||||
decoded: new Uint8Array([44, 7, 208, 237, 147, 23, 135, 172, 95, 220, 176, 126, 31, 240, 244, 243, 80, 136, 131, 136, 24, 179, 72, 182, 33, 210, 164, 25, 233, 59, 171, 159, 199, 125, 200, 98, 125, 43, 1, 197, 243, 104, 61, 176, 217, 63, 35, 70, 237, 151, 184, 107, 189, 78, 90, 61, 153, 191, 67, 182, 205, 185, 135, 128, 199, 95, 209, 165, 51, 168, 73, 6, 146, 245, 49, 99, 155, 238, 142, 47, 20, 86, 60, 7, 142, 100, 253, 240, 138, 255, 122, 243, 92, 148, 173, 133, 102, 225, 123, 16, 13, 164, 231, 227, 7, 159, 25, 200, 105, 11, 23, 226, 26, 129, 186, 188, 254, 27, 121, 6, 166, 237, 144, 215, 121, 165, 72, 61, 252, 19, 120, 13, 239, 234, 252, 45, 3, 35, 209, 165, 40, 157, 117, 166, 225, 225, 101, 193, 86, 45, 254, 43, 244, 174, 64, 57, 193, 157, 219, 227, 51, 230, 216, 253, 170, 249, 115, 183, 39, 151, 107, 51, 43, 90, 237, 162, 106, 193, 171, 137, 196, 187, 186, 155, 31, 5, 200, 149, 15, 52, 44, 225, 177, 174, 233, 246, 141, 134, 222, 204, 179, 90, 160, 98, 144, 77, 36, 214, 196, 86, 26, 201, 253, 137, 240, 157, 123, 38, 151, 5, 12, 3, 136, 132, 232, 96, 26, 165])},
|
||||
{encoded: "5SFtYzGZjjNM1PSdbgsepTrPDawm2oCMojgSW97PovLwfPaD8HBTRfdFLYYM4tG1mbUeVEEHSVNTreS5CJkyWkdk4TyQPb2WmNX36WGx6NATLD3d5V5PgzKnq1JgegGEmhNWNEoR3nvfEem4YdXY9hoifNqEvmzUQtjNSznT4f3wJ9Giuvzc6XHxbaCmd99HiMsBHMDFUWsWhg7Xb5w47LkjhSCqRQRqQbYBhQ4YHervRx4Md8dV61Zzgb5hvvwtYiFEQnksvFem9pNXk42YJfBqzeTsnZuhxG4CmGoif7stkywPzJpKa2Dm9as8YM1qq2SU1R3zdn2YY2c2TqfFksQKDXzj3r8JTDZxGm7trqjFa2ZysKUgJCPTjoYZYqpxatiWP7rFtN1nhWTKPcEQgLThWxVuwDfyCeeut3heihHvx5F2EWoY4CtQTbcKgJMERvgMqh8oESMSHjtToZr3HuUN6RrXjyJi9XiXeTGqe83iLrTLZ2WkiowNiPAZxApTJ6a7fTGg2W3M7fpkY2hc7HzzGMRJGuy59wUUpfsW5fMmS8rTHcDgWp1FGp389vd4sBhfzkXSLeh3p5dPxBHXJeGWjSygZvu8YXQHu6TWQYtxkDroq8ZBRsMHvWQCXaiMdGGMxALgqVHHWJmA5fNLeDJGYAhUSiRabSzVYsGSayacdWCS6u8ganCyuMF1XZ79nSENaT6wCKFN28xLmRz3G5NbYb3SAGb8HAryH8gUoW2Ndsde1BUo8o1x2SMmHGff68rWvBkaRRGk5gNFjDgSF49XhBbNe4bogX1rPfV2tZjvKNkqWehVynbjUPMfczLEasXYLT8fWyeXw3prQwEkgLmVR1uFkLtYuuXYFXM9ih4ULdNsNXBUVppobzz8x3ew84WD6y5a1oHFwnupTvpKYbsYqRJYPQiPfnfAjJNSFYYcfxtpoc11bYcEVzzxSxU3nWuVwfT1bXknpDtFM53P562rmkWtSNv3GkmCL3eVsnos6eaMWD3pGGuMtYFXtjSZPEJXMLCM18bzMhRYkFvmY6zH4HejZdnU6PMDpjZEAzJnsWUoMadZzeZRmnYNK4tPmGAK9qs8ekj79nUof1tsn6rtSpP4p9hdeZbHGCkPo6Nu3WcyQfuDxVNrqmFYre739Y5XTvQApxombcVdY4BizsMWUrTmAJttp14UmYakAkmAuDs8PUGAnDwo6mQYeunxQY5HbRQbN1JGQ84VppeY85haBxgv8sdE1r2rxPjyXVdjELggmocLk3AMkbmUGCZwLmgBhCp7JP1bEFraVENAFbd3YGHye4wB88YKtqaWMmTmV5L3sfvDGwMcRji6ERwT56U",
|
||||
decoded: new Uint8Array([127, 63, 148, 216, 157, 49, 55, 20, 26, 150, 170, 139, 109, 58, 63, 224, 6, 128, 6, 43, 149, 130, 238, 124, 172, 14, 189, 149, 219, 173, 77, 29, 141, 145, 218, 203, 213, 224, 42, 117, 244, 66, 223, 251, 115, 179, 96, 63, 139, 40, 149, 109, 253, 140, 163, 141, 15, 217, 67, 88, 244, 53, 15, 117, 83, 111, 226, 215, 48, 232, 181, 147, 232, 10, 192, 200, 50, 64, 50, 132, 15, 45, 104, 67, 227, 41, 65, 177, 138, 40, 163, 86, 178, 85, 130, 179, 238, 34, 191, 251, 10, 230, 13, 37, 168, 74, 125, 16, 120, 74, 248, 96, 44, 255, 94, 161, 91, 193, 4, 24, 69, 115, 183, 161, 80, 73, 199, 173, 92, 243, 10, 99, 28, 229, 225, 204, 147, 186, 209, 192, 102, 42, 193, 171, 151, 230, 224, 118, 185, 242, 103, 239, 96, 213, 178, 251, 227, 153, 222, 123, 207, 15, 187, 162, 223, 91, 101, 146, 26, 117, 12, 154, 242, 94, 62, 225, 177, 36, 46, 205, 44, 41, 17, 168, 252, 105, 160, 227, 52, 94, 236, 181, 65, 120, 200, 9, 219, 102, 97, 160, 0, 72, 226, 66, 2, 92, 70, 71, 40, 123, 173, 71, 247, 83, 201, 188, 191, 228, 174, 209, 140, 185, 58, 22, 206, 186, 188, 169, 248, 56, 120, 52, 182, 157, 43, 236, 91, 90, 154, 62, 113, 198, 10, 58, 195, 156, 146, 62, 214, 244, 117, 242, 24, 136, 81, 189, 207, 102, 149, 71, 29, 110, 196, 144, 0, 183, 225, 6, 97, 214, 98, 162, 45, 13, 213, 1, 247, 175, 18, 51, 14, 42, 144, 52, 35, 251, 175, 76, 146, 185, 202, 41, 175, 75, 230, 207, 17, 213, 105, 226, 94, 119, 37, 206, 187, 186, 194, 121, 61, 126, 185, 213, 120, 156, 110, 74, 19, 154, 209, 36, 162, 84, 101, 207, 7, 30, 232, 42, 16, 65, 161, 28, 220, 128, 100, 33, 88, 246, 111, 41, 49, 150, 145, 46, 5, 107, 19, 88, 19, 35, 180, 146, 157, 84, 85, 46, 16, 208, 129, 159, 91, 146, 210, 115, 230, 71, 211, 205, 113, 15, 206, 93, 82, 204, 77, 119, 232, 75, 18, 242, 105, 88, 241, 130, 244, 165, 111, 63, 26, 14, 156, 231, 157, 39, 47, 93, 1, 78, 180, 132, 215, 146, 105, 69, 147, 70, 198, 114, 161, 49, 120, 21, 72, 86, 127, 234, 172, 190, 213, 58, 93, 136, 206, 31, 189, 42, 138, 168, 184, 53, 71, 220, 70, 63, 85, 19, 150, 70, 2, 48, 135, 52, 218, 164, 227, 178, 49, 90, 179, 73, 143, 150, 190, 126, 222, 2, 17, 194, 41, 230, 183, 13, 29, 112, 37, 136, 49, 71, 238, 148, 127, 224, 148, 142, 252, 121, 54, 216, 71, 21, 24, 107, 250, 153, 131, 102, 48, 190, 44, 156, 62, 199, 248, 31, 138, 42, 10, 231, 46, 170, 195, 81, 10, 145, 209, 179, 223, 173, 130, 96, 47, 73, 69, 160, 37, 8, 133, 232, 188, 192, 253, 119, 207, 26, 156, 46, 91, 17, 146, 175, 14, 184, 241, 148, 67, 210, 34, 222, 172, 79, 40, 170, 78, 164, 183, 148, 85, 184, 112, 74, 122, 26, 234, 27, 156, 39, 45, 43, 17, 143, 115, 11, 159, 53, 190, 9, 176, 150, 197, 85, 90, 212, 121, 180, 219, 198, 10, 195, 10, 236, 70, 89, 144, 6, 34, 61, 95, 164, 34, 65, 68, 183, 65, 43, 197, 51, 230, 201, 93, 165, 151, 181, 204, 25, 122, 40, 226, 231, 142, 241, 233, 247, 18, 173, 248, 167, 89, 144, 226, 224, 96, 100, 121, 30, 246, 155, 14, 111, 242, 29, 8, 66, 38, 57, 38, 63, 170, 130, 254, 113, 150, 192, 189, 250, 1, 159, 157, 253, 209, 63, 55, 227, 109, 95, 134, 52, 96, 230, 59, 31, 33, 83, 95, 5, 171, 151, 71, 175, 56, 112, 162, 46, 216, 5, 246, 165, 13, 232, 133, 30, 48, 104, 57, 59, 194, 115, 178, 175, 220, 67, 222, 27, 209, 68, 131, 137, 250, 63, 91, 237, 19, 252, 1, 64, 44, 115, 238, 225, 128, 31, 209, 219, 205, 115, 29, 75, 40, 94, 81, 243, 230, 254, 234, 179, 131, 128, 142, 130, 12, 73, 210, 113, 208, 160, 83, 213, 57, 63, 123, 147, 198, 105, 211, 107, 165, 124, 140, 89, 95, 197, 179, 146, 234, 17, 156, 16, 196, 245, 19, 76, 194, 235, 11, 62, 237, 211, 114, 246, 88, 179, 109, 199, 214, 83, 165, 229, 254, 242, 29, 0, 209, 150, 123, 178, 65, 134, 168, 163, 25, 208, 236, 117, 96, 51, 182, 78, 4, 152, 153, 58, 233, 6, 0, 115, 54, 163, 52, 14, 35, 174, 94, 24, 180, 119, 153, 150, 42, 57, 246, 227, 120, 12, 239, 69, 79, 214, 26, 73, 142, 78, 71, 179, 167, 206, 105, 151, 185, 116, 47, 5, 246, 199, 219, 219, 56, 238, 85, 213, 69, 203, 207, 203, 200, 181, 154, 83, 39, 182, 91, 215, 102, 32, 73, 188, 141, 214, 101, 228, 74, 244, 126, 255, 255, 14, 5, 179, 115, 94, 47, 176, 29, 140, 101, 122, 234, 42, 175, 148, 191, 200, 205, 8, 5, 54, 88, 174, 225, 71, 84, 85, 4, 83, 235, 25, 197, 53, 118, 53, 37, 70, 69, 15, 209, 157, 247, 162, 28, 236, 202, 147, 115, 246, 68, 214, 174, 100, 25, 214, 138, 231, 245, 227, 205, 249, 45, 35, 107, 23, 45, 11, 53, 172, 207, 234, 148, 26, 59, 103, 85, 91, 215, 6, 86, 4, 20, 135, 70, 116, 116, 56, 79, 249, 159, 149, 20, 252, 184, 73, 28, 14, 67, 187, 243, 251, 30, 119, 125, 112, 213, 178, 115, 205, 47, 133, 208, 253])},
|
||||
{encoded: "2PRuM7VmM65iHtys9ycCc4ZZqYAAZSuNaG8ZXJZPU6hmqdP5weJfyyqjW8FGAP6mjLzZWS2S4mW6BUL6WyVbhh19L6Se4GVuWnDsz6NnFAMpb5PiFVtw7SvSJXV82yy6eiaZgE7po9BxsAjKpLTgnJhP49SksvJwtPxxbe9gGC58ApbYfLwKyaQ5Cp7noWpwLhjv8fxFeqjLoHcwJBfuVF8Kz2rHz7YPb2nRDVqJTeGZzxd6hEs7yLMzbop7cZpYQw76RXQXJ5WGSPPKw49fLnND9UhpUrrKTJ64TFsgVcVnxTG22xFYHXtaLM838UNgBK9CbjNYgNMn7Kkja4y1SeENyHZoNjPw3WNe3N4v7PRhkS7ciAep7Ht84kdazkQacN25iMzgT84rpsxrYRQXXYCvo8Tg5UM71fGznC5fAFxNfLatUEcZ5oVS1GPD2b1LZN8evrsbD5RQizZtTXYiszLfJDPSargnmQvM2jFWv1HiynyNUb7m1UiKyvLfeSvEcS2UjMWK69mBRLitCHfau7wFsN441F62vnvdeb9dGHstp7DcXfN41qnfYhJnSBuZxLJPyY5HXLSV6nsd91sUvC8DCct1HPzWArCZzpN9bTqSMx8cCruVVzfSjdBt2NjVLQKBHqfLQCsCPGiMLiemZBuY2SNgBvwHQ2SM8XHvkgpYg9fbvvbVX4jVNTqTKy1SzXntYQAej996F1w3L2TWwrxbnyDZQewaJBhnTMcJQkA3X7ZCUqne27BSSQMYqvtiVjg7wvvtwsTbJh3i28uKficabceB8UTDRXvAZpM5sUUGwU7HE4VfweqXHs13wBgeWHn7y9BRnkgdMYVrFEMJn8PrHrhTFwKV",
|
||||
decoded: new Uint8Array([240, 101, 84, 191, 94, 202, 70, 196, 44, 62, 149, 96, 225, 163, 31, 75, 4, 12, 28, 234, 162, 76, 235, 89, 247, 135, 152, 190, 115, 117, 167, 43, 108, 12, 94, 217, 128, 91, 126, 67, 81, 85, 1, 201, 90, 243, 128, 140, 187, 249, 157, 60, 100, 75, 166, 201, 157, 201, 151, 153, 69, 123, 18, 69, 157, 143, 166, 241, 180, 170, 89, 240, 101, 244, 106, 142, 137, 239, 191, 5, 2, 224, 28, 183, 31, 213, 118, 137, 81, 144, 252, 211, 78, 82, 59, 126, 25, 51, 62, 118, 53, 195, 208, 98, 221, 156, 155, 32, 52, 90, 220, 254, 145, 195, 84, 153, 218, 176, 189, 54, 3, 149, 140, 141, 126, 34, 207, 31, 34, 67, 48, 145, 58, 202, 178, 246, 201, 105, 35, 54, 63, 29, 201, 208, 37, 96, 252, 36, 198, 99, 151, 35, 141, 119, 73, 235, 171, 159, 244, 186, 202, 245, 241, 28, 195, 190, 75, 218, 36, 55, 186, 66, 235, 10, 108, 2, 32, 160, 57, 98, 9, 13, 167, 17, 242, 244, 120, 210, 49, 245, 83, 16, 77, 132, 117, 103, 111, 197, 181, 160, 154, 11, 86, 25, 85, 47, 16, 202, 59, 66, 53, 75, 135, 165, 245, 130, 187, 187, 180, 97, 22, 136, 145, 180, 158, 132, 164, 131, 242, 88, 131, 74, 80, 37, 253, 96, 107, 68, 72, 196, 172, 253, 80, 154, 219, 220, 140, 151, 88, 230, 226, 2, 154, 215, 230, 7, 178, 126, 115, 98, 46, 10, 141, 224, 234, 136, 1, 214, 73, 74, 133, 32, 144, 132, 80, 220, 79, 217, 46, 26, 216, 138, 145, 130, 194, 12, 92, 138, 106, 68, 193, 50, 176, 87, 125, 156, 116, 17, 146, 100, 118, 83, 177, 190, 198, 27, 201, 168, 25, 217, 70, 47, 113, 152, 63, 70, 247, 174, 192, 12, 70, 177, 207, 118, 234, 157, 51, 201, 118, 122, 140, 104, 243, 125, 214, 80, 141, 244, 182, 20, 186, 167, 95, 251, 31, 172, 24, 69, 122, 118, 177, 121, 203, 131, 106, 209, 221, 30, 204, 24, 23, 83, 51, 15, 130, 204, 80, 30, 47, 27, 110, 26, 232, 86, 95, 162, 155, 154, 204, 41, 154, 2, 159, 33, 189, 255, 243, 21, 212, 92, 203, 107, 116, 136, 80, 186, 157, 234, 169, 2, 71, 197, 44, 130, 125, 209, 139, 206, 158, 125, 215, 251, 68, 179, 39, 214, 8, 124, 85, 13, 99, 48, 1, 11, 244, 168, 0, 222, 65, 196, 120, 81, 209, 107, 176, 153, 98, 25, 61, 13, 8, 184, 14, 96, 150, 193, 19, 87, 220, 175, 49, 31, 255, 153, 25, 103, 65, 80, 91, 48, 241, 171, 230, 39, 19, 172, 227, 233, 178, 207, 79, 241, 30, 20, 253, 141, 13, 36, 10, 13, 187, 220, 77, 106, 180, 144, 76, 69, 247, 235, 251, 121, 223, 188, 97, 144, 168, 72, 55, 216, 165, 157, 82, 222, 170, 137, 9, 49, 153, 104, 166, 138, 139, 99, 236, 132, 6, 210, 222, 12, 64, 76, 224, 255, 21, 231, 209, 248, 90, 93, 248, 222, 96, 124, 111, 183, 174, 56, 139, 85, 42, 58, 192, 251, 75, 99, 92, 236, 172, 248, 223, 145, 91, 70, 39, 15, 238, 36, 217, 158, 189, 140, 2, 88, 72, 14, 38, 108, 179, 89, 184, 109, 231, 208, 195, 143, 154, 181, 9, 228, 189, 118, 66, 220, 125, 134, 152, 249, 175, 69, 65, 41, 213, 184, 109, 7, 89, 53, 85, 55, 212, 47, 133, 118, 194, 170, 136, 58, 95, 89, 163, 19, 19, 253, 11, 7, 225, 29, 242, 62, 103, 28, 166, 25, 221, 125, 197, 48, 206, 235, 7, 216])},
|
||||
{encoded: "1qfmmXsKrjgoaQQXBKzu4wkWvhiQMLh1eARhJv3no5y5birw967J4jRkoxhoYq8S6QpiqzxgSAMCmEwgz6Dpaj1qucCsGg7sYMaw2wcteSyNCa9yf5RH78EH4uyrooAkQVQkAqFLnkwYcZPPn5PhsxkbL4Lwzy9fHdW9DyBzgebE1FyuULALDWLkERwrSZPTSQNzq7XYkxEi2RhofVzougSucXJzWAnHvaSP175iBGwMcWbjePFdNTPn6kZKJMsgf4ZUe7bvcsVdeJumhVMfGpgKRHBfs178FNnvA9TznuA9AHZGyUsGtraUU8pMtVLdaPvJJFeBikg8iEK3dtCzN8LrqRyZDusVEX4rYW8vibQ8kTyGJs4QoQXiEbQnAK9GT5vjKGNKbUwHF1aEi3M1xTJ6rjEL2ApX5HhM4C72g9EeKaUpgiCT4PU4jDMTkBaLF8hzQ99PdkHn5rxJxBXehWdyCFZyn466E4storEdG1xwAVxooQ5eNSJDTT4LB4GTy2YZRwm19aFNP13jpjZ25HA8oTuQAK9J1LUUqBECHBVsMrP5oxxfjMaNcadW22jBoPvag63DYgyiXyH71npXrtLeW2z46B3jcs1MFZRf2y1tXdnjyYhrazNJ2zXihetkJeZzoERa88kmR9vcYdae8bhx3JHPRrKc3WgHpdxRard3Qfyxqdb1aUKprwx2kxY6efyMffHbL4nop3ni48qsTZUfipvHS3tVGLpJpwjacuHgq7gF5VtWPBCbBdPXve2RNWQLxY4huwNUBAYneeGJxuKHQ7xfPVX3AYpKy2r7VNg65W5qkDn4WQbuvDjaXm2QXDWzxLRM2nGzpt1MfHReYKhdPndhda5AR2gtUcRqntGa8VSJuX9gZxVJ8jeRLjCdxq6mCgVoaWUUKijVUsq5c7N7Hx9MVXJyoSKMP1KKLsM9wqN5hFWmpToCobaEvtkrpM3dtHyksUdMYC9XShg95JEBPJkTtp279G8jxu98MnA79ESdLnyza4zt2h97cLSe9uDPQS1f4gM1VSpd7rFaH9TN5xPQcZoou6nZUeuH6j6JtgYR2DEfybPQkHLGNBADyuhVbZ1ZxGZ6W8D9izWrdYUHAhUFwixi1a14FpT85JqGFhXQQCg6KcyRPHrZpff1VP2kocQQsWe2rM2dEjMys3Q",
|
||||
decoded: new Uint8Array([0, 32, 94, 239, 173, 86, 121, 67, 136, 220, 118, 17, 49, 246, 5, 98, 81, 55, 76, 134, 76, 138, 79, 186, 217, 216, 134, 56, 47, 74, 176, 194, 159, 124, 231, 158, 169, 117, 244, 112, 63, 210, 195, 78, 118, 72, 36, 168, 248, 17, 68, 51, 108, 10, 251, 105, 31, 151, 147, 170, 163, 64, 11, 76, 86, 43, 97, 63, 48, 40, 81, 142, 125, 110, 53, 89, 115, 153, 190, 19, 175, 37, 102, 109, 248, 109, 27, 6, 158, 203, 72, 209, 171, 63, 132, 65, 168, 99, 245, 83, 160, 32, 53, 110, 175, 54, 22, 69, 178, 13, 186, 89, 236, 33, 50, 21, 248, 247, 113, 65, 0, 42, 127, 229, 151, 143, 6, 83, 67, 156, 213, 157, 35, 75, 188, 165, 251, 56, 185, 103, 16, 99, 93, 122, 22, 220, 90, 98, 177, 78, 158, 173, 143, 118, 117, 57, 194, 33, 153, 47, 54, 85, 11, 23, 97, 109, 144, 96, 118, 209, 150, 78, 248, 105, 85, 72, 41, 116, 215, 165, 186, 46, 123, 30, 236, 156, 90, 145, 224, 158, 179, 153, 126, 142, 89, 151, 100, 25, 98, 180, 248, 102, 198, 115, 236, 199, 11, 11, 202, 155, 18, 162, 196, 132, 183, 107, 199, 180, 5, 30, 135, 35, 133, 155, 133, 12, 138, 208, 57, 68, 253, 245, 203, 200, 106, 236, 252, 24, 25, 157, 139, 254, 91, 59, 163, 113, 254, 122, 206, 86, 25, 159, 112, 198, 223, 9, 34, 35, 170, 66, 119, 125, 199, 127, 97, 98, 202, 86, 101, 49, 4, 32, 239, 178, 98, 171, 33, 195, 109, 183, 43, 14, 78, 96, 180, 163, 113, 199, 214, 2, 80, 44, 98, 46, 149, 223, 248, 114, 41, 97, 219, 228, 239, 252, 222, 190, 232, 11, 144, 39, 112, 77, 22, 25, 98, 168, 208, 113, 28, 164, 114, 64, 238, 230, 65, 87, 109, 112, 63, 227, 219, 109, 197, 128, 191, 248, 227, 82, 84, 86, 233, 24, 100, 242, 89, 159, 5, 117, 157, 2, 223, 0, 179, 111, 15, 237, 87, 156, 149, 105, 222, 165, 203, 122, 243, 96, 68, 28, 64, 69, 98, 96, 246, 170, 203, 11, 61, 188, 223, 201, 154, 176, 116, 66, 45, 224, 134, 5, 199, 29, 129, 34, 78, 160, 160, 122, 187, 133, 138, 118, 194, 38, 10, 30, 38, 233, 134, 40, 99, 28, 97, 90, 24, 117, 200, 99, 85, 76, 92, 195, 180, 160, 242, 76, 47, 50, 238, 230, 143, 54, 84, 247, 217, 75, 214, 100, 196, 180, 199, 151, 227, 89, 108, 199, 159, 57, 170, 54, 101, 2, 32, 14, 75, 194, 204, 41, 77, 6, 221, 29, 108, 139, 55, 156, 86, 46, 93, 0, 218, 143, 58, 157, 244, 220, 33, 143, 216, 179, 123, 166, 225, 176, 183, 187, 187, 136, 123, 139, 124, 48, 94, 93, 134, 108, 29, 70, 34, 244, 231, 196, 11, 99, 104, 27, 136, 164, 210, 242, 109, 21, 169, 213, 47, 245, 31, 158, 42, 114, 38, 105, 72, 127, 87, 108, 214, 220, 67, 131, 113, 85, 107, 207, 166, 157, 78, 187, 153, 70, 129, 18, 19, 20, 80, 50, 166, 41, 224, 21, 43, 224, 108, 211, 122, 210, 46, 47, 137, 9, 115, 140, 141, 161, 66, 5, 216, 253, 84, 23, 197, 2, 145, 148, 23, 203, 221, 90, 54, 189, 174, 46, 70, 227, 210, 135, 56, 60, 198, 96, 184, 73, 143, 133, 45, 45, 52, 245, 110, 204, 80, 67, 47, 39, 136, 136, 248, 109, 154, 177, 219, 110, 91, 232, 192, 2, 20, 232, 27, 60, 148, 239, 154, 119, 177, 177, 51, 244, 58, 144, 228, 251, 90, 192, 17, 215, 216, 244, 199, 12, 215, 202, 130, 208, 73, 40, 99, 58, 17, 147, 140, 17, 88, 255, 236, 198, 201, 22, 146, 42, 147, 80, 117, 207, 72, 53, 221, 81, 215, 219, 101, 200, 124, 254, 145, 200, 251, 104, 100, 61, 126, 254, 175, 28, 66, 183, 128, 253, 41, 59, 81, 35, 166, 1, 88, 86, 0, 1, 20, 224, 182, 145, 241, 56, 81, 219, 115, 217, 11, 15, 210, 21, 63, 29, 185, 128, 250, 39, 101, 165, 205, 68, 192, 177, 51, 189, 194, 16, 35, 233, 87, 244, 125, 224, 247, 176, 98, 198, 49, 208, 28, 215, 200, 9, 163, 34, 148, 191, 158, 229, 16, 129, 14, 146, 140, 66, 23, 97, 25, 90, 2, 149, 239, 9, 219, 18, 216, 131, 31, 171, 188, 71, 55, 36, 5, 131, 57, 6, 255, 51, 46, 222, 251, 105, 141, 102, 39, 144, 75, 4, 10, 113, 23, 67, 26, 156, 80, 35, 200, 66, 99, 156, 69, 168, 101, 212, 200, 106, 84, 115, 45, 119, 234, 126, 165, 160, 219, 227, 22, 18, 233, 177, 51, 54, 191, 114, 144, 232, 109, 185, 191, 9, 227, 42, 110, 22, 138, 174, 196, 244, 169, 74, 173, 92, 115, 223, 231, 48, 210, 214, 88, 131, 181, 242, 52, 233, 213, 132, 48, 107, 58, 172, 19])},
|
||||
{encoded: "1jCu2MB8j92xaWnqVL1TMZzyQAcSKHnBAsG1osFLdaoz9BLYt4d72n44F8oxySyNVkZ4heYZoAiLE2a82JhTiJzPJM7HNu2o2ugkgVhEHtY1nXjvMEmafhjpDeQKgnjxygQi6Tzivux3jbDeWV8d9tLZRxyN8HCCRGj331PafNKsLR8USBdFwEeRpmP64fErcHag7GJDXXv2de1ScWLkZUJiBtGvWLiCYkHmEwXVVCVZAdGs4YAsvHFUYtAMRyouNeFQMuXfCAZdbgFvfqwZGLGfFo28pjW1rPj4CKFE1R4zSYotPBpSwC7o6DeGZsBgzWaTMHe46G4gn7yasTz7sCxpWnvwPTbp2AnLphSHzUHRTdkKDVpx5RXQaoQXg5NSVnv9eVKZSVtqo7FwQK4VpkSkSdd6LsaAro3QZDDG3X3Vf43VUzN11XUAMky2ustG5MTL62dH24DK5RBWxhiHAgwM8qNyXhApwUSgRu8HKs2ZSCYXrxkX24SNvahQDCzTcLEwwEeZqCQZPq46V1SqxrF15AEp4hiwnTzpzgK4bsGqLchngMdtbBxm76Gk3NatPNcqA6T8zL8V1GtbPr8oxjLmaMtq25qbiuaJo24N78To3V58JRuJLhdbVjYVu63YZtMUJrDFpjkSf2Lv3MtNfq47oMPEoymVoYgPa2YGLTuhWrT1evPh9aALjzTdPti29AMaQUmcXvcrUZ1wYwbfwwR1TK8XnF5dTHCBAYTSzGrocJVJXXYTKtsHPyTf93NCsPVd9heKhrSqFQvRporc12XKCcmeTUgA9B65g2kfQwDJTZX7y23aTrfgSHkJhqieTUPcF5hWT6kY3ZXCD7tVi2pvn2MtjS8PCgtJqKWBviz1Ly8uwt7ga9h362nFJGXPUdT36u4Z1xVKrRWd6QHYuqr4VHDSnv9dqK5xLKEZiUWZjYaqkmqYBXMd14dRUrq9R7hv4vB1ndy2z6FCcMwRv2EqVBQMWx621GphnaTDvjJLXZVyWY36dC8f8yvANPUJUwAPdQePoLRXC8bMf5d5BEYwBb4j8cR77QRay4VNbGFAG9ah9ofYoavUPA3v3ePsmVuCQR6nquZc5RwiCdd2Mo9xtmZcDNhji8bLfNcvRaAWJ8r98K",
|
||||
decoded: new Uint8Array([0, 16, 191, 2, 243, 138, 127, 126, 122, 115, 136, 85, 147, 38, 209, 130, 246, 140, 233, 213, 161, 249, 7, 48, 103, 190, 118, 59, 159, 215, 1, 69, 9, 207, 11, 235, 181, 3, 252, 231, 3, 130, 57, 11, 92, 211, 117, 145, 182, 21, 113, 9, 73, 206, 253, 237, 56, 45, 238, 208, 38, 62, 129, 147, 195, 16, 148, 242, 187, 198, 109, 51, 30, 151, 218, 130, 82, 67, 39, 217, 125, 175, 139, 186, 23, 220, 4, 39, 120, 103, 138, 192, 184, 124, 0, 156, 68, 206, 117, 139, 121, 29, 148, 165, 127, 145, 86, 156, 39, 135, 28, 65, 17, 71, 166, 248, 14, 140, 177, 155, 253, 37, 41, 20, 135, 0, 135, 157, 169, 19, 102, 120, 141, 109, 142, 253, 77, 80, 214, 217, 29, 96, 42, 54, 11, 130, 197, 51, 240, 68, 207, 175, 254, 221, 146, 233, 151, 252, 65, 90, 251, 181, 152, 239, 49, 104, 74, 18, 233, 97, 171, 186, 201, 71, 143, 225, 12, 253, 178, 200, 63, 15, 74, 89, 188, 28, 109, 159, 17, 113, 56, 52, 101, 59, 63, 248, 124, 232, 84, 177, 40, 178, 188, 174, 141, 48, 201, 125, 230, 188, 43, 209, 14, 183, 192, 238, 211, 148, 173, 117, 231, 108, 38, 42, 112, 165, 222, 134, 180, 186, 172, 16, 213, 79, 223, 175, 101, 34, 162, 2, 160, 76, 242, 120, 215, 15, 83, 184, 65, 214, 142, 37, 120, 207, 93, 255, 8, 208, 67, 212, 63, 214, 138, 250, 91, 52, 120, 250, 87, 92, 125, 40, 117, 57, 241, 152, 172, 103, 46, 48, 79, 55, 88, 34, 33, 121, 241, 130, 203, 40, 171, 255, 73, 115, 19, 186, 47, 254, 231, 249, 157, 221, 98, 61, 133, 48, 17, 197, 55, 167, 197, 221, 69, 94, 117, 254, 72, 185, 53, 218, 202, 241, 230, 53, 84, 206, 121, 145, 215, 50, 179, 54, 151, 60, 122, 77, 27, 52, 167, 14, 37, 88, 199, 41, 0, 188, 31, 89, 113, 183, 231, 102, 107, 4, 247, 250, 209, 97, 71, 214, 145, 99, 94, 144, 184, 146, 99, 1, 170, 244, 161, 154, 104, 173, 207, 219, 180, 39, 75, 249, 211, 102, 115, 217, 87, 129, 116, 12, 253, 220, 6, 203, 198, 36, 191, 173, 141, 171, 14, 82, 195, 170, 57, 70, 153, 147, 128, 34, 135, 111, 12, 108, 73, 94, 68, 132, 160, 205, 251, 135, 7, 24, 18, 224, 85, 160, 43, 196, 107, 190, 141, 206, 107, 115, 165, 174, 144, 75, 151, 177, 235, 214, 193, 114, 128, 180, 20, 163, 251, 54, 179, 105, 150, 166, 221, 174, 41, 138, 251, 206, 192, 243, 178, 252, 47, 229, 205, 200, 165, 162, 115, 203, 238, 203, 33, 51, 98, 100, 118, 145, 171, 165, 239, 141, 75, 37, 38, 53, 134, 107, 90, 149, 148, 18, 132, 205, 156, 74, 179, 170, 6, 64, 134, 170, 204, 155, 129, 61, 167, 128, 3, 131, 128, 140, 179, 201, 163, 214, 124, 174, 49, 146, 15, 11, 229, 171, 11, 194, 232, 46, 11, 158, 123, 166, 255, 67, 7, 230, 69, 129, 188, 15, 8, 206, 136, 18, 94, 181, 36, 112, 88, 223, 74, 229, 131, 220, 181, 202, 89, 80, 191, 223, 5, 157, 228, 58, 155, 192, 172, 36, 54, 192, 66, 202, 153, 166, 87, 9, 214, 248, 162, 223, 132, 239, 146, 108, 124, 194, 175, 89, 131, 227, 240, 86, 234, 113, 64, 171, 69, 164, 244, 208, 99, 19, 27, 45, 26, 51, 146, 242, 145, 28, 173, 117, 179, 157, 139, 226, 59, 102, 178, 191, 104, 121, 152, 51, 18, 83, 49, 231, 229, 23, 184, 140, 217, 80, 215, 132, 248, 176, 125, 18, 206, 3, 198, 182, 206, 220, 155, 229, 14, 132, 186, 199, 52, 38, 125, 150, 74, 81, 96, 38, 49, 205, 97, 165, 105, 118, 186, 105, 246, 222, 198, 20, 63, 234, 105, 101, 30, 217, 52, 148, 196, 24, 33, 12, 219, 188, 147, 180, 109, 189, 10, 34, 180, 230, 195, 71, 139, 85, 25, 215, 53, 64, 108, 102, 137, 168, 79, 72, 17, 69, 51, 148, 238, 74, 69, 123, 116, 6, 149, 232, 45, 170, 94, 158, 117, 81, 71, 220, 99, 17, 37, 213, 167, 34, 176, 69, 13, 199, 22, 45, 8, 204, 36, 110, 216, 150, 193, 72, 174, 76, 15, 148, 112, 162, 170, 38, 73, 150, 112, 137, 37, 148, 193, 249, 150, 17, 73, 239, 183, 161, 0, 228, 109, 2, 96, 211, 205, 243, 174, 116, 23, 28, 194, 172, 227, 132, 42, 200, 142, 234, 161, 248, 90, 203, 197, 83, 169, 20, 102, 143, 108, 47, 238, 182, 191, 115, 110, 236, 251, 97, 88, 128, 111, 167, 137, 32, 205, 1, 71, 237, 193, 204, 170, 210, 125, 203, 145, 107, 11, 130, 88, 64])},
|
||||
{encoded: "7H7UMhiq9rLG8sxwfijNLu2VkJRSLFZe5NRQaZxM6NYpGRhgX1uCJiB83m2zyKwkza4fuddCNCdMGp28QtHRPDu1dC3CohDVT95qZbf2TEnMsePberXvXEQ3uJESSkH5QpdQQnb5m98haamRHLzmo7QhP1cPjZ1cTDiJt7Fm9jYYaUhKwrNeqsxjRoPnpg3ivWeLB8f2vyEyhcbX4Smcb5rWip1hEVgZs8RcasMB8gakDd1pDUgWU7r8wHdGCuTQ2KYzP8xCJyUGtrBJ4hvDf7Ypf7suMBG5Lq4KUDk9eMijgPZBy7FL2En3nNbM6U4dCsbx8Bmc2qg3ZbjaECu155MJxPAyfoYBL397bzkgcL6VxzV4GSSkK5XDnncah2Ci68zsoD6vT1wakThYkUz5xpuz2FiQH4d9Y1VxZNXLkVtNiZT25yWAmuw8Tvxj1UeydoQ51RTaayEgj4K3Zp5jAwKTPapoo9S2bbXHMDXmNHamWahV4mZqjAGRZ5jzfy9Q7JHadjfHgUKcezNbnk7EzJpDXfgZivB6ccRLkM8hp62Y3PyBWxgXK5pqZqSZgYS8Xcro5ToHSGBLJTo6QLWkb2z8cwpfTtpvMG3Eksngeh2UMkZrzFekc6etoE4TF9k4VxtKnckjyhbeHoHJXTmyqxECU9SPyhQjYKMEFAFimjntH1BB7Jp7AQDC71YyYqJ2zwk7rhP2hxYMNhk874m1jHHxQUpjkLc52uPQfr4skyHyjuLKii3V8ckYdEK8y9YkthrezA6Bmy2CB3dhPV7xKq8D4fuDR5iq4pLKYiZefycqqtU9KWe8exrBSqgbrdep4L1T5nJBBjiUiJwY9ftAa2EV5YNkXRVWPZtNvuDvSEvbyzeqY9aMyAWAnQLjZeAsBAWqTbUb2qsGHq8wNN",
|
||||
decoded: new Uint8Array([126, 215, 231, 127, 151, 13, 121, 252, 20, 244, 193, 35, 18, 187, 51, 147, 170, 3, 150, 88, 211, 170, 192, 133, 109, 114, 255, 127, 127, 188, 81, 141, 39, 17, 187, 203, 64, 83, 220, 246, 88, 215, 45, 175, 64, 43, 194, 143, 79, 181, 39, 248, 72, 252, 34, 120, 123, 154, 86, 237, 2, 105, 233, 3, 77, 95, 125, 165, 33, 133, 236, 19, 14, 247, 43, 151, 166, 46, 195, 107, 102, 187, 193, 230, 157, 68, 4, 225, 2, 243, 232, 103, 100, 190, 146, 116, 114, 153, 70, 159, 247, 8, 136, 47, 186, 144, 128, 131, 204, 250, 108, 68, 194, 103, 81, 211, 238, 157, 138, 146, 181, 251, 44, 102, 149, 32, 85, 76, 245, 9, 3, 151, 181, 167, 101, 194, 36, 6, 252, 229, 105, 232, 185, 19, 105, 60, 168, 196, 39, 144, 228, 71, 128, 174, 153, 26, 89, 213, 94, 188, 75, 4, 28, 45, 9, 70, 176, 218, 217, 179, 228, 140, 197, 48, 225, 150, 98, 120, 163, 253, 19, 99, 243, 213, 235, 183, 251, 78, 153, 196, 131, 91, 209, 177, 59, 36, 110, 191, 48, 161, 26, 102, 4, 100, 42, 105, 10, 22, 87, 165, 111, 145, 167, 172, 167, 226, 186, 139, 227, 240, 130, 231, 73, 232, 54, 1, 146, 74, 180, 214, 176, 10, 205, 165, 231, 179, 209, 88, 8, 246, 79, 253, 244, 63, 131, 85, 151, 3, 100, 95, 63, 142, 159, 182, 213, 68, 3, 219, 234, 186, 62, 126, 19, 244, 235, 155, 150, 211, 67, 128, 160, 114, 245, 96, 151, 49, 196, 176, 107, 251, 248, 228, 183, 209, 110, 2, 186, 242, 56, 10, 130, 132, 104, 215, 9, 251, 111, 217, 90, 108, 14, 221, 249, 135, 24, 167, 130, 196, 255, 82, 228, 82, 191, 126, 82, 144, 131, 190, 75, 58, 75, 215, 12, 17, 153, 11, 155, 208, 183, 159, 185, 74, 125, 185, 225, 10, 212, 61, 57, 221, 106, 164, 255, 244, 137, 180, 218, 164, 189, 28, 116, 34, 8, 245, 154, 134, 17, 154, 41, 99, 71, 250, 170, 223, 157, 90, 152, 155, 51, 214, 109, 255, 107, 245, 81, 202, 35, 83, 244, 134, 156, 125, 59, 255, 140, 0, 30, 220, 31, 194, 132, 182, 217, 153, 85, 99, 162, 61, 40, 140, 36, 20, 245, 85, 2, 163, 208, 221, 27, 145, 10, 46, 133, 47, 137, 176, 196, 248, 142, 197, 56, 53, 186, 213, 182, 113, 149, 42, 194, 57, 30, 144, 14, 50, 22, 61, 175, 20, 111, 158, 84, 224, 217, 231, 53, 4, 236, 65, 220, 177, 110, 77, 52, 154, 39, 9, 129, 165, 174, 61, 11, 246, 158, 174, 118, 63, 137, 183, 176, 196, 66, 219, 119, 106, 235, 199, 164, 201, 14, 194, 38, 155, 92, 158, 184, 41, 202, 230, 131, 27, 4, 238, 3, 186, 38, 184, 221, 113, 223, 145, 117, 79, 178, 180, 46, 72, 191, 126, 249, 41, 224, 77, 69, 83, 10, 194, 105, 213, 59, 182, 71, 58, 231, 155, 122, 161, 140, 18, 161, 76, 220, 247, 55, 170, 22, 185, 20, 207, 163, 65, 110, 28, 193, 61, 130, 207, 131, 23, 160, 104, 126, 95, 66, 101, 9, 210, 19, 228, 70, 170, 172, 2, 167, 205, 4, 203, 80, 221, 152, 128, 217, 86, 123, 188, 149, 17, 104, 247, 210, 214, 101, 71, 202, 70, 155, 4, 67, 12, 99, 13, 64, 91, 185, 140, 110, 182, 101, 221, 123, 135, 43, 14, 230, 64, 110, 154, 254, 76, 60, 17, 169, 100, 157, 162, 234, 191, 32, 35, 167, 135, 15, 126, 205, 49, 200, 103, 181, 32, 9, 246, 95, 180, 102, 50, 190, 200, 239, 87, 121, 26, 88, 241, 38, 195, 213, 166, 144, 85, 245, 127, 237, 152, 154, 56, 27, 18, 15, 115, 21, 28, 31, 247, 188, 195, 78, 108, 136, 131, 71])},
|
||||
{encoded: "EPg2h5neFdKP9dCQzt9qTudat9Zt6U2a9SdotjXbaqTVH61veUKxARJPAtHa6HYCGGfPHgm1T31VSQXMN3sXkoAtzFgMnNVepBzcNkUrjawudeXT864QKz8kWrMRExjNBCz32zK7aRc4bLxoZX7geCpxhrfS8A9DUrb4wqSh4hkKmopa6GBSqZDNS6jUvAtHTZg61TxYiMNNYuMD6nLPF2zmJv6bcPMbG7vSNCxoxFtvnfLs7KVta79c9Gx5Xmpg3XEAiP9iQDodinpgyLnFTuUGsNqJsRRB6FYx73B9DJ8tfoQfEZATXT1GwUKyHMh2hgBptmnty67KouZLbx3kHwirjFTwiAujKHKK6W2Rm5oD1y8Deyst9x1qC21scrbJ612aSW2kTMvSX4U8X75Cd7ypqPP1UT4w3KdmLPWre3VWV2qt7i8YbaMzndJxsmhUCgHYJP3qKa3f9CJZVxcSWMo2qTHNAUfRipMfSuQnJuTtL58h88cpVHVMsp3vU4cKDc3jDgSudtHP9Lp2dTMMmmWxL5CcmznHkFiyix9TNartoHzHdboyxcfsWgDogaYJeWi",
|
||||
decoded: new Uint8Array([50, 109, 247, 49, 255, 183, 91, 105, 123, 189, 117, 225, 133, 215, 231, 53, 200, 90, 143, 118, 233, 9, 20, 161, 134, 86, 18, 148, 148, 144, 115, 249, 80, 173, 215, 8, 109, 8, 36, 37, 155, 134, 185, 154, 161, 57, 101, 135, 42, 254, 83, 4, 249, 64, 209, 214, 172, 24, 87, 90, 106, 19, 16, 137, 47, 91, 32, 238, 228, 188, 28, 204, 118, 30, 140, 83, 230, 36, 84, 70, 237, 95, 166, 56, 187, 196, 73, 125, 208, 133, 5, 182, 3, 237, 6, 33, 239, 145, 222, 72, 34, 62, 9, 76, 2, 182, 220, 242, 37, 220, 242, 17, 109, 214, 11, 144, 38, 190, 8, 207, 152, 133, 153, 4, 164, 53, 54, 39, 23, 242, 227, 50, 36, 130, 71, 34, 142, 217, 171, 179, 60, 17, 167, 84, 84, 210, 220, 221, 195, 26, 121, 119, 236, 159, 20, 222, 244, 244, 51, 172, 172, 19, 170, 63, 84, 3, 198, 69, 230, 176, 187, 83, 69, 97, 24, 86, 86, 222, 3, 70, 36, 51, 120, 198, 82, 185, 154, 212, 160, 25, 34, 239, 91, 109, 197, 100, 78, 230, 25, 224, 125, 39, 177, 6, 37, 236, 42, 164, 80, 157, 223, 87, 76, 216, 194, 166, 170, 7, 99, 20, 118, 209, 253, 253, 64, 218, 194, 144, 156, 8, 72, 216, 87, 254, 71, 253, 144, 43, 41, 235, 149, 78, 82, 225, 179, 204, 248, 232, 55, 27, 60, 74, 243, 149, 210, 238, 59, 54, 212, 245, 134, 49, 35, 159, 225, 21, 241, 95, 78, 45, 87, 105, 46, 41, 107, 168, 136, 91, 14, 125, 230, 80, 70, 17, 187, 204, 152, 52, 33, 70, 1, 104, 201, 77, 123, 199, 28, 109, 153, 166, 13, 123, 34, 246, 205, 236, 97, 208, 167, 97, 232, 165, 181, 229, 12, 129, 254, 62, 208, 71, 53, 232, 10, 63, 205, 8, 96, 157, 224, 72, 94, 138, 250, 170, 242, 5, 168, 100, 120, 13, 233, 238, 7, 139, 84, 176, 85, 51, 38, 47, 124, 31, 102, 83, 251, 41, 87, 196, 107, 157, 134, 244, 49, 66, 56, 115, 17, 240, 45, 58, 16, 207, 181, 133, 189, 135, 89, 193, 106, 250, 224, 53, 138, 246, 249, 78, 238, 253, 52, 151, 218, 101, 51, 53, 231, 152, 122, 151, 145, 71, 57, 1, 119, 224, 62, 137, 34, 153, 249, 164, 143, 16, 157, 138, 115, 110, 246, 190, 200, 216, 169, 170, 100, 231])},
|
||||
{encoded: "2ejXMHpjgFWg35FMKwkv5UbAtVQjCVvjyEhDx1w1QpRhb67tNRmUmcGhRe85umVYJTprHeBHgwEzhyBAgFH4",
|
||||
decoded: new Uint8Array([122, 100, 217, 215, 167, 233, 119, 72, 193, 133, 91, 105, 202, 167, 250, 208, 226, 74, 7, 149, 186, 35, 92, 215, 97, 32, 100, 198, 63, 99, 212, 93, 108, 230, 115, 97, 218, 255, 13, 84, 105, 21, 24, 157, 198, 108, 7, 167, 81, 181, 75, 124, 9, 97, 22, 4, 132, 120, 169, 66, 131])},
|
||||
{encoded: "29uvpMHx3nJJrb6YWJo8LxQ78UzpUX9RZ4zGmykXP16dVayoJLTx4sWb7hnXcBSHyDgsT9z1jPNKg9iySazXguFKiUqLguvvYG8PKCVc7fZojEYhFfCtqGDpVtPuJqYNnFgqamDSrwtGNdac6iKFo7pGA61frdAaKgyeupdiVM9wVMcVqMr4NcsTaG6ZSLtd1VU25e3iv2x1evCDNrfALVjdARha4BQF9PhQvb1CqtjqHm7saVZEEguj9ZUcU7pnPcbhp74k4HJGoJjyWuSwLCgLDe5KubuFr2H6WJv3Uovq6css1uVhaqt8bdGpoqtVFSPAzhTzAFQTSs6aFp8U61cBjksRZ2sFRspoWi6B8CZbG4mmqdr9thp1gTsDzAhPKLpy7G4zNAwuThbDAHZ3FAsgmgo3w3D4GPmj7g36KdW67R3yxwb4d6uU2t9jxVD6gu6LGyAveCiHxZTEpCuA6habfAku8EDkFnY4keyspFauRJYvoHJ427kyWHQgs7xuPGgGBwJ4r5CzqKg5ewkDkjZN7jpyT2k9jqXZi8JiwURYtapusWhS8sxSmnDi9B42sMTzes9S9yEUFcRj1wd2iWvS1X197Av3gZDhNsZLJo4vLBp83WE7QLKD1vCNhdBvu1FfGewcfGL4Eyi5cVjErM4yqsZVys2g7GnAY1bdLKNsHJZDLereeMtap357qZV6JKi8tW7kGMdPdbytkpR85yEL5A5XcBjbCTf7WoVP1wunD8VtrVbxnakW4uE2xjKYAKXnupdmosvJCtLxxrGjNzYwGMe2sQKEZN3BT5iH7D61eacrtSQE4oNG9gjJsf5x5ejPzwCYb93ptppPP6UZNtcjAMRCgiVjXRN8uSotXqN2ShY2ym4CBPeE1DqKeE76kzVPiXyeEcgoDxJoy1xF2htTjCheqmtgiUoXDZdB1LWYWSi61SR2wNUqr6XXsmGHx4Kmtr3smjLP5gSNfNZBjUHtGHW7kg3r7qns2GaiDJEY8eMqhxipwY3hg4rAZ",
|
||||
decoded: new Uint8Array([162, 201, 100, 149, 166, 238, 175, 111, 43, 106, 149, 183, 202, 46, 125, 81, 4, 156, 189, 192, 106, 7, 59, 131, 83, 68, 86, 186, 154, 222, 92, 51, 238, 111, 50, 221, 16, 177, 234, 1, 153, 204, 30, 207, 157, 87, 155, 133, 239, 142, 146, 120, 103, 57, 184, 172, 159, 30, 176, 115, 185, 128, 173, 248, 59, 22, 70, 22, 80, 137, 185, 25, 31, 250, 46, 53, 159, 161, 222, 192, 213, 114, 27, 144, 32, 232, 12, 19, 159, 74, 75, 191, 78, 232, 141, 222, 18, 75, 54, 106, 229, 178, 140, 240, 77, 37, 88, 35, 96, 108, 134, 123, 5, 71, 63, 186, 229, 145, 237, 115, 87, 158, 6, 79, 200, 242, 252, 116, 135, 146, 27, 5, 137, 233, 220, 239, 121, 196, 68, 136, 45, 113, 178, 66, 8, 80, 97, 3, 124, 156, 244, 110, 237, 2, 4, 48, 193, 227, 172, 71, 119, 247, 81, 229, 110, 3, 76, 68, 110, 165, 84, 76, 160, 129, 83, 102, 101, 7, 116, 141, 166, 164, 11, 29, 20, 51, 16, 236, 234, 170, 144, 95, 181, 167, 84, 71, 140, 127, 49, 253, 28, 125, 11, 209, 177, 3, 106, 135, 228, 77, 27, 194, 194, 229, 237, 47, 42, 87, 24, 251, 49, 244, 153, 129, 221, 133, 114, 242, 91, 44, 127, 158, 253, 101, 6, 24, 238, 88, 200, 10, 244, 105, 27, 106, 205, 65, 120, 49, 12, 126, 73, 220, 82, 107, 38, 143, 207, 90, 15, 72, 5, 254, 146, 102, 92, 185, 198, 242, 225, 195, 51, 24, 22, 117, 140, 190, 244, 4, 227, 77, 177, 223, 148, 99, 128, 254, 231, 161, 100, 168, 50, 45, 114, 214, 252, 176, 195, 129, 156, 159, 178, 61, 104, 80, 128, 218, 238, 226, 160, 148, 226, 45, 150, 47, 25, 37, 81, 171, 54, 103, 7, 215, 226, 205, 198, 35, 34, 150, 231, 191, 231, 118, 76, 201, 198, 40, 79, 122, 255, 11, 246, 208, 195, 174, 237, 222, 127, 10, 155, 185, 162, 34, 23, 120, 73, 168, 90, 186, 114, 35, 30, 242, 6, 161, 29, 75, 16, 77, 73, 216, 79, 40, 43, 39, 235, 52, 21, 50, 198, 185, 48, 157, 215, 182, 121, 247, 57, 176, 92, 243, 133, 137, 41, 98, 202, 7, 1, 57, 88, 102, 141, 34, 113, 244, 29, 79, 149, 79, 131, 26, 0, 151, 131, 176, 206, 3, 197, 240, 202, 243, 179, 9, 40, 137, 158, 222, 238, 199, 247, 72, 98, 134, 12, 253, 112, 12, 225, 139, 247, 30, 17, 197, 207, 251, 73, 122, 99, 62, 156, 91, 170, 28, 217, 61, 79, 12, 253, 45, 166, 0, 184, 236, 169, 190, 152, 159, 191, 203, 110, 24, 171, 85, 30, 63, 219, 236, 52, 27, 255, 107, 247, 134, 118, 200, 204, 198, 49, 248, 140, 192, 89, 6, 170, 164, 66, 62, 147, 51, 83, 195, 231, 161, 91, 172, 4, 189, 217, 238, 53, 29, 125, 29, 242, 172, 206, 233, 115, 245, 203, 155, 124, 189, 150, 76, 213, 195, 187, 12, 99, 44, 87, 106, 167, 182, 185, 219, 185, 128, 74, 57, 77, 201, 189, 64, 164, 113, 111, 155, 109, 107, 128, 40, 206, 132, 149, 90, 145, 54, 202, 150, 74, 178, 12, 39, 179, 137, 25, 230, 64, 168, 71, 150, 26, 31, 4, 236, 41, 101, 230, 10, 219, 167, 75, 108, 242, 215, 187, 94, 111, 138, 1, 218, 120, 144, 173, 112, 240, 121, 232, 243, 47, 94, 83, 56, 165, 125, 247, 60, 223, 188, 64, 224, 198, 97, 28, 137, 219, 54, 68, 90, 233, 110, 124, 226, 129, 213, 128, 137, 190, 6, 109, 223, 97, 182, 126, 139, 243, 203, 47, 149, 2, 13, 34, 214, 209, 243, 22, 248, 192, 160, 144, 223, 137, 180, 115, 208, 64, 153, 118, 123, 149, 253, 110, 14, 124, 54, 192, 77, 220, 184, 157, 88, 143, 22, 169, 116, 232, 142, 235, 208, 92, 235, 168, 151, 199, 186, 159, 88, 226, 205, 216, 247, 231, 196, 102, 185, 152, 57, 112, 227, 81, 248, 39, 92, 163, 40, 60, 228, 114, 129, 179, 221, 133, 164, 235, 31, 100, 64, 28, 18, 162, 168, 13, 247, 92, 153, 143, 2, 236, 90, 245, 125, 153, 73, 168, 41, 192, 26, 109, 171, 208, 116, 129, 133, 209, 92, 246])},
|
||||
{encoded: "4ABD9Nm5oWBu3KmCvN8w9Pobxb5qXD5m9EEFHGXMgDftS8dfmGTDqNnJ39nJD2QtMzX6nEgLcChWV2Wxm4f62Ewpe5Fqj7R2pCE1e4RA8vEFuGt8FYpfDc6YY7FdGBTAxXRCHcGdPuporViaSvZ4CSfP51KjpBdMgrHvHx824DgSsFLY3pAzrD9XRgUao8LT6dwqNjtECdED8VdRUBsGamvoyzu24r36zoUn9774iTa8irDD3Z42iWbP6bwxqn3QryrihmEXsKF587ntVWD",
|
||||
decoded: new Uint8Array([107, 84, 69, 22, 140, 230, 117, 160, 83, 115, 104, 5, 8, 119, 59, 233, 131, 195, 180, 158, 90, 77, 122, 209, 68, 53, 104, 153, 118, 69, 238, 52, 20, 241, 96, 188, 236, 224, 35, 167, 223, 177, 177, 166, 4, 62, 181, 5, 83, 9, 221, 173, 42, 69, 99, 206, 236, 69, 186, 244, 18, 62, 111, 192, 255, 12, 130, 37, 178, 173, 85, 158, 50, 15, 245, 82, 111, 74, 17, 250, 59, 173, 175, 0, 84, 47, 50, 217, 167, 62, 116, 38, 240, 106, 238, 93, 240, 92, 7, 84, 25, 164, 55, 105, 180, 83, 21, 75, 163, 208, 6, 190, 24, 110, 127, 165, 46, 76, 10, 115, 142, 66, 92, 192, 13, 61, 215, 231, 58, 92, 193, 235, 20, 83, 205, 1, 69, 32, 218, 173, 88, 102, 151, 176, 12, 208, 217, 11, 230, 53, 76, 121, 122, 87, 160, 101, 102, 31, 207, 59, 43, 237, 152, 164, 251, 94, 119, 144, 110, 76, 242, 132, 1, 102, 139, 26, 29, 202, 112, 179, 52, 235, 204, 11, 115, 167, 103, 66, 194, 87, 50, 141, 40, 219, 211, 119, 4, 81, 163, 153, 214])},
|
||||
{encoded: "BWrnkZcq4RcNQJqUA2Hci6J7sB",
|
||||
decoded: new Uint8Array([57, 111, 134, 103, 255, 164, 201, 97, 217, 156, 210, 133, 142, 75, 81, 143, 138, 184, 142])},
|
||||
{encoded: "B8yKot3w4B6T91M5aenkED1FsBSPgQxAowNZTJEyk2pXNiwd2m96LDzTeGrE4hm8GewKCbmuBzmisMVwatdDN9WyKhi9QcjKNVjTPi4Qpd7vSHg5nb2CtLcDrvuqRwRugaMUbWsbY9rQhQqUBa2RobhEDz2P8cR9e4LBVk2H8BYkrYVqwj3pcWU7HBvgZj5snnMP1vQgutqo2gkcHtDMxaggNKkTLf9TQjj5vkw21pPYo3Tba6z3D6CZvtjWt997TBfLkgtdhvkZ4yZfdatad5MfUUchSE8NLg8mC6Zqyo2VpBAd7gcZehzurxGSjf7q2x2puyPMgACTfgiJV9pg44xZUripTTHrTmD6s8MxcKeW99PQP9ikvf4AgEZKXHWJ77fnsNL3zv21AgrX5eN2LAJvmfi8AMMYG8g6b9w1H6Vz7zPFDyFnzvpMauUnB41DoFy5cqzigZLjfavNULLNZjj3pX1kX5eTomsR2dE4yn8T4G6NAqyMaNTCzxwGRf4jjL1Q3V7RDy4NrUgjD16XApLGUrRggSo19k9sPtwBnE5PcFW1uvAaNDBUaHh8s8puYV4bcgofWyNgBD25ZeqJ6QpiXmhEbFfdb9QMPC6PBLyGbMitFpmdS8wo83eDLJzGzUKnWbkY3CnKchFyzBbDAo6A7s2tHptV7f7wQLDQP4ebxnvkRjkHZi3ZKvEBQFr1kArxKtukK2PPX8Anu5mtjChZh4DgXFX8U5Sirzwe4JmU9ijkorzzvDuG71wL2C5Eq",
|
||||
decoded: new Uint8Array([77, 57, 254, 33, 242, 26, 14, 0, 108, 196, 1, 91, 247, 177, 76, 103, 46, 224, 32, 236, 71, 142, 119, 194, 91, 60, 90, 130, 185, 119, 213, 78, 203, 158, 92, 8, 125, 188, 26, 98, 71, 211, 110, 219, 97, 85, 7, 154, 148, 194, 57, 75, 18, 180, 48, 112, 223, 133, 149, 127, 20, 35, 7, 248, 195, 193, 207, 58, 231, 109, 184, 178, 239, 168, 151, 161, 220, 147, 35, 139, 101, 221, 116, 132, 170, 59, 148, 121, 193, 126, 250, 59, 71, 202, 55, 56, 20, 96, 46, 174, 44, 55, 160, 245, 9, 86, 177, 3, 177, 195, 93, 181, 214, 210, 4, 61, 163, 119, 222, 165, 119, 4, 67, 142, 182, 129, 38, 252, 114, 232, 98, 54, 138, 223, 26, 137, 5, 17, 245, 39, 181, 189, 250, 243, 146, 52, 150, 108, 18, 247, 173, 129, 193, 160, 56, 252, 237, 111, 53, 213, 125, 106, 224, 187, 246, 245, 241, 35, 205, 59, 2, 84, 186, 8, 254, 163, 136, 6, 134, 131, 177, 20, 222, 211, 129, 173, 39, 175, 224, 110, 38, 4, 162, 116, 254, 38, 3, 165, 255, 173, 227, 46, 238, 43, 63, 183, 70, 81, 117, 98, 244, 79, 214, 121, 10, 113, 228, 123, 202, 1, 65, 93, 22, 223, 66, 247, 7, 185, 120, 69, 248, 94, 11, 199, 214, 85, 180, 118, 232, 143, 103, 44, 202, 31, 81, 173, 56, 222, 36, 140, 33, 39, 252, 140, 114, 48, 80, 168, 14, 4, 173, 114, 38, 61, 201, 120, 178, 44, 72, 163, 41, 156, 79, 120, 240, 104, 69, 40, 34, 238, 91, 26, 254, 45, 141, 255, 184, 245, 72, 229, 15, 77, 246, 54, 113, 42, 41, 170, 40, 41, 204, 19, 248, 245, 92, 208, 105, 236, 63, 91, 227, 70, 106, 58, 251, 83, 26, 35, 73, 74, 181, 215, 22, 175, 132, 244, 181, 129, 154, 215, 20, 28, 47, 84, 237, 66, 138, 176, 101, 48, 168, 101, 160, 230, 240, 3, 74, 36, 43, 104, 71, 164, 117, 225, 37, 148, 14, 81, 240, 135, 70, 164, 227, 103, 180, 58, 214, 166, 204, 199, 205, 9, 20, 128, 9, 25, 224, 33, 27, 56, 109, 4, 193, 76, 222, 217, 221, 180, 109, 20, 142, 65, 17, 248, 178, 162, 127, 249, 139, 50, 164, 253, 51, 184, 18, 202, 16, 241, 241, 70, 96, 159, 35, 126, 100, 116, 223, 210, 244, 32, 94, 187, 245, 58, 132, 15, 143, 25, 147, 82, 22, 241, 52, 3, 85, 129, 42, 49, 226, 213, 115, 16, 141, 250, 107, 243, 146, 248, 219, 116, 181, 222, 51, 150, 202, 124, 239, 87, 167, 113, 231, 213, 43, 83, 244, 244, 58, 107, 101, 130, 125, 135, 120, 59, 78, 200, 131, 9, 207, 243, 8, 28, 94, 139, 155, 88, 51, 143, 194, 49, 1, 212, 247, 67, 182, 20, 194, 29, 132, 193, 160, 129, 85, 8, 148, 22, 123, 133, 182, 200, 168, 22, 68, 159, 108, 148, 190, 28, 11, 66, 28, 62, 135, 97, 153, 122, 29, 6, 115, 172, 190, 63, 121, 243, 155, 50, 102, 105, 7, 170, 130, 200, 27, 44, 43, 18, 15, 103, 39, 66, 18, 48, 93, 225, 109, 31, 113, 83, 103, 68, 122, 124, 218])},
|
||||
{encoded: "2QrSzs9WtE5o8Bz3QhFLmUwx1AiSb8jCXK8GyGKjviUyd8FVXL1p9fDJ9zhaGdB4ZDiJBrPceugmi8tZnCshA118RU36HZCxFvSJhaMBmZjoskkYgtXLHxx1pPViswspNPwXogyXsid2PfM8yUEABEUBdhaX8EF8esayotu1zcPK46vUM3xMra7SpKSHy9BkSrwzjxPZaFT2e95NJ57azhY3cDBTHooghoLGHHXTTJnpoTfgXV5uUnELCW13MZ9z6AmYEKCRbmBdYiG3bxELjSHmTJn296u4hfo8dEyT25pyxQCEs3hcWa19e1a8qgtNpCqURKgqsTpGoP8M5fV6RVwacMRCxrb7KV7J92VN775K2Ysk5sedFQv2WKoaZGm3JD89HEJfGU9gw16u2PKKELJBZCECKooept1SDQBJaDsgEWW5njSx1HTEUmnYwjNPqXEkzKpBdNzCqnX51KieTna6BqE5fZy3xTakub4334ozfP9Ef98cBFGV5w3yXyqPHJuF3nauugxV85Y7hTtwnsLWQjPazKqxbyCnDSBsZhTXaMdZMu3nJ2c2J",
|
||||
decoded: new Uint8Array([227, 146, 116, 57, 2, 166, 127, 254, 73, 179, 70, 232, 72, 126, 129, 97, 108, 123, 121, 83, 198, 32, 19, 62, 141, 31, 173, 24, 108, 252, 221, 62, 39, 48, 252, 101, 174, 59, 89, 173, 1, 252, 155, 151, 60, 122, 142, 106, 228, 11, 141, 78, 51, 254, 206, 112, 210, 241, 3, 225, 230, 182, 34, 42, 204, 73, 29, 242, 192, 121, 86, 36, 237, 235, 62, 173, 50, 146, 85, 150, 21, 198, 178, 53, 232, 60, 30, 120, 176, 1, 41, 76, 18, 213, 134, 119, 120, 194, 93, 224, 137, 20, 207, 40, 102, 88, 150, 20, 136, 216, 134, 233, 155, 187, 178, 120, 183, 218, 208, 69, 102, 157, 91, 39, 36, 157, 90, 245, 31, 152, 87, 108, 194, 221, 192, 168, 117, 252, 110, 117, 18, 213, 48, 59, 62, 251, 136, 11, 47, 252, 124, 186, 91, 29, 115, 128, 160, 13, 2, 64, 218, 149, 152, 111, 146, 100, 0, 180, 197, 112, 220, 99, 24, 9, 243, 132, 145, 255, 15, 5, 84, 168, 205, 142, 38, 224, 24, 106, 85, 182, 42, 70, 202, 58, 21, 44, 221, 69, 32, 69, 10, 155, 211, 166, 246, 185, 206, 201, 182, 65, 164, 196, 3, 214, 134, 90, 90, 108, 179, 255, 232, 152, 198, 254, 227, 202, 188, 88, 60, 253, 71, 88, 1, 124, 149, 56, 77, 14, 192, 159, 208, 24, 137, 60, 173, 41, 242, 130, 148, 193, 66, 248, 120, 169, 126, 183, 87, 97, 219, 55, 26, 63, 141, 187, 158, 119, 174, 235, 65, 50, 120, 22, 37, 98, 185, 154, 225, 175, 189, 128, 98, 190, 71, 216, 75, 200, 40, 112, 234, 33, 253, 225, 17, 67, 181, 185, 211, 148, 227, 82, 185, 7, 142, 167, 56, 53, 63, 219, 23, 250, 49, 255, 162, 57, 80, 53, 153, 46, 146, 183, 54, 80, 146, 113, 26, 252, 169, 179, 31, 213, 152, 79, 166, 229, 144, 201, 89, 16, 215, 172, 117, 140, 54, 196, 9, 238, 144, 235, 120, 141, 251, 36, 28, 175, 221, 194, 23, 66, 193, 94, 74, 6, 158, 188, 195, 111, 39, 6, 207, 14, 98, 183, 34, 97, 15, 198, 152, 114, 147, 100, 104, 17, 183, 40, 207, 112, 229, 14, 71, 20, 146, 204, 52, 203, 207, 176, 51, 164, 90, 29, 98, 159, 10, 94, 135, 204, 212, 40, 5, 81, 1, 247, 191, 89, 244, 15])},
|
||||
{encoded: "8kT2fq4yJVdf5hYwwfnwYWD66XnUvokM94b7URHetGiZgzxdjsPnbxJP5Ds1SvCRLgqdyTNnebvb57fRUgd3CQUTx22MmifyjoYnCRWAgz9kRifQNVnpfoymvV9gSYxZVzRkvAVWTegpriT9NgPCwt77oni34PSgqxkPA5yGgy9EzqRaEhazGdEZL7RmHhR2Edz2uebk5CvthVk7KSPPNaGwap64RQRNTJ4afXK6KBquqGF1CLdDgAWzdN9YTajYczDoETUUMTpkQL7ofQxpVGokB2QnfhhGCVPHDxAFKWriVLZy7",
|
||||
decoded: new Uint8Array([219, 212, 222, 6, 113, 40, 170, 36, 148, 88, 22, 206, 218, 213, 168, 81, 207, 25, 207, 140, 153, 13, 239, 190, 245, 197, 184, 159, 199, 147, 240, 97, 33, 113, 169, 74, 66, 149, 172, 207, 69, 95, 32, 19, 129, 7, 102, 43, 208, 31, 217, 99, 189, 136, 151, 206, 211, 176, 206, 172, 238, 133, 144, 32, 96, 62, 191, 194, 11, 222, 56, 19, 24, 80, 126, 188, 190, 229, 85, 66, 130, 45, 181, 68, 252, 58, 23, 130, 5, 254, 217, 246, 252, 106, 84, 128, 109, 47, 229, 77, 40, 27, 101, 254, 121, 119, 239, 42, 161, 173, 155, 196, 230, 248, 198, 250, 82, 134, 130, 22, 212, 177, 120, 106, 252, 167, 71, 134, 95, 22, 100, 72, 62, 6, 217, 228, 245, 39, 241, 143, 218, 89, 36, 124, 113, 35, 135, 240, 231, 144, 63, 202, 89, 20, 150, 249, 52, 157, 223, 36, 224, 117, 83, 21, 132, 69, 60, 94, 233, 152, 201, 70, 87, 168, 243, 138, 50, 86, 32, 83, 32, 175, 44, 183, 224, 84, 127, 209, 134, 207, 76, 58, 109, 241, 181, 59, 149, 71, 99, 202, 168, 199, 73, 253, 152, 19, 99, 1, 64, 73, 23, 211, 30, 83, 155, 168, 86, 111, 156, 62, 9, 3, 78])},
|
||||
{encoded: "48GZsJWGdHpBLTetjWyeQj94f56rVzXMW2FVZ6vzDDLCa1iVPET41DTpQK654yGcUPqS2bycq2TfMzbij1riY43DdUEHYsbPA5hrBgM7Zjkag3fzKCFUVzXKhV3MDTGqRvmPRiiwg35GL7rBHY1bMkjkqxG9e7LX7LzRWm1ZRCBGpi9hQjCRuppcxKnU86C6qPbm5xVpPwqJ9nxHtnYXJf5jyAdrsGHh4KfDiYpSSW5TC16R6XT59aEqMdU4j4ASkDougcEBRuRj9L5jJ38sF8d9Bdp74Gn2jkYSeY3juaWZm3JuwbC7fivBk9aRRSd7bZhnJLEcvz5ZH2mW6dJFJeoqxv8mxKjdzSA4LVdn7SaF45NNDfmKSQVxHFEQcFb9ofy9pkZ24zBqQeqwxxP2HKj97x4HaZoCGLWZk4tpEtH2jmej8DpPwvp9AwbtQTneQZJ79MhxNFGQ8okzzwzH5Jr7MDKXFxfTbMjREtqTujXQyj5aDkavWviKhLSDnjdEzUhjczj1aer7bFD9bvXA8auUQbJvC4o5uREfb4VcbUSfcfbrhRN3Eva3zB3eaZViPhzqfpeGhtnP9h1XjFAZpT99QSV2zpJ1WbdF8pCC7mDizPmtP9LYoBXRtMLo4k8aog5tVviXzXbeb1XFr5Tqz8C3DP8N5vqnSfK4JWVgq8hw5LVpJ5WUFkhEHn6xdgPrymgP6Dc2JHHgTx2FUxCvbwxQZLPNEAYi48zrcmKpGDog6aKEhBanVmBjVWgRDwpjbzp8vkj6oKjcFhypNXbCVZBeu4Husm3bxPVLstkJ7kPM6b3UaV6HSACKeHr38udYSNDNKbTLLB72H8UDZumidjW2EhpjYMjSsziRwF2r6piGy5R4sjUP34oZXp46eqfUCywtNegqu1Rck9Zb1kdQS9ZBDMKUaF8mKpY1qWTEa82yrSMgTdLpYsHd1fEQpBHKVQLbobhdzdv7rvqk3cr2YzvvWv6EAezUYgTWi2nw9BmUdaWWQDt2uZmYnzvGQXLPrR9EJr5buYskBMGmUzJyjjEdbfPfp9NzH4YNi2n1zPAoGav2sDNwyg51SFzYhjuSRFUJSLsGVzPZ2GYwNvDGeXpf7WECEgciEd48bGizTp1N1sStt9sY9fa8rqL6vf9KDcFC4WZTtLMQdBAxijLUGHLN3oY6B54c9hHVNDRSfxE1ZkJVvPJsekBWgCgzp5kromUAFddum5e7ghhDMQMCnkq4LRcC9UC9S9jafGKJDHqGxmghxBqbbeu7om58KRkoYf7NxqvSAixqoUgMRhi8YCTYmjs3XVWLVVDPb869DeBZocfyqTTYsiyQM23",
|
||||
decoded: new Uint8Array([197, 18, 66, 64, 216, 231, 110, 87, 17, 24, 46, 145, 70, 6, 217, 87, 240, 5, 195, 155, 83, 68, 157, 213, 190, 127, 49, 136, 95, 1, 144, 27, 187, 100, 127, 15, 74, 230, 252, 29, 44, 213, 99, 193, 251, 75, 138, 140, 207, 232, 36, 81, 251, 71, 151, 117, 2, 186, 251, 166, 224, 143, 151, 214, 197, 101, 45, 2, 242, 78, 84, 183, 101, 217, 237, 191, 201, 176, 129, 205, 163, 228, 162, 200, 103, 130, 60, 254, 54, 44, 189, 43, 132, 198, 229, 56, 146, 42, 72, 33, 255, 33, 69, 180, 148, 253, 1, 56, 111, 146, 37, 165, 81, 5, 74, 110, 114, 184, 191, 76, 166, 168, 123, 132, 96, 233, 57, 20, 255, 111, 10, 132, 161, 183, 75, 187, 115, 11, 80, 144, 12, 46, 182, 217, 87, 215, 158, 71, 116, 110, 39, 255, 74, 3, 75, 220, 108, 53, 212, 181, 133, 87, 249, 48, 59, 113, 140, 76, 216, 56, 245, 76, 133, 254, 13, 188, 142, 64, 7, 252, 10, 132, 142, 6, 124, 188, 82, 236, 181, 158, 34, 76, 204, 238, 208, 250, 235, 255, 193, 206, 10, 111, 151, 15, 201, 110, 79, 60, 158, 213, 215, 143, 21, 177, 168, 44, 228, 16, 20, 88, 27, 12, 244, 118, 193, 134, 96, 226, 85, 195, 179, 236, 211, 254, 169, 249, 191, 215, 170, 156, 75, 224, 188, 151, 113, 233, 249, 217, 197, 38, 200, 226, 162, 223, 215, 87, 187, 189, 150, 117, 181, 194, 127, 251, 163, 37, 73, 7, 186, 134, 88, 216, 69, 11, 226, 173, 144, 83, 98, 26, 245, 81, 69, 134, 233, 253, 211, 7, 97, 160, 73, 64, 82, 3, 188, 110, 103, 129, 243, 243, 246, 28, 76, 60, 107, 247, 32, 125, 37, 204, 93, 97, 156, 153, 202, 224, 135, 124, 172, 131, 52, 97, 26, 253, 112, 204, 142, 125, 86, 63, 23, 181, 46, 58, 42, 245, 155, 177, 195, 136, 123, 255, 157, 74, 93, 227, 193, 191, 135, 87, 172, 49, 92, 156, 91, 195, 111, 105, 142, 231, 104, 93, 95, 116, 168, 32, 229, 214, 213, 169, 214, 218, 234, 173, 88, 130, 78, 8, 28, 117, 206, 133, 68, 177, 21, 103, 241, 125, 125, 129, 186, 198, 194, 190, 129, 61, 50, 42, 8, 151, 222, 174, 239, 195, 18, 35, 17, 19, 135, 88, 192, 4, 21, 85, 53, 249, 4, 121, 159, 217, 51, 57, 142, 41, 50, 180, 125, 3, 209, 31, 96, 117, 86, 144, 168, 224, 145, 130, 33, 18, 225, 63, 100, 252, 99, 127, 15, 61, 244, 57, 184, 12, 152, 124, 121, 111, 53, 196, 216, 139, 159, 53, 186, 117, 246, 209, 218, 224, 161, 113, 135, 133, 104, 178, 158, 24, 124, 152, 36, 153, 147, 157, 103, 146, 64, 124, 121, 226, 68, 52, 223, 207, 102, 46, 26, 17, 163, 253, 189, 248, 210, 5, 132, 103, 255, 43, 85, 70, 176, 49, 121, 135, 61, 119, 241, 169, 19, 87, 169, 135, 152, 149, 107, 35, 240, 224, 139, 67, 118, 94, 10, 50, 179, 108, 174, 69, 67, 65, 118, 255, 232, 230, 209, 128, 96, 223, 153, 7, 10, 249, 119, 197, 72, 242, 180, 8, 192, 95, 90, 174, 253, 239, 44, 38, 158, 114, 23, 82, 169, 15, 79, 122, 145, 144, 85, 123, 120, 52, 73, 253, 155, 134, 136, 100, 6, 62, 92, 69, 36, 252, 127, 208, 228, 30, 72, 61, 166, 202, 26, 58, 45, 219, 128, 96, 7, 221, 150, 239, 23, 229, 187, 89, 119, 151, 232, 146, 210, 159, 38, 104, 112, 95, 204, 196, 44, 67, 4, 80, 0, 41, 73, 253, 81, 144, 6, 178, 94, 179, 123, 16, 12, 101, 190, 149, 147, 215, 186, 166, 204, 131, 60, 115, 217, 94, 39, 86, 177, 249, 215, 161, 147, 179, 57, 24, 138, 5, 45, 47, 58, 38, 146, 155, 212, 109, 195, 212, 128, 206, 232, 213, 35, 5, 224, 106, 61, 250, 152, 131, 192, 207, 94, 171, 11, 46, 228, 56, 36, 90, 159, 85, 215, 154, 194, 128, 79, 201, 50, 209, 46, 126, 247, 76, 172, 88, 176, 196, 112, 199, 84, 187, 114, 6, 28, 64, 215, 188, 250, 27, 143, 92, 187, 156, 196, 84, 242, 169, 238, 198, 30, 235, 203, 17, 193, 138, 186, 62, 116, 121, 232, 157, 17, 192, 138, 183, 150, 55, 160, 65, 161, 118, 18, 62, 50, 97, 166, 221, 106, 62, 230, 112, 204, 108, 157, 13, 12, 242, 195, 245, 244, 88, 251, 224, 105, 254, 233, 197, 8, 181, 192, 81, 237, 142, 18, 14, 160, 114, 19, 150, 97, 60, 160, 38, 236, 91, 61, 211, 103, 74, 78, 142, 201, 204, 208, 32, 241, 122, 118, 95, 197, 16, 240, 161, 139, 25, 160, 170, 123, 44, 126, 201, 54, 87, 176, 92, 160, 39, 213, 31, 80, 253, 176, 207, 148, 45, 11, 216, 20, 195, 132, 159, 81, 50, 143, 42, 80, 112, 23, 20, 196, 100, 74, 59, 251, 142, 249, 237, 200, 194, 189, 157, 182, 254, 239, 23, 168, 131, 24, 194, 214, 70, 89, 15, 126, 145, 90, 200, 73, 67, 109, 213, 53, 6, 119, 10, 201, 192, 181, 200, 143, 176, 69, 29, 77, 143, 6, 158, 34, 220, 118, 112, 151, 105, 92, 205, 181, 75, 131, 107, 220, 176, 69, 146, 241, 74, 52, 232, 83, 38, 135, 202, 88, 181, 117, 14, 237, 224, 158, 208, 213, 94, 131, 95, 81, 227, 6, 40, 104, 32, 250, 203, 138, 70, 57, 250, 251, 227, 71, 55, 155, 93, 106, 58, 251, 190, 183, 75, 145, 6, 76, 8, 46, 72, 74, 154, 52, 9, 171, 240, 14, 196])},
|
||||
{encoded: "9jHYGtp82mkEy7Hni9yzHwxpg2npDUW8nUE8LXQzGdHpbEaco7bJ6YP9oaF7s8sV77YoScEuZHCBi7Hg21YuJDjbrxGfkSCrd38s2QL1yRfz4LsPYkPVHtmbg9SpdVR1JM5py7MfzP2VU4nwSdrptmb8WAa4oWbJcbanwZ9yYcdsStgDXj5iEGVBHEbBh4eYGM7CuX2SGm8DLutTJWCq27byLRetbeCcyBRzWrGLHUnHMpHinWsKiJfxRatAVQR6WYwHHsmPTEXP72HUc3PeuEaDdyEHSL6cSyemYMKhAWpNr6MBYDU65FQVxmmxqGTH7Cr7YxEqUBvQ1UA6J7d3xSYfAveHaKd4uvu7xzYeY6TnDFwEp5NZ7zgfQiAvxdRkaTfwM9LpLcKasXNrjaaQzJ4rt5nzYDk5YDHwauaFFQtuuCWMtPXNvF2i5L3RtkjxoMpSHdYm2hMm8qM4uMt4g3SSA27Gm2wK3Uw3nNrZ4zBoGXy36bw9oAmLWgjfEQhHVKu98BvGk9b6ptzJ5Zz5oQRnSv7Mmr2dAXpaqUN4DQnJaAdN1tVC1sBFUpaHUjdEvJFm4VfR5wtZM53spMAC9FGwggVYqz5Ab56pNkFs2sdVg2cwyUoAWe8PkWtBfBkSJaZzErkHBNtbL5YUsGNAG41t9jsTcBuUsgwPZdP6h9oakk3WTjv2D4iKw2Z1AxcuHg8gVHFPW63UHSPaBsJAfg4vY4TpNCYseFGmXyxqy6w94edY4Ad9rD3jTtoCZQooai1LUiZ5Ty1xcsuCY1owdqm9y8YmJkUthXsdac62a7thErv67vCLnXpRRbA2nRhwt9eobqLyGhZ5CKS9B3Doxhv2QPNNoX",
|
||||
decoded: new Uint8Array([115, 40, 69, 132, 111, 163, 223, 157, 45, 1, 173, 44, 76, 164, 128, 240, 216, 177, 23, 102, 124, 168, 246, 22, 15, 167, 96, 195, 181, 145, 235, 166, 126, 136, 225, 68, 232, 60, 172, 177, 188, 23, 225, 143, 169, 49, 83, 57, 156, 230, 188, 253, 50, 89, 246, 40, 71, 130, 146, 49, 220, 45, 124, 2, 140, 212, 42, 87, 211, 76, 207, 185, 41, 117, 86, 136, 98, 79, 253, 55, 133, 174, 251, 47, 241, 163, 217, 133, 229, 155, 44, 113, 143, 226, 211, 103, 79, 46, 152, 233, 21, 121, 21, 123, 117, 38, 243, 25, 209, 77, 63, 75, 87, 89, 74, 56, 64, 84, 79, 124, 31, 220, 171, 90, 16, 125, 248, 22, 58, 130, 40, 85, 133, 79, 234, 17, 91, 255, 146, 249, 241, 216, 172, 149, 222, 87, 211, 142, 5, 15, 2, 2, 55, 76, 150, 148, 172, 52, 212, 85, 237, 160, 101, 248, 145, 198, 131, 190, 143, 91, 99, 54, 89, 176, 51, 65, 122, 5, 12, 82, 5, 15, 1, 132, 2, 19, 234, 158, 96, 172, 202, 196, 209, 27, 244, 145, 23, 173, 255, 186, 228, 78, 187, 5, 191, 95, 211, 69, 71, 223, 19, 74, 221, 182, 227, 228, 217, 18, 65, 157, 122, 86, 193, 255, 3, 84, 20, 176, 65, 236, 190, 79, 114, 167, 170, 171, 5, 3, 211, 16, 180, 161, 64, 209, 151, 178, 208, 201, 124, 135, 47, 126, 104, 189, 137, 27, 66, 67, 94, 236, 191, 148, 236, 139, 59, 103, 162, 145, 73, 30, 248, 87, 183, 9, 252, 97, 166, 40, 180, 179, 114, 45, 50, 173, 136, 57, 26, 27, 241, 222, 59, 119, 134, 187, 254, 15, 36, 94, 242, 153, 77, 31, 34, 239, 118, 229, 189, 190, 193, 91, 25, 100, 117, 251, 229, 238, 6, 54, 238, 220, 111, 32, 173, 116, 148, 156, 82, 112, 201, 31, 231, 194, 10, 185, 85, 174, 0, 132, 26, 198, 128, 224, 241, 16, 2, 28, 22, 254, 75, 254, 156, 24, 146, 50, 141, 238, 150, 243, 88, 189, 105, 149, 60, 162, 39, 50, 185, 170, 53, 244, 0, 245, 125, 182, 145, 178, 74, 186, 117, 31, 104, 248, 19, 218, 198, 158, 132, 33, 106, 237, 36, 8, 74, 148, 21, 90, 160, 106, 167, 90, 101, 167, 54, 60, 62, 193, 122, 148, 68, 88, 69, 125, 126, 190, 178, 15, 162, 21, 25, 6, 208, 233, 36, 88, 165, 78, 151, 248, 176, 248, 82, 183, 132, 125, 146, 61, 120, 137, 97, 79, 129, 175, 90, 217, 240, 190, 139, 55, 183, 51, 129, 83, 153, 231, 185, 51, 135, 222, 214, 220, 176, 246, 238, 128, 218, 90, 33, 70, 117, 13, 156, 97, 66, 116, 185, 116, 95, 195, 25, 166, 195, 184, 211, 196, 54, 200, 188, 24, 233, 148, 233, 41, 28, 160, 106, 161, 53, 147, 158, 105, 130, 126, 6, 244, 35, 242, 110, 231, 103, 115, 219, 83, 162, 107, 192, 100, 160, 211, 228, 87, 72, 211, 157, 138, 46, 191, 41, 243, 114, 118, 227, 110, 151, 162, 64, 161, 223, 39, 80, 98, 148, 54, 123, 1, 33, 4, 20, 161, 144, 47, 216, 65, 16, 229, 176, 202, 116, 28, 36, 128, 6, 246, 215, 5, 28, 51, 117, 179, 110, 255, 36, 84, 93, 123, 74, 87, 110, 193, 228, 21, 59, 139, 189, 4, 4, 65, 19, 255, 85, 224, 203, 244, 150, 246, 23, 248, 251, 57, 176, 227, 227, 113, 1, 51, 164, 169, 90, 177, 129, 245, 6, 173, 255, 10, 196, 161, 146, 161, 217, 253, 67, 250, 162, 11, 99, 52, 147, 13, 205, 93, 70])},
|
||||
{encoded: "b1hmbBQgKSTPtfyUE3LaXSMHmJoqEbjkUsdPHorUNu97apvr8E3qbo2mAz1SUuEp93XWYCMUL9HwboJU8UJNvR9be4ecXgerkq9oW6pb4GMcHivDfQRSg9rVrbtYTD1CKKgXMbbYoJ6ASUiAMGow7Vg8n3A2VnTE2NANXJ8t3t5K87LZsPXFMrtyYNnjAK4giCCtweFMPumhVJwpN1vewsXZ4syF6Aph8y64taYVFq7bC9GEbbTLm82qzaacMPho8bsZ5Bpfh8sJP33SibC4pCxzPWj1AEwgnrXyrJs3x9ATbhZvX8p8ufE3hZNhASS1HqEHNA5v7ZzeGkRQxEeiS1yfj9T9oBoqZo4AuprrxVVZ7imcxXp6V5rUgQyJ45s9VAfQzXtZjCRYwKBjKE6iakeVQx6D9rZoVFp9Xi67qAUjAacSu4KdUh4gYvBc7kdYjKrXZEmiHmUQLXy8h2MdvSpYyP14XotmNfgY2zfZmVX8FbVa9BvHANUoCk2TD4tSBuEyrqZL3Emp5qnGm9hU1chHrCH4Ag1eG9t5GdByRK7v8FJ4J3GhBuRSQuNLAdFpeA96YSK1iZcV1tgTTr8AQYcM8VW4AJGwodWYTnCseXmfJhdPPQszBRKMbxJ61EFpzW1EazaZHFa6EgoYhPsV6orvVDtEs2YCQ1f5FiRbHmZTM9B9e2gd8S62oNfrVVzuz9eGfNzW1pU9cw27KsEK6mxZDdZEdD4QzbNE3hxMctGTpFyfU8gHiwkXSYwHb93cgQJKy8PKcwXsQjZdPDzSXbK7Jvgj3wDLp9Xd7w1T1452r2jVhAnh4yRRPUJLF6bAp3nYqV9P1SvsZgxvnDNgpG1eprFJLEt6tqoLq1dEkU1bSth5bT4eoEQZ1rgrcTNiqpekQ9gPPZhFsdRHEt6Fx1D1jrZmJM",
|
||||
decoded: new Uint8Array([210, 229, 187, 221, 167, 129, 130, 58, 135, 110, 72, 250, 76, 18, 158, 179, 157, 212, 199, 92, 227, 120, 149, 248, 201, 158, 233, 212, 121, 93, 79, 216, 1, 141, 39, 38, 32, 88, 40, 82, 17, 59, 159, 225, 96, 77, 143, 58, 209, 46, 93, 82, 238, 223, 183, 155, 50, 44, 73, 10, 191, 235, 106, 191, 130, 143, 183, 74, 123, 49, 182, 40, 86, 213, 92, 95, 51, 211, 149, 36, 38, 37, 183, 242, 127, 150, 105, 170, 119, 14, 170, 222, 219, 222, 55, 80, 58, 132, 83, 89, 248, 219, 110, 16, 55, 2, 193, 249, 152, 82, 183, 202, 233, 32, 68, 206, 156, 134, 231, 228, 73, 97, 143, 43, 82, 245, 88, 69, 231, 167, 35, 254, 203, 138, 143, 164, 23, 142, 169, 52, 57, 173, 12, 43, 6, 143, 20, 229, 15, 167, 217, 98, 149, 214, 153, 47, 252, 173, 159, 139, 95, 11, 199, 21, 8, 221, 238, 88, 149, 80, 72, 242, 95, 168, 112, 128, 15, 45, 45, 194, 59, 184, 145, 149, 239, 228, 68, 40, 26, 242, 21, 68, 103, 116, 161, 253, 226, 82, 102, 141, 189, 240, 26, 64, 236, 49, 221, 123, 122, 85, 34, 119, 230, 229, 132, 222, 251, 208, 36, 5, 11, 250, 252, 117, 154, 136, 157, 7, 14, 6, 227, 242, 99, 115, 50, 249, 44, 94, 225, 72, 50, 206, 112, 115, 129, 134, 73, 135, 124, 159, 12, 110, 22, 64, 233, 45, 35, 139, 13, 209, 5, 226, 68, 165, 137, 245, 18, 168, 99, 118, 178, 173, 127, 116, 138, 242, 237, 113, 115, 202, 42, 153, 23, 121, 179, 246, 116, 52, 139, 192, 165, 112, 243, 98, 167, 228, 44, 4, 207, 128, 240, 130, 198, 10, 199, 126, 38, 197, 32, 86, 198, 116, 73, 7, 195, 211, 54, 93, 202, 204, 28, 142, 118, 189, 185, 10, 38, 119, 101, 248, 244, 192, 72, 252, 235, 190, 56, 86, 250, 215, 19, 194, 22, 62, 214, 121, 165, 46, 238, 155, 223, 92, 19, 247, 77, 230, 135, 87, 255, 71, 7, 77, 229, 174, 74, 29, 174, 87, 11, 85, 247, 232, 143, 116, 223, 16, 91, 178, 178, 7, 127, 206, 45, 105, 180, 247, 41, 14, 254, 90, 29, 137, 56, 109, 103, 214, 83, 204, 74, 233, 114, 44, 114, 248, 249, 111, 178, 242, 203, 22, 71, 190, 223, 136, 20, 241, 42, 231, 107, 120, 73, 141, 67, 166, 50, 89, 175, 82, 60, 243, 139, 235, 31, 142, 213, 39, 82, 25, 168, 208, 8, 112, 232, 109, 201, 87, 130, 209, 52, 30, 163, 224, 87, 240, 214, 31, 49, 100, 128, 121, 169, 245, 53, 42, 42, 31, 21, 146, 244, 16, 159, 109, 150, 182, 222, 90, 152, 145, 150, 238, 37, 16, 52, 33, 201, 15, 131, 32, 110, 64, 115, 175, 107, 193, 18, 240, 14, 4, 20, 57, 37, 54, 38, 192, 183, 212, 127, 7, 177, 10, 196, 139, 23, 0, 227, 27, 146, 69, 130, 221, 175, 6, 27, 179, 141, 203, 29, 8, 238, 189, 79, 138, 237, 175, 24, 183, 59, 177, 97, 232, 70, 202, 65, 199, 246, 174, 224, 40, 133, 40, 18, 57, 51, 248, 92, 88, 145, 92, 76, 14, 125, 14, 166, 189, 20, 34, 100, 18, 245, 246, 154, 166, 226, 252, 115, 5, 192, 239, 92, 119, 122, 57, 165, 252, 23, 121, 62, 91, 14, 237, 4, 122, 31, 183, 36, 32, 151, 143, 176, 88, 170, 186, 203, 41, 248, 181, 203, 39, 198, 74, 245, 103, 214, 157, 251, 88, 12, 223, 47, 65, 181, 240, 143, 50, 4, 28, 223, 245, 129, 163, 55, 174, 29, 127, 94, 193, 207, 252, 89, 215, 250, 50, 78, 120, 40, 239, 130, 2, 141, 214, 69, 138, 218, 70, 218, 141, 28, 241, 223, 225, 12, 6, 196, 255, 241, 94, 227, 96, 132, 15, 255, 212, 215, 20, 27, 23, 187, 110])},
|
||||
{encoded: "AsnbYLmAWhqZfRXzYaY942QU13FqCXG8u5RaNrs8eEumC5dnuiYnHwLsSNaQbTvtXchdX1ftS7jDr74DTaABX5QDbJGnbVPJiMCDRxUmP2P2EerPgVP96GmR3YoDR8wsLa4szG761iVMcpbXhmosrJ5B8hmqiqpQzJxfuvAa4YwZPSC3RyQ3mFPrAcgyq3jVqEUE6wj3oMkGS4osdiW5N42nSZibJcwjTaod8zZHxeNVnwnuG7XJv7d4MZbr2XV1ScYqBCz7BAMhhYo4oaW8xRmdyEG5HCmmTwL8egmUCTpSoXbCL2xpECPPWq8CoenQaUWMQwX4FP74Nxv6qDqwzL6U2WhxpDTzDWBG3MmMmik6P1b1zgUyaaEvYi226mzjR8p4tXdiAhF8wVnd8jL1SFeTJLjUZh5cDkYm4HPSmWsfV9oEzcq8LzyTPX77Kxnqng4s9rAajNW1i59nSu9apsKCToWNaP1oTo7rP8C5gEUcsXj55c8XrmzQT1CDFxrP4PWy51h2fwr26tmHPtSyBGMfD39PZk4xksvFigQTuXkLMANdr1X5SZX3pZML4R5xNBp2Hu4euufhxePT6omtPzaqwqZoWT3ExpYiQxHHDSik763i1jAcDSmeGrSddBjhuuytjNKEUGYnFpPhVHKQaj22Tmpy5ymHYZUbEYvLxpqaQs58UNNc61hJvPCfHC6EfU6mpYgybkpAcvDppbQpiUgafVPRkRkvKqo93GsiwYEDPgWDoK2Eyk1YSu22CKsSkMRGSMBtzsVYcwu5PuehANG4NF7i4XMgPg6Q89nuV9cVKwUN1VNoQoMQEL1j2Kmp6N64h8Q45DvCbkMBMeXJw2fkZg9igJAH7BEkBcyJNK8RvpE9SogDUKY4oJa3NwT2bFMmXQYqco1vej7cvdfdncdA2zQy1YAhS7AGtU5UQHDhDpgKEgexf9J9nLewtq1oyA62jLkCwvjdKN2oH5dhWUgKpxeHwPY374PUC5K3mPpjP6MY6gHeAtcHLCUR94m5M6rYRLwtz2tVuwC5iLEmEG2vnBQFQovFZWMSMa5Pm8mNvExaS1FFtxxbr4P2Xc2DLY21ssUgra6dGCekf3d1Rj8Jm4SLeEZp1oAQQ4rChorKt2ZXr3fnW9wDMv1nME5xB3XJ5yYAgLr1Jf6eTn4oZpSQUG2QR23XuTw2vArEexLSL5JFthf9TFVSQ3wweGYdKX6TDxGNbAz7jNbZ8Vc1R8ghE5CKK8xwLmikbEJL1sKUf6UBPeF8h8WCVWsgBPajYspr",
|
||||
decoded: new Uint8Array([136, 145, 184, 16, 160, 255, 26, 166, 105, 91, 34, 12, 11, 57, 183, 31, 244, 101, 140, 208, 188, 148, 101, 26, 191, 212, 241, 23, 3, 221, 203, 207, 37, 111, 64, 148, 19, 194, 86, 0, 209, 252, 219, 49, 168, 197, 82, 2, 133, 77, 253, 150, 8, 3, 209, 23, 15, 161, 95, 209, 105, 161, 170, 45, 140, 107, 114, 27, 6, 59, 90, 15, 172, 216, 131, 181, 31, 97, 136, 175, 177, 49, 208, 224, 14, 62, 239, 118, 212, 43, 30, 76, 181, 194, 131, 155, 36, 227, 251, 19, 89, 12, 114, 27, 113, 11, 74, 43, 153, 30, 176, 189, 82, 148, 192, 61, 51, 115, 27, 233, 217, 90, 6, 25, 31, 114, 134, 205, 239, 128, 188, 22, 142, 83, 194, 54, 47, 22, 185, 44, 218, 166, 225, 217, 76, 210, 221, 217, 56, 178, 209, 85, 215, 172, 194, 38, 99, 253, 124, 2, 145, 26, 227, 13, 109, 42, 210, 52, 145, 51, 89, 76, 237, 210, 37, 13, 205, 185, 63, 202, 144, 47, 19, 235, 104, 83, 111, 44, 208, 95, 254, 19, 116, 55, 154, 15, 34, 175, 221, 49, 84, 82, 71, 179, 222, 34, 149, 9, 41, 75, 60, 57, 212, 219, 255, 134, 244, 183, 75, 96, 111, 172, 7, 4, 98, 208, 8, 224, 122, 187, 189, 243, 40, 250, 109, 14, 53, 191, 89, 98, 5, 112, 9, 3, 232, 220, 218, 124, 202, 32, 180, 5, 201, 61, 114, 226, 245, 143, 18, 100, 249, 90, 69, 86, 205, 128, 159, 179, 43, 169, 248, 88, 226, 173, 17, 197, 255, 62, 225, 101, 97, 57, 26, 237, 8, 16, 241, 90, 198, 17, 85, 190, 88, 133, 89, 26, 155, 90, 57, 63, 99, 27, 54, 178, 249, 83, 15, 107, 69, 12, 73, 47, 225, 164, 13, 172, 128, 234, 107, 119, 217, 99, 202, 100, 31, 182, 196, 58, 197, 124, 164, 181, 10, 192, 38, 191, 227, 89, 239, 253, 124, 32, 95, 53, 81, 182, 129, 179, 192, 167, 223, 99, 101, 12, 16, 152, 126, 60, 222, 90, 106, 90, 12, 207, 99, 198, 13, 193, 26, 144, 112, 19, 179, 217, 89, 216, 66, 121, 149, 81, 198, 3, 48, 87, 165, 69, 233, 96, 32, 222, 24, 195, 16, 62, 53, 194, 228, 83, 212, 193, 90, 94, 225, 247, 90, 44, 242, 200, 235, 37, 170, 124, 208, 23, 218, 219, 233, 111, 53, 174, 85, 110, 171, 6, 117, 44, 82, 9, 16, 19, 39, 242, 226, 162, 52, 203, 63, 25, 175, 116, 213, 59, 191, 221, 223, 21, 54, 129, 2, 222, 189, 5, 144, 70, 192, 132, 2, 113, 118, 211, 185, 223, 31, 10, 207, 169, 174, 177, 101, 91, 18, 53, 114, 133, 49, 69, 200, 6, 136, 200, 6, 135, 108, 38, 177, 21, 8, 167, 34, 221, 85, 73, 236, 251, 151, 155, 67, 14, 216, 48, 192, 228, 243, 81, 247, 125, 118, 10, 84, 28, 132, 9, 2, 124, 3, 223, 82, 172, 78, 159, 21, 116, 36, 171, 41, 63, 37, 167, 112, 66, 113, 200, 22, 27, 44, 114, 211, 173, 231, 9, 148, 157, 122, 172, 95, 224, 111, 53, 201, 186, 21, 19, 15, 127, 216, 219, 206, 137, 255, 9, 172, 147, 157, 41, 100, 41, 37, 113, 125, 242, 137, 133, 246, 87, 29, 102, 35, 36, 103, 154, 29, 114, 207, 60, 61, 68, 228, 70, 214, 142, 26, 12, 218, 47, 62, 45, 246, 148, 54, 162, 122, 136, 9, 180, 112, 183, 17, 130, 71, 15, 170, 154, 4, 17, 70, 207, 5, 39, 109, 22, 221, 220, 143, 6, 202, 43, 153, 160, 241, 37, 55, 17, 51, 23, 204, 23, 221, 142, 102, 51, 219, 130, 253, 132, 99, 155, 37, 225, 3, 252, 203, 45, 216, 68, 239, 174, 162, 141, 168, 157, 180, 115, 82, 243, 184, 203, 125, 0, 127, 35, 163, 107, 134, 104, 86, 109, 190, 105, 117, 14, 174, 142, 155, 5, 188, 200, 150, 154, 95, 156, 31, 5, 59, 139, 64, 100, 109, 34, 105, 162, 222, 121, 126, 50, 196, 133, 190, 31, 121, 129, 47, 130, 37, 137, 28, 25, 165, 133, 109, 57, 221, 100, 107, 190, 50, 182, 24, 189, 114, 215, 197, 68, 176, 214, 209, 183, 219, 101, 140, 41, 98, 129, 155, 182, 5, 98, 170, 113, 142, 64, 37, 114, 6, 28, 160, 211, 76, 95, 68, 23, 205, 110, 103, 146, 136, 51, 175, 240, 68, 250, 182, 118, 193, 122, 145, 208, 73, 94, 119, 211, 203, 161, 69, 239, 233, 254, 68, 244, 197, 103, 71, 41, 158, 4, 19, 60, 140, 64, 135, 200, 13, 64, 220, 81, 193, 82, 135, 31, 208, 241, 214, 240, 4, 26, 45, 207, 52, 177, 118, 217, 197, 232, 52, 183, 22, 233, 195, 224, 161, 41, 148, 8, 234, 243, 109, 140, 13, 220, 237, 73, 194, 187, 50, 252, 159, 207, 167, 27, 102, 25, 135, 50, 136, 60, 112, 233, 135, 18, 41, 101, 244, 74, 136, 245, 120, 52, 85, 115, 70, 20, 152, 94, 107, 13, 213, 202, 177, 70, 169, 85, 241, 219, 57, 37, 255, 157, 241, 190, 163, 9, 124, 170, 17, 147, 229, 162, 239, 132, 201, 21, 106, 109, 221, 131, 145, 161, 210, 99, 37, 190, 55, 205, 97, 19, 69, 36, 20, 234, 166, 58, 134, 79, 108, 38, 79, 127, 3, 96, 162, 216, 11, 170, 8, 107, 208, 41, 42, 7, 6, 119])},
|
||||
{encoded: "7GLXzGa7ivpFNiFAuGfQgsFfPzbytdtE8ukQHbV7m6EVnr4j77xmynkmvVMaWoajwxouNDesjLc6QoDX7njj9sQyX2bKpXYkwgo2RgLefS2ewVhGj9E4aXirtDNR9v18d9ifiksXXQABfXV3A8SKMssXpK794qbe2gbF5NswBS5xTHYgFz7GPeTkWbeHHga5vWRQQqHuBdzbMzh15TfpciPx7ye5nDma8r43Dgd1eiEFJRnLFNGd4NwULwSNxnFfVheYwQJ95mLyqYwyV7RWPSx2L8i8TUTjpF8x5kAhgKRkeNRZLrv1x96hUHT1zrJwkZjjA6oxFtbRB9K8aFU5DtS4ggB6bCQuobUSS2j6SwPcPU8GeY9s8Wfnk4hYgC7AhXXvqcm3CMYW4UMku5tLHEZ64uYM7tbyK84JQrQG8YdLLhPxJ41WePz5brZn7ZKKzwsxT93hSQepjRfj9kGY1VEgexBaohmzrDeMoKQ6dxAqin1CECfxn6yiv8yHhDyjH4uDLyf6Hj4vWFxeDSzUPniDN6mWdHrPXp3m9jdugsJU3iqdwhwdK5HHDyHgDVKQtAdG5pk28YQg7B4kb97JpZtXiBQe9vfnCZWsFi9XW4eCDVtq2u8nzfYpKKdLJLGDjgSLQsSwtM9p9xsEL2s1RZj9qWovX86hpNaftmidxbXZdtvDV1z3ruq1v5HRw3vWtU8jW6CMXENr8Pm6j5uhrpMMGvCEXEW9cNxbMxJ6b7CxaxFMNGsWi5UddXhpigRFxbGmhsjqyUYTC9b4owSGhHJpbZ82Tkw2aute5VeHDWx31XqUEpk6TNzAaSbGc1zq7LcZUAA3SS2J4eDT156Kou4pQsiDft8gBtBofPLBSkJtx5fGXBFwf1P1UfaJcYGN8RmsKLa2gi8SwJUesn5qT8VB95pn7o8PEqcGBwXHzMU4PdZmRRQnVySMQqb3FVzRkD25fAmcWgJaqnhbXV6dsDVgtvGsqtA9bH7aHfcaRjWa85njkpuVE81YobEckMi5cpox8WuLnz57G5kezUWV2bFUV1acpMaakwJchz6GuCkRptqaXGhWTjuDcBYU3SawmN5pUrKCGciQGxG9Whx9A4J7B5315tJTSrrgS933BT3UWTVSCZpp8cvJL9Wy1YdwCKrmpvRFLXHaJrJVNAoxza8MUM5rk38PPSBpHuJVmbLjxn1JsGDCNkffYM",
|
||||
decoded: new Uint8Array([30, 212, 42, 199, 186, 236, 113, 249, 79, 77, 121, 248, 15, 37, 193, 176, 205, 108, 102, 223, 66, 145, 195, 244, 8, 193, 213, 13, 54, 107, 105, 94, 70, 225, 88, 181, 77, 131, 15, 242, 230, 131, 117, 42, 60, 53, 61, 66, 72, 34, 226, 209, 105, 75, 251, 117, 183, 62, 180, 97, 215, 55, 174, 43, 18, 242, 164, 15, 184, 114, 151, 222, 77, 35, 253, 33, 161, 87, 211, 121, 191, 19, 38, 79, 214, 81, 173, 229, 229, 63, 225, 31, 92, 48, 154, 205, 0, 165, 247, 117, 243, 209, 144, 2, 212, 252, 12, 25, 124, 128, 130, 244, 33, 82, 229, 129, 175, 126, 166, 4, 169, 43, 34, 27, 14, 139, 129, 174, 114, 88, 168, 169, 27, 188, 94, 153, 61, 62, 254, 153, 33, 221, 221, 73, 171, 63, 186, 228, 165, 51, 70, 91, 238, 109, 239, 218, 238, 173, 69, 129, 2, 72, 100, 4, 174, 245, 9, 213, 2, 93, 87, 22, 99, 186, 16, 63, 43, 94, 221, 41, 76, 155, 189, 100, 107, 10, 79, 208, 70, 167, 145, 221, 68, 44, 123, 35, 39, 94, 76, 85, 10, 88, 38, 126, 30, 173, 152, 151, 42, 237, 136, 5, 18, 52, 77, 162, 71, 160, 4, 46, 123, 185, 96, 184, 219, 99, 68, 37, 178, 171, 102, 164, 184, 243, 50, 203, 24, 98, 106, 44, 6, 190, 57, 122, 117, 72, 250, 21, 201, 127, 236, 217, 18, 211, 91, 255, 151, 1, 191, 40, 151, 6, 142, 57, 244, 220, 3, 143, 198, 219, 34, 61, 148, 238, 122, 152, 173, 17, 99, 152, 180, 27, 197, 189, 16, 157, 153, 245, 105, 134, 155, 234, 58, 207, 148, 75, 151, 119, 243, 226, 70, 235, 172, 196, 225, 59, 114, 118, 13, 218, 104, 106, 108, 228, 162, 99, 157, 88, 246, 2, 127, 156, 205, 154, 253, 238, 112, 33, 132, 44, 53, 98, 85, 221, 31, 66, 139, 125, 218, 236, 219, 23, 167, 100, 177, 186, 180, 83, 167, 46, 104, 134, 9, 99, 195, 162, 52, 16, 229, 129, 199, 98, 230, 75, 131, 8, 131, 226, 171, 21, 43, 192, 53, 15, 227, 188, 235, 111, 148, 233, 65, 117, 38, 57, 192, 169, 214, 255, 224, 5, 180, 133, 125, 158, 142, 148, 51, 139, 66, 120, 79, 81, 136, 14, 151, 17, 92, 90, 105, 51, 116, 2, 62, 3, 204, 225, 174, 134, 154, 221, 178, 185, 16, 65, 221, 67, 48, 232, 148, 124, 117, 149, 131, 207, 177, 87, 21, 33, 13, 219, 93, 145, 72, 61, 3, 190, 67, 147, 115, 101, 184, 176, 91, 126, 198, 72, 155, 1, 163, 109, 60, 41, 182, 227, 253, 130, 237, 199, 207, 238, 100, 10, 244, 25, 154, 118, 46, 71, 191, 3, 81, 69, 92, 161, 146, 97, 16, 71, 135, 177, 22, 232, 96, 167, 139, 87, 163, 77, 237, 173, 32, 74, 42, 186, 108, 2, 89, 5, 144, 121, 53, 10, 32, 222, 26, 3, 252, 87, 62, 129, 230, 80, 233, 50, 186, 240, 28, 109, 57, 14, 85, 91, 241, 205, 46, 162, 49, 208, 169, 212, 230, 64, 49, 21, 249, 166, 12, 206, 94, 152, 115, 205, 165, 77, 166, 0, 110, 62, 249, 99, 89, 13, 233, 128, 164, 161, 74, 173, 207, 176, 204, 252, 186, 133, 6, 112, 91, 110, 235, 209, 53, 193, 248, 3, 239, 129, 202, 237, 210, 194, 189, 150, 42, 136, 197, 48, 75, 147, 203, 18, 77, 116, 61, 121, 108, 51, 216, 48, 238, 7, 235, 19, 227, 120, 72, 186, 166, 235, 227, 183, 109, 230, 91, 38, 6, 53, 151, 249, 40, 14, 150, 66, 151, 114, 216, 221, 74, 247, 131, 165, 190, 108, 198, 249, 163, 34, 4, 154, 108, 66, 157, 10, 82, 89, 253, 88, 34, 183, 132, 207, 248, 116, 188, 209, 72, 159, 14, 181, 226, 188, 249, 102, 165, 154, 123, 42, 56, 152, 164, 102, 94, 181, 240, 174, 197, 111, 45, 241, 78, 38, 136, 89, 63, 118, 229, 84, 133, 4, 104, 147, 105, 195, 231, 178, 188, 24, 227, 223, 58, 32, 10, 165, 112, 107, 193, 28, 146, 0, 25, 69, 136, 127, 21, 52, 26, 30, 243, 140, 43, 123, 220, 126, 6, 112, 97, 210, 171, 80, 187, 73, 167, 217, 60, 100, 69, 47, 192, 12, 107, 158, 20, 37, 215, 67, 184, 82, 35, 73, 41, 0, 66, 38, 215, 81, 1, 187, 62, 37, 134, 55, 85, 121, 162, 168, 159, 11, 211, 191, 64, 67, 91, 102, 189, 8, 169, 103, 198, 166, 222, 148, 24, 24, 9, 173, 172, 246, 106, 75, 201, 165, 14, 241, 215, 7, 21, 178, 235, 109, 168, 4, 203, 35, 11, 157, 123, 239, 216, 205, 27, 97, 118, 218, 31, 251, 141, 2, 14, 8, 165, 30, 122, 251, 35, 106, 23, 141, 1, 174, 175, 115, 89, 244, 127, 130, 59, 141, 3, 160, 75, 157, 16, 15, 192, 224, 49, 5, 216, 29, 30, 179, 152, 247, 241, 181, 193, 125, 98, 21, 201, 216, 47, 42, 230, 44, 255, 25, 142, 44, 128, 140, 141, 15, 100, 235, 141, 242])},
|
||||
{encoded: "2qnai1WmtAgHv34zqTZGs7iRNBoSTvF9EUcEcPfuiC9SGJvgEwNTrbgJZ7aYiaQQTJqiNPPti3vm6VsperoLMv93RKY8FZqEFk4V3oXCMKRMEQpouDtnXwm7xEEXeBRboQL1K5PiEgkRh3XfvVajuxWRkWawu3c3XEdUYimZqjB23zoJnWamwY62VXn6nhyNYcViktintybNbZR4tnPvkNwWAG9gP4zEDze6iahQaPFqzc5ewC1wxqrzJgANjEE4rH6TqQWukZSoKJLQTXXi5xxjTWjGsissYakmzrr2mmafR7x5eRkG1rsiJXKQvVQxTk9uLqZ3jexPCgFxetXfCdqLfd",
|
||||
decoded: new Uint8Array([59, 14, 160, 83, 41, 138, 139, 201, 128, 188, 103, 158, 163, 225, 111, 64, 159, 203, 211, 25, 167, 240, 95, 100, 173, 252, 114, 116, 157, 70, 33, 159, 126, 142, 59, 27, 5, 51, 254, 112, 135, 24, 69, 171, 74, 245, 65, 177, 55, 226, 36, 25, 44, 119, 58, 37, 149, 128, 37, 32, 207, 96, 41, 96, 197, 44, 28, 36, 56, 139, 186, 248, 248, 144, 125, 173, 203, 186, 129, 71, 12, 109, 45, 70, 56, 85, 140, 85, 110, 75, 234, 163, 224, 203, 110, 148, 239, 18, 95, 54, 218, 144, 60, 228, 138, 82, 9, 221, 25, 130, 88, 252, 36, 185, 152, 151, 64, 162, 127, 43, 125, 215, 140, 23, 248, 18, 192, 173, 162, 71, 95, 229, 40, 15, 33, 126, 219, 15, 129, 232, 92, 105, 234, 213, 132, 20, 119, 85, 172, 68, 192, 88, 57, 160, 108, 12, 111, 22, 238, 33, 230, 13, 17, 43, 221, 92, 154, 107, 149, 240, 58, 156, 226, 120, 17, 199, 207, 81, 179, 76, 135, 164, 253, 182, 150, 187, 138, 82, 53, 197, 232, 95, 41, 37, 22, 3, 139, 155, 14, 77, 34, 246, 97, 241, 145, 150, 25, 34, 96, 70, 112, 244, 25, 247, 115, 243, 63, 35, 48, 143, 107, 59, 238, 150, 18, 41, 58, 198, 85, 144, 7, 153, 197, 105, 55, 146, 84, 44, 24, 240, 135, 238, 123, 14, 44, 157, 121, 10, 29, 144, 46, 167, 140])},
|
||||
{encoded: "3ncghomeUqxGbPzkBSm2NdyiKBSib3rNqmDpwgS2gDAkrmtuYZD7n7U8Y2H9hdHaTYZt6HVuJyq42MjfXfAP8jbbXGp2oCi3PVm9mnDeDipeKc6QQ7jwJnknm127DdAYNfnjrYSXtqKXD2o84dThNwzLHJEC838LQXqn2r5BAVnsLjz6WnBVDE6MaW9MAKsuTTm5ohu646PSRT3e6tG7EkSN3wGiAFdq1DAzafBgekegzvedHHEHwbiiPvXVfsBinVSuro3td5f3S7Q4fjWRove14kuvGQiAZnSDGMGaSjZDdBLmcEAwwjSaKjcZ6eTHHEZdBCPH9ueWsYbn1xdW4T9MaXHR2cmNgSdWekf7eky8jQZjfdN7q3Sonucy2cxRRS1DJJ8byucTXuaZ3MjBRtoGQ3xBK5QDeJRPkSCYXQ57X6esa4bWAa3n1QrzN9MxjnBYdoBxRWiNHaMisWErEZ7tS3gTUmwNQfH3oYhNSpqCz3wJhdZEMQiXziL1y8UqxdDdcMcy2KVkfTLpKYduVENg6V1kJpFKpnPSitWTbS8VvZiiZ9vPKJdZoXW8FbufXerWVHRCrvotdfuDU2ksoVCLrrneqSsjuDaJNPRvxJn7M5rT7DUBaT6JE1VRpms4sZP4h1747kt3sfwt1fkEysk31Kkn6CEJcoAJ4QzvAeNmqMTDnmRbiNogyzqv9tmLiJGYydp1SVgzYjd3ZAxFjJHFgrj7bcKa5dHTsz3Qw4gpftR5xmUTFrZHECfMUABmJi6QtCmiYLTazPy2WLrRTVMBuNNWjaG2CKQcgZiqLA4uG8MqVqvkWHESzWE2oNPMfd2rxpuStN3KeAdPquhBZPfvGXW96PXYgK7e1sHwcQSJKL1ZmRhQ3p36GPRJZadcZrU7tLDjcDHGmj7yZYykbomXJdVwvRAYCuBsVvBpTzysaa9Kinvg8y9uuNKpS8DHKuCfQHAdrummb2g9LCuhBxarhAC1aMP7QaEjYrr5ZuBqCfuqDCFFYFnfn4turF9adNQUB8gXJPifaCUUTnvyWrXwqCpteQQQdXtRippn9fKRpU7pSnFwWcgkK48rsnFVY6kECQgLVh9yHQV4s85iACdo7TX7fofHftB44QxqMB5PuzBwb5JerWpc9HLMy24kcxWFJdDqDywqmnhZSdNSiAXCdxXaccZ3aVc6z6u",
|
||||
decoded: new Uint8Array([22, 64, 90, 69, 63, 103, 5, 2, 113, 213, 122, 194, 131, 24, 168, 51, 167, 111, 173, 3, 199, 98, 252, 176, 117, 30, 179, 103, 92, 93, 116, 220, 36, 218, 194, 119, 177, 162, 102, 37, 71, 93, 164, 110, 183, 4, 140, 170, 143, 62, 29, 29, 22, 191, 249, 27, 52, 194, 39, 141, 239, 82, 242, 97, 202, 221, 196, 32, 110, 196, 64, 246, 80, 137, 200, 247, 145, 67, 172, 193, 98, 214, 117, 119, 5, 189, 174, 126, 165, 34, 152, 55, 178, 225, 122, 93, 13, 133, 119, 248, 133, 127, 52, 59, 25, 254, 231, 79, 221, 186, 140, 80, 81, 69, 246, 117, 8, 75, 159, 13, 67, 36, 174, 159, 49, 202, 94, 165, 123, 30, 132, 41, 215, 158, 3, 206, 147, 24, 24, 18, 188, 244, 199, 47, 146, 192, 5, 24, 62, 70, 173, 158, 222, 46, 193, 56, 194, 181, 254, 154, 241, 243, 216, 3, 134, 128, 170, 218, 160, 206, 109, 251, 165, 154, 225, 205, 40, 6, 50, 14, 95, 190, 205, 155, 123, 124, 194, 9, 77, 88, 171, 181, 208, 232, 14, 87, 89, 98, 237, 45, 170, 47, 230, 57, 164, 106, 122, 114, 251, 229, 124, 23, 135, 163, 65, 97, 144, 189, 160, 194, 125, 226, 6, 36, 35, 10, 159, 8, 175, 180, 213, 116, 200, 125, 140, 177, 27, 200, 21, 99, 36, 135, 249, 82, 206, 198, 126, 52, 32, 217, 123, 102, 118, 244, 25, 151, 21, 51, 26, 160, 48, 166, 81, 152, 108, 149, 242, 174, 16, 146, 149, 101, 207, 195, 181, 197, 137, 22, 118, 174, 191, 208, 180, 143, 123, 85, 183, 236, 81, 171, 155, 148, 203, 159, 44, 247, 119, 123, 87, 250, 243, 120, 9, 29, 153, 235, 206, 225, 7, 119, 17, 112, 192, 148, 61, 58, 189, 250, 7, 177, 108, 13, 39, 229, 234, 231, 205, 121, 158, 219, 253, 58, 193, 159, 118, 106, 214, 162, 197, 223, 123, 7, 189, 85, 85, 47, 171, 152, 178, 112, 233, 53, 68, 216, 34, 58, 107, 13, 144, 103, 204, 117, 146, 185, 158, 142, 198, 30, 210, 146, 26, 48, 181, 218, 118, 40, 132, 219, 85, 156, 81, 185, 49, 244, 254, 2, 74, 32, 58, 114, 189, 255, 163, 97, 60, 112, 141, 160, 69, 57, 234, 51, 60, 126, 136, 230, 97, 52, 173, 53, 44, 66, 116, 97, 100, 245, 100, 217, 234, 181, 223, 58, 205, 195, 92, 133, 228, 70, 49, 106, 207, 224, 24, 161, 249, 211, 29, 170, 144, 247, 116, 179, 11, 222, 101, 142, 53, 2, 167, 59, 62, 197, 201, 110, 49, 48, 79, 107, 48, 173, 141, 92, 238, 132, 93, 190, 14, 38, 67, 15, 100, 71, 116, 223, 136, 40, 78, 237, 216, 171, 79, 110, 22, 63, 61, 255, 180, 79, 251, 91, 87, 201, 126, 227, 171, 3, 8, 5, 167, 138, 111, 83, 123, 114, 40, 40, 177, 13, 76, 25, 196, 226, 85, 155, 56, 101, 253, 202, 177, 75, 85, 82, 9, 146, 221, 221, 34, 27, 32, 108, 76, 191, 229, 0, 160, 46, 232, 88, 222, 229, 65, 159, 67, 8, 97, 152, 36, 60, 141, 87, 78, 81, 35, 162, 126, 66, 218, 133, 10, 176, 23, 174, 25, 222, 172, 36, 64, 119, 1, 173, 125, 69, 142, 32, 92, 48, 83, 177, 176, 104, 240, 198, 68, 193, 232, 202, 12, 230, 2, 114, 125, 222, 175, 10, 157, 241, 92, 112, 41, 40, 147, 144, 101, 98, 117, 170, 113, 80, 230, 37, 37, 21, 16, 172, 241, 55, 87, 70, 157, 202, 185, 105, 85, 47, 165, 119, 63, 123, 118, 207, 98, 77, 158, 8, 203, 29, 82, 24, 13, 22, 248, 35, 211, 170, 38, 75, 125, 176, 36, 125, 176, 104, 209, 237, 12, 117, 143, 104, 196, 208, 149, 13, 226, 30, 181, 191, 109, 167, 109, 202, 223, 98, 133, 171, 218, 235, 25, 233, 157, 90, 101, 83, 224, 90, 167, 22, 237, 99, 165, 7, 184, 158, 90, 170, 92, 145, 181, 67, 152, 97, 223, 131, 211, 246, 231, 250, 138, 16, 97, 137, 126, 11, 43, 221, 60, 4, 230, 126, 21, 25, 47, 3, 6, 84, 70, 143, 160, 50, 172, 216, 119, 207, 131, 56, 30, 74, 113, 180, 153, 246, 88, 171, 28, 65, 218, 148, 210, 108, 44, 85, 235, 46, 191, 20, 2, 142, 252, 203, 32, 53, 92, 106, 181, 63, 9, 163, 22, 78, 16, 102, 225, 112, 138, 148, 196, 33, 117, 17, 202, 212, 151, 107, 101, 203, 196, 106, 251, 94, 121, 153, 134, 2, 219, 227, 98, 127, 229, 51, 246, 32, 156, 144, 117, 105, 40, 94, 17, 53, 40, 150, 88, 246, 53, 18, 21, 223, 181, 185, 109, 46, 141, 59, 105, 177, 170, 67, 61, 254, 19, 143, 134, 125, 120, 9, 148, 10, 205, 151, 219, 35, 179, 92, 48, 237, 106, 129, 34, 168, 199, 111, 87, 225, 216, 71, 148, 213, 155, 162, 76, 247, 113, 65, 69, 178, 231, 119, 62, 188, 139, 105, 189, 18])},
|
||||
{encoded: "3FcF7RgiMwq2Rs4qs2azC4kFgbQjG52s4KXnsWii5Xpb1Wg21c9PvxpAc17wC2HRYe1bPwQ8SRjKTaiMC7dtdZVZMTcbJAm38EWYu8A3nn8fPj71SaQxnAv687sv3ZdEQz8PcMpDRP36HEmWdMWyzYGifa9DGzejzhLdSLrYTdnXt7QVP1wcKr1vVC2KV2AVQoaA5b4r3Hinqpx267FTuwuFM7F4bsEo9qUQ9dUMoPxQbV4DFtjk3VxDpfvDzVAY6AJdj8nCWiovgYfBqGqcFzsWiGAm3oetDy9nEHLsdnBeMwy9vQVbiqckVFT263n95GqXatwW7bG1LS3DxQxEAFxvJZSanirrZcb94c5L72NggzKB8pmgQiiTU9ronSnPDWNNES35XwPR8Jm6hz85gPpm8vqFiSjeziXW8S5g8HQ97TMtX1iGw4Bfuk1hEPgLfDVcZhvUHuG98VDXSaVmSSNbYhtEPnkFUkaqBLZY7L5xgKwgK4wRQAr7uhmt9wyba3t6ABdJ6nqYUMEd8hUPxvtZuvo6d6YAXSFDqrLuidmJxwJdCGVRAGk1V5jxD63W5kbm4Fp6H7GDHaUood6jjxt8WUPR8eGzMgPUUhSpCowDxpUb49KiXhmsAYWhezDQ6cMLSDd1rW6UWvt8cqy6in1Lgyk8UXBCmZUBfG5bUJQdupj9KeCQ7yThQRg8uYuSZn3ju8iMMEgmkShqAAK5bYZ9qC9M4St5CvjRUznPjrwgCzivZM4UqRm7p31GZmyACaKLWChVjWgKnshGNznDrhFHRkBwsDBicvmJuYdrHopywG2Qtphzm8UoMbCcubgJaCr37mWXfxZJZTXw4gCwV6SzMVwbbqn242pJKZ4kTopDCJBcR4747BgpCib3wbPahczb5bgbJop9MfpiNeEwL7RAGJSf4RdjMJFmz5QPnoSV34EAtXpcvAw4RTbYxRecHPqCvW18MEHru1UUsB98iy83xEqZ6jvGk9WTM4DPPbE5kcBbq7sQdR7B3KNjvUmhuncoA9Rqp1Z6ZtWnCnqtt3mzgeSXEV9C4HkYL1RAHGWRB7jxC6vpy7a2D2pup5rTcmZD3ou8sKNKeG44GMyMxfkGymDn6SmALfqUNHB6tBhcxH1joHSVMYrph2rrfTfqwxQQ6PhQxsdexqYxDoxZn1LLFsYYUyRhbnZE6xS8yaU6v6BjVWWFD5Sws",
|
||||
decoded: new Uint8Array([48, 233, 209, 226, 189, 237, 214, 157, 127, 137, 59, 107, 137, 163, 110, 185, 247, 173, 53, 52, 51, 214, 65, 210, 192, 200, 112, 3, 240, 190, 64, 160, 252, 150, 62, 144, 32, 156, 253, 158, 222, 133, 182, 155, 56, 194, 67, 69, 123, 3, 186, 169, 60, 37, 107, 57, 95, 112, 219, 235, 187, 48, 15, 61, 231, 83, 25, 146, 145, 114, 10, 235, 195, 111, 48, 187, 152, 247, 206, 85, 94, 237, 63, 209, 72, 8, 125, 85, 118, 115, 237, 119, 118, 143, 222, 182, 138, 126, 37, 14, 57, 177, 186, 71, 233, 5, 142, 58, 162, 206, 254, 149, 234, 111, 216, 81, 227, 114, 54, 220, 255, 28, 121, 234, 249, 136, 221, 202, 116, 218, 14, 167, 211, 11, 190, 33, 39, 35, 130, 6, 233, 57, 217, 196, 207, 118, 212, 193, 158, 255, 149, 93, 220, 10, 61, 171, 100, 217, 167, 35, 238, 243, 91, 138, 54, 152, 252, 164, 208, 49, 18, 21, 157, 217, 255, 169, 179, 35, 5, 234, 249, 194, 249, 208, 250, 154, 226, 72, 224, 15, 99, 146, 86, 212, 72, 209, 127, 156, 23, 163, 7, 49, 168, 3, 13, 123, 64, 196, 181, 112, 5, 182, 131, 109, 87, 114, 24, 192, 226, 250, 34, 181, 9, 123, 57, 24, 161, 171, 225, 147, 150, 186, 144, 215, 66, 200, 86, 156, 100, 210, 66, 12, 119, 24, 97, 128, 115, 43, 48, 67, 201, 92, 118, 98, 70, 129, 174, 185, 131, 139, 219, 153, 144, 235, 108, 2, 144, 167, 115, 179, 68, 72, 56, 242, 4, 224, 95, 157, 56, 130, 92, 243, 197, 98, 88, 57, 94, 169, 173, 156, 27, 31, 186, 217, 141, 232, 2, 130, 248, 73, 255, 68, 91, 107, 90, 14, 144, 25, 149, 81, 72, 91, 159, 177, 8, 238, 213, 160, 140, 132, 207, 71, 60, 214, 39, 140, 83, 194, 52, 183, 223, 106, 79, 187, 210, 31, 182, 187, 242, 50, 109, 176, 92, 97, 180, 96, 153, 200, 140, 26, 253, 14, 208, 112, 6, 196, 143, 183, 233, 220, 201, 12, 76, 213, 188, 15, 34, 172, 35, 209, 191, 151, 61, 30, 23, 125, 245, 86, 47, 228, 141, 209, 187, 104, 84, 191, 28, 248, 35, 247, 116, 205, 203, 81, 242, 251, 102, 158, 42, 116, 4, 115, 61, 3, 4, 27, 67, 230, 240, 157, 89, 216, 181, 49, 235, 99, 191, 228, 135, 206, 250, 104, 245, 88, 186, 235, 68, 46, 174, 188, 32, 51, 25, 170, 10, 41, 52, 31, 100, 120, 113, 73, 31, 171, 149, 64, 195, 77, 9, 163, 13, 6, 101, 135, 94, 17, 102, 110, 252, 153, 174, 12, 80, 240, 117, 169, 51, 86, 57, 59, 80, 91, 73, 156, 156, 224, 67, 112, 219, 81, 9, 55, 128, 255, 12, 117, 227, 244, 247, 198, 245, 208, 160, 50, 158, 111, 113, 239, 217, 18, 140, 251, 33, 201, 67, 30, 87, 169, 85, 156, 122, 197, 108, 185, 189, 9, 254, 202, 6, 86, 91, 129, 143, 48, 187, 7, 182, 161, 225, 126, 220, 148, 137, 252, 250, 181, 126, 244, 63, 56, 105, 236, 11, 216, 156, 24, 51, 17, 5, 219, 5, 124, 58, 8, 246, 28, 38, 179, 145, 51, 17, 116, 227, 49, 98, 253, 86, 101, 17, 139, 79, 24, 86, 33, 37, 24, 147, 255, 105, 155, 243, 4, 200, 50, 184, 252, 101, 44, 37, 54, 191, 13, 201, 44, 144, 35, 10, 90, 115, 8, 87, 213, 54, 185, 150, 191, 193, 98, 83, 129, 217, 207, 34, 126, 183, 78, 117, 103, 213, 142, 123, 1, 236, 206, 131, 134, 71, 115, 55, 246, 126, 14, 112, 81, 86, 127, 216, 250, 95, 208, 209, 216, 5, 243, 11, 94, 226, 255, 183, 180, 122, 112, 17, 120, 80, 80, 175, 145, 96, 0, 51, 24, 162, 91, 229, 127, 9, 97, 5, 144, 132, 61, 40, 156, 96, 27, 202, 200, 108, 137, 132, 149, 95, 207, 132, 99, 229, 191, 79, 219, 121, 55, 72, 31, 241, 252, 136, 211, 45, 174, 130, 56, 136, 195, 136, 17, 224, 51, 140, 8, 68, 180, 220, 146, 120, 3, 241, 166, 84, 222, 185, 226, 132, 37, 18, 8, 165, 67, 152, 12, 225, 226, 1, 238, 68, 105, 225, 249, 35, 221, 240, 213, 195, 197, 79, 129, 154, 53, 93, 125, 248, 120, 200, 249, 255, 56, 114, 96, 177, 26, 57, 126, 204, 36, 198, 28, 235, 238, 94, 14, 25, 158, 102, 35, 23, 244, 3, 216, 9, 223, 2, 227, 254, 115, 65, 145, 248, 179, 42, 113, 41, 231, 95, 162, 84, 66, 76, 149, 92, 74, 254, 56, 108, 239, 115, 89, 232, 32, 204, 39, 6, 90, 81, 68, 1, 87, 200, 33, 36, 189, 32, 219, 166, 83, 136, 188, 37, 79, 14, 69, 31, 239, 118, 148, 102, 145, 227, 167, 144, 23, 24, 114, 38, 56, 164, 56, 64, 12, 93, 18, 247, 99, 233, 122, 206, 13, 89, 185, 193, 89, 189, 209, 36, 41, 96, 244, 98, 215, 67, 62, 242, 174, 1, 24, 107, 224, 190, 116, 216, 213, 71, 195, 5, 110, 210])},
|
||||
{encoded: "",
|
||||
decoded: new Uint8Array([])},
|
||||
{encoded: "JvUNGGTqL3x4Lvw3HbnFfR2pqPvea55aY2TCCQxaaADjP6q4DBXVc36K3hT4HSmAqZDGYgoAkRuq2s9VZMeEMpNAvs3zLHfvVVykGiXgeGhVvyLNJz8v6i3RBj8FYZ7qs5Xq3wvUWuijSZ9BSGmDvHMWiMz6p7MvWmD3kVXRJXuESSKB8WmntLoFpjbf6GznEcMF3xmoo9zQSfiWSC8kZxDf2gUsHnBnRu1gxdH9oXrXkTGDV5mr9DQsN8vX4kzsMv8o18RLotgA36smaM1YJpuP7WxGzHrXsGqiPfXUDzosKqAi1s5CBR7T3KzgxLdypkpeDGPSuGcJk5kkf7uVksgbP6bzWkn8aBDRikDs8U8XeeCav3tnRyo1p7rvbooBzMuYYSAFug4mHhC3QR2GjLZGuNMmhUJKMzwV6TJopSSLtQcCsEiApdj4PC7SdB2qB1Mo8veXcV3SCvdbqFux8FB4tL5sWQj7W5oidg2Q858MQQ8C1s3mX6FgbTeLF3GPUuWeap5qTB477jrVKyZAY9Am13KkrLzvJviqKBrpV4MpBmM6jnTx93F5rwPELsCtH5oSbsbegtRHvZ6578K1wEEJ9H5QF3bKug815QqV4cLNTDceUEb3gxS1QFRfSY2codJqZYJDzqbwfmrP44NNB7yWN4YM9M7nxvMXwtwoixjwks7B5qd4UaHMePvGZ86Bfa4f6JatsMoeXJggxvWC77uoHL3skxpXNKjeg37eqzpamphmFeJmM2bbu46vC28i2Fh8g18F6vT2yFWqSXFUU4pPfLyyM9NL3R31QWhPmKB6kNQUPQhJDr8tJqLamrUqc8kwW7zSnUo9WaiG24UtPAM4HwfKjKKekJ9QankmtbEM31nMg4GwV4oJQW4VthJhPjANfjba6B1dt5S1YjiiTWtfEucsJ4gq9XsvBnjqy5rrLbQLB99pNUBu9jMiBsTWy8W6TX2xNETVWrd4BAPQCygdx2zGtPDqHQdsC7uUEwQJjy56XLj9BAx5N4XgMQBripEw9nzN4urfLNyFxTbe2tPxBbEF3z6hUXQQvwDa37zwXzxt1hdinLy3bQnyd6io9jHQyHbqBh1oRmU49PKPNMRvMoq3fD8x8JUe6jYs8yMa6EMJ7z2GXmNkbf",
|
||||
decoded: new Uint8Array([187, 166, 41, 231, 121, 127, 78, 177, 86, 1, 194, 159, 26, 53, 192, 127, 255, 180, 123, 70, 236, 210, 180, 86, 155, 116, 115, 242, 249, 142, 122, 118, 133, 138, 48, 38, 209, 130, 79, 244, 65, 30, 117, 155, 28, 247, 131, 211, 172, 77, 129, 12, 171, 13, 56, 203, 180, 156, 136, 10, 84, 24, 250, 78, 134, 42, 27, 39, 106, 43, 158, 100, 243, 155, 16, 19, 251, 144, 13, 138, 6, 127, 132, 219, 204, 235, 174, 9, 65, 180, 119, 246, 215, 38, 5, 79, 67, 2, 209, 154, 161, 150, 177, 74, 29, 50, 247, 168, 89, 37, 104, 140, 171, 74, 229, 132, 65, 123, 123, 82, 119, 159, 38, 219, 139, 178, 29, 240, 58, 56, 104, 198, 251, 85, 137, 41, 82, 66, 124, 202, 218, 55, 84, 49, 202, 22, 168, 234, 203, 226, 15, 55, 68, 54, 124, 93, 57, 215, 214, 241, 170, 153, 188, 67, 4, 223, 238, 90, 163, 69, 126, 64, 55, 168, 161, 161, 76, 177, 214, 59, 114, 29, 78, 232, 193, 200, 100, 76, 66, 0, 129, 139, 57, 90, 109, 208, 110, 17, 188, 169, 134, 167, 249, 179, 240, 4, 31, 203, 174, 167, 200, 168, 85, 3, 128, 247, 17, 64, 247, 65, 108, 221, 58, 74, 160, 72, 34, 76, 141, 28, 178, 154, 115, 253, 175, 159, 84, 196, 124, 62, 26, 176, 223, 21, 244, 22, 94, 231, 93, 183, 235, 80, 25, 178, 105, 243, 153, 250, 132, 185, 4, 223, 2, 170, 101, 0, 48, 54, 39, 194, 12, 85, 143, 168, 190, 97, 6, 64, 133, 91, 185, 186, 238, 116, 82, 58, 28, 229, 22, 162, 35, 151, 183, 66, 140, 121, 65, 200, 224, 92, 60, 221, 160, 132, 118, 223, 247, 22, 22, 56, 19, 163, 121, 216, 3, 42, 147, 248, 54, 255, 245, 122, 22, 216, 157, 42, 16, 95, 53, 156, 95, 48, 99, 99, 162, 18, 65, 0, 188, 4, 201, 83, 241, 100, 92, 26, 3, 188, 247, 138, 246, 155, 177, 155, 15, 161, 207, 51, 194, 128, 165, 15, 208, 221, 235, 5, 18, 156, 188, 162, 191, 196, 132, 225, 225, 112, 170, 220, 46, 70, 127, 227, 9, 187, 75, 92, 80, 204, 174, 199, 74, 57, 102, 130, 166, 23, 198, 115, 18, 4, 123, 112, 72, 128, 21, 252, 17, 119, 197, 242, 230, 171, 5, 16, 69, 215, 71, 64, 222, 32, 75, 180, 45, 28, 67, 22, 27, 137, 57, 137, 225, 50, 173, 178, 173, 50, 96, 28, 127, 203, 120, 133, 55, 60, 11, 137, 120, 70, 123, 86, 167, 185, 176, 109, 58, 104, 98, 223, 8, 61, 182, 240, 128, 203, 125, 242, 124, 93, 129, 175, 85, 11, 203, 75, 183, 74, 88, 57, 100, 152, 98, 38, 55, 96, 63, 139, 188, 183, 213, 83, 36, 197, 232, 49, 15, 226, 243, 61, 44, 32, 24, 89, 198, 110, 230, 92, 204, 84, 63, 209, 177, 28, 31, 170, 180, 70, 31, 202, 180, 94, 132, 196, 41, 26, 195, 7, 186, 235, 20, 8, 26, 184, 177, 38, 200, 223, 195, 61, 187, 118, 165, 137, 31, 221, 12, 133, 46, 25, 40, 66, 114, 141, 119, 140, 129, 103, 151, 194, 13, 131, 162, 151, 2, 230, 187, 77, 12, 209, 177, 89, 117, 59, 233, 238, 29, 19, 159, 85, 51, 40, 80, 214, 187, 35, 98, 203, 54, 109, 95, 63, 19, 171, 96, 50, 91, 220, 48, 69, 146, 171, 9, 238, 34, 202, 150, 50, 30, 103, 192, 41, 155, 77, 180, 234, 26, 153, 35, 237, 113, 120, 103, 34, 205, 247, 147, 24, 133, 233, 12, 48, 116, 114, 201, 247, 43, 46, 38, 164, 218, 190, 212, 151, 132, 96, 122, 193, 234, 8, 216, 63, 103, 111, 51, 202, 60, 63, 113, 35, 216, 255, 62, 43, 88, 110, 73, 218, 39, 161, 194, 135, 20, 228, 55, 141, 166, 89, 135, 41, 136, 241, 43, 132, 180, 210, 34, 75, 79, 219, 177, 199, 231, 229, 247, 92, 156, 69, 231, 9, 107, 181, 217, 229, 254, 124, 45, 26, 37, 55, 26, 229, 139, 29, 130, 169, 225, 17, 241, 37, 225, 229, 234, 16, 254, 75, 166, 58, 162, 102, 152, 130, 190, 38, 216, 163, 251, 251, 113, 221, 168, 116, 233, 170, 0, 97, 41, 244, 50, 60, 221, 25, 126, 19, 7, 216, 18, 94, 90, 104, 174, 6, 226, 110, 210, 219, 244, 187, 12, 50, 176, 226, 128, 189, 29, 243, 25, 84, 61, 149, 232, 186, 164, 152, 11, 60, 60, 7, 56, 204, 84, 136, 165, 48, 106, 203, 106, 113, 35, 154, 190, 66, 180, 120, 203, 169, 18, 246, 148, 197, 153, 32, 204, 61, 29, 87, 251, 114, 192, 204, 81, 196, 243, 33, 88, 116, 56, 97, 182, 114, 26, 107, 210, 38, 241, 195, 96, 56, 79, 154, 238])},
|
||||
{encoded: "26PNWuPHHRNj7MHejjD9vy4Cn4TFWUuaW49ev1SHEd6tHFsoQ9CMbE7jGxQ2oZ7YMBhJ56m3PA3McjMP4bFQxH573vAza2Ca4X3WffBXMz4uLZ7wT8ogvvdJfJWxybXpwicgMx9rrwJwcyBJXWwkj1WQdhi1QtaPzeV6nSFNC7V5hHgCQH8FrU9eqosAJzASR7Eea4wmouf",
|
||||
decoded: new Uint8Array([173, 173, 101, 157, 223, 166, 110, 131, 68, 248, 220, 75, 93, 172, 229, 96, 56, 135, 139, 179, 246, 238, 221, 246, 184, 1, 118, 186, 254, 225, 147, 194, 25, 210, 48, 198, 221, 152, 250, 158, 237, 219, 56, 14, 138, 244, 162, 255, 249, 230, 106, 66, 147, 118, 143, 229, 101, 93, 57, 109, 102, 164, 76, 60, 51, 124, 245, 67, 55, 97, 237, 244, 43, 230, 179, 134, 171, 41, 125, 212, 37, 215, 200, 90, 183, 182, 219, 21, 40, 37, 130, 105, 224, 80, 70, 118, 80, 245, 66, 221, 65, 230, 87, 248, 139, 158, 136, 202, 232, 147, 122, 154, 159, 47, 221, 65, 165, 247, 81, 24, 51, 220, 216, 163, 133, 227, 20, 121, 24, 54, 10, 254, 56, 238, 5, 98, 159, 118, 129, 216, 19, 38, 64, 213, 183, 141, 93, 70])},
|
||||
{encoded: "8NMaqaXF9QRLPG3Sp9Zjg1RTT73Pu39rXy7qyfo1RvvXDqtwq8v9aR1AduTCvoB5gKJTKbGNudWoQ7nsrVhVSj1njDx99wrkkniWu18jruVexUaADQHUYV4Puk4GDkZojFeMZrzMwi2ij5SfinTVjXkrktD8m82WCTP876BVPgVmzuzRWNPVxdzSHpKUSCnwmkDfcuaGrRAa9nP66NHYJVY8jHvS1cJYodNu37MpzHo4cJzTVz3qBhWNo5dfRK1YtGk6u1RVn7KwEpk4yfz3ZN4aUDDNNjjCG8Z2JsS9g8BTX2Uc2Vdz357DiabjVB5ETbRSDwuBdysAQkuxwA7D3KBqGuTXShtXyaLdY4F58eiw1GJAsqiFWmXU5DPVvB2tySF8TXwNTGsq8MeYFBKApd3CThUmaUPpmQXmweJzSxdj9YKtQhn6EawQ1uEX9n8sBRZiSnE5tV2pEW3t8zfXXQh1SARpNWRYcGuZpag4jc5wwyHYBoqfJVLkv2zGjTrGBXrPEjYMrmXKMa5epHg8xjzSBXYtPGG79HbQCwyYTehw2uYYUtRV",
|
||||
decoded: new Uint8Array([30, 94, 232, 178, 140, 215, 87, 124, 36, 29, 153, 242, 172, 38, 70, 6, 90, 233, 222, 67, 186, 79, 245, 137, 162, 185, 91, 9, 73, 173, 47, 45, 6, 40, 122, 252, 46, 136, 200, 213, 142, 171, 114, 157, 70, 168, 236, 59, 39, 23, 4, 60, 99, 9, 23, 174, 44, 175, 68, 72, 26, 104, 92, 135, 210, 82, 246, 104, 173, 237, 176, 210, 240, 108, 35, 146, 238, 249, 181, 190, 80, 10, 63, 252, 244, 139, 230, 96, 144, 115, 237, 74, 149, 239, 35, 242, 88, 29, 227, 133, 15, 145, 9, 148, 138, 116, 212, 12, 137, 62, 69, 15, 59, 15, 109, 160, 102, 42, 103, 147, 204, 94, 248, 109, 209, 73, 181, 33, 188, 4, 212, 172, 209, 43, 54, 113, 53, 9, 196, 210, 37, 55, 192, 1, 132, 254, 94, 22, 182, 243, 68, 70, 136, 232, 12, 11, 76, 7, 96, 150, 92, 152, 191, 157, 63, 59, 253, 213, 67, 239, 23, 103, 159, 149, 7, 51, 34, 44, 73, 182, 245, 214, 233, 24, 96, 92, 6, 64, 228, 199, 199, 89, 114, 82, 18, 244, 204, 119, 133, 199, 89, 177, 94, 219, 181, 94, 30, 202, 181, 242, 189, 44, 173, 135, 138, 252, 22, 144, 213, 245, 66, 96, 85, 139, 62, 20, 130, 28, 84, 82, 2, 189, 89, 179, 65, 118, 37, 105, 60, 146, 2, 152, 146, 234, 4, 31, 192, 253, 46, 183, 242, 62, 105, 44, 106, 72, 47, 156, 108, 255, 191, 215, 29, 71, 54, 79, 140, 79, 122, 56, 162, 34, 83, 147, 17, 146, 136, 213, 112, 237, 140, 214, 238, 150, 30, 134, 28, 156, 182, 246, 71, 114, 212, 80, 197, 136, 120, 61, 107, 155, 138, 87, 68, 193, 89, 20, 94, 20, 123, 169, 166, 237, 77, 16, 236, 251, 13, 130, 11, 151, 28, 253, 232, 124, 44, 225, 224, 181, 147, 3, 187, 178, 50, 54, 97, 23, 237, 205, 42, 216, 146, 62, 8, 169, 158, 58, 204, 71, 94, 239, 202, 25, 2, 122, 104, 83, 128, 90, 129, 59, 71, 109, 62, 4, 107, 154, 154, 223, 39, 113, 219, 174, 2, 211, 240, 235, 115, 85, 41, 18, 71, 166, 6, 118, 113, 62, 1, 29, 103, 28, 10, 49, 109, 59, 60, 55, 194, 94, 128, 70, 68, 20, 91, 97, 101, 15, 174, 244, 4, 88, 159, 162, 192])},
|
||||
{encoded: "LQHD2hjDMqQX7uc7SxfRuLjAc8ALeYmZDeRk8BRsc8494QMFjH5daZGygAgDX53dcM2ZbnD2rZq6DAkXcL5fQNqfr4zxa42AEVFAUSqfzaKxKQ9Du2oFSN64YsVgnjhFwRSsWdiREeAkjCTP6kR9WaY6aoQyzKrS8KMYjUmLzVJUz5KdCPJZSHFYhYRPzF1RgTnMREfGfHq1xE5QvW37HhsEX4PyNsq7vLgSVYU4a9iwrihxjUQo7Np3pAeT6P2hwAr324QRUEBfLUEqjiuPToFHaU1UQ3ee9z8B2VK6MA2WPZd5oW8yFtrx3sqfy3cnsc25fC6d8gDoirwN4PmjNRuQPBXqhXJj3d8To47iGZ5AcN94hLs1Ww6KLxXgkyQYyuk2Gw33E4pJZgPSL9M9FYth4p5qW14JsZ1vTwpv3GzA5HrEdAAjLu63f2WHBJB8dpWq1BvecqCz4WwC7o1VhxaFyukwdG4Gg6desb9Qb9Y8e2XVFeLumGPdRdkbokeumeRx1eZQKFq6vTjtPbRmk9iVkBh",
|
||||
decoded: new Uint8Array([14, 163, 227, 58, 93, 35, 26, 196, 32, 7, 49, 232, 194, 236, 17, 162, 172, 105, 246, 40, 76, 84, 109, 111, 145, 138, 151, 121, 176, 165, 60, 134, 219, 240, 104, 114, 130, 59, 167, 242, 116, 186, 34, 128, 207, 232, 229, 118, 153, 122, 241, 73, 19, 146, 60, 209, 153, 80, 12, 152, 24, 33, 108, 72, 14, 235, 97, 236, 0, 41, 13, 172, 194, 152, 12, 120, 99, 157, 216, 161, 145, 41, 251, 33, 20, 17, 129, 94, 94, 115, 16, 65, 140, 108, 66, 28, 40, 233, 202, 26, 91, 125, 102, 2, 142, 250, 10, 47, 73, 247, 74, 206, 203, 142, 233, 249, 191, 79, 141, 48, 180, 211, 140, 112, 25, 93, 224, 239, 206, 43, 11, 246, 25, 83, 12, 194, 242, 20, 207, 211, 252, 185, 167, 20, 40, 131, 242, 113, 127, 112, 143, 154, 223, 18, 233, 185, 248, 163, 231, 232, 133, 44, 209, 101, 54, 236, 153, 37, 28, 21, 248, 139, 252, 110, 30, 162, 174, 78, 213, 100, 27, 13, 127, 217, 35, 63, 105, 231, 174, 28, 85, 49, 251, 124, 130, 70, 40, 236, 12, 36, 22, 125, 110, 164, 206, 92, 29, 48, 117, 106, 248, 148, 120, 50, 156, 92, 225, 3, 239, 67, 17, 114, 136, 194, 114, 136, 23, 131, 28, 43, 79, 231, 98, 0, 166, 83, 138, 158, 213, 114, 137, 110, 124, 71, 216, 124, 44, 45, 251, 221, 253, 52, 56, 153, 184, 127, 170, 196, 227, 66, 250, 2, 82, 54, 232, 85, 108, 42, 114, 248, 127, 130, 115, 237, 248, 166, 134, 255, 120, 228, 58, 214, 116, 209, 171, 247, 85, 87, 89, 99, 246, 15, 157, 178, 93, 110, 231, 237, 42, 205, 60, 69, 25, 82, 195, 237, 176, 224, 138, 110, 204, 174, 110, 89, 106, 139, 208, 231, 40, 90, 148, 17, 219, 43, 122, 153, 175, 161, 115, 57, 253, 83, 193, 54, 110, 132, 192, 238, 137, 102, 243, 35, 207, 70, 227, 111, 252, 32, 222, 124, 138, 89, 253, 99, 180, 74, 238, 243, 223, 51, 101, 114, 74, 68, 185, 68, 216, 17, 46, 232, 153, 5, 245, 12, 194, 247, 151, 34, 136, 157, 110, 255, 28, 68, 163, 163, 118, 214, 0, 198, 235, 16, 151, 175, 40])},
|
||||
{encoded: "2Kme567P4pLTWWiF3RgrvbT7cFSgLEM3NqgAbyVpqVXad9yHiMpxrfptDygD9TJ8TtAzQNhiKMrQTtpzKcbtEt1xGTepdaG5i3agEEx1WEXMmRe8czGVemhofmvGZqRfLeXF5p3nFCRBknpugKnEhfNJZfSHftaBt2fpLEggBAWqrVp2pn1BUDGpVf1RDRGpYCeAgBrMAif6MbkmKBcfDR5WZ2QL2AqwAzjXBBc2vYPhUEPfbFTDA8Vyqd6hEqgNoXgaouqnP9DBzMuavr4XXKxwTqZAw9zWWHHUzZwvP4U7co5YiL2HBQA7i3H7FNCfQyidr9AGA4qBtZmCKtSqt5zTN75vHvRnmWVjhsyeovtjVqJXG9HmC89wwgacVbPPQaZZtbyAj777hVYGwNia3pqeWzs34XL9HBDQ7PamftEEH8t6mD7sBPSgRuW4JmyDoaf8wurooJYwQJNTE349mLucTW737XSU8wbmQLLEPefb7Ycck8ttnWDzT4PdNdZnZjgMsMsrxhWjgvb5McbeSLWYFYK368veETmjfqG4svennhkn2sERskscNai7sfa9M4G2DR2XLqubyETLg2Hi6apMtoSGvWW74XkwDnfYNr6V5k7AjLDTfGmWhgb5tokpx9xgkptkcvQ7BZdpXfHvWbz5C8LcxJqiRAB8givgGTvoSQRDsKg9XnEK6WJqnk2XQn8rofA1juYEXhwtLrEJ9jJJixqeuahWm8g2RAooLffEW7jNU7NZj5pxJBRzS8a1bzpXQ9EVRHEJKjqGVxDvVW2gBahJ2n47C6VBR1ePq9A2WCQKi9wRyLWZiJ4JSJ5ERMh6EkFzMvg1SayLxJViUF7dS2oodJgpemSzgDqDLpdCSWrUsqC8JevDvCtwFgj8XFwMZmEt4SL3LmonUPVroNjgWDpPKkDWoTiKwGmepgYgRHTk9w1GEfGT8mPCv4jRXmtivrf2sPi35NMitMy836fgcADm2gdtn2dYFuJPv2HsnSYB23pBgXZx6k9Q5xsSoeXdyMqdmRjQF5ooEANVT8Tc3PyHJpJh3U2FjSjhHXTVWgFH5YaTXJPuVNuY58Xa7eXNcEJuZqUT3TRQvAUDWLoGLQWmzbSrEN9omEoUrV6YmSVQkFK2wm7KfSh86vq9ofbTjG2",
|
||||
decoded: new Uint8Array([246, 173, 34, 134, 21, 55, 48, 64, 173, 163, 199, 91, 211, 63, 38, 214, 70, 35, 162, 171, 75, 6, 108, 95, 160, 6, 26, 69, 79, 5, 254, 51, 195, 255, 225, 202, 227, 102, 181, 142, 66, 11, 254, 46, 89, 31, 222, 169, 99, 134, 159, 252, 220, 48, 32, 168, 207, 218, 120, 252, 62, 251, 24, 3, 62, 108, 5, 136, 78, 147, 244, 112, 26, 91, 170, 14, 58, 245, 215, 44, 164, 1, 90, 199, 220, 252, 248, 59, 65, 120, 196, 155, 61, 36, 147, 236, 69, 40, 175, 155, 35, 188, 11, 161, 170, 219, 0, 169, 157, 214, 231, 213, 104, 160, 180, 19, 58, 129, 163, 17, 78, 75, 40, 221, 116, 221, 61, 198, 80, 233, 96, 87, 27, 28, 104, 14, 210, 110, 229, 253, 32, 96, 61, 166, 155, 95, 167, 72, 202, 102, 19, 52, 27, 176, 45, 146, 193, 207, 125, 120, 228, 155, 124, 75, 157, 49, 0, 219, 245, 1, 128, 221, 237, 183, 220, 94, 195, 30, 123, 59, 170, 66, 175, 253, 34, 205, 140, 191, 44, 71, 117, 190, 93, 15, 172, 198, 34, 253, 212, 132, 46, 114, 21, 7, 119, 122, 218, 57, 180, 94, 232, 132, 161, 114, 198, 217, 45, 247, 37, 42, 190, 216, 24, 77, 63, 196, 114, 124, 255, 42, 176, 206, 71, 126, 240, 10, 144, 61, 112, 134, 71, 210, 42, 200, 61, 52, 213, 104, 93, 80, 5, 181, 223, 60, 186, 222, 47, 102, 142, 108, 41, 25, 43, 50, 172, 204, 140, 173, 59, 196, 107, 225, 124, 62, 128, 237, 192, 62, 17, 158, 173, 166, 156, 84, 249, 174, 175, 156, 220, 63, 165, 201, 65, 130, 4, 66, 43, 106, 18, 101, 186, 33, 35, 46, 112, 210, 116, 238, 85, 186, 150, 62, 5, 162, 188, 41, 209, 51, 221, 26, 239, 78, 120, 174, 94, 106, 150, 237, 15, 219, 34, 253, 82, 250, 127, 128, 179, 126, 208, 196, 43, 246, 26, 248, 240, 30, 228, 101, 171, 129, 93, 253, 6, 71, 51, 26, 62, 36, 47, 97, 14, 1, 144, 237, 209, 175, 136, 74, 114, 39, 125, 105, 37, 159, 234, 52, 97, 87, 191, 213, 155, 41, 156, 68, 169, 218, 14, 96, 93, 44, 128, 93, 215, 227, 50, 50, 98, 206, 28, 170, 191, 124, 79, 255, 205, 168, 42, 73, 163, 239, 205, 196, 127, 53, 39, 2, 35, 15, 85, 66, 43, 64, 186, 186, 23, 149, 34, 172, 121, 94, 107, 9, 99, 69, 234, 25, 142, 219, 226, 150, 216, 12, 34, 84, 111, 49, 1, 40, 182, 147, 67, 216, 213, 62, 160, 94, 160, 174, 4, 245, 227, 112, 162, 68, 131, 171, 119, 81, 144, 206, 103, 1, 166, 152, 77, 119, 161, 213, 246, 120, 147, 95, 233, 149, 215, 47, 213, 245, 63, 73, 126, 140, 120, 225, 32, 74, 223, 137, 194, 204, 23, 174, 193, 165, 50, 217, 71, 82, 81, 140, 36, 119, 130, 192, 149, 187, 231, 114, 195, 176, 95, 212, 175, 211, 201, 91, 154, 158, 165, 10, 51, 213, 188, 199, 188, 33, 225, 230, 22, 158, 86, 68, 13, 215, 62, 226, 71, 81, 159, 72, 85, 113, 125, 7, 81, 162, 162, 245, 213, 20, 237, 167, 149, 175, 92, 231, 208, 77, 18, 62, 37, 163, 99, 195, 97, 188, 253, 51, 24, 121, 241, 41, 96, 205, 208, 43, 164, 158, 142, 108, 225, 216, 167, 149, 134, 148, 116, 102, 91, 250, 250, 159, 203, 68, 140, 106, 156, 96, 89, 98, 175, 220, 32, 75, 133, 28, 158, 229, 237, 164, 191, 134, 93, 237, 7, 10, 126, 96, 64, 156, 192, 28, 252, 137, 97, 174, 49, 242, 206, 196, 76, 72, 11, 60, 95, 28, 138, 192, 249, 1, 15, 136, 196, 197, 149, 129, 56, 217, 111, 201, 148, 43, 171, 172, 236, 51, 17, 1, 118, 198, 75, 245, 177, 13, 239, 63, 129, 186, 4, 125, 190, 39, 133, 119, 1, 238, 25, 68, 238, 50, 249, 249, 162, 135, 61, 244, 66, 56, 158, 79, 21, 110, 214, 117, 121, 10, 2, 230, 25, 161, 250, 24, 235, 17, 161, 119, 103, 31, 178, 108, 53, 162, 168, 50, 140, 85, 192, 66, 158, 70, 233, 213, 173, 176, 123, 11, 7, 19, 9, 102, 218, 216, 228, 144, 199, 167, 178, 170, 71, 192, 28, 148, 0, 71, 218, 188, 84, 141, 179, 241, 108, 1, 44, 155, 144, 95, 7, 54, 66, 253, 253, 27, 190, 226, 254, 77, 72, 60, 19, 123, 211, 122, 81, 81, 81, 25, 17, 117, 181, 63, 18, 0, 242, 38, 177, 128, 94, 74, 238, 152, 90, 72, 241, 96, 9, 41, 35, 184, 9, 60, 234, 48, 198, 118, 132, 87, 230, 10, 94, 200, 60, 33, 160, 41, 78, 30, 13, 203, 58, 123, 64, 153, 6, 31, 84, 224, 93, 69, 52, 53, 0, 195, 35, 194, 163, 100, 22, 191])},
|
||||
{encoded: "b5wy2KdoecV91xeYpGGj9yRPiPu8HF1L3MzS3S5bKRzyD5Vd91vUxWyenS9E9hHBFyBpUbZa6ab2Qvv8KLSibdsksvWCYhNMuDCmyTXZ4dJFecpyX8EfE6jRfeZxEDx7xbTR98p6HsZ3WGj5NrpisrMhryPz5man2bBpSJ2HDJa4BUGpeWj4zrFJL6JiNxWPc3pSd9TygVWK2WJCyXwMZr1o5sQZe2c4gM7Uss2rj2RKDxs48xKHJ3MgtdBTvVMfGVbJFLLBFtFavCwGf7bWBVYZMumiK9m58BgZ9mNNo6Ef8jBQH4iu5U7eMRUGmDxx599VtzMLzEuPJMzAHDiRYnmoX844B88LagM79QmkrZQo2a12SNwbZuPj4JuSFVKFHjcdXEbUyATivUBscRYARbwV945kY75wAX7A8FKt4BzyMdC9YPGYxsoMqMxKTsKZhTwfSBMzAakHhj1jLjU5cuFbiLPDetCGhNANLL7EoEEvDhqHjRw9aSrEhpG6VMMqnoCguPxYyKjF3qao5Aw8RCx1w2DfdTivdm4qvAmWNSYKYGVF2d1nATvarbNJYajjXKaneEnKwjZubVpoeHhCFJyU8Eu6r2VxWt7wundgBJ3gbMDEA3rzf9whLxK8yroa486teiLuLwVkRVn3iDFQbLULYNKykkAV1WwtPVUuAjmXzxWGj5PrJvSN6usqzhNUDi8cQgVFnjvxkeKaWP16QfygQensMyWoenfYKdvg7SsX5HyWwbrvL1XvKMkjcvXsyvf9JzsXC71hQQ2ah7bEPPY2hMU41aNe3kQJZmMSKRnt5byXkxuPZvLYgWL9AoWLqYs1cfXVnsRiYh6dpL39",
|
||||
decoded: new Uint8Array([75, 54, 117, 17, 86, 233, 214, 117, 111, 50, 198, 71, 81, 196, 63, 201, 242, 50, 204, 106, 59, 4, 177, 31, 38, 199, 176, 91, 201, 171, 188, 69, 179, 129, 43, 77, 160, 214, 84, 253, 255, 53, 251, 11, 11, 255, 23, 66, 93, 43, 136, 67, 61, 234, 192, 30, 246, 211, 40, 23, 226, 253, 206, 204, 86, 107, 127, 141, 34, 243, 178, 135, 253, 106, 240, 175, 44, 54, 134, 121, 46, 129, 43, 103, 125, 198, 191, 237, 20, 55, 210, 253, 194, 102, 107, 84, 177, 16, 111, 23, 104, 248, 241, 207, 213, 231, 31, 158, 164, 82, 72, 196, 217, 47, 202, 185, 205, 138, 181, 168, 73, 19, 172, 66, 126, 195, 70, 118, 16, 103, 175, 254, 34, 249, 74, 40, 35, 202, 158, 79, 25, 82, 23, 65, 27, 209, 199, 76, 115, 200, 133, 244, 11, 77, 49, 95, 125, 84, 78, 64, 1, 222, 89, 21, 71, 212, 71, 31, 194, 22, 155, 146, 40, 28, 140, 52, 209, 108, 222, 182, 168, 56, 24, 55, 147, 152, 193, 235, 254, 40, 166, 189, 2, 20, 137, 218, 62, 233, 25, 220, 4, 28, 128, 137, 56, 210, 19, 106, 159, 97, 228, 165, 228, 186, 149, 74, 143, 58, 30, 135, 93, 57, 11, 251, 46, 235, 67, 156, 127, 0, 170, 90, 218, 167, 9, 145, 104, 39, 147, 80, 85, 77, 155, 35, 234, 216, 235, 9, 222, 107, 90, 147, 42, 213, 182, 235, 32, 87, 92, 11, 128, 233, 233, 106, 52, 169, 83, 228, 143, 80, 47, 29, 126, 72, 132, 70, 89, 112, 102, 43, 140, 234, 161, 3, 98, 252, 237, 1, 46, 25, 216, 15, 210, 107, 250, 230, 113, 109, 252, 169, 80, 55, 81, 38, 143, 181, 142, 81, 48, 105, 238, 165, 75, 86, 15, 221, 250, 72, 33, 128, 168, 192, 82, 42, 193, 197, 89, 163, 128, 206, 25, 102, 124, 153, 240, 92, 165, 201, 107, 6, 86, 138, 208, 128, 6, 175, 52, 193, 199, 170, 197, 9, 116, 211, 126, 188, 122, 221, 155, 27, 139, 226, 80, 60, 79, 181, 110, 115, 151, 245, 251, 4, 123, 105, 59, 21, 59, 217, 238, 233, 231, 224, 222, 186, 70, 185, 59, 7, 30, 230, 75, 186, 70, 6, 73, 194, 209, 247, 45, 175, 70, 188, 215, 243, 182, 241, 158, 73, 9, 36, 48, 175, 14, 224, 32, 200, 115, 238, 5, 74, 63, 222, 244, 6, 23, 225, 201, 201, 7, 25, 103, 77, 232, 233, 191, 12, 54, 166, 125, 68, 86, 248, 100, 69, 27, 36, 253, 33, 152, 79, 244, 136, 129, 17, 204, 180, 85, 237, 169, 185, 225, 59, 146, 139, 111, 145, 130, 10, 211, 231, 235, 160, 200, 65, 3, 82, 142, 35, 125, 212, 219, 120, 103, 36, 255, 206, 136, 51, 189, 81, 144, 63, 215, 7, 35, 76, 82, 0, 84, 197, 174, 1, 135, 113, 199, 180, 194, 222, 236, 40, 251, 227, 233, 171, 8, 209, 108, 242, 224, 92, 70, 205, 211, 135, 44, 161, 217, 214, 140, 36, 155, 161, 17, 144, 131, 8, 149, 155, 109, 129, 164, 245, 198, 156, 22, 44, 40, 112, 11, 21, 210, 200, 233, 105, 91, 189, 222, 60, 250, 70, 229, 51, 126, 25, 225, 48, 146, 227, 123, 178, 182, 202, 37, 144, 252, 166, 179, 212, 127, 200, 25, 172, 144, 249, 231, 163, 21, 157, 189, 196, 216, 181, 254, 10, 139, 61, 214, 126, 232, 115, 204, 193, 177, 243, 103, 8, 7, 238, 43, 7, 18, 117, 167, 30, 28, 76, 165, 213, 234, 121, 165, 42, 178, 96])},
|
||||
{encoded: "29YqcvwnXFVjy5M17gxFJfaZ6vPSxa5MipKiKoXgkRDBfYkQx7qbgvKXpqUKY4LPRJBhSoqjuWkvM1tqGnriGUJgPZAkZ4oQjiVF6T7uWpb1FhXAsctQCosg6Zm2ft1iMna3B4zSBh6v51R3euEABFP2kuui6UerqPFFp2m2RUDUDaK4hLCa8UTq4BrDt7oXkyTf2ve8xagVVfHrywigqscZtEPteRg84D2Mw7ZfBybkEyyU2kQLNFDhSGq1ok2L5Z1mQHWJ5iHgNqe9Q4rR5A9j7Uowsdsg7gjeiGrFhhvP5Luy4F9FT52dUzbpPufy3faifsVwC4Ldkfq7kWPBJSHk4R5qbQ3hBhfA6Yy5FcfT9ZUEkJzF3FTJMjE5S1awWBMgKA8p5x4YGUNgAz1BoHZzG2FvUTVrPXrtpAwn5xvspipXDh3K96xJ6tRr3p8bL1da4BmTNR3siwNabELYBjD72SaXLhH6Rs5VcQ2JaaPh8k2sc9dXg9VPdvyadRf2WPpJRwcddM3Y18eCiEmiAvDj1fosfftdsECEQe9UU9dm27RJC2dq4gew7FAvBs2wBfbAk147kg1GPxR3XUnX4aS2PaXPYe5shMJNNuC7KiCoxN7TxLxATFxkwbHUqiRM63DrZ5k3xeQUP2VfRLDYmL46roMg8pqyExt9xc5bAFYeqY52ij67n1ZHGmyMu7Ydv811De8c4ZCu5MNs4cWy1GLyhHCbruyY1tfMQcAyP6p68EHSBWvmg9JGfMZfsqu72edFjUriz3DCHrkeaNJ9zWgDw2WjLubwepnfRvjR5RKV3L4v6oFa6XdLmtFXNWgCk2hqWcchNvWFe2HrzAFxmCXjVfwe89gYgSYQEvKhPq6NUmbtGQMmeggJ9KxVVqaT91jEHf7",
|
||||
decoded: new Uint8Array([17, 29, 136, 171, 245, 37, 10, 143, 234, 21, 46, 28, 247, 150, 35, 212, 175, 205, 140, 4, 164, 10, 224, 142, 244, 112, 48, 121, 240, 35, 37, 34, 87, 1, 206, 68, 32, 105, 251, 98, 152, 178, 57, 148, 17, 252, 40, 105, 31, 72, 85, 18, 2, 73, 233, 167, 162, 255, 56, 211, 86, 183, 217, 220, 94, 249, 197, 128, 84, 113, 122, 18, 113, 116, 254, 212, 97, 192, 253, 44, 245, 195, 64, 13, 228, 165, 42, 180, 111, 182, 110, 124, 108, 244, 1, 112, 32, 19, 215, 47, 166, 172, 19, 121, 255, 75, 93, 234, 130, 224, 178, 16, 130, 132, 22, 199, 129, 246, 212, 37, 227, 237, 150, 146, 98, 176, 120, 135, 16, 169, 44, 62, 157, 239, 142, 232, 160, 217, 58, 216, 39, 131, 156, 228, 82, 3, 98, 5, 105, 106, 187, 26, 236, 215, 212, 153, 11, 13, 196, 9, 237, 194, 73, 10, 45, 33, 239, 174, 181, 95, 239, 41, 119, 203, 178, 182, 105, 68, 248, 109, 51, 117, 31, 17, 237, 172, 67, 172, 78, 54, 247, 39, 180, 198, 130, 119, 122, 75, 239, 210, 193, 214, 196, 251, 171, 251, 122, 119, 151, 69, 121, 149, 1, 13, 232, 133, 215, 119, 129, 173, 27, 254, 207, 88, 253, 171, 147, 168, 161, 213, 97, 70, 125, 76, 231, 98, 59, 84, 102, 170, 220, 33, 150, 8, 50, 184, 99, 112, 216, 9, 141, 211, 96, 216, 194, 253, 49, 198, 31, 138, 51, 197, 155, 103, 187, 165, 176, 82, 63, 235, 244, 150, 119, 156, 140, 76, 11, 219, 98, 39, 93, 249, 108, 120, 210, 110, 221, 188, 179, 175, 59, 144, 117, 31, 93, 233, 21, 53, 113, 224, 168, 184, 247, 195, 141, 27, 202, 109, 152, 241, 0, 190, 83, 225, 115, 97, 206, 137, 187, 222, 245, 197, 57, 9, 213, 181, 78, 90, 66, 245, 141, 8, 102, 128, 68, 110, 64, 255, 232, 154, 203, 71, 226, 35, 237, 70, 230, 85, 241, 95, 230, 37, 38, 80, 81, 72, 68, 192, 91, 208, 215, 24, 146, 237, 105, 10, 245, 127, 20, 140, 217, 230, 129, 150, 112, 201, 103, 173, 152, 106, 118, 25, 162, 61, 101, 19, 133, 155, 250, 76, 115, 227, 124, 96, 35, 107, 192, 129, 226, 169, 152, 44, 204, 192, 85, 239, 77, 141, 211, 95, 114, 186, 160, 117, 184, 253, 245, 101, 225, 100, 218, 159, 113, 8, 243, 249, 218, 249, 20, 157, 255, 197, 39, 209, 60, 93, 39, 197, 69, 65, 105, 215, 46, 222, 120, 138, 2, 28, 38, 255, 48, 158, 151, 42, 21, 7, 119, 41, 182, 36, 1, 209, 59, 170, 204, 177, 14, 1, 190, 141, 215, 65, 240, 121, 90, 11, 26, 167, 49, 147, 86, 130, 60, 160, 7, 36, 165, 115, 213, 17, 52, 174, 199, 178, 31, 68, 158, 106, 121, 200, 238, 8, 153, 192, 121, 111, 141, 3, 250, 212, 10, 161, 105, 2, 219, 234, 145, 206, 199, 130, 136, 107, 26, 255, 96, 186, 218, 84, 10, 111, 137, 38, 96, 99, 105, 132, 166, 162, 105, 154, 223, 238, 97, 70, 153, 167, 59, 162, 147, 27, 88, 92, 221, 117, 180, 167, 113, 149, 113, 247, 239, 237, 168, 42, 103, 124, 232, 128, 215, 56, 6, 185, 128, 18, 115, 14, 138, 182, 253, 5, 34, 117, 18, 111, 84, 187, 22, 125, 101, 235, 81, 73, 124, 96, 37, 184, 226, 32, 21, 7, 20, 164, 255, 76, 88, 135, 122, 38, 226, 170, 102, 188, 220, 89, 228, 215, 114, 250, 244, 106, 113, 95, 244, 115, 216, 167, 49, 232, 232, 91, 100, 156, 68, 68, 24, 88, 141, 162, 124, 181, 238, 80, 157, 56, 136, 97, 125, 136, 176, 184, 102, 198, 99, 144, 100, 183, 184, 182, 165, 151, 138])},
|
||||
{encoded: "DMmK5aWpmtqDUjnmUhGi9oA5PNoGNayrt3B2LyVKA5FRy58ToTQiUpbcFR4cVrSG3pBXUdt8crJkXAiGmW83hyc9YYedpXYFzkXhdfJcmKsfaEN6Q4VRVESQ5BUfZLeaPKr2c8oUYAXKHfh6HwuE4jtRBE46XRCgLk1cEdwq24xZHeY8JjwEXxj1qgdsRSUsheSqUoc3yrs44XPqCotzo2wjNkWBTGJcXruhF5J3vSpjQp3zvVi2EQ4DwfmkvebQpD88wXzCMAf9JRECvNFAXhKG8t1fJ1ZDkD28mqsdoE1wto17x3cfFYQtHvPayHFCQKWh8vkLBgcmZ83iybQu4bL4LJNXnrNdY4CDgX3W35hKBZWiP6ELDozdBYhsQVk6v1DEBqYvu1MSgfxkumdjUmivSxZnJpmzLqzNfm5XACJx7oHRJCX5UEKBCEwPdaWVMtRhzi3sRyAz9yVXSn8sEfUiG4VyxRGkt39FAi1XevXFCWnwrxNgvX5pBJSbdRFtFC6c84zcuAwZRc8sWVVkq3jiR2d9dPkdTT9LBG8zT6rhpFGFHnAifxTHvAEKCrNf5gTGyQW9hyQ2JHo6eTs2VGmKgUTSxGDDf9scZCX4xNPyP2kUBWLGfhs2YeZGnbPudvhp6Nq3oaHXDndaJjdTDwvbdjVDZ21xKhBet1pyBbkXfTcuScVuzxUxAmWZBm9skd87dXvEkQeFCHeAN8sCksRjPAxHSZt9FnHhXwP",
|
||||
decoded: new Uint8Array([76, 18, 34, 249, 153, 212, 65, 24, 167, 59, 70, 108, 93, 218, 123, 61, 130, 10, 63, 47, 216, 20, 129, 30, 192, 84, 202, 214, 76, 79, 240, 4, 178, 243, 71, 186, 37, 29, 222, 195, 204, 250, 120, 228, 11, 63, 80, 83, 136, 128, 100, 79, 162, 158, 29, 7, 92, 255, 99, 238, 49, 3, 95, 54, 137, 170, 117, 213, 169, 112, 122, 243, 30, 171, 224, 238, 70, 142, 65, 167, 248, 121, 249, 220, 239, 138, 169, 248, 167, 67, 94, 20, 64, 10, 161, 210, 4, 130, 248, 52, 87, 31, 0, 119, 146, 95, 32, 196, 65, 151, 196, 184, 177, 54, 88, 213, 211, 206, 216, 21, 203, 136, 99, 95, 64, 231, 27, 167, 162, 254, 91, 108, 191, 159, 114, 42, 216, 254, 254, 72, 163, 96, 212, 123, 96, 135, 128, 171, 221, 129, 179, 73, 112, 104, 30, 16, 152, 104, 163, 154, 246, 94, 150, 239, 230, 3, 52, 66, 241, 207, 39, 199, 63, 101, 87, 217, 158, 113, 233, 3, 29, 236, 8, 119, 228, 41, 88, 49, 86, 38, 214, 116, 152, 178, 201, 72, 128, 42, 255, 118, 123, 158, 200, 15, 198, 202, 33, 191, 11, 104, 206, 182, 184, 163, 44, 195, 75, 77, 153, 10, 69, 142, 146, 254, 40, 107, 80, 86, 217, 115, 40, 41, 139, 7, 14, 217, 244, 126, 97, 195, 103, 194, 129, 16, 78, 48, 209, 151, 63, 251, 171, 107, 230, 122, 129, 74, 146, 192, 242, 95, 145, 111, 63, 254, 182, 133, 87, 216, 37, 170, 100, 125, 141, 211, 119, 182, 195, 33, 51, 90, 76, 30, 100, 101, 144, 165, 156, 53, 237, 144, 207, 30, 86, 158, 123, 81, 189, 184, 246, 20, 154, 56, 67, 49, 148, 100, 34, 194, 118, 220, 77, 81, 196, 218, 15, 182, 48, 134, 39, 134, 145, 68, 83, 89, 115, 118, 149, 164, 147, 253, 213, 127, 188, 23, 132, 239, 182, 85, 115, 223, 186, 30, 57, 49, 67, 69, 220, 194, 215, 57, 82, 21, 44, 50, 181, 223, 71, 195, 186, 113, 127, 31, 157, 169, 226, 199, 48, 61, 145, 236, 15, 162, 156, 237, 174, 16, 133, 7, 12, 197, 135, 95, 151, 249, 238, 188, 202, 115, 248, 241, 229, 202, 246, 128, 152, 29, 39, 55, 239, 78, 180, 4, 37, 52, 126, 93, 89, 165, 241, 61, 240, 174, 136, 121, 10, 55, 1, 146, 196, 101, 202, 125, 74, 253, 136, 185, 123, 1, 182, 159, 34, 18, 42, 51, 121, 236, 162, 112, 240, 107, 25, 71, 170, 189, 109, 207, 123, 165, 201, 169, 189, 153, 255, 49, 190, 36, 131, 223, 42, 200, 28, 148, 94, 237, 221, 65, 65, 39, 249, 132, 138, 117, 217, 38, 168, 75, 12, 176, 90, 134, 12, 102, 244, 36, 31, 234, 117, 239, 120, 182, 189, 104, 141, 48, 61, 60, 176, 139, 186, 116, 165, 86, 239, 236, 40, 17, 22, 204, 236, 60, 2, 240, 195, 60, 159, 123, 87, 35, 136, 208, 233, 54, 159, 246, 240, 153, 74, 165, 167, 176, 95, 148, 109, 12, 122, 220, 233, 99, 82, 98, 142, 143, 189, 106])},
|
||||
{encoded: "5JK6Cug6X7aAubKtc14iszWwZqEzdqYeugxaah87VHBgxtgAWDCrBuKCTLTPYY62Bmh4ta9x7DS4NC6JaQGfrEbf6NVzP75Y2HWhmULR8LuJgQATq47HZZPizLKfAn6P1",
|
||||
decoded: new Uint8Array([243, 25, 23, 43, 111, 180, 176, 70, 216, 176, 34, 247, 122, 70, 95, 93, 124, 238, 32, 216, 41, 144, 243, 180, 88, 219, 122, 238, 173, 59, 48, 4, 219, 67, 1, 220, 104, 191, 196, 165, 188, 202, 124, 211, 220, 76, 191, 73, 70, 6, 238, 37, 32, 27, 203, 181, 46, 54, 8, 181, 104, 88, 105, 141, 250, 46, 229, 41, 83, 189, 203, 163, 75, 218, 176, 47, 152, 146, 253, 238, 208, 218, 187, 203, 228, 191, 202, 59, 36, 192, 240, 29, 30, 8])},
|
||||
{encoded: "5r7C7eSy28DKKxvDUzZe3BLW9a61n5BgWQFCnEGQy3zRvsmQw2PW9unodPrwNFhC52jSxth8Vs4DuR6Lahpsinuk1KGshxUvysiT6514tdh8VsGgc7NrKuYs8sPtLGXXj2YPKcP4zPJgHHe5rRDGpKRrtqYy1rGpx97DiZRsXs7DNBbi4UYSsd9HAPJps4vyR4UV4Yx2L5GPCTD4aXKVAUow9JAdw7kpGemvfvCy2Yc2Qeip3TpUrqVSit59TjRj39u6MkeGCA32Wy51p7H4JfahN4oGyjdkbMvQuD3PmqLBVpiwJkwXYSfj2hqzBceyqi8oV1dLShTfYbzpC2DSDT5xot3FPF8MYbUY8LESi8J38KRh1cDkMV7EdRXMD4jEhCyKukK9A93YMKGW9P9YvmyBmsMgod8TsRVafqoF7gdDp4eVcJMnCBrWuMkKg7M8cKcvLAGXz8VxPYn1wztUcQKoH17PiWPBPQUHy3mAc85fiD9RB8ygzjKd1GpfLccsY15ozMjQvMtR7AjnkwNypCxytmqiusRZZwAzmcSM19addf9DppvfqkMtUdZn2CdZDy6PgtfNkDo24535Bm7MekBjeY5ViSkiyrcLjSuMAjmwNknbddaemB7c6fsJLHt77Vgti8w3vqryyPqWvi8L9m4HqfKUePYU4g9wqvxUPH",
|
||||
decoded: new Uint8Array([188, 249, 148, 127, 102, 227, 30, 56, 213, 89, 239, 7, 137, 151, 69, 57, 104, 47, 114, 84, 1, 38, 185, 182, 225, 155, 147, 130, 78, 65, 3, 32, 207, 136, 79, 128, 206, 224, 170, 117, 154, 216, 93, 135, 13, 39, 184, 14, 224, 109, 14, 175, 53, 246, 154, 61, 79, 50, 193, 206, 119, 2, 173, 55, 137, 93, 208, 213, 206, 10, 235, 77, 24, 170, 208, 223, 63, 39, 181, 138, 118, 12, 156, 147, 197, 172, 32, 151, 160, 72, 62, 9, 79, 186, 102, 120, 215, 49, 189, 27, 122, 110, 68, 45, 49, 51, 162, 118, 115, 159, 72, 232, 81, 206, 120, 181, 197, 92, 93, 216, 120, 245, 75, 18, 60, 201, 189, 14, 165, 69, 52, 82, 68, 67, 233, 208, 25, 152, 140, 91, 111, 93, 71, 102, 16, 139, 142, 186, 232, 88, 183, 217, 219, 37, 58, 162, 142, 119, 33, 60, 182, 138, 196, 54, 174, 219, 150, 223, 229, 37, 243, 188, 83, 91, 52, 71, 219, 23, 87, 101, 85, 135, 110, 168, 68, 195, 31, 59, 224, 25, 43, 18, 3, 249, 101, 120, 240, 63, 137, 218, 29, 40, 232, 89, 107, 231, 161, 148, 213, 215, 41, 129, 26, 214, 56, 47, 69, 41, 27, 64, 195, 37, 237, 243, 176, 203, 21, 199, 150, 251, 248, 239, 125, 16, 255, 1, 5, 161, 16, 117, 32, 133, 199, 86, 213, 210, 53, 139, 250, 51, 26, 161, 38, 128, 156, 39, 140, 143, 156, 196, 215, 201, 106, 180, 149, 233, 198, 217, 76, 98, 162, 113, 123, 88, 124, 193, 169, 236, 190, 133, 122, 244, 110, 144, 227, 176, 32, 237, 37, 110, 152, 118, 120, 149, 244, 46, 18, 112, 109, 67, 111, 124, 230, 165, 7, 133, 225, 234, 221, 0, 143, 231, 32, 41, 163, 116, 75, 148, 170, 115, 208, 109, 107, 142, 101, 226, 128, 193, 210, 192, 252, 10, 193, 93, 80, 230, 34, 199, 49, 209, 213, 138, 36, 107, 109, 94, 75, 51, 86, 41, 212, 141, 205, 92, 46, 110, 111, 91, 76, 184, 225, 251, 94, 251, 206, 198, 61, 181, 255, 11, 134, 174, 224, 93, 169, 254, 239, 125, 102, 5, 82, 48, 5, 52, 196, 64, 80, 131, 62, 96, 175, 136, 251, 149, 105, 149, 85, 211, 164, 136, 157, 185, 168, 18, 221, 61, 193, 13, 179, 160, 181, 155, 239, 199, 177, 46, 29, 36, 13, 131, 136, 225, 204, 128, 182, 144, 191, 241, 12, 220, 43, 234, 169, 225, 41, 167, 12, 207, 158, 208, 48, 251, 178, 117, 40, 19, 136, 195, 81, 69, 165, 142, 151, 149, 87, 190, 229, 80, 101, 40, 82, 149, 64, 209, 251, 198, 221, 188, 151, 102, 164, 71, 48, 34, 131, 214, 70, 11, 247, 167, 252, 244, 12, 192, 247, 132, 241, 118, 186, 9, 66, 133, 42, 158, 231, 209, 235, 199, 64])},
|
||||
{encoded: "DVSztL8UP8ykPeyjypaxZwR3Us953Kp6jAi8BQTkhz9uqzQsYW6r6hnXR57qg28bG2xfqY4bfjNj4RR7HErwgf6E2FHYvdvejwHG1MXWyNC4CrrGD18KWb7mDE2jZ9MCmf24fUze4Hb8wn1hsdZVheX9wGweD8KMQs7XcB6T1Q9sFWkqKm8RtZEPyqyUGSmCsxegSArYgbfesAvvTMzMD8kjVkKXM8tFnPibyxdtB1XtXtxURbXwCanDT6sjidjywWbx8ZSfzPLJUsX4hdt8DWX2DLV6S8e3iXj1tB7pKHSMeb247LBiZMdJ1ra7YyvKwnwhbJtFXbeDVkpdt98cuRSKpnWM8YgQhRsdbEmYmA7PdS7BKsXPy8BKGvkhCo1WTATeM3ussCnsjrgLwSPHG1gQkkmUnwj5gVcEBgLpVRxsAVdcAdnvfyVTf5LPxRTrqSnTRxej6j6EAvs9sk48uRodBz1e6bCQiGvRQcf6WisujuavteScj3BEVH4xsMgyPC4hrerspgktmFMiDPS1JvP6d7qLfe98MQVkogtqXKxYUBytMm2uVjKPYM57LPhAWAfNj8mNVtSiWgK7SfDaVGm8AbfoEnzpbVEYuGVutNx151ps5nzZ5NGWje3oS69vJQmobNMkyBShg9UNQh8oGE4ePDN5Gq6pnv35NrYuMpBJiDBhcpm3tBjqaYSpK4cebRTjY8PhrAn5bEDKm7hqKpjT6G9eDFYbPDP2kiKaVLYWUzJeDHhPs4uTnBektus4ZMTJad9zSCK9KhvRwUpPUAxVTs6ae2zGpGKpoHGAE7b3kbFrL9Bqqh7eXcqNzrXpgdno5F3eNsQedNFyWUacFqcLgA9apYv4w5SVjxRBJn42b5HsUfeuU936AC6LSPrNgYKKgRnnwidwe5Z5e34mVnJGGVaC7zvGQPcKkmxw4RHdtusevZjPmbHMwcuXnvEdJP5wiQ6gA2zkqLqUeBrvoguQzJ6iELrZHP3qZDi7z4RQKWqTn4kFmTff6KvEkQaj3zCtCZPrigbkAP8k2joZLxLi2dSBaKD6VcKCE4wKP2ySucSZMdYRpHtu5FWTXe5JBGCzZc1RfWUjYbApyy16sKWYY2vUbkZ8JJiRZczvWRPgNqnUZr5A3SQMhjRaiQCHbQ7uMnEAqnHYfi51zCw6aESWmbfqz5EbbM9WEpgAFzK4JGaDoE8cdNKiah1LxiZra2ut9EUy4BXiHsG9vW26qFy1q2jMipDZukUpRSfmY4uGykzGGf2ciDSMUvfL27jHMPMDKx5T",
|
||||
decoded: new Uint8Array([116, 130, 82, 218, 205, 236, 33, 146, 168, 241, 198, 51, 42, 229, 213, 1, 150, 118, 57, 132, 145, 236, 16, 92, 51, 189, 190, 164, 57, 201, 136, 76, 139, 169, 0, 254, 108, 230, 143, 254, 228, 178, 123, 189, 210, 215, 157, 215, 220, 230, 96, 252, 29, 4, 37, 50, 208, 248, 86, 127, 103, 153, 16, 165, 157, 222, 241, 128, 38, 249, 252, 85, 226, 218, 205, 211, 229, 196, 144, 88, 189, 120, 161, 18, 32, 188, 19, 212, 45, 196, 9, 219, 169, 230, 132, 207, 126, 205, 191, 103, 239, 108, 76, 21, 39, 212, 31, 125, 131, 217, 55, 43, 111, 213, 24, 173, 249, 24, 45, 70, 79, 0, 46, 67, 33, 244, 118, 208, 54, 118, 152, 137, 253, 121, 98, 218, 208, 12, 72, 45, 252, 42, 42, 230, 78, 99, 81, 192, 180, 126, 84, 104, 118, 19, 189, 126, 244, 176, 108, 85, 155, 199, 193, 162, 4, 61, 231, 106, 232, 175, 147, 201, 217, 0, 135, 139, 254, 164, 239, 84, 50, 50, 127, 187, 235, 71, 44, 53, 11, 100, 235, 26, 69, 4, 173, 156, 25, 212, 128, 33, 34, 18, 81, 174, 173, 145, 119, 38, 145, 8, 15, 230, 126, 215, 79, 190, 22, 108, 45, 240, 225, 80, 147, 123, 42, 101, 62, 15, 55, 90, 47, 110, 155, 97, 251, 2, 64, 204, 243, 172, 227, 198, 161, 95, 33, 195, 144, 69, 89, 99, 242, 56, 69, 131, 137, 201, 138, 74, 189, 165, 133, 114, 151, 222, 55, 195, 193, 23, 10, 209, 178, 121, 36, 226, 11, 220, 83, 221, 8, 11, 195, 181, 209, 7, 106, 16, 156, 131, 38, 154, 97, 119, 148, 113, 94, 115, 119, 83, 170, 87, 31, 65, 62, 160, 169, 134, 138, 250, 129, 187, 179, 41, 177, 26, 54, 252, 78, 184, 136, 44, 221, 12, 200, 222, 244, 26, 244, 155, 231, 96, 70, 107, 236, 155, 222, 155, 107, 10, 82, 103, 125, 1, 4, 69, 227, 34, 182, 240, 243, 175, 208, 167, 234, 21, 238, 126, 67, 236, 143, 200, 84, 184, 76, 40, 253, 178, 63, 236, 231, 37, 239, 155, 191, 22, 220, 244, 218, 159, 157, 108, 175, 41, 216, 94, 144, 178, 204, 227, 250, 87, 135, 116, 210, 60, 71, 91, 1, 13, 104, 135, 95, 53, 39, 242, 128, 29, 95, 108, 253, 78, 88, 12, 16, 91, 110, 216, 119, 87, 136, 101, 136, 161, 112, 183, 114, 115, 75, 87, 209, 53, 210, 83, 169, 140, 226, 251, 230, 2, 111, 103, 42, 236, 98, 175, 12, 173, 11, 9, 148, 15, 10, 186, 88, 14, 172, 70, 3, 168, 128, 145, 80, 220, 153, 233, 167, 103, 120, 148, 219, 165, 42, 7, 196, 197, 199, 237, 70, 104, 16, 173, 60, 43, 84, 15, 37, 237, 146, 110, 55, 28, 250, 149, 60, 42, 105, 50, 143, 237, 134, 220, 229, 250, 93, 126, 54, 105, 29, 202, 28, 253, 66, 101, 113, 117, 230, 181, 119, 236, 165, 136, 191, 233, 184, 71, 232, 244, 38, 89, 160, 165, 96, 145, 254, 233, 62, 134, 38, 45, 167, 159, 237, 197, 14, 57, 255, 46, 48, 148, 212, 241, 159, 53, 147, 6, 96, 83, 81, 171, 131, 65, 239, 243, 91, 152, 31, 187, 8, 206, 121, 251, 194, 201, 4, 231, 45, 116, 123, 253, 133, 18, 5, 233, 148, 38, 31, 129, 216, 163, 86, 251, 189, 129, 227, 233, 109, 121, 44, 142, 248, 133, 18, 130, 196, 199, 195, 57, 32, 164, 112, 62, 159, 119, 7, 111, 138, 164, 132, 233, 189, 26, 108, 194, 237, 136, 55, 179, 101, 145, 130, 47, 236, 190, 14, 249, 241, 98, 170, 193, 112, 244, 128, 110, 95, 6, 23, 189, 237, 80, 109, 77, 9, 76, 133, 23, 48, 164, 165, 80, 171, 237, 187, 27, 119, 23, 128, 213, 136, 24, 170, 145, 185, 88, 240, 194, 32, 154, 56, 246, 44, 1, 0, 103, 123, 249, 113, 35, 88, 179, 50, 130, 152, 61, 135, 58, 84, 26, 204, 105, 66, 134, 131, 250, 201, 97, 65, 28, 63, 0, 127, 83, 98, 238, 129, 117, 81, 30, 80, 136, 85, 2, 161, 252, 19, 12, 205, 175, 67, 164, 73, 100, 121, 203, 116, 21, 217, 87, 250, 211, 98, 168, 128, 182, 85, 4, 36, 68, 23, 97, 1, 41, 173, 231, 234, 127, 25, 28, 122, 189, 81, 136, 164, 241, 233, 94, 41, 218, 53, 107, 70, 84, 22, 182, 92, 6, 255, 212, 20, 182, 214, 121, 19, 201, 220, 191, 19, 239, 110, 8, 55, 195, 163, 198, 56, 101, 213, 210, 59, 0, 36, 200, 52, 97, 27, 142, 129, 124, 2, 193, 184, 201, 92, 155, 34, 203, 17, 41, 26, 113, 102, 116, 249, 223, 203, 103, 119, 122, 53, 87, 161, 253, 109, 185, 170, 74, 230, 1, 209, 119, 129, 229, 20, 148, 223, 102, 126, 78, 168, 218, 34, 91, 13, 171, 91, 184, 130, 222, 252, 139, 110, 35, 116, 175, 93, 241, 172, 250, 169, 78, 84, 129, 1, 176, 163, 112, 125, 106, 153, 38, 252, 121, 228, 3, 207, 242, 37, 98, 117, 59, 107, 207, 181, 207, 49, 228, 202, 227, 7, 7, 161, 201, 111, 36, 220, 32, 73, 183, 46, 133, 214, 80, 25, 19, 211, 134, 157, 228, 200, 28, 8, 230, 169, 130, 55, 174, 253, 41, 91, 126, 253, 126, 140, 213, 40, 40, 73, 40, 118, 219, 174, 80, 189, 23, 78])},
|
||||
{encoded: "49Y7gcgckzrKL3SJVnDgKpcMEQnhALf4P3riBYH6EMcP6qjHuVe4PswpKEc6vddDFQ51Se5ms1sNcm1NyXuznJ2uVfmk5G8Szt4Ze5iyJLHuYNKS1uTeP2LMbZME4ruWAWFcZBCjqyX48NN8pYj4PGbZeCiG1Ka4pS59L6riYL9xr5YA9bZtH7qQGo5tHXQCzStZec4VVm3fDdhbSQYZDMXtExtuucLiMxhdwy7D1jMNUckV7W9JmseXp3Ah8GPX181kyAuqLiUnWcP7BvzWecfbNi1x92aJKN2uwzPPpLKbf8FYfgHXaJFD5DXJN1iubXjbQFvJ5XBEzKr7MWzqyKFkzqxjAN51pvHrYg62aqTNSm2Axqn2BdPcGqvLAzqxwjaFuLKCxUYY8gVLbLdJGAdpfQ8VQVTs3bobdgs8VkgJU2y2MmGp4YJ1pP2EVtmLcxRMUzaCxBoNn3bxVY3vreGwvoJ7yeZfXtFZxHK9XrVuQyDAe4zi1J9JxtGbx8PqyEf6ZhAQxQHco67kTbgy3MBnUt8xsXorhFM3bDKmXwFxDfBZ2sptx2Sqz6ze5fRq8G84wz47FEZ2wwdUze7PraFzYXghcqCqTXmH1vy63PebQNSapRQe2cZpchtBwnse4UBMmnzxdE3kpxKBkPzUuza8UoejHLYDjx7RBvpJnAjCEmqie8c8KyfPiW13haR8TxFbxtFYSTJWKrD8Ys1kJSi3NMbSkQETEP2Q9p1Rw8txsbm3FoBhJNeHbtryWX8Jt7FhBNaUjyt3s5a3GcgAcEu3vz2KujnJhnwPn2sGaHhBAxArtsoRzqUqgNRkQCyEcZPe6r4TV5z1vqMpv7SrZUfgEYxbe9MmdURsybrTMVjLjFBdjrs9McKxUT446fhW85bEpiwJv72uDdYFgy5vbVcrVZ998wa23Y7DZQRVT5fm4eiYpab9m9y8vMYfkS8LWrd91kqjEh2rBKSHjDvBtBcDKqb4kbCk8GgZqpDCKnLxbUxXsvFgMe6636aZVpEMK5EFWmbPBJU5fKWKg7VU9ps6HZ6fTm66GYQ2mz6bKT2q1dQYAwHZYzA1i3XENrVvt1vZVBV9DpGXEKJWDVjRZiy7oQwciGjwzQquBabw5g",
|
||||
decoded: new Uint8Array([159, 48, 145, 240, 137, 128, 207, 32, 154, 205, 59, 160, 156, 251, 130, 173, 37, 104, 3, 85, 161, 86, 90, 77, 139, 55, 242, 96, 100, 88, 177, 211, 123, 158, 109, 58, 189, 112, 32, 106, 64, 176, 37, 93, 123, 110, 181, 212, 15, 137, 19, 75, 121, 123, 253, 137, 58, 82, 129, 106, 169, 190, 94, 195, 247, 140, 26, 236, 133, 56, 63, 73, 253, 100, 183, 17, 227, 130, 30, 142, 23, 43, 48, 153, 30, 185, 167, 153, 28, 216, 18, 5, 217, 247, 29, 84, 94, 57, 241, 208, 184, 6, 65, 104, 118, 95, 246, 194, 16, 142, 33, 93, 115, 196, 76, 138, 63, 187, 24, 138, 133, 175, 91, 181, 91, 133, 240, 201, 167, 181, 129, 106, 207, 50, 27, 98, 32, 229, 84, 59, 111, 118, 107, 6, 12, 191, 120, 108, 79, 177, 139, 151, 1, 65, 90, 10, 21, 63, 23, 86, 101, 129, 237, 150, 255, 172, 200, 166, 255, 38, 192, 229, 120, 111, 131, 61, 40, 245, 89, 180, 229, 160, 207, 30, 22, 242, 46, 41, 202, 183, 165, 84, 87, 120, 253, 142, 20, 135, 54, 59, 160, 102, 253, 114, 207, 90, 139, 2, 222, 42, 93, 189, 46, 239, 9, 202, 28, 14, 153, 228, 55, 244, 68, 87, 143, 10, 126, 106, 103, 235, 107, 116, 141, 198, 70, 108, 204, 160, 239, 111, 54, 103, 151, 222, 95, 246, 92, 121, 207, 193, 29, 180, 75, 216, 211, 180, 122, 250, 47, 201, 220, 244, 98, 108, 165, 212, 219, 6, 128, 184, 44, 169, 154, 195, 133, 45, 165, 118, 124, 184, 40, 252, 142, 2, 207, 227, 245, 113, 153, 129, 215, 130, 61, 190, 191, 80, 249, 248, 162, 208, 178, 54, 155, 183, 77, 107, 101, 186, 131, 242, 170, 89, 159, 85, 196, 239, 5, 162, 145, 130, 200, 189, 6, 204, 154, 143, 17, 101, 83, 228, 76, 26, 62, 73, 248, 55, 86, 133, 159, 102, 43, 169, 129, 88, 38, 56, 13, 114, 46, 133, 111, 242, 11, 216, 221, 161, 6, 114, 255, 160, 74, 199, 148, 37, 84, 138, 77, 158, 128, 4, 36, 196, 162, 75, 190, 24, 21, 181, 174, 159, 28, 147, 69, 235, 212, 100, 23, 207, 162, 56, 44, 135, 184, 236, 225, 31, 76, 185, 22, 203, 57, 81, 41, 183, 100, 157, 251, 113, 43, 18, 16, 33, 197, 135, 239, 170, 255, 116, 171, 85, 150, 66, 92, 24, 236, 26, 176, 11, 234, 9, 144, 134, 184, 111, 201, 132, 6, 90, 78, 62, 252, 134, 83, 193, 110, 118, 111, 84, 55, 139, 144, 89, 119, 76, 11, 154, 31, 203, 207, 150, 104, 183, 98, 92, 27, 210, 29, 75, 22, 90, 119, 159, 228, 67, 170, 130, 38, 209, 51, 102, 48, 45, 30, 68, 112, 10, 165, 143, 233, 245, 214, 7, 59, 229, 226, 3, 228, 114, 143, 93, 229, 248, 69, 230, 166, 27, 4, 27, 40, 254, 52, 126, 23, 247, 38, 26, 165, 59, 9, 151, 144, 105, 138, 212, 114, 22, 242, 14, 163, 146, 123, 139, 16, 199, 115, 194, 75, 23, 139, 189, 213, 193, 92, 53, 102, 96, 99, 85, 173, 100, 45, 74, 238, 224, 53, 116, 18, 17, 249, 203, 212, 87, 71, 158, 22, 191, 176, 103, 161, 146, 150, 144, 56, 172, 136, 250, 34, 250, 11, 53, 222, 169, 11, 75, 101, 132, 148, 191, 61, 166, 193, 110, 139, 94, 218, 46, 199, 99, 208, 40, 66, 15, 184, 175, 53, 46, 41, 30, 232, 143, 180, 246, 70, 120, 123, 33, 37, 179, 168, 22, 187, 156, 38, 77, 129, 239, 210, 122, 147, 215, 224, 43, 52, 185, 117, 147, 155, 143, 39, 193, 213, 106, 173, 219, 86, 146, 216, 63, 6, 27, 81, 4, 199, 248, 9, 185, 193, 53, 23, 177, 4, 106, 9, 183, 43, 54, 199, 43, 117, 49, 236, 240, 111, 101, 147, 2, 174, 190, 133, 240, 18, 128, 93, 140, 231, 214, 107, 98, 48, 21, 17, 195, 55, 38, 14, 138, 97, 5, 73, 191, 235, 201, 137, 45, 145, 184, 17, 238, 11, 151, 195, 244, 167, 212, 213, 194, 88, 38, 50, 218, 93, 208, 174, 174, 169, 144, 99, 124, 186, 227, 82, 117, 132, 198, 9, 172, 116, 50, 160, 148, 238, 50, 186, 112, 190, 48, 173, 57, 128, 248, 227, 77, 168, 127, 211, 79, 17, 113, 48, 220, 18, 142, 94, 154, 248, 232, 95, 4, 194, 153, 68, 227, 43, 98, 212, 228, 220, 55, 12, 136, 33, 83, 66, 94, 151, 196, 151, 154, 255, 1, 95, 132, 219, 32, 31, 174, 226, 202, 158, 96, 49, 246, 135, 93, 22, 117, 90, 36, 103, 146, 48, 0, 254, 0, 218, 251, 8, 200, 82, 37, 107, 151, 70, 59, 160, 61, 71])},
|
||||
{encoded: "23bVp8R5KMMwFaZc9PTP17RDSXqGQwrLsvqa67C28LT1iGvoD5E717zbGdcjLro9h5dHNVXt2oTaHDXsvXbGe6vM6uYGoVUP25rgraBkgncj1kRoS9aw7D2Emp7st2MXzNxj8X7WArTK8PnxAuGtXQ7s6kpKFSaEhUmLPrPPPwPcxSZDe8iNY7ReFAp9EJTfr51wpfZP5XAMnwnXLGxmEtNBXq1SgvXE1vsntQ2i5QZQoks5qEsxdYHX6HC9kWgiXeiGEmEMXQE1ByFmwHp4GaxVHBZT8D91m5e8uC45ayYe",
|
||||
decoded: new Uint8Array([193, 240, 87, 245, 180, 95, 223, 195, 134, 163, 169, 151, 123, 185, 83, 121, 118, 118, 42, 122, 131, 103, 113, 150, 39, 200, 58, 124, 15, 254, 24, 91, 198, 179, 249, 176, 254, 114, 204, 224, 98, 207, 140, 112, 222, 214, 169, 124, 171, 178, 123, 215, 238, 134, 37, 39, 220, 232, 128, 14, 121, 60, 101, 203, 213, 219, 30, 3, 49, 179, 205, 233, 169, 60, 242, 213, 242, 194, 124, 246, 83, 48, 99, 19, 165, 131, 220, 203, 185, 114, 89, 13, 4, 158, 185, 115, 194, 48, 141, 191, 234, 47, 25, 252, 204, 32, 236, 30, 250, 108, 42, 249, 94, 232, 112, 173, 214, 110, 157, 32, 190, 123, 75, 127, 56, 43, 65, 108, 195, 255, 31, 138, 170, 93, 89, 250, 1, 182, 179, 235, 76, 94, 162, 111, 203, 216, 67, 3, 252, 89, 9, 29, 191, 19, 138, 47, 224, 87, 224, 72, 125, 87, 175, 45, 55, 127, 170, 179, 74, 198, 214, 125, 118, 74, 122, 218, 156, 31, 34, 136, 186, 169, 26, 193, 252, 137, 49, 125, 37, 249, 56, 43, 167, 140, 164, 99, 161, 88, 109, 92, 37, 55, 108, 240, 206, 117, 72, 114, 239, 149, 190, 153, 5, 201, 213, 3, 52, 187, 19])},
|
||||
{encoded: "48r4AaUNSuKDtDsqFW64UYNLi4ytsiQcGfHuKB4m8mrKfJPQmmiVLuvk8Tsex7YwABsc7BvGQJ84tJyBKKemGeasbWHpAwQsB5Z87mCC8zPJUM6apJSyMGUyJm59Fy7SMxbszvz4HPgvtCACeKkkvsWrhtZ9K41Ng4M9p6pH8q75AhNz1r1k9JPypcqiQZFNFTbSEFbz6rJnnMKpcEqV3Uzqtoqoj16TCmJ4xubHRAGqNzGo1HRCNiZePL1DEs6gWZcBSYmnFiX5BorxcRkZ5eKW5p4z5eT5JfEqdpkWXnAd2RPB3Xs7Sq9X52mAbY2NcZtBKvmN6zccfA3jyDTvt1C6AfZvtEco31nyTSvmBAnV557bUMxopZ4c1WH1",
|
||||
decoded: new Uint8Array([56, 160, 52, 162, 193, 172, 184, 146, 87, 223, 181, 236, 229, 150, 14, 99, 59, 7, 70, 102, 186, 106, 239, 208, 192, 30, 73, 57, 213, 153, 206, 234, 108, 31, 144, 69, 48, 7, 251, 4, 117, 177, 59, 144, 203, 182, 149, 85, 122, 59, 102, 138, 89, 74, 209, 38, 79, 137, 18, 203, 212, 220, 24, 71, 145, 252, 50, 190, 61, 113, 76, 125, 159, 16, 80, 65, 78, 129, 100, 65, 148, 15, 58, 162, 145, 10, 106, 120, 109, 49, 104, 166, 37, 173, 176, 205, 40, 69, 188, 101, 204, 157, 71, 122, 170, 168, 223, 87, 26, 59, 89, 201, 231, 7, 227, 242, 157, 180, 194, 65, 52, 145, 99, 75, 93, 45, 226, 223, 150, 58, 165, 61, 81, 165, 199, 162, 230, 219, 209, 235, 230, 222, 194, 77, 34, 10, 230, 53, 163, 89, 168, 17, 187, 66, 29, 124, 41, 21, 144, 187, 208, 104, 253, 70, 117, 171, 164, 246, 100, 134, 206, 48, 82, 213, 158, 86, 149, 185, 182, 34, 71, 201, 218, 123, 155, 246, 181, 59, 142, 234, 114, 224, 70, 103, 177, 147, 190, 17, 130, 116, 131, 199, 225, 205, 199, 131, 16, 163, 82, 165, 136, 44, 156, 247, 135, 165, 94, 47, 91, 37, 204, 240, 70, 251, 53, 206, 129, 54, 2, 219, 160, 206, 164, 248, 252, 174, 120, 52, 89, 135, 186, 129, 164, 22, 117, 55, 177, 121, 152, 223, 111, 223, 64, 105, 184, 134, 236, 167, 187, 194, 109, 173, 58, 123, 136, 222, 242, 65, 162, 193, 156, 80, 97, 182, 249, 58, 236, 68])},
|
||||
{encoded: "9teRixf8iKudu8A11pX964w5HXWacNvZP57g1jtV96Z8BtU4cGXmSKgCnjYpW4GF2UtdTg49crn6U4vBroKZJ5HddQaMXN55WXNR3DAQChDpqR4ND7CPpio2MU7yUHgVnVtLV38T9JCKyBPvFtKtQevtGw6Q45McaMYweSc9qV28aJUcCs4eKLDQ6zrks6YAriuW4BXkZ6FpshGpARLLANfSzaTUHbG1UaCui2qaLd8xkupiawtvgM2aGhnyYhJuZS5SXz6op1TNoxukcoxZbGBksq5HYY81D857Q4i2vTWeSqYx7YkJG1igxPxyb5X7aE5D9aPrtNVZgZtiJgDnLsc6x2nVnAnUCwVaVrr7us8wd8hRet4o3Ls6djqe5KnWJ8SLgcssdE1kbo7NEk4aXjpKCS6pWKgi8DWPWwEEHZnJZT7uSXKYYJWyYNWqa62cW4gS689YYoxcRgfgb7CvrbnDojdwK1e5hCudEMadmXDxpQU9uucNtgarsZmBC3bZaQfAAGLe9NJ5TKXzujZPXNUsGjnUaA7rjoMcCqfG8SbzNcnXYkAv9gMFVbKKRa8PYRqCPrFJ4pEJCxHk1r7fGUt95imE7SozZnMQMN49GUd1hxBj7VHCpeoVUdxVyYR2y89hHEEzkP7pobGQaPZAJf7jKe2g6krmxrbAWiyFR5GVipyKAD5CsV3i8vsTj74WCb5XkA7cRJyvQejjk1G8UtM4wSLBNWXvfoAW7bJbm4E4ABAVTyUBNkAzKnhttA3gYFzKFfyKcwUy1LcMKj2Bs8mmLP2oKNMhcwPwedAnRMF5c2Ug7ZcpSU5WGuHisCGrGDbnDLchC3EcUGdNQ8r3MK7VG7vUW3BKWYTw7ZedRYyJtehHqfFD9C3YsP6QgVnysGnk76tUz2VEoRK9VSW2ceun7beSVysYvQrrsBTouFrqchKiDABdoMxGMj1cC8nSNhXFMTtqZt61VjBn1iNbjSyugrJq35ncj21VTFicScXBVJ3ggUd5mrbhXvPxxuyo9dGsX5RV6LAStJMF4cqpZ6rWRqDWLHMjsFnwfBGFEiwq7TWebGzBYSydiJJvFFN4dveuXRudaH6P7DYoJEwF5TC1EpRa",
|
||||
decoded: new Uint8Array([111, 131, 61, 202, 143, 49, 251, 188, 189, 178, 210, 20, 231, 134, 139, 217, 253, 207, 46, 172, 37, 214, 94, 213, 52, 55, 126, 63, 90, 122, 220, 8, 125, 177, 22, 65, 54, 126, 64, 77, 44, 36, 204, 125, 6, 24, 215, 201, 180, 63, 57, 81, 205, 229, 60, 124, 248, 179, 40, 151, 130, 18, 180, 75, 127, 186, 81, 221, 202, 68, 163, 203, 218, 138, 120, 48, 21, 134, 216, 16, 159, 197, 146, 82, 224, 82, 158, 128, 43, 61, 6, 100, 196, 152, 60, 31, 83, 206, 132, 253, 235, 59, 205, 46, 205, 245, 230, 10, 18, 143, 233, 43, 58, 20, 131, 222, 182, 21, 151, 214, 136, 84, 46, 36, 191, 155, 17, 82, 134, 156, 160, 142, 216, 141, 233, 191, 39, 24, 123, 122, 15, 191, 17, 4, 159, 194, 217, 82, 65, 125, 114, 232, 224, 201, 35, 96, 166, 107, 81, 234, 177, 117, 40, 91, 53, 141, 9, 129, 131, 90, 207, 109, 180, 130, 66, 65, 144, 166, 212, 236, 18, 53, 110, 24, 159, 12, 118, 177, 170, 58, 151, 42, 131, 171, 247, 43, 45, 16, 155, 152, 123, 114, 146, 243, 132, 178, 128, 172, 188, 99, 91, 127, 222, 68, 219, 136, 175, 173, 70, 231, 22, 233, 154, 190, 100, 233, 252, 241, 1, 84, 151, 172, 87, 146, 2, 102, 146, 120, 113, 219, 253, 103, 30, 112, 29, 48, 217, 80, 237, 183, 123, 129, 196, 132, 128, 66, 112, 18, 117, 7, 150, 64, 232, 161, 22, 21, 174, 140, 29, 114, 119, 0, 237, 212, 43, 24, 34, 97, 236, 49, 227, 54, 154, 251, 3, 50, 191, 97, 216, 121, 64, 97, 210, 66, 17, 136, 161, 149, 59, 231, 154, 14, 42, 45, 113, 27, 211, 30, 4, 47, 251, 205, 17, 118, 45, 34, 253, 226, 72, 72, 203, 153, 73, 15, 86, 203, 183, 68, 215, 249, 201, 254, 157, 133, 220, 33, 33, 86, 242, 14, 33, 191, 59, 188, 246, 26, 220, 109, 53, 233, 33, 62, 30, 66, 71, 93, 154, 93, 122, 212, 23, 133, 239, 45, 112, 4, 1, 151, 226, 160, 202, 16, 179, 34, 206, 139, 169, 133, 71, 154, 38, 27, 176, 208, 244, 129, 57, 2, 79, 208, 152, 198, 93, 148, 27, 219, 27, 52, 167, 232, 211, 101, 137, 251, 30, 171, 33, 92, 163, 208, 243, 155, 128, 93, 150, 226, 120, 221, 39, 98, 193, 19, 18, 163, 247, 45, 173, 219, 107, 121, 195, 238, 179, 96, 160, 245, 228, 241, 186, 18, 56, 48, 208, 188, 66, 34, 205, 206, 206, 213, 8, 112, 227, 120, 5, 93, 86, 234, 139, 149, 113, 158, 76, 158, 137, 143, 217, 85, 234, 116, 174, 32, 72, 75, 1, 124, 38, 176, 175, 197, 249, 101, 138, 183, 171, 180, 128, 64, 189, 236, 205, 196, 136, 220, 87, 62, 82, 142, 130, 172, 236, 4, 148, 39, 155, 45, 88, 85, 108, 33, 53, 49, 51, 138, 208, 211, 246, 191, 78, 124, 124, 27, 182, 167, 180, 196, 67, 187, 110, 32, 128, 28, 106, 5, 68, 22, 59, 203, 85, 246, 60, 171, 49, 235, 53, 198, 216, 56, 90, 66, 42, 184, 30, 227, 71, 200, 74, 99, 48, 150, 112, 33, 197, 24, 73, 203, 52, 121, 93, 78, 142, 90, 151, 156, 141, 216, 45, 220, 220, 68, 177, 64, 192, 240, 122, 177, 189, 79, 185, 2, 138, 212, 238, 194, 157, 62, 29, 77, 129, 46, 236, 36, 135, 9, 80, 40, 68, 232, 112, 82, 47, 144, 86, 49, 142, 86, 171, 95, 155, 113, 161, 63, 190, 210, 178, 234, 104, 172, 8, 115, 11, 237, 71, 30, 141, 3, 166, 32, 254, 91, 246, 226, 6, 68, 226, 152, 203, 104, 65, 190, 170, 185, 248, 100, 59, 177, 141, 192, 200, 110, 6, 95, 169, 193, 5, 195, 166, 79, 178, 230, 240, 106, 132, 11, 147, 24, 147, 213, 113, 5, 18, 42, 23, 136, 95, 77, 178, 204, 89, 38, 130, 173, 88, 26, 98, 73, 123, 225, 71, 192, 22, 116, 50, 24, 31, 221, 134, 57, 243, 228, 20, 14, 42, 235, 153, 145, 252, 238, 107, 58, 112, 57, 185, 130, 76, 20, 0, 213, 145, 249, 218, 122, 214, 23, 122, 157, 63, 35, 169, 3, 236, 226, 184, 156, 176, 37, 212, 240, 95, 252, 132, 204, 239, 96, 99, 208, 227, 33, 146, 203, 151, 87, 172, 72, 136, 182, 19, 212, 84, 158, 76, 73, 84, 132, 131, 99, 188, 243, 66, 113, 224, 139, 34, 177, 198, 140, 83, 215, 49, 123, 70, 146, 212, 13, 127, 169, 141, 202, 52, 118, 222, 168, 102, 183, 140, 80, 184, 128, 117, 183, 201, 4, 204, 8, 247, 195, 149])},
|
||||
{encoded: "RfMW5U1bUrhii5iwfk8yJTvNdkKvtuhVk8or7tHPzL3s72UGdAUfUvQmGTeBCPfu1J5gGwD6kHTkK5SqxjGRDGLSRxY4gR14JAwJbDoE5sLvve5kVzU5Uxsk57KKuvyAgJDP9TzgkdDZtppodvX1gmKwWjzPppGrxRmd2Yro7bq1AAar3ewvR7zZnVCX6bxFs7LKa11TqRLDHVUie",
|
||||
decoded: new Uint8Array([135, 177, 224, 165, 184, 120, 153, 73, 210, 102, 3, 101, 200, 195, 249, 80, 152, 230, 18, 27, 172, 223, 136, 21, 170, 6, 131, 238, 59, 221, 156, 43, 188, 31, 37, 161, 140, 117, 178, 188, 237, 155, 114, 125, 131, 93, 238, 96, 91, 113, 227, 87, 43, 91, 70, 97, 82, 80, 117, 217, 91, 244, 103, 205, 217, 243, 139, 43, 52, 196, 191, 226, 218, 149, 38, 246, 116, 25, 33, 194, 90, 214, 229, 31, 136, 150, 218, 25, 206, 168, 73, 3, 165, 158, 255, 65, 212, 201, 240, 66, 31, 82, 198, 152, 199, 201, 174, 43, 123, 102, 207, 17, 54, 135, 92, 255, 246, 133, 223, 241, 226, 37, 42, 168, 19, 201, 184, 238, 64, 61, 61, 199, 189, 100, 34, 38, 13, 0, 146, 244, 229, 23, 236, 240, 105, 100, 19, 79, 62, 210, 23, 147, 219])},
|
||||
{encoded: "3MxBmyJJWGL1jpLKNvf6Y7XnGTAGDSKm3LSSJ6DVJxfv8HNsiddpjp5DMGg1BByeTqGQd8hXk3Fy3aW7NNmCqnuZzLAKjqBmNmd6WVhsf2hMXfFJhThnCBsF8RKAWQodaqZCRFwEgqhLMuURg3XouMxHsLmS6B6h1v4sdyNBv5hJL4fp1Wi3GeL1prEihvqjrmR4oawgeuiKGop7AH9RnT96qo3bcZKV5BiP3Gj81geUbTXUM3hZ4EXjZAdCVxtMys122EoiuAde8Fh5GK32zoaPPywD4gYTpsNsZqbaQkryE8y8c1zKNCPcGPFVBCpic4cvBMjK9wEWQY5TnRBA5oo1LTPqpyEHZForWJHHL9PNnGDcVeY9384CUfXCJZLFNHKcW6GBNSKHfwB7wbMrkUDARsAjZMHT7ajVivmGdhiaBBMQzAgL3xdZAuVJVLciGsoHVdRcMHazdfX6qfdNpAZfC5evMA6bVsVSHcSZp2qqnRLYbJ6E6B5Y9q5YRSprSTmtMMS7CSKHv27wqRuAaU6Qt3QRt2NQAq7L1KuF5aq2fTc878j7LqsGJLM8wJfank97FFY2Evxr7dCpDrnqh4ptHxMXQPu62bayjRBPj8tPjvcUHho6kwKaZBLP6U6xWr4RKU67fJsXykf2Hg83RRCK1PmJqqK1ApFfqyAFM7pcrGnaj9ABtfQ7iSmob9QzWuFPvjdYLeY3gCz2wH8sbf64kb9nqkLEPLQ6cHb3o5WCcv6TRtAGLPB1PvAVyis3ff6R8vPAjsVkCwjBHLUHeiQ3aED9QfSkQ58EPPnsRnC9574F6LHB3YYibz3R2LppkaLkdUUGELUBQFCT5u2FRiziy25kY6GnHCVDCD6Sj8naAsMRgynumDEJwYASBmS8yCiG9eh1GTRS2yXV7MVBe2msiFFWGiP6LiJmhmGaEwy9WyjAQSCpidAUv4mHKS4L63tK3LpCbuUPNmcrSYQRrrAiuSKojAKpuLNYXUpku67L6G6QtZ2TD5t8AWCeVtttDLA4pbCCDwdiqVKUesm6br3mxjB7QTXjn9vr6cY6n48BKHqfwLeKnBDC5sVTaVWPwpw7evth5xwNpSwCKtEhMbNwjqVysEPNGKTu2Htm29RE8jBmYQMDU",
|
||||
decoded: new Uint8Array([161, 199, 64, 18, 2, 26, 112, 182, 56, 120, 88, 119, 130, 31, 176, 244, 121, 171, 231, 156, 68, 175, 137, 228, 193, 168, 85, 152, 162, 21, 135, 182, 103, 223, 94, 223, 159, 149, 49, 196, 10, 87, 243, 113, 163, 239, 252, 150, 75, 157, 250, 147, 163, 43, 42, 81, 90, 174, 125, 76, 34, 96, 121, 226, 77, 128, 5, 120, 66, 39, 55, 26, 147, 110, 195, 119, 10, 46, 193, 194, 73, 145, 15, 211, 46, 4, 124, 205, 215, 252, 6, 187, 15, 62, 112, 116, 174, 30, 154, 163, 97, 127, 154, 202, 13, 159, 160, 13, 58, 169, 16, 240, 3, 49, 82, 217, 76, 76, 87, 33, 255, 200, 30, 181, 120, 183, 238, 109, 231, 128, 230, 151, 131, 220, 254, 178, 7, 45, 93, 32, 211, 185, 25, 206, 250, 18, 233, 161, 144, 140, 103, 189, 253, 9, 106, 139, 85, 195, 114, 32, 223, 133, 19, 139, 121, 61, 138, 13, 85, 12, 106, 161, 106, 149, 25, 147, 179, 53, 104, 151, 183, 73, 89, 195, 92, 56, 190, 27, 80, 229, 79, 188, 51, 10, 252, 220, 96, 242, 202, 143, 138, 90, 122, 100, 126, 155, 111, 24, 160, 37, 82, 14, 13, 56, 247, 141, 214, 221, 142, 100, 234, 109, 151, 23, 153, 42, 15, 169, 92, 132, 87, 120, 206, 79, 123, 146, 133, 222, 66, 192, 83, 36, 73, 244, 239, 80, 87, 248, 115, 106, 7, 172, 253, 158, 84, 0, 101, 75, 196, 132, 167, 56, 3, 122, 130, 92, 243, 173, 165, 39, 225, 148, 73, 189, 55, 220, 194, 101, 172, 206, 160, 11, 111, 76, 237, 252, 61, 15, 125, 220, 84, 246, 128, 207, 146, 49, 78, 196, 96, 98, 243, 123, 86, 126, 34, 57, 38, 151, 233, 251, 137, 189, 225, 147, 92, 125, 24, 231, 237, 59, 74, 177, 221, 208, 27, 123, 243, 190, 155, 4, 140, 234, 31, 55, 24, 183, 151, 10, 4, 123, 112, 17, 178, 107, 122, 1, 146, 217, 126, 206, 223, 59, 206, 213, 138, 251, 6, 147, 227, 219, 15, 229, 254, 187, 14, 142, 128, 231, 103, 221, 107, 0, 213, 240, 22, 140, 97, 3, 24, 196, 16, 104, 62, 131, 49, 218, 227, 58, 228, 170, 158, 246, 194, 157, 243, 13, 151, 87, 137, 204, 172, 71, 102, 179, 228, 198, 136, 94, 129, 4, 235, 150, 99, 203, 192, 130, 213, 252, 154, 30, 131, 187, 118, 178, 163, 39, 80, 38, 156, 1, 234, 137, 248, 120, 71, 251, 26, 136, 156, 0, 207, 174, 159, 192, 253, 47, 213, 62, 105, 156, 93, 16, 186, 149, 238, 19, 18, 93, 203, 157, 120, 215, 59, 32, 187, 240, 252, 47, 251, 30, 181, 140, 46, 217, 36, 62, 120, 40, 67, 210, 48, 126, 202, 209, 189, 55, 40, 3, 4, 43, 188, 21, 168, 195, 119, 224, 51, 4, 246, 51, 110, 83, 76, 252, 145, 160, 238, 229, 115, 190, 35, 216, 113, 49, 176, 65, 208, 30, 83, 255, 254, 46, 23, 50, 164, 158, 20, 177, 84, 228, 237, 186, 178, 152, 200, 4, 254, 228, 125, 185, 62, 209, 190, 129, 155, 28, 142, 103, 69, 7, 252, 38, 118, 197, 100, 72, 193, 49, 205, 149, 110, 100, 193, 196, 114, 164, 57, 17, 14, 30, 225, 255, 118, 0, 237, 113, 164, 165, 205, 91, 251, 127, 119, 115, 128, 58, 156, 50, 14, 29, 111, 164, 18, 36, 129, 11, 0, 236, 179, 97, 40, 162, 162, 64, 96, 167, 74, 3, 59, 176, 64, 233, 77, 53, 207, 237, 180, 66, 162, 132, 234, 223, 228, 243, 140, 80, 6, 201, 201, 10, 136, 25, 184, 175, 88, 215, 220, 78, 226, 9, 121, 170, 97, 27, 40, 100, 238, 10, 75, 189, 118, 124, 147, 210, 234, 168, 233, 59, 189, 121, 118, 92, 12, 36, 143, 131, 46, 19, 2, 159, 243, 67, 147, 15, 130, 215, 148, 223, 207, 235, 237, 113, 95, 86, 169, 224, 68, 205, 188, 145, 91, 71, 130, 218, 253, 36, 15, 38, 153, 68, 80, 217, 219, 14, 144, 131, 165, 137, 242, 180, 183, 61, 46, 12, 167, 177, 194, 14, 106, 189, 166, 1, 140, 90, 18, 94, 209, 51, 70, 157, 7, 216, 198, 57, 66, 44, 206, 65, 81, 0, 191, 189, 3, 138, 249, 85, 207, 69, 232, 118, 232, 249, 72, 182, 114, 87, 120, 123, 254, 105, 158, 84, 30, 14, 171, 46, 68, 66, 47, 203, 105, 181, 255, 223, 61, 33, 39, 7, 202, 84, 182, 19, 139, 137, 147, 138, 82, 12, 179, 224, 84, 191, 140, 224, 218, 225, 72, 9, 42, 231, 41, 165, 23, 136, 21, 56, 220, 81, 118, 222, 63, 34, 139, 185, 35, 6, 116, 198, 103, 77, 11, 65, 34, 207, 173, 63, 209, 52, 97, 204, 219, 222, 64, 176, 43])},
|
||||
{encoded: "MXN62HeXDetfUzJqp9RmReyxuH3mcti8cMQmDRoLF2WLara6e1eiH8qnAcCr9LTVTJjrA9Tjpf8v8DFo1LUBTKwNP8CUgd2BhCXoXPQJ9xBueQnR7Vv79u3T6GbUdLkE7JEwAexhaxAbCCAThcQRUR1XYyhSWJ4uJJ3GiS9EG6py4B3VukUi3LdC1wuoJgkgZL49tTm4YQPVyzDDnA4cePJLnb7NzxxtcapVSUEpFG97ABN",
|
||||
decoded: new Uint8Array([94, 68, 96, 125, 66, 160, 30, 69, 125, 248, 117, 50, 136, 191, 104, 106, 103, 78, 145, 68, 146, 44, 156, 124, 33, 149, 5, 183, 231, 15, 214, 152, 41, 97, 81, 38, 249, 215, 4, 233, 79, 218, 45, 33, 222, 226, 68, 66, 206, 33, 133, 15, 67, 76, 195, 128, 9, 247, 6, 77, 11, 208, 170, 14, 62, 151, 179, 51, 168, 92, 92, 212, 179, 151, 171, 53, 223, 119, 64, 160, 231, 245, 221, 226, 205, 111, 77, 140, 201, 154, 194, 9, 251, 86, 156, 116, 15, 197, 11, 82, 187, 97, 160, 0, 238, 138, 5, 134, 157, 233, 217, 151, 191, 127, 207, 169, 5, 83, 1, 211, 85, 216, 62, 85, 218, 85, 25, 26, 217, 124, 60, 28, 19, 84, 41, 32, 219, 157, 252, 140, 41, 244, 80, 126, 197, 218, 226, 42, 12, 123, 194, 11, 45, 13, 255, 154, 20, 74, 162, 189, 31, 24, 36, 186, 194, 60, 173, 160, 226, 160, 185, 199, 128, 134, 109])},
|
||||
{encoded: "2jyazz67zp1hpPZV1jXYeBjGacbpFjsPTVRU46RSYUZCeJeHtzdddM732rSMrwo9yM52oTRnFrShF2d1fzCrVxYAb6Dwusxnh2MHQDzqXF8YdUbaaiQBg6ZoSsAn8h2DKgqccBVxQhak4LvgSSVCq3SSP18qPHYUgHp35vMKH8jdHP9NTa5J2jNjwppWG2zwCjtRuvJGEJHWMYMirio9jp67LnX6y2soo1Ht9WtQokCisrJxdSq6Q7L3b3Y2s7U8jTCqADESFXMyJuKaaRZBrY4T6khdb2BYBWKe13RUiEKqpsVpR24oMpgyYuRfiLsVS1X7X5W2n9jqPLkmnFXFP7fw4nwan4vUifiy7UghFBQFdVv7jsGMEUnU8EANAMmTZz88AjiSNvHmM9McjmfTfSZcbKGchyZmvon5A8z2Pzge6uduhXdNJCQ138rPUQU48j3SVgX7tssj3HaExjkTZRmveuRvEVApA2AHHs2EXGcMGxUe6i1QCck6QkK1F7DQ6zk1eRRgLfNs592GpCdh9kyHqmGLMrNUW4ftHxFxWYTgT1zmSVYzAouLnHkQqmEQnrMgKDrk7DDu8HUCovuaQurq5rXseVTZX5vBT77eJntyKHam7tLAK1T39reMmX6XLyAx48XEfwTomuPD5HHUoF6xZFAyvsJUSYpLuZ3oSvYS7XbY3jrVYAYPVpSpNPLdtLfWqtYz5xxYCgMUZ84WRpq2HJzunEtpPV4GdmNBkhhg6hkVdbaZQVGS9J6Daq2swsyKBgiUUjb4vzw8zH2G1isNZDL1cQFcKhyvYJrJ3rRps4RooZJJtz3daWa5uNMdvJwfCnKyBAsJayQuUxvy2dR2AK5gSaxPgsRiqcW3uKFer6L9kcpgvuZmzJgcLikj4SX6TBVAgar2psS6atfczV8rTiDfnQPLRkJkuWS54BsHnUCUPErqrAcFy1ipWpo9JEVuTtNSaiByw7pXJZivPjScq81iYidimiEugnY5qdD9W9z6Y2Vz4snQcBDZiR3QrAwEpJzKvoYWUdMSRvLZ43NnHdQg1WxK7GNDbaumPVbSPNftS24FE",
|
||||
decoded: new Uint8Array([253, 199, 156, 51, 44, 236, 192, 68, 107, 80, 194, 210, 124, 67, 137, 104, 59, 112, 158, 224, 177, 54, 87, 53, 242, 213, 171, 250, 185, 52, 52, 242, 16, 85, 5, 239, 196, 234, 54, 10, 204, 60, 133, 125, 89, 177, 114, 74, 158, 30, 239, 144, 31, 193, 121, 0, 83, 157, 48, 220, 207, 31, 3, 129, 177, 173, 119, 217, 209, 250, 10, 187, 88, 208, 245, 204, 87, 252, 38, 125, 221, 109, 39, 134, 199, 20, 178, 174, 255, 104, 198, 238, 154, 242, 54, 66, 118, 72, 77, 64, 211, 114, 79, 117, 84, 180, 191, 57, 220, 222, 164, 86, 5, 252, 90, 214, 17, 163, 168, 110, 203, 226, 167, 232, 222, 123, 23, 187, 28, 176, 198, 199, 21, 172, 216, 202, 153, 186, 25, 13, 121, 55, 91, 204, 60, 203, 237, 199, 13, 22, 89, 131, 35, 16, 53, 135, 201, 208, 207, 120, 27, 193, 144, 225, 214, 245, 61, 40, 222, 176, 127, 137, 6, 112, 220, 29, 78, 176, 10, 109, 192, 139, 154, 94, 216, 204, 177, 79, 105, 206, 214, 60, 188, 58, 165, 176, 106, 153, 48, 146, 236, 217, 54, 198, 113, 36, 162, 227, 201, 99, 17, 17, 226, 140, 148, 140, 179, 71, 11, 0, 255, 226, 135, 142, 149, 252, 21, 60, 116, 241, 229, 166, 2, 217, 85, 191, 141, 64, 247, 185, 73, 32, 115, 51, 139, 205, 126, 132, 76, 137, 40, 154, 169, 121, 203, 170, 157, 65, 73, 50, 34, 178, 197, 156, 46, 55, 240, 23, 243, 131, 115, 102, 59, 51, 105, 245, 222, 26, 118, 91, 173, 249, 133, 211, 83, 127, 117, 135, 217, 83, 249, 42, 21, 168, 158, 166, 201, 10, 142, 231, 168, 246, 222, 247, 24, 97, 69, 103, 209, 216, 91, 47, 137, 170, 87, 118, 214, 234, 220, 149, 103, 38, 252, 45, 186, 236, 144, 223, 212, 254, 22, 30, 24, 131, 6, 174, 52, 189, 73, 2, 202, 242, 146, 140, 159, 236, 207, 133, 123, 249, 96, 58, 176, 70, 209, 206, 255, 190, 55, 119, 238, 247, 41, 59, 212, 1, 70, 102, 203, 159, 240, 95, 75, 126, 2, 166, 130, 226, 6, 97, 91, 250, 159, 160, 203, 21, 80, 202, 97, 52, 55, 217, 224, 186, 243, 231, 159, 32, 121, 85, 102, 120, 233, 53, 130, 213, 250, 211, 132, 8, 96, 186, 160, 0, 17, 233, 245, 150, 115, 65, 93, 196, 42, 238, 161, 36, 43, 162, 221, 186, 86, 93, 148, 19, 131, 213, 219, 111, 211, 228, 70, 25, 111, 81, 196, 125, 188, 161, 237, 126, 180, 170, 209, 207, 127, 134, 45, 154, 143, 144, 103, 193, 132, 47, 182, 216, 149, 123, 145, 136, 16, 229, 110, 27, 108, 78, 53, 115, 210, 166, 82, 210, 75, 105, 230, 108, 67, 245, 9, 246, 193, 84, 122, 34, 134, 94, 233, 181, 202, 5, 62, 199, 242, 217, 82, 249, 202, 25, 249, 99, 121, 143, 120, 53, 19, 133, 201, 147, 80, 194, 220, 93, 78, 38, 222, 253, 43, 243, 213, 51, 62, 92, 23, 168, 115, 21, 92, 53, 68, 83, 22, 147, 54, 39, 23, 33, 109, 156, 181, 52, 133, 80, 249, 243, 219, 17, 173, 54, 125, 53, 244, 50, 29, 198, 215, 163, 250, 250, 106, 81, 58, 146, 241, 172, 126, 226, 145, 52, 11, 31, 241, 45, 225, 74, 79, 78, 87, 136, 241, 114, 114, 192, 91, 253, 110, 176, 69, 32, 15, 118, 46, 11, 54, 59, 122, 141, 194, 84, 98, 249, 123, 152, 246, 187, 126, 42, 74, 80, 211, 197, 149, 216, 184, 232, 244, 241, 96, 10, 101, 209, 144, 101, 239, 59, 173, 18, 155, 38, 161, 36, 122, 143, 35, 153, 133, 43, 8, 210, 65, 86, 34, 192, 163, 190, 168, 5, 248, 51, 33, 123, 103, 87, 87, 120, 157, 124, 14, 197, 241, 237, 201, 23, 13, 90, 102, 231, 177, 40, 104, 73, 241, 68, 33, 220, 162, 254, 123, 46, 213, 172, 247, 10, 252, 160, 77, 254, 33, 81, 103, 59, 238, 189, 51, 49, 63, 107, 123, 87, 116, 62, 116, 231, 253, 1, 30, 81, 172, 85, 1, 121, 37, 18, 114, 176, 117, 251, 64, 207, 239, 30, 54, 50, 35, 74, 136, 29, 177, 150, 26, 118, 49, 114, 211, 77, 24, 207, 138, 145, 66, 184, 118, 156, 246, 25, 209, 91, 89, 112, 238, 246, 23, 19, 88, 20, 252, 228, 67, 140, 37, 20, 252, 201, 99, 112, 180, 84, 30, 125, 204, 13, 218, 208, 116, 185, 124, 157, 172, 61])},
|
||||
{encoded: "XeWaFFJEmfhSK58oLjrco5zLVPLrJ6LHwVXFQD3SEKQGDbc5xavfwAPJjMvrmLSkBUb2BbRnQUkf2XDSddLRD5CXFqJeEAgtcHTVB8JKTV15tXy2yjnEsyXjpsSx4PdHqejsZytV3fVEexzvTAvjKJzPYjP1sDCH7YPUsPQs7ruLRBC9Z8sAFGhkRb85sXibvYsJiAwMEp2PndA1w9VYDcHU1P4RsMbS8RzwoigEbB6yhQcVmR82JutDJAMDMzrXnHgdPeYrehmvEQmBiEXK7KNWBpTdeWxQHGsxequTjLZkc9cTt7dVwMUBrfdSPZcFY1TpEsvgLdEfCZLFCcAoSkzyN4NsvSYhr45ToXPZszminG5cjWAv9FLUidfsftw4SRyCocbG81heCBaRz6F7WqwAeFsZCS9yrwAU5QDrxNM3sakmyL1FYRDLFSsGnHhZAWkP4dvCCp18Do3j6yVDmpiNMSGHcSzXcmAehPDCbtYEHsQtXhKvtg77xVBYFGDJem4ri6gshB2xq89J4PivwErpYAz37HzUjhaHptzSnKiJaZxsfc2AQUvZiE7UfZWDi2eNRWyGjVoALy1iqVkEETMTBQShNZmuN16SaB2mRDib2Kow8XUNpLmxzErYge9Tidji3kHUqw2xHmRrpSqyu6MPUWxSEnEJjgD8SRPCANzV7eXnbvs9qKhgozbyE4cXfSuUtGNUsmWnrafz6tD2vXZGGD772TvCxfiLCwSgJW7PsGbJFN8wWTZQERdrncRECnnrscDLP55UwsLyfRhuSPz5XRV9DqZTvGC9SWSK9j9JNKX15eSmkXrgsJcc8jL9ntquStZvMoBWZuZi28Vj7PDoVFaM6BX1zg1yHMsESrPaCwcGRBFzMdkaivB3nGLEUGV25jyAJTZDkxptVGNcUfng1uPYjThnUdhKg8hP2bZFrQtoQ54ayptznhNCyH4fQf3f7D1JGvCqfLUVKr5aNj1qa4r8GGfWHPzmHidiHgQ3Wh43pSLUTrXEdoiajhVHJ67fahxSfLR7A7qLGPwhZmiLbReRq1iqFoSH8qhxjx6JAYx7qDaidrLrvseD92whFacNsxLtG3nkrwP2AQ",
|
||||
decoded: new Uint8Array([64, 75, 208, 153, 164, 226, 105, 101, 6, 190, 69, 254, 5, 6, 117, 155, 120, 221, 137, 117, 176, 24, 45, 203, 255, 193, 151, 132, 249, 76, 148, 199, 237, 209, 120, 155, 119, 190, 239, 16, 64, 149, 44, 27, 225, 228, 222, 158, 90, 191, 242, 184, 189, 199, 36, 15, 120, 18, 97, 49, 170, 18, 72, 112, 185, 19, 34, 178, 68, 198, 33, 80, 62, 142, 86, 230, 53, 156, 210, 95, 230, 97, 199, 113, 65, 228, 112, 119, 163, 117, 161, 226, 242, 197, 54, 229, 216, 117, 93, 185, 245, 147, 115, 130, 55, 88, 178, 229, 230, 222, 208, 28, 91, 218, 69, 88, 221, 138, 170, 210, 124, 19, 96, 184, 237, 255, 136, 239, 150, 24, 199, 238, 53, 139, 230, 206, 212, 177, 235, 42, 150, 0, 169, 49, 104, 132, 231, 188, 72, 14, 147, 114, 145, 222, 132, 216, 83, 121, 102, 17, 64, 93, 19, 167, 166, 112, 249, 92, 178, 149, 202, 156, 189, 125, 147, 4, 150, 56, 224, 159, 225, 203, 94, 139, 171, 48, 39, 86, 185, 123, 191, 197, 110, 92, 63, 78, 19, 168, 115, 56, 109, 118, 130, 113, 67, 1, 234, 73, 3, 25, 200, 203, 115, 182, 187, 74, 37, 55, 120, 16, 151, 111, 107, 121, 210, 139, 51, 121, 165, 214, 48, 182, 7, 200, 165, 176, 202, 7, 82, 30, 58, 150, 11, 208, 98, 220, 154, 63, 30, 134, 213, 18, 200, 144, 188, 46, 142, 159, 26, 177, 24, 220, 71, 77, 159, 22, 170, 17, 123, 189, 126, 187, 182, 86, 189, 217, 2, 15, 217, 120, 21, 107, 122, 123, 66, 141, 170, 47, 77, 139, 126, 48, 127, 229, 197, 21, 77, 155, 85, 196, 50, 10, 110, 158, 62, 197, 154, 141, 244, 204, 128, 75, 31, 46, 113, 93, 19, 137, 177, 182, 84, 209, 247, 128, 152, 59, 206, 237, 117, 37, 58, 204, 26, 143, 213, 33, 67, 178, 61, 194, 77, 94, 217, 66, 36, 243, 191, 98, 232, 124, 92, 157, 50, 138, 135, 77, 70, 71, 215, 239, 61, 165, 246, 230, 232, 18, 118, 81, 248, 86, 139, 170, 64, 208, 13, 126, 165, 238, 242, 70, 151, 160, 232, 38, 17, 241, 18, 150, 79, 43, 191, 96, 115, 14, 67, 243, 134, 195, 108, 75, 124, 29, 197, 188, 32, 193, 128, 63, 204, 109, 42, 21, 88, 88, 213, 170, 58, 167, 172, 139, 151, 63, 184, 218, 235, 174, 25, 180, 225, 190, 89, 251, 247, 21, 188, 221, 10, 32, 80, 52, 173, 201, 125, 89, 124, 214, 136, 77, 42, 50, 92, 168, 3, 230, 100, 178, 148, 198, 169, 227, 45, 14, 24, 47, 79, 9, 11, 151, 54, 248, 198, 208, 102, 213, 40, 210, 43, 23, 7, 214, 139, 127, 59, 71, 144, 222, 27, 50, 79, 120, 22, 103, 235, 176, 55, 21, 141, 52, 242, 15, 63, 13, 14, 161, 81, 81, 241, 146, 204, 28, 4, 47, 98, 78, 74, 20, 116, 153, 250, 59, 173, 28, 212, 11, 144, 234, 51, 121, 149, 201, 188, 104, 0, 1, 154, 23, 136, 114, 251, 45, 173, 2, 155, 148, 185, 116, 49, 70, 26, 160, 211, 187, 173, 2, 206, 180, 106, 150, 9, 94, 228, 97, 184, 60, 196, 170, 177, 171, 70, 141, 165, 11, 49, 44, 21, 122, 111, 4, 213, 119, 158, 113, 162, 159, 65, 121, 166, 88, 107, 100, 58, 108, 243, 129, 179, 147, 32, 240, 18, 84, 122, 24, 71, 185, 62, 14, 17, 95, 91, 62, 212, 6, 89, 135, 135, 18, 99, 11, 214, 7, 254, 210, 113, 52, 28, 253, 132, 127, 51, 148, 173, 205, 117, 41, 75, 107, 36, 2, 153, 98, 134, 99, 254, 161, 0, 176, 250, 176, 61, 110, 186, 226, 98, 51, 176, 25, 59, 123, 84, 101, 37, 101, 182, 222, 89, 140, 37, 226, 8, 225, 14, 68, 46, 64, 78, 51, 157, 150, 233, 208, 215, 84, 82, 33, 45, 57, 245, 186, 252, 54, 135, 150, 56, 68, 42, 147, 145, 225, 12, 180, 12, 133, 203, 109, 2, 222, 125, 244, 10, 94, 189, 209, 59, 163, 7, 210, 38, 44, 248, 154, 197, 84, 10, 29, 24, 112, 214, 2, 17, 245, 166, 38, 239, 51, 111, 208, 185, 234, 221, 233, 139, 103, 19, 64, 145, 88, 226, 209, 218, 109, 178, 46, 191, 214, 207, 160, 110, 78, 105, 111, 212, 123, 135, 187, 145, 51, 158, 117, 20, 198, 48, 51, 147, 55, 21, 115, 60, 50, 62, 35, 249, 114, 26, 158, 249, 91, 237, 127, 20, 137, 54, 62, 22, 110, 82, 115, 121, 105, 129, 116, 30, 63, 208, 138, 194, 125, 175, 93, 52, 245])},
|
||||
{encoded: "5iuH66GXgbDBEJkBZwzJnHwqr8fKW4tEceu9jkD8qoCKrgrM2NTw6uz8n17esbbWHgWgmDoLsqCcLV3MuaJJ3yrrFqDUpxRBatkGzcJueKRzwiH5NSpxVTdMg8VHUm8jVAehbueEPXZ8e7TAwwMyzmri9HitL9DsVDoVLJH9GxGv3qSsQ4ab5ijW1JVL31PLg4e437C1rLtjeK7kNiT7nQB5cxffFXqyzNqYFMxjJimKyzD721y1GA1jWuf1iZq9b3gJik7ykLjrAo9R8Ac8QP1jHfZPpgfidwpycaidkhptdhfcfL65F2Jk6wbJhhp4moXeSQmMsBsa2abosQYJe3q3AVsQxKR6pw1przFCPqqCA9a9ux1NVQe548AwKbDaRdLSJEgRtBMEBuPDpUKvgtSfvUKExPpJy9W9oLEKfQwGB7JKfC1AMwXKfzELTDYWkEQE2TSKCGA5DkisZG9rv8Sn4p7zxyGefxKinuuuu37zKWD1bE5eBvXbrQBFXHEwFtudZbgMaU7GXvWgiLRtUz7gK5ra6SgP4ZLYZqqBdatrpU8o2Ug6t8zyJproBMwotkwv6kJbCevaVZtusU9Uk5LKyFM5XeAzP2BhcBY3X6fbgjRMbmoDq7RU7dn6sXCkDY4VAzqVW4CgyT8E6dyHBuvzXSDguCrViZqNjKTucGAnG6zqeYCv9KU1hH9QVrfoTB32rPHfvRvPRydFXb45cVg862zRtRUC7nn2izqy7KEapzXYfH4sV9JghQKRwfD57keP293MNgYmG39sHTnPUQ5mqoENQBDzMuthZ4fGtEPkYYwU1NM1oHo4pbMissLZtwSQDwu4BrFqzVMdkCvyPAGvJL2sWx6ZstS6eEg9gTKmrrKNsLHwjHcGPExKt9KTP3brJeqncDpy2Ey12razfCaFV7C2ki3tt5Lg11txYx1uSeyKsHDSbw2NarLaPwJaExQuMmAUGaYHxyHogyZEQuGzwFwDdQZkK6RjgW3yq1f2tu5Tg2npLnYdpq7kwrNmD76EWX2a3rKThsHTNGCYAaqcz4QmB1MPDSd4PGWTNsBSUfrWEgxTUNexfckYkzCvnvYtLzcXdadrZ6FehVrmmWSd6DvgdojNLHViuzMaTGjZQaLLnM2PzdVPzNLytmtJBb8cXP4oCbJDoYqwXwYw8iPaU8dZht5KbPhtZYn6XQFXfwVsygTL783LdjCP95AadD9mdWW2YmsJwykiE2vx5hciPmzjAyrb7kfd9i7A92zKwMvMakoPKC5aaxShpnexoV8R3KEwxBsZTTsTrBNGzKev6wtseCKZ5mshzXBawyD",
|
||||
decoded: new Uint8Array([5, 158, 142, 176, 19, 132, 253, 213, 61, 168, 144, 185, 105, 190, 69, 189, 207, 56, 107, 116, 17, 220, 3, 181, 85, 22, 41, 217, 251, 166, 33, 92, 4, 13, 217, 131, 120, 37, 134, 178, 52, 56, 165, 110, 65, 233, 215, 122, 243, 61, 118, 206, 38, 60, 207, 39, 9, 254, 70, 233, 16, 232, 171, 28, 199, 70, 222, 204, 178, 130, 134, 85, 182, 54, 241, 16, 182, 131, 143, 172, 55, 121, 101, 216, 111, 221, 158, 248, 16, 79, 90, 109, 127, 78, 22, 92, 74, 9, 65, 215, 80, 86, 193, 206, 3, 146, 141, 23, 62, 221, 137, 146, 51, 250, 153, 193, 196, 181, 89, 133, 100, 205, 190, 10, 139, 11, 226, 105, 23, 225, 49, 217, 41, 132, 43, 101, 203, 76, 236, 50, 28, 8, 33, 253, 234, 47, 36, 219, 15, 106, 194, 12, 120, 187, 254, 145, 249, 153, 158, 192, 230, 244, 95, 227, 1, 242, 199, 159, 30, 83, 245, 35, 67, 137, 33, 214, 108, 218, 76, 112, 21, 194, 24, 205, 31, 149, 195, 62, 203, 177, 153, 56, 62, 149, 193, 35, 148, 182, 41, 235, 111, 173, 145, 247, 19, 102, 110, 184, 248, 65, 249, 51, 88, 70, 19, 97, 41, 66, 131, 249, 53, 50, 209, 111, 50, 146, 91, 64, 84, 216, 164, 228, 174, 195, 178, 1, 212, 110, 90, 202, 97, 82, 208, 149, 80, 20, 243, 130, 251, 227, 204, 243, 216, 196, 172, 206, 31, 41, 34, 19, 213, 167, 41, 74, 185, 8, 58, 2, 240, 86, 10, 23, 123, 5, 115, 34, 15, 192, 217, 111, 43, 118, 164, 169, 122, 66, 34, 8, 197, 29, 31, 196, 87, 80, 73, 187, 6, 85, 56, 31, 46, 215, 88, 32, 63, 35, 71, 177, 249, 111, 10, 198, 195, 135, 251, 45, 94, 47, 15, 148, 145, 71, 210, 101, 172, 165, 136, 57, 65, 48, 68, 75, 177, 101, 117, 242, 35, 56, 76, 203, 28, 162, 42, 195, 138, 246, 33, 42, 232, 73, 185, 134, 202, 209, 242, 110, 105, 163, 238, 185, 168, 115, 138, 163, 6, 188, 65, 46, 226, 73, 86, 59, 21, 121, 115, 97, 175, 191, 108, 180, 136, 146, 137, 223, 177, 207, 13, 171, 51, 21, 208, 82, 129, 72, 154, 69, 220, 183, 229, 214, 117, 1, 73, 212, 78, 57, 41, 223, 134, 52, 197, 111, 75, 81, 128, 233, 184, 122, 128, 253, 107, 161, 121, 224, 13, 182, 44, 193, 161, 43, 142, 170, 223, 84, 240, 145, 58, 2, 96, 135, 233, 12, 12, 67, 69, 187, 254, 106, 212, 9, 237, 235, 136, 50, 222, 114, 160, 17, 229, 140, 4, 46, 27, 126, 66, 126, 88, 65, 69, 4, 236, 69, 156, 142, 121, 102, 196, 234, 132, 124, 125, 32, 246, 203, 174, 95, 115, 117, 7, 156, 174, 117, 137, 177, 26, 163, 11, 195, 168, 197, 223, 102, 238, 246, 251, 205, 66, 121, 254, 41, 255, 136, 225, 96, 205, 223, 102, 163, 151, 14, 255, 73, 112, 196, 193, 187, 39, 37, 96, 12, 113, 57, 151, 31, 65, 42, 231, 47, 67, 96, 244, 65, 164, 36, 144, 82, 6, 196, 140, 91, 90, 183, 198, 182, 143, 202, 147, 215, 163, 160, 186, 94, 235, 244, 151, 170, 106, 229, 230, 84, 101, 2, 171, 144, 250, 159, 79, 228, 113, 145, 187, 202, 184, 113, 218, 171, 187, 28, 172, 96, 186, 45, 219, 191, 196, 238, 220, 190, 87, 198, 48, 40, 142, 46, 33, 116, 86, 13, 51, 158, 179, 208, 250, 152, 83, 194, 205, 36, 195, 189, 245, 159, 220, 108, 188, 23, 223, 118, 95, 212, 215, 170, 71, 61, 80, 204, 52, 111, 234, 166, 96, 231, 84, 0, 202, 9, 71, 131, 10, 199, 52, 224, 92, 181, 36, 59, 237, 190, 69, 164, 174, 56, 11, 152, 44, 233, 153, 21, 189, 184, 90, 114, 192, 170, 253, 58, 133, 165, 90, 49, 33, 50, 152, 105, 7, 178, 248, 11, 54, 143, 197, 40, 94, 204, 185, 128, 33, 140, 103, 116, 156, 102, 129, 180, 228, 123, 172, 118, 57, 0, 57, 213, 21, 250, 116, 156, 4, 25, 234, 16, 12, 70, 40, 222, 227, 136, 136, 113, 73, 10, 42, 27, 186, 168, 113, 83, 67, 64, 251, 157, 249, 203, 54, 117, 188, 103, 0, 107, 194, 52, 172, 55, 11, 199, 129, 114, 209, 154, 234, 23, 213, 243, 132, 17, 7, 206, 46, 53, 224, 232, 88, 14, 245, 81, 221, 63, 229, 118, 185, 50, 239, 95, 160, 59, 19, 198, 86, 48, 152, 246, 108, 103, 91, 228, 211, 47, 230, 202, 231, 234, 124, 159, 85, 177, 79, 182, 139, 182, 145, 255, 4, 18, 161, 134, 68, 55, 132, 247, 226, 156, 0, 169, 241, 20, 170, 100, 16, 163, 100, 28, 33, 248, 55, 52, 38, 202, 19, 141, 100, 208, 129, 8, 51, 105, 213, 132, 139, 242, 178, 142, 80, 37, 33, 125, 28, 120, 72, 145, 164, 50, 157, 32, 152, 122, 110, 220, 4, 107, 60, 56, 62, 184, 254, 60, 187, 42, 251, 49, 59, 137, 211, 77, 148, 216, 250, 37, 32, 236, 53, 238, 4, 127, 237, 76, 67, 118, 71, 148, 204, 63, 213, 86, 189, 220, 121, 20, 111, 149, 136, 35, 139, 237, 16, 167, 42, 242, 69, 231, 0, 197, 27, 105, 85, 147, 191, 25, 183, 2, 213, 101, 64, 240, 147, 62, 55, 195, 43, 247, 145, 20, 216, 169, 19, 239, 3, 33, 225, 90, 102, 42, 126, 87, 216, 238, 129, 233, 53, 253, 175, 108, 236, 231, 182, 158, 93, 137, 69, 127, 28])},
|
||||
{encoded: "ZbHW1DLqYmTKdm6ZWm2eKVmqtAPMy1BUwzxK7tFTxoFyNwnfoVX6xUEJFuw71jWEUcSWs44N1XfNmjV7MQDESYPYo3nUyDX1zb7tzueU9n6RSEms663Te4QMwexCk11c8KmwUr9BTFEp5ijaqtJ81wukCyNsvJrhy427bm5ZagX1gGjJaV2TjN9nFyCMJMU77khcmffEYx",
|
||||
decoded: new Uint8Array([89, 76, 198, 93, 14, 78, 7, 139, 226, 200, 36, 197, 163, 241, 70, 205, 173, 36, 222, 204, 213, 104, 239, 152, 39, 195, 244, 116, 58, 211, 187, 88, 22, 214, 69, 22, 115, 110, 74, 123, 213, 75, 29, 243, 248, 139, 146, 248, 26, 171, 249, 104, 26, 108, 149, 95, 67, 47, 23, 8, 255, 213, 67, 108, 83, 51, 17, 31, 37, 83, 180, 90, 46, 155, 211, 73, 129, 161, 113, 149, 242, 214, 152, 163, 114, 85, 108, 153, 159, 140, 235, 163, 50, 53, 77, 65, 67, 219, 20, 91, 223, 102, 124, 130, 52, 180, 76, 179, 40, 180, 50, 151, 219, 3, 93, 17, 247, 2, 234, 234, 188, 77, 35, 211, 250, 240, 30, 30, 73, 174, 95, 162, 223, 104, 60, 48, 232, 32, 240, 42, 189, 157, 82, 92, 228, 146, 241, 161])},
|
||||
{encoded: "7cT2cYZLNSz1PDnuZETST9Xa8FBJmqtdBnaMW6LxMbVPPfGwj11bvKFpmw3PAJrEHRcAcHpgkTeW49RdcyukrvAdXK73N9RwzirQmFR7eJ6sN7FMKxfCaMjpsGoqJkWHqoKpfPiWGPKuqsM9nVGonNGGthBvEWDnf4kadsWMCsCyKuDyWuJ7hpm1M52kEgxAm8pLsfFQHVwwzsW7nMoUbCq8LPXW5pvc8tqEH5fpR3UCCzJj2yzqh4TVdE4uHq8eqtFkQUw8ijDmK7zUJrASSWhgqQ1Jt6VbByPMMnU9iewmTTNCpaF798L4q1fpJPCYnrYmtJYC7DorZCrsZhyDAuAgAatz8HpWn3mVfdz8JRRcSD5pgcP214gpyzELjboYKsVFvZdXXyxFwNWoKEkogGNFmUGXUrggDGesYisbbQZBtDiBDskTk3RenqLadAbfWNwLQwAzn6BBSTZsSTJZTNystuakhLbpJzhVRst4FQ7qhyUNemg5KYvTcU3Ne59r6tzrEo1",
|
||||
decoded: new Uint8Array([35, 186, 226, 2, 6, 79, 157, 251, 225, 131, 98, 6, 198, 233, 222, 118, 169, 8, 129, 140, 240, 17, 51, 140, 182, 244, 54, 183, 208, 76, 198, 74, 111, 3, 138, 203, 99, 156, 102, 154, 172, 128, 115, 68, 121, 18, 239, 156, 15, 255, 174, 118, 25, 142, 201, 116, 162, 50, 21, 251, 182, 143, 244, 156, 105, 40, 147, 12, 124, 4, 102, 159, 176, 53, 214, 81, 46, 13, 52, 36, 2, 164, 221, 227, 201, 155, 236, 234, 194, 34, 17, 116, 167, 9, 37, 218, 253, 36, 101, 153, 106, 247, 105, 184, 69, 46, 14, 184, 87, 47, 23, 210, 28, 34, 106, 171, 107, 210, 21, 121, 44, 251, 129, 155, 32, 99, 124, 4, 27, 252, 121, 95, 28, 169, 231, 181, 192, 9, 134, 186, 251, 142, 175, 169, 71, 49, 73, 134, 16, 100, 120, 95, 60, 14, 147, 89, 233, 19, 163, 134, 15, 56, 214, 3, 183, 245, 105, 218, 5, 9, 82, 127, 173, 143, 160, 89, 28, 28, 114, 144, 105, 211, 101, 2, 220, 21, 126, 106, 185, 38, 194, 237, 27, 146, 229, 66, 177, 125, 50, 22, 79, 59, 132, 221, 241, 242, 194, 47, 138, 223, 234, 38, 222, 23, 20, 70, 79, 17, 212, 103, 210, 55, 77, 177, 98, 220, 152, 123, 151, 151, 93, 152, 249, 194, 159, 110, 163, 173, 26, 31, 53, 119, 115, 234, 4, 132, 112, 141, 197, 236, 0, 78, 166, 72, 165, 200, 50, 194, 229, 179, 4, 252, 192, 37, 167, 104, 88, 6, 249, 220, 60, 58, 155, 155, 14, 169, 228, 161, 208, 130, 59, 177, 132, 236, 254, 215, 205, 2, 45, 245, 36, 198, 34, 135, 247, 52, 217, 254, 162, 124, 151, 118, 182, 251, 79, 172, 74, 5, 154, 120, 217, 239, 153, 75, 86, 145, 234, 246, 34, 201, 49, 207, 103, 250, 240, 93, 110, 1, 232, 10, 180, 32, 33, 239, 177, 20, 248, 75, 76, 192, 180, 101, 210, 201, 151, 27, 71, 206, 140, 126, 72, 237, 233, 135, 90, 183, 189, 5, 205, 140, 30, 12, 64, 44, 210, 61, 19, 217, 78, 247, 136, 245, 161, 241, 67, 119, 21, 228, 220, 24])},
|
||||
{encoded: "KjaXDuaCNmidmiYkvo3MiuLJhCtinzQtMRr3X1UeJR4CA7wjqjxfQvrtEgvdDDqVMby7ob3coXBgUtySQroJgnuExLDSb2FJjHJhg9y6mzZQbezdJShjak9oUXbKwYUQwoQHLq3kApjzw93Q7nbYWWdMMPwYf1yUtDWCk1YYFJWmPUmBEcSnCko3FpsvoUq21PZRYqdoYVNTC8BwDA7k9GyFQ9XSQeL7d6bWfX3NwAZE68UaKx8tM9RjMNggJvY5crJH8eSgXH8Tvgme7CxzbFXJAfQyaQmsde2HZWwj7WUrx89GxV2vyXsijg5GMdWMrmXVeC1dXr18uYNm5R8TJGMjhKuH8rV6XBVLD4FxTgBa6EmE5AYt99GhQrzHRUtaZ4GEHzNW",
|
||||
decoded: new Uint8Array([103, 214, 9, 140, 192, 194, 108, 115, 195, 4, 4, 208, 41, 126, 240, 245, 55, 243, 228, 31, 98, 230, 47, 172, 119, 201, 176, 200, 190, 72, 231, 236, 218, 154, 153, 239, 7, 202, 23, 86, 252, 52, 155, 173, 47, 126, 153, 6, 235, 200, 212, 146, 164, 30, 69, 70, 218, 233, 119, 104, 237, 78, 18, 189, 6, 215, 161, 73, 63, 169, 157, 253, 32, 228, 27, 156, 188, 3, 215, 173, 87, 214, 142, 173, 239, 24, 143, 219, 94, 130, 131, 58, 113, 127, 154, 91, 248, 212, 227, 228, 232, 101, 154, 236, 125, 174, 97, 93, 153, 86, 108, 226, 38, 115, 148, 116, 170, 229, 103, 13, 121, 81, 157, 176, 74, 41, 98, 151, 172, 13, 58, 6, 37, 30, 58, 137, 1, 115, 28, 99, 23, 43, 61, 9, 128, 224, 201, 221, 73, 37, 237, 123, 156, 171, 135, 162, 3, 10, 173, 94, 35, 15, 186, 143, 190, 236, 48, 93, 187, 61, 101, 104, 97, 127, 250, 209, 234, 138, 4, 49, 181, 78, 118, 238, 4, 190, 54, 172, 180, 180, 223, 34, 151, 105, 169, 11, 100, 117, 39, 33, 214, 26, 184, 124, 217, 162, 87, 240, 192, 35, 32, 86, 72, 231, 163, 147, 188, 63, 134, 101, 62, 152, 27, 40, 217, 55, 157, 177, 245, 162, 53, 207, 27, 77, 116, 219, 127, 37, 6, 153, 247, 166, 30, 224, 213, 176, 226, 165, 252, 170, 204, 219, 133, 155, 94, 218, 103, 117, 46, 140, 70, 29, 97, 115, 30, 144, 21, 253, 208, 66, 121, 235, 76, 175, 189, 237, 44, 145, 215, 155, 250, 1, 59, 58, 39, 192, 83])},
|
||||
{encoded: "347hDAmJSjRFbm7rGfcZ38avhKBihp9LgNMP6UqvRu11BS2buMGamLRanvZqGZDyZgcSNc47wcjvc85SwpmsrKsUgotTQJ5UnbGwahnujaFv2Ur5REPAaBLSChfzRwrx2E4X2sruQrLHx7Prw8ZQAuhuD5bCc7mmH7UJcxVPmPMyLtUUYZc9GMx4F3MZHFUr4wkZzZdHB9Ys2mCi4h9pmE1sPfDtDr9yc2JXq4o51QjrurRMZsi5itqJAtAafDPUSUZtLkwq6tBXQ9diCLjStouFSKNEcQJmAWhmziJg3PNPNcs836u5zb47FdUskFAPFAzoBA7t4gNgTe6PzSsNYndbdt1JXZWzYgkMwJnbfVhg9NZMXC6eu6QKFbe1JAhPh8QxTmELbjxEngeACp3wxoWP61LnAmaimHUHWaoaXWdVC7QbyLX9bmPb64GmNMcDETHESNvvucS5vpFJbM58ZsArDA4wm67gDocZhWbLfXwYcBUMjyqFZRm2CAuRWnxkebXRQu5rE",
|
||||
decoded: new Uint8Array([145, 217, 226, 201, 30, 251, 22, 152, 86, 91, 227, 182, 224, 223, 130, 9, 44, 172, 141, 254, 54, 121, 27, 160, 177, 46, 178, 108, 92, 5, 122, 123, 136, 215, 212, 146, 37, 227, 87, 217, 153, 45, 208, 42, 43, 131, 115, 141, 110, 190, 149, 216, 210, 225, 36, 103, 144, 68, 23, 155, 247, 102, 201, 42, 14, 77, 100, 210, 34, 250, 234, 248, 98, 137, 200, 158, 224, 91, 60, 228, 6, 35, 176, 14, 138, 210, 155, 88, 69, 245, 183, 108, 92, 118, 45, 172, 159, 93, 226, 136, 184, 124, 64, 160, 55, 52, 242, 243, 121, 64, 0, 211, 55, 67, 46, 171, 202, 73, 86, 246, 129, 46, 172, 144, 96, 80, 191, 210, 165, 182, 141, 204, 165, 46, 123, 22, 94, 190, 142, 52, 117, 77, 169, 137, 160, 38, 162, 24, 75, 136, 17, 201, 87, 136, 69, 180, 61, 227, 48, 13, 76, 96, 38, 123, 205, 183, 108, 32, 223, 165, 103, 10, 245, 30, 116, 102, 72, 241, 40, 207, 188, 12, 5, 202, 90, 103, 75, 166, 113, 224, 114, 74, 115, 81, 163, 173, 1, 171, 180, 110, 147, 232, 105, 43, 102, 188, 70, 41, 149, 15, 73, 64, 119, 161, 93, 48, 188, 124, 83, 113, 217, 135, 47, 48, 120, 137, 87, 243, 221, 165, 202, 87, 55, 62, 19, 214, 132, 126, 245, 87, 29, 240, 236, 103, 53, 214, 105, 54, 33, 175, 41, 92, 224, 90, 218, 242, 191, 206, 144, 91, 54, 87, 44, 248, 162, 73, 115, 3, 67, 46, 142, 51, 94, 50, 47, 161, 125, 2, 104, 88, 75, 247, 143, 239, 96, 163, 247, 102, 221, 233, 222, 122, 221, 230, 189, 91, 223, 120, 184, 110, 91, 64, 184, 139, 77, 243, 253, 141, 224, 247, 6, 153, 191, 95, 40, 148, 145, 145, 130, 8, 21, 126, 98, 113, 98, 173, 104, 193, 210, 154, 219, 228, 196, 217, 124, 22, 32, 155, 155, 124, 1, 171, 71, 0, 204, 9, 36, 219, 93, 63, 243, 171, 81, 224, 37, 156, 232, 15, 81, 53, 1, 183, 107, 176, 243, 203, 82, 213, 59, 230, 193, 148, 73, 41, 99, 223, 77, 241, 215, 26, 199])},
|
||||
{encoded: "2CAzekfGJ3byRsvogJW9irtmpc9btzJnQZSozz5m4KSnok5d3f1BCKrBpwGW4o4V4z39myYz89RkLNPZTEoKxKcszZG9a4pQQ9PmuV1bim9Wyfv3fG5pcnmiwSe1211iV2ha7Ab37H7vFuZKneZ949aeUbKAkJeGVzcEmeiedM9E8ZxfA5MKhFWitR1LKokNHMKbNwfoNpnzqNhx5F9v2VXa7t2RWhhuWLJUFWYqzAhc8tPtWKh9qZ8JjswU6vQrwzzqqoJoTJ1HT1BM7MmBZ66qhBwNSUGMxfNR23Nve7zNKTNcZQg4zdMETcDSdciigEWo1a1sGiiPwzCdrx6UuVteNdACWfrXKMJuqeZWsKhhxXm2Gsp5fKDfGYiimiCWh1NdYSi1rHdeKtwNHbYd9itGNQnzsrjuptjAnjBnRmt4Pzw5Zrom8Y4kyqxWjYnYXrisTxxf4h5C87i5yHHFYafmozH3kG9CVVGJ5b2fLDk7GWAhGLRANeo2QcPqZT2RhdNZogZSokTKo6tJ9VNwi4c2pTVsuw7LcPACEoL1ZdWQ7s9GiY66fsQrvCYBhtEK1qXQU5WF4fosxbEAxL4Bc2wAAky8rNg75oippdxiZHCRT3d5xPM9g5t6WrERDt9xywh9SSC2szYABhTmPFRQzeH4hwUp5e6Y2PTF9WHTpMdfXE9V8qaRAMqiiMGwDBF6sNhynBFn8EHHKAzftSia2iQbCspmcf9TFYgoAJYoBy9uE2s2HAxmAfPy7f5jNtmFsMymJiwcZK21rVWCR2tVue5TpU5vN9DwrnYNRzoiqXGJsVJvWxqzN9NVgGiPb3Qdyused1WTKbNc6Jh3yUGJt34wzKrXEACMSXVcFbc8p6npoZmffXgLyhn7B9x8fbQSAhyjZx5cXfn2rmGAqmxaEAtu8YYbGVqQ4j3G67mxjLLVLzRA792T7JCFHGbEZhb8gVRCH79DgBR4c1x9aZWpCi3TLs91bpR67QHmQctAsmie1XVhmwzM9PRArwd4hW8AkxsytcvU2rwdtMvGv1Fq96fMc1C2WxVZqA2nnE8gYvRd3DEa9JykbGRQRCivgp9NA242M1F36Y69gLDYi9yC9yFDVw1wpke9Wu85dXm5cntccfooxM33rYcDzREBj1PJszW8QZBhhoduc2HV7d9WxoPdkC6ZiKg3rv6fnpRKPyBuw26KNg4WfMjs9q5Nv3XB3YLsTMNGTSBNvNDGsznKybgwjz",
|
||||
decoded: new Uint8Array([64, 97, 118, 134, 60, 51, 117, 34, 104, 53, 199, 217, 149, 104, 134, 216, 232, 235, 170, 222, 235, 248, 97, 184, 185, 101, 12, 212, 46, 27, 133, 49, 106, 93, 60, 111, 186, 98, 66, 156, 96, 61, 233, 215, 26, 118, 254, 194, 70, 62, 160, 181, 237, 80, 214, 85, 188, 4, 14, 222, 2, 79, 81, 7, 202, 50, 121, 31, 50, 179, 91, 92, 224, 206, 84, 21, 207, 128, 169, 196, 235, 199, 149, 133, 147, 163, 15, 192, 148, 179, 104, 157, 107, 185, 153, 246, 216, 164, 42, 167, 119, 161, 206, 160, 42, 159, 122, 252, 233, 108, 174, 225, 170, 182, 179, 166, 88, 129, 59, 161, 242, 61, 105, 231, 191, 8, 56, 75, 202, 170, 33, 167, 89, 95, 66, 149, 252, 100, 231, 110, 146, 162, 227, 28, 217, 33, 198, 11, 37, 76, 136, 6, 251, 32, 203, 33, 168, 223, 116, 197, 6, 253, 143, 113, 215, 173, 105, 201, 174, 95, 103, 104, 25, 207, 81, 145, 150, 204, 6, 225, 217, 245, 236, 201, 98, 218, 228, 198, 245, 167, 40, 123, 12, 201, 148, 175, 60, 225, 66, 218, 135, 71, 22, 161, 35, 255, 146, 200, 200, 78, 20, 245, 159, 247, 100, 13, 238, 246, 64, 219, 241, 28, 174, 160, 148, 208, 67, 99, 38, 89, 1, 95, 217, 22, 204, 114, 5, 228, 9, 85, 102, 29, 136, 58, 52, 15, 244, 177, 139, 8, 214, 91, 5, 48, 67, 125, 241, 146, 84, 70, 245, 35, 217, 105, 216, 180, 227, 131, 176, 16, 167, 202, 166, 17, 152, 64, 174, 38, 46, 25, 86, 42, 233, 62, 177, 138, 164, 111, 63, 127, 237, 214, 14, 82, 225, 254, 221, 63, 24, 25, 197, 46, 145, 149, 229, 110, 215, 58, 103, 155, 156, 138, 241, 161, 238, 138, 87, 168, 39, 45, 203, 82, 231, 226, 228, 219, 23, 235, 135, 102, 250, 129, 56, 157, 145, 157, 91, 231, 177, 3, 233, 179, 214, 24, 3, 74, 72, 2, 15, 251, 175, 137, 131, 205, 139, 211, 251, 235, 70, 110, 119, 141, 241, 252, 150, 71, 102, 39, 146, 249, 152, 97, 120, 97, 19, 40, 208, 134, 173, 12, 33, 16, 168, 125, 139, 122, 166, 103, 76, 130, 54, 153, 123, 213, 234, 186, 88, 35, 238, 119, 252, 222, 216, 204, 23, 23, 87, 50, 47, 157, 156, 45, 106, 28, 106, 140, 222, 96, 84, 70, 251, 33, 121, 216, 98, 53, 90, 171, 193, 104, 244, 196, 85, 193, 240, 101, 235, 193, 213, 37, 172, 82, 123, 240, 135, 224, 65, 73, 47, 106, 172, 116, 114, 162, 38, 241, 136, 102, 165, 209, 170, 87, 89, 165, 128, 43, 40, 170, 48, 114, 134, 21, 209, 209, 157, 108, 15, 73, 148, 132, 195, 179, 4, 31, 201, 2, 66, 111, 32, 194, 144, 37, 165, 85, 19, 195, 233, 47, 97, 112, 75, 143, 134, 169, 137, 248, 128, 118, 159, 39, 19, 214, 190, 90, 240, 64, 9, 72, 153, 5, 122, 6, 190, 79, 16, 237, 239, 152, 224, 81, 195, 221, 199, 147, 8, 178, 92, 98, 22, 137, 67, 37, 181, 150, 39, 108, 243, 18, 125, 212, 166, 126, 123, 40, 70, 50, 36, 184, 230, 207, 108, 6, 131, 160, 48, 228, 205, 62, 7, 219, 190, 202, 151, 212, 214, 7, 174, 253, 132, 27, 56, 1, 243, 42, 180, 166, 253, 173, 203, 240, 73, 69, 85, 148, 123, 104, 140, 63, 106, 75, 216, 221, 47, 33, 40, 205, 79, 90, 39, 149, 230, 71, 116, 238, 21, 174, 126, 99, 222, 211, 40, 83, 137, 13, 98, 21, 49, 117, 44, 255, 8, 96, 37, 215, 136, 136, 211, 237, 208, 129, 103, 200, 10, 85, 48, 42, 60, 26, 243, 104, 98, 125, 169, 200, 110, 61, 26, 49, 245, 73, 180, 58, 254, 163, 24, 10, 114, 103, 98, 171, 61, 60, 211, 212, 146, 109, 159, 169, 116, 171, 79, 127, 220, 0, 129, 108, 82, 181, 199, 244, 44, 32, 214, 17, 113, 240, 113, 33, 133, 117, 196, 97, 75, 178, 246, 152, 221, 70, 154, 184, 208, 66, 182, 67, 19, 61, 51, 210, 243, 120, 48, 226, 80, 45, 191, 71, 135, 81, 157, 170, 186, 0, 35, 168, 185, 207, 192, 217, 46, 153, 136, 77, 163, 235, 146, 125, 43, 14, 36, 29, 166, 21, 191, 188, 107, 227, 117, 47, 201, 107, 223, 156, 206, 198, 255, 174, 231, 109, 129, 38, 88, 64, 195, 120, 8, 93, 239, 124, 45, 104, 35, 183, 157, 9, 181, 11, 190, 115, 38, 43, 199, 172, 54, 255, 112, 158, 106, 61, 136, 167, 5, 8, 46, 47, 51, 16, 171, 83, 233, 121, 196, 165, 250, 186, 117, 221, 32, 20, 217, 144, 165, 86, 135, 19, 22, 196, 127, 57, 48, 222, 216, 151, 104, 79, 121, 82, 240, 18, 147, 178, 68, 224, 201, 241, 20, 75, 58, 153, 217, 146, 233, 214, 245, 62, 73, 40, 125, 230, 17, 179, 18, 98, 13, 236, 94, 173, 164, 115, 82, 68, 122, 14, 204, 33, 235, 81, 175, 47, 100, 61, 79, 63, 67, 116, 160, 141, 147, 3, 43, 38, 218, 67, 253, 168, 131, 106, 154, 55, 244, 160, 98, 188, 246, 16, 211, 143, 96, 36, 141])},
|
||||
{encoded: "LQGNYFw5MLtvtHizJkC1zbLx27Kkbk4GBvfs2ajAzyojMd4rH19GG8MwUGCnTxVTRHoSBdm1qNeC95CE9U7PidVH7Y19G7LzxWVwbY1NTi34NfXJaUW1vZgVC5knAEbzZ97HW5eTnbiakqXfZDtwK3q4HjZuBmXXgnx91BWRHWkDgV24g9mnnTmNsmBEWcDhJBcy4oYLCHrttQRrwLMtBWMUQZ4BaRH8mhtivJBv3HEVGr5D7Mi3uSYDjESRdzJMFW5bhq26qbnoRRwSCxU8QDTmFn1EuePa5PY881HeU1W2WK6LHjVjapmN9s1jzo9iFUR25cTqST2YtM5GyrNfK8GYk87pQtRhjzMfHPM9cNuGVpERmLpTXKs4kVW3gyDoRC2FNMKLv8BvHHE759zYNVaXdCPr1KWLS3hNL9ssqBmcyjaQ4Ycmgx8VC6h8mmR3Q71Fzk769MyEa5aatZSqeHw4x6crzRxDJF6H4ENMgYiRJji8fpSFxHw4qkHBKfYGzG8mqRJLdMhkfAotTGMY6yeePdnh5ep2e7SNTaVmbDAU88a3oqsCC326DcrMS1ThSiMnFKxgPVn9VhBfKf4GhtjHt1PqHPyzFQB1mm1LPSwXHv9Wd5cY7qiXkt1niyRgZZa7h3TwHPFJhHaqT8MqGgAoWeQq5b6vTR9WvbMHRHm3Jv66Ve2cjRupW89prvsFr639myJ4XzN4498JhJXjLEb9GKMBxuriuExZz97SyiJUvss8FMceVSRUw5pcCfX1bEymwUssMiCLjcLpTKrCV59y3ppwzhsmBK4QqWaCTQdm3nQhaeK2CW98msrKo9TfiTPWcXJr4b8baUcpGiAv2j8k2wcFh611TNYNZCHjZgDXGMcer7CQJJ8AUK9sSV5D4ruYBsW4zwgXJWfRXM7iQqoQfzf8Swap7HdT9hN9TBRVvxo5gctm3aM2LjoS7CULX4aEkUa3B76",
|
||||
decoded: new Uint8Array([91, 191, 244, 17, 7, 75, 47, 175, 8, 118, 195, 93, 48, 169, 253, 109, 208, 229, 60, 164, 48, 193, 194, 161, 40, 118, 153, 137, 200, 219, 121, 231, 136, 88, 101, 80, 87, 93, 90, 78, 80, 206, 61, 230, 253, 54, 103, 83, 234, 16, 207, 88, 155, 155, 193, 225, 75, 184, 77, 248, 230, 4, 192, 238, 22, 170, 4, 127, 52, 146, 27, 16, 46, 193, 56, 124, 5, 19, 120, 199, 130, 30, 108, 222, 10, 252, 26, 199, 199, 167, 219, 0, 240, 44, 173, 178, 230, 122, 136, 49, 162, 65, 61, 73, 14, 137, 142, 151, 69, 105, 56, 35, 226, 120, 158, 91, 98, 147, 174, 77, 197, 1, 227, 66, 71, 207, 228, 116, 181, 142, 198, 23, 80, 14, 107, 216, 169, 30, 152, 13, 227, 103, 142, 177, 40, 169, 5, 74, 164, 112, 27, 83, 248, 96, 199, 175, 247, 8, 209, 206, 86, 132, 96, 113, 130, 36, 196, 156, 14, 136, 141, 32, 35, 146, 233, 126, 15, 131, 28, 42, 232, 0, 23, 167, 242, 35, 24, 175, 79, 166, 151, 236, 184, 60, 174, 131, 215, 66, 205, 217, 172, 19, 17, 224, 163, 166, 241, 248, 252, 159, 108, 102, 238, 155, 82, 4, 115, 252, 2, 108, 58, 165, 138, 20, 60, 83, 155, 8, 253, 68, 210, 121, 225, 127, 206, 132, 189, 95, 181, 55, 152, 226, 64, 246, 224, 179, 189, 220, 92, 230, 14, 163, 123, 120, 221, 228, 90, 30, 64, 102, 249, 176, 177, 211, 27, 66, 99, 59, 196, 6, 24, 15, 89, 0, 162, 228, 220, 221, 21, 134, 246, 132, 151, 46, 5, 70, 18, 66, 1, 62, 202, 246, 253, 180, 44, 154, 73, 109, 237, 175, 253, 218, 154, 35, 101, 119, 239, 176, 51, 221, 127, 118, 38, 223, 49, 79, 63, 173, 85, 175, 174, 72, 239, 40, 78, 40, 52, 222, 39, 5, 229, 170, 64, 213, 5, 234, 122, 148, 126, 94, 18, 231, 63, 45, 180, 7, 87, 85, 39, 119, 202, 8, 206, 193, 223, 115, 127, 7, 236, 134, 101, 155, 20, 164, 161, 173, 110, 176, 10, 59, 31, 39, 49, 117, 141, 216, 216, 213, 3, 87, 232, 39, 189, 179, 181, 9, 100, 107, 32, 64, 104, 194, 43, 253, 118, 230, 75, 73, 137, 195, 9, 234, 199, 124, 61, 251, 161, 64, 199, 242, 74, 106, 105, 155, 83, 207, 140, 224, 33, 28, 209, 121, 9, 147, 12, 44, 118, 2, 113, 5, 181, 8, 216, 219, 99, 103, 240, 160, 100, 237, 184, 65, 97, 116, 244, 130, 142, 239, 13, 248, 34, 2, 224, 129, 216, 179, 97, 233, 141, 254, 223, 71, 151, 192, 82, 234, 175, 61, 14, 230, 196, 124, 193, 63, 165, 193, 122, 174, 17, 38, 219, 181, 29, 100, 173, 105, 36, 109, 225, 100, 132, 53, 49, 209, 112, 92, 238, 96, 104, 224, 47, 40, 226, 114, 237, 152, 21, 102, 106, 100, 79, 198, 158, 184, 123, 234, 182, 78, 34, 194, 188, 250, 120, 77, 73, 112, 190, 76, 50, 0, 192, 2, 198, 121, 179, 161, 152, 244, 104, 227, 200, 176, 61, 183, 181, 108, 32, 217, 62, 203, 204, 94, 249, 251, 223, 210, 155, 43, 232, 162, 41, 146, 11, 158, 68, 221, 237, 165, 23, 203, 107, 53, 138, 91, 90, 113, 204, 64, 195, 60, 138, 133, 178, 76, 84, 250, 77, 119, 212, 91, 220, 248, 136, 131, 208, 50, 208, 72, 176, 160, 56, 45, 90, 188, 237, 199, 32, 136, 202, 191, 2, 114, 174, 18, 47, 187, 81, 110, 58, 110, 146, 212, 247, 143, 150, 245, 99, 202, 108, 216, 160, 240, 23, 242, 127, 146, 74, 112, 129, 5, 6, 67, 88, 86, 169, 248, 93, 65, 157, 45, 12, 23, 252, 186, 69, 35, 29, 172, 19, 41, 199, 204, 193, 182, 58, 244, 61, 17, 10, 83, 97, 144, 116, 86, 31, 136, 28, 210, 151, 174, 0, 120, 25, 63, 218, 152, 71, 80, 76, 125, 2, 108, 244, 46, 43, 225, 32, 154, 98, 12, 79, 79, 202, 173, 203, 174, 6, 55, 44, 116, 73])},
|
||||
{encoded: "khUs8oEeTJZmNdd2tU1xrLTBH3jTabPK8mDmCW8fEDLNiaBxfK6673eTPVxHA9Z7hmArTdB3PzmdEXaEJrZqXTTFegqERgHNrzd47u1se3H85aNkSEF9XQ2oSYjpcoPFFQuZQLrYeVC1GxL9Kwqv9LxF2QnX7E4uigwxpHoxKHyqZEgMsbKxxfb9fP2gFf3T1coALgEnZBDcsKo2zs1j9fmmqiCoApDcGJKGw6d9iVTfRAB3VKxApW9XQdusgm6JegWDqah93M6kDqyAVdJ25n6i9pENXe4JmgfDcpwj1yiwCfEzsdzYd3EN8VtvNQqpYyr5moZXPBxJ2qV4gsMEiou3P25kvz2GeVbEgFjGw4ieTFfgJvqRnytGQ4gVCcsdFx1jWQL7S8RFPNEb6qV38GoKke1KWcvqBsUE8LQ8yAM4NansjF767ECDx19P4QUmL25jfUUFHUgvGpSWUJbtuR6csTfHoiDMnzpNGA8DrKyUb81qBMxdQUhLrvqhhBz6fgVTFR7iDMUdqKekRt2BbzWmRTmGvsyMi5n7LjjaKWuaDPQHbCKzRce2oW47Nvkj9MTsnE8TbgwhN5wwD58gje7joSLfQCAgr431LX5RcKEnUNzgf5JQauNNZHaLmztQPs3WeK1V2bxfn3obxspeVZ6gT95sjCLRqz32wchhppGQxtnbpndkg8nGjsCdmAdECHrUVomzvxXqFKktC3AgWniVpD5p3LEEfrKnfetAniWGQkfYCfUamYiL9LymR5wYc7L6e1EdivYAp3gdUstVB86U13B5vXvqXTxY5BpC7FvjjLzAuSpeoVtwWmpK5j7xisjjhJ68UCpvBn57WrrKV1YwV4Z1D6Le4MFZKEEYFQPv5fFofWegrzaFax6rRPu8gndrJnSTZ2rfk8Vy3a4xt9ALAx1LNHC9RiKiuAXwY3wcDJ2kJ",
|
||||
decoded: new Uint8Array([166, 251, 130, 31, 73, 232, 113, 147, 207, 83, 157, 31, 29, 218, 252, 66, 250, 84, 151, 81, 155, 7, 178, 80, 161, 226, 252, 52, 139, 119, 82, 43, 232, 65, 241, 235, 145, 114, 193, 1, 250, 235, 138, 104, 60, 194, 162, 230, 243, 225, 128, 91, 27, 63, 90, 132, 109, 109, 64, 41, 198, 127, 149, 112, 17, 200, 168, 199, 124, 151, 39, 134, 207, 7, 102, 40, 13, 4, 167, 1, 74, 232, 233, 69, 172, 157, 144, 155, 164, 66, 179, 162, 114, 22, 33, 81, 195, 196, 11, 110, 57, 79, 14, 37, 165, 117, 215, 2, 47, 122, 221, 30, 144, 47, 37, 111, 179, 245, 118, 63, 175, 236, 160, 74, 119, 214, 216, 148, 125, 90, 5, 26, 201, 230, 152, 41, 6, 3, 144, 135, 135, 74, 243, 1, 129, 4, 93, 17, 24, 168, 222, 240, 235, 110, 78, 69, 48, 209, 118, 215, 19, 92, 67, 15, 226, 176, 254, 47, 255, 168, 45, 250, 239, 78, 17, 45, 13, 126, 77, 49, 252, 240, 69, 58, 129, 29, 137, 176, 15, 123, 177, 61, 30, 249, 88, 17, 123, 185, 253, 18, 229, 58, 118, 17, 120, 129, 10, 227, 91, 194, 138, 37, 161, 30, 103, 26, 175, 191, 207, 245, 224, 44, 94, 98, 0, 208, 210, 247, 52, 161, 179, 171, 124, 115, 129, 107, 39, 35, 46, 111, 142, 196, 223, 240, 157, 2, 163, 167, 104, 60, 143, 252, 200, 187, 208, 25, 222, 49, 31, 193, 241, 27, 215, 139, 228, 82, 178, 247, 3, 247, 179, 138, 33, 160, 7, 192, 116, 241, 215, 39, 28, 159, 56, 127, 114, 55, 224, 207, 235, 195, 81, 97, 235, 170, 255, 19, 75, 114, 246, 230, 92, 25, 0, 174, 203, 200, 61, 186, 159, 86, 64, 203, 55, 182, 255, 30, 9, 145, 125, 229, 118, 116, 199, 46, 11, 86, 17, 43, 14, 101, 179, 200, 199, 99, 162, 217, 186, 119, 175, 45, 93, 191, 10, 139, 207, 120, 104, 49, 79, 228, 222, 71, 108, 48, 5, 12, 117, 46, 165, 137, 51, 67, 97, 36, 223, 55, 186, 218, 152, 122, 156, 135, 189, 98, 27, 214, 148, 164, 124, 148, 74, 134, 202, 244, 81, 28, 240, 151, 176, 89, 165, 41, 103, 242, 249, 120, 127, 1, 63, 155, 90, 96, 90, 232, 15, 160, 226, 27, 103, 25, 177, 234, 184, 242, 6, 3, 153, 230, 187, 247, 87, 216, 236, 68, 138, 220, 37, 210, 13, 158, 154, 4, 224, 238, 39, 250, 150, 20, 188, 183, 31, 48, 78, 228, 29, 185, 138, 62, 133, 119, 170, 131, 37, 5, 224, 239, 102, 152, 53, 96, 121, 12, 214, 47, 72, 50, 25, 24, 228, 119, 42, 131, 204, 72, 115, 100, 72, 46, 229, 250, 210, 191, 19, 53, 128, 164, 106, 108, 194, 39, 49, 169, 82, 94, 23, 251, 220, 188, 70, 47, 247, 28, 51, 240, 51, 70, 78, 194, 117, 222, 1, 169, 90, 46, 122, 119, 44, 119, 163, 152, 103, 129, 6, 229, 46, 204, 56, 205, 140, 76, 34, 31, 8, 136, 100, 240, 20, 58, 210, 64, 54, 202, 195, 96, 103, 128, 22, 113, 160, 61, 254, 144, 140, 143, 210, 198, 55, 94, 224, 194, 82, 82, 197, 28, 9, 17, 136, 144, 160, 6, 35, 158, 52, 166, 185, 118, 134, 27, 169, 140, 27, 187, 122, 226, 52, 131, 30, 207, 101, 49, 30, 97, 80, 125, 140, 44, 132, 180, 141, 66, 29, 244, 90, 212, 150, 166, 153, 241, 249, 111, 144, 8, 63, 96, 72, 33, 194, 87, 136, 55, 241, 255, 138, 214, 67, 59, 146, 62, 77, 188, 251, 79, 12, 154, 199, 99, 251, 112, 198, 64, 76, 230, 65, 127, 162, 225, 46, 30, 91, 27, 72, 5, 179, 151, 173, 19, 160, 177, 196, 203, 190, 163, 82, 136, 146, 90, 216, 6, 226, 23, 92, 213, 18, 170, 55, 30, 61, 119, 231, 123, 123, 193, 21, 252, 188, 20, 6, 232, 177, 114, 70, 187])},
|
||||
{encoded: "8uw89RswoHa3Jct8g1jrdyYEfZBc6hGwcqAxFp5ZbR9VmzZxV1Viy2RLBmCYp9pbhxg91e9zxkT6h4AUcoLFQTW3UNfh2RZwnWERQykxiYhNNjQuRrcuqC49QyhAGsbHnB7jpC8qMgU1UGX1xumVoc3xDvGmn59oCj6ExhmdGsMDVwU3Cj36dHZQXyUHGC1peeCchVzAkbNc7EnFS343ZLoxarmSW5ushM2vP1K715tdEaXaTxpJYb2VhBf6o9CcJZbhUPzexB7LjvxZH33rTP8S3eqpJALbA83y8xsDW6DZ4XbwLfsDxTLP3cWz4UcRBaS2rfSbk82WiowkbNYAaHHgXUQKPrsHVi1ZHMBp8wich9jRJe7cXULDAHabY3KTryxVbMKfcNBsaf8MKFh6uyiBDGdFAgy5itr8xVZMroTxorNtUJ12He8LiU1YemxELSr5RL8UV7cVdVxujtHKnRHudpfu6ULCX8uSzrsZ1zYYoSf2DPmKU3s16XmZ5MVacKhtdKBADLUCB7VGtvN5surpfFtvcq1rFEv5QqMM9CMp199voAj5TECXdTmAv5XyL587ERTKJLRgkNrYmfSmY6Lsq9UBoKm11S5HP4Hgp2iNmfHstsij8xEwBraZ2tUxwyMsqzQVGDa2kvmRoLontomDCnpKb9ggE9L2UCf4PCs2iCGr9uVrGVCWodUk1161F1o9HD9B539RPpnLc2ZC6bDdnQGb1S9q6qTvx6DEVTCDUxBDnsWYocEYfsuPF8GgszqeEhsFeEH48HnrSESVP2gDL8oQEGNXD7qPeWmJhdCXvkH88CYFkoP1DmbDLmaeBhoSkNec6bRHuqoBTpazocLnhE92MCSLQPDKctAVEkQDqofBcLn75Q8SvSSZ",
|
||||
decoded: new Uint8Array([87, 35, 67, 92, 185, 37, 198, 39, 2, 85, 117, 35, 80, 244, 101, 219, 224, 83, 243, 2, 204, 61, 95, 70, 25, 40, 101, 67, 248, 126, 227, 186, 62, 13, 64, 16, 27, 200, 9, 253, 153, 231, 172, 72, 211, 46, 99, 124, 252, 48, 18, 105, 42, 2, 84, 81, 13, 175, 73, 48, 174, 23, 245, 84, 208, 116, 255, 17, 76, 17, 179, 174, 63, 213, 234, 33, 194, 100, 1, 254, 175, 70, 255, 5, 196, 112, 22, 184, 207, 71, 168, 199, 66, 241, 205, 10, 243, 154, 124, 112, 209, 249, 212, 20, 71, 190, 50, 166, 221, 0, 215, 151, 91, 78, 3, 161, 206, 197, 187, 88, 5, 178, 123, 49, 132, 58, 182, 183, 243, 225, 95, 244, 135, 105, 28, 29, 178, 185, 105, 75, 13, 247, 222, 46, 30, 102, 213, 187, 89, 86, 155, 33, 112, 205, 23, 163, 246, 23, 31, 190, 106, 80, 45, 208, 126, 154, 199, 226, 179, 59, 54, 250, 124, 143, 160, 96, 201, 210, 14, 242, 150, 205, 138, 86, 103, 125, 58, 173, 52, 183, 165, 255, 83, 102, 67, 41, 218, 242, 1, 128, 249, 144, 3, 248, 0, 164, 137, 64, 154, 16, 92, 58, 75, 249, 74, 94, 182, 206, 132, 230, 103, 205, 203, 49, 179, 90, 49, 41, 11, 171, 255, 158, 127, 151, 136, 230, 67, 86, 176, 176, 86, 86, 213, 242, 77, 176, 195, 113, 109, 125, 42, 66, 122, 210, 213, 140, 54, 137, 138, 104, 9, 177, 13, 111, 253, 56, 67, 43, 253, 228, 91, 30, 174, 251, 27, 21, 19, 20, 144, 246, 212, 128, 8, 68, 250, 37, 144, 197, 176, 117, 202, 222, 121, 113, 52, 136, 171, 119, 42, 47, 81, 179, 45, 115, 0, 148, 65, 111, 210, 12, 70, 99, 227, 22, 55, 186, 40, 1, 83, 83, 114, 185, 44, 110, 213, 18, 213, 97, 210, 13, 50, 82, 23, 236, 50, 151, 97, 87, 62, 39, 182, 42, 204, 249, 139, 218, 131, 224, 2, 230, 184, 193, 35, 72, 182, 200, 214, 90, 28, 45, 194, 151, 155, 57, 38, 181, 25, 40, 124, 165, 143, 33, 189, 81, 90, 253, 189, 84, 7, 59, 47, 199, 253, 56, 182, 89, 210, 140, 118, 20, 55, 233, 130, 254, 56, 172, 40, 114, 10, 47, 185, 72, 58, 22, 236, 134, 91, 150, 178, 75, 127, 240, 214, 231, 105, 129, 32, 57, 10, 208, 91, 79, 47, 199, 248, 30, 47, 63, 209, 158, 110, 221, 178, 214, 136, 121, 9, 20, 39, 9, 31, 136, 26, 153, 12, 2, 114, 167, 197, 73, 232, 109, 145, 121, 101, 3, 190, 33, 235, 200, 239, 62, 43, 139, 163, 16, 250, 76, 192, 192, 60, 90, 141, 191, 3, 132, 26, 62, 160, 219, 88, 73, 138, 238, 216, 107, 80, 119, 125, 248, 130, 23, 38, 193, 148, 42, 76, 248, 62, 93, 16, 237, 101, 169, 6, 248, 241, 68, 189, 211, 12, 47, 229, 109, 220, 145, 138, 51, 240, 239, 131, 201, 69, 121, 110, 16, 133, 37, 229, 116, 119, 4, 61, 12, 139, 64, 34, 171, 191, 28, 108, 57, 84, 124, 129, 52, 240, 108, 23, 53, 205, 206, 160, 138, 155, 169, 42, 217, 39, 225, 188, 200, 90, 175, 64, 84, 62, 34, 228, 94, 31, 175, 197, 56, 41, 71, 198, 148, 35, 140, 238, 47, 225, 173, 32, 72, 234, 159, 48, 24, 4, 3, 162, 144, 137, 231, 129, 208, 155, 224, 129, 33, 238, 119, 56, 25, 152, 181, 88, 98, 70, 133, 34, 101, 114, 65, 7, 65, 241, 47, 2, 239, 56, 194, 235, 251, 74, 169, 244, 66, 167, 160, 20, 145, 211, 229, 106, 105, 115, 177, 171, 91, 98, 173, 86, 1, 6, 154, 80, 51, 181, 76, 70])},
|
||||
{encoded: "Rqj31r35D8sMaNf7Jf4FgRVmMzZV8Pcq5xZJxvZ5vwKUSNo1PeP5EuJ2LDs1JTVJvZMqBFn2nqBNxibh77Var62fNvusM6PP5G256LWwYhbcLQq2CPA8h4EzUZvdwmUMrdxVKcvJUQqA8yNcqiDduwczJ373pepiKX3YR1qGZ7ogp5fdLNBCN64Bppywzws2HvkdTDggMsaX5wHSWFCzMnkRgVu8TaX6icuEuXHQYZEuLucTokxVcTdUtELsWUoaspazpWFyTbPk9KB8DWG5YfMsisjYhwayGeYNY8Wcs6uwCGL349RUL5gVPnieWVC6bZifncrspsPfXaiixZY6jpaWANiz2UaBtPaZDGDH9U4mtWUk7jyZC6RRaHdXrwPnbdFhxvUfx2gJXVQaXZaJWuSzjrg6wsePPdh7SGYKUhyRNhUg91GCny8xMZzWiBdXVgtLAn4NK6KdhnyB7MqvzjpfoRGpVGVLRAeT6q1gm1g8BwwDBTZaF45LREggYWMKTouSqreX94yrGyJtZxKyiToT23ddqcRUqDVSB64BfuHAPhtH8LCtDdri5bZ",
|
||||
decoded: new Uint8Array([205, 156, 27, 254, 158, 35, 116, 207, 41, 70, 11, 209, 181, 111, 144, 105, 197, 167, 242, 132, 139, 60, 137, 38, 120, 14, 37, 254, 213, 76, 224, 216, 188, 7, 141, 164, 197, 163, 211, 139, 104, 142, 183, 192, 140, 68, 105, 46, 121, 108, 40, 4, 7, 144, 91, 39, 154, 83, 173, 34, 118, 147, 52, 143, 75, 146, 88, 238, 142, 255, 233, 50, 13, 184, 197, 119, 12, 7, 45, 99, 255, 16, 44, 220, 41, 143, 37, 252, 117, 20, 58, 33, 204, 202, 205, 40, 223, 239, 238, 198, 22, 188, 70, 154, 128, 70, 183, 161, 223, 105, 137, 186, 157, 129, 119, 42, 117, 19, 157, 94, 80, 110, 253, 114, 176, 131, 184, 122, 105, 107, 110, 118, 228, 84, 48, 12, 82, 222, 37, 108, 234, 154, 222, 76, 86, 92, 170, 45, 127, 168, 67, 232, 45, 49, 56, 188, 16, 184, 124, 67, 168, 171, 6, 238, 216, 140, 70, 25, 132, 64, 157, 56, 27, 71, 216, 46, 110, 186, 156, 233, 110, 93, 242, 140, 197, 149, 136, 29, 97, 162, 15, 152, 165, 42, 25, 179, 73, 165, 118, 87, 100, 213, 40, 6, 202, 243, 179, 179, 131, 67, 115, 9, 70, 15, 160, 178, 85, 177, 83, 59, 32, 35, 226, 178, 217, 67, 2, 83, 166, 224, 33, 176, 10, 236, 77, 222, 223, 149, 197, 237, 179, 228, 60, 112, 101, 52, 77, 215, 60, 43, 152, 172, 225, 57, 148, 62, 227, 210, 165, 29, 181, 95, 58, 99, 139, 201, 134, 35, 221, 104, 37, 3, 82, 16, 210, 194, 206, 9, 243, 204, 224, 32, 176, 224, 188, 36, 48, 208, 95, 122, 189, 99, 16, 84, 165, 67, 240, 55, 237, 153, 49, 92, 12, 44, 55, 108, 78, 142, 110, 243, 121, 9, 178, 141, 84, 170, 46, 30, 39, 228, 46, 87, 200, 211, 133, 157, 227, 74, 164, 139, 54, 73, 252, 240, 177, 245, 222, 11, 225, 160, 146, 134, 114, 172, 247, 224, 253, 249, 53, 6, 132, 205, 72, 89, 180, 152, 131, 119, 100, 107, 254, 147, 34, 132, 25, 190, 253, 13, 168, 166, 95, 91, 233, 67, 209, 137, 189, 8, 251, 246, 129, 130, 98, 190, 165, 171, 78, 5, 120, 121, 62, 97, 173, 126, 6, 2, 17, 207, 154, 101, 15, 20, 155, 97, 100, 241, 141, 43, 190, 196, 78, 85, 159, 246, 67, 233, 222, 220])},
|
||||
{encoded: "jxqaVX7r9dgXKAsKYYFSrPH7z6QXTNdVeXpb2QhKnsB76cTZ3G3AV9PZKdSvusqVxfQd5RsSZXGGpj5yKEWaT9Ti86wNpqaJUvcotn9SfnrVK1tiNkQx6FhwNvisuiGBWh7DX8s7Bq2Xz2FeWnandMTeHMeJnLVyNPYchoXf2s3GxWEM5YrB6KN2ytbL5W8zeXG3ucwBznWoo8yAT3zchoK7g",
|
||||
decoded: new Uint8Array([107, 141, 166, 99, 49, 63, 138, 34, 212, 252, 77, 103, 15, 91, 3, 184, 135, 246, 38, 120, 210, 234, 98, 23, 37, 136, 105, 103, 106, 240, 183, 116, 64, 235, 13, 204, 81, 124, 28, 7, 205, 87, 51, 81, 205, 185, 98, 23, 133, 97, 103, 243, 91, 64, 114, 125, 8, 158, 243, 250, 157, 89, 197, 231, 10, 229, 219, 176, 6, 135, 62, 210, 84, 233, 49, 168, 216, 152, 184, 108, 243, 161, 154, 0, 16, 231, 81, 20, 120, 232, 226, 10, 88, 173, 57, 150, 16, 141, 195, 60, 154, 212, 179, 53, 228, 206, 131, 156, 111, 100, 215, 128, 142, 91, 14, 249, 56, 229, 231, 139, 11, 105, 173, 199, 177, 207, 194, 124, 52, 231, 237, 207, 19, 5, 22, 159, 154, 45, 219, 63, 183, 228, 128, 129, 62, 165, 127, 238, 109, 79, 125, 41, 242, 102, 157, 17, 114, 21, 219])},
|
||||
{encoded: "QmpnHUS2nnt77Utphqta7QR5wHbA3iWMABD6tY5K1hosKjR1mQwpog5R1VmWgpK4q8sDmb3y8MZrrQDcojtLJZCYP6rz4rHhHBedAvPDJwEN1KLX2VBTuvB2DNAFSVEpJajEdM8YygVEMpnKryzAEcuiCmG6mwy7wrNgQ996zr3jFq3H21x4CnJMJSkqkdUJwGPSNcnoGGY64M4L3jgnb18R8HgaVmJPk41fxinLaRxiEy1Rp1Uaf9dLxHW6Fm2ToVJESboWVATUFnC4TJPYyPYAhx3B3kM6BZyum1rrDu1dr6sR5tGRt8DNpxNGV4vDiGsQC3x9QS9uDWwNWCtiyGL7u4AdrBSSvFjGU7mHiBnh4PT2NYWAB9Qg7vxVzQ3FanFhSPYegE1wNcjFKxezAdjAt5ETL6CJrqwncQt8pHKfjQZeKCtKMSMhGcoxtNUQsGUcGmmvZkVH7CsGoes7pbi4MuCQWJB4aukeGEpVuqpT94rivvo1wb38BrWGQsBr6cMqs2rveG1BfjVdbyNgN6pux8guKC6rSuGy5QMBWD6ADKAyMyFLbotNYvkcLDcCXdBLnYyXBKjdHyu4qjx6zScTRMwr85WRqXqVE4xxrqGbcrdRLotUEzePp7zk7KdchnahumfancijdQJRVndELZvL9EjCUXDkjhnnb1ZNGq2JArfw3qPurcoYGkQmoRdEruo4GAjCz3TNH6UQMvZ5ujf5q863y8b6DWFassrTVoaSA1Ltek9KVBaiNbSYyNXcXj5pz5NtHo9hVAJNsRV1m19BWuNPpq8XXob89a8sK4UcT5JDvcgXwpXt67CjD2btEpQ2ZYYSRhMvTCa8vwWCDK5GHAv9S3pt7TtceZLnJNnUFcsTpKwdbz9pGvFKU4B831FYni7M3c6ScaPgCRfcMUZoMkds3cUu1g1rr9rH2NaFujXUXH1NiNsEwKmXxQAxWsoQmEhKG6utd8ZiiipVmuFeoUVSoY4iDgjGXN6rH7JLPJFh8tagydjSTasvZmsmdSJksYfQyYH3VdqhJunwRWvFDu1LUcvikjoQ4tR5H4eqBTyEHoJKX4Y4zWzkdArb227HLBSftWNDVJLwEmpi7viuj3gdRvuHiC84SDxaniY8G9fYjSU",
|
||||
decoded: new Uint8Array([123, 243, 47, 205, 79, 113, 161, 142, 240, 146, 146, 99, 109, 207, 206, 185, 187, 122, 241, 201, 156, 163, 178, 74, 52, 253, 210, 57, 21, 37, 106, 67, 16, 169, 87, 212, 96, 252, 61, 194, 71, 99, 74, 168, 251, 100, 198, 140, 210, 192, 155, 48, 38, 119, 81, 192, 242, 25, 112, 178, 224, 200, 35, 150, 159, 190, 20, 75, 103, 174, 166, 238, 152, 18, 58, 213, 102, 224, 167, 111, 216, 213, 171, 158, 154, 213, 43, 173, 149, 44, 0, 191, 3, 254, 182, 254, 197, 6, 239, 108, 56, 7, 244, 59, 236, 26, 11, 113, 212, 206, 75, 186, 68, 153, 78, 128, 162, 218, 157, 211, 5, 122, 132, 93, 243, 212, 113, 166, 108, 170, 228, 84, 217, 156, 58, 179, 8, 44, 11, 138, 216, 249, 148, 55, 79, 233, 86, 77, 253, 13, 32, 10, 203, 185, 55, 177, 83, 61, 184, 101, 97, 234, 2, 94, 82, 116, 10, 150, 226, 239, 25, 219, 109, 171, 133, 77, 215, 146, 66, 200, 153, 184, 183, 73, 72, 50, 186, 175, 182, 158, 37, 210, 242, 155, 95, 183, 60, 244, 229, 43, 115, 238, 198, 81, 61, 65, 104, 109, 36, 103, 87, 18, 192, 110, 44, 250, 221, 71, 70, 55, 120, 210, 59, 232, 49, 105, 237, 33, 167, 83, 6, 48, 183, 213, 10, 207, 159, 68, 204, 14, 207, 217, 28, 196, 239, 91, 188, 66, 131, 169, 33, 141, 26, 204, 114, 242, 191, 26, 118, 81, 243, 171, 173, 222, 16, 69, 132, 61, 40, 71, 36, 222, 145, 27, 151, 54, 221, 46, 94, 9, 94, 87, 240, 68, 20, 213, 232, 160, 195, 10, 206, 16, 0, 124, 26, 225, 126, 212, 187, 226, 95, 30, 33, 79, 253, 30, 187, 241, 44, 107, 15, 56, 46, 106, 16, 161, 255, 8, 82, 82, 110, 44, 122, 61, 41, 228, 154, 222, 175, 79, 232, 113, 188, 69, 190, 204, 88, 9, 13, 75, 50, 207, 131, 213, 150, 216, 191, 141, 20, 249, 167, 111, 219, 38, 180, 221, 59, 157, 123, 27, 183, 20, 32, 22, 175, 213, 41, 65, 129, 250, 127, 32, 182, 151, 194, 145, 136, 116, 44, 51, 184, 5, 175, 147, 105, 171, 203, 174, 142, 223, 184, 7, 249, 48, 224, 126, 191, 5, 236, 76, 167, 170, 179, 104, 172, 111, 62, 203, 14, 243, 134, 152, 236, 70, 6, 160, 140, 7, 206, 9, 177, 56, 254, 251, 243, 180, 242, 226, 86, 142, 176, 255, 152, 143, 71, 63, 106, 150, 245, 16, 124, 122, 214, 164, 7, 63, 37, 104, 124, 53, 234, 228, 197, 242, 218, 146, 79, 137, 162, 102, 38, 244, 79, 246, 152, 97, 59, 33, 50, 16, 200, 135, 90, 136, 233, 141, 59, 103, 101, 162, 33, 55, 35, 73, 22, 231, 42, 39, 246, 212, 228, 156, 235, 18, 251, 111, 143, 67, 138, 38, 219, 234, 31, 167, 1, 93, 23, 151, 167, 57, 200, 232, 236, 238, 171, 40, 165, 242, 8, 213, 34, 111, 78, 126, 238, 22, 17, 60, 213, 114, 134, 62, 117, 224, 123, 213, 52, 33, 121, 33, 172, 178, 157, 166, 113, 233, 12, 11, 69, 245, 216, 159, 25, 216, 157, 105, 232, 214, 116, 87, 208, 86, 91, 215, 231, 15, 55, 114, 184, 203, 57, 85, 227, 150, 222, 243, 114, 177, 12, 43, 127, 141, 187, 81, 109, 242, 174, 22, 219, 102, 19, 30, 204, 106, 124, 112, 57, 241, 245, 247, 175, 155, 250, 118, 148, 102, 233, 64, 181, 145, 230, 200, 56, 219, 159, 186, 237, 191, 24, 115, 128, 209, 49, 173, 132, 165, 79, 146, 68, 119, 43, 125, 134, 71, 88, 39, 78, 231, 5, 142, 158, 72, 242, 41, 224, 26, 40, 45, 44, 54, 201, 105, 224, 50, 125, 245, 46, 111, 5, 14, 235, 71, 219, 90, 39, 37, 93, 199, 213, 0, 89, 66, 1, 181, 97, 220, 138, 119, 71, 89, 12, 197, 158, 71, 45, 63, 150, 140, 41, 89, 172, 216, 48, 31, 165, 18, 19, 30, 169, 194, 128, 95, 12, 3, 74, 227, 251, 131, 196, 215, 210, 70, 159, 122, 243, 234, 171, 185, 47, 173, 193, 117, 201, 127, 147, 236, 151, 91, 201, 75, 162, 228, 175, 224, 222, 246, 35, 3, 64, 156, 178, 217, 108, 190, 209, 67, 155, 99, 152, 54, 243, 49, 107, 150, 111, 60, 7, 228, 14, 65, 193, 91, 115, 88, 48, 131, 124, 107, 221, 246, 210, 253, 231, 42, 160, 6, 63, 251, 191, 126, 195, 53, 198, 240, 78, 112, 144, 164, 82, 37, 134, 196, 56, 135, 102, 43, 17, 202, 138, 219, 154, 254, 50, 203, 92, 248, 221, 197, 57, 82, 202, 72, 176, 205, 31, 59, 134, 62, 203, 147, 231, 25, 160, 128, 87, 152, 233, 142, 200, 122, 182, 20, 114, 37])},
|
||||
{encoded: "H8iQxFgcAv3DWm9yX9FDYVnh5YFjXyB18LzfyYcx7YPwBTXzmrENHJor4ciX71K3caf6euSeQnZUjzpAVUwxHGW2Z1xD99ryEqXRtwpZ7mP8i8QdhYwDAUrKydFaW5RLDTD55o3V3dzARcT3TAnthAG9F5vZodUyt666LGUED8rRGKT53Cg7Z38CpEusaANUxw2EdsnefpirYzSkHdLksZbw5rsUBRTTiYJMfDKAvTGAKXqFrxPubA2vemqSnHwo6ZkJaExu5HRu9YjurqTk3zW9eabondH7jtvDKwHMjqTiwFCJ6BN8P3QPvh4nc8hSr5cYM5xJjY858GhgJknC6KYBPhY5UHgST6nAwTMPoss1EYZGbYEvLfqiTsAmbizWYLEmkjiEiF5LFdKXCH5VH9X3amWMbEk3UZWWp4igeWJWaiDGMwPvVP9sq3hp5L4ka48BaTo",
|
||||
decoded: new Uint8Array([185, 129, 74, 236, 11, 6, 70, 154, 231, 231, 60, 249, 7, 37, 23, 81, 43, 71, 9, 175, 47, 16, 91, 224, 242, 239, 128, 38, 19, 37, 51, 90, 117, 34, 66, 119, 144, 101, 135, 123, 15, 86, 148, 235, 32, 168, 178, 168, 154, 37, 250, 187, 164, 142, 209, 36, 4, 252, 58, 166, 115, 44, 212, 179, 27, 145, 222, 123, 62, 195, 165, 194, 241, 14, 32, 129, 18, 66, 29, 254, 24, 31, 240, 197, 92, 33, 247, 201, 228, 66, 125, 142, 94, 64, 77, 237, 32, 101, 205, 69, 96, 175, 179, 225, 234, 235, 55, 101, 153, 200, 59, 73, 63, 162, 115, 193, 125, 90, 183, 184, 64, 175, 0, 26, 212, 129, 255, 45, 31, 245, 241, 13, 40, 12, 99, 73, 151, 50, 37, 215, 46, 153, 81, 211, 30, 72, 253, 214, 136, 155, 208, 21, 143, 98, 105, 128, 23, 223, 206, 186, 81, 251, 21, 207, 187, 82, 16, 10, 165, 199, 133, 65, 108, 207, 171, 111, 125, 218, 246, 8, 121, 73, 48, 104, 124, 32, 88, 90, 130, 52, 75, 140, 3, 156, 12, 14, 20, 90, 80, 188, 218, 87, 29, 61, 41, 90, 57, 16, 121, 115, 210, 201, 155, 248, 23, 32, 228, 5, 214, 251, 83, 134, 36, 174, 55, 178, 164, 221, 94, 79, 39, 96, 81, 154, 107, 240, 51, 199, 7, 101, 119, 188, 193, 170, 35, 141, 39, 225, 235, 118, 197, 83, 218, 1, 80, 45, 78, 19, 223, 37, 229, 247, 36, 179, 79, 15, 209, 230, 184, 19, 149, 237, 17, 26, 85, 0, 18, 204, 228, 23, 93, 138, 142, 48, 211, 150, 81, 44, 165, 121, 209, 142, 10, 225, 112, 221, 189, 228, 150, 168, 149, 235, 241, 102, 22, 142, 127, 152, 176, 140, 145, 156, 208, 138, 143, 76, 92, 19, 220, 212, 43, 218, 164, 219, 105, 247, 231, 125, 226, 181, 248, 4, 86])},
|
||||
{encoded: "8Ea2RjV3RKZuGnnHbQYEEb52jxUNexuPz1VtVj2N3uAhiZWbfC5u4nMfvP1mnJLXHt46qaYuuJGyJJQ39n2R34eEan1qtaRnhTxs5dWuRYCok7Z98rMkrV5ENVmzB8qCoUPfaZfFQtMD97ghwRoX1Pi5iXcN3afnRBNfmJJMSotxNX6xYtcAtzsPC2rBgTCRLLA5FwHpurSHaiyLWK8Bo9SNUFjL3ukoECGtFvGUt2hWLphwiBBHgaAifJodfZ3AHiovj9CMiq9Ko9V7URm1D8eK86W9KFskjmwpwaaBfEAkGj4Bmxi3fMTDFd1ZquBTefoE1cEV4WABkjgRJYv7TPLQ8Gd92SFFhFFASN6n57tPY37pTnEA9W1y4rFByzzkneDPBENJ5GTJWZxj5VcfVha6km4DevpTYZ4U5sD6rDZv8Zz4wE8hpg2XrejfLmhStfpJAkA2ydpzqkSaJkhRkDjRz6BkBLSfVx6gF1vgE1JndNDB6tRzQQtEhDw",
|
||||
decoded: new Uint8Array([127, 101, 49, 225, 99, 246, 10, 101, 149, 66, 41, 6, 131, 81, 3, 117, 111, 174, 237, 86, 99, 149, 166, 171, 150, 197, 254, 19, 72, 46, 161, 163, 229, 175, 239, 56, 243, 58, 245, 114, 240, 193, 1, 152, 39, 97, 181, 63, 234, 81, 163, 146, 32, 161, 38, 38, 99, 31, 7, 75, 124, 254, 142, 241, 34, 12, 153, 149, 42, 95, 195, 154, 156, 34, 3, 120, 10, 236, 91, 88, 86, 34, 242, 224, 72, 125, 19, 104, 94, 93, 179, 178, 245, 103, 122, 127, 86, 227, 82, 238, 58, 150, 110, 28, 139, 115, 135, 40, 121, 195, 121, 201, 13, 206, 26, 202, 184, 254, 146, 248, 187, 66, 82, 46, 238, 74, 7, 122, 187, 161, 201, 135, 37, 255, 33, 229, 254, 175, 13, 125, 8, 192, 104, 38, 138, 65, 74, 41, 171, 134, 109, 101, 64, 79, 109, 159, 6, 6, 57, 235, 35, 241, 66, 53, 182, 133, 6, 170, 145, 53, 102, 227, 189, 25, 62, 77, 219, 111, 93, 172, 255, 223, 105, 151, 177, 95, 245, 140, 140, 148, 37, 44, 184, 196, 226, 18, 149, 2, 13, 70, 166, 245, 212, 160, 180, 37, 126, 229, 236, 37, 44, 121, 127, 92, 10, 119, 157, 84, 202, 238, 199, 47, 229, 76, 64, 67, 210, 21, 177, 153, 137, 212, 47, 248, 61, 2, 124, 85, 42, 214, 36, 69, 183, 52, 119, 214, 22, 242, 58, 75, 172, 92, 142, 229, 85, 254, 90, 167, 95, 193, 117, 83, 228, 25, 195, 189, 131, 114, 167, 19, 154, 95, 153, 6, 62, 25, 158, 172, 57, 184, 167, 207, 226, 147, 164, 37, 199, 107, 145, 225, 234, 64, 215, 221, 59, 190, 83, 140, 132, 128, 235, 185, 3, 183, 29, 1, 18, 168, 145, 112, 53, 90, 117, 12, 43, 205, 97, 128, 124, 80, 144, 85, 211, 119, 120, 80, 15, 156, 20, 197, 138, 109, 139, 218, 167, 98, 150, 128, 232, 126, 11, 234, 240, 193, 134, 41, 198, 156, 76, 120, 92, 208, 125, 251, 51, 237, 175, 106, 108, 90, 183, 255, 117, 72, 231, 230, 184, 19, 215, 0, 102])},
|
||||
{encoded: "xSQ1tW619PyF414sLgbAo4X7reRAMSSoMutRsUuHkvwb2cbtod9VNFiZQSRH3kuvT7Wksg5MzBgarfRjq7RXE7oKgq3ECbBvZzRi1TUjBpd1scHSqZFF4GpS6vZnwxEeTgGt77bgYBm7ZdMsezjEuAqQGq9BQzBV88aud3ppkYZYbHCEFJhch6BAHY4cZgoo99XqRb2P78S4dr5tvi8umFMNtusUAEM3kzDAH19b4V1s5ra8LVV2ArEX7qrVdSfAd9RhuXNAqynQ7MpC9p4tm2LmAjgSDGuPg3Fsi7MS3mWP8b1t16H88yEytkAh2s95bUmaNBmsnEdPzHVqoafdKyjuTUWvugaj2ptm1XoK8bSqa8peEPkRVkreuqn9afhn1YrBbCwZsKPu3zRhDiV2eL47uaewxW1mpdoZjix8xTHtuH2AAgaXYg3AUfXiynKHNEC6kLjo5JNHt8Fsn4RVWH8DKfoFZGY19wE1JJZF5x6yJr2JhUYewY5PpkEhkZBrCA8RJCxFQgmnVFdFYjXPVMdEXhBycvCYz69GUbhTxtgsDyTDp7T2VjdPfLLUBybgR1iwNXCTciaFUyHbLkw5WnrexG6Uk1cBJjmzwPqDuwoKN51ZcZgAvg6bSzBjevF4FUY7VKeCGdiTMVgxi5JgxCMCDgZDczAY2wZXSpHR8NhQv89S1GMaGS4FkAVe1Q2kmXwT8DUiHs7C4ac4YUKyRLnBkjCVyD4xv43V6vhruwKPCme7gsgjLsBk2yEy81r8biZDcaUe9kXJMLvshGsXKLTM8ad42YzWBvNHRRX5i5UJ8zUY8dEujmEzhK2SrZpNCMcoz8EBtKMkWNeAXdYpERu1kXtto6pbo3A3Zc6eBgYrVdWgQUo3Fu4K2SHY7A7yttJTVLF2Zh5vEnQgk6Rw8dj8RHektebhn1DDAMC3TRPz99ajqv3iV",
|
||||
decoded: new Uint8Array([142, 228, 103, 234, 9, 158, 79, 20, 8, 65, 214, 36, 211, 33, 9, 208, 236, 216, 239, 190, 198, 228, 79, 81, 186, 197, 98, 219, 240, 75, 161, 51, 42, 159, 1, 255, 43, 245, 2, 87, 132, 148, 65, 23, 44, 160, 206, 101, 230, 1, 221, 180, 195, 10, 116, 84, 212, 37, 164, 87, 239, 163, 147, 206, 109, 38, 82, 122, 54, 213, 135, 233, 254, 43, 102, 67, 189, 3, 239, 100, 107, 22, 156, 28, 6, 245, 52, 144, 254, 88, 60, 154, 158, 170, 140, 6, 117, 93, 184, 245, 205, 78, 210, 213, 48, 166, 242, 49, 98, 225, 195, 20, 15, 57, 199, 98, 47, 229, 233, 112, 190, 244, 227, 103, 194, 134, 237, 19, 112, 219, 24, 98, 121, 226, 85, 152, 97, 247, 77, 50, 19, 21, 185, 6, 96, 76, 234, 253, 14, 235, 183, 115, 18, 72, 101, 146, 52, 178, 27, 71, 172, 32, 121, 217, 196, 3, 195, 226, 94, 157, 211, 215, 26, 69, 83, 126, 1, 22, 10, 125, 2, 43, 38, 78, 11, 195, 89, 140, 103, 66, 92, 185, 136, 131, 153, 142, 148, 216, 111, 14, 184, 183, 180, 151, 109, 209, 59, 143, 197, 232, 31, 188, 163, 8, 105, 176, 199, 116, 48, 64, 36, 223, 77, 35, 79, 47, 73, 221, 23, 71, 101, 112, 190, 88, 47, 136, 164, 60, 42, 98, 107, 195, 67, 80, 42, 181, 156, 77, 162, 9, 192, 126, 94, 131, 87, 13, 80, 243, 23, 222, 108, 130, 14, 161, 31, 192, 235, 221, 219, 255, 119, 171, 136, 95, 198, 215, 122, 60, 254, 102, 73, 0, 50, 78, 61, 63, 253, 243, 226, 27, 165, 34, 14, 237, 17, 104, 182, 96, 130, 190, 210, 88, 138, 222, 209, 238, 103, 133, 10, 3, 44, 221, 93, 114, 8, 233, 92, 254, 167, 226, 182, 208, 235, 163, 48, 81, 19, 46, 96, 36, 138, 209, 84, 92, 200, 178, 190, 119, 164, 223, 212, 30, 71, 245, 175, 10, 171, 112, 67, 151, 83, 72, 21, 80, 29, 239, 195, 98, 190, 13, 0, 221, 125, 37, 72, 227, 220, 93, 169, 143, 208, 135, 17, 251, 163, 148, 223, 206, 48, 120, 50, 153, 80, 173, 85, 6, 70, 231, 48, 219, 175, 250, 238, 252, 234, 46, 133, 48, 66, 17, 251, 179, 200, 18, 154, 251, 46, 69, 0, 70, 248, 15, 94, 94, 182, 12, 113, 185, 237, 101, 107, 195, 36, 212, 253, 192, 241, 89, 123, 1, 207, 135, 77, 111, 242, 238, 89, 170, 254, 86, 176, 167, 65, 101, 58, 81, 193, 71, 189, 12, 65, 39, 236, 250, 41, 227, 37, 170, 22, 87, 38, 80, 61, 30, 248, 155, 14, 219, 9, 227, 129, 28, 130, 187, 106, 80, 43, 252, 173, 164, 35, 217, 39, 172, 245, 45, 131, 192, 135, 8, 114, 84, 164, 39, 70, 12, 29, 214, 41, 129, 116, 147, 6, 3, 250, 233, 209, 249, 126, 199, 57, 77, 36, 237, 149, 92, 209, 18, 52, 184, 120, 251, 26, 61, 205, 195, 137, 161, 224, 133, 130, 81, 236, 251, 215, 225, 161, 158, 23, 53, 24, 31, 88, 170, 64, 8, 238, 154, 157, 122, 18, 62, 13, 241, 243, 229, 36, 35, 49, 171, 154, 159, 100, 73, 85, 97, 33, 119, 12, 22, 74, 141, 137, 55, 2, 197, 253, 247, 114, 237, 234, 184, 29, 142, 23, 255, 86, 235, 24, 112, 112, 71, 99, 200, 6, 80, 34, 77, 222, 216, 110, 112, 57, 173, 170, 28, 221, 29, 64, 221, 195, 128, 149, 49, 13, 198, 27, 57, 14, 125, 165, 90, 162, 185, 77, 157, 169, 249, 205, 56, 232, 190, 155, 142, 143, 159, 80, 80, 117, 252, 40, 86, 218, 180, 147, 233, 213, 4, 106, 154, 139, 241, 18, 78, 115, 92, 50, 125, 202, 95, 60, 108, 38, 122, 32, 175, 240, 161, 72, 101, 215, 76, 200, 185, 149, 99, 18, 236, 231, 152, 104, 203, 238, 159, 83, 40, 247, 64, 54, 121, 234, 231, 64, 25, 118])},
|
||||
{encoded: "eFnT4283PLRMGnaUv3BYEuYHKFFxxHGu9Xk7vZznrfCRdrwjhwmS3TZM3ydTRNVQsZMSp7hkFG91wbVerfMM8xUSdhoKJDEnHrLhzLtWCQmiY632MpEdjHg7h3JcfQPGiDQ7Ac4SB6p4QuBL672ghVf7RjpwckaNAfXznVAv6VZ5gtR4LYA87wCGQyKa7457ZrwJKN2tmufSAYVQF6UDTFH3amyudSRiTWCRitbKUK5Kz99S83zeHiuTaAb3KUJqzBssy3g9GSDse1LuGHVVgERs5dB842D2APYSyAM1aERpZVgLrqb2xZtskrvGzTuz77vYTTouj7QEiECUDKwzHSYxqpkZ5rorHiwApUWskHhuEeabQXJbf9kkECNUrUe5G8G9uZmvwcWsuLjnzMedAFUgv38HNXUd8WUHVMFkmoU2KDg6yMAjbVPoVWkzYV69Tq1kLiL6sx2yaHtP32fFgULAgX6jkzSN7FdMeTD9DJwfNTmYvfbCyAF7QiSvQr3mjgfCTkkY7GcGgWxz21vWTeKvCYUu3TEAbveEukxeBEjLPGUboZx9ka1JeN2BSPPw5nSy4k7qzufKfpftRLNhdgQxn886vJhVnrcnYCmy5KeYJB8kLgnLpqqDnE3toRydg5Qr64M8X2rZhXbXRTBtzHmZjsUw5MA1g7EZ3Hx8nB7FjKHUWhF59pUG4sNwjB2LaU5TM2o1THx7gJGxRHjoRoC1XdGD8GSFdnh78A3Kj34wYdExSfiNu2gQgqYeR71LFC4xmRpVH",
|
||||
decoded: new Uint8Array([129, 31, 171, 90, 168, 247, 200, 189, 137, 142, 116, 53, 148, 76, 151, 68, 65, 74, 181, 133, 57, 181, 255, 82, 221, 96, 216, 102, 147, 190, 235, 79, 155, 30, 200, 4, 252, 173, 76, 252, 243, 214, 169, 18, 161, 158, 73, 143, 182, 110, 183, 110, 50, 161, 107, 9, 224, 232, 107, 90, 163, 14, 65, 237, 12, 187, 27, 35, 136, 129, 124, 90, 213, 174, 189, 253, 28, 23, 167, 84, 130, 157, 206, 105, 158, 17, 38, 151, 17, 236, 211, 64, 21, 224, 163, 120, 176, 40, 111, 72, 43, 126, 88, 200, 186, 175, 249, 63, 194, 20, 92, 72, 176, 155, 149, 234, 21, 155, 103, 178, 90, 108, 172, 150, 177, 216, 89, 97, 85, 50, 146, 137, 81, 93, 95, 159, 50, 249, 125, 204, 3, 63, 60, 163, 192, 233, 248, 143, 197, 48, 173, 84, 102, 93, 170, 176, 141, 193, 150, 47, 101, 77, 89, 100, 10, 80, 67, 239, 199, 3, 59, 133, 103, 166, 107, 116, 208, 167, 106, 131, 105, 138, 174, 172, 230, 104, 189, 53, 19, 70, 104, 7, 180, 161, 138, 123, 179, 17, 148, 19, 114, 52, 136, 131, 199, 201, 101, 20, 209, 0, 23, 196, 229, 81, 225, 67, 165, 60, 201, 64, 112, 65, 147, 190, 110, 239, 253, 250, 48, 66, 221, 162, 170, 174, 56, 126, 34, 202, 197, 249, 239, 63, 162, 87, 225, 204, 140, 103, 149, 173, 207, 57, 28, 118, 189, 107, 190, 139, 242, 158, 195, 42, 245, 227, 79, 208, 30, 144, 170, 242, 212, 91, 85, 124, 248, 204, 47, 58, 72, 225, 173, 32, 201, 145, 96, 157, 42, 54, 241, 4, 211, 121, 236, 200, 68, 27, 121, 241, 3, 55, 240, 85, 59, 62, 114, 16, 194, 201, 154, 126, 155, 13, 99, 83, 82, 199, 145, 104, 142, 212, 47, 33, 185, 175, 105, 196, 219, 41, 186, 147, 52, 91, 169, 111, 59, 71, 164, 178, 221, 64, 30, 219, 57, 132, 47, 252, 192, 76, 26, 79, 161, 66, 98, 176, 21, 169, 169, 95, 149, 203, 5, 164, 50, 83, 228, 107, 82, 231, 80, 133, 38, 171, 6, 85, 138, 72, 95, 51, 122, 21, 119, 101, 7, 196, 67, 144, 21, 12, 110, 88, 85, 32, 95, 209, 180, 81, 200, 35, 205, 163, 91, 105, 244, 187, 53, 146, 88, 64, 8, 201, 2, 214, 227, 128, 50, 56, 213, 195, 104, 85, 98, 29, 165, 137, 189, 70, 235, 123, 131, 38, 9, 19, 90, 205, 102, 21, 145, 178, 106, 189, 139, 39, 183, 176, 57, 54, 137, 55, 190, 160, 118, 81, 213, 83, 146, 196, 31, 5, 162, 128, 1, 180, 79, 117, 32, 232, 0, 174, 112, 167, 186, 113, 91, 237, 57, 1, 123, 252, 197, 124, 167, 33, 127, 36, 248, 79, 158, 221, 14, 145, 189, 150, 66, 0, 85, 68, 104, 60, 11, 205, 10, 216, 182, 147, 72, 18, 53, 49, 208, 74, 61, 218, 67, 225, 164, 255, 206, 5, 38, 52, 85, 58, 126, 62, 146, 175, 91, 0, 32, 220, 232, 104, 196, 163, 76, 64, 248, 228, 25, 51, 27, 147, 193, 42, 98, 41, 125, 52, 208, 23, 87, 118, 118, 100, 151, 84, 173, 58, 210, 223, 148, 43, 54, 210, 108, 142, 7, 26, 36])}]
|
||||
@@ -0,0 +1,201 @@
|
||||
{{encoded, "2GUA8CWvpaGkFEBNVm8FKKsrZd1qN4Laa7JHzGJoYa8Sg6wZZCuGsdEZfhK97TVrDi"},
|
||||
{decoded, <<34, 136, 2, 145, 89, 38, 72, 227, 61, 255, 244, 206, 3, 235, 31, 205, 46, 163, 204, 97, 85, 233, 11, 183, 111, 64, 90, 246, 220, 247, 91, 84, 38, 228, 112, 142, 146, 253, 252, 229, 196, 106, 153, 197, 117, 234, 243, 133>>}}.
|
||||
{{encoded, "3W8Ait1VzN1DMKkBWDBVSqKQkiYYJmnHS822x9nJAebJCT14Mn67eBqYhENegxLL7j7TR9oWPZeHbcmrdq3iqQkkQ3uYFWNxKcXwzMpq2Ni7CDTjmtngtPjbHkJeo7DukojHeGPJBkEknLokWDw4QHW2R8ySH4dtryB6XHzCXYUo38wVeFvuqVmbo9pyf7g57PYXrhGTh9kuQNh7Brmh9esCfrmudNsQ4QApAX74aTHQf2HZgRSQthYRTrkv6ZYwVUjP"},
|
||||
{decoded, <<93, 17, 195, 175, 181, 241, 27, 96, 45, 143, 174, 12, 245, 149, 58, 236, 34, 184, 130, 74, 194, 250, 219, 229, 153, 115, 141, 93, 207, 154, 222, 31, 7, 88, 136, 246, 82, 119, 117, 220, 208, 170, 203, 216, 231, 2, 41, 155, 96, 150, 227, 210, 212, 219, 89, 157, 30, 143, 135, 60, 81, 221, 179, 158, 104, 233, 4, 71, 17, 53, 253, 107, 15, 162, 172, 36, 219, 217, 125, 199, 228, 6, 226, 200, 88, 208, 205, 191, 144, 163, 229, 5, 191, 120, 148, 80, 43, 7, 111, 226, 101, 212, 230, 167, 141, 233, 17, 64, 172, 132, 236, 251, 184, 167, 219, 129, 62, 20, 129, 251, 17, 35, 43, 17, 79, 128, 109, 168, 250, 197, 202, 249, 25, 161, 203, 222, 132, 106, 132, 205, 67, 57, 187, 65, 87, 180, 122, 171, 26, 222, 233, 14, 149, 55, 9, 185, 94, 104, 107, 236, 245, 186, 235, 255, 212, 9, 130, 64, 166, 205, 128, 107, 188, 220, 44, 192, 205, 99, 41, 191, 238, 44, 80, 191, 61, 90, 89, 51, 140, 6>>}}.
|
||||
{{encoded, "5ZmtKiPAz8ZcBbgZckN5L61GpAnUo85k5BouVHiCDUzUgepkAp8mw6mgEpKzGJouyTbfzED6CojqoEFvmvWmTSAprfE122zK8NqB4Z28U3xoQGjhxYpf1sZzc3gdeSYw5C5PBmxr8ajXgihVSQtXefqvZKn7Twz5Ka2FcCR6dPBhnwrtFaYzoCLRduh37rdcV8B6Di16ssHhd2TmbpLPf59BM9m4EdhKANwcB6jSkshkopEr7J7Z5HHoQHgBfFubxyNEJsUy12efvfLGwhtzQ9L4rddAMFcAJE4SHPDWHLJTMCtBABYwxeLJQsVVap9edJWissNssw7iwcf8VLRDxKmAu4iKGWujoH5Hzq6BV817fX3ovAWSo9Vx1sKVh8eQVHSkdQ3jXzMxCZHqqykcX7q5WMWwcenNd4nwXsArvpyTNVTnzNPZ3MwPszT5HN6gDGfCWWtVJ7wkrEGaBevt3vvELpiUf2jgS9FNm5v2JyFzNDHS9cbjRVfARQZzgt4gigFwjqtSCdWGmzpXj89FU4BCNgExpFkQVhpq5vmTWpvEZhRhJgLtdXeq6urYyaQfRo7cAWqzMUKrhgc1Ct48snrwGnvLucH1YLs"},
|
||||
{decoded, <<188, 148, 209, 203, 191, 196, 146, 43, 54, 223, 36, 54, 17, 218, 194, 177, 60, 35, 28, 166, 73, 208, 9, 66, 131, 112, 221, 118, 111, 133, 147, 254, 94, 71, 2, 180, 108, 50, 215, 100, 206, 25, 201, 238, 25, 119, 49, 215, 2, 218, 228, 177, 116, 26, 193, 59, 159, 11, 24, 231, 36, 153, 168, 186, 64, 51, 93, 136, 9, 144, 234, 35, 167, 177, 207, 136, 105, 18, 255, 205, 182, 240, 28, 78, 114, 4, 232, 43, 246, 86, 62, 235, 235, 67, 210, 179, 53, 174, 123, 24, 65, 222, 189, 208, 53, 81, 162, 187, 219, 244, 168, 198, 178, 107, 104, 21, 181, 215, 135, 137, 33, 16, 134, 65, 17, 16, 162, 70, 164, 121, 104, 107, 104, 123, 2, 4, 202, 136, 159, 123, 190, 205, 243, 151, 120, 116, 28, 181, 81, 90, 40, 140, 107, 58, 123, 76, 108, 40, 175, 227, 162, 241, 243, 94, 81, 39, 103, 76, 157, 121, 93, 179, 104, 192, 67, 166, 249, 193, 214, 110, 206, 118, 15, 173, 141, 26, 37, 147, 42, 1, 62, 154, 231, 73, 94, 204, 11, 121, 192, 95, 241, 136, 166, 141, 78, 52, 97, 173, 152, 254, 243, 22, 190, 169, 181, 253, 94, 97, 180, 0, 26, 192, 224, 126, 179, 109, 151, 63, 235, 67, 117, 174, 255, 31, 235, 199, 115, 167, 111, 31, 139, 52, 252, 219, 127, 205, 3, 113, 4, 248, 141, 172, 51, 242, 19, 100, 0, 97, 83, 112, 229, 183, 164, 5, 255, 193, 177, 214, 21, 26, 244, 75, 59, 67, 118, 15, 245, 238, 175, 37, 203, 76, 74, 74, 131, 62, 74, 189, 247, 25, 66, 99, 57, 126, 112, 100, 55, 194, 103, 158, 255, 34, 148, 93, 134, 172, 254, 23, 123, 22, 34, 176, 224, 36, 26, 154, 178, 170, 229, 142, 95, 81, 75, 198, 127, 222, 214, 173, 71, 251, 11, 39, 63, 31, 63, 59, 239, 114, 6, 98, 145, 166, 101, 163, 4, 178, 204, 168, 41, 181, 195, 226, 166, 2, 245, 121, 51, 168, 209, 27, 225, 182, 201, 43, 178, 31, 45, 167, 51, 65, 168, 53, 9, 206, 252, 118, 82, 157, 54, 37, 161, 101, 138, 246, 202, 53, 92, 81, 118, 207, 44, 1, 162, 234, 206, 142, 72, 228, 221, 76, 197, 45, 237, 113, 64, 23, 72, 63, 237, 54, 58, 187, 193, 195, 245, 205, 13, 70, 110, 115, 28, 57, 154, 240, 166, 212, 123, 158, 27, 154, 226, 99, 2, 88, 146, 37, 244, 27, 194, 107, 230, 202, 196, 247, 193, 49, 60>>}}.
|
||||
{{encoded, "e1iSFKy8FkpqhEVEJhXuVpnsSbvfDd8nD46AvFdapaWa3NgexRhnvCicifs4FRRsRqZRPPoJyNpRSDWXxoaC7Rctrua4YgmyiSKpW6Xjh4sKPAXAX4j1RrxqY3NKicPAUN8v6fAXDhTBimMDBM2BnPoHJ1LdgYmsrcswgToAisbW51aq2MbsnpbN9uFfUpLBxirfJPKy61a4KmenBWLN3c17K7U5Wk2iLQHvBk6fj7SRPm3QfCFPQ57tCSheBK7CJh9S17MaRs8zc9TWPrGiFFob2VZ6b6FZqAWYyBx6hymvmMYq1HvAvVZs7w9DwbimFHnPubP9d4K65iFfHQoF"},
|
||||
{decoded, <<133, 241, 198, 240, 120, 51, 68, 0, 100, 158, 16, 181, 134, 235, 87, 212, 87, 173, 24, 234, 193, 47, 214, 235, 1, 177, 159, 179, 252, 19, 251, 119, 22, 213, 25, 96, 116, 137, 246, 67, 106, 231, 239, 31, 61, 135, 175, 68, 30, 56, 75, 52, 166, 245, 33, 164, 1, 101, 174, 229, 140, 19, 9, 111, 180, 188, 217, 48, 106, 63, 239, 142, 117, 191, 133, 77, 147, 149, 71, 154, 28, 18, 201, 112, 196, 25, 5, 26, 251, 179, 211, 173, 233, 146, 233, 38, 155, 226, 19, 71, 28, 84, 63, 178, 21, 25, 18, 251, 187, 175, 252, 220, 131, 254, 73, 76, 92, 178, 97, 249, 14, 193, 192, 162, 182, 54, 13, 130, 109, 90, 21, 18, 150, 182, 33, 115, 121, 24, 92, 182, 104, 62, 43, 198, 106, 56, 125, 46, 83, 39, 143, 96, 221, 111, 203, 168, 43, 14, 93, 116, 112, 9, 206, 60, 113, 58, 0, 209, 33, 81, 59, 182, 246, 153, 232, 18, 216, 163, 144, 203, 25, 36, 148, 24, 171, 69, 50, 234, 211, 83, 219, 6, 112, 169, 196, 86, 25, 188, 128, 148, 136, 229, 143, 38, 0, 21, 12, 127, 151, 238, 253, 93, 27, 176, 33, 230, 122, 175, 27, 13, 94, 108, 177, 84, 74, 7, 218, 30, 246, 194, 81, 90, 182, 153, 9, 253, 101, 123, 200, 232, 48, 93, 15, 223, 148, 39, 179, 73, 150>>}}.
|
||||
{{encoded, "7HL7mGhEzkMr5WqF1zBtNJz7aomVAjCyxeP8hgvrH4QNWAbZQQB4t8pqnfy7jVBUECegcwca9D5TLgaxzSBPU2Fyda2h4v9qqyZfGrjYXFVftDZYywjyGswupvA6MbSzZ7TLsSMZkw2XfZ7YK8aA6PWeL6DbJDAGLS1i5CmqE1SQZys41XTU6oauqNVLmjfDSQa1btzXrTQq73U7SEtr3xzKxYWVxoE3oWuzBHai7XWg8weYJAnCNp9yK1mQFxf9j42j96YdEbN6CETaztTEnVbtbUSmreYuNTgLwsvtHRqd3ebyESdeLTaLBc2JF7jq9twrJyF3RcMQJv2KsSeUXundFeYajU96xdRYCmB3WCp5Ljg6aAELULeStWzm1KUL1zwWdxNe1UcavXKyVSVbFkNMdRKxK2QBoEACmDkzM7a3iweuSZYGcXZoov99Q2M"},
|
||||
{decoded, <<158, 192, 219, 129, 187, 213, 226, 30, 188, 148, 52, 86, 46, 239, 236, 33, 223, 177, 123, 180, 142, 190, 195, 206, 183, 108, 67, 97, 21, 91, 219, 53, 223, 181, 151, 243, 194, 113, 201, 169, 11, 52, 241, 28, 38, 109, 92, 61, 178, 105, 146, 137, 138, 60, 235, 135, 251, 131, 88, 189, 224, 23, 240, 10, 64, 103, 243, 221, 179, 147, 75, 115, 14, 132, 179, 8, 170, 152, 248, 61, 86, 218, 191, 81, 132, 46, 111, 120, 161, 81, 208, 142, 118, 171, 76, 8, 7, 9, 61, 228, 195, 98, 207, 126, 111, 43, 225, 112, 118, 63, 47, 130, 35, 255, 15, 217, 1, 61, 162, 6, 224, 136, 59, 71, 138, 137, 105, 203, 115, 209, 129, 69, 35, 242, 29, 10, 102, 21, 162, 57, 16, 7, 146, 18, 81, 229, 185, 111, 234, 56, 185, 247, 126, 122, 49, 3, 21, 81, 247, 161, 246, 103, 112, 14, 113, 56, 7, 183, 81, 197, 122, 79, 56, 20, 117, 74, 76, 139, 210, 200, 243, 20, 178, 29, 237, 75, 61, 68, 220, 50, 148, 247, 138, 201, 34, 32, 171, 242, 215, 100, 54, 49, 59, 234, 23, 105, 67, 206, 36, 123, 218, 214, 194, 149, 4, 79, 104, 141, 226, 113, 17, 87, 82, 214, 19, 213, 79, 35, 159, 252, 36, 138, 88, 237, 183, 75, 229, 189, 14, 86, 255, 81, 123, 121, 245, 101, 226, 86, 19, 59, 57, 174, 100, 130, 57, 48, 243, 228, 80, 191, 233, 113, 122, 153, 210, 168, 69, 28, 153, 25, 56, 31, 116, 199, 93, 234, 191, 79, 160, 2, 227, 205, 51, 211, 162, 197, 169, 94, 205, 6, 18, 188, 237, 113, 75, 195, 100, 157, 189, 103, 68, 61, 236, 161, 1, 161, 38, 149, 100, 114, 125, 34, 155, 34, 147, 107, 222, 151, 196, 39, 130, 42, 206, 181, 161, 100, 234>>}}.
|
||||
{{encoded, "F93UT2FQNg3JZ316QsQn8BTrgNZHpQQN2DNgY1J2AaspUcy5LHWQHC5VMzfaQ3WtX7iYpivBiMwD9RkXgETwC3WCj"},
|
||||
{decoded, <<160, 56, 18, 78, 185, 73, 31, 30, 127, 64, 89, 205, 117, 119, 3, 13, 86, 48, 233, 179, 146, 27, 194, 198, 151, 179, 34, 204, 204, 247, 167, 79, 53, 20, 145, 184, 124, 168, 10, 169, 244, 99, 9, 15, 42, 75, 18, 13, 237, 27, 85, 23, 154, 18, 198, 217, 248, 0, 77, 106, 156, 78, 246, 93, 124>>}}.
|
||||
{{encoded, "3DpSDhhLXujeMMsevVjwCoaXWvWc5hy9VzqfasRm3kbZfe8tuiJYgiUh8Jj6A3RkL8JQF46E548vdUeEAwZ2opidmYdfGhV1xrjN76peJV3AbAE8SvGJeSQaHvbjuspaBgM1Lg7DpW2uDbJgQGtMo1noBMFD2fHrv81xayP8DExxqSDw3BFhi92iyDZu59x51k7tqxDrevaos3Uh19n8kjdmkYAu3Avdh4Lm4G4DtRisvn7cYhbksYtDmxr9vrj7JbM3FCVCq2upQijqSHziteFR8t4ubCRTcCvptkD6poMPDvqqDqyKZtmJa8EyaEXq5Cxhkq6XdinhxkoQncsBa56Z3pZF2hxLXYuRdsb1sQPPXgzhRoM25zfEqsbKZieKLxsyVbbtNxczcPeSJp9hsctHkAn1uoHqCHthKUZZc1T9v5nVEd3MifVd8v5DYUWz7EYzsoDyR71ALsdC8XMzymFmh2wZS3E2Q3Ti9KQVXrEGJ1nqLX97E7BQaZ6H8eaQeNMjWn6j2nUSzCryS5eBrAmiJkzBUgeF9sfA9rxohvfGCG21VqZuU5cDhuH5m6oLmLRHeyrLrC1d6ATyckbtGKdDafQJ4GRDYecG2422GEBZaqSF1uQ7Ah19WSZGzwVENui6W3XBgsRxKNUgy1ELLUHxjycvHVcFZSuKyyPoEaQUKaqZM3Eot7A7Kxo3PyYfC4KqrAgu3KnihdkDQK2otEVPsJdmX9n9Mt4irYj3aM11hdJBuhzrMZZZJpNYBswcrzLTe7p8V7dqMXPiy9aKzVTFYoHz3ZADq64CT6HDzc9B3fWx4UUM4HA55vvyGs4KGPDuVKpBAbGC6221pnrQAzgLQ9D5xERt3dyKEKv6Myv7WsWzVhF9V6r71kW2twScTShVGkzw9vcSj7uHV"},
|
||||
{decoded, <<198, 18, 56, 232, 178, 123, 114, 208, 94, 48, 209, 135, 34, 81, 146, 238, 106, 43, 31, 194, 2, 53, 148, 87, 33, 56, 33, 85, 183, 193, 4, 208, 133, 70, 172, 164, 211, 131, 100, 66, 2, 253, 86, 46, 31, 12, 207, 209, 58, 102, 58, 2, 21, 91, 171, 251, 58, 47, 120, 18, 160, 194, 129, 209, 235, 173, 12, 151, 73, 23, 195, 126, 247, 21, 114, 101, 15, 14, 196, 0, 30, 24, 55, 94, 106, 6, 208, 82, 66, 105, 169, 82, 134, 191, 80, 103, 183, 68, 231, 176, 149, 255, 190, 29, 251, 163, 6, 254, 119, 41, 38, 55, 229, 60, 6, 195, 231, 74, 234, 35, 180, 241, 37, 243, 160, 169, 5, 254, 21, 175, 188, 106, 65, 70, 248, 136, 174, 124, 17, 161, 27, 87, 150, 159, 248, 137, 151, 168, 25, 185, 1, 253, 205, 90, 146, 118, 74, 154, 244, 160, 150, 212, 70, 231, 45, 128, 157, 197, 126, 108, 48, 185, 44, 150, 47, 176, 181, 62, 40, 151, 108, 148, 166, 242, 216, 213, 247, 86, 221, 187, 102, 62, 88, 241, 113, 232, 59, 175, 10, 39, 123, 208, 98, 88, 225, 54, 232, 9, 225, 204, 69, 175, 220, 234, 4, 91, 175, 34, 33, 32, 128, 195, 66, 196, 110, 38, 3, 192, 137, 108, 239, 150, 202, 56, 26, 188, 97, 155, 220, 136, 73, 79, 18, 197, 79, 229, 59, 89, 178, 128, 56, 145, 195, 243, 249, 73, 220, 59, 116, 62, 192, 92, 90, 204, 123, 236, 214, 78, 154, 44, 116, 194, 60, 4, 18, 122, 209, 54, 109, 88, 247, 174, 1, 218, 200, 121, 199, 198, 240, 26, 144, 25, 228, 182, 19, 214, 201, 103, 220, 252, 8, 227, 75, 156, 153, 99, 140, 250, 9, 122, 109, 104, 20, 120, 186, 145, 145, 6, 71, 204, 37, 92, 55, 11, 75, 183, 17, 73, 58, 118, 25, 14, 242, 141, 157, 194, 134, 28, 141, 116, 63, 238, 106, 0, 122, 28, 231, 61, 156, 209, 37, 99, 125, 106, 31, 40, 4, 249, 236, 145, 65, 31, 211, 47, 168, 203, 164, 101, 137, 231, 71, 126, 180, 48, 58, 234, 223, 107, 0, 170, 21, 2, 23, 31, 15, 156, 57, 89, 211, 153, 130, 250, 205, 160, 138, 120, 140, 237, 233, 235, 229, 135, 115, 120, 102, 252, 35, 39, 61, 139, 230, 6, 40, 217, 134, 186, 176, 239, 249, 92, 213, 168, 71, 209, 196, 243, 10, 27, 5, 9, 99, 133, 26, 189, 214, 202, 160, 202, 31, 159, 168, 29, 108, 158, 104, 131, 51, 113, 49, 61, 218, 161, 193, 174, 24, 142, 183, 8, 80, 18, 110, 162, 207, 209, 174, 2, 224, 55, 62, 250, 99, 82, 70, 45, 16, 10, 116, 1, 246, 222, 49, 24, 93, 239, 19, 104, 1, 103, 237, 14, 51, 214, 91, 225, 114, 31, 237, 188, 75, 24, 105, 176, 129, 4, 61, 66, 61, 92, 227, 60, 240, 51, 114, 163, 203, 12, 179, 208, 84, 74, 32, 177, 235, 181, 230, 68, 192, 174, 83, 143, 166, 143, 181, 169, 231, 140, 226, 80, 169, 235, 88, 202, 94, 118, 171, 127, 83, 31, 166, 53, 73, 176, 28, 192, 42, 206, 241, 174, 218, 11, 21, 237, 193, 254, 201, 71, 98, 115, 60, 211, 94, 103, 242, 90, 17, 128, 99, 247, 160, 98, 189, 78, 41, 53, 128, 125, 11, 150, 171, 221, 27, 9, 0, 182, 181, 143, 34, 81, 145, 227, 219, 204, 38, 69, 103, 147, 90, 241, 7, 103, 241, 238, 156, 209, 124, 191, 205, 217, 134, 165, 1, 195, 19, 201, 234, 88, 52, 191, 173, 167, 226, 224, 13, 87, 222, 136, 223, 251, 51, 222, 148, 183, 137, 169, 195, 215, 59, 21, 172, 21, 5, 56, 49, 24, 242, 210, 195, 32, 149, 200, 57, 16, 133, 100, 250, 33, 164, 124>>}}.
|
||||
{{encoded, "5nC5dXh8s2y24F3gHBjZX4QFcP"},
|
||||
{decoded, <<26, 27, 0, 149, 222, 73, 165, 65, 93, 70, 121, 11, 103, 176, 172, 91, 189, 128, 132>>}}.
|
||||
{{encoded, "2gDTnPzteJxeLpULun1aggMPBQAhgUbf8XsgMJJDQHxGP4yRbTSrtJzUaFzo1y9cEWXKhi9sz8FC2dzwmSNCXwgNg3i"},
|
||||
{decoded, <<249, 150, 234, 33, 48, 245, 126, 83, 86, 105, 184, 13, 0, 55, 213, 159, 60, 195, 22, 164, 118, 67, 68, 170, 39, 136, 208, 5, 118, 164, 162, 29, 154, 159, 101, 162, 53, 155, 17, 71, 71, 59, 112, 50, 59, 156, 89, 21, 234, 234, 132, 41, 170, 178, 42, 57, 148, 200, 113, 182, 66, 207, 90, 144, 145, 145>>}}.
|
||||
{{encoded, "3vfiKMajgUaeroy3GGFCgcW3LxXHySKvf77jKUMyB1BsfTYMWsKezZWAvCmyt4k8CTEKuqMVhpJnvBcw2bjD2EXfGPJ8LjXbYzCMEPLe7mq2SbjrtdfzqM5KHTEPf6YgDS5ZfS94o2u1DtPjYmSYTuhX4MtJADuaZjLx1YZTp3eJ4eJDQSPKs929K657TXwNoyP9sUa5KYtVbEgRaMw5YXD4K7oBqtB8fp6wSKsNPA4UDQLMj58jwsmvM1sqaZoeAQmWXDcdhLL9tWYTbY2xKrNHrv4ugNM4JidtPZsXVECHRf9uyDNByWXqmzDLGQ6mzhmbjJqcK8QcqSEFNkmVcpRuBHajX4Tri63CUpJjLxj4ha74rAxM46LHtsPBpKVGPHeRaw1BCw16YFsfUQSYsd5orEo5zSkPQrqnTiDaMyaJrq2FGnFaqQsPdZkWt8sdZEeso6juwoo1nL7Fx2VbL3nBv98GLm9ejcr81yGKTVZReCEtYCt2bkvwaa16Mh7qheb72Ar3KU68RCZ5LZWotYLrEPkaQjEyj44ZL38yAxV8XTAuQpb8LBV5itTzzD1sqc7KUGFpqRcZBcTRJ72uffC1Wuz15iVX7xAycvERq4h6GFz9VPfjC4ma86J7rrdxqMhfp2mWgMmLGHLtHf8UXH9vo451rxRn7WckqmKhUMFe4bFi2a9teXasay123UV9t1CsdfEXgJ8C5E7sCRR7xgT43jMytPsCtuJJ7rT93K2R5YirJEBZVh1wtGFaaeN1imJQRP7RwWxvQE9VbnE7Jr7ZiyCaUomXrAXMt6XtVs1jpgLWuM6Z6q2B5uRtRTbmjYSpyL2UB47bAFQjdjvkL7b46LT2egc5vMNX7UAoFCmjWQ2DY9BdPYxEXrWC4jD5B78Tvj1pApRgUUZXx2cYCkkZhA1p8UPFe12L9bMH1MTYc6hgYwW1JQH5T4AWTqXBJLvhoXvEjeeczNjPbGLn5rLdngqAYDpJmTnSW2p5kB3xQbioYCJ9Dzp1e4w4Y6u67v1A62LUXXPVKS3LauieepxK3Bfc99BETjtgESGfhB6vbj8rwekT9Xxq6ns2xk1AvEXtgepFLkT6Vc5fNgwNx4ewNqJi2MGrkHwFfs17AGxwqfgNFXbqQREXRzfVEcm5jkv27YdkboMQScA5uoPwWMqvvSUh9VdBbtVDCjKD9gfrtAZXHouZMvGCd78JxtG97QXjrY5MAPx3L9DV5Gazzig9apf"},
|
||||
{decoded, <<35, 199, 10, 194, 245, 90, 181, 134, 21, 119, 149, 177, 251, 166, 8, 156, 178, 39, 13, 180, 21, 234, 23, 140, 166, 23, 28, 12, 96, 228, 252, 51, 133, 213, 109, 217, 97, 237, 33, 83, 164, 45, 151, 208, 180, 29, 138, 57, 168, 13, 136, 79, 92, 141, 195, 242, 3, 41, 123, 78, 197, 225, 216, 202, 28, 145, 226, 55, 26, 216, 250, 107, 225, 159, 41, 209, 136, 165, 222, 247, 0, 167, 82, 171, 133, 28, 149, 44, 31, 41, 164, 168, 15, 239, 30, 27, 4, 203, 208, 109, 65, 215, 215, 134, 139, 128, 75, 162, 211, 136, 227, 83, 217, 171, 182, 44, 88, 27, 230, 170, 139, 90, 180, 55, 19, 127, 8, 197, 55, 227, 112, 222, 164, 120, 100, 50, 54, 32, 1, 15, 51, 121, 248, 180, 83, 100, 238, 14, 56, 181, 41, 207, 254, 92, 60, 124, 159, 167, 184, 146, 123, 214, 154, 107, 91, 138, 103, 140, 26, 51, 203, 171, 121, 213, 48, 231, 220, 23, 51, 169, 105, 182, 70, 83, 157, 189, 141, 102, 54, 38, 165, 187, 137, 77, 52, 147, 105, 107, 51, 159, 163, 206, 106, 248, 39, 173, 200, 33, 36, 190, 127, 219, 148, 186, 84, 18, 172, 231, 83, 252, 16, 123, 41, 84, 216, 198, 230, 42, 222, 91, 179, 66, 223, 117, 139, 162, 149, 211, 191, 140, 156, 223, 187, 128, 11, 48, 10, 178, 251, 41, 221, 166, 12, 215, 99, 8, 214, 105, 75, 28, 55, 167, 248, 120, 140, 42, 160, 193, 22, 225, 127, 171, 212, 238, 243, 145, 78, 102, 145, 224, 117, 213, 37, 147, 9, 250, 227, 214, 125, 121, 55, 118, 209, 244, 169, 92, 73, 102, 76, 198, 237, 101, 141, 66, 149, 152, 0, 102, 47, 175, 140, 7, 159, 78, 143, 200, 181, 22, 101, 139, 239, 183, 47, 188, 227, 52, 180, 246, 129, 173, 40, 233, 68, 127, 185, 81, 239, 22, 252, 94, 5, 88, 41, 153, 26, 111, 44, 233, 118, 216, 18, 216, 222, 113, 135, 200, 59, 239, 52, 17, 20, 129, 6, 242, 73, 121, 115, 233, 211, 197, 27, 87, 175, 105, 175, 0, 249, 22, 180, 16, 172, 25, 170, 97, 35, 164, 166, 18, 224, 58, 88, 183, 189, 176, 177, 62, 133, 188, 145, 229, 26, 247, 89, 132, 224, 121, 108, 36, 11, 189, 222, 234, 99, 145, 187, 223, 40, 79, 232, 29, 255, 92, 4, 0, 60, 217, 102, 169, 203, 112, 6, 28, 187, 110, 110, 73, 6, 140, 78, 137, 93, 192, 87, 53, 166, 100, 59, 115, 152, 91, 198, 13, 229, 34, 124, 58, 247, 247, 101, 173, 162, 48, 53, 222, 16, 239, 185, 192, 61, 45, 236, 176, 59, 208, 148, 76, 104, 142, 163, 30, 142, 48, 43, 6, 83, 85, 191, 63, 21, 141, 63, 156, 156, 50, 91, 61, 254, 43, 137, 105, 15, 162, 78, 175, 164, 201, 66, 78, 227, 9, 126, 240, 246, 54, 198, 53, 54, 153, 224, 235, 2, 206, 221, 187, 76, 176, 60, 3, 80, 156, 25, 185, 200, 184, 84, 125, 115, 90, 169, 160, 132, 28, 48, 103, 188, 29, 252, 195, 21, 39, 144, 66, 110, 20, 16, 210, 59, 53, 110, 176, 187, 14, 79, 192, 176, 127, 145, 115, 22, 35, 10, 172, 152, 28, 171, 42, 75, 160, 251, 30, 72, 114, 123, 4, 102, 147, 76, 253, 53, 199, 3, 150, 80, 118, 90, 33, 232, 147, 16, 150, 80, 38, 214, 190, 43, 194, 85, 43, 207, 40, 195, 191, 12, 245, 191, 63, 20, 238, 189, 157, 235, 109, 199, 31, 61, 253, 92, 240, 75, 52, 246, 33, 124, 126, 2, 74, 188, 212, 129, 23, 144, 244, 28, 237, 192, 118, 31, 84, 71, 167, 144, 112, 183, 2, 63, 80, 187, 197, 94, 119, 183, 99, 253, 213, 13, 82, 122, 0, 40, 29, 193, 4, 120, 251, 165, 103, 237, 42, 89, 77, 198, 237, 0, 192, 236, 180, 128, 160, 91, 233, 141, 243, 30, 93, 139, 52, 98, 149, 127, 4, 41, 225, 117, 202, 126, 170, 107, 190, 33, 179, 110, 225, 74, 206, 168, 17, 181, 55, 225, 126, 5, 50, 101, 251, 117, 116, 245, 114, 53, 246, 14, 161, 213, 51, 177, 118, 247, 158, 49, 137, 5, 204, 156, 66, 247, 212, 81, 64, 137, 1, 63, 229, 78, 141, 163, 179, 240, 28, 62, 208, 244, 77, 82, 56, 230, 23, 141, 178, 240, 81, 195, 11, 157, 238, 46, 76, 235, 85, 29, 43, 71, 6, 50, 149, 149, 218, 207, 133, 6, 71, 184, 161, 135, 45, 115, 34, 61, 27, 47, 69, 191, 4, 11, 132, 131, 227, 40, 170, 40, 53, 63, 228, 186, 11, 220, 53, 45, 1, 224, 36, 245, 230, 184, 190, 228, 183, 148, 8, 69, 237, 148, 14, 46, 37, 40, 249, 218, 193, 96, 160, 3, 55, 60, 254, 139, 216, 110, 174, 245, 162, 254, 108, 92, 221, 165, 15, 119, 234, 231, 172, 177, 142, 125, 186, 116, 130, 147, 179, 129, 253, 166, 5, 224, 206, 192, 37, 181, 167, 155, 99, 79, 241, 178, 44, 182, 224, 251, 137, 221, 222, 91, 129, 27, 165, 39, 182, 205, 108, 26, 194, 26, 103, 119, 25, 41, 217, 60, 97, 83, 128>>}}.
|
||||
{{encoded, "4hwMxphPWYfYCP7N7awfdXKtPUSNNNe85athmifoea9zA9r2cvcow5hrxDwUPSzt79rEJRS6gFGPtUTHRRZAUcHEsJ1NgsxQddSmCt5aRxD47QGQ5esiAtxiZHugJqW6wEowAGTfQiuDsYCNZz1t3QuvLEC6kFVrjSGV48dNrUovQoz9oEa5gmZUUdrdJAfURe8XDRVUu6z69zKpdVo9TZaWRTwFS1U2vqXmNsHCPMNwSLdBYn7UBJsnXYmtA98uWgoU2d9mNwnPgjhYowgXFJBvEwacXRwGFUTtJAqNhUsvRKyf8ndon1inKPNGAwYq1RFn6iGsLo8WNgR23UuostmqT9FQhJ5eBfwevHjca9jbkUxRDg17N18aMydQ1w143RhccDRDjFcbdAcVgxnxZTPLJR98rBJyyMMMzoAnQ7SfKspWivq6mPNNGE7KvrebxoJsdh7fgBEeAKtxvPM2myc6a91GoFADnortBcEaT1ikdpRrKJZtKFtWMthgv2L1Q9xk6uJut6vxKdWVqP5q8353oLv7Zx6DeuQXwQrogWikHpSETRzBUPCMTq6mMCHDhhCE1BJJF8fiHWGouTVf92h4mj1ALwopAxwdyLBDNjUg7nPwkopy7WEFjRna2Wne4Afb4cxSYkEofP8TJUrNuPWfCPpzi8Y79WPCEHBM2CKSUkDsaH57PR37ArEv225wBEQ85CH6ppa3PZ7EZ9CJ2GY9b4BWmfmuQJMaPmKHwTY5dbFXbLJiR8vjEn3kdjz8iu4wuoHWTQLeXg8FBgcnzfxLYjdXbvZY2FRrMyvxc9he4KXn7dY96wtDhJ62n5FKsNDNz2r4QzGQ7usErkASxwQYuDVYyQw8drFicoyMKYBiPCeDdYiiVidRemxyHA5v5gZcioWWwAZ8G4mayL35gtzuoxCENYd1WSj6JJpG1JTM3sERmV5uKHqrnVtPNBkpNeyjFZDx1v92PtBP1PQVprLDF9TMktpKsuBojeoUQ2Fh"},
|
||||
{decoded, <<43, 141, 202, 76, 80, 63, 120, 100, 145, 42, 168, 3, 140, 116, 200, 201, 8, 110, 105, 142, 33, 20, 34, 218, 56, 88, 31, 8, 35, 69, 174, 230, 193, 167, 222, 239, 115, 96, 155, 18, 172, 114, 222, 215, 198, 94, 52, 96, 106, 119, 218, 106, 220, 74, 86, 196, 0, 33, 134, 221, 146, 128, 153, 72, 216, 56, 205, 119, 158, 144, 66, 128, 228, 159, 82, 149, 85, 198, 147, 171, 179, 76, 18, 60, 11, 120, 149, 104, 75, 61, 168, 91, 134, 98, 148, 42, 122, 77, 188, 229, 139, 108, 222, 35, 243, 105, 218, 123, 100, 240, 20, 221, 42, 111, 36, 90, 9, 161, 248, 22, 137, 227, 93, 249, 203, 232, 180, 236, 1, 130, 148, 231, 160, 42, 242, 154, 182, 13, 187, 149, 173, 96, 59, 218, 57, 117, 49, 171, 193, 11, 141, 247, 198, 70, 29, 103, 187, 229, 82, 194, 40, 243, 49, 9, 241, 25, 138, 44, 154, 25, 97, 144, 122, 223, 213, 47, 206, 3, 161, 34, 130, 169, 6, 50, 88, 89, 192, 121, 75, 63, 235, 204, 231, 44, 188, 228, 102, 88, 219, 126, 143, 238, 54, 132, 138, 199, 167, 112, 186, 14, 81, 58, 16, 150, 6, 247, 132, 128, 85, 59, 59, 37, 161, 108, 32, 9, 109, 142, 56, 114, 112, 50, 206, 101, 163, 26, 249, 104, 215, 17, 112, 115, 113, 146, 197, 23, 43, 60, 43, 211, 150, 102, 213, 6, 207, 34, 48, 52, 99, 41, 110, 154, 104, 137, 3, 118, 66, 233, 253, 50, 1, 37, 160, 62, 233, 48, 12, 56, 98, 162, 230, 168, 240, 30, 182, 226, 126, 170, 169, 142, 155, 95, 143, 4, 15, 7, 63, 182, 45, 106, 112, 136, 159, 33, 117, 170, 127, 248, 161, 144, 197, 110, 99, 75, 150, 238, 150, 94, 1, 195, 111, 162, 190, 2, 236, 233, 39, 255, 246, 8, 18, 237, 229, 149, 184, 65, 241, 190, 140, 119, 234, 54, 69, 136, 23, 103, 22, 104, 43, 164, 135, 222, 135, 58, 81, 45, 232, 221, 107, 6, 23, 163, 155, 81, 170, 246, 254, 105, 110, 119, 105, 229, 146, 226, 128, 131, 214, 169, 208, 124, 194, 32, 242, 176, 135, 37, 181, 35, 160, 90, 206, 19, 149, 170, 225, 49, 148, 145, 33, 124, 52, 211, 237, 103, 99, 12, 193, 151, 155, 13, 197, 182, 1, 87, 233, 37, 17, 10, 145, 87, 183, 72, 246, 154, 107, 248, 65, 144, 54, 184, 72, 158, 180, 234, 144, 3, 213, 162, 163, 188, 238, 83, 151, 173, 108, 255, 116, 140, 220, 44, 243, 17, 106, 229, 42, 226, 94, 117, 201, 37, 242, 227, 231, 26, 108, 204, 147, 165, 249, 120, 136, 116, 114, 42, 166, 91, 119, 220, 214, 67, 162, 60, 252, 42, 139, 247, 181, 124, 216, 232, 77, 88, 101, 198, 164, 234, 15, 223, 48, 136, 0, 12, 220, 40, 84, 185, 121, 206, 107, 9, 90, 118, 136, 54, 124, 98, 223, 72, 232, 164, 204, 39, 36, 197, 41, 210, 252, 62, 218, 235, 120, 118, 136, 235, 91, 19, 107, 44, 29, 115, 182, 99, 14, 150, 5, 211, 47, 73, 190, 237, 14, 59, 23, 6, 223, 156, 243, 139, 199, 6, 206, 74, 7, 71, 17, 79, 62, 60, 13, 27, 105, 130, 108, 15, 37, 50, 46, 198, 46, 243, 107, 42, 25, 209, 152, 21, 127, 217, 189, 71, 70, 64, 88, 235, 147, 98, 81, 253, 250, 236, 238, 34, 121, 229, 240, 239, 249, 189, 107, 90, 10, 42, 254, 178, 226, 127, 72, 137, 12, 198, 241, 145, 40, 216, 52, 181, 150, 154, 31, 140, 233, 169, 143, 40, 51, 223, 173, 141, 210, 103, 214, 167, 55, 59, 6, 127, 61, 136, 143, 115, 253, 222, 96, 215, 218, 236, 188, 5, 182, 238, 171, 141, 96, 210, 183, 247, 197, 105, 215, 103, 228, 23, 42, 86, 218, 192, 116, 84, 42, 81, 62, 235, 41, 232, 59, 178, 139, 39, 148, 221, 165, 153, 14, 73, 74, 227, 250, 92, 186, 185, 103, 19, 131, 70, 55, 35, 180, 144, 204, 24, 213, 236, 162, 20, 125, 32, 120, 236, 45, 173, 235, 156, 116, 22, 253, 73, 20, 138, 102, 170, 253, 115, 208, 127, 192>>}}.
|
||||
{{encoded, "mTVEwa3Gu8ypUUMPXtoVxcHVe8V4nKA8jbL8KkNyUSjRSRpZwXhhJqjq5346MPUmnLkL4dUQWBDJHoZsmYTzjZyZfJmVHuJFecxUvWxFQeciLQpYpc3Lbdk49Tm4yGgogHniySiyGg13XA8XzMECCLuFD9v5eaCSmAaPrvr8NDAMcW7ibbhZnEwCeZkRxvpP6tVnV341TxNSmQaz7UGBkrJciaCFhmzsqfD9f4HEE1977Atw3iiPhSbzmPwcxKMyxhVfHBhLHsAHQ7b35USSYQMaS9j5dAm9sJ2pQYMEXEex2L9x5axZs7YxpHcxwRNVbSe2e6iuWbWxpSV1VCG432RsfAXMHQsXwqFbrEbavcoFW4f7nF3sfz7eZhwzS"},
|
||||
{decoded, <<181, 233, 197, 70, 229, 76, 201, 12, 58, 81, 234, 188, 150, 74, 87, 137, 58, 139, 141, 159, 121, 54, 97, 101, 9, 95, 129, 58, 152, 226, 246, 81, 65, 136, 30, 59, 135, 176, 204, 75, 67, 30, 145, 24, 204, 165, 13, 214, 119, 96, 47, 24, 147, 3, 80, 55, 96, 222, 191, 11, 45, 74, 110, 132, 142, 180, 186, 73, 96, 226, 49, 124, 207, 107, 159, 116, 188, 37, 111, 50, 53, 86, 193, 61, 161, 64, 89, 223, 214, 7, 144, 243, 200, 243, 117, 11, 242, 234, 22, 193, 217, 95, 166, 122, 217, 250, 7, 127, 92, 6, 144, 30, 216, 198, 96, 196, 232, 16, 113, 112, 206, 234, 174, 42, 2, 214, 253, 68, 240, 162, 215, 73, 95, 25, 51, 252, 231, 248, 162, 225, 172, 124, 178, 91, 94, 202, 77, 130, 25, 190, 159, 246, 145, 120, 30, 216, 253, 190, 156, 94, 45, 40, 176, 164, 196, 172, 242, 105, 227, 190, 92, 7, 125, 170, 91, 138, 152, 123, 22, 57, 31, 117, 54, 228, 77, 77, 16, 225, 164, 1, 65, 152, 110, 50, 64, 174, 154, 226, 96, 89, 252, 218, 245, 102, 213, 142, 77, 121, 60, 118, 53, 54, 71, 46, 254, 233, 227, 192, 56, 224, 177, 250, 19, 254, 166, 200, 1, 155, 20, 249, 5, 248, 90, 222, 197, 243, 163, 171, 70, 180, 134, 103, 4, 63, 67, 36, 168, 190, 84, 225, 45, 42, 188, 216, 89, 24, 80, 255, 174, 157, 72, 81, 23, 30, 151, 78, 229, 164, 156, 245, 70, 202, 244, 16, 152, 3, 5, 232, 251>>}}.
|
||||
{{encoded, "7UF4LDWRF8AiLaKM62183rzbK73e23vkPeZYAvTEBsgzRNvEqtwx1abEuzUwc61LfA1DwG4KfM5WgVGfR2VkbuQ44BYUzthv2HZTB7LvLW9MQ9RB7gENHtDcXBCFuK7vBnsbQL9qADXLKPmD7fJzyUsQ4vpLtbBsRfVY6NbZWw15u3db9kdx66cvJLjoHKqqi3oJ2e5xJgDZT7q95fovEzqEef2zvXMMxgsVqdwfbnXhAaiwnxsq8Utz2RXcWrobzUGy3XEDf2XrYyYpsbVUTQVtDqFtEw9fzF8n7C9h4ocU5kptaa7fgnmpk9fqiSKVSZA6RognFaySksQM1DU4m9R4KWRbJvMCQS7ynqhu1LwuD7az4UgPHtTUFBqNrAhHUvqXQx3fkkkkLeuG1jD44YTZVkpovPV1H5FfdJkbMM1reNzBjJRiZTvjVHKXMnUovP8KNWfeU7D5cP85xVD6Tm8XE9H3rX2WiCCweUeJQDx2YLmRUVjkhyKSA3NPoUSK2x8jdQkdAZdN4qwZZfToFruXLefjYGvvoTJebwyhJxA1NXgi1WpwhJzaNAT43wQSS5ZeB6m783q5oozL4XNqwvoJktYn29kp7y7XDMA5DaSjqVYQLZAG6qugwY9VnkxopiFCUHk9f9jUtvZfzxHuj5ESnNkQUTrwghnDRf22DyqmvhbEz4CcxLHh93nqDMZCdfNMLBEwaJBTPKCXMSpVGY6ydNds4KZZKgWgAoWCYCiF1ShWL53xEznDyhianZxiaMKFkeC9BfvWFGsX1EAPTNvrHvWG8cbMsiCntA95dCguTtWC9xaZj3UVnRQNvYRXDpDtSJgvKFjDRqw3oJk2G9hpRUpxahDnn84zAY6PJAHH7AUdDichXPxbMVtmiicuc1XxZvrEFjC3mtAWtUw9BPjkd1ZUSyVks8sSCQUAmU7K3JE2nhLm1SPDd778F9dqVcz3GoQcLGz8evpeAuXTkx4nLYbYjGygPEhR2d22LWA4dh94V5jwxF6Hqf4XXJAbhmi7Ba6Wqs2LxNBYfapjEEDTCquMZCgC7jHHCzYUg96RRUxuyEsaseawP8ivbRhtyiFoeNHrc4wR8vPx8ZoSB1B6qoGzHZsWfRzcNMFMREm8paAXZo6kZGrkHTHGAPjYiSaakCLHoWKUKbcps8ADkrfLTTUMqg5tmvcc1XTdmhY9DUtUKnU4pfcdvhhk48bQoP9o1ymJcE3LhuxU9EgaNkLjVC4EEwTZM2oMEeS8cmaJX9Qz2H19cTY3zU5v12u71LF5rJRBNf8"},
|
||||
{decoded, <<179, 170, 192, 143, 192, 106, 87, 83, 233, 1, 172, 179, 24, 194, 207, 111, 159, 97, 88, 42, 242, 143, 217, 56, 79, 78, 129, 155, 54, 48, 36, 229, 36, 49, 84, 151, 132, 237, 170, 58, 213, 8, 48, 247, 114, 33, 220, 112, 67, 63, 232, 208, 137, 143, 240, 69, 100, 218, 30, 122, 228, 55, 138, 2, 135, 176, 164, 184, 197, 65, 105, 232, 224, 141, 244, 152, 39, 182, 103, 8, 214, 9, 197, 3, 203, 80, 243, 110, 77, 156, 136, 141, 162, 248, 31, 130, 118, 96, 60, 229, 133, 91, 17, 147, 39, 153, 12, 132, 175, 93, 42, 139, 146, 140, 28, 244, 209, 43, 22, 59, 194, 34, 117, 252, 1, 243, 209, 160, 242, 207, 36, 23, 60, 166, 213, 191, 136, 123, 200, 107, 144, 184, 71, 42, 54, 70, 119, 83, 21, 150, 66, 21, 69, 240, 32, 159, 200, 37, 194, 142, 49, 217, 42, 174, 60, 109, 119, 228, 155, 27, 203, 170, 125, 131, 47, 109, 154, 156, 164, 29, 159, 217, 228, 243, 217, 245, 239, 156, 185, 35, 190, 207, 131, 58, 77, 154, 146, 22, 51, 52, 116, 90, 25, 48, 56, 133, 206, 113, 179, 198, 193, 249, 253, 97, 171, 239, 52, 27, 190, 110, 10, 145, 83, 27, 129, 196, 233, 136, 17, 155, 245, 17, 78, 237, 235, 12, 238, 115, 101, 58, 122, 27, 27, 105, 233, 88, 127, 14, 218, 96, 12, 250, 232, 109, 53, 35, 46, 85, 15, 233, 69, 154, 39, 107, 109, 252, 127, 243, 195, 29, 9, 51, 195, 37, 246, 162, 200, 234, 75, 94, 59, 229, 235, 7, 53, 67, 123, 150, 21, 26, 51, 84, 214, 44, 243, 182, 39, 17, 72, 171, 248, 105, 253, 100, 200, 96, 216, 220, 222, 4, 171, 90, 68, 79, 230, 123, 235, 204, 217, 254, 93, 167, 230, 4, 175, 234, 66, 153, 93, 157, 191, 121, 122, 42, 200, 124, 251, 123, 251, 83, 14, 210, 154, 97, 50, 161, 197, 34, 43, 183, 8, 47, 119, 25, 113, 102, 43, 142, 177, 151, 105, 49, 103, 190, 205, 240, 244, 60, 64, 207, 38, 205, 157, 137, 23, 8, 223, 153, 213, 28, 97, 53, 109, 203, 65, 215, 135, 168, 129, 200, 28, 68, 81, 12, 220, 219, 181, 13, 52, 245, 135, 15, 230, 195, 127, 236, 51, 4, 66, 78, 9, 197, 190, 59, 76, 125, 44, 74, 62, 234, 62, 176, 14, 80, 254, 83, 111, 34, 7, 32, 212, 91, 2, 238, 95, 239, 133, 136, 205, 150, 12, 9, 194, 238, 16, 170, 221, 204, 23, 183, 109, 216, 82, 25, 146, 235, 9, 199, 60, 129, 219, 146, 1, 182, 235, 226, 219, 120, 89, 253, 78, 24, 234, 57, 245, 221, 43, 63, 168, 192, 133, 155, 40, 168, 233, 92, 47, 58, 218, 229, 188, 165, 221, 243, 113, 159, 36, 252, 3, 66, 227, 109, 2, 31, 211, 109, 185, 3, 143, 213, 196, 170, 123, 0, 42, 67, 40, 235, 248, 40, 112, 110, 19, 177, 213, 38, 27, 121, 98, 215, 148, 114, 177, 192, 217, 143, 84, 52, 106, 68, 123, 5, 138, 17, 74, 126, 145, 188, 184, 159, 166, 179, 174, 211, 49, 3, 192, 182, 144, 153, 190, 147, 122, 31, 246, 44, 93, 105, 250, 91, 212, 25, 197, 250, 61, 73, 75, 230, 45, 150, 89, 147, 128, 63, 209, 91, 3, 191, 233, 235, 184, 82, 234, 194, 208, 57, 65, 152, 51, 211, 218, 163, 147, 225, 187, 182, 8, 138, 12, 181, 72, 106, 4, 215, 246, 237, 116, 78, 172, 120, 78, 3, 11, 220, 139, 5, 55, 35, 85, 154, 13, 224, 8, 180, 88, 223, 106, 169, 228, 149, 168, 143, 252, 255, 83, 169, 33, 69, 138, 182, 205, 104, 180, 180, 45, 16, 5, 228, 221, 4, 102, 33, 84, 191, 59, 190, 219, 171, 95, 175, 110, 169, 21, 121, 176, 7, 229, 43, 215, 136, 202, 109, 33, 233, 106, 134, 98, 200, 219, 101, 220, 245, 112, 138, 106, 31, 13, 210, 155, 132, 241, 232, 9, 91, 210, 187, 185, 76, 2, 120, 60, 255, 40, 186, 134, 31, 55, 148, 65, 115, 132, 198, 184, 201, 121, 34, 182, 111, 63, 118, 249, 104, 222, 244, 245, 190, 9, 127, 28, 28, 231, 89, 90, 185, 118, 14, 234, 152, 255, 215, 239, 87, 178, 86, 14, 121, 215, 222, 241, 115, 190, 18, 49, 179, 169, 78, 94, 163, 32, 49, 152, 177, 96, 70, 127, 226, 9, 23, 63, 255, 232, 171, 152, 211, 227, 24, 87, 105, 61, 64, 255, 245, 142, 222, 119, 40, 195, 119, 165, 120, 156, 221, 92, 56, 25, 243, 129, 44, 112, 187, 155, 62, 44, 82, 147, 142, 4, 78, 235, 226, 79, 255, 220, 56, 142, 249, 149, 97, 94, 12, 228, 123, 158, 10, 195, 227, 55, 59, 229, 180, 205, 21, 15, 214, 220, 221, 4, 219, 69, 189, 121, 35, 156, 28, 12, 111, 228, 255, 220, 31, 96, 108, 12, 26, 164, 63, 38, 210, 30, 187, 143, 201, 243, 255, 47, 71, 44, 230, 77, 103, 217, 17, 246, 221, 23, 34, 159, 54, 148, 5, 101, 157, 147, 44, 244, 132, 175, 75, 242, 157, 0, 227, 199, 35, 166, 69, 225, 170, 199, 235, 244, 209, 215, 188, 54, 99, 247, 73, 146, 81, 33, 153, 132, 85, 46, 96, 159, 205, 16, 49, 190, 184, 87, 104, 142, 177, 157, 162, 126, 141, 63, 206, 17, 211, 135>>}}.
|
||||
{{encoded, "46J4FTyPt8Xt3nso7cafRvsqsthxfXpJTrfwZkWgDqZdS63wdhACH7H9XQpumoTh8NzpEwtYWS1Hbca7NmXgRfsbDoAARKbSLNKk5vkW41AvymNmMrocus2Zai5W2Usry3AeGjfrTL8RLycdJNZsAbWwmVPrYwRsWQ1Jx5KLBZhimi1EsPkjAKNYG84xbTmG6Yy33mFjMdkqa9QwkJBgDi3NVhx2sLxG1USRy4LmsHkvZUz2NXSRwhRbHfT4izF48PWXaEHMdaXYPpFUgkrGDPsMegKQXGexgT4k3Y5NDQJgKNZ6p7zTmdypMEH1Y6pVJyVr5xVED6pywnt6XXNzNTjBaxJPgWezHR9rhjYjqHCKmTE8Rnzs9n27W2D3s8JLfxUsAydTBt316e2KH3vELGZoEeuYJyhM6Lh4wyGyXa6RsNN4WBJP3C1JYFEa67GuWqnEGtTMa9dxXC4CP8v3WL437hRjZPVjBLd6JUWGLR1wnhPtG1byd4dokmTHrgMDahteGnK8pBw8DsM7fNkgXrng61aycxjTaCJqqQbiRy6ANo8EU6D9LZBTJiAzYURkRJs4AJRGSot33a75dv3yabTBYyJnpneCscTLHZyq5GsXtqDGvpBAWm2k3CfUPcEpQ4vxSmKYXyqJxxtb4mdiqyTDgcJSfrasfhg1z1Af2EM1aVt3j8bH1RFidf72jturoCPyzgDFJkqWiGZ9EJExsHC2dgGRBw5cP1hupRBP33XEDgKqCH8GQbMTx18YZL2E5QJbnZbA2EXs4tTqWTkH6"},
|
||||
{decoded, <<3, 73, 188, 225, 130, 186, 60, 213, 25, 28, 18, 34, 241, 128, 233, 122, 231, 251, 237, 83, 62, 39, 25, 69, 48, 3, 66, 118, 178, 163, 37, 46, 35, 210, 208, 244, 238, 4, 212, 7, 2, 248, 232, 7, 178, 24, 74, 167, 246, 39, 248, 41, 85, 210, 96, 220, 196, 37, 209, 45, 101, 36, 46, 213, 26, 72, 175, 55, 133, 128, 6, 244, 92, 183, 150, 4, 137, 32, 19, 194, 81, 203, 83, 140, 63, 95, 59, 31, 192, 52, 98, 181, 168, 244, 99, 51, 111, 115, 186, 55, 160, 136, 100, 55, 109, 132, 182, 31, 101, 231, 28, 57, 255, 172, 211, 187, 118, 58, 213, 35, 44, 188, 135, 178, 240, 238, 231, 188, 39, 154, 204, 196, 123, 161, 117, 171, 152, 218, 181, 76, 164, 16, 142, 50, 229, 254, 41, 166, 205, 76, 223, 118, 168, 71, 165, 100, 65, 174, 182, 235, 164, 232, 10, 254, 125, 240, 33, 83, 87, 53, 255, 116, 46, 56, 201, 118, 140, 208, 235, 108, 170, 196, 201, 95, 180, 242, 110, 9, 59, 162, 27, 28, 226, 87, 135, 174, 48, 25, 76, 168, 80, 184, 239, 67, 214, 62, 114, 100, 226, 242, 178, 107, 38, 193, 122, 29, 97, 240, 162, 22, 184, 48, 113, 25, 138, 84, 59, 135, 72, 186, 206, 207, 30, 66, 23, 41, 65, 47, 196, 31, 189, 126, 217, 41, 178, 98, 136, 0, 242, 62, 67, 211, 206, 40, 100, 219, 83, 175, 49, 122, 225, 236, 52, 101, 128, 20, 132, 195, 214, 165, 225, 46, 34, 102, 189, 129, 138, 116, 117, 171, 19, 15, 181, 62, 63, 59, 167, 53, 179, 143, 242, 223, 94, 29, 53, 234, 109, 20, 3, 246, 194, 164, 14, 23, 156, 169, 27, 244, 216, 250, 85, 89, 30, 143, 78, 61, 20, 92, 30, 32, 203, 153, 162, 36, 39, 153, 139, 57, 170, 184, 216, 6, 201, 173, 124, 76, 191, 75, 218, 151, 176, 179, 52, 103, 127, 224, 164, 117, 88, 162, 126, 88, 106, 149, 178, 247, 179, 176, 25, 196, 41, 84, 171, 49, 66, 44, 187, 225, 117, 48, 218, 200, 101, 78, 64, 116, 116, 125, 29, 209, 132, 254, 220, 171, 0, 88, 113, 203, 105, 130, 104, 107, 115, 15, 65, 40, 79, 201, 68, 135, 33, 53, 154, 56, 104, 146, 186, 209, 213, 252, 212, 15, 16, 89, 38, 20, 90, 125, 168, 225, 246, 101, 80, 233, 92, 92, 48, 204, 99, 235, 79, 2, 114, 76, 235, 102, 21, 73, 96, 195, 235, 69, 144, 128, 121, 172, 81, 126, 20, 87, 21, 111, 28, 215, 108, 3, 175, 77, 126, 4, 109, 59, 26, 218, 58, 121, 253, 50, 73, 185, 242, 38, 121, 187, 16, 160, 204, 237, 129, 233, 82, 234, 49, 201, 124, 196, 63, 149, 206, 56, 53, 138, 128, 229, 113, 34, 86, 48, 179, 153, 134, 134, 40, 247, 205, 252, 177, 242, 162, 67, 47, 118, 73, 255, 43, 30, 0, 165, 103, 106, 162, 32, 184, 61, 181, 17, 241, 2, 84, 70, 100, 150, 64, 127, 103, 105, 22, 16, 4, 133, 77, 203, 20, 65, 133, 134, 219, 18, 53, 28, 133, 53, 219, 236, 161, 166, 1, 212, 132, 61, 18, 191, 163, 83, 234, 171, 34, 241, 212, 166, 126, 215, 173, 177, 88, 80, 74, 145>>}}.
|
||||
{{encoded, "K5VTvFmvTyt38rDqXyVVKJXR1E9Ubf8BqrZ"},
|
||||
{decoded, <<10, 45, 186, 152, 110, 210, 194, 236, 55, 27, 205, 27, 91, 207, 227, 102, 226, 25, 4, 96, 201, 15, 82, 179, 2, 186>>}}.
|
||||
{{encoded, "66JbWnjEmDAP6BbAet3EiVq4tPKHRiVEsnhh8Sb894U2yej6UtTa2oijaKu8yczwaHtGAP7zj15fCyvxhuCRU5KURPWwM5WFdaXY1ULwhUKpFyYYPUgRhVYHrGEAzcQsf3zpiR3YVn1cSaGJVtpnWBwyYRHAZS5E8zRscWBBj2aQtBkB2NYvAnf3j3Sc9zjCG6FEMyTKVPm2zBWyVopowRbG5eLdeksY2osmwKN27REr36bdFTn1Wz3ab3gjAir6hn9M4awSiNVSzMZFNuEMd6bDJV2jCs2oUyYfXfDGKTtP4fVfrJQgcDj7dSvoz4wrhANFdFaTsM7K6VfwEL8o5XRo5E6JvbAwsGAmsaPgp7LXt4R7wfZGt9sjWYNY89j5Cd4nm6bC7nc4fZwWnRAwgjKXDM9EquGGEGDx6XWWxukHSu4NsjrcwvZrxw1aZ783x2wog5nGfAPsVAPk7n84wzBZNaDH2sZSQAYVJiZw9TVcngjd49raRRLzSQQjyvaRSTyCtSzjPeTxinD9JD7NP9DjkVC1Lzk1BytNTT2BZcgrRZi5kFEjVs5nnGZwtMYpCsn6JPAi451wuzuKwBD5oy1b9G65PUE65j8VhweadA1q1fpW8HN1KoKsD7DBP1Zr1ZVJ2Ld2pXg1ZSdRd7tfg3geUF5o1DZMaCSDBvZjr6EzMAR565yK4bu6yzL3MwhbaiDkeYAn7UTh8y4U8wTooNJrNasNdqBpM59ib5EWRH3TEhZe561voLzs3K9a2DdrfztRDfEYxyk3yyAVcSpBYy4MScVioSWDGNNDpy2nR4hpJBnvneT2Hg8UBQTaVADKMXkAmo42ukxaJodHf9787RXqNK3SsYnZHakU2NvUkAXpeYKNtL7frqSY119k7CVZxxzrBjopvPEQassfKZUdTJbCjiXtaTyEoh5aPPJugUZ6xs5cqMLSxfb2q18sqYZ5bwVoKqwAv5yUwxGyXBYcGxucB6REpMdPUCdKgEERubkxuiErr48U2ZX9eNFWvMDL9J1aLW2q4CdEg6qDHxRgD3iZDDsmqkaEEqGXfwWuDaxVc6kuT4FTTJCUfzNtbpXFwzCwCF1pF1PSE6bhFoTcpTBEPWxpdQDauAMU9SGe7ekKQsMCLdbEZpbhRpaQvavzuzuUvC3edAG1mEC7ZdfMDxJusYuZ4rSW29rZNYteHgejiCASeEY285DB7mVMP68mQzuCw4EELc54hjYAS9Tu2rwW3eGF6Lqv3i9hfLywqFHGBoqQsVJ1XsPXAGasxayVwA6tHVpsin1HuSfm568nCzXJMSVeNDwN9jEzMe8pQwZpBaqR4z6B"},
|
||||
{decoded, <<159, 223, 88, 149, 100, 0, 22, 203, 197, 53, 223, 132, 22, 240, 130, 23, 31, 187, 31, 54, 213, 56, 153, 144, 80, 200, 234, 100, 187, 154, 74, 122, 199, 55, 236, 252, 44, 28, 56, 158, 105, 186, 155, 80, 51, 135, 199, 82, 221, 48, 0, 60, 215, 100, 186, 44, 254, 205, 210, 50, 81, 180, 111, 112, 188, 141, 57, 49, 146, 74, 82, 29, 142, 200, 93, 243, 236, 202, 154, 146, 14, 104, 240, 164, 251, 252, 237, 148, 55, 21, 222, 84, 42, 162, 228, 38, 168, 193, 86, 252, 40, 5, 169, 130, 235, 194, 95, 138, 234, 97, 177, 172, 30, 79, 47, 126, 224, 24, 198, 244, 134, 159, 12, 2, 40, 105, 17, 236, 51, 121, 33, 73, 168, 220, 155, 150, 155, 162, 183, 208, 191, 81, 135, 53, 237, 43, 223, 187, 80, 110, 77, 13, 246, 112, 171, 182, 101, 60, 135, 178, 128, 164, 40, 1, 243, 47, 218, 67, 228, 128, 241, 249, 146, 48, 224, 87, 127, 9, 119, 60, 39, 204, 111, 40, 75, 242, 69, 84, 59, 254, 175, 26, 239, 87, 25, 136, 97, 207, 151, 165, 154, 52, 58, 238, 17, 168, 152, 213, 220, 224, 42, 232, 225, 160, 107, 1, 142, 245, 229, 224, 147, 170, 139, 117, 204, 98, 58, 189, 22, 12, 227, 123, 177, 144, 94, 90, 141, 234, 59, 122, 141, 139, 150, 186, 237, 100, 216, 127, 237, 140, 103, 177, 57, 115, 252, 172, 22, 134, 209, 209, 163, 138, 58, 41, 59, 49, 251, 18, 0, 229, 149, 216, 206, 202, 206, 8, 214, 142, 101, 239, 66, 149, 2, 141, 123, 27, 61, 155, 133, 6, 209, 158, 113, 206, 157, 25, 95, 185, 29, 229, 38, 32, 136, 236, 242, 35, 35, 8, 255, 121, 45, 59, 177, 9, 228, 87, 119, 191, 117, 244, 35, 132, 204, 139, 36, 200, 65, 156, 16, 223, 33, 231, 16, 163, 35, 154, 55, 214, 23, 187, 67, 134, 68, 87, 21, 239, 85, 184, 126, 33, 19, 139, 26, 197, 13, 209, 60, 33, 49, 27, 34, 164, 134, 229, 80, 87, 247, 75, 25, 206, 186, 28, 183, 240, 91, 111, 223, 1, 204, 24, 16, 245, 47, 58, 47, 202, 185, 121, 90, 49, 14, 128, 3, 237, 226, 222, 226, 7, 21, 180, 24, 46, 63, 238, 120, 67, 84, 76, 32, 13, 19, 150, 218, 217, 48, 172, 175, 28, 218, 245, 240, 190, 238, 150, 23, 181, 107, 87, 236, 242, 145, 83, 47, 22, 250, 52, 203, 46, 94, 62, 237, 40, 82, 246, 195, 54, 63, 113, 230, 183, 8, 76, 111, 14, 166, 34, 4, 6, 189, 160, 92, 89, 168, 57, 219, 163, 234, 97, 214, 70, 206, 234, 36, 95, 94, 155, 27, 180, 227, 209, 208, 64, 125, 42, 190, 33, 86, 150, 165, 228, 3, 185, 99, 70, 9, 20, 38, 75, 0, 162, 208, 51, 119, 98, 44, 53, 195, 207, 103, 149, 6, 254, 228, 92, 202, 208, 39, 91, 159, 90, 177, 127, 224, 217, 143, 112, 230, 246, 24, 204, 27, 240, 225, 10, 219, 70, 167, 164, 160, 220, 87, 210, 35, 199, 68, 249, 195, 150, 91, 68, 82, 27, 165, 234, 174, 240, 128, 80, 205, 150, 201, 79, 88, 107, 38, 170, 152, 171, 131, 171, 27, 152, 4, 50, 104, 178, 166, 171, 231, 77, 86, 217, 156, 118, 121, 48, 247, 115, 9, 38, 209, 42, 101, 47, 131, 56, 162, 197, 121, 208, 156, 74, 105, 235, 102, 100, 242, 40, 88, 170, 79, 188, 201, 28, 189, 184, 86, 129, 14, 55, 220, 106, 151, 239, 88, 93, 251, 21, 16, 210, 36, 162, 30, 232, 157, 207, 187, 108, 196, 21, 0, 162, 52, 56, 127, 229, 31, 227, 211, 43, 171, 61, 167, 98, 194, 86, 210, 137, 0, 186, 15, 98, 152, 27, 0, 222, 85, 198, 224, 112, 127, 226, 122, 86, 213, 26, 208, 86, 84, 213, 59, 137, 174, 100, 33, 150, 131, 79, 27, 215, 53, 115, 209, 95, 65, 75, 229, 133, 217, 122, 99, 70, 207, 109, 95, 214, 226, 111, 130, 112, 191, 207, 211, 171, 252, 163, 67, 85, 47, 115, 130, 108, 128, 170, 239, 253, 173, 140, 217, 34, 71, 44, 60, 176, 204, 193, 106, 163, 148, 200, 57, 95, 80, 12, 174, 104, 22, 31, 250, 169, 124, 172, 102, 213, 46, 52, 230, 96, 115, 50, 115, 53, 252, 203, 253, 175, 107, 232, 25, 115, 31, 39, 29, 92, 23, 53, 63, 52, 176, 159, 230, 0, 89, 66, 92, 199, 36, 19, 159, 166, 156, 14, 62, 254, 34, 123, 14, 181, 193, 136, 254, 161, 45, 85, 212, 60, 112, 85, 131, 32, 137, 143, 236, 194, 17, 192, 43, 185, 94, 66, 165, 207, 145, 78, 44, 45, 107, 69, 161, 66, 16, 26, 26, 75, 225, 10, 229, 160, 111, 139, 235, 105, 116, 221, 181, 231, 205, 172, 38, 166, 201, 93, 95, 179, 110, 75, 127, 223, 125, 171, 119, 181, 174, 101, 72, 185, 167, 208, 30, 106, 78, 144, 136, 49, 227, 74, 73, 100, 52, 28, 236, 155, 214, 59, 146, 254, 118, 70, 49, 185, 21, 110, 128, 103, 105, 87, 5, 252, 248, 47, 10, 51, 55, 88, 40, 251, 40, 250, 213, 156, 109, 57, 15, 1, 112, 41, 19, 116, 124, 21, 74, 174, 30, 45, 106, 109, 49, 163, 147, 155, 170, 202, 141, 211, 127, 118, 168, 227, 216, 251, 80, 162, 84, 174, 206, 32, 45, 137, 206, 177, 179, 2, 69, 205, 26, 252, 105, 195, 157, 208, 136, 104, 133, 82, 187, 90, 147, 215, 55, 83, 9, 252, 235, 74, 104>>}}.
|
||||
{{encoded, "qkM1o64KTtt9jr3G5fS3mk1u486sWuEDTb2ZvwdJvrE7YBk111mhg241QFseHC7hkBGY8NLq1gjKsGBnJ7fATGXerQDcd4AigjobRkkmxnq4EKgGrF1FJ5C9PJUNPLXpdU8RytMYCHSiNES6X9panLSfbLYeD3JcUtDrzsJNpMNe1rkQijeYaFMFyUvag8ARjkuG8HvLigKPtC1dw2FuucVrM3qvNUUcWRT3D2gw2Lurapev5AGvbPC9mbMJKhkDsx6L4iAFR31jhf8msYb6WXm9s8AFkoFqYCHUHJJyrSyBsHwvkNkD1yXBH3oGUoRiVEpFYNgQUM1JE7q5jyw7afHZ4zUombxwvxuTxre9ZTZRMuAuBVCQgdskVkaPVKve95KsiYWr9YKmUbsapbXn3mZJZVEzqDG3ANxqi9cXsJr2iRUC6MeuvXjepGZVye6XMsg4FmFAHN4DuAhLeTqUQCNSpHCM7rwyujskAxZqu7BtdFGxu1PrBVqewE326JLee31HXNrNhURzgQ49XQrqZ4M3pbwVzAs3gzMX1w7UPGrLUvsaghiYEcTmyJ4PgiZeaJeYNvR9rUbjYcbjyHW1mkanqpuifyhca8o2sZSe2uPMESyW"},
|
||||
{decoded, <<140, 3, 47, 96, 9, 170, 223, 58, 113, 244, 221, 34, 196, 179, 236, 95, 29, 143, 152, 147, 189, 167, 100, 236, 121, 131, 98, 230, 2, 148, 86, 220, 247, 28, 161, 251, 112, 155, 247, 122, 137, 5, 173, 73, 148, 117, 96, 106, 254, 226, 230, 215, 122, 201, 39, 255, 188, 186, 174, 54, 178, 121, 80, 244, 248, 186, 250, 119, 159, 101, 146, 201, 146, 22, 187, 158, 177, 88, 2, 87, 91, 133, 81, 55, 168, 224, 146, 90, 206, 158, 212, 80, 127, 145, 132, 174, 32, 136, 185, 107, 113, 235, 246, 194, 71, 130, 62, 244, 92, 220, 168, 211, 240, 70, 223, 58, 247, 190, 32, 17, 245, 235, 79, 61, 39, 165, 131, 26, 77, 16, 70, 194, 111, 228, 118, 226, 92, 226, 110, 166, 129, 189, 12, 59, 232, 54, 148, 159, 246, 248, 201, 68, 113, 254, 151, 186, 147, 103, 160, 224, 139, 246, 254, 215, 54, 194, 91, 220, 76, 228, 123, 116, 189, 151, 81, 250, 91, 107, 112, 247, 59, 7, 227, 104, 255, 215, 204, 2, 145, 154, 147, 251, 254, 195, 203, 92, 92, 46, 175, 60, 72, 70, 167, 162, 101, 185, 214, 199, 131, 54, 70, 75, 64, 128, 98, 12, 138, 24, 131, 88, 103, 157, 87, 127, 183, 198, 77, 179, 113, 238, 12, 46, 238, 132, 234, 179, 110, 5, 43, 49, 182, 12, 45, 35, 117, 65, 53, 89, 201, 237, 158, 90, 96, 181, 92, 207, 156, 163, 134, 39, 215, 63, 61, 142, 228, 116, 70, 253, 174, 193, 91, 210, 78, 87, 154, 121, 91, 236, 206, 16, 231, 11, 119, 229, 57, 64, 79, 229, 135, 31, 9, 173, 250, 15, 126, 18, 247, 196, 234, 174, 108, 123, 161, 151, 85, 228, 134, 158, 98, 211, 42, 184, 66, 167, 5, 15, 89, 116, 86, 221, 58, 52, 39, 167, 50, 14, 53, 181, 187, 39, 98, 64, 32, 121, 187, 242, 106, 79, 188, 64, 27, 118, 165, 43, 68, 82, 114, 96, 74, 129, 148, 5, 149, 215, 25, 159, 164, 216, 129, 250, 14, 25, 48, 113, 127, 251, 100, 6, 180, 187, 11, 22, 69, 8, 126, 97, 22, 185, 20, 44, 14, 130, 55, 194, 243, 230, 240, 25, 234, 72, 240, 72, 29, 96, 81, 153, 142, 101, 103, 13, 230, 124, 129, 19, 139, 118, 79, 34, 45, 146, 207, 199, 208, 71, 42, 36, 138, 117, 194, 176, 146, 142, 87, 117, 116, 164, 80, 236, 83, 180, 254, 144, 144, 47, 224, 183, 130, 239, 71, 84, 162, 96, 135, 173, 26, 62, 82, 173, 68, 250, 26, 123, 234, 190, 79, 40, 217>>}}.
|
||||
{{encoded, "MHmBTWVWm7AB9HensMxH32pSsR1gHCiaG8fQF3VUbZuG5YpDaPyqeqfZXNMgsZJwyT3JghMhEJrqnwqPv7Bdo1FEiUkbcs5cwh7h7Qf6CtGq3esHYcFuQ32iRZjiowmGtf8qSUG9PV3sMcJYXojeeqBuhNsGqevSqksNnfNkUDj2EzbJUCwD8PkxVVtc9SXnEeqCg9oCryrfTcctMqFSwcSyRa6WgKKL8Cbv34y3WZ3MB2zyzkQ96HTM2mjL3qtt9c4RywmZzdkMFTRgNs855g2QkcyAk7QQm8CZTUJNJVP51T7ZmGkgXGHTCm4hbhwG3cHdBfu1utRrh6EehgHTnA5H7phpRRTp3WYJSUAEfMdeLG8pFmJdi5TeEXPeQpM9Y3bKUyWjC6BNUKSvQH1ekF1CPRjEbgUyxWKHrobr8wGVseRTBTDMPXtKxVc39LCb"},
|
||||
{decoded, <<116, 44, 70, 71, 192, 251, 134, 202, 181, 169, 101, 168, 165, 58, 57, 191, 186, 126, 39, 82, 128, 245, 144, 218, 105, 232, 177, 163, 26, 203, 2, 241, 26, 143, 171, 161, 52, 209, 16, 147, 181, 217, 176, 123, 203, 89, 1, 135, 116, 161, 93, 3, 162, 112, 6, 150, 166, 189, 138, 66, 114, 221, 3, 135, 99, 92, 143, 232, 70, 235, 139, 105, 216, 31, 137, 238, 24, 125, 193, 148, 7, 161, 134, 113, 234, 123, 158, 207, 75, 226, 166, 12, 105, 9, 150, 137, 10, 90, 125, 214, 211, 106, 56, 229, 202, 133, 178, 115, 143, 3, 174, 65, 75, 166, 43, 107, 216, 77, 61, 8, 46, 176, 47, 95, 56, 193, 183, 160, 69, 22, 35, 154, 93, 195, 82, 156, 109, 4, 6, 130, 195, 239, 48, 4, 39, 17, 51, 213, 130, 250, 244, 55, 24, 42, 133, 203, 9, 80, 231, 239, 231, 180, 231, 235, 198, 20, 152, 90, 166, 205, 41, 171, 179, 20, 177, 20, 131, 125, 246, 65, 214, 254, 2, 121, 112, 106, 18, 242, 98, 193, 23, 57, 64, 47, 106, 108, 66, 153, 255, 99, 157, 105, 18, 65, 253, 183, 5, 40, 46, 114, 235, 143, 46, 49, 196, 245, 110, 0, 65, 132, 43, 24, 159, 153, 21, 96, 127, 146, 44, 163, 105, 152, 195, 25, 33, 120, 73, 111, 27, 5, 175, 30, 182, 217, 251, 82, 166, 150, 95, 247, 153, 82, 72, 213, 167, 227, 207, 225, 74, 192, 183, 65, 153, 246, 90, 66, 157, 32, 191, 189, 14, 170, 58, 74, 165, 139, 159, 80, 104, 213, 194, 215, 245, 203, 224, 73, 242, 21, 16, 148, 246, 194, 97, 5, 165, 76, 251, 251, 112, 21, 78, 62, 240, 152, 37, 230, 217, 157, 220, 209, 18, 31, 242, 23, 165, 20, 158, 189, 112, 47, 62, 121, 201, 82, 148, 151, 213, 12>>}}.
|
||||
{{encoded, "MLSiUGQNzymCMHG5Z7hvAwZ5v4xmSuvjieJkoiN2vEzqnxhh5iRhadcSg3Uq7rKFAhJZTuvzFerG4fjLxv7o4BgsMCNweuMKz6uT9L1Z5uoAZLNzesAyywXtVzZQaHqgpMEod6zYt7L85qbsx4vbY5rjXDSgTUWpES66zirNvq3xZbmPfqVvDzSjHysgVVdFUyMzWQvdcDkTVnMfiLbVm38Vq71mMwjc1xL3ZHsreFWcRHds49UePJs71cfQ8DpX6JEZkFr6EoQGDS18JyafYEKZhJ36Bm8wSAJzYbgahnDVSYtM4xumhVsDp5Vij6PRPXjduobSTErCtd3habnFnELCzCCqw7fpLrX9S4UDtiG28TNWM23qPtH3FUQL2Za7PRujA7SYvibnj6KabXHSEkoLQK61YTDtdr2DCBQALyssKuSNmKxDDan8akk13SDndb3VhXDWfJyUhVkAbaS4EGoA"},
|
||||
{decoded, <<10, 247, 72, 30, 218, 2, 66, 29, 98, 167, 13, 77, 220, 115, 77, 166, 118, 170, 169, 22, 79, 179, 146, 62, 59, 174, 206, 169, 7, 76, 235, 20, 221, 72, 122, 98, 33, 47, 3, 137, 92, 14, 121, 213, 221, 179, 243, 2, 142, 96, 11, 87, 77, 177, 49, 33, 78, 117, 217, 144, 205, 72, 13, 47, 200, 208, 101, 112, 152, 126, 15, 175, 72, 203, 183, 138, 218, 194, 199, 72, 64, 128, 181, 73, 110, 43, 60, 164, 53, 46, 181, 57, 111, 46, 221, 131, 69, 204, 108, 34, 28, 214, 23, 179, 162, 152, 93, 184, 74, 160, 15, 20, 232, 102, 193, 249, 0, 190, 98, 198, 69, 202, 117, 183, 211, 101, 164, 164, 162, 109, 8, 12, 253, 58, 97, 55, 127, 183, 241, 94, 2, 99, 14, 206, 105, 53, 71, 168, 73, 162, 82, 238, 121, 237, 206, 132, 127, 72, 159, 14, 173, 244, 243, 214, 67, 96, 212, 178, 49, 7, 135, 105, 40, 7, 245, 141, 124, 13, 80, 152, 121, 111, 99, 45, 43, 80, 83, 196, 107, 229, 44, 106, 156, 92, 14, 219, 16, 50, 154, 156, 28, 129, 245, 120, 109, 187, 157, 39, 168, 201, 135, 105, 130, 135, 207, 112, 236, 81, 241, 228, 117, 15, 126, 83, 190, 231, 58, 51, 31, 237, 125, 132, 34, 251, 151, 79, 12, 184, 84, 5, 109, 109, 86, 15, 180, 54, 43, 251, 243, 5, 62, 178, 30, 249, 24, 245, 179, 187, 252, 245, 163, 144, 36, 209, 161, 98, 122, 53, 31, 65, 245, 25, 26, 252, 217, 227, 38, 20, 57, 218, 154, 213, 104, 138, 91, 67, 125, 180, 138, 197, 156, 17, 102, 30, 44, 52, 211, 134, 54, 77, 172, 204, 133, 87, 96, 95, 39, 41, 109, 90, 203, 122, 0, 111, 227, 57, 65, 110, 92, 111, 140, 201, 229, 82, 45, 79, 66, 3, 221, 82, 193, 157, 93, 27, 254, 158, 129, 24, 61, 181, 173, 201, 150, 147, 161, 169>>}}.
|
||||
{{encoded, "5cvR9UCJPPieAowPDWVvZjVHnJLd6Ua99mwcunF4CC1FeaF1cXEPjdFEZyHijN2aFUoTiyfPwR4anYEbQ8d8sXfLTGGDagEby8F4SDhKi5ZHKjxyEuCybGF4Wu5xAXjGC6dgTrsLgGZQWUvsytSAkHyDFo1fb1pkCSh3fxuvtEaWwpGED4TNQaq4Hvr8cwE1u1ZgNrAiPUm8J31kxwBWi6eFA8bW6Crcjig7kBXSNtGmiGyS81mRbt2Ss3xjcrzy3cbV4iuNPGLVdjYh8BqttWnFJNC2GHdSB3ZvUYDpNrEJV5HQVhZDFXHMuJqvp6amRSCw2KH39KdZ7ZMy2mDiqXkWrr2AEHMjGawHwVYBdsAK8GvLvjNL35WSkma6YcYkbk3VjADSWNnqT1YtopgyaKfBbQjiKHQKfBmiuupkP7fupuNExNigXs71SYW2fA6SJT1StyBbEjqDAmCHD1K68zjCNbmuxWEdQvTnt2cnRyQajfMrqtFwsxJV64Ls4y6ifTGjbsUN5e24R5WVLLHqAuHAmUWMYjSy6pAdAD7cN6XNAAVubYse2XJ68hfDYU1LcwkvJYg9AUBEXjYkLYQMDiyAF8Y7aSaXqbbFqJqb8DnkJyjbtPhxChKGSWkUS8LS9F8YhcnbzZCZqbbRNDamz1QH8LpTsfXW5ABAWU4yLRZmYiRM8qion2w3g6y9vu54G5rdkduKJKAvqzjVBEM3o7RCGKoJYYznbqTxwKeCVhy4fQfkhTc8tLcdLp2LK5i8kGNKji7wxdiTVZBsRQDMDf4Q2nmAyZ8L1DTLCj3bmz"},
|
||||
{decoded, <<39, 202, 14, 6, 170, 152, 1, 129, 118, 24, 203, 42, 98, 168, 201, 144, 150, 90, 92, 208, 50, 134, 68, 19, 85, 69, 83, 176, 10, 141, 146, 232, 118, 47, 55, 9, 9, 228, 220, 191, 16, 129, 117, 74, 166, 214, 92, 180, 126, 122, 219, 108, 125, 117, 132, 75, 25, 169, 4, 166, 248, 251, 26, 53, 158, 213, 52, 193, 219, 11, 84, 67, 171, 156, 3, 122, 130, 236, 27, 132, 5, 174, 242, 145, 83, 80, 113, 171, 238, 61, 123, 182, 203, 20, 207, 189, 104, 89, 11, 55, 159, 226, 44, 186, 230, 10, 84, 180, 17, 228, 25, 178, 239, 173, 32, 131, 233, 213, 176, 22, 41, 250, 91, 45, 93, 103, 157, 132, 9, 94, 180, 162, 39, 238, 49, 125, 132, 53, 39, 205, 198, 9, 2, 245, 15, 249, 115, 98, 48, 86, 122, 172, 55, 146, 84, 132, 158, 42, 0, 33, 72, 234, 47, 29, 36, 82, 85, 29, 97, 178, 6, 13, 38, 162, 220, 255, 56, 91, 27, 220, 236, 174, 111, 236, 130, 142, 69, 234, 55, 15, 200, 151, 7, 164, 171, 185, 138, 237, 16, 194, 140, 184, 137, 61, 149, 130, 130, 167, 48, 62, 66, 117, 160, 120, 245, 178, 114, 146, 121, 209, 55, 17, 65, 222, 152, 213, 68, 159, 226, 14, 28, 235, 174, 75, 235, 86, 222, 56, 248, 69, 214, 68, 88, 219, 28, 33, 76, 91, 187, 81, 66, 124, 213, 229, 241, 112, 154, 220, 233, 153, 1, 228, 218, 50, 10, 252, 28, 82, 173, 243, 14, 146, 209, 137, 100, 181, 240, 50, 118, 171, 222, 127, 77, 122, 141, 101, 11, 160, 219, 141, 233, 231, 88, 141, 178, 137, 201, 248, 22, 100, 193, 127, 252, 46, 173, 186, 128, 132, 207, 17, 36, 254, 155, 7, 96, 130, 107, 119, 131, 102, 226, 190, 150, 189, 107, 202, 219, 123, 243, 133, 155, 178, 139, 69, 88, 135, 190, 72, 232, 70, 226, 109, 163, 195, 119, 84, 230, 66, 139, 186, 227, 44, 255, 1, 217, 73, 217, 16, 236, 103, 143, 203, 44, 64, 21, 236, 138, 172, 100, 128, 188, 58, 173, 17, 35, 123, 175, 226, 187, 64, 187, 2, 219, 4, 23, 164, 176, 241, 126, 249, 34, 199, 164, 82, 237, 200, 26, 43, 176, 120, 134, 228, 53, 248, 31, 68, 71, 152, 211, 14, 123, 58, 250, 219, 170, 250, 211, 46, 161, 2, 78, 13, 253, 129, 245, 98, 97, 36, 145, 73, 187, 179, 218, 255, 134, 239, 142, 246, 205, 87, 209, 193, 237, 175, 85, 55, 12, 191, 187, 74, 166, 68, 42, 239, 10, 237, 109, 222, 8, 92, 234, 230, 152, 181, 94, 188, 209, 237, 124, 140, 206, 165, 27, 84, 184, 252, 86, 197, 125, 96, 249, 16, 206, 88, 83, 9, 4, 124, 164, 35, 131, 75, 153, 165, 235, 32, 120, 86, 35, 174, 181, 247, 225, 100, 148, 175, 180, 158, 236, 94, 158, 161, 232, 84, 230, 157, 72, 48, 85, 61, 67, 226, 165, 92, 212, 77, 250, 12, 173, 175, 181, 165, 96, 103, 236, 47, 230, 248, 16, 76, 198, 175, 224, 145, 220, 189, 213, 21, 11, 113, 98, 125, 43, 173, 145, 169, 66, 203, 192, 140, 93, 7, 35, 50, 140, 28, 96, 216, 215, 103, 72, 179, 248, 30, 22, 212, 251, 239, 137, 215, 239, 29, 64, 240, 227, 218, 91, 32, 136, 138, 238, 167, 137>>}}.
|
||||
{{encoded, "yB9PJLqTPKHtqwgrGZNjSG7ip8rcu9W2aakshoLG5Lc7v7fuEmACmgWoK6uy2ZXafHhJDrSnMZNGBHoMDSskTbMo3ySZYWTg27RZ2QmZg3ZhR8aeiGJk5VTEU654cfNdFKVwBqx88hXiy5okH7G6yBfHPJTkCopUAHqryAjdzfobZRq9GQbF2L3FBJd8g22Ryn9XyTEgutiFJr18FCP5tAnurZUaHKA1u8PChbwj9WU4eRp53EwmQ7Xf6fVSRtZ6hNyupMk4itWNAQXPEKDSBbmmVFSzcxvEFsivdiwHwwHGo9sBZL2nJ9oGK9WNmQSBEw8GQPCyEfhhJGewSvTY27Ef3MMTQea5tTkNCTUadEfeU1MK5jT5JHsguGHKZjLhekwCMC34Aq12sH9kq6oXDvaq5KCkEsnw5yntjJRR4hwS1fSgEgxmRyERYL1ZYhQWQ76fssF1ba6nYBDVjwH5M9E3PnV5dA1YL56LU3HZNb32EMmz1viyZxmSjrMWtS4avQXf1RsB6strEFtCDaHHjAkgk9uYk7ZtZsyzwufGeHBsWtBwAoPYyGdyFaGoeAccxsHryf6QJjtrNV4cyEGawgKML6VU3i4RiTdjH9Ur73puexjUsb8y8AC8Qf1vbUKt69xR9Cw5nNSwRrmGNkKxwBjLcvk7CcLdXvnRGVCijNHH5mL5FBhFEGNFPmFFYRnZcf3XFRPeKrc35Ty4NbXoWPHtT2v3mE1rSpisGdqoijC"},
|
||||
{decoded, <<233, 61, 164, 14, 174, 186, 245, 28, 254, 109, 36, 157, 147, 148, 240, 234, 177, 106, 54, 3, 86, 123, 210, 210, 149, 174, 146, 111, 124, 206, 78, 71, 37, 68, 137, 91, 54, 236, 253, 215, 119, 35, 183, 42, 240, 85, 232, 175, 165, 183, 178, 148, 196, 40, 179, 40, 131, 85, 204, 199, 153, 165, 102, 85, 116, 131, 157, 74, 37, 204, 178, 95, 255, 152, 128, 90, 229, 116, 109, 184, 218, 119, 148, 145, 44, 214, 38, 197, 38, 148, 50, 54, 20, 12, 161, 202, 130, 192, 77, 164, 88, 6, 84, 83, 169, 176, 32, 162, 146, 75, 114, 233, 192, 163, 56, 234, 211, 31, 176, 92, 6, 142, 18, 127, 3, 41, 199, 119, 11, 105, 171, 104, 162, 27, 68, 31, 238, 100, 120, 39, 138, 225, 168, 30, 31, 33, 233, 215, 204, 90, 211, 106, 173, 216, 201, 61, 131, 248, 159, 239, 174, 89, 14, 12, 94, 53, 176, 127, 179, 244, 243, 189, 33, 246, 7, 67, 217, 38, 207, 131, 106, 99, 166, 248, 14, 136, 18, 240, 89, 8, 108, 229, 81, 9, 177, 136, 163, 172, 39, 126, 243, 144, 93, 126, 178, 166, 167, 23, 143, 220, 19, 251, 23, 121, 40, 221, 125, 114, 235, 192, 111, 72, 248, 191, 79, 206, 173, 37, 106, 188, 251, 237, 149, 139, 4, 104, 141, 37, 110, 87, 42, 162, 74, 108, 136, 30, 119, 125, 128, 159, 4, 4, 240, 11, 230, 124, 122, 96, 79, 46, 193, 72, 69, 168, 214, 76, 216, 152, 29, 216, 142, 128, 152, 214, 162, 161, 165, 10, 71, 250, 2, 207, 160, 175, 161, 247, 215, 11, 90, 133, 41, 228, 183, 187, 173, 33, 112, 164, 181, 41, 72, 160, 232, 207, 19, 85, 8, 127, 67, 176, 96, 204, 164, 145, 63, 29, 88, 86, 245, 157, 118, 208, 242, 18, 180, 255, 254, 8, 90, 143, 234, 230, 11, 8, 123, 174, 155, 103, 211, 185, 113, 69, 53, 30, 182, 114, 21, 72, 168, 235, 5, 185, 73, 206, 73, 248, 54, 159, 239, 12, 201, 159, 6, 101, 110, 35, 203, 242, 49, 189, 15, 25, 91, 80, 168, 141, 151, 16, 133, 92, 38, 171, 118, 241, 143, 211, 182, 102, 140, 228, 117, 91, 62, 35, 134, 93, 209, 228, 253, 15, 60, 75, 165, 136, 6, 142, 254, 155, 155, 221, 85, 205, 93, 64, 22, 35, 137, 124, 66, 196, 139, 214, 70, 157, 203, 245, 81, 120, 30, 17, 56, 209, 215, 185, 50, 55, 228, 190, 252, 251, 125, 109, 146, 132, 213, 139, 187, 205, 156, 165, 225, 147, 113, 6, 196, 48, 94, 72, 36, 19, 216, 246, 187, 20, 255, 33, 186, 233, 137, 153, 27, 159, 43, 130, 182, 103, 222, 15, 5, 147, 188, 102, 144, 116, 251, 6, 191, 136, 90, 244, 190, 83, 222, 201, 221, 32, 231, 81, 7, 119, 132, 239, 40, 201, 106, 183, 171, 21, 212, 222, 46, 136, 177, 3, 145, 189, 71, 182, 104, 164, 13, 37, 136, 126, 87, 152, 26, 40, 204, 159, 0, 11, 235, 234, 29, 50, 48, 21, 103, 20, 12, 204, 75, 198, 184, 154, 195>>}}.
|
||||
{{encoded, "UG5qM3YgZNyYPuy5ssQfCUWp6w68jSqcHLU6Y5U6RWkDRzUfwujhoGj7umivy9PG4bo3zoLXi7v8VbkpqQK4tZobHtDCZyBb9Fo8kiiCcxUs9Ei6988HUbNUKkEeTUaRzXEoMF"},
|
||||
{decoded, <<235, 153, 82, 41, 71, 237, 102, 45, 19, 104, 237, 40, 229, 70, 236, 239, 9, 205, 156, 177, 253, 16, 215, 67, 13, 63, 224, 232, 20, 76, 83, 191, 131, 181, 241, 63, 21, 205, 173, 58, 26, 133, 91, 49, 53, 186, 71, 158, 242, 165, 201, 92, 231, 17, 206, 245, 88, 126, 198, 45, 226, 240, 231, 252, 236, 16, 144, 65, 39, 106, 234, 30, 138, 248, 3, 169, 146, 231, 157, 253, 216, 159, 154, 31, 172, 173, 39, 42, 138, 23, 166, 147, 19, 233, 42, 111, 41, 22>>}}.
|
||||
{{encoded, "WDuASF3p8QBkhSBHt3R3hHaPvoA7rKdFpDwJXDLzF21asxEut6S9EdzM2DTK5jWwdJ9FfpCEAbJ8xxuXLUz2UHwEWV2aXN4ATxipPRuYyDTXWH5e6ZoKwe37WmiVXg32AciuDaiaU44ixnFo5AZgwSwgBuNXVUkNmgKAMH8oZQ4csn6d1VkXnSgNSQhMj6R8YBhjiXd3cigpYprRKh9KubmVPAteKnX66HovJabr6EusNHLxkQkePvfKjKHCxDXZccPXEitBuLXBWCjEFsRaa8PijBrL6Y1U4wNyoCTr13NJ9phYWtrd61HL2WVRLgc6Ju1gMR4SqEdJCHnYGUiZd63vNiBzwgVmBLGoLdbpp6N13SqpfRLBpkLTV8734xiwkVbQo4mLNwy8j7rxzZbTKTxJTwTKBeQZ98gd6UcnQ211afAmriecDrAaSXS3hwHqSdUtsXxK3SkgGoFNBTWzvy3xMxnEFEx"},
|
||||
{decoded, <<31, 165, 49, 69, 220, 107, 137, 8, 122, 71, 223, 148, 152, 3, 237, 230, 237, 202, 168, 242, 59, 222, 72, 88, 235, 183, 243, 14, 63, 64, 3, 9, 126, 49, 70, 82, 37, 113, 252, 235, 44, 175, 133, 132, 70, 122, 226, 23, 112, 60, 237, 73, 142, 36, 167, 81, 108, 12, 72, 94, 226, 40, 253, 6, 228, 28, 158, 140, 134, 220, 193, 95, 104, 215, 94, 141, 239, 94, 72, 23, 238, 121, 85, 43, 125, 127, 115, 19, 81, 11, 173, 36, 144, 142, 204, 31, 174, 2, 211, 53, 138, 146, 25, 100, 226, 17, 132, 3, 116, 42, 94, 34, 50, 198, 64, 164, 194, 207, 233, 142, 7, 45, 98, 38, 95, 212, 71, 167, 124, 21, 239, 217, 157, 151, 37, 116, 216, 245, 175, 38, 4, 24, 171, 66, 212, 23, 45, 163, 218, 196, 150, 93, 240, 35, 224, 113, 64, 255, 19, 64, 222, 251, 142, 22, 172, 254, 237, 149, 199, 184, 244, 11, 230, 121, 235, 91, 43, 24, 187, 2, 65, 7, 36, 165, 47, 59, 238, 29, 69, 199, 208, 31, 225, 138, 196, 64, 152, 9, 215, 49, 93, 232, 126, 43, 187, 137, 27, 132, 117, 212, 56, 180, 133, 208, 28, 125, 253, 157, 159, 133, 226, 42, 222, 39, 126, 68, 190, 78, 139, 7, 131, 149, 4, 138, 114, 226, 191, 196, 220, 247, 68, 80, 219, 172, 197, 60, 33, 96, 154, 189, 161, 134, 215, 123, 121, 3, 166, 163, 217, 12, 17, 198, 170, 72, 162, 32, 50, 112, 147, 233, 137, 115, 65, 49, 254, 142, 254, 77, 246, 133, 48, 88, 113, 64, 214, 219, 5, 15, 0, 253, 157, 38, 181, 81, 63, 67, 81, 138, 98, 80, 5, 188, 201, 212, 123, 188, 92, 167, 237, 93, 11, 170, 68, 171, 123, 26, 65, 2, 72, 209, 202, 232, 61, 98, 232, 203, 161, 164, 168, 187, 11, 232, 157, 248, 246, 64, 192, 71, 169, 12, 162, 221, 124, 90, 162, 75, 75, 225, 158, 220, 217>>}}.
|
||||
{{encoded, "3oCqupt224pKvmwrJq2Zc66HypL7wbUFG9jGKeMoLvbxEXBGeAvBQD2PaZEicdxZFoMLgXEEAxXPjmr2FLhWZkRQ1rH6vXmQAPiPVpBsbuxbSjGAqFkbguUJKiNnmohB4boF8KoZJ7pyowC7PkUyu4NUMRqxMP7bsQiM9Lz98muwVkuaSmdgxVsoBKHMpx3jprQ142NywMLFZZHpquS7KvobTGqG7a3Ym7ouirWqoCgw7hDBRkqVVonBERq4djXYGMETWfN8ZBCHT6AHHcWE13Z92mDD8gkXKp6xujBWS43NWywg55FjnRBfCu8a2BGcUC4r5Vvdz7UYNquhsARqrtcwPPBuonxVqy5p4ceAYZoqyoH3wDXRC7xq1QAUMrhPEv1dNsqZAD3pSLCXwDd24YFzBHGmvv23WX3nbVT53SczTUPwcdU9iUJqZUwyRfLR9KR5L8gbSECXJnoKFR6Xx5LNnDzoPdqStbnDg8TQi2rn2i1AXecpQ8SFx4wNVCFDx2w8WVbaWwskX4VkVjoQLtMYLbujpvbFZAs4vBKp2q5nhqkipJLXxvo3hU4EnNvdDEjWFLqCmK3x5NzNSYuyfcjHhJKYUu5tKSkM3BacFdmzVTF2kTQ2xuFRaGKKrhkWqEioFLok92Nhs6XkY8fKdmvGFeaY9Gm5cPmvrZer5vYsw8bYJez76JEnYDjyF4r9KHxHwaAJmz5oNZkJcKoEbGjRwEgRxUfgqo3nnUFQu2HCBjKY2bNGbV6ussCHqEZrZZEEDUddTmiF1kLbXqsvisVcQTDzpkBvPWoz1ZgCmN6RBRzRFJuKBgUth65C77NSQ1G5FNVAtU5NsryYqMgJM4sPS8n7mErhYPto9LfTFJqjfn2dcbH1GQsdVMEVSNkKp6RV4UKgAiUXHFgk23HPWrF2Q7fE53GnyVV2K1KNZyDyFmu"},
|
||||
{decoded, <<208, 49, 161, 4, 28, 72, 79, 188, 61, 39, 75, 241, 80, 38, 117, 52, 140, 137, 201, 225, 134, 247, 247, 195, 35, 0, 194, 107, 114, 135, 108, 153, 255, 25, 76, 190, 59, 201, 215, 26, 122, 8, 241, 165, 184, 26, 152, 17, 207, 0, 221, 229, 231, 223, 89, 198, 187, 98, 54, 63, 18, 157, 32, 171, 220, 61, 172, 102, 169, 95, 20, 54, 3, 211, 228, 133, 137, 114, 41, 169, 31, 250, 125, 251, 83, 48, 238, 252, 194, 134, 198, 36, 93, 6, 123, 47, 98, 95, 125, 114, 214, 30, 196, 87, 128, 176, 95, 164, 80, 104, 238, 33, 96, 103, 3, 206, 18, 121, 107, 37, 81, 143, 240, 104, 125, 219, 126, 146, 254, 55, 220, 53, 143, 154, 209, 49, 133, 125, 255, 70, 248, 18, 152, 106, 188, 40, 37, 122, 142, 28, 24, 160, 111, 171, 223, 149, 59, 136, 162, 75, 33, 211, 233, 28, 224, 158, 63, 20, 152, 149, 107, 247, 217, 137, 84, 70, 87, 119, 212, 112, 221, 210, 240, 66, 12, 99, 58, 89, 176, 203, 252, 40, 172, 176, 134, 123, 3, 201, 124, 158, 3, 179, 48, 119, 40, 146, 221, 180, 249, 112, 236, 183, 207, 200, 144, 244, 153, 113, 105, 42, 173, 108, 31, 245, 117, 19, 100, 232, 54, 33, 174, 92, 166, 153, 79, 222, 206, 75, 48, 28, 55, 217, 143, 99, 158, 8, 61, 226, 30, 151, 38, 201, 52, 150, 178, 119, 12, 62, 88, 233, 110, 83, 23, 152, 157, 211, 126, 102, 45, 20, 48, 126, 95, 56, 237, 204, 4, 198, 2, 6, 106, 131, 188, 137, 208, 126, 53, 164, 205, 94, 0, 150, 16, 129, 96, 72, 120, 21, 170, 169, 75, 194, 80, 136, 1, 96, 217, 228, 58, 63, 61, 54, 153, 62, 102, 45, 156, 224, 98, 47, 177, 15, 203, 36, 33, 87, 182, 68, 173, 44, 245, 179, 235, 59, 171, 201, 160, 194, 105, 201, 36, 159, 244, 136, 13, 45, 244, 35, 83, 21, 219, 175, 188, 145, 1, 248, 110, 154, 199, 249, 26, 253, 238, 246, 222, 36, 35, 239, 236, 213, 200, 0, 2, 225, 150, 31, 172, 26, 142, 97, 26, 23, 55, 80, 30, 11, 52, 48, 77, 45, 134, 218, 84, 87, 54, 48, 244, 39, 139, 21, 204, 243, 135, 92, 200, 216, 146, 86, 61, 219, 128, 124, 20, 91, 188, 239, 89, 109, 192, 22, 77, 51, 124, 224, 49, 151, 97, 132, 207, 238, 82, 227, 232, 152, 243, 167, 105, 78, 48, 87, 3, 36, 29, 243, 191, 76, 114, 186, 86, 64, 25, 55, 226, 135, 77, 147, 241, 160, 197, 19, 25, 110, 113, 110, 47, 70, 44, 58, 73, 114, 253, 215, 184, 83, 196, 34, 95, 31, 254, 164, 230, 205, 205, 98, 200, 147, 111, 140, 39, 147, 82, 139, 61, 159, 175, 71, 125, 11, 45, 94, 50, 239, 9, 9, 111, 88, 250, 22, 81, 71, 213, 255, 161, 36, 203, 147, 11, 191, 33, 238, 145, 221, 30, 17, 7, 36, 193, 185, 156, 199, 203, 169, 238, 135, 218, 215, 147, 73, 71, 151, 7, 76, 246, 156, 26, 235, 97, 46, 48, 74, 175, 181, 209, 52, 49, 240, 144, 77, 16, 231, 233, 190, 217, 117, 251, 25, 68, 58, 242, 46, 86, 59, 238, 219, 179, 168, 56, 121, 214, 188, 61, 111, 115, 38, 182, 92, 179, 135, 239, 202, 18, 205, 139, 193, 217, 251, 121, 214, 186, 16, 132, 97, 96, 217, 123, 177, 170, 48, 181, 47, 68, 190, 222, 7, 17, 176, 53, 178, 118, 156, 99, 162, 105, 14, 22, 186, 247, 78, 152, 209, 108, 225, 160, 55, 92, 89, 69, 88, 101, 8, 110, 75, 101, 82, 3, 70, 64, 122, 21, 141, 80, 47, 128, 59, 137, 115, 156, 59, 146, 19, 213, 200, 85, 160, 171, 140, 22, 109, 239, 160, 169, 94, 9, 185, 157, 12, 16, 97, 206, 211, 71, 41, 210, 223, 54, 236, 17, 194, 217, 36>>}}.
|
||||
{{encoded, "3679GLrzDZTjAxDEssoD7FGxWYZhAcQQcj8hnPCuaiaZBKkChLCChLvMUxMMx1Ura6ukU7t54c6eSoSPDdQNzr1uMwM1Twp4eTuy33w4BkFMZtB5aVHGtpod93vDX6dXeTn7F6PHqhmW6G6yDRS2AoDm8SV3WgbH99qaVM6HkhhaKPGk4iSQFU2BxZiHuURYLBiEUtgvyqjmuAxHUW2z79V89mvMPBx5MchSGVhARkso52yyqGN83nhmBqz4d8bAXkGbUFrsGTcvSepjnfkHmnrtCNyXMcey1wvqHnY7Masa7WHpBTb2AwUiSsYAM2xvAUTC5qnsnNUcukwG7bUpTNfvwQvUhsGuwxJjAtyw6eNgDvjJwdJTPhCeUcbVqsA6PPJSt4C3U2KKAtgH6HMDvamxDT27Uckb5oCFkJR833noop3epo1qsazp9hjekpkAfTCEyCszbVKGo1BJd4bKe8TGvjJozgASaABtJgJT6Nsd79cmgoSkHbwQmVEnDf3vYiKe857xLNgNX2MgeGNaBbm61McaFLyQhJEcqKFqqtnFogscDCXaWGcAvWGZTZZx6Usm6sLuNg5t3eCRYKJjwF7VPSFNMGEnTjgZcwyZpdxYuYZNYkzhSxfWWAUkBt5hZNJcwJJH6bbu96z1SXzBy4xgeLfCBMjjc7ahQeocQSMR8"},
|
||||
{decoded, <<242, 98, 16, 85, 101, 229, 253, 58, 189, 75, 209, 60, 98, 45, 152, 149, 140, 114, 67, 30, 171, 6, 198, 193, 189, 190, 127, 27, 74, 117, 226, 53, 114, 66, 138, 147, 21, 63, 51, 176, 97, 144, 179, 76, 96, 27, 251, 160, 42, 99, 98, 238, 194, 71, 185, 130, 90, 69, 126, 89, 62, 73, 10, 97, 5, 89, 228, 102, 137, 6, 151, 7, 243, 246, 170, 199, 88, 81, 178, 239, 25, 229, 168, 53, 50, 222, 5, 248, 131, 203, 171, 253, 175, 45, 140, 90, 231, 49, 6, 194, 138, 127, 214, 39, 89, 129, 66, 224, 160, 87, 123, 215, 6, 209, 232, 235, 239, 123, 97, 239, 202, 78, 16, 84, 184, 135, 231, 166, 148, 224, 220, 198, 238, 168, 54, 61, 248, 39, 65, 136, 114, 26, 54, 105, 29, 255, 232, 231, 129, 9, 64, 101, 199, 147, 65, 25, 192, 237, 212, 86, 50, 229, 80, 92, 108, 152, 103, 217, 48, 10, 84, 161, 123, 46, 54, 185, 50, 129, 249, 226, 164, 46, 135, 171, 30, 216, 99, 194, 35, 165, 210, 4, 206, 202, 216, 156, 7, 160, 162, 246, 9, 250, 155, 110, 154, 109, 173, 105, 88, 73, 185, 104, 54, 9, 130, 204, 88, 79, 68, 105, 107, 198, 153, 42, 185, 88, 8, 133, 33, 26, 62, 60, 109, 22, 96, 225, 142, 154, 148, 176, 13, 84, 215, 238, 65, 214, 231, 83, 227, 68, 231, 185, 208, 178, 38, 228, 78, 38, 76, 166, 138, 152, 180, 14, 254, 3, 125, 93, 91, 235, 143, 18, 230, 16, 56, 168, 27, 102, 174, 10, 204, 46, 55, 13, 124, 62, 228, 161, 147, 197, 100, 150, 136, 152, 203, 72, 18, 27, 203, 68, 52, 225, 204, 154, 9, 230, 30, 43, 86, 158, 146, 157, 201, 46, 64, 96, 223, 96, 239, 178, 145, 117, 108, 211, 31, 199, 10, 121, 136, 211, 4, 235, 16, 151, 78, 174, 10, 89, 250, 16, 84, 13, 163, 79, 121, 36, 86, 145, 16, 109, 139, 135, 135, 115, 205, 87, 244, 51, 103, 216, 146, 2, 20, 1, 23, 221, 35, 100, 84, 182, 186, 224, 169, 85, 207, 120, 170, 123, 255, 83, 246, 220, 195, 169, 191, 38, 118, 71, 13, 12, 67, 50, 18, 174, 33, 29, 105, 83, 234, 245, 72, 5, 68, 180, 198, 190, 37, 254, 144, 207, 69, 57, 12, 72, 2, 181, 175, 118, 184, 62, 40, 222, 171, 163, 215, 0, 133, 67, 237, 37, 161, 235, 21, 124, 149, 122, 141, 175, 146, 4, 224, 25, 210, 203, 149, 144, 151, 181, 131, 61, 78, 48, 14, 180, 166, 65, 134, 67, 140, 153, 24, 154, 104, 245, 167, 118, 136, 148, 201, 139, 148, 47, 150, 92, 219, 216, 48, 153, 22, 124, 37, 202, 17, 29, 54, 89, 159, 1, 184, 130, 18, 37, 83, 172, 15, 161, 209, 40, 157, 106, 127>>}}.
|
||||
{{encoded, "3rrPAhHVGU3ttUsBRUhiQ3y5Bsr3n6ddibSMLJ1XCyxnEUEQXww6xBEHWRyKT5R3h1g3wasPDaKkUikfkv7K1s9QZcuTSw2MoYfgCiGgZRC9vWj4CCqyuP5LkVJsCKV1Grsg4NMRQMyN3M1LFGjK"},
|
||||
{decoded, <<99, 169, 126, 63, 222, 91, 210, 252, 91, 97, 225, 185, 207, 110, 5, 170, 74, 117, 168, 181, 174, 164, 29, 252, 45, 77, 69, 106, 3, 61, 245, 193, 207, 203, 136, 214, 117, 83, 175, 169, 35, 137, 29, 141, 92, 133, 253, 58, 227, 44, 37, 120, 144, 3, 185, 161, 100, 5, 127, 14, 131, 137, 90, 57, 116, 7, 82, 55, 91, 51, 102, 143, 161, 140, 204, 241, 9, 86, 113, 111, 251, 81, 179, 15, 17, 32, 113, 98, 88, 126, 92, 56, 68, 93, 117, 186, 249, 128, 122, 28, 242, 172, 68, 247, 166, 138, 180, 18>>}}.
|
||||
{{encoded, "A9sHFFC3uVXFWhbu81iYL6zgTyXdSsZhXbUfd3TDtnpLisP1jrTuGXB6PqVMn4b9B83sJyMumNfh5oiiAe5P3vJWWSRHpErmwbLu99AeSxXV3vh74L7GY7N3wwoAYS59KiFa4fEN7"},
|
||||
{decoded, <<235, 130, 102, 205, 69, 113, 237, 155, 141, 239, 198, 103, 129, 225, 215, 81, 152, 130, 251, 87, 56, 76, 130, 47, 17, 114, 156, 9, 178, 197, 87, 215, 119, 56, 72, 219, 219, 86, 221, 6, 232, 185, 199, 223, 41, 43, 40, 24, 186, 17, 163, 227, 15, 169, 237, 7, 193, 108, 185, 152, 70, 33, 189, 36, 204, 39, 136, 167, 230, 225, 146, 104, 68, 157, 248, 211, 13, 125, 3, 81, 78, 92, 202, 246, 58, 63, 49, 43, 98, 251, 127, 97, 70, 172, 207, 187, 118, 113, 210, 92>>}}.
|
||||
{{encoded, "4R7JtGn3ZzN9pxQDUNRFn1paehg9BstnbRWkfn6QNXCVBcGj57XSnKtzR7qvNUQT7PQ9AgnPWDMheHx8aHmbDsvXpnjznZjHrUzcyq7yaTSQ3E9gxEH25PvXmY1Qcdpsc3qtaJ4S7Si3PRpwsanyYhSV6wqk1m2uZBnnTRRa57t3zCLf72yoX2vAxJbAgJvUUTR6tgVJPYQTMptuCZtf1VxqnLdbP2q5FDz9x6DAc3PMdjbNEAi2WVh97Ut7A5bS4jTpgYrz1XK9pBYHh3p3gSLytvid7rqEvsp8v4TdKReVUJspytaeh7sj8WKSNkSSqqXKK5mnyDA6qSXVunorwTd2aFowGtWx6td8sS58qRYePx51gD2GV8rVD9nSP18kaiSZbS7AB7TTgzTpSaKcVCNbwc8iewBP4QgHqTFpuW68kLaLVAEMYvtPDXAogFHxJBmZvHkCbTiyKDBxn4y2tiF7vRHEzFwt3e1QcNKNC8TAE3rSoYmqAjhAtA7LiPgv6sdvBHz52epS6btiG8KMU65k4r1eE9fy5ogepThaT5W9XXtCwrb4VLddsszGX6s5K6cgZ5bgJQgJobXgYxxeMbS9CwGRw6Zw"},
|
||||
{decoded, <<47, 100, 219, 240, 199, 36, 157, 172, 132, 229, 54, 183, 95, 175, 188, 185, 212, 81, 128, 43, 61, 100, 46, 229, 238, 73, 6, 52, 60, 126, 112, 202, 200, 16, 251, 51, 75, 109, 2, 86, 23, 1, 66, 85, 97, 144, 103, 234, 42, 72, 152, 23, 145, 172, 167, 89, 195, 248, 204, 138, 1, 132, 0, 233, 93, 174, 112, 13, 21, 59, 227, 130, 147, 172, 99, 20, 103, 250, 219, 254, 247, 153, 251, 136, 192, 219, 22, 66, 43, 175, 143, 140, 70, 249, 219, 36, 55, 240, 37, 198, 223, 155, 220, 94, 188, 25, 198, 0, 75, 63, 194, 36, 236, 51, 94, 209, 63, 103, 213, 128, 136, 160, 75, 13, 168, 223, 226, 73, 71, 199, 153, 54, 143, 159, 121, 122, 220, 26, 12, 127, 29, 2, 118, 189, 224, 55, 244, 228, 13, 83, 192, 157, 205, 114, 212, 165, 139, 35, 189, 126, 228, 14, 38, 16, 26, 30, 133, 205, 0, 230, 55, 206, 223, 248, 192, 238, 91, 236, 94, 168, 82, 184, 129, 190, 211, 74, 111, 21, 52, 247, 111, 120, 210, 109, 197, 219, 147, 185, 152, 167, 115, 36, 109, 27, 125, 36, 144, 170, 146, 86, 174, 155, 143, 210, 169, 23, 54, 161, 230, 156, 119, 232, 88, 247, 6, 246, 28, 246, 131, 42, 95, 197, 212, 123, 58, 190, 162, 61, 184, 86, 110, 0, 111, 236, 119, 198, 66, 23, 33, 32, 95, 18, 172, 90, 247, 127, 34, 161, 61, 206, 152, 239, 22, 125, 221, 138, 57, 172, 240, 222, 10, 253, 9, 53, 159, 149, 67, 61, 16, 91, 115, 255, 116, 60, 247, 212, 56, 237, 136, 239, 181, 220, 111, 89, 86, 182, 1, 221, 80, 203, 69, 124, 107, 196, 73, 244, 242, 78, 213, 34, 168, 187, 189, 173, 45, 210, 183, 41, 8, 160, 204, 56, 16, 69, 6, 74, 168, 226, 188, 93, 74, 32, 198, 20, 215, 123, 183, 169, 73, 35, 62, 86, 207, 110, 153, 58, 170, 230, 75, 123, 48, 243, 53, 109, 96, 3, 166, 207, 230, 146, 102, 167, 9, 122, 14, 167, 15, 210, 102, 190, 136, 63, 22, 237, 47, 188, 39, 182, 118, 70, 83, 89, 66, 62, 29, 232, 105, 213, 77, 217, 101, 222, 100, 94, 31, 108, 227, 232, 241, 249, 125, 201, 110, 110, 150, 234, 53, 63, 173, 30, 215, 121, 96, 118, 232, 158, 72, 193, 107, 68, 98, 214, 8, 106, 200, 195, 150, 142, 205, 168, 10, 8, 251, 158, 30, 247, 159, 36, 220, 58, 221, 87, 39, 154, 122>>}}.
|
||||
{{encoded, "ad3a6NqNGKctGJfok2594DL37FeZFd8o4rbg8E5S2g7v5uxG7MRSRobBjSAar41HwfS5B182keuAfRLeFNBfnCz9dqjuVJw79CAiX7HHmEb4ZaUz4FpVmYXjqrF6Bt69rWPRxTkgtdBAmyCecf2zk7pGdN93GHedbKByg2e65BVLNDdmzK4qGVbZ2UKizN91P8SgAfduJk829xuGwokvMETCHi29vt9GBb2gW5PqWsJfvWkixyRj741cEEJnP51GL3dHE5JnehNLL3drux3Pak1psBbpSWUDjhWCDaZGYBPnPxFPBqhwXAgdoFdbXvybMpdpvmvN5FZep1PzaiLyUCuHkiLb39trtTTd6QP9hKEE4xUsaZ5tRJnSWUKUQAMjqJsnWz9qr7eBtUUKDzbGJCQAFkoYD4skmwBedoy1xMk7Q1uedRTq7RwfGshj6yRXKUn3hoG5CspMzGroEqjaZkS2ikPtqnTqyx5ir8RSQh1fbZjpoZLPKvmUy9tTYC3rvtZQzFg1T2ZMirFdTwUhmtXnf4dx8H7VNQPWeoPp36ab3ECkZ2Pxkjo6JRNPryno4h5RNF6awLLtP5JSBaTZZZi7FVqRGDipFxpUP8rmQK9qLpDMVYmZBP8aMqnsHFE8Ddi4HhJKCTX3JYtAzxe14YcnkNd1eU288vQnrC4oLaPoga1W9yhoULBTFKHSpb3xsq7fSHt7sf6ac9gRT7de8g8fZWkipftWr7zq5MGmcfTVkJjg5JH84VWEEHsioV9NAiaigfpSKfndQxyro6JGZiheQqshEJJzcguv8RveRqnJEaZynudTDPYRWU87pKnkm15wvvokLK5JnG5gcv8GfXkA66vPqMuakv33kNbCmotKhcADaWk9fikyfXiAAJN4a4t2SzoN1YVbnAXmNFPh8JwLLJeCTJR2EyGuVjy8qBXfR2Z9mnhxrJthj3S5WyonfbXYLo5ojusqTwfQ2Wri5e4v5VxWyDD61r5LCAw58XPppACvsbuPWNnQs7uKWoRykxeM75xW4GwnTXPayYuHhAwSbjzYqiGVfVJx4hox8QEhUtyrn6mTns1cWYi1SapvJPrCYTuEq9DQZaP2Etmixtxbk5gRYev8cMMHcLXHuA7ZvfmHpsSU5rAxoAX3dfZWYQBM4LPFCFdrRvZj4coyJhdGjRoJVdPsDQ1zqWmx1424wfG3rhWGGEeCxDNinBJ2j8fP26rNJghaHK1h1UmFUxs3dMnf2ytH6Uc6HGYoN7fZCQLQU5"},
|
||||
{decoded, <<170, 238, 76, 143, 65, 5, 254, 10, 139, 179, 230, 254, 136, 35, 217, 153, 38, 61, 24, 152, 186, 27, 11, 0, 27, 219, 221, 201, 194, 203, 27, 114, 194, 166, 101, 185, 247, 46, 93, 233, 112, 124, 22, 173, 90, 168, 141, 133, 156, 117, 144, 34, 240, 15, 2, 45, 40, 58, 182, 13, 74, 231, 126, 178, 10, 124, 97, 168, 248, 180, 74, 0, 34, 117, 195, 170, 70, 36, 25, 182, 231, 15, 161, 125, 98, 244, 129, 222, 35, 220, 191, 200, 70, 2, 117, 141, 90, 160, 255, 69, 245, 228, 202, 12, 15, 63, 115, 244, 4, 157, 139, 48, 175, 51, 226, 129, 157, 244, 187, 194, 178, 210, 17, 0, 19, 169, 138, 226, 207, 66, 180, 213, 216, 227, 134, 189, 45, 28, 244, 229, 116, 239, 103, 201, 161, 92, 70, 239, 217, 132, 188, 3, 117, 54, 84, 16, 152, 186, 110, 34, 86, 110, 206, 187, 202, 212, 0, 218, 117, 247, 52, 36, 12, 216, 221, 50, 139, 140, 22, 13, 106, 3, 69, 23, 221, 230, 40, 18, 50, 206, 57, 166, 30, 232, 210, 179, 29, 72, 148, 145, 57, 175, 2, 74, 85, 230, 126, 171, 148, 147, 46, 162, 112, 136, 123, 163, 11, 80, 12, 186, 103, 19, 28, 121, 89, 97, 245, 161, 108, 165, 192, 28, 112, 147, 10, 151, 113, 116, 48, 64, 28, 176, 129, 53, 130, 57, 93, 241, 78, 171, 234, 189, 235, 113, 146, 199, 8, 140, 167, 247, 189, 174, 254, 167, 130, 250, 178, 226, 186, 104, 233, 14, 180, 89, 15, 213, 231, 103, 189, 117, 157, 34, 123, 185, 56, 40, 70, 107, 198, 60, 41, 12, 143, 52, 29, 249, 25, 112, 152, 100, 204, 16, 56, 223, 189, 105, 221, 181, 152, 86, 41, 229, 29, 223, 91, 44, 73, 90, 165, 247, 252, 18, 124, 191, 125, 110, 250, 51, 150, 90, 107, 232, 65, 52, 41, 155, 195, 67, 102, 63, 114, 69, 107, 52, 66, 169, 255, 100, 83, 2, 48, 236, 210, 208, 193, 12, 119, 7, 237, 34, 71, 75, 28, 177, 241, 14, 54, 164, 152, 38, 27, 27, 27, 215, 167, 81, 2, 232, 52, 227, 88, 160, 170, 133, 245, 113, 215, 152, 34, 72, 55, 56, 87, 123, 27, 196, 159, 35, 118, 160, 242, 29, 102, 255, 214, 230, 36, 197, 21, 228, 60, 107, 210, 173, 40, 240, 133, 96, 237, 224, 179, 203, 169, 160, 140, 113, 177, 46, 61, 196, 42, 30, 149, 66, 199, 245, 12, 190, 246, 43, 81, 235, 42, 214, 6, 227, 250, 173, 90, 56, 207, 203, 195, 78, 9, 60, 70, 224, 224, 99, 56, 54, 120, 174, 60, 131, 65, 191, 133, 213, 232, 56, 176, 159, 92, 125, 224, 221, 50, 168, 111, 6, 166, 135, 193, 230, 202, 221, 131, 25, 110, 165, 157, 48, 208, 130, 67, 10, 145, 8, 30, 104, 152, 160, 55, 194, 35, 175, 121, 175, 182, 226, 190, 180, 216, 136, 223, 235, 52, 133, 6, 141, 8, 222, 31, 125, 86, 159, 249, 143, 255, 158, 105, 54, 239, 247, 144, 242, 80, 52, 167, 205, 148, 83, 60, 127, 202, 75, 189, 89, 140, 108, 123, 108, 87, 73, 98, 207, 247, 41, 80, 31, 50, 183, 197, 233, 168, 123, 239, 158, 225, 172, 247, 201, 71, 78, 248, 204, 1, 213, 50, 142, 176, 104, 251, 241, 52, 78, 71, 160, 153, 241, 153, 120, 187, 196, 74, 40, 15, 197, 186, 2, 239, 97, 191, 3, 151, 161, 147, 1, 225, 145, 86, 44, 49, 68, 25, 197, 193, 211, 160, 69, 234, 58, 2, 223, 82, 48, 179, 1, 35, 236, 67, 31, 194, 57, 119, 198, 47, 74, 161, 52, 116, 233, 80, 68, 4, 124, 219, 5, 170, 178, 109, 59, 237, 8, 52, 241, 25, 188, 227, 178, 111, 208, 87, 9, 172, 149, 133, 143, 9, 76, 119, 94, 100, 146, 9, 122, 57, 199, 107, 93, 156, 125, 242, 247, 126, 116, 204, 187, 119, 239, 218, 36, 140, 201, 84, 194, 193, 233, 24, 79, 99, 183, 81, 76, 182, 115, 233, 238, 93, 133, 135, 21, 64, 109, 94, 121, 33, 16, 2, 181, 78, 130, 222, 106, 103, 48, 232, 173, 85, 213, 73, 165, 37, 20, 217, 80, 7, 79, 19, 122, 29, 211, 136, 247, 253, 66, 50, 148, 29, 79, 75, 225, 5, 219, 160, 45, 40, 149, 79, 115, 145, 187, 8, 103, 85, 151, 118, 230, 110, 74, 170, 245, 161, 134, 35, 238, 98, 193, 26, 47, 236, 33, 175, 30, 247, 138, 156, 44, 184, 83, 142, 75, 173, 12, 58, 238, 66, 129, 164, 155, 166, 66, 251, 214, 71, 64, 180, 79, 149, 220, 148, 247, 100, 44, 104, 101, 37, 34, 197, 229, 200, 180, 45, 213, 158, 206, 19, 158, 128, 196, 85, 22, 237, 230, 174, 243, 189, 209, 6, 186, 39, 221, 178, 230, 95, 78, 188, 165, 192, 168, 126, 123, 219, 195, 19, 14, 106, 249, 42, 62, 73, 138, 70, 230, 155, 95, 154, 211, 215, 22, 226, 228, 133, 215, 149, 179, 117, 165, 45, 245, 166, 19, 113, 174, 1, 241, 121, 136, 222, 208, 63, 235, 227, 202, 30, 85, 122, 84, 185, 222, 181, 154, 69, 210, 217, 103, 51, 158, 239, 175, 249, 2, 193, 241, 0, 216, 183, 37, 85, 80, 254, 227, 149, 126, 166>>}}.
|
||||
{{encoded, "76itnx2RA8PgPy5DMwXYpvGL7ixEce8DAcho3kR9794yVjheqLLRpCx2f8sTu4zjk4bz9s9gdMWHScqdfa53VjNbAchzCcvPfexe1eM1ge4nZ7F11UTZZMABBgavPcXLagUSXN2thDkHYNWnZ7NYPcXvyRjahjdegrHmYDEjWyTWsHWpjmq5toGMuMgpdf2eNUqLb2R3mbXVLp8Aw32VfBcUJFEakRmntojhtCXXXamoV64HPpkw5aAzr7FtpRZZst3nrczsuNiDyAdu8oZ4s3esoh1pi4cKgcvNCRrpFijPdQWWbSXWfAtBZDtV9zfeyFDWGNi6rZAGfsUmAvdmWu3nc8m4LKPQ7uNyGbibEPSuMd8PQCMbBvPk77hJ93VGT3ixDfgTfcYXsXG4vPi5MfeewVmWizzYfkgCUURUvtPUN1eCJaxuQbcrRj6pYY2bXaRossVaD1BSYK4fcaia5s1fGd5PqByXUo8XHjvw24UT5Lds5RhqeMEtqgefW54gnURQgSPApw3SU3SpJSYKvAUHjEL2HUMcvkKFhEF9cLLPHacnBh2ahuDRUDEp7pzoPkwEbT9vwwTpaKpCj6Cd7gN1fdqHfir3g6oaYVNK1KtBGpZnS5fnYvkPypg4fTGrFKpJX7gmjQHaHbYLhFuRGtSjTf4yVYtKAk3zjZEPoekLHi6RHfanvpZfuHt3xpvfrnjJRTDgdMchMXy6EZ6TU77ZfdWhmbz3PDs2UHrTBbPGDBG9MxkaRgKrGyzwqRA9Hcnz682d9CiZE6Rxz8NZePSC6NQGdDUBw5CReQRuhw9jFvszvYN6wPxAX98gP6JjrtEcACpvMLEX3nEWF3jAkfXsEqcV6sSjNqEWtaeYqPFAWe3BN7fs"},
|
||||
{decoded, <<147, 157, 216, 178, 75, 56, 241, 216, 249, 100, 189, 212, 234, 73, 154, 175, 139, 138, 177, 60, 221, 70, 244, 91, 206, 186, 73, 208, 217, 102, 134, 67, 207, 65, 154, 58, 248, 191, 140, 16, 151, 225, 106, 106, 251, 118, 4, 238, 244, 192, 206, 112, 152, 32, 89, 96, 183, 160, 233, 143, 133, 10, 143, 84, 4, 184, 174, 58, 196, 132, 250, 0, 62, 243, 202, 88, 19, 74, 89, 89, 20, 5, 241, 246, 215, 124, 155, 216, 129, 247, 52, 39, 126, 56, 145, 65, 36, 94, 3, 16, 0, 78, 42, 181, 238, 158, 167, 247, 143, 104, 38, 59, 175, 253, 47, 191, 52, 118, 96, 161, 32, 45, 115, 216, 83, 8, 137, 201, 182, 64, 125, 165, 177, 10, 2, 214, 107, 53, 93, 146, 54, 165, 104, 247, 220, 227, 180, 80, 115, 178, 104, 249, 88, 153, 247, 219, 121, 127, 185, 17, 225, 228, 211, 55, 192, 208, 62, 154, 245, 186, 135, 213, 82, 0, 203, 188, 248, 188, 197, 131, 105, 189, 202, 41, 132, 123, 67, 190, 225, 227, 143, 11, 149, 11, 81, 80, 192, 35, 91, 175, 179, 140, 24, 83, 113, 237, 1, 60, 253, 100, 122, 2, 216, 50, 117, 131, 168, 10, 134, 185, 70, 78, 162, 26, 224, 251, 62, 12, 177, 15, 143, 159, 211, 241, 194, 253, 240, 206, 11, 96, 183, 133, 198, 25, 194, 124, 17, 123, 155, 117, 40, 76, 155, 170, 53, 171, 59, 48, 253, 156, 143, 77, 240, 217, 76, 254, 212, 225, 160, 226, 117, 132, 211, 145, 197, 175, 110, 144, 205, 49, 74, 214, 163, 115, 159, 201, 187, 144, 115, 131, 218, 18, 59, 229, 173, 100, 49, 222, 32, 220, 87, 216, 247, 114, 171, 102, 219, 211, 236, 109, 21, 44, 189, 5, 98, 119, 228, 137, 61, 21, 151, 244, 104, 166, 233, 93, 119, 66, 244, 232, 221, 148, 214, 194, 129, 92, 171, 62, 106, 237, 225, 244, 112, 203, 210, 190, 97, 107, 32, 117, 75, 172, 4, 122, 157, 96, 163, 144, 113, 133, 246, 83, 182, 241, 117, 101, 15, 64, 170, 111, 51, 213, 20, 206, 161, 91, 122, 34, 74, 15, 43, 164, 55, 19, 131, 8, 87, 84, 203, 181, 108, 136, 87, 7, 153, 58, 232, 80, 194, 122, 137, 14, 116, 59, 41, 3, 249, 116, 205, 204, 134, 229, 222, 84, 207, 71, 6, 253, 217, 124, 227, 146, 187, 249, 54, 20, 168, 249, 140, 201, 23, 13, 85, 4, 147, 96, 134, 126, 53, 202, 15, 166, 139, 142, 103, 197, 87, 209, 85, 16, 166, 254, 211, 208, 198, 132, 99, 97, 223, 236, 22, 8, 250, 78, 236, 215, 219, 248, 253, 4, 235, 74, 172, 223, 93, 67, 136, 16, 162, 163, 155, 76, 148, 170, 161, 171, 166, 133, 175, 202, 207, 203, 202, 89, 225, 212, 181, 69, 109, 126, 40, 245, 128, 27, 188, 119, 201, 108, 124, 168, 216, 145, 179, 170, 72, 81, 216, 2, 10, 9, 200, 1, 42, 190, 116, 51, 6, 9, 239, 32, 228, 22, 81, 100, 241, 74, 67, 180, 157, 215, 54, 131, 41, 215, 46, 58, 0, 160, 33, 83, 72, 213, 217, 72, 94, 61, 238, 215, 84, 213, 161, 219, 111, 210, 219, 10, 143, 217, 138, 0, 130, 0, 34, 39, 118, 89, 242, 254, 38, 108, 69, 91, 254, 164, 163, 169, 74, 53, 199, 184, 1, 142, 236, 115, 8, 109, 231, 147, 68, 252, 119, 170, 241, 16, 37, 95, 124, 4, 30, 251, 91, 127, 181, 196, 218, 203, 118, 25, 99, 230, 3, 177, 113, 71, 168, 110, 220, 27, 129, 31, 233, 231, 171, 32, 178, 2, 117, 8, 216, 233, 72, 88, 54, 34, 64, 159, 142>>}}.
|
||||
{{encoded, "2NBHrmiNZMYzzSPz4DDU4sPXdJCgMgFsV4AZtbtTTsJG8aAEXPcm7BDSh6AFLkFzB7YsS5QEhaA5bQZHJESjHMpGiwfX7SaW44hGBsEdgqAJ9pfLgDg3wG44uioVq3tFMXdfqiqt5dU8mQsptEAXBYSTTS7RLYiAGdBHMGhcfRw4tgFdrN4JceRny5iNcuA5h2epMaKZwRR454X6GvDd3PyzU2RuihTrbyGTm1onEffeHqsG7CC46Vu8yJok3rpJjRtHNWmpbHsc3FHzyPbaXcHPhCCCsSXgr2SFua2T7KBJMq2Eq9nmQwVkQ4JQNGG3ZBk7GaTUhwLhqJLVGWNK1566qhQ6XNRCG41nY6S86qB5yRKpJvzrK43ymaCMPeNhYa89tjgPQ2besWjcuSFkD84i5MuqEt5FJQcefZD52PLZJHGefUDvPwVEM76M4S1LpYUPGrJBkrVrhdzLkwtRUWxWmv1UJYjHSXHjBwPXmazHvAXEuq44MwU2J9UVvCNdSEz5DEq3VxcoQ7WnAzCVip37XugNSDVQiiP6axmw5X9onGrkEoUagYkUUFSc1Qh7ZGcFyYgpqPWy8iorGsh7nsV7rCW53BmzoeiFECQUzSVUD456nkzoWNmx79SaEvYcZ1qc"},
|
||||
{decoded, <<140, 38, 27, 44, 92, 153, 246, 9, 44, 81, 177, 70, 70, 161, 171, 112, 41, 46, 194, 182, 225, 146, 166, 63, 54, 104, 86, 194, 132, 128, 117, 152, 13, 1, 201, 232, 1, 147, 77, 74, 110, 109, 207, 173, 245, 232, 144, 51, 66, 58, 142, 208, 92, 190, 236, 142, 222, 49, 195, 120, 232, 169, 236, 32, 19, 208, 108, 52, 98, 152, 250, 248, 104, 89, 26, 232, 108, 141, 13, 95, 26, 168, 49, 31, 93, 99, 151, 142, 220, 60, 67, 84, 148, 202, 92, 96, 4, 235, 95, 72, 216, 141, 182, 90, 225, 248, 106, 187, 76, 65, 189, 94, 243, 117, 21, 188, 124, 251, 173, 56, 149, 33, 253, 155, 46, 3, 133, 113, 126, 244, 200, 18, 108, 86, 94, 123, 206, 182, 200, 194, 153, 80, 155, 57, 63, 209, 131, 247, 148, 73, 246, 244, 51, 108, 208, 1, 215, 209, 54, 76, 211, 48, 220, 76, 6, 2, 248, 171, 138, 201, 21, 100, 151, 86, 13, 78, 33, 13, 144, 72, 68, 16, 101, 183, 205, 16, 131, 151, 255, 61, 24, 81, 27, 3, 121, 56, 88, 39, 227, 32, 134, 197, 122, 93, 247, 241, 9, 144, 60, 72, 50, 107, 194, 114, 0, 191, 3, 37, 161, 171, 44, 63, 64, 67, 143, 84, 235, 228, 30, 207, 5, 179, 126, 172, 161, 15, 12, 46, 27, 81, 163, 220, 179, 49, 217, 52, 31, 66, 64, 163, 130, 246, 209, 157, 141, 162, 66, 175, 107, 147, 126, 122, 79, 224, 23, 167, 88, 52, 10, 16, 59, 246, 126, 2, 129, 150, 22, 113, 242, 44, 30, 132, 223, 68, 181, 88, 170, 91, 131, 59, 193, 77, 110, 112, 93, 62, 224, 187, 201, 192, 176, 154, 176, 108, 216, 105, 129, 8, 238, 126, 164, 178, 8, 167, 156, 21, 98, 122, 39, 40, 177, 134, 0, 112, 212, 164, 92, 91, 18, 60, 10, 136, 44, 25, 60, 6, 218, 196, 80, 229, 91, 157, 247, 50, 136, 227, 192, 162, 34, 216, 233, 112, 6, 45, 199, 180, 75, 16, 42, 20, 111, 155, 69, 106, 220, 142, 178, 152, 52, 240, 201, 133, 215, 73, 186, 70, 30, 49, 58, 140, 185, 219, 67, 92, 133, 65, 7, 17, 105, 221, 222, 218, 245, 209, 232, 11, 250, 136, 225, 144, 165, 156, 98, 44, 86, 213, 30, 254, 253, 1, 199, 198, 110, 112, 177, 8, 218, 147, 109, 13, 249, 11, 166, 37, 34, 108, 70, 15, 111, 129, 81, 78, 223, 27, 106, 235, 210, 131, 176, 47, 33, 114, 88, 48, 228, 19, 89, 237, 43, 85, 58, 38, 99, 170, 198, 210, 145, 194, 45, 174, 87, 85, 178, 140, 118, 41, 5, 35, 187, 118, 83>>}}.
|
||||
{{encoded, "3RkqBKCBAgJdYGrZseeSTnLLCos7FekQ3yNZH2QUPkfzxf9vcFsfSMbEbWtQr9YWGC1QCKKm38a6srVwQ7kK1tuDCPdYG4ySLpzfu8TYrxjsWmLpgAbZstR2BScZKKUDkPKnz7gCZDwtTg3TxveQwSJZtKuy5zauxT8kDuXZzg3cHpny5LhW4vmyEgzS4PjRfCjjstZFS6zBpUMAHsekGEQXPbcgDiit6sWVfKqZYLF1FUk1cfq7GH1mpamUWJHmH3gJBP7oJBXKtSd9vnbDKWbhvELs8YEb2QmgvM5Yv2TWXVMU8okuGYzGPRPDpQCx6BvdzMC6ShXLoZEMEoc3oYWUArhjMVu53DxaUMRkqbqyCowPRHxmye8kTL6S9URaWjVW88n2p6cvep"},
|
||||
{decoded, <<119, 57, 48, 196, 83, 230, 169, 179, 20, 38, 56, 135, 234, 15, 80, 125, 137, 226, 94, 118, 81, 35, 213, 249, 20, 145, 71, 69, 50, 21, 123, 26, 46, 195, 118, 181, 146, 86, 176, 222, 141, 35, 30, 114, 124, 236, 46, 6, 178, 248, 64, 137, 226, 202, 249, 103, 175, 68, 97, 131, 81, 188, 215, 152, 66, 139, 142, 6, 36, 102, 188, 3, 218, 119, 38, 215, 212, 220, 3, 157, 242, 34, 250, 250, 30, 216, 5, 126, 207, 204, 244, 27, 155, 181, 230, 196, 25, 142, 152, 18, 10, 197, 55, 129, 75, 169, 254, 191, 90, 246, 65, 208, 47, 19, 117, 34, 43, 155, 191, 30, 38, 133, 106, 84, 59, 140, 136, 99, 178, 38, 169, 184, 175, 212, 75, 253, 167, 38, 167, 55, 191, 171, 189, 22, 241, 1, 10, 43, 11, 54, 27, 214, 117, 0, 168, 78, 14, 27, 249, 253, 134, 22, 134, 64, 94, 63, 209, 244, 7, 22, 119, 255, 23, 219, 26, 14, 38, 109, 137, 197, 78, 39, 102, 52, 80, 239, 235, 73, 85, 146, 237, 142, 113, 205, 241, 212, 226, 22, 38, 6, 142, 126, 74, 152, 50, 171, 204, 130, 132, 139, 139, 231, 79, 72, 5, 94, 46, 16, 23, 202, 62, 181, 237, 121, 240, 165, 53, 96, 49, 122, 217, 164, 251, 151, 102, 164, 148, 108, 133, 244, 6, 239, 163, 105, 239, 88, 14, 89, 40, 220, 4, 132, 101, 137, 133, 101, 77, 114, 158, 141, 18, 37, 235, 185, 72, 62, 66, 69, 226, 120, 53, 211, 240, 225, 89, 82, 253, 162, 100, 5, 79, 64, 179, 244, 31, 155, 27, 174, 13, 253, 237>>}}.
|
||||
{{encoded, "3eCb7uguNTeArscFuVg212uB7SqasPVMz7VUQ7j1e6WkF536CwX2hiyq7Gv3cu2QMW6SiTfLrYwd9FuAdv7wLJR26aH68mtXd7bU65MXquekbrnFEKJmAAQ4bBHt92QsSnVkXfwMDAtwnLD69ad1LPqTo28zXCE3z8rjSfW6N8bVuFwQDgm1LuPHabfMChqCXGtYQy4WGPHTeRrYMGJpo8DYo5b43L1qFeii9W2uz8Jp8hUNQ9GjjUSiXwA1FuvZCqxivL6yVJEpdwsUukWZGVFUkZykk7JHES6YtqY18fdqW9ioYqEHAQhsszdE3b9gHsC84wxpuRh1F497942Nfjq9og5j79pGn5stKV8o4yM9Z9z7z5vQ7zgkMzJkcdaKoK99Ftjj1dF6oAT4SevU3PATSC8NysFKrQiZP8oYo9NEKgi5CSguSstMkEiCCBq8U6dS3Wa9MvzkFBufz4PkZqr12ZRoFAr33J8dByoiATVpocF8BWpra1wZJiBmeBTXVWtWFer8c5AMRuDRdGurvDBUj8kaVGEFoznfyXLmtCBZ26tCKbUEgXqXCGW1zwaj8wdu9FiPNBApoiAgDovjq34kSocxyBJ2N5YprJ7mBZJgpy79dZCjRWMunc1sg2dLymTaoTEntUfJeaov34kKuJzMsB1gaRhcKzbifgFzxj65Yhc2GCyV29pU7ubuL4bfxo1xdcd4pSMTeK9GUKqauRTqU5RaKX9e9AyrhkKgmJYW1cH4nf53Bg6J6svKtm21SrTNtcBbB5DZxSzq4uMtxe8nShE4QXQk1AJctZcjhMAfpgeyQtoSYHfhF2iKBfLy2Cm6juNjqf"},
|
||||
{decoded, <<249, 146, 44, 255, 2, 133, 54, 202, 222, 122, 117, 241, 51, 9, 193, 173, 126, 150, 100, 227, 225, 210, 144, 214, 144, 181, 22, 11, 204, 73, 166, 174, 240, 3, 244, 226, 9, 91, 45, 202, 171, 115, 17, 181, 30, 228, 178, 19, 172, 76, 8, 189, 16, 4, 167, 39, 10, 226, 173, 73, 243, 201, 201, 2, 153, 159, 166, 107, 21, 241, 160, 2, 252, 191, 18, 170, 33, 189, 146, 125, 144, 217, 55, 104, 27, 231, 186, 219, 207, 184, 40, 44, 135, 6, 74, 76, 157, 173, 215, 45, 68, 116, 56, 27, 240, 168, 245, 42, 166, 82, 64, 83, 45, 15, 237, 87, 255, 108, 91, 253, 243, 236, 251, 29, 149, 10, 109, 210, 189, 42, 16, 81, 39, 153, 162, 194, 193, 134, 154, 231, 236, 77, 47, 142, 191, 134, 121, 39, 183, 175, 19, 197, 3, 62, 35, 60, 19, 73, 240, 80, 152, 218, 2, 78, 58, 60, 34, 57, 31, 237, 161, 128, 142, 38, 120, 253, 113, 81, 23, 212, 172, 106, 68, 169, 132, 186, 97, 229, 98, 125, 96, 115, 74, 203, 101, 94, 222, 99, 184, 125, 177, 252, 50, 216, 72, 35, 164, 154, 244, 13, 79, 178, 145, 154, 158, 18, 114, 78, 65, 96, 68, 228, 107, 25, 220, 246, 233, 59, 64, 154, 50, 157, 199, 219, 67, 115, 202, 72, 31, 249, 66, 249, 57, 238, 137, 168, 223, 205, 241, 3, 158, 76, 70, 199, 53, 193, 123, 148, 105, 227, 162, 254, 82, 87, 124, 206, 10, 229, 237, 172, 4, 43, 239, 139, 155, 125, 148, 94, 115, 47, 224, 26, 219, 129, 194, 132, 161, 221, 237, 182, 144, 226, 146, 76, 91, 174, 92, 166, 44, 43, 92, 252, 199, 215, 130, 136, 76, 207, 178, 112, 16, 170, 74, 222, 113, 56, 68, 100, 123, 53, 64, 36, 189, 104, 38, 235, 128, 79, 205, 211, 233, 146, 68, 171, 9, 231, 130, 9, 42, 155, 28, 210, 153, 164, 214, 63, 145, 42, 37, 64, 135, 82, 206, 50, 247, 131, 82, 2, 154, 34, 79, 205, 31, 133, 8, 73, 82, 49, 228, 80, 74, 164, 29, 188, 214, 167, 228, 41, 156, 105, 43, 239, 186, 172, 162, 229, 38, 152, 153, 89, 8, 157, 110, 43, 15, 135, 115, 240, 164, 1, 61, 44, 200, 83, 19, 9, 60, 207, 30, 189, 136, 38, 166, 209, 238, 7, 222, 109, 156, 37, 62, 79, 165, 223, 42, 197, 164, 154, 86, 109, 206, 244, 46, 57, 7, 251, 217, 29, 33, 237, 117, 234, 226, 0, 56, 78, 66, 103, 112, 94, 117, 129, 4, 16, 93, 95, 102, 211, 133, 176, 64, 192, 151, 75, 9, 101, 176, 204, 234, 20, 126, 147, 76, 44, 85, 221, 52, 1, 187, 13, 55, 58, 184, 212, 251, 64, 87, 237, 149, 126, 88, 172, 89, 44, 105, 92, 129, 12, 213, 235, 20, 60, 29, 46, 3, 53, 25, 116, 119, 15, 214, 144, 190, 214, 200, 112, 154, 33, 100, 124, 246, 121, 11, 211, 71, 162, 115, 200, 91, 99, 113, 126, 171, 75, 240, 131, 179, 20, 134, 13, 169, 81, 38, 36, 82, 248, 123, 135, 74, 216, 100, 142, 228, 97, 240, 144, 106, 35, 120, 64, 70, 243, 210, 107, 106, 204, 64, 196, 12, 179, 159, 27, 165, 93, 63, 201, 19, 82, 220, 121, 84, 115, 223, 99, 93, 244, 117, 64, 95, 36, 30, 62, 246, 172, 191, 34, 128, 25, 22, 88, 206, 157, 52, 86, 111, 74, 222, 194, 88, 100, 183, 195, 193, 12, 149, 246>>}}.
|
||||
{{encoded, "6911yawrPFFg61ityYtqhiuJUUKicEobTGbjfd296LKTmAvwTcaWBWpevSVLEmc168cKeGfUD35x91ekZdjqxCDD2b8asRN6CGm51EAwQe2JGZECCPUY3hpGfbrMzQ4WgBbgVcmBWuF9tDbsCAbzQFdyX5f5QDispVEK6HGFRKxm81wapsnPuVnNcsFvFNba3VcN7udju43HNUAupoXPoDif6PiVpciqXqf8JxZnQGz3q5JfqG4R3RLtBgccTszxWipv5SXry2CxaTfg1ozBUeFdARRKRL1Fhm1nCCf2NdY8bRsZCk1ZcXBhcfmAEjA71PHNKg3TTcuDbCq9fBCbUxBcEGJDpoaYdJSYC9CmhzofKp4ziknb6TxcaRhHBmS7UzUG9h3scSuoBpHt5re7hvv2LKDreXBpx8N3DkoGU7s5tQMMgauKXfgVQA3dXkRksVs9h8gVaa4FkKFwQ4z1723QGaUr4XZevPPvCCQ6dhGwXg85tFcZR7yH9dSTjVYnwqeT2MkmkeLFTvG5RwYMXEFUyTJ5tQxmZEvkBnjdReY5xLCemvhFzbpdpU7iHMnx3f2rUyi6g4tsaJiMDFfCTW7amQUmaGd8rtNfW6LgdE4GtpNg49msxXmukC3vg1RJQkCMP5LcpsYWmEsvCCQfBeANxLRjZqcYe6zPEjo1tbrMdbWJ6Sm5osH9YVVxwGLwcfiF"},
|
||||
{decoded, <<247, 236, 120, 197, 239, 135, 180, 85, 153, 9, 15, 93, 243, 255, 134, 103, 144, 200, 110, 233, 32, 172, 159, 3, 114, 227, 36, 220, 228, 245, 83, 215, 57, 170, 188, 8, 185, 207, 165, 57, 252, 219, 102, 53, 167, 53, 129, 179, 49, 4, 254, 115, 248, 25, 119, 65, 62, 166, 165, 22, 153, 138, 109, 116, 239, 28, 92, 251, 234, 174, 209, 57, 40, 165, 55, 25, 182, 109, 42, 113, 197, 217, 98, 15, 183, 36, 252, 64, 163, 134, 3, 31, 189, 89, 227, 75, 216, 67, 199, 176, 164, 233, 46, 71, 74, 187, 111, 14, 129, 148, 156, 16, 207, 243, 35, 180, 64, 103, 161, 49, 186, 233, 81, 130, 12, 239, 11, 232, 239, 110, 78, 71, 77, 66, 196, 119, 77, 154, 239, 246, 0, 209, 77, 9, 30, 162, 61, 243, 54, 13, 118, 77, 184, 39, 0, 94, 110, 18, 102, 115, 236, 14, 174, 106, 125, 245, 124, 192, 21, 62, 35, 149, 153, 139, 14, 41, 94, 183, 158, 108, 154, 64, 206, 178, 132, 109, 148, 198, 83, 58, 3, 220, 184, 140, 167, 40, 254, 14, 173, 78, 195, 41, 139, 152, 37, 167, 126, 193, 44, 45, 200, 236, 107, 164, 33, 37, 132, 114, 189, 45, 139, 130, 12, 254, 13, 65, 246, 177, 82, 84, 100, 60, 216, 64, 226, 234, 156, 70, 39, 182, 125, 244, 126, 198, 249, 116, 109, 94, 136, 5, 2, 68, 115, 41, 10, 12, 60, 119, 145, 170, 158, 132, 75, 72, 246, 246, 244, 235, 175, 53, 239, 196, 14, 80, 169, 133, 114, 63, 0, 59, 231, 244, 77, 65, 135, 123, 34, 82, 123, 91, 85, 41, 244, 249, 243, 148, 153, 164, 149, 39, 54, 34, 211, 154, 165, 45, 54, 180, 224, 13, 76, 242, 58, 80, 117, 100, 126, 4, 249, 154, 170, 242, 141, 124, 145, 207, 53, 201, 191, 214, 91, 207, 243, 235, 141, 207, 165, 110, 106, 251, 33, 139, 196, 238, 51, 95, 66, 179, 96, 249, 46, 108, 147, 42, 246, 73, 232, 58, 137, 84, 180, 122, 16, 232, 146, 4, 21, 187, 41, 203, 14, 234, 249, 135, 5, 34, 33, 104, 243, 114, 189, 6, 30, 201, 56, 96, 245, 26, 126, 146, 251, 251, 184, 224, 123, 135, 67, 132, 222, 253, 251, 1, 37, 186, 210, 20, 99, 46, 5, 174, 139, 115, 6, 131, 0, 9, 238, 63, 30, 45, 198, 4, 96, 134, 178, 186, 82, 36, 122, 254, 173, 216, 184, 46, 46, 233, 155, 87, 82, 108, 237, 143, 224, 248, 184, 252, 78, 46, 122, 48, 58, 87, 150, 212, 103, 52, 191, 55, 102, 96, 19, 127, 8, 243, 165, 15, 8, 84, 82, 30, 92, 23, 73, 37, 124, 236, 94, 12, 225, 30, 12, 137, 27, 232, 203, 221, 160, 44, 181, 62, 22, 70, 159, 31, 52, 180, 103, 96, 245, 249, 83, 61, 196, 227, 194, 129, 231, 132, 135, 37, 216, 214, 48, 225, 138, 67, 152, 40>>}}.
|
||||
{{encoded, "makX5SgPRwZVPzAxxfnjk815FTLsdMQpVvWEnvhgLVQa6g4YMVNsL122JgzW4JNJ83Hj6o3hHnMXiDbhjqSKGzAkP9DTHAyPBfS9yoEZ57DEQBCeULYrQhquLYLu61Qhk3q84eWLQnwS7hH1JTzmLCR1qBcCabURUgqMr3yrQPHMtBsHjWJysy7poBMCRFVCQEPvVHu43njcCVVug4nPHM9ToVxycVicefwehVYmDCbXnnGW7N8U9pgrR1onZFZkU3e5jL6HijM3LXrKZhFgRcakyoSZc1jeYUAiZ4JNU3FpS3ybg6XPvavpndUNCfRpSk8V4DiuDqw95dKXUv46tmMdRYBPTV2FKpw12koCx4aTbJUaBNmCEJk2aaodbuwsiMkvGWkfwxuutq3K93cngSPNrkiBYM6wxRc75SCLetUXhG6ofNkNTM7f5GKu4Y8dK5orc3McT65R52CkapqsvdSxBXHCoFQSf7tmMU56Ej8Er6oJ9h5rg66EtneJp5FekDtdG3zej3XkUiBWHjNkJ8WrvBMY6AUVUTjw1RkRqbSQxwNU7ge9xcrVy1KAVtt2Ysk8Lk1nhFksuXxCKG7wVK9ED9e6vGmBY1A4MMno8zFzHJrvxxvFZebUA67ujXR8YUVt7gpNev9GTtm7ofPvEYJNxNkTwBF8xgu8bwMWbtPV6fy5qJX7iodsgDjj7rvuSUNsmJGFCUqRRSMb6WB3vHDew4qZ2XxT9HqZ2e7jCgmmm5e49YmQrvoUaMPu1grrtcmy2sKWFoaiJCBqJfYRV5aNg693kc11ZwM8B6z7pX9shfwQgiNxqgtudBbXbVFkgZYeb9CSLWAYcVcxFBBEc7Gse8D4SPtkLNcwQGk3cXW1Z9SgS9sYbw9N5mDvhqt6dunmZhkGUneDGAeexEYy5LU5vdpdrJeJq2sMShrw7y"},
|
||||
{decoded, <<84, 213, 159, 234, 214, 35, 220, 54, 46, 44, 51, 209, 89, 221, 55, 172, 208, 27, 251, 248, 79, 229, 88, 63, 37, 59, 155, 101, 83, 201, 94, 246, 22, 28, 221, 67, 128, 197, 20, 56, 244, 170, 113, 65, 115, 156, 167, 216, 0, 120, 141, 217, 173, 210, 56, 89, 243, 129, 39, 235, 47, 93, 181, 220, 231, 48, 205, 56, 165, 126, 226, 233, 49, 91, 42, 92, 148, 94, 123, 166, 210, 138, 31, 120, 231, 71, 212, 156, 206, 169, 244, 24, 123, 114, 96, 177, 48, 58, 188, 150, 116, 182, 118, 62, 48, 67, 176, 111, 188, 126, 255, 138, 131, 184, 132, 121, 127, 119, 186, 230, 112, 210, 68, 106, 192, 33, 81, 133, 239, 167, 176, 5, 147, 58, 214, 37, 90, 221, 84, 146, 49, 40, 129, 234, 15, 86, 156, 70, 187, 26, 129, 199, 231, 214, 68, 185, 103, 1, 248, 148, 218, 37, 35, 134, 69, 208, 243, 80, 26, 163, 62, 188, 253, 68, 75, 187, 164, 161, 210, 97, 155, 18, 109, 241, 214, 44, 96, 150, 6, 70, 200, 177, 15, 21, 47, 246, 39, 78, 205, 127, 52, 58, 219, 231, 183, 246, 193, 111, 40, 233, 87, 66, 115, 22, 39, 59, 148, 198, 95, 249, 59, 115, 15, 180, 112, 202, 129, 31, 196, 120, 22, 217, 100, 4, 142, 161, 126, 172, 88, 245, 61, 146, 205, 168, 75, 127, 149, 135, 182, 39, 219, 19, 169, 55, 184, 146, 113, 52, 61, 121, 80, 151, 186, 183, 173, 51, 193, 242, 153, 102, 44, 119, 129, 99, 142, 163, 164, 52, 188, 161, 202, 128, 219, 111, 209, 94, 173, 55, 130, 194, 3, 22, 243, 60, 137, 160, 232, 238, 37, 203, 89, 121, 167, 230, 86, 208, 18, 43, 107, 133, 227, 156, 33, 88, 136, 72, 136, 101, 27, 81, 249, 162, 118, 226, 41, 248, 5, 56, 121, 80, 20, 212, 194, 107, 153, 158, 14, 184, 66, 241, 84, 49, 95, 92, 204, 194, 227, 29, 49, 16, 9, 7, 117, 219, 29, 233, 228, 191, 48, 138, 194, 210, 194, 60, 62, 185, 140, 60, 200, 51, 118, 89, 172, 223, 128, 241, 66, 201, 189, 85, 128, 201, 130, 141, 166, 168, 108, 12, 111, 45, 245, 223, 57, 125, 171, 61, 102, 131, 132, 247, 111, 223, 6, 176, 137, 166, 2, 33, 255, 190, 139, 128, 183, 155, 44, 163, 160, 240, 159, 151, 244, 111, 46, 220, 17, 32, 173, 194, 185, 197, 65, 83, 142, 53, 15, 227, 113, 13, 175, 127, 8, 98, 208, 68, 117, 217, 174, 246, 158, 136, 239, 182, 53, 241, 113, 22, 76, 176, 64, 129, 18, 107, 211, 84, 96, 173, 153, 126, 53, 209, 62, 92, 73, 155, 150, 158, 59, 46, 127, 93, 11, 211, 190, 232, 87, 204, 137, 62, 130, 137, 207, 7, 7, 225, 194, 250, 54, 224, 54, 219, 94, 203, 42, 103, 197, 185, 180, 76, 174, 198, 190, 11, 130, 156, 239, 4, 254, 74, 203, 152, 141, 119, 182, 179, 45, 90, 69, 185, 146, 247, 144, 187, 84, 210, 236, 61, 142, 127, 106, 174, 106, 237, 61, 222, 186, 154, 176, 29, 250, 162, 185, 159, 133, 162, 27, 220, 202, 20, 160, 213, 72, 169, 20, 75, 228, 73, 181, 97, 176, 152, 180, 135, 255, 164, 232, 5, 130, 132, 121, 98, 63, 248, 214, 206, 246, 101, 100, 141, 113, 54, 31, 237, 45, 221, 138, 216, 86, 122, 220, 182, 55, 214, 114, 74, 18, 124, 208, 245, 113, 45, 218, 199, 227, 148, 9, 178, 119, 40, 109, 130, 120, 238, 121, 89, 98, 79, 245, 127, 143, 151, 125, 125, 66, 43, 38, 127, 167, 30, 196, 4, 24, 132, 134, 49, 80, 254, 157, 104, 41, 108, 195, 216, 127, 7, 47, 120, 139, 151, 131, 202, 59, 178, 189, 33, 173, 48, 81, 95, 161, 33, 156, 105, 111, 252, 114, 164, 207, 42, 19, 157, 3, 212, 153, 36, 44, 150, 244>>}}.
|
||||
{{encoded, "2ACtiCAZh9juac4HRN1SRDXwaHN5jnz4RRNAgk49TV1W7vehfUKwFBESc1F75zXmUGSAcSMVQiW3HVi8ie9YpjXV51KzFrRhvY34Ae6M9Ub89LQtywvEzYaYTHCxjGvXFCwJQJhBjMSmRkq2avxy7j4j4JXjvTzSSTd9cheLZt4R5svm62VNEHJrsNrJuipfjGyJ2fELiu2h9c5hzsqB1Ce2zftEVBDuU7dyscka4NgzVeC2KGv9hRSS5LJATsfiVBS7yTiEspQkm6Zt61TdyPduwU7L99aBsQikRbqK1VH9tZxsQ7HJk22Nt95efx7TJ94ymBDX8NnH6wCwW1vL596jnXPHJ8JEArhy9DgmXuTEKBvLqszintVStX1h6p2F4cRDBERJoZ7a6VZ38i395rjDT7BUtVJhr8hK4BbpVknJvnWJ5XfVn8ZKzwatR181iX7EPXGFUCxoJmeCq14ejosX9qCrW7iyyEFemFNLGw3QywchwzUMzbnoVC1rspx7SiKnoHWutzm7YuSUjZkVad3hWGceW5azoFZhXx9DuNoPquovg3xXf8ab9MDoeYvBUSnmgNqJPjWRcru6gAf6A5RQssWYycHD8YqpA7c5Qz9377NLdQMJssz7L886tzEQftLz48WwfhnCttJ5ot3y7ABHq5vdEYWqvkeSkMxsUAYkDSUXcPEx6iSC2iCigifSpZDbqVR3rMTgLmz5ERaL9ngMeVwZ12X9chjYA7DJhWim3Qcghx7ceGRiKZy37STb1WbZYokRUvYc4YFRpuuUuzEDX4uVzL85YMbr4FKJccKDmohKHLEGyuPPSy4rhfRsqsv7Y2sPudKVF8rZrHBXW4WLcyRaPXTqr5SST2KqpPpBtBJw9McVHcaYPHX3T2abwuRLVgHJvZp7qpPEodieUrhNWxWcHeaYw4sx5vPQ7BZGXgGLdVLHFCsmouAyGUQbfHedP5sckghBXvuJo16hZbFsA7pbMEBBFFchrwq2B2a3BeiLFFGjZM823hvYaxDgRTo9GH8N18nHYaKkq3J7AW1hF6acYUVehCms7nzDU7u3anYzLN71t9i9FFHx9bwwogRiqU9LPKJ6nrGBbZeb9yGw3JjPbXw94CCW4XFaN4DjrAeNWo46w5dAUibZa1e2Arg4CTpd4fwZ2CJcCVnxYKNE586PoFadjtMf7rn53RtATo1dLYzH8yUMani56DpGybHjKxuf4hHfR98t94BvgdQzdPrS4RHNfSTjUyHDLqeWf48xK61MwJFzKMew5NLWugTEYARKoY9MqsvkRGocY4wMUthNjM933NxGKBKE"},
|
||||
{decoded, <<118, 142, 215, 4, 195, 137, 71, 233, 77, 149, 201, 206, 98, 197, 152, 207, 222, 199, 6, 75, 223, 229, 144, 63, 179, 129, 56, 153, 197, 25, 24, 137, 5, 2, 238, 209, 161, 197, 99, 102, 196, 65, 24, 27, 87, 224, 122, 2, 81, 2, 228, 136, 92, 23, 87, 4, 114, 161, 70, 45, 156, 51, 192, 149, 104, 34, 12, 167, 209, 174, 57, 111, 173, 162, 57, 100, 67, 84, 145, 90, 228, 112, 17, 196, 30, 202, 104, 208, 120, 58, 88, 48, 238, 82, 133, 57, 244, 217, 39, 149, 234, 155, 214, 72, 111, 112, 95, 198, 136, 181, 95, 228, 138, 218, 49, 118, 178, 194, 222, 157, 161, 26, 12, 68, 193, 238, 9, 53, 152, 120, 108, 55, 76, 48, 183, 249, 188, 55, 251, 47, 5, 69, 113, 48, 47, 176, 80, 199, 0, 189, 123, 151, 79, 73, 92, 151, 229, 31, 199, 9, 214, 247, 239, 27, 233, 183, 214, 4, 208, 128, 126, 245, 50, 232, 103, 207, 40, 162, 197, 138, 43, 28, 146, 189, 29, 36, 73, 66, 7, 100, 66, 2, 132, 146, 17, 110, 25, 65, 187, 179, 45, 127, 2, 135, 176, 112, 101, 117, 251, 137, 144, 174, 133, 172, 172, 253, 59, 195, 36, 113, 126, 142, 205, 205, 135, 255, 145, 198, 57, 104, 122, 209, 219, 237, 245, 201, 120, 206, 170, 164, 12, 105, 221, 41, 210, 108, 131, 230, 210, 231, 117, 198, 31, 186, 117, 62, 221, 59, 224, 49, 27, 72, 184, 73, 226, 216, 240, 31, 80, 228, 145, 173, 87, 48, 131, 62, 216, 19, 163, 243, 46, 174, 160, 244, 55, 104, 133, 207, 49, 229, 207, 73, 161, 12, 38, 85, 246, 125, 245, 121, 190, 150, 208, 88, 27, 33, 83, 231, 215, 60, 79, 225, 218, 185, 140, 41, 216, 153, 53, 142, 22, 249, 28, 247, 12, 141, 145, 87, 66, 186, 183, 44, 34, 83, 24, 253, 221, 22, 98, 158, 198, 4, 127, 191, 135, 25, 128, 131, 43, 253, 13, 46, 18, 148, 146, 213, 33, 69, 225, 17, 96, 141, 45, 43, 118, 118, 194, 75, 129, 222, 172, 51, 60, 84, 248, 11, 237, 236, 55, 196, 102, 247, 144, 13, 12, 143, 57, 13, 230, 16, 201, 201, 37, 143, 35, 165, 230, 24, 44, 91, 9, 142, 157, 132, 76, 8, 211, 236, 53, 227, 173, 209, 192, 148, 217, 150, 80, 109, 243, 214, 207, 168, 81, 249, 77, 57, 239, 62, 228, 2, 12, 36, 8, 57, 145, 2, 111, 255, 1, 22, 98, 250, 143, 179, 231, 223, 130, 174, 144, 252, 199, 50, 202, 132, 161, 48, 149, 56, 64, 219, 28, 182, 208, 80, 176, 254, 97, 98, 170, 215, 27, 242, 19, 90, 140, 47, 254, 12, 187, 109, 120, 12, 109, 121, 30, 201, 110, 26, 201, 192, 216, 232, 248, 51, 107, 127, 195, 191, 13, 22, 107, 7, 246, 41, 157, 200, 159, 109, 52, 52, 146, 227, 41, 40, 213, 219, 192, 65, 76, 202, 25, 153, 165, 83, 221, 124, 110, 118, 192, 109, 189, 193, 100, 243, 245, 1, 94, 200, 208, 37, 206, 48, 144, 0, 220, 173, 198, 239, 105, 241, 38, 233, 46, 160, 68, 226, 92, 156, 165, 114, 4, 55, 76, 19, 11, 95, 211, 252, 241, 21, 5, 214, 188, 235, 205, 75, 4, 108, 101, 70, 57, 62, 235, 153, 67, 106, 197, 148, 189, 172, 149, 151, 151, 226, 44, 16, 184, 27, 193, 22, 112, 233, 144, 97, 61, 144, 191, 200, 41, 59, 91, 249, 145, 130, 93, 99, 61, 91, 96, 240, 244, 29, 76, 162, 14, 65, 35, 42, 242, 185, 62, 90, 247, 199, 169, 122, 91, 65, 30, 103, 69, 16, 243, 60, 123, 47, 86, 7, 205, 87, 186, 134, 242, 103, 247, 68, 223, 23, 180, 93, 15, 6, 125, 218, 46, 88, 140, 151, 86, 228, 130, 23, 24, 23, 31, 35, 203, 183, 217, 30, 80, 129, 31, 82, 153, 24, 114, 40, 241, 124, 50, 17, 59, 82, 245, 200, 188, 93, 74, 225, 205, 170, 111, 221, 67, 76, 94, 223, 26, 229, 174, 192, 168, 134, 57, 176, 108, 217, 149, 52, 190, 152, 214, 164, 20, 192, 139, 11, 114, 91, 23, 174, 161, 56, 186, 38, 192, 205, 155, 228, 232, 25, 183, 99, 132, 121, 6, 132, 150, 211, 178, 18, 0, 31, 126, 245, 175, 108, 101, 39, 79, 215, 88, 252, 149, 205, 56, 98, 240, 35, 135, 108, 88, 172, 156, 82, 163, 212, 198, 249, 236, 224, 211, 254, 110, 224, 8, 90, 70, 186, 68, 158, 201, 79, 195, 90, 246, 118, 63, 226, 190, 29, 129, 192, 73, 115, 26, 80, 20, 42, 66, 140, 118, 192, 108, 104, 6, 93, 14, 194, 12, 215, 137, 241, 7, 95, 41, 61, 235, 79, 126, 118, 10, 104, 184, 211, 161, 184, 132, 175, 25, 220, 133, 104, 243, 90, 46, 141, 36, 186, 207, 67, 189, 42, 187, 163, 249, 119, 255, 235, 45, 233, 78, 213, 223, 93, 171, 168, 26, 51, 43, 193, 208, 59, 217, 228, 200, 100, 4, 191, 253, 236, 234, 34, 228, 238, 151, 247, 253, 129, 179, 206, 55, 172, 177, 92, 188, 206, 205, 169, 211, 242, 248, 201, 199, 137, 160, 151, 150, 202, 85, 150, 115, 143, 139, 194, 89, 76, 60, 83, 200, 230, 188, 193, 129, 230, 20, 76, 185, 8, 119, 149, 43, 67, 17, 198, 57, 228, 20, 90, 211, 73, 204, 143, 253, 114, 189, 144, 170, 164, 64, 226, 245, 31, 199, 180, 32, 228, 85, 14, 102, 48, 231, 57, 65, 233>>}}.
|
||||
{{encoded, "6a7qSowf9VB3boS1mCpQZqdRjxsDA5dFyxT9YCXc1U6Abh9iyNZitAorthhSRaaJKEKUrJ8oa24np7qG4nKBn2vgx2n8PTEdxCHBryrLb5kAR4LkWySFU2Teox7SnRv4XFqCibxzZCKuN8MSVLg3WpZ2iQx7dRuoTL5ksyZBFqrZxXZVyZMKypsPJzVjTaoiN6ACq9RTAExw1df8a7FTuSPYiBxr8WWw186i8CE3K6A2bnqF5gCXtThpKvjuD3HnDAei5G7WwTs49a3Hzn6oatZY3a1qn9HpHDQvnSMYcB9pBbT6tpD7zLZ4WTbAoerP26y9UZDTJa1ykHanRcim7pV5SFvHvktKATt7bVvnxXyFS8BS1uF6vJDEwPWq3vVy5nJkoENmi6HU3jUEHomASgJ5DEXvhiUye8sxaK4qTZxGNDSqa6C1KLYdsNwVBDZ6EcSqWuge86WmDQ1mwRUH1BGyvu9gyxmVJ4PAFdtzrizsedoRoogqA5Sdv6nym5Eg8v7ghUJADUS4BQsYzqATKQzYdcUkeGj1X1N47NjBaGev9Wu4sSAF9Q3AFL5novdNPMY9w6ob6bH1Dar1Pi72QhXtmSqSABG496mayre9H9VSkxnQ458euVQcdndTZZpzdHzRdGWNiRizy5TX7sptWkq6m64Hyfi4hg1iFRjHGYYhp4QUX6whZNze7wJFCRwUJhTGUKf5J1NeHNQ6RpmYsBuDx7K4Py8qihaTpQKzdCnsVFSXrJbVjzYypkdKPtGmiErLdA8pfV2zXmcq52buedHDNXnUKu23g6fJFK1JRPPC2KWbvtU6eR3DoJoyS2dfYXW5ZkcYd6hu6Hc9sGgDsYQGRK2AH3dXTqh5D5kyBwnsre1LU4b12KHMtjyxpz14dgSe6F1Dtxr5jBTRne9ZsgTk6Ns8oMpvqZw57"},
|
||||
{decoded, <<69, 94, 131, 34, 192, 78, 16, 104, 139, 194, 36, 130, 231, 187, 162, 239, 24, 209, 223, 79, 7, 230, 209, 34, 161, 130, 241, 158, 145, 219, 173, 0, 46, 147, 16, 54, 204, 162, 243, 41, 195, 79, 106, 177, 18, 54, 157, 120, 87, 114, 216, 218, 85, 203, 175, 144, 91, 216, 185, 158, 150, 198, 201, 102, 34, 52, 9, 27, 175, 211, 154, 102, 189, 148, 220, 143, 124, 45, 73, 111, 54, 60, 17, 67, 47, 174, 79, 94, 39, 33, 157, 72, 32, 170, 9, 71, 143, 114, 109, 174, 120, 227, 90, 176, 247, 151, 87, 55, 27, 224, 134, 127, 131, 251, 162, 168, 251, 109, 154, 44, 38, 223, 223, 127, 180, 163, 61, 199, 26, 45, 69, 149, 144, 69, 180, 240, 94, 6, 215, 75, 247, 17, 21, 251, 103, 34, 213, 242, 212, 33, 175, 69, 153, 133, 148, 93, 165, 239, 144, 156, 6, 87, 42, 198, 124, 48, 82, 82, 245, 186, 11, 109, 80, 21, 70, 160, 219, 129, 76, 67, 206, 87, 107, 194, 172, 35, 17, 164, 69, 208, 175, 88, 94, 96, 210, 156, 86, 207, 39, 44, 204, 8, 198, 66, 114, 114, 121, 75, 162, 21, 58, 122, 185, 14, 58, 190, 188, 177, 48, 111, 185, 126, 85, 82, 241, 197, 248, 245, 133, 76, 123, 108, 15, 201, 152, 47, 97, 23, 104, 49, 25, 21, 141, 110, 120, 106, 160, 236, 189, 127, 131, 130, 212, 187, 91, 231, 178, 38, 65, 233, 135, 28, 8, 12, 140, 178, 177, 114, 162, 118, 2, 173, 47, 240, 210, 183, 30, 53, 44, 113, 227, 138, 229, 169, 131, 112, 47, 60, 176, 181, 163, 88, 159, 48, 203, 51, 139, 145, 81, 175, 79, 64, 88, 197, 244, 135, 44, 157, 141, 159, 195, 63, 27, 247, 59, 231, 84, 30, 99, 212, 162, 117, 97, 208, 190, 116, 162, 41, 218, 167, 189, 251, 161, 33, 97, 145, 145, 35, 169, 69, 183, 152, 126, 243, 52, 155, 14, 192, 238, 4, 8, 184, 228, 147, 123, 245, 92, 88, 97, 181, 89, 162, 229, 236, 67, 83, 108, 78, 65, 157, 65, 35, 212, 199, 18, 155, 191, 214, 83, 137, 192, 22, 173, 85, 185, 84, 216, 178, 166, 253, 53, 175, 68, 225, 67, 204, 10, 113, 148, 97, 79, 48, 99, 165, 252, 51, 28, 113, 139, 231, 242, 78, 86, 64, 150, 212, 36, 144, 106, 78, 131, 55, 113, 222, 205, 13, 86, 13, 164, 176, 158, 131, 15, 237, 214, 232, 1, 50, 190, 209, 124, 163, 30, 164, 234, 149, 16, 65, 189, 55, 78, 251, 24, 4, 62, 180, 249, 143, 131, 84, 2, 221, 224, 221, 29, 170, 7, 204, 149, 6, 80, 238, 11, 3, 200, 57, 246, 95, 57, 87, 1, 55, 177, 94, 131, 194, 149, 206, 38, 222, 246, 213, 86, 218, 157, 126, 251, 254, 219, 37, 228, 171, 197, 5, 11, 106, 217, 104, 100, 37, 120, 46, 41, 162, 137, 244, 11, 105, 134, 44, 54, 139, 202, 151, 111, 254, 99, 56, 76, 196, 166, 151, 65, 215, 130, 122, 8, 183, 53, 155, 216, 149, 121, 136, 218, 205, 39, 25, 148, 149, 115, 83, 89, 80, 9, 135, 49, 158, 108, 158, 211, 12, 156, 95, 157, 158, 197, 248, 221, 234, 117, 127, 229, 3, 182, 42, 0, 131, 253, 80, 44, 57, 120, 109, 128, 114, 162, 105, 8, 120, 72, 153, 110, 4, 10, 235, 66, 225, 1, 145, 115, 10, 61, 100, 142, 190, 58, 207, 124, 134, 228, 215, 105, 85, 127, 187, 215, 144, 63, 57, 145, 50, 5, 18, 49, 79, 54, 11, 240, 71, 33, 35, 227, 127, 178, 247, 121, 0, 195, 44, 130, 2, 169, 127, 233, 186, 41, 63, 230, 64, 159, 84, 169, 9, 38, 247, 117, 231, 152, 178, 199, 163, 98, 18, 244, 55, 0, 48, 191, 120, 220, 234, 124, 228, 21, 55, 99, 232, 117, 250, 78, 180, 102>>}}.
|
||||
{{encoded, "2xrW56SUqbDkJHvFpA3iyTjxbxximZxfY4h4kkb9oDW11fqGQqNBTvhcXNqP3ouQi3BKAP1AzCrUjiCuFPBZBpx9E9fwQc8wC1Ewxc1xCAYjJPAemcKyLY3Tyiy2TCgvNWS6DGEhtDMBgotbJuDi1etpX9kuFLhkY89mWSncF9ZUacdvmxaQNwE81jQL6u4SKa6rE63PPy23Hf4m9P7NUwWqZ5rsCHg8bB2syXqewmpobzEJb4c94q57HNgrru6KhJenAa9ZG3U5saoiWyyLMRnHmVNt"},
|
||||
{decoded, <<6, 224, 98, 127, 95, 34, 151, 164, 207, 215, 106, 166, 73, 32, 185, 56, 16, 185, 34, 142, 33, 193, 97, 104, 223, 62, 69, 58, 90, 2, 134, 47, 17, 254, 128, 126, 197, 34, 100, 202, 177, 244, 142, 166, 174, 27, 139, 52, 143, 62, 61, 102, 83, 223, 76, 95, 138, 56, 30, 36, 46, 189, 245, 59, 224, 125, 54, 25, 167, 87, 232, 243, 29, 252, 20, 63, 136, 40, 83, 198, 25, 193, 230, 60, 45, 50, 20, 215, 237, 233, 141, 220, 65, 201, 246, 103, 3, 223, 215, 120, 130, 239, 56, 5, 28, 250, 251, 35, 81, 202, 168, 60, 4, 3, 60, 200, 93, 207, 57, 84, 32, 3, 65, 240, 91, 212, 10, 167, 165, 22, 13, 90, 173, 45, 158, 91, 146, 171, 192, 249, 63, 63, 144, 176, 41, 90, 210, 100, 211, 175, 193, 240, 236, 157, 166, 199, 226, 61, 119, 106, 103, 106, 50, 224, 254, 233, 4, 185, 160, 132, 11, 145, 51, 191, 228, 173, 122, 230, 73, 200, 201, 252, 248, 5, 186, 52, 109, 236, 5, 218, 175, 124, 230, 45, 37, 143, 20, 221, 247, 92, 231, 23, 140, 163, 16, 22, 52, 229>>}}.
|
||||
{{encoded, "B7NG8ERA7bqNBorWLXT7whXG8uXPth2ea7HhzJZRQqTJFBRkQjfy4XiAgYHP5RuqFH33ZXkvRTuobHFqdKCASZMYeQ61AWuxoCEZJHbaK3DRD7cKhi32Taj4LwHCSPMssTLspakNn55VU7QuGVNLTWNxSECu4hecaBc93GjGXg2FmWYdMDzKAhfAnVXuNH9EjbEGvu2smXaARTygpq1ADD1oFNbXjugCYwmqgXM2F7EKnQoRNp4VG8XbzRd9XshuWTAXK182sMwUZrPbA4P5nAakKHCn1XN8pYDUX8EPByzVDpoDgmySchEuCVTEEzwuJ9UWEbPZkP2XWiYMyeTSFwjjYkc9hYx5Wki6NMqKuuqmNCtMRcBBph2RYbpu17xaXA5THsHn4cnxVF5SQd98dnLHEs3vktuDK1hcAyuQ5SNRzoPgWvzbNsErxmTdMtCfVbevdVATTX2V47gaFdBibLTRwotDpDTcrAVxiitY6kGyg4u7tbnMzk5yGEsDghiTcaS4dspeVbto8wKcFr69j6raus5JXTKXk1WF5HaGNi5FyvWze4zPfpaETmVE4ZXuRWPSmt3HeTLHcvccaUfRBaFh6YfEsx16mUgT224dmMrHaXA4EvVcPY7vCV18osCQ8xYy5BHQEENb5yjefUecoL3FjnjLrhcy2BNHrVKfMfq39DS4e2FGMJPF21sFB9oAkGXrUWiRdh7urka5No28gGTar3E7orPq7LMXMjWkARaRs2DdKtEQtz4wbn3CG8gCskeLE6jyMFtsrw2yZnthVJdqDsUY9v5fBRBnrKb5Me4TE3GdJSgyT1PdfTsRrnzYeddj4VE67RSiysy9kdEwBRNtmgT1NAu1CG58DBp6Xq9y3yCzMKedAuqz7Rt2UKWcP9KkbJcm6LhkCDt6jCMiL1"},
|
||||
{decoded, <<137, 200, 92, 173, 161, 123, 200, 192, 55, 222, 98, 10, 132, 26, 1, 156, 111, 20, 101, 212, 42, 177, 43, 203, 195, 177, 50, 9, 255, 128, 216, 2, 18, 205, 55, 72, 54, 12, 22, 233, 172, 84, 214, 230, 88, 99, 74, 60, 113, 54, 167, 199, 18, 219, 126, 39, 238, 141, 213, 228, 43, 100, 13, 241, 5, 227, 6, 151, 152, 124, 173, 140, 37, 36, 149, 64, 149, 70, 152, 228, 45, 39, 104, 138, 111, 254, 4, 103, 37, 64, 218, 17, 169, 144, 129, 37, 113, 166, 93, 50, 189, 161, 11, 220, 196, 107, 46, 182, 230, 145, 97, 30, 239, 86, 241, 240, 51, 183, 97, 215, 168, 250, 113, 243, 22, 114, 206, 252, 219, 125, 54, 100, 196, 180, 135, 19, 135, 30, 156, 82, 90, 114, 150, 191, 229, 163, 101, 201, 228, 56, 143, 168, 72, 133, 239, 150, 245, 228, 59, 97, 194, 210, 224, 93, 52, 105, 20, 146, 44, 205, 210, 14, 138, 3, 194, 48, 244, 202, 170, 114, 227, 106, 140, 234, 44, 178, 224, 26, 250, 234, 232, 92, 37, 124, 219, 178, 125, 112, 252, 234, 123, 254, 166, 139, 66, 115, 57, 157, 218, 138, 166, 217, 227, 199, 60, 66, 13, 158, 79, 196, 41, 88, 99, 111, 96, 140, 200, 62, 154, 13, 97, 59, 139, 148, 30, 195, 178, 215, 231, 42, 166, 198, 109, 192, 244, 56, 119, 87, 69, 56, 214, 106, 106, 101, 64, 59, 135, 20, 117, 30, 254, 165, 152, 206, 25, 47, 182, 253, 6, 138, 131, 44, 40, 17, 55, 2, 218, 5, 174, 37, 5, 35, 111, 125, 202, 202, 38, 231, 132, 135, 168, 236, 78, 190, 69, 49, 66, 185, 90, 38, 199, 167, 101, 10, 250, 121, 112, 94, 193, 90, 85, 28, 238, 242, 138, 96, 7, 23, 252, 209, 193, 188, 192, 42, 246, 88, 200, 197, 25, 210, 62, 20, 10, 109, 25, 68, 73, 122, 96, 245, 66, 55, 116, 149, 130, 103, 132, 83, 211, 118, 33, 49, 165, 67, 226, 149, 189, 117, 105, 125, 250, 47, 246, 156, 1, 14, 64, 247, 114, 249, 213, 112, 156, 68, 179, 184, 212, 242, 78, 8, 34, 32, 105, 10, 90, 97, 28, 173, 31, 30, 170, 10, 129, 235, 41, 192, 122, 20, 16, 3, 124, 152, 96, 9, 239, 119, 125, 74, 7, 19, 49, 103, 26, 106, 133, 49, 133, 62, 20, 73, 174, 192, 183, 108, 237, 149, 68, 70, 169, 106, 122, 9, 192, 19, 222, 16, 157, 25, 64, 166, 191, 8, 25, 222, 211, 152, 253, 135, 174, 239, 164, 131, 245, 96, 235, 222, 223, 69, 74, 114, 14, 249, 180, 150, 155, 204, 74, 49, 129, 135, 123, 61, 208, 230, 249, 212, 208, 68, 24, 160, 27, 65, 115, 77, 185, 11, 231, 30, 213, 224, 210, 36, 35, 54, 143, 97, 80, 132, 94, 160, 13, 245, 106, 60, 238, 93, 23, 224, 249, 154, 5, 84, 104, 96, 62, 54, 126, 194, 210, 23, 102, 221, 226, 216, 249, 32, 91, 105, 40, 16, 79, 179, 109, 26, 227, 186, 247, 46, 96, 220, 156, 198, 228, 175, 94, 191, 143, 222, 76, 105, 16, 74, 213, 45, 52, 38, 163, 158, 72, 50, 165, 98, 100, 65, 210, 170, 76, 185, 46, 202, 57, 133, 113, 246, 92, 247, 217, 101, 62, 218, 40, 213, 177, 120, 148, 153, 82, 123, 125, 100, 89, 47, 45, 197, 80, 31, 82, 5, 219, 152, 215, 100, 73, 80, 44, 76, 96, 5, 236, 22, 80, 61, 52, 149, 181, 59, 89, 15, 96, 114, 26, 207, 217, 123, 150, 137, 116, 187, 80, 165, 136, 125, 245, 141, 171, 247, 133, 224, 22, 39, 169, 248, 114, 129, 112, 248, 235, 125, 43, 129, 19, 26, 206, 65, 122, 204, 12, 181, 129, 65, 239, 231, 6, 234, 2, 164, 165, 181, 22, 234, 2, 226>>}}.
|
||||
{{encoded, "MRhy5LBr6oXfTvCwsXfSwaerqEdCzs43P1mnDMLuGbRYsVHciQhyeThWj5ynrkdqfojagacRppqGaTuG9Kkn2LXo6ahsahfPBtmJZYqjgcTnbDN4L89YD9w7aoTqpiCVDa46HeyaxhKA42QSPX4BBikwszAkqxA12uhTkZbbUBNuCcx1LtTndxXNnMRcVbLuvauXKTH5nbX3u73KMWxkbx5oTCjiHXd7fxagLx1pBti5Fzu84V42bQVqPcPFqA6DUTHD6xgsQW5oxDPYyaa7E5D3gyU7YBbYxceGoch8NWpHzkEcFkp6qh3AdACCduTJRntDfyBMwApND6kYbXfjFqUDrBMJiuC8FfKTQ3uinuNwC3V2ShSMZXyVpcQP9vJ2QZ9ZgGtvKpFs5vCqNEbkbnmGSyRqXXzuf2EU7s1vnYDWJMVJd5fii8XV1Su5kN2BhPXsx9ZzoxJzskqxZvEQ9FEuxsjYFDU5QiVj7JUP5X6sMKg9mgQ2f4TgtBjXPHPg8s3rEXhi97iC5Uy6c2LyDUhjCmdLwGYN1AeQ142A3sw596nLMxFceKCBEnVpxNKELV9QkuNZkLVSvN63eCiFTHfLFm1ATvfoUQ5WP9neyLvUNciPd4bd8TdzFvWnUAsf3jB5USqL29pJ4x5Jn8168KXB3421"},
|
||||
{decoded, <<197, 126, 42, 137, 89, 34, 133, 116, 154, 127, 209, 44, 215, 156, 246, 37, 85, 11, 244, 125, 196, 72, 112, 145, 65, 253, 203, 116, 143, 182, 216, 244, 96, 163, 91, 88, 178, 30, 102, 100, 101, 92, 179, 138, 22, 119, 1, 9, 135, 250, 237, 10, 109, 222, 18, 9, 203, 25, 136, 187, 235, 234, 190, 26, 224, 207, 98, 62, 248, 191, 245, 22, 36, 46, 183, 129, 3, 214, 52, 169, 100, 199, 59, 203, 26, 186, 181, 82, 69, 42, 59, 167, 16, 106, 79, 183, 169, 110, 223, 170, 91, 227, 160, 210, 163, 192, 188, 254, 209, 254, 198, 44, 107, 200, 62, 252, 97, 125, 219, 246, 221, 36, 46, 222, 205, 206, 48, 100, 98, 104, 91, 76, 19, 183, 160, 68, 60, 184, 145, 98, 231, 202, 206, 57, 234, 126, 174, 84, 209, 176, 107, 213, 121, 177, 217, 248, 38, 35, 45, 207, 191, 126, 174, 235, 23, 78, 242, 173, 235, 162, 21, 208, 116, 117, 150, 199, 180, 98, 182, 145, 215, 163, 69, 241, 85, 130, 121, 135, 43, 115, 247, 62, 240, 23, 209, 161, 121, 97, 118, 52, 242, 11, 213, 160, 96, 24, 8, 52, 219, 226, 127, 42, 147, 207, 0, 255, 189, 0, 43, 12, 98, 24, 72, 55, 100, 160, 3, 71, 193, 207, 178, 116, 181, 214, 32, 59, 191, 26, 127, 69, 191, 195, 9, 251, 38, 61, 39, 61, 58, 177, 30, 255, 83, 175, 93, 29, 152, 217, 102, 228, 67, 64, 196, 219, 104, 201, 37, 212, 101, 197, 6, 24, 144, 150, 231, 49, 217, 119, 140, 161, 208, 209, 221, 25, 211, 50, 75, 36, 219, 58, 178, 202, 119, 180, 159, 29, 216, 26, 152, 118, 155, 124, 235, 213, 186, 23, 219, 35, 215, 47, 172, 186, 158, 111, 85, 184, 143, 129, 216, 35, 125, 173, 238, 163, 179, 113, 197, 76, 38, 34, 94, 91, 210, 7, 65, 239, 29, 99, 114, 90, 143, 104, 126, 204, 217, 143, 29, 225, 91, 162, 31, 12, 47, 80, 39, 160, 100, 146, 131, 171, 200, 84, 20, 166, 172, 106, 155, 146, 117, 205, 252, 140, 0, 243, 151, 36, 221, 92, 195, 45, 235, 4, 203, 67, 150, 134, 202, 27, 58, 121, 5, 11, 138, 42, 254, 158, 223, 161, 135, 107, 97, 202, 32, 198, 101, 176, 155, 177, 87, 99, 69, 27, 63, 194, 170, 21, 187, 17, 158, 155, 70, 239, 241, 239, 239, 110, 91, 35, 102, 208, 1, 119, 107, 79, 144, 114, 29, 144, 231, 196, 224, 58, 253, 40, 56, 229, 66, 24, 12, 45, 36, 239, 199, 250, 95, 55, 138, 127, 78, 96, 103, 198, 159, 249, 235, 118, 64, 49, 194, 105, 195, 175, 8, 211, 206, 168, 164, 200, 76, 203, 165, 198, 223, 142, 139, 25, 97, 250, 86>>}}.
|
||||
{{encoded, "FdgatVKh62AMpTy9LZAUwXU63m2cWUPZuAgfY7iNEgYYo2Vkevv6biaT6rQraJWfxLbiTBLEkrA6QpvYCTScARPmV6qTroS5WAod6e3FaJrFa6dhwS3zRucUe98ZCms63mQSgfoqLZAx9NtJxbVXqNdMwjVnz4tqp7iHguXZG2QfuBmk7WisyK3xASXDU7GUrEtV1UU7ZUbdjGjehG2CNWwiDw68cXV2uJ6Tuu8fnPG8EsGuxnDQceZMPVSHLmgJMRDTTWVjzLQ7S1LG9xCx7hsKDFQyUf6TF2nkU1HEJkFFfJvSgbkXjFVdXM1zkWYFT91bQM8vVxhGigD3M668UMFmo3JhAqPKnxAJ6uQE4eynWFYerD2foFfWY7dMTSaMN1KLHvxFw4Hh5L5w6nQ5UXWFtVjK5HsjCsPrtLk4xPptCiFVBYD2CAeBisf"},
|
||||
{decoded, <<2, 36, 64, 245, 93, 186, 241, 84, 79, 89, 42, 214, 72, 13, 196, 191, 49, 121, 45, 108, 78, 235, 99, 234, 54, 171, 132, 192, 143, 87, 247, 48, 196, 247, 55, 120, 255, 180, 160, 205, 18, 103, 110, 159, 86, 249, 68, 178, 90, 149, 88, 96, 56, 25, 22, 126, 47, 68, 209, 25, 129, 155, 173, 172, 214, 199, 2, 111, 199, 172, 78, 125, 210, 147, 80, 43, 35, 164, 252, 11, 198, 215, 220, 53, 184, 65, 45, 201, 206, 220, 71, 149, 52, 19, 97, 140, 211, 127, 20, 211, 240, 109, 221, 194, 174, 108, 179, 170, 226, 20, 25, 170, 209, 27, 21, 161, 252, 65, 89, 182, 206, 203, 236, 92, 249, 243, 146, 179, 228, 23, 204, 178, 233, 140, 137, 45, 86, 255, 71, 18, 173, 67, 39, 163, 237, 53, 127, 224, 105, 148, 100, 255, 19, 52, 25, 100, 24, 75, 252, 205, 101, 19, 89, 183, 229, 136, 75, 254, 79, 210, 203, 160, 201, 192, 40, 171, 132, 119, 163, 187, 110, 187, 111, 144, 196, 176, 170, 130, 238, 126, 188, 178, 235, 12, 29, 131, 234, 4, 166, 240, 193, 115, 59, 110, 227, 201, 46, 94, 12, 84, 118, 39, 88, 169, 195, 234, 74, 149, 146, 192, 159, 241, 119, 86, 214, 120, 10, 170, 161, 26, 109, 245, 16, 209, 90, 146, 5, 107, 182, 117, 23, 24, 60, 199, 160, 137, 18, 188, 162, 118, 204, 51, 94, 224, 118, 110, 167, 170, 227, 12, 116, 108, 60, 211, 32, 109, 72, 44, 23, 87, 242, 245, 27, 23, 154, 245, 38, 214, 116, 16, 221, 50, 123, 103, 246, 27, 51, 200, 113, 20, 0, 229, 192, 56, 59, 140, 216, 7, 252, 183, 179, 255, 141, 200, 10, 64, 225, 6, 149, 135, 162, 69, 170, 241, 211, 245, 67, 181, 45, 83, 211, 160, 189, 250, 254>>}}.
|
||||
{{encoded, "ofqqYqmPCgPESAmpFTEUYX3yEUGn6itbEBC9TVmW6iuPRK6vxXe2bSm7NC7Fy3Zp7NbcMK3M64aWyL1pj1opewYQvoUzqMkEKDb8vv76Kh2c8C5WSAVehhVs4pZeWa5kwERK9sVGM7rPpN9FoCnfY4wtkNLauYmreZM79AYPuVXJe7gfiK8Shto2VHijS9wn76zbjDhRdhmRTb6CQTXyaB5tDMFSgrNAtJmBmiDxvnpsqJ5Pzt5RNUZKLcsprtTQBabbSUDxb3mvMWPAWM5GRxecscVLnLXBX7iLCwVUU2JFvhStAGb5dUFBNDm2LgD51qySQZh6p6mJ3T4YKqyNNwkqWNpLTcSLLZWhTKRkLZgMai5AeFxraQh5kTKMm6M8DMW39N3bdYgt"},
|
||||
{decoded, <<174, 122, 139, 151, 73, 97, 167, 153, 66, 15, 92, 156, 137, 205, 163, 252, 120, 154, 79, 161, 110, 7, 55, 89, 114, 136, 24, 37, 184, 8, 136, 102, 57, 208, 10, 181, 31, 136, 85, 176, 73, 153, 65, 204, 172, 157, 10, 98, 205, 25, 62, 228, 73, 100, 115, 50, 33, 77, 155, 242, 36, 190, 112, 110, 106, 49, 36, 245, 192, 219, 90, 22, 205, 244, 154, 106, 223, 17, 92, 28, 195, 153, 168, 30, 53, 204, 24, 40, 29, 211, 70, 80, 81, 12, 12, 27, 171, 190, 39, 0, 226, 130, 22, 215, 223, 122, 107, 152, 168, 5, 222, 67, 106, 39, 68, 76, 58, 156, 150, 173, 52, 144, 130, 117, 143, 61, 34, 224, 48, 130, 249, 99, 1, 38, 72, 207, 214, 126, 236, 181, 172, 81, 128, 122, 34, 1, 110, 171, 64, 137, 168, 62, 240, 14, 134, 167, 184, 66, 100, 8, 44, 193, 224, 222, 215, 26, 225, 102, 131, 183, 142, 55, 1, 145, 224, 123, 4, 90, 205, 252, 132, 118, 229, 225, 36, 108, 105, 203, 59, 94, 186, 121, 15, 226, 97, 80, 169, 83, 43, 68, 126, 254, 167, 193, 16, 213, 145, 20, 58, 143, 222, 50, 99, 242, 100, 214, 240, 112, 83, 120, 159, 148, 188, 234, 24, 42, 181, 116, 163, 36, 164, 239, 191, 181, 20, 77, 105, 35, 121, 19, 35, 22, 5, 14, 199, 134, 160, 3, 74, 6, 17, 158, 246, 93, 138, 198, 65, 178, 225, 186, 110, 236, 214, 138, 60, 98, 55, 3, 242, 154, 133, 33, 35, 18, 246, 88, 112, 133, 73, 24, 224, 52, 53, 235, 174, 238, 199, 37, 160, 165>>}}.
|
||||
{{encoded, "8iji7tGzLp52zgs2W8JvZX82ga1RKXbG9evntP2H3xxzsPueru8HJC5ZQqfNnbBDWGNFUGFuoJWuKcRMTvU1pf1M5fTiJLJ8U618opXCWPEZiR9UR7ZEmbXzRKETpnyXEYfKEaZk14mBK1iGX4ivunjoAUmfwhMpJK1tCG43QJwHEF8r3KsqwpovNiKUrtXvhTenuBnPjjcXEQZxdBL3DxfbfBtZ1TJSz23aXH1JAkgX6MGu1CGivMVLm1vKUuRHCxakg1UkuSVu4To8dLU2VY4EFhMwq9KNuwamG9jsYyxwdHcNpyWHPVtGzYPe7ULqeCFmHc6YPrFQkvJCXFa7XphfjQDgK3M8mrCPUiiGD"},
|
||||
{decoded, <<226, 60, 88, 48, 137, 135, 61, 98, 57, 231, 50, 111, 37, 24, 144, 111, 163, 146, 92, 223, 116, 105, 110, 105, 236, 165, 163, 62, 0, 119, 246, 227, 250, 219, 101, 90, 92, 169, 116, 156, 115, 83, 77, 89, 169, 244, 222, 10, 83, 36, 247, 127, 40, 242, 21, 60, 216, 61, 173, 218, 12, 71, 3, 255, 126, 246, 230, 17, 1, 225, 85, 219, 205, 7, 130, 41, 159, 152, 27, 190, 16, 24, 31, 78, 17, 143, 42, 76, 223, 123, 165, 167, 119, 242, 142, 103, 248, 204, 142, 184, 154, 238, 66, 43, 90, 100, 64, 221, 48, 31, 87, 166, 210, 108, 67, 195, 179, 190, 21, 142, 146, 115, 61, 224, 116, 12, 209, 34, 136, 212, 154, 187, 41, 194, 197, 253, 150, 254, 97, 120, 22, 149, 243, 76, 42, 106, 194, 242, 92, 254, 81, 21, 113, 134, 3, 65, 157, 97, 94, 198, 236, 10, 59, 225, 60, 237, 87, 12, 65, 136, 185, 124, 95, 159, 167, 20, 51, 122, 229, 218, 75, 89, 201, 22, 159, 216, 64, 238, 168, 218, 48, 158, 58, 116, 16, 85, 61, 169, 251, 168, 45, 133, 97, 154, 209, 71, 15, 162, 188, 125, 87, 46, 171, 20, 179, 128, 119, 241, 182, 162, 90, 16, 166, 100, 115, 252, 75, 42, 105, 169, 86, 189, 48, 232, 157, 111, 28, 35, 34, 68, 230, 253, 125, 22, 186, 174, 143, 226, 112, 132, 174, 30, 59, 114, 1, 225, 19, 24, 44, 137, 235, 92, 116, 78>>}}.
|
||||
{{encoded, "27WH2ex5JHGRfmzbuNTmn1GFbXrBHTthzidysY7gUzrDYrj4ruUBYKQKp94ps"},
|
||||
{decoded, <<198, 100, 112, 157, 219, 125, 151, 28, 153, 230, 78, 69, 255, 176, 155, 89, 221, 53, 201, 4, 83, 51, 133, 60, 93, 253, 253, 157, 54, 115, 108, 209, 228, 154, 28, 5, 136, 30, 251, 90, 237, 126, 154, 116>>}}.
|
||||
{{encoded, "3kkNAYNP7PNBpWUchs9qcEsMvqApqLYHqUFNUeqeUooqw31sH4DGr4GAM9hEVU469gd2VMPSMsMgkQtDT5pfufA4ZfC8yYz9k9UsnAYw466tYGrZLpuu7ihcxrVGWVqdYLMrLiacwyszN3term9JopnzuQLVBmKYGnkeR6cpzj88yVi3YpM4NbKqHPFvadHeqp1N7fwe4G9YDNAR8YWaxxER5nXWfb5GC2nGwqYrWwtMyZhcAKkgFdmDqwS7DBBz2kmyGUjyLiPDneSZaCNa6TsCoHo9R2V9A19HdMxwoDfjCh1gxy28oZLSVk6jJnkAF35oVaBnBtKSH1dFaGh7Wh4fkSivjCmFtnYj6jSLfXR6XYm53NVm8kDvMLHvLBH4vMnSpkWkPNXqJf6o72bQsrH9MewhG7NahB3BTzGMRRwxtS7XNGKgh827wTjfUdTVCufx4TVS7D8chch3EHTUNAovdTEJmv2NPAFLY6c6jnf3YBz3wwbj8dREkkMBpHHuR7ixSAhJZP2QviFQeWHk1CMkJb4XTJCvRnM5muMYujaY4bhZeSwhmGHftF7LUDPYpyYQ9suDBtCv5MJSyHZAPnNJAce6sjn7Ddhq5n5KmWYiNyZEiceWicWGYTCuPs2D6c21Kug5DMKfRqddeCvAjYuEvUJCbP4VmM2QJeqSv5JGtYvEGR9cszQ3NQoz2SHb67xhDAoHf2UMrKHQNSEbJr1V36KpXsnEv66bKhwo2Cuw9VcD4r7xoTxEt84gpjz1bfBXncovZVdpcZwp5FXoL5cCJpnsvWo1CDeM1fVbBqWVaYVANAMo7EgDSXYW8LDBGaCWjRPy3fvnZ1KAywoNxq83Xvidc7byXej8BhhWnM2gXiz6VYuS9FUU4Rtv77fjtnua1QYkwDthD2Xa7kxdsiJCeD9U7h2HvACK9ULU3HvhG83XKDxmphbirhst2Nf1gNqTokYeReKDRPb76t2hzeuy6qTEuZmkTobrLRJXPJqncWCyd49qSfRBj1XPz7Sr3xPkFWMcHEhWGiphGbM8bdXD6zkN833y2Y6qagjMQik3u9WFBp2CesSgkfP9mq18yoiDGXuzZD36nepigExims9HfWqMJCRYVn3CNkRikiUXAZd59U8MYV12aSL1Sy7LHumemfwrr2m1SHGRHPtM2hdPJct5LovfHdJaDwZuCTTQtXswd76gGGdxL9qURnw1T5U1c3CiTpkX8eYyZgvdd1YtLR8tBUPqstH3GP5eFiBWZUYfn65DGa6HTgruYWtKrxf4EAV1A1iGXYQQBptSGxtDw3vzrynPdPPNBSzHtuivWBMn5PMv6"},
|
||||
{decoded, <<19, 152, 30, 59, 224, 136, 18, 61, 104, 225, 19, 198, 21, 157, 176, 97, 64, 133, 65, 10, 97, 236, 65, 150, 18, 61, 66, 177, 173, 14, 76, 42, 145, 249, 250, 101, 173, 44, 167, 2, 115, 91, 167, 109, 165, 187, 38, 44, 156, 103, 33, 167, 104, 218, 110, 184, 182, 148, 60, 51, 160, 104, 232, 251, 219, 70, 195, 205, 15, 182, 149, 211, 64, 3, 148, 76, 225, 54, 145, 43, 232, 226, 123, 142, 77, 170, 93, 28, 183, 170, 226, 180, 23, 99, 174, 144, 122, 23, 161, 206, 106, 153, 216, 90, 85, 221, 35, 235, 146, 13, 222, 38, 99, 146, 216, 118, 167, 172, 221, 139, 250, 245, 134, 126, 192, 172, 132, 180, 119, 35, 99, 1, 91, 136, 100, 62, 105, 99, 94, 242, 96, 86, 197, 22, 108, 180, 126, 74, 13, 144, 235, 96, 80, 246, 86, 161, 243, 61, 219, 119, 90, 154, 43, 17, 108, 10, 247, 89, 78, 17, 186, 93, 81, 80, 235, 194, 2, 218, 2, 112, 38, 129, 141, 63, 62, 32, 251, 219, 72, 196, 43, 147, 32, 137, 225, 150, 235, 46, 160, 192, 142, 16, 235, 146, 210, 23, 51, 29, 156, 45, 210, 81, 229, 10, 168, 238, 243, 95, 28, 125, 40, 52, 52, 139, 101, 142, 191, 14, 86, 81, 101, 177, 62, 79, 143, 17, 251, 57, 226, 104, 133, 87, 182, 39, 150, 82, 76, 110, 10, 83, 106, 0, 154, 140, 255, 130, 230, 102, 235, 207, 141, 103, 114, 50, 72, 244, 65, 164, 35, 185, 152, 124, 188, 248, 247, 86, 253, 138, 149, 166, 232, 118, 227, 181, 185, 46, 8, 174, 61, 180, 163, 253, 193, 170, 213, 8, 243, 73, 187, 249, 150, 125, 171, 26, 0, 226, 112, 253, 207, 3, 62, 150, 112, 53, 18, 3, 78, 115, 188, 56, 210, 150, 87, 96, 83, 2, 27, 91, 252, 62, 32, 143, 181, 152, 28, 177, 218, 29, 47, 27, 148, 119, 172, 41, 211, 141, 204, 151, 175, 101, 194, 51, 139, 76, 106, 6, 18, 59, 8, 82, 224, 186, 133, 194, 163, 105, 45, 27, 225, 82, 113, 210, 130, 186, 169, 121, 18, 210, 90, 107, 177, 254, 74, 245, 58, 166, 12, 157, 85, 36, 26, 219, 85, 99, 155, 82, 245, 105, 153, 36, 40, 208, 219, 91, 152, 62, 70, 184, 112, 151, 98, 155, 149, 169, 225, 97, 203, 109, 111, 208, 212, 147, 190, 96, 245, 82, 38, 175, 135, 245, 195, 179, 52, 119, 72, 247, 32, 75, 87, 136, 41, 155, 75, 213, 122, 66, 92, 176, 112, 68, 192, 15, 72, 255, 57, 73, 36, 81, 178, 42, 255, 71, 146, 162, 12, 185, 35, 141, 162, 43, 98, 120, 67, 101, 160, 56, 107, 219, 195, 247, 56, 226, 241, 187, 164, 19, 249, 30, 160, 159, 214, 209, 180, 10, 144, 163, 61, 227, 199, 35, 142, 239, 93, 175, 50, 10, 24, 2, 99, 48, 35, 140, 226, 47, 217, 125, 102, 45, 142, 2, 37, 253, 107, 69, 19, 7, 214, 203, 35, 238, 228, 170, 118, 63, 115, 69, 185, 22, 32, 92, 3, 100, 187, 224, 187, 222, 115, 92, 99, 178, 201, 40, 155, 179, 231, 41, 246, 177, 7, 233, 100, 98, 54, 239, 53, 129, 98, 16, 160, 64, 157, 198, 202, 91, 243, 51, 14, 154, 233, 196, 199, 110, 243, 139, 65, 49, 114, 163, 120, 104, 108, 135, 168, 22, 107, 222, 209, 94, 244, 221, 199, 253, 140, 189, 140, 240, 150, 41, 21, 7, 77, 164, 78, 27, 154, 119, 221, 108, 244, 193, 134, 8, 217, 152, 103, 36, 239, 42, 167, 110, 79, 138, 198, 187, 120, 239, 36, 219, 50, 46, 25, 116, 85, 125, 53, 27, 60, 216, 204, 192, 169, 13, 46, 144, 185, 225, 78, 78, 67, 138, 87, 224, 113, 105, 57, 244, 115, 174, 125, 57, 13, 1, 33, 80, 251, 140, 255, 189, 27, 48, 181, 107, 97, 252, 170, 132, 220, 225, 111, 64, 14, 115, 176, 130, 253, 118, 9, 147, 45, 2, 71, 110, 92, 25, 255, 29, 63, 160, 130, 171, 229, 89, 61, 105, 221, 144, 201, 20, 231, 97, 68, 61, 157, 31, 19, 15, 179, 79, 123, 79, 16, 14, 112, 104, 207, 139, 61, 56, 169, 247, 5, 34, 49, 119, 116, 31, 217, 177, 126, 58, 33, 105, 93, 160, 122, 253, 71, 118, 250, 164, 139, 173, 159, 155, 228, 9, 17, 85, 135, 253, 127, 68, 38, 208, 250, 11, 32, 243, 145, 202, 29, 234, 223, 81, 184, 165, 210, 201, 130, 122, 2, 118, 187, 24, 206, 32, 143, 59, 80, 167, 150, 255, 146, 163, 215, 50, 245, 62, 189, 116, 171, 96, 142, 134, 49, 222, 95, 177, 173, 247, 172, 118, 125, 49, 190, 214, 126, 47, 59, 116, 90, 198, 0, 89, 191, 91, 34, 63, 153, 162, 14, 155, 146, 211, 238, 151, 20, 162, 160, 213, 254, 189, 109, 149, 82, 117, 60, 230, 56, 14, 139, 49, 169, 76, 4, 247, 164, 170, 249, 182, 195, 158, 110, 90, 62, 132, 13, 17, 46, 89, 226, 255, 61, 122, 102, 246, 57, 43, 61, 98, 161, 167, 21, 12, 23, 107, 100, 72, 180, 241, 54, 116, 238, 8, 174, 135, 248, 168, 4, 143, 240, 195, 199, 72, 254, 151, 2, 227, 12, 71, 224, 41, 94, 124, 34, 250, 140, 241, 203, 17, 33, 214, 215, 21, 144, 64, 107, 204, 249, 169, 56, 177, 165, 114, 150, 50, 233, 224, 123, 134, 204, 129, 187, 88, 143, 144, 201, 228, 244, 148, 80, 46, 9, 87, 97, 15, 26, 40, 226, 30, 7, 203, 117, 215, 44, 167>>}}.
|
||||
{{encoded, "3TYeXb4g4zb2fKWCuYe29EUpvtDFTbfsJXLmkj48cPHwhhBg486pMeif1HHZo8GzbeHpbRhUXRCZ55p3k7ZQmLWYfyMHHik3jZ2E8BsB6aDGsFipx5251cXM6csXPAfpmLwRu3xvTgHCtAWL4x9QnCxLXzj9qeRJPJFVRUEyXHPwscdKhr9LrFDQnnhNpBruh55APNCWio93PnxLFiNSpkW1a4Xc9L8FyMt9XHpggiBQxG89fkivaEGF2ZJJMDXc"},
|
||||
{decoded, <<135, 135, 78, 50, 215, 97, 111, 248, 189, 23, 123, 39, 153, 184, 195, 85, 245, 72, 160, 26, 71, 108, 155, 117, 128, 11, 156, 181, 133, 3, 76, 125, 118, 49, 193, 182, 10, 49, 38, 21, 10, 84, 190, 81, 235, 107, 74, 186, 154, 96, 160, 45, 39, 255, 82, 163, 222, 178, 39, 99, 195, 17, 124, 60, 108, 120, 246, 49, 36, 116, 131, 65, 63, 38, 31, 92, 86, 93, 141, 200, 254, 93, 90, 56, 186, 238, 119, 127, 207, 228, 85, 192, 60, 241, 225, 182, 41, 211, 24, 80, 71, 189, 240, 184, 137, 167, 113, 121, 121, 214, 101, 143, 56, 72, 81, 175, 215, 19, 230, 156, 217, 141, 191, 94, 178, 207, 46, 118, 22, 12, 91, 163, 129, 120, 17, 220, 252, 49, 18, 238, 122, 250, 41, 62, 152, 203, 86, 205, 17, 15, 224, 31, 199, 4, 134, 233, 207, 12, 59, 24, 24, 121, 64, 66, 183, 213, 242, 166, 41, 118, 52, 73, 10, 118, 188, 80, 158, 40, 106, 219, 222, 47, 14, 52, 209, 207, 239>>}}.
|
||||
{{encoded, "2Bd6FP99auobcqXPeJDdMGFsXG4VY76BAvCoLDAZtgHKtxBiHiDpFZtpBDN11rn8CsMqN3npAC6ayegosP36vGznwPQ7AGWRm5xAGzuYLR5ofpKjXZ4YLPYqYDmMRzBQGYkbPCXRbU6d45Bayz8Wbn7kuMZwgtfAshFsD2rQEsdazUwqAP2JGp9NVMoMJHxXthYAct8LzLBatzsWnj91Mix1bzasV7gHpgaTatDHyHheZxEfCfF8nSZwej89uMWuQ4Sfip9pVE7wqzbbqZdgnUCzBmS1BpFWLjbwdYL6HEX6GMFJEUU2KGjZNbkTLdPptyeuzPtXnqS1zX4rkTTXCmzzFbahcgFSJmLDcXKPVp7CtzqjHnDHpaao8daXMa3QDV1GJyYqMBKkwVxcD4LUVbmErJpRVnV6jAWUu3KpTg5vVJtRFRiV5u76WHiCF1xaXSCHHKxJ9P83qupSqxZ5PFpGMvCLLZsZ"},
|
||||
{decoded, <<74, 79, 212, 193, 138, 179, 54, 74, 185, 6, 254, 195, 244, 57, 206, 39, 176, 133, 45, 156, 190, 248, 64, 125, 44, 48, 113, 111, 132, 0, 207, 211, 26, 202, 103, 244, 19, 201, 3, 74, 199, 188, 14, 182, 33, 101, 103, 177, 191, 170, 129, 164, 59, 170, 160, 152, 140, 201, 206, 225, 217, 251, 82, 3, 196, 132, 1, 88, 48, 111, 45, 74, 90, 76, 39, 17, 158, 253, 171, 126, 37, 218, 160, 103, 254, 134, 62, 224, 86, 191, 132, 10, 241, 28, 97, 194, 92, 41, 184, 62, 241, 212, 212, 142, 2, 195, 250, 167, 136, 228, 71, 49, 46, 190, 1, 228, 114, 250, 166, 154, 162, 255, 87, 96, 142, 105, 2, 170, 3, 161, 190, 29, 81, 44, 62, 217, 197, 78, 253, 228, 151, 40, 160, 185, 200, 229, 187, 105, 8, 3, 95, 181, 30, 148, 101, 94, 72, 97, 218, 50, 65, 164, 131, 48, 120, 236, 76, 34, 113, 169, 163, 243, 230, 164, 0, 9, 169, 179, 38, 0, 172, 57, 149, 71, 115, 103, 109, 11, 123, 87, 108, 180, 68, 88, 227, 0, 100, 177, 158, 211, 127, 34, 142, 184, 115, 243, 245, 75, 254, 202, 236, 34, 230, 16, 207, 212, 194, 198, 245, 194, 213, 93, 142, 243, 141, 158, 232, 35, 74, 105, 225, 155, 137, 83, 5, 222, 238, 118, 147, 170, 217, 254, 85, 197, 128, 58, 170, 102, 203, 9, 243, 166, 104, 87, 114, 150, 141, 209, 237, 112, 224, 213, 242, 21, 108, 68, 143, 79, 152, 105, 211, 5, 4, 163, 220, 250, 166, 221, 239, 113, 102, 138, 70, 188, 99, 49, 207, 229, 101, 171, 68, 14, 247, 235, 17, 116, 86, 108, 185, 169, 203, 232, 123, 45, 214, 0, 100, 14, 96, 122, 98, 42, 76, 196, 124, 217, 50, 194, 235, 55, 111, 244, 102, 129, 159, 232, 65, 32, 151, 140, 68, 40, 100, 48, 4, 20, 57, 13, 13, 220, 76, 87, 89, 213, 171, 115, 191, 199, 34, 225, 60>>}}.
|
||||
{{encoded, "SvYZgXifLgJwg4EZxHtpEGMoFFxJ7rwvgjNjj3R4AGEBbBDpxhaT5f4G9iFTN9iQpQDN1hhLtRcr1puvca9DjHvy7aroEptQt26vkXNf7bLrN27qZWJo8a9GU5y6vr5gzvdJL8PDvS8mjeMQrjEZUqum1z1CLZj7HNhR5ra6sJ3cZMB2wQFP84BN3K6weagN4Fg7Hg4b9akiUtx4NTP16MbHAWf5JhMyd1ABrVXYojp19X4VEwJ4ee4ZL9iiswfXM6tRSf3XMz2KcyQvFJs"},
|
||||
{decoded, <<3, 112, 250, 136, 59, 193, 224, 80, 247, 117, 42, 14, 132, 37, 220, 81, 5, 145, 23, 23, 108, 165, 108, 95, 39, 194, 213, 195, 95, 14, 254, 232, 175, 125, 250, 206, 211, 35, 129, 222, 35, 119, 243, 149, 245, 121, 252, 161, 196, 217, 167, 32, 207, 167, 216, 17, 70, 64, 213, 161, 107, 245, 108, 154, 112, 130, 226, 92, 248, 5, 154, 9, 134, 216, 48, 44, 99, 25, 147, 198, 122, 99, 147, 250, 115, 155, 124, 91, 131, 176, 151, 144, 118, 129, 125, 111, 202, 13, 242, 132, 93, 59, 104, 148, 114, 143, 184, 109, 202, 176, 13, 209, 173, 151, 212, 17, 92, 174, 97, 198, 207, 64, 93, 161, 250, 189, 64, 147, 159, 1, 136, 250, 245, 23, 104, 128, 164, 63, 185, 203, 23, 19, 151, 168, 11, 114, 208, 190, 211, 4, 225, 170, 59, 106, 155, 35, 66, 43, 72, 29, 114, 252, 253, 216, 35, 183, 95, 77, 185, 41, 159, 154, 65, 143, 230, 128, 243, 10, 122, 101, 131, 20, 216, 40, 148, 188, 39, 200, 77, 166, 48, 149, 21, 183, 133, 29, 20, 74, 95, 87, 112, 124>>}}.
|
||||
{{encoded, "2H9YirGNbadhcmPXifU9qTowvTtBcMBFXeSa3M5CywH1HVP4GBzK7aCRgaGh6mFyeXp8XzXsnbDg7aP2isEYCsdJykCRYZgDr5efehqTn3DQMShY7a1FjSBS5nQVfbjJLMPN2xMUhrATyYNdrMmtrqLGtbAYNJBv1SCC4xiYSo5U2qjg2hrRnr6UR3AgVnkTptbdirTbmC6ub8AwxBCcqESYVnF38TdKuayounHFg5vrAEQgA9h9uzHTbQuDpyoJHRZDLbgXj432HUwfcFBG4djSaoDjL9TB82nUdqA4TnVX1ui9a8mQV6WvkUfVyjVetFTZGs1mHcGfZrrzb2mnwWSQZRLTMLiHXdEWWMzYeeJqEb3d5meijXWDjwN7wZw1pcqzFtyupWzobsWM6CuveMvMQTXn2LdYBpGgBETarhsZhjT8bRUWtcft2aqBED6AZ84VE77fDut8zEiBtzTtfJgb1ast9rxnVCDRkNcyb1zfB9oJMixHZBiFK1J5W2pRGxoNLU31uy1wJTDBfKFLwgsXL9gnPiWnA9fZjbgdwrp287hrtwcorukdiBzpqx9vDq1kKtzNtz8g4qdy5jPR1gpqhtuLxKZ7stp6Qz2pGacQAnZhs8JAZ6D9emHANbsprTFA"},
|
||||
{decoded, <<131, 62, 206, 30, 108, 78, 57, 12, 114, 108, 109, 83, 154, 57, 199, 82, 205, 216, 181, 204, 251, 8, 141, 252, 109, 191, 205, 55, 196, 202, 175, 35, 70, 48, 80, 218, 113, 121, 62, 75, 183, 210, 96, 175, 92, 226, 98, 164, 218, 31, 181, 83, 227, 124, 71, 250, 57, 170, 9, 177, 204, 181, 119, 134, 139, 18, 7, 221, 182, 237, 200, 107, 202, 209, 235, 41, 152, 159, 17, 173, 233, 48, 29, 37, 53, 137, 84, 142, 90, 172, 240, 158, 22, 144, 154, 36, 217, 228, 179, 25, 43, 36, 229, 219, 166, 164, 201, 189, 120, 42, 13, 93, 18, 2, 102, 252, 110, 188, 78, 33, 160, 218, 100, 161, 102, 52, 31, 15, 82, 152, 153, 145, 17, 91, 24, 163, 227, 161, 224, 48, 164, 25, 175, 14, 41, 76, 92, 59, 196, 194, 206, 231, 205, 211, 97, 11, 104, 221, 116, 179, 90, 0, 55, 90, 125, 185, 192, 250, 63, 88, 149, 195, 155, 163, 212, 78, 157, 154, 254, 105, 182, 105, 137, 167, 68, 208, 154, 3, 176, 14, 108, 248, 114, 35, 146, 85, 27, 114, 65, 52, 83, 118, 116, 165, 223, 25, 186, 62, 226, 248, 76, 25, 227, 186, 14, 55, 141, 18, 77, 193, 33, 191, 170, 127, 158, 235, 234, 27, 236, 98, 167, 17, 31, 108, 0, 109, 197, 1, 35, 112, 36, 10, 84, 3, 71, 136, 227, 205, 83, 101, 69, 94, 8, 88, 246, 46, 20, 12, 56, 122, 33, 11, 181, 17, 242, 240, 151, 121, 199, 73, 144, 239, 86, 137, 146, 7, 138, 65, 230, 69, 142, 38, 47, 247, 253, 81, 242, 110, 128, 189, 245, 6, 168, 43, 178, 110, 185, 213, 33, 98, 151, 196, 22, 191, 251, 132, 210, 255, 199, 125, 239, 142, 157, 212, 243, 138, 27, 89, 185, 73, 192, 139, 177, 100, 159, 39, 192, 178, 81, 128, 41, 137, 174, 232, 198, 195, 163, 167, 213, 86, 173, 20, 50, 52, 31, 2, 142, 214, 8, 120, 205, 74, 158, 13, 50, 142, 29, 21, 232, 196, 121, 148, 182, 140, 123, 68, 144, 44, 171, 95, 88, 254, 141, 251, 166, 19, 208, 245, 239, 162, 251, 51, 209, 97, 7, 250, 212, 85, 17, 117, 49, 237, 71, 25, 209, 203, 228, 24, 226, 239, 90, 218, 165, 84, 56, 245, 20, 190, 39, 191, 227, 214, 132, 91, 198, 143, 146, 230, 117, 46, 194, 245, 59, 204, 73, 216, 250, 242, 163, 9, 92, 160, 77, 107, 32, 62, 194, 251, 225, 122, 22, 194, 118, 111, 83, 102, 190, 12, 192, 118, 36, 164, 87, 158, 54, 199, 128, 228, 148, 64, 156, 216, 219, 151, 86, 250, 200, 189, 133, 11, 181>>}}.
|
||||
{{encoded, "Sg2g68sHBy8CPdUycNuVBeqziQ1Kc9T9FJT5oYoJJ7VD9Gi2wsYRB4GroHHx9Ve3YCibd9kh1o1m8mcpcRsaHh"},
|
||||
{decoded, <<97, 183, 238, 163, 50, 205, 105, 250, 198, 195, 186, 248, 195, 72, 164, 52, 196, 60, 20, 168, 146, 162, 5, 13, 106, 167, 131, 197, 75, 112, 48, 242, 29, 26, 172, 75, 202, 181, 197, 161, 183, 35, 222, 133, 232, 163, 175, 215, 186, 97, 37, 149, 48, 91, 125, 179, 215, 144, 179, 245, 133, 6, 220>>}}.
|
||||
{{encoded, "498VP8o677ShSQ2mAgY5UKp279aQeJvzwdGhkqCJocU7L3UKxbxuLgdVwJbfCcLKmvTpDM3cn2UKpSyN8nE5zWs3Axe6yvjDgto7bXhroGoHHaQkxUKCkGZxSs6pRV19DbT55uK78z3t3KNAf4ZmecN1pDPPYmSgNhCr3uSgNJUCqe232VwTj6t6ZGbiGEof3aJysPL1Up1BakMuduBxpKE2oUwXP2jfeg9fhFs6gnthVJRSp5Y9BgJ1bVEr16zTDU47voxMRsn51uf16RNBERyJSL4xTM5oe7nHTrrP29rkrHiWGMey8PKDvHBi7DncQNtawNyTG4CmwD3YK9LTq1cmy7iPg7zaBnyAjrUZstDse2XkwxQBeKvwF7azPaMS9cYPNC7eqDnqtygN8gitZ9SzwB5ntJkgKU54b9RGdaLt9BYHSAJcsGDh9FCrDohD1LEURNkPGLo6Mqa1CyACYp8UivYen2rpdcvBbtJR74h56nddNJEPAAK4H25RmLvfqbjgmM9mRh6DCFHMYrLE2nRdShbUrmiRfJ85UqozJFeTWPxcNetcN7pEB54WPBwsUuq4JNm4PAywZthrpeD3CaTJWCeepEdDrX9YjZNfL7mUJGZ9rRnMDTSE9oiZJji2PBpqowQoKdybVxSYy9fJVuSJTQXuAHqQD9PVJ61fwAyMWhAv7yMu5yvRduMeeDEUJivvwT5KqcqdBoySg7eheB7zg6BvzphZvN4Ed6Edq6eVFXSs696BtMreM3pEyMWw2xnTLquPxZ9iyGouUMq3LRzv2aV6KbVsDML2nBnDkdGGBEEUJGdEqddSbVG7xj8tK6GCrYYFgW2coxX3vDQMnH21Wic3swg2j8GuGo9a2U88gYjNBqzSEm3"},
|
||||
{decoded, <<226, 73, 4, 21, 218, 9, 162, 224, 60, 21, 255, 44, 89, 151, 84, 88, 99, 146, 222, 232, 88, 162, 66, 121, 73, 53, 101, 50, 7, 143, 203, 85, 115, 12, 19, 16, 123, 197, 127, 129, 155, 80, 230, 129, 202, 143, 225, 187, 48, 112, 23, 76, 138, 161, 168, 94, 177, 108, 150, 62, 54, 193, 135, 122, 76, 199, 206, 122, 204, 60, 19, 54, 186, 142, 39, 89, 75, 185, 182, 215, 101, 212, 181, 230, 76, 28, 83, 87, 148, 133, 127, 92, 39, 189, 243, 101, 6, 81, 162, 249, 33, 3, 6, 243, 88, 41, 82, 174, 98, 222, 176, 151, 254, 137, 176, 114, 6, 40, 50, 229, 235, 172, 62, 242, 244, 156, 219, 134, 76, 187, 200, 220, 111, 20, 160, 192, 49, 4, 68, 134, 33, 130, 211, 233, 88, 73, 168, 199, 5, 83, 133, 70, 150, 245, 40, 83, 179, 199, 162, 147, 103, 3, 16, 255, 40, 253, 132, 175, 102, 113, 86, 130, 77, 127, 80, 89, 125, 235, 85, 169, 214, 69, 91, 244, 242, 122, 217, 87, 123, 55, 80, 57, 171, 89, 16, 130, 128, 48, 6, 58, 181, 211, 11, 131, 202, 55, 238, 146, 40, 101, 68, 95, 16, 142, 185, 41, 42, 129, 241, 206, 106, 222, 43, 200, 110, 128, 110, 133, 59, 105, 97, 184, 198, 35, 236, 208, 105, 202, 76, 248, 229, 94, 66, 110, 50, 184, 49, 94, 68, 60, 4, 94, 161, 94, 168, 22, 26, 157, 11, 122, 230, 167, 52, 23, 161, 138, 99, 1, 37, 89, 221, 236, 63, 171, 13, 25, 54, 28, 158, 124, 146, 211, 238, 0, 98, 149, 20, 186, 44, 128, 164, 104, 176, 185, 102, 224, 150, 170, 111, 16, 143, 82, 82, 106, 93, 231, 28, 251, 214, 76, 108, 56, 193, 121, 51, 121, 66, 37, 183, 140, 37, 242, 35, 19, 153, 243, 186, 238, 51, 233, 243, 97, 200, 222, 35, 224, 66, 60, 82, 241, 175, 218, 155, 15, 211, 250, 174, 180, 111, 196, 53, 83, 34, 58, 213, 122, 82, 44, 117, 76, 10, 9, 220, 187, 3, 188, 207, 72, 35, 112, 111, 20, 95, 203, 238, 146, 3, 202, 236, 170, 45, 162, 162, 55, 158, 91, 176, 195, 58, 161, 120, 90, 186, 38, 206, 228, 241, 181, 136, 50, 172, 99, 11, 163, 7, 163, 234, 25, 169, 65, 66, 142, 127, 114, 24, 91, 193, 69, 71, 212, 228, 119, 103, 209, 15, 254, 226, 137, 199, 243, 59, 134, 180, 240, 19, 45, 57, 254, 67, 165, 181, 133, 112, 255, 97, 100, 193, 243, 3, 160, 215, 78, 190, 169, 5, 250, 113, 226, 137, 80, 35, 33, 174, 122, 149, 155, 25, 169, 237, 148, 82, 107, 227, 58, 11, 155, 27, 121, 183, 21, 72, 125, 178, 6, 136, 171, 206, 242, 72, 44, 169, 129, 96, 201, 199, 190, 96, 38, 6, 31, 100, 35, 236, 194, 119, 21, 106, 152, 160, 206, 158, 193, 31, 122, 252, 95, 76, 204, 180, 252, 171, 75, 182, 57, 141, 55, 189, 68, 187, 76, 120, 158, 16, 86, 109, 62, 31, 87, 55, 131, 217, 109, 188, 128, 98, 65, 33, 129, 80, 5, 44, 132, 195, 160, 174, 195, 90, 139, 217, 130, 184, 101, 103, 54, 107, 76, 202, 165, 190, 104, 109, 245, 226, 192, 156, 143, 97, 222, 78, 126, 156, 38, 4, 168, 63, 233, 161, 113, 208, 38, 11, 226, 5, 170, 165, 61, 240, 232, 173, 180, 220, 114, 251, 213, 206, 3, 37, 109, 105, 73, 146, 99, 207, 72, 25, 80, 202, 181, 26, 206, 235, 37, 78, 146, 166, 222, 95, 27, 0, 51, 3, 100, 107, 147, 126, 234, 28, 178, 49, 83, 124, 73, 120, 78, 173, 175, 38, 136, 70>>}}.
|
||||
{{encoded, "23CrQydtwsfokvpnAB4JUDQL9ed32Q88Hng5e8viQXZSEcypbr6htpXoZeUFA5GhUXvRMqHyT8xt5CXtnUBhSDcgkffLTUe1e9VV6cg1E8nPLyaghDkYHTvRcVUu5rnVZvCsnmCedg5p1qyx9CdvsnpWxMiL8n8aEHkx3BT1wdyS4E5Aq6QVJ2EjNK4meopkoLqiupYPRzLtwbTyZquyU5dhbN6fpTeEMSr6MCCGWhGeAFYbke7KYbSQMamYGyLTujrxZYcxZshtozTXyBLr7S1Sa8LHkNfbQp3WoPQdUSWgc53JyMwBBfgbbNewE2RwvBz84GabEwdMB4hWXt4icQyHUG4dgPo5Dj7m9qHew49zq8SbqYYQD5nCVBhhRoqSd4yzYDfZVxfQ3czPm5Wtq5wyNfgjPDN7jGnHW1hdsaeYEe1niv3pghjzmCjKx8NX9Pk2BMZccBWa3G293Rk8N9n9xuseFnWCMX2akawKaYrExzWdhCuR78oXqFFhCgk2E3NFyt8N179c2cEvqJ451zysctB4tKcQmKomAPAKqh7qgDNDWdZxXA3resiRoKy1ft6QsWuVbfCgXjoGegqFEU31LT2AgoKjTdqxuygxpHqxkg6H1ixV8uA4AqjtExtUV3SnZarGuPxzmaA2kf6Li4dXXZQ4VyrXCAKzHwvj2aWFgoP2s6DEjfYv1Ag4p21Ck1sBzPGnSXtQ7aY3e8CaoH5uFts1MWiFjo6nteytoNNSKTrd"},
|
||||
{decoded, <<168, 156, 8, 78, 1, 96, 206, 175, 170, 51, 146, 129, 237, 103, 19, 160, 1, 29, 15, 91, 42, 158, 6, 21, 177, 54, 170, 59, 16, 66, 166, 219, 125, 236, 136, 29, 127, 41, 98, 213, 189, 80, 54, 211, 193, 242, 203, 112, 23, 194, 76, 170, 108, 192, 32, 60, 161, 225, 206, 236, 48, 119, 159, 34, 226, 29, 153, 248, 57, 114, 76, 60, 141, 50, 156, 68, 118, 200, 162, 215, 185, 68, 40, 148, 52, 36, 204, 127, 203, 148, 3, 57, 55, 236, 41, 0, 110, 94, 220, 26, 75, 108, 251, 201, 69, 36, 239, 111, 218, 0, 147, 0, 89, 49, 93, 0, 178, 97, 126, 224, 197, 183, 247, 51, 171, 78, 98, 75, 212, 112, 49, 6, 94, 42, 225, 88, 154, 88, 254, 224, 235, 68, 69, 188, 7, 226, 29, 65, 10, 25, 11, 169, 134, 97, 110, 161, 167, 127, 80, 74, 3, 85, 231, 110, 12, 131, 251, 150, 231, 125, 62, 103, 34, 22, 185, 8, 69, 152, 49, 253, 81, 237, 117, 130, 19, 62, 50, 62, 195, 97, 72, 155, 233, 238, 240, 8, 158, 75, 56, 216, 166, 249, 211, 93, 198, 164, 137, 242, 246, 169, 241, 159, 81, 207, 223, 3, 70, 134, 6, 79, 203, 123, 79, 247, 24, 199, 15, 48, 98, 126, 20, 174, 35, 253, 101, 128, 166, 224, 239, 239, 30, 0, 70, 33, 204, 94, 59, 67, 189, 35, 104, 53, 245, 186, 18, 199, 223, 132, 233, 133, 32, 29, 177, 247, 142, 77, 181, 86, 66, 200, 76, 220, 186, 111, 255, 247, 90, 89, 56, 167, 43, 85, 82, 89, 226, 88, 82, 158, 177, 195, 170, 246, 215, 235, 200, 61, 158, 255, 105, 241, 84, 71, 64, 198, 114, 139, 220, 255, 107, 178, 123, 120, 113, 5, 17, 6, 238, 170, 177, 15, 18, 89, 141, 19, 31, 248, 220, 70, 158, 164, 180, 103, 128, 183, 7, 25, 205, 42, 41, 217, 9, 50, 238, 40, 113, 247, 154, 209, 131, 139, 24, 106, 137, 114, 199, 27, 161, 83, 189, 5, 128, 58, 253, 83, 130, 6, 129, 3, 40, 13, 164, 17, 51, 51, 201, 39, 155, 118, 173, 66, 6, 36, 41, 181, 184, 243, 108, 145, 154, 77, 218, 98, 90, 130, 97, 24, 192, 227, 183, 92, 211, 252, 51, 28, 99, 184, 31, 89, 127, 137, 87, 116, 231, 220, 48, 67, 155, 145, 67, 72, 108, 186, 244, 20, 253, 96, 33, 211, 208, 196, 86, 69, 126, 20, 58, 105, 151, 157, 213, 127, 34, 213, 175, 204, 35, 233, 241, 1, 103, 76, 46, 92, 177, 28, 57, 17, 80, 199, 232, 86, 28, 38, 217, 5, 96, 74, 203, 147, 211, 224, 3, 209, 60, 213, 67, 183, 134, 19, 169, 207, 152, 206, 13, 59, 48, 100, 211, 19, 229, 110, 152, 132, 147, 155, 85, 26, 127, 220, 149, 140, 194, 118, 51, 223, 113, 201, 184, 35, 10, 67, 184, 103, 83, 241, 163, 93, 184, 12, 58, 233, 213, 215, 3, 0, 166, 47, 218, 245, 232, 155, 252, 145, 201, 220, 13, 216, 53, 19, 79, 139, 57, 236, 110, 158, 124, 177, 203, 93, 233, 166>>}}.
|
||||
{{encoded, "2XkG3iBncJSnJkMTd1EshH47jUoJLRbw3maZyZJbKvuUGm8wJacZm7zXZUCDDHXUraFNcf9d8ENpMQaMCfPdSK4sPK1ELr1ovyd6WAXfXqUJmnv6FPe4Qzcd6qNCckda2VqBiH5BDrcVeUD8tLNt1THJrS5LhVgf8wb"},
|
||||
{decoded, <<48, 185, 60, 6, 47, 65, 95, 115, 200, 190, 150, 23, 242, 69, 97, 251, 131, 44, 232, 90, 48, 153, 152, 154, 22, 183, 80, 19, 82, 68, 175, 100, 237, 145, 189, 173, 63, 0, 142, 98, 112, 147, 236, 61, 200, 85, 176, 185, 168, 252, 236, 65, 105, 230, 234, 228, 223, 129, 39, 172, 53, 241, 146, 163, 120, 109, 239, 200, 114, 70, 133, 99, 10, 146, 192, 251, 150, 56, 251, 234, 158, 234, 73, 192, 39, 39, 73, 123, 214, 0, 21, 154, 81, 226, 184, 75, 104, 116, 186, 164, 44, 7, 148, 23, 219, 30, 242, 190, 189, 52, 122, 1, 150, 50, 230, 79, 112, 160, 186>>}}.
|
||||
{{encoded, "28SLRFUhRmBrPDvcPevBf2dxZfHUSnVvaC6gjrMxtSpvXT7xMSv1n9JFayGtfW5vtpqZ5CNM8G1M2PWsiqPSFtLnFBELHDxUVuyzTkM2esnqySPnhjcvNMLbBxWXSqRBvW6TPigSptcPdaeA5FDZNGhchx9bMWYiD1T3Mwd1LoKupsuixrLrsT59skpWq2ipD6bx6HmVQKyUVQAPxGUXf8hbWh4zmFUzsFezwJ2krRXEN9ZYXQNy44Xb18aQWiAmp4N4V8ZjYVxCzFHBFK41TmW5wMSZdSBBsAHXLUJWQSEwo3QVJnatedAXd7tRvBvtqymcRdyMbVwvyPJ3eKMfbY41VpLsWJfEaoyxaKdxomUekUGqkeNJoM2o8Ba544BunwMdWhSr57L5iZ74eEQJH77bDhKrmUj98refJYaGqccAEg1PreesJ7r6xq5mXpHMr9p7D5uwJYpHKMhCQBNcBYbPVXTvXZNkNFn75UfjBypTFh2FSd4efUgT9UzF7dbHJ4NbqStEtdtyvgqcAvpY7tgfjG7rSUCLBaL1QjDsvPVhNJdBy9RvtEYPSPRMtUAJ11e9t5vsbk8gDZuJyDQyHR3dNt6tAZTEwZaXm2X2ZYgB3mFuh5WKB9G7vd5jLobopwc5K7ADrKtGCeRPGD8GdkB4uv88g2oi4XvFswQMqtAZdPjcCNkrpPt3JbcHDogd2XZkcZCDdjVNHJTC3eA7VdV51tEs1Pv1UBCHVfbJyqVk3y7ss7w8XBmjGZ8Nn7y8cVd9biaUR7g7dGbkZAGep7TDaTndrL9ticsACfADFCApbbYknVoCiUa6k5dn9PhbjdgJMuJb6VhWUKKFn18Xg1ifQZya7AHFV2Sy6dVeZa2BGkmZ56tZnfkQw6uNRhg8L1KBMhmNhkER9ojoAqXLeQDBCh6uoYVKDKQYwdtqRVk7KQtYdNgLSmksTsJ1M96H2AmXjmboWPSMEzNG8HZ7evjuD3mqLF1LdF68vQ8zkNZVCcmVLN7odRnVkaD5TtDjpuEQhBGX4teBVgDHscyx3PkoMs3jtgfTZJpHe1NUYc6Q5Vq6jGiVCGRgLcfsQzu2Fp4RDYvHX52fLSwM7AxRK5Wa2PKttaLKEEhdhWcTGhmF1eNUcF97Cgsy7MxSrQFTm6xquDpMpDEAwudSZmXqsmdBET"},
|
||||
{decoded, <<129, 148, 13, 193, 183, 48, 45, 110, 255, 205, 37, 93, 237, 219, 224, 47, 115, 215, 92, 73, 155, 119, 173, 70, 252, 110, 34, 193, 194, 9, 230, 49, 185, 89, 96, 246, 197, 136, 127, 13, 42, 124, 217, 227, 11, 239, 89, 47, 24, 58, 130, 11, 227, 180, 237, 78, 219, 68, 9, 8, 249, 159, 216, 219, 152, 21, 153, 194, 177, 101, 243, 174, 106, 195, 156, 94, 149, 21, 21, 215, 113, 11, 88, 45, 155, 9, 113, 27, 147, 169, 5, 99, 15, 10, 25, 207, 237, 174, 188, 206, 173, 86, 181, 234, 104, 244, 7, 17, 95, 67, 143, 56, 223, 152, 156, 117, 4, 204, 121, 60, 190, 124, 59, 224, 97, 228, 193, 107, 68, 156, 213, 138, 60, 130, 162, 75, 48, 112, 148, 61, 176, 11, 225, 207, 95, 86, 54, 193, 235, 33, 12, 11, 36, 244, 4, 0, 152, 236, 253, 198, 174, 101, 227, 117, 17, 173, 101, 249, 170, 7, 146, 122, 39, 0, 241, 238, 106, 111, 43, 159, 94, 81, 27, 80, 43, 1, 90, 169, 134, 9, 132, 172, 80, 127, 177, 97, 51, 55, 255, 202, 118, 170, 184, 219, 26, 161, 198, 22, 178, 72, 79, 85, 210, 78, 191, 0, 151, 238, 123, 112, 183, 118, 122, 85, 250, 101, 1, 236, 233, 142, 56, 17, 14, 191, 104, 174, 167, 11, 233, 45, 72, 93, 28, 197, 179, 244, 204, 41, 11, 38, 15, 204, 85, 240, 231, 98, 91, 14, 204, 20, 227, 236, 224, 173, 94, 39, 167, 193, 208, 247, 4, 116, 128, 255, 170, 207, 10, 105, 228, 91, 74, 222, 107, 205, 142, 69, 127, 17, 172, 74, 48, 71, 201, 44, 221, 70, 94, 49, 123, 35, 101, 82, 148, 174, 221, 222, 128, 67, 14, 138, 121, 153, 199, 211, 134, 82, 181, 232, 5, 19, 190, 205, 173, 154, 2, 251, 248, 190, 205, 62, 83, 225, 198, 25, 236, 252, 149, 50, 161, 35, 255, 254, 58, 126, 243, 41, 94, 178, 3, 77, 183, 188, 194, 9, 14, 182, 112, 59, 176, 222, 130, 37, 157, 32, 188, 168, 113, 29, 201, 189, 73, 230, 113, 49, 7, 232, 121, 65, 95, 71, 9, 116, 28, 84, 231, 27, 181, 38, 177, 211, 77, 190, 154, 198, 40, 148, 118, 172, 178, 172, 40, 188, 200, 213, 229, 86, 255, 125, 38, 225, 147, 88, 98, 164, 144, 87, 47, 221, 193, 114, 73, 75, 159, 225, 160, 212, 92, 192, 125, 107, 86, 68, 109, 51, 4, 117, 83, 217, 199, 90, 216, 195, 37, 85, 83, 165, 59, 69, 251, 108, 172, 219, 109, 247, 196, 186, 133, 40, 159, 176, 85, 228, 63, 131, 164, 109, 227, 205, 49, 101, 91, 221, 79, 27, 39, 100, 195, 36, 241, 215, 216, 102, 253, 83, 114, 224, 138, 114, 141, 72, 163, 243, 224, 161, 6, 225, 194, 85, 82, 180, 123, 200, 105, 228, 41, 119, 15, 119, 96, 81, 243, 192, 198, 220, 79, 103, 194, 29, 111, 27, 39, 71, 219, 149, 34, 85, 11, 104, 25, 68, 149, 223, 127, 86, 85, 47, 80, 132, 10, 255, 25, 201, 55, 14, 72, 184, 251, 170, 31, 195, 168, 172, 190, 160, 234, 64, 168, 169, 23, 51, 184, 181, 252, 162, 246, 57, 161, 171, 56, 223, 128, 120, 243, 24, 1, 95, 104, 194, 130, 47, 165, 115, 120, 120, 148, 77, 101, 101, 242, 6, 87, 53, 116, 247, 223, 41, 31, 63, 76, 146, 241, 66, 100, 168, 180, 239, 112, 232, 44, 202, 115, 82, 209, 156, 250, 96, 237, 94, 102, 44, 46, 137, 63, 106, 64, 178, 180, 57, 237, 201, 101, 160, 223, 170, 248, 205, 101, 106, 195, 241, 122, 165, 193, 147, 231, 31, 78, 195, 178, 104, 121, 192, 106, 110, 50, 27, 35, 1, 232, 185, 58, 230, 13, 98, 199, 184, 15, 29, 202, 153, 198, 3, 105, 162, 117, 80, 187, 196, 153, 67, 38, 5, 231, 228, 128, 2, 99, 198, 55, 31, 144, 228, 246, 241, 235, 217, 73, 6, 35, 197, 224, 3, 159, 105, 145, 156, 220, 16, 129, 121, 218, 97, 248, 136, 202, 84, 49, 252, 235, 243, 155, 207, 209, 214, 219, 51, 173, 217, 53, 178, 229, 223, 10, 111, 55, 185, 66, 167, 53, 191, 230, 165, 199, 181, 24, 95, 31, 3, 51, 88, 130, 131, 7, 46, 166, 23, 11, 154, 220, 13, 115, 229, 46, 19, 239, 48, 219, 34, 149, 46, 145, 189, 166, 99, 143, 41, 57, 253, 193, 132, 146, 48, 72, 200, 143, 69, 0, 94, 20, 226, 187, 209, 230, 12, 201, 141, 236, 17, 162, 141, 179, 85, 133, 247, 210, 60, 5, 194, 255, 225, 144, 234, 195, 23, 253, 154, 172, 252, 98, 168, 142, 189, 14, 16, 45, 237, 17, 39, 92, 25, 2, 176, 78, 40, 30, 184, 111, 48, 16, 183, 63, 114, 48, 98, 199, 166, 218, 172, 221, 40, 150, 241, 74, 50, 179, 16, 47, 223, 3, 182, 99, 20>>}}.
|
||||
{{encoded, "8NhBSyHS1PvnQeGvNm19FSDyMazSvrqFoFAWLWLKvUJNSEc9gamd9XXqp5UfiTnNMa9uw2TiiVEAV1zwrzeTFHLGPqDFp7ftBFFjz6JUU6mprLv8W9rAA8ssKs4K3am4hNBkZw7iKMePX8tT6VCs249M6Kk19o6d72EroXxFVTGtBBnELdbWh8X4YA67GLaWSaUNJnsjemAPt99p29QzG2R6i34v7r1PzhE58z9B4rH6kAhkg73FiveLWobYTxyiSWtVmwE3P3zGsX3bdrzTtqCowxt7cJ9RaqUBKV"},
|
||||
{decoded, <<154, 112, 15, 219, 87, 85, 144, 224, 19, 76, 213, 101, 216, 189, 204, 39, 133, 116, 102, 201, 235, 42, 245, 44, 232, 32, 252, 55, 115, 72, 1, 92, 208, 228, 219, 48, 205, 101, 241, 227, 82, 39, 181, 110, 253, 12, 246, 221, 195, 183, 244, 18, 246, 182, 100, 38, 220, 70, 47, 244, 147, 165, 228, 13, 204, 129, 205, 4, 181, 62, 200, 219, 170, 26, 80, 73, 84, 193, 192, 37, 60, 199, 25, 148, 33, 253, 129, 213, 243, 164, 244, 115, 188, 16, 242, 167, 117, 7, 194, 53, 180, 189, 74, 92, 93, 113, 106, 97, 64, 210, 247, 73, 17, 19, 142, 45, 185, 76, 168, 217, 201, 71, 78, 175, 137, 10, 13, 238, 180, 74, 63, 141, 178, 45, 124, 190, 245, 15, 240, 178, 51, 214, 237, 70, 48, 147, 30, 102, 182, 88, 12, 41, 58, 76, 127, 178, 146, 163, 38, 7, 171, 15, 36, 71, 81, 220, 162, 209, 149, 0, 107, 141, 67, 180, 155, 39, 65, 71, 69, 180, 147, 83, 98, 78, 88, 19, 222, 20, 160, 127, 51, 53, 190, 194, 195, 159, 61, 205, 133, 127, 132, 165, 173, 118, 93, 79, 219, 226, 150, 169, 113, 27, 77, 143, 112>>}}.
|
||||
{{encoded, "2tp1K84b33yuQFGULEKndJBMKQhFseztwyTbSFiGDxWP7tpq6fSFZ5pKtF9EupmToCegPKvpK19HkPfusLXWdSNckrkga5cJs6ZwtSAL2Laf2g24LBJFiH69NgS7J1EpkjPpUDQachARokMDXkXbFUKJhpp6NnhYx1y763VVGKrKjtLLiKmzr4qvBFLkUUwtJkNXVvddPBXMz6aqVjnDGrgzTzuL4aiw1hexQqqu6Su452SNFxY94rh5h619tGbCWEX16vng1Q8FiAFp6DWn3Aac9yvhCN3qiZ5an9FqGhhaBugyowJq8mvDBrS7uRu2oNbXjCBWUUnpcGo9MTbPzF7Q66ATMFVVPh1vQm684KnTaWKwBcR57TExD9btRUt3hrg6jCecBdxvTY3S3dBwYNX4AANtnkzAECZ4txsdGadEsiNaN9HFM8xQoVh3VsjKgGDLT8ZHv1HKU1ri5UoqdWrxYZ6Qz73LN6NfyAUTLZWh15S9JhnJQWhjTprbVzoq8JWfzEF8Q6d6dmQRKeKc3TrDHcHXRnuShh1xnoF1J5uGgASS5F7BogffnZ5LaHL4899Hq2aXzQE5d9yeyTUk6dyAxXfqoLPp7JDYZUNkVGqZanCCEzR2GyZuHy7K3v3HZbk8AUJgBwPdrN5GGPe21qdnvDb3YcCM4171EmJGmDLo5J4NNCWSA65S9eR4CSKyEbUccVyCcRw66dKDSQ3fnXrWVgPrx8GwyQz2HMZkAWHtmuuA9kdbqUvGt99MCnMq61yzXsX1PoEYR5iyJFCqpQ7s5mk5Zj8HUmpsQEu2AwzgwnT3t9ANaHC9GXk3QYsxrQSZ45UWvxRJUsNgwW57unxAMACcg84nrNcmy"},
|
||||
{decoded, <<50, 40, 83, 85, 155, 119, 209, 2, 109, 216, 132, 40, 201, 2, 59, 63, 243, 230, 77, 8, 86, 30, 72, 129, 4, 255, 74, 184, 33, 20, 248, 127, 38, 135, 119, 45, 37, 169, 157, 246, 179, 210, 57, 176, 168, 52, 95, 59, 87, 207, 5, 223, 29, 181, 161, 209, 80, 165, 139, 41, 25, 96, 28, 182, 85, 34, 5, 56, 69, 230, 138, 19, 234, 102, 45, 247, 235, 118, 164, 71, 6, 255, 104, 222, 128, 139, 107, 213, 12, 151, 20, 105, 75, 42, 224, 141, 55, 237, 236, 81, 170, 246, 127, 209, 105, 168, 18, 220, 191, 232, 147, 7, 5, 173, 178, 117, 247, 90, 112, 53, 154, 82, 124, 205, 223, 18, 125, 93, 238, 39, 226, 197, 135, 51, 216, 115, 77, 70, 46, 205, 160, 39, 166, 51, 195, 216, 20, 74, 70, 82, 153, 13, 197, 15, 130, 210, 135, 48, 193, 11, 35, 174, 249, 28, 142, 247, 17, 236, 35, 152, 82, 200, 199, 72, 95, 103, 61, 39, 114, 59, 176, 155, 169, 139, 26, 87, 148, 129, 23, 144, 249, 186, 81, 208, 112, 231, 51, 134, 53, 136, 226, 230, 6, 45, 118, 73, 179, 238, 51, 237, 18, 153, 222, 118, 15, 238, 219, 122, 83, 240, 69, 111, 103, 43, 144, 174, 244, 131, 238, 0, 197, 118, 241, 245, 254, 219, 12, 103, 131, 46, 92, 94, 129, 240, 124, 67, 2, 34, 123, 1, 242, 246, 7, 163, 30, 159, 253, 97, 222, 200, 253, 141, 153, 2, 82, 243, 63, 227, 176, 11, 163, 247, 132, 37, 51, 235, 230, 100, 119, 115, 247, 193, 197, 17, 110, 223, 149, 148, 181, 249, 192, 4, 209, 50, 157, 43, 8, 196, 146, 11, 236, 59, 133, 161, 210, 162, 33, 22, 251, 206, 17, 140, 145, 139, 60, 84, 76, 114, 193, 159, 26, 157, 29, 143, 210, 95, 237, 67, 125, 6, 10, 37, 31, 244, 39, 33, 158, 162, 149, 36, 192, 178, 159, 57, 108, 157, 24, 236, 94, 134, 15, 65, 140, 147, 191, 26, 217, 90, 217, 22, 101, 165, 57, 19, 140, 4, 88, 2, 145, 250, 51, 175, 14, 201, 159, 16, 208, 136, 133, 234, 246, 187, 252, 79, 154, 116, 48, 76, 33, 105, 54, 69, 114, 198, 135, 116, 166, 218, 29, 235, 89, 170, 125, 91, 137, 235, 38, 9, 151, 80, 77, 253, 96, 183, 108, 66, 187, 127, 103, 253, 2, 20, 204, 26, 250, 28, 121, 210, 69, 32, 95, 179, 92, 221, 129, 94, 194, 56, 249, 52, 41, 233, 250, 149, 185, 181, 168, 15, 34, 63, 240, 194, 116, 61, 112, 196, 224, 163, 227, 163, 99, 247, 243, 252, 213, 192, 208, 194, 10, 203, 205, 144, 43, 104, 146, 216, 59, 185, 126, 108, 155, 145, 46, 178, 233, 27, 125, 47, 162, 195, 154, 253, 85, 241, 73, 200, 179, 123, 206, 29, 36, 213, 246, 223, 190, 134, 115, 15, 236, 42, 225, 44, 154, 183, 135, 43, 157, 146, 27, 201, 199, 198, 119, 197, 201, 187, 14, 171, 253, 225, 255, 69, 26, 177, 183, 231, 152, 1, 6, 96, 114, 99, 155, 68, 105, 85, 41, 141, 7, 125, 47, 52, 120, 181, 69, 131, 164, 21, 138, 18, 233, 75, 180, 157, 182, 132, 36, 179, 27, 161, 240, 146, 163, 75, 67, 96, 57, 45, 227, 161, 204, 124, 192, 181, 249, 252, 179, 171, 72, 29, 177, 205, 44, 186, 43, 166, 252, 22, 217, 108, 135, 218, 10, 127, 75, 131, 69, 193, 138, 197, 36, 197, 177, 91, 237, 222, 36, 143, 244, 42, 36, 45, 245, 14, 55, 102, 137, 223, 180, 183, 38, 21, 186, 52, 205, 212>>}}.
|
||||
{{encoded, "QkfmvXHBFHUReyCZ7LHLSkbKyVME82232BNk8UduHbmLLF4vfyvjKN7Tjq9vWYzXBmU3VNcVZQGtEC"},
|
||||
{decoded, <<198, 183, 116, 93, 120, 223, 58, 244, 146, 144, 197, 40, 243, 73, 22, 236, 46, 35, 143, 114, 254, 79, 133, 148, 112, 175, 59, 189, 135, 154, 137, 6, 146, 108, 159, 141, 180, 64, 214, 49, 198, 154, 237, 175, 238, 230, 68, 95, 218, 92, 172, 247, 245, 80, 204, 21, 113>>}}.
|
||||
{{encoded, "5HeCfJcfoSmzZwpLKGyibvSTiXzbw9KeHGmBoqH9QnKSDY6XmtvyN2N9kG2okrHcpsiJVURFQMAwQ3NT6NjZVEWh6zjcYvBqQDK7xWEAxayNJXKQbqFbFz5aCTT52QbCgRqmZbt7awv4Q8UdkkSq1FLuXY4mmDWM95wizYuYsDtD3MGjJbTJfGB5U8YGLjEmop5Pguipv5mrk4aGS1VfVsfnbkY9oXi67jLTGey4FG64orHZyvdHAyGRM9DZBtqikbA9WVChH7jGxfFFw33jioU6MWm23EgsoMMNbmEfVfDnAuhd6UbiN8Q3jDWQEYTRyN5XmGY7W1faqJgJqyWxjjc8YCwPtnenD8oFpibzHvs6Px1TC2kCGAs6pi4ZcnrbXw7cpdhJjRHksJT4ikMuhg8EgNQZ3YLpptZQEDE37fdC7v7bfc6rk122B1w9zNTe6i4KPkLdApjD9jowuV7DbFRKCDBk6nvG4iEN12dxBGMEgh7zMxWBDyHB4mjWfkquFEK6ZotRnuS4PqKcW8TMVjYCZYytFP8DTbtGSnc964m6ZCVqCoSpcaQoC24yUVKCXHWJoThFmcHk1YyW21ZDXaVP4rbnCEgPiJA91XxzM3jR7hfgS9pYyHxWGAMfs6b6PVXNM2DAazfDD19finrxq8u16645dSu9i8MThxKhApYAH5ERXmMxfrEPh7f5AvvtvCCRtvT36ynHEQHNUXnBzXpLZUrwPurZEGEPeiUTU5wDsCy9Cn4qTUKZnMHdgiYiMXa5zx2m3KyoeaBjcHzn29datiSTcaznZjNv5cRqCV6UMCzJdwAGxFC4fHRYs5FuMVmboMeGAGSrd4pedCUYPjXVUoKY5htWLRrtoJjUjLPFvjFFwFG97kh9HHKEQXFegv6FEhMzgBLXFjW2Cch4YoZoZa3ZZDLpx7f5vsU6vbA4K3kXukTJB3kWqXtUYQHgAWyndpBnR4zQpUXzaKea3QFfh2Kaz2gRLSunYrTW1jbLuwspKmEbN735ZkyoN7DF5sxK867D71Dj4LKmUZRBLqp3WZWKvSQcsZfo2y1Lhf8u21V9drLa62BTHTaCnNT5RJv6E295UqygqD2yanJ5iMkNvq2F1vxmfLiBJWfpxhih7tascbcodbiNbhhtqNuGGRi9HGZ9BCtLsirT9FnYLkMooYBf2fWse2rLfPgWPHAUarqNu9pA4zGNXKzsq2DACsiPtVs8zqxYfvfpcUGkDhRqTMtWBTgycMfkZgpVz2N47rMshvHExgxk1vRprStsCm4rNJASCzSDvhWpxzowHYp7wmiTwwqToyqisCrzBKQSjQNJFzLC5kX1ASGE7CY"},
|
||||
{decoded, <<182, 85, 107, 72, 103, 253, 109, 34, 154, 206, 115, 163, 217, 173, 143, 48, 36, 219, 76, 239, 201, 79, 19, 244, 102, 59, 162, 95, 168, 155, 32, 137, 7, 240, 170, 52, 88, 137, 156, 4, 131, 99, 181, 39, 121, 249, 237, 183, 245, 7, 102, 65, 110, 137, 182, 171, 10, 140, 68, 108, 95, 182, 243, 95, 151, 221, 166, 119, 147, 16, 240, 63, 247, 101, 174, 84, 161, 184, 8, 72, 90, 239, 59, 45, 140, 58, 106, 130, 92, 154, 94, 58, 91, 235, 54, 109, 65, 231, 82, 63, 141, 197, 198, 234, 9, 69, 191, 159, 115, 104, 28, 11, 230, 11, 43, 10, 24, 134, 103, 235, 163, 31, 244, 63, 218, 109, 52, 216, 57, 92, 39, 2, 69, 171, 21, 189, 47, 195, 74, 23, 131, 32, 77, 203, 224, 138, 234, 40, 226, 174, 198, 152, 233, 71, 171, 5, 103, 7, 86, 199, 158, 243, 200, 64, 253, 186, 8, 253, 250, 160, 51, 187, 153, 95, 47, 114, 161, 167, 25, 144, 66, 28, 219, 185, 126, 2, 226, 57, 117, 206, 222, 31, 135, 19, 153, 51, 141, 184, 172, 238, 87, 97, 218, 209, 124, 86, 84, 180, 218, 207, 252, 211, 89, 141, 249, 205, 40, 170, 140, 123, 252, 145, 73, 12, 215, 209, 15, 255, 230, 60, 158, 124, 37, 19, 11, 135, 34, 27, 73, 51, 196, 242, 156, 53, 94, 57, 216, 237, 220, 41, 115, 39, 150, 176, 215, 230, 187, 52, 179, 74, 233, 86, 157, 231, 150, 229, 0, 94, 205, 30, 200, 89, 164, 181, 173, 79, 202, 48, 60, 36, 208, 103, 199, 82, 34, 117, 210, 61, 67, 68, 239, 243, 19, 41, 78, 120, 146, 126, 15, 30, 133, 68, 101, 96, 176, 47, 115, 13, 247, 101, 228, 226, 76, 5, 232, 7, 46, 83, 236, 78, 114, 193, 8, 121, 59, 151, 152, 70, 71, 35, 229, 62, 234, 165, 26, 254, 156, 30, 138, 230, 92, 167, 202, 100, 156, 11, 147, 234, 116, 38, 127, 184, 190, 38, 68, 93, 222, 77, 25, 49, 33, 15, 32, 193, 35, 134, 169, 186, 96, 83, 235, 6, 63, 99, 0, 3, 95, 137, 138, 145, 115, 82, 87, 28, 104, 1, 43, 112, 178, 225, 158, 88, 186, 152, 149, 117, 120, 205, 80, 114, 33, 104, 67, 44, 93, 112, 58, 234, 43, 99, 42, 17, 200, 70, 4, 145, 199, 249, 170, 28, 45, 174, 9, 228, 101, 44, 103, 110, 23, 10, 254, 1, 224, 98, 136, 223, 215, 53, 10, 121, 14, 89, 78, 160, 9, 36, 236, 182, 144, 109, 103, 212, 235, 73, 203, 207, 48, 25, 98, 29, 194, 225, 75, 129, 63, 208, 70, 7, 82, 14, 103, 132, 114, 221, 113, 203, 249, 120, 170, 129, 182, 12, 222, 108, 224, 242, 122, 208, 75, 153, 246, 110, 145, 71, 120, 87, 27, 194, 236, 145, 247, 56, 92, 64, 190, 21, 171, 198, 224, 202, 142, 118, 69, 119, 130, 84, 102, 69, 181, 28, 32, 10, 114, 112, 46, 3, 31, 87, 191, 30, 176, 167, 118, 210, 40, 236, 253, 146, 249, 66, 4, 32, 99, 228, 42, 254, 177, 194, 33, 26, 64, 234, 218, 242, 14, 31, 138, 110, 66, 79, 226, 136, 58, 233, 219, 157, 177, 12, 251, 136, 206, 86, 92, 6, 252, 203, 0, 16, 119, 22, 209, 177, 226, 143, 216, 128, 142, 13, 101, 65, 69, 214, 70, 126, 250, 244, 61, 99, 206, 72, 184, 209, 78, 84, 219, 6, 115, 211, 236, 111, 29, 233, 91, 67, 196, 203, 213, 16, 143, 188, 230, 214, 253, 176, 205, 128, 108, 226, 220, 18, 154, 248, 109, 186, 135, 222, 16, 220, 170, 1, 10, 244, 18, 49, 73, 106, 146, 4, 253, 32, 141, 169, 188, 16, 22, 46, 198, 251, 73, 46, 92, 144, 92, 201, 78, 64, 192, 235, 30, 214, 136, 15, 118, 62, 121, 94, 125, 219, 210, 235, 195, 19, 130, 1, 188, 10, 65, 84, 68, 142, 139, 162, 30, 73, 25, 244, 66, 81, 74, 185, 201, 62, 95, 120, 31, 166, 132, 95, 169, 21, 7, 204, 53, 246, 26, 150, 45, 148, 184, 47, 131, 32, 122, 87, 215, 93, 194, 134, 114, 72, 130, 115, 158, 187, 140, 33, 86, 18, 222, 127, 251, 221, 136, 134, 227, 73, 135, 140, 171, 88, 17, 66, 163, 2, 6, 52, 151, 40, 58, 180, 210, 139, 198, 219, 14, 88, 106, 34, 223, 225, 203, 240, 175, 234, 194, 59, 15, 70, 240, 32, 35, 67, 163, 131, 70, 255, 60, 151, 182, 140, 21, 113, 42, 254, 165, 226, 85, 242, 219, 78, 19, 52, 239, 163, 185, 148, 174, 95, 116, 142, 170, 27, 109, 40, 227, 100, 7, 78, 160, 136, 82, 180, 74, 61, 144, 11, 134, 149, 87, 169, 14, 31, 69, 251, 73, 109, 218, 86, 77, 142, 220, 93, 148, 2, 104, 252, 138, 170, 67, 39, 160, 204, 86, 208, 1, 61, 156, 84, 53, 138, 48, 139, 201, 119, 231, 204, 124, 37, 252, 242, 168, 250, 140, 158, 59, 62, 104, 178, 132, 192, 224, 183, 125, 137, 59, 35, 60, 24, 179, 146, 151, 215, 224, 97, 161, 220, 153, 52, 137, 228, 193, 135, 255, 224, 35, 124, 193, 32, 165, 242, 149, 149, 24, 104, 32, 136, 180, 120, 79, 118, 188, 173, 206, 148, 53, 220, 42, 104, 233, 210, 223, 90, 12, 83, 235, 178, 89, 72, 84, 112, 218, 171, 42, 34, 16, 60, 129, 95, 8, 23, 63, 6, 209, 65, 52, 179, 205, 91, 3, 129, 250, 237, 112, 20, 235, 84, 36, 238, 6, 11, 250, 20, 34, 108, 101, 63, 219, 17, 47, 201, 97, 50, 77>>}}.
|
||||
{{encoded, "C37SQ4oCvqvWyhAG4WDRYW8KQMdHVGVtrS29wKbvAjQmEvFEC5NaAZmjjkhCvfSk4V9jgJTXYcAk1GUEXkQFXHE6TwCCd7EB5nQdgkUxacvVfEKazKqTo5rYwdFWQEMhQZrPjzvRvBRGq49S2icKzrVpNxb14H4fkDr5rp4W7XCwvUoAxMefUWpEiMoCLEkUeMWRjA3AJdEycUYzLgX1EYht9yg8KnUiuY3b94ZbuiaPAUhXqLY3JQa9V7tRf7oop1zXTX4CSzBwSAtkHqjcSsFAx7997wMdvUwFw3DboACyXQp4L54Kn5SRYWi3z31hvx5gsSN9AYY6F382FmzYYJyTAWEwmuy4e7JcudcfXdjkqrYs4o6AULo2QJ91KPgBi6pZtVMxuXizGzzPhgHaj7A8j1pnRpExFAe4NicrM81EWxPrtwUNoXDAiWA6Qj5hzGB"},
|
||||
{decoded, <<188, 35, 63, 195, 127, 22, 219, 226, 119, 116, 32, 36, 152, 217, 111, 50, 20, 236, 23, 190, 199, 169, 179, 138, 2, 78, 41, 38, 153, 59, 231, 165, 63, 33, 68, 200, 85, 37, 117, 208, 55, 20, 60, 89, 106, 35, 64, 15, 50, 225, 35, 94, 55, 157, 83, 6, 43, 4, 141, 91, 222, 136, 88, 184, 119, 240, 164, 228, 211, 170, 106, 91, 51, 29, 130, 132, 0, 169, 104, 194, 202, 147, 243, 91, 210, 8, 10, 54, 206, 201, 19, 215, 135, 180, 13, 116, 93, 217, 75, 151, 228, 36, 16, 42, 44, 92, 222, 210, 217, 64, 70, 120, 145, 214, 127, 197, 231, 174, 199, 157, 147, 48, 30, 115, 100, 203, 132, 201, 110, 80, 12, 240, 240, 57, 219, 254, 40, 87, 244, 100, 144, 44, 84, 113, 96, 23, 110, 120, 194, 97, 116, 41, 242, 232, 153, 244, 60, 194, 75, 155, 140, 212, 62, 167, 71, 154, 198, 182, 65, 6, 230, 48, 251, 200, 190, 8, 5, 90, 27, 184, 89, 30, 57, 202, 97, 254, 43, 198, 140, 16, 31, 40, 116, 175, 106, 248, 111, 149, 39, 50, 72, 80, 27, 130, 241, 69, 129, 247, 215, 138, 225, 26, 151, 25, 137, 141, 251, 148, 100, 204, 60, 79, 43, 133, 228, 221, 155, 155, 201, 46, 52, 144, 129, 144, 170, 198, 101, 53, 128, 138, 120, 222, 86, 64, 174, 38, 245, 212, 86, 131, 39, 164, 181, 26, 190, 112, 200, 8, 214, 40, 159, 216, 169, 167, 30, 190, 74, 249, 244, 218, 52, 5, 141, 109, 85, 138, 39, 54, 176, 114, 160, 86, 26, 53, 122, 207, 217, 209, 106, 167, 134, 36, 46, 13, 93, 253, 89, 114, 225, 237, 167, 27, 155, 186, 216, 3, 34, 46, 145, 77, 41, 180, 192, 104, 213, 74, 54, 144, 149, 107, 215, 143, 252, 112, 37, 155, 167, 243, 242, 116>>}}.
|
||||
{{encoded, "3GBNADS62mDoRZ8SD1ZPPyQBS4peUVNkbttVF5F3P3uL1XQQAgyiZ3SpaKn2VRtsTX68wS1vsxT5i5QQi8gpVSoykMbi4CbXsv9ovVcWx3MRXmnubjhv7dyFFKW9Xr33Rt687LqgWuwrcvLhjbnMo8oekrRvRCDQGyyHsJDWGvLJfJtvCTpcQfKS8Am6ZgNpmJy6Mnq9qbUhnUSiCiQtvXgqMv8PXPr77ZmdJhwiv7wNczbkoQhtuQEhttFT94doVruur3HLpmarCbd5W5exZuLDQ7b1fdkW6DysvzdNJBSxYZMsbFiAiRdZAcMiUxG17E8SuUArZtZwKh8t3djVRYfot9wf76LxHBWxbgon7xKgwaEzJ1xRyZwQyzPQ7L74REHNfHbwTbzZX1BMV9ABz4JMZruNigycF8wMJTEMkA4Yy2nLwdY9nK7cZzsZY6Y2GUNDz5WEfvZ1RG9Y7vMeUcfZPeB6p5dobKRXbFqbNwgaW5FLkpk7FExC2JJbfBsEXbzAYqFn1MPSe"},
|
||||
{decoded, <<108, 87, 147, 239, 84, 89, 48, 34, 202, 69, 116, 198, 51, 37, 194, 105, 152, 195, 101, 205, 13, 164, 216, 85, 17, 13, 181, 84, 5, 145, 246, 210, 49, 185, 246, 56, 106, 25, 8, 220, 147, 239, 196, 241, 161, 201, 110, 242, 218, 34, 212, 120, 52, 37, 117, 190, 252, 206, 82, 24, 192, 233, 150, 232, 173, 169, 155, 214, 0, 1, 37, 129, 181, 163, 11, 151, 209, 198, 54, 98, 251, 35, 76, 161, 70, 84, 12, 164, 193, 38, 114, 9, 92, 224, 33, 196, 117, 112, 146, 208, 136, 87, 57, 93, 11, 217, 175, 246, 171, 19, 117, 41, 177, 44, 254, 179, 220, 132, 66, 185, 64, 9, 88, 37, 11, 160, 226, 54, 110, 64, 113, 131, 93, 96, 73, 63, 243, 30, 58, 97, 42, 80, 194, 225, 37, 228, 145, 229, 237, 223, 143, 190, 177, 127, 195, 81, 163, 101, 196, 25, 65, 201, 191, 81, 46, 136, 202, 170, 23, 66, 225, 255, 76, 193, 6, 2, 38, 109, 19, 145, 100, 57, 214, 128, 221, 128, 43, 79, 202, 156, 122, 136, 234, 250, 175, 230, 100, 67, 153, 158, 95, 148, 232, 128, 200, 215, 164, 176, 71, 102, 245, 44, 2, 5, 137, 36, 196, 16, 43, 103, 12, 134, 52, 78, 147, 156, 25, 41, 163, 243, 201, 154, 215, 174, 133, 102, 93, 240, 168, 86, 40, 205, 188, 63, 48, 230, 193, 184, 195, 97, 21, 87, 103, 9, 102, 109, 12, 43, 184, 9, 24, 240, 52, 84, 214, 40, 236, 157, 97, 169, 56, 175, 225, 187, 165, 78, 115, 56, 140, 148, 18, 200, 146, 8, 136, 212, 17, 128, 176, 185, 0, 103, 226, 201, 181, 143, 250, 201, 3, 50, 137, 185, 235, 240, 124, 150, 26, 102, 98, 127, 194, 230, 127, 110, 132, 207, 173, 177, 224, 204, 204, 87, 167, 38, 49, 201, 225, 126, 190, 72, 34, 60, 185, 181, 56, 99, 253, 213, 37, 107, 209, 121, 9, 119, 184, 57, 63, 53, 13, 37, 181, 85, 1, 145, 151, 82, 236, 80, 79, 21, 153, 27, 233, 200, 92, 12, 117, 202, 55, 53, 1, 177, 238, 204, 87, 3, 132, 223, 164, 243, 43, 92, 75, 167>>}}.
|
||||
{{encoded, "DWW8UiNrGvKESJNv5r4uCkUAxwYnB2hSUxAuGH5WzMDrSdcJwt6pxke8r59beJshXESgR3j5aBVaTYgPAGvLJgLEHbH5o43d8hY2JoR2ek6pCLir5tfQifsTQL2nu3gAq9AKTpXS3Y4fkouByuEM3pqUdFsapffFLYpchncSnmkWCQXkths9YNNwWtW82RGPjnY8iMHn5K5m2bsNnXy3ZXrw8TRoSNASx1UKQEz3q8DCRR7eXGG731vM9wSvwdYp65Cg3dcz1dVrgsWMkiHZGzWeBUKZNYMeJJWhRsuC49YbUkA9BmZvHSXBVX558FeXcqYyXp5N3r6DTWT4onXrTnvH99J4ueU3Q6NzGNz7UUoDNKD6i52Lzp3twYBXhgAFQfB8W7cD5j5nx5UQB1snCXcgxQbEWgDWeLdJ4VVEzoUWKS9kf525gbSsFTsUfQihu9Zq3f4mVXdeJvUhw33SpbaaojVTroxGh6sZngFPMGTwGMRDjGut5WACWBusu3RuwFEMeeVcLsrmcdUXqa1yWRJfCoqisjFUC3sajiQT4J7wa4pQHntG6n8zTN7KC7Mc5v9o5tjaxrk6YH7eoE5Fsmm8gByyWySb1yergKF7jsXSTdSAahP8mGfVeEZpWj9E3CuDVDD3rrZL75DSSABGcNLGX5qzXwdCF6dPJ8c3TDMYCihsHcesBoWrFJSehDG8wNC8nrV6gqTg2Bt7fRscC4x7Gu2rqSH5Mg16nTLfQU7YgFcmYhe7zTkQUYvPu3UpCQb4bFDUDtp25CD583YJERjaKueTNdeLSQckcUPtVxeUqR9sZYvgu5Ke3v98aGSLCRygzv7JsHvxW5Qi2TQoVvfVvM"},
|
||||
{decoded, <<244, 166, 19, 243, 41, 226, 138, 83, 170, 70, 145, 82, 254, 240, 223, 90, 200, 194, 165, 15, 174, 92, 96, 15, 119, 57, 196, 226, 220, 68, 216, 255, 199, 246, 147, 56, 141, 249, 168, 130, 87, 166, 170, 215, 165, 223, 127, 53, 253, 52, 108, 158, 224, 216, 31, 227, 101, 155, 163, 204, 196, 162, 11, 215, 224, 120, 8, 54, 42, 110, 0, 27, 62, 9, 188, 164, 13, 60, 86, 140, 145, 103, 179, 243, 196, 226, 226, 149, 129, 245, 10, 244, 67, 44, 98, 69, 226, 75, 190, 207, 123, 225, 25, 250, 28, 89, 118, 140, 113, 213, 178, 44, 143, 213, 24, 54, 42, 226, 24, 4, 17, 95, 60, 186, 8, 213, 98, 17, 230, 143, 206, 95, 44, 36, 76, 223, 122, 245, 60, 9, 58, 141, 158, 143, 157, 205, 122, 71, 220, 138, 74, 192, 36, 63, 129, 54, 177, 104, 111, 232, 106, 199, 144, 251, 157, 149, 72, 172, 95, 127, 128, 255, 242, 9, 206, 181, 54, 122, 23, 71, 121, 108, 74, 3, 173, 236, 66, 202, 88, 55, 201, 125, 60, 148, 19, 20, 216, 246, 210, 224, 116, 108, 184, 15, 21, 253, 230, 27, 168, 63, 134, 165, 237, 255, 25, 215, 167, 123, 10, 81, 16, 119, 64, 11, 209, 228, 33, 82, 77, 76, 130, 112, 178, 112, 220, 196, 16, 232, 38, 30, 136, 108, 157, 199, 227, 215, 141, 213, 127, 118, 119, 62, 121, 51, 44, 102, 32, 170, 12, 68, 79, 94, 27, 45, 159, 198, 128, 114, 60, 169, 246, 135, 155, 130, 135, 58, 67, 77, 33, 19, 201, 242, 17, 208, 248, 74, 39, 248, 181, 46, 43, 195, 244, 61, 111, 102, 129, 76, 45, 168, 228, 163, 64, 117, 32, 52, 95, 24, 199, 80, 165, 213, 79, 132, 247, 161, 232, 186, 88, 225, 162, 26, 177, 105, 74, 124, 83, 37, 89, 75, 100, 80, 142, 110, 20, 226, 17, 48, 109, 241, 30, 107, 226, 108, 51, 184, 56, 206, 176, 213, 32, 253, 165, 3, 49, 70, 204, 24, 177, 66, 236, 107, 169, 222, 166, 113, 97, 125, 9, 89, 219, 77, 137, 139, 31, 135, 211, 71, 17, 134, 134, 229, 99, 170, 253, 190, 90, 104, 242, 219, 215, 152, 195, 180, 232, 35, 34, 79, 201, 31, 125, 7, 104, 179, 214, 38, 14, 47, 24, 13, 184, 61, 109, 56, 5, 97, 6, 43, 83, 101, 104, 220, 251, 45, 66, 106, 18, 28, 201, 101, 178, 122, 140, 247, 200, 170, 82, 108, 156, 248, 107, 239, 210, 4, 189, 204, 143, 138, 244, 139, 66, 50, 90, 29, 23, 126, 112, 88, 46, 0, 38, 199, 39, 218, 103, 31, 247, 197, 0, 254, 119, 160, 90, 100, 162, 39, 72, 218, 196, 29, 229, 79, 85, 13, 129, 183, 125, 218, 25, 55, 92, 40, 239, 229, 168, 166, 159, 189, 218, 74, 127, 216, 48, 92, 246, 132, 231, 31, 203, 3, 206, 17, 112, 243, 166, 129, 166, 77, 235, 114, 28, 110, 47, 96, 197, 0, 119, 117, 216, 24, 168, 67, 118, 97, 111, 18, 240, 227, 38, 179, 121, 72, 98, 177, 50, 101, 64, 215, 16, 94, 96, 160, 156, 197, 182, 234, 97, 79, 241, 252, 63, 62, 209, 128, 74, 108, 217, 102, 113, 53, 125, 245, 125, 3, 175, 45, 138, 68, 49, 178, 136, 82, 31, 120, 17, 138, 148, 188, 191, 56, 19, 99, 130, 90, 216, 87, 23, 66, 203, 148, 8, 194, 126, 147, 215, 20, 193, 15, 95, 25, 179, 212, 173, 8, 48, 16, 228, 47, 139, 19, 11, 26, 73, 110, 213, 76, 208, 198>>}}.
|
||||
{{encoded, "4uXguMJp8CxbqZGpQz2Xi7ESBk1muUMT4Uksn2mnUajx77W9oNxGz8gKT83yrGnWm2mbecE9UDEo3EgXjCj7TcogkE1jRzwMvqgMmss9E5VkfuexztSKDtUyVYKNb75BYQt4Cxk8T8Lk4DCv57452QTAtxXVe2W7AzBWp1XaL9oSE7yWa5"},
|
||||
{decoded, <<113, 161, 111, 208, 31, 200, 181, 56, 185, 141, 32, 147, 116, 23, 221, 119, 135, 235, 210, 94, 118, 240, 61, 72, 7, 203, 34, 12, 74, 57, 90, 199, 148, 120, 35, 200, 170, 87, 204, 201, 217, 244, 204, 88, 25, 132, 77, 189, 196, 160, 194, 142, 164, 204, 1, 142, 226, 41, 252, 11, 80, 186, 244, 129, 216, 130, 91, 32, 231, 225, 140, 253, 177, 76, 237, 119, 209, 166, 65, 60, 193, 123, 26, 66, 195, 203, 51, 51, 123, 2, 131, 51, 126, 211, 87, 79, 57, 57, 77, 113, 140, 133, 94, 35, 79, 110, 41, 95, 57, 156, 42, 210, 226, 24, 71, 214, 202, 106, 104, 130, 245, 148, 55, 83, 108, 7, 12, 96, 238, 18>>}}.
|
||||
{{encoded, "2QeXynqwTq3Zqwvpjm9wgBnzUgLt1qfmxFQQG6a8Nffi4sCaNZGAXGV9RU1sRbyBUx8ipqmPZ9y9MT85zbysnx46eYeZ3x6NGTmLVfxSGBwrAEUTd9eNLyZb1RJy4MttUnNUeBzr2CmoQDy24wxSSYBKNEknWWuG53BMKHJoBc19ucgJ8hLbRmAhh1ENMb8YftAAufQo2cAX7TFDS1RpXDpLLiuW15zv1RDWDANzsG1xCw3ZtaKGsRen2cjagwNYVQpMucjDJhDXXrxCoBM92pY3nbBxWHJFXLWzFXhSmZ9SCwBXsbezCsA9mvDoMj9ZTywawaSvbSymKKZEDJ73F3CRp63ERpH8rzEMBGMgoZPtPaUA1K7kufedN2BaSfd7pj45M6Gh7S8keyL6bjsZHcLTpYjsWzwmwSAyxXP3BjUvjnLcEKaqkNPf2srT32CeRDF4iY32N6QPeYmJS9eTE4q7TWh8Sqd3LrYeeo8jCc38ehNktjHPPyJwcKc6M8ptEF4Rm8dPpS14kroSY7xMD4wLTJGM215WT88zdyBQ9LLSuhMzfacEmEDqqMtPTu9BFGttgdqudoruvuF6EUk449B4iy8tCShxZP8oRcfamRe59pTGs6H5WJRZxDPAqibWNiY1VHuEN2tn65ozD3wLMktLwB93yvy8Teqb4NXukck7c9DFigQtzQcD1H1Nw9Nahb7Hd594m18QoQzW3oCPXMreAa6B7XBF15mB6xsSE1oSfPLY8Y8YbSyQjdu3CWWKzLZAC6yZUojL4kP8RdGFnvFptKpX5wZsTEu3b8Fc5u2Q8Vtk7TRpyFarAm7hETdES8MfFefWn62pMETaiH4twMuGqANkKRLdzKa7KiytiBnViPujpbePttr6iBnQJmiy3DiNmkYdduP6QxAFRoLrt95XGXM8qcSaDpXwJYJ2zgWk4xQGFyj5fanzYMBSqEQQcrHzoUXnbGpMmj1NDF3uVHFpH5GemMJ"},
|
||||
{decoded, <<237, 244, 11, 52, 236, 54, 230, 103, 155, 122, 70, 190, 130, 211, 17, 153, 220, 243, 158, 115, 5, 253, 4, 125, 235, 15, 75, 210, 124, 122, 133, 9, 77, 98, 206, 99, 56, 231, 33, 254, 174, 164, 43, 172, 246, 239, 247, 71, 117, 218, 85, 94, 231, 243, 155, 103, 192, 157, 11, 103, 114, 72, 62, 228, 173, 205, 121, 168, 177, 238, 221, 62, 237, 203, 251, 105, 190, 68, 174, 106, 231, 78, 38, 221, 209, 211, 4, 172, 219, 155, 156, 204, 44, 6, 78, 159, 177, 140, 208, 223, 60, 74, 243, 12, 240, 211, 64, 50, 81, 218, 239, 149, 249, 127, 99, 59, 179, 109, 164, 56, 34, 58, 75, 82, 215, 130, 253, 35, 32, 158, 189, 15, 14, 60, 180, 165, 245, 39, 239, 95, 159, 69, 156, 235, 12, 28, 241, 84, 41, 221, 194, 126, 164, 37, 209, 67, 198, 66, 203, 106, 226, 204, 73, 232, 176, 24, 251, 77, 120, 109, 62, 112, 222, 60, 213, 136, 182, 167, 75, 48, 134, 26, 147, 177, 140, 229, 18, 67, 31, 176, 139, 225, 25, 236, 19, 165, 66, 23, 191, 36, 246, 23, 18, 86, 235, 137, 244, 217, 207, 11, 2, 220, 181, 55, 54, 55, 1, 135, 198, 10, 206, 54, 31, 251, 95, 232, 223, 120, 57, 191, 82, 13, 78, 116, 153, 216, 74, 165, 173, 95, 233, 142, 5, 41, 200, 163, 174, 191, 233, 72, 42, 219, 63, 178, 24, 236, 252, 73, 153, 246, 179, 41, 90, 88, 193, 76, 254, 61, 225, 149, 241, 212, 6, 87, 86, 104, 12, 123, 169, 188, 85, 255, 73, 158, 118, 64, 143, 5, 218, 71, 188, 207, 90, 229, 253, 233, 49, 182, 42, 234, 147, 190, 155, 156, 120, 87, 79, 247, 91, 73, 3, 220, 249, 224, 56, 80, 229, 125, 178, 132, 119, 51, 66, 223, 149, 135, 149, 38, 172, 229, 13, 104, 157, 210, 110, 185, 6, 19, 99, 147, 225, 215, 240, 25, 209, 81, 249, 42, 132, 4, 147, 80, 11, 70, 30, 104, 46, 109, 177, 126, 30, 213, 186, 68, 78, 211, 104, 119, 246, 166, 140, 5, 40, 13, 169, 199, 28, 11, 130, 132, 164, 165, 96, 201, 137, 43, 76, 20, 169, 90, 50, 79, 22, 142, 236, 116, 213, 158, 194, 19, 78, 214, 185, 51, 117, 55, 4, 215, 210, 177, 29, 178, 99, 50, 203, 211, 207, 53, 149, 203, 190, 252, 18, 31, 186, 251, 59, 26, 108, 163, 209, 81, 138, 109, 85, 124, 248, 170, 32, 203, 235, 8, 164, 105, 85, 57, 158, 104, 24, 178, 208, 178, 218, 21, 132, 136, 251, 212, 149, 223, 139, 76, 172, 195, 190, 218, 174, 231, 195, 125, 138, 51, 26, 13, 222, 189, 68, 6, 202, 212, 115, 34, 4, 153, 192, 86, 218, 128, 122, 67, 4, 189, 72, 74, 158, 73, 134, 169, 247, 200, 33, 99, 156, 154, 0, 238, 33, 242, 250, 76, 10, 79, 160, 18, 137, 135, 200, 250, 74, 9, 246, 133, 76, 197, 130, 232, 204, 58, 215, 181, 115, 200, 40, 247, 129, 102, 190, 150, 238, 228, 236, 178, 97, 15, 104, 252, 241, 24, 201, 35, 121, 22, 239, 20, 10, 207, 106, 119, 205, 20, 236, 3, 224, 148, 80, 43, 240, 129, 34, 77, 131, 65, 239, 53, 76, 94, 67, 206, 120, 4, 251, 80, 162, 87, 145, 211, 101, 66, 80, 253, 14, 19, 214, 177, 96, 232, 166, 30, 1, 141, 204, 195, 91, 230, 4, 247, 152, 17, 77, 247, 197, 66, 198, 14, 38, 74, 242, 180, 223, 30, 9, 191, 207, 153, 150, 46, 175, 146, 75, 72, 25, 121, 93, 50, 119, 80, 183, 167, 87, 134, 126, 180, 138, 141, 56, 70, 71, 241, 219, 95, 50, 75, 208, 240, 75, 148, 24, 250, 158, 62, 44, 223, 46, 52, 160, 214, 39, 200, 217, 223, 113, 47, 217, 51, 239, 90, 231, 76, 63, 128, 139, 194, 194, 36, 85, 223, 28, 254, 133, 183, 248, 181, 209, 11, 82, 232, 198, 87, 234, 51, 142, 160, 229, 166, 88, 21, 86, 21, 122, 185, 167, 55, 44, 251, 93, 35, 231, 68, 127, 0, 27, 244, 63, 248, 129>>}}.
|
||||
{{encoded, "3xbyxWh2MPpfNuScxtJy6roGrmogoK4AknJ9DheLYkJHB9Sg8XNkG946LBFgcxRR9yrcJjZ4BMoVWjc3UtxbZWQtxePKHKRenxJoQ7t5USdo3HMkeHbR9oK9oLM7rCTRCkrjueQXFThXwNWXSUCbzd7ahATNdJvxXpork5kpzEdryFeDZW199btF3Hb1WYDCSgqDsiKoiK73D3oFyT4uiC1pdQaWAHEaTvHF2pcYdi7FtxtKMnu6ko9iRpNvkjTNa3tGmCbNBimN7cj87NMPGqjAbaC9vnhmehtJQQpALuy2vN321MZRtSbrSgLJm8mCsq79B8Qp3pXZdyWH8vuWNYEDRSppEQFJxyHziVTAQfUypQE29LLkeMvkbnjPbYrVM5VXiWfQwrkaihYUTttaa3docDuzbS3kzBUC7pzSfsbqGnfYGD68gyr4uLLN6zkvD258T8yhoUb8DJi79ocLeHmFHgHnNsuSoob8UjEZHDz8SKfJQXenwPSqEsu5NtuP9C7nmXDdw5NPnxF4raNV1oQ78ULmb8BkMYqU4eZL8qU8WVuVm5r6qmtKwHbVd2MjuivbHTYKfQXUPCan2pyBYBtzb3DE2wTzk5f22xUi6GtPwG9LDanAsa4HwLF43qDv48VuLNCfRqfphneu6TtCzQLzvw5y68aVG3bi8FP3Kcikm5kfWM9k8o4xNTFpJELhNR2rKBPR9SfTHG6QEzjjtLaujzmPVjSjaHuzVR5A36TczsxTaSmtZcMnmto5X6PV23CaXmYLmwRufXeCs3MogMh8xG1JbrvT7qnEycsBCHCTAiJrxxk7hefjybM72ToTDSCVD3oBWpJ3npL8hMht4kZVg1q9NzfrWG2AkkYZgRrvajCTUNs7ZgnBGWBSsbC5BsV4AM8a2oRg8Q8SrVmMvtNhVXwQf1GbSpAdjCnEnDUQE23pycXkTfNcARrRGRAi36eoaKAsqQdQLcGucnNfqUfjPiXijnaRWUbEnfZUfvDxBFyLwHFhMgL8xcJFCGmHLo8z9t47tjcdEyHRMWEV3GNsoYNDZALmQyLAVrVy6yrwFU9AeETfxDJ4bamnpeLBh4FyfuSB2k2TTxtbeCWVEy1HC42xwJE2AiRSJ2nMG9s6u5w4qUR6uYsDHxw2cZVY6oh9eURZ4MnJQixDRjgu"},
|
||||
{decoded, <<38, 86, 123, 107, 102, 52, 157, 57, 254, 219, 87, 86, 99, 193, 221, 118, 76, 134, 180, 14, 162, 239, 253, 124, 245, 207, 5, 143, 221, 209, 10, 233, 92, 157, 195, 11, 83, 6, 57, 234, 32, 1, 78, 139, 29, 20, 111, 239, 90, 215, 93, 29, 82, 231, 151, 235, 122, 41, 32, 190, 146, 197, 157, 220, 246, 212, 234, 84, 37, 87, 74, 2, 198, 147, 229, 125, 102, 166, 212, 252, 251, 223, 184, 167, 129, 183, 144, 190, 80, 89, 116, 15, 43, 68, 131, 195, 175, 10, 77, 183, 253, 240, 8, 0, 193, 78, 212, 226, 13, 58, 200, 63, 80, 93, 57, 109, 52, 188, 151, 196, 8, 19, 123, 8, 111, 171, 116, 181, 80, 133, 98, 169, 53, 81, 244, 43, 111, 128, 254, 27, 182, 205, 20, 125, 181, 56, 57, 219, 80, 22, 104, 217, 105, 179, 145, 60, 59, 203, 177, 242, 27, 50, 15, 47, 154, 185, 75, 94, 238, 94, 39, 107, 190, 60, 5, 72, 226, 4, 40, 212, 112, 243, 109, 7, 87, 48, 106, 169, 2, 211, 244, 131, 116, 4, 163, 205, 170, 58, 220, 175, 121, 204, 124, 105, 151, 200, 147, 180, 74, 15, 3, 23, 218, 0, 208, 56, 126, 81, 129, 101, 107, 21, 36, 164, 216, 214, 162, 71, 169, 226, 73, 175, 229, 125, 123, 227, 160, 100, 125, 41, 252, 246, 73, 246, 180, 112, 96, 194, 128, 181, 193, 219, 255, 250, 36, 236, 155, 86, 194, 174, 52, 206, 126, 71, 117, 9, 57, 235, 166, 170, 231, 102, 211, 158, 162, 156, 138, 68, 218, 201, 62, 172, 162, 102, 153, 51, 218, 81, 7, 188, 165, 242, 165, 117, 21, 230, 248, 219, 223, 204, 42, 78, 39, 98, 30, 14, 218, 66, 78, 196, 1, 178, 224, 180, 193, 248, 200, 58, 0, 35, 154, 48, 238, 76, 3, 138, 77, 39, 220, 153, 197, 68, 150, 182, 53, 92, 108, 106, 121, 143, 214, 225, 31, 4, 210, 36, 10, 6, 138, 55, 86, 158, 238, 91, 168, 64, 228, 150, 134, 35, 47, 246, 18, 29, 49, 30, 157, 144, 68, 136, 56, 45, 234, 62, 8, 95, 162, 59, 234, 181, 204, 95, 74, 143, 43, 131, 142, 41, 114, 181, 227, 244, 111, 164, 181, 155, 38, 196, 191, 3, 219, 59, 198, 61, 168, 194, 91, 133, 53, 7, 187, 249, 106, 218, 53, 2, 154, 253, 139, 82, 35, 190, 127, 126, 183, 19, 153, 227, 47, 177, 31, 43, 124, 71, 250, 95, 64, 160, 236, 164, 150, 187, 32, 87, 78, 250, 120, 70, 162, 46, 130, 39, 241, 90, 211, 197, 189, 22, 124, 85, 74, 111, 148, 190, 143, 174, 229, 64, 188, 108, 199, 56, 234, 215, 104, 93, 68, 139, 112, 83, 95, 226, 141, 64, 73, 126, 135, 118, 121, 191, 57, 147, 143, 50, 2, 224, 55, 223, 86, 239, 219, 144, 58, 234, 164, 185, 189, 18, 133, 125, 11, 54, 182, 187, 2, 101, 185, 1, 4, 223, 167, 97, 149, 210, 11, 49, 8, 10, 215, 79, 205, 83, 41, 113, 66, 248, 34, 98, 84, 76, 50, 128, 42, 113, 250, 14, 179, 163, 248, 191, 136, 224, 251, 87, 42, 127, 189, 111, 206, 210, 181, 50, 60, 247, 107, 5, 85, 250, 189, 218, 162, 42, 124, 241, 51, 189, 3, 141, 33, 86, 130, 156, 52, 172, 163, 191, 129, 39, 142, 153, 168, 122, 190, 242, 23, 213, 146, 13, 105, 201, 65, 2, 121, 217, 195, 111, 79, 179, 182, 168, 168, 63, 80, 28, 110, 203, 166, 92, 69, 144, 20, 178, 80, 52, 210, 92, 71, 94, 180, 124, 242, 95, 136, 82, 90, 68, 14, 183, 39, 248, 90, 180, 118, 41, 219, 150, 152, 37, 176, 4, 170, 3, 208, 39, 148, 15, 221, 70, 250, 243, 210, 38, 63, 112, 181, 175, 26, 46, 49, 230, 160, 251, 200, 155, 185, 74, 147, 230, 167, 47, 207, 37, 186, 131, 199, 241, 16, 137, 232, 191, 249, 231, 130, 105, 25, 244, 113, 119, 167, 206, 129, 185, 97, 82, 226, 245, 57, 110, 97, 209, 26, 196, 6, 151, 71, 196, 65, 26, 160, 149, 5, 24, 155, 142, 26, 42, 161, 117, 144, 83, 122, 188, 202, 242, 227, 89, 14, 236, 95, 175, 139, 149, 69, 24, 169, 100, 171, 158, 78, 246, 55, 17, 15, 210, 16, 248, 148, 23, 212, 113, 83, 99, 162, 222, 117, 217, 167, 102, 186, 222, 229, 45, 183, 24, 65, 169, 255, 86, 80, 220, 154, 221, 158, 106, 156, 112, 195, 72, 30, 59, 150, 231, 231, 146, 82, 199, 127, 36, 6, 157, 46, 141, 38, 197, 28, 177, 41, 73, 202, 97, 66, 99, 191, 187, 4, 226, 161, 192, 37, 0, 211, 192, 94, 117, 176, 140, 44, 147, 28, 86, 137, 147, 199, 111, 176, 107, 238, 11, 109, 128, 107, 177, 101, 166, 170, 59, 193, 30, 233, 5, 13, 128, 75, 74, 122, 184, 99, 146>>}}.
|
||||
{{encoded, "3dx2cBWSLbuY7GwkfoJCm88VpXaYoX7aNcYYMcwXQcbbSnE8ovVRabKFCwN6u37bbQU25xgWARkMSYNa6a2p6Um61xcuoXbuKhNNiiEixaKiuZCkWPgYAyMpoUvrTA1um7kYXCMUmgcLfyM4nRVvMukVXJDY77WHB3vXjATbZ5A5zgMcLUHo5XyNypn3881tLe7R1AM4uK6VsXNrxr3khwer8P3CXwrz4AchwUxZBn1sSTQw7fc2Vcw2V965CSXv3ivc7TRYdeH9H5yhXFEbinGg22hw9taYsaCJw4cn5hEnYaeoY4VSp5esvQsGMuurjX4t18q4tFMCABcvhApXJjAbvJVcy657UVdteCMXC2Bh7PVnQs4D5gyxSGX5UEe3MpbEYRxVTqaLNj1yQAFPZ8yExdFZtetFuaYjBWsuLmVW7bxQ4pfGdWB8NuD3rWM5ZigprZLUbE1H1gdLHffdXKPm6R2apQpGim7jW1zt67kPT6CvbLhNhc1eYwfEyDrfK9Sp14gBtkyBf99RGxC1oFCjosGyRNc27JBFcnswe3hihEAqe1CGgfr5pTZ2CAg3u4vkDjZN26LRKk8An1Mnz6qtVqVx12oy2YDWT9GFkyyfr1hnwvLGgMrsHN7qi2j3MSXXQ36Tn6XNMxEbw8rjmouUMwStjredKDqVBPkeVD1J4UUoUqKzAvZHLtqv7axqn87kb9WixzpJDWpg2vbkv5t6ZJGfSUAyKVzaNnPYz5Hrh9J6BRpizks3vULXpMjiRrynzPpWYFxJrbHzt7Bjj4aCiUx2WXJqfV2ZBWKfPc7GU2S4P3C6gq8LDuujr5hWMQ7q6rg6kYzvYA6jdsQV6wzufqaSQrPHRKuxDbv4jtjLeRM3"},
|
||||
{decoded, <<94, 161, 39, 156, 254, 156, 128, 103, 54, 64, 115, 122, 10, 208, 182, 200, 74, 59, 65, 202, 23, 69, 46, 108, 193, 67, 76, 148, 5, 108, 241, 26, 82, 124, 237, 134, 184, 194, 44, 93, 170, 70, 200, 41, 79, 74, 94, 71, 189, 36, 185, 169, 95, 177, 234, 121, 104, 201, 71, 85, 152, 245, 216, 34, 247, 7, 32, 16, 42, 134, 79, 249, 173, 69, 195, 172, 64, 187, 55, 229, 184, 100, 163, 43, 0, 5, 102, 1, 223, 82, 169, 247, 250, 144, 247, 158, 172, 197, 203, 170, 58, 57, 60, 103, 130, 208, 221, 127, 156, 105, 73, 51, 239, 45, 155, 83, 166, 232, 56, 39, 233, 142, 244, 11, 93, 108, 27, 255, 205, 53, 173, 100, 237, 113, 51, 213, 59, 165, 43, 16, 132, 157, 97, 182, 62, 169, 131, 122, 68, 83, 135, 198, 172, 48, 61, 119, 216, 155, 166, 49, 65, 198, 70, 8, 48, 123, 145, 119, 151, 106, 90, 94, 245, 1, 18, 142, 117, 46, 126, 38, 103, 36, 45, 171, 113, 75, 140, 70, 93, 77, 241, 46, 129, 133, 189, 127, 120, 46, 90, 106, 146, 64, 162, 69, 156, 177, 40, 11, 151, 153, 62, 114, 18, 86, 61, 57, 165, 63, 109, 111, 157, 51, 192, 244, 127, 100, 101, 72, 54, 151, 141, 40, 45, 195, 237, 214, 180, 146, 163, 45, 19, 102, 179, 116, 57, 151, 249, 4, 181, 29, 149, 95, 219, 110, 238, 142, 193, 25, 186, 88, 176, 134, 23, 185, 13, 100, 73, 60, 162, 234, 136, 43, 54, 149, 194, 229, 47, 108, 237, 136, 200, 184, 9, 49, 16, 31, 111, 199, 69, 208, 187, 39, 217, 96, 225, 65, 177, 136, 68, 245, 87, 113, 250, 69, 152, 125, 23, 66, 241, 209, 136, 164, 201, 50, 122, 194, 179, 244, 174, 130, 83, 160, 252, 175, 199, 248, 44, 97, 199, 174, 188, 149, 176, 228, 213, 152, 83, 174, 10, 148, 21, 14, 111, 9, 248, 166, 216, 241, 165, 189, 102, 73, 161, 171, 37, 203, 18, 247, 180, 125, 101, 12, 19, 50, 209, 176, 237, 24, 183, 120, 10, 170, 24, 171, 30, 25, 174, 71, 211, 9, 155, 152, 22, 88, 68, 157, 72, 234, 199, 76, 75, 207, 183, 100, 32, 238, 165, 35, 221, 177, 128, 134, 164, 238, 229, 196, 159, 110, 9, 217, 70, 96, 49, 178, 82, 187, 110, 149, 163, 35, 5, 70, 69, 182, 237, 217, 244, 173, 236, 87, 213, 206, 198, 116, 31, 194, 53, 48, 49, 128, 251, 187, 41, 156, 80, 114, 161, 254, 235, 8, 57, 1, 148, 190, 114, 124, 3, 41, 110, 154, 228, 89, 0, 126, 225, 151, 171, 149, 169, 69, 253, 164, 94, 139, 97, 198, 64, 166, 86, 50, 147, 73, 104, 211, 45, 15, 113, 224, 204, 211, 39, 215, 27, 72, 61, 60, 43, 77, 147, 180, 8, 232, 107, 231, 62, 245, 8, 208, 37, 235, 1, 75, 233, 168, 113, 83, 170, 6, 22, 100, 150, 194, 142, 156, 175, 136, 238, 128, 34, 101, 39, 60, 115, 78, 1, 143, 110, 103, 24, 173, 42, 247, 96, 65, 151, 202, 168, 149, 108, 101, 9, 98, 25, 160, 197, 200, 188, 139, 17, 147, 134, 45, 170, 64, 19, 12, 227, 60, 223, 226, 226, 226, 116, 74, 240, 74, 126, 173, 68, 144, 39, 34, 110, 187, 152, 42, 41, 112, 76, 233, 49, 97, 28, 43, 170, 13, 57, 205, 145, 82, 20, 12, 130, 71, 239, 131, 147, 10, 194, 191, 166, 169, 226, 240, 251, 204, 130, 26, 165, 241, 215, 87, 48, 24, 211, 83, 27, 74, 110, 184, 202, 39, 123, 48, 81, 64, 9, 137, 204, 229, 236, 132, 224, 226>>}}.
|
||||
{{encoded, "42x4SioEV2j2kDsYZLNjeHKzZ5eLzZkCQ6y2ycRvivsVJELZfofkifCApjQZDtYBZCn7joYkkV1vpcbGkzZbxmXzMy8ZR7GkzCw3HG3W8KHZZnhQYDp1wxxQVkZjfrzcNmgqPtLgaio3GFts2W6ptn42yzUkJEFXX6ZFxcvthsYxjGifsP9y77dcvd7QTZSfaFmSknaDrMsMLexvGkhHbimszeEgkVLbceDKM7Aj9RaoaHY3dCC4Q656rftJLGSwdXxGTfzbPY7jmfTT7YZruiXY8tguP8LGJPnMMx2boi"},
|
||||
{decoded, <<42, 218, 223, 28, 111, 85, 125, 212, 210, 212, 148, 74, 113, 122, 107, 35, 13, 17, 80, 242, 36, 78, 101, 217, 192, 73, 199, 64, 115, 45, 183, 140, 96, 117, 131, 40, 6, 157, 86, 239, 204, 56, 250, 139, 121, 15, 191, 130, 22, 12, 12, 206, 214, 57, 217, 246, 20, 15, 236, 218, 179, 239, 174, 148, 211, 196, 38, 150, 136, 181, 169, 89, 81, 175, 70, 5, 237, 195, 115, 220, 153, 162, 252, 2, 64, 40, 145, 34, 76, 41, 90, 13, 215, 41, 129, 239, 152, 47, 162, 162, 55, 53, 73, 144, 251, 244, 138, 226, 154, 226, 98, 207, 169, 172, 76, 110, 33, 106, 21, 1, 100, 17, 181, 178, 123, 61, 133, 93, 13, 144, 54, 207, 131, 69, 14, 45, 216, 151, 187, 190, 110, 125, 234, 69, 210, 249, 223, 252, 129, 225, 172, 86, 59, 150, 110, 33, 38, 8, 187, 117, 61, 76, 25, 122, 160, 109, 21, 79, 111, 11, 52, 160, 40, 219, 223, 107, 218, 241, 209, 138, 128, 234, 79, 45, 231, 23, 45, 119, 212, 176, 144, 208, 140, 94, 169, 4, 186, 59, 189, 24, 20, 45, 46, 218, 148, 171, 175, 171, 55, 95, 90, 141, 4, 139, 92, 64, 75, 245>>}}.
|
||||
{{encoded, "GTEinCpHhGt6vP1fCs4vLtdNVka6h6ZcQTYNt9Z4y1Y4bH3WPbutzKnv1ij4nERv5b2RLGJVW8NNCx8Sck56EUcyq8ZzBYnRizMQYAn4gTeS49D5AK3cvgVyZeW8FVCZxZHxfPinA8hYkAC4Dhpubp53X8CTnLbu7yvsDPoKsXAWfHdA4MYnXVGXVJMz48ePEnDgE9Qr7UrJsaADSmqfZ7upu7M6j4YsVJ1g6fP"},
|
||||
{decoded, <<155, 255, 124, 104, 81, 26, 118, 32, 61, 232, 119, 177, 95, 152, 82, 229, 189, 32, 122, 179, 65, 210, 217, 94, 224, 203, 177, 90, 157, 27, 120, 183, 179, 149, 0, 58, 154, 228, 6, 212, 183, 211, 200, 176, 236, 83, 154, 144, 120, 103, 230, 115, 12, 233, 91, 40, 53, 107, 16, 192, 46, 13, 10, 234, 20, 31, 155, 127, 166, 222, 162, 176, 79, 254, 121, 30, 234, 197, 205, 92, 180, 194, 176, 31, 18, 233, 13, 222, 25, 71, 126, 21, 145, 37, 38, 100, 145, 137, 25, 181, 160, 130, 97, 123, 56, 213, 73, 14, 214, 161, 104, 82, 167, 243, 172, 35, 34, 216, 27, 185, 204, 164, 45, 109, 225, 236, 137, 86, 78, 131, 194, 140, 34, 235, 29, 179, 207, 6, 222, 180, 241, 197, 72, 128, 148, 5, 250, 102, 55, 171, 11, 67, 213, 128, 221, 75, 32, 149, 180, 137, 105, 227, 219, 51, 41, 243, 101, 143, 30>>}}.
|
||||
{{encoded, "QgTEVGc9FqdMMM7GUdQefkrjoo9dSun3vNWHJxry6u3fNfaZD1GfbTXF9JXJqMYPEWjNKAabw9xB7iv5XrCgRDLGRMkvDNLPMXavYZoRojSFN2tbJWv232mfgppDmfVdS5mJ7thwf8FFAsTpV1QHCMCYm5zUEfMXVczbzBPj8MUGHUHMvJZA6w8CQxniQgYbS1qBXYDjLDpd1pUsmMqMykTHD2LzQt7vE9pPaEpcdG72iakL4CsmS33azBLGaz8rFHfESG84mvqwr99ttn8zLTtfdPE1dmmCgDAiJLEWoxMy6cpuVpLCYEvd6cxaQ1Qcb8HRQGEGwJaC82jZMsbbqTmbKtZGcyrSQmhEXU34oc8qcAZTm5SsJZcHffXzyKME9HrDsQrA3XQt7qXBtcg3VarVMu8jPRvyLtYBfZcFhMvYgaVu5oTiZgX2MMKaEu9jBVUfNYsBwCnETtgBUvc6MKKYFPMfeY6cwGGB9697FzfytSikdRpPN8RETk5bYiZ4zjXj5xfZigYdy7hvon5DivdARh7AqEAKrMMzhKsvrPDyavVfhPTfzQKBGx972ngtEasEzNdytmytQhEfvLXQMk9pMhfHTSe1tW4KmaT15ZmU9qPFrPHdck1nZUuWYUCwqgcjCjFrgjtWdHhHD9JZbpF6zNL9FdXoJ2uffpN6jNQLaAUHs1HTqX91dCVXFrK5pEzGQiY5s4y7NoadP8tL"},
|
||||
{decoded, <<236, 135, 68, 173, 161, 19, 141, 78, 42, 103, 165, 109, 234, 33, 82, 23, 61, 240, 73, 160, 143, 160, 75, 148, 136, 23, 161, 104, 187, 194, 28, 202, 49, 83, 121, 100, 241, 77, 127, 152, 140, 10, 252, 6, 212, 148, 18, 192, 246, 135, 12, 174, 39, 143, 106, 232, 128, 152, 78, 167, 56, 113, 29, 142, 217, 47, 91, 141, 215, 195, 136, 48, 28, 201, 149, 226, 3, 118, 227, 14, 244, 182, 206, 169, 7, 58, 105, 142, 63, 125, 42, 231, 35, 109, 160, 190, 193, 61, 58, 197, 193, 141, 112, 32, 51, 54, 233, 248, 19, 20, 186, 235, 14, 173, 125, 243, 144, 160, 96, 57, 247, 111, 50, 17, 243, 4, 10, 253, 190, 198, 159, 104, 135, 99, 73, 243, 183, 161, 165, 27, 139, 5, 49, 39, 254, 96, 183, 52, 165, 164, 59, 112, 10, 169, 83, 223, 182, 233, 70, 176, 162, 192, 131, 243, 35, 17, 10, 53, 148, 42, 165, 70, 251, 215, 107, 72, 72, 168, 151, 58, 70, 226, 112, 54, 113, 66, 99, 205, 220, 209, 144, 143, 161, 183, 81, 158, 154, 54, 161, 173, 194, 197, 88, 95, 73, 200, 60, 0, 210, 42, 178, 86, 130, 111, 160, 165, 58, 219, 107, 163, 98, 86, 140, 235, 228, 156, 12, 180, 53, 232, 247, 141, 22, 71, 218, 120, 128, 189, 152, 21, 5, 114, 64, 50, 194, 238, 50, 109, 3, 121, 119, 87, 8, 212, 66, 119, 214, 250, 180, 88, 230, 151, 138, 149, 38, 35, 240, 150, 99, 20, 197, 145, 32, 91, 108, 106, 82, 130, 15, 224, 134, 118, 168, 130, 123, 187, 231, 32, 186, 35, 95, 184, 65, 56, 28, 243, 196, 249, 160, 85, 41, 37, 97, 142, 71, 83, 248, 119, 121, 85, 88, 181, 33, 246, 70, 221, 226, 195, 191, 132, 54, 100, 21, 34, 147, 196, 226, 51, 136, 119, 224, 54, 67, 99, 83, 188, 143, 125, 18, 205, 50, 188, 105, 71, 241, 144, 211, 222, 37, 117, 120, 110, 37, 92, 250, 255, 210, 113, 12, 67, 157, 151, 50, 219, 6, 129, 153, 191, 34, 77, 23, 150, 72, 185, 24, 152, 241, 119, 239, 199, 195, 216, 0, 232, 222, 106, 35, 87, 141, 24, 45, 73, 49, 221, 15, 92, 83, 251, 80, 34, 22, 153, 153, 36, 238, 53, 115, 155, 95, 112, 187, 167, 82, 189, 43, 228, 32, 251, 41, 82, 75, 26, 214, 225, 152, 23, 92, 109, 76, 63, 50, 46, 49, 81, 76, 69, 54, 189, 253, 5, 46, 70, 195, 161, 243, 168, 166, 112, 71, 148, 173, 114, 245, 73, 192, 123, 209, 61, 133, 165, 39, 213, 192, 202, 66, 127, 55, 72, 101, 203, 244, 226, 120, 3, 51, 54, 205, 49, 83, 154, 103, 82, 74, 135, 187, 231, 197, 90, 106, 28, 238, 153, 30, 130, 87, 204, 101, 195, 107, 234, 157, 135, 161, 128, 114, 152, 149, 202, 249, 47, 77, 103, 194, 136, 110, 99, 45, 175, 156, 218, 242, 195, 37, 50, 112, 133, 49, 21, 148, 237>>}}.
|
||||
{{encoded, "75Pz8P8eETSNKkGq3srDdRegrSQWAXtW1uf2ZURap6bnJDJZkah37HxfETogk4gai2Hesev9zeSCxPATTgceiTx8oJ5jAV6mNUyUjR8ACiobuUVu7fo6EVWi3sj6divaMaN3KjwqWqHQbS3G9yBMvF4Abgfeg7MzwMZxmainWBHGXrxkSDCHrrmjjxfStAQpbSRfTuTrrcUXxaULNLW12zMgR2qSgFyJSykmTeGpBe7fAugCmB8YGv8nvbvyA8CHbbWV6WShFnyoEQWc7LhJa9XACAdkLLZT2ZKAK6kpMb81nV6BSKUXa8WL3eVQ5BWwdf34LFqL7W7uy9sQxpCnx57wQFvhWUnCMDznS3jmUhfjmDXuud4kGeSKa5h6TS9zjHMEm9YbkeQCnCHKf8v1bBEy6zwA6DDkqFduAcWQia3Rbj6AgKPw3R54"},
|
||||
{decoded, <<76, 119, 21, 60, 111, 30, 204, 112, 242, 32, 134, 112, 132, 234, 53, 140, 97, 0, 195, 152, 248, 6, 16, 215, 240, 240, 235, 231, 213, 253, 69, 22, 221, 122, 139, 192, 129, 86, 26, 82, 209, 128, 188, 174, 8, 135, 168, 86, 199, 178, 176, 44, 137, 108, 142, 38, 238, 243, 85, 111, 219, 187, 27, 50, 239, 27, 183, 233, 204, 87, 81, 2, 56, 189, 96, 117, 253, 8, 158, 154, 156, 198, 17, 170, 145, 164, 200, 52, 80, 126, 51, 86, 171, 184, 239, 154, 54, 151, 143, 182, 189, 209, 81, 5, 112, 250, 7, 52, 34, 134, 7, 231, 176, 83, 107, 171, 224, 146, 156, 156, 37, 85, 175, 132, 181, 112, 151, 153, 221, 65, 49, 231, 125, 132, 22, 6, 36, 181, 91, 216, 217, 87, 232, 15, 54, 127, 69, 229, 170, 68, 149, 137, 197, 34, 197, 66, 27, 57, 11, 152, 97, 210, 221, 52, 55, 213, 24, 144, 2, 33, 180, 183, 141, 101, 115, 43, 195, 104, 123, 127, 170, 21, 146, 8, 242, 157, 9, 163, 78, 40, 193, 123, 254, 10, 201, 171, 47, 166, 40, 155, 154, 9, 226, 25, 99, 238, 185, 170, 164, 97, 128, 234, 178, 46, 228, 211, 204, 224, 208, 214, 9, 144, 11, 141, 151, 45, 233, 32, 65, 135, 140, 122, 121, 220, 241, 141, 47, 69, 89, 135, 219, 239, 134, 43, 207, 64, 48, 161, 180, 175, 205, 170, 114, 103, 132, 255, 184, 182, 196, 104, 241, 60, 160, 191, 188, 5, 43, 157, 225, 60, 158, 37, 131, 245, 146, 186, 12, 216, 66, 22, 225, 145, 193, 164, 178, 152, 6, 158, 66, 5, 243, 6, 99, 87, 149, 12, 237, 7, 223, 30, 126, 173, 55, 237, 118, 81, 111, 139, 75, 207, 231, 19, 225, 23, 202, 67, 224, 221, 223, 175, 186, 187>>}}.
|
||||
{{encoded, "HFBqvvNxrSq97bGL2SvzjTuaPYmKAgNGQBepX7W8NTQt2Aso56M5XzBLReBegNc4BtfGYggFRuBFyqitWPth6LfgAEW8X4PD7jLp7AJBtUfqEQML7ihJhgnm8q5M6CajeqZ1fMJLiWVdTr35KReTxFQrTsdVfGwjZJZakazbwTKHwqwZrr9yEbAE6Yd3j3gP1v8jZj9o8etpNwCWKmYZUkWGraW868kvjEqD7BofoRCBLcekifRtpTAYNVueptuTYvptLT1BV4eAg1cyzuYjGueaG792zAKthpZn51DDPcLYw2VL7YpYdQX83v2ocx5hwphqeHsD4iqLrKUsgYrWrKYAmSNYB5MF4Zrajx4Q1c8M3nVzVLyDnTBLUc6vBzhUpzZPVfYQZaGFgbVtCFScx9gzv1NKrAUKKcjBAL22NiQudrsyAon6gWQhtjCQDxsfm1Se8tdayPj886kF83RSg2B64K1MjaiqsmCLiKUbo76WF41NDvQjw67H5DZgp22As3L3RWA5SgLRyhDGQ3HGHD3Bi4WiGSSZWNLVUTqg1kajEFS5pkbpqjzz5biNQjmwENWHKLna8t6WBmeW9pP1jQRaeTEomHkQLkaUk5sbETH1dxnV2R35NGsZGGQnTXygn8qXH1eH6izdF3sXPqFhpuv8CbbK4Kuq6cgg5E53s7Ak4LLVCr65Xj9BzxbT71oeVdntjVD1bcBnX6DEaAAkX5tzajk2izQsngae6bDxAtjYJfX1FeZHuXVLCvWyJhyAuxsDtt2MGp1Hctw6b17GPN93JXRXqFkUeutJhaqWTtJsX3qC1biVSf5weiHima9gpvAcYkh2nXcDXAp9bAyNryig5DDR1s9MpNj1zvpFA9Xqs3DXMaTxRi2pGLJ2xjhNUFLSX8jBtgZGQoXMwMcNFr5t4mwCDjCpbU4gMnwjuQDf9aE2DPiQdiXBxaseehhe6KMfauJSBuGoyQjqgcnKBV4BydeMhYjVrYXmzGtJp4cs19HguiztH9HYhiENr393TzccFuRWNajPCh2eAH1hcdBzSuG2JTo3MDceRxpAhVo5D3xYnSxm9iQSLYe86jVDfjXVb8QqSZY1vaU89nFjFfvfuHeU6dwL5ehf9dAUsCZyr56vzJaSDnas79eJ1b1i5eJN6pCdAntijEMnkGUMyv6kgz2XedZmcRBZw2s3AFhs1a48T4ZMbdzERc7XrYqf19V9GS3jExfbCLu7"},
|
||||
{decoded, <<146, 173, 44, 153, 203, 116, 187, 31, 64, 204, 164, 242, 129, 78, 147, 68, 190, 50, 51, 90, 1, 136, 189, 175, 142, 243, 36, 230, 39, 82, 6, 115, 109, 189, 173, 234, 205, 219, 43, 193, 13, 157, 14, 168, 122, 188, 19, 226, 140, 70, 72, 31, 57, 100, 180, 97, 114, 87, 80, 29, 20, 203, 126, 125, 145, 60, 155, 63, 141, 254, 195, 218, 165, 20, 160, 37, 210, 117, 249, 51, 123, 124, 250, 64, 91, 72, 133, 5, 97, 86, 53, 147, 1, 177, 207, 235, 211, 148, 172, 146, 202, 33, 201, 23, 63, 72, 44, 61, 136, 104, 171, 228, 225, 142, 5, 244, 68, 157, 148, 233, 141, 208, 8, 172, 180, 214, 123, 65, 238, 123, 100, 28, 108, 203, 81, 197, 180, 25, 159, 65, 127, 199, 246, 228, 7, 13, 183, 69, 234, 31, 209, 158, 61, 192, 181, 42, 103, 246, 197, 125, 99, 236, 243, 90, 45, 205, 126, 244, 229, 27, 235, 73, 33, 178, 64, 195, 172, 75, 150, 84, 120, 233, 117, 13, 109, 197, 220, 36, 13, 3, 109, 113, 159, 230, 78, 89, 112, 12, 97, 59, 122, 103, 193, 196, 188, 180, 73, 222, 72, 40, 79, 80, 67, 237, 210, 194, 34, 184, 179, 94, 10, 118, 239, 246, 39, 229, 76, 239, 192, 218, 94, 4, 155, 157, 114, 249, 52, 6, 40, 27, 99, 39, 123, 135, 116, 107, 192, 204, 131, 128, 234, 213, 252, 6, 32, 240, 24, 234, 223, 115, 68, 168, 121, 201, 51, 110, 113, 230, 131, 103, 63, 141, 162, 222, 44, 106, 242, 144, 85, 221, 221, 236, 10, 30, 69, 119, 32, 146, 52, 142, 218, 101, 202, 39, 185, 202, 24, 201, 111, 171, 43, 207, 202, 9, 75, 98, 57, 221, 47, 25, 185, 222, 99, 248, 176, 160, 31, 82, 253, 61, 170, 62, 200, 131, 184, 123, 79, 234, 24, 198, 243, 19, 135, 56, 13, 192, 99, 62, 108, 204, 40, 38, 2, 78, 158, 118, 93, 241, 251, 146, 115, 197, 55, 33, 114, 59, 41, 64, 185, 87, 177, 92, 105, 181, 164, 208, 38, 13, 211, 120, 121, 113, 239, 192, 242, 82, 207, 239, 105, 128, 164, 107, 171, 197, 73, 158, 147, 189, 112, 63, 180, 119, 31, 208, 245, 200, 91, 174, 35, 213, 227, 45, 30, 34, 134, 233, 191, 38, 78, 152, 22, 73, 92, 208, 39, 147, 71, 174, 191, 224, 97, 97, 121, 233, 80, 57, 27, 19, 155, 228, 228, 147, 21, 6, 49, 20, 81, 96, 155, 198, 129, 57, 232, 242, 22, 168, 231, 242, 48, 109, 116, 157, 94, 174, 191, 3, 16, 100, 228, 71, 68, 46, 39, 87, 132, 110, 62, 163, 217, 186, 82, 10, 155, 130, 82, 138, 191, 202, 125, 212, 4, 11, 214, 242, 167, 198, 225, 17, 234, 205, 86, 138, 225, 175, 180, 141, 255, 221, 143, 247, 208, 201, 193, 167, 251, 112, 148, 64, 42, 130, 84, 93, 41, 219, 32, 200, 222, 105, 53, 118, 84, 141, 112, 128, 242, 5, 107, 190, 82, 83, 200, 156, 180, 94, 79, 134, 179, 13, 5, 170, 82, 38, 98, 111, 125, 125, 198, 107, 214, 75, 222, 167, 198, 114, 146, 251, 118, 164, 226, 154, 244, 250, 14, 65, 190, 36, 172, 180, 69, 219, 31, 162, 158, 21, 111, 193, 10, 101, 61, 214, 200, 177, 70, 146, 240, 43, 131, 106, 24, 221, 59, 212, 39, 156, 52, 15, 62, 197, 6, 147, 59, 213, 250, 97, 215, 18, 35, 149, 99, 193, 200, 38, 32, 117, 170, 230, 35, 186, 47, 74, 78, 154, 136, 66, 18, 240, 247, 159, 161, 241, 179, 41, 137, 9, 230, 196, 215, 17, 159, 206, 20, 64, 67, 4, 198, 184, 118, 31, 252, 242, 25, 240, 33, 169, 125, 194, 179, 222, 191, 64, 111, 6, 199, 70, 236, 15, 160, 128, 232, 43, 83, 89, 167, 252, 225, 147, 108, 49, 185, 221, 7, 228, 90, 123, 135, 122, 61, 189, 2, 30, 244, 109, 32, 85, 17, 201, 47, 33, 239, 15, 109, 82, 92, 150, 66, 223, 232, 65, 64, 255, 113, 214, 160, 223, 43, 126, 68, 247, 3, 222, 203, 119, 158, 158, 168, 65, 252, 38, 62, 233, 74, 105, 128, 198, 17, 97, 182, 236, 100, 255, 76, 26, 61, 194, 176, 197, 55, 211, 11, 24, 74, 242, 160, 37, 113, 253, 195, 194, 133, 75, 10, 38, 183, 86, 171, 27, 73, 136, 195, 88, 202, 34, 112, 191, 207, 171, 199, 43, 71, 156, 72, 92, 210, 83, 209, 218, 183, 188, 79, 215, 196, 42, 213, 62, 254, 216, 130, 130, 200, 75, 129, 215, 122, 212, 196, 182, 236, 105, 148, 167, 211, 77, 139, 66, 210, 128, 197, 22, 102, 216, 240, 212, 55, 113, 138, 79, 39, 174, 100, 8, 114, 133, 168, 230, 169, 163, 147, 237, 31, 119, 81, 74, 77, 254, 253, 78, 222, 62, 224, 225, 207, 14, 80, 104, 21, 87, 123, 82, 213, 60, 117, 19, 129, 208, 141, 55, 133, 22, 181, 9, 166, 8, 46, 138, 104, 125, 31, 170, 147, 35, 217, 83, 78, 30, 46, 76, 247, 150, 147, 234, 8, 76, 89, 34, 113, 20, 154, 18, 242, 89, 81, 82>>}}.
|
||||
{{encoded, "4yuKvdFDXug7hq2CJ76ENm8EHYaNP3wZCpRCTZkCCsSQTmFbo52hzmciSZw54KoLZNtKzmMe8QHiN6WtctNYLkupvWwSsRqabAAAVNgrBdoPuJn9aswcf6qzmF2PQguUwGFRzcWvc4ZjTT67giBrbCutAUUji2MShrSX9xtnQLMYieMoUD7JvQPoLQHRXEcHp52A6taBaN8DXGVfDcpUsdHihexPwjT4Xrht4fJ9thMhH1Vi3eVhEW5jxvYLnCny1cKxbuqisBg92VkGTkkqNoE2wMRpkY5YDhVJ1KtM3iWjH1NZTtjaEqYyZtj6qVgwRetn9EYLVbnYec3875okJ2SnLBVxD7WFYAe9drxVoLHWTcM22ajrWbXh8jHnnPzuEmXK6xdXnqS4CFd8gg2DnrWyB8C4F3maNaGqNqC66aGCbLAYsMQaXFGgBd3oY1zR6GiP5xJkh9paBr9Cqh6GFDpEgdVEYWPz89oVDXcFrS5raYjGxrnq2eVeEd9Z3DiYEZsD7sC9AziUUDCxnTgF6abCdrAvRM7MXz5WjVjoACmvAaSAZvPjWCEDxC8TGZTRQXuBcfeufS6rcAcftpg9wvVWxmoux7MubNsRnYvxFUuNz4Y83LKLh4HqAUH1x84SvfMbHKyFPr4NE1dUg5WyV1gmf1tQaVxb5n35Ab"},
|
||||
{decoded, <<230, 32, 175, 57, 209, 94, 222, 96, 241, 232, 140, 4, 160, 39, 200, 242, 107, 51, 42, 50, 17, 57, 74, 8, 109, 16, 230, 220, 126, 154, 29, 177, 249, 51, 25, 231, 131, 255, 121, 240, 234, 187, 216, 58, 138, 190, 79, 46, 26, 228, 204, 149, 217, 85, 79, 201, 222, 6, 191, 47, 32, 75, 172, 251, 40, 56, 136, 228, 91, 73, 96, 121, 26, 123, 222, 204, 102, 26, 41, 105, 65, 220, 16, 39, 14, 48, 179, 230, 8, 64, 128, 226, 127, 242, 50, 88, 113, 135, 252, 194, 218, 201, 229, 194, 192, 31, 108, 126, 185, 56, 196, 188, 67, 44, 160, 24, 123, 18, 192, 247, 46, 130, 25, 15, 183, 17, 5, 205, 85, 131, 28, 82, 47, 81, 74, 42, 107, 146, 248, 147, 253, 42, 127, 196, 17, 116, 191, 74, 114, 74, 88, 241, 39, 2, 52, 177, 145, 9, 65, 36, 221, 197, 169, 115, 32, 97, 249, 215, 33, 96, 175, 151, 183, 53, 133, 161, 55, 151, 39, 234, 252, 231, 14, 184, 175, 190, 50, 173, 4, 42, 192, 128, 93, 241, 158, 180, 232, 136, 127, 103, 168, 109, 196, 125, 93, 34, 170, 112, 1, 14, 238, 185, 75, 194, 106, 217, 241, 33, 52, 9, 123, 241, 208, 51, 174, 205, 168, 218, 157, 190, 169, 198, 51, 28, 91, 15, 172, 38, 104, 43, 206, 196, 174, 141, 23, 114, 1, 166, 145, 0, 153, 27, 6, 186, 103, 240, 195, 236, 131, 35, 179, 85, 50, 159, 220, 106, 88, 144, 53, 23, 103, 208, 241, 11, 12, 8, 27, 234, 247, 255, 65, 80, 162, 15, 128, 49, 24, 115, 163, 45, 79, 93, 44, 44, 178, 112, 37, 103, 142, 213, 6, 197, 142, 225, 35, 244, 25, 127, 197, 243, 57, 185, 242, 76, 56, 140, 93, 157, 175, 74, 229, 120, 205, 151, 210, 174, 208, 230, 42, 60, 181, 204, 173, 170, 29, 230, 129, 128, 141, 214, 126, 162, 132, 3, 97, 52, 29, 131, 210, 120, 8, 65, 117, 223, 247, 95, 64, 67, 36, 220, 205, 20, 209, 232, 106, 217, 55, 156, 251, 61, 25, 128, 164, 216, 129, 109, 198, 21, 142, 160, 28, 88, 70, 44, 187, 200, 146, 21, 18, 93, 115, 8, 121, 143, 15, 64, 170, 127, 14, 80, 137, 46, 75, 165, 200, 143, 89, 90, 172, 202, 202, 42, 177, 53, 103, 241, 185, 136, 54, 127, 45, 16, 191, 36, 92, 238, 116, 109, 13, 136, 88, 150, 123, 114, 181, 197, 199, 120, 186, 239, 12, 245, 27, 55, 78, 98, 255, 175, 155, 239, 162, 165, 236, 241, 108, 29, 155, 196, 134, 42, 11, 112, 31, 42, 3, 25, 20, 189, 177, 207, 251, 71, 108, 15, 95, 223, 2, 242, 171, 200, 28, 130, 177, 234, 189, 248, 179, 181, 26, 226, 86, 41, 57, 207, 109, 92>>}}.
|
||||
{{encoded, "3DVVaZqFXuLAsEkQvbfBfFRx1HHhAFnGCPEFgpDhM8VViJG4fRbzLSwHHP4tiYZxqCZc2AuHPK4KxiQRQ36fs6TR46qkVm6XoZygJ9jHRTgsWZ31bBL253CDjGZgpnQ9t2Ecf7eTA4z3MDdjXr7Ms8GAcBRiCd25pqSLW2m7Ankwj6RhXUKdiRGKLbVBqdTi7Z62Q8FutYwtci66SMcQxkELTdK7783yVxD4VooVQzd3xANZLnYsfTtWBxZRa2UA7phkvf8CVFkXAuQB2yGaGUgTCPY6RxzXuMj1ZLqJ7KNxZkYe2WdtPCdCXHBR4AT6gHbStEHgU8PmpN"},
|
||||
{decoded, <<231, 142, 79, 196, 220, 0, 33, 138, 55, 60, 158, 88, 45, 209, 166, 54, 211, 55, 213, 37, 220, 248, 253, 46, 73, 138, 192, 236, 102, 102, 193, 232, 199, 188, 48, 143, 173, 66, 177, 107, 68, 29, 156, 45, 69, 251, 225, 22, 151, 111, 65, 54, 190, 92, 142, 63, 59, 143, 255, 15, 67, 194, 109, 252, 139, 112, 222, 92, 170, 238, 242, 123, 138, 170, 149, 241, 127, 161, 197, 148, 219, 223, 122, 101, 212, 161, 38, 146, 135, 186, 203, 247, 147, 199, 202, 59, 221, 229, 126, 53, 125, 191, 135, 137, 175, 23, 142, 20, 174, 100, 242, 52, 213, 220, 165, 170, 37, 199, 165, 2, 69, 1, 253, 41, 7, 243, 20, 141, 24, 145, 55, 95, 29, 11, 145, 164, 39, 157, 9, 24, 120, 198, 210, 206, 97, 13, 50, 255, 181, 239, 159, 214, 161, 85, 38, 105, 204, 68, 185, 159, 7, 56, 220, 36, 145, 64, 159, 55, 10, 54, 219, 139, 126, 51, 29, 30, 167, 25, 191, 67, 17, 85, 209, 33, 150, 25, 3, 64, 186, 47, 205, 175, 157, 20, 101, 108, 58, 30, 146, 186, 55, 216, 187, 165, 58, 55, 210, 158, 166, 174, 29, 13, 71, 185, 228, 7, 101, 195, 49, 174, 91, 169, 196, 23, 65, 144, 178, 185, 177, 153, 10, 223, 113, 37, 17, 183, 194, 153, 61, 72, 171, 2, 26, 107>>}}.
|
||||
{{encoded, "76xiouig6X1fGBvW8BGHJjsfj46k4UUAUxkH3WuimPNSgd7z9Ptjeei4Cbjj1iQRYHZULZiQADT5Y7aETw32t8KSKECNquR16HRit9NHnWHNexS6w7dY6BVcFjayFkwpejvJSEdVuELuC1zMdenTdR2nPTqQLP1drFbay52qr1GckU3kMDzEaVGUPhFvLm8WH2zAbSGxVifPP9uvfx8AN4T5XcVapsckygvXxe6yjguEdYsgSpauVZeEK1GFmEs15RnwYBDwz4ASrqfnyDM6J7oLhoJTv7xaHNzH1X4BxHaaWuPNwsYgLuujbUPbsi4SzeHrypchKZFFR6tckk6XGNhb4Faa8JTERLvPJwN7KZCCwcTZJkUyHrWVzrRGTTgZHfEttxxDJpKEQGT5bXmDwXw1FbWmtcxjrjmWNeSpUkSmMZzsFsfWJXD3vK9ZdzFShKouRqGnkxk3x1NQqFzWpS1Qq1n9BAPf47iFbRqVceKHNfjPExVBJpEF9rzosQHydvXDAEK9YGm8Nh467Xr1LR8xKCfF4obD66RZHhQ5W6iBm1GRTxJDWRoU9WWDZ1CJBHT4NC5okEdCEg8iJkLRyq9GqDcSZXrDQc7y5VgtfLnpxLGBBVGXEsvZRe6aDkQTZaGRoJGYSk7x2veu7u5fVzfMWM4txgLasQ4GY9f295BZFKw1kkXo5pYnVn1fgnK7fR5RvBUNTcxk1nRWHMQieyvAwRic8fcFnFrCQbQr9AG2UjnobEtVEv6zcyhwRnJjmXghwmRkhagwfeb2rTUp6mAHykQE8iqW6Va7nBaYt5L6xqawyx5Zgc3DNGQydev4RiB35dwPRYFb72scXrFYxThbZ6nL2eUcuH6CbPLZxG7Z5dw8jDnDrHPgYLoyHQyxYfKX3fWPPug229BhwR7iypVLE6QyPzE92uzM4RwU39qpFkAM49dFxAivrUNGkLvkAXjYYYxySLmEM5WVd6hKo1EezJSY9jSP"},
|
||||
{decoded, <<233, 184, 9, 149, 57, 58, 235, 172, 56, 230, 163, 98, 107, 221, 76, 133, 163, 45, 125, 225, 98, 109, 88, 192, 62, 105, 74, 67, 116, 196, 239, 40, 213, 202, 42, 41, 64, 27, 114, 95, 19, 104, 71, 84, 32, 56, 181, 57, 14, 14, 123, 175, 218, 124, 151, 42, 212, 198, 51, 171, 186, 199, 95, 175, 254, 204, 16, 229, 87, 187, 54, 21, 78, 99, 208, 5, 245, 181, 75, 45, 35, 3, 183, 35, 152, 192, 188, 4, 79, 75, 73, 16, 53, 204, 238, 119, 1, 159, 179, 200, 34, 164, 218, 124, 98, 22, 109, 13, 2, 121, 249, 75, 215, 209, 20, 84, 101, 216, 56, 155, 62, 206, 226, 51, 173, 77, 218, 72, 186, 16, 247, 140, 222, 95, 154, 224, 158, 220, 147, 1, 78, 149, 242, 80, 239, 99, 17, 207, 253, 158, 93, 13, 95, 168, 30, 175, 147, 99, 176, 96, 181, 97, 206, 132, 56, 124, 23, 37, 221, 211, 35, 157, 193, 225, 79, 123, 198, 197, 4, 28, 92, 70, 122, 176, 145, 89, 43, 25, 169, 64, 66, 151, 65, 61, 239, 151, 205, 114, 157, 2, 200, 48, 115, 198, 40, 181, 213, 193, 73, 59, 27, 129, 250, 132, 188, 194, 229, 230, 242, 117, 1, 107, 159, 47, 222, 163, 93, 50, 44, 186, 215, 49, 4, 255, 248, 19, 139, 228, 53, 195, 229, 30, 222, 199, 201, 12, 15, 0, 96, 172, 44, 31, 184, 210, 160, 248, 247, 45, 84, 170, 187, 66, 229, 156, 67, 168, 30, 93, 139, 151, 156, 135, 60, 212, 67, 242, 11, 49, 79, 70, 180, 87, 10, 156, 17, 228, 24, 237, 221, 124, 40, 51, 203, 164, 127, 196, 193, 114, 16, 21, 104, 118, 223, 54, 134, 20, 76, 147, 50, 253, 182, 195, 213, 205, 51, 157, 61, 174, 69, 154, 185, 19, 75, 66, 86, 38, 37, 158, 46, 24, 90, 73, 176, 99, 24, 217, 126, 15, 97, 15, 254, 13, 69, 150, 138, 135, 134, 215, 185, 6, 28, 56, 216, 138, 179, 121, 140, 21, 240, 220, 183, 141, 10, 35, 195, 28, 90, 225, 62, 79, 198, 103, 144, 167, 229, 60, 30, 1, 248, 42, 212, 226, 192, 102, 253, 96, 54, 71, 47, 83, 30, 219, 170, 48, 158, 184, 216, 43, 66, 27, 96, 50, 32, 227, 159, 215, 166, 22, 1, 57, 36, 207, 245, 105, 215, 169, 105, 189, 240, 47, 249, 20, 252, 158, 138, 25, 11, 231, 178, 217, 195, 195, 206, 221, 113, 58, 2, 134, 116, 39, 31, 223, 76, 172, 110, 146, 74, 143, 74, 248, 43, 89, 212, 144, 145, 217, 243, 253, 241, 154, 156, 110, 183, 149, 239, 70, 130, 238, 189, 104, 183, 219, 206, 208, 111, 226, 232, 197, 53, 100, 154, 136, 248, 58, 152, 182, 142, 27, 85, 214, 25, 1, 47, 188, 152, 130, 239, 168, 112, 47, 235, 16, 120, 12, 13, 187, 235, 149, 219, 73, 213, 252, 4, 188, 63, 114, 74, 192, 156, 218, 169, 70, 88, 38, 1, 148, 67, 59, 227, 61, 182, 114, 74, 41, 237, 191, 115, 186, 11, 141, 225, 209, 182, 160, 252, 172, 141, 38, 163, 152, 157, 54, 42, 14, 170, 104, 13, 157, 143, 247, 151, 175, 62, 2, 113, 175, 2, 84, 10, 187, 239, 183, 46, 202, 194, 28, 115, 139, 113, 185, 141, 85, 9, 237, 113, 179, 67, 121, 154, 241, 201, 61, 128, 165, 49, 141, 238, 149, 153, 89, 63, 63, 220, 9, 4, 234, 174, 221, 5, 232, 226, 232, 133, 36, 119, 108, 84, 215, 96, 231, 42, 85, 244, 199, 146, 217, 55, 238, 151, 227, 63, 228, 43, 65, 122, 7, 237, 84, 162, 245, 246, 175, 169, 26, 102, 115, 214, 11, 56, 179, 7, 72, 16, 23, 184, 89, 171, 230, 50, 1, 57, 52, 40, 246, 60, 100, 74, 54, 187, 33, 117, 134, 169, 188, 30, 38, 33, 13, 69, 48, 172, 66, 218, 20, 231, 175, 67, 141, 97, 213, 214, 104, 169, 208, 30, 154, 51, 118, 20, 55, 70, 229, 20, 122, 226, 180, 34, 63, 130, 65, 6, 118, 26, 114, 119, 216, 105, 248, 160, 144, 146, 248, 193, 201, 184, 56>>}}.
|
||||
{{encoded, "A1ewqcLjqwffNWir615qY9LL4XMTkFQiMGtrqofegNX3HFi7HDyDQJDzRLg1RYwS4pFuapWSJGEcp65rav9F5mBTXAyajWMxmvQW33GKApkT1K3mGTBuXYohx7jcsWhMD8CsWaeRuhFFtQYxyBFUZyWpsvAXnj17uGVFcJAncnhojKABPThJ4wNgfonBqcyJqXtfVtqEQtUzbdpTuRw6upENPhkXB7J99rXqKQmPCU7BhPAsDg19BRQDMMv59pwmZHDWA957PTpeRPSh9XCjkaLwnVknHdFG2qVUZqztoKCb3X2vc4SqHcveqgXP8Vh91sYQAJ6Zr9kuBekwNA5bRJ4mZv2FywFfrSU4PyXH4PrYvBYAnAY6soB4esrqRnd4Cc8kwaZfwvif4f2ZuidLXSTWmDb2GNd35Lzwsxe4u4K1dPpTGKHXggi6USWyqqjPYGBJAuDmJQGSiTwXgK8LnnsiEr6BRLM57zu7Wf8EuuqjtKJX5ujKJZKGY6uBA2ytmwzfyAfwamQhYmnP4SErW8S1tEsLKBZDJg57tqSsGvHop8LoXymBFNiikNmUtUt5V6jVT4R6ueFkvFUfCNHJHbTjuHNtF4W7PUgiU4cJJN26iWaCibeG6nNgnbSWBfLWxqyzJXFcQmG7s7w6jjAuFannh8BhmuGZpQSysYAvUsKXjy"},
|
||||
{decoded, <<236, 254, 193, 194, 54, 136, 75, 238, 64, 40, 57, 55, 10, 95, 206, 130, 18, 238, 35, 156, 38, 118, 252, 174, 9, 139, 113, 117, 245, 217, 129, 62, 223, 255, 48, 191, 149, 40, 30, 131, 184, 133, 79, 75, 128, 72, 185, 28, 254, 204, 220, 210, 90, 63, 246, 197, 166, 71, 161, 25, 56, 104, 253, 159, 178, 188, 62, 108, 244, 13, 112, 166, 198, 125, 107, 50, 118, 152, 158, 217, 32, 107, 44, 66, 185, 114, 114, 206, 69, 244, 115, 193, 77, 214, 117, 1, 126, 232, 178, 222, 236, 67, 202, 39, 195, 36, 136, 115, 172, 231, 91, 248, 239, 214, 239, 54, 45, 255, 4, 31, 19, 175, 175, 156, 94, 207, 157, 206, 17, 17, 186, 52, 146, 170, 174, 81, 78, 195, 240, 182, 253, 122, 55, 3, 5, 67, 108, 51, 221, 212, 86, 233, 57, 113, 176, 105, 237, 141, 119, 222, 43, 155, 197, 192, 43, 59, 24, 214, 172, 24, 177, 240, 40, 19, 239, 107, 129, 182, 170, 107, 96, 95, 165, 44, 58, 184, 187, 58, 42, 119, 61, 25, 196, 218, 152, 102, 194, 24, 15, 144, 82, 190, 124, 102, 191, 142, 212, 168, 28, 28, 226, 100, 66, 46, 25, 52, 227, 206, 132, 50, 121, 5, 80, 59, 127, 63, 25, 16, 27, 63, 117, 174, 42, 124, 169, 66, 68, 103, 1, 144, 251, 111, 196, 229, 148, 160, 122, 90, 247, 128, 236, 13, 132, 239, 71, 146, 141, 122, 90, 32, 46, 21, 220, 178, 179, 223, 84, 80, 114, 206, 15, 111, 210, 112, 127, 47, 51, 94, 36, 96, 159, 105, 73, 106, 126, 107, 230, 193, 81, 122, 167, 108, 129, 58, 255, 191, 210, 5, 173, 223, 78, 231, 40, 5, 208, 158, 167, 214, 22, 234, 36, 150, 217, 69, 231, 25, 10, 100, 146, 253, 57, 8, 22, 84, 9, 80, 169, 24, 251, 42, 56, 145, 248, 133, 4, 216, 103, 40, 100, 61, 203, 5, 72, 86, 223, 118, 202, 187, 55, 149, 243, 115, 38, 105, 23, 39, 161, 81, 208, 7, 69, 181, 235, 164, 104, 7, 201, 53, 234, 128, 201, 6, 48, 70, 215, 57, 55, 51, 227, 30, 100, 97, 234, 127, 131, 221, 169, 150, 71, 84, 8, 181, 95, 212, 38, 232, 14, 222, 100, 22, 228, 241, 135, 147, 39, 94, 182, 48, 148, 63, 172, 112, 50, 227, 28, 32, 169, 36, 227, 106, 223, 229, 8, 200, 121, 34, 3, 147, 203, 93, 32, 51, 75, 128, 180, 69, 57, 216, 194, 0, 178, 57, 151, 97, 187, 151, 107, 14, 224, 177, 76, 2, 92, 1, 45, 176, 31, 252, 102, 203, 121, 64, 57, 152, 20, 136, 35, 188, 11, 34, 8, 190, 44, 21, 0, 148, 221, 34, 85, 255, 211, 212, 49, 85, 117, 224, 187, 204, 236, 244, 73, 101, 153, 108, 2, 254, 240, 66, 82, 175, 244, 132>>}}.
|
||||
{{encoded, "7qqGaWavYgJBf8Rtr4jqLykpYbumrpPE8aidKMvbjVGF8GpebE3izF3GTojJ5LZ4na9qj33E4fdTVSEowriSV5vKL8euxp2a69E1KtEj9oscfxyiEfQetFyrKXpBVUEPBTPyPZ"},
|
||||
{decoded, <<59, 33, 228, 92, 174, 112, 17, 159, 3, 212, 83, 54, 136, 10, 23, 245, 188, 54, 52, 108, 17, 65, 0, 42, 33, 72, 20, 222, 129, 132, 211, 242, 41, 207, 129, 110, 171, 156, 135, 7, 136, 77, 192, 150, 236, 236, 169, 126, 31, 11, 244, 87, 60, 219, 27, 64, 211, 111, 127, 132, 92, 164, 166, 170, 158, 149, 124, 29, 127, 2, 28, 159, 117, 217, 181, 67, 89, 191, 221, 10, 207, 132, 136, 80, 186, 127, 232, 90, 20, 253, 108, 102, 212, 124, 147, 74, 117, 76>>}}.
|
||||
{{encoded, "2DGUKSy7A1AWL3PSBosoKUQ3kqFusqTeJ3S75Byw3D1srhSD62oXWwbiYcy2GUSgd9appJKTBAJQt39T79iUczbAoKSZubupYMBcaZjF15GbHpunmCLLXn8mRLxZanG264toL9zn5mo4FUBeSgtCUhvBHbFXSMSCGBmEqDypDxpJhm8Jttzw7hfgwKV6Xa6byYn7TAkWuVj2xpPN1z7XndpocUGxvEqV4DtdYvCbHKu17CYh3HfDanrvzMjuTWRfqdUkze8YMEytfp1LMyPF37BY2YyZLzMAoTEFdEvWZvuH7nMYtitj1kMD852ANLwPnQMTLcLQ3nKi4ykSDdahfoFjRcv8fbH3DkS9yd87TJKEMv9SFDCQV5CGeVRVKgnnn3XGPrzsaw9s4kDY5dYmeRLsz3CePFh2CXfcpb1JEU1nTdTeaq5RzU8QZwjavXZginj4HxxM58Ko97tNrRm25d3GSCdaMqAQumUjeRwvD4Ghuhxf87er6kuxGRJHhusSpn1x8NVxwLEQXtVsvRfeqFFxHTiMjRqSN476sgtQRxnD49pd9HiBpzmkDsxj2M2E47iBCuyDe3JRHJh1LLLiGVQiS7kRFANRH3YRfvukZzSX5Rp8nDJuY8z1WSFUbbGHuJT76MAsShH1Uj7LMZ4jrMC2Av9By9EcoK82uW3FhzfsLrB3RZ4FVZSLCUgSBLB54DTCy9AU2VAqXoxmcapgnVNaTk7BkrmcpEawMvbMUMyUHcGoxHDJH3YCsNE5ofkcALo5dTuDsKiAauvL82hHVuUPx6pdR6BHP8b1C4ymcsQ763QyaH7qv4AmQM6CvFa5CmZJKGHtHoNX3nUKjVrUDusYXbfKXpxzWzukqUEk"},
|
||||
{decoded, <<95, 141, 174, 0, 103, 200, 30, 177, 138, 213, 77, 93, 223, 68, 124, 44, 186, 20, 167, 145, 51, 250, 172, 119, 160, 157, 164, 21, 111, 145, 207, 178, 209, 51, 80, 57, 22, 131, 122, 63, 18, 70, 87, 6, 199, 12, 154, 118, 168, 130, 96, 86, 233, 215, 72, 251, 183, 164, 247, 71, 215, 102, 231, 37, 106, 135, 225, 75, 183, 197, 91, 173, 239, 197, 147, 55, 51, 119, 239, 59, 4, 125, 194, 100, 167, 97, 22, 243, 23, 230, 238, 207, 93, 33, 229, 119, 204, 147, 92, 169, 176, 175, 163, 209, 212, 84, 58, 165, 216, 124, 60, 244, 130, 32, 246, 121, 10, 85, 148, 103, 48, 118, 16, 233, 25, 18, 208, 252, 17, 113, 147, 192, 109, 48, 85, 244, 173, 26, 193, 29, 184, 170, 211, 31, 132, 39, 207, 228, 118, 226, 146, 57, 139, 211, 253, 130, 9, 171, 211, 44, 215, 8, 234, 156, 202, 139, 142, 108, 237, 223, 233, 1, 123, 159, 104, 29, 102, 151, 231, 3, 128, 107, 178, 128, 246, 163, 125, 232, 192, 232, 124, 104, 97, 183, 19, 157, 247, 60, 191, 74, 107, 24, 193, 159, 38, 81, 147, 3, 88, 245, 130, 40, 254, 85, 52, 159, 181, 192, 156, 123, 77, 122, 70, 207, 90, 91, 235, 5, 93, 214, 25, 165, 93, 111, 5, 226, 94, 225, 122, 241, 204, 25, 128, 70, 198, 225, 247, 223, 253, 99, 19, 213, 142, 107, 141, 106, 125, 121, 157, 110, 187, 118, 38, 223, 128, 157, 126, 252, 129, 135, 168, 63, 0, 148, 255, 168, 93, 86, 208, 71, 134, 233, 147, 201, 42, 234, 240, 238, 78, 137, 180, 157, 134, 253, 6, 104, 111, 251, 136, 175, 252, 178, 43, 61, 183, 92, 63, 14, 18, 243, 219, 163, 211, 212, 20, 76, 159, 43, 123, 84, 128, 231, 184, 130, 198, 154, 155, 67, 100, 80, 216, 106, 46, 184, 222, 195, 226, 149, 162, 45, 44, 187, 185, 65, 136, 218, 180, 43, 226, 2, 97, 149, 2, 60, 56, 26, 36, 15, 54, 128, 48, 180, 13, 242, 102, 131, 145, 52, 9, 219, 251, 113, 184, 204, 19, 10, 67, 110, 68, 26, 141, 87, 61, 169, 77, 173, 104, 133, 164, 154, 192, 217, 190, 52, 50, 69, 164, 26, 68, 218, 237, 187, 0, 233, 4, 230, 49, 178, 113, 130, 181, 119, 211, 211, 208, 197, 214, 108, 190, 51, 82, 119, 137, 69, 244, 3, 4, 117, 232, 46, 53, 51, 246, 173, 228, 32, 15, 184, 163, 75, 39, 188, 123, 219, 40, 162, 216, 161, 51, 49, 224, 170, 37, 209, 81, 3, 172, 126, 102, 29, 209, 101, 238, 41, 248, 52, 130, 122, 85, 80, 7, 92, 46, 231, 183, 119, 124, 96, 203, 118, 134, 216, 234, 152, 145, 192, 217, 0, 179, 78, 157, 171, 202, 152, 152, 160, 223, 132, 27, 143, 255, 141, 211, 64, 87, 167, 129, 239, 108, 207, 188, 96, 211, 116, 27, 188, 34, 143, 81, 42, 202, 18, 105, 210, 115, 150, 211, 242, 115, 145, 249, 44, 110, 140, 106, 248, 148, 120, 52, 63, 39, 96, 89, 60, 70, 198, 166, 225, 47, 117, 105, 137, 157, 119, 47, 218, 106, 149, 3, 249, 114, 122, 51, 223, 104, 78, 247, 91, 177, 240, 201, 73, 29, 121, 177, 84, 85, 151, 7, 93, 94, 254, 159, 186, 30, 16, 117, 72, 85, 79, 97, 122, 234, 169, 238, 151, 147, 209, 56, 223, 238, 97, 21, 182, 219, 242, 147, 15, 49, 140, 22, 204, 60, 112, 182, 75, 69, 194, 150, 197, 147, 173, 173, 8, 83, 216, 178, 188, 203, 246, 5, 221, 237, 145, 65, 63, 83, 89>>}}.
|
||||
{{encoded, "2Z1zxKPA4Lf59VjxLZYD4rFdusxm2Nc9E6ssUAoadMcsHFjsxoKLHbHKj5wWr1JWnhDKKKANY2faLekcVNFBkLTysG2N7ntttfGN5zkLe7DytXAkkfb4wBKKCo9jih8tLWJiiq3EL2pbSkoFvvG9KgRZ9TTgbrZDkriCF4euBChrMAcHNqWhoaFidCM9yftCARdXt4dVwvw4YnN7uYWXzuPrWyWW4t5DHwoaMytKYBGKHe4CgoFPSG3r2KkVZUZ7GNQqkxTzzoepR9axX1JF4U5R4ZdbBusKDS5umm6WHBmjkFpAPXRkK195h8otAoS7tboHyzYSG7qnZnJ69YMDXiZ9tiA8M5g9CzSbg71vyxzSfrzjzXyQ1pa3YPNDGjGfozJWxqRVWpaFsLrunbGBpuut88nMtw3nTzwzfQhsEN9tgJn75BaHkV3PPYCR4RWc7kmquhk8mmwK6H3etSfsmRF7R3M4yZb27cdarsAETx5ErmSwNAj7vDwND8ti7J1jtUyc8SggQimdNWohuLY2QgPxqq4UHJZ6EgxcA4xWsSMD6awVSCTDRq81e9AuiM5A2D5iYkj5kQGRj1qRnQVxmCvcmJL3EQ1bX8wthKSCSw3sr8EcMgeHqYEtkYFrPWdJSZGRZ8KeVpsGP2BLTvRmz6NcE9DdX9v98Rfk8misyM1NJH3ZqGzRUgte7Aa5kVRTSXVZYvvsGcBm7gfBZ5FcYhoGtwb7AzEdngCm5i3VQ2wrpPmc5S36yNpK1J4BEt4BvRe3LVUDidYtPd6madj8HSAndMbSgEp1gVsDRQXq94Qv5aGzM5GHaJzpDueHRsjurWRAiqxh4Gjd5mfXKQiN4PicWCyqc5htrfTwwf3UPNm26gV8zJD31oEvfiS36zYUeWw6q6VHZNwnbqPa4qHq7THMfmEa6ktTMYq96snJd9NKqrU37sXLHTCaS4jRkqdr8KeR5pa3R718f7Um48tL3GdHykMbuxoLHt3uCRhP9sVVQ8RfCZeoR9kvJS7NmNUh4inq9zGgA4my5L3F6KeYj5XB2odWSrSPRZrqyy8pfLuS2yVF3gEFsu6cT1vqbe8RaKC4ZqzqtLHCRJfc8J8xh1bMHKvZUyVxZMvthQN1bgu66"},
|
||||
{decoded, <<233, 184, 53, 154, 153, 107, 21, 255, 190, 142, 178, 90, 19, 254, 232, 94, 106, 43, 242, 88, 176, 202, 229, 18, 116, 244, 36, 50, 169, 244, 39, 6, 170, 56, 191, 208, 227, 115, 32, 193, 149, 81, 32, 46, 152, 56, 176, 56, 100, 145, 191, 116, 191, 250, 65, 164, 223, 42, 183, 99, 204, 135, 212, 23, 53, 171, 196, 102, 225, 85, 56, 89, 195, 254, 217, 154, 227, 97, 55, 130, 241, 42, 29, 136, 220, 76, 182, 110, 197, 40, 246, 169, 79, 98, 155, 6, 220, 167, 208, 131, 208, 152, 63, 246, 230, 52, 57, 86, 95, 255, 210, 121, 176, 41, 176, 222, 115, 6, 61, 231, 197, 195, 45, 172, 114, 245, 41, 27, 255, 38, 114, 207, 60, 224, 7, 132, 155, 71, 113, 134, 117, 35, 195, 250, 230, 50, 85, 18, 199, 211, 76, 75, 168, 226, 180, 72, 187, 62, 39, 100, 125, 67, 14, 221, 97, 98, 211, 178, 109, 192, 32, 9, 57, 220, 122, 206, 29, 51, 133, 99, 192, 198, 76, 142, 157, 240, 226, 230, 100, 174, 237, 149, 182, 120, 95, 64, 54, 56, 82, 43, 175, 128, 75, 225, 165, 211, 1, 89, 139, 148, 123, 234, 205, 195, 93, 74, 55, 46, 166, 185, 100, 76, 104, 0, 178, 33, 171, 223, 226, 244, 205, 120, 13, 65, 14, 46, 77, 215, 18, 82, 186, 196, 118, 108, 98, 61, 209, 159, 12, 0, 68, 62, 31, 123, 249, 89, 181, 71, 215, 188, 248, 20, 158, 63, 64, 227, 1, 47, 24, 44, 200, 228, 213, 174, 242, 40, 24, 230, 159, 244, 214, 98, 153, 131, 223, 169, 118, 84, 212, 5, 79, 91, 214, 27, 23, 174, 80, 126, 247, 194, 228, 247, 92, 125, 8, 138, 86, 84, 235, 69, 65, 105, 76, 68, 254, 110, 197, 162, 189, 77, 209, 71, 134, 171, 189, 15, 59, 221, 89, 165, 123, 112, 200, 217, 179, 9, 156, 200, 131, 22, 18, 250, 7, 234, 75, 92, 57, 113, 51, 94, 237, 79, 108, 116, 231, 210, 199, 77, 142, 110, 212, 209, 51, 86, 0, 156, 61, 100, 196, 3, 97, 186, 105, 221, 2, 11, 192, 64, 108, 45, 158, 239, 35, 89, 14, 68, 178, 207, 58, 116, 236, 17, 82, 33, 203, 174, 47, 159, 71, 251, 179, 184, 134, 114, 24, 112, 198, 59, 149, 111, 60, 255, 144, 122, 24, 157, 245, 205, 184, 1, 62, 49, 57, 121, 151, 137, 84, 126, 132, 183, 119, 60, 200, 212, 207, 120, 28, 117, 204, 153, 145, 209, 175, 31, 126, 148, 144, 219, 179, 89, 154, 188, 144, 183, 154, 190, 80, 20, 184, 120, 98, 84, 194, 181, 106, 34, 46, 69, 133, 80, 251, 44, 21, 209, 27, 145, 188, 165, 132, 132, 82, 166, 196, 59, 162, 79, 201, 34, 126, 98, 56, 20, 45, 208, 213, 21, 42, 193, 58, 186, 63, 164, 123, 52, 40, 90, 25, 72, 233, 82, 194, 113, 8, 44, 238, 83, 198, 97, 45, 70, 152, 3, 92, 149, 91, 57, 137, 116, 27, 64, 178, 169, 57, 156, 253, 185, 71, 194, 225, 124, 125, 102, 162, 32, 87, 17, 60, 33, 187, 113, 37, 88, 62, 7, 186, 147, 221, 31, 152, 100, 103, 112, 252, 54, 153, 182, 169, 215, 224, 0, 225, 171, 177, 21, 200, 46, 99, 49, 78, 139, 100, 128, 13, 154, 201, 90, 206, 186, 13, 222, 191, 166, 125, 23, 189, 238, 129, 13, 91, 201, 19, 103, 15, 174, 252, 221, 79, 58, 154, 93, 171, 248, 171, 213, 38, 188, 87, 91, 217, 214, 204, 189, 156, 134, 158, 125, 170, 113, 96, 118, 61, 39, 137, 183, 216, 71, 19, 4, 133, 97, 254, 184, 213, 156, 60, 235, 56, 211, 140, 241, 30, 130, 148, 132, 104, 56, 13, 21, 134, 215, 139, 56, 79, 15, 164, 136, 72, 144, 211, 8, 105, 139, 255, 214, 138, 113, 105, 78, 170, 251, 77, 121, 191, 0, 207, 53, 25, 71, 66, 212, 116, 166, 167, 216, 10, 16, 143, 191, 184, 46, 81, 177, 61, 112, 83, 164, 247, 55, 102, 86, 176, 138, 171, 238, 13, 94, 65, 154, 51, 10, 202, 97, 37, 245, 127, 144, 0, 102, 235, 67, 70, 51, 146, 13, 147, 232, 211, 161, 188, 25, 143, 218, 169, 211, 44, 231, 37, 14, 184, 190, 34, 3, 11, 107, 0, 196, 140, 138, 179, 197, 176, 11, 7, 210, 61, 158, 38, 90, 190, 143, 110, 217, 106, 6, 51, 136, 28, 114, 26, 20, 37, 201, 210, 189, 151, 237, 67, 89, 89, 188, 203, 183, 57, 104, 201, 141, 53, 1, 139, 75, 124, 140, 8, 74, 91, 11, 114, 160, 121, 176, 238, 75, 168, 146, 6, 110, 163, 210, 172, 99, 27, 170, 184, 76, 167, 34, 125, 35, 111>>}}.
|
||||
{{encoded, "b1kU6mZ5vxr3YkjWif5QavsXaetehH8RXYr1LcWwg3VrUmPPoLcEKfCRr56gx3QVkyHeDfc67fYLch815pETgU43vquCCcvgndy5YjTXdaEbJzp1w7d2jiDeZwFr8vQsQwcn9HzQkrfRe5C2Uiyu6LNQF3tg6bTot5NLXfxfyNWbvzkgPiMExTMaRX8F8pXaGJeNosmyccjtYzw2vDYWf2ut3qRckNYLjeQhuaNLRRdLwqRWAvss7Wmvo2Eb7N7tArbKWiSujg6gXhCnXkbSBFuiUWnhqyfnpAzpX2VpvTPTJqJ8UbdiA7EB9NzdUUj41nS3LMUpP6nYmd3s21XK3dFimKtnEpx11BUqitQ95WGaHNh7dihTD9PTkicRg4UZnPFifXJNkRJcqmxbUMrUQ7WpAFN8hopGXcoALxTeZAUFCZqdMyXzCn2zKiyLKFA6vcxjGG7EhEyNLYVopPbbR2sFRnqj2ni5SKk3L8tMM5ND7tAQbeFygWaUemk1t1URUCvA9Ev3JrDss8w4g2Ms4oyRG3SeGuBpoeQZiRUGcw4hfKXr7T8uG7HQL3ug7XFYp9o9ne4iWRo3UY9RSuG8bQvs7Cm8MnFFPJ23gs94D1a3jgDS6bjgC39AFeZ2jZJFYb5A66SwQAvbKQPeNTeRU56McaNN8pJVWuq238mwoiJbC2jcCN4m8FBi44P24jth16QihqhpFQCjbGSqizSFbzCJ7xX11GLBoYAoPQ9avMLWErXQtxM5WD688f6LN1ABoANdV15wQSygXdnJd9gchqXr2FPHNEWLG4okyCTCeD5bmkSvkog3Fnuine2BuNckgbAb22HEEAGLuqZCd65weLF7"},
|
||||
{decoded, <<50, 159, 218, 162, 187, 234, 226, 68, 242, 4, 97, 95, 225, 184, 168, 51, 125, 197, 255, 232, 25, 180, 205, 147, 255, 225, 31, 161, 201, 252, 209, 10, 232, 158, 164, 141, 239, 126, 22, 139, 170, 9, 246, 164, 131, 244, 174, 224, 150, 133, 75, 192, 150, 22, 162, 247, 98, 58, 139, 189, 156, 41, 230, 153, 145, 151, 212, 123, 35, 53, 44, 61, 16, 85, 253, 180, 88, 187, 64, 221, 246, 233, 21, 24, 50, 65, 80, 169, 221, 58, 101, 170, 225, 84, 177, 10, 120, 37, 79, 172, 213, 67, 133, 52, 44, 194, 23, 56, 65, 139, 251, 195, 19, 27, 160, 72, 215, 117, 49, 103, 130, 94, 150, 13, 136, 4, 43, 158, 89, 247, 167, 195, 155, 199, 243, 163, 163, 247, 112, 40, 150, 164, 16, 172, 70, 102, 127, 47, 4, 225, 123, 17, 173, 244, 239, 68, 166, 94, 226, 48, 220, 151, 167, 157, 171, 224, 170, 246, 213, 168, 8, 172, 4, 180, 217, 142, 6, 240, 80, 163, 121, 135, 162, 97, 228, 218, 119, 153, 248, 53, 61, 145, 92, 106, 187, 158, 100, 245, 249, 95, 16, 171, 215, 52, 170, 45, 103, 217, 14, 152, 88, 14, 220, 148, 247, 241, 16, 99, 138, 137, 95, 72, 204, 104, 86, 167, 51, 235, 47, 34, 233, 54, 1, 67, 242, 109, 13, 159, 227, 92, 246, 203, 44, 151, 101, 48, 111, 174, 226, 205, 239, 221, 133, 232, 62, 190, 91, 78, 218, 212, 91, 249, 255, 169, 251, 222, 126, 214, 203, 116, 203, 159, 139, 75, 235, 179, 63, 210, 245, 124, 39, 177, 178, 207, 0, 187, 67, 245, 202, 74, 177, 229, 47, 217, 165, 148, 20, 184, 41, 158, 105, 9, 205, 4, 23, 215, 241, 84, 236, 198, 86, 5, 73, 160, 225, 151, 206, 134, 106, 148, 236, 148, 61, 147, 125, 84, 247, 117, 231, 17, 248, 39, 224, 1, 66, 178, 236, 96, 130, 66, 72, 176, 39, 42, 195, 126, 72, 152, 32, 163, 12, 144, 135, 152, 23, 95, 185, 99, 76, 36, 184, 165, 157, 143, 158, 208, 41, 241, 247, 95, 88, 198, 189, 249, 103, 15, 5, 104, 151, 165, 206, 119, 172, 7, 163, 12, 204, 165, 53, 192, 164, 204, 73, 112, 158, 201, 186, 248, 106, 98, 65, 54, 226, 9, 71, 43, 70, 54, 49, 221, 105, 82, 191, 99, 237, 85, 166, 73, 176, 8, 143, 204, 33, 251, 197, 74, 37, 57, 255, 72, 34, 208, 251, 168, 79, 178, 231, 188, 92, 100, 95, 54, 1, 106, 31, 247, 51, 3, 178, 241, 33, 90, 196, 214, 167, 44, 225, 132, 250, 215, 9, 122, 65, 97, 119, 9, 122, 83, 65, 138, 100, 244, 91, 85, 198, 178, 206, 93, 155, 69, 219, 172, 137, 227, 53, 175, 196, 222, 23, 133, 104, 212, 190, 95, 203, 168, 42, 143, 87, 146, 219, 238, 155, 198, 162, 222, 222, 74, 98, 249, 50, 198, 185, 252, 205, 117, 5, 67, 46, 223, 111, 65, 15, 125, 49, 91, 241, 231, 51, 69, 19, 0, 67, 190, 250, 213, 17, 8, 1, 110, 44, 239, 225, 27, 114, 127, 233, 157, 66, 185, 171, 225, 242, 123, 40, 131, 153, 166, 60, 134, 7, 168, 98, 93, 185, 125, 69, 113, 241, 58, 161, 39, 20, 4, 166, 140, 172, 88, 175, 108, 97, 165, 104, 173, 90, 127, 115, 255, 253, 0, 23, 154, 117, 160, 47, 9, 132, 125, 19, 234, 37, 31, 100, 68, 27, 217, 204, 125, 132, 235, 186, 159, 187, 13, 120, 67, 40, 182, 163, 57, 18, 242, 148, 32, 182, 144, 198>>}}.
|
||||
{{encoded, "es8uKxSweJr5nRj8mAmNqVKeYXLUkvLfvfnEZJ3Gkhajco8o9f9M3PpcYKmM7XG37XPG95P7d2cGnreNPX4uf94C51UGXT31Kyy2NcZNmU1vZ6egNbaR1GBjc5a5zVPDo3v24ddTvnotzbEgoRGVfrT7VxZPjMpR5NYhjs4SmQqewE7boadq61zWCnNwGNxp3VASQYftqEmBpWkGhFwoDGcm7soFFwxq28r3cSKXpNwfWk2ZkZAEwTuyxk96yJWWmJmSA6U7CaxHiNjPN5ZFaPcVzs4rDqhXNe2rD5vGWCAQGZoBGRYNj8Vxd5XCGEYwosNUBhDEkpDcbYn1jiuY7s7CXZMLXLeZXQSnS5fMs1XwhswNuM5XtphTo8JYCGqVFk4rQbM38JUPDdbtptN42vGrdyJ9uTgPFDeRNx5n5kMoh87A9SwCxtLvyURoy8R1p1kBgozQdDGx5UnjyAxLaaMrMdFH2uDoakxdHBNMNbRGNmpUht9ETbXkhkeoFt631UpBA48EtzbEtGQXgssMBCiFJ2xyEr5tnzyL94buhP7zxixh28VCVCBgteq5tim2cNmLwA1tFYk6bqiaCFpyzL7J19Lq6LhaVTDnvN44YWTUGBJWJUnUN4HLRWmBWRS96C6P3jRan9W4awnUHxFuHAZg78JjnaWFdd9j3YShKXyM2dtf18b7dpQLwkrshKMthq4NFtUCVkFnJ282zpQx37cTLadKnmq4KUhDF6Z9cg3MRNjaFC66tVkhGHN13xou8hrdAdBtejAfAN3GqkSAvmJvnqk8DgkNnqP3xvLUABCxpRTVmP3mGuLQ5smhorT26Ak1Lbibwb9azAuYhWtM9iSAtfRNGdRLCafxjKHJUnhXdWbF6reo3c1o83xL7NBMfs3ehQXX6XKxkfh6AsXGbVwBw4nMHPRP7UL8gyXDo8LaNfrPXY3StBLagrvBq7Fn8DMLJXMNtqWX6Mpy5cYYKg"},
|
||||
{decoded, <<242, 140, 80, 75, 101, 79, 211, 148, 136, 2, 63, 94, 212, 109, 164, 230, 204, 183, 93, 207, 117, 230, 6, 129, 24, 40, 241, 177, 123, 162, 62, 157, 196, 56, 17, 183, 129, 157, 50, 181, 38, 217, 13, 190, 153, 71, 50, 210, 246, 246, 210, 164, 99, 86, 81, 39, 18, 193, 54, 28, 2, 190, 248, 43, 159, 146, 124, 20, 242, 20, 253, 228, 242, 40, 121, 153, 103, 73, 31, 224, 192, 169, 117, 108, 254, 178, 228, 108, 40, 31, 213, 26, 189, 181, 48, 19, 67, 88, 8, 172, 111, 211, 227, 166, 205, 51, 14, 196, 177, 23, 148, 154, 118, 26, 188, 36, 58, 178, 109, 241, 15, 185, 28, 180, 106, 109, 75, 189, 91, 241, 53, 23, 241, 12, 166, 153, 185, 228, 228, 218, 185, 3, 213, 177, 16, 62, 126, 227, 199, 47, 239, 63, 24, 145, 97, 161, 113, 6, 220, 166, 32, 26, 105, 147, 55, 254, 77, 181, 98, 48, 108, 236, 179, 81, 54, 96, 71, 39, 12, 186, 70, 209, 129, 57, 114, 123, 70, 58, 217, 21, 132, 126, 123, 91, 43, 197, 75, 63, 172, 185, 218, 239, 95, 137, 118, 74, 221, 84, 218, 116, 40, 136, 15, 135, 84, 161, 91, 180, 168, 110, 32, 235, 15, 96, 26, 149, 12, 180, 46, 16, 71, 139, 145, 23, 96, 149, 254, 169, 168, 81, 114, 87, 44, 71, 148, 165, 14, 165, 134, 14, 2, 41, 18, 143, 164, 167, 160, 177, 130, 141, 93, 37, 241, 226, 253, 213, 24, 81, 119, 101, 66, 28, 230, 255, 74, 185, 121, 120, 49, 74, 222, 197, 37, 11, 219, 154, 104, 48, 7, 138, 127, 166, 152, 195, 158, 95, 91, 122, 146, 14, 170, 18, 245, 254, 177, 29, 153, 74, 44, 21, 52, 242, 29, 116, 72, 93, 252, 74, 207, 158, 194, 108, 153, 248, 30, 172, 31, 122, 192, 128, 7, 184, 174, 220, 238, 147, 152, 122, 239, 131, 195, 111, 251, 46, 204, 60, 96, 57, 51, 100, 104, 11, 156, 230, 61, 247, 155, 219, 84, 164, 211, 188, 9, 163, 189, 150, 159, 50, 171, 81, 112, 244, 71, 254, 186, 193, 25, 150, 128, 162, 129, 192, 13, 240, 34, 118, 239, 23, 143, 88, 102, 187, 206, 90, 149, 122, 212, 240, 71, 27, 230, 138, 98, 112, 62, 233, 57, 51, 96, 84, 214, 42, 17, 81, 169, 140, 120, 223, 125, 201, 137, 238, 48, 126, 10, 56, 139, 166, 236, 194, 9, 116, 221, 152, 219, 121, 25, 184, 164, 31, 136, 250, 52, 161, 75, 133, 56, 222, 152, 190, 103, 53, 233, 25, 162, 201, 49, 112, 26, 166, 102, 206, 51, 213, 55, 230, 249, 102, 24, 97, 57, 251, 252, 242, 140, 150, 67, 16, 201, 249, 22, 188, 15, 34, 197, 37, 198, 90, 95, 83, 202, 140, 215, 20, 57, 194, 48, 187, 79, 239, 73, 122, 210, 211, 95, 13, 16, 211, 92, 232, 223, 119, 234, 220, 77, 107, 221, 4, 81, 203, 5, 192, 99, 81, 80, 148, 152, 248, 102, 219, 49, 96, 56, 223, 139, 68, 168, 194, 184, 187, 248, 237, 36, 243, 116, 144, 228, 188, 172, 217, 215, 68, 115, 60, 163, 26, 233, 113, 132, 249, 38, 2, 156, 12, 197, 100, 25, 4, 81, 237, 121, 206, 92, 193, 16, 42, 38, 62, 131, 122, 173, 212, 36, 217, 30, 213, 154, 105, 122, 213, 196, 245, 249, 199, 11, 23, 81, 61, 51, 159, 117, 24, 114, 138, 26, 2, 255, 26, 255, 245, 136, 120, 207, 145, 6, 83, 18, 247, 148, 113, 72, 38, 20, 212, 104, 75, 143, 150, 62, 33, 193, 206, 84, 47, 9, 251, 238, 38, 152, 90, 69, 116, 60, 245, 233, 151, 116, 171, 147, 217, 157, 99, 240, 125, 238, 10, 97, 60, 131, 110, 127, 249, 169, 60, 71, 182, 66, 155, 51, 133, 225, 210, 228, 8, 178, 198, 248, 148, 81, 154, 188, 192, 147, 41, 81, 183, 164, 144, 202, 201, 91, 127, 233, 126, 198, 116, 53, 213, 173, 237, 215, 237, 59, 164, 112, 98, 63, 213, 51, 216, 19, 67, 8, 95, 143, 54, 208, 231, 159>>}}.
|
||||
{{encoded, "5oK9kpP82o79nM9d3NeVx7YfMt411Li312oYjihxXNpb5jrRtnLiz1fwPDHYPDFg7vUGVYk3iAkTHwR6XEHsHhaZveD4SiRk8j1wvRZDpSYztJS4ZWrxX7o2a7Rzs8Q5Qt6a197cJ3XSvcSfg6LH3qpXRGRMYnf3Cf3oaf81kzQe9jeWwZFNUJuUaALVrJNY6KoStrmPS4tfkMkSNEVwJ8LoVQ5zmawsdksZRbU3U5AjygLWm9Zb2ttfUdouVHe6pDjcmJGMVFWKYPwwPMtEi2YMR89SGneYx9XBKzc7LdbEpJ1VZnNeKRTMFjUQnzcH19iNukxJUFwqR2UwicbWfmAtH93iFDR"},
|
||||
{decoded, <<23, 133, 153, 250, 149, 74, 181, 209, 199, 27, 148, 231, 212, 84, 42, 134, 67, 175, 95, 3, 201, 53, 109, 122, 217, 109, 254, 16, 127, 210, 48, 221, 117, 177, 201, 207, 248, 66, 104, 32, 225, 163, 30, 118, 5, 209, 145, 216, 13, 78, 82, 34, 15, 67, 23, 197, 65, 198, 189, 165, 71, 182, 136, 150, 219, 144, 17, 40, 189, 212, 29, 76, 43, 218, 216, 72, 168, 139, 96, 80, 2, 64, 212, 33, 30, 21, 19, 253, 18, 159, 172, 200, 234, 47, 2, 30, 199, 232, 97, 36, 99, 185, 116, 64, 48, 41, 243, 215, 94, 86, 14, 164, 158, 89, 65, 113, 145, 151, 50, 222, 17, 76, 81, 134, 184, 20, 137, 95, 86, 5, 220, 169, 180, 37, 62, 105, 147, 165, 185, 173, 16, 133, 165, 213, 158, 26, 40, 254, 45, 6, 113, 204, 166, 246, 59, 60, 188, 105, 78, 14, 180, 252, 103, 22, 90, 33, 6, 40, 20, 22, 230, 123, 217, 159, 25, 56, 85, 54, 133, 190, 101, 147, 72, 124, 169, 9, 219, 218, 199, 126, 106, 34, 142, 86, 121, 177, 141, 107, 105, 163, 158, 97, 85, 244, 142, 63, 175, 56, 221, 253, 241, 205, 234, 97, 171, 114, 56, 209, 7, 96, 149, 171, 70, 138, 236, 180, 250, 215, 187, 102, 119, 157, 153, 199, 193, 34, 2, 229, 104, 172, 41, 4, 167, 95, 57, 18, 6, 128, 130, 174, 196, 206, 93, 169, 9, 238, 208>>}}.
|
||||
{{encoded, "43fQ38Wwf3nzNJLhiAxtPayK1F7bwJeJtsU6wMvYaX8fGhaf4cHAGvdW8M9ivYYhY2d92xD8DivQZLWt879JySRyC9HZyTSQsskVQDTx7BmiTzvNFgWk4TNxfNN1HhucMk8ZYn6c9X88AgKQw9QDQsKhEj59tWaTJoYs1Rr9umkMKGg44gZYcyumt3yD6XrMAKgtF4CvYNoKzB2X3BFLQAxD2qw7ZnGWDTA2FgASdWVNAjzxKJbV6b92nNzAndWTp6RrjPwaaQrLi1bdUL3LLqAH2TUovtKhPDrTcyTEZMvz5Vy4ohM9pAw6Ni2wb5CxfrGDPZVfb4rQNaAUXfJpUq4fioz9sxpny9GuFE8jLQGM2RCQ29nFsELKkDcKH4NZtDkMYqaKdCSoxQPCYNMEASxudd6NzynPLugW8US3WCcaE3DpCQHjTXa5V2zroYVjGo4r978DKtta3auinjsqSxQycBYX2xgtCv3cAXFat4D7ZhtJyjDc1iegButdg7YssEpAuqDYbuUMtQkf4emC4tQ66ZuM7Egk5cHfyd4YbT2LrCjjEGi16WWQd3f7bPPUEw7XR7XnU61H2c6qeo43MXWLgvCWUZn9fGWhHceY9wdGzV93hGZMsBFqMYk5ZLXG9oQaPJj3yQ9mhnExpox1cBggec1GMWeHGMA7FLgWfB5uCPPRYa4Rp7Ka1XAd9bzZz8Ngj6Ua7ekor6xH28BesxtvPnf5PUJ4eTQUyrwfgqhxtsVKQ24aXLYP3GxBnbD36nabt1iUBY9KJyoaRuu3eKpKp4FJJtMUYyR9fRovzv4ewW"},
|
||||
{decoded, <<17, 178, 97, 30, 84, 90, 246, 167, 157, 190, 29, 157, 167, 55, 253, 30, 50, 52, 85, 239, 91, 174, 164, 38, 143, 202, 193, 146, 53, 50, 53, 60, 120, 55, 16, 53, 99, 132, 244, 140, 61, 55, 6, 21, 92, 28, 8, 6, 98, 150, 46, 2, 105, 123, 215, 248, 138, 142, 163, 68, 176, 207, 194, 101, 87, 156, 86, 163, 72, 15, 105, 1, 22, 41, 119, 74, 149, 78, 80, 192, 59, 100, 27, 121, 249, 244, 16, 38, 139, 28, 68, 173, 17, 187, 176, 165, 65, 76, 175, 198, 26, 55, 176, 192, 78, 69, 173, 241, 156, 29, 155, 87, 47, 162, 58, 46, 220, 32, 5, 163, 203, 10, 34, 2, 195, 5, 63, 100, 48, 167, 161, 87, 48, 220, 236, 183, 159, 88, 138, 149, 2, 154, 124, 91, 242, 140, 232, 251, 197, 201, 18, 110, 240, 55, 210, 169, 136, 179, 201, 189, 55, 40, 246, 84, 128, 3, 56, 221, 114, 143, 161, 217, 48, 245, 79, 84, 240, 15, 222, 63, 59, 107, 97, 20, 18, 121, 139, 137, 115, 75, 128, 193, 130, 47, 79, 78, 19, 204, 45, 42, 47, 71, 105, 124, 76, 172, 186, 112, 191, 71, 49, 248, 111, 69, 214, 157, 50, 149, 107, 132, 249, 191, 135, 187, 229, 230, 128, 167, 90, 174, 34, 216, 29, 90, 107, 223, 47, 11, 60, 44, 165, 96, 89, 180, 84, 178, 50, 166, 163, 79, 89, 43, 70, 131, 175, 190, 81, 120, 179, 208, 71, 144, 236, 90, 46, 254, 218, 250, 228, 245, 60, 71, 30, 238, 128, 20, 192, 188, 19, 124, 5, 96, 58, 250, 252, 149, 88, 182, 46, 196, 123, 188, 5, 101, 204, 252, 142, 106, 99, 132, 242, 166, 215, 34, 109, 48, 79, 223, 231, 61, 246, 119, 251, 122, 49, 244, 121, 201, 53, 64, 181, 75, 99, 165, 94, 72, 124, 19, 18, 129, 155, 133, 246, 13, 56, 159, 48, 223, 119, 178, 185, 93, 95, 179, 116, 157, 165, 17, 192, 203, 1, 241, 119, 229, 113, 80, 148, 225, 36, 56, 25, 57, 102, 76, 70, 197, 250, 125, 229, 196, 173, 153, 169, 185, 31, 132, 210, 154, 209, 223, 191, 219, 66, 68, 49, 225, 108, 236, 26, 196, 42, 173, 126, 38, 75, 147, 180, 200, 156, 164, 188, 225, 217, 225, 22, 46, 220, 166, 71, 244, 59, 135, 116, 184, 84, 44, 94, 88, 33, 91, 86, 226, 247, 182, 135, 208, 201, 59, 87, 211, 217, 7, 230, 127, 159, 72, 35, 166, 218, 59, 203, 172, 245, 216, 183, 252, 219, 204, 238, 248, 25, 82, 215, 23, 81, 167, 222, 24, 99, 31, 3, 10, 236, 90, 57, 151, 202, 233, 2, 64, 219, 147, 85, 211, 242, 162, 36, 204, 4, 192, 45, 110, 243, 217, 71, 80, 81, 116, 146, 95, 220, 24, 168, 112, 200, 107, 151, 77, 215, 23, 44, 106, 117, 135, 61, 246, 190, 209, 82, 160, 32, 91, 21, 240, 250, 215, 105, 184, 1, 128, 85, 69, 106, 245, 63, 101, 192, 2, 55, 163, 10, 113, 205, 8, 70, 237, 17, 190, 83, 127, 173, 35, 120, 207, 227, 177, 188, 54, 247, 211, 201, 143, 144, 30, 224, 125, 136, 207, 111, 55, 252, 148, 176, 31, 192, 122, 27, 204, 213, 63, 17, 216, 114, 71, 253, 139, 224, 24, 181, 24, 74, 181, 227, 196, 223, 241, 4, 25, 198, 234, 42, 232, 234, 169, 232, 53>>}}.
|
||||
{{encoded, "8pVyNAKcodqxLhw9FGGsVREH54tinUMQbeG9PHVyks2Nwrq8rf9wfLypBksToEYgLdyPodKEBg2iN1GPb3dQEdCurSA6aiZF24Gdi2rYNQdghe76abkPxJ2vE2XSYdHDKFYeJMADbjiXCA6U76zWf3vHvdaGKZapH2p1k9qCwGi4vmdsjpfU7a4XEgoYdZiKxKKwwkJJBhtRDrXBLownDhsa2nhhQqJhGN3oB4Vgnk8Lvubp8nbTZ6r9qyWE9V8qudFmwQCEZF3cwzJ7Dt3yAXjzUhJeeBokdkEoib85GbifZhZNgGHw4pbKWHTTmhwg9uS9SbfDPpiu5taTnftFGDmFRNJE1wgqXkHsuZ8hQQzG3x44Di7ZfH6vSm4eTigdz3QCjqVC23kLMjXKC8XWNaua5pYXckGCrFX1TCDwGVLtX1qLxksDp5i5zukAGfwp492uifDBfXDARzAK1DqQWj8HA5kDAk32mte6d9ivffUBx3MqPTG1XxKFiL3YbtRhrLhWNek8JiStcSxt5Bfco78DzrRPJpDPfPLoxjRhVyRWFAP4iELEtpKBURTNqv8G1Z5RcQT5HhwtcnbJzKWpzu2FC8dfacAFxyNbDFqoUr1YniCateZoKLUwLPiW1hGpjBWtaqZAimBJ6Wt6MMWS9MWwKyKGddQSeLKHPecAHfZBnoXAi669C2LzzPqacbMUDkYtthZqtTd2T3hFo8G1vJaygLGQTmnw2cJ4LYQHu6uhnLFaGTBaTuG122BA5B2Bsk2cwVviVob1q7CAYTS5VjDKdFDrUS443pdqLE1H3HX4cmqpMVQn71qAyL9ZFf67MxxxajCZikZDu7FVTwA7Tqb7vnR5qsbZsE6QtXCTCjVQdKjwqdmVDW4i7wDCjZP8QKhhFK6SeUXv1VHEf2DMzV4AKi18Ze89PpQJCBcGjuKt"},
|
||||
{decoded, <<195, 131, 171, 219, 236, 160, 228, 161, 124, 190, 203, 217, 242, 87, 166, 43, 240, 82, 244, 185, 205, 26, 155, 108, 96, 104, 246, 161, 0, 238, 57, 214, 34, 79, 70, 61, 118, 87, 182, 23, 199, 26, 67, 133, 1, 176, 123, 214, 177, 108, 241, 255, 211, 31, 126, 60, 214, 98, 121, 117, 60, 8, 165, 198, 20, 225, 48, 21, 138, 33, 2, 1, 119, 46, 85, 1, 105, 135, 151, 234, 36, 197, 90, 190, 250, 249, 70, 53, 75, 173, 252, 210, 138, 218, 55, 56, 198, 28, 127, 102, 159, 173, 190, 225, 192, 213, 56, 47, 246, 211, 167, 152, 37, 214, 93, 138, 216, 29, 79, 107, 79, 41, 190, 143, 213, 47, 144, 140, 34, 102, 196, 181, 222, 63, 216, 230, 117, 2, 95, 39, 130, 67, 12, 66, 242, 243, 254, 177, 247, 71, 100, 93, 78, 154, 125, 34, 179, 124, 130, 78, 81, 189, 104, 118, 250, 224, 190, 33, 149, 91, 39, 130, 93, 27, 112, 209, 254, 15, 187, 123, 183, 141, 108, 208, 148, 212, 19, 182, 138, 8, 71, 110, 11, 175, 69, 202, 222, 26, 104, 24, 24, 11, 238, 50, 237, 132, 42, 92, 44, 144, 211, 141, 45, 78, 122, 92, 42, 228, 198, 149, 30, 147, 229, 84, 125, 65, 104, 186, 119, 66, 174, 36, 223, 217, 46, 178, 248, 198, 26, 239, 121, 208, 133, 99, 31, 25, 128, 32, 251, 146, 97, 253, 172, 131, 93, 144, 208, 40, 18, 217, 193, 245, 243, 41, 62, 220, 114, 225, 81, 246, 124, 253, 176, 148, 153, 136, 36, 38, 102, 34, 154, 113, 213, 120, 99, 113, 236, 206, 136, 134, 242, 196, 158, 18, 185, 246, 29, 221, 168, 208, 51, 141, 77, 226, 245, 28, 231, 134, 156, 5, 107, 24, 205, 141, 141, 95, 226, 23, 88, 225, 239, 241, 190, 112, 172, 88, 255, 206, 122, 18, 217, 100, 127, 80, 121, 153, 45, 142, 248, 190, 238, 57, 56, 235, 233, 100, 71, 6, 190, 165, 194, 209, 37, 150, 233, 170, 51, 146, 9, 24, 220, 97, 219, 252, 16, 205, 176, 83, 205, 226, 47, 6, 115, 33, 125, 92, 229, 167, 104, 64, 226, 197, 42, 78, 15, 9, 66, 153, 183, 248, 143, 79, 58, 61, 121, 146, 91, 170, 108, 51, 215, 111, 1, 11, 101, 181, 174, 220, 227, 176, 144, 39, 40, 60, 102, 216, 105, 97, 205, 234, 152, 84, 43, 193, 240, 198, 212, 129, 226, 133, 107, 197, 198, 221, 14, 4, 32, 166, 248, 251, 124, 114, 99, 108, 234, 7, 127, 17, 29, 16, 241, 118, 28, 78, 129, 79, 119, 19, 161, 49, 3, 90, 44, 111, 160, 133, 186, 159, 131, 128, 43, 150, 108, 58, 3, 20, 35, 127, 33, 60, 29, 180, 11, 87, 239, 129, 47, 151, 74, 139, 143, 204, 224, 182, 101, 174, 88, 164, 8, 26, 64, 96, 48, 15, 33, 197, 32, 17, 51, 86, 75, 243, 112, 124, 68, 129, 243, 19, 70, 226, 108, 224, 102, 221, 227, 25, 92, 180, 131, 116, 132, 76, 174, 62, 67, 210, 227, 225, 183, 62, 137, 112, 87, 12, 124, 241, 217, 241, 37, 204, 23, 172, 254, 85, 184, 49, 222, 140, 138, 242, 152, 113, 42, 27, 160, 209, 157, 186, 119, 178, 123, 44, 78, 205, 204, 240, 63, 137, 90, 24, 160, 129, 196, 239, 179, 107, 202, 243, 43, 181, 67, 208, 71, 46, 181, 13, 233, 254, 65, 15, 89, 137, 105, 161, 253, 139, 87, 69, 122, 19, 155, 145, 177, 74, 219, 76, 239, 193, 37, 150, 204, 217, 82, 182, 248, 92, 6, 229, 3, 245, 108, 72, 64, 33, 20, 135, 14, 7, 164, 33, 83, 136, 196, 240, 51, 203, 149, 44, 241, 96, 107, 162, 219, 139, 14, 4, 214, 222, 5, 168, 120, 97, 125, 163, 81, 129, 83, 121, 161, 81, 10, 111, 209, 247, 45, 249, 180, 19, 79, 9, 11, 175, 60, 36, 57, 197, 87, 247>>}}.
|
||||
{{encoded, "Dp4BsGozdvD9gRMUesp87FUDu4YN7Heg9JXgYdwCVpaAn7qktGkExXG9sYPBE4i1Ca71uVWJGX91fWHSPBcb4x6A9L9pTXm4XTKQXpeQB45RjFN1GBBuwD3CS5fc4AaEi12pM5FczJiqgWwZVNMLVcS5nUbLbEHLB"},
|
||||
{decoded, <<31, 11, 153, 73, 216, 43, 203, 98, 150, 102, 160, 216, 120, 126, 180, 30, 26, 177, 41, 29, 250, 198, 162, 34, 72, 154, 118, 107, 106, 34, 49, 140, 5, 111, 181, 255, 64, 2, 92, 151, 138, 37, 203, 68, 212, 75, 41, 206, 63, 193, 184, 109, 27, 207, 102, 125, 188, 218, 107, 48, 34, 149, 167, 7, 152, 112, 248, 116, 103, 239, 55, 9, 34, 161, 54, 213, 168, 241, 55, 26, 197, 226, 48, 150, 191, 69, 63, 167, 186, 182, 23, 136, 245, 176, 70, 158, 165, 184, 43, 65, 235, 164, 212, 0, 60, 124, 186, 91, 147, 245, 46, 150, 86, 194, 33, 126, 98, 160>>}}.
|
||||
{{encoded, "2CoDwcxSvpfye9uJhvhMzY2KNcQgrCQpJbHhSqxaQUMgv5Stdr4Cdqx7M9GEZFEmydf95gQbQcC21svxv1JST3xrvisdiHC7dzDZuZMKPQozUAdez2RFeApb5PYdoH2yLoFKkeA7UFsNGZB1vU5eGtgkTCjm42no7RUk8Vi3fARPem5eEhUUvr7bfkCtV81rUiHqFBguxvyRpqq6Gj3DFDqLH1BUtZJAC3fnNeA4cDSmo4CkCwCgqqKHT4oyWg35qv8a7Sub6qRkJGhqbPiNXWqg2s5RuxzjXwvbEQd8LJaz2H2oFDzUQPp9qpPsC4scTB1EWQ6HNMqkzKwdvdaxKjU11pTrPgMgHwoVaC7SUDrmEsbzNSDCrDkPo98j8C3b3eWuAom7xwkxEX4Jnn4voowztqG2nbxwupGu"},
|
||||
{decoded, <<108, 120, 61, 44, 17, 0, 198, 23, 47, 140, 168, 225, 36, 137, 97, 192, 13, 115, 64, 197, 58, 150, 117, 43, 99, 230, 209, 111, 206, 138, 176, 105, 163, 47, 179, 26, 4, 236, 237, 40, 124, 237, 34, 69, 136, 134, 63, 1, 200, 252, 93, 51, 188, 115, 184, 101, 137, 62, 130, 114, 49, 220, 207, 152, 246, 218, 59, 82, 0, 36, 191, 140, 8, 94, 101, 163, 170, 13, 168, 206, 244, 19, 0, 146, 123, 112, 90, 237, 45, 60, 219, 93, 115, 6, 236, 117, 203, 71, 254, 126, 52, 156, 151, 182, 7, 204, 146, 180, 113, 252, 105, 144, 169, 164, 49, 200, 1, 20, 174, 54, 171, 52, 74, 157, 180, 66, 86, 53, 123, 126, 82, 187, 181, 124, 166, 168, 203, 142, 146, 121, 227, 64, 68, 64, 1, 100, 245, 167, 124, 111, 12, 204, 179, 161, 25, 141, 26, 4, 189, 5, 30, 186, 165, 155, 143, 111, 232, 37, 187, 36, 125, 54, 226, 56, 214, 235, 214, 163, 88, 201, 113, 73, 159, 6, 34, 221, 193, 58, 153, 127, 117, 81, 82, 198, 12, 62, 172, 17, 134, 104, 163, 254, 95, 111, 60, 47, 151, 210, 75, 19, 187, 49, 152, 50, 6, 60, 244, 22, 63, 53, 33, 205, 153, 253, 190, 215, 112, 4, 194, 86, 169, 64, 133, 129, 109, 199, 25, 144, 148, 168, 253, 62, 97, 85, 182, 131, 66, 26, 233, 84, 70, 124, 9, 59, 247, 22, 196, 144, 21, 36, 204, 58, 118, 140, 199, 31, 4, 120, 8, 188, 199, 1, 91, 118, 83, 136, 117, 63, 31, 223, 120, 180, 165, 103, 161, 149, 34, 138, 173, 55, 128, 243, 56, 45, 114, 254, 74, 63, 49, 159, 14, 83, 104, 110, 66, 160, 22>>}}.
|
||||
{{encoded, "Nw1kj93s9epZ2adJrEQdCvjWSUwxeFYwndmzXhHgVk5oUV8RHy5fYwDKmyMbxj9FVJNnA5Fjddb32G4KPx3Gwb7Pv5DHyMzTrKKEGdFrdkC8EQZy2ozTyWzU8K2ynevvjAob3znEi29A8JaFQZj3oMcME5t42EpRMdQD8FjxQnoQJxjU7Zk3yzg3c4hwCNNRyjhc3dcUx7SgKBSUk4LBGTUfWKNXqGHBX4xv5MeQQZtUQKwbbbqzcb6De64FEY6uy7cgJ4GwvmbdxHGCFULRBjyX9KjZkhQVMX7Uvv5V2kHcyKgBxU1KbCrnw3yVNCTk7stqvUTf7Qb2r3du3yG2HgfPem4gUBTW9ogbfrGsGCd1LT7GrhrWjjBDeZPerc5HKg6XJFfYwf5aH2cnzzeZrBNMm9fksHfGmPaRVW373Sk89mivB9xAUqQe8E5tCFLBFv6xDGdaw1ws47Z8CsrxifNvG48uDKWPm4e9S5otEX3YcMYN9hdP"},
|
||||
{decoded, <<192, 84, 64, 14, 90, 228, 8, 227, 120, 131, 205, 100, 133, 196, 167, 86, 231, 245, 124, 169, 251, 84, 250, 59, 193, 151, 183, 92, 250, 180, 118, 30, 241, 8, 146, 98, 53, 200, 17, 200, 219, 193, 213, 207, 232, 38, 23, 187, 131, 31, 100, 110, 136, 133, 153, 234, 141, 172, 186, 183, 95, 40, 54, 87, 22, 199, 60, 49, 199, 147, 182, 146, 242, 23, 242, 182, 151, 82, 133, 169, 202, 181, 224, 219, 96, 222, 218, 132, 214, 159, 113, 2, 27, 13, 132, 166, 130, 181, 140, 250, 134, 66, 207, 187, 143, 166, 184, 1, 30, 242, 243, 172, 47, 8, 1, 242, 122, 23, 226, 198, 129, 75, 205, 178, 2, 129, 236, 198, 243, 194, 99, 4, 136, 239, 90, 55, 40, 109, 79, 5, 203, 87, 94, 173, 70, 116, 218, 178, 169, 152, 103, 251, 202, 18, 132, 74, 157, 220, 183, 240, 15, 9, 75, 202, 195, 221, 155, 81, 105, 186, 164, 196, 198, 211, 111, 127, 201, 193, 127, 132, 227, 151, 7, 84, 197, 44, 217, 188, 84, 121, 65, 126, 248, 221, 121, 23, 48, 103, 211, 90, 190, 38, 119, 190, 88, 109, 84, 130, 178, 227, 247, 208, 116, 198, 143, 23, 158, 148, 69, 241, 112, 154, 146, 90, 187, 143, 26, 83, 210, 50, 46, 58, 143, 212, 148, 106, 1, 172, 52, 197, 226, 117, 39, 134, 221, 28, 88, 7, 67, 73, 39, 185, 55, 22, 163, 224, 215, 142, 145, 98, 226, 156, 159, 18, 67, 164, 45, 46, 234, 92, 159, 142, 202, 140, 42, 28, 10, 74, 0, 22, 23, 233, 156, 64, 5, 52, 149, 209, 144, 28, 97, 93, 137, 106, 8, 135, 3, 100, 239, 17, 28, 251, 60, 59, 217, 236, 73, 60, 92, 39, 170, 54, 196, 157, 246, 53, 152, 142, 84, 95, 103, 9, 133, 144, 239, 31, 5, 124, 43, 90, 136, 29, 151, 240, 215, 66, 151, 167, 181, 178, 71, 102, 207, 249, 177, 186, 205, 23, 168, 9, 31, 150, 152, 25, 228, 4, 134, 133, 32, 15, 208, 191, 249, 55, 7, 78>>}}.
|
||||
{{encoded, "XpEinoQ8DKLXq43Ta2KgHNDCqPPUyjGdfdHcZKNygpWXux7spZa25fSpasoHXXdPbwkK3tX1zjLPHfCrKcvFwrd3Dvz7BBLJnE57xru6i6ytS6TXmS146bvnyxze5RQ"},
|
||||
{decoded, <<132, 158, 92, 82, 253, 111, 33, 34, 101, 68, 73, 137, 224, 97, 167, 28, 120, 84, 73, 32, 6, 149, 178, 174, 182, 80, 121, 59, 32, 40, 197, 236, 158, 189, 239, 234, 140, 172, 110, 153, 81, 146, 46, 93, 235, 64, 226, 75, 154, 251, 118, 186, 135, 34, 0, 67, 226, 31, 250, 177, 67, 56, 70, 229, 246, 130, 53, 90, 216, 105, 253, 242, 135, 0, 147, 110, 126, 140, 156, 47, 85, 173, 37, 43, 139, 224, 38, 222, 223, 146, 121, 155, 79>>}}.
|
||||
{{encoded, "FGocMyoj6aR8kmyUCnHM7fJLuW54vtnrnQxeKsDDWNRj4V2SHDEpPCivLUpK3Q8d5tbThWUN1SJLabP9bLeam6YKJxGiG3Lq127GHiirffVKNoyrS31J7qg53kwgKXY7yVVRLLS1AewCj7LQAkoZfVNkHnen7YcHEUj4Y917VPhVzVVMmULq9TagEvbtTvNfNoh13mptTACLNwNDDVZSwQt2KdPRXbR3v1mNZoQCDTBiqTnAeAP2YxSy75nhuWnggwv7SwjPHpf6yzCQ6DqCkbxQcgg7WtjQG22azBT92196N1uViPFbuUVMxQJZhvavxiuT6VzNxUotxKwThYqG5gXfuBtGXb5aF1X8S6E2Lros2He4q1Ag5sAY4JF5Bkm3R7y8st185HD28RbpkgBiHPefs8UfZRavPDxEDmTXSKfxTH2ZCYV1YkkV41CVKA4JvjzZwUWJRywHzeUH6Ws8ufTE6F4FWnSaUgGVNFUnQ1jitkpaECXWwXgt34AUrkjMTbEdVTkBTeWytMSDQDZ3iNf1fwsBdxx9cq7SoCrYKnViyfvkZbaJDeypLX8wJqarH6DRDW5XzzWxcNtyDDyU8LPX1EdqagEU5dwZvukwbGAnLWhNYZ6MU5bdpMFfASKJu78tHCnJzpbbHuyjTEj6dFuzfkFeRv2xSmWqcXpgdvAtb8TjCc"},
|
||||
{decoded, <<253, 48, 80, 180, 194, 183, 178, 232, 232, 73, 126, 175, 55, 30, 86, 55, 218, 210, 94, 145, 145, 149, 165, 24, 190, 155, 191, 148, 9, 224, 230, 212, 31, 59, 146, 194, 237, 242, 16, 72, 253, 193, 163, 7, 109, 117, 188, 60, 73, 233, 79, 105, 91, 138, 129, 168, 91, 133, 109, 118, 244, 174, 51, 215, 65, 8, 103, 237, 54, 5, 229, 50, 240, 234, 233, 117, 166, 58, 142, 6, 220, 97, 253, 70, 126, 158, 234, 62, 40, 207, 33, 247, 60, 64, 210, 21, 29, 95, 93, 197, 181, 246, 14, 21, 116, 219, 129, 223, 205, 121, 145, 83, 171, 222, 81, 8, 75, 154, 31, 215, 206, 195, 162, 9, 153, 105, 42, 64, 31, 96, 184, 60, 47, 230, 255, 241, 48, 209, 168, 12, 23, 5, 111, 164, 217, 242, 38, 144, 166, 162, 254, 147, 122, 220, 55, 217, 17, 156, 212, 128, 252, 7, 26, 176, 73, 26, 197, 254, 253, 31, 213, 141, 28, 247, 177, 82, 203, 94, 253, 91, 249, 90, 51, 12, 53, 194, 18, 169, 158, 214, 186, 222, 26, 97, 181, 129, 122, 98, 105, 108, 80, 202, 81, 91, 177, 127, 249, 239, 182, 182, 213, 177, 28, 83, 254, 103, 227, 208, 189, 142, 254, 122, 155, 30, 168, 207, 59, 146, 230, 64, 219, 128, 111, 166, 116, 32, 65, 130, 147, 62, 23, 12, 213, 220, 191, 80, 8, 201, 147, 83, 68, 72, 246, 38, 192, 163, 156, 213, 58, 110, 179, 22, 53, 144, 232, 98, 175, 58, 109, 164, 241, 38, 201, 195, 56, 115, 245, 115, 176, 241, 1, 23, 204, 108, 138, 241, 15, 208, 145, 79, 167, 167, 244, 64, 82, 50, 116, 72, 159, 23, 189, 23, 4, 71, 211, 232, 251, 98, 25, 171, 223, 233, 102, 36, 59, 0, 208, 116, 175, 91, 153, 236, 99, 28, 7, 215, 217, 176, 225, 218, 105, 82, 8, 167, 186, 126, 80, 37, 62, 233, 225, 179, 196, 184, 8, 104, 74, 94, 56, 203, 173, 154, 39, 242, 29, 46, 121, 117, 2, 184, 160, 5, 97, 253, 162, 44, 3, 48, 96, 154, 145, 34, 181, 111, 102, 78, 78, 73, 83, 8, 170, 16, 100, 186, 51, 100, 94, 96, 78, 143, 115, 4, 41, 198, 143, 204, 169, 93, 29, 121, 202, 147, 210, 214, 50, 166, 77, 171, 42, 115, 57, 138, 228, 163, 244, 198, 80, 199, 148, 204, 10, 6, 184, 50, 46, 243, 181, 64, 43, 5, 94, 123, 161, 115, 169, 224, 168, 15, 125, 51, 100, 85, 103, 4, 73, 44, 193, 173, 139, 59, 241, 46, 32, 167, 194, 197, 58, 21, 216, 234, 12, 111, 92, 155, 156, 107, 177, 233, 192, 239, 43, 241, 13, 5, 163, 75, 158, 252, 175, 85, 125, 125, 167, 52, 12, 76, 117, 33, 252, 93, 234, 128, 216, 174, 215, 120, 170, 215, 70, 171, 191, 50, 235, 27, 137>>}}.
|
||||
{{encoded, "ZMjRHVQ6b4E6qoWgpU7rUdVaesajSHan5uGt8ybwnp8qHsbWeZWSEkhVEKx1GX2qrNCDEnrxY7Jm7e1zDky4FUFyWLBgM92MwhhYdKfHpQmuYdPgMQ8rJ7rfXmwX1WMB2JLBvf4fXWoA2oBdHpXLMNJaguxFvoQbgpLQrBPrY4QLeugGo87AzLxnjysTr6E5Ze2tWhkm3R48EmSxmdL9AdjDVG2yh97KEBq2TFWpRFzafTj7cirke49Wj2gYNYBYSv8GeKEiwcuH2SiMZDMu3eeMnVz7JP6PjpnJpmPkbXu3FFb6z7tK81A1EjFjFzxMA51qiUaT8aGKGZhEyaHmChx1mNrXo9EHyfWarRN4wrHH1Vyma6vB6UFPpNA7db1zg8T6HQqDUpayjqBTUXin7s89Ho4X4jcXonej8bttpbcwntgBTRYuWEcYg7Ppd521zXCCzSNSxyT1sm9XiWnuNr52K54JZGJFJwZSS9GUbcuB5DSzAFy6JRWA8yu9C57FtjTp8fmKTbjZGXmVANuGk1xayqb38JffGUHcFSDVUawPsTXqMFZwmovnWTGz93vNzSLvh4C3m2jhrEvKCU3tHxTX8xe9MFKCX5eBme6RdcshDGhZwaNZcooMAwtvHS4Wo57sModF2XX7ufgjd9J2KhYVFHHGqkuzZjiF44BEHuXG6pVGehtWWPuG4ovCwL6eo1XsQVxaRb6EQ8rDoshosrCxy9ZmfrmB9JvyPRMPBEoG7fNdbszjW7LtUs3vjUyDBLvFTE1ciZgwLieBXgGiyrYNqjiT6Z7TozyPzMDYFkyYVx5Lo1ejQKQSWirxhWKZRwr49TxJaAq1ipQMYjz5KSb"},
|
||||
{decoded, <<212, 145, 246, 3, 2, 250, 116, 116, 163, 85, 81, 39, 141, 127, 0, 141, 114, 152, 190, 66, 150, 23, 51, 73, 55, 244, 176, 18, 34, 114, 48, 19, 171, 246, 174, 69, 45, 51, 121, 203, 70, 187, 70, 254, 233, 170, 76, 25, 98, 81, 96, 32, 26, 228, 190, 164, 194, 129, 15, 76, 19, 143, 112, 178, 220, 198, 15, 148, 161, 188, 196, 108, 116, 183, 238, 107, 186, 91, 233, 127, 203, 14, 248, 133, 217, 124, 194, 148, 137, 144, 131, 140, 18, 110, 219, 158, 38, 248, 115, 128, 191, 68, 234, 224, 142, 205, 142, 194, 171, 146, 32, 186, 67, 181, 18, 49, 170, 192, 178, 121, 215, 114, 180, 140, 71, 47, 104, 179, 134, 206, 218, 210, 218, 31, 214, 115, 31, 71, 28, 134, 58, 129, 36, 125, 71, 226, 51, 49, 68, 199, 147, 15, 95, 100, 116, 193, 110, 101, 67, 132, 79, 252, 248, 129, 161, 45, 17, 154, 25, 96, 46, 73, 202, 22, 19, 131, 15, 183, 97, 31, 171, 176, 39, 58, 187, 63, 16, 24, 0, 3, 84, 79, 106, 251, 121, 30, 187, 218, 116, 233, 68, 229, 131, 206, 193, 150, 113, 87, 87, 33, 170, 65, 212, 64, 126, 165, 251, 35, 87, 163, 222, 73, 186, 17, 25, 248, 64, 38, 77, 90, 136, 66, 208, 193, 178, 56, 57, 22, 179, 195, 40, 194, 186, 219, 192, 254, 27, 150, 94, 174, 69, 135, 126, 245, 171, 111, 172, 120, 169, 218, 97, 158, 18, 173, 168, 214, 9, 210, 203, 207, 224, 170, 137, 185, 224, 179, 114, 171, 177, 99, 221, 199, 255, 202, 57, 1, 68, 40, 47, 171, 132, 144, 154, 63, 52, 85, 180, 75, 192, 49, 13, 251, 18, 148, 60, 70, 190, 87, 63, 9, 134, 158, 88, 142, 11, 120, 208, 255, 121, 179, 205, 219, 181, 113, 75, 146, 176, 200, 169, 139, 139, 210, 106, 165, 21, 235, 33, 56, 6, 130, 217, 119, 197, 131, 98, 50, 133, 227, 16, 48, 40, 104, 238, 89, 37, 84, 199, 127, 172, 86, 245, 207, 122, 200, 166, 114, 42, 169, 65, 89, 170, 153, 234, 36, 20, 63, 56, 26, 134, 23, 219, 253, 112, 184, 181, 103, 223, 205, 77, 101, 191, 215, 87, 199, 15, 33, 71, 36, 213, 203, 116, 249, 165, 8, 178, 205, 189, 195, 93, 37, 99, 215, 194, 56, 188, 11, 127, 242, 76, 31, 70, 131, 195, 149, 202, 145, 55, 167, 1, 23, 227, 182, 69, 109, 174, 208, 194, 169, 79, 222, 129, 170, 8, 23, 235, 152, 224, 229, 155, 146, 27, 122, 17, 55, 208, 113, 175, 150, 195, 186, 101, 110, 21, 152, 198, 156, 195, 107, 28, 215, 71, 37, 116, 43, 119, 50, 132, 187, 27, 234, 106, 68, 131, 199, 56, 165, 248, 13, 78, 226, 24, 151, 249, 95, 61, 193, 229, 23, 64, 240, 217, 191, 249, 247, 248, 223, 242, 13, 212, 176, 246, 210, 190, 80, 24, 194, 236, 231, 66, 250, 193, 84, 107, 11, 182, 6, 229, 33, 140, 208, 149, 62, 18, 73, 41, 107, 222, 34, 72, 124, 162, 103, 149, 22, 33, 99, 79, 47, 100, 146, 237, 47, 219, 112, 200, 78, 86, 8, 248, 21, 132, 129, 37, 105, 216, 4, 63, 161, 142, 82, 84, 190, 199, 78, 26, 16, 51, 233, 209, 180, 229, 154, 78, 116, 132, 1, 76, 153, 66, 204, 245, 194, 88, 212, 175, 42, 157, 208, 75, 180, 7, 161, 241, 137, 80, 182, 206, 252, 253, 177, 221, 130, 178, 91, 54, 210, 244, 193, 209, 219, 153, 166, 158, 55, 164, 132>>}}.
|
||||
{{encoded, "DbggnjLbJZ8pqzNUQCAva4HjvNEP26vE8vmg8jbdWyJoZhkcbo5ZLL79nGwDe6q2D12biqTMSmEo18AzRMyDhN2fVYPPr2JCUhvUeYLTaTmiWEu5iXtDjhzD8fajFWRAVEa3RR36qGJVSYqoU4Ru87621U6Bzrc58TPC2JKdaLHufYdsJyi5baBsURTTep7WP7oa7dyLMs5FKz3itFWENQC1Vu8rL7sCBTSDSDabBK3oMDSE258AtjCPXygjz4eHedZCEoU7UZhL3VUq3dc95iKqVbg4iqZ41zUwL61kRPVVJXSdNXmwVGPd9K9j7E9CUdQrn63h4n7BpSK9CRQTT1vGg8o1YLLEwVUJNfCPmPZowXST8ZxXfgjaZ4v2HTxNL4fuaWoTWeMZVWXYQvJQtHbL3XPuKinejpGbk1jKyRMjeBxepvVnxN7tnpgBMfwZhK7rC7m2cm9a5Wu8SiHYCsANUH28qFLDsqLGeJ7ytx7y9S76JzXXNsDvFfWH98nA7m2ZAEmpweDkoFE3DqjybY24XeWmyZ6LMpt9juDSkiYuCnccPLDgkLYrgEtyy7Z3GDNwDjxc8mmGbCnvsM2ziN2T1KSCU6CVcKVpSaHy88YMTWEiYCoLbT7o81hDVmQfBGiTS2jDNTgcMJhF6AaTv8gm6KyNAxRJiYVHxV8E59CVPBuwYyYkzWtVsvRngzo214EjKw2LLU267VeTdpHVNx9tpYjEzXebfuzbWkMCkTSUUuKLk5jQy114F7swrQunkFankYWguo4LR94VLsVZCRJ8wCKzNtxWBS2nyn4HaECZgJFvUHT7ng"},
|
||||
{decoded, <<33, 77, 54, 182, 229, 67, 5, 48, 219, 64, 240, 102, 236, 142, 213, 145, 92, 100, 54, 75, 103, 75, 162, 130, 184, 3, 85, 69, 186, 149, 212, 106, 196, 57, 210, 142, 220, 90, 104, 214, 222, 177, 53, 95, 58, 124, 69, 193, 184, 175, 92, 165, 15, 79, 81, 134, 150, 10, 138, 27, 184, 20, 173, 35, 204, 184, 195, 144, 246, 30, 230, 90, 157, 30, 35, 30, 173, 102, 55, 11, 7, 174, 213, 152, 102, 135, 177, 1, 10, 53, 119, 162, 60, 182, 241, 40, 113, 95, 249, 93, 110, 232, 74, 237, 115, 196, 97, 25, 7, 149, 5, 176, 181, 173, 28, 123, 218, 245, 125, 179, 28, 214, 15, 194, 230, 18, 125, 213, 87, 56, 233, 6, 13, 31, 109, 30, 40, 202, 68, 133, 190, 205, 200, 250, 173, 219, 181, 43, 44, 216, 221, 221, 125, 241, 236, 112, 193, 16, 243, 86, 61, 191, 229, 188, 70, 159, 195, 215, 113, 116, 116, 108, 145, 106, 178, 73, 245, 85, 96, 94, 152, 66, 177, 173, 212, 206, 71, 0, 229, 223, 242, 37, 89, 5, 248, 139, 215, 107, 216, 76, 169, 78, 115, 218, 84, 2, 210, 49, 140, 152, 86, 23, 66, 7, 185, 98, 8, 127, 238, 236, 126, 207, 126, 220, 166, 70, 174, 95, 167, 35, 161, 121, 214, 129, 32, 68, 127, 37, 161, 235, 137, 71, 37, 161, 230, 136, 2, 90, 92, 88, 246, 27, 175, 25, 99, 61, 197, 128, 170, 211, 123, 194, 196, 91, 48, 152, 146, 47, 163, 4, 227, 116, 254, 202, 48, 143, 194, 72, 193, 18, 115, 154, 35, 160, 76, 121, 59, 101, 216, 49, 90, 215, 197, 177, 221, 47, 211, 178, 45, 23, 67, 35, 26, 215, 67, 117, 34, 59, 215, 76, 219, 174, 29, 16, 226, 28, 41, 193, 192, 113, 194, 154, 189, 194, 45, 55, 80, 147, 100, 78, 120, 52, 194, 60, 238, 174, 127, 182, 237, 42, 142, 185, 70, 187, 132, 142, 141, 230, 22, 234, 72, 144, 233, 45, 143, 146, 129, 94, 146, 39, 170, 135, 76, 117, 129, 129, 224, 222, 7, 110, 11, 125, 141, 167, 179, 230, 159, 47, 140, 44, 158, 35, 187, 133, 107, 148, 51, 171, 136, 139, 210, 235, 14, 245, 198, 92, 40, 5, 212, 146, 75, 82, 3, 11, 234, 244, 236, 4, 200, 223, 178, 111, 239, 44, 231, 193, 145, 246, 101, 97, 95, 172, 85, 49, 254, 134, 68, 204, 148, 88, 243, 199, 39, 25, 51, 224, 242, 28, 74, 22, 195, 211, 135, 252, 158, 87, 241, 202, 166, 33, 82, 113, 38, 44, 169, 252, 127, 134, 116, 202, 5, 167, 51, 190, 27, 95, 60, 211, 183, 36, 90, 85, 21, 143, 200, 136, 5, 77, 238, 50, 13, 94, 249, 7, 77, 203, 214, 27, 13, 218, 54, 176, 164, 9, 138, 96, 101, 237, 191, 197, 191, 170, 251, 42, 79, 200, 199, 107, 140, 192, 106, 36, 226, 171, 118, 200, 251, 109, 228, 63, 185, 117, 159, 122, 141, 234, 74, 73, 72, 73, 21, 185, 62, 38, 236, 13, 143, 158, 69, 32, 27, 248, 166, 163, 62, 234, 102, 143, 200, 183, 210, 198, 34, 205, 173, 197, 57, 16, 136, 153, 167, 82, 81, 54, 225, 227, 184, 2, 81, 149, 144, 172, 49, 130, 44, 109, 148, 59, 50, 113, 133, 161, 138, 213, 227, 27, 231, 79, 233, 51, 125, 98, 159, 166, 188, 96, 74, 251, 131, 78, 231, 97>>}}.
|
||||
{{encoded, "T7wKWZwEYLmsLaaypA1uPWNoXAAeQ3vdWJ7JNqnyeiTYDdARSBnSQEu24aDp5aXUjrqdcdSK7mm8hbFVjhTJKbwiNvVau8zTVKqwVwz36Vqy5mgA7nq4LUuQXQiizrfvJfoGzrP4ivK1kxzaAFfV3UKRMtvQWH6rMiCpP1jK8bzy4D2wxcdfKi5ozDLxrbqS9ZFSS7jSTaTrXFPhNhi6sGzWo8nqoa68FZZVtJsUdHvBoENJMvyPC9Ng67sAEJhvqoTfmNXEnpJdrRqKWxvCzgfA7hQT32dKErHByacPVuvP8FBPg7JH3oeq2L1nixbooCH6cdHaRiPzRoScVb7pFp5vkCaiJsc8bxGmfgQDesq24QTXgPTiaJvbM9GtFXZPUk828ZsRBtZBouJAHiF1noqZHg917ur9pfyhGv7zqN9FTASypbLVSSiJXg1KTEx3Aqo4F14uyAwaQMXuJLhRZC5KtiUfbNdWmASvcTKrWUc6pPD6BgWdQLEnUCpDEgqiALuDDJ9o16HTBsFyyFzPMVf5BptyeDc1EnQURKnbV9cbWwtSv4rnPJYABjBWyKfJ6eRDHowwmxC6AVxHfrimqSkw6wi9icnkFomyMNLNpmA1Fe6Skh9kjLnyp5oxCfqtQhtN2td44gRfMuM2UyGnePS35DKcyR2XdoGAkXx2HY2p9ABrqcLvfkwGWyjVqPicV94aYcYD9fBLQBY5AS78jgVUC98PbBcL4nkVEPRdjCycfKycayYgLKgrZhcJtusAtSKaVK7gPCuCmVzEAzRdSN57N5dXke36x9U6VQzBBrWJ7xnrDnFFdN9qiydDTojAmY59nCJfBbbEgvxnKe7vXVeVMqw5iYu7c4GCQVLZRYSGGsYNCYgGfcXvYXnb7JjNQDHu4adHYkfCwSXx6BoD1k9W5TNaKb87CGgiSNvFkAM8T3fNeUJ5BYPt6hmRfziKKnsFbpq"},
|
||||
{decoded, <<183, 32, 141, 88, 248, 254, 7, 151, 207, 73, 213, 92, 254, 159, 244, 123, 85, 100, 44, 18, 39, 235, 236, 206, 84, 229, 111, 172, 55, 89, 236, 228, 219, 245, 141, 45, 4, 17, 8, 89, 250, 137, 248, 221, 223, 189, 111, 95, 241, 110, 167, 226, 109, 51, 121, 215, 93, 140, 135, 31, 16, 25, 75, 94, 33, 190, 243, 213, 108, 158, 75, 171, 30, 12, 12, 1, 55, 166, 164, 49, 226, 137, 219, 163, 222, 31, 200, 42, 126, 136, 132, 10, 88, 39, 121, 56, 199, 65, 137, 182, 226, 29, 108, 57, 159, 65, 33, 45, 56, 188, 222, 89, 79, 149, 97, 99, 115, 217, 214, 117, 71, 17, 197, 160, 99, 189, 140, 244, 2, 26, 247, 124, 118, 106, 95, 86, 68, 232, 154, 222, 192, 137, 171, 196, 135, 155, 218, 26, 2, 246, 169, 167, 238, 114, 24, 26, 50, 102, 210, 127, 254, 197, 179, 95, 151, 68, 183, 138, 105, 53, 177, 94, 129, 129, 215, 20, 181, 174, 225, 23, 86, 251, 208, 105, 56, 189, 235, 104, 126, 222, 165, 181, 72, 58, 12, 29, 62, 35, 160, 114, 159, 172, 147, 214, 239, 1, 214, 56, 86, 249, 36, 164, 141, 118, 37, 86, 143, 80, 235, 61, 245, 10, 221, 127, 8, 194, 156, 165, 171, 122, 210, 203, 180, 116, 178, 94, 184, 138, 243, 166, 13, 138, 133, 167, 171, 6, 171, 55, 48, 49, 153, 206, 74, 249, 197, 254, 2, 134, 126, 213, 176, 183, 27, 209, 180, 196, 79, 140, 241, 109, 225, 17, 134, 52, 174, 72, 204, 132, 62, 101, 30, 74, 191, 48, 34, 8, 110, 254, 254, 233, 72, 163, 209, 230, 164, 210, 5, 204, 107, 78, 165, 88, 6, 177, 22, 218, 159, 180, 17, 143, 57, 85, 194, 231, 147, 171, 191, 157, 145, 34, 219, 27, 16, 77, 121, 107, 104, 191, 75, 17, 85, 204, 200, 134, 202, 254, 108, 167, 242, 105, 90, 41, 227, 195, 171, 129, 62, 62, 19, 232, 38, 231, 146, 225, 69, 252, 231, 202, 210, 26, 17, 188, 22, 204, 159, 135, 81, 4, 234, 42, 43, 40, 40, 227, 229, 131, 110, 192, 198, 175, 161, 192, 244, 99, 124, 247, 16, 225, 204, 242, 234, 59, 73, 8, 150, 228, 209, 114, 85, 160, 183, 165, 89, 174, 195, 94, 2, 13, 102, 37, 100, 251, 113, 60, 160, 227, 103, 34, 154, 86, 241, 121, 192, 218, 138, 158, 50, 4, 134, 76, 158, 224, 54, 138, 46, 232, 189, 112, 118, 175, 77, 4, 197, 66, 28, 248, 95, 148, 47, 115, 238, 166, 141, 22, 215, 87, 33, 172, 140, 178, 65, 111, 153, 79, 56, 59, 209, 25, 143, 62, 146, 121, 155, 216, 61, 164, 17, 3, 251, 58, 225, 46, 247, 105, 230, 51, 72, 169, 55, 245, 179, 250, 44, 126, 150, 242, 153, 252, 218, 88, 67, 6, 3, 75, 13, 172, 88, 225, 96, 77, 90, 238, 155, 86, 121, 10, 110, 79, 145, 111, 183, 113, 93, 113, 73, 185, 117, 221, 166, 56, 216, 88, 114, 174, 240, 39, 81, 123, 22, 224, 103, 71, 54, 35, 57, 229, 118, 142, 128, 158, 160, 89, 252, 99, 200, 140, 207, 185, 86, 39, 178, 178, 182, 171, 187, 88, 211, 240, 148, 55, 140, 121, 178, 167, 52, 250, 135, 81, 213, 112, 85, 90, 246, 35, 0, 237, 114, 120, 247, 38, 120, 38, 135, 153, 148, 37, 141, 234, 179, 64, 151, 190, 197, 185, 8, 138, 172, 70, 97, 141, 20, 194, 60, 15, 176, 118, 35, 30, 24, 56, 185, 105, 3, 90, 45, 153, 241, 45, 124, 113, 19, 137, 59, 41, 10, 54, 175, 95, 1, 35, 11, 137, 245, 149, 211, 206, 210, 61, 28, 124, 85, 69, 109, 88, 231, 196, 231, 154, 4, 84, 91, 40, 171, 200, 23, 41, 230, 37, 8, 155, 23, 136, 116, 94, 116, 112, 186, 234, 161, 142, 182, 8, 61, 227, 187, 65, 133, 177, 223, 134, 39, 99, 45, 87, 133, 151, 121, 222, 130, 57, 70, 225, 228, 68, 168, 159, 234, 142>>}}.
|
||||
{{encoded, "JuPVTmdkSiSTyTSKHB53qrHjswnDwfTKvWDgM6wnVxGjAkt5TeaZafdpgkmxj14aevuQdnDgDq18Brcc1Kb8ZFTpJSLhYskSARUNSeW1R2igxPb2pzmvSRUHZ4Q1qTczWSjta2NaBFG8LjTEi6Psa44d76qv3PrHjCRp4EgKShDLZxrj5oXTcCAKR65nuzyFtioAFaP2mm8itw1Sz65QdaSgVjotxkfoivHDd6Smit3VjtJBNE5T5XW7kw2iNLbT58PjLfyBe1QCBDFmJ4eFDdt5Sw8akqSNQF1FDZ2d9Zbu1cHstnFD1YD5CNjyGwC5VB9SCBiJvHdbRMFGDAzjEhV8D6TAMaGVVkhd8F3YNoBjzXknwfHLh4KtfFwVTtUdHqqXfvbiKuESmy6bDa5ZTB9y7qzfyewd91tYh11T8chVVzrK7XJy4YFBwByiz8QkA62D9Mdncn4gbw8qYyufiuriM6BwU7PNtGF9B9Fo1aSVFQrawRvNHiQ2vz8QLsr2TrAQcNLqL2mJuQAJwMFiJLkVDjTEqXBcxdTNPtgezuFbDJDyhoEdvBFQef1be8hExD5JrgtJrsfWb7mvpnmiKSM7Fw7LfMn7v3yrpoWP5HNk3bUKTHZC12nhgSHSRxTtd2c8awNso8J3hnDWGzzLmf533hR1ebk2WPuBwqrKbiqepCveoLsztRVBTm7C6abF7ykaFfNnTLfhod7sJF6cqyzbSg1KYc5uXLApDuuM9qKjUoRYXJtZkxVa"},
|
||||
{decoded, <<5, 43, 29, 181, 105, 131, 166, 174, 22, 71, 149, 230, 181, 169, 80, 121, 122, 159, 102, 148, 235, 172, 21, 240, 76, 167, 9, 50, 21, 111, 136, 62, 81, 75, 49, 190, 5, 160, 209, 61, 154, 71, 169, 190, 2, 136, 237, 11, 111, 69, 103, 139, 143, 160, 74, 226, 100, 113, 144, 119, 11, 12, 176, 69, 64, 28, 144, 88, 46, 61, 170, 181, 78, 164, 11, 82, 212, 108, 43, 105, 164, 112, 31, 43, 224, 120, 212, 71, 60, 171, 218, 58, 88, 187, 21, 22, 138, 95, 139, 71, 223, 31, 251, 238, 238, 214, 37, 34, 206, 118, 10, 231, 145, 76, 148, 89, 98, 145, 105, 162, 233, 46, 130, 48, 232, 221, 253, 89, 71, 11, 140, 60, 139, 142, 213, 45, 233, 14, 90, 31, 186, 184, 27, 151, 228, 247, 184, 124, 194, 82, 200, 162, 24, 182, 240, 6, 101, 174, 21, 179, 155, 215, 146, 102, 62, 227, 136, 191, 157, 155, 32, 80, 186, 91, 139, 136, 202, 187, 50, 15, 173, 169, 228, 231, 215, 204, 254, 242, 147, 106, 91, 169, 160, 233, 168, 38, 152, 178, 223, 235, 49, 245, 4, 185, 169, 166, 116, 84, 8, 6, 140, 52, 83, 240, 198, 80, 21, 245, 127, 102, 162, 233, 167, 121, 164, 239, 252, 36, 229, 115, 6, 231, 198, 108, 220, 155, 251, 127, 42, 7, 52, 207, 184, 93, 167, 141, 25, 18, 209, 72, 104, 250, 24, 216, 221, 56, 66, 183, 175, 1, 186, 61, 207, 105, 10, 152, 213, 16, 184, 40, 107, 232, 2, 110, 4, 132, 196, 199, 46, 33, 246, 78, 189, 55, 76, 16, 12, 211, 15, 20, 188, 248, 40, 181, 253, 188, 89, 42, 251, 134, 220, 104, 33, 213, 230, 162, 5, 42, 24, 156, 56, 210, 78, 94, 109, 178, 23, 245, 222, 209, 45, 180, 138, 19, 150, 124, 125, 176, 178, 212, 121, 8, 91, 97, 67, 120, 174, 60, 118, 180, 218, 155, 238, 146, 136, 100, 191, 62, 214, 36, 216, 41, 165, 57, 190, 129, 109, 111, 25, 173, 111, 69, 132, 160, 27, 64, 126, 105, 110, 212, 132, 185, 151, 156, 183, 25, 146, 195, 194, 152, 150, 253, 82, 233, 43, 48, 113, 115, 167, 152, 168, 254, 80, 56, 163, 18, 40, 59, 126, 132, 91, 34, 51, 47, 94, 149, 130, 117, 74, 61, 68, 143, 25, 246, 160, 139, 81, 125, 66, 177, 15, 34, 176, 48, 47, 80, 33, 95, 231, 68, 191, 18, 5, 47, 92, 134, 186, 97, 143, 28, 232, 155, 117, 142, 48, 37, 233, 111, 24, 119, 215, 202, 235, 76, 66, 96, 177, 115, 94, 193, 199, 159, 239, 125, 255, 15, 126, 78, 85, 216, 129, 237, 181, 139, 153, 123, 92, 0, 37, 79, 200, 246, 121, 145, 221, 130, 161, 170, 214, 168, 198, 223, 11, 30, 234, 148, 185, 33, 68, 45, 236, 255, 132, 35, 231, 184, 157, 153, 22, 247, 77, 43, 144, 99, 96, 8, 45, 95, 51, 152, 31, 151, 105, 243, 138, 254, 162, 225, 125, 230, 160, 183, 177, 133, 176, 92, 137, 141, 219, 234, 35, 70, 23, 1, 212, 126, 137, 7, 239, 110, 115, 182, 125, 0, 192, 51, 13>>}}.
|
||||
{{encoded, "3HzjeQLCACibXxRDM8jzBVDGXsYq8gpLph5wdWxhx2V1JmtAJdQogi4susza21Pp7bVPwMTL8LR8Q69oPzfFgksXdkdP8A9uYYpqzKFMsYTyATEPZcU63DmWQ5aDVwBjeNrS8oVkfUya18rgDrChq3LWcH9oS1rJyVPszvTEgyxdQV7QtbJBoEdByM93BtgyiH7EXEex71BQwnxh6ziYrGHm1KtGtLMozWaoXoVgRJo29m8f4eZvGBE9GqpeRyCZuxTxLA2qNCiFZYgf7xsPw6mxXGaXEnbjPAkSJ9Gjxxu9p1b4LWJx5cTVbwPKrfnodo8FvkyEcugB9W86o6XwFeABApUZuxpcrQpdA7hgmEpC8UEqMDNALzxGytK5zc7RHMHFNLaHxqsjRsrx3nb2bKyVnvmCzwxCSrEtUWki2F7adgynnbkdsqijozMCP4c4pfmFxVKayUtC1y3twNQX9Pjpqp1chknwhTvncDyE1R2vCcR5PWYpPNLQejn3e3d6RE2PRrrqvnh6GYS2dCbmmGJCxoLVn3WuMkvt1zqiMiWxTJQ5VZAAqydaJTcqbndW8DSYFkpPrrEM3eFCpinmrnxN3cWzezVBcmdAC8GT4s9wAU4jZxzwpU4xEzVLgqVB4FQZPsg3akQ6XgyXsxvz4HDqbtLkJeBNWm4WecAa3o6WLdvt8tYoAWsGPGWeWrNwnJmsxrXHhPtxiSRb24ifqeqkgs2dZU7Xqw69ZF4GsYprLikMNKY3treTQ6HgSuWrwrci2QMnKwxX37ZtNB8hjuPrMLSUmfLvooDfVCjKhjh8xvTXFhZTPXfo9qn6nKgTAr8Y1jZpzSKBhjHzNmdQS58PNrAY3gRN9LfQCD7p1BVxB9W2Rmp94abAM4pSxGbgH9dCWjWKUizwqddtVkvQosVyF94KC7TvBqLf3p3g2VNMyhZKhZBLP6oFGuxg2mg1bEbSRFXJkxXoaRQbyGZooH55j94RT1qiCu4njPFEG6dniCVdRD6GoGHtwg6MouZXqnwRzrSHnDpk53SG9MGdAEGKrDZryBDK9i9asoRvL2TaHve27dGB8p3bKvrmmXLCyZXn1cvwF5RdckXMMbyY8aaiQgLPjWPN38L5PgYeDRhU8p2pZNJd88GNynamoVDcheWYzPsePdzhVSNT9wUdC8xt7t4oFna1811XZathu3ECDo55imcSyuySeoDmN54vSfxMGHSboEyNKQqGpxi6wBKmy3t7cRZv8PZs9"},
|
||||
{decoded, <<167, 170, 214, 92, 198, 22, 245, 140, 108, 212, 73, 70, 29, 156, 78, 41, 142, 155, 51, 186, 228, 173, 14, 178, 167, 221, 187, 167, 155, 235, 122, 94, 245, 60, 172, 7, 199, 140, 173, 13, 116, 145, 161, 49, 235, 6, 185, 154, 233, 238, 144, 76, 253, 137, 182, 126, 43, 24, 212, 109, 100, 64, 78, 175, 172, 133, 84, 212, 49, 234, 68, 139, 183, 106, 165, 242, 236, 170, 38, 110, 35, 43, 234, 24, 154, 165, 103, 251, 120, 191, 116, 205, 59, 242, 111, 4, 248, 137, 131, 136, 181, 139, 33, 204, 148, 100, 187, 173, 54, 67, 219, 81, 127, 26, 22, 27, 136, 19, 142, 165, 23, 44, 174, 99, 171, 102, 244, 238, 159, 96, 153, 177, 151, 170, 40, 120, 193, 207, 143, 124, 198, 159, 5, 102, 131, 116, 214, 22, 174, 41, 147, 66, 28, 76, 7, 151, 125, 5, 31, 161, 84, 202, 130, 240, 135, 214, 127, 122, 207, 226, 163, 114, 149, 42, 19, 200, 95, 49, 182, 21, 255, 124, 251, 57, 64, 250, 77, 199, 229, 31, 172, 148, 71, 170, 232, 218, 191, 20, 205, 233, 40, 213, 96, 209, 234, 121, 22, 140, 44, 87, 244, 54, 11, 248, 75, 26, 86, 126, 25, 222, 13, 169, 132, 65, 66, 211, 66, 102, 240, 205, 98, 254, 86, 217, 82, 205, 194, 205, 206, 66, 57, 76, 204, 127, 43, 210, 227, 205, 229, 61, 5, 193, 109, 35, 170, 92, 112, 27, 212, 179, 60, 87, 0, 70, 210, 184, 97, 44, 100, 54, 100, 120, 65, 88, 185, 74, 246, 212, 191, 167, 224, 23, 203, 27, 53, 20, 232, 188, 74, 90, 176, 66, 248, 177, 175, 187, 155, 231, 7, 35, 174, 7, 54, 95, 126, 108, 151, 192, 137, 201, 50, 37, 75, 157, 202, 166, 251, 128, 189, 23, 56, 108, 191, 66, 192, 215, 35, 160, 172, 93, 235, 146, 158, 212, 188, 32, 14, 228, 60, 224, 36, 33, 144, 183, 114, 164, 152, 5, 252, 33, 10, 105, 177, 22, 183, 245, 79, 208, 196, 101, 106, 114, 215, 101, 232, 170, 193, 233, 18, 45, 66, 199, 111, 180, 69, 133, 2, 155, 231, 123, 212, 159, 116, 213, 12, 201, 121, 152, 254, 248, 95, 219, 229, 148, 217, 30, 120, 101, 47, 27, 12, 158, 208, 179, 207, 103, 192, 22, 216, 224, 189, 64, 96, 57, 249, 163, 132, 169, 5, 248, 171, 185, 4, 106, 204, 236, 57, 26, 93, 36, 154, 188, 189, 213, 151, 191, 206, 78, 132, 252, 60, 242, 38, 226, 171, 176, 146, 2, 89, 18, 62, 242, 233, 120, 9, 80, 253, 75, 211, 140, 61, 124, 246, 5, 113, 56, 39, 245, 140, 191, 92, 49, 54, 47, 195, 48, 195, 152, 74, 77, 73, 180, 182, 90, 161, 177, 132, 225, 197, 27, 170, 18, 146, 56, 131, 102, 210, 239, 221, 230, 159, 17, 122, 86, 12, 56, 212, 157, 123, 28, 38, 177, 21, 3, 149, 235, 181, 60, 176, 215, 52, 84, 194, 191, 109, 102, 242, 245, 204, 253, 170, 131, 5, 123, 198, 215, 11, 132, 126, 95, 21, 40, 244, 130, 124, 151, 203, 68, 157, 120, 140, 6, 59, 134, 28, 16, 209, 235, 164, 71, 139, 161, 153, 174, 30, 226, 147, 254, 139, 130, 239, 196, 246, 216, 133, 43, 219, 69, 76, 174, 71, 203, 23, 251, 50, 149, 154, 86, 58, 43, 1, 159, 235, 82, 221, 118, 128, 96, 161, 130, 163, 28, 135, 173, 162, 247, 48, 176, 37, 48, 194, 124, 113, 75, 200, 238, 54, 13, 90, 161, 101, 109, 48, 122, 131, 1, 196, 209, 56, 107, 251, 237, 160, 188, 231, 68, 148, 51, 115, 106, 10, 126, 177, 158, 207, 244, 94, 44, 203, 212, 206, 142, 53, 173, 247, 216, 123, 72, 47, 214, 126, 16, 55, 5, 177, 130, 162, 138, 30, 12, 145, 151, 244, 158, 85, 175, 145, 130, 182, 142, 243, 179, 230, 21, 89, 32, 194, 25, 182, 214, 22, 218, 208, 229, 25, 156, 110, 89, 47, 227, 248, 50, 92, 153, 236, 125, 71, 188, 226, 228, 233, 55, 79, 20, 102, 128, 172, 184, 5, 2, 129, 132, 221, 226, 12, 147, 133, 78, 137, 54, 131, 30, 69, 118, 234, 254, 10, 230, 114, 180, 26, 118, 177, 159, 185, 216, 7, 124, 87, 223, 93, 6, 115, 12, 246, 187, 250, 190, 16, 192, 60, 249, 159, 254, 3, 5, 243, 73, 125, 254, 74, 154, 220, 74, 140, 30, 195, 37, 225, 129, 48, 218, 156, 119, 29, 184, 48, 104, 172, 205, 154, 251, 149, 28, 72, 5, 163, 27, 183, 229, 249, 137, 42, 145, 145, 235, 176, 246, 51, 204, 17, 208, 91, 157, 172, 136, 171, 99, 20, 196, 107, 241, 88, 87, 198, 208, 128, 157, 170, 53, 241, 21, 61, 199, 19, 16, 224, 202, 153, 6, 125, 30, 224, 147, 191, 236, 146, 219, 115, 3, 3, 129, 67, 65, 111, 60, 215, 223, 93, 3, 10, 187, 249, 76, 193, 179, 48, 185, 182, 161, 255, 102, 158, 51, 128, 216, 80, 106, 35, 48, 154, 209, 188, 64, 14, 59, 57, 0, 2, 13, 76, 123, 244, 212, 63, 169, 88, 34, 134, 131, 123, 122, 48, 68, 32, 107, 51, 213, 236, 164, 8, 175, 69, 186, 194, 35, 220>>}}.
|
||||
{{encoded, "Sa2LuZpfTubG1HuuxxbnSmVvdhjANbDqWBiAaiFTyPwLREhQntgZG6KFMwoLhryomRuyCapaWipqjsRfnPGrxXpzt2CQhvPo5ofu6tWHQT4iU9EAcD6k7XhZb57GAHuJTVJ5BJrKqJRpZ3obmswMTNoZy4MtvLEij1YRSb2e2yNERrxBHsLLio5xa8EdnnKCtMEbibWcDivk3vDvu8U4pwh7uX1thJyukyjBkdxGMzf3ZsgZALK53sKC4KuFisGjyB3dFLy4pR3m8k3XHr254qTS28uGqxRJpEnJNYqHgsHS3mSbz8nfy2uzRq1XpvD1zJ1wt4x2NRRmwAZ98obGeA9cgt5FnT4CdM6NeCFd9fshJq8bKRa5Ci5cZ8MqKa8DCYwg9ey2rRYwVeMKkYL8FrGB6e25MErH2pzDVsrufDHsN4k7Ad1sMNhVAYotmFHu4NShDRdJBFUzZLpJmMM6b1cw2disTj5eE7uozp8gfkbRvLuh3p3cDznHnY4EzQjFzhaLv7jawU7gFLFuNcmpyqosN1Hn7bXSZwWnoKWCQRgU76wrd3vRd3Cbf1PAkNf5oZxqFiBYMpFisAet47L38vApLNLpNGMCmFuqS1uyU3Br5Sgn4HUBchjQw3Dz77vdD73WmHZfxKZnd5DJaWKnhe8ktgGp3dXnZCn2BRkgemGz1v2g7CA8f2Ax97d5XyPY1rxLSsGsAsFG7dWFA7pavL9fewyeaU6Si7CTwxgvehnhWur2i2QKP3C3yPEie5ZbBzPNpq1s2qZPZN9w3TRU7Qs3fPpZjxz9A1ec3Zvycvmjhr5CKUMjeHmVWABqXzsqjfQhCdj2zekp3BnN3pm9VSQXHCakuzaPoxPqKWq1igjpUQ9AvBTmMtgmeD8sRxTFkZhS1mGXXkDQ4qhm4JrDCGZShcnig1GobCySEEunK6oEBbB5mGnLqhD2k35wovSyHX9juL1gUyPDGATrAqUhJGAChojyKRknzUtW8MCN9jgxy1bWrpXXhcfwwdE6T42Pz3YZE6jPtJ59oRnnSLjnqcLJ6DKJTsaxgsryx2C6p7FraVYKa4kTFPPjm4BK7kbw6Z7nwb5Ar945wHTyVkBHig2gJ2Jd62F4wEFvvsGPb9E9PTonEzzfjkChQmKurnXLUXoH6J9xVuuwib1QU3Qj76j21QendqsYsudWf2iKFxsbjSXD9K1PFuHRENMSQjhnR"},
|
||||
{decoded, <<252, 177, 19, 135, 55, 36, 254, 114, 88, 70, 185, 39, 17, 185, 195, 113, 207, 255, 141, 204, 103, 228, 29, 147, 155, 111, 229, 31, 68, 190, 69, 185, 167, 153, 214, 168, 241, 80, 24, 202, 117, 185, 38, 180, 121, 107, 248, 170, 207, 224, 22, 58, 187, 54, 120, 122, 143, 147, 104, 182, 14, 77, 125, 158, 35, 252, 110, 107, 127, 224, 130, 37, 172, 231, 66, 163, 118, 175, 227, 185, 77, 193, 86, 92, 16, 132, 217, 13, 74, 83, 206, 29, 89, 19, 15, 192, 157, 209, 214, 166, 60, 23, 139, 225, 67, 3, 221, 36, 72, 238, 181, 83, 141, 237, 166, 16, 71, 105, 246, 134, 65, 188, 92, 230, 139, 217, 201, 16, 137, 75, 133, 97, 206, 151, 54, 226, 212, 38, 114, 177, 176, 28, 50, 113, 52, 85, 178, 130, 75, 66, 211, 19, 122, 108, 195, 231, 192, 243, 176, 45, 254, 57, 187, 183, 105, 187, 33, 127, 91, 154, 85, 171, 120, 153, 2, 18, 104, 179, 46, 112, 90, 86, 57, 91, 107, 103, 67, 128, 12, 80, 247, 15, 14, 107, 153, 68, 151, 102, 202, 166, 169, 80, 52, 8, 162, 135, 205, 141, 19, 56, 168, 100, 248, 108, 37, 89, 125, 176, 111, 230, 250, 167, 85, 233, 145, 84, 91, 73, 42, 141, 125, 66, 41, 71, 208, 234, 49, 56, 254, 24, 163, 176, 64, 167, 18, 164, 94, 79, 21, 27, 26, 60, 75, 239, 82, 28, 40, 44, 232, 163, 2, 40, 161, 131, 3, 70, 153, 3, 29, 131, 76, 134, 162, 240, 82, 96, 118, 251, 243, 16, 101, 74, 105, 108, 94, 172, 188, 148, 245, 162, 20, 251, 17, 126, 82, 225, 51, 165, 251, 218, 78, 135, 236, 50, 184, 225, 3, 131, 86, 178, 95, 245, 104, 161, 182, 1, 40, 1, 33, 36, 255, 71, 210, 248, 14, 173, 72, 29, 192, 125, 5, 131, 215, 174, 172, 182, 142, 57, 216, 210, 81, 226, 179, 200, 131, 239, 174, 225, 181, 137, 53, 231, 70, 249, 216, 234, 218, 116, 220, 186, 126, 89, 38, 42, 144, 5, 232, 169, 226, 47, 195, 72, 47, 52, 144, 154, 127, 58, 188, 184, 81, 232, 93, 96, 143, 97, 215, 94, 63, 18, 134, 47, 237, 149, 104, 83, 200, 201, 208, 88, 120, 68, 112, 227, 238, 191, 67, 238, 11, 160, 150, 163, 173, 56, 149, 149, 214, 118, 185, 219, 181, 166, 71, 2, 212, 106, 100, 104, 209, 173, 51, 31, 178, 77, 138, 91, 81, 250, 52, 41, 13, 68, 181, 183, 127, 133, 61, 83, 84, 97, 177, 131, 26, 33, 56, 22, 100, 236, 230, 244, 192, 91, 27, 188, 127, 159, 187, 44, 33, 185, 224, 107, 112, 224, 36, 179, 2, 105, 255, 166, 171, 54, 62, 128, 86, 248, 70, 91, 13, 150, 217, 180, 100, 1, 1, 155, 69, 63, 231, 153, 163, 132, 19, 167, 172, 190, 107, 154, 236, 73, 215, 117, 114, 151, 9, 37, 211, 204, 206, 249, 233, 128, 93, 40, 26, 88, 76, 123, 211, 222, 229, 158, 35, 234, 130, 10, 71, 70, 29, 89, 148, 44, 227, 120, 9, 160, 9, 75, 193, 134, 235, 43, 166, 44, 243, 214, 102, 3, 200, 103, 178, 138, 38, 15, 244, 215, 224, 97, 238, 173, 115, 14, 93, 102, 34, 30, 127, 55, 14, 217, 191, 149, 45, 70, 160, 94, 250, 249, 130, 53, 149, 24, 61, 90, 182, 147, 85, 152, 152, 166, 58, 183, 185, 56, 127, 131, 61, 19, 201, 237, 19, 97, 142, 18, 173, 170, 178, 161, 8, 77, 84, 44, 1, 125, 180, 126, 12, 244, 158, 60, 70, 165, 79, 64, 113, 41, 157, 65, 62, 214, 136, 158, 30, 74, 114, 219, 71, 170, 186, 172, 60, 115, 153, 142, 50, 157, 135, 122, 146, 95, 47, 95, 80, 50, 5, 42, 11, 1, 29, 162, 68, 36, 25, 197, 183, 151, 153, 190, 31, 59, 54, 149, 193, 74, 40, 51, 96, 146, 36, 230, 89, 47, 43, 21, 214, 240, 6, 13, 115, 102, 134, 137, 18, 216, 228, 71, 229, 6, 37, 24, 27, 140, 190, 50, 12, 171, 35, 110, 28, 158, 177, 186, 146, 77, 186, 37, 223, 126, 200, 72, 198, 40, 151, 129, 33, 107, 156, 4, 49, 229, 239, 145, 30, 149, 212, 83, 79, 230, 163, 204, 56, 89, 153, 199, 149, 241, 151, 227, 39, 175, 243, 243, 88, 90, 199, 189, 71, 172, 112, 202, 7, 72, 39, 46, 152, 167, 151, 85, 190, 159, 195, 159, 172, 141, 117, 149, 63, 14, 180, 105, 200, 119, 69, 39, 248, 143, 127, 216, 134, 140, 251, 230, 73, 36, 150, 191, 2, 54, 93, 27, 95, 206, 152, 21, 22, 36, 242, 233, 4, 135, 205, 111, 107, 15, 24, 32, 120, 142, 152, 255, 222, 34, 0, 83, 42, 29, 98, 110, 219, 12, 187, 252, 185, 71, 156, 201, 158, 201, 54, 66, 133, 81, 57, 131, 22, 76, 158, 249, 82, 58, 6, 140, 98, 79, 94, 239, 68, 232, 94, 28, 212, 2, 9, 181, 73, 93, 179, 39, 0, 111, 10, 7, 44, 179, 185, 16, 76, 42, 127, 130, 10>>}}.
|
||||
{{encoded, "AGZtkMm3zrY9f3TKTUuMHLqyY2a7bjPrFwPEExyoJB6GpkTD4NP8pGhtNcdaGkhj8y8M4Vu1Yk9GkdvpNJPXSn2NxHxyLMFykx85vesR4RooHTMAkjp5WYyNNcM8CyqakhGyv9ym9pQMdsRz9eFnevgGThxPy5aYFNFGvL9KhnFzWVC4CAeyhXosw7kVUeZPmL1CYSyMEBuXu5gVi74WidghNQdbXzSqM3o"},
|
||||
{decoded, <<138, 184, 37, 149, 37, 104, 17, 112, 161, 155, 251, 237, 147, 51, 171, 38, 27, 157, 20, 156, 27, 117, 222, 149, 139, 85, 87, 154, 140, 61, 119, 113, 161, 89, 3, 51, 68, 68, 166, 228, 173, 130, 65, 7, 17, 110, 15, 138, 146, 6, 237, 137, 78, 51, 177, 120, 133, 253, 19, 78, 48, 15, 106, 149, 150, 95, 38, 195, 201, 122, 141, 81, 241, 141, 228, 45, 122, 150, 100, 186, 54, 22, 175, 85, 187, 192, 119, 200, 232, 254, 213, 96, 53, 109, 255, 174, 151, 216, 214, 197, 145, 112, 43, 140, 236, 6, 184, 1, 100, 255, 224, 247, 22, 234, 211, 111, 88, 92, 8, 48, 167, 65, 20, 112, 198, 27, 129, 86, 204, 198, 138, 169, 126, 232, 122, 76, 75, 194, 117, 58, 247, 24, 223, 246, 157, 23, 160, 40, 207, 186, 142, 173, 213, 169, 148, 76, 146, 240, 207, 43, 42, 245, 88, 180, 228, 162>>}}.
|
||||
{{encoded, "9Txz4vp99aMdy1VHiZuBTPVYxoTkEe7A3XB8wZFspsWuRkpomKSRFvzKwkWcnBqm3sqA92PsGsAjHxfaDcJkNEQH5AqhHU1RjC25jDC8ugd1cNL3oiMaHhWkszXxLTbPeP17MuBrHqj5bkev1VcuNvHZ2H7HRt8JFABCPxbCaFfNHVYfhfsgHDzE5urkQtzrq5tJ9z4a6Qemcwe59Jbm7cejkb5RkfhNQ9JRrASrqRZVWncTUozYrVubhY4CvFNWFcpWusyTZMntW4xtpd74AZYNvx8bfx8eDWPkBU2QfyiJgWsJCMGyEP3AgssJhaE5ZjwCfiKpoJSwW3MxyHDh365njd6LQspWC8uyxtwh6XprUS2fH4NXkK2iHseDCNFw7Vmwsqss4mLSkzYB4mpjZYvaWs7m6YZDSdunjZn4GW8GRkhT52LPHdmZrYD6UP2UUt5G9NPHbG5kuzFWoCvYkm6ZLV14rdKfVdwbiTLSm8xV8BCxtyrsaFqUWNyEcrxer8fTKJoE85MvgQPdLJm6o3x2YAUhEeQTRkepVrp3Xsaeq1Ar1GnSiR7VYWovR5aJGMCoxoL1Gf8aayhZxhC9o2S2VpMzQjV11QBMJ1t3iVTrJcHYf2jYYs5rC238rr7tbnbx6BeBddwiMMnP9LCAGeZNxqsv5WH4TBEGe4SXejHPcmWq4us82ZckCXXRUKMzkMmfYJHTXwgGQTwgVWH2xLxRzdLUZ49dx6rJCN4MmzoAJ16eqhr1K3xp6dPwxpzVgR646er9fEAZfMuXYwfheoBY4STrxLGC8zcdhK5JZtiSu7fJKMiAo9dqugb3rZwEpaedaEEfdDk6Yof73axpaJ796KCQG267SpPeHj9Gtu7rqANxNe9qfz9XvErCiYrZ8Gm1ktuKLvRM3yjMBbm5UDpoBnT18NvNx"},
|
||||
{decoded, <<156, 68, 20, 182, 102, 61, 231, 202, 165, 12, 51, 137, 140, 209, 167, 246, 79, 144, 157, 94, 100, 167, 190, 46, 194, 14, 66, 203, 67, 52, 96, 142, 69, 242, 151, 86, 244, 230, 3, 142, 239, 206, 62, 158, 15, 139, 47, 21, 141, 168, 13, 103, 206, 220, 221, 28, 58, 71, 72, 146, 134, 248, 225, 153, 130, 189, 226, 127, 178, 162, 61, 227, 139, 192, 191, 95, 46, 71, 246, 11, 243, 89, 199, 50, 3, 54, 156, 170, 50, 243, 61, 51, 13, 184, 137, 23, 248, 218, 238, 223, 43, 65, 134, 113, 254, 171, 24, 227, 150, 230, 253, 211, 108, 177, 13, 177, 161, 114, 190, 8, 121, 186, 147, 114, 99, 60, 51, 105, 164, 126, 141, 125, 37, 33, 95, 158, 91, 146, 151, 79, 127, 90, 232, 233, 179, 63, 39, 87, 74, 54, 198, 189, 255, 94, 143, 68, 60, 146, 233, 1, 98, 181, 168, 248, 53, 126, 137, 49, 9, 241, 197, 206, 26, 70, 217, 6, 141, 55, 253, 253, 197, 4, 43, 133, 40, 88, 123, 242, 221, 69, 204, 155, 158, 123, 69, 38, 126, 197, 23, 9, 20, 54, 7, 197, 190, 249, 198, 67, 93, 147, 244, 0, 165, 237, 154, 220, 106, 231, 116, 196, 55, 193, 156, 238, 14, 71, 89, 161, 245, 152, 139, 240, 205, 141, 40, 61, 207, 59, 34, 163, 208, 233, 91, 158, 121, 30, 102, 116, 254, 245, 153, 243, 233, 109, 192, 141, 110, 106, 21, 18, 80, 245, 140, 219, 106, 169, 188, 55, 231, 10, 100, 73, 241, 137, 155, 55, 1, 181, 0, 84, 218, 152, 137, 171, 42, 214, 19, 47, 178, 192, 15, 137, 84, 222, 218, 170, 8, 97, 91, 218, 139, 103, 154, 55, 145, 64, 209, 144, 112, 89, 51, 180, 134, 230, 190, 194, 107, 29, 95, 110, 222, 127, 162, 151, 199, 149, 100, 28, 82, 158, 31, 79, 219, 162, 117, 239, 182, 96, 101, 102, 234, 237, 26, 144, 188, 5, 116, 99, 2, 96, 176, 163, 73, 57, 197, 90, 35, 71, 15, 68, 163, 186, 81, 100, 9, 145, 2, 152, 172, 27, 238, 55, 58, 231, 214, 206, 249, 213, 139, 250, 99, 208, 159, 112, 212, 108, 253, 223, 83, 173, 73, 247, 93, 167, 188, 131, 1, 36, 84, 67, 117, 194, 133, 126, 16, 221, 84, 87, 71, 249, 140, 107, 113, 40, 24, 228, 173, 9, 73, 192, 222, 46, 151, 165, 78, 181, 8, 12, 43, 238, 234, 102, 194, 191, 120, 197, 73, 109, 191, 204, 135, 6, 38, 107, 234, 90, 31, 66, 82, 104, 27, 196, 80, 156, 173, 13, 61, 9, 134, 11, 53, 114, 44, 230, 171, 108, 15, 120, 64, 131, 91, 117, 228, 228, 142, 252, 128, 244, 98, 26, 30, 159, 243, 85, 99, 248, 205, 169, 108, 201, 236, 26, 64, 82, 155, 146, 179, 166, 54, 182, 92, 227, 131, 179, 150, 97, 145, 76, 202, 41, 165, 44, 132, 215, 163, 24, 67, 109, 208, 130, 67, 101, 38, 77, 231, 147, 31, 201, 87, 95, 197, 165, 171, 122, 242, 187, 7, 169, 59, 193, 111, 167, 133, 192, 164, 74, 15, 74, 30, 237, 126, 67, 254, 158, 126, 139, 44, 81, 7, 73, 160, 49, 33, 6, 45, 132, 155, 142, 97, 151, 152, 207, 53, 12, 123, 235, 41, 121, 40, 86, 30, 38, 213, 221, 122, 192, 180, 52, 149, 133, 9, 0, 225, 204, 109, 106, 90, 32, 188, 128, 108, 213, 92, 54, 64, 154, 138, 248, 7, 97, 162, 223, 49, 89, 92, 217, 174, 113, 140, 15, 163, 241, 62, 96, 54, 103, 189, 1, 192, 33, 68, 191, 43, 110, 38, 93, 250, 128, 10, 177, 159, 13, 229, 34, 193, 120, 153, 202, 8, 216, 108, 105, 105, 199, 198, 138, 217, 49, 30, 183, 50, 120, 182, 196, 82, 49, 162, 6, 28, 223, 101, 78, 170, 84, 164, 161, 205, 36, 59, 37>>}}.
|
||||
{{encoded, "3dAFhNKRHdgfsWSrX1j79tRXdBMMTpEX7uneNPTv7kCs11xjSXNqrbMezWje3xLU4XrdSpQEPoaHQET864xvuG7m899crAFeMyZWWkF3scmSRgW3ixH7UMsUzMeLmDuLd4vLiCvjaMyRXpPwG2QrYRkeo5y5KmAdKjST6qUJAHatvynkdaAuxKzEfH6RhrFEPedf5x7p226r7aeW7oyTZjsa5xFES6Cec6mwpJVfq3UFz4pUTEsjL8AErDtjQv9GWvPfQvwjRCWoKax3aoBbXoM1augS3PK4GPS7Z9M743FTQNyc6Q8ZJTWB7kMn1nJ6c1W9hqLwEPkC45wLYjkAgauYwcFyMAuSmvPTpoJQ9E4KTjLqfAcRbgZ4vBAxrJ7rtf7ydmjbYEQriHqhLEKjAzUF1mhCbkbUU29hFSKbiSamQyAUX4yThMU8QJbZGD4p7zGuZNCzRgXubh8UHZWKer6aZeg3M35LpoT184LAupdQsKpNwRnPSGbe8C5U55GnJ1B9vJ5cKuYi2MKwQ7wX5AtDxW1CTbooPC9z1ZXrWZW1kEJV2uZkpkZnVfTjoaPbrouZqbWUgLSH8gG5ebXsKK8W9ZzsDsYa9CYrQDk6e7P31vr189dP4m5kxuBzxmicEGLyA1VRgc9WckrkSvc6HnvbQcLUhgsMfSW2rrtEHftQs6awk6XXwm1dRXQeW4v8ao4hZQxthvCxve3aJhKcGKGpNGd5jLFF8fy2C9CRF9nQfJKZoMNLRju1cRPRDCAL4yZ9AqNoWtiv9mV8vt9CdgEbWoWqHP17cPzeAGzXLaLEcvi9BUGxrcZLG1d5K4JJUPofcmNdFBwXFpdoE6HwhdQ8hSMxa5QAZKvwPZqwfkp6QV7RzU91wnMRKGEr8wiNKjvphUNmw6Qjq1oKE9uiadnZPHy3kT2FdhxNBy8C5XSwG45zmFk"},
|
||||
{decoded, <<131, 187, 216, 38, 184, 147, 192, 110, 184, 242, 183, 21, 106, 185, 208, 143, 178, 134, 32, 184, 48, 74, 38, 20, 218, 219, 200, 156, 69, 119, 215, 202, 80, 12, 243, 89, 49, 83, 219, 248, 177, 32, 236, 127, 183, 149, 174, 255, 31, 115, 207, 88, 208, 128, 248, 233, 121, 206, 109, 253, 73, 223, 191, 131, 154, 182, 49, 238, 27, 1, 67, 20, 71, 129, 187, 57, 213, 17, 153, 137, 168, 75, 86, 55, 120, 35, 217, 80, 43, 254, 106, 12, 182, 97, 183, 229, 83, 251, 124, 78, 73, 220, 121, 232, 48, 42, 123, 98, 134, 254, 37, 164, 227, 213, 75, 9, 179, 243, 51, 143, 246, 71, 199, 168, 237, 33, 205, 151, 115, 54, 77, 60, 25, 102, 239, 58, 59, 191, 42, 98, 149, 172, 250, 56, 120, 189, 178, 238, 203, 245, 90, 24, 76, 27, 95, 85, 233, 15, 174, 122, 148, 46, 190, 254, 175, 247, 28, 185, 43, 180, 35, 13, 50, 66, 107, 79, 182, 62, 13, 49, 146, 201, 200, 243, 203, 243, 225, 84, 225, 83, 0, 124, 62, 128, 81, 103, 188, 10, 212, 175, 26, 223, 25, 100, 133, 111, 196, 225, 213, 186, 71, 201, 15, 232, 109, 153, 51, 44, 187, 203, 45, 193, 175, 166, 101, 16, 142, 110, 17, 226, 85, 9, 99, 149, 169, 78, 176, 58, 144, 220, 197, 143, 52, 208, 204, 17, 46, 236, 18, 149, 68, 145, 179, 237, 97, 32, 248, 141, 29, 173, 172, 156, 234, 21, 214, 47, 126, 216, 171, 70, 80, 48, 27, 148, 151, 225, 172, 76, 146, 204, 83, 65, 109, 201, 20, 95, 114, 237, 7, 223, 109, 225, 141, 203, 39, 3, 232, 48, 126, 139, 111, 245, 1, 89, 149, 119, 144, 207, 255, 67, 6, 18, 12, 93, 193, 110, 67, 13, 243, 152, 86, 46, 118, 125, 99, 95, 46, 225, 15, 27, 202, 22, 148, 238, 66, 244, 156, 90, 51, 70, 154, 183, 154, 162, 92, 6, 204, 2, 60, 195, 183, 224, 28, 11, 55, 136, 24, 12, 34, 208, 17, 15, 116, 41, 95, 27, 251, 170, 162, 144, 88, 145, 90, 8, 185, 3, 6, 64, 210, 15, 54, 203, 245, 127, 143, 52, 24, 192, 252, 141, 180, 59, 135, 114, 8, 150, 183, 57, 81, 72, 126, 58, 207, 101, 27, 101, 197, 219, 29, 42, 67, 170, 31, 210, 46, 218, 72, 241, 216, 53, 184, 163, 18, 128, 172, 105, 251, 156, 137, 76, 186, 150, 26, 244, 128, 65, 58, 139, 218, 65, 239, 23, 3, 86, 186, 185, 192, 175, 175, 247, 208, 184, 124, 162, 217, 59, 252, 123, 15, 167, 118, 76, 227, 45, 89, 141, 31, 3, 198, 78, 100, 210, 147, 243, 186, 153, 161, 167, 172, 126, 110, 219, 108, 222, 186, 39, 12, 64, 219, 118, 111, 201, 11, 82, 217, 26, 147, 46, 106, 233, 6, 219, 194, 69, 175, 253, 50, 41, 170, 92, 128, 61, 103, 62, 139, 41, 86, 208, 228, 248, 249, 164, 189, 84, 6, 39, 159, 120, 36, 211, 34, 230, 2, 190, 94, 175, 242, 128, 46, 141, 60, 50, 183, 184, 163, 192, 106, 2, 240, 209, 144, 76, 219, 53, 199, 115, 254, 171, 199, 39, 94, 107, 155, 150, 209, 69, 167, 217, 19, 87, 87, 130, 91, 151, 86, 228, 155, 53, 177, 76, 91, 120, 135, 97, 23, 235, 114, 11, 180, 30, 237, 236, 50, 67, 5, 196, 191, 173, 4, 7, 41, 72, 238, 20, 7, 188, 163, 54, 224, 90, 166, 92, 81, 243, 247, 61, 117, 165, 132, 192, 83, 75, 156, 251, 52, 146, 231, 212, 231, 50, 252, 0, 85, 38, 185, 111, 99, 106, 168, 65, 51, 248, 224, 229, 230, 118, 63, 124, 35, 136, 67, 52, 107, 19, 57, 170, 82, 168, 144, 187, 191, 24, 86, 12, 243, 40, 1, 237, 229, 46, 18, 220, 118, 83, 93, 76, 171, 3, 22, 137, 103, 175, 46, 100, 229, 253, 61, 155, 168, 37, 68, 63, 79>>}}.
|
||||
{{encoded, "2CrjWNNi72CTneEz19eii7obi34SsaYSTSgfqcYc4bCJK4gFutgjNYmB2SLu3JSAguP8684xnGKoubE466wBYtYsjiaJEvsaFzqMDxSDM5HpG97EkKvPTPSYcHvHheB4mcsF75GTGaP1M67U367aCLEMi3Pv14xoHL5RVYiQu7L7vaq3VctL6qdBKJuMfpepv4AjV4WEqte6rg14hiDKKLntf35wcm2bs1VrADvNUzG2pezA1rpmdZGQcVU8ojy82DKaZWxUkXeRLmi8wgGPALdJtrDe1B2jh6QT9oTKsdkZhS3C7bcojyjqr7ZThSLKvycoFhyQxPfWfvj4Dr3FqewT3ZWUTU4bEo3kF6fDL53q7X7ZjDpjYhKkpk7xjqG8LZtQmNDKqzizHdaM4PvLqa9aBmAdA21F6jRGzWxsmZXPWQwdR7q63G84JBrz3ubrVjgwxCmmABrpcQCJRB7Yq6Qd647wjqEufVxjuPGLn1ZXNrNMqV8M57DAZWptASifqVc8uwD2YvyC5RBSX2fQuLg9cLKge4GvrWbKoPrmE5n4miHtXjYMHRRU75TY3QoWSGc5AryRRkCUGd38YeECjJh9UXYDyephbRTbLKucDLnBEP4uzxBT3nboUB4FBQ2dNWUPtzwtFjHypEfr14Ar1xtdVQ8oc3FebaKfhX8godXPCiKtBgp8h27eJrm5Y1ZK9mJd4W52mtdi734JzbkUe2MZAb6MvavBLufqtopS2ZD2SFz2xQ23z43g4hTmy7BXkwCs5jHnceBN7eJDPM8gQ8WtvnuyFsj8DBpUZmu45HZEEiUvPHVy8qhpTC31R7EhdiMJmTdAafsssefeZq8BgHDt8desPfYB2R7BZyWLTe8gB175Wec6iKBgHrvUDrhAwZraciCCK25axdt3ohvp6xVN5QRdZidJ6eMtU5pgzswyHbD6iQsFiMyCFL4guShkj5SHERYVTTD9vwRYqtvXrHBWFhsyB5z1hi2cGyLMxHHT9R9fqnTmNCixcPEbZXtCazvT3oLkR7gN1ntbcg2FcWAhBvupseRD7BgYSh1c6RTRsRqJCEncaYfzPeTcWVdfUhZR8cYm8cMZg1VQktRz7LK68rbzqJiUReh5C2s25ybHHVhqQDnd4cBSJuPK9HXvTcp1To7EawdK3KLWhp3aKemSYDcBhSAtU2d9mpzcs9o6JhH6FQuDa5yyrKGFPCbbn9E8i3H7cTbMQoDjmXGQqUpBdbZ5WmvZz19qqWeEAoS7gecZMoqUyAB6wgLv1kT3VLCUZR"},
|
||||
{decoded, <<218, 223, 24, 150, 10, 145, 247, 226, 85, 207, 95, 45, 229, 139, 169, 166, 182, 2, 5, 163, 162, 67, 101, 199, 39, 214, 134, 231, 204, 208, 8, 32, 28, 191, 156, 34, 82, 146, 145, 69, 223, 202, 31, 92, 139, 193, 171, 95, 171, 67, 214, 37, 88, 215, 87, 247, 135, 11, 57, 27, 206, 94, 224, 248, 169, 194, 122, 87, 179, 119, 181, 85, 107, 29, 100, 14, 75, 229, 144, 160, 106, 60, 193, 182, 250, 26, 67, 134, 221, 0, 117, 98, 239, 148, 61, 116, 138, 53, 86, 204, 170, 37, 32, 26, 215, 32, 225, 33, 64, 248, 119, 216, 173, 251, 197, 174, 168, 169, 135, 242, 173, 78, 109, 75, 190, 165, 234, 116, 114, 219, 10, 16, 172, 222, 108, 209, 151, 8, 51, 66, 55, 254, 246, 86, 187, 103, 129, 107, 18, 10, 54, 230, 209, 241, 255, 59, 11, 74, 142, 176, 7, 4, 45, 11, 167, 16, 201, 188, 107, 149, 201, 68, 105, 120, 130, 28, 238, 135, 245, 237, 64, 82, 74, 10, 52, 28, 59, 31, 112, 210, 175, 192, 8, 9, 136, 201, 47, 62, 19, 147, 159, 207, 66, 35, 21, 60, 156, 207, 161, 29, 248, 174, 148, 184, 194, 90, 49, 141, 185, 51, 147, 3, 77, 86, 161, 89, 59, 252, 151, 3, 124, 123, 199, 44, 113, 135, 244, 162, 230, 126, 173, 121, 99, 86, 255, 33, 119, 117, 86, 53, 235, 243, 139, 168, 167, 106, 242, 113, 176, 176, 40, 219, 113, 223, 92, 142, 81, 73, 216, 233, 93, 254, 34, 158, 193, 213, 208, 119, 135, 24, 187, 229, 227, 100, 149, 82, 138, 159, 92, 172, 54, 237, 17, 97, 180, 240, 196, 202, 142, 75, 141, 128, 184, 114, 233, 75, 115, 98, 234, 65, 164, 16, 116, 209, 199, 26, 79, 50, 194, 221, 225, 153, 130, 203, 254, 244, 21, 247, 156, 182, 35, 123, 111, 240, 21, 139, 163, 70, 57, 26, 51, 84, 15, 64, 52, 216, 87, 85, 180, 166, 4, 123, 42, 170, 58, 79, 23, 183, 75, 240, 149, 23, 236, 128, 60, 89, 227, 77, 163, 218, 198, 152, 228, 31, 70, 4, 148, 219, 64, 86, 149, 118, 203, 159, 68, 136, 172, 216, 113, 212, 92, 69, 186, 76, 6, 16, 120, 205, 37, 203, 143, 165, 133, 46, 160, 80, 49, 38, 227, 68, 206, 47, 143, 229, 215, 253, 254, 240, 220, 21, 98, 219, 250, 101, 34, 28, 172, 116, 131, 156, 168, 75, 80, 169, 9, 195, 177, 175, 164, 4, 134, 115, 111, 72, 91, 235, 18, 181, 187, 140, 109, 180, 78, 236, 80, 145, 174, 88, 223, 94, 66, 128, 152, 173, 84, 37, 177, 14, 244, 14, 64, 137, 189, 89, 173, 250, 69, 128, 235, 86, 15, 39, 187, 222, 80, 220, 6, 208, 196, 155, 14, 208, 98, 197, 75, 218, 178, 233, 129, 21, 5, 120, 199, 227, 243, 13, 124, 11, 67, 78, 73, 25, 5, 78, 53, 46, 242, 240, 126, 206, 11, 99, 188, 242, 240, 68, 124, 206, 222, 250, 41, 3, 27, 19, 31, 190, 139, 46, 122, 165, 30, 31, 48, 46, 170, 163, 148, 187, 32, 208, 250, 46, 178, 177, 136, 69, 23, 81, 249, 90, 2, 83, 232, 24, 222, 163, 126, 65, 228, 220, 35, 115, 88, 23, 108, 201, 190, 220, 147, 23, 142, 193, 31, 64, 250, 224, 134, 15, 4, 165, 36, 98, 211, 14, 146, 133, 27, 109, 72, 184, 49, 131, 41, 15, 177, 138, 3, 21, 175, 222, 155, 57, 139, 54, 245, 24, 127, 194, 128, 214, 102, 4, 32, 253, 78, 71, 163, 224, 160, 56, 225, 227, 174, 144, 172, 87, 7, 71, 164, 231, 19, 55, 220, 242, 56, 117, 85, 208, 194, 200, 82, 75, 141, 111, 97, 173, 87, 64, 135, 249, 203, 98, 130, 191, 140, 193, 200, 141, 223, 147, 14, 21, 235, 58, 113, 20, 14, 157, 124, 127, 62, 199, 193, 108, 240, 81, 127, 130, 99, 12, 144, 58, 173, 239, 15, 78, 225, 153, 208, 119, 117, 248, 133, 28, 128, 15, 57, 239, 199, 12, 86, 235, 154, 84, 142, 123, 189, 69, 105, 224, 42, 36, 138, 29, 222, 219, 8, 154, 171, 25, 237, 156, 73, 89, 32, 116, 194, 4, 136, 212, 3, 195, 212, 165, 56, 139, 206, 116, 55, 190, 160, 141, 199, 205, 134, 56, 179, 177, 123, 72, 27, 21, 59, 24, 251, 214, 119, 184, 29, 250, 102, 78, 147, 225, 177, 209, 187, 127, 185, 95, 195, 72, 16, 65, 170, 185, 227, 211, 149, 11, 204, 149, 146, 110, 231, 205, 129, 153, 219, 52, 93, 252, 2, 219, 200, 181, 157, 31, 78, 44, 177, 57, 213, 114, 148, 96, 171, 144, 39, 150, 114, 165, 188, 69, 54, 6, 159, 104, 66, 13, 105, 44, 113, 31, 215, 140, 221, 174, 39, 4, 28, 106, 29, 170, 191, 91, 62, 218, 185, 168, 191, 166, 2, 81, 15, 176, 84, 72, 160, 243, 79, 228, 227, 223, 240, 201, 133, 76, 234, 69, 153, 156, 164, 93, 60, 37, 88, 26, 165, 248, 46, 247, 46, 188, 30, 194, 95, 174, 208, 243, 9, 23, 188, 195, 252, 131, 68, 6, 67, 123, 51, 131, 208, 37, 91, 98, 107, 20, 173, 162, 134, 192, 176, 204, 166, 121, 75, 203, 81, 20, 248, 137, 22, 137, 6, 171, 81, 62, 194, 88, 24, 222, 176, 103, 124, 56, 113, 133, 196, 228, 12>>}}.
|
||||
{{encoded, "BLXqLWB1EYGewUM3WWt7JHiPpAQ9p4Sztv9ssE4vKVpBUUGpuu7toZRkto6VQof6Ys8jtoZB3WZmbGDdUBNvqT8V5gQcTwZVLvVnYkixXTCphKQM6NcSSzm5TywfbHXWbkPBwWuFkzjokuS4psLCBfixLdn1qjzP1RDuFVNFip6SEQTvAxw62eJLvTw8PP7FqQmZb8XnWu2HwgXfc6hkqas5zjm61acBBhJqeHBonqf4cbWFfK6DendCcQG1SZeNY9ghXnEkk863e98xoyqd5Ra8XGpASDXGgqbQ337BBjHEpJBfRMyqoszLaXZN44NZMp7YcRALGd8fz8nGHbm61GPFDRLTUeW3jQsRPuVi7tbN7zu8DsDR8Jve9J9W32WCXyahq11Df2Ld4LzxqBwytYJWDTcrCPJoZE1a6JvJt4hdeX4jzfaQLGUAuxhu7zRTW7xYUAFGEY74fpPW29zyT7edPugMxVtLSM88VU7sXtiqow8hkT5VhQ6PvV2kQwKqszh6ecbmJ1kVuivzU72GdGt11iff9iEGKVi8RiPaNchanopz2xnSGk5UceYr9wjBYsRkUghppy7ShzW5E5Hp1tPSXJ6RUPDchVoVYLo7dPAbUkwY3JzKvke59X"},
|
||||
{decoded, <<177, 128, 46, 25, 49, 139, 82, 124, 144, 71, 88, 175, 236, 221, 49, 77, 76, 3, 217, 40, 34, 62, 231, 73, 115, 163, 132, 75, 139, 171, 216, 106, 159, 181, 162, 91, 154, 159, 141, 183, 125, 120, 123, 62, 17, 24, 219, 11, 188, 112, 149, 115, 254, 85, 213, 245, 200, 3, 228, 177, 1, 8, 142, 121, 119, 28, 47, 183, 156, 95, 187, 37, 60, 162, 250, 51, 50, 210, 50, 248, 245, 3, 41, 80, 54, 213, 189, 58, 89, 128, 45, 54, 79, 33, 214, 194, 151, 31, 187, 209, 229, 158, 57, 176, 161, 6, 140, 156, 59, 107, 142, 202, 54, 215, 224, 173, 215, 122, 50, 29, 245, 150, 0, 106, 225, 57, 135, 193, 78, 184, 66, 81, 160, 56, 213, 215, 247, 105, 75, 187, 117, 142, 16, 158, 2, 173, 192, 251, 200, 102, 207, 52, 106, 87, 100, 137, 150, 206, 216, 245, 138, 25, 85, 220, 193, 127, 36, 107, 179, 19, 173, 162, 186, 66, 189, 29, 82, 147, 244, 227, 63, 32, 233, 116, 39, 105, 77, 153, 229, 182, 43, 95, 66, 122, 252, 194, 62, 116, 142, 125, 142, 200, 120, 201, 119, 111, 87, 20, 140, 114, 8, 213, 124, 11, 246, 4, 213, 222, 223, 109, 80, 177, 39, 214, 140, 45, 139, 160, 124, 99, 155, 168, 216, 163, 45, 159, 77, 159, 67, 100, 188, 91, 77, 141, 85, 197, 192, 213, 112, 148, 242, 73, 158, 42, 119, 231, 189, 132, 3, 27, 115, 156, 141, 63, 179, 72, 59, 114, 139, 221, 22, 81, 146, 20, 16, 167, 120, 224, 77, 98, 89, 148, 132, 80, 109, 28, 25, 51, 210, 130, 104, 80, 40, 7, 8, 50, 147, 34, 255, 94, 130, 222, 31, 104, 218, 118, 180, 211, 139, 143, 55, 32, 213, 119, 98, 194, 237, 186, 162, 92, 102, 134, 23, 28, 103, 39, 43, 110, 136, 3, 63, 151, 4, 219, 90, 9, 28, 35, 40, 61, 76, 144, 193, 59, 222, 86, 214, 69, 22, 139, 121, 140, 145, 188, 96, 13, 9, 108, 2, 194, 243, 52, 30, 159, 12, 214, 47, 73, 104, 209, 111, 158, 93, 239, 127, 63, 119, 196, 237, 96, 34, 69, 252, 228, 182, 93, 62, 204, 100, 21, 107, 204, 84, 86, 93, 45, 76, 135, 221, 232, 218, 182, 129, 100, 92, 78, 153, 49, 130, 214, 88, 248, 229, 128, 198, 201, 116, 37, 129, 1, 138, 67, 46, 106, 250, 40, 1, 29, 48, 161, 102, 184, 222, 169, 127, 44, 6, 118, 31, 164, 72, 4, 182, 194, 66, 169, 160, 212, 10, 156, 197, 160, 203, 122, 51, 225, 71, 184, 113, 226, 152, 87, 178, 22>>}}.
|
||||
{{encoded, "3yW8KuCReCbwRVnjbsetS5Qk1wcHuEVJkDGinkqexyHEpWxHHVoYBoXkrAvqmxtrFqwhALrGGNPQy8eNQvSNLBmWememAkWEU8NPT32CUfhFKcwL8bLYRmiaKGNWmtVn6aY7NnE3dKBjZGenZzoecbn8jD9GXAjJq9tX2CLf7kPB8tQfEWZJUXgVzvbxkqPZvgLQ8K8wCfLp4n6Q11HwmRcJ2j9QR9z58nBxdxcruGkAcHUTzkhvUdESQgZNSkDMtxjMcRcynVe4dKNUFU41AyshQARoFe19cAaVwctPnMaqCvoi74ECGeisYYcJs8ukiUHmcoGDmURtGFmsVDgKnKuoXnd5QEN9ctcEgAaxwXq69zKSEEmmVwFrxUfD2wfhk3ZFJfxb1Wi3RtQ1oReXqYbb5RjZscEq33Ha4YL4mE1HTZg1vvt3tzjrKMir81rC4iMuCXvj1ecrT8CZz"},
|
||||
{decoded, <<204, 117, 163, 217, 19, 66, 43, 227, 207, 176, 192, 137, 253, 9, 112, 181, 246, 100, 59, 207, 205, 26, 236, 6, 180, 149, 245, 2, 86, 76, 246, 105, 124, 238, 185, 109, 216, 178, 176, 78, 217, 129, 41, 149, 224, 220, 126, 74, 221, 165, 183, 180, 242, 179, 91, 220, 31, 46, 44, 159, 103, 213, 213, 160, 27, 226, 50, 126, 236, 34, 119, 18, 81, 119, 116, 21, 216, 91, 94, 69, 133, 77, 28, 134, 56, 53, 184, 39, 250, 131, 41, 85, 6, 221, 34, 155, 73, 41, 87, 19, 166, 83, 57, 122, 66, 244, 162, 13, 190, 93, 105, 96, 229, 79, 179, 2, 59, 208, 34, 141, 37, 173, 175, 59, 9, 221, 238, 28, 125, 89, 46, 227, 139, 137, 251, 92, 204, 125, 208, 31, 230, 111, 101, 51, 77, 34, 188, 66, 83, 243, 103, 116, 38, 153, 252, 179, 13, 80, 235, 231, 7, 98, 141, 2, 248, 175, 67, 10, 194, 238, 155, 9, 132, 246, 39, 106, 110, 196, 118, 23, 158, 21, 48, 193, 136, 114, 197, 169, 17, 201, 119, 5, 227, 119, 192, 78, 104, 0, 43, 42, 228, 215, 36, 241, 240, 122, 101, 144, 48, 234, 131, 19, 174, 13, 173, 97, 13, 177, 235, 227, 6, 113, 172, 164, 35, 6, 248, 81, 221, 41, 164, 196, 57, 189, 116, 146, 200, 195, 220, 115, 55, 109, 29, 192, 167, 143, 110, 254, 143, 99, 244, 17, 196, 90, 104, 47, 107, 38, 78, 2, 57, 1, 110, 69, 80, 157, 81, 245, 108, 225, 24, 6, 70, 159, 102, 101, 120, 24, 114, 103, 162, 211, 168, 137, 14, 15, 13, 174, 115, 243, 253, 71, 222, 177, 67, 212, 158, 106, 237, 198, 115, 34, 66, 225, 207, 127, 173, 34, 119, 66, 92, 145, 175, 251, 94, 128, 93, 72, 235, 140, 173, 214, 17, 235, 154, 204, 33, 197, 165, 103, 104, 70, 210, 203, 138, 188, 39, 166, 125, 157>>}}.
|
||||
{{encoded, "5srRbWi47mtiRy1yFXYgMTV5x13GRHKdfBQT7h3nWvryiuXaKqa1wSfukcjvNE1sDc8bCKHqSDNauk5y19xai7nYeYSdfkpVgXdfibAEdP45GpueiBpaRri8iCw5gwzcXfgULtmUaGRYAQCrgPpnAK7PYX8ZcwxwHwUAih5eWo3"},
|
||||
{decoded, <<70, 167, 86, 111, 241, 106, 26, 245, 221, 6, 189, 45, 133, 136, 219, 114, 92, 228, 127, 192, 144, 235, 142, 241, 107, 71, 150, 25, 26, 34, 124, 254, 97, 197, 201, 152, 215, 76, 249, 100, 111, 8, 159, 119, 255, 84, 255, 206, 131, 141, 50, 44, 156, 60, 16, 128, 197, 27, 94, 174, 170, 163, 113, 227, 81, 117, 119, 177, 191, 240, 41, 117, 143, 57, 13, 114, 132, 41, 124, 9, 53, 185, 19, 60, 229, 74, 221, 211, 165, 161, 227, 152, 155, 132, 79, 62, 51, 154, 203, 57, 221, 189, 207, 238, 32, 245, 83, 203, 183, 2, 41, 147, 237, 148, 58, 118, 42, 191, 141, 212, 61, 204, 100, 58, 74>>}}.
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
-module(bits).
|
||||
|
||||
-compile([export_all, nowarn_export_all]).
|
||||
|
||||
|
||||
rand_bits(N) when N =< 8 ->
|
||||
<<Foo:N, _/bits>> = rand:bytes(1),
|
||||
<<Foo:N>>;
|
||||
rand_bits(N) when N > 8 ->
|
||||
Num_Bytes = N div 8,
|
||||
Num_Trailing_Bits = N rem 8,
|
||||
<<( rand_bits(Num_Trailing_Bits) )/bits,
|
||||
( rand:bytes(Num_Bytes) )/binary>>.
|
||||
|
||||
|
||||
|
||||
fmt(Bits) ->
|
||||
io:format("~ts~n", [format_bits(Bits)]).
|
||||
|
||||
|
||||
|
||||
format_bits(Bits) ->
|
||||
["<<", format_bits2(Bits), ">>"].
|
||||
|
||||
|
||||
format_bits2(Bits) when 8 =< bit_size(Bits) ->
|
||||
NBits = bit_size(Bits),
|
||||
NBytes = NBits div 8,
|
||||
NRem = NBits rem 8,
|
||||
<<Bytes:NBytes/bytes, NewBits:NRem/bits>> = Bits,
|
||||
case NRem of
|
||||
0 ->
|
||||
format_bytes(Bytes);
|
||||
_ ->
|
||||
[format_bytes(Bytes), ", ", format_bits2(NewBits)]
|
||||
end;
|
||||
format_bits2(Bits = <<Start:4/bits, Rem/bits>>) when 5 =< bit_size(Bits) ->
|
||||
[format_bits2(Start), "_", format_bits2(Rem)];
|
||||
format_bits2(Bits = <<B:1, Rest/bits>>) when 1 =< bit_size(Bits) ->
|
||||
case B of
|
||||
0 ->
|
||||
["0", format_bits2(Rest)];
|
||||
1 ->
|
||||
["1", format_bits2(Rest)]
|
||||
end;
|
||||
format_bits2(<<>>) ->
|
||||
[].
|
||||
|
||||
|
||||
%% hack: split into two groups of 4 bits
|
||||
format_bytes(<<A:4/bits, B:4/bits>>) ->
|
||||
[format_bits2(A), "_", format_bits2(B)];
|
||||
%% byte_size(Rest) >= 1 by previous case
|
||||
format_bytes(<<N:1/bytes, Rest/bytes>>) ->
|
||||
[format_bytes(N), ", ", format_bytes(Rest)];
|
||||
format_bytes(<<>>) ->
|
||||
[].
|
||||
|
||||
|
||||
|
||||
|
||||
%% ten random cases for each pair of bit lengths, 0 =< N =< 32
|
||||
rand_cases() ->
|
||||
rand_cases(0, 0, []).
|
||||
|
||||
%% ten random cases for
|
||||
rand_cases(32, 32, Acc) ->
|
||||
[ten_cases(32, 32) | Acc];
|
||||
rand_cases(N, 32, Acc) ->
|
||||
NewAcc = [ten_cases(N, 32) | Acc],
|
||||
rand_cases(N + 1, 0, NewAcc);
|
||||
rand_cases(N, M, Acc) ->
|
||||
rand_cases(N, M + 1, [ten_cases(N, M) | Acc]).
|
||||
|
||||
|
||||
ten_cases(N, M) ->
|
||||
[cs(N, M) || _ <- lists:seq(1, 10)].
|
||||
|
||||
cs(N, M) ->
|
||||
A = rand_bits(N),
|
||||
B = rand_bits(M),
|
||||
C = <<A/bits, B/bits>>,
|
||||
{A, B, C}.
|
||||
|
||||
|
||||
fmt_rand_cases_(Cases) ->
|
||||
io:format("~ts~n", [fmt_rand_cases(Cases)]).
|
||||
|
||||
|
||||
fmt_rand_cases(Cases) ->
|
||||
["[", fmt_rand_cases2(Cases, ""), "]"].
|
||||
|
||||
%% one more case
|
||||
%% no trailing comma
|
||||
fmt_rand_cases2([TenCases], Acc) ->
|
||||
[Acc, fmt_ten_cases(TenCases)];
|
||||
%% at least two more cases
|
||||
%% add trailing comma
|
||||
fmt_rand_cases([TenCases | Rest]) ->
|
||||
lists:map(fun fmt_ten_cases/1, Cases).
|
||||
|
||||
|
||||
fmt_ten_cases
|
||||
|
||||
|
||||
fmt_case_(Case) ->
|
||||
io:format("~ts~n", [fmt_case(Case)]).
|
||||
|
||||
fmt_case({A, B, AB}) ->
|
||||
["{a : ", fmtjs(A), ",\n",
|
||||
" b : ", fmtjs(B), ",\n",
|
||||
" ab : ", fmtjs(AB), "}"].
|
||||
|
||||
|
||||
%% format bitstring as JS bits
|
||||
fmtjs_(Bits) ->
|
||||
io:format("~ts~n", [fmtjs(Bits)]).
|
||||
|
||||
fmtjs(Bits) ->
|
||||
BS = bit_size(Bits),
|
||||
BF = format_bytes_js(Bits),
|
||||
io_lib:format("{bit_size : ~tp,~n"
|
||||
" bytes : ~ts}",
|
||||
[BS, BF]).
|
||||
|
||||
|
||||
format_bytes_js(Bits) ->
|
||||
["new Uint8Array([", format_bytes_js2(Bits), "])"].
|
||||
|
||||
|
||||
%% formats the contents of the array
|
||||
%% empty array
|
||||
format_bytes_js2(<<>>) ->
|
||||
"";
|
||||
%% exactly one entry
|
||||
format_bytes_js2(Bits) when bit_size(Bits) =< 8 ->
|
||||
BS = bit_size(Bits),
|
||||
<<N:BS>> = Bits,
|
||||
%% ah... right, ok we have to bitshift left by the missing zeros
|
||||
NumMissingZeros = 8 - BS,
|
||||
N_ = N bsl NumMissingZeros,
|
||||
io_lib:format("~tp", [N_]);
|
||||
%% more than one entry, need to call format_bytes_js3 with a nontrivial initial
|
||||
%% accumulator
|
||||
format_bytes_js2(<<N:8, Rest/bits>>) ->
|
||||
InitAcc = io_lib:format("~tp", [N]),
|
||||
format_bytes_js3(Rest, InitAcc).
|
||||
|
||||
|
||||
|
||||
%% empty array case; should only happen on initial call
|
||||
format_bytes_js3(<<>>, Acc) ->
|
||||
Acc;
|
||||
%% terminal case: one bit remaining
|
||||
format_bytes_js3(Bits, Acc) when bit_size(Bits) =< 8 ->
|
||||
BS = bit_size(Bits),
|
||||
<<N:BS>> = Bits,
|
||||
%% ah... right, ok we have to bitshift left by the missing zeros
|
||||
NumMissingZeros = 8 - BS,
|
||||
N_ = N bsl NumMissingZeros,
|
||||
FinalAcc = [Acc, ", ", io_lib:format("~tp", [N_])],
|
||||
FinalAcc;
|
||||
%% general case
|
||||
format_bytes_js3(<<N:8, Rest/bits>>, Acc) ->
|
||||
NewAcc = [Acc, ", ", io_lib:format("~tp", [N])],
|
||||
format_bytes_js3(Rest, NewAcc).
|
||||
@@ -0,0 +1,142 @@
|
||||
-module(rlp).
|
||||
|
||||
-compile(export_all).
|
||||
-compile(nowarn_export_all).
|
||||
|
||||
-type decoded_data() :: binary() | [decoded_data()].
|
||||
|
||||
|
||||
|
||||
-spec encode(Data) -> RLP
|
||||
when Data :: decoded_data(),
|
||||
RLP :: binary().
|
||||
%% @doc
|
||||
%% encode some data
|
||||
|
||||
encode(Binary) when is_binary(Binary) ->
|
||||
encode_binary(Binary);
|
||||
encode(List) when is_list(List) ->
|
||||
encode_list(List).
|
||||
|
||||
|
||||
|
||||
-spec encode_binary(Bytes) -> RLP
|
||||
when Bytes :: binary(),
|
||||
RLP :: binary().
|
||||
%% @private
|
||||
%% encode a binary in rlp
|
||||
%% @end
|
||||
|
||||
% single byte case when the byte is between 0..127
|
||||
% result is the byte itself
|
||||
encode_binary(<<Byte>>) when Byte =< 127 ->
|
||||
<<Byte>>;
|
||||
% if the bytestring is 0..55 items long, the first byte is 128 + Length,
|
||||
% the rest of the string is the string
|
||||
encode_binary(Bytes) when byte_size(Bytes) =< 55 ->
|
||||
Size = byte_size(Bytes),
|
||||
<<(128 + Size), Bytes/binary>>;
|
||||
% more than 55 bytes long, first byte is 183 + ByteLengthOfLength
|
||||
% max byte size is 2^64 - 1
|
||||
encode_binary(Bytes) when 55 < byte_size(Bytes), byte_size(Bytes) < (1 bsl 64) ->
|
||||
SizeInt = byte_size(Bytes),
|
||||
SizeBytes = binary:encode_unsigned(SizeInt, big),
|
||||
SizeOfSizeInt = byte_size(SizeBytes),
|
||||
%% 183 = 128 + 55
|
||||
%% SizeOfSizeInt > 0
|
||||
<<(183 + SizeOfSizeInt),
|
||||
SizeBytes/binary,
|
||||
Bytes/binary>>.
|
||||
|
||||
|
||||
|
||||
-spec encode_list(List) -> RLP
|
||||
when List :: [decoded_data()],
|
||||
RLP :: binary().
|
||||
%% @private
|
||||
%% encode a list in rlp
|
||||
%% @end
|
||||
|
||||
% first we encode the total payload of the list
|
||||
% depending on how long it is, we then branch
|
||||
encode_list(List) ->
|
||||
Payload = << (encode(Item)) || Item <- List>>,
|
||||
Payload_Size = byte_size(Payload),
|
||||
if
|
||||
Payload_Size =< 55 ->
|
||||
<<(192 + Payload_Size), Payload/binary>>;
|
||||
55 < Payload_Size ->
|
||||
SizeBytes = binary:encode_unsigned(Payload_Size, big),
|
||||
SizeOfSizeInt = byte_size(SizeBytes),
|
||||
%% 247 = 192 + 55
|
||||
%% SizeOfSizeInt > 0
|
||||
<<(247 + SizeOfSizeInt),
|
||||
SizeBytes/binary,
|
||||
Payload/binary>>
|
||||
end.
|
||||
|
||||
|
||||
|
||||
-spec decode(RLP) -> {Data, Rest}
|
||||
when RLP :: binary(),
|
||||
Data :: decoded_data(),
|
||||
Rest :: binary().
|
||||
%% @doc
|
||||
%% decode an RLP-encoded string
|
||||
%% @end
|
||||
|
||||
% if the first byte is between 0 and 127, that is the data
|
||||
decode(<<Byte, Rest/binary>>) when Byte =< 127 ->
|
||||
{<<Byte>>, Rest};
|
||||
% if the first byte is between 128 and 183 = 128 + 55, it is a bytestring and
|
||||
% the length is Byte - 128
|
||||
decode(<<Byte, Rest/binary>>) when Byte =< 183 ->
|
||||
PayloadByteLength = Byte - 128,
|
||||
%PayloadBitLength = 8 * PayloadByteLength,
|
||||
%io:format("Byte : ~p~n"
|
||||
% "Rest : ~w~n"
|
||||
% "PayloadByteLength : ~p~n",
|
||||
% %"PayloadBitLength : ~p~n",
|
||||
% [Byte, Rest, PayloadByteLength]),
|
||||
<<Payload:PayloadByteLength/binary,
|
||||
Rest2/binary>> = Rest,
|
||||
{Payload, Rest2};
|
||||
% If the first byte is between 184 = 183 + 1 and 191 = 183 + 8, it is a
|
||||
% bytestring. The byte length of the byte length of bytestring is FirstByte -
|
||||
% 183. Then pull out the actual data
|
||||
decode(<<Byte, Rest/binary>>) when Byte =< 191 ->
|
||||
ByteLengthOfByteLength = Byte - 183,
|
||||
BitLengthOfByteLength = 8 * ByteLengthOfByteLength,
|
||||
<<ByteLengthInt:BitLengthOfByteLength,
|
||||
Rest2/binary>> = Rest,
|
||||
<<Payload:ByteLengthInt/binary,
|
||||
Rest3/binary>> = Rest2,
|
||||
{Payload, Rest3};
|
||||
% If the first byte is between 192 and 247 = 192 + 55, it is a list. The byte
|
||||
% length of the list-payload is FirstByte - 192. Then the list payload, which
|
||||
% needs to be decoded on its own.
|
||||
decode(<<Byte, Rest/binary>>) when Byte =< 247 ->
|
||||
ByteLengthOfListPayload = Byte - 192,
|
||||
<<ListPayload:ByteLengthOfListPayload/binary,
|
||||
Rest2/binary>> = Rest,
|
||||
List = decode_list(ListPayload),
|
||||
{List, Rest2};
|
||||
% If the first byte is between 248 = 247 + 1 and 255 = 247 + 8, it is a list.
|
||||
% The byte length of the byte length of the list-payload is FirstByte - 247.
|
||||
% Then the byte length of the list. Then the list payload, which needs to be
|
||||
% decoded on its own.
|
||||
decode(<<Byte, Rest/binary>>) ->
|
||||
ByteLengthOfByteLengthOfListPayload_int = Byte - 247,
|
||||
BitLengthOfByteLengthOfListPayload_int = 8 * ByteLengthOfByteLengthOfListPayload_int,
|
||||
<<ByteLengthOfListPayload_int:BitLengthOfByteLengthOfListPayload_int,
|
||||
Rest2/binary>> = Rest,
|
||||
<<ListPayload_bytes:ByteLengthOfListPayload_int/binary,
|
||||
Rest3/binary>> = Rest2,
|
||||
List = decode_list(ListPayload_bytes),
|
||||
{List, Rest3}.
|
||||
|
||||
decode_list(<<>>) ->
|
||||
[];
|
||||
decode_list(Bytes) ->
|
||||
{Item, Rest} = decode(Bytes),
|
||||
[Item | decode_list(Rest)].
|
||||
@@ -0,0 +1,256 @@
|
||||
%-module(rlp_testgen).
|
||||
%-compile(export_all).
|
||||
|
||||
-mode(compile).
|
||||
-compile([nowarn_unused_function]).
|
||||
|
||||
main([]) ->
|
||||
% Decoded cases
|
||||
DecodedCases = rand_decode_datas(10_000),
|
||||
%io:format("~p~n", [DecodedCases]),
|
||||
io:format("~s~n", [format_cases_js(DecodedCases)]),
|
||||
ok.
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%
|
||||
%%% JS FORMATTING %%%
|
||||
%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
format_cases_js(Cases) ->
|
||||
format_stringlist_js(lists:map(fun format_case_js/1, Cases)).
|
||||
|
||||
% format a list of strings into a python list
|
||||
format_stringlist_js(List) ->
|
||||
% stringlist commas are the same in python/js, so reusing python
|
||||
["import * as rlp from './jex_include/local-vanillae-0.1.0/dist/rlp.js';\n"
|
||||
"\n"
|
||||
"type rlpcases = {decoded: rlp.decoded_data, encoded: Uint8Array};\n"
|
||||
"\n"
|
||||
"// @ts-ignore never mind; jesus christ\n"
|
||||
"export const cases : Array<rlpcases> = [\n", slcommas(List, []), "];"].
|
||||
|
||||
% input: decoded_data
|
||||
% format a case as
|
||||
% {'decoded_data': <js term for rlist>,
|
||||
% 'encoded_bytes': new Uint8Array([B1, B2, B3, ...])}
|
||||
format_case_js(DecodedData_rlist) ->
|
||||
% EncodedData_bytes = rlp:encode(
|
||||
% DD_js = format_data_js(DecodedData_rlist),
|
||||
EncodedData_bytes = rlp:encode(DecodedData_rlist),
|
||||
EncodedBytes_py = format_bytes_js(EncodedData_bytes),
|
||||
DecodedData_py = format_data_js(DecodedData_rlist),
|
||||
[" {'decoded': ", DecodedData_py, ",\n",
|
||||
" 'encoded': ", EncodedBytes_py, "}"].
|
||||
|
||||
|
||||
format_data_js(List) when is_list(List) ->
|
||||
format_list_js(List);
|
||||
format_data_js(Bytes) when is_binary(Bytes) ->
|
||||
format_bytes_js(Bytes).
|
||||
|
||||
|
||||
format_list_js(List) ->
|
||||
[$[, js_lcommas(List, []), $]].
|
||||
|
||||
|
||||
% similar to commas/2 below but for a list
|
||||
% cases
|
||||
% - list is empty -> special case
|
||||
% - exactly one element -> special case
|
||||
% - two or more elements -> peel off one at a time until terminal case of exactly one
|
||||
% initial input empty, so return empty
|
||||
js_lcommas([], []) ->
|
||||
[];
|
||||
% one item left, do not add comma
|
||||
js_lcommas([Item], Acc) ->
|
||||
[Acc, format_data_js(Item)];
|
||||
% two or more items left, add comma
|
||||
js_lcommas([Item | Rest], Acc) ->
|
||||
js_lcommas(Rest, [Acc, format_data_js(Item), ", "]).
|
||||
|
||||
% format a bytestring as "bytes([Byte1, Byte2, ...])"
|
||||
format_bytes_js(Bytes) ->
|
||||
% commas are the same as in python so reusing that
|
||||
Commas = commas(Bytes, []),
|
||||
["new Uint8Array([", Commas, "])"].
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%% PYTHON FORMATTING %%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
format_cases_py(Cases) ->
|
||||
format_stringlist_py(lists:map(fun format_case_py/1, Cases)).
|
||||
|
||||
% format a list of strings into a python list
|
||||
format_stringlist_py(List) ->
|
||||
["cases = [\n", slcommas(List, []), $]].
|
||||
|
||||
% similar to commas/2 below but for a list of the dictstrings
|
||||
% adding a comma, a newline, and a space
|
||||
%
|
||||
% this one does no intrnal processing
|
||||
%
|
||||
% cases
|
||||
% - list is empty -> special case
|
||||
% - exactly one element -> special case
|
||||
% - two or more elements -> peel off one at a time until terminal case of exactly one
|
||||
% initial input empty, so return empty
|
||||
slcommas([], []) ->
|
||||
[];
|
||||
% one item left, do not add comma
|
||||
slcommas([Item], Acc) ->
|
||||
[Acc, Item];
|
||||
% two or more items left, add comma
|
||||
slcommas([Item | Rest], Acc) ->
|
||||
slcommas(Rest, [Acc, Item, ",\n"]).
|
||||
|
||||
|
||||
|
||||
% input: decoded_data
|
||||
% format a case as
|
||||
% {'decoded_data': <python term for rlist>,
|
||||
% 'encoded_bytes': bytes([B1, B2, B3, ...])}
|
||||
format_case_py(DecodedData_rlist) ->
|
||||
% EncodedData_bytes = rlp:encode(
|
||||
% DD_js = format_data_js(DecodedData_rlist),
|
||||
EncodedData_bytes = rlp:encode(DecodedData_rlist),
|
||||
EncodedBytes_py = format_bytes_py(EncodedData_bytes),
|
||||
DecodedData_py = format_data_py(DecodedData_rlist),
|
||||
[" {'decoded': ", DecodedData_py, ",\n",
|
||||
" 'encoded': ", EncodedBytes_py, "}"].
|
||||
|
||||
|
||||
|
||||
format_data_py(List) when is_list(List) ->
|
||||
format_list_py(List);
|
||||
format_data_py(Bytes) when is_binary(Bytes) ->
|
||||
format_bytes_py(Bytes).
|
||||
|
||||
format_list_py(List) ->
|
||||
[$[, lcommas(List, []), $]].
|
||||
|
||||
% similar to commas/2 below but for a list
|
||||
% cases
|
||||
% - list is empty -> special case
|
||||
% - exactly one element -> special case
|
||||
% - two or more elements -> peel off one at a time until terminal case of exactly one
|
||||
% initial input empty, so return empty
|
||||
lcommas([], []) ->
|
||||
[];
|
||||
% one item left, do not add comma
|
||||
lcommas([Item], Acc) ->
|
||||
[Acc, format_data_py(Item)];
|
||||
% two or more items left, add comma
|
||||
lcommas([Item | Rest], Acc) ->
|
||||
lcommas(Rest, [Acc, format_data_py(Item), ", "]).
|
||||
|
||||
|
||||
|
||||
% format a bytestring as "bytes([Byte1, Byte2, ...])"
|
||||
format_bytes_py(Bytes) ->
|
||||
Commas = commas(Bytes, []),
|
||||
["bytes([", Commas, "])"].
|
||||
|
||||
% cases:
|
||||
% - bytestring is empty -> special case
|
||||
% - exactly one element -> special case
|
||||
% - two or more elements -> peel off one at a time until terminal case of exactly two
|
||||
% empty bytestring
|
||||
commas(<<>>, []) ->
|
||||
[];
|
||||
% only one byte left, do not add comma
|
||||
commas(<<B2>>, Acc) ->
|
||||
[Acc, integer_to_list(B2)];
|
||||
% two or more bytes left: peel off one, add comma
|
||||
commas(<<B, Rest/binary>>, Acc) ->
|
||||
commas(Rest, [Acc, integer_to_list(B), ", "]).
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%% INVERSE PROPERTY TEST %%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% test that the inverse property is correct
|
||||
|
||||
test_inverse() ->
|
||||
% test stuff
|
||||
DecodedCases = rand_decode_datas(20),
|
||||
All = lists:all(% predicate
|
||||
fun(X) -> X end,
|
||||
% data
|
||||
lists:map(fun(DecodedData) ->
|
||||
CI = check_inverse(DecodedData),
|
||||
ok = io:format("~p~n", [CI]),
|
||||
CI
|
||||
end,
|
||||
DecodedCases)),
|
||||
io:format("all: ~p~n", [All]),
|
||||
ok.
|
||||
|
||||
|
||||
check_inverse(DecodedData) ->
|
||||
{DeEncodedData, <<>>} = rlp:decode(rlp:encode(DecodedData)),
|
||||
DeEncodedData =:= DecodedData.
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%% RANDOM CASE GENERATION %%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%mkcase(DecodedData) ->
|
||||
% Encoded = rlp:encode(DecodedData),
|
||||
% {Deencoded, <<>>} = rlp:decode(
|
||||
% %{decoded, DecodedData,
|
||||
% % encoded,
|
||||
|
||||
% check
|
||||
% - encode is correct
|
||||
% - decode is the inverse of decode
|
||||
|
||||
% generate N-ish random decode datas
|
||||
% no duplicates
|
||||
rand_decode_datas(N) ->
|
||||
% hack to remove duplicate cases
|
||||
% this is good enough
|
||||
sets:to_list(sets:from_list(rand_list(N))).
|
||||
|
||||
% generate a list of random datas n items long
|
||||
rand_list(N) ->
|
||||
[rand_data() || _ <- lists:seq(1, N)].
|
||||
|
||||
|
||||
% generate a random bytestring or random list with 50% probability
|
||||
rand_data() ->
|
||||
MkList = rand:uniform() < 0.7,
|
||||
case MkList of
|
||||
true -> rand_list();
|
||||
false -> rand_bytes()
|
||||
end.
|
||||
|
||||
|
||||
% generate a random list of random length between 0 and 10, inclusive
|
||||
rand_list() ->
|
||||
% rand:uniform(N) is between 1 and N
|
||||
NItems = rand:uniform(3) - 1,
|
||||
rand_list(NItems).
|
||||
|
||||
|
||||
% generate a random bytestring between 0 and 100 bytes long
|
||||
rand_bytes() ->
|
||||
%works
|
||||
case rand:uniform() < 0.5 of
|
||||
% either generate between 0 and 5 items or between 5 and 100 items
|
||||
true ->
|
||||
NItems = rand:uniform(6) - 1,
|
||||
crypto:strong_rand_bytes(NItems);
|
||||
false ->
|
||||
% range between 1, 96, add 4
|
||||
NItems = (rand:uniform(96) + 4),
|
||||
crypto:strong_rand_bytes(NItems)
|
||||
end.
|
||||
% syntax error:
|
||||
% they look literally the same
|
||||
%NItems = rand:uniform(11) - 1, crypto:strong_rand:bytes(NItems).
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python3.9
|
||||
|
||||
'''
|
||||
generate rlp tests
|
||||
|
||||
really checking to see if my code matches the ethereum python rlp package which
|
||||
has 85 stars on github
|
||||
|
||||
requires rlp package, which requires python 3.7 or greater
|
||||
|
||||
this checks to see if my Erlang implementation matches python. It works for
|
||||
59,638 randomly generated test cases
|
||||
'''
|
||||
|
||||
# need more cases
|
||||
# single bytes
|
||||
# empty list
|
||||
# list with variable number of elements
|
||||
# element has equal chance of becoming a list or a binary
|
||||
|
||||
import rlp
|
||||
import random as r
|
||||
|
||||
from rlpcases import cases
|
||||
|
||||
def main():
|
||||
all_encode_work = True
|
||||
all_decode_work = True
|
||||
for case in cases:
|
||||
decoded_data = case['decoded']
|
||||
encoded_bytes = case['encoded']
|
||||
real_encoded_bytes = rlp.encode(decoded_data)
|
||||
real_decoded_data = rlp.decode(encoded_bytes)
|
||||
# check if encode/decode works
|
||||
encode_works = (real_encoded_bytes == encoded_bytes)
|
||||
decode_works = (real_decoded_data == decoded_data)
|
||||
print('encode works: %s' % (encode_works))
|
||||
print('decode works: %s' % (decode_works))
|
||||
# update globals
|
||||
all_encode_work = all_encode_work and encode_works
|
||||
all_decode_work = all_decode_work and decode_works
|
||||
# print globals
|
||||
print('all encode work: %s' % (all_encode_work))
|
||||
print('all decode work: %s' % (all_decode_work))
|
||||
#print(format_cases_erl(c))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user