Przeglądaj źródła

Implementation of P434

master
Henry Case 5 lat temu
rodzic
commit
ef8c14d1bb
15 zmienionych plików z 3321 dodań i 33 usunięć
  1. +40
    -6
      README.md
  2. +0
    -0
      go.mod
  3. +0
    -0
      go.sum
  4. +138
    -0
      p434/arith.go
  5. +183
    -0
      p434/consts.go
  6. +386
    -0
      p434/curve.go
  7. +702
    -0
      p434/etc/PQCkemKAT_374.rsp
  8. +192
    -0
      p434/fp.go
  9. +710
    -0
      p434/sike.go
  10. +753
    -0
      p434/sike_test.go
  11. +122
    -0
      p434/types.go
  12. +5
    -6
      p503/arith.go
  13. +0
    -6
      p503/consts.go
  14. +16
    -15
      p503/sike_test.go
  15. +74
    -0
      tools/sliding_window_strat_calc.py

+ 40
- 6
README.md Wyświetl plik

@@ -5,14 +5,48 @@ SIKE based on field p503 (Round2).

## Speed

### P503

```
> go test -run=. -bench=. -benchmem
goos: linux
goarch: amd64
pkg: github.com/henrydcase/go-sike-p503/p503
BenchmarkKeygen-4 100 10448291 ns/op 0 B/op 0 allocs/op
BenchmarkEncaps-4 100 17250470 ns/op 1344 B/op 3 allocs/op
BenchmarkDecaps-4 100 18755075 ns/op 1358 B/op 3 allocs/op
PASS
ok github.com/henrydcase/go-sike-p503/p503 12.676s
```

### P434
```
> go test -run=. -bench=. -benchmem
> go test -run=. -bench=. -benchmem
goos: linux
goarch: amd64
pkg: github.com/henrydcase/go-sike-p503
BenchmarkKeygen-4 100 12235566 ns/op 0 B/op 0 allocs/op
BenchmarkEncaps-4 100 20430183 ns/op 0 B/op 0 allocs/op
BenchmarkDecaps-4 50 23946060 ns/op 2 B/op 0 allocs/op
pkg: github.com/henrydcase/go-sike-p503/p434
BenchmarkKeygen-4 200 7298860 ns/op 0 B/op 0 allocs/op
BenchmarkEncaps-4 100 12008715 ns/op 1344 B/op 3 allocs/op
BenchmarkDecaps-4 100 12950648 ns/op 1358 B/op 3 allocs/op
PASS
ok github.com/henrydcase/go-sike-p503 13.725s
ok github.com/henrydcase/go-sike-p503/p434 9.880s
```


### p434 vs p503
```
benchmark old ns/op new ns/op delta
BenchmarkKeygen-4 10552847 7471517 -29.20%
BenchmarkEncaps-4 17375489 11897130 -31.53%
BenchmarkDecaps-4 18927683 12991795 -31.36%

benchmark old allocs new allocs delta
BenchmarkKeygen-4 0 0 +0.00%
BenchmarkEncaps-4 3 3 +0.00%
BenchmarkDecaps-4 3 3 +0.00%

benchmark old bytes new bytes delta
BenchmarkKeygen-4 0 0 +0.00%
BenchmarkEncaps-4 1344 1344 +0.00%
BenchmarkDecaps-4 1358 1358 +0.00%
```

p503/go.mod → go.mod Wyświetl plik


p503/go.sum → go.sum Wyświetl plik


+ 138
- 0
p434/arith.go Wyświetl plik

@@ -0,0 +1,138 @@
package sike

// Set dest = x^((p-3)/4). If x is square, this is 1/sqrt(x).
// Uses variation of sliding-window algorithm from with window size
// of 5 and least to most significant bit sliding (left-to-right)
// See HAC 14.85 for general description.
//
// Allowed to overlap x with dest.
// All values in Montgomery domains
// Set dest = x^(2^k), for k >= 1, by repeated squarings.
func p34(dest, x *Fp) {
var lookup [16]Fp

// This performs sum(powStrategy) + 1 squarings and len(lookup) + len(mulStrategy)
// multiplications.
powStrategy := []uint8{3, 10, 7, 5, 6, 5, 3, 8, 4, 7, 5, 6, 4, 5, 9, 6, 3, 11, 5, 5, 2, 8, 4, 7, 7, 8, 5, 6, 4, 8, 5, 2, 10, 6, 5, 4, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1}
mulStrategy := []uint8{2, 15, 9, 8, 14, 12, 2, 8, 5, 15, 8, 15, 6, 6, 3, 2, 0, 10, 9, 13, 1, 12, 3, 7, 1, 10, 8, 11, 2, 15, 14, 1, 11, 12, 14, 3, 11, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0}
initialMul := uint8(8)

// Precompute lookup table of odd multiples of x for window
// size k=5.
var xx Fp
fpMulRdc(&xx, x, x)
lookup[0] = *x
for i := 1; i < 16; i++ {
fpMulRdc(&lookup[i], &lookup[i-1], &xx)
}

// Now lookup = {x, x^3, x^5, ... }
// so that lookup[i] = x^{2*i + 1}
// so that lookup[k/2] = x^k, for odd k
*dest = lookup[initialMul]
for i := uint8(0); i < uint8(len(powStrategy)); i++ {
fpMulRdc(dest, dest, dest)
for j := uint8(1); j < powStrategy[i]; j++ {
fpMulRdc(dest, dest, dest)
}
fpMulRdc(dest, dest, &lookup[mulStrategy[i]])
}
}

func add(dest, lhs, rhs *Fp2) {
fpAddRdc(&dest.A, &lhs.A, &rhs.A)
fpAddRdc(&dest.B, &lhs.B, &rhs.B)
}

func sub(dest, lhs, rhs *Fp2) {
fpSubRdc(&dest.A, &lhs.A, &rhs.A)
fpSubRdc(&dest.B, &lhs.B, &rhs.B)
}

func mul(dest, lhs, rhs *Fp2) {
// Let (a,b,c,d) = (lhs.a,lhs.b,rhs.a,rhs.b).
a := &lhs.A
b := &lhs.B
c := &rhs.A
d := &rhs.B

// We want to compute
//
// (a + bi)*(c + di) = (a*c - b*d) + (a*d + b*c)i
//
// Use Karatsuba's trick: note that
//
// (b - a)*(c - d) = (b*c + a*d) - a*c - b*d
//
// so (a*d + b*c) = (b-a)*(c-d) + a*c + b*d.

var ac, bd FpX2
fpMul(&ac, a, c) // = a*c*R*R
fpMul(&bd, b, d) // = b*d*R*R

var b_minus_a, c_minus_d Fp
fpSubRdc(&b_minus_a, b, a) // = (b-a)*R
fpSubRdc(&c_minus_d, c, d) // = (c-d)*R

var ad_plus_bc FpX2
fpMul(&ad_plus_bc, &b_minus_a, &c_minus_d) // = (b-a)*(c-d)*R*R
fp2Add(&ad_plus_bc, &ad_plus_bc, &ac) // = ((b-a)*(c-d) + a*c)*R*R
fp2Add(&ad_plus_bc, &ad_plus_bc, &bd) // = ((b-a)*(c-d) + a*c + b*d)*R*R

fpMontRdc(&dest.B, &ad_plus_bc) // = (a*d + b*c)*R mod p

var ac_minus_bd FpX2
fp2Sub(&ac_minus_bd, &ac, &bd) // = (a*c - b*d)*R*R
fpMontRdc(&dest.A, &ac_minus_bd) // = (a*c - b*d)*R mod p
}

func inv(dest, x *Fp2) {
var e1, e2 FpX2
var f1, f2 Fp

fpMul(&e1, &x.A, &x.A) // = a*a*R*R
fpMul(&e2, &x.B, &x.B) // = b*b*R*R
fp2Add(&e1, &e1, &e2) // = (a^2 + b^2)*R*R
fpMontRdc(&f1, &e1) // = (a^2 + b^2)*R mod p
// Now f1 = a^2 + b^2

fpMulRdc(&f2, &f1, &f1)
p34(&f2, &f2)
fpMulRdc(&f2, &f2, &f2)
fpMulRdc(&f2, &f2, &f1)

fpMul(&e1, &x.A, &f2)
fpMontRdc(&dest.A, &e1)

fpSubRdc(&f1, &Fp{}, &x.B)
fpMul(&e1, &f1, &f2)
fpMontRdc(&dest.B, &e1)
}

func sqr(dest, x *Fp2) {
var a2, aPlusB, aMinusB Fp
var a2MinB2, ab2 FpX2

a := &x.A
b := &x.B

// (a + bi)*(a + bi) = (a^2 - b^2) + 2abi.
fpAddRdc(&a2, a, a) // = a*R + a*R = 2*a*R
fpAddRdc(&aPlusB, a, b) // = a*R + b*R = (a+b)*R
fpSubRdc(&aMinusB, a, b) // = a*R - b*R = (a-b)*R
fpMul(&a2MinB2, &aPlusB, &aMinusB) // = (a+b)*(a-b)*R*R = (a^2 - b^2)*R*R
fpMul(&ab2, &a2, b) // = 2*a*b*R*R
fpMontRdc(&dest.A, &a2MinB2) // = (a^2 - b^2)*R mod p
fpMontRdc(&dest.B, &ab2) // = 2*a*b*R mod p
}

// In case choice == 1, performs following swap in constant time:
// xPx <-> xQx
// xPz <-> xQz
// Otherwise returns xPx, xPz, xQx, xQz unchanged
func condSwap(xPx, xPz, xQx, xQz *Fp2, choice uint8) {
fpSwapCond(&xPx.A, &xQx.A, choice)
fpSwapCond(&xPx.B, &xQx.B, choice)
fpSwapCond(&xPz.A, &xQz.A, choice)
fpSwapCond(&xPz.B, &xQz.B, choice)
}

+ 183
- 0
p434/consts.go Wyświetl plik

@@ -0,0 +1,183 @@
package sike

const (
// Number of uint64 limbs used to store field element
FP_WORDS = 7
)

// Used internally by this package
// -------------------------------

var p = Fp{
0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFDC1767AE2FFFFFF,
0x7BC65C783158AEA3, 0x6CFC5FD681C52056, 0x2341F27177344,
}

// 2*p434
var pX2 = Fp{
0xFFFFFFFFFFFFFFFE, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFB82ECF5C5FFFFFF,
0xF78CB8F062B15D47, 0xD9F8BFAD038A40AC, 0x4683E4E2EE688,
}

// p434 + 1
var p1 = Fp{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0xFDC1767AE3000000,
0x7BC65C783158AEA3, 0x6CFC5FD681C52056, 0x0002341F27177344,
}

// R^2=(2^512)^2 mod p
var pR2 = Fp{
0x28E55B65DCD69B30, 0xACEC7367768798C2, 0xAB27973F8311688D, 0x175CC6AF8D6C7C0B,
0xABCD92BF2DDE347E, 0x69E16A61C7686D9A, 0x000025A89BCDD12A,
}

// 1/2 * R mod p
var half = Fp2{
A: Fp{
0x0000000000003A16, 0x0000000000000000, 0x0000000000000000, 0x5C87FA027E000000,
0x6C00D27DAACFD66A, 0x74992A2A2FBBA086, 0x0000767753DE976D},
}

// 1*R mod p
var one = Fp2{
A: Fp{
0x000000000000742C, 0x0000000000000000, 0x0000000000000000, 0xB90FF404FC000000,
0xD801A4FB559FACD4, 0xE93254545F77410C, 0x0000ECEEA7BD2EDA},
}

// 6*R mod p
var six = Fp2{
A: Fp{
0x000000000002B90A, 0x0000000000000000, 0x0000000000000000, 0x5ADCCB2822000000,
0x187D24F39F0CAFB4, 0x9D353A4D394145A0, 0x00012559A0403298},
}

var Params SidhParams

func init() {
Params = SidhParams{
// SIDH public key byte size.
PublicKeySize: 330,
// SIDH shared secret byte size.
SharedSecretSize: 110,
InitCurve: ProjectiveCurveParameters{
A: six,
C: one,
},
A: DomainParams{
// The x-coordinate of PA
Affine_P: Fp2{
A: Fp{
0x05ADF455C5C345BF, 0x91935C5CC767AC2B, 0xAFE4E879951F0257, 0x70E792DC89FA27B1,
0xF797F526BB48C8CD, 0x2181DB6131AF621F, 0x00000A1C08B1ECC4,
},
B: Fp{
0x74840EB87CDA7788, 0x2971AA0ECF9F9D0B, 0xCB5732BDF41715D5, 0x8CD8E51F7AACFFAA,
0xA7F424730D7E419F, 0xD671EB919A179E8C, 0x0000FFA26C5A924A,
},
},
// The x-coordinate of QA
Affine_Q: Fp2{
A: Fp{
0xFEC6E64588B7273B, 0xD2A626D74CBBF1C6, 0xF8F58F07A78098C7, 0xE23941F470841B03,
0x1B63EDA2045538DD, 0x735CFEB0FFD49215, 0x0001C4CB77542876,
},
B: Fp{
0xADB0F733C17FFDD6, 0x6AFFBD037DA0A050, 0x680EC43DB144E02F, 0x1E2E5D5FF524E374,
0xE2DDA115260E2995, 0xA6E4B552E2EDE508, 0x00018ECCDDF4B53E,
},
},
// The x-coordinate of RA = PA-QA
Affine_R: Fp2{
A: Fp{
0x01BA4DB518CD6C7D, 0x2CB0251FE3CC0611, 0x259B0C6949A9121B, 0x60E17AC16D2F82AD,
0x3AA41F1CE175D92D, 0x413FBE6A9B9BC4F3, 0x00022A81D8D55643,
},
B: Fp{
0xB8ADBC70FC82E54A, 0xEF9CDDB0D5FADDED, 0x5820C734C80096A0, 0x7799994BAA96E0E4,
0x044961599E379AF8, 0xDB2B94FBF09F27E2, 0x0000B87FC716C0C6,
},
},
// Max size of secret key for 2-torsion group, corresponds to 2^e2 - 1
SecretBitLen: 216,
// SecretBitLen in bytes.
SecretByteLen: 28,
// 2-torsion group computation strategy
IsogenyStrategy: []uint32{
0x30, 0x1C, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01,
0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x08, 0x04,
0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01,
0x02, 0x01, 0x01, 0x0D, 0x07, 0x04, 0x02, 0x01, 0x01, 0x02,
0x01, 0x01, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x05, 0x04,
0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01,
0x15, 0x0C, 0x07, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01,
0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x05, 0x03, 0x02, 0x01,
0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x09, 0x05, 0x03,
0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x04,
0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01},
},
B: DomainParams{
// The x-coordinate of PB
Affine_P: Fp2{
A: Fp{
0x6E5497556EDD48A3, 0x2A61B501546F1C05, 0xEB919446D049887D, 0x5864A4A69D450C4F,
0xB883F276A6490D2B, 0x22CC287022D5F5B9, 0x0001BED4772E551F,
},
B: Fp{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
},
},
// The x-coordinate of QB
Affine_Q: Fp2{
A: Fp{
0xFAE2A3F93D8B6B8E, 0x494871F51700FE1C, 0xEF1A94228413C27C, 0x498FF4A4AF60BD62,
0xB00AD2A708267E8A, 0xF4328294E017837F, 0x000034080181D8AE,
},
B: Fp{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
},
},
// The x-coordinate of RB = PB - QB
Affine_R: Fp2{
A: Fp{
0x283B34FAFEFDC8E4, 0x9208F44977C3E647, 0x7DEAE962816F4E9A, 0x68A2BA8AA262EC9D,
0x8176F112EA43F45B, 0x02106D022634F504, 0x00007E8A50F02E37,
},
B: Fp{
0xB378B7C1DA22CCB1, 0x6D089C99AD1D9230, 0xEBE15711813E2369, 0x2B35A68239D48A53,
0x445F6FD138407C93, 0xBEF93B29A3F6B54B, 0x000173FA910377D3,
},
},
// Size of secret key for 3-torsion group, corresponds to log_2(3^e3) - 1.
SecretBitLen: 217,
// SecretBitLen in bytes.
SecretByteLen: 28,
// 3-torsion group computation strategy
IsogenyStrategy: []uint32{
0x42, 0x21, 0x11, 0x09, 0x05, 0x03, 0x02, 0x01, 0x01, 0x01,
0x01, 0x02, 0x01, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x01,
0x02, 0x01, 0x01, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02,
0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x10,
0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04,
0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x08, 0x04, 0x02, 0x01,
0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01,
0x01, 0x20, 0x10, 0x08, 0x04, 0x03, 0x01, 0x01, 0x01, 0x01,
0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01,
0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02,
0x01, 0x01, 0x02, 0x01, 0x01, 0x10, 0x08, 0x04, 0x02, 0x01,
0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01,
0x01, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04,
0x02, 0x01, 0x01, 0x02, 0x01, 0x01},
},
OneFp2: one,
HalfFp2: half,
MsgLen: 16,
// SIKEp434 provides 128 bit of classical security ([SIKE], 5.1)
KemSize: 16,
// ceil(434+7/8)
Bytelen: 55,
CiphertextSize: 16 + 330,
}
}

+ 386
- 0
p434/curve.go Wyświetl plik

@@ -0,0 +1,386 @@
package sike

// Stores isogeny 3 curve constants
type isogeny3 struct {
K1 Fp2
K2 Fp2
}

// Stores isogeny 4 curve constants
type isogeny4 struct {
isogeny3
K3 Fp2
}

// Helper function for RightToLeftLadder(). Returns A+2C / 4.
func calcAplus2Over4(cparams *ProjectiveCurveParameters) (ret Fp2) {
var tmp Fp2

// 2C
add(&tmp, &cparams.C, &cparams.C)
// A+2C
add(&ret, &cparams.A, &tmp)
// 1/4C
add(&tmp, &tmp, &tmp)
inv(&tmp, &tmp)
// A+2C/4C
mul(&ret, &ret, &tmp)
return
}

// Converts values in x.A and x.B to Montgomery domain
// x.A = x.A * R mod p
// x.B = x.B * R mod p
// Performs v = v*R^2*R^(-1) mod p, for both x.A and x.B
func toMontDomain(x *Fp2) {
var aRR FpX2

// convert to montgomery domain
fpMul(&aRR, &x.A, &pR2) // = a*R*R
fpMontRdc(&x.A, &aRR) // = a*R mod p
fpMul(&aRR, &x.B, &pR2)
fpMontRdc(&x.B, &aRR)
}

// Converts values in x.A and x.B from Montgomery domain
// a = x.A mod p
// b = x.B mod p
//
// After returning from the call x is not modified.
func fromMontDomain(x *Fp2, out *Fp2) {
var aR FpX2

// convert from montgomery domain
copy(aR[:], x.A[:])
fpMontRdc(&out.A, &aR) // = a mod p in [0, 2p)
fpRdcP(&out.A) // = a mod p in [0, p)
for i := range aR {
aR[i] = 0
}
copy(aR[:], x.B[:])
fpMontRdc(&out.B, &aR)
fpRdcP(&out.B)
}

// Computes j-invariant for a curve y2=x3+A/Cx+x with A,C in F_(p^2). Result
// is returned in 'j'. Implementation corresponds to Algorithm 9 from SIKE.
func Jinvariant(cparams *ProjectiveCurveParameters, j *Fp2) {
var t0, t1 Fp2

sqr(j, &cparams.A) // j = A^2
sqr(&t1, &cparams.C) // t1 = C^2
add(&t0, &t1, &t1) // t0 = t1 + t1
sub(&t0, j, &t0) // t0 = j - t0
sub(&t0, &t0, &t1) // t0 = t0 - t1
sub(j, &t0, &t1) // t0 = t0 - t1
sqr(&t1, &t1) // t1 = t1^2
mul(j, j, &t1) // j = j * t1
add(&t0, &t0, &t0) // t0 = t0 + t0
add(&t0, &t0, &t0) // t0 = t0 + t0
sqr(&t1, &t0) // t1 = t0^2
mul(&t0, &t0, &t1) // t0 = t0 * t1
add(&t0, &t0, &t0) // t0 = t0 + t0
add(&t0, &t0, &t0) // t0 = t0 + t0
inv(j, j) // j = 1/j
mul(j, &t0, j) // j = t0 * j
}

// Given affine points x(P), x(Q) and x(Q-P) in a extension field F_{p^2}, function
// recorvers projective coordinate A of a curve. This is Algorithm 10 from SIKE.
func RecoverCoordinateA(curve *ProjectiveCurveParameters, xp, xq, xr *Fp2) {
var t0, t1 Fp2

add(&t1, xp, xq) // t1 = Xp + Xq
mul(&t0, xp, xq) // t0 = Xp * Xq
mul(&curve.A, xr, &t1) // A = X(q-p) * t1
add(&curve.A, &curve.A, &t0) // A = A + t0
mul(&t0, &t0, xr) // t0 = t0 * X(q-p)
sub(&curve.A, &curve.A, &Params.OneFp2) // A = A - 1
add(&t0, &t0, &t0) // t0 = t0 + t0
add(&t1, &t1, xr) // t1 = t1 + X(q-p)
add(&t0, &t0, &t0) // t0 = t0 + t0
sqr(&curve.A, &curve.A) // A = A^2
inv(&t0, &t0) // t0 = 1/t0
mul(&curve.A, &curve.A, &t0) // A = A * t0
sub(&curve.A, &curve.A, &t1) // A = A - t1
}

// Computes equivalence (A:C) ~ (A+2C : A-2C)
func ToEquiv3(cparams *ProjectiveCurveParameters) CurveCoefficientsEquiv {
var coef CurveCoefficientsEquiv
var c2 Fp2

add(&c2, &cparams.C, &cparams.C)
// A24p = A+2*C
add(&coef.A, &cparams.A, &c2)
// A24m = A-2*C
sub(&coef.C, &cparams.A, &c2)
return coef
}

// Recovers (A:C) curve parameters from projectively equivalent (A+2C:A-2C).
func FromEquiv3(cparams *ProjectiveCurveParameters, coefEq *CurveCoefficientsEquiv) {
add(&cparams.A, &coefEq.A, &coefEq.C)
// cparams.A = 2*(A+2C+A-2C) = 4A
add(&cparams.A, &cparams.A, &cparams.A)
// cparams.C = (A+2C-A+2C) = 4C
sub(&cparams.C, &coefEq.A, &coefEq.C)
return
}

// Computes equivalence (A:C) ~ (A+2C : 4C)
func ToEquiv4(cparams *ProjectiveCurveParameters) CurveCoefficientsEquiv {
var coefEq CurveCoefficientsEquiv

add(&coefEq.C, &cparams.C, &cparams.C)
// A24p = A+2C
add(&coefEq.A, &cparams.A, &coefEq.C)
// C24 = 4*C
add(&coefEq.C, &coefEq.C, &coefEq.C)
return coefEq
}

// Recovers (A:C) curve parameters from projectively equivalent (A+2C:4C).
func FromEquiv4(cparams *ProjectiveCurveParameters, coefEq *CurveCoefficientsEquiv) {
// cparams.C = (4C)*1/2=2C
mul(&cparams.C, &coefEq.C, &Params.HalfFp2)
// cparams.A = A+2C - 2C = A
sub(&cparams.A, &coefEq.A, &cparams.C)
// cparams.C = 2C * 1/2 = C
mul(&cparams.C, &cparams.C, &Params.HalfFp2)
return
}

// Combined coordinate doubling and differential addition. Takes projective points
// P,Q,Q-P and (A+2C)/4C curve E coefficient. Returns 2*P and P+Q calculated on E.
// Function is used only by RightToLeftLadder. Corresponds to Algorithm 5 of SIKE
func xDbladd(P, Q, QmP *ProjectivePoint, a24 *Fp2) (dblP, PaQ ProjectivePoint) {
var t0, t1, t2 Fp2
xQmP, zQmP := &QmP.X, &QmP.Z
xPaQ, zPaQ := &PaQ.X, &PaQ.Z
x2P, z2P := &dblP.X, &dblP.Z
xP, zP := &P.X, &P.Z
xQ, zQ := &Q.X, &Q.Z

add(&t0, xP, zP) // t0 = Xp+Zp
sub(&t1, xP, zP) // t1 = Xp-Zp
sqr(x2P, &t0) // 2P.X = t0^2
sub(&t2, xQ, zQ) // t2 = Xq-Zq
add(xPaQ, xQ, zQ) // Xp+q = Xq+Zq
mul(&t0, &t0, &t2) // t0 = t0 * t2
mul(z2P, &t1, &t1) // 2P.Z = t1 * t1
mul(&t1, &t1, xPaQ) // t1 = t1 * Xp+q
sub(&t2, x2P, z2P) // t2 = 2P.X - 2P.Z
mul(x2P, x2P, z2P) // 2P.X = 2P.X * 2P.Z
mul(xPaQ, a24, &t2) // Xp+q = A24 * t2
sub(zPaQ, &t0, &t1) // Zp+q = t0 - t1
add(z2P, xPaQ, z2P) // 2P.Z = Xp+q + 2P.Z
add(xPaQ, &t0, &t1) // Xp+q = t0 + t1
mul(z2P, z2P, &t2) // 2P.Z = 2P.Z * t2
sqr(zPaQ, zPaQ) // Zp+q = Zp+q ^ 2
sqr(xPaQ, xPaQ) // Xp+q = Xp+q ^ 2
mul(zPaQ, xQmP, zPaQ) // Zp+q = Xq-p * Zp+q
mul(xPaQ, zQmP, xPaQ) // Xp+q = Zq-p * Xp+q
return
}

// Given the curve parameters, xP = x(P), computes xP = x([2^k]P)
// Safe to overlap xP, x2P.
func Pow2k(xP *ProjectivePoint, params *CurveCoefficientsEquiv, k uint32) {
var t0, t1 Fp2

x, z := &xP.X, &xP.Z
for i := uint32(0); i < k; i++ {
sub(&t0, x, z) // t0 = Xp - Zp
add(&t1, x, z) // t1 = Xp + Zp
sqr(&t0, &t0) // t0 = t0 ^ 2
sqr(&t1, &t1) // t1 = t1 ^ 2
mul(z, &params.C, &t0) // Z2p = C24 * t0
mul(x, z, &t1) // X2p = Z2p * t1
sub(&t1, &t1, &t0) // t1 = t1 - t0
mul(&t0, &params.A, &t1) // t0 = A24+ * t1
add(z, z, &t0) // Z2p = Z2p + t0
mul(z, z, &t1) // Zp = Z2p * t1
}
}

// Given the curve parameters, xP = x(P), and k >= 0, compute xP = x([3^k]P).
//
// Safe to overlap xP, xR.
func Pow3k(xP *ProjectivePoint, params *CurveCoefficientsEquiv, k uint32) {
var t0, t1, t2, t3, t4, t5, t6 Fp2

x, z := &xP.X, &xP.Z
for i := uint32(0); i < k; i++ {
sub(&t0, x, z) // t0 = Xp - Zp
sqr(&t2, &t0) // t2 = t0^2
add(&t1, x, z) // t1 = Xp + Zp
sqr(&t3, &t1) // t3 = t1^2
add(&t4, &t1, &t0) // t4 = t1 + t0
sub(&t0, &t1, &t0) // t0 = t1 - t0
sqr(&t1, &t4) // t1 = t4^2
sub(&t1, &t1, &t3) // t1 = t1 - t3
sub(&t1, &t1, &t2) // t1 = t1 - t2
mul(&t5, &t3, &params.A) // t5 = t3 * A24+
mul(&t3, &t3, &t5) // t3 = t5 * t3
mul(&t6, &t2, &params.C) // t6 = t2 * A24-
mul(&t2, &t2, &t6) // t2 = t2 * t6
sub(&t3, &t2, &t3) // t3 = t2 - t3
sub(&t2, &t5, &t6) // t2 = t5 - t6
mul(&t1, &t2, &t1) // t1 = t2 * t1
add(&t2, &t3, &t1) // t2 = t3 + t1
sqr(&t2, &t2) // t2 = t2^2
mul(x, &t2, &t4) // X3p = t2 * t4
sub(&t1, &t3, &t1) // t1 = t3 - t1
sqr(&t1, &t1) // t1 = t1^2
mul(z, &t1, &t0) // Z3p = t1 * t0
}
}

// Set (y1, y2, y3) = (1/x1, 1/x2, 1/x3).
//
// All xi, yi must be distinct.
func Fp2Batch3Inv(x1, x2, x3, y1, y2, y3 *Fp2) {
var x1x2, t Fp2

mul(&x1x2, x1, x2) // x1*x2
mul(&t, &x1x2, x3) // 1/(x1*x2*x3)
inv(&t, &t)
mul(y1, &t, x2) // 1/x1
mul(y1, y1, x3)
mul(y2, &t, x1) // 1/x2
mul(y2, y2, x3)
mul(y3, &t, &x1x2) // 1/x3
}

// ScalarMul3Pt is a right-to-left point multiplication that given the
// x-coordinate of P, Q and P-Q calculates the x-coordinate of R=Q+[scalar]P.
// nbits must be smaller or equal to len(scalar).
func ScalarMul3Pt(cparams *ProjectiveCurveParameters, P, Q, PmQ *ProjectivePoint, nbits uint, scalar []uint8) ProjectivePoint {
var R0, R2, R1 ProjectivePoint
aPlus2Over4 := calcAplus2Over4(cparams)
R1 = *P
R2 = *PmQ
R0 = *Q

// Iterate over the bits of the scalar, bottom to top
prevBit := uint8(0)
for i := uint(0); i < nbits; i++ {
bit := (scalar[i>>3] >> (i & 7) & 1)
swap := prevBit ^ bit
prevBit = bit
condSwap(&R1.X, &R1.Z, &R2.X, &R2.Z, swap)
R0, R2 = xDbladd(&R0, &R2, &R1, &aPlus2Over4)
}
condSwap(&R1.X, &R1.Z, &R2.X, &R2.Z, prevBit)
return R1
}

// Given a three-torsion point p = x(PB) on the curve E_(A:C), construct the
// three-isogeny phi : E_(A:C) -> E_(A:C)/<P_3> = E_(A':C').
//
// Input: (XP_3: ZP_3), where P_3 has exact order 3 on E_A/C
// Output: * Curve coordinates (A' + 2C', A' - 2C') corresponding to E_A'/C' = A_E/C/<P3>
// * isogeny phi with constants in F_p^2
func (phi *isogeny3) GenerateCurve(p *ProjectivePoint) CurveCoefficientsEquiv {
var t0, t1, t2, t3, t4 Fp2
var coefEq CurveCoefficientsEquiv
var K1, K2 = &phi.K1, &phi.K2

sub(K1, &p.X, &p.Z) // K1 = XP3 - ZP3
sqr(&t0, K1) // t0 = K1^2
add(K2, &p.X, &p.Z) // K2 = XP3 + ZP3
sqr(&t1, K2) // t1 = K2^2
add(&t2, &t0, &t1) // t2 = t0 + t1
add(&t3, K1, K2) // t3 = K1 + K2
sqr(&t3, &t3) // t3 = t3^2
sub(&t3, &t3, &t2) // t3 = t3 - t2
add(&t2, &t1, &t3) // t2 = t1 + t3
add(&t3, &t3, &t0) // t3 = t3 + t0
add(&t4, &t3, &t0) // t4 = t3 + t0
add(&t4, &t4, &t4) // t4 = t4 + t4
add(&t4, &t1, &t4) // t4 = t1 + t4
mul(&coefEq.C, &t2, &t4) // A24m = t2 * t4
add(&t4, &t1, &t2) // t4 = t1 + t2
add(&t4, &t4, &t4) // t4 = t4 + t4
add(&t4, &t0, &t4) // t4 = t0 + t4
mul(&t4, &t3, &t4) // t4 = t3 * t4
sub(&t0, &t4, &coefEq.C) // t0 = t4 - A24m
add(&coefEq.A, &coefEq.C, &t0) // A24p = A24m + t0
return coefEq
}

// Given a 3-isogeny phi and a point pB = x(PB), compute x(QB), the x-coordinate
// of the image QB = phi(PB) of PB under phi : E_(A:C) -> E_(A':C').
//
// The output xQ = x(Q) is then a point on the curve E_(A':C'); the curve
// parameters are returned by the GenerateCurve function used to construct phi.
func (phi *isogeny3) EvaluatePoint(p *ProjectivePoint) ProjectivePoint {
var t0, t1, t2 Fp2
var q ProjectivePoint
var K1, K2 = &phi.K1, &phi.K2
var px, pz = &p.X, &p.Z

add(&t0, px, pz) // t0 = XQ + ZQ
sub(&t1, px, pz) // t1 = XQ - ZQ
mul(&t0, K1, &t0) // t2 = K1 * t0
mul(&t1, K2, &t1) // t1 = K2 * t1
add(&t2, &t0, &t1) // t2 = t0 + t1
sub(&t0, &t1, &t0) // t0 = t1 - t0
sqr(&t2, &t2) // t2 = t2 ^ 2
sqr(&t0, &t0) // t0 = t0 ^ 2
mul(&q.X, px, &t2) // XQ'= XQ * t2
mul(&q.Z, pz, &t0) // ZQ'= ZQ * t0
return q
}

// Given a four-torsion point p = x(PB) on the curve E_(A:C), construct the
// four-isogeny phi : E_(A:C) -> E_(A:C)/<P_4> = E_(A':C').
//
// Input: (XP_4: ZP_4), where P_4 has exact order 4 on E_A/C
// Output: * Curve coordinates (A' + 2C', 4C') corresponding to E_A'/C' = A_E/C/<P4>
// * isogeny phi with constants in F_p^2
func (phi *isogeny4) GenerateCurve(p *ProjectivePoint) CurveCoefficientsEquiv {
var coefEq CurveCoefficientsEquiv
var xp4, zp4 = &p.X, &p.Z
var K1, K2, K3 = &phi.K1, &phi.K2, &phi.K3

sub(K2, xp4, zp4)
add(K3, xp4, zp4)
sqr(K1, zp4)
add(K1, K1, K1)
sqr(&coefEq.C, K1)
add(K1, K1, K1)
sqr(&coefEq.A, xp4)
add(&coefEq.A, &coefEq.A, &coefEq.A)
sqr(&coefEq.A, &coefEq.A)
return coefEq
}

// Given a 4-isogeny phi and a point xP = x(P), compute x(Q), the x-coordinate
// of the image Q = phi(P) of P under phi : E_(A:C) -> E_(A':C').
//
// Input: isogeny returned by GenerateCurve and point q=(Qx,Qz) from E0_A/C
// Output: Corresponding point q from E1_A'/C', where E1 is 4-isogenous to E0
func (phi *isogeny4) EvaluatePoint(p *ProjectivePoint) ProjectivePoint {
var t0, t1 Fp2
var q = *p
var xq, zq = &q.X, &q.Z
var K1, K2, K3 = &phi.K1, &phi.K2, &phi.K3

add(&t0, xq, zq)
sub(&t1, xq, zq)
mul(xq, &t0, K2)
mul(zq, &t1, K3)
mul(&t0, &t0, &t1)
mul(&t0, &t0, K1)
add(&t1, xq, zq)
sub(zq, xq, zq)
sqr(&t1, &t1)
sqr(zq, zq)
add(xq, &t0, &t1)
sub(&t0, zq, &t0)
mul(xq, xq, &t1)
mul(zq, zq, &t0)
return q
}

+ 702
- 0
p434/etc/PQCkemKAT_374.rsp Wyświetl plik

@@ -0,0 +1,702 @@
# SIKEp434

count = 0
seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1
pk = 4484D7AADB44B40CC180DC568B2C142A60E6E2863F5988614A6215254B2F5F6F79B48F329AD1A2DED20B7ABAB10F7DBF59C3E20B59A700093060D2A44ACDC0083A53CF0808E0B3A827C45176BEE0DC6EC7CC16461E38461C12451BB95191407C1E942BB50D4C7B25A49C644B630159E6C403653838E689FBF4A7ADEA693ED0657BA4A724786AF7953F7BA6E15F9BBF9F5007FB711569E72ACAB05D3463A458536CAB647F00C205D27D5311B2A5113D4B26548000DB237515931A040804E769361F94FF0167C78353D2630A1E6F595A1F80E87F6A5BCD679D7A64C5006F6191D4ADEFA1EA67F6388B7017D453F4FE2DFE80CCC709000B52175BFC3ADE52ECCB0CEBE1654F89D39131C357EACB61E5F13C80AB0165B7714D6BE6DF65F8DE73FF47B7F3304639F0903653ECCFA252F6E2104C4ABAD3C33AF24FD0E56F58DB92CC66859766035419AB2DF600
sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD91282214654CB55E7C2CACD53919604D5BAC7B23EEF4B315FEEF5E014484D7AADB44B40CC180DC568B2C142A60E6E2863F5988614A6215254B2F5F6F79B48F329AD1A2DED20B7ABAB10F7DBF59C3E20B59A700093060D2A44ACDC0083A53CF0808E0B3A827C45176BEE0DC6EC7CC16461E38461C12451BB95191407C1E942BB50D4C7B25A49C644B630159E6C403653838E689FBF4A7ADEA693ED0657BA4A724786AF7953F7BA6E15F9BBF9F5007FB711569E72ACAB05D3463A458536CAB647F00C205D27D5311B2A5113D4B26548000DB237515931A040804E769361F94FF0167C78353D2630A1E6F595A1F80E87F6A5BCD679D7A64C5006F6191D4ADEFA1EA67F6388B7017D453F4FE2DFE80CCC709000B52175BFC3ADE52ECCB0CEBE1654F89D39131C357EACB61E5F13C80AB0165B7714D6BE6DF65F8DE73FF47B7F3304639F0903653ECCFA252F6E2104C4ABAD3C33AF24FD0E56F58DB92CC66859766035419AB2DF600
ct = 0FDEB26DBD96E0CD272283CA5BDD1435BC9A7F9AB7FC24F83CA926DEED038AE4E47F39F9886E0BD7EEBEAACD12AB435CC92AA3383B2C01E6B9E02BC3BEF9C6C2719014562A96A0F3E784E3FA44E5C62ED8CEA79E1108B6FECD5BF8836BF2DAE9FEB1863C4C8B3429220E2797F601FB4B8EBAFDD4F17355508D259CA60721D167F6E5480B5133E824F76D3240E97F31325DBB9A53E9A3EEE2E0712734825615A027857E2000D4D00E11988499A738452C93DA895BFA0E10294895CCF25E3C261CBE38F5D7E19ABE4E322094CB8DEC5BF7484902BABDE33CC69595F6013B20AABA9698C1DEA2BC6F65D57519294E6FEEA3B549599D480948374D2D21B643573C276E1A5B0745301F648D7982AB46A3065639960182BF365819EFC0D4E61E87D2820DBC0E849E99E875B21501D1CA7588A1D458CD70C7DF793D4993B9B1679886CAE8013A8DD854F010A100C9933FA642DC0AEA9985786ED36B98D3
ss = 35F7F8FF388714DEDC41F139078CEDC9

count = 1
seed = D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835AD55B22E75BF57BB556AC81ADDE6AEEB4A5A875C3BFCADFA958F
pk = C9F73E4497AAA3FDF9EB688135866A8A83934BA10E273B8CC3808CF0C1F5FAB3E9BB295885881B73DEBC875670C0F51C4BB40DF5FEDE01B8AF32D1BF10508B8C17B2734EB93B2B7F5D84A4A0F2F816E9E2C32AC253C0B6025B124D05A87A9E2A8567930F44BAA14219B941B6B400B4AED1D796DA12A5A9F0B8F3F5EE9DD43F64CB24A3B1719DF278ADF56B5F3395187829DA2319DEABF6BBD6EDA244DE2B62CC5AC250C1009DD1CD4712B0B37406612AD002B5E51A62B51AC9C0374D143ABBBD58275FAFC4A5E959C54838C2D6D9FB43B7B2609061267B6A2E6C6D01D295C4223E0D3D7A4CDCFB28A7818A737935279751A6DD8290FD498D1F6AD5F4FFF6BDFA536713F509DCE8047252F1E7D0DD9FCC414C0070B5DCCE3665A21A032D7FBE749181032183AFAD240B7E671E87FBBEC3A8CA4C11AA7A9A23AC69AE2ACF54B664DECD27753D63508F1B02
sk = D60B93492A1D8C1C7BA6FC0B733137F3E37BFE55B43B32448F375903D8D226EC94ADBFEA1D2B3536EB987001C9F73E4497AAA3FDF9EB688135866A8A83934BA10E273B8CC3808CF0C1F5FAB3E9BB295885881B73DEBC875670C0F51C4BB40DF5FEDE01B8AF32D1BF10508B8C17B2734EB93B2B7F5D84A4A0F2F816E9E2C32AC253C0B6025B124D05A87A9E2A8567930F44BAA14219B941B6B400B4AED1D796DA12A5A9F0B8F3F5EE9DD43F64CB24A3B1719DF278ADF56B5F3395187829DA2319DEABF6BBD6EDA244DE2B62CC5AC250C1009DD1CD4712B0B37406612AD002B5E51A62B51AC9C0374D143ABBBD58275FAFC4A5E959C54838C2D6D9FB43B7B2609061267B6A2E6C6D01D295C4223E0D3D7A4CDCFB28A7818A737935279751A6DD8290FD498D1F6AD5F4FFF6BDFA536713F509DCE8047252F1E7D0DD9FCC414C0070B5DCCE3665A21A032D7FBE749181032183AFAD240B7E671E87FBBEC3A8CA4C11AA7A9A23AC69AE2ACF54B664DECD27753D63508F1B02
ct = 5C0BD37BFCBB23AEFD37ADF1F95AE78DCFEC2981E50E81FDD0569E0FF53F117A5B3D2969F3E51A074487B12329665A7B23B16478F012015E271A46992D953E62A51BA0100BF6A50E8EA2A393D5514CA02DEFB5B62860C1A6AD27FBDE9387AB86F5D519021693FA45CF8F55DF2E007583720AE637CB2DE891A2CE272565CE546079EF81AF08277D8511D164447826310DB06C28E58DEF4B4ADD55D45FAB3036C9C7D3975E01590BA490768F84B758B2FD6E64A73704887BF43AB5DFA4ABC79D2B01A843C8B7F3673B458DD9260810BC5D54C30E7E84F63CCABB37BA00587A36563AC5D02C82482AFA6EFE1E29A187D42CDB6039CA35269CD5CEE420820699AE03BFEDB1A84772BCBA36AD2E34AD025B2C6E0302A4753B1F5320C51796A9CE2E4A543044A6C4B47CC94959618052ED806425849983F0890B8A9ED935AC86E8FB2FA819C793CD90FCBE790018D8FE6B6B89FD54DBF3F1BDE4FB3574
ss = 9D7EDCCC78E60EFDDD75D585AD920730

count = 2
seed = 64335BF29E5DE62842C941766BA129B0643B5E7121CA26CFC190EC7DC3543830557FDD5C03CF123A456D48EFEA43C868
pk = 1BD0A2E81307B6F96461317DDF535ACC0E59C742627BAE60D27605E10FAF722D22A73E184CB572A12E79DCD58C6B54FB01442114CBE9010B6CAEC25D04C16C5E42540C1524C545B8C67614ED4183C9FA5BD0BE45A7F89FBC770EE8E7E5E391C7EE6F35F74C29E6D9E35B1663DA01E48E9DEB2347512D366FDE505161677055E3EF23054D276E817E2C57025DA1C10D2461F68617F2D11256EEE4E2D7DBDF6C8E34F3A0FD00C625428CB41857002159DAB94267ABE42D630C6AAA91AF837C7A6740754EA6634C45454C51B0BB4D44C3CCCCE4B32C00901CF69C008D013348379B2F9837F428A01B6173584691F2A6F3A3C4CF487D20D261B36C8CDB1BC158E2A5162A9DA4F7A97AA0879B9897E2B6891B672201F9AEFBF799C27B2587120AC586A511360926FB7DA8EBF5CB5272F396AE06608422BE9792E2CE9BEF21BF55B7EFF8DC7EC8C99910D3F800
sk = 4B622DE1350119C45A9F2E2EF3DC5DF56A27FCDFCDDAF58CD69B903752D68C200934E160B234E49EDE2476011BD0A2E81307B6F96461317DDF535ACC0E59C742627BAE60D27605E10FAF722D22A73E184CB572A12E79DCD58C6B54FB01442114CBE9010B6CAEC25D04C16C5E42540C1524C545B8C67614ED4183C9FA5BD0BE45A7F89FBC770EE8E7E5E391C7EE6F35F74C29E6D9E35B1663DA01E48E9DEB2347512D366FDE505161677055E3EF23054D276E817E2C57025DA1C10D2461F68617F2D11256EEE4E2D7DBDF6C8E34F3A0FD00C625428CB41857002159DAB94267ABE42D630C6AAA91AF837C7A6740754EA6634C45454C51B0BB4D44C3CCCCE4B32C00901CF69C008D013348379B2F9837F428A01B6173584691F2A6F3A3C4CF487D20D261B36C8CDB1BC158E2A5162A9DA4F7A97AA0879B9897E2B6891B672201F9AEFBF799C27B2587120AC586A511360926FB7DA8EBF5CB5272F396AE06608422BE9792E2CE9BEF21BF55B7EFF8DC7EC8C99910D3F800
ct = E4F8CA44EA281F30009DBF0CF812C6193B2E488E6CBDEBA99E421ABD70BA1FBF809F5D9CED745F9DB9E3666AF910A25B3AB179575D15019AF37568B386928F0448DA4CA43C2A58940AF03AABABB662EDFD1752EE011F175C34B6B3D0E3B5FFF2DA995FFFE021B7371D2145495201C72E8B326C80E1F5DDC3365085D307087A85B17584B61200D2115434320961DE9CC23A4D29008756D2BCA99C80FF3D189FDF0F825A0E001726A3AD60BF8164C737971C9868D22EAB96397F47921564B92527099B8FB5712AE0001CFBE968BB87D2D51279C01989D6747190049D01465C7B80DE91682978478A71DC301714AB1FCD6E4AE297441F680C70345B38894495EF6AA112AE5994B608165B00FD93AB7546999C3800C7A40576134ADAB162777E98699FE9780375104F788E7F4B0D3C9783013131AE87609C4C47979C39D788E79518617D710F37E4ACD635013BA43BA645D229881B7058DDD716760B
ss = 68C17AB42604D799578D835DC7256001

count = 3
seed = 225D5CE2CEAC61930A07503FB59F7C2F936A3E075481DA3CA299A80F8C5DF9223A073E7B90E02EBF98CA2227EBA38C1A
pk = 026656630E8C79F68BE7B3EFA96969922859DDDFEF5DAF19BD4891E7A4806A6D438B346BC832F10754FE0B75CA937E01B3E8B77EEF410145F254E77AB2CFDA7BC7A42507EF8F91024D14113C63B89C8663ADFE755CF3AA0FE90C38C6B765A98980720B1092FDA9EB9677AEA04900B822F112408BF3727B999D44A07A5327623D7FC69A9E52E3A8EC66FE11047CAE20731F2E2522E647B7F5C445630A4A5472AEDCC6212302476F9A539BD6D286E5BDE01B8265FB3D081C2E0B83DAE8378D73651486F96B9F9FDD8BAE795E3FF42BAF19D568B287BA84F59FEB1AA200E9204BFBBDB1E49045A0D62CDCF0808282EE2311F600EE8D82C707DE99EEBCD358FD8A3E77874B46B115BF4E5E323C31087171401E2E0226598EB04C95338094E7C24B6E089B75E425C98BF89651FA6A9348607A8A6DA08C2DEA2E8A88A33D7C41710BADBF607B90A57002EFFD00
sk = 050D58F9F757EDC1E8180E3808B806F5F114AAA7D2AA844222D0A658998298638BB2C80C40B4B76260672401026656630E8C79F68BE7B3EFA96969922859DDDFEF5DAF19BD4891E7A4806A6D438B346BC832F10754FE0B75CA937E01B3E8B77EEF410145F254E77AB2CFDA7BC7A42507EF8F91024D14113C63B89C8663ADFE755CF3AA0FE90C38C6B765A98980720B1092FDA9EB9677AEA04900B822F112408BF3727B999D44A07A5327623D7FC69A9E52E3A8EC66FE11047CAE20731F2E2522E647B7F5C445630A4A5472AEDCC6212302476F9A539BD6D286E5BDE01B8265FB3D081C2E0B83DAE8378D73651486F96B9F9FDD8BAE795E3FF42BAF19D568B287BA84F59FEB1AA200E9204BFBBDB1E49045A0D62CDCF0808282EE2311F600EE8D82C707DE99EEBCD358FD8A3E77874B46B115BF4E5E323C31087171401E2E0226598EB04C95338094E7C24B6E089B75E425C98BF89651FA6A9348607A8A6DA08C2DEA2E8A88A33D7C41710BADBF607B90A57002EFFD00
ct = FC9C6A593AECFFAB44DA40D39FCB1125851C1412F6B0038748729A7898EB6E3026A0FA09F7D700277CC9ED0E8592359BB6B41D7166EE01A97B09CC3C9745FEC2227081AA712A2EDC326130097C1A65972EB1A7893D2DFCE9C18DC7AD58BC077D35FE091CA69E8F3B25B2E6AF5700852416FD07B666DCD52871A106D8BBCC1CFF3F6C846F7247BC2A7849C897AD8950630A9EAEB9B873B99AC7F280FB60AE81EC245629AB010777FF7771722CDAA8465F6B51028D3B1015249AD2C3A235975BB03B2783639AD9C46E0994FEDA332C4FDC0C315E86F1EAC7F3903BC300436B6B8430A00C6C284C229AE9504B835374883E8F2028A28F1CC486E9225E1F32BD0F30EE3260C3F68A92CB803AC99C901CE42B63B300E0AEECA9421B87652CC78E612CB62C09F8E8A62B1D55FD175A563C3F232D007633B915DCC8ED5B0C2EA85990457B092738C5AD704560003EE88C3362C9247820853932DB9E61EE
ss = E0BD6870B0308BACBDA1061628CE8F0D

count = 4
seed = EDC76E7C1523E3862552133FEA4D2AB05C69FB54A9354F0846456A2A407E071DF4650EC0E0A5666A52CD09462DBC51F9
pk = 5B9EC441333B3876B02FE62FA4D3E87CF7149D2EDFCFE02B76A81321127907AC1732B2C5FCB0213ADDCB2AAD482BCCBF26CC1B1CF96601B9E9F6AB077759ED1BD8C5F1B579076E75EF089FF1E820502AB9CC67FF4822D310A2BE1D6C9BF7B019F958A360B7B4A73315B8D9D63A0152E58534D86B49875D88E3817C6A603CF2998403D73CE72685044FABB74BF774C4FA31C1E27A6250C7CA6EDF817DF6859D188594304301999FF1575039CA1B8D401C16A9DB57D54CD389703038555F30D2B0687B268DEFBDDBB37DC87E9C4A00409C6CE46075205CB2121B012801A1D46233CEDF1BE83A19D83EE8DA55C9C4279EA1B011B2386CA2390D62B906F9ADF2AD5B0EADF2D90D2705B0AD1FAFB71D0B7F8F41600065C9F4CFBA6A1D7316905BAF5F5DCC127EFAD9F34453548B8A6439B08C58173EDB7067068C0DC33AED4B3D2217E29CA2F5199984833600
sk = 66B79B844E0C2ADAD694E0478661AC461C84F5D40C73FDE4C2D060E671DCAC99C0F268F85ADDCC7681A032005B9EC441333B3876B02FE62FA4D3E87CF7149D2EDFCFE02B76A81321127907AC1732B2C5FCB0213ADDCB2AAD482BCCBF26CC1B1CF96601B9E9F6AB077759ED1BD8C5F1B579076E75EF089FF1E820502AB9CC67FF4822D310A2BE1D6C9BF7B019F958A360B7B4A73315B8D9D63A0152E58534D86B49875D88E3817C6A603CF2998403D73CE72685044FABB74BF774C4FA31C1E27A6250C7CA6EDF817DF6859D188594304301999FF1575039CA1B8D401C16A9DB57D54CD389703038555F30D2B0687B268DEFBDDBB37DC87E9C4A00409C6CE46075205CB2121B012801A1D46233CEDF1BE83A19D83EE8DA55C9C4279EA1B011B2386CA2390D62B906F9ADF2AD5B0EADF2D90D2705B0AD1FAFB71D0B7F8F41600065C9F4CFBA6A1D7316905BAF5F5DCC127EFAD9F34453548B8A6439B08C58173EDB7067068C0DC33AED4B3D2217E29CA2F5199984833600
ct = CDD134EDDFA2B2E9C6DE157E1ED68E0FE13798D243A0630D1566A459680A7BF93D81664866F560D59DC18D43D6400734087D4F3831C6003E21D02091176298BA40154011081E972AA1AD5BA3CB8BB069A721E2C09946D1F45AB6B9B3CD7E867F910AA6CD409413BB6488EE88F6013C44D83C55B0748DDFE5312571F7A1745B5AE94EC18002A367ACC7C83D33AE2391641FB0F8D129F8CD249E718EA5828F76EAF5CE053100711E510D753215604C0AAA6B325DD6D81E564983EF3820BB4908F6BBDA16B3B6E1FE2D0D01C3C33A73E2BB6DEF6D83B8D0481E376C8501E0FD3617273D4BB9577D6AB6485530D08116C4D9EE8A76767FEE8BE93B04BD1101AD86B642F8D3D8C3F5349734C683AA20420AD3BF250235962505CC934D87E32020F717D0018457838079ACE67F7E6C5D81DB53C40A54D755911E042778471E610F8D8860E47505F63234161100CE2EE0B19ED2A830497D0D70A6E61BD3
ss = 18C6E6AE1527E5A612E98F2018FDD744

count = 5
seed = AA93649193C2C5985ACF8F9E6AC50C36AE16A2526D7C684F7A3BB4ABCD7B6FF790E82BADCE89BC7380D66251F97AAAAA
pk = ABD9D07C7D8957F8F043CF2565406A71C0F5845EAA8F0C633EE78D2EEFD276C9D65E8718482EB0CF082F16C8A91F9F779D29E04D402A018EF75E4758206392C6502D4AB3B539CB505E86DDC39F2472CDCD47513116B38AF8B591F70230497CB55F5F9F80C7DFB698B8CF8EA7110292D067C0340E6F815839DEBA5F2AE53840E1114587A3E45F1206E0679F0783B3833293A425FA7D7F5DF6D5077B43081DAB970D49CB0202B89503F46CB3C599D7A258A63A29913D0DF9DD0D5D7A0F50CF837D7BCEF760B56AF9D0A34627754F7B4A7DBBD2BD9D4836F7B848D9EE008E8E9982887E4E7DC36AD259715C3A54540241D995CB115E5DDD727567E36EEB0E858CFF4394EE030159E52C03035E36ED796864E88301AB9B98BEA197396E09569477CC25192EC3235C5A24F3794D2B39295E3F108AE3365470E68FCB81F9E097284BD88F7FEDF6AC91255B1F02
sk = 7EC408F52C9AA723D0C41D9987682A5F96EF1EB28E65EEF99B8CE6DDE26D979BDAA37158C7649ECDA51A5D01ABD9D07C7D8957F8F043CF2565406A71C0F5845EAA8F0C633EE78D2EEFD276C9D65E8718482EB0CF082F16C8A91F9F779D29E04D402A018EF75E4758206392C6502D4AB3B539CB505E86DDC39F2472CDCD47513116B38AF8B591F70230497CB55F5F9F80C7DFB698B8CF8EA7110292D067C0340E6F815839DEBA5F2AE53840E1114587A3E45F1206E0679F0783B3833293A425FA7D7F5DF6D5077B43081DAB970D49CB0202B89503F46CB3C599D7A258A63A29913D0DF9DD0D5D7A0F50CF837D7BCEF760B56AF9D0A34627754F7B4A7DBBD2BD9D4836F7B848D9EE008E8E9982887E4E7DC36AD259715C3A54540241D995CB115E5DDD727567E36EEB0E858CFF4394EE030159E52C03035E36ED796864E88301AB9B98BEA197396E09569477CC25192EC3235C5A24F3794D2B39295E3F108AE3365470E68FCB81F9E097284BD88F7FEDF6AC91255B1F02
ct = 73B277597F6861DF9C9929397A7216AAFFFE94C1DC522D31B2FE4ECF64A09A30B754186519B9C3FF348B7249F32B944E04BD4B7AE719027CD8F38559585FE916014EF21607D4D7A83DA63237B7623D68F42F4134CFC701630B74B2C7C36BAC6C9B1F90334783C37219D6D72CF501A468B5B0149CE42C491E71AC55FB68C628CE0347873FA0E9D6240DF43D6C4FD8945C901666A92DDC068ECB3D70D99A2AE2A968DD69C201BE9B2AF07502F88CBAFA9B02E4B9208F3FD9DF66DB977DF0469F547A62522454617BA14357572F17CDD74A1C5756EF0B49797665905B00FE9A2665C8A3AC0FEB3164B9EC129C7C8C0015AD3532A0B332F0ABA0CBCEA670F81664C6543E94BABF1C455316350B07E70AC9439048009E6E25D222884CB7A6989CBB50C226C9951172F2A18D7308660ABC0B441355E4D938441B4C18B18BB20A35B8D9EBA2EE5FEF04300BB300C4B6EFAD7D9B9E29AA430F4ACD9D8645
ss = 377A154FEDAC0A7DF1DFB1409D34F568

count = 6
seed = 2E014DC7C2696B9F6D4AF555CBA4B931B34863FF60E2341D4FDFE472FEF2FE2C33E0813FC5CAFDE4E30277FE522A9049
pk = 235B59C4931909215173C321D2BE02DDD8F4227D1AFAF566BBFCDD8E9280F63A7D1AA346C3B01F429AD66689D9912A5C4C36241A314200403282704705DBBBA6917E131FCF5541BDED9478B08649619D8F6FE9D4D5BB9B28F3F851C5AFF4B31A4D94858876BF3218D68FF88A8A018E55B5B9C7A664001BC7793C2052841329A80DAC59A919BB4C51ED106FF12646327E08E6CBA2F3FA92CBA3655640681E93EAF9F8A0BE0092576BD86705BA9FA4546F78659A8F4C162763F37F8376E480BB15F15AF187B02A1ACE9F9A994977A076FD8C9CEE72C2F58B6C06570602F37989AFC2A59068F95F510AC7565D90B8D101CCF66A3C3A758319F690D59843F1E5142A701B2622944DA1D8B48E0AD0FD888EA0D41D018C387AEA8B7A9DCD0F1536822A9E7C9056784637637D9FA3F242C84A20B29558A3C73DC38462527F6659572317DAD665727952769FAB00
sk = C121915BFEF6ABDFC177DAE2F5A24218C701C945CF4234DAB0E8518592EDD35881C0F413DE3FB6CFB2370801235B59C4931909215173C321D2BE02DDD8F4227D1AFAF566BBFCDD8E9280F63A7D1AA346C3B01F429AD66689D9912A5C4C36241A314200403282704705DBBBA6917E131FCF5541BDED9478B08649619D8F6FE9D4D5BB9B28F3F851C5AFF4B31A4D94858876BF3218D68FF88A8A018E55B5B9C7A664001BC7793C2052841329A80DAC59A919BB4C51ED106FF12646327E08E6CBA2F3FA92CBA3655640681E93EAF9F8A0BE0092576BD86705BA9FA4546F78659A8F4C162763F37F8376E480BB15F15AF187B02A1ACE9F9A994977A076FD8C9CEE72C2F58B6C06570602F37989AFC2A59068F95F510AC7565D90B8D101CCF66A3C3A758319F690D59843F1E5142A701B2622944DA1D8B48E0AD0FD888EA0D41D018C387AEA8B7A9DCD0F1536822A9E7C9056784637637D9FA3F242C84A20B29558A3C73DC38462527F6659572317DAD665727952769FAB00
ct = A0D5B0A211B37E232BD846CB7EF30CF81548BB89C96DAA08D39762F5FEE12B3960C72C30C53D4B2ECF4A998A569C546125C7EB7790EC006C4D6927CAAF595D87581702B4FB5C395F2DEE22E137DE40CB337907B150D9C1607ECECB6E9C33A614EEC4EE7BA3AFC681935B95BAD200DE71E80A5E19C54780E2DFA06E3EB7ED7941A84FC337B9CF13CFA6A14BC15E0AC72A89022BEBED520F71C01E8A4B63ABB904CAAB210100C8FDA4BBB7BEFD1B574376A7855F75DBD39546DACAC66E668192D4B54975504658AA2E438095BCD41FF86173DC6AE72B72FA8C136B1702623DCF514EADF17033D18018408DB3CD77354B383365DD2327B18047A882EC4966ABD4470FB256993DBA121E5F00FE250E218E5185C10085627D0FA545EDE681390F4B9FCC10748DA761A7353E52C4CC1135F1CD53EB5F6960410F7195A33DC1E2BCE864BE7B200D81FC2F5A7F0027E416D28AF12A64C1DCC5BC596E9636
ss = 20702B740B8447FEBB904FC9BF411637

count = 7
seed = AEFB28FDD34E0AB403A703B535296E3A545CA479C1D8148E2D501B3C8DD8B1034BD986F13F1A7B4671BE769359FD2AAB
pk = B35A0DB3B8FBA28F72C047A5E4676FBEFF9D14B938D20C6A38DCB38F2CBDF3C5B4B789695DCAE46833A572FBD116A7966FC1407E72B000CBC49BD2ABA200E58A59BA975A956DEFB144A8C37886CE65FB7AEC52A67976BA830C0C51200DE5D03108064D78CE79DFEA0FD539BEEA00D911697F499BD056294C565A483F855CCD2A461927BA6CAEF894A1798AE8EFEF2DEA8078817A5FCEFA4A688F91BE9D714794F96D075600D7B785DC0E72174BA8AECECDDD1FF68EF6859C867BB6FB58FABD9CBC1B52424EB6CBA25185B01907B8DF6CFF1CB7F399A8A73D888A40018279D0888FFB2D0B7EE92E74942B567D6842706E965F7B44319AE8148552EF363285E6F1F6F655BC8693F6567793897E8A7B9358A6AE0075C9413DA7945EA98E2296A7A84562E58BE632381699449C62E3DEE3E3E42B93034C2002A91B7330E5FD22D884185314767B660C499800
sk = D86634ECF96CC2603761E284C0E36734440251BC6D79105402015AFCF1B6E3F84D723CB0B6DC224BDF7B6701B35A0DB3B8FBA28F72C047A5E4676FBEFF9D14B938D20C6A38DCB38F2CBDF3C5B4B789695DCAE46833A572FBD116A7966FC1407E72B000CBC49BD2ABA200E58A59BA975A956DEFB144A8C37886CE65FB7AEC52A67976BA830C0C51200DE5D03108064D78CE79DFEA0FD539BEEA00D911697F499BD056294C565A483F855CCD2A461927BA6CAEF894A1798AE8EFEF2DEA8078817A5FCEFA4A688F91BE9D714794F96D075600D7B785DC0E72174BA8AECECDDD1FF68EF6859C867BB6FB58FABD9CBC1B52424EB6CBA25185B01907B8DF6CFF1CB7F399A8A73D888A40018279D0888FFB2D0B7EE92E74942B567D6842706E965F7B44319AE8148552EF363285E6F1F6F655BC8693F6567793897E8A7B9358A6AE0075C9413DA7945EA98E2296A7A84562E58BE632381699449C62E3DEE3E3E42B93034C2002A91B7330E5FD22D884185314767B660C499800
ct = B4C21958149D7CB56C45669273AD8D8D3A4F0CC2334E7EC6D38C5F39A9DB08DBBB2AA246F2A7D0C204FA34FAA30D76EA76A6026B02B50026736C0007B38358AE10570494B3A9D431F3B4658ABB737F2C7D4C11B20DACA1D5D455C3AD05970EEE452DB1A83E92FDA138C9F76076003923082298E36A8425304EA83A0E978581673DC5457833BC488304A1F8F4FF832231FBAA643D53CD0DBBB2E97034CFB172F5A996026100A592AE49711B17FD7C12F8D676A8E821694769193DF59BC266CBBD0DC735DFE39BCF6C75BB129D70AE6FFA6D9CEA4CA13AF6D93AF4F700691CCEAA2F3FBEEF2F962DB0E429015D6CC25C4CE5AD3577FBD68C543594008B37D6D18E4AB4DA3201D10AB437BB3B6353AD219164BF01FAE551C0E65F9976FB5A992EB6ED2E50D44DEE844568D5C9C7785F646C2498AFC12C28EF075B9C2C3B6F6D301CBCA4C251DA4AE0E39C0049D5D61D0F8EE4D1E9699CD16863DD2E
ss = CBC8B73A7F31E6E4B909DF774D17E1A2

count = 8
seed = CBE5161E8DE02DDA7DE204AEB0FBB4CA81344BA8C30FE357A4664E5D2988A03B64184D7DC69F8D367550E5FEA0876D41
pk = AC97BE89E1D09C95148DCA3A189D52B8C39251DFDD534264C0CAC77ECD7E0A6A4625E95CD0FDAD68522C20AAE8D0FFABC262E95F3A1401A0626EC88F43FD1403B1EA5D052D89D65501E3DFB735BA92EAFA34AE5657322957EDC1DD52FF5620B85412355A1C2C866405269FCEDF0045092A0D136D64834DD7DE0BC7ED46DBC671C5C34AA76147E65670A569B349646412BA9D015155D85BC39075FEAB1DB50042B570DAC10028C016EB01199EB50C03DB532F675E1FBC00FDBF70D756C71DF66BC63831B42AC1F4EBD7B2F5042E00053F14EC10A803B69B5455E80D018263D184B8220300640C0442A82667258387F2A7FDD26425E07E4637F159951E16D460D7C89F131BE2FDBD6C0069C1F781FA789FE5BC00805BC7390C6300C6E075710C0394AC840DBBEC175620ECFB0AAE71902EA5141CFBC0B4473C954C67C62544412DBE142401013D9C984200
sk = 0610678FF4DC3128E1619F915DC192C244DCAF91D70AAAE9BCBB952354FE199605F4E8F1C3685DA286275601AC97BE89E1D09C95148DCA3A189D52B8C39251DFDD534264C0CAC77ECD7E0A6A4625E95CD0FDAD68522C20AAE8D0FFABC262E95F3A1401A0626EC88F43FD1403B1EA5D052D89D65501E3DFB735BA92EAFA34AE5657322957EDC1DD52FF5620B85412355A1C2C866405269FCEDF0045092A0D136D64834DD7DE0BC7ED46DBC671C5C34AA76147E65670A569B349646412BA9D015155D85BC39075FEAB1DB50042B570DAC10028C016EB01199EB50C03DB532F675E1FBC00FDBF70D756C71DF66BC63831B42AC1F4EBD7B2F5042E00053F14EC10A803B69B5455E80D018263D184B8220300640C0442A82667258387F2A7FDD26425E07E4637F159951E16D460D7C89F131BE2FDBD6C0069C1F781FA789FE5BC00805BC7390C6300C6E075710C0394AC840DBBEC175620ECFB0AAE71902EA5141CFBC0B4473C954C67C62544412DBE142401013D9C984200
ct = 08A36B7D52A8370AD5AAEC88961ADCE21B28151D3A29C55586730657C3329265EAFD9F5A34E6244FDB1199BD9C8BDE1455EF983E95E501FCBACD909D94005A65696622471267F87844B2E40D3FB17B19CF875876B79986263BB9C1E99D3E82FF3885B8AF9AE9072CE964029FD701C9AA228D4FB525540F03E13BDA0EDABA7B3AB5EAE7044F60D50F61EE3AB1BE1558F45254D7CEE84B6E9529AE78BF24F070873A75B6D901D27E2CF3854BE26A6BA6B37B81B739A6895F18866C3CD5DA15FF135C6DE75A322194452C701BD73083A1EB948095E5AB8B1DF1C769EE0194260DBBE31F8299B790EC41ED291646BBCE2C25D67688ED5BD3C43DC7CD31CBC8657CD61A8D20FC41B4CB1C4B206C20B5C9E54107110187B486D381F1E33D7A5F9D40A222BBD318C5163C4B55E37BB7464F6D1AC678A0450DC4824B3B708C6DE35F1A117D16F4FC939BAF860B01D5F49BF66A77D2A3010DD6082D9B7792
ss = 1246DD9FC2F3E56DE0C452A7D2B86573

count = 9
seed = B4663A7A9883386A2AE4CBD93787E247BF26087E3826D1B8DBEB679E49C0BB286E114F0E9F42F61F63DEC42B4F974846
pk = 668881CAE185276DFD6A43218A42DE7723EE833E27D1C7066D86080ED653E65F617A217FD3F42C759B8A8DA42460FFFBF38846FC04FE01A4E96287DB081B3D4E2E59BDB428E60F5ACC955E2EFCCB170E6C12C36F8EE7B9E95E75849D93EEA25695FD495A641730AE6DD041B40200233777DAD6720778A2058FECD4048F1A08DD9796F0B71E269479DDF211882CCF3E50F36C1CAE87412DE375B5AEC42375D05404F4C3780091A98C0281AFEC3118B99BA9FB578F244859243EDBDF507810E6D3D07A0D73BE513B96BD9B0E4101341D69E37F4B2CEC9F64C6465B4C00F87CAB1564A1BD1DBC20B3BC93D77217A1D74FC937C7C9AEE5EC4972C347BE332D2B6E8982F725AD0C56340474601ADDB1AE6619792302AAC9E9FC331A4D0B2BFBFE40905540AF3784B3231E6081E388637E35528963552E1BF79AD06B57B6DAC762D80FF9B0A34BAA7C69287701
sk = D322D56D8EF067BA1F24C92492B9C56D661BC2DBCB9B8E0FF1621C1B0328A2BE50D39C528D9B2989CA705201668881CAE185276DFD6A43218A42DE7723EE833E27D1C7066D86080ED653E65F617A217FD3F42C759B8A8DA42460FFFBF38846FC04FE01A4E96287DB081B3D4E2E59BDB428E60F5ACC955E2EFCCB170E6C12C36F8EE7B9E95E75849D93EEA25695FD495A641730AE6DD041B40200233777DAD6720778A2058FECD4048F1A08DD9796F0B71E269479DDF211882CCF3E50F36C1CAE87412DE375B5AEC42375D05404F4C3780091A98C0281AFEC3118B99BA9FB578F244859243EDBDF507810E6D3D07A0D73BE513B96BD9B0E4101341D69E37F4B2CEC9F64C6465B4C00F87CAB1564A1BD1DBC20B3BC93D77217A1D74FC937C7C9AEE5EC4972C347BE332D2B6E8982F725AD0C56340474601ADDB1AE6619792302AAC9E9FC331A4D0B2BFBFE40905540AF3784B3231E6081E388637E35528963552E1BF79AD06B57B6DAC762D80FF9B0A34BAA7C69287701
ct = A8A6B1ABA6920A714B66734100197CDD934E56FE7E98ECB11B6B7A2975A939E5AAADA310E063A0C15A32136F02767A49361635704FF700D019D06583AD98FD283C5138BE0A591430DF5560C9F83C9B256DFF69859FD6D08E2FC811DC59D2D2F081510F9F48640CF261CBCDBA7101D19453344F2CF82E4307E4EC21C09C2A5DCEDF387CAD493A2E1E8D6F657043D207F441605D7EDB21730ADF82B04A364A730A2E728D1B0136EB3F1ED669E17125C6B7E6922B306C3CABC46B20071ADE1021767A8E4977F70868F6FF9F6F9D2AD6A9051374C7F94BBCF1F8B82E3C00F522B515134D8763CD6984BF86F28DF8B766556FDCA9E8697EB4D7F1604DF738AE1307EC008C6A6B2EB5184407F64991A94A49DC0CCE01879EF0A781B7F47A31F3579EF53AAF9B7818E4C818F8F262CB5BAB557D594833F7AA3016EFB757773F8DC9DCA55FFCFFC6D28E3BC1D701A52D911F82CD7F717B3215D5E5FAA555
ss = B09D92921E68FA2CD595FF094B9BAA6B

count = 10
seed = 980D0BA7C8F8B23D0E948A6029FF2659810EA1360064663A8994D0333C8543EE5FF5D6D5C9ACF446E61DC464F792B9D3
pk = 41DBDA29EE49155B922C93C96B7F12D55194828187F3E11CD38DAD1AAFA7F6A6FA9E1C4C12658F4A7541B2238EE9A5AAB532520CB61E0071B7C7932DE780BFA88D10766CB04C1957C964A850C00D9F3C79DAB54320B5D83C11B831651D7E8981AFA8523C5FA587868EFF138A7D009322269125F89B2F2E1CD4C38F29385000A8EBA4C70D67890ED38317E2FC12BBA2B246CCF9ABED1B05A5D52B1D83BDE8FCC43C5F6BAD013E7C125B72A711CC32B000EE81A50BAB72EFD106E560A93FECEFD96777630F607CF75090C049FD7A9EF88A2BF6F423933909A66916F4003D6A6AB0AE9D192591742E59ED338675F6D21A7B58844CCC054C325E369E3C67B658CC8192EED3BE171888712942826D7A4D8CAB051002C4082A05C7DCC8B4C267A3861AAC5F415DFC6594BDE00BB3164008B7BED93597CF39B7484574704CAD537275B7BEC8C2FEFECFEC18EC00
sk = 2F1D8A3BEBB34540324B9485FDF3D5BE1913E716E52EF135BBC36077D16C70CF656E07A895F704902629630141DBDA29EE49155B922C93C96B7F12D55194828187F3E11CD38DAD1AAFA7F6A6FA9E1C4C12658F4A7541B2238EE9A5AAB532520CB61E0071B7C7932DE780BFA88D10766CB04C1957C964A850C00D9F3C79DAB54320B5D83C11B831651D7E8981AFA8523C5FA587868EFF138A7D009322269125F89B2F2E1CD4C38F29385000A8EBA4C70D67890ED38317E2FC12BBA2B246CCF9ABED1B05A5D52B1D83BDE8FCC43C5F6BAD013E7C125B72A711CC32B000EE81A50BAB72EFD106E560A93FECEFD96777630F607CF75090C049FD7A9EF88A2BF6F423933909A66916F4003D6A6AB0AE9D192591742E59ED338675F6D21A7B58844CCC054C325E369E3C67B658CC8192EED3BE171888712942826D7A4D8CAB051002C4082A05C7DCC8B4C267A3861AAC5F415DFC6594BDE00BB3164008B7BED93597CF39B7484574704CAD537275B7BEC8C2FEFECFEC18EC00
ct = DB347701F4B35DA8C147211207E85D9C2C138BD70FB59C57934427752F7E5204E74219DA08D06FCADD41BA4DF8B4BAA43B7B8B060BBC0105157CFCC311115421135229AF37F20F877D8CBD920312224A6D3E14718AF0ED326E944767D2B572A72E4EEBBB24890288765281D638019C75728B3966805A9558316CC41AA941FE60455F07FAB8A3161409CCC84D2D872183797E25888C5ACBBED0F5AF785CCB3967558C98D500690FC821192E058BEB8234CF709E7478911CBBFAF062DCBD11982973CBEED625FA2DFB561EB458109E821FA20DBDBC54FAB936A173FA017BF53B17B51F63DA3BCD5EBC83F60C9B6D546C48262E7E8AFF53388EF6FCB8D4A94CA003F24FFBDFD262CE5C151F9628C3DDED96226F0110FF0D524B43AAF19BB4D659D8F2C4CFC5220426D0DE7C365D6141445F9F9CEC0EBA4ADCF726A213138543FE79A72046380DDB831AF0004EE70EE09B57FC1632907938568F14AC
ss = B49ABAAE30A790FECE54A3F113FD575B

count = 11
seed = 6C029462CA42ED520F10A579F52687101105E0B90C6E7BFA582A4C112B579D5AD0A0ABD38F72ABCFDCAAF5893A112BDC
pk = 3727C2F466E3E3209BB9A28D2E721BC651AD9D0F06F50347FF911F19D2E9DF1AFB7AADCC589B7E40C25F0108066F5D0DC02E243A74140188A075505372E2981C2BDC310625E5CABEA344C18D8B14D0F3793A47C45739F89139C1E19DB5DC708E607DA782EF5EFF5E07960109DB019C2B786D515A479BC30B4727D458A50680668CBA757C6AD86408931424697B71B5A2593547CB56B21A0C420708640556F80A47A9D4A000593601D8010205A02E167BF296D5AD0625B294964076A507594779DEDCB4D1E423F83FCA1C63B473D3A69AC77E7A6729DBD925436E0300BBD20C06ADE192EDAFAE35E724EA8ECE69CBD16072D756323C15D3270FA9D83F62EEE2C06BFF4D77C70025AF9D5BAB73DF9F6D375F5F01322771D24F67BA11FB7A89538BD274AFFF7C50BC5A471C806F7712DCF529B90238667F4F1050AC8212E428F36BD0FE6422BED3AFC5AC01
sk = 31BEDA3462627F601CBC56F3DDF4424E204C429A2AF01AA8E9151242EFBB30DBD557B64979456ED0E3E8AF013727C2F466E3E3209BB9A28D2E721BC651AD9D0F06F50347FF911F19D2E9DF1AFB7AADCC589B7E40C25F0108066F5D0DC02E243A74140188A075505372E2981C2BDC310625E5CABEA344C18D8B14D0F3793A47C45739F89139C1E19DB5DC708E607DA782EF5EFF5E07960109DB019C2B786D515A479BC30B4727D458A50680668CBA757C6AD86408931424697B71B5A2593547CB56B21A0C420708640556F80A47A9D4A000593601D8010205A02E167BF296D5AD0625B294964076A507594779DEDCB4D1E423F83FCA1C63B473D3A69AC77E7A6729DBD925436E0300BBD20C06ADE192EDAFAE35E724EA8ECE69CBD16072D756323C15D3270FA9D83F62EEE2C06BFF4D77C70025AF9D5BAB73DF9F6D375F5F01322771D24F67BA11FB7A89538BD274AFFF7C50BC5A471C806F7712DCF529B90238667F4F1050AC8212E428F36BD0FE6422BED3AFC5AC01
ct = 1727DC42DF2D04F0AE833C20A9FD83E230A810C1660204260F8CC4C1129F57B5FF160AF7DEA5A060F495B21D83347118E581647B4334019BEC70D8EA75F2D19228505F32831B505DA9139FAE8A9265CD475198352B2E10B0E4C4B44FE1227768302B16DF5CFB4C9CFC5B5F1EDB005475046B86CBB7D572283B0E85D7C1F33C6D57D8CE05D8A4DBCA3372C497C1936D35E0013D4BB585F080C88D9CE375BDB6BC31501A31011E5CB262E82DE1D0574623E14DC733B5D7A8644DBC0175AFAFDE58E5CCAD7989D9ADB4EAC5029FA946BD509B63BE8E6E41F41C1898AD01C94103D6A3E17B96B7C19F8F6978B8C6F8BF12187E61FF80B25632ED37AE2B8EDE698A394CA3480179E35B3A4E47CEA3F26BB74642DC00069A058757D75F26C82DA3881FEB28A875CD4B1CD775B7982F9FC2702C0AE7A859CCB880092356824563ABB5E79648118FD6C81D591D0239EFD9E6DAFDDCFD07372FCB258DACFA
ss = A663DA396F96655AED1602ACFB1C83B3

count = 12
seed = DB00120937570D62331F4C3F19A10465231EFF46465CDEE336A0D46AA1E7493DF80F18617F9FFD0476CF7784A403EF4F
pk = 4CA4DAF17B19813A22D6CA2AE239BA3E2C5593249E1D798D0FDF57E74596A18760EF706784C677FB7390223AFB26A183B12FFA51BBC701C88BA3AAA3D871CCDD7C2936553469527228DCB18D1DDE2E3339DE94DCAF7901C4311C67BF2FF055CBBB7F13720F2B5026158F266ECD01C27130547A89C9ABDF2193A554934E121B8EAE74C862D9236C1D94B4318F643B200EEA147952384421BA7EAF6BCA50B48866D025A9E101C287A3CC1EBDE69B35A6BDFC823D904C8B6885B412E7416FCE1AE03F931D221AB9BE8F73F66A69929D35FDB291CD25D351647CC59B3202F4255C29F382E3E041407FCB2968AAA1BDE8FA7CCA4C1C84E76BC79D9D2C81C520670FD5E27EAFCDB8CF900947AAC8BD975030EAB9B301BA1B2D3199699A476CD1C3BCA367175C06AC5DBDAA69EF0122B620CA218FECE279D8D9921709E869BA5867098A2ABACE72D905F9B30900
sk = CBDFF028766D558AF4466EF14043A1A964288E066695F6610A3FF37C401463403E91F53E7B89CED7721756014CA4DAF17B19813A22D6CA2AE239BA3E2C5593249E1D798D0FDF57E74596A18760EF706784C677FB7390223AFB26A183B12FFA51BBC701C88BA3AAA3D871CCDD7C2936553469527228DCB18D1DDE2E3339DE94DCAF7901C4311C67BF2FF055CBBB7F13720F2B5026158F266ECD01C27130547A89C9ABDF2193A554934E121B8EAE74C862D9236C1D94B4318F643B200EEA147952384421BA7EAF6BCA50B48866D025A9E101C287A3CC1EBDE69B35A6BDFC823D904C8B6885B412E7416FCE1AE03F931D221AB9BE8F73F66A69929D35FDB291CD25D351647CC59B3202F4255C29F382E3E041407FCB2968AAA1BDE8FA7CCA4C1C84E76BC79D9D2C81C520670FD5E27EAFCDB8CF900947AAC8BD975030EAB9B301BA1B2D3199699A476CD1C3BCA367175C06AC5DBDAA69EF0122B620CA218FECE279D8D9921709E869BA5867098A2ABACE72D905F9B30900
ct = 78D61E2AE434AB6A7F0DE50A61C5E0872F73C33FBF79B1F47FCAF705467BAF5C82A0BAABFABB0AAFE8B6A8547FD2290955B0C7224164016C1A2CFD68974B6BDB93B57CA0E7F3268E75A5C21AE514FC411D2C1257830723B00025B49E2AFEAF7CC5F0E8CD05DA54FE104C1EA79F015B5B25CB39C3309A3AF4540AF404293B62E371627AF7EF702D64267F003116B3056418A8480ED137DEFEBE385628CEE94EB0A260ED9601F6399DA434DF6C29994705B0EA5A8E0836E776B70A8F638D690E58FDEDF8AFDDA6FA6A13DF274FCC37ACFB313F59CF928AA7911D1A400058581BB7EDDAF5313826B1A30F3E18E4568A2B96EF83E951DD17921BCB419C22ED246E8B5A90319CBF5474C064D611C34DB82B3234F001FBCD73882D42D12F310B1748C51350F31594AC61D95A880597BBECCE8B5FA0EB17D83F714CC0338C615639A3FCD718736E7085E83CE4016B9DD7B06AC35D1A127A4ACF6973862A
ss = 040192B84326A814B18C80CA838F94C9

count = 13
seed = BD26C0B9A33E3B9B4C5D7EA32D5BD1FC371015BE163C86F584E49BFD5362C8D8341161CD1308115B2A03B7E5EADDD418
pk = D5DB4E282AE88F7CF3D2714C2603A73464BA1480BB8380EEAA4438FB56497079A962AF996DDD5CEDD9AB826042E3494BD4E43697073900816D69587993486898A4C70E490ECF1241C39220C736EE270A041FBCAE61786174E677B5853B86409381D9A44535C7CADB1FD7BCE8EE00B0114826C33A4A86B4060F19A27B42EE76C884EF687CE597FCF2BCDB51F621D50CFB0823A17660D0CDAC36851ED0D59AFFEF4CECE68B011AE1BBA7C2C42FF094A4FA0451973AD866477B95C9361CF5DDFC1D94493A55C1B2BBB011485D4F4F6EEEC0A3530AD4FD3CDB6BB0C8840178BEC8738B648C7BD79A49A2D5205F2EB0FCA34883E99835A631A83E779298D66A4D507F7D5B2606688A453BC0FF6A30A5EE91B417A401A4DA09E689AA5BA84C04EFE246906E915832F873B83786DE28FE72D0DAEA035747E8FA556E622BA9E693487500E6A44BD5B6E1AB1C7600
sk = 4C04310BEA66305C6CA8BA6B8F61CA96E9EDAC80932AA0C57BAA480CD8A5BC44B98B1F0AE30325D09046F901D5DB4E282AE88F7CF3D2714C2603A73464BA1480BB8380EEAA4438FB56497079A962AF996DDD5CEDD9AB826042E3494BD4E43697073900816D69587993486898A4C70E490ECF1241C39220C736EE270A041FBCAE61786174E677B5853B86409381D9A44535C7CADB1FD7BCE8EE00B0114826C33A4A86B4060F19A27B42EE76C884EF687CE597FCF2BCDB51F621D50CFB0823A17660D0CDAC36851ED0D59AFFEF4CECE68B011AE1BBA7C2C42FF094A4FA0451973AD866477B95C9361CF5DDFC1D94493A55C1B2BBB011485D4F4F6EEEC0A3530AD4FD3CDB6BB0C8840178BEC8738B648C7BD79A49A2D5205F2EB0FCA34883E99835A631A83E779298D66A4D507F7D5B2606688A453BC0FF6A30A5EE91B417A401A4DA09E689AA5BA84C04EFE246906E915832F873B83786DE28FE72D0DAEA035747E8FA556E622BA9E693487500E6A44BD5B6E1AB1C7600
ct = 28F71DB04148FC2AC4EAE01B7F0AD6C382428CD3EC9875948A0B1B9FE4DF00A8138439F779BE259DF85AA61419435B7E2318E99A982E0117FBCB8FBA8C0CEAB5C6FAAD44482FFEC27A688BD49E28463ECCB25D08BCF7604ED2FBBAB6640A4B87A650B41621B72509FE0CDFF8E60071E70A61583C0BCA1BD0F4FEB57BB57DE922D36E4A9D52C08FFDDB4F54859BD796FD7183A2ECB695B68A17C3C68901D121613BE0297400732EA38C548CE390F4F8F0688709C7079C7EC42FE632E954057024C6C459AB474B6CD16D49D00C41CBBA257D0E3027A02BC29373746E01D0326253B0EFE5F839B6DCD0085E638A9AEBDB07FAEA9FA9CF54CECE8CB65069F4D7A9A82BAB6AA537DB3BBE4E84EF182DADAE6A03E20146ED55CAD3CBADC5C5AA963BB41CFD8EC787BABD1CDB329FCC2CCACAE2DEADB7DDEDA266322F8F338BE09A46E468A6F2CBDDD4D0773E00C665870DBBB3E529CDABC10176C0E9D4
ss = 897ECF117CAD056AA7607F485F5EDBBD

count = 14
seed = E2819EF86853BCA1B9DEE7EE1C1619988964F9A913E635AACF0D96CA6E0300D084329DABD8F149E24176D22757404260
pk = E30D37CC8CB6C2D560EDBF4A063539BFDFAA52D97802652A299A955D18FF253CE8528339E1539D60216D16AF30DA5C7C220FB587536100B638DA38F505FC6D8724259501E7FC037F781BBA379CD3839867D290FF2679C925726DF80F09C1C11E16DAB4CDDB647C716623B96A99018289196013C72B51D9C056F07C58F62B4D7E1B45ECD4AC34A8F5E0F3A7A64F3ED0F3423A04D4C630CDCD832BDA5CE714A36EC5007DAE0097883B09743D3D0D2BB23CDD2632AA0350D58E16B2C04E914B5E4904E4BC79F30412784EE926A8450436B0843C64FBC4B29E996CCE1501A0B006A2CF72B4B501E86FEAB5DA59E67A9D7B56D053E79E2293E3F84D5CACA9F101FC146A74E029B136C56FFB3C734D5CD6F99A6AA600FE427A45F7FF75811766B9AD018921DE96E8AF0227405A7A752448095BE78FA16DA7B9A8439A4ABD0D29DC47B128A8777921DC2E73E101
sk = 38A0D5F41D7DC1896EFD1B45B04856342DFA1132C7F742C89D311C9D211ECC47B0FBD1966E7DDB27197F6401E30D37CC8CB6C2D560EDBF4A063539BFDFAA52D97802652A299A955D18FF253CE8528339E1539D60216D16AF30DA5C7C220FB587536100B638DA38F505FC6D8724259501E7FC037F781BBA379CD3839867D290FF2679C925726DF80F09C1C11E16DAB4CDDB647C716623B96A99018289196013C72B51D9C056F07C58F62B4D7E1B45ECD4AC34A8F5E0F3A7A64F3ED0F3423A04D4C630CDCD832BDA5CE714A36EC5007DAE0097883B09743D3D0D2BB23CDD2632AA0350D58E16B2C04E914B5E4904E4BC79F30412784EE926A8450436B0843C64FBC4B29E996CCE1501A0B006A2CF72B4B501E86FEAB5DA59E67A9D7B56D053E79E2293E3F84D5CACA9F101FC146A74E029B136C56FFB3C734D5CD6F99A6AA600FE427A45F7FF75811766B9AD018921DE96E8AF0227405A7A752448095BE78FA16DA7B9A8439A4ABD0D29DC47B128A8777921DC2E73E101
ct = BDC7C8F76ABA0194AF62D89B9C5D5B0BFC4D761DF50F37B6FEA6B2152D3502D481252D8BCA9607013BA0D8BBE14C773E29E8C6B26FBB01BDA396F0C79EF0223F485A0D772271421BB304C8BFBC17CE0229193FD572DD55F22232075FF92CF9CA401968A740FF9223438AB46453011B913E46BA24837B084BF78F50C08F5688E339155FDDEFC02EA73FCA112CF337994E99FEB4197FE1DD3C916190D70712E5A3E044FC93012D6DFFFA2AE0C9E7468FC0BF18F7215586B893B1A82522CCB49C8BBA4958D086AE447E3F728CB5D226C0E3D8441B5AE8DC35471E7762005E02E90F5967B733BBF91892C6161DF290FCEFB99D62EFE5699BCB5B46461A582B95930526661A4DED3DDDF7652FA26153F14441B8E701F61F20D3AB5FDC3FDA0BDE5404C526D1AA0D809231C0DCBC0A96E9535A6D9C7ED2FED9E92B84EB16802BE9C9D32EDF69A9A6BDA30E2B00F2B73B108499499829C416F24AE55877
ss = 694A4A8AAD90783D407AC750E7B787A1

count = 15
seed = 669C4EF8A051CE201DA65FC4BC34D398EC1F806276FC5D987AD71D93BC12DC8F107B58BE6E8422A0795C88CB9A0E7488
pk = FE2CDF7A0ED6A9DACE00C76608D0BD33C07C8BBAC34F9558F69AECCAE7343179A4EA723676C7BA725080FF81B01C9B96628E9DBFC8A000B48679C63F10AB47077ED339F8304AEDDF12E5A0B07C5F618B82F55A38BF9F7A8BC609B93F585AE9A84C0BB7666320BA0CED79A14FAC00B75391565182BB83C1437C2013965EAAF5D308B3BC4B89F2008BDE4305580370A4DBC40BDBC18E77D7F646CC519F503D5627673AD6BE01F5480D2A33AB8BC0A595DE3213D679C2477399F42826CCE2E9769F66EC9B54D4C43C82229DFB98D55EF5D4CC5291CE9F5E957035AE8E000402F80121D9E7FA3F013247950C54BA77B5F60D68C1D81FFAD450F93179B10A73F84B96A12273338619984B6D14BD3F5EDE3543D4F8017854FBA247E8BF44AF7115D269E90B6573694E7EC8BDFC5130205E1E0C2838D52A0CE794025B68674382025F92B7EE382E4E706FE1B800
sk = 97B5665676E59E3538EBADAA8CD50DF142AE6DC4AE262206EBABA48C74A234C1138525803526A8C29DC7FD00FE2CDF7A0ED6A9DACE00C76608D0BD33C07C8BBAC34F9558F69AECCAE7343179A4EA723676C7BA725080FF81B01C9B96628E9DBFC8A000B48679C63F10AB47077ED339F8304AEDDF12E5A0B07C5F618B82F55A38BF9F7A8BC609B93F585AE9A84C0BB7666320BA0CED79A14FAC00B75391565182BB83C1437C2013965EAAF5D308B3BC4B89F2008BDE4305580370A4DBC40BDBC18E77D7F646CC519F503D5627673AD6BE01F5480D2A33AB8BC0A595DE3213D679C2477399F42826CCE2E9769F66EC9B54D4C43C82229DFB98D55EF5D4CC5291CE9F5E957035AE8E000402F80121D9E7FA3F013247950C54BA77B5F60D68C1D81FFAD450F93179B10A73F84B96A12273338619984B6D14BD3F5EDE3543D4F8017854FBA247E8BF44AF7115D269E90B6573694E7EC8BDFC5130205E1E0C2838D52A0CE794025B68674382025F92B7EE382E4E706FE1B800
ct = BA99787C22449C2F8C9BEA41CE3D6AF52BDC6AC86EAADBCD63FE9CC2DB9289E56FE6785B1F1223F66E2623F5E0C81C1DCEE787DF1AFF010EEF7E9C9D131629A4153B3061B5BA517A66872AE21EE6CA7C1882161375A3EDFFE6CF04FFD6392932CE627C0739EEA06D7A4A3DAE2A021FA0DA97E15E0DE5933A7C71FB5A9F1DC7882A8AD316AD002261FACE947CA78903C3A013268413015D19F643BBB4183C01041323698600EC8D35DCBB2B757EF32E91A1E8BBE12D9019FBC9AD21E4295131670630E461A07BCBE9097793C7C6EC55688A0B6E4D5C1ED9E8448CB00146F70CA8BD35ABF9DA05ADB017ACBE2FB602F379B8FD1147CB11647ABEF755153060B7BC476B756251C1839CD0F3E1833EB377294B7500A86BF5A6FFA4F8753A09E4E280DFB823127C38C82A39F8CF499847D3F81E1E9574C9119C60D37C8B83AFA661DA9904F31E3667B031B50120B4C3560F5312DB42EE0A1C83C396E2
ss = C13E65613329AF85AF74CEF46B8384CA

count = 16
seed = 9DEBCCFE818F6B5204DB4EA09C03EC9A19DCF1629C1527685B8A29776BB1DAAEC45F8ABF8F0ADC9A8C8BD6E2DF6D8048
pk = 79D967425432D24A0C3977DAD8B1B74440AAB34950413665F6F0B5CB40C96B78550C950A5F7CD2AAD088AEEBA931F97D0277B11964E501A6A741C08C6445D013B8AAD9CB2DF9B88F9A08E481513016CD46DD0EE1EB56732369A8C8CBA34A2F38947E2290FE61593BBFB1D28DE300CD6F0A175773FA411BA7E6A4ECC136561F1F98DB691603FC53E71DDB911673AE43AE5C6ECED2D899CA95EEA8C26163C5671EAD30F6D800F03DFB43C7A46C7CE485993A489E785A396AC1719C30F751AA9E9A6BC7A0E28FFB7B60A4F4EFC95FD3D8B3694155CDE492DDD10D5A1902C1D096FFD81C8D771E3F00026A9EC646CCDC973A0D4F92C31A1A7EE05A8CC41ACA004BE01DF8A312804F1F905B6F7F099C99885A8213023B2863489779C86C1DF6D9AEA76A1586A4EFDE52A965516D457EF6A9537B7FFAE6B5D31EE6F1580C0DFFEAA7C9C00E3FE7D48720CEBE00
sk = EF99224A03A85A46EF115474EC5B5D628BD0CF95F3E495FD375B444F9B9C1FC8A23857EEF27896A08FE7B80079D967425432D24A0C3977DAD8B1B74440AAB34950413665F6F0B5CB40C96B78550C950A5F7CD2AAD088AEEBA931F97D0277B11964E501A6A741C08C6445D013B8AAD9CB2DF9B88F9A08E481513016CD46DD0EE1EB56732369A8C8CBA34A2F38947E2290FE61593BBFB1D28DE300CD6F0A175773FA411BA7E6A4ECC136561F1F98DB691603FC53E71DDB911673AE43AE5C6ECED2D899CA95EEA8C26163C5671EAD30F6D800F03DFB43C7A46C7CE485993A489E785A396AC1719C30F751AA9E9A6BC7A0E28FFB7B60A4F4EFC95FD3D8B3694155CDE492DDD10D5A1902C1D096FFD81C8D771E3F00026A9EC646CCDC973A0D4F92C31A1A7EE05A8CC41ACA004BE01DF8A312804F1F905B6F7F099C99885A8213023B2863489779C86C1DF6D9AEA76A1586A4EFDE52A965516D457EF6A9537B7FFAE6B5D31EE6F1580C0DFFEAA7C9C00E3FE7D48720CEBE00
ct = 509F931C69B91B463F9184495F8036417E4A7D7E59085CE1C500F438B088FF86806487AEED6C644FC04D6C470796F39C18CB689BCC1F01DD65379668EFB5749EA8002F5411B131A6A8F733E7DAD73C553EB8A62428F854D8244BC5137B921ED3F5C5D3E85E981FCA403DA91106023C47ABFF15A8B8B12BCAFFB33E0657C4118C4F9B0B632C77D96807AE509281207E157577E51426897B1D3DA003A30AC4813D725CD8B50141968CCB11877104AB6BC2F30BAC781C228C0378BDF38C79ED5772E505F3B9EAB2F5F075FDACB1C0FBF54B2003EC1EA0436D18F2209100391321A03A5EA2100AAAB510267C97A4C51E99BA40F457B831B8DECD43C51357BB711392B9C60A78B65EC4EF46A9C7A20050D690961502F2E58D319EEF77CA1AAD1E6BEEB36EC89619B38DB2862AFDA4E4F48C359CBDF49BFF88C359BC53EE9416F2B368E410270CA28F498F7D0055AA195855AA118D011490262C8875D8
ss = 71CF8ED3966D7D1DC1E355644F91FAC3

count = 17
seed = 8098AE7A92C10F707D405F7DEA02C2EFBEF44EFA132BA8AEFE81BD45E543ECEC74F10920AE48A40B0653D63532517F2A
pk = 79E0A7998D558892479C2B99DB360986D18A7BC05EE4CAB08C8EACA5FB1055F535DA75145F817CC1657E756E107AE19D43E5D1C80E7E01AC367F1CF7BBDB785FEEF6AB0AF79504C9561FCFD0EDE7AECE5C70DE22F0D81E7CCF61E248D2F0AC8C556BFEFE25DDD11C06BE87068C01035499FA9D6B54E50D3670C0A6B018F5A93331223B6CCA306B8CF5D3C7F3098A5D320C7C345A329B0A457177C4C3C5B2E18251EE885D017C123958F3AE6E47E38AE36E339038DCCD619D611BC1C303BB0DB7575A0A1E8D64E8115EDE663A90A995896D48CBF2150F30D1037BF501119D23ADCA8E66C78AEDA4E418D1CD4E898F95583C892784E563BE2AB786DD19C41BA07A915685E5DA73830860851F796B89CF02C85F0178D832055F8E098A2C942DB4146B2EE69FA5DAEDC462AA81695F9C1DF98BA2CD9F0875BEB1F8E5D34573610E796A3DA5B112C943888401
sk = B12F6FD965EA9C5B947DB80FC60C83D5CE44DDDF0CED4891F7CDB79060DABDD40C6B00BCEADB3EE4D5D7E40079E0A7998D558892479C2B99DB360986D18A7BC05EE4CAB08C8EACA5FB1055F535DA75145F817CC1657E756E107AE19D43E5D1C80E7E01AC367F1CF7BBDB785FEEF6AB0AF79504C9561FCFD0EDE7AECE5C70DE22F0D81E7CCF61E248D2F0AC8C556BFEFE25DDD11C06BE87068C01035499FA9D6B54E50D3670C0A6B018F5A93331223B6CCA306B8CF5D3C7F3098A5D320C7C345A329B0A457177C4C3C5B2E18251EE885D017C123958F3AE6E47E38AE36E339038DCCD619D611BC1C303BB0DB7575A0A1E8D64E8115EDE663A90A995896D48CBF2150F30D1037BF501119D23ADCA8E66C78AEDA4E418D1CD4E898F95583C892784E563BE2AB786DD19C41BA07A915685E5DA73830860851F796B89CF02C85F0178D832055F8E098A2C942DB4146B2EE69FA5DAEDC462AA81695F9C1DF98BA2CD9F0875BEB1F8E5D34573610E796A3DA5B112C943888401
ct = 0B2DF56B13EA8EC412B34EB6B795907BE8CF9285D0F54F4BBAD2F616AD052BDC343BC037B7CE43338824A080B168D55F19F01675994401288643228347B9CBBA4F081773FDC6AA62787A9E9E289A0029D53F64019BA58546C006428E2FBE75172D3357F36D0CE9D667B72571200223CFD443E4A1896C1585A3A2B8AB8BC74220CB17A6A7ACD6A37F3580671FD2DF73028AB52E26E74D53F9BF3D709F3904706B667E9A3F017274A3AB8BAACA666693C072E6489568B3BC1C17652D7307FF3011712C385E36F3AF2DABE643B2FC3C350E4C02C8E828E7B9A297F2B300440EEC731D384FD2DF79B611FBD9758E118B64AE153B67530A188DD19A642AF131E90CA6DC213292B050432544D5ED45C587437F5B1C0253E620F09F8692D5D134D318B71A5AB394CF61D3373D052F6658F55E0E355AAE8ED0DB3F5483FA7FDE38F44D102D71178CFC8CE626D8002E49A160432A1CFA03473235E209A8D6
ss = FACCC640638E1613E321D6A9BF931BE9

count = 18
seed = D5F23808871544E9C1D6EACE2028362B48E225312F77663E9F78CAFEB512B908CD9E25875D61A16EC615F4B8FF826856
pk = 9E48237FEDDBA4C4E8E9D431FA629F90A93B80DA0311A7DC67FD8E99EAF2C786DF31118C1A3107A6C1A473A295F84AA95AD4A9B6621901CB875A9627E676338F4BFD14F052D7FD7C256177F7A31DF73C156580B124709BAB66B4A05D892F24D7B9D5412A65B3A21A0165D8D0F30036AFAC724353B41204A7710D07582EB3F575937BBB6CB410AFA5A44DD9756E35B89A9776E0D55E37D25E6C91AFCE336D38FF840ADE3A01FE155957CBC62FCEC03481C775BE0F27A563D5C9FA589159519085080752E8818DE911590E4D97CAECAFAF87C0001E5455474EA8D3050052DBB3BA1F72E1B1A7BD411B629D7D22315EF5C4CC1279B7FF3C84629CF8374E59294722BCC5E2AC38C9E7357A910D84ACB7F395D9D101B2F291ADBAA4AB888AFB02FE84747BA6DB45D23FACC2D4A0E00DB47D2ED9E698733DE9D3EB70781655E186CCA62E213B7F334023715B01
sk = 9F52AF92CA165FDC38788F2B59BA02E0D21361DEA07AA8A47E2CD4A35DACA8B09C7145DFB568DCA2D01D98009E48237FEDDBA4C4E8E9D431FA629F90A93B80DA0311A7DC67FD8E99EAF2C786DF31118C1A3107A6C1A473A295F84AA95AD4A9B6621901CB875A9627E676338F4BFD14F052D7FD7C256177F7A31DF73C156580B124709BAB66B4A05D892F24D7B9D5412A65B3A21A0165D8D0F30036AFAC724353B41204A7710D07582EB3F575937BBB6CB410AFA5A44DD9756E35B89A9776E0D55E37D25E6C91AFCE336D38FF840ADE3A01FE155957CBC62FCEC03481C775BE0F27A563D5C9FA589159519085080752E8818DE911590E4D97CAECAFAF87C0001E5455474EA8D3050052DBB3BA1F72E1B1A7BD411B629D7D22315EF5C4CC1279B7FF3C84629CF8374E59294722BCC5E2AC38C9E7357A910D84ACB7F395D9D101B2F291ADBAA4AB888AFB02FE84747BA6DB45D23FACC2D4A0E00DB47D2ED9E698733DE9D3EB70781655E186CCA62E213B7F334023715B01
ct = A57904C3BFE47E496333B5EC33D60788AE7948A6C055E9D7D59DF4AB7C02AE7E785A2F38FE70E6D0F9086AB5E020D399348F27C0891A02501558C9E97B46A444A6AFBF811DD7D11CF79AF001542A92FA0E59D6C5F927FA2D2CC9727B0118927D500B0DFD05BAF7FE5629314F2502F22ED8ECDBECB954444984EC84E509893C70C65E4D497139986F55701BC62CC33C97283EE5BD5C2832571731BDEC0A563966854382A90114C5F9CD142F8369F4176E08F563321F662F4D3AFD861239436AA25F10EBFDFD4D3F8C4A832E3510A3704C1DB4C206262EBF8B41182901E7A4DEBC54FFA218D0AAE0CDDA2C2E5909ED71E62E0FAFC99BF53AF55E4BEB2998D0C2221907F14D35751C0B474786456CB14DA7E79A01A6678BA6AA60FCF8666822F6FCF71E1367DBDB2E6E6315FE4ED24A2351A3DB86278147520DB6F96CEE79FD812EE76CB1CDAC8F3424E201792808BF5A73344CAECF081E2AD720F9
ss = 019ACAE70F324EF52D715966BDE79FBA

count = 19
seed = 822CB47BE2266E182F34546924D753A5E3369011047E6950B00BC392F8FEC19EA87C26D8021D377DF86DC76C24C5F827
pk = E78527604A03B2262803424C585D407333700CC6415EA598DE84B3A00B553B2CC4EE433D96D5DA3A007C6A18F715F4D90C8CD4DC43F200772D2606F083D85638C12B26512093D1A3724E9EB4374730BAB9F7D7A30ADAB87786979D720C1E337893BDD053AEAA6AE384A972585D00062E8D8F4853FA84E5C1715559A090F1EED6C1E5B7F812B4D3CE8D433E518A66396AC07223932ACB9772FDCA3A70C552AA96AA3EA90F02A2BC8C3C2378D927CFB0E431EF704CA1BBDA0B047D85116FDF6A8DCA906689339DC809C2C00AB2D3C9F88FC9196D21D1CCDD947CFB0A009D14320960AAD5D5B5742CC5FEFE262D8C5C150C7230203D6A1872F84497F20B20F57196F715B528773200A1A48AC8157810A2BED91000DDB9C3E5AA0CAD8CD3EC75F0F1852AF7645CBD60498191E35EEB189CC31C075A472A60E8AA4E9B809CDFC4B2E2D8E9595ED790FAEBA500
sk = 851EA90FD3854CBF28FE39FB81F68E4B4C094361B4B3511F46403B2955F371F12DEB940ABC80C905BBEF0800E78527604A03B2262803424C585D407333700CC6415EA598DE84B3A00B553B2CC4EE433D96D5DA3A007C6A18F715F4D90C8CD4DC43F200772D2606F083D85638C12B26512093D1A3724E9EB4374730BAB9F7D7A30ADAB87786979D720C1E337893BDD053AEAA6AE384A972585D00062E8D8F4853FA84E5C1715559A090F1EED6C1E5B7F812B4D3CE8D433E518A66396AC07223932ACB9772FDCA3A70C552AA96AA3EA90F02A2BC8C3C2378D927CFB0E431EF704CA1BBDA0B047D85116FDF6A8DCA906689339DC809C2C00AB2D3C9F88FC9196D21D1CCDD947CFB0A009D14320960AAD5D5B5742CC5FEFE262D8C5C150C7230203D6A1872F84497F20B20F57196F715B528773200A1A48AC8157810A2BED91000DDB9C3E5AA0CAD8CD3EC75F0F1852AF7645CBD60498191E35EEB189CC31C075A472A60E8AA4E9B809CDFC4B2E2D8E9595ED790FAEBA500
ct = A6D8DC0B0DCFFEF0E34728FE4DE79A1D59FC9C9AA0FB6361EE18451550D69B313758E1DA7BE3C9E6783C16DEB7B00603109ACF879C56012635C2925DB4DF0D2FEAA89134C1FD33A487C852105DEFA6DF4BAD559B645C96049811445AD49F1ACCA668CFC12D0561747C4A251CC501A6751C36ADDC183AE86DBE1794DCD7AEB9CBEA6ADF4F18011AC2624D0B0E4AE3377AD2E4E7458693FB3D04C4020F3A008988F5DC8F0801232AD1725DB94C378425EBE6CCB3C6AEEBB9A774663AA8A72988A2C6380F56F2FCCDCE3497903B9E9AA3EB6C0809F21ECD5442E8AECB01FCD8CF9AAA3BE92A2FB0D5D43E5703F8939BF15AA6935997B9DE26A4D83FC4A9CA42D4E89591C698640FE3C5E5DFB925076A393B74CE014E8D257FA543FB29F915C5274F74EA862F6065E93FEE25845322ED62ADBB5A0709C7072F520C9B220FE8EFC67B3F5A9AC21CA2B12EE7001A8BCD24CD1F7776630D9F3025034D2D
ss = 031C5FBEE7FD72BEA84A703A739FF9B8

count = 20
seed = 81401DB81138D6874E91B7C11D59596E4ACE543F5A3471B6FB00999221765FEC3CA057ABE20F03B2D59003375FD71FE8
pk = E5ADFE2A2841DDE0CBAB4F9A9E8D4EC1A07FA5456ECC04C76AC192B968BC030073D066B1D9129D6B6A74092500E3E812B18E7A77959701696C5C603FADD6E1415AF1F64FDFA173C967195A6A018F3946C3A446AE08013EB73ED4F83BFA103F1E7CE0DFC46D566021C306D197740041802A3CA75CDD8984AD4534D7988A338A31639AD33090488EB76B3120346CF64350EE772C8031A74C7B1362F96A6E969D11B61EDEFF014647540DAF3C9A78BC2975CCE93A2A02B9EF54B3F767D21A5FE9C2D885716079A207BED74B55C34D1D2E4FB8243FCD839916CF1B3F16009A2118E0F012AC828117209E74CCAD66C80D9D7B4BA06330DF23A9122D82A5043C31AF133A6D3A99169C17FC8AF5A42765FA3D96F26B011B9DD08673C53691B011DA58AE666570F8849EBB66855BFAC516720944B65A4B71D6D4F35EB4CBF85E61C02FA9347EA39D8042ED292302
sk = D304C9389CC973477F169788ABCB9D517E067CF2D7B0AF8B6621970053836C9B24568F4A35E007C88CAADE00E5ADFE2A2841DDE0CBAB4F9A9E8D4EC1A07FA5456ECC04C76AC192B968BC030073D066B1D9129D6B6A74092500E3E812B18E7A77959701696C5C603FADD6E1415AF1F64FDFA173C967195A6A018F3946C3A446AE08013EB73ED4F83BFA103F1E7CE0DFC46D566021C306D197740041802A3CA75CDD8984AD4534D7988A338A31639AD33090488EB76B3120346CF64350EE772C8031A74C7B1362F96A6E969D11B61EDEFF014647540DAF3C9A78BC2975CCE93A2A02B9EF54B3F767D21A5FE9C2D885716079A207BED74B55C34D1D2E4FB8243FCD839916CF1B3F16009A2118E0F012AC828117209E74CCAD66C80D9D7B4BA06330DF23A9122D82A5043C31AF133A6D3A99169C17FC8AF5A42765FA3D96F26B011B9DD08673C53691B011DA58AE666570F8849EBB66855BFAC516720944B65A4B71D6D4F35EB4CBF85E61C02FA9347EA39D8042ED292302
ct = B44C6CB690A599DA437ED550DE19E05B6DD374BABF7F189C46F209CB261D4B97ED66370B1473DF217BB466B671C6E428E996E7491BEC00E407B27259B3DAA431DEEAE11D337F8B2D9758675B37D1A550DCECB489A5627FD4AB9853B1329ED6A79083E5351CEA79E2544BD4BBD201B81F8F66078690C7C64162F7B4ED2E92A5F806D5B6DABFA4B29D80E6B885695377E6CFEE0A8BD462AF401F62CBF52FCFD2FF7B911D2D02ED29685034344E5531EE7610AD97197CC38C9C935A2096400E196D13D883A7F0583029056F7323AA4D89DD8E775F189B253FC8C7EE4D017E1138DD5317812A4744BD3DE8DA014D29FAFFB81D3CC751701A65BC1539F92FB92281760B69EC962AAE6FC762D579F0166CFFBA0D96019D1C5AC299FC2FAD6E55FFCF84B6A9363A0129766D94B218B7C556B938B6CBF510B0A40D026D99A2FC45E6F48BCFFE7D8AED10C24EBD016261622D7CD57BAE2A0BB48E706D5124
ss = FBE3D8D78996D62A3652F8B86D15ED92

count = 21
seed = 30B5DE5B73681EC08AAA03F6F2D2169525D25F4042A5E3695A20A52CA54927B85F8BB948FC21DF7DEFC3910B28674994
pk = B398CB02EC7FD85A5FB95BC0028DEB12D5E18FCCDA3E9CCBC453D9C41EA0D84A790A4657E83B7D50B9A06F607E195C6DC04AF7EBBD0901210A54AA537A9D0A03A41C05D53D67680623279A4304F59472F8E8463C7F20B40F77F212E894F8173F79B04165F343B6E73E871D767F01407A3B7EA88CCF701524226E425B2E2CF6D3636D5EFBBDE4FB117A5ECD64825D80D9FE4E0A3EBB0BC948DE9CB2053ACD9F6879C2FBD300DDC67DD715402DF6EBFFC4D55E7ED1DFA935817C2EFE2DE6991F579CF6033538AD4D2ECE4260DF01BC398F269E7FB1BE66FB0A23F89C013C53496938380DFB64BE070A27AF25822A9B1283703C1BAE428B7BAB4403665946E689E2A21D4C38E6A7A5C8E1135D181570FFB3BCA80167267DD1B09A00F3A201FDE34A24CC30B46314CA4D9E793CBC872798CE511A1F0AC40C580B19E1A8FF78628E400878870C0DFF0E84C701
sk = 89A6E3BE304A3518FB82B18CA730F0B3B1B7DE5CF0A30D1030216C0057C368AE8D6FE4565D9D5E0540B62A00B398CB02EC7FD85A5FB95BC0028DEB12D5E18FCCDA3E9CCBC453D9C41EA0D84A790A4657E83B7D50B9A06F607E195C6DC04AF7EBBD0901210A54AA537A9D0A03A41C05D53D67680623279A4304F59472F8E8463C7F20B40F77F212E894F8173F79B04165F343B6E73E871D767F01407A3B7EA88CCF701524226E425B2E2CF6D3636D5EFBBDE4FB117A5ECD64825D80D9FE4E0A3EBB0BC948DE9CB2053ACD9F6879C2FBD300DDC67DD715402DF6EBFFC4D55E7ED1DFA935817C2EFE2DE6991F579CF6033538AD4D2ECE4260DF01BC398F269E7FB1BE66FB0A23F89C013C53496938380DFB64BE070A27AF25822A9B1283703C1BAE428B7BAB4403665946E689E2A21D4C38E6A7A5C8E1135D181570FFB3BCA80167267DD1B09A00F3A201FDE34A24CC30B46314CA4D9E793CBC872798CE511A1F0AC40C580B19E1A8FF78628E400878870C0DFF0E84C701
ct = 5A4033674303F5116A5EB8B8FA8D9C745A8459F1997B5F3D21761E68552270C3C53AD68C76C0AD179C9781633326017B8122E4F5707601C178C777A5A4587D572C6EF1702228D26B428EA4B29876F03120C14B3DBCE50FF01AD329E0836826D54BA969AB6AA3DA251D6133CE270299DFD7BE932A17DFA7C288AC70C780B4DF72396A0069633B83BA9B77CDB79E00FE448133B3EC289E36E80DE32477B4C64304F45B007D0116A979E983E3E177C26190B30B68A7C246BD2CBF56C572EAB6C1FE3E6B7E0AAB44F725DF6417B8257F505C52C93FD195459792E93918020CB1A3FB02844A08C99CDAD3CAF60B92C3E60925BCFB6C6EAB9B9AE302A8AA31A496BCC3750CBD1E2F45EDF63B52711649597B2A80D700E529B8CDC733018D0A1A885B663DDBB6B4D895A063BAC07E2F136C06E10793F0FD474DB4DC6EEB466E22B73F4A16CF73F80B73654DF0005F9998BEA5F0910321449F5967CE8986
ss = 3D7E8D87B57B2B32DA794159078EA043

count = 22
seed = E335DF8FC0D890588C3E305AC92C7160FF199E07C85760A828933750E3FED8C83B0DBE802234481ECF890A32D7A2884F
pk = 617B81E845C0D725940B3F7B1B973AD95B34B22C6AE8248D2FAE9D53C27516B90D7D64D04046BF49EBE7E3B867E4846A1C0FBA53610901890F5D4E38B9F66AD0FFB340131B393EE8F1DF5071A65EF174A4D119C44ACC8A810AF76CD857ACE288B82BA81CB111BAED16226020710123BFD9AF426AC20CD6E91261D8D963E3D3B6B79895013868E3632F27135B73E4FBECD8CABD31617C4B226F57D9A1BC01E4F935DC1A9701FB3F3433CA3E7A2EACAD2C2177D731964646BA47A3C2CC8F81271AB7459F2041D0B0A1FE6390E4D8849C1078A61174CD9872ABDD96E301E1EA3CE9351D90CAB51E23045E00DBA8249F8BC12192E05080202F34901ABDD0A4A86914CA52B2AFB901A3DEC6E070FD1D953543CBC8016D57F3408A1EDDAEE272E7624F9FA5E27E3E103156C046E8B2BA0B4BEDD4F9528DA6F17AF23E4149D08A1B313CA674C74E168C133E3100
sk = D569B935CE015C85F792F8F7FB0D83C401514B7E7AC373B9210B7DF08A8B12A9C0385B16BC8D71C7B6945400617B81E845C0D725940B3F7B1B973AD95B34B22C6AE8248D2FAE9D53C27516B90D7D64D04046BF49EBE7E3B867E4846A1C0FBA53610901890F5D4E38B9F66AD0FFB340131B393EE8F1DF5071A65EF174A4D119C44ACC8A810AF76CD857ACE288B82BA81CB111BAED16226020710123BFD9AF426AC20CD6E91261D8D963E3D3B6B79895013868E3632F27135B73E4FBECD8CABD31617C4B226F57D9A1BC01E4F935DC1A9701FB3F3433CA3E7A2EACAD2C2177D731964646BA47A3C2CC8F81271AB7459F2041D0B0A1FE6390E4D8849C1078A61174CD9872ABDD96E301E1EA3CE9351D90CAB51E23045E00DBA8249F8BC12192E05080202F34901ABDD0A4A86914CA52B2AFB901A3DEC6E070FD1D953543CBC8016D57F3408A1EDDAEE272E7624F9FA5E27E3E103156C046E8B2BA0B4BEDD4F9528DA6F17AF23E4149D08A1B313CA674C74E168C133E3100
ct = 37A3D8C7E16E0E18593EA9C1B6E0BC040F69ABFC622886EF650C4EB5FD1B47CF77D4721C5E1DB49127F54E9917BC5D40549E9297061B007EA80B5E4EB433AF558613C891651564B834D959B4206DA1819D448FFC27A2DD80ACD65011D7AF672885C37C6384572AA16DF8EB9D1A00C477F77578EDF36A4AF373EF6CCC9D05655EC45982C7B69BF88174808F4FE5A9FF7E892E0D0BCAFAECC2C4187A08637659126B8BA4510116B4E7F62B7DB87AD687BCB6346CDA4BFF940DE098CD150BAB054E6F9C03B49F21779BCF1D2414C0EAA56D2301130E269E326E802F3C0014DFB5FAE901B4BE916824266D76B80B2D918CFBBADA3D634718BEA7666D94F28BE9212E076AB7C217832FA343C78CF237DC05AEDC0402519EBE46EB6B362A64B691D05CA9C72C80CB8F2479E927145595DDB3D9A6897C9B328D75CC010BB5AF13357AE0577293EB4099D3103302E74BAA27FF6684BA9243B66D2533FB35
ss = C24173C7DA58B449DD977568836FF856

count = 23
seed = FBEA1BC2C379F4F8FDCB0DE260D31CDB064C9EA9B1D6DFBE91B3692ADD1D34DEC9C9FFAE7BF5E72ED2743BA3F9F2E43D
pk = 4771098E0B07E996EAFC696CF6C8E10C4ADE3FE1B4764793CBEE4235F873321E9F8F71B2357EA46E481138B3433790FAD710CBD1BE89018F7FFFA5FA3B63BC98E3A6BC83376E4F86FCB866A7756D74D8BA45C86B88925B35352AD0345AD95EB4AC5CF53C6998133C57A569CC1602B9B0897EC8DA43E75291BFF1990DC01CE1B5D727B1447CB5DB432FF62BFCCE6995E04FD81032D276D856F36936D7E05A5CAA76CD90CD013DDA3C80E5FC28C72406C1905925FFFCDC8ADFA41CB12FFE5D2FCBE9DA6A2B567EDB9896B6A03382EFE79FFECB40280A12C78437808100882D45E5C2C2E1EBAE25061E04F14C540849F65CF39E701C46A32988EC7517176BEC1E616A42ED258315A8991B0E1D4158F08571EC0402358A61FF669CDF1E5FCBD08D75C988A6875F7B197A45AEEEC2AC2B43024C304B8B357D002EB51F856AEAA4BDD062A09B8957927FBADD00
sk = 5CBB141C2763425C274F7404FE530D91164BDF5F413B63F4EDDCC47594FFB9E2C7287FD5714CAF679CD3EF014771098E0B07E996EAFC696CF6C8E10C4ADE3FE1B4764793CBEE4235F873321E9F8F71B2357EA46E481138B3433790FAD710CBD1BE89018F7FFFA5FA3B63BC98E3A6BC83376E4F86FCB866A7756D74D8BA45C86B88925B35352AD0345AD95EB4AC5CF53C6998133C57A569CC1602B9B0897EC8DA43E75291BFF1990DC01CE1B5D727B1447CB5DB432FF62BFCCE6995E04FD81032D276D856F36936D7E05A5CAA76CD90CD013DDA3C80E5FC28C72406C1905925FFFCDC8ADFA41CB12FFE5D2FCBE9DA6A2B567EDB9896B6A03382EFE79FFECB40280A12C78437808100882D45E5C2C2E1EBAE25061E04F14C540849F65CF39E701C46A32988EC7517176BEC1E616A42ED258315A8991B0E1D4158F08571EC0402358A61FF669CDF1E5FCBD08D75C988A6875F7B197A45AEEEC2AC2B43024C304B8B357D002EB51F856AEAA4BDD062A09B8957927FBADD00
ct = 545FC97ED910F330B4BA794B368DA77BBD174EF9A654487FDCEA4406A438B04FFAA75336C67F4EFB6EA650645CE1B69D1C8E44FE798500BE8B169B7063B1ACC4A9E4AEBFA175783796190C638F47669B1EA271DF591F4730EA87BCE2BA2427BCC3A1F73FC94A6387CB4C3ED80401BFCBCDDECA82DDB51F4622B33104E5D4483E8D99317A7AC5CE38FFAFFA64C7BCF551D5E4DFF9723E998C5B8A6C5B73680610725EB29901E15EBC7B9979720ACF893E7A72945D4B7B9F8304E3F3D8DF2A7A80AA6FE71C341968166CFD9A218B78640E8CF268901506D8F391F4B801C6DE231CA5A43E1CE9F06CA5AA5AD7330A0906CB96DD0D914B33F75C98FFAAD43CE6850291ADE9241DFE69FF699FF7171D38E4FEDFEA0114316D23BAB6F9F214E3D49A1580085340ED30FF160EFF8ED54CFA3067DA31DC71D25C2D176B5157ACD7ECD42B55B8D839218B935EFC0141E6103357A6CD3F3DE4EC8BD20DB364
ss = A5D8459E0B0C063FF5696743360F4186

count = 24
seed = 7E87FB886BC3C7C9FC12569F465D2ECD12532E76CC27C65644C8D3DD603B0CB2D036C5974E675058F271D5C82AD7A813
pk = B0CA13F0AE46FFCD00D5DBE90E094F0DA3775987817A4B27A69FBF427827D617B66F48D9C0B6BEA4792F58E08B61A8CB0AA7325487E0000695D8CDF7EFB2B112ADD1A534D6440F298BC6678F67F79D7D2723AEF9D0880EC9C9CF87E90DF158E489DBA4574CFE6037BF2D59046F00FB00FA9105D62AFA83C6CBDBEAE4E5A0E0AD92900FD7B089067E5AB16D61D924127E2C0B4958F39270233921DA842E1454CAA7F95BBD018CBD6B086CC69B50CA35E96F26D8C778CF1459C2B6CE37B321C862DD45077956F4CBCABBE4CDBB5B3F5920EDCCCE03A4C86FD61C9BBF019D74FB3E090A4A9B9D6BD3830EC627D6985529D059077D926480D7D28F76B49EFA9D92032C53C46539AF29F8A2E8015FC1F00081BF59009DAEF6E0E74BB0A3D4DA9056C89C5426A09427732D0A560AAD27DC4B1340CEF6D71A9F7987CC5F3C635EDC523931108D8992083D9DE700
sk = 293ABB6D1C207927945417CF84883EF06C2D005E0DF6FA70D10F5B8E13FDB305CF307DDC3FEDF97D29089D01B0CA13F0AE46FFCD00D5DBE90E094F0DA3775987817A4B27A69FBF427827D617B66F48D9C0B6BEA4792F58E08B61A8CB0AA7325487E0000695D8CDF7EFB2B112ADD1A534D6440F298BC6678F67F79D7D2723AEF9D0880EC9C9CF87E90DF158E489DBA4574CFE6037BF2D59046F00FB00FA9105D62AFA83C6CBDBEAE4E5A0E0AD92900FD7B089067E5AB16D61D924127E2C0B4958F39270233921DA842E1454CAA7F95BBD018CBD6B086CC69B50CA35E96F26D8C778CF1459C2B6CE37B321C862DD45077956F4CBCABBE4CDBB5B3F5920EDCCCE03A4C86FD61C9BBF019D74FB3E090A4A9B9D6BD3830EC627D6985529D059077D926480D7D28F76B49EFA9D92032C53C46539AF29F8A2E8015FC1F00081BF59009DAEF6E0E74BB0A3D4DA9056C89C5426A09427732D0A560AAD27DC4B1340CEF6D71A9F7987CC5F3C635EDC523931108D8992083D9DE700
ct = CF160BDE31A7608A72A6DAFED55D5462B177730AAD95324D89B9BE0AC3D51011EA868E907B91841FE54CF57F37B3BD24E5E7470667BC010B6D9D301FB4E91CD5DE594BF0EDB72C29F3EE6577D308D5F27A80F94D3C01483AC70D65A7B4D4259316E85852D339380BDD261A24B7013B82A14CC28C211ED7D20CC3E0CD88160465B2CC50C8A1322D5790F5A52EE78B481D9E30DE657B603FE94AFB409B2D6240C050FCA59D006CCC82BED7FEDD739A7F2565A3D82FE61421FE762625BF6B4E7A8EDE6F378C77AA828F42DAAB6D76F0BEB4D5C89511ACEDEAC1A43839003CA58A145AAE91504A68A851617F12896F1885E8EEEEA7F7C6589BA64BF4418F7388AD43357D867AB4ABA174EBABE44B83DDF32BBBE5018F2E780384CB78781BE0BB92F68CCA4260BB07B23D8E117BE89B150DD67DC64AE41A549A659DC9CB1D06D223904BF88478798333C370009EF7A472506D33A8EF92ADA940C1422D
ss = D5D19932C9F4580ECB0EAAE0504526AC

count = 25
seed = AD1424E804F306C7FF513DA4C1E8D445AFCA7BC942FAC5C0B335733AAF70693712ECBDE26EA726EE0F9FD9D52A83B1A4
pk = 1573C9DABCEFAFC5CAB63298B29009AE04F01B94B4BB5E82D87BA0985736D529B34E33689CB06CD7BD7CD765402F267E6CEE6196C36B004DDB9041A740C6F5DF87AA7B4193C0BA066A11F2FFDB3E76AA9FE79B972D09F0680806181A704D605E159E02891EE12AE4873DE686A3004E51C1B44F529A3B62F5FCEA4C38E874CC82861E36E05A462A9033FF5DAAF515FC8DF26DFE5B63EFE92FC67C58F4B3E2EB5AA28F0D5C00DF09CF57E106A79DC7704185556E2E131A4FCC83DC325838E6D536EA9BF99C46A5E2DE4CB05178E5D6A442B44F8F2E14DABEAF510EF7009F870D730D868F3D25952ECAC032CBB4B7EE645B6793CA1B1ABEF4ABF1F9FD1D266352A8CC1D981CB58BBF2BDB6DF7EC5C2DC5FD57E300C4799375413FD553B1EE65C0FBF245919F5269445C0BEE0313FD8507571782A4D4B01382E93EFF30152D8575ED0F3A856537A4FBFE4800
sk = 74D87C7556F2671F2D666854A4D6E0738F75A8885AB2972C5C91AB2CA4CB7EB6E9A79AE0C496E90EA77802001573C9DABCEFAFC5CAB63298B29009AE04F01B94B4BB5E82D87BA0985736D529B34E33689CB06CD7BD7CD765402F267E6CEE6196C36B004DDB9041A740C6F5DF87AA7B4193C0BA066A11F2FFDB3E76AA9FE79B972D09F0680806181A704D605E159E02891EE12AE4873DE686A3004E51C1B44F529A3B62F5FCEA4C38E874CC82861E36E05A462A9033FF5DAAF515FC8DF26DFE5B63EFE92FC67C58F4B3E2EB5AA28F0D5C00DF09CF57E106A79DC7704185556E2E131A4FCC83DC325838E6D536EA9BF99C46A5E2DE4CB05178E5D6A442B44F8F2E14DABEAF510EF7009F870D730D868F3D25952ECAC032CBB4B7EE645B6793CA1B1ABEF4ABF1F9FD1D266352A8CC1D981CB58BBF2BDB6DF7EC5C2DC5FD57E300C4799375413FD553B1EE65C0FBF245919F5269445C0BEE0313FD8507571782A4D4B01382E93EFF30152D8575ED0F3A856537A4FBFE4800
ct = 094C0BE692710E360DCCF7D770D751AD7839B6DFB43C171ED3BA2C8007CFC51F6ACF60E4569FE08006E15804A0E887F1470835B9D80300377F958E2FCE71C2B68C4FAE158BE4099272C1AEFF56C2A3336FB3C55788045585A9016D4D97EB3A4BBA76D9A505942CD9B89557B3A0008164D4A2B03A9D1123E9E54FE47D20306C0F0C445D84ED84FA3B62F2B8110510013FB0B87C0DF58C57CCF7926F4F52C33B7CE199F08E0033A7E55EAF99351C1206D8CDE852A084EC73BC6A0F99FA1B934C4C7D6859D6B46295CFA529005DA3174831D6582C2A34642387E8CA30019805265BF953F1C18DDA05BD8C8797178480CFB2E762C35F924BF658040B9FB2E2C0C91AB9FBD24D98FE43DB45564750825668BFD02800B87AB5AF5DADCCC623FAB1CF4B5118EF883B33E5A60D4D95962497601D9C3C712F77F35AF4492B37FF6A79CF8EEDA3610730BCA7E7F9016FA6CC846E59E73483DA2578A5957BB7
ss = F777EF5840DD876797535F8122B2DFBA

count = 26
seed = 7C33CA0E987226C8524DD56C811FA4D1CCF9995B1E4E4DD5B1481974E88CFABFBF6787775C2611CEFB27ED4403EA9B46
pk = 64B9965D19319330455412B2460C01E2C88331A400CCFE842A500F198136C01F134E4D7D460E1E99B0760FB26DB04AD2A944021BE16D0139C26CBAD19C89DD3D2E87B49CF614E90A0518F4256C1B3EF10289E1EBF2C8E5934B775FD899AACD0FB872E80FB91DF5C613C9124B3A00242DA316865459961D20A9821943A3CD7A1B52E8C27DA63E6145FEFCE014E4DB82B6ABF548B02DC50004F3CCC088EC06D9D0BEEF82BF005A549D89B2D24F29B593CA7C47A046E76FDB290C0D30B3382D8C3ACFBB55F1DDFCB943E7F919E7D90D0E97905FDD38C826BD45FEB210008C84F82A241BB03737758563ADC718F63D32E6B7B5E999CFF0AE3A70E9BD1EE824B3F06F45D05D572AF49A402C21938008A4D07B3568002AB0A90867422011974D891D20ABCE11B28601A0AF5E3ECD2F8495150133E5C3D2AFD2AC5796EEE9AFC0AC00E901D9E64F411AAB211102
sk = 013BAB0212D04ECD54B478DAF7274800FBE097D801C58088B66DFF45AD9AA22010B170A6BDAD118817C65F0064B9965D19319330455412B2460C01E2C88331A400CCFE842A500F198136C01F134E4D7D460E1E99B0760FB26DB04AD2A944021BE16D0139C26CBAD19C89DD3D2E87B49CF614E90A0518F4256C1B3EF10289E1EBF2C8E5934B775FD899AACD0FB872E80FB91DF5C613C9124B3A00242DA316865459961D20A9821943A3CD7A1B52E8C27DA63E6145FEFCE014E4DB82B6ABF548B02DC50004F3CCC088EC06D9D0BEEF82BF005A549D89B2D24F29B593CA7C47A046E76FDB290C0D30B3382D8C3ACFBB55F1DDFCB943E7F919E7D90D0E97905FDD38C826BD45FEB210008C84F82A241BB03737758563ADC718F63D32E6B7B5E999CFF0AE3A70E9BD1EE824B3F06F45D05D572AF49A402C21938008A4D07B3568002AB0A90867422011974D891D20ABCE11B28601A0AF5E3ECD2F8495150133E5C3D2AFD2AC5796EEE9AFC0AC00E901D9E64F411AAB211102
ct = 2261F4BE74D14EF8627FCFE874B02B3FF62B2F30DCA91660A73D2FF24765464AE253CA62957865F8C957867D7858E8D1D29110F33B15025DE695985B081E582C954F8B6F1EEA51430386D99F57037FBB497586F777EDAD7E756574C317F299558137C7B3682466E1ADD74E651A0284A229DEBBEEC8579AEDAE20DAA62D6CE02B0A1F4913AD02C05DE48FAF028DE1607756F4B6A22A4C2BF329DD391546528688725465450131B3D31775594496E32FA32611CE9184DC37D5D7C75DDBCEB653163DB4382DA9CB61FAC7147D7EF27C228A17B02C3B13D037D2437A25014EB25477847E6CE71808490B2413EA4526634E7CC30B650656593A7A6F5977D98373BDD403003BC661559A875F1A784B7448F1BEC02402384F0311C9EC507BA3A073777FFB52527127779545E8C2695E79595DBFF5E48C17431B25B793E062337542D2C371812C007754C9E45A00A18DCA0585EBC078942359E88411CC13
ss = B2F713B6EE25BD7E567BEBCC5997F6A4

count = 27
seed = 54770EA1252EA2857D6635151194F5F520ADEA8A41E409FF498D40C271359858FE2B084D5B96BEE087B8E8F4DD4E00C5
pk = 579CAF24BCA30BA44F3214AC535775263C4530AEB8B471F7B92BCF218FCEE3C88F32B03C8202B4B16E88D0F3333A5C2B775FDC04ED6E001A164D01F369A1A8FE5874A86A02D4DEAD4D36B5F5EB86EDCC04606CB20966AF09D52687FFA85B0B45D0A4F2B5F0149805929B56DEC301CD45C9443F116E0A827E22F6676CD3DAE9B099BBE661D2118DD08234C5F936F2102EBBBB0743DACFAFBAE266A440D05715A750314AA1004FDEE91BB4A2B6D8B80E794E56C79A3BC328DA4D7FBDE3F9CD68E53DE212661D1F45D4559EE29ADC7950CE354FD6888EA56CFC7358E80131F9C32241DF762B6BE1349A342DD8E4483FF9CDBF557B5E8C65DB210BC35D33379DE7379F12423427262E261CC1138039779255345E003D8EAF0D3B3887AC221D1DE20A7E11D18EB50D9E5160CC6EDC1C2B0EBEC2AB22626C18396335C9F34BF68A3866ECC081C29A2D410D8D01
sk = CCB073C4B90BE0AD746E26FB093B60C7E0B4194DB681E84934D511565454BE2532A70B22663D775EFCB50700579CAF24BCA30BA44F3214AC535775263C4530AEB8B471F7B92BCF218FCEE3C88F32B03C8202B4B16E88D0F3333A5C2B775FDC04ED6E001A164D01F369A1A8FE5874A86A02D4DEAD4D36B5F5EB86EDCC04606CB20966AF09D52687FFA85B0B45D0A4F2B5F0149805929B56DEC301CD45C9443F116E0A827E22F6676CD3DAE9B099BBE661D2118DD08234C5F936F2102EBBBB0743DACFAFBAE266A440D05715A750314AA1004FDEE91BB4A2B6D8B80E794E56C79A3BC328DA4D7FBDE3F9CD68E53DE212661D1F45D4559EE29ADC7950CE354FD6888EA56CFC7358E80131F9C32241DF762B6BE1349A342DD8E4483FF9CDBF557B5E8C65DB210BC35D33379DE7379F12423427262E261CC1138039779255345E003D8EAF0D3B3887AC221D1DE20A7E11D18EB50D9E5160CC6EDC1C2B0EBEC2AB22626C18396335C9F34BF68A3866ECC081C29A2D410D8D01
ct = 400EB3A03C28F5D9DE6513FF995AC280EFFEA99A4811CA7CA97CD5A0A37FB0D397CA3DF9A98EBB48974F3D8A5E9812DC2E25238AD819029F58ECFF5133D6A0521944BD9EF95A45797CF5032614F0F88FE0F2E07B251CFCA247CBA3BED777EF37A9B4EDFC014617613A4D469D6E0102688FCDF8255596958EAEA19D0734E867FFD4C5508287ED912947EBFD19520E49AC03860D94352366EF8F7FD56BBF405571AECD2BB1012FDAD601FC063B92F1CC6EDCA99C80DF1619B8A2EC24BAA82CBA132060172F424C16BAA43A9D8228E500FD7197A87D22A8A72F8F3FAD0007C54CA676168D7B86FC901FD3B5DEA50D16124F8A70A2627EF87812172A7009A828F1FEC7EF8AFB5E75FF32439D9040F4B1654C7A6E016834C77B549C5CAF251B623D5B934F86743DCFA0D4B4A57DD9CF6522AC3BD19C3047790FD33C90C2B6E161C235438043FEB20BCAFBCC00D7519818C60F5EDAD8CDF80873A92BEE
ss = B5004ADF0D36CFB07BD259921AF706CC

count = 28
seed = CD6CFE94E9C0A1CC4FFDCD2D7876504BE5F50F1D1CA5CF93482943465B268276056F2781F4DE805C138976CA72621387
pk = C7A15174B16833D563B47A3A8658A929DCD5413F80249CD506F1F8E345FE18DAED3CB4291F5064FC44BF06A148B05403CE1A10DD2F41018CFD898325DCDDF46484624317AB7883985F9FC31366F786A36BE40B7C111BC1AB71B61F5D763B625DF9C1C27F498F4C8EDAD8B17D6B015644608EEDFD2130E71F3D03FE9B1269DF2FCCCE385FA13D2EBB0EF6BCEB676121AA14B7FFB7C6AACF1468866AD7EAF31E3D2732C970001243989EB52F71577B978342CF0154EB3A46264892F9FE1D6BED6C0DF4FD626FB633180D3FD351C2951F5F063C2496931DFCE025F80500BBB68C8D4F7BEC39D56556181157D0E8423400CDDA2234B8F34329E44CEE0E8CC6D768284ECB20E5F797FF686D3BEAC587A7F5D99A8D01E57CA3ABAB77733ABA512507E69738E0DF9138CCD0E70A14617FBFB7938107EB18F47F536383CBE96316BBAC8FD787981191DD59B9CE00
sk = 2E889F44E28901E9AC7CA6B2FFFCB124E0978A0CBACB4248BFD50609838543E787EA931800CADBE9F4A2D500C7A15174B16833D563B47A3A8658A929DCD5413F80249CD506F1F8E345FE18DAED3CB4291F5064FC44BF06A148B05403CE1A10DD2F41018CFD898325DCDDF46484624317AB7883985F9FC31366F786A36BE40B7C111BC1AB71B61F5D763B625DF9C1C27F498F4C8EDAD8B17D6B015644608EEDFD2130E71F3D03FE9B1269DF2FCCCE385FA13D2EBB0EF6BCEB676121AA14B7FFB7C6AACF1468866AD7EAF31E3D2732C970001243989EB52F71577B978342CF0154EB3A46264892F9FE1D6BED6C0DF4FD626FB633180D3FD351C2951F5F063C2496931DFCE025F80500BBB68C8D4F7BEC39D56556181157D0E8423400CDDA2234B8F34329E44CEE0E8CC6D768284ECB20E5F797FF686D3BEAC587A7F5D99A8D01E57CA3ABAB77733ABA512507E69738E0DF9138CCD0E70A14617FBFB7938107EB18F47F536383CBE96316BBAC8FD787981191DD59B9CE00
ct = 1BFF2F2830A933A56F9AC4173358755194C458861D8C6C73AAFC1CC08CA359ABFE0E30330BBE6FEA2D0544F3742E933AA1C4D9AC2BAA000820C188A30EF5D9756B0ADF2493591EFDB4369F38DCDD22B23855074E70B6C8B44CDA713ECC8B8E28CA62F50BEA5D50A5D783CB90070134F6D4AB28ABF2E5F819153ADEAD5E66CA1E3B18C531571A063C06A365E359C90F679ECE5E70E9CAD5EF89406CAB86BA04BF78A53E2401A1BA6E6612AE8995F32DB213EAF58ABD0DD58680F7B922D3D5CE2B584E1AD22D45C252C806CDD0EA8D7C2CE6FB82201D61F2BE039C780069E916EB58469BE7B780E73C6501C0739374B5080DBCB4C88C08E95ED5A85875B722C611C8CA22AF9743142505E36AF325D46CB5D8810001A1F788627AADD7B697485CBAAFEAA1BEC48B3A9EBD60DB6761637B83C889F46D4428560C9902F36794FEE7B015835D6CFB9853A43A019350ABCCE41278B4A884C1B57C18196F
ss = 4F8AE0D0BC2AA3FF8717C6C7A876924B

count = 29
seed = 265EB2DE7099E4BD5614E5DE7F0C2A05C78EF3E8E2DD4AE4CB70F3E5E59C8D1D88248303F07DE0C5508652DA66B47222
pk = 6A534BF74C6D58027DC079040D66CB118F898B435017BD11F10F5C17209EE5622DE035BF0D9B7754571173F16764D64BBBB00C6D577C0174476727253EA41211FA32F2BEAEBD9BF9D7D1D24DBDEF9326ED807C726394E0D5F70A6E9C2FD3536BA45AD16A1E223262BD85DBD992007DC4F4AE07D9E8B460AE2D1D6C94EFC898FC4297E603901D15E2B17C0D73180E9BBCE6B0C373780744BF3744161926C53BA18EF2688601D5AD8E623856809A460AB077C813D28FE82A8D91DB0830991047EA507E64C7000A8A89C14119846A360CD4E3D8A9EEAC984710FC5C4001EA827D32416068CCA6E666E1CF610B6BB2CE58E9A85B99358C0F1F9B3CB1C10D53D2EE9BD68A6625D24857585B36AE1E53D7E49ABBAA0074A77FB1AB394A13D07EE9C42DA45935F4CF5A726EC71FC68A2A181F508FFD34E4AB07D786E9A3662176DCBD42FAD52EC598366B796100
sk = 174AAA36410566DC15A5E62874218D7A654BE8CCF785304172D23662455A07E51DAA8BB66E6A7E64506F3D006A534BF74C6D58027DC079040D66CB118F898B435017BD11F10F5C17209EE5622DE035BF0D9B7754571173F16764D64BBBB00C6D577C0174476727253EA41211FA32F2BEAEBD9BF9D7D1D24DBDEF9326ED807C726394E0D5F70A6E9C2FD3536BA45AD16A1E223262BD85DBD992007DC4F4AE07D9E8B460AE2D1D6C94EFC898FC4297E603901D15E2B17C0D73180E9BBCE6B0C373780744BF3744161926C53BA18EF2688601D5AD8E623856809A460AB077C813D28FE82A8D91DB0830991047EA507E64C7000A8A89C14119846A360CD4E3D8A9EEAC984710FC5C4001EA827D32416068CCA6E666E1CF610B6BB2CE58E9A85B99358C0F1F9B3CB1C10D53D2EE9BD68A6625D24857585B36AE1E53D7E49ABBAA0074A77FB1AB394A13D07EE9C42DA45935F4CF5A726EC71FC68A2A181F508FFD34E4AB07D786E9A3662176DCBD42FAD52EC598366B796100
ct = 22146D9D609E135591109A291F87AD1FCCC007F32031320F78EF50765C3EEA95EADAD255777ACFF05AF66F56304933B295353998CF7700A56B3B419F55D09C1627CAF5B23681D71E5E7892B9111295C46B8E97797E3F825CFDC17B368656E7667E2F83CB48F443EF426609998F01403BC546A41DB2CD1CF3EBD576154574E07E23FF8E2CFAFF96D73B458C2E1E0FE3054E0489FAF1DC79FB98E0BF3D49B88E25608A2AB50155C5CA6C080FD21A2A21CAD3B589C0A17F063C7BA4A0954720CD511EB8DA27B298AFA32FEFB1FCEB49DAE3170545609E41A5E72B98F801E15B41BB62543E8B7F6187818146E2C947BA339190E8B83AEF1D3E2D450DF00C14505BBF947C1479EFA96D0C88E6ABD915ADD43867D0017FB5B930BFB8C90EE21D43705696C7D93C1687692AB43F46E4316BB1726C9BD6CD9918BD7E0C24A7A9CC33A40A6BABBC0BF23BB735190064509F719A8623890634F6324517357B
ss = 0DA2A1D17AE0CDE68A74B4BF76ED8D71

count = 30
seed = 806BBD111F27C2668318387BD0830F65EC21A51AF01985EF48D03D64E1958FF7EE5133A4EBF6DBF36329BCAAF65F40EA
pk = A63B2A28909178A9D24BE5939CB25A530E8C9F55344D6F9AA661576D70C7EF5BCC59B76EA915AA0258584EF18FF65A8240321C1AA56400CCE0E2A91E0B439A8FC9DFD2A1861D064B4D3B72797A19874DB3B9339FC88E2E9EAE1945D9DF5837B1B40DD4BADD7A1500B971BC5D9B01F40ADB8F44009C2AFA75623F354F251EF76C0BF0176DDF9E2D87CD3B3FA3839C937FC8874A8843F87726178A689267C1F665D9EF64C5012C5D8F33DF7E9D0FCF7C878E5B2F67277E6FDB402955D65B015269D318F3E90698020D4BFB8B39F5FA0F0F1D76B102B06EFC7FD08B9C017EB568ECEDF74AF679187989FF1187511E66E557B391EA3B899993498B7B54EE052472381520F798539CDAE2D3E708210555F518A1D301AFD7E2C5108AA200BADAA1189F0A53EB49950CB292E36C52CACDC6389A19B79AABDD247738EA94A76C889BFF89F93191817B1EC61AF901
sk = 351FE4313E2DA7FAC83D509F3103CAF7F33C7F7BCFF9B8E2D0728777AF71AA0254E89D9867F83BDD2B008C00A63B2A28909178A9D24BE5939CB25A530E8C9F55344D6F9AA661576D70C7EF5BCC59B76EA915AA0258584EF18FF65A8240321C1AA56400CCE0E2A91E0B439A8FC9DFD2A1861D064B4D3B72797A19874DB3B9339FC88E2E9EAE1945D9DF5837B1B40DD4BADD7A1500B971BC5D9B01F40ADB8F44009C2AFA75623F354F251EF76C0BF0176DDF9E2D87CD3B3FA3839C937FC8874A8843F87726178A689267C1F665D9EF64C5012C5D8F33DF7E9D0FCF7C878E5B2F67277E6FDB402955D65B015269D318F3E90698020D4BFB8B39F5FA0F0F1D76B102B06EFC7FD08B9C017EB568ECEDF74AF679187989FF1187511E66E557B391EA3B899993498B7B54EE052472381520F798539CDAE2D3E708210555F518A1D301AFD7E2C5108AA200BADAA1189F0A53EB49950CB292E36C52CACDC6389A19B79AABDD247738EA94A76C889BFF89F93191817B1EC61AF901
ct = E5D3BDCF2887F16B012B17604096FA3220992E756D23081D0DA75BF7A40F196F3D370AC078586AA613477F5F60100A6651DD333BD518024FF2655609A5D8B82ECEE75ABD75496E90913323E385526509982D861C2AAC2E4D096E3793A8E9609CA1BFA1F9BE8C3E74A858C883A70108C646486719961CFAF18DF04B6F821A9532935894AD55A47CB3573D58FCA9AE6B5804AEF6E9DC6DC1E1B94189CDE10BB5A84182DA2A022560A933D838F293E427DEA7B0AA2AE25CACAC1FF483F907201F947E209A32D3EE86956371582B458A28C76B91F13E2E8B2D3D0BF2D1002586E5A9834917B943539EB3CF993F34BAFBA9557647D0518A189FDA12C04979229257A4BBAB34C9CF659C80DCE1D03DEF4793BFA8C10055FD41D06B629DB8178F8CDB33F7D1F5311BED2B8A6B9ED38F1FFAD72241552E5D06F44269172D25E1A5DB64A285B13C924B2C6B90D6014F983A2E3F8C63E8FBFAD9EB68794174
ss = 5B0C71C6C97FA1FFD3A31B6598B80749

count = 31
seed = AD540A9CE816D6FB1661E5483C44F6FDD00C9E7BD1A8CEDA4B4C4D3697D4F78ED0A56954996CCB7DA96ECB8F5CB15809
pk = 67BB9A00D3AF1BA186ABFA6C21BD46DEBA00570578F03C5CFF05B5CA56FDC4C1A616D6841799F71719D1DCD1DFA3799EA0B5C9D3D004001160B669655F448C6F9FD30C7B985802D0738F0447FC5B3B587B0DAC305432BA8EF5937CA4BF3704F5F08D64CAECCC77D9CEBAFB2DE401A48B0E89EE1E8876A8AD3FEF2FA6081DD522ECD1B1E100EB67536F62591EFB339A0C7CAD7FB70B9D1E7F8B4661E4C1A72C9730112A0901061EE3F466198FDFB528715224152BF0798C92775865F6F08002BC7D89E85E1198DA17FF0EE2E0D65DE16E3129DE09EC260764980A3E01D9F260F81C21E257974FFAC3B31D108F4D7648F1E5B26C0068669582D03EDA60842C8D1E14C92E51A7EF5DC9D7196654C4FB312C15A401013BFE48BE05AB9E8CC633D5C31CB57F6BCD3A8031AE973C9EC8AB84CB97D3062DA6A0D19B0AC0AE4EFEFD5D8C17DC99E8D7B1D694E000
sk = 9BC5315580207C6C16DCF3A30C48DAF26D9E884BEB0556E1A5F29C6DC5D1EAD767E59BAE46496B40C790650167BB9A00D3AF1BA186ABFA6C21BD46DEBA00570578F03C5CFF05B5CA56FDC4C1A616D6841799F71719D1DCD1DFA3799EA0B5C9D3D004001160B669655F448C6F9FD30C7B985802D0738F0447FC5B3B587B0DAC305432BA8EF5937CA4BF3704F5F08D64CAECCC77D9CEBAFB2DE401A48B0E89EE1E8876A8AD3FEF2FA6081DD522ECD1B1E100EB67536F62591EFB339A0C7CAD7FB70B9D1E7F8B4661E4C1A72C9730112A0901061EE3F466198FDFB528715224152BF0798C92775865F6F08002BC7D89E85E1198DA17FF0EE2E0D65DE16E3129DE09EC260764980A3E01D9F260F81C21E257974FFAC3B31D108F4D7648F1E5B26C0068669582D03EDA60842C8D1E14C92E51A7EF5DC9D7196654C4FB312C15A401013BFE48BE05AB9E8CC633D5C31CB57F6BCD3A8031AE973C9EC8AB84CB97D3062DA6A0D19B0AC0AE4EFEFD5D8C17DC99E8D7B1D694E000
ct = 4707B9E7C15985BA3D1097262E30395679522860AA06FB66BBDA9A990CC5647D58AAFF212730476C1FCA15C84C576C7B49140D58ED1D004F54548341CF3D64E4A5CFB19C605CD3A97FA403C3C032DF127304C0654AEE6D9F55E2CE651C422C4D7DB5346D52A17905F2CD8F4461012AAE335BA0696315BB4EBF395C40E8AEB859B45C55B0B7C65A6C5D7A2A48F3319112C180FC45F52B5429AB8440BB503350BE33E8E2FC015353963D816FB379F7848A61057FD5946A303E26717F250C8A4A542347EA3E8FA95CFF6ACF203960E33313E04C4D08C5C9ED156D1A9E0116961A32E78446A217D6FBD7B65125B5EE1BB4803D4F65A83D169715F8425847584CA8A122460071AB06A1CC9D187E351E78BAAA657200C86564E849C8337689605EAC9C29FA2939C427AAF6BBBE1A176D8FED4F3C8974B0992C16D145583C0CBB6CB9818D19212A7147AFC88A01281AE8B5D46550C2D9D2D86DD70FDE07
ss = B566B8997380CE9ABBA5A871A09D934E

count = 32
seed = 288A5F2684D862A86D2790AFDDDDBAC6FDA934EE7D2E6DA1508BB550838609E8107312B28E00A6C01706374CCD3AEFA7
pk = 6DFB6A675AAC447EC0AD5E53EC7041616889FA9E456E7A7D5456845D9ABA80354DEEDB58BCC2C581B74A32D08B8D0F313ED53E39EF8000F8B1737504BB222F60A0B45A7CD9B1FA41BA53EBAD6ACA23076335B57DBEE7BE25E724FB787AE7B1A0B65BCC12ED1D4B8D232EEC0FF4013BDFAF510A82DBB2733683C67CC466ACA19CC11C9C0D1FCC32A60D5FA7AD360A0444849CDE6F05EA3412BC61C372F30C0F0A3D03011D0064E69B5D94C915B615373CF5E3F01FCACA7C3480B1C03AECAC80739084221AC550A3D91562C0C2FC339ABB01ECF8A19F4346E1853E89014209997CDB1192AA136C34859C37A093D23D4D3174095E7563CD7BEAAB20946F2F2C2207E763BBAD441372CDB6A457B5BF0F67FDA3C5008ACEDAEC5418ADE37EC5A0346CD06A130CDB15205D23E2065A0E1621DB5D5794C9D83DF48D006C7DB8949092AC1C29BD8CD15B8D212B00
sk = D8B907B34D152FF8603B73051F772DAA4713480D2B1C408532CA1492DC73120EA013E3522323EE18F2FB4B006DFB6A675AAC447EC0AD5E53EC7041616889FA9E456E7A7D5456845D9ABA80354DEEDB58BCC2C581B74A32D08B8D0F313ED53E39EF8000F8B1737504BB222F60A0B45A7CD9B1FA41BA53EBAD6ACA23076335B57DBEE7BE25E724FB787AE7B1A0B65BCC12ED1D4B8D232EEC0FF4013BDFAF510A82DBB2733683C67CC466ACA19CC11C9C0D1FCC32A60D5FA7AD360A0444849CDE6F05EA3412BC61C372F30C0F0A3D03011D0064E69B5D94C915B615373CF5E3F01FCACA7C3480B1C03AECAC80739084221AC550A3D91562C0C2FC339ABB01ECF8A19F4346E1853E89014209997CDB1192AA136C34859C37A093D23D4D3174095E7563CD7BEAAB20946F2F2C2207E763BBAD441372CDB6A457B5BF0F67FDA3C5008ACEDAEC5418ADE37EC5A0346CD06A130CDB15205D23E2065A0E1621DB5D5794C9D83DF48D006C7DB8949092AC1C29BD8CD15B8D212B00
ct = 17DF50A3C270E4A93FD35EA23A49E81CE417672C810937716341B46C031E5D09EB90FC53D11605DA1D1BD54DDAD45784EE5B3699CA76015173C9FB0C94EA1F6111D36CEF2F13C6EC8A82C4C42821F96C4B2BD4BB88A83DEB6EC0CA05CC8129D4A984166983D55E41CE49B49B910148EE6D6A544DEB5129F3EE98FA8F210C0FB3CEA00E03C3A478309454E02A1F55095973A4A1B06F06D9990FED792B07D1D9592480F04C00AE86ECFD37645FDDE16DFDECB35EA33209AD0D182338DAD6EE2871EE3C8C2500A16488F9F61819619D9BF578896DD7CDC0A6C1677856003463F823FA737A8518E5120B7FED15FE5E82F7958FB73EA0FF64ED569E49540F923EB1FCA63496013BB62B53DF43167AB110467B696E01ABFDE6E7CAA7C35F91ED0CE9C47901ABDB157B8096B98BEE035AFA5DD4F070A15B8D440333CE5874DCB14D2D070B34E12DE4A4D45A1D021855FA315DF1EC8955181B9A9B853830
ss = 968C0162E93282100048613EF3C737D6

count = 33
seed = 4635DC5BB92EF98CDB6220DF0DD717C7F8158375EAA2B78FC3F0B58E9C9653E92684CAD3461D9158A481DA3D14694C44
pk = A9749110AE79832B23DF00ECE0D4DA13275EB4E2A42DB0FB7AC8A1C40371B5AD6621C11C10F9C385A2815572368794852DE1CE87C07C0179F034B5BC99D44AC64EDAB4BB38641C330458A21C980A08A63409FD5C8C15624A146A3EDB76B3823A34EF9908E0BF896F74D16529ED012E155F3542CC4E114A3289E285E560A576A9C9EB6D8B9561B85A7BE53FB368F535F605BD9746ACB7A0D8E0C6056A92527D5BD34947D101BD8D9FDBFE9FF72F6D5FD697A24455F46244EE0494B5EC5B2FCDC2DF02CF73D53996410A563A566FDF44E511ED855427EA5B4CF38C74019A7B9BCD6896822FA056CB7ACBC474BF3FB5098C1C1FBEEF23A438EB32848377516505F503A83DBF9758A863FA3CAC5C532F4C24491D01EB93C0752EBDFA3600F98B57393E766EA403A8E0BD125DBA0C7AA4F2827A2E10C6DCA2F3960AA6C981046214792DB12686F0A1FEB62001
sk = 684A29E4E5480A5F2533E1526B5FAC8CD48C758346DBE432A3228952635DC682A402DCADB073D596FEAA9201A9749110AE79832B23DF00ECE0D4DA13275EB4E2A42DB0FB7AC8A1C40371B5AD6621C11C10F9C385A2815572368794852DE1CE87C07C0179F034B5BC99D44AC64EDAB4BB38641C330458A21C980A08A63409FD5C8C15624A146A3EDB76B3823A34EF9908E0BF896F74D16529ED012E155F3542CC4E114A3289E285E560A576A9C9EB6D8B9561B85A7BE53FB368F535F605BD9746ACB7A0D8E0C6056A92527D5BD34947D101BD8D9FDBFE9FF72F6D5FD697A24455F46244EE0494B5EC5B2FCDC2DF02CF73D53996410A563A566FDF44E511ED855427EA5B4CF38C74019A7B9BCD6896822FA056CB7ACBC474BF3FB5098C1C1FBEEF23A438EB32848377516505F503A83DBF9758A863FA3CAC5C532F4C24491D01EB93C0752EBDFA3600F98B57393E766EA403A8E0BD125DBA0C7AA4F2827A2E10C6DCA2F3960AA6C981046214792DB12686F0A1FEB62001
ct = B456E8BB9C8D4CEF7EC7B5AE3D67F608C36227A26AA10CDFBD2E4CD949D586B0A60937D09329CE83EC8363FF1F8C171A2034FFF6E2AB00FD430A62678F4ED7E382CFB3A1D2E6DFBECB34B0862466D5D21CD281304CE0304606FA64EA45C98A8122CA453EF0C1DE69FCA2447E1D012AD5D1C153435568910F1580954143C5423DE782C493520A5653BD0009135A1665F46CDE58BC23841867D94A4969340F70727744212901F94C5A6B128C7DA96CE66B1D0BCA66AC33C3CE1995E544E99F0E410D5114BEFF28F055BE6EFD723F640CBFA035EF2C6538257D478B530040B8DEB4277217C80532D5F660BF3EC2FFBEC67FD6FFB78CF4684C637280BEB0FE6C0F2A2168474268AA46272A399F39EE282C89D91F014EA52E255432CEFC32FA7DC717F45A9820A5DC1D88B0F3763368E7F608159733BC18C8FC0CCE9A1621BD5E25B679DE75405EE853D11F02E2D0435B1B0494EF7CEE0546E49CEA0C
ss = 4CF1CCA95A4F53EDEAEAF084D0D6A0FB

count = 34
seed = 5DA2C51B4ACF488C8BDED5E985CC4702E4A7BCB248B5AC18AABA529F7F9CBF30EFA776E99F76D5C1686E94F50FB57DAE
pk = 755BECCBAEC71D99A39FAD1E7D64F741DDA159A12534D9E39DF3E4E5545314C41DDAB46F1045B275C02966242C3D077078F6668A9223014EAA908643BAF38B65BA06619F14DBB2F915FA998C31A36DF317BD75966B580E9DFEFDB8FB613664C95D00DBA0128B9AE2C2695FCD9401E0AF77F7539C14E0635893D3D0407BB82BEF1B14853EF1B79AD6A242B816761FBED743FC2F5758F53D21F583B2824E7BA760C84EDAB40067FDD800926EA6D5D0F434F905FB6980CCCAD6D1768D8F090779F8B5380A48B890DB4F81FFE52DDEB5EC1B9AA0D5E0960A9754496CD7018427DA38718AA3C54DA5CB81847ECC41BA4AA3FD4451EDB0759F2B4EDC24EEB22C3780B1A6CCB7C2EF5CD85BCE9A09B3B1331CF2FFFA00F790D58F7A3D0C77AB91E2BAD875648B34B7206D2B5DDF411569EA39713876F60D89D5FD724ACABBB8713303EA5AB89930B7DE87279F01
sk = D76B3573F596EB286AB5231FEEC74996E8B7BE3C815A5D5D76C69722A85C212B66491CEF853A65710F3E6201755BECCBAEC71D99A39FAD1E7D64F741DDA159A12534D9E39DF3E4E5545314C41DDAB46F1045B275C02966242C3D077078F6668A9223014EAA908643BAF38B65BA06619F14DBB2F915FA998C31A36DF317BD75966B580E9DFEFDB8FB613664C95D00DBA0128B9AE2C2695FCD9401E0AF77F7539C14E0635893D3D0407BB82BEF1B14853EF1B79AD6A242B816761FBED743FC2F5758F53D21F583B2824E7BA760C84EDAB40067FDD800926EA6D5D0F434F905FB6980CCCAD6D1768D8F090779F8B5380A48B890DB4F81FFE52DDEB5EC1B9AA0D5E0960A9754496CD7018427DA38718AA3C54DA5CB81847ECC41BA4AA3FD4451EDB0759F2B4EDC24EEB22C3780B1A6CCB7C2EF5CD85BCE9A09B3B1331CF2FFFA00F790D58F7A3D0C77AB91E2BAD875648B34B7206D2B5DDF411569EA39713876F60D89D5FD724ACABBB8713303EA5AB89930B7DE87279F01
ct = 65979FBC591F9A1F3C91C7490EA42D9DD744B2B2EEF097CE0DB5C92D29A08497E4F25455725BE66CF546597617B79874C1A6EDB7B628022C950CE48903F12510F76D2AC6412F76C055B00F118CE97FE4E7831FC0F96A41C48E148826B3360666F9B25F78A907FBD4EDAE5CCD0702919CF4F839F67A1456F9A5797AE632EA114B71915941AD1B29BCD7FB60431E6958895F9AD67E8024498C361A64662FBFD6295230C9C200D7A1DA8E8812BC64EB612A0742E1B4A97D9F70F42032B9F0C26BBD4D4527BC2DF82C023DE42327D7BE930C6CAFAE1E0743354338566101B337149C8EAADE6A00622406B137FB2096763C675DD4A9890F40F6BF5AD7D5A2AB1D43C4918BE9FDE65B06E20E15986BAA0B9414178700A8F3AB25B4EB2E78BDD626EC43A36C6931DAC802FB1CC250E239BCB7A28483CE6C2D568B6F4B9828B5AD5E6B34F88782A5C0B4E4B1A2009F96C663BB2FCC61E657BDC52C48C127
ss = AE968D6A27804749820215D949802EF1

count = 35
seed = 4D2239E84B052109A78DBAB6D80C51A86D38248105970476B74A0B78B9CFAB6283E30D5A406FAE1C7F54F8BAE1110EE4
pk = B29D0563604551E0DDB53DC0F6A6A552403138B54DDD8F7E641439448B1066EDF1BCD01317A82A895EF44E3A551371BB6617EC37B5CE010B1DCA16216B1A666FEF6C072B8C36208F33736241CCEC4136D5000A3E1C5127C8F542616971D49C5AEB1337B758571E3850E3DFF6CD01ECEDA2EDC5B9DFD2B23B42062AAE93416478B4940ACAA7A0DF1D1217453FE11E6D59B3283A3C2AF9F7137704C6154F1CF26C478D3B9C00FE962821C843F08200B06DAD771C9739836B6AD549B0B929802FCD3F387676FB44E47192B708EFC1152D062565724CE1240AC980D2DD0136E5A04DE3694EF2F48279DF6A4E73DE70830B9C67E06B44A3A103E0BFCE63080316C1E63BC065C651359496379FAFB9FADBF2D6BB2A007F609405BBB86E0782A478D266800C9C950F08C71D28A55CD08575156BEDC60D4C111F83764B869892A1C710A23E655BEE1BC617CE2102
sk = B87439FDE81C9E39EEBE7CF741C685789C1801C4A2DA5DE2C75FAD022D9418C2B6B82A2DE1586E0E0A31DF00B29D0563604551E0DDB53DC0F6A6A552403138B54DDD8F7E641439448B1066EDF1BCD01317A82A895EF44E3A551371BB6617EC37B5CE010B1DCA16216B1A666FEF6C072B8C36208F33736241CCEC4136D5000A3E1C5127C8F542616971D49C5AEB1337B758571E3850E3DFF6CD01ECEDA2EDC5B9DFD2B23B42062AAE93416478B4940ACAA7A0DF1D1217453FE11E6D59B3283A3C2AF9F7137704C6154F1CF26C478D3B9C00FE962821C843F08200B06DAD771C9739836B6AD549B0B929802FCD3F387676FB44E47192B708EFC1152D062565724CE1240AC980D2DD0136E5A04DE3694EF2F48279DF6A4E73DE70830B9C67E06B44A3A103E0BFCE63080316C1E63BC065C651359496379FAFB9FADBF2D6BB2A007F609405BBB86E0782A478D266800C9C950F08C71D28A55CD08575156BEDC60D4C111F83764B869892A1C710A23E655BEE1BC617CE2102
ct = 7BDA080E55A57EDEBA01D4C5D1FF2451532CB5639322FCDE3B9BE0999AE0AE5E20FEBF6BF863B8D81141AEDDB6C0ADEE12E034FA122E02187A390D4B49A7C4BFAFB58D9FFCC65928C84E930713FBEFE543CF5F6CE14680198F900972947D80E797B0EBED4EA7846D0C053DE460019B5B9FDD36F2406C400675EF48A65B3ED760A2A6AEECB4A66A6E5F46450DD73F7B0B5AE57D5AF0135B85A9EC168D64123A7C66A854170081BFF5DC07ED5328A14AFEBD01D839F95C6D1B8D9812D37F2F432379AD718620C7F602EB6D662337A0BFE90C9F49BA00CE1F5035723301D01C6317A783951674E2868238AF6735549E1E54CCD5B931A94FE6FED80B62CE244670BDB33874A6D6570C2B2E029472A2F5E298734100E47133378E7D58E96A03AD5CE897539D30FC107EA9C70938A4D02235B8F088C76EFBBD7B7F647EA3BE9DB150FBACB46E75CD97CD30B600171A71D988ECD50292B6326C3E70AB44
ss = 106D77DECF74C78D230AE3A4C60E9209

count = 36
seed = EE762F5C9021C36446706A88EF16312F4A12C725CD7AFFF1484337C91EDA8E89F7007F3705747D29907B3FB7500E5074
pk = B670CDC458CF6AE732F6CDDE24E56BB2C7AD734022B455D5DA50E9BB19E15DC66BAABA217B447D8A7930E018E605B1F5B7D4C628C5160264BE68A1103225A206033E82366CB0F2105CC94694868735B0C98738F9F218C5FDD6B97AFB2F0575628688098D55AB33893135B9C9820078F7874F2B13D3A810385EB80B906030F11599CA82FFFF99E03BAD0B2427E59BE6E48ACF88A56190CFE764F9D5E17368A273A475C9A101E15D87649E54B874B22A7792BBAB6A48A7A63832FC14C95EEDA92DD4D156D7CBE576FDCAA4C446CF7C93B79A04123EAF6D2F6EF26C5C01886FE3BE92A8D6CE49022A15005DECCBA8E14A2FF80E62E3E09925D353CD444A78DD2FB9265FA53DE75D65564336F0C5E787C703406C01EC47BCB352A6650A125D04D3A43B6DDC8AA829B5CC391AC21E394097516EE56635179A32279F43904DBFAE7C03D3A23001B85DD0ECAE00
sk = 056661B38038DA4FDD7426F32A81576C9B4469FEFC4282E5E4563F98349656F19BC4B038D90BBAF3E534DE01B670CDC458CF6AE732F6CDDE24E56BB2C7AD734022B455D5DA50E9BB19E15DC66BAABA217B447D8A7930E018E605B1F5B7D4C628C5160264BE68A1103225A206033E82366CB0F2105CC94694868735B0C98738F9F218C5FDD6B97AFB2F0575628688098D55AB33893135B9C9820078F7874F2B13D3A810385EB80B906030F11599CA82FFFF99E03BAD0B2427E59BE6E48ACF88A56190CFE764F9D5E17368A273A475C9A101E15D87649E54B874B22A7792BBAB6A48A7A63832FC14C95EEDA92DD4D156D7CBE576FDCAA4C446CF7C93B79A04123EAF6D2F6EF26C5C01886FE3BE92A8D6CE49022A15005DECCBA8E14A2FF80E62E3E09925D353CD444A78DD2FB9265FA53DE75D65564336F0C5E787C703406C01EC47BCB352A6650A125D04D3A43B6DDC8AA829B5CC391AC21E394097516EE56635179A32279F43904DBFAE7C03D3A23001B85DD0ECAE00
ct = DF9CD952C12F9F05F73D441464A18B05771B5CCFCE4F1EDC33FDD3C5248616D0BAAE63FD10F117B59D7C892A525E84FA84CA1BD8D5F80119BDB8BC3BC3876F861FD8DE0AF96E6DE0827B7C49A3E1112E9231FBE4390BD8C65D6764ADA84F88A5881BB17DCA90579F71659D329B01BD3DF1FC018AB7F338500B599D05A57F89BBA5DFEA91F1765CE2DCE25AFE7A2B760856D0ED46193EE78E8FC556E28117D3B448A7F56D01D37418D88820ECACA50658D4C6AF100BAF9ED5AB79CCEA0E6347D51533DCA2CA50EDF5812FB4CC5F5136AAD41EAF97D483A4BD72E40801FB36D31ECBE3371205E1076B343781AA0257D196E12A60BAE0E11AE4964B49F8FCCA81393472BF8E9A48842918793137EE5DDDDD11640170B17A9307A7323AECCBFC1D24607B5A9E67018AA17387863F04EDF2426D23E435234EAEA7695B092DF99A11FA5E08F5B3CE61787AFC00CABBB865C815ECEFFE9E5F90B1E14DE8
ss = 265DCCF5815CF483644326C4BD905550

count = 37
seed = D882BA69AC8BBC88715F1C6387531F53273A5DAB87E66FAA8221A7F628D2BDEEE1CBC59C0E08D0ADD84520A3A70C1389
pk = 23E28D43F846DCCC539A3DE1864657579B9DEDB6CCB6B339E2F181C9F4FCCDCE9FC7F3B40F92C5098D78A68F11837C0A7BCF44D26E21014B0CBCEBB86BC92D8009A7CFF8544B4116EA1518679BEC46BF11B8C451FFAA032B1AE58B91D9C2E4D5489C77BC6E5853E4E6BB9FC7FE0199BFBA3177BCB574502E5D07E81867FD7FFF2F0C2B030996D5629F80FF4F97BEAE55BFF4A3E5593D07FCFDEF632D609F1ECEA9AD727C01B5B463C7089B6CE458002F488F16773DD2FB6C838D39154AE328D55D48558397C30F772B44C4449C5E6E6BECD46D6AF9F1C5ED86CA4700B666AD1153D4DF7E75CE07C0965383B2EA85A1206BF2CAB2A18D1BF9233212792DFD7C4FED46D9E7B11DBF9ACA42FF5A0696C26AEF6500BACD4695FC2D8189D58FA5D49C0ABA66E1255D15794D2168CF72B357CCD1923AEB384727A48EF43B3EF80DA1D994368603FBB370405301
sk = A1B52D871612A1C611AE0944F9E718585D189DC4AC1BB9A9329D942E322E0175D03AE93B11DCE9CE0046DE0023E28D43F846DCCC539A3DE1864657579B9DEDB6CCB6B339E2F181C9F4FCCDCE9FC7F3B40F92C5098D78A68F11837C0A7BCF44D26E21014B0CBCEBB86BC92D8009A7CFF8544B4116EA1518679BEC46BF11B8C451FFAA032B1AE58B91D9C2E4D5489C77BC6E5853E4E6BB9FC7FE0199BFBA3177BCB574502E5D07E81867FD7FFF2F0C2B030996D5629F80FF4F97BEAE55BFF4A3E5593D07FCFDEF632D609F1ECEA9AD727C01B5B463C7089B6CE458002F488F16773DD2FB6C838D39154AE328D55D48558397C30F772B44C4449C5E6E6BECD46D6AF9F1C5ED86CA4700B666AD1153D4DF7E75CE07C0965383B2EA85A1206BF2CAB2A18D1BF9233212792DFD7C4FED46D9E7B11DBF9ACA42FF5A0696C26AEF6500BACD4695FC2D8189D58FA5D49C0ABA66E1255D15794D2168CF72B357CCD1923AEB384727A48EF43B3EF80DA1D994368603FBB370405301
ct = F0AB3E2C9CCA0E67AFE1AD0FE8C1AC6D2938CD9E14207FD02D10F8A737E0FC51B0439A80BB67FFCDD3B7883599CCE68F66B1113E458200664C0DAEA094057B1F5166363F0B8B36AF4504FD08AB43FCA8882904DE88E8E775204907D194D4AA1663C936F2DB4AC3A6B2E29A6A4600A5496F3C98F745839A013173DAD4A763D7B6E1F8B0BC0F46DBB3F9D920D4C4CA1A982CFE11B25F2BBCC1F567D8809EA66842F3CF140B01854690C5D960168883B5F0B995355305818C841BE63CBF645A89693327EFF6BD27A4B4919EB654011288499A49DAA4B12FF6DB55EFF40002A360D34EFAE47C45380D0226EB9144C2F46F8D68CFD914525DD4E3FEFC9A5284F3260F3BC292D9BF3E0C701420C1D5B57EA5B0AF08006986371BE0AB510DB5968950E3A9B3A05116A40CC5A58CE8E0B04CB1E0E010F72129D2049D3844B91119DD2EC22F0F5B4E0DBE75DE1F016D3B7508B73A7F329E218E70D8A2F1A8
ss = E3A35F1CB2667A2FFDCE38CE2FE22205

count = 38
seed = 6C3AFF39F5D097096D882F24717718C8A702382DC4AAFFD7629763FDA73C163CF084807BBB0C9F600CD31A7135F48AEC
pk = 2ACED76575102E9CA0AEF82D980EAD88889D4BDD5D5434D7EB162309EDC1E6619B90AD83AFFBDF90AC0DAE4DF4B00FF4B63A96ADA65D004AC8423058F244A1BF4FF112F396D82C15E6835414BF44D56DE3C5833D9267A737B48009A6EF15E8BCE9893195984CD94E2319BCB08500DE313971527E4B6AC7677B654C8BCE46AE14E0E4BF705876DED05B5EB478068663FED13EBB045FAB2ECDD92124352E70BD7F84B3C63701376F75BA7ABCDA55D586397BD459D8F6D2EB06F16425293E10E86CC9AFD61F41E04493338699FB43423F769DC2D2EB9C2F4D1D6D1B8B01530FA5577E4483BC912ECCA04170B76D25EC70646085C1C56778DCA20F4874A384710220FBD562F0409BA6E866FFCE374CA3431494B2010B561D3491A746C031DC7FB712746C0D4DF6D6738C4D78E84C7C9384C62BFA8CC9DC598993E2EB2E2BA0D10AC3862BAAA9B4725241CD00
sk = 952B49C803D6D6FBA69F4375ADCE8594D6D0ED89E743657C260B769DDA95968B08C290D0B1AD889BFF66CD012ACED76575102E9CA0AEF82D980EAD88889D4BDD5D5434D7EB162309EDC1E6619B90AD83AFFBDF90AC0DAE4DF4B00FF4B63A96ADA65D004AC8423058F244A1BF4FF112F396D82C15E6835414BF44D56DE3C5833D9267A737B48009A6EF15E8BCE9893195984CD94E2319BCB08500DE313971527E4B6AC7677B654C8BCE46AE14E0E4BF705876DED05B5EB478068663FED13EBB045FAB2ECDD92124352E70BD7F84B3C63701376F75BA7ABCDA55D586397BD459D8F6D2EB06F16425293E10E86CC9AFD61F41E04493338699FB43423F769DC2D2EB9C2F4D1D6D1B8B01530FA5577E4483BC912ECCA04170B76D25EC70646085C1C56778DCA20F4874A384710220FBD562F0409BA6E866FFCE374CA3431494B2010B561D3491A746C031DC7FB712746C0D4DF6D6738C4D78E84C7C9384C62BFA8CC9DC598993E2EB2E2BA0D10AC3862BAAA9B4725241CD00
ct = 46722EFE47F4BFDC5B36F8FDC92336C965669E48B6A1018E88B4AFAF4EC7765AF9ACD146F2D0DD800BBC15B8A79043E74DBA8372DA5E0157635F4C61FEA89934E5948B39B2C4833DF9BBD41A92E87D2EAA03F892FBE46D5A3DED0474FD123B6BC29A6D451F0C4CCD913994BD1900E3164E578A596DD8E7B0C6EB7A2485113A8AD5770BEECEA55E302039658E234E918495E0EEAFED4FB8AE8FDB0CE0EB926075C4E5EB4B00B57C1643BD1B4166191A35C0DCC839FEBB8B4BE072452C5BF0E901D34A71350BAA7EC471780306856FE952C97668E94EACDF943047870093BCF560CE4A01C0F26C9B4ADC2B7EFE2C97D9FA8C38FA193A61D50DC4DC4CFD09EE9F3D4025F51231CDEF2D1229B4995274B3EBDD5B01849C10CF45ED4C2EC1BCA8C03A0F0619FEE9FA84095D9A95CDC957450BCB5B3639076A6D6117922D8998BA479026F050C1A9923FEFBD009C4DF016F2395F2C7EFC8203AAF18A58
ss = B58E59F4A05558B84AE4851836CC49B2

count = 39
seed = CF520B92A2E3677AFD003EC1EC6EF136A709D78F828C9C0DD4946EFBD451C5FAABFC83CA66F9D3D17EE4220553B7A69F
pk = 0F0B839F996D4D1E8F08AFA3A1EFBBFB28BE9A35E187F27431D48D05220A98DF798C2432C2B28D966B8806E83F7C6DDDB9AF95FDF4C90088D311DC95BE43024AC244A1ED221F16153D6BA687EFD5A628918209F869DB38BFB2C44C95F5FA8753CD350E09C3D5DD1455EEEE4FE90006649D4839FDE8B88029AB779D48479080558FD4DAD1390C981CD7CB30FB82342344A52AF58F076983F257B1E1A1062B79D62C32737B0109FC20E92E9A264825E8B477A50B41157F1928A94596CD2D65F3386CCCE7907E9CFDFB78BD9718C1F6DE7F87150F3BC8E129BDCF093200D63A1F74F38C77C903E67C3913CE22E7B879DF5AEE80FC7D1C52E6380F9C715432A326DCF451446C90BE35D1DF2CA71E1E85814CDBD4014AD1F145E161AC634CD22A3276D8073377F40AFAC4166EC55A434F8BCD1A55F5FB7C29FE35A6460F245F08B67846FCCBE07559CF19D601
sk = 3C815E57E9233E975FA1630208AAB206BC7309AE5C304D142AA66EFB4C844C6071BAE44EF96A27ECCFB6B8000F0B839F996D4D1E8F08AFA3A1EFBBFB28BE9A35E187F27431D48D05220A98DF798C2432C2B28D966B8806E83F7C6DDDB9AF95FDF4C90088D311DC95BE43024AC244A1ED221F16153D6BA687EFD5A628918209F869DB38BFB2C44C95F5FA8753CD350E09C3D5DD1455EEEE4FE90006649D4839FDE8B88029AB779D48479080558FD4DAD1390C981CD7CB30FB82342344A52AF58F076983F257B1E1A1062B79D62C32737B0109FC20E92E9A264825E8B477A50B41157F1928A94596CD2D65F3386CCCE7907E9CFDFB78BD9718C1F6DE7F87150F3BC8E129BDCF093200D63A1F74F38C77C903E67C3913CE22E7B879DF5AEE80FC7D1C52E6380F9C715432A326DCF451446C90BE35D1DF2CA71E1E85814CDBD4014AD1F145E161AC634CD22A3276D8073377F40AFAC4166EC55A434F8BCD1A55F5FB7C29FE35A6460F245F08B67846FCCBE07559CF19D601
ct = C83D91157EB6E5B5033B430B8F1004578C73134349DD120B8AC29496C2FA5C8762029E057FF023FE6BF3C02228B516F7E6B27444672C01DCB6021EE5D705EE284E2E592E99A8B327BF181E3E48036787BAE959AA50CA0A0E20773A555E7D9DFD4EDFE674F01D3E2C9ACDA45ED3008D414FFC10DB82EBDF5483B1A5E2A16E134008FEDCEABAFA830755321BF9A14FD218F3026B9DE3A69FDD6F0F5BD5FD2DB637C281E4AF00D5AA853CACAB943252021EE2CD55F52FA5D6050717ADE74242EB1E1546B3B02E0DCB4E00A7525351FF759732733E85B6D33D40ECCB0D028FB110F1E5BE9E2B2B6D7C87CADBA3EE50DBA37FB380C45B59F6D6242A4A7D8A3FA1554AA76449750C19C68B0CDD508533E86C248DBA0178935029B1149D5A256BB1E9A7AB0EC4E997DFBBCF88A89462BE9390190BAA036F166E9FB6CAAF0B4C3A005FC72AE5CFE99E74561EC50176F046B69E8F6ACFCF6C7E4143917652
ss = 2F93D724C4655F62C3BC06277EFE84CB

count = 40
seed = 197E5D562DE7E01BED4FC597DB28DC6EFDF0179F3A5BDA5F94CAA39D67BAE730540534D59A7A06C8448F628DA8B7859F
pk = E2EDE84A8108232087E95C55D274AE9E40CFE4DC7815504CFF0C92D4AE62A53C6C42F1D7B45200B285478B34C6EDEBB5FDE3B68F6AB301CA6ED9C94F64C3F7AA9E5AC02E42BA75700D9F38445BA4E2FDA972EC627F5EDDC7145D8A61AB88A61561BC186EC67BAA7C706E9E0A8B005A4D7255622337F47C5C871F0555689EDEF50C61B3230291F27740CF64102B44334D37EB4B060CBD0BD18E95563ACDC4D8B314D6916001339DF3B4CC6469F7B426FE2D83D1A077167B61ABBD9382756A205A9D55FB54FB66FF30D6622D0700A28039A1F4083486171C119DA5E9002855AEF2BBBCE4EEE2B68E5F8837AD3C00C6E63D589CC5E14294F647DAEC7A8A9B9A3FAF8E18924255ED256500ED539030FBB9D3B93E007F301EE812A7B486B903326AD035B98AD887CEDCA58E6C1D8E1351D88551FECB51334396232B4E595FBF54699AD1B72E1AD5A54BA20000
sk = 588760826DCFBD36D9ABE6AE44A669BB8637FC0C04E21E7629319A89BCDF0C2688D3F3C62E3DCB1FB5C67E01E2EDE84A8108232087E95C55D274AE9E40CFE4DC7815504CFF0C92D4AE62A53C6C42F1D7B45200B285478B34C6EDEBB5FDE3B68F6AB301CA6ED9C94F64C3F7AA9E5AC02E42BA75700D9F38445BA4E2FDA972EC627F5EDDC7145D8A61AB88A61561BC186EC67BAA7C706E9E0A8B005A4D7255622337F47C5C871F0555689EDEF50C61B3230291F27740CF64102B44334D37EB4B060CBD0BD18E95563ACDC4D8B314D6916001339DF3B4CC6469F7B426FE2D83D1A077167B61ABBD9382756A205A9D55FB54FB66FF30D6622D0700A28039A1F4083486171C119DA5E9002855AEF2BBBCE4EEE2B68E5F8837AD3C00C6E63D589CC5E14294F647DAEC7A8A9B9A3FAF8E18924255ED256500ED539030FBB9D3B93E007F301EE812A7B486B903326AD035B98AD887CEDCA58E6C1D8E1351D88551FECB51334396232B4E595FBF54699AD1B72E1AD5A54BA20000
ct = AFA49BE5FA86BD3317A0DCB7B86B38B8A585B3D0755C127C6AF2CC1CE190363B0F40C14DB8B7F426D800348B2C2D0BF39788166178C90199BA184F96662741A6592D1FF1E777EF7B9AC68402067CA677243CAE3A5116A270C4A6362228DEE70595C4FD39E7F906C906BC36575E018814CA8FA5D7D16E0B75E1AD4E946EEF64D551769E00B7A58B13436382E0AB82A5759349EAE99A69339193DBD0B51115A3727CE689050155A5FE08145441C60C9D36A81E47DA6D1872B914D64BA1C8DB53DA264453A5E74A8B14D6401710069A9CAB211CA4C27964C94A69EBEE014EF1CB1743F35093C33F3692F13859955B2911CB6FDFDBB7CBBBC164FCF8772DC09EE0756C822269FF58F1A2DDF6273893228658B0F001DA2C9E0243F750B0C4E231DED2B56139938B079B2D9FDCF9198806689D4B6CB2659A28197C2BF4A22CE9AD87DDC2D2B54593703C1E1A01C3F0DE7422029F4E69CA6F91730C37ED
ss = B899E849D60739D059CF343F459E7230

count = 41
seed = F170583CB451D8A45D105457C02C01A33A40350616ED8515BD49067142F61EFB00F07857E4FFF3FE11E7164C648C76ED
pk = 3E31D5B9C4FAA343548D389DA16BA6D1EF1E9124B45B7967EB704ECA8F92757AF6073766C60147D3E80197785B01222E937C6D5EF0180159E8EEFD36A81F83687BA289AD1D8F6B670FA6769FCAD4885D63B18B872DA9D237A7B3940D04167ABB9607A43C5857C50DA3CA41878C00158C037DF87BD887FE08B0D680CE17E3A155FEE2CA9C7C61E98C55DF845D7BFACEC8CA2C7D70A369F2F057CCD5E1C74FC3C968E49E260218E036B49BEE4E5B31A2B584695D24064EAEF02EB715E33DE8A47431AAAB5164D2962F7E019EB40CFCFFC34D4FE16EBF5B786A28EA67014C6B7B5DD887147DE93E26D968596B4D641BEF8510630F5270A06A1469DEBD3F97C2E2D7C41B57364E7A108B78EA7CF3C0F7D6B9FD93007B5799737117CAD561FA9715FB204C9048374CCE2149E09401CE7E9DCA4F083AEE4B0929EFC6844EA7151322154D30B974AE70FDF61701
sk = 47550E9EDACB6DDCE3D9AB81F6B61080A9565C4770C1E638BEBFDAB6C9724C0371A22DF2F3EED0FFDACFE8003E31D5B9C4FAA343548D389DA16BA6D1EF1E9124B45B7967EB704ECA8F92757AF6073766C60147D3E80197785B01222E937C6D5EF0180159E8EEFD36A81F83687BA289AD1D8F6B670FA6769FCAD4885D63B18B872DA9D237A7B3940D04167ABB9607A43C5857C50DA3CA41878C00158C037DF87BD887FE08B0D680CE17E3A155FEE2CA9C7C61E98C55DF845D7BFACEC8CA2C7D70A369F2F057CCD5E1C74FC3C968E49E260218E036B49BEE4E5B31A2B584695D24064EAEF02EB715E33DE8A47431AAAB5164D2962F7E019EB40CFCFFC34D4FE16EBF5B786A28EA67014C6B7B5DD887147DE93E26D968596B4D641BEF8510630F5270A06A1469DEBD3F97C2E2D7C41B57364E7A108B78EA7CF3C0F7D6B9FD93007B5799737117CAD561FA9715FB204C9048374CCE2149E09401CE7E9DCA4F083AEE4B0929EFC6844EA7151322154D30B974AE70FDF61701
ct = D650509DDE7464111B4EA141829D2AE11C99A6A6048D81F8E4B84FD3CF0C3A3CE1E517C383ED69872692629F221D2D7162CD48833E9501EC94E5FE08640D787EB57282DA5DA19A1AACF4E5F6404DB460B6CB6D080C1FAA0136FED6148677CB751CFBA76ACA6767283BF355D1EE00EF753300EACA94B208A403DB0A489E8FF98BB37245E70D51C1174DDC3CA05B1F8BF668E05BAF40C65AE7091E913DF829B59746559C60003709342F980D8CE03AB73468895480E419361B2703096ABBAE078BA806FD49961AF166D861E25A479C13BC91C94D2DF4C40CCD796B07018E876D89189D36FC852816D88ACD9818299AD1BF4B93214501951D759073173B99377241D2F026D90B71BDD749B429693CFF9AA4BD9A00F994B2155D0568C905C605DAD83B193BAC6E9845DF9ED18FE095329CAD5D874AB9BA3B0ADCD2C52F2E61D10F53D848E48CAC018766FD01C9EE56FFDF8B3A224FFFDB433440D874
ss = 8FA20B8DCB491DE5FADF49328709045D

count = 42
seed = 44A6774B2CAC02DFF210FF861A090561A453DB311F47B6FEDB81811872D5D9489F5FC4103010139AE53FCAED209DC9BE
pk = F477C54C20925686C615D5AB3F02428BC4B70F39DAD2C2F11CD2860DC1D01BFEA151EF4C188984AB38FC3E2DA5F8FE3A335A3262F19D018CB15E9E2AF72D41D06897B3779A8583177D9EF3269F2C834B837E42FF81955DA7164F5B638828065E48B96FC85F92965337E8BD992D02930D37015A26C2107810FB12EFC8F28AA086207DEDF597C18835CCA2064274988189714A9979598AFF01CA0CF824D0148FA804478BAE00FEE5E5DFF9311703D37537936E1CC8DA59243DD3592FF877827F6CEB695693DD2E20A92A1A2B6D9E01BA9373ED8907B121DB11DCF49900153A06215D70E25D409559CC36562DBA68D97997FB101A02952BFBF27EF9EAA5C080C8FA617B69D6CCD09CF1F2CEBE4892D2FC0BF63F00E9D949CE085AC7D7A63D318FC7B5132EC9A7AE1D953C036ED557728109628043E89807D8AE94F0BD9015C0FC1896785FF765DCA75EEC01
sk = 610AFB64BE8CC1DF288CFB016EE2F44CDEDFD97038566534837AE3FF6C465992390EF1D33871468E46101B01F477C54C20925686C615D5AB3F02428BC4B70F39DAD2C2F11CD2860DC1D01BFEA151EF4C188984AB38FC3E2DA5F8FE3A335A3262F19D018CB15E9E2AF72D41D06897B3779A8583177D9EF3269F2C834B837E42FF81955DA7164F5B638828065E48B96FC85F92965337E8BD992D02930D37015A26C2107810FB12EFC8F28AA086207DEDF597C18835CCA2064274988189714A9979598AFF01CA0CF824D0148FA804478BAE00FEE5E5DFF9311703D37537936E1CC8DA59243DD3592FF877827F6CEB695693DD2E20A92A1A2B6D9E01BA9373ED8907B121DB11DCF49900153A06215D70E25D409559CC36562DBA68D97997FB101A02952BFBF27EF9EAA5C080C8FA617B69D6CCD09CF1F2CEBE4892D2FC0BF63F00E9D949CE085AC7D7A63D318FC7B5132EC9A7AE1D953C036ED557728109628043E89807D8AE94F0BD9015C0FC1896785FF765DCA75EEC01
ct = A9DC17012D96FB5A6C1532FAA8A61C3B85FFD45928E06CF1E020BBB15B37CDA74346408C54C14C08119827F6B21F3B8B2615C7A076F90090F484393B27BE9FA7E4443AA1233109A9E99D625DA9A44BA5EC706782C5597F2ECDA421D047CD8656470251154DA75008645B1B43B300E885C99264C5B4E695B2E7E34815CFEF4E01FE19BB010DA6E4C5EEC84F5A246C08A90141CA2C765622F57C125F8652D1730E30D2503B01CBAE0487ADAE6ED1E3F2110AA0F418C673952FE9F9A35547D9B970B506A571FE48F43D9563E2D5F441825934B5C5C7F0531D082B84D9015ADA11ADF397B2CD39356929CA5DCD3C380AAF76CA7463EDB9FDC12C7F10838C2428944BC0D95EDD10A6FD4C5819883C0EF6CAF0A84701B493C767C9EB9C9C8F03A6241C20123A3107DFDC305548F2C58B6C8AA9BF5D49257EE25042F0E214316F9AD0E14E6D326A3A3995B86200700075F95FCBE42E06D48D21DC51837F
ss = C42E0777D7ABAC1417C39BF318CF4F5A

count = 43
seed = 49E1855588B6235DF2A400C4A70AEDF8AB17B6E5E2891AA745F132FA2E7AB0C8117C1DF37C39F5D57624EB77C2B4A091
pk = 84D7A1EA546985E802AA24458B19537402AE8C43332C8629EDB71C1A129659C593CEE32F282A35E423F15362DFCAAB4FDD695395AD1E00C00D169419B0F8BF1C6F9E46574912790A86B94BBD0ED436865CD55521B3ECA87CEA7594ACC5485DA814C0ACEE9307BBAB6FDA285DE40069F81A1369416A5CED9EFCD011543ED3274AC633F22C31DC1A4093CA76954D8172A40E0D388C8595843F98B8B6CFD916E3A2706616FB013ADC80396980A108B680E645BC8424A821C1D287639F196F001A11959A0C148F4BCA151A039FEB2D47DDC90C0839D079B1F0137FB8DD00872C73089A4EEDA971548E59F59ED959C443478185321E03B307120F2483C64C4EE1BE5427C353840F6C518CF8DC5DDE280A9AC485540017BA69AE6DF708043DDD11D7605A4E24A2C208C1D6E867BB0C25CAACCB0FEBE2D7D3E3881145CD089EC76B0957C63F08E63CDA04DE4A01
sk = E1953800ACAA85AC02A906C72CB8E8D7AF2ED0F29F56400BB087C5C7CFC24CCD1756634FDD14A884C51DF90184D7A1EA546985E802AA24458B19537402AE8C43332C8629EDB71C1A129659C593CEE32F282A35E423F15362DFCAAB4FDD695395AD1E00C00D169419B0F8BF1C6F9E46574912790A86B94BBD0ED436865CD55521B3ECA87CEA7594ACC5485DA814C0ACEE9307BBAB6FDA285DE40069F81A1369416A5CED9EFCD011543ED3274AC633F22C31DC1A4093CA76954D8172A40E0D388C8595843F98B8B6CFD916E3A2706616FB013ADC80396980A108B680E645BC8424A821C1D287639F196F001A11959A0C148F4BCA151A039FEB2D47DDC90C0839D079B1F0137FB8DD00872C73089A4EEDA971548E59F59ED959C443478185321E03B307120F2483C64C4EE1BE5427C353840F6C518CF8DC5DDE280A9AC485540017BA69AE6DF708043DDD11D7605A4E24A2C208C1D6E867BB0C25CAACCB0FEBE2D7D3E3881145CD089EC76B0957C63F08E63CDA04DE4A01
ct = 1BC8FE87FCE9963FCB70065B9039DA084F17CEDA8EF3793E1D7CFB64249EBE391D00C5372CBA206D6A9A4E170056E010A1C2EAF10C1A0188186E4586A3A0425F02CA497F8082FF39E732E36396D72C2BAF7D1600AC642251D0E4B32E604214675D6E00E8499693982C789003B7008899F0C38BB17139E7AB373E3E2E4060D52A4252ACDB7C36CA4497C5B9E4146F3C617CD35F4F831069B8585D3589EEA6E8AC50B0B92000D20613E79CFB402D1357E3BE6F588C5DD76834E152DAE7E6124E4BDCC85B93A499B26DDEFFAA8CD5CA15C5A70FD58DDB318E81FC026101878A361EFA8D395F5D1340E78FE675DADFCB58BD5E0DE320F118545686FE6A94089D7D811DC0C9940F68D2682192A069FCB427A3C4070125C3883CA5B298633EC03A5E05A387DEA577E9F50154DC5BB4D1225EDA565BC975DFF2B2DBEE75DBF06876FCC4947427E5353FC003EA01442743FB3385F49DDFC51F057E1A8A18
ss = 801A1A7CA92866C67832D4E33D5C771B

count = 44
seed = DF0E41D2F6F86C1F79D31FD5878E7AB434FC0AF3A0D5F47D2AB3FEF31A42BD949B0E3629DF9F575BEFBB62E829E51DAE
pk = 1AF9AE7F5D9836088652DCF7DE5B92A5C07DAAEBF77D8A5CCFB27D1097A92DE3EF714E99876B513840FBC08BBE9AE75C33A25D78346801052153FC316DF0D26972AEC8E8BEF3F159B30E8787B562CE0902672275DD1C5994A83E3D0B2C086D7C4827A7458CBE52539663815333024C6D6984D36F47FFCBC2B3B819D9B4897AFB21879AC36D21971B2DD548AFB0DF557094422258AEBA3E4EBE3873E67C6CA05E03A5EA10012D1422E446F7632278FF4E7191FE22FB77CEE507C91E32969171CD4205B38BAA8BBE4FFDEE41CCA2392E4FEFC4AA5B4A9079822E45A3013E89DD87A8EBAA9FE2BC1FA1B9E4390D5A5549B78774E6EC21AECD5EB1E475E2C0810E8BABF4603D72C89D9429C956BAB82598E3220B00021F193E757551BB62941A47C8510F633629E0220CF4EF9D7617F5A50E44C914A9CCC5BA67688B2B7C7F5E6126993770662834DDAA3500
sk = C719F9B2D16399B7326CE4ECA30DABEF8A7B00848AB1F261D351168973AD4E4DD3F28CBAFBDD282EF717D1011AF9AE7F5D9836088652DCF7DE5B92A5C07DAAEBF77D8A5CCFB27D1097A92DE3EF714E99876B513840FBC08BBE9AE75C33A25D78346801052153FC316DF0D26972AEC8E8BEF3F159B30E8787B562CE0902672275DD1C5994A83E3D0B2C086D7C4827A7458CBE52539663815333024C6D6984D36F47FFCBC2B3B819D9B4897AFB21879AC36D21971B2DD548AFB0DF557094422258AEBA3E4EBE3873E67C6CA05E03A5EA10012D1422E446F7632278FF4E7191FE22FB77CEE507C91E32969171CD4205B38BAA8BBE4FFDEE41CCA2392E4FEFC4AA5B4A9079822E45A3013E89DD87A8EBAA9FE2BC1FA1B9E4390D5A5549B78774E6EC21AECD5EB1E475E2C0810E8BABF4603D72C89D9429C956BAB82598E3220B00021F193E757551BB62941A47C8510F633629E0220CF4EF9D7617F5A50E44C914A9CCC5BA67688B2B7C7F5E6126993770662834DDAA3500
ct = 2F76E5EB32E7476CBB33890AD997AA2A9DCAC8354E810D4E9BAC76EF28FF5E6B914DF4CFAF8E1A36FED7014FC3F7238FF1428B615A1D016EC2560EE809CA20204025E2E6F6ED7115A05545996D7B186FA2E83022075BD63FB800FA28A9762F02C17A8C89DE435236B742DC3D4701B5D654E2B09F9112D14E1922C8D579D68BDBC507C82422A770BF5AE64CDCB751A809A3804405E7984A68DF674847BE790985E3CF75A8002EF07B7732928F21FC87AB4E1FCED3BCF74B0982290511A60B5BE65E5FAC885426A8FB9550D6CAD225A8860DF034D8E3E088B63930650078854EEA7F6323F4C9F783F6F8D889769AF037AEAD6805BFC9DB1D408DBAD09680E99BD1E2B068968D0B934A2988453D1DB6AE1E124800246D8AB7C59A9F8C82D7567E316D2CD2D05D122042D9BFFF81E569A0AB5AA1EFACB0BE9851FB15511B9CAF745500E5A853F86940D40E01BF9B9F3E74418C343F2B9CA8E457C7D6
ss = F8E403222BF0E2ADAF1F08C95D008ADA

count = 45
seed = D3C9EBBA6EB03CCB5C9B9D2C8D7F0CFBBF50841E24396CDDF0E56525B38918C2FBE6C34CC1B93F7BCD4F4D5777E1A488
pk = 9BC769B4CD1637CC475A63DE751C41B30B71DE90A23301846EF3BE062DCA54C42EC189EFE6F5078E9EAEABBCFB3B182EA7108A82639D012EC1161215475CFEA257FC9F2625B40C34F4862E5077097D2D9263FE574C1236E07595A3BF8F40DB367D7C1753D39F98591AD363DA9501AE0EE69305F4E4076E6CABFD2EDBADBCD3D2D228C83C2A7BB0438DF57E9DF20A29FADF414F7803BFEB9E5566D797820B46A9E5FFB3AF00CABA26F15FC79C6E926D0309B95DA0DB28F0A00B6A9D25BBA050B24AE447896516543A215ABB6E056FBF0BF5AA9CF78B573AD94B90FD01671865145687EA8CAA6C695EAD2A250483F4F7375F22D253A54D02E07C2ECD84C3E2092D157512B00EBF797FE94A5ED0EEA0C55D8A000084BA5EFF506B09B6DFA30192F21A0D5332C52608B4F18BD7F89576D8E543AD55D316348E79FEA81734D1A00A9848A997207DD25055A000
sk = E9ACBB774BE970206C3A738E243B420864E3C9BE202513B43165B8BE1F2DCE13088992F78B590D6DB2233A019BC769B4CD1637CC475A63DE751C41B30B71DE90A23301846EF3BE062DCA54C42EC189EFE6F5078E9EAEABBCFB3B182EA7108A82639D012EC1161215475CFEA257FC9F2625B40C34F4862E5077097D2D9263FE574C1236E07595A3BF8F40DB367D7C1753D39F98591AD363DA9501AE0EE69305F4E4076E6CABFD2EDBADBCD3D2D228C83C2A7BB0438DF57E9DF20A29FADF414F7803BFEB9E5566D797820B46A9E5FFB3AF00CABA26F15FC79C6E926D0309B95DA0DB28F0A00B6A9D25BBA050B24AE447896516543A215ABB6E056FBF0BF5AA9CF78B573AD94B90FD01671865145687EA8CAA6C695EAD2A250483F4F7375F22D253A54D02E07C2ECD84C3E2092D157512B00EBF797FE94A5ED0EEA0C55D8A000084BA5EFF506B09B6DFA30192F21A0D5332C52608B4F18BD7F89576D8E543AD55D316348E79FEA81734D1A00A9848A997207DD25055A000
ct = DDC23AA5D837BBF6CFE201305B7A2CF7B84F83A9C1D7F5E935E9CCC006B0307FB97726983153D162511E93B6533B2E32A420C36A6F69005D543140F298B7B710D7F1FC6E94779E6D8C084C477C76C2406536B8A9ADC13E0DECD68A9658C804EB8EFD5EB6D14EEF5594462D331801711A94E2FE441A0729BC18BAC6291A2C2D51B1AB178F1B5160BDF300DE2C026AEC8B9000A7C33565890A44CCCAD08AF2868B61ECDA0C01238A092E7850F1C5BEEC3BA88421E28F8EFA6F8F5295CD36F0B46E479765D534178B05D7C85B7D4E14E4BB712A190F02565FFD954C36018992071DA173FE5E831A4CC7EFFDCC7C3DD024EB4188EA8892471187E935492B53B6E54AADE035DCEA5069329B772D6CBDAFD52E44B6016898CFDC928F424091B39B2511083978FC27FB3992893EF1C5AEC269FF90AF976996BA403802ECF3196FB9CE394BC934908074E291340002135143A60387AC1F0A5B6F7D9D8A7E
ss = 35E3D14C2920FC09FF5D0E159609FAE4

count = 46
seed = 6B3996E8BC6F52879F2B7BE012C44AD555707CB7E5FD8ABB3457A298336D6FDC9EB7853008FF13201D5969A315C7E493
pk = 3855AEE68558398E50CF49B80C47635620A9615408A1DAAA44F71DAEC5628B1AAA48A867F13B4176561BEAD2977FDD349D4D3179EAEE00D1422CF125602802F4AB08102F9DF7C424AC1D882C4EB39C29B147C560CE9FD6260037F9900CB052E4536B3532775A7F5B5BA99BA03901EE24DA256BFEA66EB5CAB03763B933A29156E72B0B82CE014403F4CB65ED06027256182ED0435E855F1EEF5A8B40348E47628041252A00750BC000779CEFD5B19E94D25C7ACCFF0C49D74362837A97719A8B31E11EEEDCC33FDEEC0760DE1862AA999485FF8AF8178CBA394922026E447E6AC2BAE3D31069764C8E0B80A2C749D94954010A324C49D737113AD179E8AAB6CF24B42967EBA28776671D563E852837501CC80094C3CD5041D31AE72717C1B747CF3351F878F356E351DA56DB8AD154FEA375AA878F6298C60F4FF501FEB44095E0F1D1A6AD6C91948401
sk = C1B3CBFFAD4B306F9AF0CDD302887648D7C02BF6EF9C5C44B7D40B9BF861995EC09DBA98446A8F7B5E6E65013855AEE68558398E50CF49B80C47635620A9615408A1DAAA44F71DAEC5628B1AAA48A867F13B4176561BEAD2977FDD349D4D3179EAEE00D1422CF125602802F4AB08102F9DF7C424AC1D882C4EB39C29B147C560CE9FD6260037F9900CB052E4536B3532775A7F5B5BA99BA03901EE24DA256BFEA66EB5CAB03763B933A29156E72B0B82CE014403F4CB65ED06027256182ED0435E855F1EEF5A8B40348E47628041252A00750BC000779CEFD5B19E94D25C7ACCFF0C49D74362837A97719A8B31E11EEEDCC33FDEEC0760DE1862AA999485FF8AF8178CBA394922026E447E6AC2BAE3D31069764C8E0B80A2C749D94954010A324C49D737113AD179E8AAB6CF24B42967EBA28776671D563E852837501CC80094C3CD5041D31AE72717C1B747CF3351F878F356E351DA56DB8AD154FEA375AA878F6298C60F4FF501FEB44095E0F1D1A6AD6C91948401
ct = C06089A9ABE630E39E6DCCFF03B9DCECFD69115739E62E64D186B1DB5F9F8E3DE5B026E4138CA882DE699AADD624E420D903EB6A120B003EA8028ADE6E15E68655597ECD81D8E0D7EC083C1B4FC520E70979DED438D25314CBCA659C1DE7105E98C35B1626064F6AC230CB77DE011A16D911A5929997DF29DF864BDE00B104334973FF05158371E37F795D4D5833D9CB9796516C092AC4EFC18074BA184415C79181E8E500F65C3380A3676B7685AAA50EBD536B3933FAB14B17EF85BFEEE90409B5563831068F0EE30864DBE8849C8D74583EAA142EB7E7AD39E70087462E7BD3D6127C2D57A5F5A2D3A73709D77C84A6B589A1DD2C128A2F6BC053FB383ECC695C101629D01D65967F103BBA75FF710D4E0114C3584E437750D652C54DE7CDC50193507136DFA2A7B88C09564FCD5635D3DE2E8D7BC12B2F814A829E29FA7F15D055A0A72A93101800E3F9AC7D3DB8E1F5C18953D09699492B
ss = 63FE00582274725260514057BF36BFB3

count = 47
seed = 730B65ECE22DE27D573CE3AEA7CB021C415DF210D228808D91D4F380070FFCB0778B683C71D4853DEB569C822765F2A3
pk = EA7F957F20FD5C7000B0F1F401355BF496C1644CE31F5640FAB4E5948603FA389D967E982A2F6367C777B5346D658969D6B6487CDCCD0087374CE621387C9316165D241E611C94573CB275BBE7F3EA03439273B5761702142F360E8FB87FDA01663127299123AEBB0017BA9420004D2516787A5CC733DE612F97B4F4B63FDDF898D2594457056B6D676D470510ADB8C09821D1CF6433B3FD1473CE158595D7D22BCB4C3C002454C724EAD9B3AC44C2121518757CE786778FE4F955A99EFDA20B531FD76684420288C8E74AA784F3C6D58A076095BA3A21193B1803003DF45FACFAA76D8F2C345A9A58E14B45B9BAF5260257A6BF6B20751676F604F0E75E6A69AC88557B9EB6B238C6402EDA6C44BC79D3CC006A2D6874D92531681EF09856096FF45FD89DA50E429973C4C74B6DDC8C436EB0B6E2A1725DBF26E357F3178E2D353BA245190A3461C700
sk = FF7495B8575B5A98E4FD21FB4C3E58CBCD336920AAC5667CD62074B3D34C7C6EC0DDBCA8333F73AE42194700EA7F957F20FD5C7000B0F1F401355BF496C1644CE31F5640FAB4E5948603FA389D967E982A2F6367C777B5346D658969D6B6487CDCCD0087374CE621387C9316165D241E611C94573CB275BBE7F3EA03439273B5761702142F360E8FB87FDA01663127299123AEBB0017BA9420004D2516787A5CC733DE612F97B4F4B63FDDF898D2594457056B6D676D470510ADB8C09821D1CF6433B3FD1473CE158595D7D22BCB4C3C002454C724EAD9B3AC44C2121518757CE786778FE4F955A99EFDA20B531FD76684420288C8E74AA784F3C6D58A076095BA3A21193B1803003DF45FACFAA76D8F2C345A9A58E14B45B9BAF5260257A6BF6B20751676F604F0E75E6A69AC88557B9EB6B238C6402EDA6C44BC79D3CC006A2D6874D92531681EF09856096FF45FD89DA50E429973C4C74B6DDC8C436EB0B6E2A1725DBF26E357F3178E2D353BA245190A3461C700
ct = 26457EAE4B95CA30CD09FCBA508DF98CE0E6FFEA62384B8EA08C0D7CB6D955560ECA8B6B66EBB98323A053B36197772CC29BD9E83656010AA821C165CB6B91E84C123D8B48233C45F64560327E3BCAA19CB17720220001E115D53AF3B659DBB3D27119DF32645FA2CBBE9694E00151CA76371C628F3D4530C6B2809FC7944EFD2F25E64F38A3381CD548D8731AB95A30D76EE9B8DCBDF74CA590B08C92921770C88487AB0032050C975F81DD857D3EB16744A97AC4C3F42BF12343FC7A2CE753AFBFA2F7FC4C136C9C1373E71FD76316D4F42BAF5EABC82DBD151B00B5C238B51B6ED6675DD9F4E80BAA7DC99030830F4ABB892774E766CBE0A4B480B1090C880192C7A71E75A5134D767E2847CCE03579CC00DED00B0E9A385260A0459629EA6AB8CDA972ED0BD697FCA88233A2D67404123B1C22796941A1B29E253EFBF49F0BFE4C5F59D13DB2A301B3645995DE74A846A14A5262D60949F3
ss = 9A176F2E3F1B00AC7385E9CE14BD60A6

count = 48
seed = 5522A5A891A9A9B5514F4556AFD8DF40B9CEC63A01492F0CB8A1DB073A285A963E4A9FF2376C88662F7D8D241F8ACF17
pk = 8F8D1BA886220CC3AC2EE16698A510D95BB9B1E9CE880FC9574F4CA4359951E45AC9178E60DA2F38D64D19E9209B8261F7CCB74371EA01E420CEDFFCEC2A3A140F029D7A9AE33BE1594661C0667D0583141DF26C19FEE2933C8C56A2E7A2D9153A3C48EF0596977AD6AB0931F000A5ECC743B390253F8BA48A2E62FB4D4561E226F659E145BCC22E34FA66A6E4C66831DF931CF2AC756B682A55CACABF5A0FF27067F4730178E62498DE47AAB31531B35D552178F04B4E98CA7A6F236E58060F18121B2FD3A7AA180717788220C74C8986AA8B0AF7C4357687A20C01A179F3778C715BBC0D2BB89FC3C04BC8C1CF072B245B73CEF3821E48A744E118F5D3226E6F0F976B6A06D70678113904349E5B66043E01621C8D8F6C3E72222B2927F75CB14196DF99736978705E9248138DEF65A7351615199784B700E453858A7256AC52F5A7065126C3173601
sk = BDC3FBA1C32751139FC45BACFFB3EA97209C6B9A077825C43E36AA2E13D7B93FE5364DCEC0D2F23E705E3B008F8D1BA886220CC3AC2EE16698A510D95BB9B1E9CE880FC9574F4CA4359951E45AC9178E60DA2F38D64D19E9209B8261F7CCB74371EA01E420CEDFFCEC2A3A140F029D7A9AE33BE1594661C0667D0583141DF26C19FEE2933C8C56A2E7A2D9153A3C48EF0596977AD6AB0931F000A5ECC743B390253F8BA48A2E62FB4D4561E226F659E145BCC22E34FA66A6E4C66831DF931CF2AC756B682A55CACABF5A0FF27067F4730178E62498DE47AAB31531B35D552178F04B4E98CA7A6F236E58060F18121B2FD3A7AA180717788220C74C8986AA8B0AF7C4357687A20C01A179F3778C715BBC0D2BB89FC3C04BC8C1CF072B245B73CEF3821E48A744E118F5D3226E6F0F976B6A06D70678113904349E5B66043E01621C8D8F6C3E72222B2927F75CB14196DF99736978705E9248138DEF65A7351615199784B700E453858A7256AC52F5A7065126C3173601
ct = 878A0E555EE2243BEE1CDA2BD6DDCEAA0CE5269DF7C2B71C78DE51194FFF8F613D7065D790C38F5A30744A597616718BD4509FF988390143B08C52B658E64E81D267128E56605607A3A6CC903B265FF6B8F4A141B5E2BACC453C5178D992CFA662DF049BFDC13425B08F624E7900A32599CDB0B7899AC104D7A6BFD9866407C2DC477497D381357A7A5B1E2CA3BEE48B6CE31764757BC91BA90F678D0FD4456985383628004F0B1C929384E1CFF8E2B838472C284AD23A631D8B189AA048A58D1F9327B5B139B60047E2C9FCD3F4AFC1ADA2EE88CBAE8F1F6A341C01D3FCA36C8FFEF006BAB338363745230AB09EF0C2EADA67DF23F08C67D082349D12864ABFEFD0677F8CD253B7C4B5985AE13D89FB762001F54B4A50021FA3C7AACA6DAD85D540EDC2127CA638ED8C2B52DD0F607895C347B27990A2EA5E2F565F2EE45B977C40E8266ADE4A4B250068964C321EE0E31973B6F9906D1C1236
ss = 7388DE674871722069D24664917D44B1

count = 49
seed = 1853E72329353B3F89AE6A1B1EF700DA8ED3C10D19F9E61EE9252E28EBB0E15802EE43083A12A0B7527088832605E3AB
pk = F244A7FA24F6046396C3EF3B0DE1739DACF1801CA178DEBF5F20A3849942C1DE4BE218A44434B95CB07573984A466B5AE03564A78310016FB3DEAE453101ED20E832B441EB82B55268F0C584ED9707914E270F7FC9FCE597C63F65B6378550332D998E9C047E4021AAD922441E01B6283505788EEB23CA1E34044D76CB8278EF97997F78D0132CB1E522CB047C50B239F73E5E33EE354408209B5AFA7D0C86AEE02121DD014D12417972032548E3D3AE9032861A01174426B8661253D31680E59F8C8901471EE733669E7E2DFE36262F23E01B1ED4E73A86B5D2C80197C6F5859B8F6DCC50D4F8CEEAE3A913155EBAF952CC1AC150CD22A66A6E0ED2C0B292A04E620E8E7177133B7334AC89CA6B93290AE100266845387F657467A1C93AF638759EE43E6D780D9C485CBCB8B9995FFE771954F93B5B41B3E96F3A57EADF5F833B5E704C845C2EF26E01
sk = 447F6076A627BBC5AD7773FBFEB14B4BDC2C66BC573F32EF57526D55DC22497E8C412552485CA51850F29800F244A7FA24F6046396C3EF3B0DE1739DACF1801CA178DEBF5F20A3849942C1DE4BE218A44434B95CB07573984A466B5AE03564A78310016FB3DEAE453101ED20E832B441EB82B55268F0C584ED9707914E270F7FC9FCE597C63F65B6378550332D998E9C047E4021AAD922441E01B6283505788EEB23CA1E34044D76CB8278EF97997F78D0132CB1E522CB047C50B239F73E5E33EE354408209B5AFA7D0C86AEE02121DD014D12417972032548E3D3AE9032861A01174426B8661253D31680E59F8C8901471EE733669E7E2DFE36262F23E01B1ED4E73A86B5D2C80197C6F5859B8F6DCC50D4F8CEEAE3A913155EBAF952CC1AC150CD22A66A6E0ED2C0B292A04E620E8E7177133B7334AC89CA6B93290AE100266845387F657467A1C93AF638759EE43E6D780D9C485CBCB8B9995FFE771954F93B5B41B3E96F3A57EADF5F833B5E704C845C2EF26E01
ct = B5FC58AB9096E102E2D28E52B8D2FA2BD5C01C2C6E3BC8FFC34FC49AC77E2EC3CF8312D537D6E93B1853B012872CD64E68A7856D2C570089296B09E609162B52D7FCC3FDFF1F4ABD89D4AA29E72623DD661175BDEB2E1232EDDC5D56D0F3D85FDB888D6A47E337819E31AEA1DC01B44BCB2982C0F4FD367041A48F32F794D5180A7B85940C420424C4BD7075FB60708A006D914311DFB496E6745EFB07AE5E0A5B524EDD00C7BB4DCD4CE64C2333EAF1A69D0FB38BC9802AEF65AE90337F9B59DD881D3CB9615DABC8B6BD7B33AD887D70E1ACC0B8D17334FAD63C00F300B94853EC93E4350D73EE2D26361F8813446BD9C98567EE0CFBB7CBE4336E9C8AC43260F71749D86F54494FB5051FB9BA727917E901C30DA11BFA89D651F9C2266C5E93C8DED379CE219F72BDA5C1A372CE01AFAE819A63D955E79251A0368A03923C587DF047C46C7EE7E801E417AEA7630FA259A363A29014AA543A
ss = 82BE0F91FFED9DF2F66E264621DA7121

count = 50
seed = 027C3D5847ED4470931141104F25B19AE76117CBB64B224EE424FFB782E9A0E988839E0BDED0DF666FE8E5FCBB5DBC09
pk = 4F780D5C1047ECF584DD204B2CC68102DD0FE9D5FAED786302D8DD7DF41617F9BDFFB120EDE1BCB1E653BEAA873996AE53FC5EB07B2F01FF0C6E0F885525E214E8A6E9F92A8D69E10FF9660E5FA5DF6FE843BE5DA347B44ABA8B14535BF8380C1D1B692AA345F9E5E79AA1E3DA01410F49FBD5B13128156D84F801E5521C91903FA14740D393149BE1A94221EB95F10AF676CBEA84C6DA1E94B08547FACF44ED219200BA01E52161E21BD716AB760DF8C54A7A9838326C1811340ED2E1ADB1F33707CCFAF252E0211C6882C0F74C4DC275385430BA0845446E3533022972C815F0D257E308E7745F5A2FA40F3BBAD0850A6BD0AE2C7D2EE4174827E7796015EB8214ABE8CC102E381B599C4330D26BCAB0E2000E27A842342E7CAB920BCEBE5C69E5F1A0792B43A19006E20B45DB8D1B3133928CF2703680B7956EC2930D1CA626B7393C7EC9450E4600
sk = 2D5DF64D62CB07FE630310BB801C658D90CB357285DAFC246676B8CA88987EBE61947D3FFEFF00BFFBC37F014F780D5C1047ECF584DD204B2CC68102DD0FE9D5FAED786302D8DD7DF41617F9BDFFB120EDE1BCB1E653BEAA873996AE53FC5EB07B2F01FF0C6E0F885525E214E8A6E9F92A8D69E10FF9660E5FA5DF6FE843BE5DA347B44ABA8B14535BF8380C1D1B692AA345F9E5E79AA1E3DA01410F49FBD5B13128156D84F801E5521C91903FA14740D393149BE1A94221EB95F10AF676CBEA84C6DA1E94B08547FACF44ED219200BA01E52161E21BD716AB760DF8C54A7A9838326C1811340ED2E1ADB1F33707CCFAF252E0211C6882C0F74C4DC275385430BA0845446E3533022972C815F0D257E308E7745F5A2FA40F3BBAD0850A6BD0AE2C7D2EE4174827E7796015EB8214ABE8CC102E381B599C4330D26BCAB0E2000E27A842342E7CAB920BCEBE5C69E5F1A0792B43A19006E20B45DB8D1B3133928CF2703680B7956EC2930D1CA626B7393C7EC9450E4600
ct = F548B40FD2C1EC3E8BFD0A62B27016E93BC56A588F4DEFED3CE0D90B43EEB098391369587286E7CFC4A1926E9D9CBBB1162DB9416F04018DF7076B3A2EFC440EA7DE93EE8C3FF5AEF157A68CC7DCC79D56872F6055C982DE9152263C94C4BD1E635AC20CD2AA344D1550439B1602C21351776DD3E4BD31AA96322197B34271004F31FA483E7EF0EF9D0F9C9ECC57A179541B9C00BC09F4840AAF148B2E98D3D763DCFEE200B0D7CFCFE68D38B274CFFC44A2297DBF084E2B74F7914BC41C7DB62ADA327481133BC7CB2E1CFA93966F0D2A20172F3576C70407DEBC002DAEF9065C775CE1D91277F2835DCAB79294BAF2BD6AA51C0724B50A388E0DD9F1A575C2AEA38C1706FBDEB785D3A3FDD9E487B370490182B3CD180E1E0B7F42705C5ADA72039136EA84ABB920C708F1720F7DEA928C179E9429F9BF79E7F951F0CA332D04667160265E269A1000B8C3CD96AA512D829EE245A27BCC653D
ss = 6D343ABF2D3FE4ED15E5B57E54EFCD94

count = 51
seed = 450751D4401737459C6D93E6C5F2FBCC4A3AF7CD7250CCF404BBB817A67BAB7B4C9D0EF4570BFE25CF919DA331C31D88
pk = 2CD1C8A305F9501C0604C394B9963F61FC0F78FFDEFC2EB81369B124A5CA4AC5D6BEA02FB7BF4F07924234F9F385F3CFFFBFD6F0A82002AFA5FE622B6FB7312620502F004A8D7E7EA56D3DCFC0D3D99E19FF6ECC021673079D2472C33586A0B7D5937B7E29E6A2C7E79BBC1E7001C3CC35B76571C4D83BDBDD799256DDB2E17902DFD5E7EC0FDC821417D0DE7D0C93D26F4939D23135D3C29ED81DA9F928A553AD5F29D000B4A4A12BEE57602205540C4892FFB14012FEDE6ADC42B7FFC3AF0AA0E9D8A9E879E6AB8883C8157A5A8FE82EAF33527F871693FA29E201E081A3336718AB915CFC73ECFF7D73B00F3B631949DFE96B95A96AF9EEE8142F82DDFB66C86C1C012B11CE5E0E01CF4AF60E61B4CF7E0032982D766A5707D9D2D5C0CAC23D954C8446475DA29111C52FE6A9E13DD82F6160AADD4CE1AEB0A4804A3EB66666B179BC056BA249A701
sk = 25056D1B8113BB362DD979D98643D7A79399C9B80D3F4839CB33CA0C0DC8C1577E4CEA5B8088492E452ECB002CD1C8A305F9501C0604C394B9963F61FC0F78FFDEFC2EB81369B124A5CA4AC5D6BEA02FB7BF4F07924234F9F385F3CFFFBFD6F0A82002AFA5FE622B6FB7312620502F004A8D7E7EA56D3DCFC0D3D99E19FF6ECC021673079D2472C33586A0B7D5937B7E29E6A2C7E79BBC1E7001C3CC35B76571C4D83BDBDD799256DDB2E17902DFD5E7EC0FDC821417D0DE7D0C93D26F4939D23135D3C29ED81DA9F928A553AD5F29D000B4A4A12BEE57602205540C4892FFB14012FEDE6ADC42B7FFC3AF0AA0E9D8A9E879E6AB8883C8157A5A8FE82EAF33527F871693FA29E201E081A3336718AB915CFC73ECFF7D73B00F3B631949DFE96B95A96AF9EEE8142F82DDFB66C86C1C012B11CE5E0E01CF4AF60E61B4CF7E0032982D766A5707D9D2D5C0CAC23D954C8446475DA29111C52FE6A9E13DD82F6160AADD4CE1AEB0A4804A3EB66666B179BC056BA249A701
ct = E85E324EEBCE9BF2F204EDBADFCFF08FE598C6A66FE2861D88581F4374F3B30873DEAD8E63A2F4744C572A93CC8F8E1D02AF0CF690D600BDDFBD945A9CE99547A5ECB8884EBCAA85E56EACBE8FE3030F45E242B030FA301C08D054B2DEC4F8359F82F1F9CE73423587AEB43F3E01F14D62C6987D489C4D0994216CC83B6A26921CA1129DF61346A35B22A0E729CB766BF5216303E4CA189C477AC74C1698866C91F268BE010772A51B856405D105959F3AD8B48E7118758AA9AF90BF8CBA40ABFB581D9880CEFDBA851C690568DE7D4B2441591BA2B89B19AE30AC010BB2A2BF203380B15C7B42F72413CBC7835C1401530685E4EB8BD5BAEFC67B6F0AB2154F76362340F267A228E3AA7C714583CDD45131013B7CA4583B428F7716B8C6E796FF806FDA50112208F5D2786FC3A09258BA5A2532FA1B3A420FA3B505824A6EFCB768524A63AB055EA1004F92DDC352EDF886326216EF59206323
ss = A1C30FF86FDE868B5D09FBADC336D4DC

count = 52
seed = 5DE720F2D152BF4E1F96A61E7AE5F1BED6B8548E32638C2CCEC9F43B87D1BB43DFCF334F0582984D27E440D519AB662F
pk = 380B70236FABDF82BDBC9BE250DCD716A1DEF6D53310EDCDFEB262943E2423FE42DDE0E6FF179EB9948323A9574AC0D2F3597FCD584E00AD39DC89E0A590ADFB6DA42D7FF54F4E07478D4F86A9987E95FCC26145544FB8ACC0D0B3338A3BC0D7EEE2715BA01D5FB25C209C30E9009FBB8B132CFC249A491B042A7A18AC3EC1E58F82164CB0B1D762598EDFE3E769F68317D5409E21F312D91F6A9091385F74D0118712B60098105DE309BAB85BD40A2788EC6A88A3D3A18E961176E8068F91243FE5C060B0346A7212182F4C5925DED2F1EF2212EC3AA04F46FFC901F01F9B2B62C514831D9CD8F9CCC49648B114772D1BF43D390EBC097A1FFEA3CEFB48621D3C8C03C6E3516EB99BB7034E7A526BA3757F00158C0AE3E08733E1463DA1219228E3DEB33E486209CF48D8035B2048FFB4776A8A98CEE549A89EA8B318E47315F4AD5E8580429AF6A501
sk = E4D34E12982AEEB1D62FD488D9B9E2856F1336F0D4E622E3E950AD12176C29F0880458774FCCAD78D080F101380B70236FABDF82BDBC9BE250DCD716A1DEF6D53310EDCDFEB262943E2423FE42DDE0E6FF179EB9948323A9574AC0D2F3597FCD584E00AD39DC89E0A590ADFB6DA42D7FF54F4E07478D4F86A9987E95FCC26145544FB8ACC0D0B3338A3BC0D7EEE2715BA01D5FB25C209C30E9009FBB8B132CFC249A491B042A7A18AC3EC1E58F82164CB0B1D762598EDFE3E769F68317D5409E21F312D91F6A9091385F74D0118712B60098105DE309BAB85BD40A2788EC6A88A3D3A18E961176E8068F91243FE5C060B0346A7212182F4C5925DED2F1EF2212EC3AA04F46FFC901F01F9B2B62C514831D9CD8F9CCC49648B114772D1BF43D390EBC097A1FFEA3CEFB48621D3C8C03C6E3516EB99BB7034E7A526BA3757F00158C0AE3E08733E1463DA1219228E3DEB33E486209CF48D8035B2048FFB4776A8A98CEE549A89EA8B318E47315F4AD5E8580429AF6A501
ct = 9A1733FC5D0AA11B4E294DEAF5B01567EA0EF9FA77BECB1DF566B06B3EA4B4E8A7273DB7EB99E1D9B11FDC4110A78B5843C61D4ED26E01B8180AD4E3637DF908B73EDD4F5F2F2E14CFB16FDFBF5004C36DE8AFBAA7EEBDFB4B02ABF5B39E927B5854A7ED7DC6E7854017226E19009C96CF54BB174F5AC38629E0C5865B0F7013E60C66C41E830CC1572F563C27734C3494488405544C94F68DB14863EA98528B7ABE6E3F019CF8108265915C68359D0E403DDDA592F76C3B114BB5B3C8FAD5DC801E9622EE8A5D95C35EB0B7DBFB5F2645C0BA027019B7DBBC0E4101533F462812A12ECBC1E8BDE6E358E16510ADEAA22F4FA4A332DDE5D0FEF3937D946D5BFD34011B1C6D2C7327DA4533BA02480370D3690198C8EE9736410AA5D74A85D1D19DFF276C01420418C50537A647CD589E40DB27695A49F7E8A56EE4F440F9E7184F1FB84CD76D5CA4B300F979FD4BD304EBD2B068FD18B7EE3F91
ss = EEC1AEF4A49E035594CF00B7C02F9019

count = 53
seed = D71729DCBB27D7CB39E9E905025D3E55C8602EFBCC483C9B866EBF82326157833169243C14550AD728BD1470F39C642E
pk = 737261D6870E16D9090AF3C4BFE788C0B31975F27AE90F44FBCBC8903CD79FD2327FDD89DFD4E1EA6DF35641563096FAECD0CD4ABE18014A0D070A5393BBE654585E5A932891DA67ABA32F8D80DF166E64F95072B751FABE434F38C62D7DAF8F7A50D03C6C09E9ACD9EDAAD7B9016072EA9BCD673D3E1B365CA17A2F17D6434D96EF04FACBB4D835B1974D4664DD5813621E895F3C01988D06B371932840C105E819D38E00C634BA9772B227A3B17D104744A4D3F2E0E4923A65FD97133BC854F4815021769E4122824CFECA04D20B1F122DDD175EBE095C3DA94E00B41D9B0B73D49FDB1DF811FD013C5DC69B66E291100794381D04EB4EC9588ED23C68DE7165EBA479E831C34EAB7EE12C4BE2FC9C07C200229C9B3479F3265BF2B45C86DD37A0F7107EB01BB034D2F65A8E996DA3A415D7FBC6E420D1B253FB25B827148D4D4A3278107BE77D3101
sk = CD6A99396EB3539CA663A51E42063A3A6E29681BA52735192A80FA5D709F1AF1417DEA2C3235668327427600737261D6870E16D9090AF3C4BFE788C0B31975F27AE90F44FBCBC8903CD79FD2327FDD89DFD4E1EA6DF35641563096FAECD0CD4ABE18014A0D070A5393BBE654585E5A932891DA67ABA32F8D80DF166E64F95072B751FABE434F38C62D7DAF8F7A50D03C6C09E9ACD9EDAAD7B9016072EA9BCD673D3E1B365CA17A2F17D6434D96EF04FACBB4D835B1974D4664DD5813621E895F3C01988D06B371932840C105E819D38E00C634BA9772B227A3B17D104744A4D3F2E0E4923A65FD97133BC854F4815021769E4122824CFECA04D20B1F122DDD175EBE095C3DA94E00B41D9B0B73D49FDB1DF811FD013C5DC69B66E291100794381D04EB4EC9588ED23C68DE7165EBA479E831C34EAB7EE12C4BE2FC9C07C200229C9B3479F3265BF2B45C86DD37A0F7107EB01BB034D2F65A8E996DA3A415D7FBC6E420D1B253FB25B827148D4D4A3278107BE77D3101
ct = 4D0CA2C37A3B14E09C0970DAA3CC5C13B486C4993AC910D2E72260D2382CC0D50603648B715D31CF7081CF709F76F456BF031FAFE27301CDEA5086C041DC07F5B582B71123A85C5C6D461C027C8772E6D4B0D9F2AACA2EAFD46702145AAD45895A160E11BA17B97538DC0668EC00CF5116041498764E937498EC2D2E0854C0DF508570FCCB74E9C659CCE5534383341EAFC0D0620A137D08519E38993660AFBB6C1E73620153DE56C904BE16E6753A552394A49EF9925667888DAEF0FA8BDB604382B03991C02BEC4861A37E711BE96E926A4AEFA5F5568AE2495501FD96148155C2377B16CACC5A26EE3836E6383C15A1C2D63BE77C4A99A36F62AEE32D10C22B7A569E654DD72E8F1444DF45A2B00AA346009153B38CB839CB211F8F3E5D5D348E0D43FCC66267F170432F5D3BF4879440C682DAA27E476F254795F06870EEB8C54A0ED96C7FAC34005D837019AB202BBE4609D72644445F88
ss = 0BF8ED57229D0B958D41DC39CA6C6F94

count = 54
seed = A7C2C8EDB3601396BEB2DF0657EC82FD5780A2723581A9E03DEE1CDB018440439BB1142CAB0487C5D136E9AF46338AB7
pk = C51FAF1A4F4EB85E1A508A4336D492BD270A710C0E38343D0383ACEA2137A54D189C4BDF485F857AD58E15A40C7DE89DA8DAB22073B500D684BC760EFF8A3B7F44E200136DDFB82CE6D182D406A71ECA2FAA1799559C898465326977C83722F06FA6AE8974A18FB1C6EDFA133202DDE3DAFB931137F0C263C5E937F054C725B96F97B6F847CAAE501CBACC0536D1B372F3517ED9123D99061E3073019B2B66CCD6B15F480131BF3DE062F1DF0D2A6505BB1C30D5C0FDF2E66ABF83261C2E66F7D9FD19030FEA7C2655380EAEF87841A9F1479E18F07E8FA88063360111D8D730E5DE04520973CF5810B7FD02D9858C49039236B7AEA9ED490A12435EC24AD39CD01621CB50CA54E89B9C4AB00ACBBFCEA6ED007D14CC2B9BE43B59CEAD6D1B576AE686F13BC1482DE32043F07478961FD15E7C3FB17C373560BF2F9294541B7BE1C6DFE47C065B68FF01
sk = 6C8C53ED6F65E6B2E324B84364E10DE4705B6EA889FB97589AD7990177A19ADB0CE37B4B5A51758E7D70E901C51FAF1A4F4EB85E1A508A4336D492BD270A710C0E38343D0383ACEA2137A54D189C4BDF485F857AD58E15A40C7DE89DA8DAB22073B500D684BC760EFF8A3B7F44E200136DDFB82CE6D182D406A71ECA2FAA1799559C898465326977C83722F06FA6AE8974A18FB1C6EDFA133202DDE3DAFB931137F0C263C5E937F054C725B96F97B6F847CAAE501CBACC0536D1B372F3517ED9123D99061E3073019B2B66CCD6B15F480131BF3DE062F1DF0D2A6505BB1C30D5C0FDF2E66ABF83261C2E66F7D9FD19030FEA7C2655380EAEF87841A9F1479E18F07E8FA88063360111D8D730E5DE04520973CF5810B7FD02D9858C49039236B7AEA9ED490A12435EC24AD39CD01621CB50CA54E89B9C4AB00ACBBFCEA6ED007D14CC2B9BE43B59CEAD6D1B576AE686F13BC1482DE32043F07478961FD15E7C3FB17C373560BF2F9294541B7BE1C6DFE47C065B68FF01
ct = 32EB94DF91D635A31EAE1AE81C1319CD2E10B0AA35660BA45B99D982CBE07A2644FEC754C4FC59EEBED7E0D433FBE598F9E9C3B195B200788887150928874EF338D15A08F5F6C2ED66244A91463904374734F105389F3E9ADDC5330884A9E7465DAAD09A9CE2DD043FC2584A4900A9D434E262120FF948EA630359FF1A71483407879194C8D3B6A381CEBF5AFEFF661EC4B8C70CC9A22C99BF21474549F3538287318FE701FFF517B3F92D678AB79443386E4DA40256B861A43A0CB3D9EC5F2A4AD524373BE0D2DC495E49480234BCF67B01521E9FF2AD7771480E00C95705535765F7D4DFC9096927485FF15B5AB236A7755E51BED99B5F2A939367E444F68C0472AE8466049BCF5542D471CB332D36FC9E0049052B4EA30C9BC4133DA5DBE23A5616FBB1C0B98273C1C788C18D872A4452C094F8B15B94F9FB6204B24C5F6FA27FC2EB60A1B371B401EA3C58F71D6E68E43E0973F3552F9BB4
ss = A3ABAE416B3EFD3FA907D5C21E9B8F51

count = 55
seed = 467F6158CB86B724039FF18C47950AE5C49170163C910FC9A9B30141F86E9C06EBCEC91497BCD156D95758C9F0C6EF91
pk = 98B2D052F7DCE2E26A25D28006AD08D1A9DA8E1FB331DA9E349AB449F6F0B1074A859AAB5D4B3241553180FF0C944E6B317190AF3A9100FD5063623C9B346C0F47D8D5FF62821E30E7B1D47095DFA078360D75B58F5042C198042DE71B87400708D4BFDB97B1A1CE57A0CD56EE00064C826AFA29AA726354C553F3DB19BDCCE701929E5EDEAF3F1F8D2214F917AF9AADD08C6DDC3CCBE6FA7B4EC45E9FC5FF3A946EF5B000753F2D2F8D043196AA802573104B5473CEC0E991E79472E00352954F82F202DECFD7ED39C80CDAFA88A952DDA57AA6C98DB30E61295F0006B8487B9575A04D5B699FD88C7AE8EC3D3D3F4F579C92427309243FCB2510D32900A25C452C857EABE89851FA2E634A15AF0761E42700A240DDE2201897B61DB0561632371BF5B14323B1DA1300A80AFC00E1A6B4853E7792695B4E9CAFF6F398BA01B5AB13C7DBABBC9379E800
sk = 2107204CD995F1DF14314D5381F8C544036C7CF2D797F1DD5D2E23E80727FEAA67B5F019FE8AD45F1F7DB80198B2D052F7DCE2E26A25D28006AD08D1A9DA8E1FB331DA9E349AB449F6F0B1074A859AAB5D4B3241553180FF0C944E6B317190AF3A9100FD5063623C9B346C0F47D8D5FF62821E30E7B1D47095DFA078360D75B58F5042C198042DE71B87400708D4BFDB97B1A1CE57A0CD56EE00064C826AFA29AA726354C553F3DB19BDCCE701929E5EDEAF3F1F8D2214F917AF9AADD08C6DDC3CCBE6FA7B4EC45E9FC5FF3A946EF5B000753F2D2F8D043196AA802573104B5473CEC0E991E79472E00352954F82F202DECFD7ED39C80CDAFA88A952DDA57AA6C98DB30E61295F0006B8487B9575A04D5B699FD88C7AE8EC3D3D3F4F579C92427309243FCB2510D32900A25C452C857EABE89851FA2E634A15AF0761E42700A240DDE2201897B61DB0561632371BF5B14323B1DA1300A80AFC00E1A6B4853E7792695B4E9CAFF6F398BA01B5AB13C7DBABBC9379E800
ct = E716FD738B7AA39239F4352BD27A7922F410A62AFC46AA4571080446FFF818E5EBB67E2FC799639FF75E7E8F1995E1369C683880224C002644DC773AF4F1F2B4A2C2A1A709BF2DA46C9813832DB3D404F09FD7CD3967ED3E9472F17556457C5E1B49446B3469990FF8E67B6F83001B547A5DAD929DE07DB1B25021F5E993A7E3B2AAA602380BDD8D6313EFBD26186AC880D9D842A9F0A0F91C8EE128A148CB566153D56400221C5ED3A4BAAC79F73ACEBC82C5647872140D38BAF4721D00BD0C10162848B68B83891C89A6832F1A5F3AC01483D47B9C0EA6A8DBED017672A221A099E9FC2A5C4C53E265001D2AEBEF0EAD8F44EA1671B6662E631F56CDA9062354C84DD9B49220262941AB9FA033C87C78CB004115282DC18AEA80E07A959104F19EA5972EBFA824E9D27D96ACF615B7747337E007F2BB32E634773E44D49FD1D0FE2D15BDF82E86F500FEF58818E5BDA791C1C85FFB43677F10
ss = 66A0B0B4DF621E5AA3B0D21CDD7D9164

count = 56
seed = 687C02DE1041ABAC7B2C1E6EC2A7C3375552ED5EDB10E3A8139C24CC76BDA44D719D8121A81D47A0B762B4E9EEB85235
pk = 702701BF3674F2824EF3526FDCB0356222C384393E292FF2D6D90709E8417ABA6B8ACE3A569A1B513D29A006CF117A16B2B0978E880200706B2E913CE9CC0C9E4D0D239C538578D05D3A7716538E1527A02A9002E99B9C47B5CC201224E7F5BB25DAB559B9B0BC4E339063446700AFDB94426D4F8E34CFCFD65A62E1E2EF3BD375AAB11BCB284FD98EC717FAEABE811D0DE96E245DC7C45D8D60FA136A9C319D2D5AD77D010B872AAE5011B8F9F21CB54AE07985FE4E8EB9F41E118D2F7C77887B3E70B53718F1DFE0DAF1F17DD06E2EECAE612951AB03F38EB63800C23C3C4385FEE2C1BD670E20290DC7734F9DC4BEBFE546A91615A2899B0534A35E8AAD6D580B0A3B48DC60DBFB01A72AFE3591964CC5010396224D19D0837AF24BCE050A68C93F7CB2B29D3B470694A5AE337FD4C2DE384052B40F0AFBF3A122B242A3B1A6F1977E66D6A7BA1402
sk = 63A925685A8AC5BBD918FAA33AC397D16D3E9BFDC871811E8827E576118AA548CB46A1B5E1A4B63823FE1C01702701BF3674F2824EF3526FDCB0356222C384393E292FF2D6D90709E8417ABA6B8ACE3A569A1B513D29A006CF117A16B2B0978E880200706B2E913CE9CC0C9E4D0D239C538578D05D3A7716538E1527A02A9002E99B9C47B5CC201224E7F5BB25DAB559B9B0BC4E339063446700AFDB94426D4F8E34CFCFD65A62E1E2EF3BD375AAB11BCB284FD98EC717FAEABE811D0DE96E245DC7C45D8D60FA136A9C319D2D5AD77D010B872AAE5011B8F9F21CB54AE07985FE4E8EB9F41E118D2F7C77887B3E70B53718F1DFE0DAF1F17DD06E2EECAE612951AB03F38EB63800C23C3C4385FEE2C1BD670E20290DC7734F9DC4BEBFE546A91615A2899B0534A35E8AAD6D580B0A3B48DC60DBFB01A72AFE3591964CC5010396224D19D0837AF24BCE050A68C93F7CB2B29D3B470694A5AE337FD4C2DE384052B40F0AFBF3A122B242A3B1A6F1977E66D6A7BA1402
ct = C72AF9DB8FE0058FA999507EC3D69AEAFCD3AFBF9E6387CEA9C17AA8C00978879F12D50501CF452269A4E03F9949AAC344C66C1786ED00A7FC845BB14A89758A2CE4C994FAD5E02EAA0295BACAAC65E52BA78937C11121F333432FED33FFB236E9E639E80224A9A8B7CD98915E014664854BA468779676EB43B741746C866E2FF44AEDBD9BCAAAD11E1765AEF8BB22F650665EA148FECF45DF31B2A3AEF84589316E9E2002F88644E12B419ED95CA38632472DD17BA9E6269CA2C75E30857A1C1417985E4229C56C0C21CFDA48D90430B0F6D347F9DF7227D492940029E47B6AAB336DEF51D7C052681B5767C4DE900122736F959421DF1185C4E75FF67A9D09B73874758AD3A57C02AD9AC1F30FCFA71E03022F67663AE7F6F90008D753ECDF7F25375BF3E73C928821D5ACCDB33DFC9BFA1AE29B8FD11341FDE6F35579E19E56C002F6691E46E38801FF40F63ECD985E7A147CC4273A56E153
ss = A345B90C57E48D5257A155B917500E62

count = 57
seed = 4142237070C216BCBE245A39BD9220533C97651D84832B26727855AD994A0760C52B9319AD404693E4248B8C5FF324B3
pk = 3701DDF09F3DD9D871D4D663EFC9DADA11FFCEF725F363F544D68DC9453C0D1A39EF81251D101C50CF2D6C428FAC2597B11824D3350C00D8A42F20B9ACA29379375DF81BDA41FA4B3F17F3363DB150CC568E9436C29CC51C99D13C1E0A76CDE29BE2BDE30232D11542668809C001DA076B316F4B2511016001649C08EA73EF7F0701C16EB62798575DC713697A8B0550BF30A63E673C0E3E968E8788D784522D519EDEB60036415ED153629685CC8BA3DE6E23350933AB3E552102FA940884290E7296C8A948F38A907734C7493BA93392494A67DF881CF8D342E5015451FCCCE54ED98EB606A3ACB6240624856537935ACECD0546BD39353495B1A1B8231C2F970B752AEDA92D5E7891F52CBCE841803CF7001274ECD6397F1A8B27AABD9470BF1D18AB9AF401CB454E158BFA3960D4624F072A14EDBDCCDCE63410FCDC1D762B6AF0DAE11A1B4D7100
sk = 6A1AEE5E708C1B47F02BDACCE4F56C86CA9F6F64AE7EB3C493F0D576ADACCABC44FDE623EBCBD94785F31C003701DDF09F3DD9D871D4D663EFC9DADA11FFCEF725F363F544D68DC9453C0D1A39EF81251D101C50CF2D6C428FAC2597B11824D3350C00D8A42F20B9ACA29379375DF81BDA41FA4B3F17F3363DB150CC568E9436C29CC51C99D13C1E0A76CDE29BE2BDE30232D11542668809C001DA076B316F4B2511016001649C08EA73EF7F0701C16EB62798575DC713697A8B0550BF30A63E673C0E3E968E8788D784522D519EDEB60036415ED153629685CC8BA3DE6E23350933AB3E552102FA940884290E7296C8A948F38A907734C7493BA93392494A67DF881CF8D342E5015451FCCCE54ED98EB606A3ACB6240624856537935ACECD0546BD39353495B1A1B8231C2F970B752AEDA92D5E7891F52CBCE841803CF7001274ECD6397F1A8B27AABD9470BF1D18AB9AF401CB454E158BFA3960D4624F072A14EDBDCCDCE63410FCDC1D762B6AF0DAE11A1B4D7100
ct = 3DC947FB0B86A9024DAE01A470AE88862436083EA0BF3ED41E673B113E3CA290EAA3C0F938228B2A7E1AED58E77D0A574B71F2123F7400BBB55D5C94C7CAB38C4C79AFAEFEBAD6C450632D617B0FB232CD1B540B3DE896F7E28CFFB4F94862D7A61851E652AFD761E30304741D013B6C52F280CBD71E8A1D349F8E8A7D266564E3413FCA60C046DC9218F23EF36C3CE2640987321AF768A6075D39D2822F66C0C1F1D12A00185622BAAAB8C8C748BFE834EEBDD45A3E50E15806A163626331DDE75A354EF120FC8589B6F82EC056CFD236E4C557684CE030466A6C017B4605D04E742C4365094FAF72C9CCD18890DDF1CFE6E757DE9D22E33492571BCABF08DB167DB99477494B099087A7365149A170126600568F6148753A37C0F544B22E23119FF3AE7C858C9FAC3A72B06F769C8F37D034395815F5C3555197E6F1F1EEB7F667D653C1F7D7B1E600843381BE13131C2626FB7C9E473FDF50
ss = 48F4CAAAC964251E2A039063C206E99B

count = 58
seed = BD334D7B7EB14E00E68863F2E5551A095F8AF10681C28353FD19B9A7E70B8BFE266840860609008A567ABC66316C77CE
pk = AD5CA25928A95A69099DBD0E2AB67494CBE404741115FEC47EE8D44588EC55323D633791020CE18C4CBCF315A63109DF9EB41C9CF37A00D73EEA2F67DA46E38507567740E4FB0FFB31659995E1F24BA21A32A27DCA0963B03F880588CE54F5C08FFE81F8480C86D0AA83A7E8C700B8A4A8C2EA85DEDB049AAB634871C40DFEFE3E66A123203F3345223BBE04F35CE4F5053FBFF8D2087B3080F67679AC6A35E9681CEDD801A91A45B6324D09E48126551EB613085E708198E134742D771DCCBEC10BD249AF80D3EF8B3074B85395B866B1A9446A8390ABE7FB0CA70088CC702018182B6BA52B2F621C118F95D691265FDA98EE072B2F61E14C835EDEA8266A0864EEC302BA7A75A2E79D7ED8D74568FDA2BD01885197037A0C99E0BA2822F95046A3A3938977E0EB8930DB4D3B130B627CBC7F6B49FFBADC5ED1092B2800DD283215DB044728AC939201
sk = 6396B328B100E4C7F4BCAE69875EDEA1B1947083EA19DE32004F49E8696F247C556CF33F78745F7DA7D50001AD5CA25928A95A69099DBD0E2AB67494CBE404741115FEC47EE8D44588EC55323D633791020CE18C4CBCF315A63109DF9EB41C9CF37A00D73EEA2F67DA46E38507567740E4FB0FFB31659995E1F24BA21A32A27DCA0963B03F880588CE54F5C08FFE81F8480C86D0AA83A7E8C700B8A4A8C2EA85DEDB049AAB634871C40DFEFE3E66A123203F3345223BBE04F35CE4F5053FBFF8D2087B3080F67679AC6A35E9681CEDD801A91A45B6324D09E48126551EB613085E708198E134742D771DCCBEC10BD249AF80D3EF8B3074B85395B866B1A9446A8390ABE7FB0CA70088CC702018182B6BA52B2F621C118F95D691265FDA98EE072B2F61E14C835EDEA8266A0864EEC302BA7A75A2E79D7ED8D74568FDA2BD01885197037A0C99E0BA2822F95046A3A3938977E0EB8930DB4D3B130B627CBC7F6B49FFBADC5ED1092B2800DD283215DB044728AC939201
ct = C3A47DC452E79684E7A511CF7D139688C2BBDEED755F718229B56C7C80EE03CA9BE48AF78D70921068D2492AD0190C1758C185E66FE700A8A717FDCB49DA688098B337D2A1DB691087DE8FE3AC7292BD87DF02B884CB9465A377B69D6E0B030C0CBE7CD3DDEFF9CD544052148C0058977F18A2A5264209DF07DB5CFB29A44473A00D833E8F1634BE13A13563015745D8C8132F5F757376AB26CA9715B23F664E1D2DFD5901BAE51C8E80E3BC227A964697D90D7D08F10C088D5E287A16848ABA827DFA744D4645DA78F8AABE2878913D2D8FC2C6AA18EC220F922801BB549A9910DDCA0AF9B64EF0587F8B970B4396887EFB69C067ED1492C4AB3C60D039171F41AA5EB796A15E0D1A08835054F7C06A697E00C02BCDCE04320347CEE14C1AD829BE6DA4F09558447569869D1E316CF9CFB87F739F2B720F52E50EB750965F27E29DEF1CE079BC402001DBD04830957773FEAD0A5262F0B79131
ss = A5611782265E1932DF3B7E736F40BA3A

count = 59
seed = A0264C58AB1F2CBCB212077FD378D340307ACCB31F1312137CF84E3D3135044D4EAE8BD38BC3E540A0C14D46458F6179
pk = 8CA6ABBED1FC3E64B29FA9F87E149A906BB5FC7C69BB386ABCCCD2CD1755EEF206FD9F801139F62BBCDF136B9AE3F1076B29584D07AA0183A6A1F092976FFC146D2022D77A0F132DC1A8E32E510729B00CA76A172D41A553072177D2ABA1E087D7FF1EE4642CABAB83D9C9B1EA0144C76374657D4BFA797CBE29C0F2CA863A4AF30EFCA9DEEB76EE64E823A6D27E73DA326A65D49B4DDE6AF41594CBDADB27152F6CD71D023B719F7CF53C9DC2262C6C1910284264399B75AF086548FA8F955D2BC3467EA78E873B200997AD4CE2C6DFDCCD9DBA90B7B2D276837301AA1B4F88864096B0B4A4E0A4F8542EDA77DCB92AF456D930E29040D8ACB57C5813E6E051FC51A4D9537B51FD5182656D86E08EAF01EC01925A6B7BE77D58C998B3D21C5F64DDCFE561AEE1732B01C7315BAB1F4AFE0400789FA36939EC389F9964FC735C75B86B6E64D041443901
sk = A453BCACDD2B0D4646009E5ED451C3C4E810FDFF3E1086663F6C7B489742305D34B1FDD7159072FA736B97018CA6ABBED1FC3E64B29FA9F87E149A906BB5FC7C69BB386ABCCCD2CD1755EEF206FD9F801139F62BBCDF136B9AE3F1076B29584D07AA0183A6A1F092976FFC146D2022D77A0F132DC1A8E32E510729B00CA76A172D41A553072177D2ABA1E087D7FF1EE4642CABAB83D9C9B1EA0144C76374657D4BFA797CBE29C0F2CA863A4AF30EFCA9DEEB76EE64E823A6D27E73DA326A65D49B4DDE6AF41594CBDADB27152F6CD71D023B719F7CF53C9DC2262C6C1910284264399B75AF086548FA8F955D2BC3467EA78E873B200997AD4CE2C6DFDCCD9DBA90B7B2D276837301AA1B4F88864096B0B4A4E0A4F8542EDA77DCB92AF456D930E29040D8ACB57C5813E6E051FC51A4D9537B51FD5182656D86E08EAF01EC01925A6B7BE77D58C998B3D21C5F64DDCFE561AEE1732B01C7315BAB1F4AFE0400789FA36939EC389F9964FC735C75B86B6E64D041443901
ct = FFFC3BFC6FEE16A0657F2D379A88E6ED0E40DEB71C6D703DB7699AE914F5E54EAF974221D93A6160294DEFC2E4D0E45A2E73345477660050B3121137F1E6CB4359EAA0799BFF98297FD0CF2AEC3530A9ADE6B651FBAC09CBC15D96AE2D0155065E1700900F7C04CDC1C23C5B06004FC9955C8E9464E36C2FB2D3022288B937805562DA27AF2E3F8D656BC9CB04B83D1BB71259B6F9D281CBE0D93939C0E00B83DD2D231002B230A362BC27DB27729D6C64CEE188EA9F019AD77D1E8FD38FD8337B8F8C132137B6786D3B0D55677C5BAC3CF590462EEAD4C9C2EA1C02209AC0DB71C164123BE68CCDB62DAD9731C034FB528D05D16F7D144644997E33699DEEC61D73FCB06463D734A454B2405D679EBF230500CBA5DCD4B4399525FFDF252D3C7310310F6758897FC3CD838BFA26E6316C8DC8E536509D31EDFB6D017A19A829496240816134C46D2502C33A13D0612EBF343F71E311A24B7702
ss = BBA5BD08A7BD6DB8620A1C1149B00D03

count = 60
seed = 99A9CDBFC674AB3FF2C64CDED7D697A6E27A767434A47AFF7C3FBF3C6A22D6043D27868955286A13EFE3DE36D22EC48E
pk = E97E2291AC4EDD6C891CDD83254AAFFCE54E17DA2B5A2FF5DE80BD3099FF430422F894BB444FA8D932B42847C24C307618AC07711338000C0C47E13241A82DC36DADEFC9A734E15487BA0A5158C4BA24E1AB09D296AF9BE33BB66357EF74BBA7C6F6C26D253850A2D5B7053ABD01C967B1D444B830C13F2D84595991027CD057264DA437C40FF680292E3CC4B6C1532205C01A8AB1260276C1C66332D7F88DC68177F42C0155B3E4B612DCF0E7569CB58290D34E03F41C5A6971BC9AE2B94B8DF7BA89C315024834B01DEA17150753A18ADBE18BF7E34D9918E3AD014A5F85825E6AA2A0694D69CCEE5E65EDD3013265DDDF21DEF509A70115158B3B873DF1E73F185BFF1A297384C8531886E66C4A4897EA01C978364EEDCBE2EBAF9C9BB572081C381125E09DD4A539B7B6B4603D3AA145CF1A3C5057963D41981BECCE8D4DCBC316B952F252FA6F01
sk = 47CA2B77C5B717F423222C2730CA5CB978B7B859D042C0EF174CD6EBCE4C1FED3D4248A48506D73838F8DA01E97E2291AC4EDD6C891CDD83254AAFFCE54E17DA2B5A2FF5DE80BD3099FF430422F894BB444FA8D932B42847C24C307618AC07711338000C0C47E13241A82DC36DADEFC9A734E15487BA0A5158C4BA24E1AB09D296AF9BE33BB66357EF74BBA7C6F6C26D253850A2D5B7053ABD01C967B1D444B830C13F2D84595991027CD057264DA437C40FF680292E3CC4B6C1532205C01A8AB1260276C1C66332D7F88DC68177F42C0155B3E4B612DCF0E7569CB58290D34E03F41C5A6971BC9AE2B94B8DF7BA89C315024834B01DEA17150753A18ADBE18BF7E34D9918E3AD014A5F85825E6AA2A0694D69CCEE5E65EDD3013265DDDF21DEF509A70115158B3B873DF1E73F185BFF1A297384C8531886E66C4A4897EA01C978364EEDCBE2EBAF9C9BB572081C381125E09DD4A539B7B6B4603D3AA145CF1A3C5057963D41981BECCE8D4DCBC316B952F252FA6F01
ct = 3613BFD6D40D49A140CDE59FF2AFF193B5C6A5E5699E25AB2FE0FD4A495B68E3FBF4C3FF92440462C3881D533D289619D63D7F48F05400F70F1977A6EDAC7BDBA93E629032B0BF5501B7BF17FD2B3C1BF2A2273498F1A96620730CC4EE61E76CF0680B52DC49BFC4CAF155FB9C00AFED4CDB9DCEEA14389E1E6A174A8D23E863380E06B3DDBE07BF19CC88005C2A68F82CA2462FEC058D11F7C44811363E7945705C3E710085443A799503AF24CC49688C6D8900E27577E9ACFB18601F383E36143C36CF7F013F97024598B64B3EB1AA60738AF99D00FDDD66105D0114932A2E7F50C4A38269C81C97574A43821FF7F53655F1264281FFDEF023D4398D56084958C27B8EB72729C0CFAC6FEA68618683CF6C00D9C8A17F50184135053706013D0FAB0B11E3CBCFF39ECA75A02980A178800A730AD15308714481FD9BCF733408B17EDF38661432F48101430614AC37977237A2E574DC450EC6C4
ss = E72DEB6A7678A71CC4986737F98204E5

count = 61
seed = C799D57B41F28C5C446DFC58A5AC6499C4BCF3C162AFD2B09A16549826EC2A6F689E44BAFC4ACC82F5D6AEC23F4A3993
pk = 727B0124AE457E9C7FFAA43B1C7A3110983E6B6B81F86317616432DCE466B257BFF20FE0ECAF6FC44F967784D2E6F04C6A80314769AA01CE1B91064D34EDE360D599F301DD2DD120F1223D4EADD07F1F533CE694C78EDD2315ACD642F6ECD5A7A451392C2B1B40EF48788AC844011587B1EFE4438ECF17CC9136A0691BF7659CFFF0DBFFD657F89A9E61765E6CC69B968DFBE82F5BCE4E4722406E9D1DCEA63E00953FB401706C9BF31F785E313B0DAB61DFA2DF687E373F9F9CC8FBE8A14FFDBAB52EBC1E6935AD9C7EF14C07345AB0D570ADF8493B20A9ABAA6C004C1CBC4C938C9097F7ACC090F4452DCCACAFF3E9911999233D3A2309792107B0446A39E9E8FAFABF8376AFE9F230053B500E517CF15101186D4C219EEB85E15B11D74DF2286B437C9C7D34BEDA9BD03D91F764AB6DB04AFE4AB4DD94F710FC366DCBF68F8E1467C06189929E7400
sk = AAF6EB40E596A5E3E8218871E708B0897C0AFEEA370632D3C232B25961508A363FB76E44B1ECA4C8A54E1B01727B0124AE457E9C7FFAA43B1C7A3110983E6B6B81F86317616432DCE466B257BFF20FE0ECAF6FC44F967784D2E6F04C6A80314769AA01CE1B91064D34EDE360D599F301DD2DD120F1223D4EADD07F1F533CE694C78EDD2315ACD642F6ECD5A7A451392C2B1B40EF48788AC844011587B1EFE4438ECF17CC9136A0691BF7659CFFF0DBFFD657F89A9E61765E6CC69B968DFBE82F5BCE4E4722406E9D1DCEA63E00953FB401706C9BF31F785E313B0DAB61DFA2DF687E373F9F9CC8FBE8A14FFDBAB52EBC1E6935AD9C7EF14C07345AB0D570ADF8493B20A9ABAA6C004C1CBC4C938C9097F7ACC090F4452DCCACAFF3E9911999233D3A2309792107B0446A39E9E8FAFABF8376AFE9F230053B500E517CF15101186D4C219EEB85E15B11D74DF2286B437C9C7D34BEDA9BD03D91F764AB6DB04AFE4AB4DD94F710FC366DCBF68F8E1467C06189929E7400
ct = 703BB1DD130A7087003CD296E13FFA7CE1AB2EFA024EB02ECBB6054C2DA0537317614E1D075F1F0A03A289B48212EFA3E0FCFD6D00DF009E6D779B03BC0EFE5C1FC44327E710FAB872A967B5A53D129AF3336FBFD92BEB7361DFBB019DC19630D756D7888095DB3396DF579D200064B53C4DC5DE29A5535E77B5C5BACF30373F2D85E29FEB60ECBDF46ECE95DAEFF20D1331DEF5F53AD0004385275C206A1AF5BF46914D00BB9D1D4C631000C5FDB4ECA685E0C14FA07CA70795798B801CB05658615A9B11B953519A6A15E7BE7A9D24665F3D0146215A3451BCA000E1FF18EFAC26EAA35A084C4D4644DA52D3E69357C3E51A6C3DB78B968A2046DC7727BB115B24C92D63D1E0DBE440F96B1E3428BA3A7801F4190D85804D261D1613A361F529FDFA77579CA65586E7E6DD91E9F0B7B376597745BA0821176F66B1613B84B973D0B9EF62E41741C6013AFCE7D7BCFAB307E3543041847B858B
ss = 14E0D35F4EEF91D784C700B5C9E99296

count = 62
seed = F7AE036A0176A9DE9A036A542DD2840033277C44AE936D10B768566216DE9D4395CD42B116873B69D9804BA6CCBC05D5
pk = 0D6F148903FD537FD294950DAD7FC52118B64EE1150DBCD5C1AD19C48598FB17178313D61F22C4EBBF1B6A8E636630BDCDB533E6E66601D84ACB55038F89DAADF7A1F2F7EC9BEB5AE775FB64BC0A1D1A43AF3E76C6C910A565E8507947450016782FC98C237440EBA4F1064809004947295949BF56B588AAA379E43C700FB5EA93087451A2704B725466682251A00456A73EC81DC80E32815E4B6C74F0A3A860326F0C1902E633C345FC06B71367A37308E9D83CDA6AA6C7D6F22F93758896DB2FE0B913C31B9848895717545E8C51F1AF850B9EA6D398959FE26D00E24F7309C3CF818BFAFD7D25F2C4D21BD071E8AE3C085D4E4E5F7A4981A6D108DD4DC39B394E36ABF58D9CE0894980FFA2C99FF0633301C86174ED24E5CF936D8AAE331919567D0989136AD54CF66BBF5E696560234BB883E63A6E4D17EA264F9B02AA9491F027CF627FE00B4F00
sk = 6500F32C93415CFDBC0BD31D78D5BE95CB4DD6F6DEC81902BB89A14C910D5DE6303E7F605BFF6153D43A63010D6F148903FD537FD294950DAD7FC52118B64EE1150DBCD5C1AD19C48598FB17178313D61F22C4EBBF1B6A8E636630BDCDB533E6E66601D84ACB55038F89DAADF7A1F2F7EC9BEB5AE775FB64BC0A1D1A43AF3E76C6C910A565E8507947450016782FC98C237440EBA4F1064809004947295949BF56B588AAA379E43C700FB5EA93087451A2704B725466682251A00456A73EC81DC80E32815E4B6C74F0A3A860326F0C1902E633C345FC06B71367A37308E9D83CDA6AA6C7D6F22F93758896DB2FE0B913C31B9848895717545E8C51F1AF850B9EA6D398959FE26D00E24F7309C3CF818BFAFD7D25F2C4D21BD071E8AE3C085D4E4E5F7A4981A6D108DD4DC39B394E36ABF58D9CE0894980FFA2C99FF0633301C86174ED24E5CF936D8AAE331919567D0989136AD54CF66BBF5E696560234BB883E63A6E4D17EA264F9B02AA9491F027CF627FE00B4F00
ct = 3CC75AA604817508EBA5C04D73D0593B95A3ED553F4D26E404F7BE6C2372C1E83CD5CE5265BFBE1F3AAEE586CB17756441F6673CE90902AF24549B7B7376D07BB4519BABCF12DEC564CBAC7D48C0DE6E9BABDDBE03268E8FD605BE8E839B00794600EA11F0DB8FE5FD2EECFB8A00BC264283D425B9FC312371C565B64D2DF1066360695697E895CCC356B2DF78083F450D89B790AC17618B6EC4151CC4BF467BF1364E92017403299D6595EDEBAF9584684CC2D8C759111CB75335A3C4FBE78781245307B3ACBE19C50B157F3898C92EF84A34AC1E4919B343816001FDFA4D0713D29543B3D9E738E7677CA978ED575460ECBD62CE874D630E276BCCBB3BF95D8B90F21FE95D9E2275BEEEC2AD9A9109F6AA0104FAB9F2AEC92CC70F612954FAE3DD43AB82D7604F56C2B68E98615B6DDA1183A72A305E74D092D3F53E8E44DD1650F0482CE9D3CAF800B0EAC4B9C25048324BB2F81545741AF5
ss = 3588D259EA898E25FE7883554B9B4A77

count = 63
seed = D995D38F934B6E1A7CA77C9522E3D037676CC939B0C8BD4B84394B3DC91A791F09D2D97199258C9943DA955E7F7B26FC
pk = 22E6AD3701B91F9AE1D91BBC7164C6733DF4A4E08FAB8A8DCDAB3D6A5EF86C6A2F0DB050A5A07C95CDEE030261EA73A1A12767BE6C5E01070952A58D80098114AF8957E76747FD2F06DDE6BE794A089211846C6BD6A329A213A5B2F401B493B756D30637581DCF0BD48C88FEE7016FE419944906487E4452F4AFA330CC61C035C1F64A9B4D59439BF417F936FC992361465D512985528140802AFBCA00A51917FD18714E014CACFDE6D1A3CB4195B13A1AF7EBED68751AF5C52B19DC5689F7E4AC1253671B6C15C9552F117D7BBAFEC770AFBBB528E62B9DB933BF01918526CF61BBDCDBE2AF5301F5273E649AF2AF618EBE5167F8E33B5F48B8AEDE72E4B49A32CEB4D8FECBA5F2B7D90C9E578BA950A54D0055C71A66FC6B4D16B59ECF438D20E13360CCCEBCF4DE9A90BAC2056B18C64D5629E2201882977B17717A07B8A03E6D64BD247A98BEBD00
sk = 7643CEF2D62CC5AAEECF754653EA6229D02532A13919CCBD7622339742B0F44C697D5D5931C43D983CD1E50022E6AD3701B91F9AE1D91BBC7164C6733DF4A4E08FAB8A8DCDAB3D6A5EF86C6A2F0DB050A5A07C95CDEE030261EA73A1A12767BE6C5E01070952A58D80098114AF8957E76747FD2F06DDE6BE794A089211846C6BD6A329A213A5B2F401B493B756D30637581DCF0BD48C88FEE7016FE419944906487E4452F4AFA330CC61C035C1F64A9B4D59439BF417F936FC992361465D512985528140802AFBCA00A51917FD18714E014CACFDE6D1A3CB4195B13A1AF7EBED68751AF5C52B19DC5689F7E4AC1253671B6C15C9552F117D7BBAFEC770AFBBB528E62B9DB933BF01918526CF61BBDCDBE2AF5301F5273E649AF2AF618EBE5167F8E33B5F48B8AEDE72E4B49A32CEB4D8FECBA5F2B7D90C9E578BA950A54D0055C71A66FC6B4D16B59ECF438D20E13360CCCEBCF4DE9A90BAC2056B18C64D5629E2201882977B17717A07B8A03E6D64BD247A98BEBD00
ct = B5D25E6449FAAF1A85254AB7F3AA11889F3BB222AAB8B0DF68699CCF394922C0C32965EFD1274A066924261E88225E5BCDCDE4B6DD9B00B10B98A5CC2E5D2A01CEA357F63B5855C4D283AD44EDE0F25B1AC1D24C915D547F699872C8E7D53C6DBB9667D54DD598CB6E5C511A1001E447080B1821220829C7BBBE3C170026966F1119A0DDC1354EEB3B9DACE5E6CBA5787434B6772200767254C056161CDF729ECC62BBA70016B12E6B5A67CE21500A048260862CBA87BE225D9A29231C0EC7EB7A58056BB2D055C676C702FE1655DE177B3E04E97B56AEA0BDD6D1007478AACA5F6BE4AEBCC46091798A5420E4BB7F51BD2AA62FD2BD55DBAEA4F7429C3543570965F5476D8CAB5CF5FACE07248281F5ADD2013254679D4AD0E98FFEEA1E44711887D3FD6C66C128764FC5515026ECCE2146EA39B732A633E3359DC95E17A1E14B152DCCC788CBCF0B021FE12ACD811D405CAECA9AB1B7B731AD
ss = 5CA9F51BE147CEAD8A910A5AACBE78CF

count = 64
seed = 5929F02A271725CB40200DE32D9D03D8BEA53B53AC83186C42C7F565CCB1CA508305D470850CF86E9B2C61A5B8CA1C93
pk = 26E993E2F3857E5AD642A76ECDB1155A31E48C17759AB60AB96E54DF115D96626307A87FC2B201EE215E6EBAA8076674501C1EA54873003C0535CF2EB25C9B86DCA55367A037E30F5265AC3B73DC7FAA570BA0A288F933DCB37F1FAEC658E81FAB6D17713F798735177F20C81101D0FFDD14A9588B9CC7DBB7410E208C519C524F6909150C0825FCE0DD695243177B3B6446DE6B59E870B02811376F04EC5D2B03A5341800D81E2AE30953896F228538490A411BF97C287E11436DE0A96A61ECFCCF4FD8C26CA87345911553E1C9CB985077C27E01D4E6228DCD6101C1B9B6DEA614AE25ACD893257D26AD73CA67145067EF8884A31A7EE969C593DFD9525EA595096C199CE7DE16AC10C3BCB705713BF21300F2030FBD6D944EC69809BCFD91B9B3F08AEFE02A4518D942E327E54E33F5698AA798F3A1A73F9417FFCDE5DBBC2A9A3F6AF31652F7AA01
sk = F8EE95521060C03BB8DACC79F7EB7DB61E3D78F1A9C5D3AB7B0F124E6595BDD2A1CFD3DAF7125AB513EEA00126E993E2F3857E5AD642A76ECDB1155A31E48C17759AB60AB96E54DF115D96626307A87FC2B201EE215E6EBAA8076674501C1EA54873003C0535CF2EB25C9B86DCA55367A037E30F5265AC3B73DC7FAA570BA0A288F933DCB37F1FAEC658E81FAB6D17713F798735177F20C81101D0FFDD14A9588B9CC7DBB7410E208C519C524F6909150C0825FCE0DD695243177B3B6446DE6B59E870B02811376F04EC5D2B03A5341800D81E2AE30953896F228538490A411BF97C287E11436DE0A96A61ECFCCF4FD8C26CA87345911553E1C9CB985077C27E01D4E6228DCD6101C1B9B6DEA614AE25ACD893257D26AD73CA67145067EF8884A31A7EE969C593DFD9525EA595096C199CE7DE16AC10C3BCB705713BF21300F2030FBD6D944EC69809BCFD91B9B3F08AEFE02A4518D942E327E54E33F5698AA798F3A1A73F9417FFCDE5DBBC2A9A3F6AF31652F7AA01
ct = 401F10B5DB7B513CFAF8BFAD98ADA521D132BC0AF521E94794412A4AB88397C87A041191F5EF4AB65FA522BEDA2443990D3C40D7BF7500B71DE14FB97ED3D400334A1B7689E0D53FE3025B1141521A0E1A330C4886AD65DF816F98E22C716DBC1AB69638D8B92618D5AF51BC7C0119079DDF3415010E02DFB2A8E94561E4999A49C2952CEC4E0E7C78AA2A5BAE8AB4ECC6F9EB1B79B09DC69BD709F9BCC9E2899EF4C70C02F656A3C5180EAC9F45A0FCA863554A793B73AAC6CAB04348208317A7AE30D66C62B88A66BD0C31D58AC64A5F2FAC091C8A85645555A3008C4D621003819D34621F3DE662E35C3DBCB00EEAA840E787258F535AB9C1ABF9DFF07BB57BB6D03812DDEC800964280039B50C1BFF7601AEE4C029194A6689381CB43C4E303DB1F2CB09D86B5EB4C34F953CAE1A7868EBF652555D590309CA6A0A5C077720C50473AACC30C97B00A4CE018D8B4399B8B035AE66AE4EED06
ss = 5E0D47D983AD86F377EC2B28DF453778

count = 65
seed = 905074033D7B75DEB2D06A2F29144EB377B452534C5710632989F02D45312D156557E96D4486020826DB200153BC4A8B
pk = F4EB5756A2A7C3ABA281BE7039E0403CB305C7CF98546C78E69928898BEF2544C78679001E4EA5A91F76F6764B6EEA449B2B0A08537101CABDE41DB7E11717260ED2602A2D48ACFC5E1E5CD1C457CC2CA042A4D224A82F1D23731E03858BD226070AABECA820F5D8AB6AC7AADA0121176DAC0DD030768115083870D17F4B3ADD2BD48E7253A7644F7505CD1CB368E00C557ED4ADA00E7820E2C2D7AC35994603AF86C62B0199B312F5F9497C68973086098E39FCECA2DEE91F8F8B408B99E9FCE6F1311B8FCBDCB6A715B1C6A52A8A6E368B05D38F2B298C6900E601F858D5F0AE138076010B1257E9BCECDE939899B5B9F5473B150F0A2E7B9DB8357C0399BE41711EA5F9E2B60815BC2D95C1A92B14304700826E45C1D9886A64F411401B1566345B0921FD28FE8FAA3D15D93F28D9A6DB09CF0D40849691304384A338CDD261A0CFEA21701A949300
sk = B8BD0493A882E3A49B4E0F6256FB1FEA0799EAD9BDDF2FDE63F0732FD66DAFA88AC7888939CEEBAD55F19401F4EB5756A2A7C3ABA281BE7039E0403CB305C7CF98546C78E69928898BEF2544C78679001E4EA5A91F76F6764B6EEA449B2B0A08537101CABDE41DB7E11717260ED2602A2D48ACFC5E1E5CD1C457CC2CA042A4D224A82F1D23731E03858BD226070AABECA820F5D8AB6AC7AADA0121176DAC0DD030768115083870D17F4B3ADD2BD48E7253A7644F7505CD1CB368E00C557ED4ADA00E7820E2C2D7AC35994603AF86C62B0199B312F5F9497C68973086098E39FCECA2DEE91F8F8B408B99E9FCE6F1311B8FCBDCB6A715B1C6A52A8A6E368B05D38F2B298C6900E601F858D5F0AE138076010B1257E9BCECDE939899B5B9F5473B150F0A2E7B9DB8357C0399BE41711EA5F9E2B60815BC2D95C1A92B14304700826E45C1D9886A64F411401B1566345B0921FD28FE8FAA3D15D93F28D9A6DB09CF0D40849691304384A338CDD261A0CFEA21701A949300
ct = 7D2CB287ECA1594AE8FE77116C564A4E77DE76C2E4D3A67CE8CA134AEAD60F07F7B5C786D2B865751002EF92FEF134F1563B2FCFBFD8018D30FE640F235166676486D0244C43B97EF7D0237649160E45F7DF78EC101414603B74FEAF8A8F58C9CB2C5A22F1555541DC75DDF90501B22624C8D81240BE36AD591F189C19AB38C0BD9F575454A51E8D3A479253A1A3080657BF3AD0251AC9BE63CF45D32F0FDBA4403C9E1401F792BBDF038F891C46008BD9B414233E83CA76F65ED30999DD685732087F03D1246442416C4277413FA6511B1C64BF9ED296ED15CD5100F958396F5028B27F6F1B5AD52672EA16C73B35B16F0CFF1BD3B80CAB0B838237AD7B9576362B2D8909AF6ABDD872E50A73A2D7F705A80125425598039E5E5F34424A6C54609C7951F09E5DB6D11D6568419391EA4025498C412B5134780B2893B80CE6A909F9A685D12CA2966D0024C52DFFFEEC7CC69F799751250CBA24
ss = 3F4B8410B799D38F26202CAC1B52A37C

count = 66
seed = A3E2E511AFA7BB560446BDADF67D2EE2E16FFC7BAEAE7EFB8C5455068BBD4E91BF9BE9D98B280072FABA7712C75B26D4
pk = 8DA22097FEA967029BC23E0ACAF0405204B9B9B33D2EEFE2956E299D9A35B1432AA5D5904C70D5A1D52A7B69820EBD051A031257A3790099EF548478B458ED7FED9C0383D74B1CEF2675F2B1D2509BB1E28A8E26C9467FFF6C387FC911BCDC16BE5035911E3F82E3D8BD562ACC0109A627415E59A3D8D773264E1F634AB338025D226CCF4DA521875A4236CFC6960E65D71175015B98E7FF65CE3F02A1D79D31205311E7003AD731866DAB04CDD1C133A6F0514BBDE0B9CF9CA7A2AFAE0B8E28E92F935260FF9A07F996185FFAC3F18D977C9EF673A8908DBE7FE2004BE34CAA9C41895EFA374A8E2859229B9DE100C55D201FEB69EA258ED48E11C032347C47A21F27532864DC71FF375B8DED71B23B52B5017D89CC27537CBDF44E33CECCB04648C1A25BAAB95A5E3BE0822763F61DD65BC0EE9EFDD83C27D6E6E0248C7FD1094DDFBD531C10122F00
sk = C0407E41DDF48D333978B89BCF2DB01EC941FA96362BA1E4733E332888BA4E8B1C5CE574652472A75B864F008DA22097FEA967029BC23E0ACAF0405204B9B9B33D2EEFE2956E299D9A35B1432AA5D5904C70D5A1D52A7B69820EBD051A031257A3790099EF548478B458ED7FED9C0383D74B1CEF2675F2B1D2509BB1E28A8E26C9467FFF6C387FC911BCDC16BE5035911E3F82E3D8BD562ACC0109A627415E59A3D8D773264E1F634AB338025D226CCF4DA521875A4236CFC6960E65D71175015B98E7FF65CE3F02A1D79D31205311E7003AD731866DAB04CDD1C133A6F0514BBDE0B9CF9CA7A2AFAE0B8E28E92F935260FF9A07F996185FFAC3F18D977C9EF673A8908DBE7FE2004BE34CAA9C41895EFA374A8E2859229B9DE100C55D201FEB69EA258ED48E11C032347C47A21F27532864DC71FF375B8DED71B23B52B5017D89CC27537CBDF44E33CECCB04648C1A25BAAB95A5E3BE0822763F61DD65BC0EE9EFDD83C27D6E6E0248C7FD1094DDFBD531C10122F00
ct = F221775D58433EF77F71C1627C026D70CADF30C93380FE22D08A573930A2B9FAE636871AD98E416C80FA86244B1E6270F8DD6636E6A7019C5D72AF128298754787C647422CA611374D5AFAF7E4518C2345AA885577E323018B0BE76F45611B88E696AD1E62AB427F71ED4EE9C401F5366E392945D3828C7E9F1A2F0CBC48035C923529628FB4D313633803F2DABB06A3ED53D73DA5E774B576E4D157B45EF2613235C65200B643C7A345548F1D964D0BE2ADA496A41A359634D5F7FB8A8DA444CF57CB0765CAE79C445988E20ECB4B3ABB31864E55D05D669A56D001627C302F75F58BE7BB465E71F549A5205FD14346B07AEC29B906B0917225084142FA7D90D0665CA67D435B420C1F051EE770F9A196A0007ADDBDFA4AF669F6D581A0AA71768438902AA035B1FD01A7B16CE45D76A509FC67FDC0FD1DE02AFED736D212F9225199FEDE5C1148D1007AE4FDFA31EFA408C63EAC035849A16A
ss = 19949A812632BA36C87F77EE12C9529B

count = 67
seed = 074AB1A37BA5A0403D8F68D26FB787BC2C90F5EF88F2A6D286C3E6B168ABD85D393D8225618608B8EEB301D26AF53BC0
pk = D8F84A5C1BDF2EE99F1E9AD650743165C16BF1CBD7A47C6DB7BE95E6CBDDE9172C9A83719137BE189BAFCE89A1DBC37C52470F917DAD010CE18B4EEA8BA439FE2FD8C83E8545919BEE28FA608214B91B5EDD378FCB3AA42AD898BEE1E983763C3083DCBD7515FBA2C217C13AA600FA48A9D989C8DFC56A020D3BFE63DB0725495D5DE9CE9DA3DFBD125CF7AAE0D2B87E2557263B501B2DA712FAE8E7082AF0C06A1EF6220067F6D671CAB553D33A70453EFE727D8A8B0711E5E329760BFAE67765331D46EFFB1F3C085BA9249191EBB1B762DD5F4022A799FC9AB300F14329E72B942E7BA336D6F07820048AFA84B3B6B3CDE05CBDCC4C71786D2E80DB684B9C81E38D9E7F9629A5FF751641BFFE22056BD70076E01C4ECF36CF5B4E7C03C57040DF7A1360B123D0146A45792BD7B8881075C02947C56FFA0560561056505FEF3F073F9B32E59229D500
sk = 334382D39164D1989696A2FF77B25A28D3AC131E0CECFB0900E8E52BAAFAB8AF11EA820B17D1BE1A497EA700D8F84A5C1BDF2EE99F1E9AD650743165C16BF1CBD7A47C6DB7BE95E6CBDDE9172C9A83719137BE189BAFCE89A1DBC37C52470F917DAD010CE18B4EEA8BA439FE2FD8C83E8545919BEE28FA608214B91B5EDD378FCB3AA42AD898BEE1E983763C3083DCBD7515FBA2C217C13AA600FA48A9D989C8DFC56A020D3BFE63DB0725495D5DE9CE9DA3DFBD125CF7AAE0D2B87E2557263B501B2DA712FAE8E7082AF0C06A1EF6220067F6D671CAB553D33A70453EFE727D8A8B0711E5E329760BFAE67765331D46EFFB1F3C085BA9249191EBB1B762DD5F4022A799FC9AB300F14329E72B942E7BA336D6F07820048AFA84B3B6B3CDE05CBDCC4C71786D2E80DB684B9C81E38D9E7F9629A5FF751641BFFE22056BD70076E01C4ECF36CF5B4E7C03C57040DF7A1360B123D0146A45792BD7B8881075C02947C56FFA0560561056505FEF3F073F9B32E59229D500
ct = AAD9E86660249AB2675FCBC20D2A552946BAFC415EC2C1B3F8E92EF124613FC8F723DA7079A2F4C94503DA3B9349332C2DA847A126190177BBF0961C03816488B76342E8365F3277FDC1B395883D1408C2BB4488D677973EC44D708350717D6331B723CE0687013DD72D31616600C39E4BE1A726E25308C5F63406E23D2A6CF9880223F99DD006993DE133C1D5B8B9CB0C524FDE13F2016E478FABF4AC3CF9FDC781AD0A00202F2036EEA45C5BCD812F39C31F33054F708F6B305A10CD36912BC895B5BD828A89A0B7D0C3A878955D5AEE8B93B753B4AB6F34BCB600DE6E94BB7B4A417F7467DB1147F431F6BBD82FDD3C0DAE862D20F4A1FF8A08D89E5D375B794BA88CE9EAE65D5B61889B4F6C255264F80023DBB375FCE467082B72D2F37C86CBEF3266C7D3B42F8B3DF7A42CE75DC43B6DD0F2686B1DD577D70AB0316507BFA5C675449F31B6D201B537C869E53E6CB1213F772576EEBB8E
ss = 5D20C1D82577713863D76ED5A40C184D

count = 68
seed = CC0C86CC0ABF86FA21899BE1953913C00E7C46E6B5F730C4E88B3C034012763981D7F14459D3081638080378348856EA
pk = F5BF4C2956BE430CB1FDB803958EACC92796B70F561ADB4C0D0BD29CB9900E82ECF627F800F83D1A153BFA6FBEBFCF6027794206199701B924370B2F6150EFC12AB47707B1EE32729B9B083BB1736CB2FBF7BDD3A573AB9D6A755F8BED02B5EC4FDF4DB16246921DD13F1197620158EB926CB4A9EB0BC97A2E33134BC38F0394AB895E573F0D3A98CE9660C80FF79953F293FF67473EBEC935062F09D1ABE15688E8C0AD01A0BB965AE1114BA2854EF9826ABBB2A86D995781023124B8FB1C4B22D2B69E1CAE735AE45FA313F9FEBA82B270CC6EF64866EAF18379004FBEB90747AAC4DBBCAF8F7682EC5D5A730A4E4936462FBF061C84A60AB3D741BBED0538381E76C84CE29B3AF4C7BDD574700159733F00E346E9D251ADF2DAA6A8D99A50A8BA116F91EE461751C0B116EA47699BBBDF8A0208F5EC2A8A681522085CD8654840F2DDBCEC44EE8C01
sk = 6995143E8EB8A6E93840F76EEC844F671D3273A811D6EAF877FCB3A3C985593289572FCE4CAF52D13CA6DA01F5BF4C2956BE430CB1FDB803958EACC92796B70F561ADB4C0D0BD29CB9900E82ECF627F800F83D1A153BFA6FBEBFCF6027794206199701B924370B2F6150EFC12AB47707B1EE32729B9B083BB1736CB2FBF7BDD3A573AB9D6A755F8BED02B5EC4FDF4DB16246921DD13F1197620158EB926CB4A9EB0BC97A2E33134BC38F0394AB895E573F0D3A98CE9660C80FF79953F293FF67473EBEC935062F09D1ABE15688E8C0AD01A0BB965AE1114BA2854EF9826ABBB2A86D995781023124B8FB1C4B22D2B69E1CAE735AE45FA313F9FEBA82B270CC6EF64866EAF18379004FBEB90747AAC4DBBCAF8F7682EC5D5A730A4E4936462FBF061C84A60AB3D741BBED0538381E76C84CE29B3AF4C7BDD574700159733F00E346E9D251ADF2DAA6A8D99A50A8BA116F91EE461751C0B116EA47699BBBDF8A0208F5EC2A8A681522085CD8654840F2DDBCEC44EE8C01
ct = 0E19214A955A12BD90B22ABFA1AAA39A4E300368F2DABF8E68BE96AFF86FE09BDAFF292F8643937E4DB2B620083034ED5B8F683DD18A00719D5B5E92D282C53DCE84E912BFFEF6225A6642F5BD66610419D86FC8A87B277C6E85B52074894AEFB522FA2F54CE3090C9EA63E5CE007FAAFB11D8A2AF4687183FB7BCD7E1293392BCA6CDD7E4A27AB4D4275832A86D0256A1684607379284219DC05779AE937E488207DAA20154717FD0AAA43366498E50016394243697F0206FEDBD45A498498C8F2096596DE5333B107917A475E3362BBD8C7BF769CC52344AF3D80060769932AC3938E4D0143B85FAF2E99AA26016D76838520861AE32C9867DB8A6081BE5A2482C33B2382BDC938F94F440FD5D0F57712C02497C64525EB1E820E4C70CDF5869A11E7E9C8F45B4C0A0D6E0483A4CE0F445E1C33D73006AED8B7CE3902CECD17417E69B780AF62B1F024915C5527ABA7379E7C78B66329E7336
ss = 3774A74D416427DF3F63B8AE681FDCB5

count = 69
seed = 6D5A7CC326ECF3983C4E7683F45263A37F692F3BCD2D920E1FD9584350119E74F9A3F905F70D3E20318C1413DE2A0DEA
pk = 92E3CED10A5147663B0AC3C8FC40C4DE0C8B0377EA6CB22FFFD9566193FB6D55D1EE1FEA92E930336C4DBEC9975CE98991F8F094E4BE01B8E921407FBA15E0329700E7C9A347F33E0B772D89A5B769060FFC2654A60F2745A0A868EA7282EEEE5608B1C28EDFF8B6AF3B4304060179F5F8E008B219F2F95A0AF63786D6F894AA5FA84E2E788B0B7B2F75B3216720272DFCBF96589871C0B3E4A9233D751E475C52A5E32501FF8E46798B1CFC95E611B64F9AD6A44ADF6378C2632204BA1F3AC81A715DA8DF4F785E5B1E0A3DD322D4EC084C65912BB99DD3B38D05000FD0FF843C17408D18C377F62CAC7A879F735E258DEAB3FB2DC8E98F29A5B00BFD5E2097D0F82F713ED60A43842DB679AD8304940BF601556E8FC925A9E95F383BBFC64B8E2068206AF2F509BCD49DE502E779A291DCE652654C31220CE494D943D838137B86FC693C79D700C601
sk = 995EFF7E0D195C6D0533F3DC194D47E62611ACA46794A598D0E9165F7AD0ACE0D92ED09688FEED4E6841C90192E3CED10A5147663B0AC3C8FC40C4DE0C8B0377EA6CB22FFFD9566193FB6D55D1EE1FEA92E930336C4DBEC9975CE98991F8F094E4BE01B8E921407FBA15E0329700E7C9A347F33E0B772D89A5B769060FFC2654A60F2745A0A868EA7282EEEE5608B1C28EDFF8B6AF3B4304060179F5F8E008B219F2F95A0AF63786D6F894AA5FA84E2E788B0B7B2F75B3216720272DFCBF96589871C0B3E4A9233D751E475C52A5E32501FF8E46798B1CFC95E611B64F9AD6A44ADF6378C2632204BA1F3AC81A715DA8DF4F785E5B1E0A3DD322D4EC084C65912BB99DD3B38D05000FD0FF843C17408D18C377F62CAC7A879F735E258DEAB3FB2DC8E98F29A5B00BFD5E2097D0F82F713ED60A43842DB679AD8304940BF601556E8FC925A9E95F383BBFC64B8E2068206AF2F509BCD49DE502E779A291DCE652654C31220CE494D943D838137B86FC693C79D700C601
ct = AA8B5D5D9D2EF286A112E9E3864F6CCB69E6294DB90AC11DF4D3543E4319C53F94A5296355C740A8299B2059FE6D8DD31C2457292E7401E9F2AC61E47AE55424CF9C18D4242C323622E5EB40DB6516D96D26B288798F2B1959788178B316A779E85243A8382711132D16DB72F50140EE90A11438296745055019C6BA0C2021BBE78ED43B2849E6A058B4DEF11D8A5998ABE5A113ECF53A26E2734C9F1F9240695E152E9C00CEBA823145112547577C523DF178261D59560438C2AB80FAAFBD807E0B2F709D7DF6B6FAAB4DF83D1325841638C46099FF193AC61DF0019FEE296545483C92A6E8BEA5BFD26CBB42B95AA773FDCBBC3945806C7777F5BC5079BD04DB250840460258B943ECA32886FAB610C34D00CC93CDCE378AB010FAA29AE2718D0766DFB84714FF8B030451789D357F03A2EC6FFDEC33CA2C27E4721AC81BBDFE889801F4E2994B7401B1CD9600F99443637765D280334E7171
ss = 202E3D6D3132D36F93EF6BD8BA489C3D

count = 70
seed = F68FC0314DEA88F66AFAA76E6C9B6804B13D4876924410D1F526FAC59A62E26C560B125B1D0F8B461F1FC2E351EFFB4F
pk = 37496914E4EC49D39E6019E283D16B3984ED7587324CA8100F35A22EAFF4ABB8A98FD1957EF82AE80450A25FF5BF77DCC93A0DC8246E008E3454F6DA37C343A65D41AD1CDDA30E27FDE128DEF7A8BB7CCBDB44C8293F113EC47D7C5011FF4FEAE756282D47D971E6A0214CCC5C00C796D5BC3E514FC5A3707FE5104B5309914766A4774C313A8FFD4357D1F42ECEE8DB4C7D2D0A54E315FC003281045DDD92E8A82981EE01D43AD6DE2CBE1932EF1F26CBFDD0CB8C38F9576D4D494C3CAE8211930B86B6E8A061AB9B26DA36F07913B4CE80774030910127A5E815025EB6CBB27FF56D31A895AE5B13FA282B52CEFFE555437C67A40AD109EA70DC763243B5A3FAFD8FD31E172E8233F0EACE410C9B1CD949018745A6909F862228CBA49F070D60C2349121758D7D1BDA506AFB497D22998B3AEC1AEDE66E195DEC3A0EC4F3D5847889926538FBFDA600
sk = 3E809EC8DD0FEC0D911A4E3FAC20F70F50C00D09A1E90D4A1B9480A64DBBA9BFC95372B0907A0697266FEC0037496914E4EC49D39E6019E283D16B3984ED7587324CA8100F35A22EAFF4ABB8A98FD1957EF82AE80450A25FF5BF77DCC93A0DC8246E008E3454F6DA37C343A65D41AD1CDDA30E27FDE128DEF7A8BB7CCBDB44C8293F113EC47D7C5011FF4FEAE756282D47D971E6A0214CCC5C00C796D5BC3E514FC5A3707FE5104B5309914766A4774C313A8FFD4357D1F42ECEE8DB4C7D2D0A54E315FC003281045DDD92E8A82981EE01D43AD6DE2CBE1932EF1F26CBFDD0CB8C38F9576D4D494C3CAE8211930B86B6E8A061AB9B26DA36F07913B4CE80774030910127A5E815025EB6CBB27FF56D31A895AE5B13FA282B52CEFFE555437C67A40AD109EA70DC763243B5A3FAFD8FD31E172E8233F0EACE410C9B1CD949018745A6909F862228CBA49F070D60C2349121758D7D1BDA506AFB497D22998B3AEC1AEDE66E195DEC3A0EC4F3D5847889926538FBFDA600
ct = CEF0E295D105A49B06C0C3FCA84751592114449890E5EE22A92E884D038989EDF10597D794515BCDB3BD8F3F04C808683275A522B80F00A09369EBDFCA1DAE1533C6B3AF1931E61BA9AEFC824AE2527392C2E7736453AE7E6906F28B292B94405504FFE115C4E0E6416566B3DC002731C35C89EC52CF54360D2B65D72B02C0CBCFC3E9512F091FD3C8132758FAC750006F2A0231B02278A119D9639136E3341372BE4AEE01E28FF6A2AF16E41050A7573DD06FFB3C21EC0BB069BDAF7C7230F86FDA5097DCC60C4AA18F5560C4470302D22C5E85FF48612C3FEB3A01D505C88B5688D6DB461356FE1A592FF21DCEDA379596BD8A9FC8E2ECDCA53A1E28E1AABB8DC54E91073948FD8641A08D71DACC6A7E9901482CBEC6DACC39E5FB773E8EF88519C0B81CDD721102751D2E552FAD03408263A46720E9027513FCF277D8F3F6B244E71C48E886984A0067926CE78EC3B09D7AFF29D49DE2205B
ss = 9B5515A30B0C0C147AE152BDFB20599D

count = 71
seed = A229218B0D51F58D915DF549901548FB0722F352C7470900E7E4D8399205764A319BBDDBD06C00E8C5932722EE5A404D
pk = 779C9EF12283079228CA485CB6BF4986186A8C31BF00F2D906DE37CEF7E03B6D322F518E5B5B7938440F9B3F1BBB56C148A5CC185BE50118CE92909B8CC652CD7AF99C838AB25B21A115669A536470E206B274F694598D421B808E076F7F9746CB86A02D09883C006BCB4C8FF4009E6265E73EB9520521090186A961CD9F9D8B116FE306EEC8F72CAC10A05D56E7D411FEA5F88208C96AA85351E0491AC36B7405537711011E33FAEB9AB94A63FA2D236664F837C4046936C3786875A00FF51E92AB77A7F81FAB18AA657BCCC8BB8BBD58388A3E4B23617F6E7875002D6B11CF6A3C0A64EFD1C1706D8FD4712F0D9A30F294AE8C406F4774FFFC752632830A514B1C2D83005DDBFB22738DA9C3DC22425606001BEB79B8AB56C78C1893FDB887F2E20C7C546628EF2D585166D1AC1335C701F54A21E85DF8FC48BD66D731AD157692FF3B2437E85F0D02
sk = DBF1C465FFF3D9F783BD9EE61A573715CB9A1309AD27732313B1CE192CBC3D6F14BE491F71FDC193BB041200779C9EF12283079228CA485CB6BF4986186A8C31BF00F2D906DE37CEF7E03B6D322F518E5B5B7938440F9B3F1BBB56C148A5CC185BE50118CE92909B8CC652CD7AF99C838AB25B21A115669A536470E206B274F694598D421B808E076F7F9746CB86A02D09883C006BCB4C8FF4009E6265E73EB9520521090186A961CD9F9D8B116FE306EEC8F72CAC10A05D56E7D411FEA5F88208C96AA85351E0491AC36B7405537711011E33FAEB9AB94A63FA2D236664F837C4046936C3786875A00FF51E92AB77A7F81FAB18AA657BCCC8BB8BBD58388A3E4B23617F6E7875002D6B11CF6A3C0A64EFD1C1706D8FD4712F0D9A30F294AE8C406F4774FFFC752632830A514B1C2D83005DDBFB22738DA9C3DC22425606001BEB79B8AB56C78C1893FDB887F2E20C7C546628EF2D585166D1AC1335C701F54A21E85DF8FC48BD66D731AD157692FF3B2437E85F0D02
ct = 69974372EF5FE414B5D02A8FD112EAC801D5027D712766690F3BE8DC7CF5408B80044818FA596CC7AAB1E871E3FD62736AE66514CB760169C001D6F185CD0080C14A1357B8E12036E6A1996255B4DE6D1AAE756FF3CFD6BFDBBF18C9D3459FF8CC3315AB90CB6C7DB0371E6BD001CCC8B2218BEE86F114B9904D3304A1F177DF0718765B6358C8BE7EDD961CBEA424DDFE38201AC5F78006F70EB7B57D2ACAD3AAC08F2F01E297D156EDA318A6C67AD5526938E5C183398DF76F91668A8BE64BF7C751904AFF99D00F9E071B2CFB4F5355E8B84B9E59E2781DE03D01FAF77C4108A3E7F6969CC09DEE6C0D54E1AA80A371C184AC93E0A852A56B3DCA6D24B31961B333355EC13D84CA0693B4CA2F55C4BFDB00B4F858092D63DBCBC6AFD38C6BCCDF967B2C039E58EB43ED0B347A887D44543583CDAB22DA3258466D0AB7AA1BFBB85520F75DF6B9DD01556D408B42F061FDA7EECBBA142DC6ED
ss = E8F99D5CFDF7D84DCFB663A77856D6B3

count = 72
seed = 6960F21C7350DCF41B4770C551DC8692D8BA2C0B6E162C589166FF22E7A1AC0F94C2F48504A5F7EB0DA094DF427BC98A
pk = 302D79030A8F84399672BC554CEDF7FFC9B9B4953C04129C8245306FB787C2CA2F27322BB0EA1899A421E2376504F31E56B9E47A12C10028D4F8E6C9CB94F760AF65B7F5F86920F797F6B8A25062839C4BA0CDBD3B9266FD17FC10D52E6CA7F3390210F8943B0824CF9979BA410062DB8F749903071BF66A9FFD3F12FEBE6EC2F5774128E7FCE6D5A55BD4DA635A86C7C880996FA6570523FD17E509E5B1F53A4DE83BCC003E02C10AA4A89DE190EB56A08F4897E92BEE3F109EEA1823532207CBB84BF233A28E17D7766CDDE20140FA844DF518D58496BEF75FDA00F98F9C3948CDFA6FDC2572CE27C65609893996B9BC69E65DFBBA196C0404014E32C9C128EA2D37211C2AE344EDBE0AB9BD5F7205165501C698C8671A08F27E097BDB55784AA94DB80AF5966278270500DBAD9FAAF23989569DEB2845864D0EB7EA9F21315ACFA2F969920BA71D00
sk = 1F7CFD2B70863154E8A69D1758532E864F68EC73C821458EA0462697A39E61A679CC5B069452780D4E890900302D79030A8F84399672BC554CEDF7FFC9B9B4953C04129C8245306FB787C2CA2F27322BB0EA1899A421E2376504F31E56B9E47A12C10028D4F8E6C9CB94F760AF65B7F5F86920F797F6B8A25062839C4BA0CDBD3B9266FD17FC10D52E6CA7F3390210F8943B0824CF9979BA410062DB8F749903071BF66A9FFD3F12FEBE6EC2F5774128E7FCE6D5A55BD4DA635A86C7C880996FA6570523FD17E509E5B1F53A4DE83BCC003E02C10AA4A89DE190EB56A08F4897E92BEE3F109EEA1823532207CBB84BF233A28E17D7766CDDE20140FA844DF518D58496BEF75FDA00F98F9C3948CDFA6FDC2572CE27C65609893996B9BC69E65DFBBA196C0404014E32C9C128EA2D37211C2AE344EDBE0AB9BD5F7205165501C698C8671A08F27E097BDB55784AA94DB80AF5966278270500DBAD9FAAF23989569DEB2845864D0EB7EA9F21315ACFA2F969920BA71D00
ct = 700507E9C566CD975B5573B12841FFE0BD3C6FAB0819E32AF3597AC11FECDD32DC7E914F3051A464646ADB7DCD955406F8BD93A87A1D00198403AA55F866D4E2BE203AF19DD11C4979414067C1CC208564DD0F9F85D7C6D22CCD599C86763CAE36CEEFCE7241E7B7FBC75CA5F700D4B7A2057E032C6DDA0FD7ABC2D3ED92E972E0285D727A072E3906D74168FAF103CDB329181EE0680B0744FED177EF185D4EBAFFA4E80049ED569D9561E5007F31E8E32F4D0B621AD280138BCE99F5D918D7AF73D6E0F7BF9FF1D8700E7A4C9E1DB2D7E2F820FE24A120B413340150427DA3999440DADC95B04712F54EE28F20C430995C554AF5F94D477040AE31DBF6FCC86A4920D8EAAD1D1E192F52862FFDFBF2AB5D0021EC3976E7F3D364C629EF6B78DBFFE46B3A815FBE267B89771AFCB09AF1BF8B06D431BBDB32DAF1F3832DB8CB746D65628124DFB11A01EEDAC282384C9EB2278AC7109910846A
ss = 58FF3C071363D83AA6B6B330A6E48D5F

count = 73
seed = 53DF46012CAD4A745B7A3C06E18CA95E0B839FD8161E3025749A0887549EB0ED6A44EEEA08BD6060D6509DBF7E9DC864
pk = 3BE5CA49D556D1110C266C6AA2630C76656730C67B0D221A25A53E68A61AF5E5E62F09E5A210FF63E6FC83AEE7067C0C5945A08EFC9D01C5BE185F968A156B1EB1F81550D7513415AF3B5CACA0E8550A3837C360E454BABEFD53079296302A86717BB495B464F70DF4F7BEC634002ADCFC680C347A16A65591944495BABBA684782C44DF252637DFC16B7C346E66BDEE8C53FFA952D25862865629209918ACEBE5FE846B0164BCF37149AFEAE222C7DC0B2DB657A365C936071055D52A19A1E20458AE94DAAA5B472423D9876D4598DEA7550F793F64E2F153F9CF018315A053742073D5E6E47BFC72155BD4DB566CBD60A6C3394B84EBE66A5552928C44CD34574D34F36B024807EC501BD8F115FF6B066101765AA098CBD6CB1627CB851573B153DA3E767E713C3960F1E034D4880F238E3D1F67D391863A8178FA51E41DB1DB73BEAACFD3E38DD701
sk = 3A19577908EFD37697B8EDC7FDAF47D13F3B3F40BFADD4CA842C82D0220751A528282593412DC138376B14003BE5CA49D556D1110C266C6AA2630C76656730C67B0D221A25A53E68A61AF5E5E62F09E5A210FF63E6FC83AEE7067C0C5945A08EFC9D01C5BE185F968A156B1EB1F81550D7513415AF3B5CACA0E8550A3837C360E454BABEFD53079296302A86717BB495B464F70DF4F7BEC634002ADCFC680C347A16A65591944495BABBA684782C44DF252637DFC16B7C346E66BDEE8C53FFA952D25862865629209918ACEBE5FE846B0164BCF37149AFEAE222C7DC0B2DB657A365C936071055D52A19A1E20458AE94DAAA5B472423D9876D4598DEA7550F793F64E2F153F9CF018315A053742073D5E6E47BFC72155BD4DB566CBD60A6C3394B84EBE66A5552928C44CD34574D34F36B024807EC501BD8F115FF6B066101765AA098CBD6CB1627CB851573B153DA3E767E713C3960F1E034D4880F238E3D1F67D391863A8178FA51E41DB1DB73BEAACFD3E38DD701
ct = 45B85520B276EEECB71AECADCB02674CD14D2D35108207C8053807291BE2443BC5BF59566F582007BFBC418987C6685C4587E7AB984F00905136A595DEC7B9A70BF8A34D84D924D1C14B5FC4706C0DE7A1B886A8A6F9E100F8BFD1924F581F0250CFF6CA33139F8DFA9ED2BAEF01BA369656EDBBDADF489860DD6AF421DC7C2DE8C94B5B35F2AAB071496EB4C30B091830B40FB599C9E6494C776299D2696DB123B21024023D518CF99CD614D4F44DD730263AA9D9245F1A7793C75E4B7FF3E71F96D85A02EE2CAD361A3873A2E0A40F1C1E9043A03DD9D475946301E88930E226CAAAFE8D84FE49DC70A6EC9839ACEC4CD315417F05C2807404F98A0E6B4ED1F6B707C0B9035ECB2E0965AA15C1CEC22C010213B5252C33586DBC66EEC7EBB83B849EC9A46D2C48E52F78C24B0E3F9D00D380D4C0AF1ACBCD7F7582AF5F76EBC58FDB75271840EE07017D0D7275AAB4062C0C8FA446ABA19191
ss = A4E753CE52D682D4BD468D9BD872A6D8

count = 74
seed = DEB963F8B1D8FBDF499D564BA8D2D47915BB402DA02F17031B37B4039A842AFB9B7E48F37200605992BD2429427A7A4E
pk = BFDF47DD1581700F7A19EA3554BAE3E7B985962418824B33422AFCE02D1B4A27373F02F1D388C87CE3ADAB3A39653659ED6FB9510A0D01C7A54616C86DCF44CD213345D439D537A66AF0860C5B2A32DAF3C7618DDA061B7351FC719A7F6754BEF63B083A8B565FEB136BA801E100F08D5E89B8D14CA0E8B06507CB4230ACBD0C4D2F3EBC32C9BF5CD873A3E353A3EBAC565677C4A851C2E907E27E76A27B62DFA9A46EDF0070821563BCAFB597F631D776DFB2F5591C3D9CC2AF8A0A06F347D3F7219E9FDC527A5A79FC7C3A2025E9C42C0668AD75C0B2B561F21701BD4993AB6EADC93FA9216812B7E7521C69D3062F89036EDDCCAD2D23F5B158C54F2E74AD1B1FFEF763ED902D3B793A8A21A4F1040963010F73C9C8F42C6B76E41D6982566AFD76B03F48AFAF4228453CF3CA2C754FC9C92DEC9FF93DA36D32ECFD1587B9E448046EC883AF648500
sk = AE0F65E29F38804A6759F70F4D01E2AAA1E0F79A8C218EB9E2D0664BBD9F1E531A366BD8CAB1172AA6A64600BFDF47DD1581700F7A19EA3554BAE3E7B985962418824B33422AFCE02D1B4A27373F02F1D388C87CE3ADAB3A39653659ED6FB9510A0D01C7A54616C86DCF44CD213345D439D537A66AF0860C5B2A32DAF3C7618DDA061B7351FC719A7F6754BEF63B083A8B565FEB136BA801E100F08D5E89B8D14CA0E8B06507CB4230ACBD0C4D2F3EBC32C9BF5CD873A3E353A3EBAC565677C4A851C2E907E27E76A27B62DFA9A46EDF0070821563BCAFB597F631D776DFB2F5591C3D9CC2AF8A0A06F347D3F7219E9FDC527A5A79FC7C3A2025E9C42C0668AD75C0B2B561F21701BD4993AB6EADC93FA9216812B7E7521C69D3062F89036EDDCCAD2D23F5B158C54F2E74AD1B1FFEF763ED902D3B793A8A21A4F1040963010F73C9C8F42C6B76E41D6982566AFD76B03F48AFAF4228453CF3CA2C754FC9C92DEC9FF93DA36D32ECFD1587B9E448046EC883AF648500
ct = 8069BB2B0DC833C4A359E1F31AAF513AA4A26826CC9EF2F1C5EED50A8C44994B4DF322724BD8D35375D1EE7018DAD3A44C051B92950C00F56634BD3EF14EB2D4603EE3F72B47BA9ED688F3A4C99D21A3C52EE18EA6032EE07F514D6FE1C462FFD1ABC3628CB52866D536E6D47400EF4B861FB3621714923FB1995C1C072B2121DEF1109E995C97482B009CBCED8FAB14DD572F5261C717EBD6C2BCFE245AB2B669FDD0B70166C3EFD6D1DC97DE7CD63AA125D4816CF4B7CE2B2D19EE6BC0FD1A5F7F0B432EBF77FEAE12DA413A4E594C550471677C0F2E80F913C9003127CF2850AB91ACD60269B9CFBD3051FBE4783E682D014F71E040DE213459C052E5EFD1EB377D8EF89CFF2C8CC5AD7C1EBFC25F4D850129E3AEB6999E9592AD4B467DAB3CE8C8DECA783D1B8133E3BDBA5667EBB7205563DB0B770F68565FBB9E5E14E63E6232B89EDFF8B77E0086CD2DABE1865962834D4C51E3D64D7D
ss = D229BBB3CA9080B96B26D87F2FBFCC26

count = 75
seed = 8E2995F1B3E43853B18916BB1212ACEB05898E2B177A87ABEB928AD7184E59695C56B2CCCF5DB80853C28A525E327D13
pk = 642C64398DEDD29CFF26006A5C989C9114FE2CF5D2E5DB45A1DB66A42C13DBD08EFD116CDC3092271A78BF5D80197921ECE35537A3770109AC49BFDC73254DEC64BEFD4D326002293FE8C5177E3CA648E8ACF9D3A3A1B576EE40187A68CAD01DF11E337455860377318097B861002B3E1A7E06D7BC8A11BBEA50419EF432DF8946A62DAB52D04C01FCD01EAB2CCF798D0E3B4625CB8A06F853A0B3716243606B6C871ED800B13DDFC1196E65C2065E7EA3E70B450D82551A52F2F848CEF9DC41F9BBAF2C5A9345C3EF4E915B43FE4C8E4883D403D420AC4F19ADC7008C944732181E48C3650AFAC2A6BD47815CD0891FCBCC5ADCA9BC0CD788998F947D11880CADFE1FD458DE4218C5837D07DEB0E989C1E001A9F281283F8273BB0CDB912F54066F13A3A73E65691BE0CFFE719C0C556BD2BA770484278E91B9E4FA76BE271DB91A7939CF48CC54ED01
sk = 6084A235F79DD093EF6D185B54E69DF3F1B7A24CB6E6F21B112C4AD8FF7CE8A9BDA1BA1751496BF39A354B00642C64398DEDD29CFF26006A5C989C9114FE2CF5D2E5DB45A1DB66A42C13DBD08EFD116CDC3092271A78BF5D80197921ECE35537A3770109AC49BFDC73254DEC64BEFD4D326002293FE8C5177E3CA648E8ACF9D3A3A1B576EE40187A68CAD01DF11E337455860377318097B861002B3E1A7E06D7BC8A11BBEA50419EF432DF8946A62DAB52D04C01FCD01EAB2CCF798D0E3B4625CB8A06F853A0B3716243606B6C871ED800B13DDFC1196E65C2065E7EA3E70B450D82551A52F2F848CEF9DC41F9BBAF2C5A9345C3EF4E915B43FE4C8E4883D403D420AC4F19ADC7008C944732181E48C3650AFAC2A6BD47815CD0891FCBCC5ADCA9BC0CD788998F947D11880CADFE1FD458DE4218C5837D07DEB0E989C1E001A9F281283F8273BB0CDB912F54066F13A3A73E65691BE0CFFE719C0C556BD2BA770484278E91B9E4FA76BE271DB91A7939CF48CC54ED01
ct = 211EC0A98ECFA99BCF11E20042BBC5AC8EE0529BE358D76CD0E35FA55597FE8B27EBC856B13328D88F4D50D6BA169C821153417186A701F8038354A03885D7EA9F65A8CCA89316C29B5CF5EC4820A79E1A745DC32C81837675151862909DAAE94D6B71F444E507CBCC540F8E4200F59D56AF1EACCD8B97A00B084748A066FE2FD945C7A69F07E7EFBDB1CC947C7BABAFD95084405F60A9741C40D8AA7F9120619501F81400C381CEA185617FF07832A0C9A79C62E41D80FB89354AA20229C1B346F4B5B8B127A991BA2E430E7FE29C4B99F9BDAFD77581607BCC0E003EAEDE18AA0297590E2E27F4FEEF0FFBD15C31BF6D1615FEF8CF15533671FBAF71D2760DF9232327A27A47E08227B295374DB0F25C9A01E70998C6E54D1AA70D5867F0E1868D27A85CEE9055B270BFE04973D4B29F14AB8B0BE5CB2BE9D2A4204717AA4063721C26AD72ED6B2F007E327EFFDC4A5FDC9033903FC5D8681D
ss = C96B986298CC6BFDA4253200192D1573

count = 76
seed = 9218943C51FD2DE47E509AAC67EFF176795102F37D7A2017E3AFD768FCDA7877AF38739B00FCDF227C2FD62EB635942C
pk = 26297E9605B8847A59C1479CF45C7B4DE51CC85E6F2D86C561D43B7BFEA88AB65C2F52E854EB95D0693D536BE960307BA02C216A33C1015E39F12C35F7A15AA6D7BE547F28599A4CEE951018A8801EAB191DAD1B0EB24E6901C10E14A000791BCBC61519AB12CA5C22701A1B6401484E47B3B1D27F0226616E7F5CE4C166DF11E3EB76B328181215FC6E413985D23D7760BBAA2A55857AD6A33CC61E58B17325E599367F015FB6C73EEE26DBDEAA051A17A323EF6768A969CAC8D57FCCCBB396D626F7DBD01A6EF939E2D1B42EC5E03E638661677A69F4343EAD7B01CEC04B8E472F3DFDA39A3E5487E972B38CD380447CEFD39DD0E89EC316EFFADA55B6FC8F15334E2755587F44B4CB34DB6F91585C66F1007A6D027148DB73CA52CA86086C342941257A99B67F485A1B7D40AE65F512C5FB43A517C9E7D073954F6B70377EC02AC49B23F22E0DFD00
sk = ACD1C0217FAD5CAA4235544DD9DE153AD8BB1AC46327E9F25BF1784AA724B0126D173A8D3445F069FA2C7B0026297E9605B8847A59C1479CF45C7B4DE51CC85E6F2D86C561D43B7BFEA88AB65C2F52E854EB95D0693D536BE960307BA02C216A33C1015E39F12C35F7A15AA6D7BE547F28599A4CEE951018A8801EAB191DAD1B0EB24E6901C10E14A000791BCBC61519AB12CA5C22701A1B6401484E47B3B1D27F0226616E7F5CE4C166DF11E3EB76B328181215FC6E413985D23D7760BBAA2A55857AD6A33CC61E58B17325E599367F015FB6C73EEE26DBDEAA051A17A323EF6768A969CAC8D57FCCCBB396D626F7DBD01A6EF939E2D1B42EC5E03E638661677A69F4343EAD7B01CEC04B8E472F3DFDA39A3E5487E972B38CD380447CEFD39DD0E89EC316EFFADA55B6FC8F15334E2755587F44B4CB34DB6F91585C66F1007A6D027148DB73CA52CA86086C342941257A99B67F485A1B7D40AE65F512C5FB43A517C9E7D073954F6B70377EC02AC49B23F22E0DFD00
ct = 0C24341686DB351AE2ED452C4457AD1BF175D450C49070720894B7F70DF06F5875FC667B1B8C394EFFA7D19DA7D74BAA7CEF335E367201109F7671ED81D537A69F4F1CAEFFFE70228B98DF2740C071E5FF2C2D632CEA43EBFCA60B58C04EC6DCA7B4F33730C83E9B3DD638099D0036CCC8DC106FBE1DDDBBF26A1737E826903C9A24DFC985756F264BFEA891F50F074C877D4C6F2EBBFB422DC22A5299FE07A3554AB0E8012BF4828E2EA61B9C8219E1B8DFF8DB95CA3C981B0B64545341427A34937001E70E7F6A9B6D2791CDCCDB3B343DE8CE1E0A449B3C12F201CDDDE7D9A63E1783B69F7969C1DE25FE1EE2AAB4EE950CF6F80F1323A2742997C353F500AA45ECC5EB18C392CBBED14F611A2556E78600785FAB246A64C1D7A6F2C31FEBDA748DB0566B1CABDC8ED18C14CD621A5F48A9651674E15CB64A1EE6E87E36BEECC6577FDA0C068F38008BC2009E582D2A52D1A8842373356BEE
ss = B1466D6C93EDFD9DDA1805592F90690D

count = 77
seed = 542E20078ADD5296050AF150360F057F6B9AB3BA835589DD56987DE805F900B906505B5390A0D86CBA28038992DFC59A
pk = D5BFE0A0BC5D1E06ABEB2A65F7B1B24093F5F9DCE46F194EDA944F44386AB427832AD4A37BCB10ACF082FB9DE250CA206B903412FD9301F4A4F756824FAAD608C0EFDBFC92AF40CA11B7D820752165CBE49EC964DA9574FD16D430F641E6DEEE62DD74B6B3E44C315940CA420B0108C38CE04E9EF520F2682A8D8E269F13C0C11E9B630B1CC812EBFAF28EB12416480B90BEC755DB430CB63CA6FBEE259D5B078841131F01A3261C4B2D737C7BC6584547006E40D8F8BD47698E403CD13CEA2E6A30B73442BF34CC08A2DBCC5DF1760A8ED4FC376BF9F761FE6BCE01F52DF1EC7AB307132EAADD05B6F331130CA2C56F38E1441CA4506794768DEACD84F075B88176061B318697490AEE4EBF3B3D3C8523AA00A8002DADA2CC3BF8FB0AFDA93EF74CC1336234180E86A615CE1FF92E1DD2ACF183613B37BB5484E9CC3728B89036A4A976652ABDEF2302
sk = 241191401A63AFA750F05662E354DDDB30AC637A035D3B650C62A021078AD7F1E9E3D14FDD4B7FAD20DE4F01D5BFE0A0BC5D1E06ABEB2A65F7B1B24093F5F9DCE46F194EDA944F44386AB427832AD4A37BCB10ACF082FB9DE250CA206B903412FD9301F4A4F756824FAAD608C0EFDBFC92AF40CA11B7D820752165CBE49EC964DA9574FD16D430F641E6DEEE62DD74B6B3E44C315940CA420B0108C38CE04E9EF520F2682A8D8E269F13C0C11E9B630B1CC812EBFAF28EB12416480B90BEC755DB430CB63CA6FBEE259D5B078841131F01A3261C4B2D737C7BC6584547006E40D8F8BD47698E403CD13CEA2E6A30B73442BF34CC08A2DBCC5DF1760A8ED4FC376BF9F761FE6BCE01F52DF1EC7AB307132EAADD05B6F331130CA2C56F38E1441CA4506794768DEACD84F075B88176061B318697490AEE4EBF3B3D3C8523AA00A8002DADA2CC3BF8FB0AFDA93EF74CC1336234180E86A615CE1FF92E1DD2ACF183613B37BB5484E9CC3728B89036A4A976652ABDEF2302
ct = F7B3FADEFE141BF309B476DFC9E621AAD059F8A0902C5217D8923E2F60655C87BCBCA4E49366F95A1C28A40D42C9238C2D0FCF30FCE301EEA357DE19D698CE5DDCF4152F9FE766FAFD0A4F6A8C1DE63F33A810F08C7FA39863EE8A35B1634ECA054C78AA961532E9C1D9C3D98E005EF456E603B246FE280DD5069A6CA40353F318A453E51E4BA3905096401E3AA9750228BBA806C98762D8AE5E4C98859D97A2FAAF97790174125CB37420224A8CB0E025D4BD55B93DE058769EA1CF436B1401660481DAC65049F25014671BDA6138C3F56EBA6235D75DB58C0A0D01EF2240227274D3ED866D0471C000C05F177587203F60CDCE413417EE7934A166D45C104469B031E292376253EC892230EF620E28A3F3005559C9D7D7735865ABF7041DA0180FD60493B6DF3E3463590B5FE02CB278D566144DF82838A5564C97948C8E66C245995B1EFBC7402A013F525D7D6262291C6CE4F1EED0904E8B
ss = 437B7246BE78180BA44324C3B743A028

count = 78
seed = 6A85A61DD08C0733FCBC158ABB49FE0B0D96A50DCCA140A2E9F5A254F1901985844613B1C656C0CB0112620591B88AD0
pk = DF14F17DE9364D2E04391D6412671ABF06A75DC4E280FE366D76F93F43E7D2B60059C4CE42F2C0C8E0D2EC2B876802A2D84E1E826D7000C90C03F404166DD5C02703216F53E4E108FE9CFC889E44F6ECD90CABA745B81A563342C56B45448DF77710FC89C1D3F66954F2D2F359015B120886BD0F88CCE40FAA4805D63FAB0F60A72CCBD187A0DAC23286DE58B09D80128D8ABC6CEDACAAEA2F2197EDEA5B44ECF75973490066E92A64F2857D83CC1A392971FB16470E5D20AA492E9CACAE88DDF321C8EC0995BBE52AD0688ED2957658930A27C43148F21A1EC01C02AF3DC6B958D074FC26B5F36392465BBB3C8276EB418DAF9F7C74CA00EA53A5F62631C7DDD72CD62999DC305E89A7D709958ECCB2D9DD014E31A053749C86B2658429CC0A89294DB18EB401C29AB7443F0E9153F47EF28A32D73BF4DDBC1FE494216CB40631C645AFFCA672F14F01
sk = B9A6B0C05677E957D41A34BA03BD06F2AA88CD55413EBE82AACBFF9925A16A40931912C860D5F334F236F400DF14F17DE9364D2E04391D6412671ABF06A75DC4E280FE366D76F93F43E7D2B60059C4CE42F2C0C8E0D2EC2B876802A2D84E1E826D7000C90C03F404166DD5C02703216F53E4E108FE9CFC889E44F6ECD90CABA745B81A563342C56B45448DF77710FC89C1D3F66954F2D2F359015B120886BD0F88CCE40FAA4805D63FAB0F60A72CCBD187A0DAC23286DE58B09D80128D8ABC6CEDACAAEA2F2197EDEA5B44ECF75973490066E92A64F2857D83CC1A392971FB16470E5D20AA492E9CACAE88DDF321C8EC0995BBE52AD0688ED2957658930A27C43148F21A1EC01C02AF3DC6B958D074FC26B5F36392465BBB3C8276EB418DAF9F7C74CA00EA53A5F62631C7DDD72CD62999DC305E89A7D709958ECCB2D9DD014E31A053749C86B2658429CC0A89294DB18EB401C29AB7443F0E9153F47EF28A32D73BF4DDBC1FE494216CB40631C645AFFCA672F14F01
ct = 1DCD103E5C2F11A2ABE82284B694FF926EF59277450305849E0E21FE41978BC1C80E2530B44ADA96A3A78CEF861FF505AA279900045D0198C1EA37E0C8D56724DC4D23836D5D2E2275B6383231A834B51B22A0A0645E11F660FC935B2FCDA5172B249AFA1B1C2A44A75AA5429201EFF31FB2522CED0E539D1AA474E0564260A28EA8A59B0D21088AF25FA35F024E0A21ABAE187940CEF6269F3275B9DB80D7C83139F94C01E1C57687EED12C1E4530AF7B636B7C1C5DB85419FEEB675AF13335E1272352B4A207AD17976B1B396ED4408ABDA935F5114454300AC30135F6B6B8682DEC4374561F85D18C2175F8FDC4945698A89BEC32A5D6D251137AF94628ADF66065D04C875B24C2C158384B52249A07710168D83E4B7BA942625A9F279B22C9A7EECBC04947FA9FF88BDDF3C6432BE56E71F1CB7BB643A4D314C7C78CEB6C10B7D47CF67612B5030137E33087221674FF242B2441EA0E31D8
ss = A7CC77ABAC122AE68F6D5F9BC4A01AD1

count = 79
seed = 7F4A56EDA151E7B097CFB8EF980440FFF707AFFBA91867C89522CED6C5FF3BD7F5F00BB49DDD615D9361A7E4EFA42851
pk = 3F0DFDEFE400120A9557199CEB8A8FF36675D04B70A1C5B677BFB1D8FE1220E8AEAFDB3B48A91CEDE5E015EDD661CFC8F1BF0492C129029A68BD556471F971D84D2F031C24618CCAB69C986193DEA9C026CB4A5CD371D7E92C8297385BB7C2FF95EF3B98FF89F316C5D1B1272F0219A7CBBCA980BDD23C4FAB892437F1E2F73326CDC53E08A8EB1C10670322B32672BFD4942F7341A9371FE09972CB8ACA269BC473B47A00D83CD1FFADC54946A033F99DD7C188340B5339C97AB12221130CA0C57ED26215255405F882E1387B14DE764024E42DB70E7274798C7700297420196C348CE0646AA9E17189CF99E0429B469E14C41FE0280B4452C08E1CDAF2A754F45602230573586DFEB527FEEF06C7CBAFA6006B218A5D634054162F01BA46B2708BC898FB6BAEDFF6057BB3DC7922ECE7B41551EBFDAE0046EEE572D33DA00E4CED015A6E4A72AB2602
sk = 28A96C71577BA00C94F99FE965BC595AED4441D5BA51EB259B0F084AE277B0CF1315E715F919D851482AF4013F0DFDEFE400120A9557199CEB8A8FF36675D04B70A1C5B677BFB1D8FE1220E8AEAFDB3B48A91CEDE5E015EDD661CFC8F1BF0492C129029A68BD556471F971D84D2F031C24618CCAB69C986193DEA9C026CB4A5CD371D7E92C8297385BB7C2FF95EF3B98FF89F316C5D1B1272F0219A7CBBCA980BDD23C4FAB892437F1E2F73326CDC53E08A8EB1C10670322B32672BFD4942F7341A9371FE09972CB8ACA269BC473B47A00D83CD1FFADC54946A033F99DD7C188340B5339C97AB12221130CA0C57ED26215255405F882E1387B14DE764024E42DB70E7274798C7700297420196C348CE0646AA9E17189CF99E0429B469E14C41FE0280B4452C08E1CDAF2A754F45602230573586DFEB527FEEF06C7CBAFA6006B218A5D634054162F01BA46B2708BC898FB6BAEDFF6057BB3DC7922ECE7B41551EBFDAE0046EEE572D33DA00E4CED015A6E4A72AB2602
ct = FC98277A808FD81DDB8224E78835D0D276C84EE80FB587F473652DCBB1B2A7EFB759D6DF3B725F3EDDBC247716D8CCA07337D3BE366E017890D0C02ECDDEFB5F6E1F7542FC877E381D8159847BA70B57469DFD3FFCFE48D408424BE69D75E657971BF736AF83E57CCA883B910200D606AEED67BFBA5570A32AE41B2CE4204C2F5970D4CEB3BF64DD7ABDE6758770D2B038BBCF02AE3845C43B907E61B9563C88EDDD069A01B27544F06A558FB2463124A9B5A94C52B664BD8ACB15A7BC02A60515995459D5F07FA1E4C2CC9504E0E766DF020781970E3237FB6872019F02C5F5D86B0A05E3C97DCA8D6E8513F9D8FC3D57EEB3ED4C6F5A26895DE5BF0C23E392E24B9FB4E2BB825F83FFB1402F0E4AF48D0902E0E3350216C5D03A6D4674AE99FF58C2B373ED44C788475E70A435C5DC83A1B1F548441761B9489AE91798674117435C3438A3E62312010F58A35703F1A7A42FD7383FC464B6D7
ss = 1668F6FE2A022440D748D2225256D97D

count = 80
seed = 09FC004519BCF85B20D25D314A0DFC79E00CB6262A7DDDF9C52473641AFB8CFA0F5DD5F53558184CAAE9EC34B459E98E
pk = 24410A206CB562AA5CEB0B04519E66B380BECE417D9D6EC10AA2076645DB2BFBA5183A715074108A5406B75AA00725EC81591397301902973AEA8F1D532AEE77B78B5F0BC3CE8EB553C7C7D5D0708B1565E50A67E1E5B5DB34DA089214265F6E2F79D8C877C5065AB0EFF833D6005E002FF7D30880AD3BA795D27B678D69C51043AB38254DA0B9076380DBB21C76F104E4B0DB9C316FAE0AD2F77D8C96DDF1552394BBDF00262BEA8C1F9C1E6F8D468032E9E087AEABD1E7AD904BF0AE15F6598CA1A236B555F1C52FEBBB79CD9AAD12DF1778AC75B5A0CD93E532016F4DCF0A633CCF05B551193029D057018DB12BE465F6683B17E61FE15A1FC7E0D49DEE3AE631D608A62E70BCA3614C336CE8F2D83EE100B816487C5532C8FC8BFA0FF6F648F530EA50040394EEF8F32B89E9010A8B11248691871B6FEB8F2681B10151775507553FD3F65045CF01
sk = C08BA2EF8C3A0A043AFAD931652D7A191572E7169D50969A767734B15CBCAA4ADA2CF96962955342CD54F70124410A206CB562AA5CEB0B04519E66B380BECE417D9D6EC10AA2076645DB2BFBA5183A715074108A5406B75AA00725EC81591397301902973AEA8F1D532AEE77B78B5F0BC3CE8EB553C7C7D5D0708B1565E50A67E1E5B5DB34DA089214265F6E2F79D8C877C5065AB0EFF833D6005E002FF7D30880AD3BA795D27B678D69C51043AB38254DA0B9076380DBB21C76F104E4B0DB9C316FAE0AD2F77D8C96DDF1552394BBDF00262BEA8C1F9C1E6F8D468032E9E087AEABD1E7AD904BF0AE15F6598CA1A236B555F1C52FEBBB79CD9AAD12DF1778AC75B5A0CD93E532016F4DCF0A633CCF05B551193029D057018DB12BE465F6683B17E61FE15A1FC7E0D49DEE3AE631D608A62E70BCA3614C336CE8F2D83EE100B816487C5532C8FC8BFA0FF6F648F530EA50040394EEF8F32B89E9010A8B11248691871B6FEB8F2681B10151775507553FD3F65045CF01
ct = F47AC313CA6775862787DC223D09F375E6DFEC29F8CA0D2D212A1E544EE8968EAD4CF488E832D2B1187FEC96939B3186AA37BA3B8746005BDB92A4562BFCCAD8598479FE32F68C530ACD648727EED50DCC9E12F0A801C9239E3567E392296A986D61FB4FC307F0C3DDD2D9715E01DC7D41FF0E895709527F905579492925C2E11E5A1D350F433CFA40781B50AFCCF0E1829069DF081E13C03B41C97EE5C4CF6AEBA88D6C0119AB0B070737D70BAF4255319A644E47352DB4DB57E96AFA633C0F16949A09B6813BBEDDC869EC43294D393E8CD61E840489095134160040E2BF606D9DECDB41C917FE455924B760383CDA89BDB7A380C926BEEE84187D85B0E8B779D65740601CE6202BE0B03D43BC9F71E63202FFE6F9036A55C5A25C58D78EA402420EE957902C3A0C760791F94850AAD409BBB4BFFC41553A6451FB13E9D1594EEF2128A1B138783600C7058B784C0CEF3B581F5E997C3867FD
ss = 8C09C3984055F2706130AE9F5291B941

count = 81
seed = E3C41CCA6F04CFE7732FD54DE30CC5CAAC93E2F80E76AED7D24A962A3969C1B6A311459A3EC3E510E3E9B1E4291D4D7D
pk = E763483C849CF162B8B7EFB8C0AAD1FD8430CB09B8B9358D2874819C50ED045A3E7A1F67096161F37A5559BC48BCAFDBBC1AFFE7480901AAB866BB717B4DEE853BAA07CE2F0E56EA510D09514E1102B2E05B3F7059803032EFD941BD494ED97D36053AA51D3BAC6731C6857A94003FAFBF92D70578D25071625F0B0111CA1A21E1236A671CDBABF023297796D8089E740C05608B3F5BE5C3C462FB52902D73735EA3872F023A22D7AB2324C2D12E3356ED61A21C02FB245BFE5E62BFAE46387448A7294FDB54ECF7922E21299C4C2F170718458428E0A2C21B772102D236FB733788DCDEE112CF533BF8528E5D5BD41167BFA8C79E4CCB26B4C9CACCD5534324CE7953DB4DC994D79856D9B46DF7AE2F61C90154997BF205796F86E9F52980E8D73BA371FB9B9C85C6E35A6E7706C1C11A6AE4FC1DABAF4B28E2BB2D0F50687AC8F85721619D5ABFDC00
sk = 0E3B30E102D707538C2671060F603BB009BF978E2A6175A868F93CE4969C69204C0D234AA7285DB4E55CEB01E763483C849CF162B8B7EFB8C0AAD1FD8430CB09B8B9358D2874819C50ED045A3E7A1F67096161F37A5559BC48BCAFDBBC1AFFE7480901AAB866BB717B4DEE853BAA07CE2F0E56EA510D09514E1102B2E05B3F7059803032EFD941BD494ED97D36053AA51D3BAC6731C6857A94003FAFBF92D70578D25071625F0B0111CA1A21E1236A671CDBABF023297796D8089E740C05608B3F5BE5C3C462FB52902D73735EA3872F023A22D7AB2324C2D12E3356ED61A21C02FB245BFE5E62BFAE46387448A7294FDB54ECF7922E21299C4C2F170718458428E0A2C21B772102D236FB733788DCDEE112CF533BF8528E5D5BD41167BFA8C79E4CCB26B4C9CACCD5534324CE7953DB4DC994D79856D9B46DF7AE2F61C90154997BF205796F86E9F52980E8D73BA371FB9B9C85C6E35A6E7706C1C11A6AE4FC1DABAF4B28E2BB2D0F50687AC8F85721619D5ABFDC00
ct = EF5471DC00603F3B6CA49A046394E8E4550180C5086A4EC4AE524683AB05DC43B9805F05610F57E29D7A4217A23967A7B1FA471BAEEB009200D3F880C9B7C37634F397AB6263AAD865B527C6779ADA27A6442079C6947F43BB7DDA8F230E532F91F9AF6B50C7B939D56435FE51015BB618EFFB9B0210A020809C9308A05CF82D33FF23FEAA00605D579D3B01BD28FBA1ACFEDA23E464F624B00A63E95D07900EF55FFACC013731F45F0A4BF688D09B85300A3FA142C7D060FCB477D0C7A84948882798C1C1082A397149845F6FD23D2E1CDABD6FF6B1B0A9E9BF4C009D8FE85E8347B6ABBA433F7C753B070C705C4C9C18BCB6B256746B4C755F6CC9E6A3D5C3738C93E21211D2402830A32338F617F376DA00656A023643417677B908FB426ADB37849BDD485C40554A52A7295534DEFEE1A415EFF291BBD0B2F0213DCD4CD63E7FD8FA449D8F52FF008C65D2F9E301826E9716DB1AE09B09C8
ss = 657A6670077450DF16010E2B27552FF6

count = 82
seed = 373FDDE922CFC416ED96B444E445BDD0962E8989F6C50ADF9912A89937C57217D3600B06C95440448E3F601AE69CA5BE
pk = 403E0FE2E4768D8AABA88A13D1095F6919CD6378D19B0E07564A839A2E56CA7DE01F393AA50AA8BD69D78CE8207A7A429B7FEC318D42001257C6378A904A283769B5D17A3F6DCB7B2248266002A5B00AF91B21B06A90A0FFA206AB41B14519D37A5A42A5EF98C3DBFFC9DF73DA00AA8F3EC93698526F004836C97DA5AD2C31B23C5D2246EF4907D9BDA97C9BD43EA08C5AE939F92524E6BFFC573F65006EE4314BD950F30084DE631F2AC3834BD6091E96AD30963EE8F1183B50BA51E416E33CA724FD0475E8343E1D83C8A69A6E6C5D01DFDE1B63228B22DBEEA30110D4B6A1F2708AC6397FEB87A82F8AC4497B144BDE41B15C65DD5B83D47594F0B10385C48A941F5890CE4B9A7CD3C6D463DCCA7D277B01956BBCF7F6944FD80527A65E63E56F4238E31B0EC2134CE28C603BC7E252792C37233316BA8D5D6DEE9EEA54AE421B5D5E9941FC308F01
sk = 2478F7D3DE6041E7E5CD11C5E2EF483DB02E23D880594683E501A9F67E5885D5EFAB28CA726C65DD9C3E5100403E0FE2E4768D8AABA88A13D1095F6919CD6378D19B0E07564A839A2E56CA7DE01F393AA50AA8BD69D78CE8207A7A429B7FEC318D42001257C6378A904A283769B5D17A3F6DCB7B2248266002A5B00AF91B21B06A90A0FFA206AB41B14519D37A5A42A5EF98C3DBFFC9DF73DA00AA8F3EC93698526F004836C97DA5AD2C31B23C5D2246EF4907D9BDA97C9BD43EA08C5AE939F92524E6BFFC573F65006EE4314BD950F30084DE631F2AC3834BD6091E96AD30963EE8F1183B50BA51E416E33CA724FD0475E8343E1D83C8A69A6E6C5D01DFDE1B63228B22DBEEA30110D4B6A1F2708AC6397FEB87A82F8AC4497B144BDE41B15C65DD5B83D47594F0B10385C48A941F5890CE4B9A7CD3C6D463DCCA7D277B01956BBCF7F6944FD80527A65E63E56F4238E31B0EC2134CE28C603BC7E252792C37233316BA8D5D6DEE9EEA54AE421B5D5E9941FC308F01
ct = ADA6439834C7BCAC8F61B4DBAFFD4EBC116196FDE0BEEC1F216D52AADAB44E967692B0CC5D6593B3A02A501F3415679A3D1C4D128DB500169EDA624EA81F0B9B31B320D135ED13BCE80B4320EB66DCFBF76D7C45C3506151A256475B4105B17B276AB35DBA3E6BD5FC8B54BF98005FFD6C4CA4C714914D29708DE71C948B235C6C66613CF86B8D6666283E78584D8FC7A1A332A82E2C17DCD09B65255BC7412D1ACCB36D01A539FE37FAA72432674A2B62AC63FFBCE68DD364F5F25CDFAA3B842966EB09992BB096241BB7924D180F11535709CB2BBC7EE4B8C98301ACF3E0AF53D3B8CA222C703279EB719FF3580E1033041B5474EA9D6753A0237BBE446E75FFF86F62F0FD7594B43D3E0CCA22889D669301CB1AE3593669DC516480F11192B23F6644E1AA106AC98B976AF3743A9FFD3C52402725061F87F9D14D01800E08BBC7AD3DB8B7AC312F0204D0A5BFD970CD7D90A6E388798D92FD
ss = F83EC12EBE74AD7A567E22537E605B62

count = 83
seed = 16BEF67F7AC3A755C59C816478B75FCC16CE5844DB537791ACCD1EBD49D2824B105FD2E970F728C8F0CF16E439A9AE2F
pk = AFFF8BF1695CED245FBC2C8C7703DD13E4F9D052A689B35E6B8D2CD9D73622D3209A223D04A960A970DADFB62BD5CA4897244E28E3A500A659DE76B433D2884743E23C766442266C5E9C3F74A027684715D0A67A6A543742833272AD82D9AC992D94671A548EEE12676FD1129A0190D7C89011A8A0AB34F30D91FCE9B9EBE8B252F7A6513A3AC1A8DFC08044D91D396F812A25BB08867F39BF302F91FD1EB041A1A3F8BA018A5F3A9609CAF8B2A6BB64C9E37F22CCFA4E684B3CCE3187EA875E7CFC8CC1F14F0ADD1A5BCC4A4132F90FF1706333014B793AC646DA00A364EB3C317A0A396332006350C2BCA1F7BF67BAB73A7E4D702A1A685A4A1499B558A609FEDB159606394E492A283D43AF45765AC08B010502829B342612A91D46773F3DE2E25C615A7F2E3B2DD25721AA1CBE573AD4771403DF1097137356895C91FE0043EF7C8A86D95F0F3200
sk = 9D405D3EBDAF35FA8722DE431B669722721A91D8DF95B05F40CC35754625090284AD6C131427DE79BAEE2801AFFF8BF1695CED245FBC2C8C7703DD13E4F9D052A689B35E6B8D2CD9D73622D3209A223D04A960A970DADFB62BD5CA4897244E28E3A500A659DE76B433D2884743E23C766442266C5E9C3F74A027684715D0A67A6A543742833272AD82D9AC992D94671A548EEE12676FD1129A0190D7C89011A8A0AB34F30D91FCE9B9EBE8B252F7A6513A3AC1A8DFC08044D91D396F812A25BB08867F39BF302F91FD1EB041A1A3F8BA018A5F3A9609CAF8B2A6BB64C9E37F22CCFA4E684B3CCE3187EA875E7CFC8CC1F14F0ADD1A5BCC4A4132F90FF1706333014B793AC646DA00A364EB3C317A0A396332006350C2BCA1F7BF67BAB73A7E4D702A1A685A4A1499B558A609FEDB159606394E492A283D43AF45765AC08B010502829B342612A91D46773F3DE2E25C615A7F2E3B2DD25721AA1CBE573AD4771403DF1097137356895C91FE0043EF7C8A86D95F0F3200
ct = F692C2E446B8DE4E601A7F9C508FFEB376A2605C1060FEACD26CC1DA8ACA539C05ADF973E7596E9F58BEBA1BC93994E8D2C2FD50381D01F66897236675240FD1B781E95EE0AC81191725EEF73AB54C15056204D87069A90F179150B70D8C0AF9AAC73B1CED9A328F48C608FE7000D6D5499A365DC84727F87677AF22DA40E0A14E0BE0DD5DEBD081B26E8E0C3521D0124C9A12AF241F623C73B83422EDAA4A2C372FFC730146D211CF1FADCE9C56040D8003D887605EC7E8AD29BC01925951CA00D217F0719AF0D4912E295942B6C12D5271902D901757011F5F3D0002D9D25583C492C5E5CAD1B56865B8927C4927953A492625EBEBB1E3784DF2B1EDA1601A3405E5CCAC9EBFCF66D7EA1205C5A77A9A350154BAAB41371C2FE157184BC9222443D65CC5B703A63422E26671D8731FA0420AFC29C1D2642219A0952D1DD338BEC7C532A0B9D7454901294972667D5E8BA1682979F9283D3CC9
ss = DA75F7C38E010985947EF930BA6B83E7

count = 84
seed = D0611F9AE5BE4DA5D7EADC9109944348E716CB3DAEE545721EEA8C892E7831CF2E54603146454CBFD92387739E9A78D8
pk = 7D3FC0511382996C71EB3B77BFE0A16AB73DF026C180B5BA297F1722CFCAB93599F53EEE2E0E642DFDD88AF187AC70B4FFA0714363A20166B7D314A29F89AB12F8EAE2567D383B2F5C244110450D2714A01B6DD61878D153A22A52EC246DE9144B956AE2686F0058F18322B69D00356BAA882DBFA529CB39E45535241AE0EEC6F239F8F4DB2971B1E9B741D894107124D0745ACC064DC7ABB21B6E208F6DEC6BDB5603E90070DEF2D226326F8917EBB48119BF8D7DA4EACF2157002C8A84B8F8A9BDF53D3263E62F0749BAE32A9B89305BCAED3672B0F6BEBD2574015F8B1BCF14A692411EC23CF2A26A059610E10DCDFF9BAB924EE7A10858A69014A65B550CB8823930A38BA84F1BB252C6686B5B4E8C6B0100B81395E44AE10C1FBBF3975F949A7027CDA1076336273A121C537747428BE68F229CB6A7396AB149F5EB21E9C1EFBFBBB2190E9C9900
sk = 9A86490F0615F3EDF789CB0654066E9E11A2F62A82C999B0ACC95D1C3BA10B734827586C051001754C8C4B017D3FC0511382996C71EB3B77BFE0A16AB73DF026C180B5BA297F1722CFCAB93599F53EEE2E0E642DFDD88AF187AC70B4FFA0714363A20166B7D314A29F89AB12F8EAE2567D383B2F5C244110450D2714A01B6DD61878D153A22A52EC246DE9144B956AE2686F0058F18322B69D00356BAA882DBFA529CB39E45535241AE0EEC6F239F8F4DB2971B1E9B741D894107124D0745ACC064DC7ABB21B6E208F6DEC6BDB5603E90070DEF2D226326F8917EBB48119BF8D7DA4EACF2157002C8A84B8F8A9BDF53D3263E62F0749BAE32A9B89305BCAED3672B0F6BEBD2574015F8B1BCF14A692411EC23CF2A26A059610E10DCDFF9BAB924EE7A10858A69014A65B550CB8823930A38BA84F1BB252C6686B5B4E8C6B0100B81395E44AE10C1FBBF3975F949A7027CDA1076336273A121C537747428BE68F229CB6A7396AB149F5EB21E9C1EFBFBBB2190E9C9900
ct = FE0559C7DAEC3451BDCEE23E2D82A70CE36625DC8BECC7F58FAF6E38154DAEC257407A75BC6B249CE93EF1211E10E5C2D883ADE723050101E0AF2702B6212A500B40DB8D2166ACE5F35E17509BCE9F93FBD8C0899F7FB2DB97C790E036BB79AB83FA2E33FF2520E75F5B5D109001CC524C58AC794307A1556879CDA453D0D51E39050C86D37962D9BFAF9A8AC7174AA3ECFA0CA0E4CAAC0C0BA6F208800118EAD944546001583B37F18C4C71F54D8E3031AD66688CC4E3BB6115A6DE364AFD2F0204FC77EA8336F55CA22F12A46C198D01C79134029A31047D4B5501B7DA0ACC711530CBB5261221904A6C34F9AAC3926A854609510D4B23A3725A9E45CD444D02B4E0CE3F392EBD7C9DE13774DC349F28AA00BB59233AE46D845F9239D64003E85678FF270EBDEF2834A39CF64166825B803E53C86E5D275999E4E232673D97E3CE93770C60AA5F920105CC6F1C852EAE8223523C1E18E5B6E0
ss = 389E75A62D289C99CD55DEE471EFD8FE

count = 85
seed = FBC38D7614D7718E931EDB850D2C6F0C5EEA9EE889B3E25BD69AC255D5B91E885D93E808E66BF9C88C655DC594DA5792
pk = 2201048D6ED00F2CF905E3DEC468164C3D86578E06BAB3ED59FC8D3620876CC876677B73B97F2FBB887D9BDA577AE06597876C1431C0002C2EF1A6497C437417F2908BE9F147DE8DE09993F5C024472A4D7593612471F12A248F47A862568DA438EE76D1ADC9E259477CA25397014B9937B9B704E3DA976578E0DB447D280195B307833603681232CDE558466CBD3BF02E2747FD4139CADE697F256A67B1522CCC299A02018A58A2C462A9829745DB219B94FF2C4BF972C523CDCEB2AE7B893A226F248951A369D1E3F4CE68E3AC8E4FD9924AF689A4B83BD6056700339CA542C3B735666ADF91CC52B87816E88F9385CA566220EF24A97695D28DC474DD64ACD3413D085CE9E135B2C51F158B115DD6D0CF0175A4204359581F98FD18C39126B61177BE71F16CB0F37E95403BC2E98B718C9449025B51E4A637B936F5A0D915F6BEDB8AC856185C1E00
sk = 6DFD9B575872560C7BDC2732C4A28DACC1F19CD6E52710F40C63065365C210DF5DC00930FD2FE896B183D7002201048D6ED00F2CF905E3DEC468164C3D86578E06BAB3ED59FC8D3620876CC876677B73B97F2FBB887D9BDA577AE06597876C1431C0002C2EF1A6497C437417F2908BE9F147DE8DE09993F5C024472A4D7593612471F12A248F47A862568DA438EE76D1ADC9E259477CA25397014B9937B9B704E3DA976578E0DB447D280195B307833603681232CDE558466CBD3BF02E2747FD4139CADE697F256A67B1522CCC299A02018A58A2C462A9829745DB219B94FF2C4BF972C523CDCEB2AE7B893A226F248951A369D1E3F4CE68E3AC8E4FD9924AF689A4B83BD6056700339CA542C3B735666ADF91CC52B87816E88F9385CA566220EF24A97695D28DC474DD64ACD3413D085CE9E135B2C51F158B115DD6D0CF0175A4204359581F98FD18C39126B61177BE71F16CB0F37E95403BC2E98B718C9449025B51E4A637B936F5A0D915F6BEDB8AC856185C1E00
ct = E304BD1D8E23512AE8C2DE64DDF9BE3D8340FC28C8814F78BE3D0F5CEE0C0E9D901B0536793EFEA9A4DBE099C9F0DC62C5C350FBC410011F59035D58134E1E9BA87EB44326DBA6CF34086932B119865CD3969960D64D99FA630D9CF9B84DD26D2F5A611E9878A4694755E4BE740174F824E123B9C8805A7D9ED689495E4E0D5E10797AC2BA4A52C7AB807A4E7505990F2ED051DD883D5B5A80DD2E985B02F2DEF687EA3B0168EE44D02635B949DDA2747B4F62CC172D98B0B11E90BAD710A80990AC4797D9631178F2268B888E64EB0D2B89ED62BC1C4E0DD0F7E900E742852CCBE351314EB3F7CA2ED494B52F342CDC4BDC4980A90A9E18993523C5CD5108D1E8B7610002BD9D075BB368F6697DE3100D90016FE43A4C6F6C096F0639F7564BDD58E9ECC53620A52AE1BCA052617DEFB518C08C45CC2B29B5E77A3D2D7613DE0476DB5A56480B4EC50066836841752DDA471E6A05BE340ED113
ss = 57651B54AEAEEEA98B87A7D60BE38C90

count = 86
seed = 1722219CB5DB47374EB0AF0232C856A57F026F1CB09E5A5799F4C333DD422FF6A0A67C4DA502FAAE727FB2D45DAFCF35
pk = 9900D987D9DE09CDF27B12E7743BFDC905E61AFF645EAF02C67D3778935C42F5EF223B6057EF4224158BCB1C989105D70145D594425600C996218C12C222ABDA46A3F9BB51D172A3558F6EBFB4B92E5F63BFA44D12B1FC6B065850EDFA5997E43F7B7B4A92333D704B19A48527029369A58624E88CD0C12BF76ADC19324696FD8C6E632A37A8F0ECDAACB7DE805C80C5FB7368A3CD40F2F86D42BE61CD660609DF5BFB37017E47F082C907E4CF21650D351711B5D3C8156D077D1CADE204D0118377BF582E3116295482744C3D325AA48356DAB735AB91E98D2569015BB69791A80437956724D843E39F5C4ACB573581941CBE2D1F813D181A75DD33949189F2EE1BDE52BD9013D135DC6965D211924E1AB601979A4B1E9BB82D52F0E3EB6EE349F5088E6D797D7F53211C6531FAF94E68CE1CC8FCA2ED9D2F3C3AF387FCE8A7D4EE6CB2424568E1AD01
sk = 6FCA9F4E384D8418075CC064C70730801B9B38C17733BA74730C46BF39C6D2440E49B70531A315A6B80133009900D987D9DE09CDF27B12E7743BFDC905E61AFF645EAF02C67D3778935C42F5EF223B6057EF4224158BCB1C989105D70145D594425600C996218C12C222ABDA46A3F9BB51D172A3558F6EBFB4B92E5F63BFA44D12B1FC6B065850EDFA5997E43F7B7B4A92333D704B19A48527029369A58624E88CD0C12BF76ADC19324696FD8C6E632A37A8F0ECDAACB7DE805C80C5FB7368A3CD40F2F86D42BE61CD660609DF5BFB37017E47F082C907E4CF21650D351711B5D3C8156D077D1CADE204D0118377BF582E3116295482744C3D325AA48356DAB735AB91E98D2569015BB69791A80437956724D843E39F5C4ACB573581941CBE2D1F813D181A75DD33949189F2EE1BDE52BD9013D135DC6965D211924E1AB601979A4B1E9BB82D52F0E3EB6EE349F5088E6D797D7F53211C6531FAF94E68CE1CC8FCA2ED9D2F3C3AF387FCE8A7D4EE6CB2424568E1AD01
ct = 8E4C55A45318D42EC17906C0AB3BBAD6A610931BD794D60414C93B7DE740D08D92B279F30B599CBB72AD29FEF2972B041E4C26505C7A00A44A0C74823588A80E7027BA0474EE3DE013D532B893BA4503C1F9A4B67D8113613741D4302C9F43462C19DCED342A998F8340C91A0F0270BA4D21A17314AA398C863382FDBAC1543A088B81FF17074729C26AC9E325FBBDEE8FD3C0E07D6FA64F321CD32575B0AB9A701005890181600CB562982E4F86D7443DC56B2B965B17C526859066210893C4D7AA20699AB47E6F07C287E3082CD843B6C5F1313E1BF310B1385F019A8936D54EF89E8D11A93C9968B14A0CADDDC54AA8690EBC3CE58B58B900F527AF3DC14412FB391AC5758434967DD39836ADFD6E439800D88A8566B1A765E9378CA02CF1CBA8E44F2751B511957A439C3377227C1577ED73B32E826A0EE6731977E14312A29669B7E057F909F600C7C4C8AC3395B0EBFD758BFAACCB1920
ss = F6082FA9C2DF2BBAB518B4DE9F489231

count = 87
seed = AC139B78FD16CA0F26D6D7F9E15345C888D857B1910CF38D883339B37EAD2DCAC30F7CF10176F23FF34B4488EB79437C
pk = BDD34E9B75E382D60D8EE5F67B58BC98D201BF3CFA54BA20095E7E16EB3C3D3F80E4D17FAB494E8D2F3B2CC6D6887FFFF567E948ED2602941ED7584BB18FD1E5D370A14ED6C612D689C8516FE5527B06DDF4D44A7BAB2852D41F19BA296FE18F6743DCD3035C2FFB12360015040049194B9C6607B6CF00C71EBD57A6E04B41FFBF7F731CA7E8721BB2A439E9F24BCCE2E70845636EE7B50E2EBE82B17A3B670AC45ED378001F222EC68B015FB84848C139BB2313A97717F1F456E7C0A1A65F2CBDAD1CABD7510700D75BEF0E53B0044F349FBACC3B021E60FA2E3200311ED3CB16DBF2AE3CF60F22BE5411E3C2FBA508B2D6EFC6755D74F1C2AB193D468BB10949C0EE65D3C78BF8B6D62353043B7D3CC20602704365AAA7C56DF5B93EF267484077F1FA63FCA68A61637A23B915A8A11530366A9BA7938D88FE158238DBB5DF43878A96D54F6040B000
sk = E58F71BF175C0550A67E00E0F7B3B7FC8D3FB72B55010DDAC525AF967662C8CDC6BD65F230E21FEBA3FB3F01BDD34E9B75E382D60D8EE5F67B58BC98D201BF3CFA54BA20095E7E16EB3C3D3F80E4D17FAB494E8D2F3B2CC6D6887FFFF567E948ED2602941ED7584BB18FD1E5D370A14ED6C612D689C8516FE5527B06DDF4D44A7BAB2852D41F19BA296FE18F6743DCD3035C2FFB12360015040049194B9C6607B6CF00C71EBD57A6E04B41FFBF7F731CA7E8721BB2A439E9F24BCCE2E70845636EE7B50E2EBE82B17A3B670AC45ED378001F222EC68B015FB84848C139BB2313A97717F1F456E7C0A1A65F2CBDAD1CABD7510700D75BEF0E53B0044F349FBACC3B021E60FA2E3200311ED3CB16DBF2AE3CF60F22BE5411E3C2FBA508B2D6EFC6755D74F1C2AB193D468BB10949C0EE65D3C78BF8B6D62353043B7D3CC20602704365AAA7C56DF5B93EF267484077F1FA63FCA68A61637A23B915A8A11530366A9BA7938D88FE158238DBB5DF43878A96D54F6040B000
ct = 5BE2B297C41D5E3DE52E1F48667EC76AD3BBBE167B79252DE2DC3D06CE6D76F0382F4400EE57EA20DFFEC4DE019AC28A34BD8CC68B7E01276E20DAC70D5060660192DFC3B9AFA1C50730D5D865BC7F0D9D6CAFD5817853BC9F76E083A6FAC476F90EE7506F5B68059C263E0DCC01CEA739DF7D52D8032E2CD934F5119B03E70F7ED3CF4ACAA84A6524254934D4CB2C875F1FD7945474282388903FC3C7D0A7EE4CD2AD3E00138B27ED81369AF50C8B1FA5BA7C693CA98400ECFEA59F1D541A92DBB6B92752FB164C775AB472F08B949E73C136427D4594C14FF1FC00406ACA2F65F37872D498D7E58C73EEE80C96CBDD21FCF1C3EB172862A54773EF59542BDF8DAFCFA1241EC187B7A9AC57E35A5911123D00CD387140A2EF8ED2AC15D2FA06EBACF4E279E617947A6822B62A72C35ECC938A3A9FC3FADD637ACB556D758019B08D82A1469106DB1C029A809215BCCE9EF8557E7593EC2DE97A
ss = 35C62EBA540CB14180433A41CADE8988

count = 88
seed = CC7152849C98D5FED2813275D32069E44824ECB14EAEF425CE017448CD9A401C91C06D0F7EED6D22B7BBE8BA6C429EC3
pk = AF9DF3DB2FC633DCD52B4448291577FC5DEF87F572DAB9200658EA0071EEAC78B3F8B2106F5BCBA7DA7683E6CBEE6ADC236361623AE40116C77436B7EE5BE3077E09CE4CF9219C6794B1C781B225EBB16FAA9146D94ACDF01BDFF1209D8A31F15C63300D057321D995ACD71F380067197909D44A9F0B58D7C59045465AAC0C2171C798A0E8587E70F5C33E6F694528199D46EB633FF3C8BC5196C6E8CA6271077E4C26C900601E49AE716EF3CEC7858BA6227EA9B576A5201CF1712FE8578BF2676DFC2C1013986E48DBECA4444EE24F5CC9442931C7707610DA6D0081A2BA37384162E842A09095AF7E3228E2123C4F9FB2AAFB5BFE5F849C8BF20D46F977EB18143A09B697969A6D11CFD6D21F0EAE4663011320CB23679907015C27757D451AB2B775EA17AF603D04E4A2EE3C237A94DE32569225C4E00331C6B98F9D4BD0C0FC916E935655A9D800
sk = E3FC575ED51513E62ABA655D24CD9C8FEC49560745A08FE9D8341C3F25F459B64EA92BD0C6C7FA16A35B3D01AF9DF3DB2FC633DCD52B4448291577FC5DEF87F572DAB9200658EA0071EEAC78B3F8B2106F5BCBA7DA7683E6CBEE6ADC236361623AE40116C77436B7EE5BE3077E09CE4CF9219C6794B1C781B225EBB16FAA9146D94ACDF01BDFF1209D8A31F15C63300D057321D995ACD71F380067197909D44A9F0B58D7C59045465AAC0C2171C798A0E8587E70F5C33E6F694528199D46EB633FF3C8BC5196C6E8CA6271077E4C26C900601E49AE716EF3CEC7858BA6227EA9B576A5201CF1712FE8578BF2676DFC2C1013986E48DBECA4444EE24F5CC9442931C7707610DA6D0081A2BA37384162E842A09095AF7E3228E2123C4F9FB2AAFB5BFE5F849C8BF20D46F977EB18143A09B697969A6D11CFD6D21F0EAE4663011320CB23679907015C27757D451AB2B775EA17AF603D04E4A2EE3C237A94DE32569225C4E00331C6B98F9D4BD0C0FC916E935655A9D800
ct = AA8140EA0B7FBFC506126531274EC76B02E73F1F46E2EB3BEC4C98CEF595F901380ED823D3F474242D5FA6DAB20227940F05CF254303012C19D48EA45EF6DD4E4E60B9B618446342FAA480519C5978B31A4AB51FD833BDDFAB1EDC809C9BBE47E730577A71E5B8F66FBC8CD4D4015DA8AC2A2EFE963D2C94BAEB38F7C0ADC2D31EC9A9C5337A02E1B9FA4145F55A2A8E6874584006C79DC3752B4DF8782FF0A4377BF24800FAF73684FECB522B1EFFDBF6C8A7205076C3E290692D3C1277137A0F83869AB3ABA3D1F99B94F7CB5F30FB049A27BA03C570755F1CF100A516C84A748AE234A6892CEDF0997B859D5A87E14F1D2C6B9B5A91E8B80882187B97407E498A6142E12F49E200C84FE4FD8383DA05E401C8B542EBC56A9BFF71494C9643E321851A9EB15535ABCC3974D8FF46410490B0B5AD9CE77623F945A2EE95BF3E7EA63B9167480FE49E007BA7776F5878BB63181A7DB3F79F4331
ss = 8FBB1675631012AA69F22561CCAFE1FB

count = 89
seed = 96D9A06F88FF2C2036FA8E914B89C765E4A510B468DEE40F914F78858C811857EFE9FD0E17C0048E7389E8D996B7E2B0
pk = 25866D1F4A0D7F7252C128D035CA93460542C32E545077D57BEA62FFE92C37B83C040ED2D7E2341ED7B406D1D9A0BCD82BCE3C9BCE1200E625EEAB1A74EC3AF9E0B18949627E0890A949DFC367DB9C0915A3541422B9E0CC632B45ADBC0F18E749B0875869116CD6145DE3BC540067F8E8BAB51AF4005306FEFF6478F567CE0B0476836606E7B7FDBCD888A5C863ED338C0B2DB7FD99220D84EFEF722D78A262081404DF01EF4AD81A528EF02650A4B8F1F4EAAB96B467289DF861781F4EF505A09EB95FD54023597C23E0DE8AE2942778F967C1CDC688E4E1161001EDBBF26CA03005DAECBE4C672662778D42464190C6AA95B0906B3995CB99F02D16413F056635BADEC34DF3B43EBE29866FF6FBB64F2F01E87CE3EB63B52765172361823F6981E02CA2BF33AD5FFB2B062F58B44FCB8F40B309E80278A804D9F6A572B5FA936BC391FA95686DF501
sk = 470B4943F0FE7FD0D8EC5185ABA0D1DB7CC710FAF7C1C1F4A4A8419DEB87C915EF692895903BAE280771460125866D1F4A0D7F7252C128D035CA93460542C32E545077D57BEA62FFE92C37B83C040ED2D7E2341ED7B406D1D9A0BCD82BCE3C9BCE1200E625EEAB1A74EC3AF9E0B18949627E0890A949DFC367DB9C0915A3541422B9E0CC632B45ADBC0F18E749B0875869116CD6145DE3BC540067F8E8BAB51AF4005306FEFF6478F567CE0B0476836606E7B7FDBCD888A5C863ED338C0B2DB7FD99220D84EFEF722D78A262081404DF01EF4AD81A528EF02650A4B8F1F4EAAB96B467289DF861781F4EF505A09EB95FD54023597C23E0DE8AE2942778F967C1CDC688E4E1161001EDBBF26CA03005DAECBE4C672662778D42464190C6AA95B0906B3995CB99F02D16413F056635BADEC34DF3B43EBE29866FF6FBB64F2F01E87CE3EB63B52765172361823F6981E02CA2BF33AD5FFB2B062F58B44FCB8F40B309E80278A804D9F6A572B5FA936BC391FA95686DF501
ct = CCF491F399710CD48DB7AD77A77369B6304B73FA1CD567010FE8B47E58CD801B4F40B9857590DDD69BAB17F316FBD8A05392681089BF01EFA3FB36E9532A0FD0B05DDA37544AF71DA6677DCECF1BF62D611F39CD7E842BAF9078D706F85BCAA06F2885F6652E0F907E60D1C68D0017570AF6730C69D84A9BE48EE1559E0C5ABF4143CE492C14D2573006C73AB0C9BC7A5699D306E40929811FF695302B090EF0CC6152E0019317FBECC106907E3D4CB85E0A93D07DCCCBE7AC61B365652EA3D955E81A4A986B46BA85CED2F8E2509EE1D9F4A51CBEABC1A0F76B080148BC0DD9800C403A618F53CFB485C946D1C8D2B6E6E9B6D6D6076F1A2F22F5C574DDE4A9C764282C47FC5DC1CC5D3799AE906A2132420108B82ED09D9915A1121EA97FBED7DEAE58A6658BEF2098A0A0FD588EF8D34250198052693CB95270160743791370BFECA4B54A55840500B4FD3BE468B107651404EBEC9F0E620B
ss = B3076F1E54E9218D8A56359AD11267AA

count = 90
seed = D26CE360D399BF7B89DC364AA7AC06BB513EAB8F527383E93E30727EDC3F22C262AA0EC70257B39EDFF0630DCDC1B79A
pk = 7DCBA0D39939F14443FBFF5A5A7655117CF4ABDDDAA931E1F9F5F2F4DDD9F23D9BD14405C885A5FF48C19BCA55E85CB6C994329FDF410142E78EF67F6502759B0BC2ED49EA8E69B0F0662080803F6D3A08AC2FADE6515F238482328C0E97C96CBC6134BA569870A27754F32D970186491403DA9C984DA754BB8CD3F2A2C117EF7BA1FB1F9D24AC04F989E6DD1EE421EEA63BA820E435D0EAFBB535C2AEDE244CF1EB43C9016BE24B68B1393512CC8E6DC4A0B9B2C8B8D9BBC0354D592101CA78F7058B32DDBE732C7752D489D4774049A25FD8F58FAC2A95B7BDB60131B6C1C121EB81C4C86A79813538F7B4E4FA3FB72A82A33C8DFC5073AA7B9D5BC01E10AC03FBF84045C718CF108CC4A5584E205E2DB1014F901110951736A4CC27F72E0CE59D4BB32A8DDD9E1699D59ED3982689C0576E009784E07526F45EC75F6F0C3C6E5D358F0A848485E500
sk = 6DF4385DB978D27B27D2AA5E452E41529B8E8792F075F00ABD73FC790D3297EF894C5475CA4323B06E63EE017DCBA0D39939F14443FBFF5A5A7655117CF4ABDDDAA931E1F9F5F2F4DDD9F23D9BD14405C885A5FF48C19BCA55E85CB6C994329FDF410142E78EF67F6502759B0BC2ED49EA8E69B0F0662080803F6D3A08AC2FADE6515F238482328C0E97C96CBC6134BA569870A27754F32D970186491403DA9C984DA754BB8CD3F2A2C117EF7BA1FB1F9D24AC04F989E6DD1EE421EEA63BA820E435D0EAFBB535C2AEDE244CF1EB43C9016BE24B68B1393512CC8E6DC4A0B9B2C8B8D9BBC0354D592101CA78F7058B32DDBE732C7752D489D4774049A25FD8F58FAC2A95B7BDB60131B6C1C121EB81C4C86A79813538F7B4E4FA3FB72A82A33C8DFC5073AA7B9D5BC01E10AC03FBF84045C718CF108CC4A5584E205E2DB1014F901110951736A4CC27F72E0CE59D4BB32A8DDD9E1699D59ED3982689C0576E009784E07526F45EC75F6F0C3C6E5D358F0A848485E500
ct = 20759960EE23EC88F2C37E4DDEC502DD0CE3F3FFF4D7A71E4E61697CC78519D2600F0ADCFD6414BB080E0E6B4D95062D7F651A1716A8001A3C06D9BFE74DC8F8B3FF7CC22118A684135337CCD45DEB75A886F833862C41EE2DEEC0B7EA60FF56DD73123D8CBF4161AA4A9E68C001D3AA5C25064926AB4E68E646E3C58C02E28B2A6FB0F99129F804FE508231F03A4710080FEB33EA46AEEE07EF7D3681E053E8B5029DC201F49C93B0360C5AA64ABC98B72BBD7429106E80F14C7C47705BF68D7B5B77831A97BD467C22A54AEBDB1AF35EDF43095871D1B3E4D931016E5431D56BD566A4E180A20E4BCFBCB9F634179403916F2A83617CEEE981CA401CE6479B7B238A5175DD21D08BDC6914DDCEFFB08E07005E10E3FD52CEF9AF4E3A3D8E68938191D63EB207BA736D71369843D7BF7F5FD5A16053688C475939858B80DED3C01B049FB09DBDE5DD004668C5F892C9845B7034DE3DBFAFFC76
ss = FA89E11860344D23EF3708B4E18E6228

count = 91
seed = C5856298C3CB6AC9787A0F30938537AB2635B96F6D19CC9522063360E7A5C88E644929D2879180E3E5BCAD2422B7CFC3
pk = D838126D3EA3E3B661E4533ED9718149448B1E506E14B8B04DA7F945DDCF4B5363733086D5FA5F4E250EE1E8447827103EDF71E80F2F009600AC670B23DF0C598BFC21C5F5D9A25A03053380D148DADE2CA60626E0339489A91CD6F81C38039BB09E93D94C79584C79AF201954011623DDDEB03231F99013AF1595CAE2438F4013273673527DB83F7F28D3A13887910891EF3AB644059E8DFEC05CB671683265BE53BD3901FBF356BD8794AD73F644F527D24497A25110C24808DF4F2B924E71D99A33440C33DC84B99071EF05317DFD2990B193A7C54143D59FF301EFFB7B94A46DA50C7915FBCFC823E36B39144CA8F21BCAD4070ECEB81F13F7588986C90555390F096EC1C3DC2BBE0F218BE4F3A06E0A00F65A67CD56D9A18CFC51867D0C38293FB226F8855FF20B95C5C9A9D23126CE42A08382F03BDB5E9CF5E01C164EAE3DBABB2690B54B6E01
sk = DBACBA825728444921B227CDBA54446B57D37B8DBFF080C604AD1E083CB0F9E3A2D62131ACAE982E474B6201D838126D3EA3E3B661E4533ED9718149448B1E506E14B8B04DA7F945DDCF4B5363733086D5FA5F4E250EE1E8447827103EDF71E80F2F009600AC670B23DF0C598BFC21C5F5D9A25A03053380D148DADE2CA60626E0339489A91CD6F81C38039BB09E93D94C79584C79AF201954011623DDDEB03231F99013AF1595CAE2438F4013273673527DB83F7F28D3A13887910891EF3AB644059E8DFEC05CB671683265BE53BD3901FBF356BD8794AD73F644F527D24497A25110C24808DF4F2B924E71D99A33440C33DC84B99071EF05317DFD2990B193A7C54143D59FF301EFFB7B94A46DA50C7915FBCFC823E36B39144CA8F21BCAD4070ECEB81F13F7588986C90555390F096EC1C3DC2BBE0F218BE4F3A06E0A00F65A67CD56D9A18CFC51867D0C38293FB226F8855FF20B95C5C9A9D23126CE42A08382F03BDB5E9CF5E01C164EAE3DBABB2690B54B6E01
ct = 437A2D3D5E514A9917FB25F0A243B9325BE06E753C9C8B878D2A33EC9F555FF8DF5287A8E5457AFAAAD7B8FE78F535434701D4BB6CCD01849FE169F0FDB7741FFE0C66C4DE656458CD99A78B2FDA1E36B06FE89C717EF5D1BCD3585FA8C36D2D23166E1C38CDA1A546C2EE9D25005A592C1CB0CCFBE6EC30509821AA07665E2879A069D709AA3BF53BB53651AB346DA3D582708E048A991D7F8461270931288DEDDEF742019D56A0CC3B090830DD14CCB776873EC6AB5D159E279A73CB169C9C134181204D76932EC93F9DC838E052511DF847AD00BF178E39F97F01249C1743D004376699737065358849455CACA0FE5F5B862DBD9CF4B706790332A102C15474E86E28EE18A285F6CB711B9B27FF985A36005478DC8587D9DDDC1466DD5BFF9E10A96FDADF4DFEADD82BD3F34EBA11CBD58380E230488BD2360FA09D53E8CC55BE96387A1A182B8101E7665FE175858B343D2FBA387E687587
ss = F835B064E9CFE827C979E4DFF55328F6

count = 92
seed = A28EAD0A08E7228AEFF602B16A1E752278B8ED1E91DAC67994F5ADC372E1D82F95CC390CD97AB9212275E0566C833FD8
pk = 6DA0E28267DB90F6806DDCEA27C6ED27E705BD19D3B55D888CD80CF5FB6FD4CC9F23C153DEB2F60AAEDCE6A260C6F3F1149FFC18A11601987B08AB82E4C6491D4C5585D1CEF2ACA680BC9C6F5DD37FEFF246CBE0857C4CF908DA5652A758EE0EFEA2B5190D68CE636123CCA6A901013217821CE88544701BCC901D4989BD6F42301AFEBA63237A6428E6802664A19BB01EE6CD593184DDB95E93D31D4FCDD34993607FD101DBF5DCD2BF6BFACF5146F0B75914EFC75399508A812729AD193FE6CE75BEF0D94334B0C1E6F2A4FB259752DA8A01AD77789E725C4566018963093F70468600010278B726F20CC9B741CE0316BB3086CBF25D4696E2A06FD0DD2DDD6D13296505E57DE49CF68B0E56BC38B588CA004152D78E6DA99F9A123610D024B3FBFB9F64FB2800F20338BED72CE49AE5DCD1D53E3AEB5F53E94BB25A0C8FD5CF9F9F068A9DB3755B00
sk = 690EB71FD7052B906EAEC09937A8ED37AE13ACA45F612D2872FE359C4A257A10CB6529A031BB0A93601B30016DA0E28267DB90F6806DDCEA27C6ED27E705BD19D3B55D888CD80CF5FB6FD4CC9F23C153DEB2F60AAEDCE6A260C6F3F1149FFC18A11601987B08AB82E4C6491D4C5585D1CEF2ACA680BC9C6F5DD37FEFF246CBE0857C4CF908DA5652A758EE0EFEA2B5190D68CE636123CCA6A901013217821CE88544701BCC901D4989BD6F42301AFEBA63237A6428E6802664A19BB01EE6CD593184DDB95E93D31D4FCDD34993607FD101DBF5DCD2BF6BFACF5146F0B75914EFC75399508A812729AD193FE6CE75BEF0D94334B0C1E6F2A4FB259752DA8A01AD77789E725C4566018963093F70468600010278B726F20CC9B741CE0316BB3086CBF25D4696E2A06FD0DD2DDD6D13296505E57DE49CF68B0E56BC38B588CA004152D78E6DA99F9A123610D024B3FBFB9F64FB2800F20338BED72CE49AE5DCD1D53E3AEB5F53E94BB25A0C8FD5CF9F9F068A9DB3755B00
ct = 361D97A81A7DFB50942054F79A2BC7BBFE98E517AA5F1FD7213EA394D48EB268FCD28FA17FCB9F2059C51E7113B266738683FF5576540173540156357E38F991AB9D4055A98C0C013FE4963C8809E7DED72770245841EE207FDC3FF6E64A4CF5B336B1D1DCDBA8FE2EBAB91372003285A261984FA23DD2ECAC81873C1BF5691E2F7A4646993AD5C60EC38BE067F95810A41277DF9897C996C7B7F1CA568B2D5B7DC2CAE500173A413830D124BE7AF8E88189A03B52F9AD66BB87309EF8F4ECAFD9ABD3983C27379965E42D0DE825CB9C1FAC3E641B5AE33EEEDB0B00D14EE300BE12EB1D40DC102D09A4C3986D7F2F64E6E68C47ED5FE2679244440DB55B08C1F26B068A0B2C021114B369439B1113760B26029E70157169FA9A07FE02595B1EEA8C94C40CB696FF405034800DDA5BB0135179DE6EE04D37C563E46ED8AC6F84E1A40AA00D13D87E6F00FA81C28A68E85543A3A9D4194448B763
ss = 2A25258531402CB564E80DFDEB153127

count = 93
seed = 92877D706DAF88EF3412EB143DB8CD91BC047A9A43B7ACDAA42523560DEE4C172697BE4332042FCAB91135839BF74AB2
pk = B0752FE50387034F5C50E82374D7A3BA05860AB4DAEBF4233AF0F89E5EA2A7CC95A5B3A3A530161039E2130D6C6F3DDFF81DA1F1BE050022A8B6607C2C02401D78BDB8850735E1DA52EBB06831DEE52E8B33DF0EB4E3991B69B65644ADCB2173EF9F2172A86DF492AF319E605A00BC6EF8E45B86A267E5B5AD490E07B3273163C59EC237FE5CEAEC739E6D1FAD00C8FE524D846B692CAEBD04D10EC58DBDDC57E092E98400C879555CFAF770888240BF5F55046815520BDF0C8CB196396794083A7EDE185B27EA64A6F3B4105885A00530B7A8B8F0FECFF86DFE4E00D363AE905EBB45F23795DD153C02948583C271F8B60FC5EB55BCA8FD561D4E45B9A42C39DD79568A950EB5DC1043BE519610E34458300207A2FD97AD5F8C0C2059D00462B0A9C26579380F39184031DC53E464CAD7ACD106938304AA82B0DDDC50C1AE065B2AD6E1A725B86EA900
sk = 32E0EA9089FA928482C0770DA545AF1B723ACC261D1CB8D2A37A97233611FB50B68E83E8FF42DF78A4C18A01B0752FE50387034F5C50E82374D7A3BA05860AB4DAEBF4233AF0F89E5EA2A7CC95A5B3A3A530161039E2130D6C6F3DDFF81DA1F1BE050022A8B6607C2C02401D78BDB8850735E1DA52EBB06831DEE52E8B33DF0EB4E3991B69B65644ADCB2173EF9F2172A86DF492AF319E605A00BC6EF8E45B86A267E5B5AD490E07B3273163C59EC237FE5CEAEC739E6D1FAD00C8FE524D846B692CAEBD04D10EC58DBDDC57E092E98400C879555CFAF770888240BF5F55046815520BDF0C8CB196396794083A7EDE185B27EA64A6F3B4105885A00530B7A8B8F0FECFF86DFE4E00D363AE905EBB45F23795DD153C02948583C271F8B60FC5EB55BCA8FD561D4E45B9A42C39DD79568A950EB5DC1043BE519610E34458300207A2FD97AD5F8C0C2059D00462B0A9C26579380F39184031DC53E464CAD7ACD106938304AA82B0DDDC50C1AE065B2AD6E1A725B86EA900
ct = 8856885697463E14E39727634BB9AEA15D10267A483757040932975984705C4B9CFC0D456996F75490AEFCB3A6B7F0C0E748DF38E3D100FB00397DA23E2AE89F6D06D3C1314866DDE41B4FB5190D7EF593359DB218596B65FCC87644DB4883FC0137ECFA2563B14D8F959C9E15000769465C716FBF997E202FCA0E619BBA0AAA5C814D48238D29CD6A881C27FAD848CE1CEACE6EBB82E7E4F344D89EC239156F3971DF520092E67223709D6B30482C1BE6E421363B3E2E5E8D92C1C187D98574E602FE43E81AA46C993BE2F1270783B15C7CCD5078A398030AE10002A565AA26FA49AF27DB486D91E1B37C8734D0E14C3F1D00A75B46EA5029BAAB713B34A50722734B9790D6586F2CFF9135BEF934C032890147CCDB71AE0E27F5067620B76B1AAD188909DBEA73BDE5FEAAF2777C6735B4F1303584269720A61FE6A75E492392C2976A57E3D5F1BD01175B6C09AC1F9A6A856C78ED17974CFD
ss = 878871AEECAEAE84525E0D7E98CF15DD

count = 94
seed = BB4C0082CA4044B1FF60B036C9B0E0495D58667156786C530BC69D949A13BFAFF53798E456423D7A0E162A60039367D7
pk = EEF752F86CCEA1E6C9C0848E1369C7FA877089AC893E5813A3CEE8CBD0DC0DA37A7C83E7C4A820E5FE846B3B8FC0AA2E1C8FC43BEF8801EC824239706167BC4637378F44721D54FDE0587BE315952982BF9F531C32530A79C8B5CDFD9238AE0B3C84191312C4A0FE21229752AE006CE35A4D62082A86C1765B95D55EF628E755DEBD1FF5A81D5F5353F2ECBCE86969E75540BF372557D4BC90230FC8396A5F4B22E512AC01C6B1A4CC4BDD339903921B1BE7895979C934697375339E04F1CB75A6561FB60601B5690701FD34752A46A947D242462A9C0F3AB9866101CD9520A373D912E32E4C8B96792D8D153221316BD1150ADFE8293B0CAEB06BA4CA65BCF3AD1AE253984DAC8382BDCD080C4E67264F0F02F80BC0F35B56632792A04C0E06C8C61A63C1E494A45EE62C46A8515DBC724887CA35E5B90D7F5BCBC5E708D72C5A0E58FFE0ECE7F31900
sk = 6FB2EC719F2A0DEA152BF3F64B9D148F4F78ACBC55E7D2DE144993127EBF1F1772776A06EF9492DC17EF3A00EEF752F86CCEA1E6C9C0848E1369C7FA877089AC893E5813A3CEE8CBD0DC0DA37A7C83E7C4A820E5FE846B3B8FC0AA2E1C8FC43BEF8801EC824239706167BC4637378F44721D54FDE0587BE315952982BF9F531C32530A79C8B5CDFD9238AE0B3C84191312C4A0FE21229752AE006CE35A4D62082A86C1765B95D55EF628E755DEBD1FF5A81D5F5353F2ECBCE86969E75540BF372557D4BC90230FC8396A5F4B22E512AC01C6B1A4CC4BDD339903921B1BE7895979C934697375339E04F1CB75A6561FB60601B5690701FD34752A46A947D242462A9C0F3AB9866101CD9520A373D912E32E4C8B96792D8D153221316BD1150ADFE8293B0CAEB06BA4CA65BCF3AD1AE253984DAC8382BDCD080C4E67264F0F02F80BC0F35B56632792A04C0E06C8C61A63C1E494A45EE62C46A8515DBC724887CA35E5B90D7F5BCBC5E708D72C5A0E58FFE0ECE7F31900
ct = 6DB5EBD78172494CE2632DC81F94CF776DDD3474FF190EC6AA62D0545795FAA588446F814322DCB94D6F67985D003F33C32188E55876015C851687E3B39465BE6E02509626AB4F5E87EE6A6E0BC3EBB20A98FD1C467A7BFFD343650EE27DF889B541E3A324431017A0E27D74A001FF79284A3A8760768AB96ED6F5725EE6D9B05C34C5D85BF8071E78A9B5BBFCEC1425560F9220A4C5D9221D63B6BE969B2310F2AB023500D969B696ED1BAB48782E3F2FA1746AE18D5F5DB3FD64FC551203900246A1E9F513F49C15DFFCFD41C1363085090AA9403A7EF820F1F401BD745E61C07829BEE835592CE1FE04C53FEF4206F8CB176D0D268F47E7B73F9798438F943DD7ECA2BF69FFC88AD764E77AA3EF29C32B00153A06AB5113183985585C9F8354D6E46A2874C50266202EDE0D13BD2A730E37D6814C5BBEA973A530083AAE5B0E4184DA86E7984396016A8FA6DFB656BAFC94D71078977EF9A0
ss = 6D17E0011D13654679310C7137BEFF80

count = 95
seed = 121D90E70AF6204445D0DEB28AC0C108262719E9FD3476ACA74BBFDE89FAF04D8D5F89A624E8A75DB80431F0D10AD28F
pk = DEA4B4F99F6DA453BEB0685510197F37003DF8F54BD47D94BC6171CA1C14C7BB4E0138FE8FEBBD6C404B7C8B7BA44E66C7719F1FD99301B6EEC117E382EEBE62BC4E54DBB9EFC66FD08F0A7F3AF75E36D8510E718CFE913694946508245D73B1728444980219ED694782E4561302D21D0C5A6E2A3B19D5E2E1327283F7D6910C105D0537E86006B2934D9BB4B61EE6EA2673F213748BB59DC918DAFF9A44B13D4B16C08800B90B6FC87CE105DFCDF415BA6728D86E08417AE3FE1C2F23075F5261EFE0A81CA5CE295EF0A85E46E42E65FD0F7E48A90208E866911702B0B26A1390B562CEB48AA4CC72A34A6BE2B5A852A8502D0304D16A7EC496F572587BC2CBE9FD62EBB9DFD8D6B882D6B8B85EB9FA215E01AE1C5D34847DE14050F4BA90FC7E7F5539076C8B264F98EC31CB3C248DF74F39CDAE95B3F6E208D57BE9D193CD26D7D5D6DC283C5D6501
sk = 527FB88C8BD9A4D6031DAD15E63878AB3CFC649838B9AD33888C4E00E4172248814F91B15CC2CC8E0BE30B00DEA4B4F99F6DA453BEB0685510197F37003DF8F54BD47D94BC6171CA1C14C7BB4E0138FE8FEBBD6C404B7C8B7BA44E66C7719F1FD99301B6EEC117E382EEBE62BC4E54DBB9EFC66FD08F0A7F3AF75E36D8510E718CFE913694946508245D73B1728444980219ED694782E4561302D21D0C5A6E2A3B19D5E2E1327283F7D6910C105D0537E86006B2934D9BB4B61EE6EA2673F213748BB59DC918DAFF9A44B13D4B16C08800B90B6FC87CE105DFCDF415BA6728D86E08417AE3FE1C2F23075F5261EFE0A81CA5CE295EF0A85E46E42E65FD0F7E48A90208E866911702B0B26A1390B562CEB48AA4CC72A34A6BE2B5A852A8502D0304D16A7EC496F572587BC2CBE9FD62EBB9DFD8D6B882D6B8B85EB9FA215E01AE1C5D34847DE14050F4BA90FC7E7F5539076C8B264F98EC31CB3C248DF74F39CDAE95B3F6E208D57BE9D193CD26D7D5D6DC283C5D6501
ct = CF2BC01EDBCEDFE897C3434A5D7F84BD2B7CB59B6769CBB339C92B30948ACF86D369FD657EBB63FD88B2F7593F119AD3A443A1E7632800316571ED3571D3E41D15F370EF945ECC7D8536091A5A8A97E2CB40ACE7D42E6F6BEA3E783F7285879D9AC1AB9100169C4C3A319297230066CD25B855743E14A055B396B07442EDC6A0A1B82A454081D2454AE2D962F8DEFFB45DA51F60A1DB5DC56F0DAE294A4278E476A8D2F200CEDA74A7816855B243B02D1E7946E5B79B132C6CA01430B9BCC67935640A3A0042249CF5ADCA0E1847AA77C0CAEB650FD9FAC193C14F004FC05C5178DAFD2E7BFA3895690A9F369B013CB23DDB483C4F1C482334CFF05A85EA7EA4A1A9186AE4DCE68E5A6CE63D859629F77E37019A7C8FCA32FD69AD4697F19C5165B0458E2F60839D59CD83A080EF87C7AE8D62744C134DC87D35D7253997FEA62FD566CFB733DD532501AD45356C7F9E726E941432CC0D28EAFB
ss = 8C41BCA14516014306BE132DC6EFDDDA

count = 96
seed = B3AC6503206ACCC2A92CBC210D020A2654726911D11CE676AA04FEAA08AF1D20C654E4105883AE470EC3AB299075D420
pk = FCA24F4391DD603BC837E1943024C8AC4694356C42C324BAABC61EC0A32ABA45130FAC2CC13991F65F0D78B3106F42007799D14618DF015886196C948804F388A365A5E0240489AD6D93778C9868C3CA68125459C1FB8D170D679722340BE2906D8BA011AD7DC8E452A00CA2F800FBC219F2FFE71A45B05D30291C8608411D0AF98FBA4F441D5A319E9A8208EA689671D962FA0DAFC03F889D807346E393D14ED787ED5C0034FBB2D1F7BC30B5D108D87AC2B3132693EDB656894CD08B51252EAD45F07ADCD4E0365B5AA9600D2DB0C77C1715E375839EE1DCF9BA0052A0166229B30C97661250A4D65117E047A0E6A3626BDECD94ED27FBC3FE661ED669EC5B980FD42A9CD23A95912E2D7AE8C5B60B563101B0B66CCE2AC11575C0F8A20612D106B01A582200EB9FBA2D4C8B6929A519477ED91DB66279BEA619B34F9018B01093CCD7CD48A5261700
sk = AC6FCFAEEEF795B6EF9E062F02BF4297A326609323DD9C830DC4537008A8393CE51A77519268602BEBC88100FCA24F4391DD603BC837E1943024C8AC4694356C42C324BAABC61EC0A32ABA45130FAC2CC13991F65F0D78B3106F42007799D14618DF015886196C948804F388A365A5E0240489AD6D93778C9868C3CA68125459C1FB8D170D679722340BE2906D8BA011AD7DC8E452A00CA2F800FBC219F2FFE71A45B05D30291C8608411D0AF98FBA4F441D5A319E9A8208EA689671D962FA0DAFC03F889D807346E393D14ED787ED5C0034FBB2D1F7BC30B5D108D87AC2B3132693EDB656894CD08B51252EAD45F07ADCD4E0365B5AA9600D2DB0C77C1715E375839EE1DCF9BA0052A0166229B30C97661250A4D65117E047A0E6A3626BDECD94ED27FBC3FE661ED669EC5B980FD42A9CD23A95912E2D7AE8C5B60B563101B0B66CCE2AC11575C0F8A20612D106B01A582200EB9FBA2D4C8B6929A519477ED91DB66279BEA619B34F9018B01093CCD7CD48A5261700
ct = 37C15E41D44325B5DD3B601386B51EA5FDDFBF664959D3F64C91DF9575BD6FF00F578C1476970EDAA6DDD03C60E41E2F93D99E61FF2900FD7DE5371D19444973F4A41700B83B117664F0F3D6574EE5C3D99FB51102186AA0C77905EC6B8A8A9D82874BDF1CD209E0ED65170A6F01CEF4D39772FBA2303A8782412615565C1F5EAB75B651F79680BAD0BC91FCF3739F78567718ADD27CA077F21306F3B1BA95F223D1C44C000BC4A61EDBD2E1957F988FEBB118546D65A141B584ECAC9440D87B176EDA65011ACDC5D88B92D26488C1E0029AE84051ABE12590DE25016A0F4ACA9E68528B22A2C53B87333D669AF8DA2C80F8DC14D62AC47A20086F454F965D65C19392C811F7A15C09142624168C1337C44300562D058B1A1F42C05A3393FDE7E843DF97EA6260A69B706AF438C1B03F6506DCEB2ED0842C91172E7B3025C53213929D4831F1095A3400D6A130A811F1B33CCE37D4077D77159A
ss = A6DB9C606E364AECDF4AC552B41757DE

count = 97
seed = 59EFF60B1EF6185DB34EE1E3B1DD2F159106CECEAA79BEB74923B4F5623D5BC52DBF5D2594A1F7C6C64D12CF144E9ED4
pk = 39261E697967B0BB7EE0AD5621B7C62179401C8FCCB5BDA55776AF330E450DAE2E5B7241E9CEC5A2C09514CB96CA35A7BCACEB781E6500D62CF7ACEE028461D8A542F5FA2B7FA25147D62AD481F97C4E2AAE52C6B8AF0D5CEFB771E4E42FD707FEC2B9BE61E403D211DA70AC6801BD0472EDAFAF17A0DD1D772D3B39FCE955FD37648EDE750AE8B707AF6747A1EB53A91EC66C25F30DDB3171C8D83A8114DE7F722460BD017811EF82DF92339BAF90291CB3B37879D4795FAC777793F2DE1FA2724DF4EBE6CB6C0EA6BD6D9548D3AF8701E21292B6791D2A9B0E2901A45B0C8CACE6E2F70172B04128CAE55DCE6B0A2EE31013D6765E7C027A6985DEC8F02ACD09D4BCA7F79516D4F3F4965EB572717CB3BB01FA8871B8D508B9DD59342A43AEAEBEDF788AB4A64585C0C0CB33E1DFB3063566F3B549F4E801AEF11420094EF1143F2D9C84DFBE574301
sk = BA2FB9318D4DBE7488057C33E95E6F056939B6856262B11B084EF55E11ABB72D2062CEAA72A155F0B158F10039261E697967B0BB7EE0AD5621B7C62179401C8FCCB5BDA55776AF330E450DAE2E5B7241E9CEC5A2C09514CB96CA35A7BCACEB781E6500D62CF7ACEE028461D8A542F5FA2B7FA25147D62AD481F97C4E2AAE52C6B8AF0D5CEFB771E4E42FD707FEC2B9BE61E403D211DA70AC6801BD0472EDAFAF17A0DD1D772D3B39FCE955FD37648EDE750AE8B707AF6747A1EB53A91EC66C25F30DDB3171C8D83A8114DE7F722460BD017811EF82DF92339BAF90291CB3B37879D4795FAC777793F2DE1FA2724DF4EBE6CB6C0EA6BD6D9548D3AF8701E21292B6791D2A9B0E2901A45B0C8CACE6E2F70172B04128CAE55DCE6B0A2EE31013D6765E7C027A6985DEC8F02ACD09D4BCA7F79516D4F3F4965EB572717CB3BB01FA8871B8D508B9DD59342A43AEAEBEDF788AB4A64585C0C0CB33E1DFB3063566F3B549F4E801AEF11420094EF1143F2D9C84DFBE574301
ct = 0DC86F3AFB7047767E12D21BCE9308FBED0CF6E673632F078313E67B07B58DBAA60011BD321566F2C8990996B662C5D12F1CCF5304B400E1FA7E496BC63DCAD33C3A660173DA466FB2879979453C89D81A672A4708954C1662337050C4A62382CDC4A02CA52CE361C66ED9A8FD0075E908B062AC2F12905819905C08CCD223B0651663A43C980CDB6568010A85D25FC9F4921199670AE34C89A2A926A65D4376350935BF0162FB035CB6A64DE199B88BC2E49D1B425CF0F27AF6968E6DD5BD51E4D6A494EEC29A066736462738721733AF9999FCE2E64D4078783A015F45F74AF20550081A01D81669D3EC84335E80BB367DF9298E084E16EEA5E444BB0554403D900D2DC320F9DF999E57E36122BC2E14950111D146D2C3BB78481DBA632EB346468862E44F3D6C433B8097BFF0D295258243502309B8A5DC0E75F487E9789675966B8DFEA8D513D300EA74CC7C9787D4A7AAD9401FC1D8D9C6
ss = F68927D6306B93CC1F822E2CBB5C43B3

count = 98
seed = DDDCA9DC31BEA737D3F474E7560B37FACB2F53C803E768FFAADE7669FF94B1D4FBD17068CFFD5DFDD24AADADA4EF6B12
pk = 5F5E6BEF94BC0012EA7D7558EF4EFB72C137EFE6B14562E0C5F3BE819D7D5809C332F5E5007D3B7992B92719CE077CBD4DCA38FBCC4C0190AB60D8016AE2B4DDDF9ABCB58A3763B3A45947EABDB9A04271F94A0D17B364B854157F3D155D85F7F7C8A171BE9B2373AC90F3C34C001E961ED2CC130ED884486760EAE9156FE69FC0959C9FDA964D212DD304EEBB18AAE58B5D253997794B675AE8BBFD98777E7634696E0E01E005113DEABDB23404FE8D7CBD180C6B0FC0DFB6A995FF3FD2F962DA1FCEFB1080B373E0702FA46D602B7C0F838D6FEA0F6FE948E44201AAA0854135B694547C688C6A1A80809334E321CF47B8FBA421877EB562588E4717B5D1835F6B81A539F8173A300BFF53264A092D110E00B4C4058028EC647DA3C8BAF90520ACD123A20D027E2952A1A45AA892948C84E3092985F8A49293DB7FB98869704A6E8E6827B7C6F20301
sk = AA6DD1E5799CDF7AF9C4FC632B3EB9D5068EB2D3B95AB779EE1275C14C5AF22568E19CE77BC30BF50CD537005F5E6BEF94BC0012EA7D7558EF4EFB72C137EFE6B14562E0C5F3BE819D7D5809C332F5E5007D3B7992B92719CE077CBD4DCA38FBCC4C0190AB60D8016AE2B4DDDF9ABCB58A3763B3A45947EABDB9A04271F94A0D17B364B854157F3D155D85F7F7C8A171BE9B2373AC90F3C34C001E961ED2CC130ED884486760EAE9156FE69FC0959C9FDA964D212DD304EEBB18AAE58B5D253997794B675AE8BBFD98777E7634696E0E01E005113DEABDB23404FE8D7CBD180C6B0FC0DFB6A995FF3FD2F962DA1FCEFB1080B373E0702FA46D602B7C0F838D6FEA0F6FE948E44201AAA0854135B694547C688C6A1A80809334E321CF47B8FBA421877EB562588E4717B5D1835F6B81A539F8173A300BFF53264A092D110E00B4C4058028EC647DA3C8BAF90520ACD123A20D027E2952A1A45AA892948C84E3092985F8A49293DB7FB98869704A6E8E6827B7C6F20301
ct = CA1221AE3B6D2227DBEB2D3366A6FF04D4CEAFD8A87A646A0E69C17DE92A65FE381542CCC3DF59EE06EDD5589252CE0154D00CB22BDE00426BA25F63E4D80872B0369562226670F392ABC3EE8254B777AFA9818DA03201D927C6A44A798C4E8101DF0A4532439592FF6219230500C7BA12B97300F7E8251A15508E61299AC293EE92F07C720E5647590A445C11B746402E7722B801ED9D237C5E11F40EAC9F518BB17D2C014A45AAC78605365D21191A0176DA1EA59002F6552A84B34E9CD87099A4C92682510E0F306DB57F65A8B22BB4835EA77F71345041451402F7C5B8C5254F64ECB9E70694D6942986AB2CE261E8BCE34DBAC5BC35AEDAAF97F4638468E81A58A86762F3C7DC33BFE134F7EBBA728301704D894ED7B1E1EE9B56FDC3BC28C991337265D84811A47351F6AB7B7DC13F5903CE4C8533E67EB4562BAD582B6F37A1E43FE31420F901E066D6103DB5DDEE5402CBBCA607DBDC
ss = ABB141C9189DD1D2F5BCD86C02037C36

count = 99
seed = 2A6F7386B815366F572AEB6C79E272CC21B7095FE09575F18072C9D677DA23BC9C8A4BC393B7524604D299BEDD260C8B
pk = 867436C365BC16B95C51E7F0141842F0BCF468592D95294141E6051F329F36DAB2F22FC2C76ED5B66CDCA197D111D7BD9E78EBF1D52E02770B91B6BE2D4BA7D895906D72F7DDB7667C41691EDE3B153BADE39B7873F4772264249EDDEE0FB5A78C7AC439CE9668E231C568C44B004292F96CD47AA8EFE07746AD6E40075D976BFB75BFC481D94C210FDDE78D3371156DBE081064F6274DDFF1F9BE05BDA76886345AAC5F005C307D9A2F2C3DCB6E16EF29530BED4D583DE8507AADC01F7C364DBCF11A1EE94588BC6EC6AE9C23835080ACDB0DCCB33B73A400AB9101111649F226657F153C58C2067A963173A955124AA33334E85F1380830E859EF99EEE2994F4CF9AB19EE0F8D426FA774D4F36A17668870051C1445B987A0034B16F76329FE7E3927E39FEF157C082212046512AADEA51EC22BA069B4684A939937613FC581E9B7596EBA0088B8000
sk = 195D6C86A3DF4C21E3007D7F2768B43CAE7EF2D029CC7ABAD98E68D0374DEFC5F2EDF8EDAC8ACA265EF84900867436C365BC16B95C51E7F0141842F0BCF468592D95294141E6051F329F36DAB2F22FC2C76ED5B66CDCA197D111D7BD9E78EBF1D52E02770B91B6BE2D4BA7D895906D72F7DDB7667C41691EDE3B153BADE39B7873F4772264249EDDEE0FB5A78C7AC439CE9668E231C568C44B004292F96CD47AA8EFE07746AD6E40075D976BFB75BFC481D94C210FDDE78D3371156DBE081064F6274DDFF1F9BE05BDA76886345AAC5F005C307D9A2F2C3DCB6E16EF29530BED4D583DE8507AADC01F7C364DBCF11A1EE94588BC6EC6AE9C23835080ACDB0DCCB33B73A400AB9101111649F226657F153C58C2067A963173A955124AA33334E85F1380830E859EF99EEE2994F4CF9AB19EE0F8D426FA774D4F36A17668870051C1445B987A0034B16F76329FE7E3927E39FEF157C082212046512AADEA51EC22BA069B4684A939937613FC581E9B7596EBA0088B8000
ct = D170E6E4C5D4540AC2628029CFF149B7F0CDBCA679EAAD94357DDB9AB0C2CD0FF42C0FA0B7C74C4C3FC39D6CD3CC7919CB1053CC58E9008C9793A8098304B2EBD814ECEDC8740F199BF1B4A05B64F4E70A76B4640330ACED9967416226A7946A1C18C433F0C260B1B4FE5E82F800082D86B188A477CCB81B0EB7D18AD006378B28684A6D479FF53B66F3E20C597A5AB93E978EAD97F3E4A62BD31657B1DDEA441851B71A022066C2C3FE1A31E36BCC22F60C12E5B6D4012879A88B39CCB914480CC30F1489140CA9A9CA54DC2CB635E450A0E2308B1EE20DE8502602C744968E57841BCC8F62B0AC14EEB35ABC77BE42EBF33AE0EC3E53FB62EF6058F6CF27DD91D26CC9EA1B8996F35BD800E15928C7318D0014E2A29706E62A8AF0FBB8A2512823A09E4AF327234ECF4086DBA31A8B26E130633256C19D0BAA5244D3DEB6E397E6B2058DB40BBDB700C58C6E1664620548D2BA2F8702E95878
ss = DA40C7AB4E2ED76E4A3BDB509B806E5C


+ 192
- 0
p434/fp.go Wyświetl plik

@@ -0,0 +1,192 @@
package sike

import (
"math/bits"
)

// Fp implementation

// Compute z = x + y (mod 2*p).
func fpAddRdc(z, x, y *Fp) {
var carry uint64

// z=x+y % p503
for i := 0; i < FP_WORDS; i++ {
z[i], carry = bits.Add64(x[i], y[i], carry)
}

// z = z - pX2
carry = 0
for i := 0; i < FP_WORDS; i++ {
z[i], carry = bits.Sub64(z[i], pX2[i], carry)
}

// if z<0 add pX2 back
mask := uint64(0 - carry)
carry = 0
for i := 0; i < FP_WORDS; i++ {
z[i], carry = bits.Add64(z[i], pX2[i]&mask, carry)
}
}

// Compute z = x - y (mod 2*p).
func fpSubRdc(z, x, y *Fp) {
var borrow uint64

// z = z - pX2
for i := 0; i < FP_WORDS; i++ {
z[i], borrow = bits.Sub64(x[i], y[i], borrow)
}

// if z<0 add pX2 back
mask := uint64(0 - borrow)
borrow = 0
for i := 0; i < FP_WORDS; i++ {
z[i], borrow = bits.Add64(z[i], pX2[i]&mask, borrow)
}
}

// Reduce a field element in [0, 2*p) to one in [0,p).
func fpRdcP(x *Fp) {
var borrow, mask uint64
for i := 0; i < FP_WORDS; i++ {
x[i], borrow = bits.Sub64(x[i], p[i], borrow)
}

// Sets all bits if borrow = 1
mask = 0 - borrow
borrow = 0
for i := 0; i < FP_WORDS; i++ {
x[i], borrow = bits.Add64(x[i], p[i]&mask, borrow)
}
}

// Implementation doesn't actually depend on a prime field.
func fpSwapCond(x, y *Fp, mask uint8) {
if mask != 0 {
var tmp Fp
copy(tmp[:], y[:])
copy(y[:], x[:])
copy(x[:], tmp[:])
}
}

// Compute z = x * y.
func fpMul(z *FpX2, x, y *Fp) {
var carry, t, u, v uint64
var hi, lo uint64

for i := uint64(0); i < FP_WORDS; i++ {
for j := uint64(0); j <= i; j++ {
hi, lo = bits.Mul64(x[j], y[i-j])
v, carry = bits.Add64(lo, v, 0)
u, carry = bits.Add64(hi, u, carry)
t += carry
}
z[i] = v
v = u
u = t
t = 0
}

for i := FP_WORDS; i < (2*FP_WORDS)-1; i++ {
for j := i - FP_WORDS + 1; j < FP_WORDS; j++ {
hi, lo = bits.Mul64(x[j], y[i-j])
v, carry = bits.Add64(lo, v, 0)
u, carry = bits.Add64(hi, u, carry)
t += carry
}
z[i] = v
v = u
u = t
t = 0
}
z[2*FP_WORDS-1] = v
}

// Perform Montgomery reduction: set z = x R^{-1} (mod 2*p)
// with R=2^512. Destroys the input value.
func fpMontRdc(z *Fp, x *FpX2) {
var carry, t, u, v uint64
var hi, lo uint64
var count int

count = 3 // number of 0 digits in the least significat part of p503 + 1

for i := 0; i < FP_WORDS; i++ {
for j := 0; j < i; j++ {
if j < (i - count + 1) {
hi, lo = bits.Mul64(z[j], p1[i-j])
v, carry = bits.Add64(lo, v, 0)
u, carry = bits.Add64(hi, u, carry)
t += carry
}
}
v, carry = bits.Add64(v, x[i], 0)
u, carry = bits.Add64(u, 0, carry)
t += carry

z[i] = v
v = u
u = t
t = 0
}

for i := FP_WORDS; i < 2*FP_WORDS-1; i++ {
if count > 0 {
count--
}
for j := i - FP_WORDS + 1; j < FP_WORDS; j++ {
if j < (FP_WORDS - count) {
hi, lo = bits.Mul64(z[j], p1[i-j])
v, carry = bits.Add64(lo, v, 0)
u, carry = bits.Add64(hi, u, carry)
t += carry
}
}
v, carry = bits.Add64(v, x[i], 0)
u, carry = bits.Add64(u, 0, carry)

t += carry
z[i-FP_WORDS] = v
v = u
u = t
t = 0
}
v, carry = bits.Add64(v, x[2*FP_WORDS-1], 0)
z[FP_WORDS-1] = v
}

// Compute z = x + y, without reducing mod p.
func fp2Add(z, x, y *FpX2) {
var carry uint64
for i := 0; i < 2*FP_WORDS; i++ {
z[i], carry = bits.Add64(x[i], y[i], carry)
}
}

// Compute z = x - y, without reducing mod p.
func fp2Sub(z, x, y *FpX2) {
var borrow, mask uint64
for i := 0; i < 2*FP_WORDS; i++ {
z[i], borrow = bits.Sub64(x[i], y[i], borrow)
}

// Sets all bits if borrow = 1
mask = 0 - borrow
borrow = 0
for i := FP_WORDS; i < 2*FP_WORDS; i++ {
z[i], borrow = bits.Add64(z[i], p[i-FP_WORDS]&mask, borrow)
}
}

// Montgomery multiplication. Input values must be already
// in Montgomery domain.
func fpMulRdc(dest, lhs, rhs *Fp) {
a := lhs // = a*R
b := rhs // = b*R

var ab FpX2
fpMul(&ab, a, b) // = a*b*R*R
fpMontRdc(dest, &ab) // = a*b*R mod p
}

+ 710
- 0
p434/sike.go Wyświetl plik

@@ -0,0 +1,710 @@
package sike

import (
"crypto/subtle"
"errors"
"github.com/henrydcase/nobs/hash/shake"
"io"
)

const (
// n can is max 256-bit (see 1.4 of [SIKE])
MaxMsgLen = 32
MaxSharedSecretSize = 188
MaxSecretByteLenA = 47
)

func cpick(pick int, out, in1, in2 []byte) {
var which = byte((int8(pick << 7)) >> 7)
for i, _ := range out {
out[i] = (in1[i] & which) | (in2[i] & ^which)
}
}

type KEM struct {
allocated bool
rng io.Reader
msg []byte
secretBytes []byte
}

// Zeroize Fp2
func zeroize(fp *Fp2) {
// Zeroizing in 2 seperated loops tells compiler to
// use fast runtime.memclr()
for i := range fp.A {
fp.A[i] = 0
}
for i := range fp.B {
fp.B[i] = 0
}
}

// Convert the input to wire format.
//
// The output byte slice must be at least 2*bytelen(p) bytes long.
func convFp2ToBytes(output []byte, fp2 *Fp2) {
if len(output) < Params.SharedSecretSize {
panic("output byte slice too short")
}
var a Fp2
fromMontDomain(fp2, &a)

// convert to bytes in little endian form
for i := 0; i < Params.Bytelen; i++ {
// set i = j*8 + k
tmp := i / 8
k := uint64(i % 8)
output[i] = byte(a.A[tmp] >> (8 * k))
output[i+Params.Bytelen] = byte(a.B[tmp] >> (8 * k))
}
}

// Read 2*bytelen(p) bytes into the given ExtensionFieldElement.
//
// It is an error to call this function if the input byte slice is less than 2*bytelen(p) bytes long.
func convBytesToFp2(fp2 *Fp2, input []byte) {
if len(input) < Params.SharedSecretSize {
panic("input byte slice too short")
}

for i := 0; i < Params.Bytelen; i++ {
j := i / 8
k := uint64(i % 8)
fp2.A[j] |= uint64(input[i]) << (8 * k)
fp2.B[j] |= uint64(input[i+Params.Bytelen]) << (8 * k)
}
toMontDomain(fp2)
}

// -----------------------------------------------------------------------------
// Functions for traversing isogeny trees acoording to strategy. Key type 'A' is
//

// Traverses isogeny tree in order to compute xR, xP, xQ and xQmP needed
// for public key generation.
func traverseTreePublicKeyA(curve *ProjectiveCurveParameters, xR, phiP, phiQ, phiR *ProjectivePoint, pub *PublicKey) {
var points = make([]ProjectivePoint, 0, 8)
var indices = make([]int, 0, 8)
var i, sIdx int
var phi isogeny4

cparam := ToEquiv4(curve)
strat := pub.params.A.IsogenyStrategy
stratSz := len(strat)

for j := 1; j <= stratSz; j++ {
for i <= stratSz-j {
points = append(points, *xR)
indices = append(indices, i)

k := strat[sIdx]
sIdx++
Pow2k(xR, &cparam, 2*k)
i += int(k)
}

cparam = phi.GenerateCurve(xR)
for k := 0; k < len(points); k++ {
points[k] = phi.EvaluatePoint(&points[k])
}

*phiP = phi.EvaluatePoint(phiP)
*phiQ = phi.EvaluatePoint(phiQ)
*phiR = phi.EvaluatePoint(phiR)

// pop xR from points
*xR, points = points[len(points)-1], points[:len(points)-1]
i, indices = int(indices[len(indices)-1]), indices[:len(indices)-1]
}
}

// Traverses isogeny tree in order to compute xR needed
// for public key generation.
func traverseTreeSharedKeyA(curve *ProjectiveCurveParameters, xR *ProjectivePoint, pub *PublicKey) {
var points = make([]ProjectivePoint, 0, 8)
var indices = make([]int, 0, 8)
var i, sIdx int
var phi isogeny4

cparam := ToEquiv4(curve)
strat := pub.params.A.IsogenyStrategy
stratSz := len(strat)

for j := 1; j <= stratSz; j++ {
for i <= stratSz-j {
points = append(points, *xR)
indices = append(indices, i)

k := strat[sIdx]
sIdx++
Pow2k(xR, &cparam, 2*k)
i += int(k)
}

cparam = phi.GenerateCurve(xR)
for k := 0; k < len(points); k++ {
points[k] = phi.EvaluatePoint(&points[k])
}

// pop xR from points
*xR, points = points[len(points)-1], points[:len(points)-1]
i, indices = int(indices[len(indices)-1]), indices[:len(indices)-1]
}
}

// Traverses isogeny tree in order to compute xR, xP, xQ and xQmP needed
// for public key generation.
func traverseTreePublicKeyB(curve *ProjectiveCurveParameters, xR, phiP, phiQ, phiR *ProjectivePoint, pub *PublicKey) {
var points = make([]ProjectivePoint, 0, 8)
var indices = make([]int, 0, 8)
var i, sIdx int
var phi isogeny3

cparam := ToEquiv3(curve)
strat := pub.params.B.IsogenyStrategy
stratSz := len(strat)

for j := 1; j <= stratSz; j++ {
for i <= stratSz-j {
points = append(points, *xR)
indices = append(indices, i)

k := strat[sIdx]
sIdx++
Pow3k(xR, &cparam, k)
i += int(k)
}

cparam = phi.GenerateCurve(xR)
for k := 0; k < len(points); k++ {
points[k] = phi.EvaluatePoint(&points[k])
}

*phiP = phi.EvaluatePoint(phiP)
*phiQ = phi.EvaluatePoint(phiQ)
*phiR = phi.EvaluatePoint(phiR)

// pop xR from points
*xR, points = points[len(points)-1], points[:len(points)-1]
i, indices = int(indices[len(indices)-1]), indices[:len(indices)-1]
}
}

// Traverses isogeny tree in order to compute xR, xP, xQ and xQmP needed
// for public key generation.
func traverseTreeSharedKeyB(curve *ProjectiveCurveParameters, xR *ProjectivePoint, pub *PublicKey) {
var points = make([]ProjectivePoint, 0, 8)
var indices = make([]int, 0, 8)
var i, sIdx int
var phi isogeny3

cparam := ToEquiv3(curve)
strat := pub.params.B.IsogenyStrategy
stratSz := len(strat)

for j := 1; j <= stratSz; j++ {
for i <= stratSz-j {
points = append(points, *xR)
indices = append(indices, i)

k := strat[sIdx]
sIdx++
Pow3k(xR, &cparam, k)
i += int(k)
}

cparam = phi.GenerateCurve(xR)
for k := 0; k < len(points); k++ {
points[k] = phi.EvaluatePoint(&points[k])
}

// pop xR from points
*xR, points = points[len(points)-1], points[:len(points)-1]
i, indices = int(indices[len(indices)-1]), indices[:len(indices)-1]
}
}

// Generate a public key in the 2-torsion group
func publicKeyGenA(pub *PublicKey, prv *PrivateKey) {
var xPA, xQA, xRA ProjectivePoint
var xPB, xQB, xRB, xK ProjectivePoint
var invZP, invZQ, invZR Fp2
var phi isogeny4

// Load points for A
xPA = ProjectivePoint{X: prv.params.A.Affine_P, Z: prv.params.OneFp2}
xQA = ProjectivePoint{X: prv.params.A.Affine_Q, Z: prv.params.OneFp2}
xRA = ProjectivePoint{X: prv.params.A.Affine_R, Z: prv.params.OneFp2}

// Load points for B
xRB = ProjectivePoint{X: prv.params.B.Affine_R, Z: prv.params.OneFp2}
xQB = ProjectivePoint{X: prv.params.B.Affine_Q, Z: prv.params.OneFp2}
xPB = ProjectivePoint{X: prv.params.B.Affine_P, Z: prv.params.OneFp2}

// Find isogeny kernel
xK = ScalarMul3Pt(&pub.params.InitCurve, &xPA, &xQA, &xRA, prv.params.A.SecretBitLen, prv.Scalar)
traverseTreePublicKeyA(&pub.params.InitCurve, &xK, &xPB, &xQB, &xRB, pub)

// Secret isogeny
phi.GenerateCurve(&xK)
xPA = phi.EvaluatePoint(&xPB)
xQA = phi.EvaluatePoint(&xQB)
xRA = phi.EvaluatePoint(&xRB)
Fp2Batch3Inv(&xPA.Z, &xQA.Z, &xRA.Z, &invZP, &invZQ, &invZR)

mul(&pub.affine_xP, &xPA.X, &invZP)
mul(&pub.affine_xQ, &xQA.X, &invZQ)
mul(&pub.affine_xQmP, &xRA.X, &invZR)
}

// Generate a public key in the 3-torsion group
func publicKeyGenB(pub *PublicKey, prv *PrivateKey) {
var xPB, xQB, xRB, xK ProjectivePoint
var xPA, xQA, xRA ProjectivePoint
var invZP, invZQ, invZR Fp2
var phi isogeny3

// Load points for A
xPA = ProjectivePoint{X: prv.params.A.Affine_P, Z: prv.params.OneFp2}
xQA = ProjectivePoint{X: prv.params.A.Affine_Q, Z: prv.params.OneFp2}
xRA = ProjectivePoint{X: prv.params.A.Affine_R, Z: prv.params.OneFp2}

// Load points for B
xRB = ProjectivePoint{X: prv.params.B.Affine_R, Z: prv.params.OneFp2}
xQB = ProjectivePoint{X: prv.params.B.Affine_Q, Z: prv.params.OneFp2}
xPB = ProjectivePoint{X: prv.params.B.Affine_P, Z: prv.params.OneFp2}

xK = ScalarMul3Pt(&pub.params.InitCurve, &xPB, &xQB, &xRB, prv.params.B.SecretBitLen, prv.Scalar)
traverseTreePublicKeyB(&pub.params.InitCurve, &xK, &xPA, &xQA, &xRA, pub)

phi.GenerateCurve(&xK)
xPB = phi.EvaluatePoint(&xPA)
xQB = phi.EvaluatePoint(&xQA)
xRB = phi.EvaluatePoint(&xRA)
Fp2Batch3Inv(&xPB.Z, &xQB.Z, &xRB.Z, &invZP, &invZQ, &invZR)

mul(&pub.affine_xP, &xPB.X, &invZP)
mul(&pub.affine_xQ, &xQB.X, &invZQ)
mul(&pub.affine_xQmP, &xRB.X, &invZR)
}

// -----------------------------------------------------------------------------
// Key agreement functions
//

// Establishing shared keys in in 2-torsion group
func deriveSecretA(ss []byte, prv *PrivateKey, pub *PublicKey) {
var xP, xQ, xQmP ProjectivePoint
var xK ProjectivePoint
var phi isogeny4
var jInv Fp2

// Recover curve coefficients
cparam := pub.params.InitCurve
RecoverCoordinateA(&cparam, &pub.affine_xP, &pub.affine_xQ, &pub.affine_xQmP)

// Find kernel of the morphism
xP = ProjectivePoint{X: pub.affine_xP, Z: pub.params.OneFp2}
xQ = ProjectivePoint{X: pub.affine_xQ, Z: pub.params.OneFp2}
xQmP = ProjectivePoint{X: pub.affine_xQmP, Z: pub.params.OneFp2}
xK = ScalarMul3Pt(&cparam, &xP, &xQ, &xQmP, pub.params.A.SecretBitLen, prv.Scalar)

// Traverse isogeny tree
traverseTreeSharedKeyA(&cparam, &xK, pub)

// Calculate j-invariant on isogeneus curve
c := phi.GenerateCurve(&xK)
FromEquiv4(&cparam, &c)
Jinvariant(&cparam, &jInv)
convFp2ToBytes(ss, &jInv)
}

// Establishing shared keys in in 3-torsion group
func deriveSecretB(ss []byte, prv *PrivateKey, pub *PublicKey) {
var xP, xQ, xQmP ProjectivePoint
var xK ProjectivePoint
var phi isogeny3
var jInv Fp2

// Recover curve coefficients
cparam := pub.params.InitCurve
RecoverCoordinateA(&cparam, &pub.affine_xP, &pub.affine_xQ, &pub.affine_xQmP)

// Find kernel of the morphism
xP = ProjectivePoint{X: pub.affine_xP, Z: pub.params.OneFp2}
xQ = ProjectivePoint{X: pub.affine_xQ, Z: pub.params.OneFp2}
xQmP = ProjectivePoint{X: pub.affine_xQmP, Z: pub.params.OneFp2}
xK = ScalarMul3Pt(&cparam, &xP, &xQ, &xQmP, pub.params.B.SecretBitLen, prv.Scalar)

// Traverse isogeny tree
traverseTreeSharedKeyB(&cparam, &xK, pub)

// Calculate j-invariant on isogeneus curve
c := phi.GenerateCurve(&xK)
FromEquiv3(&cparam, &c)
Jinvariant(&cparam, &jInv)
convFp2ToBytes(ss, &jInv)
}

func generateCiphertext(ctext []byte, skA *PrivateKey, pkA, pkB *PublicKey, ptext []byte) error {
var n [MaxMsgLen]byte
var j [MaxSharedSecretSize]byte
var ptextLen = len(ptext)

if pkB.keyVariant != KeyVariant_SIKE {
return errors.New("wrong key type")
}

err := DeriveSecret(j[:], skA, pkB)
if err != nil {
return err
}

f := shake.NewShake256()
f.Write(j[:Params.SharedSecretSize])
f.Read(n[:ptextLen])
for i, _ := range ptext {
n[i] ^= ptext[i]
}

pkA.Export(ctext)
copy(ctext[pkA.Size():], n[:ptextLen])
return nil
}

// NewPrivateKey initializes private key.
// Usage of this function guarantees that the object is correctly initialized.
func NewPrivateKey(v KeyVariant) *PrivateKey {
prv := &PrivateKey{key: key{params: &Params, keyVariant: v}}
if (v & KeyVariant_SIDH_A) == KeyVariant_SIDH_A {
prv.Scalar = make([]byte, prv.params.A.SecretByteLen)
} else {
prv.Scalar = make([]byte, prv.params.B.SecretByteLen)
}
if v == KeyVariant_SIKE {
prv.S = make([]byte, prv.params.MsgLen)
}
return prv
}

// NewPublicKey initializes public key.
// Usage of this function guarantees that the object is correctly initialized.
func NewPublicKey(v KeyVariant) *PublicKey {
return &PublicKey{key: key{params: &Params, keyVariant: v}}
}

// Import clears content of the public key currently stored in the structure
// and imports key stored in the byte string. Returns error in case byte string
// size is wrong. Doesn't perform any validation.
func (pub *PublicKey) Import(input []byte) error {
if len(input) != pub.Size() {
return errors.New("sidh: input to short")
}

ssSz := pub.params.SharedSecretSize
convBytesToFp2(&pub.affine_xP, input[0:ssSz])
convBytesToFp2(&pub.affine_xQ, input[ssSz:2*ssSz])
convBytesToFp2(&pub.affine_xQmP, input[2*ssSz:3*ssSz])
return nil
}

// Exports currently stored key. In case structure hasn't been filled with key data
// returned byte string is filled with zeros.
func (pub *PublicKey) Export(out []byte) {
ssSz := pub.params.SharedSecretSize
convFp2ToBytes(out[0:ssSz], &pub.affine_xP)
convFp2ToBytes(out[ssSz:2*ssSz], &pub.affine_xQ)
convFp2ToBytes(out[2*ssSz:3*ssSz], &pub.affine_xQmP)
}

// Size returns size of the public key in bytes
func (pub *PublicKey) Size() int {
return pub.params.PublicKeySize
}

// Exports currently stored key. In case structure hasn't been filled with key data
// returned byte string is filled with zeros.
func (prv *PrivateKey) Export(out []byte) {
copy(out, prv.S)
copy(out[len(prv.S):], prv.Scalar)
}

// Size returns size of the private key in bytes
func (prv *PrivateKey) Size() int {
tmp := len(prv.Scalar)
if prv.keyVariant == KeyVariant_SIKE {
tmp += int(prv.params.MsgLen)
}
return tmp
}

// Import clears content of the private key currently stored in the structure
// and imports key from octet string. In case of SIKE, the random value 'S'
// must be prepended to the value of actual private key (see SIKE spec for details).
// Function doesn't import public key value to PrivateKey object.
func (prv *PrivateKey) Import(input []byte) error {
if len(input) != prv.Size() {
return errors.New("sidh: input to short")
}
copy(prv.S, input[:len(prv.S)])
copy(prv.Scalar, input[len(prv.S):])
return nil
}

// Generates random private key for SIDH or SIKE. Generated value is
// formed as little-endian integer from key-space <2^(e2-1)..2^e2 - 1>
// for KeyVariant_A or <2^(s-1)..2^s - 1>, where s = floor(log_2(3^e3)),
// for KeyVariant_B.
//
// Returns error in case user provided RNG fails.
func (prv *PrivateKey) Generate(rand io.Reader) error {
var err error
var dp *DomainParams

if (prv.keyVariant & KeyVariant_SIDH_A) == KeyVariant_SIDH_A {
dp = &prv.params.A
} else {
dp = &prv.params.B
}

if prv.keyVariant == KeyVariant_SIKE && err == nil {
_, err = io.ReadFull(rand, prv.S)
}

// Private key generation takes advantage of the fact that keyspace for secret
// key is (0, 2^x - 1), for some possitivite value of 'x' (see SIKE, 1.3.8).
// It means that all bytes in the secret key, but the last one, can take any
// value between <0x00,0xFF>. Similarily for the last byte, but generation
// needs to chop off some bits, to make sure generated value is an element of
// a key-space.
_, err = io.ReadFull(rand, prv.Scalar)
if err != nil {
return err
}
prv.Scalar[len(prv.Scalar)-1] &= (1 << (dp.SecretBitLen % 8)) - 1
// Make sure scalar is SecretBitLen long. SIKE spec says that key
// space starts from 0, but I'm not confortable with having low
// value scalars used for private keys. It is still secrure as per
// table 5.1 in [SIKE].
prv.Scalar[len(prv.Scalar)-1] |= 1 << ((dp.SecretBitLen % 8) - 1)
return err
}

// Generates public key.
//
// Constant time.
func (prv *PrivateKey) GeneratePublicKey(pub *PublicKey) {
if (prv.keyVariant & KeyVariant_SIDH_A) == KeyVariant_SIDH_A {
publicKeyGenA(pub, prv)
} else {
publicKeyGenB(pub, prv)
}
}

// Computes a shared secret which is a j-invariant. Function requires that pub has
// different KeyVariant than prv. Length of returned output is 2*ceil(log_2 P)/8),
// where P is a prime defining finite field.
//
// It's important to notice that each keypair must not be used more than once
// to calculate shared secret.
//
// Function may return error. This happens only in case provided input is invalid.
// Constant time for properly initialized private and public key.
func DeriveSecret(ss []byte, prv *PrivateKey, pub *PublicKey) error {
if (pub == nil) || (prv == nil) {
return errors.New("sidh: invalid arguments")
}

if (pub.keyVariant == prv.keyVariant) || (pub.params.Id != prv.params.Id) {
return errors.New("sidh: public and private are incompatbile")
}

if (prv.keyVariant & KeyVariant_SIDH_A) == KeyVariant_SIDH_A {
deriveSecretA(ss, prv, pub)
} else {
deriveSecretB(ss, prv, pub)
}
return nil
}

// Uses SIKE public key to encrypt plaintext. Requires cryptographically secure PRNG
// Returns ciphertext in case encryption succeeds. Returns error in case PRNG fails
// or wrongly formated input was provided.
func encrypt(ctext []byte, rng io.Reader, pub *PublicKey, ptext []byte) error {
var ptextLen = len(ptext)
// c1 must be security level + 64 bits (see [SIKE] 1.4 and 4.3.3)
if ptextLen != pub.params.KemSize {
return errors.New("Unsupported message length")
}

skA := NewPrivateKey(KeyVariant_SIDH_A)
pkA := NewPublicKey(KeyVariant_SIDH_A)
err := skA.Generate(rng)
if err != nil {
return err
}

skA.GeneratePublicKey(pkA)
return generateCiphertext(ctext, skA, pkA, pub, ptext)
}

// Uses SIKE private key to decrypt ciphertext. Returns plaintext in case
// decryption succeeds or error in case unexptected input was provided.
// Constant time
func decrypt(n []byte, prv *PrivateKey, ctext []byte) (int, error) {
var c1_len int
var j [MaxSharedSecretSize]byte
var pk_len = prv.params.PublicKeySize

if prv.keyVariant != KeyVariant_SIKE {
return 0, errors.New("wrong key type")
}

// ctext is a concatenation of (ciphertext = pubkey_A || c1)
// it must be security level + 64 bits (see [SIKE] 1.4 and 4.3.3)
c1_len = len(ctext) - pk_len
if c1_len != prv.params.KemSize {
return 0, errors.New("wrong size of cipher text")
}

c0 := NewPublicKey(KeyVariant_SIDH_A)
err := c0.Import(ctext[:pk_len])
if err != nil {
return 0, err
}
err = DeriveSecret(j[:], prv, c0)
if err != nil {
return 0, err
}

s := shake.NewShake256()
s.Write(j[:Params.SharedSecretSize])
s.Read(n[:c1_len])
for i, _ := range n[:c1_len] {
n[i] ^= ctext[pk_len+i]
}
return c1_len, nil
}

// KEM API
func (kem *KEM) Allocate(rng io.Reader) {
kem.allocated = true
kem.rng = rng
kem.msg = make([]byte, Params.MsgLen)
kem.secretBytes = make([]byte, Params.A.SecretByteLen)
}

func (kem *KEM) Reset() {
for i, _ := range kem.msg {
kem.msg[i] = 0
}

for i, _ := range kem.secretBytes {
kem.secretBytes[i] = 0
}
}

func (kem *KEM) CiphertextSize() int {
return Params.CiphertextSize
}

func (kem *KEM) SharedSecretSize() int {
return Params.KemSize
}

// Encapsulation receives the public key and generates SIKE ciphertext and shared secret.
// The generated ciphertext is used for authentication.
// The rng must be cryptographically secure PRNG.
// Error is returned in case PRNG fails or wrongly formated input was provided.
func (kem *KEM) Encapsulate(ciphertext, secret []byte, pub *PublicKey) error {
var buf [3 * MaxSharedSecretSize]byte
var skA = PrivateKey{
key: key{
params: &Params,
keyVariant: KeyVariant_SIDH_A},
Scalar: kem.secretBytes}

if !kem.allocated {
panic("KEM unallocated")
}

// Generate ephemeral value
_, err := io.ReadFull(kem.rng, kem.msg[:])
if err != nil {
return err
}

pub.Export(buf[:])
g := shake.NewShake256()
g.Write(kem.msg)
g.Write(buf[:3*Params.SharedSecretSize])
g.Read(skA.Scalar)

// Ensure bitlength is not bigger then to 2^e2-1
skA.Scalar[len(skA.Scalar)-1] &= (1 << (pub.params.A.SecretBitLen % 8)) - 1
pkA := NewPublicKey(KeyVariant_SIDH_A)
skA.GeneratePublicKey(pkA)
err = generateCiphertext(ciphertext, &skA, pkA, pub, kem.msg[:])
if err != nil {
return err
}

// K = H(msg||(c0||c1))
h := shake.NewShake256()
h.Write(kem.msg)
h.Write(ciphertext)
h.Read(secret)
return nil
}

// Decapsulate given the keypair and ciphertext as inputs, Decapsulate outputs a shared
// secret if plaintext verifies correctly, otherwise function outputs random value.
// Decapsulation may fail in case input is wrongly formated.
// Constant time for properly initialized input.
func (kem *KEM) Decapsulate(secret []byte, prv *PrivateKey, pub *PublicKey, ctext []byte) error {
var m [MaxMsgLen]byte
var r [MaxSecretByteLenA]byte
var pkBytes [3 * MaxSharedSecretSize]byte
var skA = PrivateKey{
key: key{
params: &Params,
keyVariant: KeyVariant_SIDH_A},
Scalar: kem.secretBytes}
var pkA = NewPublicKey(KeyVariant_SIDH_A)

c1_len, err := decrypt(m[:], prv, ctext)
if err != nil {
return err
}

// r' = G(m'||pub)
//var key = make([]byte, pub.Size()+2*Params.MsgLen)
pub.Export(pkBytes[:])
g := shake.NewShake256()
g.Write(m[:c1_len])
g.Write(pkBytes[:3*pub.params.SharedSecretSize])
g.Read(r[:pub.params.A.SecretByteLen])
// Ensure bitlength is not bigger than 2^e2-1
r[pub.params.A.SecretByteLen-1] &= (1 << (pub.params.A.SecretBitLen % 8)) - 1

// Never fails
skA.Import(r[:pub.params.A.SecretByteLen])
skA.GeneratePublicKey(pkA)
pkA.Export(pkBytes[:])

// S is chosen at random when generating a key and unknown to other party. It
// may seem weird, but it's correct. It is important that S is unpredictable
// to other party. Without this check, it is possible to recover a secret, by
// providing series of invalid ciphertexts. It is also important that isn case
//
// See more details in "On the security of supersingular isogeny cryptosystems"
// (S. Galbraith, et al., 2016, ePrint #859).
mask := subtle.ConstantTimeCompare(pkBytes[:pub.params.PublicKeySize], ctext[:pub.params.PublicKeySize])
cpick(mask, m[:c1_len], m[:c1_len], prv.S)
h := shake.NewShake256()
h.Write(m[:c1_len])
h.Write(ctext)
h.Read(secret)
return nil
}

+ 753
- 0
p434/sike_test.go Wyświetl plik

@@ -0,0 +1,753 @@
package sike

import (
"bufio"
"bytes"
"crypto/rand"
"encoding/hex"
"io"
"math/big"
"os"
"strings"
"testing"
)

var tdata = struct {
name string
katFile string
PrA_sidh string
PkA_sidh string
PrB_sidh string
PkB_sidh string
PkB_sike string
PrB_sike string
}{
name: "SIKEp434",
katFile: "etc/PQCkemKAT_374.rsp",
PrA_sidh: "3A727E04EA9B7E2A766A6F846489E7E7B915263BCEED308BB10FC900",
PkA_sidh: "9E668D1E6750ED4B91EE052C32839CA9DD2E56D52BC24DECC950AAAD24CEED3F9049C77FE80F0B9B01E7F8DAD7833EEC2286544D6380009C379CDD3E7517CEF5E20EB01F8231D52FC30DC61D2F63FB357F85DC6396E8A95DB9740BD3A972C8DB7901B31F074CD3E45345CA78F900817130E688A29A7CF0073B5C00FF2C65FBE776918EF9BD8E75B29EF7FAB791969B60B0C5B37A8992EDEF95FA7BAC40A95DAFE02E237301FEE9A7A43FD0B73477E8035DD12B73FAFEF18D39904DDE3653A754F36BE1888F6607C6A7951349A414352CF31A29F2C40302DB406C48018C905EB9DC46AFBF42A9187A9BB9E51B587622A2862DC7D5CC598BF38ED6320FB51D8697AD3D7A72ABCC32A393F0133DA8DF5E253D9E00B760B2DF342FCE974DCFE946CFE4727783531882800F9E5DD594D6D5A6275EEFEF9713ED838F4A06BB34D7B8D46E0B385AAEA1C7963601",
PrB_sidh: "E37BFE55B43B32448F375903D8D226EC94ADBFEA1D2B3536EB987001",
PkB_sidh: "C9F73E4497AAA3FDF9EB688135866A8A83934BA10E273B8CC3808CF0C1F5FAB3E9BB295885881B73DEBC875670C0F51C4BB40DF5FEDE01B8AF32D1BF10508B8C17B2734EB93B2B7F5D84A4A0F2F816E9E2C32AC253C0B6025B124D05A87A9E2A8567930F44BAA14219B941B6B400B4AED1D796DA12A5A9F0B8F3F5EE9DD43F64CB24A3B1719DF278ADF56B5F3395187829DA2319DEABF6BBD6EDA244DE2B62CC5AC250C1009DD1CD4712B0B37406612AD002B5E51A62B51AC9C0374D143ABBBD58275FAFC4A5E959C54838C2D6D9FB43B7B2609061267B6A2E6C6D01D295C4223E0D3D7A4CDCFB28A7818A737935279751A6DD8290FD498D1F6AD5F4FFF6BDFA536713F509DCE8047252F1E7D0DD9FCC414C0070B5DCCE3665A21A032D7FBE749181032183AFAD240B7E671E87FBBEC3A8CA4C11AA7A9A23AC69AE2ACF54B664DECD27753D63508F1B02",
PrB_sike: "4B622DE1350119C45A9F2E2EF3DC5DF56A27FCDFCDDAF58CD69B903752D68C200934E160B234E49EDE247601",
PkB_sike: "1BD0A2E81307B6F96461317DDF535ACC0E59C742627BAE60D27605E10FAF722D22A73E184CB572A12E79DCD58C6B54FB01442114CBE9010B6CAEC25D04C16C5E42540C1524C545B8C67614ED4183C9FA5BD0BE45A7F89FBC770EE8E7E5E391C7EE6F35F74C29E6D9E35B1663DA01E48E9DEB2347512D366FDE505161677055E3EF23054D276E817E2C57025DA1C10D2461F68617F2D11256EEE4E2D7DBDF6C8E34F3A0FD00C625428CB41857002159DAB94267ABE42D630C6AAA91AF837C7A6740754EA6634C45454C51B0BB4D44C3CCCCE4B32C00901CF69C008D013348379B2F9837F428A01B6173584691F2A6F3A3C4CF487D20D261B36C8CDB1BC158E2A5162A9DA4F7A97AA0879B9897E2B6891B672201F9AEFBF799C27B2587120AC586A511360926FB7DA8EBF5CB5272F396AE06608422BE9792E2CE9BEF21BF55B7EFF8DC7EC8C99910D3F800",
}

/* -------------------------------------------------------------------------
Helpers
-------------------------------------------------------------------------*/
// Fail if err !=nil. Display msg as an error message
func checkErr(t testing.TB, err error, msg string) {
t.Helper()
if err != nil {
t.Error(msg)
}
}

// Utility used for running same test with all registered prime fields
type MultiIdTestingFunc func(testing.TB)

// Converts string to private key
func convToPrv(s string, v KeyVariant) *PrivateKey {
key := NewPrivateKey(v)
hex, e := hex.DecodeString(s)
if e != nil {
panic("non-hex number provided")
}
e = key.Import(hex)
if e != nil {
panic("Can't import private key")
}
return key
}

// Converts string to public key
func convToPub(s string, v KeyVariant) *PublicKey {
key := NewPublicKey(v)
hex, e := hex.DecodeString(s)
if e != nil {
panic("non-hex number provided")
}
e = key.Import(hex)
if e != nil {
panic("Can't import public key")
}
return key
}

/* -------------------------------------------------------------------------
Unit tests
-------------------------------------------------------------------------*/
func TestKeygen(t *testing.T) {
var keyExp, keyGot [55 * 2 * 3]byte
alicePrivate := convToPrv(tdata.PrA_sidh, KeyVariant_SIDH_A)
bobPrivate := convToPrv(tdata.PrB_sidh, KeyVariant_SIDH_B)
expPubA := convToPub(tdata.PkA_sidh, KeyVariant_SIDH_A)
expPubB := convToPub(tdata.PkB_sidh, KeyVariant_SIDH_B)

pubA := NewPublicKey(KeyVariant_SIDH_A)
alicePrivate.GeneratePublicKey(pubA)
pubB := NewPublicKey(KeyVariant_SIDH_B)
bobPrivate.GeneratePublicKey(pubB)

pubA.Export(keyExp[:])
expPubA.Export(keyGot[:])
if !bytes.Equal(keyExp[:], keyGot[:]) {
t.Fatalf("unexpected value of public key A [\nGot: %X\nExp: %X]\n",
keyExp, keyGot)
}

for i, _ := range keyExp {
keyExp[i] = 0
keyGot[i] = 0
}

pubB.Export(keyExp[:])
expPubB.Export(keyGot[:])
if !bytes.Equal(keyExp[:], keyGot[:]) {
t.Fatalf("unexpected value of public key B [\nGot: %X\nExp: %X]\n",
keyGot, keyExp)
}
}

func TestImportExport(t *testing.T) {
var err error
var aBytes, bBytes [110 * 3]byte

a := NewPublicKey(KeyVariant_SIDH_A)
b := NewPublicKey(KeyVariant_SIDH_B)

// Import keys
aHex, err := hex.DecodeString(tdata.PkA_sidh)
checkErr(t, err, "invalid hex-number provided")

err = a.Import(aHex)
checkErr(t, err, "import failed")

bHex, err := hex.DecodeString(tdata.PkB_sike)
checkErr(t, err, "invalid hex-number provided")

err = b.Import(bHex)
checkErr(t, err, "import failed")

a.Export(aBytes[:])
b.Export(bBytes[:])

// Export and check if same
if !bytes.Equal(bBytes[:], bHex) || !bytes.Equal(aBytes[:], aHex) {
t.Fatalf("export/import failed")
}

if (len(bBytes) != b.Size()) || (len(aBytes) != a.Size()) {
t.Fatalf("wrong size of exported keys")
}
}

func testPrivateKeyBelowMax(t testing.TB) {
for variant, keySz := range map[KeyVariant]*DomainParams{
KeyVariant_SIDH_A: &Params.A,
KeyVariant_SIDH_B: &Params.B} {

func(v KeyVariant, dp *DomainParams) {
var blen = int(dp.SecretByteLen)
var prv = NewPrivateKey(v)
var secretBytes = make([]byte, prv.Size())

// Calculate either (2^e2 - 1) or (2^s - 1); where s=ceil(log_2(3^e3)))
maxSecertVal := big.NewInt(int64(dp.SecretBitLen))
maxSecertVal.Exp(big.NewInt(int64(2)), maxSecertVal, nil)
maxSecertVal.Sub(maxSecertVal, big.NewInt(1))

// Do same test 1000 times
for i := 0; i < 1000; i++ {
err := prv.Generate(rand.Reader)
checkErr(t, err, "Private key generation")

// Convert to big-endian, as that's what expected by (*Int)SetBytes()
prv.Export(secretBytes)
for i := 0; i < int(blen/2); i++ {
tmp := secretBytes[i] ^ secretBytes[blen-i-1]
secretBytes[i] = tmp ^ secretBytes[i]
secretBytes[blen-i-1] = tmp ^ secretBytes[blen-i-1]
}
prvBig := new(big.Int).SetBytes(secretBytes)
// Check if generated key is bigger then acceptable
if prvBig.Cmp(maxSecertVal) == 1 {
t.Error("Generated private key is wrong")
}
}
}(variant, keySz)
}
}

func testKeyAgreement(t *testing.T, pkA, prA, pkB, prB string) {
var e error
var s1, s2 [110 * 3]byte

// KeyPairs
alicePublic := convToPub(pkA, KeyVariant_SIDH_A)
bobPublic := convToPub(pkB, KeyVariant_SIDH_B)
alicePrivate := convToPrv(prA, KeyVariant_SIDH_A)
bobPrivate := convToPrv(prB, KeyVariant_SIDH_B)

// Do actual test
e = DeriveSecret(s1[:], bobPrivate, alicePublic)
checkErr(t, e, "derivation s1")
e = DeriveSecret(s2[:], alicePrivate, bobPublic)
checkErr(t, e, "derivation s1")

if !bytes.Equal(s1[:], s2[:]) {
t.Fatalf("two shared keys: %d, %d do not match", s1, s2)
}

// Negative case
dec, e := hex.DecodeString(tdata.PkA_sidh)
if e != nil {
t.FailNow()
}
dec[0] = ^dec[0]
e = alicePublic.Import(dec)
if e != nil {
t.FailNow()
}

e = DeriveSecret(s1[:], bobPrivate, alicePublic)
checkErr(t, e, "derivation of s1 failed")
e = DeriveSecret(s2[:], alicePrivate, bobPublic)
checkErr(t, e, "derivation of s2 failed")

if bytes.Equal(s1[:], s2[:]) {
t.Fatalf("The two shared keys: %d, %d match", s1, s2)
}
}

func TestDerivationRoundTrip(t *testing.T) {
var err error
var s1, s2 [110 * 3]byte

pubA := NewPublicKey(KeyVariant_SIDH_A)
prvA := NewPrivateKey(KeyVariant_SIDH_A)
pubB := NewPublicKey(KeyVariant_SIDH_B)
prvB := NewPrivateKey(KeyVariant_SIDH_B)

// Generate private keys
err = prvA.Generate(rand.Reader)
checkErr(t, err, "key generation failed")
err = prvB.Generate(rand.Reader)
checkErr(t, err, "key generation failed")

// Generate public keys
prvA.GeneratePublicKey(pubA)
prvB.GeneratePublicKey(pubB)

// Derive shared secret
err = DeriveSecret(s1[:], prvB, pubA)
checkErr(t, err, "")

err = DeriveSecret(s2[:], prvA, pubB)
checkErr(t, err, "")

if !bytes.Equal(s1[:], s2[:]) {
t.Fatalf("Two shared keys: \n%X, \n%X do not match", s1, s2)
}
}

// encrypt, decrypt, check if input/output plaintext is the same
func TestPKERoundTrip(t *testing.T) {
// Message to be encrypted
var msg = make([]byte, Params.MsgLen)
var ct = make([]byte, kem.CiphertextSize())
for i, _ := range msg {
msg[i] = byte(i)
}

// Import keys
pkB := NewPublicKey(KeyVariant_SIKE)
skB := NewPrivateKey(KeyVariant_SIKE)
pk_hex, err := hex.DecodeString(tdata.PkB_sike)
if err != nil {
t.Fatal(err)
}
sk_hex, err := hex.DecodeString(tdata.PrB_sike)
if err != nil {
t.Fatal(err)
}
if pkB.Import(pk_hex) != nil || skB.Import(sk_hex) != nil {
t.Error("Import")
}

err = encrypt(ct, rand.Reader, pkB, msg[:])
if err != nil {
t.Fatal(err)
}
var pt [40]byte
pt_len, err := decrypt(pt[:], skB, ct)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(pt[:pt_len], msg[:]) {
t.Errorf("Decryption failed \n got : %X\n exp : %X", pt, msg)
}
}

// Generate key and check if can encrypt
func TestPKEKeyGeneration(t *testing.T) {
// Message to be encrypted
var msg = make([]byte, Params.MsgLen)
var ct = make([]byte, kem.CiphertextSize())
var err error
for i, _ := range msg {
msg[i] = byte(i)
}

sk := NewPrivateKey(KeyVariant_SIKE)
err = sk.Generate(rand.Reader)
checkErr(t, err, "PEK key generation")
pk := NewPublicKey(KeyVariant_SIKE)
sk.GeneratePublicKey(pk)

// Try to encrypt
err = encrypt(ct, rand.Reader, pk, msg[:])
checkErr(t, err, "PEK encryption")
var pt [40]byte
pt_len, err := decrypt(pt[:], sk, ct)
checkErr(t, err, "PEK key decryption")

if !bytes.Equal(pt[:pt_len], msg[:]) {
t.Fatalf("Decryption failed \n got : %X\n exp : %X", pt, msg)
}
}

func TestNegativePKE(t *testing.T) {
var msg [40]byte
var err error
var ct = make([]byte, kem.CiphertextSize())

// Generate key
pk := NewPublicKey(KeyVariant_SIKE)
sk := NewPrivateKey(KeyVariant_SIKE)
err = sk.Generate(rand.Reader)
checkErr(t, err, "key generation")

sk.GeneratePublicKey(pk)

// bytelen(msg) - 1
err = encrypt(ct, rand.Reader, pk, msg[:Params.KemSize+8-1])
if err == nil {
t.Fatal("Error hasn't been returned")
}
for _, v := range ct {
if v != 0 {
t.Fatal("Returned ciphertext must be not changed")
}
}

// KemSize - 1
var pt [40]byte
pt_len, err := decrypt(pt[:], sk, msg[:Params.KemSize+8-1])
if err == nil {
t.Fatal("Error hasn't been returned")
}
if pt_len != 0 {
t.Fatal("Ciphertext must be nil")
}
}

func testKEMRoundTrip(t *testing.T, pkB, skB []byte) {
ct := make([]byte, kem.CiphertextSize())
ss_e := make([]byte, kem.SharedSecretSize())
ss_d := make([]byte, kem.SharedSecretSize())
// Import keys
pk := NewPublicKey(KeyVariant_SIKE)
sk := NewPrivateKey(KeyVariant_SIKE)
if pk.Import(pkB) != nil || sk.Import(skB) != nil {
t.Error("Import failed")
}

checkErr(t, kem.Encapsulate(ct, ss_e, pk),
"error: Encapsulation during round-trip")
checkErr(t, kem.Decapsulate(ss_d, sk, pk, ct),
"error: Decapsulation during round-trip")

if !bytes.Equal(ss_e, ss_d) {
t.Error("Shared secrets from decapsulation and encapsulation differ")
}
}

func TestKEMRoundTrip(t *testing.T) {
pk, err := hex.DecodeString(tdata.PkB_sike)
checkErr(t, err, "public key B not a number")
sk, err := hex.DecodeString(tdata.PrB_sike)
checkErr(t, err, "private key B not a number")
testKEMRoundTrip(t, pk, sk)
}

func TestKEMKeyGeneration(t *testing.T) {
ct := make([]byte, kem.CiphertextSize())
ss_e := make([]byte, kem.SharedSecretSize())
ss_d := make([]byte, kem.SharedSecretSize())

// Generate key
pk := NewPublicKey(KeyVariant_SIKE)
sk := NewPrivateKey(KeyVariant_SIKE)
checkErr(t, sk.Generate(rand.Reader), "error: key generation")
sk.GeneratePublicKey(pk)

// calculated shared secret
checkErr(t, kem.Encapsulate(ct, ss_e, pk),
"encapsulation failed")
checkErr(t, kem.Decapsulate(ss_d, sk, pk, ct),
"decapsulation failed")

if !bytes.Equal(ss_e, ss_d) {
t.Fatalf("KEM failed \n encapsulated: %X\n decapsulated: %X", ss_d, ss_e)
}
}

func TestNegativeKEM(t *testing.T) {
ct := make([]byte, kem.CiphertextSize())
ss_e := make([]byte, kem.SharedSecretSize())
ss_d := make([]byte, kem.SharedSecretSize())

pk := NewPublicKey(KeyVariant_SIKE)
sk := NewPrivateKey(KeyVariant_SIKE)
checkErr(t, sk.Generate(rand.Reader), "error: key generation")
sk.GeneratePublicKey(pk)

checkErr(t, kem.Encapsulate(ct, ss_e, pk),
"pre-requisite for a test failed")

ct[0] = ct[0] - 1
checkErr(t, kem.Decapsulate(ss_d, sk, pk, ct),
"decapsulation returns error when invalid ciphertext provided")

if bytes.Equal(ss_e[:], ss_d) {
// no idea how this could ever happen, but it would be very bad
t.Error("critical error")
}

// Try encapsulating with SIDH key
pkSidh := NewPublicKey(KeyVariant_SIDH_B)
prSidh := NewPrivateKey(KeyVariant_SIDH_B)
err := kem.Encapsulate(ct, ss_e, pkSidh)
if err == nil {
t.Error("encapsulation accepts SIDH public key")
}
// Try decapsulating with SIDH key
err = kem.Decapsulate(ss_e, prSidh, pk, ct)
if err == nil {
t.Error("decapsulation accepts SIDH private key key")
}
}

// In case invalid ciphertext is provided, SIKE's decapsulation must
// return same (but unpredictable) result for a given key.
func TestNegativeKEMSameWrongResult(t *testing.T) {
ct := make([]byte, kem.CiphertextSize())
ss_e := make([]byte, kem.SharedSecretSize())
ss_d1 := make([]byte, kem.SharedSecretSize())
ss_d2 := make([]byte, kem.SharedSecretSize())

sk := NewPrivateKey(KeyVariant_SIKE)
pk := NewPublicKey(KeyVariant_SIKE)

// generate keys
checkErr(t, sk.Generate(rand.Reader), "error: key generation")
sk.GeneratePublicKey(pk)

checkErr(t, kem.Encapsulate(ct, ss_e, pk),
"pre-requisite for a test failed")

// make ciphertext wrong
ct[0] = ct[0] - 1
checkErr(t, kem.Decapsulate(ss_d1, sk, pk, ct),
"pre-requisite for a test failed")

// second decapsulation must be done with same, but imported private key
var expSk = make([]byte, sk.Size())
sk.Export(expSk)

// creat new private key
sk = NewPrivateKey(KeyVariant_SIKE)
checkErr(t, sk.Import(expSk),
"import failed")

// try decapsulating again. ss2 must be same as ss1 and different than
// original plaintext
checkErr(t, kem.Decapsulate(ss_d2, sk, pk, ct),
"pre-requisite for a test failed")

if !bytes.Equal(ss_d1, ss_d2) {
t.Error("decapsulation is insecure")
}

if bytes.Equal(ss_e, ss_d1) || bytes.Equal(ss_e, ss_d2) {
// this test requires that decapsulation returns wrong result
t.Errorf("test implementation error")
}
}

func testKeygen(t *testing.T, pk, sk []byte) {
var pubKeyBytes [110 * 3]byte
// Import provided private key
var prvKey = NewPrivateKey(KeyVariant_SIKE)
if prvKey.Import(sk) != nil {
panic("sike test: can't load KAT")
}

// Generate public key
pubKey := NewPublicKey(KeyVariant_SIKE)
prvKey.GeneratePublicKey(pubKey)
pubKey.Export(pubKeyBytes[:])
if !bytes.Equal(pubKeyBytes[:], pk) {
t.Fatalf("KAT keygen form private failed\nExp: %X\nGot: %X\n", pubKeyBytes[:], pk)
}
}

func TestKeyAgreement(t *testing.T) {
testKeyAgreement(t, tdata.PkA_sidh, tdata.PrA_sidh, tdata.PkB_sidh, tdata.PrB_sidh)
}

// Same values as in sike_test.cc
func TestDecapsulation(t *testing.T) {

var sk = [28 + 16]byte{
0x04, 0x5E, 0x01, 0x42, 0xB8, 0x2F, 0xE1, 0x9A, 0x38, 0x25,
0x92, 0xE7, 0xDC, 0xBA, 0xF7, 0x1B, 0xB1, 0xFD, 0x34, 0x42,
0xDB, 0x02, 0xBC, 0x9D, 0x4C, 0xD0, 0x72, 0x34, 0x4D, 0xBD,
0x06, 0xDF, 0x1C, 0x7D, 0x0A, 0x88, 0xB2, 0x50, 0xC4, 0xF6,
0xAE, 0xE8, 0x25, 0x01,
}

var pk = [330]byte{
0x6D, 0x8D, 0xF5, 0x7B, 0xCD, 0x47, 0xCA, 0xCB, 0x7A, 0x38,
0xB7, 0xA6, 0x90, 0xB7, 0x37, 0x03, 0xD4, 0x6F, 0x27, 0x73,
0x74, 0x17, 0x5A, 0xA4, 0x0D, 0xC6, 0x81, 0xAD, 0xDB, 0xF7,
0x18, 0xB2, 0x3C, 0x30, 0xCF, 0xAA, 0x08, 0x11, 0x91, 0xCC,
0x27, 0x4E, 0xF1, 0xA6, 0xB7, 0xDA, 0xD2, 0xCF, 0x99, 0x7F,
0xF7, 0xE1, 0xD0, 0xCE, 0x00, 0xD2, 0x4B, 0xA4, 0x33, 0xB4,
0x87, 0x01, 0x3F, 0x02, 0xF7, 0xF9, 0xDE, 0xC3, 0x60, 0x62,
0xDA, 0x3F, 0x74, 0xA9, 0x44, 0xBE, 0x19, 0xD5, 0x03, 0x2A,
0x79, 0x8C, 0xA7, 0xFF, 0xEA, 0xB3, 0xBB, 0xB5, 0xD4, 0x1D,
0x8F, 0x92, 0xCE, 0x62, 0x6E, 0x99, 0x24, 0xD7, 0x57, 0xFA,
0xCD, 0xB6, 0xE2, 0x8E, 0xFD, 0x22, 0x0E, 0x31, 0x21, 0x01,
0x8D, 0x79, 0xF8, 0x3E, 0x27, 0xEC, 0x43, 0x40, 0xDB, 0x82,
0xE5, 0xEB, 0x6C, 0x97, 0x66, 0x29, 0x15, 0x68, 0xB7, 0x4D,
0x84, 0xD1, 0x8A, 0x0B, 0x12, 0x36, 0x2C, 0x0C, 0x0A, 0x6E,
0x4E, 0xDE, 0xA5, 0x8A, 0xDE, 0x77, 0xDD, 0x70, 0x49, 0x73,
0xAC, 0x27, 0x6D, 0x8D, 0x25, 0x9A, 0xE4, 0x25, 0xE8, 0x95,
0x8F, 0xFE, 0x90, 0x3B, 0x00, 0x69, 0x20, 0xE8, 0x7C, 0xA5,
0xF5, 0x79, 0xC0, 0x61, 0x51, 0x91, 0x35, 0x25, 0x3F, 0x17,
0x2F, 0x70, 0x73, 0xF0, 0x89, 0xB5, 0xC8, 0x25, 0xB8, 0xE5,
0x7E, 0x34, 0xDD, 0x11, 0xE5, 0xD6, 0xC3, 0xD5, 0x29, 0x89,
0xC6, 0x2C, 0x99, 0x53, 0x1D, 0x2C, 0x77, 0xB0, 0xB6, 0xA1,
0xBD, 0x79, 0xFB, 0x4A, 0xC2, 0x48, 0x4C, 0x62, 0x51, 0x00,
0xE3, 0x91, 0x2A, 0xCB, 0x84, 0x03, 0x5D, 0x2D, 0xC8, 0x33,
0xE9, 0x14, 0xBF, 0x74, 0x21, 0xBC, 0xF4, 0x76, 0xE5, 0x42,
0xB8, 0xBD, 0xE2, 0xE7, 0x20, 0x95, 0x54, 0xF2, 0xED, 0xC0,
0x79, 0x38, 0x1E, 0xD2, 0xEA, 0x1A, 0x63, 0x85, 0xE7, 0x3A,
0xDA, 0xAD, 0xAB, 0x1B, 0x1E, 0x19, 0x9E, 0x73, 0xD0, 0x10,
0x2E, 0x38, 0xAC, 0x8B, 0x00, 0x6A, 0x30, 0x2C, 0x3D, 0x70,
0x8E, 0x39, 0x6D, 0xC0, 0x12, 0x61, 0x7D, 0x2A, 0x0A, 0x04,
0x95, 0x8E, 0x09, 0x3C, 0x7B, 0xEC, 0x2E, 0xBC, 0xE8, 0xE8,
0xE8, 0x37, 0x29, 0xC4, 0x7E, 0x76, 0x48, 0xB9, 0x3B, 0x72,
0xE5, 0x99, 0x9B, 0xF9, 0xE3, 0x99, 0x72, 0x3F, 0x35, 0x29,
0x85, 0xE0, 0xC8, 0xBF, 0xB1, 0x6B, 0xB1, 0x6E, 0x72, 0x00,
}

var ct = [330 + 16]byte{
0x7C, 0xAB, 0x4E, 0x65, 0x2E, 0xBA, 0xD2, 0xBD, 0x8B, 0x66,
0xCA, 0x2B, 0xA8, 0xF9, 0xEF, 0xE2, 0xFD, 0x2E, 0xCA, 0x83,
0xE9, 0xCF, 0x50, 0x63, 0x7B, 0x5C, 0x3D, 0xA5, 0xE7, 0xF5,
0x9F, 0x73, 0xAC, 0xC8, 0xE4, 0x85, 0xFC, 0x05, 0xCD, 0xED,
0x03, 0x25, 0x02, 0xA4, 0xF5, 0x57, 0x4A, 0x76, 0x3C, 0xDE,
0x76, 0x52, 0xD0, 0x1B, 0x01, 0xA3, 0xD3, 0xB1, 0x8E, 0xC6,
0xE1, 0x54, 0x3F, 0x9B, 0xA9, 0xB6, 0x9B, 0x1A, 0xED, 0x62,
0xB5, 0x7A, 0x58, 0xFB, 0xAC, 0xF2, 0xBD, 0xE6, 0x95, 0x0B,
0xED, 0x3A, 0x5D, 0x34, 0xB0, 0x54, 0x2D, 0xEF, 0xA9, 0xA7,
0xA3, 0xA8, 0xD2, 0xA1, 0x8B, 0x96, 0xFA, 0x8F, 0xDD, 0x2E,
0xE4, 0x93, 0x82, 0x97, 0x19, 0x72, 0xC7, 0x7E, 0x50, 0x00,
0x8A, 0xE0, 0x0C, 0x5A, 0x94, 0xB2, 0xE1, 0xC3, 0xA5, 0x4D,
0x92, 0x97, 0xA2, 0x59, 0x97, 0xBC, 0xB9, 0x7F, 0x27, 0x92,
0xA7, 0x7F, 0x5A, 0x7B, 0x8D, 0x24, 0xFF, 0x9A, 0x99, 0xDB,
0xDB, 0xE1, 0x5B, 0xD2, 0x10, 0x34, 0x2D, 0x45, 0xA5, 0xE5,
0x99, 0x7F, 0xFE, 0x02, 0xCC, 0x57, 0x7A, 0x3A, 0xAB, 0xB3,
0x27, 0xE1, 0x55, 0x70, 0x01, 0x3D, 0xC8, 0xAB, 0x90, 0xC6,
0x8F, 0x63, 0x8B, 0x30, 0x6F, 0xA1, 0xDC, 0x91, 0xE5, 0x25,
0xDF, 0x9A, 0x68, 0x05, 0xC2, 0xD4, 0x13, 0x64, 0xAA, 0xEF,
0x21, 0x63, 0x5E, 0xFF, 0x41, 0xFD, 0xF3, 0x92, 0x76, 0xA6,
0x09, 0x90, 0xBD, 0x65, 0x56, 0xC9, 0x6D, 0x41, 0xA7, 0x9E,
0xC7, 0x15, 0xBF, 0xE1, 0x2D, 0xB0, 0x96, 0x26, 0x21, 0x01,
0x60, 0x54, 0x71, 0x56, 0xD9, 0xA2, 0x9B, 0xD2, 0x21, 0x9C,
0xD9, 0x0F, 0xF8, 0x5F, 0xC4, 0xF4, 0xF6, 0x8E, 0xCA, 0x87,
0x7B, 0x7A, 0xDE, 0x28, 0x05, 0x3F, 0x3F, 0xE7, 0xDA, 0x3B,
0x56, 0x64, 0xE0, 0x8D, 0xEB, 0x4A, 0x54, 0x88, 0x05, 0x4C,
0x5E, 0x99, 0x45, 0x8C, 0x65, 0x8A, 0x6E, 0x2D, 0x53, 0x1C,
0x9B, 0x44, 0xA7, 0xEF, 0x01, 0xF8, 0x31, 0x4D, 0x31, 0xE3,
0x75, 0x7B, 0x5F, 0x79, 0x5F, 0xE7, 0x47, 0x4C, 0x08, 0x86,
0x84, 0xC8, 0x84, 0x48, 0x89, 0x89, 0x5F, 0x7F, 0x92, 0x68,
0x2E, 0x9F, 0xBA, 0x46, 0x6D, 0x34, 0x93, 0x86, 0xE4, 0xEA,
0xE6, 0x1F, 0xF8, 0xE1, 0x94, 0xFF, 0x6E, 0xB6, 0x8D, 0x46,
0x64, 0xF0, 0xE3, 0xB7, 0x84, 0x0A, 0x5B, 0xE2, 0xC4, 0x01,
0x6E, 0xA5, 0xB8, 0xFA, 0xA5, 0x5A, 0x1C, 0x2D, 0xF6, 0x81,
0xC2, 0x44, 0x81, 0x5B, 0x00, 0x17,
}
var ss_exp = [16]byte{
0xCB, 0x9C, 0x6B, 0x0A, 0x64, 0x95, 0x32, 0xA7, 0x35, 0x4E,
0xE5, 0x14, 0xC8, 0xB7, 0x82, 0xB6,
}

var prvObj = NewPrivateKey(KeyVariant_SIKE)
var pubObj = NewPublicKey(KeyVariant_SIKE)

if pubObj.Import(pk[:]) != nil || prvObj.Import(sk[:]) != nil {
t.Error("Can't import one of the keys")
}

res := make([]byte, kem.SharedSecretSize())
checkErr(t, kem.Decapsulate(res, prvObj, pubObj, ct[:]),
"error: Decapsulation failed")

if !bytes.Equal(ss_exp[:], res) {
t.Error("Wrong decapsulation result")
}
}

func readAndCheckLine(r *bufio.Reader) []byte {
// Read next line from buffer
line, isPrefix, err := r.ReadLine()
if err != nil || isPrefix {
panic("Wrong format of input file")
}

// Function expects that line is in format "KEY = HEX_VALUE". Get
// value, which should be a hex string
hexst := strings.Split(string(line), "=")[1]
hexst = strings.TrimSpace(hexst)
// Convert value to byte string
ret, err := hex.DecodeString(hexst)
if err != nil {
panic("Wrong format of input file")
}
return ret
}

func TestKAT(t *testing.T) {
ssGot := make([]byte, kem.SharedSecretSize())
testDecapsulation := func(t *testing.T, pk, sk, ct, ssExpected []byte) {
var pubKey = NewPublicKey(KeyVariant_SIKE)
var prvKey = NewPrivateKey(KeyVariant_SIKE)
if pubKey.Import(pk) != nil || prvKey.Import(sk) != nil {
panic("sike test: can't load KAT")
}

err := kem.Decapsulate(ssGot, prvKey, pubKey, ct)
if err != nil {
panic("sike test: can't perform degcapsulation KAT")
}

if (err != nil) || !bytes.Equal(ssGot, ssExpected) {
t.Fatalf("KAT decapsulation failed\n")
}
}
f, err := os.Open(tdata.katFile)
if err != nil {
t.Fatal(err)
}

r := bufio.NewReader(f)
for {
line, isPrefix, err := r.ReadLine()
if err != nil || isPrefix {
if err == io.EOF {
break
} else {
t.Fatal(err)
}
}
if len(strings.TrimSpace(string(line))) == 0 || line[0] == '#' {
continue
}

// count
_ = strings.Split(string(line), "=")[1]
// seed
_ = readAndCheckLine(r)
// pk
pk := readAndCheckLine(r)
// sk (secret key in test vector is concatenation of
// MSG + SECRET_BOB_KEY + PUBLIC_BOB_KEY. We use only MSG+SECRET_BOB_KEY
sk := readAndCheckLine(r)
sk = sk[:Params.MsgLen+int(Params.B.SecretByteLen)]
// ct
ct := readAndCheckLine(r)
// ss
ss := readAndCheckLine(r)
testKeygen(t, pk, sk)
testDecapsulation(t, pk, sk, ct, ss)
testKEMRoundTrip(t, pk, sk)
}
}

/* -------------------------------------------------------------------------
Benchmarking
-------------------------------------------------------------------------*/

func BenchmarkKeygen(b *testing.B) {
pk := NewPublicKey(KeyVariant_SIKE)
prv := NewPrivateKey(KeyVariant_SIKE)
prv.Generate(rand.Reader)

for n := 0; n < b.N; n++ {
prv.GeneratePublicKey(pk)
}
}

func BenchmarkEncaps(b *testing.B) {
pub := NewPublicKey(KeyVariant_SIKE)
prv := NewPrivateKey(KeyVariant_SIKE)

if prv.Generate(rand.Reader) != nil {
b.FailNow()
}
prv.GeneratePublicKey(pub)

var ct [16 + 330]byte
var ss [16]byte

for n := 0; n < b.N; n++ {
kem.Reset()
kem.Encapsulate(ct[:], ss[:], pub)
}
}

func BenchmarkDecaps(b *testing.B) {
var ct [16 + 330]byte
var ss [16]byte

pkA := NewPublicKey(KeyVariant_SIKE)
prvA := NewPrivateKey(KeyVariant_SIKE)
pkB := NewPublicKey(KeyVariant_SIKE)
prvB := NewPrivateKey(KeyVariant_SIKE)

if prvA.Generate(rand.Reader) != nil || prvB.Generate(rand.Reader) != nil {
b.FailNow()
}

prvA.GeneratePublicKey(pkA)
prvB.GeneratePublicKey(pkB)

err := kem.Encapsulate(ct[:], ss[:], pkA)
if err != nil {
b.FailNow()
}

for n := 0; n < b.N; n++ {
kem.Decapsulate(ss[:], prvA, pkB, ct[:])
}
}

var kem KEM

func init() {
kem.Allocate(rand.Reader)
}

+ 122
- 0
p434/types.go Wyświetl plik

@@ -0,0 +1,122 @@
package sike

// I keep it bool in order to be able to apply logical NOT
type KeyVariant uint

// Representation of an element of the base field F_p.
//
// No particular meaning is assigned to the representation -- it could represent
// an element in Montgomery form, or not. Tracking the meaning of the field
// element is left to higher types.
type Fp [FP_WORDS]uint64

// Represents an intermediate product of two elements of the base field F_p.
type FpX2 [2 * FP_WORDS]uint64

// Represents an element of the extended field Fp^2 = Fp(x+i)
type Fp2 struct {
A Fp
B Fp
}

type DomainParams struct {
// P, Q and R=P-Q base points
Affine_P, Affine_Q, Affine_R Fp2
// Size of a compuatation strategy for x-torsion group
IsogenyStrategy []uint32
// Max size of secret key for x-torsion group
SecretBitLen uint
// Max size of secret key for x-torsion group
SecretByteLen uint
}

type SidhParams struct {
Id uint8
// Bytelen of P
Bytelen int
// The public key size, in bytes.
PublicKeySize int
// The shared secret size, in bytes.
SharedSecretSize int
// Defines A,C constant for starting curve Cy^2 = x^3 + Ax^2 + x
InitCurve ProjectiveCurveParameters
// 2- and 3-torsion group parameter definitions
A, B DomainParams
// Precomputed 1/2 in the Fp2 in Montgomery domain
HalfFp2 Fp2
// Precomputed identity element in the Fp2 in Montgomery domain
OneFp2 Fp2
// Length of SIKE secret message. Must be one of {24,32,40},
// depending on size of prime field used (see [SIKE], 1.4 and 5.1)
MsgLen int
// Length of SIKE ephemeral KEM key (see [SIKE], 1.4 and 5.1)
KemSize int
// Size of a ciphertext returned by encapsulation in bytes
CiphertextSize int
}

// Stores curve projective parameters equivalent to A/C. Meaning of the
// values depends on the context. When working with isogenies over
// subgroup that are powers of:
// * three then (A:C) ~ (A+2C:A-2C)
// * four then (A:C) ~ (A+2C: 4C)
// See Appendix A of SIKE for more details
type CurveCoefficientsEquiv struct {
A Fp2
C Fp2
}

// A point on the projective line P^1(F_{p^2}).
//
// This represents a point on the Kummer line of a Montgomery curve. The
// curve is specified by a ProjectiveCurveParameters struct.
type ProjectivePoint struct {
X Fp2
Z Fp2
}

// Base type for public and private key. Used mainly to carry domain
// parameters.
type key struct {
// Domain parameters of the algorithm to be used with a key
params *SidhParams
// Flag indicates wether corresponds to 2-, 3-torsion group or SIKE
keyVariant KeyVariant
}

// Defines operations on private key
type PrivateKey struct {
key
// Secret key
Scalar []byte
// Used only by KEM
S []byte
}

// Defines operations on public key
type PublicKey struct {
key
affine_xP Fp2
affine_xQ Fp2
affine_xQmP Fp2
}

// A point on the projective line P^1(F_{p^2}).
//
// This is used to work projectively with the curve coefficients.
type ProjectiveCurveParameters struct {
A Fp2
C Fp2
}

const (
// First 2 bits identify SIDH variant third bit indicates
// wether key is a SIKE variant (set) or SIDH (not set)

// 001 - SIDH: corresponds to 2-torsion group
KeyVariant_SIDH_A KeyVariant = 1 << 0
// 010 - SIDH: corresponds to 3-torsion group
KeyVariant_SIDH_B = 1 << 1
// 110 - SIKE
KeyVariant_SIKE = 1<<2 | KeyVariant_SIDH_B
)

+ 5
- 6
p503/arith.go Wyświetl plik

@@ -11,12 +11,11 @@ package sike
func p34(dest, x *Fp) {
var lookup [16]Fp

// Sliding-window strategy computed with etc/scripts/sliding_window_strat_calc.py
//
// This performs sum(powStrategy) + 1 squarings and len(lookup) + len(mulStrategy)
// multiplications.
powStrategy := []uint8{1, 12, 5, 5, 2, 7, 11, 3, 8, 4, 11, 4, 7, 5, 6, 3, 7, 5, 7, 2, 12, 5, 6, 4, 6, 8, 6, 4, 7, 5, 5, 8, 5, 8, 5, 5, 8, 9, 3, 6, 2, 10, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3}
mulStrategy := []uint8{0, 12, 11, 10, 0, 1, 8, 3, 7, 1, 8, 3, 6, 7, 14, 2, 14, 14, 9, 0, 13, 9, 15, 5, 12, 7, 13, 7, 15, 6, 7, 9, 0, 5, 7, 6, 8, 8, 3, 7, 0, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 3}
powStrategy := []uint8{12, 5, 5, 2, 7, 11, 3, 8, 4, 11, 4, 7, 5, 6, 3, 7, 5, 7, 2, 12, 5, 6, 4, 6, 8, 6, 4, 7, 5, 5, 8, 5, 8, 5, 5, 8, 9, 3, 6, 2, 10, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3}
mulStrategy := []uint8{12, 11, 10, 0, 1, 8, 3, 7, 1, 8, 3, 6, 7, 14, 2, 14, 14, 9, 0, 13, 9, 15, 5, 12, 7, 13, 7, 15, 6, 7, 9, 0, 5, 7, 6, 8, 8, 3, 7, 0, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 3}
initialMul := uint8(0)

// Precompute lookup table of odd multiples of x for window
// size k=5.
@@ -30,8 +29,8 @@ func p34(dest, x *Fp) {
// Now lookup = {x, x^3, x^5, ... }
// so that lookup[i] = x^{2*i + 1}
// so that lookup[k/2] = x^k, for odd k
*dest = lookup[mulStrategy[0]]
for i := uint8(1); i < uint8(len(powStrategy)); i++ {
*dest = lookup[initialMul]
for i := uint8(0); i < uint8(len(powStrategy)); i++ {
fpMulRdc(dest, dest, dest)
for j := uint8(1); j < powStrategy[i]; j++ {
fpMulRdc(dest, dest, dest)


+ 0
- 6
p503/consts.go Wyświetl plik

@@ -31,12 +31,6 @@ var pR2 = Fp{
0x9E51998BD84D4423, 0xBF8999CBAC3B5695, 0x46E9127BCE14CDB6, 0x003F6CFCE8B81771,
}

// p503 + 1 left-shifted by 8, assuming little endianness
var p1s8 = Fp{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x085BDA2211E7A0AC, 0x9BF6C87B7E7DAF13, 0x45C6BDDA77A4D01B, 0x4066F541811E1E60,
}

// 1/2 * R mod p
var half = Fp2{
A: Fp{


+ 16
- 15
p503/sike_test.go Wyświetl plik

@@ -37,6 +37,7 @@ var tdata = struct {
-------------------------------------------------------------------------*/
// Fail if err !=nil. Display msg as an error message
func checkErr(t testing.TB, err error, msg string) {
t.Helper()
if err != nil {
t.Error(msg)
}
@@ -92,7 +93,7 @@ func TestKeygen(t *testing.T) {
expPubA.Export(keyGot[:])
if !bytes.Equal(keyExp[:], keyGot[:]) {
t.Fatalf("unexpected value of public key A [\nGot: %X\nExp: %X]\n",
keyExp, keyGot)
keyGot, keyExp)
}

for i, _ := range keyExp {
@@ -104,7 +105,7 @@ func TestKeygen(t *testing.T) {
expPubB.Export(keyGot[:])
if !bytes.Equal(keyExp[:], keyGot[:]) {
t.Fatalf("unexpected value of public key B [\nGot: %X\nExp: %X]\n",
keyExp, keyGot)
keyGot, keyExp)
}
}

@@ -642,22 +643,22 @@ func readAndCheckLine(r *bufio.Reader) []byte {

func TestKAT(t *testing.T) {
ssGot := make([]byte, kemSikeP503.SharedSecretSize())
testDecapsulation := func(t *testing.T, pk, sk, ct, ssExpected []byte) {
var pubKey = NewPublicKey(KeyVariant_SIKE)
var prvKey = NewPrivateKey(KeyVariant_SIKE)
if pubKey.Import(pk) != nil || prvKey.Import(sk) != nil {
panic("sike test: can't load KAT")
}
testDecapsulation := func(t *testing.T, pk, sk, ct, ssExpected []byte) {
var pubKey = NewPublicKey(KeyVariant_SIKE)
var prvKey = NewPrivateKey(KeyVariant_SIKE)
if pubKey.Import(pk) != nil || prvKey.Import(sk) != nil {
panic("sike test: can't load KAT")
}

err := kemSikeP503.Decapsulate(ssGot, prvKey, pubKey, ct)
if err != nil {
panic("sike test: can't perform degcapsulation KAT")
}
err := kemSikeP503.Decapsulate(ssGot, prvKey, pubKey, ct)
if err != nil {
panic("sike test: can't perform degcapsulation KAT")
}

if (err != nil) || !bytes.Equal(ssGot, ssExpected) {
t.Fatalf("KAT decapsulation failed\n")
}
if (err != nil) || !bytes.Equal(ssGot, ssExpected) {
t.Fatalf("KAT decapsulation failed\n")
}
}
f, err := os.Open(tdata.katFile)
if err != nil {
t.Fatal(err)


+ 74
- 0
tools/sliding_window_strat_calc.py Wyświetl plik

@@ -0,0 +1,74 @@
#!/usr/bin/env python2

# Calculates .... yeah, what does it really calculate? OZAPTF
# (P-3)/4: Least significant bit is first

# Configuration
# kWindowSize and kP34 must be specified
#
# P434
kP34 = [1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# P503
#kP34 = [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# P751
#kP34 = [1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
kWindowSize = 5


table_pow = []
table_mul = []

i=0
while i<len(kP34):
count_pow2k=0
count_mul=0

# Count zeros, each zero means additional x^2 operation
if kP34[i] == 0:
while i < len(kP34) and kP34[i] == 0:
count_pow2k = count_pow2k + 1
i = i + 1

# Stop if finished
if i>=len(kP34):
break

# Calculate length of a {1,0}, so that it starts & ends
# with 1 and len() <= kWindowSize
if kP34[i] == 1:
# max string len is either 5 or len(kP34)
if i+kWindowSize>=len(kP34):
string_max_len = len(kP34)-i
else:
string_max_len = kWindowSize

# look backward for first occurence of 1
tmp = i + string_max_len - 1
while tmp>=i:
if kP34[tmp] == 1:
break
tmp = tmp - 1
e_string_len = tmp - i + 1

# calculate number from bit-string of size e_string_len
tmp = 0
num = 0
for x in kP34[i:i+e_string_len]:
num = num | (x << e_string_len - tmp - 1)
tmp = tmp + 1
table_mul.append(int(num/2))

# set new number of pow2k operations
count_pow2k = count_pow2k + e_string_len

# advance i
i = i + e_string_len

else:
raise "Wrong number in kP34 at possition " % i

table_pow.append(count_pow2k)

# skips first values to print exact table used by the algorithm
print(table_pow)
print(table_mul)

Ładowanie…
Anuluj
Zapisz