From 2917fab23ac98662d829e60a9f6c2f66785b8194 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Mon, 11 Mar 2019 01:26:37 +0100 Subject: [PATCH] Update the access control example crypto library assemblyscript/crypto.ts is now way more readable, faster (fixed-size arrays cannot really be fixed-size in AS, and classes can be more efficient) and smaller. Signatures and EC arithmetic are now done on the Ristretto group for yet another slight speedup. --- 105_access_control_example/README.md | 3 +- 105_access_control_example/assembly/crypto.ts | 1104 +++++++++++++---- 105_access_control_example/assembly/index.ts | 6 +- .../assembly/precomp.ts | 256 ---- 105_access_control_example/assets/acl.js | 10 +- .../assets/optimized.wasm | Bin 221453 -> 228691 bytes 6 files changed, 864 insertions(+), 515 deletions(-) diff --git a/105_access_control_example/README.md b/105_access_control_example/README.md index 26a997f..94abcaa 100644 --- a/105_access_control_example/README.md +++ b/105_access_control_example/README.md @@ -64,7 +64,8 @@ The protocol assumes that the client and the server communicate over a secure ch This code is used both by the JavaScript client code and by the AssemblyScript running on Terrarium. It implements the following cryptographic primitives in AssemblyScript: -- The EdDSA signature scheme +- Schnorr signatures (Ed25519 and over the Ristretto group) +- Finite field arithmetic on integers and Curve25519 points - The HMAC-SHA-512 keyed MAC. Functions exported by this module can be called by the main server code using their native interface, since both are written in the same language. diff --git a/105_access_control_example/assembly/crypto.ts b/105_access_control_example/assembly/crypto.ts index 4a49fbb..04765ab 100644 --- a/105_access_control_example/assembly/crypto.ts +++ b/105_access_control_example/assembly/crypto.ts @@ -6,9 +6,13 @@ import { LOAD, STORE } from 'internal/arraybuffer'; import { precompBase } from './precomp'; export { memory }; +const RELEASE: bool = true; + +// Helpers + @inline function setU8(t: Uint8Array, s: Uint8Array, o: isize = 0): void { for (let i: isize = 0, len = s.length; i < len; ++i) { - t[i + o] = s[i]; + t[i + o] = unchecked(s[i]); } } @@ -226,6 +230,22 @@ function allZeros(x: Uint8Array): bool { // mod(2^252 + 27742317777372353535851937790883648495) field arithmetic +type Scalar = Int64Array(64); +type ScalarPacked = Uint8Array(32); +type ScalarDouble = Uint8Array(64); + +@inline function newScalar(): Scalar { + return new Int64Array(64); +} + +@inline function newScalarPacked(): ScalarPacked { + return new Uint8Array(32); +} + +@inline function newScalarDouble(): ScalarDouble { + return new Uint8Array(64); +} + let _L: Int64Array = new Int64Array(32); _L[0] = 237; _L[1] = 211; @@ -245,11 +265,21 @@ _L[14] = 222; _L[15] = 20; _L[31] = 16; -@inline function scn(): Int64Array { - return new Int64Array(64); +function scIsLtL(s: ScalarPacked): bool { + let c: u8 = 0, n: u8 = 1, i = 32; + + do { + i--; + let l = unchecked(_L[i]) as u8; + let si = unchecked(s[i]); + c |= ((si - l) >> 8) & n; + n &= ((si ^ l) - 1) >> 8; + } while (i !== 0); + + return c === 0; } -function scModL(r: Uint8Array, x: Int64Array): void { +function scModL(r: ScalarPacked, x: Scalar): void { let carry: i64; for (let i = 63; i >= 32; --i) { @@ -257,7 +287,7 @@ function scModL(r: Uint8Array, x: Int64Array): void { let k = i - 12; let xi = x[i]; for (let j = i - 32; j < k; ++j) { - let xj = x[j] + carry - 16 * xi * _L[j - (i - 32)]; + let xj = unchecked(x[j] + carry - 16 * xi * _L[j - (i - 32)]); carry = (xj + 128) >> 8; x[j] = xj - carry * 256; } @@ -266,22 +296,22 @@ function scModL(r: Uint8Array, x: Int64Array): void { } carry = 0; for (let j = 0; j < 32; ++j) { - let xj = x[j] + carry - (x[31] >> 4) * _L[j]; + let xj = unchecked(x[j] + carry - (x[31] >> 4) * _L[j]); carry = xj >> 8; x[j] = xj & 255; } for (let j = 0; j < 32; ++j) { - x[j] -= carry * _L[j]; + x[j] -= unchecked(carry * _L[j]); } for (let i = 0; i < 32; ++i) { - let xi = x[i]; + let xi = unchecked(x[i]); x[i + 1] += xi >> 8; r[i] = xi as u8; } } -function scReduce(r: Uint8Array): void { - let x = new Int64Array(64); +function scReduce(r: ScalarDouble): void { + let x = newScalar(); for (let i = 0; i < 64; ++i) { x[i] = r[i]; @@ -290,26 +320,26 @@ function scReduce(r: Uint8Array): void { scModL(r, x); } -function scCarry(a: Int64Array): void { +function scCarry(a: Scalar): void { let carry: i64 = 0; for (let i = 0; i < 64; ++i) { let c = a[i] + carry; a[i] = c & 0xff; carry = (c >>> 8) } - if (carry > 0) { + if (!RELEASE && carry > 0) { throw new Error('overflow'); } } -function scMult(o: Int64Array, a: Int64Array, b: Int64Array): void { - let r = new Uint8Array(32); - let t = new Int64Array(64); +function scMult(o: Scalar, a: Scalar, b: Scalar): void { + let r = newScalarPacked(); + let t = newScalar(); for (let i = 0; i < 32; ++i) { let ai = a[i]; for (let j = 0; j < 32; ++j) { - t[i + j] += ai * b[j]; + t[i + j] += ai * unchecked(b[j]); } } scCarry(t); @@ -322,11 +352,11 @@ function scMult(o: Int64Array, a: Int64Array, b: Int64Array): void { } } -function scSq(o: Int64Array, a: Int64Array): void { +function scSq(o: Scalar, a: Scalar): void { scMult(o, a, a); } -function scSqMult(y: Int64Array, squarings: isize, x: Int64Array): void { +function scSqMult(y: Scalar, squarings: isize, x: Scalar): void { for (let i = 0; i < squarings; ++i) { scSq(y, y); } @@ -334,20 +364,20 @@ function scSqMult(y: Int64Array, squarings: isize, x: Int64Array): void { } function scInverse(s: Uint8Array): Uint8Array { - let res = new Uint8Array(32); - let _1 = scn(); + let res = newScalarPacked(); + let _1 = newScalar(); for (let i = 0; i < 32; ++i) { _1[i] = s[i]; } - let _10 = scn(), - _100 = scn(), - _11 = scn(), - _101 = scn(), - _111 = scn(), - _1001 = scn(), - _1011 = scn(), - _1111 = scn(), - y = scn(); + let _10 = newScalar(), + _100 = newScalar(), + _11 = newScalar(), + _101 = newScalar(), + _111 = newScalar(), + _1001 = newScalar(), + _1011 = newScalar(), + _1111 = newScalar(), + y = newScalar(); scSq(_10, _1); scSq(_100, _10); @@ -394,7 +424,7 @@ function scInverse(s: Uint8Array): Uint8Array { return res; } -@inline function scClamp(s: Uint8Array): void { +@inline function scClamp(s: ScalarPacked): void { s[0] &= 248; s[31] = (s[31] & 127) | 64; } @@ -420,12 +450,19 @@ function scSub(a: Uint8Array, b: Uint8Array): void { // mod(2^255-19) field arithmetic - Doesn't use 51-bit limbs yet to keep the // code short and simple -@inline function fe25519n(): Int64Array { +type Fe25519 = Int64Array(16); +type Fe25519Packed = Uint8Array(32); + +@inline function newFe25519(): Fe25519 { return new Int64Array(16); } -function fe25519(init: i64[]): Int64Array { - let r = new Int64Array(16); +@inline function newFe25519Packed(): Fe25519Packed { + return new Uint8Array(32); +} + +function fe25519(init: i64[]): Fe25519 { + let r = newFe25519(); for (let i = 0, len = init.length; i < len; ++i) { r[i] = init[i]; @@ -433,7 +470,7 @@ function fe25519(init: i64[]): Int64Array { return r; } -let fe25519_0 = fe25519n(); +let fe25519_0 = newFe25519(); let fe25519_1 = fe25519([1]); let D = fe25519([ @@ -446,22 +483,32 @@ let D2 = fe25519([ 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406, ]); -let X = fe25519([ - 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, - 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169, +let SQRTM1 = fe25519([ + 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, + 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83, ]); -let Y = fe25519([ - 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, - 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, +let SQRTADM1 = fe25519([ + 0x2e1b, 0x497b, 0xf6a0, 0x7e97, 0x54bd, 0x1b78, 0x8e0c, 0xaf9d, + 0xd1fd, 0x31f5, 0xfcc9, 0x0f3c, 0x48ac, 0x2b83, 0x31bf, 0x3769, ]); -let I = fe25519([ - 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, - 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83, +let INVSQRTAMD = fe25519([ + 0x40ea, 0x805d, 0xfdaa, 0x99c8, 0x72be, 0x5a41, 0x1617, 0x9d2f, + 0xd840, 0xfe01, 0x7b91, 0x16c2, 0xfca2, 0xcfaf, 0x8905, 0x786c, ]); -@inline function fe25519Copy(r: Int64Array, a: Int64Array): void { +let ONEMSQD = fe25519([ + 0xc176, 0x945f, 0x09c1, 0xe27c, 0x350f, 0xcd5e, 0xa138, 0x2c81, + 0xdfe4, 0xbe70, 0xabdd, 0x9994, 0xe0d7, 0xb2b3, 0x72a8, 0x0290, +]); + +let SQDMONE = fe25519([ + 0x4d20, 0x44ed, 0x5aaa, 0x31ad, 0x1999, 0xb01e, 0x4a2c, 0xd29e, + 0x4eeb, 0x529b, 0xd32f, 0x4cdc, 0x2241, 0xf66c, 0xb37a, 0x5968, +]); + +@inline function fe25519Copy(r: Fe25519, a: Fe25519): void { r[0] = unchecked(a[0]); r[1] = unchecked(a[1]); r[2] = unchecked(a[2]); @@ -480,7 +527,7 @@ let I = fe25519([ r[15] = unchecked(a[15]); } -@inline function fe25519Cmov(p: Int64Array, q: Int64Array, b: i64): void { +@inline function fe25519Cmov(p: Fe25519, q: Fe25519, b: i64): void { let mask = ~(b - 1); p[0] ^= (unchecked(p[0]) ^ unchecked(q[0])) & mask; p[1] ^= (unchecked(p[1]) ^ unchecked(q[1])) & mask; @@ -500,10 +547,10 @@ let I = fe25519([ p[15] ^= (unchecked(p[15]) ^ unchecked(q[15])) & mask; } -function fe25519Pack(o: Uint8Array, n: Int64Array): void { +function fe25519Pack(o: Fe25519Packed, n: Fe25519): void { let b: i64; - let m = fe25519n(); - let t = fe25519n(); + let m = newFe25519(); + let t = newFe25519(); fe25519Copy(t, n); fe25519Carry(t); @@ -528,9 +575,16 @@ function fe25519Pack(o: Uint8Array, n: Int64Array): void { } } -function fe25519Eq(a: Int64Array, b: Int64Array): bool { - let c = new Uint8Array(32), - d = new Uint8Array(32); +function fe25519Unpack(o: Fe25519, n: Fe25519Packed): void { + let nb = n.buffer; + for (let i = 0; i < 16; ++i) { + o[i] = LOAD(nb, i); + } + o[15] &= 0x7fff; +} + +function fe25519Eq(a: Fe25519, b: Fe25519): bool { + let c = newFe25519Packed(), d = newFe25519Packed(); fe25519Pack(c, a); fe25519Pack(d, b); @@ -538,34 +592,49 @@ function fe25519Eq(a: Int64Array, b: Int64Array): bool { return verify32(c, d); } -function fe25519Par(a: Int64Array): u8 { - let d = new Uint8Array(32); +function fe25519IsNegative(a: Fe25519): bool { + let d = newFe25519Packed(); + fe25519Pack(d, a); - return d[0] & 1; + return (d[0] & 1) as bool; } -function fe25519Unpack(o: Int64Array, n: Uint8Array): void { - let nb = n.buffer; - for (let i = 0; i < 16; ++i) { - o[i] = LOAD(nb, i); +function fe25519Cneg(h: Fe25519, f: Fe25519, b: bool): void { + let negf = newFe25519(); + fe25519Sub(negf, fe25519_0, f); + fe25519Copy(h, f); + fe25519Cmov(h, negf, b as i64); +} + +function fe25519Abs(h: Fe25519, f: Fe25519): void { + fe25519Cneg(h, f, fe25519IsNegative(f)); +} + +function fe25519IsZero(a: Fe25519): bool { + let b = newFe25519Packed(); + + fe25519Pack(b, a); + let c: i64 = 0; + for (let i = 0; i < 16; i++) { + c |= b[i]; } - o[15] &= 0x7fff; + return c === 0; } -@inline function fe25519Add(o: Int64Array, a: Int64Array, b: Int64Array): void { +@inline function fe25519Add(o: Fe25519, a: Fe25519, b: Fe25519): void { for (let i = 0; i < 16; ++i) { o[i] = a[i] + b[i]; } } -@inline function fe25519Sub(o: Int64Array, a: Int64Array, b: Int64Array): void { +@inline function fe25519Sub(o: Fe25519, a: Fe25519, b: Fe25519): void { for (let i = 0; i < 16; ++i) { o[i] = a[i] - b[i]; } } -function fe25519Carry(o: Int64Array): void { +function fe25519Carry(o: Fe25519): void { let c: i64; for (let i = 0; i < 15; ++i) { @@ -580,7 +649,7 @@ function fe25519Carry(o: Int64Array): void { o[15] -= c << 16; } -@inline function fe25519Reduce(o: Int64Array, a: Int64Array): void { +@inline function fe25519Reduce(o: Fe25519, a: Fe25519): void { for (let i = 0; i < 15; ++i) { a[i] += 38 as i64 * a[i + 16]; } @@ -589,121 +658,149 @@ function fe25519Carry(o: Int64Array): void { fe25519Carry(o); } -function fe25519Mult(o: Int64Array, a: Int64Array, b: Int64Array): void { - let t = new Int64Array(31); +function fe25519Mult(o: Fe25519, a: Fe25519, b: Fe25519): void { + let t = new Int64Array(31 + 1); for (let i = 0; i < 16; ++i) { let ai = a[i]; for (let j = 0; j < 16; ++j) { - t[i + j] += ai * b[j]; + t[i + j] += ai * unchecked(b[j]); } } fe25519Reduce(o, t); } -@inline function fe25519Sq(o: Int64Array, a: Int64Array): void { +@inline function fe25519Sq(o: Fe25519, a: Fe25519): void { fe25519Mult(o, a, a); } -function fe25519Inverse(o: Int64Array, i: Int64Array): void { - let c = fe25519n(); +function fe25519Inverse(o: Fe25519, i: Fe25519): void { + let c = newFe25519(); fe25519Copy(c, i); - for (let a = 253; a >= 0; --a) { + for (let a = 253; a >= 5; --a) { fe25519Sq(c, c); - if (a !== 2 && a !== 4) { - fe25519Mult(c, c, i); - } - } + fe25519Mult(c, c, i); + } + fe25519Sq(c, c); + fe25519Sq(c, c); + fe25519Mult(c, c, i); + fe25519Sq(c, c); + fe25519Sq(c, c); + fe25519Mult(c, c, i); + fe25519Sq(c, c); + fe25519Mult(c, c, i); fe25519Copy(o, c); } -function fe25519Pow2523(o: Int64Array, i: Int64Array): void { - let c = fe25519n(); +function fe25519Pow2523(o: Fe25519, i: Fe25519): void { + let c = newFe25519(); fe25519Copy(c, i); - for (let a = 250; a >= 0; --a) { + for (let a = 250; a >= 2; --a) { fe25519Sq(c, c); - if (a !== 1) { - fe25519Mult(c, c, i); - } + fe25519Mult(c, c, i); } + fe25519Sq(c, c); + fe25519Sq(c, c); + fe25519Mult(c, c, i); fe25519Copy(o, c); } // Ed25519 group arithmetic -@inline function ge25519n(): Int64Array[] { - return [fe25519n(), fe25519n(), fe25519n(), fe25519n()]; +@sealed @unmanaged +class Ge { + x: Fe25519; + y: Fe25519; + z: Fe25519; + t: Fe25519; + + @inline constructor() { + this.x = newFe25519(); + this.y = newFe25519(); + this.z = newFe25519(); + this.t = newFe25519(); + } +} + +type GePacked = Uint8Array(32); + +@inline function newGe(): Ge { + return new Ge(); +} + +@inline function newGePacked(): GePacked { + return new Uint8Array(32); } -@inline function geCopy(r: Int64Array[], a: Int64Array[]): void { - fe25519Copy(r[0], a[0]); - fe25519Copy(r[1], a[1]); - fe25519Copy(r[2], a[2]); - fe25519Copy(r[3], a[3]); +@inline function geCopy(r: Ge, a: Ge): void { + fe25519Copy(r.x, a.x); + fe25519Copy(r.y, a.y); + fe25519Copy(r.z, a.z); + fe25519Copy(r.t, a.t); } -function add(p: Int64Array[], q: Int64Array[]): void { - let a = fe25519n(), - b = fe25519n(), - c = fe25519n(), - d = fe25519n(), - e = fe25519n(), - f = fe25519n(), - g = fe25519n(), - h = fe25519n(), - t = fe25519n(); +function add(p: Ge, q: Ge): void { + let a = newFe25519(), + b = newFe25519(), + c = newFe25519(), + d = newFe25519(), + e = newFe25519(), + f = newFe25519(), + g = newFe25519(), + h = newFe25519(), + t = newFe25519(); - fe25519Sub(a, p[1], p[0]); - fe25519Sub(t, q[1], q[0]); + fe25519Sub(a, p.y, p.x); + fe25519Sub(t, q.y, q.x); fe25519Mult(a, a, t); - fe25519Add(b, p[0], p[1]); - fe25519Add(t, q[0], q[1]); + fe25519Add(b, p.x, p.y); + fe25519Add(t, q.x, q.y); fe25519Mult(b, b, t); - fe25519Mult(c, p[3], q[3]); + fe25519Mult(c, p.t, q.t); fe25519Mult(c, c, D2); - fe25519Mult(d, p[2], q[2]); + fe25519Mult(d, p.z, q.z); fe25519Add(d, d, d); fe25519Sub(e, b, a); fe25519Sub(f, d, c); fe25519Add(g, d, c); fe25519Add(h, b, a); - fe25519Mult(p[0], e, f); - fe25519Mult(p[1], h, g); - fe25519Mult(p[2], g, f); - fe25519Mult(p[3], e, h); + fe25519Mult(p.x, e, f); + fe25519Mult(p.y, h, g); + fe25519Mult(p.z, g, f); + fe25519Mult(p.t, e, h); } -@inline function cmov(p: Int64Array[], q: Int64Array[], b: u8): void { - fe25519Cmov(p[0], q[0], b); - fe25519Cmov(p[1], q[1], b); - fe25519Cmov(p[2], q[2], b); - fe25519Cmov(p[3], q[3], b); +@inline function cmov(p: Ge, q: Ge, b: i64): void { + fe25519Cmov(p.x, q.x, b); + fe25519Cmov(p.y, q.y, b); + fe25519Cmov(p.z, q.z, b); + fe25519Cmov(p.t, q.t, b); } -function pack(r: Uint8Array, p: Int64Array[]): void { - let tx = fe25519n(), - ty = fe25519n(), - zi = fe25519n(); - fe25519Inverse(zi, p[2]); - fe25519Mult(tx, p[0], zi); - fe25519Mult(ty, p[1], zi); +function pack(r: GePacked, p: Ge): void { + let tx = newFe25519(), + ty = newFe25519(), + zi = newFe25519(); + fe25519Inverse(zi, p.z); + fe25519Mult(tx, p.x, zi); + fe25519Mult(ty, p.y, zi); fe25519Pack(r, ty); - r[31] ^= fe25519Par(tx) << 7; + r[31] ^= (fe25519IsNegative(tx) as u8) << 7; } -function scalarmult(p: Int64Array[], s: Uint8Array, q: Int64Array[]): void { - let pc: Array = [ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), - ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n(), ge25519n()]; - let t = ge25519n(), +function scalarmult(p: Ge, s: ScalarPacked, q: Ge): void { + let pc: Array = [newGe(), newGe(), newGe(), newGe(), newGe(), newGe(), newGe(), newGe(), + newGe(), newGe(), newGe(), newGe(), newGe(), newGe(), newGe(), newGe()]; + let t = newGe(), b: u32; - fe25519Copy(pc[0][0], fe25519_0); - fe25519Copy(pc[0][1], fe25519_1); - fe25519Copy(pc[0][2], fe25519_1); - fe25519Copy(pc[0][3], fe25519_0); + fe25519Copy(pc[0].x, fe25519_0); + fe25519Copy(pc[0].y, fe25519_1); + fe25519Copy(pc[0].z, fe25519_1); + fe25519Copy(pc[0].t, fe25519_0); geCopy(pc[1], q); for (let i = 2; i < 16; ++i) { geCopy(pc[i], pc[i - 1]); @@ -737,62 +834,48 @@ function scalarmult(p: Int64Array[], s: Uint8Array, q: Int64Array[]): void { } } -function scalarmultBase(s: Uint8Array, p: Int64Array[]): void { - let q = ge25519n(), - t = ge25519n(), +function scalarmultBase(p: Ge, s: ScalarPacked): void { + let q = newGe(), + t = newGe(), b: u8; - fe25519Copy(p[0], fe25519_0); - fe25519Copy(p[1], fe25519_1); - fe25519Copy(p[2], fe25519_1); - fe25519Copy(p[3], fe25519_0); + fe25519Copy(p.x, fe25519_0); + fe25519Copy(p.y, fe25519_1); + fe25519Copy(p.z, fe25519_1); + fe25519Copy(p.t, fe25519_0); - fe25519Copy(q[2], fe25519_1); + fe25519Copy(q.z, fe25519_1); let precomp_base = precompBase(); for (let i = 0; i <= 255; ++i) { b = (s[(i >>> 3)] >>> (i as u8 & 7)) & 1; let precomp = precomp_base[i]; - q[0] = fe25519(precomp[0]); - q[1] = fe25519(precomp[1]); - q[3] = fe25519(precomp[3]); + q.x = fe25519(precomp[0]); + q.y = fe25519(precomp[1]); + q.t = fe25519(precomp[2]); geCopy(t, p); add(t, q); cmov(p, t, b); } } -// EdDSA +// Ed25519 encoding -function _signKeypairFromSeed(kp: Uint8Array): void { - let pk = new Uint8Array(32); - let d = new Uint8Array(64); - let p = ge25519n(); +function unpack(r: Ge, p: GePacked, neg: bool = false): bool { + let t = newFe25519(), + chk = newFe25519(), + num = newFe25519(), + den = newFe25519(), + den2 = newFe25519(), + den4 = newFe25519(), + den6 = newFe25519(); - _hash(d, kp, 32); - scClamp(d); - scalarmultBase(d, p); - pack(pk, p); - for (let i = 0; i < 32; ++i) { - kp[i + 32] = pk[i]; - } -} - -function unpack(r: Int64Array[], p: Uint8Array, neg: bool): bool { - let t = fe25519n(), - chk = fe25519n(), - num = fe25519n(), - den = fe25519n(), - den2 = fe25519n(), - den4 = fe25519n(), - den6 = fe25519n(); - - fe25519Copy(r[2], fe25519_1); - fe25519Unpack(r[1], p); - fe25519Sq(num, r[1]); + fe25519Copy(r.z, fe25519_1); + fe25519Unpack(r.y, p); + fe25519Sq(num, r.y); fe25519Mult(den, num, D); - fe25519Sub(num, num, r[2]); - fe25519Add(den, r[2], den); + fe25519Sub(num, num, r.z); + fe25519Add(den, r.z, den); fe25519Sq(den2, den); fe25519Sq(den4, den2); fe25519Mult(den6, den4, den2); @@ -802,40 +885,36 @@ function unpack(r: Int64Array[], p: Uint8Array, neg: bool): bool { fe25519Mult(t, t, num); fe25519Mult(t, t, den); fe25519Mult(t, t, den); - fe25519Mult(r[0], t, den); - fe25519Sq(chk, r[0]); + fe25519Mult(r.x, t, den); + fe25519Sq(chk, r.x); fe25519Mult(chk, chk, den); if (!fe25519Eq(chk, num)) { - fe25519Mult(r[0], r[0], I); + fe25519Mult(r.x, r.x, SQRTM1); } - fe25519Sq(chk, r[0]); + fe25519Sq(chk, r.x); fe25519Mult(chk, chk, den); if (!fe25519Eq(chk, num)) { return false; } - if (fe25519Par(r[0]) === (p[31] >> 7) === neg) { - fe25519Sub(r[0], fe25519_0, r[0]); + if ((fe25519IsNegative(r.x) as u8 === (p[31] >> 7)) === neg) { + fe25519Sub(r.x, fe25519_0, r.x); } - fe25519Mult(r[3], r[0], r[1]); + fe25519Mult(r.t, r.x, r.y); return true; } -function isIdentity(s: Uint8Array): bool { - let c = s[0] ^ 0x01; - - for (let i = 1; i < 31; ++i) { - c |= s[i]; +@inline function isIdentity(s: GePacked): bool { + let c: u8 = unchecked(s[0]) ^ 0x01; + for (let i = 1; i < 31; i++) { + c |= unchecked(s[i]); } - c |= s[31] & 0x7f; + c |= unchecked(s[31]) & 0x7f; return c === 0; } -function isCanonical(s: Uint8Array): bool { - if (allZeros(s)) { - return false; - } +function isCanonical(s: GePacked): bool { let c: u32 = (s[31] & 0x7f) ^ 0x7f; for (let i = 30; i > 0; --i) { c |= s[i] ^ 0xff; @@ -846,13 +925,203 @@ function isCanonical(s: Uint8Array): bool { return !(c & d & 1); } -// Ed25519 +// Ristretto encoding -let B = new Uint8Array(32); -for (let i = 0; i < 32; ++i) { - B[i] = 0x66; +function ristrettoSqrtRatioM1(x: Fe25519, u: Fe25519, v: Fe25519): bool { + let v3 = newFe25519(), vxx = newFe25519(), + m_root_check = newFe25519(), p_root_check = newFe25519(), f_root_check = newFe25519(), + x_sqrtm1 = newFe25519(); + fe25519Sq(v3, v); + fe25519Mult(v3, v3, v); + fe25519Sq(x, v3); + fe25519Mult(x, x, v); + fe25519Mult(x, x, u); + + fe25519Pow2523(x, x); + fe25519Mult(x, x, v3); + fe25519Mult(x, x, u); + + fe25519Sq(vxx, x); + fe25519Mult(vxx, vxx, v); + fe25519Sub(m_root_check, vxx, u); + fe25519Add(p_root_check, vxx, u); + fe25519Mult(f_root_check, u, SQRTM1); + fe25519Add(f_root_check, vxx, f_root_check); + let has_m_root = fe25519IsZero(m_root_check); + let has_p_root = fe25519IsZero(p_root_check); + let has_f_root = fe25519IsZero(f_root_check); + fe25519Mult(x_sqrtm1, x, SQRTM1); + + fe25519Cmov(x, x_sqrtm1, (has_p_root | has_f_root) as i64); + fe25519Abs(x, x); + + return has_m_root | has_p_root; +} + +function ristrettoIsCanonical(s: GePacked): bool { + let c = ((s[31] & 0x7f) ^ 0x7f) as u64; + for (let i = 30; i > 0; i--) { + c |= s[i] ^ 0xff; + } + c = (c - 1) >> 8; + let d = (0xed as u64 - 1 as u64 - (s[0] as u64)) >> 8; + + return (1 - (((c & d) | s[0]) & 1)) as bool; +} + +function ristrettoUnpack(h: Ge, s: GePacked, neg: bool = false): bool { + let inv_sqrt = newFe25519(), s_ = newFe25519(), ss = newFe25519(), + u1 = newFe25519(), u2 = newFe25519(), u1u1 = newFe25519(), u2u2 = newFe25519(), + v = newFe25519(), v_u2u2 = newFe25519(); + + if (!ristrettoIsCanonical(s)) { + return false; + } + fe25519Unpack(s_, s); + fe25519Sq(ss, s_); + + fe25519Copy(u1, fe25519_1); + fe25519Sub(u1, u1, ss); + fe25519Sq(u1u1, u1); + + fe25519Copy(u2, fe25519_1); + fe25519Add(u2, u2, ss); + fe25519Sq(u2u2, u2); + + fe25519Mult(v, D, u1u1); + fe25519Sub(v, fe25519_0, v); + fe25519Sub(v, v, u2u2); + + fe25519Mult(v_u2u2, v, u2u2); + + let was_square = ristrettoSqrtRatioM1(inv_sqrt, fe25519_1, v_u2u2); + let x = h.x, y = h.y, z = h.z, t = h.t; + + fe25519Mult(x, inv_sqrt, u2); + fe25519Mult(y, inv_sqrt, x); + fe25519Mult(y, y, v); + + fe25519Mult(x, x, s_); + fe25519Add(x, x, x); + fe25519Abs(x, x); + fe25519Mult(y, u1, y); + + fe25519Copy(z, fe25519_1); + if (neg) { + fe25519Sub(y, fe25519_0, y); + } + fe25519Mult(t, x, y); + + return !((!was_square) | (fe25519IsNegative(t) ^ neg) | fe25519IsZero(y)); +} + +function ristrettoPack(s: GePacked, h: Ge): void { + let den1 = newFe25519(), den2 = newFe25519(), den_inv = newFe25519(), eden = newFe25519(), + inv_sqrt = newFe25519(), ix = newFe25519(), iy = newFe25519(), s_ = newFe25519(), + t_z_inv = newFe25519(), u1 = newFe25519(), u2 = newFe25519(), u1_u2u2 = newFe25519(), + x_ = newFe25519(), y_ = newFe25519(), x_z_inv = newFe25519(), z_inv = newFe25519(), + zmy = newFe25519(); + let x = h.x, y = h.y, z = h.z, t = h.t; + + fe25519Add(u1, z, y); + fe25519Sub(zmy, z, y); + fe25519Mult(u1, u1, zmy); + fe25519Mult(u2, x, y); + + fe25519Sq(u1_u2u2, u2); + fe25519Mult(u1_u2u2, u1, u1_u2u2); + + ristrettoSqrtRatioM1(inv_sqrt, fe25519_1, u1_u2u2); + fe25519Mult(den1, inv_sqrt, u1); + fe25519Mult(den2, inv_sqrt, u2); + fe25519Mult(z_inv, den1, den2); + fe25519Mult(z_inv, z_inv, t); + + fe25519Mult(ix, x, SQRTM1); + fe25519Mult(iy, y, SQRTM1); + fe25519Mult(eden, den1, INVSQRTAMD); + + fe25519Mult(t_z_inv, t, z_inv); + let rotate = fe25519IsNegative(t_z_inv) as i64; + + fe25519Copy(x_, x); + fe25519Copy(y_, y); + fe25519Copy(den_inv, den2); + + fe25519Cmov(x_, iy, rotate); + fe25519Cmov(y_, ix, rotate); + fe25519Cmov(den_inv, eden, rotate); + + fe25519Mult(x_z_inv, x_, z_inv); + fe25519Cneg(y_, y_, fe25519IsNegative(x_z_inv)); + + fe25519Sub(s_, z, y_); + fe25519Mult(s_, den_inv, s_); + fe25519Abs(s_, s_); + fe25519Pack(s, s_); +} + +@inline function ristrettoIsIdentity(s: GePacked): bool { + return allZeros(s); +} + +function ristrettoElligator(p: Ge, t: Fe25519): void { + let c = newFe25519(), n = newFe25519(), r = newFe25519(), rpd = newFe25519(), + s = newFe25519(), s_prime = newFe25519(), ss = newFe25519(), + u = newFe25519(), v = newFe25519(), + w0 = newFe25519(), w1 = newFe25519(), w2 = newFe25519(), w3 = newFe25519(); + + fe25519Sq(r, t); + fe25519Mult(r, SQRTM1, r); + fe25519Add(u, r, fe25519_1); + fe25519Mult(u, u, ONEMSQD); + fe25519Sub(c, fe25519_0, fe25519_1); + fe25519Add(rpd, r, D); + fe25519Mult(v, r, D); + fe25519Sub(v, c, v); + fe25519Mult(v, v, rpd); + + let wasnt_square = 1 - (ristrettoSqrtRatioM1(s, u, v) as i64); + fe25519Mult(s_prime, s, t); + fe25519Abs(s_prime, s_prime); + fe25519Sub(s_prime, fe25519_0, s_prime); + fe25519Cmov(s, s_prime, wasnt_square); + fe25519Cmov(c, r, wasnt_square); + + fe25519Sub(n, r, fe25519_1); + fe25519Mult(n, n, c); + fe25519Mult(n, n, SQDMONE); + fe25519Sub(n, n, v); + + fe25519Add(w0, s, s); + fe25519Mult(w0, w0, v); + fe25519Mult(w1, n, SQRTADM1); + fe25519Sq(ss, s); + fe25519Sub(w2, fe25519_1, ss); + fe25519Add(w3, fe25519_1, ss); + + fe25519Mult(p.x, w0, w3); + fe25519Mult(p.y, w2, w1); + fe25519Mult(p.z, w1, w3); + fe25519Mult(p.t, w0, w2); } +type Uniform = Uint8Array(64); + +function ristrettoFromUniform(s: GePacked, r: Uniform): void { + let r0 = newFe25519(), r1 = newFe25519(); + let p0 = newGe(), p1 = newGe(); + + fe25519Unpack(r0, r.subarray(0, 32)); + fe25519Unpack(r1, r.subarray(32, 64)); + ristrettoElligator(p0, r0); + ristrettoElligator(p1, r1); + add(p0, p1); + ristrettoPack(s, p0); +} + +// Common functions used for signatures + function _signSyntheticRHv(hs: Uint8Array, r: isize, Z: Uint8Array, sk: Uint8Array): isize { let zeros = new Uint8Array(128); let empty_labelset = new Uint8Array(3); @@ -876,18 +1145,38 @@ function _signSyntheticRHv(hs: Uint8Array, r: isize, Z: Uint8Array, sk: Uint8Arr return r; } -function _signDetached(sig: Uint8Array, m: Uint8Array, kp: Uint8Array, Z: Uint8Array): void { - let R = ge25519n(); +let B = newFe25519Packed(); +for (let i = 0; i < 32; ++i) { + B[i] = 0x66; +} + +// Ed25519 + +type KeyPair = Uint8Array(64); +type Signature = Uint8Array(64); + +function _signEdKeypairFromSeed(kp: KeyPair): void { + let d = new Uint8Array(64); + let p = newGe(); + + _hash(d, kp, 32); + scClamp(d); + scalarmultBase(p, d); + pack(kp.subarray(32), p); +} + +function _signEdDetached(sig: Signature, m: Uint8Array, kp: KeyPair, Z: Uint8Array): void { + let R = newGe(); let az = new Uint8Array(64); - let nonce = new Uint8Array(64); - let hram = new Uint8Array(64); + let nonce = newScalarDouble(); + let hram = newScalarDouble(); let x = new Int64Array(64); let mlen = m.length; let hs = _hashInit(); let r: isize = 0; _hash(az, kp, 32); - if (Z.length > 0) { + if (Z !== null && Z.length > 0) { r = _signSyntheticRHv(hs, r, Z, az); } else { r = _hashUpdate(hs, az.subarray(32), 32, r); @@ -897,7 +1186,7 @@ function _signDetached(sig: Uint8Array, m: Uint8Array, kp: Uint8Array, Z: Uint8A setU8(sig, kp.subarray(32), 32); scReduce(nonce); - scalarmultBase(nonce, R); + scalarmultBase(R, nonce); pack(sig, R); hs = _hashInit(); @@ -911,21 +1200,21 @@ function _signDetached(sig: Uint8Array, m: Uint8Array, kp: Uint8Array, Z: Uint8A } for (let i = 0; i < 32; ++i) { for (let j = 0; j < 32; ++j) { - x[i + j] += (hram[i] as i64) * (az[j] as i64); + x[i + j] += unchecked((hram[i] as i64) * (az[j] as i64)); } } scModL(sig.subarray(32), x); } -function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bool { - if (!isCanonical(pk) || isIdentity(pk) || !isCanonical(sig.subarray(32))) { +function _signEdVerifyDetached(sig: Signature, m: Uint8Array, pk: GePacked): bool { + if (isIdentity(pk) || !isCanonical(pk) || !scIsLtL(sig.subarray(32))) { return false; } - let A = ge25519n(); + let A = newGe(); if (!unpack(A, pk, true)) { return false; } - let h = new Uint8Array(64); + let h = newScalarDouble(); let hs = _hashInit(); let r = _hashUpdate(hs, sig, 32, 0); r = _hashUpdate(hs, pk, 32, r); @@ -933,16 +1222,94 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo _hashFinal(hs, h, 32 + 32 + m.length, r); scReduce(h); - let R = ge25519n(); - let rcheck = new Uint8Array(32); + let R = newGe(); + let rcheck = newFe25519Packed(); scalarmult(R, h, A); - scalarmultBase(sig.subarray(32), A); + scalarmultBase(A, sig.subarray(32)); add(R, A); pack(rcheck, R); return verify32(rcheck, sig.subarray(0, 32)); } +// Signatures over Ristretto + +function _signKeypairFromSeed(kp: KeyPair): void { + let d = newScalarDouble(); + let p = newGe(); + + _hash(d, kp, 32); + scalarmultBase(p, d); + ristrettoPack(kp.subarray(32), p); +} + +function _signDetached(sig: Signature, m: Uint8Array, kp: KeyPair, Z: Uint8Array): void { + let R = newGe(); + let az = new Uint8Array(64); + let nonce = newScalarDouble(); + let hram = newScalarDouble(); + let x = new Int64Array(64); + let mlen = m.length; + let hs = _hashInit(); + let r: isize = 0; + + _hash(az, kp, 32); + if (Z !== null && Z.length > 0) { + r = _signSyntheticRHv(hs, r, Z, az); + } else { + r = _hashUpdate(hs, az.subarray(32), 32, r); + } + r = _hashUpdate(hs, m, mlen, r); + _hashFinal(hs, nonce, 32 + mlen, r); + setU8(sig, kp.subarray(32), 32); + + scReduce(nonce); + scalarmultBase(R, nonce); + ristrettoPack(sig, R); + + hs = _hashInit(); + r = _hashUpdate(hs, sig, 64, 0); + r = _hashUpdate(hs, m, mlen, r); + _hashFinal(hs, hram, 64 + mlen, r); + scReduce(hram); + for (let i = 0; i < 32; ++i) { + x[i] = nonce[i]; + } + for (let i = 0; i < 32; ++i) { + for (let j = 0; j < 32; ++j) { + x[i + j] += unchecked((hram[i] as i64) * (az[j] as i64)); + } + } + scModL(sig.subarray(32), x); +} + +function _signVerifyDetached(sig: Signature, m: Uint8Array, pk: GePacked): bool { + if (ristrettoIsIdentity(pk) || !scIsLtL(sig.subarray(32))) { + return false; + } + let A = newGe(); + if (!ristrettoUnpack(A, pk, true)) { + return false; + } + let h = newScalarDouble(); + let hs = _hashInit(); + let r = _hashUpdate(hs, sig, 32, 0); + r = _hashUpdate(hs, pk, 32, r); + r = _hashUpdate(hs, m, m.length, r); + _hashFinal(hs, h, 32 + 32 + m.length, r); + scReduce(h); + + let R = newGe(); + let rcheck = newFe25519Packed(); + scalarmult(R, h, A); + scalarmultBase(A, sig.subarray(32)); + add(R, A); + + ristrettoPack(rcheck, R); + + return verify32(rcheck, sig.subarray(0, 32)); +} + // Exported API /** @@ -975,6 +1342,36 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo */ @global export const SIGN_RANDBYTES: isize = 32; +/** + * Ed25519 signature size, in bytes + */ +@global export const SIGN_ED_BYTES: isize = 64; + +/** + * Ed25519 public key size, in bytes + */ +@global export const SIGN_ED_PUBLICKEYBYTES: isize = 32; + +/** + * Ed25519 secret key size, in bytes + */ +@global export const SIGN_ED_SECRETKEYBYTES: isize = 32; + +/** + * Ed25519 key pair size, in bytes + */ +@global export const SIGN_ED_KEYPAIRBYTES: isize = 64; + +/** + * Ed25519 seed size, in bytes + */ +@global export const SIGN_ED_SEEDBYTES: isize = 32; + +/** + * Non-deterministic Ed25519 recommended random bytes size, in bytes + */ +@global export const SIGN_ED_RANDBYTES: isize = 32; + /** * Hash function output size, in bytes */ @@ -1032,7 +1429,7 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * signatures * @returns Signature */ -@global export function sign(m: Uint8Array, kp: Uint8Array, Z: Uint8Array): Uint8Array { +@global export function sign(m: Uint8Array, kp: Uint8Array, Z: Uint8Array = null): Uint8Array { let sig = new Uint8Array(SIGN_BYTES); _signDetached(sig, m, kp, Z); @@ -1104,6 +1501,86 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo return sk; } +/** + * Sign a message using Ed25519 and returns its signature. + * @param m Message to sign + * @param kp Key pair (`SIGN_ED_KEYPAIRBYTES` long) + * @param Z Random bytes. This can be an empty array to produce deterministic + * signatures + * @returns Signature + */ +@global export function signEd(m: Uint8Array, kp: Uint8Array, Z: Uint8Array = null): Uint8Array { + let sig = new Uint8Array(SIGN_ED_BYTES); + _signEdDetached(sig, m, kp, Z); + + return sig; +} + +/** + * Verify a signature using Ed25519 + * @param m Message + * @param sig Signature + * @param pk Public key + * @returns `true` on success + */ +@global export function signEdVerify(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bool { + if (sig.length !== SIGN_ED_BYTES) { + throw new Error('bad signature size'); + } + if (pk.length !== SIGN_ED_PUBLICKEYBYTES) { + throw new Error('bad public key size'); + } + return _signEdVerifyDetached(sig, m, pk); +} + +/** + * Create a new Ed25519 key pair from a seed + * @param seed Seed (`SIGN_ED_SEEDBYTES` long) + * @returns Key pair + */ +@global export function signEdKeypairFromSeed(seed: Uint8Array): Uint8Array { + if (seed.length !== SIGN_ED_SEEDBYTES) { + throw new Error('bad seed size'); + } + let kp = new Uint8Array(SIGN_ED_KEYPAIRBYTES); + for (let i = 0; i < 32; ++i) { + kp[i] = seed[i]; + } + _signEdKeypairFromSeed(kp); + + return kp; +} + +/** + * Return the public key from an Ed25519 key pair + * @param kp Key pair + * @returns Public key + */ +@global export function signEdPublicKey(kp: Uint8Array): Uint8Array { + const len = SIGN_ED_PUBLICKEYBYTES; + let pk = new Uint8Array(len); + + for (let i = 0; i < len; ++i) { + pk[i] = kp[i + 32]; + } + return pk; +} + +/** + * Return the secret key from an Ed25519ED_ key pair + * @param kp Key pair + * @returns Secret key + */ +@global export function signEdSecretKey(kp: Uint8Array): Uint8Array { + const len = SIGN_ED_SECRETKEYBYTES; + let sk = new Uint8Array(len); + + for (let i = 0; i < len; ++i) { + sk[i] = kp[i]; + } + return sk; +} + /** * Initialize a multipart hash computation * @returns A hash function state @@ -1182,13 +1659,13 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @returns `s` reduced mod `L` */ @global export function faScalarReduce(s: Uint8Array): Uint8Array { - let s_ = new Uint8Array(64); - if (s_.length < 32 || s_.length > 64) { + let s_ = newScalarDouble(); + if (s.length < 32 || s.length > 64) { throw new Error('faScalarReduce() argument should be between 32 and 64 bytes long'); } setU8(s_, s); scReduce(s_); - let r = new Uint8Array(32); + let r = newScalarPacked(); for (let i = 0; i < 32; ++i) { r[i] = s_[i]; } @@ -1196,7 +1673,7 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo } /** - * Multiply `s` by the group cofactor + * Multiply `s` by the Ed25519 group cofactor * * @param s Scalar (32 bytes) * @returns `s * 8` @@ -1208,7 +1685,7 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo if ((s[31] & 224) !== 0) { throw new Error("faScalarCofactorMult() would overflow"); } - let r = new Uint8Array(32), t: u8 = 0; + let r = newScalarPacked(), t: u8 = 0; for (let i = 0; i < 32; i++) { let si = s[i]; r[i] = (si << 3) | t; @@ -1223,7 +1700,8 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @returns `-s` */ @global export function faScalarNegate(s: Uint8Array): Uint8Array { - let t = new Uint8Array(32), t_ = new Uint8Array(64), s_ = new Uint8Array(64); + let t = newScalarPacked(), t_ = newScalarDouble(), s_ = newScalarDouble(); + for (let i = 0; i < 32; i++) { t_[32 + i] = _L[i] as u8; } @@ -1241,7 +1719,7 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @returns `1-s` */ @global export function faScalarComplement(s: Uint8Array): Uint8Array { - let t = new Uint8Array(32), t_ = new Uint8Array(64), s_ = new Uint8Array(64); + let t = newScalarPacked(), t_ = newScalarDouble(), s_ = newScalarDouble(); t_[0] = 1; for (let i = 0; i < 32; i++) { t_[32 + i] = _L[i] as u8; @@ -1261,7 +1739,7 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @returns `x + y (mod L)` */ @global export function faScalarAdd(x: Uint8Array, y: Uint8Array): Uint8Array { - let x_ = new Uint8Array(64), y_ = new Uint8Array(64); + let x_ = newScalarDouble(), y_ = newScalarDouble(); setU8(x_, x); setU8(y_, y); scAdd(x_, y_); @@ -1281,20 +1759,43 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo return faScalarAdd(x, yn); } +/** + * Compute `x * y (mod L)` + * @param x Scalar + * @param y Scalar + * @returns `x * y (mod L)` + */ +@global export function faScalarMult(x: Uint8Array, y: Uint8Array): Uint8Array { + let x_ = newScalar(), y_ = newScalar(); + let o = newScalar(), o_ = newScalarPacked(); + + for (let i = 0; i < 32; i++) { + x_[i] = x[i] as i64; + } + for (let i = 0; i < 32; i++) { + y_[i] = y[i] as i64; + } + scMult(o, x_, y_); + for (let i = 0; i < 32; i++) { + o_[i] = o[i] as u8; + } + return o_; +} + /** * Multiply a point `q` by a scalar `s` * @param q Compressed EC point * @param s Scalar * @returns Compressed EC point `q * s` */ -@global export function faScalarMult(s: Uint8Array, q: Uint8Array): Uint8Array { - let p_ = ge25519n(); - let q_ = ge25519n(); - if (!unpack(q_, q, false) || !faPointValidate(q)) { +@global export function faEdPointMult(s: Uint8Array, q: Uint8Array): Uint8Array { + let p_ = newGe(); + let q_ = newGe(); + if (!unpack(q_, q, false) || !faEdPointValidate(q)) { return null; } scalarmult(p_, s, q_); - let p = new Uint8Array(32); + let p = newGePacked(); pack(p, p_); if (isIdentity(p)) { return null; @@ -1302,48 +1803,48 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo return p; } -/** - * Multiply a point `q` by a scalar `s` after clamping `s` - * @param q Compressed EC point - * @param s Scalar - * @returns Compressed EC point `q * clamp(s)` - */ -@global export function faScalarMultClamp(s: Uint8Array, q: Uint8Array): Uint8Array { - let s_ = new Uint8Array(32); - setU8(s_, s); - scClamp(s_); - - return faScalarMult(s, q); -} - /** * Multiply the base point by a scalar `s` * @param s Scalar * @returns Compressed EC point `B * s` */ -@global export function faScalarBase(s: Uint8Array): Uint8Array { +@global export function faEdBasePointMult(s: Uint8Array): Uint8Array { if (allZeros(s)) { return null; } - let p = new Uint8Array(32); - let p_ = ge25519n(); - scalarmultBase(s, p_); + let p = newGePacked(); + let p_ = newGe(); + scalarmultBase(p_, s); pack(p, p_); return p; } +/** + * Multiply a point `q` by a scalar `s` after clamping `s` + * @param q Compressed EC point + * @param s Scalar + * @returns Compressed EC point `q * clamp(s)` + */ +@global export function faEdPointMultClamp(s: Uint8Array, q: Uint8Array): Uint8Array { + let s_ = newScalarPacked(); + setU8(s_, s); + scClamp(s_); + + return faEdPointMult(s_, q); +} + /** * Multiply the base point by a clamped scalar `s` * @param s Scalar * @returns Compressed EC point `B * clamp(s)` */ -@global export function faScalarBaseClamp(s: Uint8Array): Uint8Array { - let s_ = new Uint8Array(32); +@global export function faEdBasePointMultClamp(s: Uint8Array): Uint8Array { + let s_ = newScalarPacked(); setU8(s_, s); scClamp(s_); - return faScalarBase(s); + return faEdBasePointMult(s_); } /** @@ -1351,10 +1852,13 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @param q Compressed EC point * @returns `true` if verification succeeds */ -@global export function faPointValidate(q: Uint8Array): bool { - let l = new Uint8Array(32); - let p_ = ge25519n(); - let q_ = ge25519n(); +@global export function faEdPointValidate(q: Uint8Array): bool { + if (isIdentity(q)) { + return false; + } + let l = newGePacked(); + let p_ = newGe(); + let q_ = newGe(); for (let i = 0; i < 32; ++i) { l[i] = _L[i] as u8; @@ -1365,7 +1869,7 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo scalarmult(p_, l, q_); let c: i64 = 0; - let x = p_[0]; + let x = p_.x; for (let i = 0; i < 16; ++i) { c |= x[i]; } @@ -1378,10 +1882,10 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @param q Compressed EC point * @returns `p` + `q` */ -@global export function faPointAdd(p: Uint8Array, q: Uint8Array): Uint8Array { - let o = new Uint8Array(32); - let p_ = ge25519n(); - let q_ = ge25519n(); +@global export function faEdPointAdd(p: Uint8Array, q: Uint8Array): Uint8Array { + let o = newGePacked(); + let p_ = newGe(); + let q_ = newGe(); if (!unpack(p_, p, false) || !unpack(q_, q, false)) { return null; } @@ -1397,10 +1901,10 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo * @param q Compressed EC point * @returns `p` - `q` */ -@global export function faPointSub(p: Uint8Array, q: Uint8Array): Uint8Array { - let o = new Uint8Array(32); - let p_ = ge25519n(); - let q_ = ge25519n(); +@global export function faEdPointSub(p: Uint8Array, q: Uint8Array): Uint8Array { + let o = newGePacked(); + let p_ = newGe(); + let q_ = newGe(); if (!unpack(p_, p, false) || !unpack(q_, q, true)) { return null; } @@ -1409,3 +1913,103 @@ function _signVerifyDetached(sig: Uint8Array, m: Uint8Array, pk: Uint8Array): bo return o; } + +/** + * Multiply a point `q` by a scalar `s` + * @param q Ristretto-compressed EC point + * @param s Scalar + * @returns Compressed EC point `q * s` + */ +@global export function faPointMult(s: Uint8Array, q: Uint8Array): Uint8Array { + let p_ = newGe(); + let q_ = newGe(); + if (!ristrettoUnpack(q_, q)) { + return null; + } + scalarmult(p_, s, q_); + let p = newGePacked(); + ristrettoPack(p, p_); + if (ristrettoIsIdentity(p)) { + return null; + } + return p; +} + +/** + * Multiply the base point by a scalar `s` + * @param s Scalar + * @returns Ristretto-compressed EC point `B * s` + */ +@global export function faBasePointMult(s: Uint8Array): Uint8Array { + if (allZeros(s)) { + return null; + } + let p = newGePacked(); + let p_ = newGe(); + scalarmultBase(p_, s); + ristrettoPack(p, p_); + + return p; +} + +/** + * Verify that the point is on the main subgroup + * @param q Ristretto-compressed EC point + * @returns `true` if verification succeeds + */ +@global export function faPointValidate(q: Uint8Array): bool { + let q_ = newGe(); + + return (!ristrettoIsIdentity(q)) & ristrettoUnpack(q_, q); +} + +/** + * Point addition + * @param p Risterto-compressed EC point + * @param q Risterto-compressed EC point + * @returns `p` + `q` + */ +@global export function faPointAdd(p: Uint8Array, q: Uint8Array): Uint8Array { + let o = newGePacked(); + let p_ = newGe(); + let q_ = newGe(); + if (!ristrettoUnpack(p_, p) || !ristrettoUnpack(q_, q, false)) { + return null; + } + add(p_, q_); + ristrettoPack(o, p_); + + return o; +} + +/** + * Point substraction + * @param p Ristretto-compressed EC point + * @param q Ristretto-compressed EC point + * @returns `p` - `q` + */ +@global export function faPointSub(p: Uint8Array, q: Uint8Array): Uint8Array { + let o = newGePacked(); + let p_ = newGe(); + let q_ = newGe(); + if (!ristrettoUnpack(p_, p) || !ristrettoUnpack(q_, q, true)) { + return null; + } + add(p_, q_); + ristrettoPack(o, p_); + + return o; +} + +/** + * Hash-to-point + * @param r 512 bit hash + * @returns Ristretto-compressed EC point + */ +@global export function faPointFromUniform(r: Uint8Array): Uint8Array { + let p = newGePacked(); + + ristrettoFromUniform(p, r); + + return p; +} diff --git a/105_access_control_example/assembly/index.ts b/105_access_control_example/assembly/index.ts index fdfac9e..a653ad9 100644 --- a/105_access_control_example/assembly/index.ts +++ b/105_access_control_example/assembly/index.ts @@ -1,6 +1,6 @@ import { run_user_kvs, Request, KVStore, Response, Time } from "./http_guest"; import { - hmac, faScalarReduce, faScalarMult, SIGN_BYTES, SIGN_PUBLICKEYBYTES, signVerify, + hmac, faScalarReduce, faPointMult, SIGN_BYTES, SIGN_PUBLICKEYBYTES, signVerify, faPointValidate, FA_SCALARBYTES, FA_POINTBYTES } from "./crypto"; import { @@ -103,7 +103,7 @@ function loginGetBlindSaltAndNonce(req: Request): Response { if (r_and_pk) { r = r_and_pk.subarray(0, FA_POINTBYTES); } - let blind_salt = faScalarMult(r, blind_auth_info); + let blind_salt = faPointMult(r, blind_auth_info); if (blind_salt === null) { response.body_string = "Invalid auth info (identity)"; return response; @@ -229,7 +229,7 @@ function signupGetBlindSalt(req: Request): Response { r = kvsGet(signup_r_key) || r; } } - let blind_salt = faScalarMult(r, blind_auth_info); + let blind_salt = faPointMult(r, blind_auth_info); if (blind_salt === null) { response.body_string = "Invalid auth info (identity)"; return response; diff --git a/105_access_control_example/assembly/precomp.ts b/105_access_control_example/assembly/precomp.ts index 360d2ee..600fcf8 100644 --- a/105_access_control_example/assembly/precomp.ts +++ b/105_access_control_example/assembly/precomp.ts @@ -4,1537 +4,1281 @@ [ [ 54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553 ], [ 26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56720, 42423, 35507, 28126, 21237, 30545, 40832, 8432, 58237, 25771, 20110, 26346, 30309, 55179, 24335, 59271 ] ], [ [ 52750, 10307, 41294, 33733, 42079, 5591, 36421, 2061, 59308, 6195, 15229, 15620, 1132, 40794, 14412, 13995 ], [ 41910, 27384, 18094, 3679, 20822, 25656, 3921, 38713, 8022, 51618, 24296, 7586, 10690, 2339, 52723, 41568 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 46062, 28009, 16213, 46874, 9218, 49655, 44233, 23929, 46099, 29443, 24328, 7653, 26844, 2863, 42885, 42136 ] ], [ [ 63600, 50377, 42583, 18746, 5447, 37838, 40641, 6771, 8441, 31285, 54456, 33573, 61766, 22223, 43227, 8253 ], [ 4380, 51762, 43873, 57144, 4080, 59951, 10290, 19698, 29036, 32981, 47237, 18190, 38369, 51989, 59431, 51152 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 4952, 29322, 8950, 24463, 1994, 46813, 58142, 29077, 10592, 50812, 47722, 29204, 9740, 55411, 15576, 8824 ] ], [ [ 33992, 2213, 64956, 15239, 35737, 32873, 50811, 60218, 53139, 63566, 11612, 17030, 29110, 38871, 57695, 26434 ], [ 47540, 64567, 23465, 7727, 58515, 25118, 15612, 33144, 62351, 26250, 28425, 28333, 29561, 51685, 1536, 8659 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 20908, 54298, 62490, 28606, 11253, 13388, 52845, 17904, 55699, 14515, 49819, 5640, 60129, 60919, 23020, 44111 ] ], [ [ 63992, 27688, 22893, 22962, 9076, 59327, 36147, 2391, 40081, 2084, 11029, 47330, 15086, 10213, 34310, 9124 ], [ 10200, 49511, 43831, 55418, 39975, 36359, 4607, 45162, 28280, 15021, 3886, 40856, 50034, 33407, 38642, 61590 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 39894, 52991, 39453, 25679, 37738, 6417, 14828, 45000, 58457, 5428, 35435, 23071, 27457, 40810, 16704, 4598 ] ], [ [ 20262, 38782, 16630, 20445, 21244, 63864, 12688, 58883, 22141, 2873, 22045, 34178, 6905, 5954, 27753, 14799 ], [ 53846, 14854, 14671, 63789, 16440, 19596, 1511, 46098, 35704, 49400, 37868, 31454, 52843, 57644, 43278, 50228 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 50828, 23010, 29823, 9153, 42677, 30392, 22209, 29006, 42389, 27975, 33876, 54179, 27757, 4724, 4473, 60920 ] ], [ [ 41976, 45116, 31247, 61777, 54904, 27353, 18173, 47336, 31144, 34589, 37113, 40178, 10515, 3064, 25632, 34298 ], [ 2342, 6106, 38319, 64470, 6506, 28173, 4702, 39409, 43596, 28584, 34425, 29428, 40, 63782, 40682, 15641 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 3944, 47739, 43476, 15935, 21186, 56698, 22506, 24090, 55604, 42349, 48578, 53726, 36065, 29700, 9907, 12817 ] ], [ [ 56692, 61647, 18779, 23970, 31296, 9763, 31396, 35459, 35767, 6866, 60095, 9218, 24328, 43387, 48817, 47005 ], [ 34556, 2123, 59374, 64928, 17697, 13321, 25025, 9010, 39932, 18517, 39251, 25591, 39376, 462, 40928, 10475 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 35526, 3568, 53256, 5218, 15536, 828, 61499, 29526, 61023, 38006, 59815, 49772, 25327, 29839, 19130, 15992 ] ], [ [ 42326, 3266, 48349, 8376, 22381, 46433, 30971, 54453, 21577, 9872, 52161, 59113, 60607, 19997, 2029, 24190 ], [ 63156, 22124, 8241, 3604, 55720, 49447, 15770, 32027, 9742, 33235, 60330, 27637, 633, 20977, 30044, 36693 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 41598, 10327, 26108, 23283, 57311, 13298, 44422, 40525, 41389, 2382, 19542, 17076, 22138, 7853, 44588, 25576 ] ], [ [ 13322, 33485, 13116, 21513, 25042, 12345, 64923, 8687, 54310, 64112, 63982, 13105, 33907, 46032, 49025, 12012 ], [ 37864, 139, 63332, 47260, 57460, 18918, 19784, 18509, 6582, 16545, 55735, 16690, 33404, 41271, 56365, 21714 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1338, 9366, 8894, 14925, 32441, 11747, 6203, 43473, 7374, 29766, 22314, 61756, 33742, 31382, 16863, 29993 ] ], [ [ 11112, 23370, 51157, 37201, 57629, 19242, 18372, 48369, 45946, 51403, 31926, 37036, 64773, 63987, 14930, 27409 ], [ 49450, 62247, 17241, 37013, 38597, 62841, 38388, 10597, 39942, 1361, 55832, 11960, 32377, 22889, 369, 39659 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 16300, 19258, 50153, 37387, 62746, 26256, 26326, 28857, 58231, 58289, 34904, 21952, 50906, 59079, 25510, 26315 ] ], [ [ 6116, 48403, 48379, 60626, 45893, 12565, 45033, 33922, 10301, 64710, 62737, 46401, 54155, 30226, 59218, 48154 ], [ 13902, 1809, 5538, 20768, 10948, 25283, 24203, 42623, 63759, 34117, 4460, 46982, 58750, 63959, 37315, 1308 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8580, 48846, 45158, 11079, 38433, 11260, 60501, 27105, 5712, 1194, 15647, 34914, 34108, 64978, 5176, 3498 ] ], [ [ 55018, 10718, 58, 697, 52057, 50214, 39354, 38833, 36399, 37376, 20262, 60242, 6983, 35721, 49188, 32019 ], [ 8386, 32859, 32934, 38176, 59843, 36511, 40583, 40478, 51066, 30156, 42348, 37361, 43034, 11265, 30379, 55721 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 36772, 27382, 56296, 39731, 14492, 6461, 5927, 56892, 444, 13947, 48468, 13731, 26038, 37755, 62787, 26993 ] ], [ [ 51678, 12721, 5648, 13738, 27156, 46548, 33332, 53873, 23882, 8090, 9811, 58684, 36238, 32563, 43519, 6101 ], [ 44918, 42230, 54628, 57360, 44317, 17647, 55997, 44163, 43130, 7408, 63751, 17347, 16236, 54199, 8839, 62210 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 7036, 46730, 65276, 64045, 47944, 50833, 52026, 26155, 21244, 44819, 47818, 34757, 27224, 63025, 3282, 12537 ] ], [ [ 19338, 14567, 55996, 45250, 57733, 65098, 17453, 52100, 27424, 48941, 39953, 48855, 16083, 48991, 48232, 1960 ], [ 35054, 8744, 30826, 10666, 51203, 38260, 15875, 48604, 4871, 41640, 11552, 6323, 17008, 31485, 55236, 62025 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23792, 37497, 2596, 49614, 48440, 45494, 51938, 11073, 51932, 18607, 55430, 39617, 29420, 5531, 11331, 39792 ] ], [ [ 65282, 11058, 37724, 12884, 22504, 6740, 13195, 25952, 26579, 49572, 50214, 13476, 39711, 43431, 55796, 23375 ], [ 36166, 13232, 9812, 26715, 48095, 60613, 63938, 23100, 49463, 10126, 43591, 23113, 64504, 1128, 53539, 16619 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 14348, 21170, 29488, 49471, 3877, 967, 61979, 17214, 45646, 3836, 26838, 44986, 30187, 12903, 6055, 48933 ] ], [ [ 42322, 33809, 26506, 40605, 17617, 31336, 57652, 41887, 52564, 51719, 8057, 12116, 28691, 61006, 64162, 56807 ], [ 60470, 63572, 58574, 57221, 28662, 36893, 48136, 49384, 11666, 27459, 43410, 43918, 11786, 7708, 9060, 11423 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 19086, 35389, 11287, 38707, 3413, 19045, 18212, 47017, 35947, 7162, 31858, 60560, 2180, 27492, 49457, 40501 ] ], [ [ 20244, 29392, 4529, 10004, 37909, 33096, 29822, 13016, 53717, 10257, 25440, 12854, 46391, 7187, 14240, 62691 ], [ 9694, 4430, 26518, 7398, 45762, 57939, 34266, 45806, 22943, 47859, 64189, 28367, 56057, 45988, 36610, 34916 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 4540, 46259, 11399, 17877, 52698, 40707, 28491, 63784, 35142, 7036, 10421, 45115, 31510, 34381, 27199, 53255 ] ], [ [ 37940, 25842, 18260, 1847, 35392, 47648, 21834, 16343, 47687, 8997, 45076, 59436, 43093, 61350, 48465, 27247 ], [ 54878, 30230, 1714, 31210, 50421, 21187, 24958, 57809, 28845, 7544, 4374, 31992, 64555, 40789, 63570, 38645 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 14786, 49352, 29224, 33626, 37739, 40310, 49011, 59304, 47468, 26283, 31186, 60773, 2882, 42697, 65070, 25918 ] ], [ [ 38452, 63130, 57541, 788, 3620, 44364, 39582, 9072, 45718, 12017, 50077, 39730, 42324, 56947, 45448, 9278 ], [ 58102, 8012, 45659, 33455, 53157, 4225, 61188, 41691, 9420, 32434, 31243, 491, 21208, 20980, 10633, 14201 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 16280, 30555, 2206, 9953, 20655, 58819, 45285, 42692, 30757, 15343, 28862, 43812, 4174, 52634, 64115, 18424 ] ], [ [ 46554, 35994, 56730, 62503, 18303, 21209, 52647, 42341, 8753, 42733, 23395, 19072, 19885, 49133, 18926, 34483 ], [ 25848, 24715, 59792, 17630, 47479, 13831, 49714, 62800, 57189, 19528, 43575, 43880, 8090, 65342, 37513, 1952 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 54982, 35440, 25892, 51635, 13371, 24036, 57195, 53756, 23671, 22909, 7812, 20524, 38678, 59173, 15865, 474 ] ], [ [ 20330, 6556, 19136, 60465, 43769, 45803, 39958, 26275, 53599, 60884, 37560, 43804, 60122, 22489, 19679, 51242 ], [ 45112, 28238, 15121, 48465, 64874, 9700, 24485, 16145, 37528, 5201, 24518, 2876, 63400, 33218, 56899, 62353 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 30088, 57684, 26038, 63893, 60294, 944, 27501, 58790, 6562, 24172, 52717, 8699, 5806, 56991, 47735, 25567 ] ], [ [ 36668, 13215, 7978, 13123, 26767, 8191, 29501, 49003, 52328, 4989, 9324, 52299, 9293, 65037, 34526, 15277 ], [ 20838, 385, 29660, 57427, 39790, 26858, 23615, 33812, 36179, 49227, 40863, 11145, 47756, 64134, 52722, 44515 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 22944, 16863, 44006, 29328, 55673, 2778, 5886, 56245, 5816, 14114, 31557, 64378, 12712, 41617, 30133, 58142 ] ], [ [ 48724, 52085, 45061, 46932, 9959, 19078, 6652, 10191, 54342, 38434, 4442, 54760, 60699, 50545, 51293, 17839 ], [ 31552, 22391, 40521, 14720, 60963, 2945, 53026, 31451, 5167, 22456, 41359, 7737, 64631, 42507, 35519, 27660 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 14974, 9004, 10480, 60856, 58736, 30600, 24702, 2720, 5285, 62485, 2926, 2184, 6, 58638, 63484, 41871 ] ], [ [ 14948, 55508, 53031, 41448, 40306, 56778, 38413, 31194, 22253, 5442, 51040, 27420, 12326, 27382, 26517, 35571 ], [ 2226, 11172, 48431, 33073, 42538, 58550, 37120, 15834, 45234, 52886, 53898, 28813, 54195, 308, 36240, 41232 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 51100, 50693, 37074, 52161, 28484, 15107, 58321, 43995, 59098, 56450, 24060, 358, 48086, 36221, 2491, 53089 ] ], [ [ 3360, 47847, 1871, 36319, 32234, 50592, 45526, 58800, 6999, 62811, 4933, 25620, 60250, 64604, 340, 43894 ], [ 3074, 44994, 13974, 19198, 21730, 27168, 45803, 25247, 52951, 16290, 4384, 14132, 17120, 28653, 6905, 32200 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8928, 62459, 3155, 8582, 53424, 9131, 51878, 41831, 44874, 35436, 62818, 57601, 2598, 35202, 10063, 2560 ] ], [ [ 56152, 40027, 37574, 9148, 50607, 30136, 17144, 55034, 33974, 25492, 37784, 30792, 52536, 6331, 49972, 59355 ], [ 62358, 2362, 45142, 31855, 7761, 14619, 59976, 3273, 41509, 51834, 37607, 23036, 41776, 34185, 28639, 14403 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 18774, 61857, 32625, 55759, 49722, 65321, 53000, 33525, 15885, 26225, 4940, 2088, 33136, 10872, 22439, 7397 ] ], [ [ 33894, 6468, 59837, 50260, 28352, 43050, 39848, 54595, 8817, 56415, 64001, 46047, 18360, 2635, 17573, 43498 ], [ 36850, 44880, 24419, 40605, 40417, 38712, 27679, 12460, 45638, 6506, 19409, 48091, 55948, 43822, 23240, 60535 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 21286, 55271, 10598, 47429, 51819, 24081, 31384, 21020, 22882, 26024, 51725, 61723, 64481, 25107, 60435, 27348 ] ], [ [ 48664, 41391, 12141, 45323, 58255, 14560, 3021, 6977, 5450, 62215, 56431, 59832, 45790, 16547, 42497, 40517 ], [ 2678, 36314, 1836, 35135, 1149, 17325, 28240, 18386, 35531, 34278, 9242, 54003, 64864, 29663, 3492, 3699 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 21608, 48801, 21799, 37295, 31049, 27595, 32709, 36791, 48525, 51854, 54427, 14375, 34701, 16139, 36699, 41451 ] ], [ [ 37706, 48841, 37034, 39885, 29691, 45182, 39012, 17495, 16706, 44977, 49642, 8899, 24831, 52038, 33121, 57712 ], [ 33274, 65209, 52513, 62916, 3224, 29262, 34798, 63561, 38305, 36831, 48429, 1569, 5500, 4840, 37741, 47318 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 27198, 57302, 64144, 21248, 39232, 38897, 61301, 14999, 20291, 16997, 29401, 16604, 51070, 45633, 14879, 31845 ] ], [ [ 63358, 55633, 32239, 322, 59667, 32696, 18854, 25623, 32801, 11395, 19555, 2400, 37209, 30610, 20793, 51444 ], [ 54624, 33570, 12040, 39423, 26942, 34925, 59354, 21083, 12582, 58666, 56969, 36968, 8886, 48474, 34259, 12627 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 50610, 23377, 46002, 45722, 61363, 54639, 49578, 38129, 43365, 2758, 46434, 51884, 63386, 16361, 45206, 36703 ] ], [ [ 52952, 63964, 19260, 7586, 12076, 48694, 64634, 48333, 63964, 48432, 1535, 58567, 6030, 63586, 41037, 31062 ], [ 59266, 47862, 33875, 41738, 65332, 41788, 41322, 59959, 46813, 45973, 6520, 7798, 12117, 11895, 49535, 24298 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 13670, 57005, 23463, 52101, 51122, 24426, 65048, 49130, 15192, 6153, 15855, 18180, 20213, 59743, 39905, 43124 ] ], [ [ 3240, 27324, 38820, 37655, 28461, 29406, 7184, 11272, 32783, 26674, 54311, 56747, 22725, 4961, 4461, 52510 ], [ 47386, 4297, 7931, 62542, 19332, 24202, 19323, 17384, 36748, 46336, 4948, 23749, 13750, 40270, 23524, 27969 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 60766, 22146, 18651, 25970, 18432, 58333, 49166, 33259, 30853, 29742, 61173, 65513, 43202, 65407, 38777, 64151 ] ], [ [ 32002, 18450, 5250, 52546, 54322, 49483, 24946, 35882, 58092, 9464, 37957, 48867, 26589, 30632, 44634, 52059 ], [ 30648, 8346, 47326, 55587, 4000, 31628, 52133, 46766, 17132, 3687, 42072, 39029, 28961, 45956, 30432, 62356 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 25592, 22764, 57418, 64115, 57372, 50231, 10660, 4345, 37165, 8649, 24416, 63357, 23437, 45998, 35162, 3648 ] ], [ [ 64716, 10345, 16163, 63579, 9275, 62263, 54557, 27426, 39120, 27816, 65487, 57606, 57107, 49593, 43276, 46015 ], [ 33222, 45786, 33359, 17309, 2433, 54001, 61185, 62636, 32045, 2305, 65521, 40869, 51941, 25383, 8411, 54193 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23704, 10713, 21952, 44689, 60872, 6883, 57605, 46522, 16908, 31639, 62094, 5522, 35452, 64966, 58979, 50906 ] ], [ [ 61382, 49337, 8747, 7688, 28785, 13747, 31388, 37377, 39492, 45302, 38232, 39873, 60674, 31789, 10548, 17481 ], [ 25138, 11805, 11007, 8476, 9636, 3451, 5516, 64569, 31887, 32165, 9502, 17827, 43990, 52157, 24261, 63352 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 59542, 33412, 26891, 22100, 57927, 41475, 54989, 55445, 2717, 11448, 60081, 26052, 32237, 44031, 25297, 63137 ] ], [ [ 54224, 60738, 29, 5436, 39980, 33143, 29650, 1745, 50389, 38015, 37563, 11309, 17739, 59723, 35114, 11115 ], [ 3282, 50568, 19784, 3562, 51530, 27218, 31073, 30441, 34291, 23634, 11291, 55009, 4036, 3608, 63054, 32540 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 65112, 5983, 53165, 64610, 8941, 5483, 29881, 58770, 60629, 61476, 13225, 47820, 57753, 6974, 2335, 1767 ] ], [ [ 1204, 16942, 8139, 4395, 31569, 44040, 16042, 21150, 46944, 25026, 35927, 54660, 42520, 64537, 30135, 7057 ], [ 26856, 17610, 14536, 52280, 2643, 13618, 21196, 3787, 50679, 60647, 34109, 22732, 6114, 65351, 42399, 5936 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 28692, 63072, 43105, 436, 63169, 31168, 60093, 26778, 24359, 28546, 44078, 53368, 65350, 60020, 10326, 51680 ] ], [ [ 61044, 22182, 49822, 22170, 16932, 19845, 12696, 24606, 34637, 1157, 18094, 63762, 32654, 32740, 7414, 33079 ], [ 19552, 50614, 59844, 34156, 19016, 44122, 8153, 63555, 23394, 39150, 13098, 31118, 25038, 13574, 55256, 61898 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 34888, 23844, 35470, 2014, 45005, 7905, 17593, 12508, 59903, 38372, 22942, 62417, 55118, 3776, 46838, 12951 ] ], [ [ 54130, 42670, 36810, 52429, 36472, 19737, 53927, 59687, 15524, 23318, 32900, 53497, 27340, 51742, 26398, 25533 ], [ 28264, 53802, 18567, 41471, 59850, 34069, 56284, 14636, 37138, 8361, 20394, 62505, 31253, 62930, 52274, 33888 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 52154, 54765, 51328, 49933, 35173, 51811, 11511, 28949, 45771, 59512, 41715, 46316, 21947, 51282, 20476, 24062 ] ], [ [ 4306, 15175, 37114, 12540, 60085, 22127, 64399, 42766, 51259, 65458, 31234, 37939, 10899, 57347, 14998, 36716 ], [ 25434, 57703, 18331, 40824, 31032, 38828, 7526, 20830, 9454, 59458, 19288, 906, 34421, 34359, 38882, 15694 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 65336, 57818, 58501, 17540, 12289, 15674, 23977, 7612, 9043, 48455, 8397, 8551, 20614, 29505, 60337, 10418 ] ], [ [ 46144, 59051, 40877, 26950, 45898, 43662, 40170, 8330, 23830, 5004, 63165, 50461, 48420, 10896, 50972, 15123 ], [ 56404, 3350, 48664, 25653, 21089, 32770, 1455, 42743, 54082, 11919, 9849, 48040, 6066, 45640, 2682, 5257 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8330, 25319, 47733, 30996, 62008, 51272, 12389, 52742, 635, 55566, 255, 48756, 11742, 974, 55487, 20772 ] ], [ [ 43040, 58248, 49297, 47982, 10122, 20866, 45699, 43304, 60291, 43430, 5965, 8793, 84, 17744, 18635, 6219 ], [ 31776, 9959, 19898, 65074, 62547, 33786, 42467, 26233, 61299, 9088, 49768, 56672, 13225, 988, 57466, 48864 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 7284, 34299, 20029, 47592, 26261, 32359, 11840, 1669, 1638, 38011, 29830, 6166, 23935, 53690, 15488, 49615 ] ], [ [ 23604, 64275, 58304, 11128, 22612, 39714, 33142, 37759, 9628, 53820, 38633, 9761, 62728, 38381, 44561, 23044 ], [ 59558, 4805, 8087, 65155, 37950, 54425, 63789, 22866, 33372, 61606, 32373, 60648, 44236, 8472, 26377, 59238 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 30366, 24751, 11576, 25332, 8443, 49509, 15752, 35277, 37483, 6762, 12026, 3449, 63652, 51572, 16695, 48241 ] ], [ [ 43070, 49720, 22103, 39490, 58033, 17912, 4522, 24392, 50199, 10068, 24028, 56746, 48193, 33247, 21433, 21230 ], [ 61872, 28071, 24499, 28562, 37324, 38328, 57093, 25660, 14679, 20833, 36013, 31544, 57032, 13312, 41406, 65200 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 54692, 1424, 55112, 5304, 44054, 5507, 40414, 60078, 51020, 4530, 47327, 12694, 65155, 3430, 25132, 36935 ] ], [ [ 9234, 35357, 8295, 17134, 14571, 3053, 52619, 40262, 27486, 9246, 4765, 6661, 1484, 37454, 57656, 53279 ], [ 61006, 37148, 4582, 36541, 6741, 29976, 44902, 31565, 44559, 34157, 33482, 8536, 6300, 60896, 8940, 12160 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 45296, 45741, 57017, 37992, 41, 37183, 13501, 17116, 11173, 44734, 39701, 58936, 22471, 8722, 18494, 62379 ] ], [ [ 15208, 14602, 27165, 22293, 61692, 21603, 14811, 59611, 25692, 41215, 20233, 46907, 24626, 38041, 38141, 11650 ], [ 63012, 17498, 22001, 56108, 31978, 31876, 44033, 64995, 10185, 23233, 57017, 23119, 56720, 26566, 28586, 14986 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 46630, 54323, 41337, 17501, 65278, 9883, 37192, 6664, 13626, 27590, 62696, 42080, 50517, 27715, 59703, 29765 ] ], [ [ 55818, 25060, 20483, 35753, 6248, 45807, 33820, 41531, 38212, 1187, 54843, 153, 30383, 26434, 32002, 54917 ], [ 29390, 10510, 45700, 53885, 48709, 1623, 32749, 60879, 61389, 54809, 5564, 25721, 6354, 8419, 14951, 2900 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 30896, 45036, 64583, 32428, 8385, 515, 47508, 2774, 59581, 22688, 54444, 11672, 45375, 41817, 50352, 42846 ] ], [ [ 64850, 50436, 39419, 59623, 36091, 17121, 61187, 55709, 19870, 33015, 11983, 39884, 51525, 31355, 14268, 21160 ], [ 4502, 35393, 37191, 46846, 31450, 25428, 5329, 1333, 35974, 13993, 62015, 21637, 37454, 34264, 17921, 20694 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 45074, 19149, 1975, 36257, 18211, 54749, 37040, 20764, 39997, 64140, 44923, 14918, 65348, 30321, 26055, 32025 ] ], [ [ 52544, 34547, 58944, 16953, 54933, 17867, 8218, 17864, 12875, 1129, 44977, 17952, 27591, 23331, 61033, 48944 ], [ 33648, 49223, 21979, 43016, 6267, 62829, 23044, 3104, 35914, 44640, 4014, 21860, 11861, 7637, 12627, 16706 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1404, 29585, 25697, 999, 42103, 25249, 24322, 12485, 24028, 10037, 18644, 2955, 11854, 59281, 28815, 59555 ] ], [ [ 59108, 12397, 12413, 49717, 34680, 64761, 23147, 47043, 55397, 50990, 3237, 56518, 43538, 20438, 14533, 3772 ], [ 15586, 34422, 62008, 11387, 30742, 62861, 5540, 56282, 34086, 22176, 7645, 46051, 16637, 62191, 41433, 1203 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 58680, 29215, 49150, 59554, 27182, 50440, 14525, 65475, 18311, 35050, 59870, 63956, 60478, 28576, 10885, 60138 ] ], [ [ 18888, 58894, 4184, 21114, 46554, 14205, 15978, 30881, 51150, 9244, 56099, 64381, 36236, 12508, 26983, 47989 ], [ 60054, 5741, 24598, 24820, 6535, 35908, 35658, 64318, 22, 21504, 40614, 61343, 55759, 19666, 12660, 46288 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 6024, 18264, 17957, 47561, 46519, 39154, 38827, 14955, 54218, 48150, 18820, 9991, 17906, 64313, 15379, 36484 ] ], [ [ 60324, 41988, 36748, 10097, 34197, 21853, 45387, 9766, 44744, 32106, 8610, 52938, 43832, 53263, 11221, 107 ], [ 26578, 61708, 39482, 2538, 61241, 12497, 13244, 45498, 50538, 2087, 21631, 15744, 63147, 31253, 16578, 62067 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49602, 47022, 48223, 61728, 48653, 41706, 19854, 38939, 14616, 23549, 9684, 19194, 35120, 1415, 34185, 21353 ] ], [ [ 11224, 5723, 8426, 54257, 36712, 23470, 43472, 6426, 13992, 11259, 34903, 36989, 42709, 56563, 35128, 8014 ], [ 6604, 39898, 17211, 8520, 9006, 15693, 63662, 64652, 42717, 14196, 51813, 6894, 36377, 25759, 3183, 23179 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42580, 11948, 57697, 44644, 25765, 10896, 39454, 43907, 58868, 15942, 36386, 50172, 39449, 34494, 55884, 52924 ] ], [ [ 47378, 61634, 47218, 5653, 36300, 28476, 60709, 18164, 3118, 3936, 34018, 21812, 22921, 6964, 36341, 35070 ], [ 44024, 48275, 47684, 29979, 18763, 53359, 11860, 47715, 60085, 13037, 51476, 55444, 52933, 4340, 57448, 10040 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 60722, 14122, 45629, 48429, 3460, 44603, 36370, 8476, 58777, 23247, 13767, 48099, 55965, 51750, 599, 59337 ] ], [ [ 7284, 39700, 25812, 29025, 46682, 13089, 63311, 47758, 18597, 51098, 39674, 46320, 44386, 24306, 972, 6692 ], [ 30434, 58621, 47535, 22787, 25550, 15314, 52511, 3105, 17581, 38821, 32940, 529, 3227, 35813, 64461, 63353 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8690, 31559, 3605, 50420, 25984, 39031, 26853, 59341, 51295, 11004, 46319, 30252, 38322, 54987, 25282, 36859 ] ], [ [ 3556, 48628, 12782, 60688, 4811, 44422, 12244, 14224, 49970, 29451, 38892, 42117, 7169, 13686, 30206, 29149 ], [ 41982, 40840, 21310, 15209, 57371, 47863, 44443, 33102, 46431, 44636, 26558, 14214, 36404, 12807, 19013, 47463 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 828, 25223, 20227, 42054, 47620, 53747, 25821, 21684, 26353, 17834, 6623, 10809, 10508, 29028, 1113, 54455 ] ], [ [ 28816, 8280, 7683, 45671, 39880, 50520, 60337, 18989, 33502, 62092, 5330, 28856, 20065, 54899, 27403, 12301 ], [ 64622, 23637, 42943, 48580, 61666, 36683, 32233, 64153, 43987, 51132, 11139, 32516, 6412, 835, 1853, 49354 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 10742, 62122, 23572, 50596, 45800, 41495, 59725, 21836, 570, 25176, 49615, 52631, 41487, 48606, 43459, 6597 ] ], [ [ 51430, 36030, 33046, 38457, 6134, 51288, 22576, 49915, 17667, 21202, 57462, 9834, 23592, 22920, 23146, 49748 ], [ 46324, 11310, 5479, 64411, 27011, 3870, 55002, 45353, 57440, 47794, 41577, 48542, 57533, 48412, 1741, 61540 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49210, 54761, 63356, 39886, 38407, 48990, 64599, 35275, 9571, 50943, 1984, 47049, 54182, 24040, 21306, 2605 ] ], [ [ 14850, 16752, 4580, 9047, 59052, 21756, 52606, 8919, 30411, 8351, 41166, 30323, 15185, 63652, 25315, 27666 ], [ 108, 9884, 28429, 32584, 314, 50669, 45206, 20255, 680, 10082, 20618, 39565, 21131, 7695, 16847, 39224 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 6390, 39868, 10653, 64313, 9109, 45390, 23352, 51722, 8153, 52427, 42832, 51525, 32930, 63607, 422, 59252 ] ], [ [ 27874, 12244, 26895, 34575, 24895, 7781, 13365, 47749, 12290, 9644, 57917, 61794, 59852, 49691, 27375, 55106 ], [ 7988, 44078, 51153, 20996, 26162, 13234, 8563, 21556, 29175, 1773, 65456, 22950, 35439, 64334, 45058, 27461 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 9112, 8122, 40047, 64254, 57636, 40591, 20798, 59382, 5743, 17158, 41079, 4310, 5765, 26581, 26331, 5587 ] ], [ [ 18658, 779, 8901, 32893, 21256, 13054, 41393, 29834, 48495, 34111, 53236, 24821, 16815, 15998, 41798, 41050 ], [ 13738, 17543, 26211, 63639, 21870, 1036, 13630, 48976, 27027, 35794, 21765, 48793, 21474, 60513, 2280, 12811 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 17820, 4075, 22309, 57384, 44423, 46058, 24195, 39865, 18722, 18118, 863, 21363, 39512, 63733, 52918, 41773 ] ], [ [ 59940, 26110, 9531, 57832, 50626, 41986, 39102, 11018, 49505, 58011, 37589, 40678, 8061, 17354, 35720, 55596 ], [ 46560, 7424, 28458, 31151, 12166, 23206, 53651, 44798, 60986, 31963, 48737, 380, 65273, 56402, 21208, 17059 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 51972, 42886, 54625, 52885, 33910, 48973, 38764, 34854, 15333, 54142, 6118, 2308, 10177, 55277, 30898, 39102 ] ], [ [ 44834, 14099, 14269, 44145, 17924, 44131, 30628, 9709, 57400, 43029, 100, 52749, 337, 48297, 783, 1052 ], [ 63862, 1920, 16335, 59827, 17895, 15684, 31786, 58601, 23574, 25950, 50972, 50813, 64378, 60995, 30245, 62022 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 11502, 18700, 40469, 37396, 61592, 57845, 22955, 13816, 13604, 48608, 2071, 43311, 32953, 40098, 7048, 3110 ] ], [ [ 41474, 62701, 27535, 15883, 13803, 54554, 56190, 120, 35478, 46240, 24783, 54347, 63957, 48941, 48520, 25122 ], [ 21248, 33508, 64087, 36638, 11014, 47760, 46600, 21520, 31823, 9755, 56045, 56683, 53285, 59982, 47938, 33573 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 2118, 46708, 37609, 11773, 49030, 40132, 48654, 15114, 17760, 16393, 32998, 51097, 44554, 51155, 2530, 57995 ] ], [ [ 42372, 35803, 43565, 4418, 61961, 48019, 1753, 20100, 43025, 9632, 42539, 44639, 46276, 51276, 51115, 33339 ], [ 51694, 3881, 4575, 60805, 3534, 11362, 19343, 1273, 1769, 7538, 8247, 51536, 60180, 14828, 38823, 19755 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 21402, 11284, 8363, 12539, 30731, 48512, 46217, 52578, 47987, 36205, 6664, 31077, 26696, 55204, 19901, 11234 ] ], [ [ 53590, 48441, 13307, 50366, 23792, 61679, 26710, 38908, 51271, 46706, 42067, 38922, 46245, 28983, 26319, 60752 ], [ 41988, 21017, 18193, 23731, 43355, 8750, 180, 63826, 6231, 48824, 58202, 33707, 34760, 10762, 36056, 54459 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 31856, 26795, 60120, 14536, 38050, 43215, 731, 2709, 28447, 10894, 16510, 7326, 65126, 12519, 17121, 24721 ] ], [ [ 25238, 34195, 59582, 19059, 45070, 11701, 20628, 54186, 60082, 25245, 15222, 13319, 11598, 51312, 5530, 60262 ], [ 38578, 51402, 6690, 24558, 12775, 8800, 2179, 52835, 12985, 22596, 14941, 58523, 54532, 14575, 19439, 39389 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 64944, 59332, 854, 41808, 64691, 26446, 39926, 48956, 18586, 4236, 19104, 19987, 12749, 57564, 47820, 59007 ] ], [ [ 41510, 592, 29220, 61681, 11598, 54675, 59144, 14510, 6391, 12965, 49716, 42736, 47596, 31585, 39268, 29100 ], [ 53010, 21876, 43547, 14505, 16449, 38357, 43925, 24092, 16828, 5246, 48688, 35091, 58868, 10475, 49856, 47766 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42098, 27556, 695, 52167, 39518, 10369, 22897, 49185, 4104, 30434, 60057, 60172, 11063, 1957, 49769, 49979 ] ], [ [ 30488, 60485, 30311, 19506, 57273, 12837, 52075, 5351, 17249, 47854, 29083, 53999, 25928, 7099, 5002, 41499 ], [ 44420, 6156, 23096, 53434, 22936, 14271, 20400, 24727, 45856, 38811, 2294, 42092, 64511, 64183, 45717, 31057 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 48368, 64145, 14396, 58377, 1956, 45060, 33844, 23810, 15649, 53391, 61218, 39526, 55066, 38680, 46148, 42337 ] ], [ [ 23592, 56127, 6251, 23611, 1233, 56872, 21125, 46385, 63163, 60841, 10430, 45903, 1406, 56170, 3477, 7195 ], [ 50626, 39619, 53258, 15921, 13831, 49294, 25226, 51889, 3798, 40222, 44015, 19864, 27835, 57349, 24036, 55229 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 4122, 39269, 35840, 32233, 37298, 35543, 40214, 16841, 41624, 4570, 54921, 710, 40306, 60038, 49613, 54613 ] ], [ [ 40756, 22140, 17276, 7313, 20155, 15986, 43876, 41120, 46303, 34776, 48442, 18600, 47305, 12015, 28589, 53124 ], [ 11546, 7152, 10878, 63596, 27305, 61665, 41369, 39527, 5076, 51914, 10170, 43666, 23969, 56912, 16588, 35366 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23760, 27347, 49605, 20786, 6053, 9277, 23751, 33308, 25273, 45543, 10432, 57948, 33300, 23630, 64153, 47952 ] ], [ [ 16012, 45810, 52880, 25819, 830, 14301, 21558, 30320, 46372, 873, 41212, 29739, 1458, 52238, 8152, 40810 ], [ 24070, 26976, 34392, 12704, 12989, 11497, 53852, 47749, 25664, 29864, 3832, 45852, 27049, 7912, 25664, 63385 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 818, 56088, 14957, 27462, 32861, 15469, 59307, 11519, 11089, 15675, 43182, 10310, 59323, 21454, 2526, 35584 ] ], [ [ 12908, 64847, 23739, 36283, 26212, 29002, 31007, 44451, 63885, 60628, 26575, 64112, 18949, 28175, 34735, 28426 ], [ 14022, 27758, 9356, 24585, 9918, 19666, 5982, 24522, 52253, 59527, 27202, 52171, 37501, 13573, 4993, 27488 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 41160, 6384, 52136, 50463, 40878, 53034, 9544, 17525, 26338, 11197, 31303, 36652, 63005, 19031, 30144, 10110 ] ], [ [ 1380, 33914, 4938, 63171, 28336, 27546, 27475, 55858, 29913, 50293, 25786, 15165, 56584, 17936, 51183, 8080 ], [ 12136, 52794, 41416, 15481, 4656, 10308, 48374, 65023, 49396, 45207, 50124, 31251, 39609, 58390, 19659, 58164 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8068, 43361, 49485, 53687, 49576, 44346, 58345, 31847, 7642, 48040, 3493, 12637, 50994, 14908, 59809, 23384 ] ], [ [ 19956, 11731, 13065, 53774, 48653, 59198, 43748, 183, 59531, 43693, 36218, 10292, 33193, 50580, 17127, 51116 ], [ 35108, 36730, 39861, 49904, 25603, 7888, 42229, 62386, 59764, 5658, 52221, 59925, 4331, 13676, 49617, 10406 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 46100, 3213, 25469, 17876, 31068, 34913, 5699, 25770, 31470, 716, 3005, 20793, 45235, 62845, 18983, 62817 ] ], [ [ 54732, 64569, 42149, 12973, 52757, 59417, 11060, 24604, 64657, 43269, 56499, 10624, 8388, 1657, 49209, 8930 ], [ 43176, 35297, 22384, 21528, 63036, 33293, 1298, 38535, 14598, 63715, 38323, 55269, 48934, 23049, 63892, 58140 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 7610, 3122, 27127, 39149, 32246, 53656, 15271, 15223, 8505, 55709, 38732, 49338, 564, 15631, 14496, 44210 ] ], [ [ 54570, 25754, 13939, 54961, 39046, 16194, 61834, 62919, 43074, 21148, 56488, 9465, 19007, 42145, 59483, 39522 ], [ 48562, 5320, 3541, 57835, 59045, 4483, 9, 21789, 20867, 30078, 33024, 52153, 50648, 41445, 6105, 40813 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 37162, 54553, 26415, 11392, 62156, 48013, 52981, 41989, 44786, 18094, 53579, 53097, 272, 52516, 51080, 26055 ] ], [ [ 63978, 59876, 21217, 20799, 3353, 55773, 37789, 34609, 2339, 33749, 37611, 30217, 58222, 49400, 26274, 14005 ], [ 47930, 60729, 562, 17383, 14458, 33812, 17635, 24274, 56724, 35192, 19541, 40563, 58593, 17214, 19152, 7134 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 34288, 26936, 26924, 64203, 29687, 36186, 45278, 948, 6757, 6014, 396, 12010, 591, 52580, 10411, 6786 ] ], [ [ 59314, 58255, 50595, 29387, 31214, 63553, 61151, 50533, 30533, 15399, 22717, 30163, 1250, 47947, 62309, 4040 ], [ 31524, 13459, 58037, 18548, 41165, 37387, 26263, 62521, 58032, 14685, 23402, 5957, 7800, 37339, 7297, 5881 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 63670, 584, 62782, 48075, 63819, 57151, 60388, 65067, 59350, 27594, 39744, 39672, 39352, 36806, 10761, 50335 ] ], [ [ 4340, 48710, 53943, 52945, 30302, 55202, 56323, 33252, 63066, 56892, 31406, 8605, 42292, 43510, 57971, 24717 ], [ 17658, 63089, 55361, 22726, 14099, 34027, 38415, 56519, 43464, 33658, 12210, 45361, 55322, 16280, 53265, 15153 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 17576, 60955, 52972, 37572, 31281, 7613, 57259, 47926, 5101, 41656, 5242, 94, 15936, 13063, 29174, 16805 ] ], [ [ 54638, 5684, 41729, 60051, 37970, 37868, 33207, 11537, 63832, 2741, 20394, 12022, 13887, 13247, 59226, 35025 ], [ 53018, 44610, 46540, 14711, 23492, 53339, 22822, 53287, 29013, 40210, 15752, 60060, 27201, 20720, 37779, 18397 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 46822, 20414, 13489, 20076, 39570, 56458, 6230, 64980, 11314, 23287, 26408, 32800, 23288, 11450, 21471, 45096 ] ], [ [ 51548, 27985, 43548, 42485, 16272, 57876, 36462, 64868, 57516, 8782, 49637, 10684, 27146, 41374, 52064, 35631 ], [ 14812, 62258, 17569, 50665, 30915, 38395, 13383, 13365, 9704, 37854, 46278, 28022, 4998, 59846, 46440, 25345 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 38150, 43285, 30331, 2121, 54230, 61359, 24491, 28928, 11481, 22149, 56518, 47909, 16075, 49006, 15920, 11126 ] ], [ [ 44564, 3539, 36684, 59956, 15485, 35557, 23503, 55442, 5680, 41908, 65397, 10219, 23752, 49772, 27886, 35617 ], [ 47792, 21266, 43562, 44407, 30745, 35413, 24622, 49799, 37230, 37176, 31295, 9413, 20879, 57029, 21424, 54832 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 12834, 65150, 47079, 21134, 22856, 19695, 36008, 37303, 63179, 25084, 7717, 63173, 51017, 46725, 23119, 26997 ] ], [ [ 65026, 4692, 51736, 42365, 17256, 28067, 10772, 42346, 12942, 25575, 58191, 17606, 43838, 51811, 34327, 16244 ], [ 25630, 32193, 56402, 23059, 40097, 61006, 10393, 19643, 44270, 7081, 41609, 14648, 50299, 16911, 35302, 4077 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56494, 13607, 11071, 64046, 56225, 9721, 39692, 64924, 58387, 48355, 25501, 11718, 706, 53409, 53273, 8958 ] ], [ [ 15584, 32908, 4227, 14218, 40016, 57268, 35903, 9207, 54791, 41215, 27778, 15221, 46564, 58555, 20710, 35056 ], [ 61026, 18549, 13202, 62706, 5549, 41338, 17921, 12969, 34822, 14006, 13639, 46265, 34114, 61558, 72, 14480 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23732, 22042, 58434, 61361, 43649, 43233, 41018, 63263, 41203, 15990, 62733, 54617, 52614, 54850, 33380, 12457 ] ], [ [ 170, 1209, 13693, 60412, 3024, 12805, 31314, 9353, 20597, 25569, 33282, 59278, 3205, 22258, 14148, 42371 ], [ 41340, 52174, 55904, 530, 10526, 10809, 46851, 30699, 59968, 11209, 54572, 32381, 50988, 64858, 50431, 58065 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 33596, 14700, 14973, 62820, 9830, 44952, 2083, 11787, 42939, 41876, 63267, 19391, 31872, 27074, 1281, 39087 ] ], [ [ 34826, 23448, 64590, 9281, 58885, 11088, 38574, 55633, 29291, 13234, 38978, 47976, 23056, 35962, 1949, 34228 ], [ 24860, 55199, 16296, 35971, 26896, 59024, 53967, 41827, 21732, 58750, 4969, 36892, 43607, 21481, 17186, 41769 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 30762, 48897, 11200, 38671, 24567, 11776, 4656, 44478, 12561, 12524, 21406, 9747, 4407, 61736, 54354, 28735 ] ], [ [ 7378, 2808, 11773, 62846, 28917, 16765, 4459, 48894, 53657, 10581, 48945, 38848, 54636, 52277, 35678, 59865 ], [ 20110, 9631, 33272, 11604, 54542, 33108, 42651, 52882, 59723, 9359, 51771, 17632, 13995, 64510, 54407, 15910 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 64428, 28042, 7507, 57541, 22517, 31303, 14531, 13991, 39188, 56263, 46488, 8721, 43819, 32852, 51701, 55380 ] ], [ [ 46790, 40404, 27348, 28847, 11271, 40464, 4541, 58541, 13094, 37488, 7288, 40820, 24693, 62550, 43065, 58024 ], [ 48936, 13653, 35681, 38724, 15080, 49493, 15304, 38397, 4393, 38496, 51998, 40209, 962, 7050, 54982, 48453 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 47624, 5221, 2227, 62264, 45831, 22453, 10817, 21518, 31746, 63461, 63786, 18926, 54698, 15856, 16802, 37978 ] ], [ [ 3710, 45648, 3532, 42603, 23409, 60738, 44989, 61612, 4860, 16290, 55886, 4584, 9203, 1249, 866, 19996 ], [ 45512, 28443, 24947, 10045, 32013, 9594, 29535, 12046, 63123, 55332, 36943, 41644, 2658, 25072, 2265, 27225 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 37666, 46012, 34066, 46486, 55088, 15235, 11526, 41786, 31823, 24601, 61469, 7536, 59257, 46351, 44078, 17239 ] ], [ [ 11612, 63573, 36399, 6384, 59963, 9949, 53618, 65269, 47333, 54246, 18448, 18758, 40762, 17758, 36971, 65512 ], [ 30400, 13161, 47483, 28736, 42734, 27433, 53469, 36189, 16065, 59978, 45367, 515, 13571, 10481, 65437, 37632 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 60638, 33261, 33349, 11385, 35478, 57407, 51459, 35502, 44933, 49497, 52254, 37256, 36788, 48465, 14604, 7568 ] ], [ [ 54818, 6069, 49028, 52242, 5155, 57162, 12564, 41404, 28332, 64171, 4439, 45907, 58919, 18425, 17459, 7732 ], [ 64614, 46246, 13579, 51488, 8781, 50308, 8361, 35308, 47764, 22118, 47432, 32647, 7882, 60678, 21925, 43353 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 41428, 64340, 63562, 4099, 29648, 36666, 7318, 32314, 51028, 52454, 51563, 14873, 11836, 54590, 62875, 10547 ] ], [ [ 57686, 61941, 43989, 11176, 35246, 53235, 40790, 19442, 48177, 43288, 23302, 46270, 63585, 1714, 33180, 19627 ], [ 26636, 374, 14358, 3883, 38775, 26514, 34382, 35690, 59621, 63244, 14646, 13237, 53222, 48478, 64280, 40720 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 40814, 63200, 13339, 36643, 2158, 20907, 7573, 45913, 55564, 14841, 58413, 45439, 29935, 44646, 60930, 356 ] ], [ [ 61552, 25357, 21487, 46443, 63851, 53123, 1246, 39714, 2604, 42464, 51160, 42396, 63139, 53103, 27536, 64616 ], [ 5408, 32727, 54554, 22561, 6340, 61605, 29644, 64936, 6394, 977, 36241, 53842, 42147, 45523, 7658, 32783 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 11086, 40333, 2080, 62195, 19761, 22811, 50077, 60227, 43854, 51186, 3719, 59207, 50862, 60181, 41867, 14715 ] ], [ [ 14892, 44517, 56820, 63277, 17500, 23477, 41761, 24457, 17814, 19914, 8612, 28825, 50394, 41156, 62693, 2796 ], [ 26612, 25889, 2281, 2976, 19050, 46522, 44928, 7120, 62917, 29515, 24656, 28973, 24937, 49166, 16416, 39216 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 24376, 47766, 29505, 34548, 28027, 27133, 19961, 39300, 64497, 14476, 18097, 24816, 7070, 40039, 44384, 13521 ] ], [ [ 30160, 15191, 23787, 22036, 51536, 47183, 7864, 62627, 62891, 8361, 37909, 55938, 7318, 22939, 65420, 20980 ], [ 15022, 55174, 1712, 32644, 48411, 2004, 32888, 45358, 61108, 14418, 39662, 63225, 16883, 54382, 38280, 46508 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 51454, 2262, 29191, 36827, 29872, 36887, 12629, 3200, 26367, 45605, 18033, 64393, 62186, 55896, 12116, 52640 ] ], [ [ 38702, 29119, 39786, 60530, 63731, 58987, 27662, 42345, 26671, 55378, 33121, 25536, 42559, 4924, 59024, 54925 ], [ 14824, 30512, 45347, 7165, 15933, 19828, 44671, 14939, 26036, 14862, 56387, 16860, 58951, 37608, 8713, 19528 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 39132, 5898, 56260, 111, 6633, 18529, 3586, 46118, 12903, 3230, 46009, 34683, 29687, 63326, 63211, 49296 ] ], [ [ 986, 26164, 3268, 28275, 9404, 63925, 33136, 59730, 31988, 56611, 47263, 61254, 8733, 32085, 50289, 13122 ], [ 14258, 23401, 50856, 42141, 25084, 26734, 59974, 7383, 53863, 64125, 52465, 36180, 13622, 201, 27871, 53351 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 47272, 64848, 46202, 37434, 3539, 17306, 10295, 11614, 18013, 16, 1324, 39875, 20444, 2890, 16545, 44348 ] ], [ [ 19866, 10562, 42077, 28523, 35496, 37197, 53883, 14047, 495, 50466, 36300, 22763, 45885, 64592, 38795, 13206 ], [ 13184, 51207, 51786, 45520, 48555, 42973, 44156, 17726, 52427, 37127, 13759, 52125, 4733, 4412, 4953, 56527 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1590, 45291, 12525, 30863, 47551, 5952, 31544, 41624, 1305, 19600, 22328, 41628, 42169, 24277, 34012, 56427 ] ], [ [ 47154, 55105, 1963, 21, 52878, 45791, 23619, 56321, 500, 38225, 23056, 9462, 40996, 14873, 10761, 49066 ], [ 36572, 50923, 56767, 31505, 18407, 52966, 46823, 59589, 56458, 22347, 15125, 51814, 41865, 44285, 57613, 31261 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 45080, 37114, 34084, 4403, 11218, 44421, 50399, 57771, 34429, 58981, 10928, 20984, 41078, 12023, 32950, 52502 ] ], [ [ 58290, 44776, 10007, 25827, 29024, 10567, 3842, 23954, 37648, 3784, 60833, 43450, 7318, 30405, 52528, 45305 ], [ 45186, 36029, 42940, 32335, 20221, 48954, 1119, 32889, 23083, 20383, 8552, 28953, 8390, 16897, 57258, 44206 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 55832, 147, 37349, 17470, 11682, 46270, 54584, 41614, 5477, 24140, 62164, 31600, 50118, 22369, 3705, 54163 ] ], [ [ 28304, 19326, 37745, 29376, 60397, 9329, 9879, 65180, 16075, 6489, 4008, 32117, 6334, 38630, 38174, 24688 ], [ 26230, 7486, 24396, 49406, 17156, 17622, 46361, 51117, 56354, 10353, 56932, 14401, 36647, 27436, 47112, 64440 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 11742, 41547, 15790, 50057, 16698, 1429, 29621, 27344, 62344, 61544, 18444, 38136, 34489, 43200, 27607, 43103 ] ], [ [ 28714, 40231, 45017, 10161, 58287, 7773, 12346, 24916, 59488, 9923, 48186, 62846, 56705, 356, 60164, 40640 ], [ 11482, 53668, 50081, 28252, 1842, 47135, 6414, 39326, 13097, 44698, 60794, 17000, 31849, 45831, 11320, 15862 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 63140, 7803, 19175, 38025, 55094, 34247, 44066, 57026, 48589, 50622, 10423, 11999, 55092, 8942, 27131, 32125 ] ], [ [ 43260, 469, 18602, 10319, 12902, 47642, 60028, 32785, 6167, 22171, 9608, 26886, 11282, 22250, 16745, 39204 ], [ 8670, 56048, 64394, 47281, 51405, 33386, 29465, 51163, 35023, 38635, 28654, 1787, 52690, 31613, 10258, 3214 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8050, 5348, 31788, 49488, 2187, 7106, 27858, 1711, 25837, 56064, 60976, 50925, 56298, 17118, 54899, 54335 ] ], [ [ 17536, 52887, 65320, 16442, 62916, 39926, 27636, 33799, 39163, 60632, 908, 60503, 60745, 46691, 65450, 43160 ], [ 5674, 62261, 48198, 62643, 46790, 64079, 41204, 58899, 17751, 47507, 54972, 59225, 38007, 43884, 15254, 35151 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 18642, 7612, 28171, 32004, 6223, 22171, 24140, 7174, 21251, 54536, 44281, 29012, 47056, 7918, 43209, 13623 ] ], [ [ 63322, 363, 20242, 49489, 33904, 18324, 434, 29036, 52439, 26135, 22799, 23901, 272, 4439, 56821, 13538 ], [ 55590, 23583, 44120, 907, 50130, 3973, 49978, 28031, 34446, 21197, 36724, 30549, 46871, 46990, 60040, 7130 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 57316, 46758, 64156, 59883, 32897, 30969, 8926, 46030, 50626, 48055, 3741, 3362, 9530, 23756, 47883, 7163 ] ], [ [ 23752, 65046, 40941, 22054, 19446, 42911, 34058, 42494, 34700, 39133, 20174, 22723, 45653, 15739, 27608, 19637 ], [ 14418, 5536, 43002, 36788, 50411, 39814, 42288, 19806, 35562, 40858, 55322, 21339, 6420, 25381, 28596, 56607 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 2758, 55398, 40494, 50399, 8816, 46317, 16301, 12045, 52060, 28427, 53610, 30914, 42195, 27664, 20195, 44885 ] ], [ [ 36780, 7868, 35709, 2906, 44941, 11894, 58225, 28475, 12115, 36926, 54421, 5173, 35919, 52796, 7255, 18806 ], [ 20648, 25057, 22379, 60213, 2884, 28172, 9721, 29824, 36850, 31343, 32574, 62253, 2382, 4197, 862, 12837 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 52622, 54759, 7165, 32039, 29484, 18181, 17736, 535, 63279, 40334, 11549, 3906, 3183, 6320, 48320, 59162 ] ], [ [ 24726, 4060, 58724, 57885, 20365, 12153, 9230, 2, 30469, 9539, 27197, 47047, 1215, 25864, 14836, 58699 ], [ 6550, 27410, 46954, 56547, 39749, 46299, 44712, 43228, 17428, 25189, 13518, 33946, 4632, 61697, 31714, 20686 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 53290, 43355, 55544, 14805, 15504, 16967, 39691, 58383, 56900, 14443, 64587, 48259, 32627, 37783, 7142, 12114 ] ], [ [ 31996, 35939, 23662, 12510, 26079, 12026, 41904, 1317, 48468, 47653, 44550, 35807, 7129, 14570, 1459, 35094 ], [ 36020, 25791, 44328, 42488, 28506, 47817, 32725, 54997, 26301, 15663, 21674, 47862, 8754, 7834, 1362, 40436 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 64198, 37630, 9627, 27010, 53612, 51231, 48673, 13813, 19262, 33525, 44917, 35072, 63273, 29896, 56891, 3722 ] ], [ [ 8106, 60347, 58622, 64647, 11441, 34999, 50932, 62905, 17956, 42482, 36767, 37770, 26992, 22228, 65004, 17926 ], [ 26190, 20175, 52788, 55564, 20646, 24278, 44949, 22761, 61178, 47259, 4005, 57397, 33347, 25965, 55782, 3840 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 34352, 42166, 56827, 6601, 29978, 63273, 34804, 59382, 1191, 17054, 42650, 37483, 37020, 29198, 11674, 44774 ] ], [ [ 30056, 64570, 54116, 32297, 18909, 22938, 48979, 42932, 45906, 43781, 44995, 6678, 17029, 41522, 64134, 49977 ], [ 19214, 25507, 65162, 22693, 5105, 40381, 32682, 16502, 33136, 29968, 48025, 3006, 59670, 25274, 52276, 27911 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 33930, 24196, 3057, 10520, 43642, 23602, 56889, 37205, 30440, 22627, 24315, 21984, 45268, 31184, 25438, 52683 ] ], [ [ 472, 14023, 20119, 43958, 3423, 47660, 25703, 56917, 65468, 60582, 54020, 14733, 24150, 63726, 12004, 57907 ], [ 61266, 40888, 19400, 64935, 18721, 37531, 33333, 2774, 62107, 61817, 12103, 32362, 53151, 536, 64316, 48667 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 4840, 3498, 54236, 48928, 24325, 51571, 49052, 29004, 17407, 26083, 43622, 17101, 31876, 56565, 3473, 27468 ] ], [ [ 35612, 16584, 53585, 6828, 58379, 41641, 8514, 12057, 38779, 63423, 27991, 15679, 3919, 45794, 129, 64414 ], [ 34188, 50219, 61948, 59563, 8825, 33988, 14871, 34554, 32166, 62457, 879, 8279, 31053, 28409, 21617, 2360 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 3842, 32320, 63157, 61862, 63647, 31005, 14581, 10227, 39974, 63746, 62522, 7840, 11462, 7486, 46651, 48000 ] ], [ [ 10560, 43124, 24111, 31225, 62372, 47422, 13309, 44081, 27034, 7816, 8567, 62253, 21137, 5414, 42674, 32463 ], [ 8390, 27719, 32164, 25547, 23530, 57091, 34878, 28033, 1998, 6210, 32352, 21883, 27390, 56051, 35676, 4245 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42686, 47185, 20244, 44037, 51071, 4064, 35360, 21987, 10083, 33452, 44364, 15841, 11963, 1861, 7012, 20339 ] ], [ [ 38376, 25490, 64592, 61538, 24228, 6284, 6082, 46884, 49784, 59305, 12906, 10710, 44933, 36299, 5009, 60378 ], [ 2614, 46786, 42315, 1885, 16663, 24369, 18018, 37624, 26361, 29512, 38822, 32013, 61064, 45410, 43011, 11327 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 64616, 2472, 36083, 41761, 39307, 746, 46630, 36957, 34356, 39450, 19238, 48147, 2309, 49370, 37876, 9239 ] ], [ [ 45386, 35440, 59561, 31075, 57856, 5669, 19402, 41999, 44390, 40729, 26504, 35596, 19138, 11099, 38253, 6575 ], [ 40312, 52406, 46176, 20338, 26903, 19034, 13416, 41387, 12869, 33596, 29319, 21552, 26743, 64430, 35765, 56866 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 40354, 33734, 6457, 13004, 42796, 16069, 6595, 55878, 28867, 51342, 36808, 5287, 21067, 21560, 41323, 23871 ] ], [ [ 47582, 13703, 48069, 53177, 55029, 54733, 31756, 58894, 13456, 20987, 7746, 44141, 18074, 38852, 12841, 50623 ], [ 40550, 9414, 60864, 23973, 54408, 29680, 31639, 32746, 65346, 40993, 12187, 64922, 22355, 33799, 34888, 21149 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 59874, 43797, 52175, 17416, 16260, 39519, 22855, 42421, 3181, 31337, 24816, 39494, 63253, 8873, 63019, 2438 ] ], [ [ 50676, 5410, 40162, 41568, 55577, 44583, 20023, 51622, 42624, 36753, 18706, 229, 18200, 55249, 8744, 47459 ], [ 58088, 32256, 40690, 39198, 38201, 48388, 26398, 45691, 44070, 43750, 18146, 58581, 34536, 43965, 21884, 28505 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 40378, 56424, 12107, 22584, 40535, 14510, 56053, 59877, 30866, 6429, 36252, 44357, 28818, 1778, 38936, 59633 ] ], [ [ 25636, 39790, 28981, 52856, 819, 13089, 61750, 39795, 5561, 11403, 53097, 60749, 19791, 5207, 33299, 19876 ], [ 28242, 41994, 1881, 61975, 19051, 28191, 46582, 25276, 46820, 41690, 48275, 1321, 53970, 18035, 5635, 45376 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 61280, 28698, 31734, 37481, 26262, 1744, 12783, 44370, 3377, 58592, 6826, 60980, 39027, 61326, 28012, 36961 ] ], [ [ 29516, 5485, 41405, 23629, 2835, 1572, 30872, 23324, 8171, 21528, 55619, 26197, 10714, 59425, 15544, 8770 ], [ 52660, 28424, 8981, 2842, 60706, 61905, 51111, 17779, 40691, 30414, 63159, 46649, 31118, 59838, 53147, 25213 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 29804, 9221, 22712, 50929, 40966, 36843, 45935, 36511, 4297, 15481, 447, 3438, 60098, 39746, 1157, 59116 ] ], [ [ 2996, 43826, 1244, 21841, 7713, 29963, 35225, 13683, 37178, 65067, 18919, 30442, 63937, 47430, 595, 1059 ], [ 23292, 7454, 22644, 42645, 31631, 16023, 15127, 11641, 22438, 17903, 2818, 28237, 37790, 12173, 40409, 1243 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 37738, 62557, 13130, 3528, 58803, 19254, 20607, 58433, 9849, 3558, 5106, 51521, 14004, 13233, 31040, 24005 ] ], [ [ 55232, 38742, 37208, 2526, 40783, 25534, 33712, 17286, 48221, 62432, 30144, 35775, 43662, 35831, 28260, 25520 ], [ 44566, 57483, 9371, 23656, 49732, 2256, 31671, 64866, 55423, 47060, 64848, 6956, 16831, 55701, 55438, 6935 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 9602, 24997, 35929, 58397, 23128, 19209, 55578, 812, 35634, 8573, 52215, 35407, 5661, 1717, 46608, 26481 ] ], [ [ 21894, 36407, 14531, 5192, 38837, 42962, 17748, 13809, 14404, 61854, 46619, 52, 38460, 10734, 59904, 2860 ], [ 56042, 40601, 33561, 28006, 30441, 20615, 64977, 24636, 50823, 55617, 56206, 56926, 39594, 10451, 38362, 18410 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 50188, 55875, 51480, 25920, 43417, 62641, 16222, 60507, 15610, 26281, 29699, 11335, 4471, 61825, 352, 27159 ] ], [ [ 43690, 58899, 17869, 42058, 2649, 45412, 54936, 4916, 58884, 38039, 51974, 20180, 38587, 53709, 53591, 34531 ], [ 27770, 10053, 37828, 32127, 25212, 14416, 27450, 34997, 55750, 30961, 47385, 37689, 51517, 40160, 52796, 29429 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 28230, 34123, 19213, 65289, 40438, 61826, 47405, 1487, 15232, 50105, 23559, 19299, 56289, 9073, 10143, 1131 ] ], [ [ 59940, 32035, 11350, 23010, 34062, 1120, 23176, 7796, 61259, 55827, 65356, 17795, 16261, 38152, 8236, 7955 ], [ 24392, 36903, 604, 44354, 18296, 46428, 2174, 133, 32762, 65021, 2535, 61969, 7038, 27704, 27957, 26163 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23354, 45507, 34148, 16809, 57196, 8629, 37119, 17741, 20177, 52233, 16948, 12301, 14213, 47687, 21633, 55538 ] ], [ [ 896, 33078, 58540, 2336, 19509, 45637, 19486, 8468, 59878, 31626, 65165, 50718, 49470, 64053, 28903, 40270 ], [ 11854, 56770, 22421, 43985, 59520, 5987, 18613, 35556, 40465, 48754, 36229, 2641, 40946, 7392, 1961, 64296 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 58624, 51107, 13193, 9015, 3366, 62034, 65393, 22632, 37297, 58511, 17298, 50098, 25460, 13779, 48664, 42812 ] ], [ [ 59428, 24759, 18350, 64640, 9189, 49895, 34249, 39142, 10656, 57678, 14724, 38189, 62252, 15429, 45055, 19495 ], [ 42584, 19445, 48401, 23482, 50334, 20900, 48670, 37072, 39994, 9922, 7862, 38385, 51325, 21101, 39398, 57132 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 13194, 18161, 12745, 59879, 44457, 26211, 25730, 5240, 19306, 1938, 22016, 54497, 24623, 3060, 25853, 1441 ] ], [ [ 57458, 12836, 53684, 64751, 41577, 36799, 11378, 63125, 28388, 36989, 22519, 41089, 56055, 13295, 58119, 63595 ], [ 10038, 50750, 1810, 20139, 27070, 45981, 2238, 10876, 2119, 54525, 3789, 13351, 39003, 12084, 24439, 25914 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 25800, 29087, 59415, 196, 48494, 22458, 61013, 38596, 55532, 23507, 26266, 3472, 16011, 19761, 16083, 4807 ] ], [ [ 43520, 19502, 8944, 27832, 6579, 60237, 53355, 50852, 56732, 23496, 22401, 57225, 43315, 18792, 58496, 41470 ], [ 5888, 12432, 54249, 12384, 49713, 35186, 13946, 48549, 33593, 20613, 23969, 16748, 46365, 1836, 30528, 20491 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 33272, 57779, 42372, 56704, 38896, 57863, 28950, 59974, 38059, 1512, 10223, 26766, 36848, 35864, 35062, 6533 ] ], [ [ 46028, 4422, 4974, 10423, 22094, 61917, 44460, 50008, 35064, 24212, 38918, 58529, 64362, 18698, 35421, 63486 ], [ 582, 42485, 50607, 28021, 17850, 2613, 51710, 8876, 36241, 38177, 819, 35520, 62230, 57401, 3841, 15443 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 44332, 6994, 26246, 65069, 2310, 38272, 56570, 15064, 60248, 65486, 62051, 34084, 2079, 30502, 50572, 9634 ] ], [ [ 30004, 7991, 20020, 7593, 26472, 18936, 38552, 19708, 38757, 759, 21066, 364, 18621, 7099, 42221, 21474 ], [ 54598, 23195, 37026, 47315, 19511, 33365, 2088, 32527, 33194, 57445, 21004, 41929, 10034, 55908, 13565, 55843 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23314, 23270, 59239, 63358, 23501, 58990, 23901, 42056, 33330, 40915, 46958, 18781, 347, 48981, 28759, 17084 ] ], [ [ 45218, 19724, 31667, 51235, 35359, 26169, 47846, 4172, 51767, 31900, 40453, 49407, 36600, 36785, 26479, 42520 ], [ 16696, 21523, 6691, 20132, 35753, 19230, 5628, 47908, 52094, 7862, 62747, 51442, 60502, 41522, 23392, 43680 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 47246, 63930, 31753, 34746, 30374, 60139, 13814, 49748, 30603, 46863, 33157, 58403, 47057, 38874, 6852, 49654 ] ], [ [ 27658, 48207, 12862, 19175, 4890, 18881, 48952, 49911, 36819, 44395, 63314, 48335, 52007, 26432, 52598, 22125 ], [ 45266, 44327, 39870, 46578, 56931, 9018, 46997, 32266, 40691, 28485, 14617, 36725, 15673, 49167, 61855, 53737 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 3318, 36896, 31330, 19110, 58575, 9748, 59155, 31016, 63252, 10557, 12919, 64554, 12855, 5094, 51707, 7457 ] ], [ [ 43656, 9236, 38022, 4625, 6718, 52405, 57531, 54684, 28060, 22714, 36210, 8955, 40827, 38012, 45872, 8529 ], [ 29942, 62013, 53423, 798, 9084, 51563, 9724, 36976, 39644, 64420, 64585, 2621, 14389, 58479, 20606, 10753 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 2870, 14949, 51432, 9154, 41467, 12609, 12184, 44975, 12220, 46737, 38336, 24659, 6319, 1337, 12683, 5426 ] ], [ [ 58326, 24982, 64826, 39919, 36895, 9380, 23316, 57032, 45392, 44829, 21992, 34698, 65037, 15274, 11394, 31629 ], [ 3186, 63663, 17539, 55625, 53061, 18679, 21465, 61876, 41061, 50145, 5555, 35309, 20379, 45922, 42327, 40005 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 38838, 32550, 17377, 53186, 13872, 51608, 50728, 58840, 10263, 59211, 60261, 52, 52276, 41405, 26686, 21063 ] ], [ [ 49544, 53401, 7228, 46173, 5103, 36879, 14009, 38191, 50837, 57052, 20746, 36322, 48371, 60497, 45535, 24482 ], [ 26670, 9121, 39805, 26944, 31621, 48962, 19344, 16598, 55087, 21074, 8626, 25822, 35005, 28099, 64165, 16257 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 24454, 45495, 38472, 49167, 63443, 50502, 43548, 18625, 11937, 33637, 33787, 29411, 35243, 18564, 25266, 55802 ] ], [ [ 65000, 31559, 26250, 31134, 25646, 61314, 8695, 63212, 34520, 12553, 56700, 27139, 41048, 46967, 35995, 40839 ], [ 18242, 43236, 21821, 13345, 7595, 57518, 60148, 50651, 22713, 50367, 35114, 6705, 11764, 51937, 39223, 55623 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 52676, 31195, 13433, 13073, 26987, 50172, 38375, 41651, 45574, 21726, 55018, 21606, 21999, 20533, 57636, 1625 ] ], [ [ 51892, 49507, 43337, 17717, 32341, 25818, 1842, 63312, 44082, 30174, 39768, 45585, 7994, 63477, 1145, 35046 ], [ 64070, 19234, 57850, 38654, 26620, 26554, 50327, 7143, 36998, 61023, 23540, 45585, 44493, 49902, 27720, 6955 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 13256, 31016, 36623, 53786, 1340, 2495, 47034, 25714, 25577, 47980, 22291, 31029, 59783, 4291, 27533, 3343 ] ], [ [ 32766, 13819, 50813, 8961, 50216, 44034, 16927, 40372, 252, 42388, 51950, 38874, 16649, 34679, 31581, 30855 ], [ 64482, 11664, 6529, 12190, 34157, 35976, 23616, 16759, 333, 30233, 59488, 18508, 13284, 12931, 46188, 33601 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 44600, 8337, 30770, 46753, 57558, 58360, 7487, 2644, 43912, 62137, 8386, 23443, 27025, 905, 49721, 16650 ] ], [ [ 4332, 2498, 28239, 54004, 32479, 31690, 7452, 41914, 55990, 13159, 34772, 19254, 8209, 42501, 49449, 38791 ], [ 38646, 12234, 14554, 7079, 51964, 65149, 35080, 18402, 27179, 19293, 41466, 57012, 49846, 20785, 57589, 2980 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 11716, 8108, 36739, 22422, 24876, 62155, 21204, 36782, 37200, 12335, 39593, 57072, 12547, 60194, 23494, 54010 ] ], [ [ 58716, 1222, 11150, 48727, 34104, 52003, 48823, 43343, 28371, 43538, 45781, 37678, 39465, 34890, 17176, 501 ], [ 64592, 41691, 8537, 48525, 13182, 12206, 6791, 38864, 3527, 25421, 61185, 33797, 16620, 43229, 20234, 2928 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 27842, 46560, 43622, 47535, 54034, 26069, 41291, 11199, 52952, 61535, 28190, 37594, 62091, 7096, 57297, 26255 ] ], [ [ 9772, 16617, 1001, 1709, 37225, 53728, 24713, 31108, 10206, 58989, 48502, 59114, 18606, 26563, 22464, 45005 ], [ 49516, 47580, 48327, 15750, 19285, 31272, 19963, 63687, 26556, 24618, 36685, 2823, 5914, 64191, 42924, 39485 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 9780, 43458, 35113, 44502, 34737, 33930, 40237, 42986, 16113, 23488, 7720, 38446, 36231, 6124, 23262, 13330 ] ], [ [ 16254, 24301, 30744, 9023, 3372, 17548, 59392, 59899, 54926, 14033, 22360, 44702, 23627, 1803, 27580, 43861 ], [ 19804, 55063, 34017, 30937, 37041, 12029, 46515, 16153, 64027, 26816, 56755, 11776, 48521, 32894, 4914, 64416 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 35884, 56321, 62410, 15168, 23138, 42068, 41903, 20292, 50217, 305, 54892, 52499, 40279, 47100, 27690, 22582 ] ], [ [ 28442, 44864, 17476, 17328, 3471, 7888, 3012, 23833, 65166, 62401, 23749, 63633, 19972, 37054, 18356, 16220 ], [ 15280, 62252, 13054, 1905, 43583, 17850, 43104, 60045, 52052, 4153, 62132, 53899, 33300, 1858, 59790, 21372 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 4056, 34619, 8427, 27480, 42853, 15317, 47739, 16166, 1365, 53824, 39435, 45885, 35000, 26016, 63232, 24273 ] ], [ [ 63562, 43188, 56624, 14540, 54181, 55498, 63697, 12722, 54417, 1394, 19031, 33339, 50762, 8296, 6370, 57665 ], [ 54278, 18317, 4649, 45157, 30737, 46407, 41931, 64165, 34053, 43348, 38707, 11149, 65218, 13721, 58664, 58347 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 10624, 6514, 65504, 8127, 26392, 42254, 29813, 41297, 12945, 34945, 16883, 19585, 48525, 6637, 29742, 55292 ] ], [ [ 16286, 61247, 62680, 46076, 24736, 1616, 10539, 28754, 2837, 9252, 24568, 6265, 65484, 39305, 41348, 37806 ], [ 8004, 49848, 49409, 6448, 1365, 4192, 27812, 26413, 58736, 6949, 49138, 64477, 11120, 36001, 38044, 2180 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 638, 30298, 56655, 9399, 30117, 59304, 4810, 26219, 18520, 24727, 31943, 19160, 57857, 57269, 43467, 8800 ] ], [ [ 50388, 19779, 11209, 23913, 15389, 48047, 14403, 38990, 60733, 8461, 64771, 39408, 1095, 39088, 21865, 36722 ], [ 57182, 21269, 34363, 45184, 28913, 36712, 31846, 18702, 55322, 65131, 61262, 18378, 980, 14273, 40016, 5825 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 39162, 887, 41162, 38817, 41457, 598, 38782, 57112, 59910, 53118, 37892, 23886, 44942, 32377, 40386, 57741 ] ], [ [ 14088, 58183, 40693, 11498, 59178, 13954, 8180, 18305, 19346, 3689, 35857, 21341, 33115, 2087, 41148, 42414 ], [ 12886, 1441, 16913, 53760, 44121, 25165, 5003, 20706, 41053, 39837, 48125, 16658, 16757, 52382, 51164, 56796 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49594, 64893, 48594, 20848, 64624, 20156, 32909, 27928, 46014, 50100, 43407, 34407, 2435, 8182, 37248, 43340 ] ], [ [ 58310, 1592, 28742, 24194, 18728, 65401, 53797, 10574, 1677, 9136, 39854, 58470, 49277, 37232, 64675, 52972 ], [ 4706, 27191, 63024, 64286, 23572, 3597, 33207, 59242, 1288, 43692, 17976, 29666, 19434, 33031, 31811, 24222 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 29992, 59478, 50840, 38693, 63335, 29799, 47633, 426, 64291, 47237, 19989, 34117, 23751, 42351, 35771, 48515 ] ], [ [ 63996, 20257, 30254, 8091, 24616, 17271, 40242, 6078, 10800, 6342, 26258, 12386, 16536, 42513, 6271, 10372 ], [ 43820, 62675, 30346, 15521, 11722, 49993, 2282, 34059, 10775, 27843, 64776, 40791, 24381, 26591, 17000, 45568 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 58472, 40357, 40041, 10399, 16041, 21611, 58355, 19218, 23469, 45222, 44902, 14629, 64540, 56237, 21298, 40009 ] ], [ [ 55834, 42483, 17217, 64552, 59262, 60017, 15302, 52313, 54062, 60480, 5043, 17519, 5069, 14258, 28402, 7385 ], [ 56272, 52576, 19036, 3864, 29679, 28982, 63116, 46097, 52952, 24087, 9807, 38775, 52063, 37359, 27371, 64098 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42832, 23116, 56743, 48105, 59536, 61997, 50875, 53022, 53095, 35208, 48043, 2516, 4268, 6665, 40152, 28278 ] ], [ [ 18968, 38818, 33032, 33581, 52420, 33776, 60542, 38157, 23372, 64251, 32920, 26186, 3158, 45905, 1266, 10077 ], [ 47400, 1720, 11866, 50174, 14210, 41884, 7953, 42652, 25562, 39752, 57005, 42541, 28348, 55858, 25895, 55261 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 20184, 426, 14275, 55361, 9014, 36892, 54317, 21931, 3632, 19042, 44851, 62146, 62605, 16010, 15513, 52732 ] ], [ [ 20356, 12599, 11901, 44476, 1927, 27434, 64567, 60255, 30030, 42549, 43998, 6410, 46906, 61361, 27282, 15419 ], [ 45608, 28052, 24633, 61100, 33255, 15130, 34678, 1372, 10900, 47429, 59776, 45346, 51975, 40512, 18800, 37485 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42312, 29149, 20322, 64207, 54182, 41762, 47810, 7881, 55922, 16555, 8873, 57904, 17885, 24584, 52454, 12487 ] ], [ [ 24642, 23381, 7652, 19569, 23453, 28831, 34214, 11418, 58016, 18482, 40654, 42282, 15111, 27847, 30598, 48350 ], [ 6372, 38522, 17278, 43351, 64597, 46670, 114, 58610, 21207, 54227, 34230, 29174, 17607, 32575, 46039, 63986 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 53194, 19356, 43083, 41674, 6500, 11908, 18863, 16446, 26309, 57022, 44735, 24560, 58971, 18622, 7319, 10047 ] ], [ [ 51782, 21927, 31099, 51955, 25946, 60918, 5200, 58491, 10948, 40549, 63970, 42954, 9762, 52051, 23329, 12711 ], [ 55184, 9925, 48392, 21424, 22627, 12739, 30046, 5446, 42641, 12280, 2074, 34917, 38959, 61700, 28284, 30464 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 55314, 24572, 30584, 20886, 47283, 59790, 11104, 50050, 33766, 53599, 58295, 10698, 18752, 40595, 49531, 44526 ] ], [ [ 8558, 2401, 20214, 37617, 25582, 29537, 51079, 3668, 19266, 18377, 47313, 37246, 14197, 10393, 56760, 53375 ], [ 36726, 48832, 54877, 41119, 40432, 52865, 31546, 22680, 55227, 51320, 4927, 29937, 57113, 39160, 23945, 57338 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 15050, 56256, 11488, 5386, 23917, 5512, 39822, 21825, 14586, 40417, 37016, 32519, 52869, 17473, 58245, 5307 ] ], [ [ 10896, 14177, 23010, 3602, 47655, 17252, 49326, 26946, 42105, 10526, 5515, 63723, 54447, 26786, 46387, 42106 ], [ 6444, 56627, 43803, 492, 9136, 17144, 1579, 60040, 11581, 10752, 17784, 14413, 12013, 17454, 60745, 13259 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 25008, 22624, 38598, 62937, 25506, 61215, 30483, 43651, 12358, 54985, 24565, 32918, 3951, 38687, 58254, 43249 ] ], [ [ 26784, 16872, 37263, 4600, 36883, 42798, 12459, 44527, 24992, 34816, 56303, 23502, 47964, 51298, 63830, 29440 ], [ 24620, 33473, 41773, 22568, 40484, 58271, 52336, 19977, 16154, 4369, 1813, 42044, 57409, 41829, 16650, 37229 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 55136, 16549, 18430, 26236, 18861, 49554, 11007, 15169, 63910, 62016, 17602, 14770, 61440, 8427, 20974, 23067 ] ], [ [ 16414, 20993, 37974, 10331, 43658, 61010, 2776, 36101, 46541, 11946, 43576, 34743, 11255, 1275, 33995, 54333 ], [ 61216, 56921, 11172, 28307, 60462, 39490, 11732, 18164, 10072, 6187, 33679, 26941, 54430, 46654, 64965, 856 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8736, 920, 9802, 58823, 54695, 57112, 58013, 27221, 3214, 15584, 1703, 15514, 29292, 16203, 22220, 1114 ] ], [ [ 24206, 20320, 57851, 27248, 21791, 2383, 38324, 13875, 33222, 6145, 9478, 42023, 9396, 34468, 19459, 33452 ], [ 14436, 55262, 18528, 61447, 43124, 21759, 12517, 65347, 64375, 1825, 45823, 27399, 58852, 64560, 27673, 33187 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 58496, 20491, 21786, 33413, 59395, 46274, 59249, 18265, 2809, 26471, 3226, 15789, 13417, 7732, 5267, 9038 ] ], [ [ 50432, 44076, 33747, 31874, 63273, 42245, 46592, 34335, 62549, 12246, 39180, 26064, 27547, 3398, 63555, 43030 ], [ 32542, 29876, 45438, 20361, 23064, 25771, 57094, 34629, 27360, 61638, 51470, 13604, 59960, 21552, 50356, 21586 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 22354, 19379, 926, 9196, 27220, 59527, 225, 22840, 59906, 35900, 23413, 45646, 34923, 64781, 15477, 17994 ] ], [ [ 40918, 16348, 35265, 29764, 58407, 37057, 19199, 15527, 52718, 7668, 37925, 25471, 18454, 25788, 38398, 36036 ], [ 6520, 28277, 1539, 27230, 6767, 58252, 10451, 57586, 31417, 26947, 54246, 65216, 38782, 27819, 36475, 49683 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 57718, 56247, 25828, 12748, 55356, 40486, 55050, 23382, 4223, 39537, 19733, 33288, 8455, 26163, 51418, 48394 ] ], [ [ 8282, 41307, 17573, 9361, 25346, 25618, 21944, 57078, 56108, 47175, 2758, 195, 37752, 62936, 6389, 2600 ], [ 7126, 27802, 18149, 28906, 36246, 10830, 8530, 19238, 48049, 31759, 39849, 47876, 2129, 39665, 30372, 6268 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 29936, 64363, 29959, 15514, 1050, 63721, 46634, 22698, 51514, 24653, 42046, 27366, 11888, 25298, 10994, 26137 ] ], [ [ 38138, 16631, 55248, 43499, 13954, 5589, 13241, 49018, 62090, 43619, 62775, 44121, 48061, 13874, 29630, 14489 ], [ 45868, 31450, 15832, 51865, 62674, 39386, 20366, 47000, 44788, 40766, 13710, 42080, 30003, 1188, 45459, 19819 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 24362, 29778, 19061, 13844, 33631, 52635, 24560, 16177, 32517, 36303, 1358, 48314, 36303, 2773, 59942, 49889 ] ], [ [ 40324, 52648, 31639, 47517, 42471, 65007, 17064, 50027, 25698, 42365, 51483, 53918, 47429, 1006, 49072, 59584 ], [ 47066, 11396, 54262, 27553, 27940, 22151, 22935, 25209, 44191, 62445, 35273, 11809, 45828, 12236, 54974, 51978 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 31716, 62923, 5818, 2872, 96, 27769, 31003, 12376, 6956, 18064, 46854, 10656, 46401, 46378, 43105, 49596 ] ], [ [ 35874, 48747, 19964, 25200, 21102, 39287, 32392, 22395, 3450, 56574, 37490, 26865, 38685, 31959, 21389, 14096 ], [ 34880, 631, 10186, 58792, 57925, 18600, 43818, 51736, 11754, 21546, 14103, 2354, 57564, 46922, 33405, 64784 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 16096, 5989, 19990, 59394, 62487, 3242, 40735, 20949, 45866, 50603, 24117, 24986, 61920, 30762, 35415, 45603 ] ], [ [ 25738, 5150, 22282, 56020, 38492, 411, 26444, 35775, 65072, 56072, 54541, 55208, 4361, 41605, 17875, 32507 ], [ 36058, 53442, 6316, 21224, 54326, 41761, 22493, 31010, 63671, 40305, 37318, 34416, 48982, 4513, 6539, 4065 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 25088, 59564, 27489, 25633, 10165, 42474, 392, 7767, 53270, 40321, 38051, 54763, 39843, 61410, 60158, 17278 ] ], [ [ 12824, 11416, 37263, 4782, 36080, 62442, 47420, 58461, 60777, 18354, 48408, 5838, 23634, 57891, 9637, 23890 ], [ 45478, 24039, 48206, 48110, 33088, 33399, 43801, 50869, 44014, 27483, 37475, 13450, 52621, 20462, 58697, 65225 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 13444, 51726, 41256, 20937, 56834, 60695, 39950, 50598, 55307, 53152, 20991, 4837, 10482, 57090, 49086, 2745 ] ], [ [ 22368, 39470, 7538, 28267, 13144, 35876, 14664, 36422, 27273, 20872, 25123, 12981, 13833, 22499, 39157, 28638 ], [ 11384, 18432, 63818, 34651, 21097, 23525, 45521, 9701, 57381, 49820, 17427, 47592, 28682, 48557, 20751, 59796 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 7154, 12385, 2132, 30639, 17142, 31186, 14804, 59858, 33141, 25036, 34419, 57928, 3997, 20211, 45559, 15494 ] ], [ [ 56482, 43435, 11557, 24492, 13059, 59144, 65150, 13973, 23356, 54074, 33285, 38172, 55341, 32375, 55554, 28763 ], [ 65218, 3099, 52583, 57558, 36433, 57388, 34937, 53232, 19009, 9133, 18132, 38090, 50081, 10475, 64006, 5143 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 22560, 19366, 5134, 54818, 49736, 39678, 39401, 21381, 18771, 3990, 63132, 52455, 40270, 8086, 41575, 52033 ] ], [ [ 43624, 2672, 64331, 49141, 50560, 2255, 56698, 62625, 21661, 21328, 30499, 62755, 42292, 53538, 38413, 50990 ], [ 47052, 35122, 53335, 30104, 14308, 43417, 47848, 47853, 51179, 5455, 1910, 19468, 40943, 64594, 23812, 4184 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 5216, 36504, 1045, 4905, 51365, 8696, 40370, 43309, 56521, 29925, 15718, 50707, 22476, 53291, 29005, 4116 ] ], [ [ 50552, 15820, 42601, 6305, 48196, 30541, 50999, 60550, 51468, 17622, 9129, 47399, 13315, 2727, 51157, 46900 ], [ 32486, 26174, 63982, 10393, 44543, 55313, 26338, 52677, 3343, 27147, 31996, 43044, 43087, 32862, 35653, 49516 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 39002, 29476, 36022, 18380, 57538, 11840, 13884, 34911, 33918, 32066, 57408, 9925, 16128, 17064, 4498, 39504 ] ], [ [ 7900, 63468, 30605, 60146, 24795, 8451, 65472, 26462, 29123, 8459, 16820, 26784, 50744, 41729, 20947, 48188 ], [ 63634, 19414, 17135, 45587, 50250, 29230, 51519, 48401, 628, 62734, 40211, 6787, 54555, 56916, 7876, 27670 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 20716, 1136, 43322, 7805, 2530, 12528, 1233, 20151, 35769, 41678, 21415, 22262, 41348, 1929, 18198, 8798 ] ], [ [ 21012, 25572, 38058, 50150, 39976, 22214, 64172, 48566, 52450, 50806, 10023, 36514, 11128, 29316, 48400, 43598 ], [ 42986, 61219, 24836, 20608, 28361, 38565, 53713, 50120, 55064, 64813, 48422, 31691, 20882, 18958, 22373, 18872 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 46612, 15584, 38674, 36657, 18371, 16457, 15715, 13043, 19871, 56380, 9638, 38287, 19170, 60592, 10589, 22147 ] ], [ [ 60266, 39676, 4250, 56270, 7226, 27196, 60061, 48198, 18757, 58284, 4673, 61564, 20471, 63481, 11519, 1161 ], [ 12592, 6740, 51782, 50918, 58059, 49603, 30091, 48769, 63726, 4515, 9500, 42915, 20789, 57941, 43557, 15074 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 24280, 56801, 49544, 17589, 37611, 17655, 31192, 46392, 37532, 22386, 3527, 54442, 37680, 49081, 7076, 11260 ] ], [ [ 18612, 40720, 2442, 64118, 31472, 28848, 33783, 21120, 11140, 41510, 24004, 47695, 51377, 3392, 38776, 24772 ], [ 45524, 2156, 16583, 29496, 2911, 30451, 45661, 12197, 22359, 60679, 41480, 20332, 520, 3765, 17646, 8954 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 18162, 44514, 453, 46371, 3288, 40270, 54028, 36887, 27826, 46531, 34930, 52848, 3711, 28321, 16198, 59424 ] ], [ [ 65532, 42558, 6404, 25942, 32561, 60299, 57613, 35143, 5783, 64083, 42881, 45738, 26559, 29419, 33120, 51213 ], [ 4990, 52531, 33960, 7766, 44903, 17259, 6060, 5807, 21184, 18841, 34651, 32371, 17333, 27610, 3869, 21805 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 26444, 23452, 40782, 18762, 56756, 24819, 6568, 57524, 31984, 21964, 12080, 38680, 23338, 59483, 39288, 64485 ] ], [ [ 1592, 3064, 33452, 38852, 36907, 63456, 43944, 2156, 26240, 18064, 9975, 63533, 50417, 19051, 39042, 14222 ], [ 46222, 47342, 16340, 7090, 2784, 30013, 10292, 36514, 37572, 65147, 28256, 47213, 7473, 3426, 5240, 4418 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 150, 22462, 40913, 26757, 38240, 12119, 52098, 55362, 36218, 29872, 7630, 54709, 44860, 9041, 59969, 50110 ] ], [ [ 43102, 1240, 29595, 51657, 3548, 49011, 2570, 65395, 7960, 20892, 50858, 33777, 64805, 41899, 54033, 9217 ], [ 58170, 14462, 24162, 47972, 21291, 949, 50280, 11250, 858, 39218, 16714, 57754, 44570, 18572, 9459, 58674 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 19754, 32565, 48473, 58120, 27034, 12393, 48943, 64566, 9079, 16617, 10806, 1779, 16714, 31579, 16375, 29685 ] ], [ [ 56808, 15021, 60044, 46068, 58802, 62067, 35821, 60863, 3249, 64268, 61739, 18433, 9960, 36355, 19751, 29334 ], [ 2504, 24635, 9929, 31821, 40178, 41428, 9787, 1218, 17459, 15478, 47874, 16913, 8716, 50871, 44257, 3764 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56142, 33016, 57371, 31673, 3865, 16092, 60208, 11705, 25033, 1466, 55684, 18500, 53680, 61426, 52077, 55302 ] ], [ [ 36562, 64155, 36418, 36831, 34503, 42233, 28874, 40192, 48929, 22508, 12386, 35928, 13581, 24027, 27275, 23200 ], [ 22702, 3452, 56608, 9745, 35167, 38715, 63576, 58251, 13023, 64738, 26584, 42482, 7735, 60525, 10108, 63776 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 21274, 7470, 48129, 36445, 7164, 19080, 22894, 5070, 52043, 52704, 46164, 65283, 36979, 17725, 41480, 49870 ] ], [ [ 59856, 64192, 17813, 38435, 11505, 9593, 52756, 5184, 11332, 20534, 25561, 46934, 15190, 42910, 35311, 3771 ], [ 32718, 2780, 33484, 2588, 29048, 29928, 397, 3888, 4519, 57164, 55096, 3495, 18680, 82, 31616, 3679 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 35540, 29875, 39635, 38116, 13963, 2439, 28695, 35206, 47607, 52947, 36139, 16322, 50162, 51174, 17981, 5576 ] ], [ [ 33554, 38118, 33147, 37298, 3758, 51461, 26787, 55597, 9608, 10777, 24929, 38689, 41237, 42293, 51270, 36514 ], [ 776, 35597, 7002, 19351, 5874, 15665, 13087, 20640, 6202, 5054, 30369, 47809, 61723, 31493, 43059, 48002 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 36758, 24317, 39085, 15562, 22269, 41029, 4657, 61090, 4400, 3500, 14250, 19282, 18055, 3478, 57995, 15581 ] ], [ [ 24362, 53852, 32188, 3703, 27946, 17698, 1668, 56772, 42694, 55238, 44361, 34669, 3729, 26426, 11293, 54813 ], [ 31486, 53108, 53972, 6629, 53470, 28891, 26915, 28134, 60652, 2508, 27187, 56439, 8811, 23926, 2450, 11692 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 21292, 16187, 55084, 35224, 63715, 32450, 12503, 48893, 20878, 5927, 55873, 11108, 53077, 43777, 1013, 42199 ] ], [ [ 5392, 60183, 56275, 24082, 61441, 43921, 16684, 44238, 7149, 11595, 56252, 26135, 18057, 19373, 28446, 37899 ], [ 52734, 46783, 11639, 8776, 20248, 23971, 45130, 4720, 21566, 55511, 11022, 56359, 65363, 36042, 45913, 50254 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 19626, 60178, 47355, 57636, 49334, 58293, 30255, 59815, 53920, 63097, 51233, 27398, 21832, 56809, 3390, 45216 ] ], [ [ 30196, 3937, 45670, 14625, 49278, 17900, 33320, 10657, 17458, 4917, 24926, 21598, 31947, 63215, 53057, 35487 ], [ 63946, 34010, 59075, 40842, 53796, 23958, 28473, 35928, 22209, 43923, 31157, 53819, 29608, 60694, 46330, 62255 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 7204, 53984, 1994, 38097, 22523, 46236, 34374, 53531, 26102, 60060, 28002, 42329, 15798, 13913, 8633, 15949 ] ], [ [ 49448, 21729, 62067, 30399, 6516, 6937, 47588, 18088, 29541, 30707, 10651, 23412, 35270, 11372, 63612, 4019 ], [ 54756, 29929, 47197, 5669, 12469, 33980, 61637, 51885, 10258, 40380, 64212, 59010, 49123, 5538, 54316, 36916 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 58932, 18819, 13721, 2738, 11689, 11592, 57770, 63962, 40437, 15674, 38, 34951, 22899, 60425, 3527, 6250 ] ], [ [ 45390, 47686, 12558, 26533, 32620, 55766, 34087, 30991, 51220, 12140, 23391, 13724, 14397, 30598, 21861, 64362 ], [ 45248, 26170, 7008, 61763, 22566, 2457, 11663, 5283, 34161, 60891, 9974, 25045, 29594, 3756, 44266, 36023 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 64384, 265, 44330, 36446, 19188, 53374, 4863, 63681, 1356, 9717, 10853, 5230, 54315, 57014, 3615, 39223 ] ], [ [ 62558, 6117, 4110, 59295, 24387, 23655, 19372, 5349, 53825, 18623, 5365, 29104, 25030, 45761, 22640, 23250 ], [ 47642, 1814, 38034, 48604, 11088, 32713, 66, 25018, 63725, 60739, 63989, 24640, 45234, 52098, 30189, 58823 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 31966, 60938, 33091, 20868, 27053, 55718, 63740, 34823, 63284, 50743, 54516, 55854, 22695, 61399, 20701, 42020 ] ], [ [ 46800, 12374, 44636, 30131, 42052, 20867, 366, 61285, 30277, 62950, 3490, 5844, 22587, 61999, 13871, 16152 ], [ 12266, 39904, 35870, 6341, 51881, 11220, 46645, 2709, 32415, 50427, 35055, 9083, 60483, 3375, 31247, 56572 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42820, 18058, 33837, 21708, 33906, 37356, 33052, 12435, 51500, 34165, 58234, 47393, 8400, 18244, 11109, 21469 ] ], [ [ 53882, 51162, 54852, 56186, 32038, 47133, 57057, 31389, 6013, 7294, 1079, 11661, 24188, 14360, 44830, 39879 ], [ 18464, 49, 63065, 51954, 9999, 25371, 32274, 7426, 49225, 31069, 61319, 31326, 7983, 21862, 2520, 57817 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49844, 26166, 17697, 20920, 32504, 22238, 62006, 39864, 4029, 19231, 25822, 52406, 64068, 21688, 2944, 39476 ] ], [ [ 33620, 6146, 37762, 1945, 42960, 55514, 35189, 62202, 41945, 27576, 13658, 53800, 22891, 63682, 57925, 1724 ], [ 49234, 34979, 38225, 38652, 30868, 3560, 16779, 49865, 18520, 4213, 52527, 51498, 28064, 56591, 39068, 48422 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 19204, 36537, 26091, 57163, 26310, 49705, 39936, 6908, 58413, 33845, 26259, 9746, 44816, 58963, 25184, 64159 ] ], [ [ 54500, 27670, 38222, 23965, 37135, 21035, 23806, 58676, 58928, 15268, 62451, 2100, 19113, 46496, 45934, 35337 ], [ 55590, 41822, 60175, 62370, 15136, 54327, 40676, 1742, 21309, 44781, 60203, 9398, 4362, 4003, 32726, 15012 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49216, 27396, 45516, 65059, 11138, 62254, 39241, 12070, 1424, 12286, 32900, 42655, 36184, 46180, 57268, 48085 ] ], [ [ 40904, 64556, 45782, 11806, 31314, 34566, 34349, 11122, 36973, 18039, 46403, 63610, 32096, 24721, 40283, 34718 ], [ 34692, 1223, 14364, 14593, 51032, 41861, 25852, 25600, 41509, 20671, 51860, 12582, 2629, 53796, 10577, 38481 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 20010, 13241, 47547, 50241, 57749, 35712, 58467, 53137, 2023, 20936, 59582, 11467, 45369, 38272, 52600, 6306 ] ], [ [ 19002, 39127, 22385, 32172, 14219, 25533, 34815, 18865, 8341, 53116, 22908, 37316, 61340, 56272, 2400, 50845 ], [ 30904, 37012, 17892, 63155, 63193, 29783, 63701, 20355, 51513, 35005, 22466, 7969, 12836, 63592, 8647, 35679 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 53892, 12022, 7480, 19644, 62853, 38634, 36549, 54803, 57819, 11235, 5670, 38838, 11375, 24298, 21646, 36392 ] ], [ [ 26514, 22135, 65441, 50628, 61589, 15075, 51722, 19860, 32414, 47421, 46702, 52912, 12452, 39305, 44521, 22801 ], [ 18678, 41365, 24431, 42423, 12475, 7168, 35538, 9686, 6950, 3506, 27191, 62469, 16029, 10775, 53827, 1594 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 15246, 33481, 39828, 62945, 35337, 30500, 30635, 1360, 55879, 13360, 20824, 55736, 45662, 36199, 6583, 9563 ] ], [ [ 39218, 53651, 29338, 43507, 48406, 19636, 63965, 45780, 39524, 1491, 41956, 7283, 32459, 26455, 1279, 4275 ], [ 19366, 44452, 28112, 9057, 44980, 43316, 26026, 55788, 58217, 52613, 59340, 39856, 49473, 63772, 64160, 37815 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 37928, 15723, 4481, 65144, 52430, 48928, 28581, 6708, 61210, 3857, 47495, 50135, 55537, 48719, 63990, 50298 ] ], [ [ 64772, 15496, 53260, 21001, 20305, 6406, 50124, 57019, 50560, 48179, 62457, 13847, 50909, 59614, 23963, 7033 ], [ 2642, 20926, 44375, 31056, 28936, 1947, 36757, 44795, 14411, 53178, 10835, 7814, 20672, 26460, 63003, 60551 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 40058, 56575, 52932, 32250, 32063, 22583, 14214, 33720, 23678, 55139, 43582, 35795, 42757, 14578, 41447, 16320 ] ], [ [ 52184, 28869, 12689, 37648, 51213, 61392, 59490, 33391, 27107, 37181, 12671, 9953, 15413, 12106, 50347, 56986 ], [ 7064, 58805, 49963, 10510, 53424, 58995, 25679, 48370, 58596, 39649, 13138, 48431, 972, 35566, 250, 53343 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 10824, 48855, 28126, 16856, 48365, 59965, 24610, 20018, 3481, 33183, 3194, 24247, 44732, 1676, 12658, 19476 ] ], [ [ 56310, 8717, 46397, 29972, 61489, 57985, 14265, 43426, 4484, 1946, 21429, 30857, 12457, 41255, 20209, 11868 ], [ 120, 64340, 56397, 6091, 16437, 47103, 65164, 58442, 39246, 43086, 21620, 23645, 41878, 21778, 12598, 56343 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 16524, 11918, 15444, 4725, 63923, 29368, 36484, 57543, 39736, 47890, 48063, 62680, 46120, 49597, 36733, 31272 ] ], [ [ 9422, 31727, 62086, 30479, 23784, 34685, 11576, 45039, 36082, 11890, 46827, 19285, 61806, 35406, 39438, 19564 ], [ 59922, 49798, 20433, 16055, 23720, 26253, 9601, 50669, 1356, 55481, 28886, 29630, 59522, 58785, 28958, 42709 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56866, 39951, 43959, 20789, 15838, 33745, 22636, 5604, 52921, 868, 41198, 64540, 11645, 18242, 33665, 62775 ] ], [ [ 32402, 10064, 55154, 54796, 38505, 13697, 38020, 35637, 43628, 34402, 7278, 62229, 45932, 26111, 41499, 22939 ], [ 43490, 34917, 20676, 48122, 28219, 17503, 51713, 54423, 63197, 16333, 58687, 26519, 35883, 3942, 39733, 2037 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 50312, 60425, 5575, 41043, 48164, 56341, 62651, 45348, 50756, 41110, 3241, 56109, 59548, 29825, 45510, 26067 ] ], [ [ 23006, 55335, 23259, 24081, 62338, 65336, 60700, 16382, 21604, 32575, 33233, 61421, 50533, 64971, 32993, 37325 ], [ 56288, 10274, 65510, 40289, 5185, 15149, 8742, 61919, 33076, 17897, 4078, 35736, 16294, 63471, 6467, 17393 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 3192, 1405, 12736, 58011, 11229, 7264, 35686, 58730, 9040, 17195, 61786, 48853, 40942, 35412, 31256, 1037 ] ], [ [ 62446, 41216, 56912, 46784, 58113, 15500, 12621, 45266, 52568, 4333, 31306, 33007, 6569, 62258, 13272, 1676 ], [ 32184, 65359, 55344, 15122, 7225, 63750, 13388, 28981, 5813, 26516, 61151, 56849, 7588, 37768, 43317, 36914 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56146, 11026, 50398, 22932, 48592, 5425, 32408, 9520, 61575, 60659, 28226, 20690, 64910, 6547, 56592, 7090 ] ], [ [ 49268, 61617, 28579, 37644, 2729, 61298, 48732, 13669, 27303, 11342, 8639, 59427, 38703, 16071, 6088, 40620 ], [ 61288, 58657, 52288, 56350, 48598, 31383, 30076, 31366, 23077, 31854, 20965, 6972, 33371, 1946, 41312, 33817 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 44866, 48304, 28300, 32283, 7762, 31944, 5571, 16543, 6702, 44953, 5323, 36863, 31834, 48345, 38482, 49481 ] ], [ [ 34966, 43942, 58255, 18746, 65272, 59188, 45674, 16638, 29734, 19543, 54518, 52889, 31581, 26415, 23254, 20196 ], [ 33372, 48563, 9557, 27382, 42131, 50690, 23677, 11185, 65371, 22267, 504, 36929, 46790, 20396, 43006, 28737 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 17030, 16888, 41629, 2330, 44604, 20033, 355, 30500, 60158, 40376, 54020, 14913, 1663, 11398, 36387, 50497 ] ], [ [ 64200, 11419, 9172, 11367, 25482, 1900, 18470, 49743, 53763, 8275, 60712, 29029, 43335, 5654, 48146, 45864 ], [ 49190, 64250, 13261, 51011, 30359, 37787, 29329, 50667, 26392, 4428, 62704, 29669, 23730, 49691, 16166, 43967 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23966, 24384, 62251, 911, 56187, 62573, 52348, 18175, 26352, 29510, 17364, 21015, 27988, 56485, 64457, 53987 ] ], [ [ 42784, 31888, 28611, 42263, 26528, 6002, 32490, 5219, 56963, 29121, 16685, 31282, 53747, 55339, 42538, 46662 ], [ 52396, 31851, 47353, 2187, 53340, 36733, 60019, 55840, 51846, 50944, 29613, 59725, 43496, 8154, 1539, 9437 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 35626, 58547, 41751, 46368, 45467, 7928, 13945, 55261, 26420, 58412, 31064, 35723, 8429, 20812, 19275, 16926 ] ], [ [ 45724, 2657, 10904, 55205, 43502, 26028, 2763, 57886, 56510, 22917, 39951, 22438, 42292, 60295, 7803, 15372 ], [ 48412, 25476, 46349, 61600, 40523, 50835, 39476, 65332, 6515, 28207, 17748, 37420, 30257, 61748, 9906, 62696 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 55630, 41533, 57922, 27899, 28871, 28138, 37046, 64311, 15854, 21323, 50617, 41877, 41353, 46961, 35904, 14920 ] ], [ [ 26378, 28048, 19468, 49356, 48614, 24231, 35925, 22733, 4507, 48034, 45387, 1091, 21820, 9197, 52734, 21425 ], [ 64242, 62837, 44801, 29240, 64600, 10500, 31284, 41575, 20488, 53358, 29483, 47317, 12516, 44438, 57157, 56486 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 62304, 42453, 60550, 31698, 19119, 12998, 21626, 12565, 58221, 14638, 24260, 48034, 59464, 34238, 27108, 52454 ] ], [ [ 33688, 14274, 16800, 18600, 24412, 51391, 9466, 23008, 48428, 33270, 34942, 51942, 55300, 24669, 29883, 2983 ], [ 4878, 49041, 31351, 48179, 2025, 2617, 32221, 4102, 61082, 29511, 5403, 64346, 19917, 53968, 314, 54458 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 11872, 60232, 8640, 53242, 50458, 56536, 2586, 41573, 10676, 62267, 23048, 8155, 21596, 58316, 16782, 22338 ] ], [ [ 54600, 19001, 8203, 17258, 1952, 24194, 31817, 18377, 31985, 47415, 61219, 18027, 35909, 30277, 5343, 28267 ], [ 51522, 10698, 30284, 55863, 11658, 14972, 62040, 46083, 47541, 4890, 56877, 27487, 47773, 51538, 45917, 12531 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 10132, 51292, 12475, 7418, 41523, 20551, 34414, 31238, 46322, 56930, 15886, 56008, 62024, 4148, 58779, 57683 ] ], [ [ 28492, 27646, 25100, 18647, 61297, 34225, 49273, 9453, 2225, 30355, 63374, 36408, 65259, 16512, 37039, 18788 ], [ 34890, 49626, 17560, 21308, 56142, 47435, 24338, 2253, 61188, 59253, 15025, 2021, 51962, 31589, 4210, 32612 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 12728, 554, 15557, 42320, 38206, 63810, 38143, 14973, 59400, 5528, 48817, 56282, 5376, 3274, 34245, 8194 ] ], [ [ 26592, 31721, 38619, 45148, 53298, 12633, 56464, 38802, 2476, 12600, 32271, 24022, 1744, 8118, 61674, 1883 ], [ 40814, 57031, 16747, 13602, 26388, 15991, 33168, 55728, 19589, 39882, 1087, 54873, 6058, 35011, 14132, 50106 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 2994, 23561, 34625, 42515, 28372, 33122, 8183, 41413, 29854, 40901, 61435, 639, 48837, 50335, 14191, 3255 ] ], [ [ 46668, 51305, 38273, 13204, 13458, 15593, 3460, 23101, 39991, 40994, 26026, 46286, 11714, 26470, 65282, 4212 ], [ 45090, 59093, 61383, 42929, 55827, 46176, 49536, 32066, 28688, 1175, 55885, 35107, 3778, 52072, 57566, 10651 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 18924, 26298, 27893, 51058, 57660, 26826, 45243, 57459, 5401, 60745, 15683, 5142, 30042, 9247, 45301, 62157 ] ], [ [ 65056, 10818, 11062, 13870, 23652, 52363, 27265, 2069, 10145, 22504, 30949, 62094, 6488, 16914, 50350, 48739 ], [ 38520, 42908, 32970, 686, 45445, 1148, 49500, 9819, 47809, 42477, 28761, 35973, 59532, 44167, 10346, 13721 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 33768, 21140, 49714, 19739, 9014, 6966, 44675, 39896, 63671, 59879, 37833, 30298, 5491, 35731, 50790, 29233 ] ], [ [ 19070, 44295, 29960, 20417, 45732, 28611, 15942, 52913, 43858, 2407, 18516, 27755, 7639, 30321, 65483, 45533 ], [ 34870, 65018, 14064, 1903, 34932, 53328, 14485, 18506, 1838, 38756, 30225, 6657, 19751, 9614, 39834, 8732 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 9174, 459, 61827, 7698, 63763, 58894, 7839, 9401, 23109, 15082, 22041, 38550, 41152, 41531, 60582, 20597 ] ], [ [ 22462, 3773, 44047, 30302, 29091, 11181, 17680, 60418, 54617, 43357, 52292, 19493, 15539, 26971, 21767, 27430 ], [ 27440, 42964, 10577, 63971, 30074, 33322, 54831, 39197, 32811, 26581, 5406, 51869, 60413, 38828, 2357, 16255 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 17208, 26270, 32814, 48765, 2371, 6224, 2086, 11305, 27046, 7814, 6546, 53175, 40740, 53337, 46884, 65202 ] ], [ [ 3362, 2612, 26552, 10582, 62240, 24345, 33762, 29506, 43091, 709, 13081, 25780, 50109, 35975, 30423, 42477 ], [ 14644, 30263, 7437, 62732, 27994, 34883, 5529, 21172, 10767, 45235, 42559, 9907, 51123, 62789, 24466, 38811 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 29816, 64506, 44358, 26708, 20466, 1482, 2857, 12475, 13741, 825, 49419, 4416, 20562, 35486, 56024, 36413 ] ], [ [ 47404, 42050, 15279, 3650, 4034, 60146, 44931, 5018, 45079, 35261, 58135, 52082, 30222, 16766, 1123, 29064 ], [ 30818, 34360, 56663, 61087, 28756, 48997, 11505, 14816, 58125, 64905, 37774, 17231, 54748, 56923, 39161, 64485 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 3382, 56176, 43370, 21057, 31148, 28486, 64799, 44197, 30498, 3280, 27394, 31308, 52096, 49639, 27585, 24771 ] ], [ [ 15316, 4453, 45791, 25586, 4756, 23663, 30622, 46785, 43992, 31320, 38173, 56691, 58343, 62063, 7427, 63195 ], [ 1710, 11342, 6994, 23228, 42330, 10174, 60349, 5345, 26647, 1830, 53507, 2840, 61919, 23558, 7078, 9401 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 25304, 53432, 49780, 29573, 23422, 41435, 8477, 19426, 44134, 14118, 33147, 18669, 44064, 19425, 26820, 8312 ] ], [ [ 26290, 4992, 18446, 34700, 33841, 24756, 50669, 46828, 1477, 24371, 32047, 46656, 7474, 29752, 61723, 48393 ], [ 27092, 48258, 63629, 13876, 21877, 21784, 15448, 44921, 32806, 39851, 149, 52209, 49626, 63135, 41519, 17908 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 22584, 41832, 44500, 51065, 57235, 12321, 43427, 38834, 64816, 13310, 45964, 33133, 33275, 13353, 32762, 17842 ] ], [ [ 56364, 51973, 15425, 9160, 11268, 39224, 26851, 63829, 13011, 49095, 54522, 23835, 56542, 16912, 17088, 62937 ], [ 43802, 20021, 50311, 38757, 9319, 18340, 16301, 62350, 12747, 30487, 58053, 36823, 49468, 22221, 49480, 59756 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49668, 39315, 22668, 5505, 54755, 34179, 35352, 26700, 17208, 50679, 54143, 41238, 51638, 34438, 14651, 26741 ] ], [ [ 44564, 34911, 42363, 57232, 45584, 24203, 5924, 41923, 4052, 24978, 6426, 44378, 48502, 7384, 57565, 27922 ], [ 48526, 36720, 41730, 19748, 26458, 56004, 8439, 33039, 31323, 9221, 33639, 10763, 59264, 29949, 40523, 3420 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 43076, 55885, 28633, 50646, 49021, 24160, 11995, 47496, 9817, 32671, 26020, 27169, 46545, 42837, 51901, 12817 ] ], [ [ 54676, 8031, 64418, 57835, 13319, 8440, 33197, 1584, 41261, 38273, 53046, 2833, 49583, 39467, 21868, 5825 ], [ 20278, 24305, 13684, 10259, 4567, 47311, 37854, 1459, 46520, 59763, 44523, 7705, 3977, 5515, 36053, 9187 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 43048, 38310, 50723, 3612, 6111, 25195, 35939, 12040, 41597, 16359, 50512, 37397, 47101, 8341, 53724, 10680 ] ], [ [ 48674, 46723, 32843, 17259, 24100, 39407, 43163, 9724, 15245, 37891, 15915, 38375, 39798, 5580, 13019, 26342 ], [ 61572, 4938, 54950, 37882, 1862, 32502, 27996, 63070, 59302, 61512, 59910, 37119, 52417, 6476, 15516, 21326 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56194, 34816, 19935, 9528, 56486, 15275, 20548, 41449, 38482, 36475, 25336, 50389, 52675, 20236, 61311, 64077 ] ], [ [ 20522, 2019, 22805, 35826, 62081, 54259, 39276, 28812, 60519, 61132, 22942, 22853, 18301, 26997, 9461, 23955 ], [ 20330, 48667, 12395, 30159, 58182, 40315, 52732, 23768, 46111, 58056, 60452, 10266, 12805, 64855, 23100, 4248 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 59508, 21446, 58581, 43618, 7433, 60014, 61575, 16974, 16498, 32487, 48863, 29615, 1013, 13222, 24618, 39416 ] ], [ [ 56208, 12535, 49880, 57754, 52947, 58658, 7808, 58585, 43807, 29120, 34330, 9998, 23449, 30458, 45209, 48136 ], [ 37674, 34258, 27163, 42589, 53742, 13265, 27325, 29494, 14903, 46148, 43500, 56954, 16515, 57303, 47656, 12450 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 41898, 33230, 47001, 30887, 43137, 16625, 13801, 33175, 49844, 27096, 52473, 20388, 14460, 35168, 15079, 1494 ] ], [ [ 60338, 17991, 15896, 39199, 52236, 11505, 59360, 57487, 32257, 47205, 53260, 51451, 37049, 13208, 15201, 10200 ], [ 48800, 14962, 19280, 43892, 51201, 50579, 51172, 27656, 51892, 60398, 55182, 9806, 7622, 29154, 35247, 10912 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42840, 43365, 65340, 27838, 57975, 5790, 63347, 38780, 48029, 25164, 39066, 54556, 43818, 37389, 7217, 22978 ] ], [ [ 2968, 57060, 43227, 33530, 1652, 27986, 21000, 65418, 50530, 17514, 20751, 8076, 46702, 11462, 54145, 18038 ], [ 10740, 11892, 42880, 36634, 48630, 36566, 49599, 10901, 41195, 17791, 20640, 1300, 22449, 29772, 58039, 32137 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42096, 1948, 19810, 46779, 29628, 43763, 51782, 20463, 40381, 1213, 64615, 53652, 53853, 28948, 49762, 36033 ] ], [ [ 60916, 44455, 2487, 18699, 48974, 58826, 58913, 45030, 26581, 52979, 31870, 31635, 4186, 3602, 1644, 62737 ], [ 64706, 41862, 41787, 2622, 3067, 14071, 23473, 28890, 183, 55975, 36744, 43140, 7356, 47161, 62309, 57421 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 48156, 54716, 43339, 26443, 18101, 53206, 36400, 11420, 17663, 16165, 30992, 39784, 45835, 21308, 24809, 48077 ] ], [ [ 38900, 59489, 53866, 18817, 54565, 6235, 13767, 20818, 18084, 6317, 51469, 6239, 15249, 49332, 22880, 59021 ], [ 6896, 21369, 9326, 22446, 22745, 34057, 41544, 46547, 19938, 33297, 34534, 59708, 177, 49689, 63319, 64102 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1368, 37565, 15740, 5497, 34253, 27136, 52579, 20503, 59422, 63811, 12109, 20891, 18433, 12391, 27971, 24382 ] ], [ [ 58108, 905, 8919, 40853, 46282, 40589, 38765, 36351, 22817, 61191, 11523, 63582, 17988, 34279, 50560, 53385 ], [ 55416, 34387, 34340, 21033, 64001, 49952, 38222, 44491, 13435, 12436, 31415, 38650, 24641, 52011, 47449, 53450 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 32256, 57142, 2905, 13971, 17574, 25853, 41890, 51930, 23790, 42503, 54365, 3763, 17338, 44515, 41481, 47554 ] ], [ [ 23490, 30875, 6947, 34874, 24468, 39690, 11160, 21358, 62993, 50943, 17021, 716, 16512, 7693, 45051, 1889 ], [ 59056, 33071, 41328, 14638, 31748, 11460, 17799, 23370, 38761, 28076, 4140, 31810, 5435, 24688, 4366, 14957 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 38658, 6985, 27547, 4009, 23822, 64189, 48871, 46012, 28058, 34017, 49733, 20538, 22634, 60490, 39857, 56684 ] ], [ [ 56358, 15222, 63996, 16284, 2953, 21346, 33711, 11777, 27324, 966, 29965, 3370, 38118, 53076, 58803, 9622 ], [ 33534, 29873, 35377, 28583, 48470, 62605, 38112, 22865, 11486, 62554, 27524, 34890, 49299, 39436, 42924, 26784 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 18206, 53203, 28989, 3594, 30717, 41499, 31337, 54582, 53366, 12795, 13291, 19413, 58135, 65315, 37801, 34126 ] ], [ [ 3346, 51158, 18211, 44304, 2247, 34652, 37767, 6296, 54200, 44188, 15706, 30149, 18936, 5170, 20940, 42134 ], [ 40018, 61533, 1079, 13552, 10857, 42480, 51812, 11230, 5467, 53776, 1707, 50397, 46768, 49499, 57111, 33423 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 64986, 34791, 58199, 19309, 40719, 59185, 20120, 50841, 37132, 37892, 13338, 36662, 59652, 47500, 20036, 28716 ] ], [ [ 22954, 48957, 12636, 11332, 37938, 24580, 3972, 173, 36790, 7625, 23756, 18850, 20494, 2193, 17306, 34133 ], [ 37706, 57173, 4763, 60441, 34195, 40514, 3942, 44957, 44953, 35110, 25020, 65533, 19406, 13300, 51605, 55349 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 47718, 36816, 61481, 40699, 38690, 63253, 47976, 64598, 34874, 17964, 52183, 6979, 50776, 19666, 11286, 9158 ] ], [ [ 46084, 29358, 53337, 43178, 35606, 4451, 17331, 55812, 43020, 26807, 20189, 59220, 23983, 1373, 13942, 36332 ], [ 31834, 12930, 21816, 29783, 32091, 50371, 1787, 61481, 21779, 50772, 56487, 40780, 18840, 43040, 36291, 51450 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 42646, 16294, 47289, 18198, 52209, 42766, 28915, 24998, 42175, 58237, 20664, 62750, 33075, 20741, 30138, 56473 ] ], [ [ 18292, 59805, 54565, 18403, 57208, 42885, 24197, 19578, 31071, 62234, 45730, 41000, 56732, 16432, 14548, 43197 ], [ 48124, 30933, 7533, 39380, 43700, 17476, 7034, 65240, 39348, 52409, 50407, 15059, 33651, 23617, 55104, 21805 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 56292, 35238, 24411, 18371, 52398, 10490, 31028, 46526, 48921, 63236, 10300, 34795, 53084, 4221, 13473, 27842 ] ], [ [ 57638, 24443, 56549, 32063, 42913, 17446, 8994, 36800, 61821, 4533, 31559, 54297, 28533, 42270, 65063, 3784 ], [ 4544, 43837, 11503, 45549, 31805, 33074, 65131, 7416, 31548, 25024, 47327, 30325, 43647, 37848, 15791, 48616 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 16662, 3669, 37290, 32879, 15831, 4552, 42805, 8390, 22308, 35530, 18577, 54116, 3271, 38669, 14279, 38062 ] ], [ [ 35282, 30346, 56172, 2637, 29275, 22941, 25454, 6243, 58236, 58106, 41435, 62605, 55205, 45590, 46032, 47423 ], [ 24782, 27657, 30453, 9239, 14976, 51094, 11924, 27639, 46575, 38405, 54255, 20859, 1498, 26436, 1980, 20001 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 8142, 5832, 53662, 49060, 47205, 23460, 14581, 54466, 16159, 7557, 29261, 3044, 37361, 13977, 31472, 53603 ] ], [ [ 29654, 8559, 57017, 32034, 38891, 4145, 60067, 50913, 60215, 17295, 56920, 25665, 15886, 39175, 61757, 40671 ], [ 44536, 49731, 1559, 58594, 34473, 6349, 30935, 29896, 53862, 6153, 61861, 42698, 37474, 52161, 60160, 11842 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 12672, 920, 51599, 3932, 52712, 42451, 31752, 9967, 59339, 43745, 22828, 41506, 1176, 6877, 32884, 380 ] ], [ [ 13416, 19492, 14543, 27877, 266, 8748, 9227, 44344, 32292, 61465, 63852, 62513, 4405, 18166, 14899, 55587 ], [ 2848, 2209, 44313, 21561, 16106, 2339, 58038, 48338, 64589, 61596, 5651, 16162, 53945, 34321, 21904, 15566 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 21938, 46122, 4544, 50970, 16139, 26657, 43367, 50501, 19802, 9010, 31953, 15260, 44346, 31204, 13440, 20808 ] ], [ [ 59930, 64959, 15434, 60558, 32297, 30583, 39186, 34007, 22009, 61823, 46219, 38354, 36259, 35568, 60327, 19330 ], [ 10284, 15092, 57078, 57354, 17473, 63523, 831, 40804, 21955, 50764, 38081, 9244, 24413, 17810, 22422, 5175 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 62124, 34030, 9317, 60032, 6930, 30364, 38783, 37742, 1868, 48106, 35144, 49337, 14232, 24194, 4708, 20231 ] ], [ [ 52654, 26256, 30393, 23456, 34213, 9077, 35321, 33445, 28594, 60337, 27076, 6255, 60762, 15764, 55709, 39468 ], [ 45090, 29670, 46854, 57399, 45304, 59426, 60882, 61195, 50918, 39258, 6814, 1183, 58519, 2893, 47806, 49220 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 49850, 58802, 41633, 52431, 49719, 42218, 15379, 29292, 35311, 41157, 28745, 59096, 64905, 43884, 27024, 35759 ] ], [ [ 22190, 37270, 8031, 21691, 34927, 2697, 54962, 16961, 33386, 5358, 30378, 25904, 26383, 42553, 31825, 42057 ], [ 41762, 53624, 3857, 54133, 18032, 8411, 52049, 32914, 4180, 13940, 43398, 41943, 30728, 497, 63529, 48000 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 23596, 13344, 48207, 62529, 1687, 52500, 6989, 7582, 19675, 37709, 20907, 23527, 10583, 50048, 60779, 19369 ] ], [ [ 38412, 13567, 4908, 52001, 35082, 48773, 28851, 7838, 38878, 38575, 63280, 35144, 36160, 61703, 61477, 55344 ], [ 54302, 22419, 6114, 40423, 15531, 853, 12162, 56107, 7766, 11824, 18212, 58990, 13311, 11300, 20853, 26580 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 18424, 32658, 13284, 64273, 27151, 2919, 61935, 46954, 45308, 52807, 29784, 4411, 4360, 64745, 6044, 64717 ] ], [ [ 1560, 41433, 57693, 53748, 15390, 50842, 11049, 4883, 49272, 5848, 11543, 43422, 31177, 43863, 37156, 39314 ], [ 64342, 40097, 30118, 32073, 29536, 16960, 5060, 38154, 7801, 33540, 39316, 7835, 59404, 21535, 52207, 53952 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 63472, 53303, 37277, 32113, 43469, 25775, 43363, 65509, 35819, 30694, 20673, 38215, 43809, 50726, 37695, 25771 ] ], [ [ 35092, 41331, 34615, 31338, 7631, 11993, 26394, 29933, 61632, 13212, 57309, 48904, 53627, 55910, 51686, 2121 ], [ 56790, 21854, 2736, 8670, 23116, 54318, 14976, 37463, 61818, 11460, 44864, 51503, 914, 23269, 56508, 35316 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 40676, 28131, 41158, 22989, 56374, 49772, 19103, 54847, 13683, 10108, 23091, 20820, 31928, 57630, 31623, 64886 ] ], [ [ 8404, 31858, 37997, 21087, 21572, 61923, 45234, 17974, 44559, 59538, 40304, 31086, 44465, 43319, 49247, 33758 ], [ 21762, 50743, 10012, 27932, 20244, 42186, 35012, 17957, 64569, 58714, 10750, 26897, 29429, 19844, 40824, 38292 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 54, 44973, 58640, 48521, 34318, 29625, 2240, 19743, 44957, 11520, 28299, 1905, 38676, 36741, 34294, 61654 ] ], [ [ 54252, 22527, 45067, 56498, 20472, 4834, 14037, 27582, 17161, 41837, 36941, 47149, 59508, 17777, 35609, 27148 ], [ 17080, 796, 11437, 36355, 55212, 10648, 50707, 10498, 54453, 53223, 35788, 60547, 50997, 29852, 44471, 24453 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 62506, 15199, 43592, 64453, 32714, 36427, 1766, 33498, 65074, 53121, 32712, 2000, 28650, 59118, 1492, 54088 ] ], [ [ 33912, 22241, 26949, 23144, 47183, 10673, 13311, 12547, 52151, 9622, 59110, 38977, 47898, 22019, 45810, 13457 ], [ 27692, 26359, 25252, 14699, 47795, 54117, 63516, 43537, 56510, 22912, 62855, 58747, 46051, 14654, 48858, 2440 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 27688, 44348, 32458, 51073, 17391, 39258, 8677, 9200, 17303, 48694, 20745, 40981, 59634, 63179, 57156, 44010 ] ], [ [ 34314, 53070, 14327, 9488, 4751, 6651, 57595, 4333, 58056, 30197, 13233, 38592, 64269, 27669, 1805, 34143 ], [ 15958, 38727, 44844, 31826, 33656, 7085, 33337, 559, 18287, 10971, 57776, 39313, 47189, 15001, 17568, 53521 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 58542, 36850, 50104, 24495, 12543, 56850, 20464, 34142, 10352, 18505, 675, 29411, 57788, 21467, 49566, 4691 ] ], [ [ 57196, 31994, 45955, 61163, 20795, 10593, 14615, 57760, 22116, 27515, 57451, 56749, 55249, 5273, 16407, 4597 ], [ 19310, 42132, 43036, 36029, 26766, 2478, 59760, 61011, 33442, 60235, 26881, 64812, 5762, 57381, 33407, 16779 ], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 22462, 14292, 36457, 27576, 13510, 11771, 8181, 61157, 63411, 17637, 44111, 5076, 56109, 41280, 14207, 33235 ] ] ]; diff --git a/105_access_control_example/assets/acl.js b/105_access_control_example/assets/acl.js index 27f1750..8401956 100644 --- a/105_access_control_example/assets/acl.js +++ b/105_access_control_example/assets/acl.js @@ -83,8 +83,8 @@ function createBlindAuthInfo(username_bin, password_bin) { const zh_scalar_wasm = wasm.newArray(zh.subarray(0, wasm.FA_SCALARBYTES)); const r_inv_wasm = wasm.faScalarInverse(r_wasm); - const px_wasm = wasm.faScalarBase(zh_scalar_wasm); - const blind_auth_info = wasm.getArray(Uint8Array, wasm.faScalarMult(r_inv_wasm, px_wasm)); + const px_wasm = wasm.faBasePointMult(zh_scalar_wasm); + const blind_auth_info = wasm.getArray(Uint8Array, wasm.faPointMult(r_inv_wasm, px_wasm)); return { r, @@ -160,7 +160,7 @@ function signupInit() { return; } const blind_salt = new Uint8Array(await response.arrayBuffer()); - let salt_wasm = wasm.faScalarMult(wasm.newArray(r_and_blind_auth_info.r), wasm.newArray(blind_salt)); + let salt_wasm = wasm.faPointMult(wasm.newArray(r_and_blind_auth_info.r), wasm.newArray(blind_salt)); if (!salt_wasm) { error("#signup .error", "Unexpected response from the server (weak salt)"); enable("#signup input[type=submit]"); @@ -267,7 +267,7 @@ function loginInit() { const blind_salt = blind_salt_and_nonce.subarray(0, wasm.FA_POINTBYTES); const nonce = blind_salt_and_nonce.subarray(wasm.FA_POINTBYTES); - let salt_wasm = wasm.faScalarMult(wasm.newArray(r_and_blind_auth_info.r), wasm.newArray(blind_salt)); + let salt_wasm = wasm.faPointMult(wasm.newArray(r_and_blind_auth_info.r), wasm.newArray(blind_salt)); if (!salt_wasm) { enable("#login input[type=submit]"); error("#login .error", "Unexpected response from the server (weak blind salt)"); @@ -735,4 +735,4 @@ const loader = (function() { } hide(".loading"); login(); -})(); +})(); \ No newline at end of file diff --git a/105_access_control_example/assets/optimized.wasm b/105_access_control_example/assets/optimized.wasm index 3070c2f542148adbf5d68ad43f56b296f57ad941..b2758ed043819a89f21391b6352524bddcaa1a35 100644 GIT binary patch literal 228691 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�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 UaNIZjVrq}-J$!KO!Mzjz2OP5@h5!Hn literal 221453 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