Commit 49abfb92 authored by Adrian Sutton's avatar Adrian Sutton Committed by GitHub

op-challenger: Add keccak sponge implementation (#9015)

* op-challenger: Add keccak sponge impl

Provides a StateMatrix implementation that can calculate the state commitment after each permutation.

* op-challenger: Add randomly generated reference tests.

* op-challenger: Split library code to a separate file.

* op-challenger: Expose PackState method

* op-challenger: Add reader based method to make it easier to split up data correctly.

* op-challenger: Fix fuzz makefile target.

* op-challenger: Include full license to comply with source distribution requirements.
parent ead6ebba
......@@ -1468,6 +1468,11 @@ workflows:
- go-lint: # we combine most of the go-lint work for two reasons: (1) warm up the Go build cache, (2) reduce sum of lint time
name: op-stack-go-lint
requires: [ "go-mod-tidy" ]
- fuzz-golang:
name: op-challenger-fuzz
package_name: op-challenger
on_changes: op-challenger
requires: ["op-stack-go-lint"]
- fuzz-golang:
name: op-node-fuzz
package_name: op-node
......
......@@ -10,6 +10,9 @@ LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
op-challenger:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-challenger ./cmd
fuzz:
go test -run NOTAREALTEST -v -fuzztime 10s -fuzz FuzzKeccak ./game/keccak/matrix
clean:
rm bin/op-challenger
......
// Copyright (c) 2009 The Go Authors. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// This code is taken from the standard golang.org/x/crypto module
package matrix
import (
"encoding/binary"
"math/bits"
)
// NewLegacyKeccak256 creates a new Keccak-256 hash.
//
// Only use this function if you require compatibility with an existing cryptosystem
// that uses non-standard padding. All other users should use New256 instead.
func newLegacyKeccak256() *state {
return &state{rate: 136, outputLen: 32, dsbyte: 0x01}
}
var (
xorIn = xorInGeneric
copyOut = copyOutGeneric
)
// xorInGeneric xors the bytes in buf into the state; it
// makes no non-portable assumptions about memory layout
// or alignment.
func xorInGeneric(d *state, buf []byte) {
n := len(buf) / 8
for i := 0; i < n; i++ {
a := binary.LittleEndian.Uint64(buf)
d.a[i] ^= a
buf = buf[8:]
}
}
// copyOutGeneric copies uint64s to a byte buffer.
func copyOutGeneric(d *state, b []byte) {
for i := 0; len(b) >= 8; i++ {
binary.LittleEndian.PutUint64(b, d.a[i])
b = b[8:]
}
}
// spongeDirection indicates the direction bytes are flowing through the sponge.
type spongeDirection int
const (
// spongeAbsorbing indicates that the sponge is absorbing input.
spongeAbsorbing spongeDirection = iota
// spongeSqueezing indicates that the sponge is being squeezed.
spongeSqueezing
)
const (
// maxRate is the maximum size of the internal buffer. SHAKE-256
// currently needs the largest buffer.
maxRate = 168
)
// A storageBuf is an aligned array of maxRate bytes.
type storageBuf [maxRate]byte
func (b *storageBuf) asBytes() *[maxRate]byte {
return (*[maxRate]byte)(b)
}
type state struct {
// Generic sponge components.
a [25]uint64 // main state of the hash
buf []byte // points into storage
rate int // the number of bytes of state to use
// dsbyte contains the "domain separation" bits and the first bit of
// the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the
// SHA-3 and SHAKE functions by appending bitstrings to the message.
// Using a little-endian bit-ordering convention, these are "01" for SHA-3
// and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the
// padding rule from section 5.1 is applied to pad the message to a multiple
// of the rate, which involves adding a "1" bit, zero or more "0" bits, and
// a final "1" bit. We merge the first "1" bit from the padding into dsbyte,
// giving 00000110b (0x06) and 00011111b (0x1f).
// [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf
// "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and
// Extendable-Output Functions (May 2014)"
dsbyte byte
storage storageBuf
// Specific to SHA-3 and SHAKE.
outputLen int // the default output size in bytes
state spongeDirection // whether the sponge is absorbing or squeezing
}
// BlockSize returns the rate of sponge underlying this hash function.
func (d *state) BlockSize() int { return d.rate }
// Size returns the output size of the hash function in bytes.
func (d *state) Size() int { return d.outputLen }
// Reset clears the internal state by zeroing the sponge state and
// the byte buffer, and setting Sponge.state to absorbing.
func (d *state) Reset() {
// Zero the permutation's state.
for i := range d.a {
d.a[i] = 0
}
d.state = spongeAbsorbing
d.buf = d.storage.asBytes()[:0]
}
func (d *state) clone() *state {
ret := *d
if ret.state == spongeAbsorbing {
ret.buf = ret.storage.asBytes()[:len(ret.buf)]
} else {
ret.buf = ret.storage.asBytes()[d.rate-cap(d.buf) : d.rate]
}
return &ret
}
// permute applies the KeccakF-1600 permutation. It handles
// any input-output buffering.
func (d *state) permute() {
switch d.state {
case spongeAbsorbing:
// If we're absorbing, we need to xor the input into the state
// before applying the permutation.
xorIn(d, d.buf)
d.buf = d.storage.asBytes()[:0]
keccakF1600(&d.a)
case spongeSqueezing:
// If we're squeezing, we need to apply the permutation before
// copying more output.
keccakF1600(&d.a)
d.buf = d.storage.asBytes()[:d.rate]
copyOut(d, d.buf)
}
}
// pads appends the domain separation bits in dsbyte, applies
// the multi-bitrate 10..1 padding rule, and permutes the state.
func (d *state) padAndPermute(dsbyte byte) {
if d.buf == nil {
d.buf = d.storage.asBytes()[:0]
}
// Pad with this instance's domain-separator bits. We know that there's
// at least one byte of space in d.buf because, if it were full,
// permute would have been called to empty it. dsbyte also contains the
// first one bit for the padding. See the comment in the state struct.
d.buf = append(d.buf, dsbyte)
zerosStart := len(d.buf)
d.buf = d.storage.asBytes()[:d.rate]
for i := zerosStart; i < d.rate; i++ {
d.buf[i] = 0
}
// This adds the final one bit for the padding. Because of the way that
// bits are numbered from the LSB upwards, the final bit is the MSB of
// the last byte.
d.buf[d.rate-1] ^= 0x80
// Apply the permutation
d.permute()
d.state = spongeSqueezing
d.buf = d.storage.asBytes()[:d.rate]
copyOut(d, d.buf)
}
// Write absorbs more data into the hash's state. It panics if any
// output has already been read.
func (d *state) Write(p []byte) (written int, err error) {
if d.state != spongeAbsorbing {
panic("sha3: Write after Read")
}
if d.buf == nil {
d.buf = d.storage.asBytes()[:0]
}
written = len(p)
for len(p) > 0 {
if len(d.buf) == 0 && len(p) >= d.rate {
// The fast path; absorb a full "rate" bytes of input and apply the permutation.
xorIn(d, p[:d.rate])
p = p[d.rate:]
keccakF1600(&d.a)
} else {
// The slow path; buffer the input until we can fill the sponge, and then xor it in.
todo := d.rate - len(d.buf)
if todo > len(p) {
todo = len(p)
}
d.buf = append(d.buf, p[:todo]...)
p = p[todo:]
// If the sponge is full, apply the permutation.
if len(d.buf) == d.rate {
d.permute()
}
}
}
return
}
// Read squeezes an arbitrary number of bytes from the sponge.
func (d *state) Read(out []byte) (n int, err error) {
// If we're still absorbing, pad and apply the permutation.
if d.state == spongeAbsorbing {
d.padAndPermute(d.dsbyte)
}
n = len(out)
// Now, do the squeezing.
for len(out) > 0 {
n := copy(out, d.buf)
d.buf = d.buf[n:]
out = out[n:]
// Apply the permutation if we've squeezed the sponge dry.
if len(d.buf) == 0 {
d.permute()
}
}
return
}
// Sum applies padding to the hash state and then squeezes out the desired
// number of output bytes. It panics if any output has already been read.
func (d *state) Sum(in []byte) []byte {
if d.state != spongeAbsorbing {
panic("sha3: Sum after Read")
}
// Make a copy of the original hash so that caller can keep writing
// and summing.
dup := d.clone()
hash := make([]byte, dup.outputLen, 64) // explicit cap to allow stack allocation
_, _ = dup.Read(hash)
return append(in, hash...)
}
// rc stores the round constants for use in the ι step.
var rc = [24]uint64{
0x0000000000000001,
0x0000000000008082,
0x800000000000808A,
0x8000000080008000,
0x000000000000808B,
0x0000000080000001,
0x8000000080008081,
0x8000000000008009,
0x000000000000008A,
0x0000000000000088,
0x0000000080008009,
0x000000008000000A,
0x000000008000808B,
0x800000000000008B,
0x8000000000008089,
0x8000000000008003,
0x8000000000008002,
0x8000000000000080,
0x000000000000800A,
0x800000008000000A,
0x8000000080008081,
0x8000000000008080,
0x0000000080000001,
0x8000000080008008,
}
// keccakF1600 applies the Keccak permutation to a 1600b-wide
// state represented as a slice of 25 uint64s.
func keccakF1600(a *[25]uint64) {
// Implementation translated from Keccak-inplace.c
// in the keccak reference code.
var t, bc0, bc1, bc2, bc3, bc4, d0, d1, d2, d3, d4 uint64
for i := 0; i < 24; i += 4 {
// Combines the 5 steps in each round into 2 steps.
// Unrolls 4 rounds per loop and spreads some steps across rounds.
// Round 1
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
d0 = bc4 ^ (bc1<<1 | bc1>>63)
d1 = bc0 ^ (bc2<<1 | bc2>>63)
d2 = bc1 ^ (bc3<<1 | bc3>>63)
d3 = bc2 ^ (bc4<<1 | bc4>>63)
d4 = bc3 ^ (bc0<<1 | bc0>>63)
bc0 = a[0] ^ d0
t = a[6] ^ d1
bc1 = bits.RotateLeft64(t, 44)
t = a[12] ^ d2
bc2 = bits.RotateLeft64(t, 43)
t = a[18] ^ d3
bc3 = bits.RotateLeft64(t, 21)
t = a[24] ^ d4
bc4 = bits.RotateLeft64(t, 14)
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i]
a[6] = bc1 ^ (bc3 &^ bc2)
a[12] = bc2 ^ (bc4 &^ bc3)
a[18] = bc3 ^ (bc0 &^ bc4)
a[24] = bc4 ^ (bc1 &^ bc0)
t = a[10] ^ d0
bc2 = bits.RotateLeft64(t, 3)
t = a[16] ^ d1
bc3 = bits.RotateLeft64(t, 45)
t = a[22] ^ d2
bc4 = bits.RotateLeft64(t, 61)
t = a[3] ^ d3
bc0 = bits.RotateLeft64(t, 28)
t = a[9] ^ d4
bc1 = bits.RotateLeft64(t, 20)
a[10] = bc0 ^ (bc2 &^ bc1)
a[16] = bc1 ^ (bc3 &^ bc2)
a[22] = bc2 ^ (bc4 &^ bc3)
a[3] = bc3 ^ (bc0 &^ bc4)
a[9] = bc4 ^ (bc1 &^ bc0)
t = a[20] ^ d0
bc4 = bits.RotateLeft64(t, 18)
t = a[1] ^ d1
bc0 = bits.RotateLeft64(t, 1)
t = a[7] ^ d2
bc1 = bits.RotateLeft64(t, 6)
t = a[13] ^ d3
bc2 = bits.RotateLeft64(t, 25)
t = a[19] ^ d4
bc3 = bits.RotateLeft64(t, 8)
a[20] = bc0 ^ (bc2 &^ bc1)
a[1] = bc1 ^ (bc3 &^ bc2)
a[7] = bc2 ^ (bc4 &^ bc3)
a[13] = bc3 ^ (bc0 &^ bc4)
a[19] = bc4 ^ (bc1 &^ bc0)
t = a[5] ^ d0
bc1 = bits.RotateLeft64(t, 36)
t = a[11] ^ d1
bc2 = bits.RotateLeft64(t, 10)
t = a[17] ^ d2
bc3 = bits.RotateLeft64(t, 15)
t = a[23] ^ d3
bc4 = bits.RotateLeft64(t, 56)
t = a[4] ^ d4
bc0 = bits.RotateLeft64(t, 27)
a[5] = bc0 ^ (bc2 &^ bc1)
a[11] = bc1 ^ (bc3 &^ bc2)
a[17] = bc2 ^ (bc4 &^ bc3)
a[23] = bc3 ^ (bc0 &^ bc4)
a[4] = bc4 ^ (bc1 &^ bc0)
t = a[15] ^ d0
bc3 = bits.RotateLeft64(t, 41)
t = a[21] ^ d1
bc4 = bits.RotateLeft64(t, 2)
t = a[2] ^ d2
bc0 = bits.RotateLeft64(t, 62)
t = a[8] ^ d3
bc1 = bits.RotateLeft64(t, 55)
t = a[14] ^ d4
bc2 = bits.RotateLeft64(t, 39)
a[15] = bc0 ^ (bc2 &^ bc1)
a[21] = bc1 ^ (bc3 &^ bc2)
a[2] = bc2 ^ (bc4 &^ bc3)
a[8] = bc3 ^ (bc0 &^ bc4)
a[14] = bc4 ^ (bc1 &^ bc0)
// Round 2
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
d0 = bc4 ^ (bc1<<1 | bc1>>63)
d1 = bc0 ^ (bc2<<1 | bc2>>63)
d2 = bc1 ^ (bc3<<1 | bc3>>63)
d3 = bc2 ^ (bc4<<1 | bc4>>63)
d4 = bc3 ^ (bc0<<1 | bc0>>63)
bc0 = a[0] ^ d0
t = a[16] ^ d1
bc1 = bits.RotateLeft64(t, 44)
t = a[7] ^ d2
bc2 = bits.RotateLeft64(t, 43)
t = a[23] ^ d3
bc3 = bits.RotateLeft64(t, 21)
t = a[14] ^ d4
bc4 = bits.RotateLeft64(t, 14)
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+1]
a[16] = bc1 ^ (bc3 &^ bc2)
a[7] = bc2 ^ (bc4 &^ bc3)
a[23] = bc3 ^ (bc0 &^ bc4)
a[14] = bc4 ^ (bc1 &^ bc0)
t = a[20] ^ d0
bc2 = bits.RotateLeft64(t, 3)
t = a[11] ^ d1
bc3 = bits.RotateLeft64(t, 45)
t = a[2] ^ d2
bc4 = bits.RotateLeft64(t, 61)
t = a[18] ^ d3
bc0 = bits.RotateLeft64(t, 28)
t = a[9] ^ d4
bc1 = bits.RotateLeft64(t, 20)
a[20] = bc0 ^ (bc2 &^ bc1)
a[11] = bc1 ^ (bc3 &^ bc2)
a[2] = bc2 ^ (bc4 &^ bc3)
a[18] = bc3 ^ (bc0 &^ bc4)
a[9] = bc4 ^ (bc1 &^ bc0)
t = a[15] ^ d0
bc4 = bits.RotateLeft64(t, 18)
t = a[6] ^ d1
bc0 = bits.RotateLeft64(t, 1)
t = a[22] ^ d2
bc1 = bits.RotateLeft64(t, 6)
t = a[13] ^ d3
bc2 = bits.RotateLeft64(t, 25)
t = a[4] ^ d4
bc3 = bits.RotateLeft64(t, 8)
a[15] = bc0 ^ (bc2 &^ bc1)
a[6] = bc1 ^ (bc3 &^ bc2)
a[22] = bc2 ^ (bc4 &^ bc3)
a[13] = bc3 ^ (bc0 &^ bc4)
a[4] = bc4 ^ (bc1 &^ bc0)
t = a[10] ^ d0
bc1 = bits.RotateLeft64(t, 36)
t = a[1] ^ d1
bc2 = bits.RotateLeft64(t, 10)
t = a[17] ^ d2
bc3 = bits.RotateLeft64(t, 15)
t = a[8] ^ d3
bc4 = bits.RotateLeft64(t, 56)
t = a[24] ^ d4
bc0 = bits.RotateLeft64(t, 27)
a[10] = bc0 ^ (bc2 &^ bc1)
a[1] = bc1 ^ (bc3 &^ bc2)
a[17] = bc2 ^ (bc4 &^ bc3)
a[8] = bc3 ^ (bc0 &^ bc4)
a[24] = bc4 ^ (bc1 &^ bc0)
t = a[5] ^ d0
bc3 = bits.RotateLeft64(t, 41)
t = a[21] ^ d1
bc4 = bits.RotateLeft64(t, 2)
t = a[12] ^ d2
bc0 = bits.RotateLeft64(t, 62)
t = a[3] ^ d3
bc1 = bits.RotateLeft64(t, 55)
t = a[19] ^ d4
bc2 = bits.RotateLeft64(t, 39)
a[5] = bc0 ^ (bc2 &^ bc1)
a[21] = bc1 ^ (bc3 &^ bc2)
a[12] = bc2 ^ (bc4 &^ bc3)
a[3] = bc3 ^ (bc0 &^ bc4)
a[19] = bc4 ^ (bc1 &^ bc0)
// Round 3
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
d0 = bc4 ^ (bc1<<1 | bc1>>63)
d1 = bc0 ^ (bc2<<1 | bc2>>63)
d2 = bc1 ^ (bc3<<1 | bc3>>63)
d3 = bc2 ^ (bc4<<1 | bc4>>63)
d4 = bc3 ^ (bc0<<1 | bc0>>63)
bc0 = a[0] ^ d0
t = a[11] ^ d1
bc1 = bits.RotateLeft64(t, 44)
t = a[22] ^ d2
bc2 = bits.RotateLeft64(t, 43)
t = a[8] ^ d3
bc3 = bits.RotateLeft64(t, 21)
t = a[19] ^ d4
bc4 = bits.RotateLeft64(t, 14)
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+2]
a[11] = bc1 ^ (bc3 &^ bc2)
a[22] = bc2 ^ (bc4 &^ bc3)
a[8] = bc3 ^ (bc0 &^ bc4)
a[19] = bc4 ^ (bc1 &^ bc0)
t = a[15] ^ d0
bc2 = bits.RotateLeft64(t, 3)
t = a[1] ^ d1
bc3 = bits.RotateLeft64(t, 45)
t = a[12] ^ d2
bc4 = bits.RotateLeft64(t, 61)
t = a[23] ^ d3
bc0 = bits.RotateLeft64(t, 28)
t = a[9] ^ d4
bc1 = bits.RotateLeft64(t, 20)
a[15] = bc0 ^ (bc2 &^ bc1)
a[1] = bc1 ^ (bc3 &^ bc2)
a[12] = bc2 ^ (bc4 &^ bc3)
a[23] = bc3 ^ (bc0 &^ bc4)
a[9] = bc4 ^ (bc1 &^ bc0)
t = a[5] ^ d0
bc4 = bits.RotateLeft64(t, 18)
t = a[16] ^ d1
bc0 = bits.RotateLeft64(t, 1)
t = a[2] ^ d2
bc1 = bits.RotateLeft64(t, 6)
t = a[13] ^ d3
bc2 = bits.RotateLeft64(t, 25)
t = a[24] ^ d4
bc3 = bits.RotateLeft64(t, 8)
a[5] = bc0 ^ (bc2 &^ bc1)
a[16] = bc1 ^ (bc3 &^ bc2)
a[2] = bc2 ^ (bc4 &^ bc3)
a[13] = bc3 ^ (bc0 &^ bc4)
a[24] = bc4 ^ (bc1 &^ bc0)
t = a[20] ^ d0
bc1 = bits.RotateLeft64(t, 36)
t = a[6] ^ d1
bc2 = bits.RotateLeft64(t, 10)
t = a[17] ^ d2
bc3 = bits.RotateLeft64(t, 15)
t = a[3] ^ d3
bc4 = bits.RotateLeft64(t, 56)
t = a[14] ^ d4
bc0 = bits.RotateLeft64(t, 27)
a[20] = bc0 ^ (bc2 &^ bc1)
a[6] = bc1 ^ (bc3 &^ bc2)
a[17] = bc2 ^ (bc4 &^ bc3)
a[3] = bc3 ^ (bc0 &^ bc4)
a[14] = bc4 ^ (bc1 &^ bc0)
t = a[10] ^ d0
bc3 = bits.RotateLeft64(t, 41)
t = a[21] ^ d1
bc4 = bits.RotateLeft64(t, 2)
t = a[7] ^ d2
bc0 = bits.RotateLeft64(t, 62)
t = a[18] ^ d3
bc1 = bits.RotateLeft64(t, 55)
t = a[4] ^ d4
bc2 = bits.RotateLeft64(t, 39)
a[10] = bc0 ^ (bc2 &^ bc1)
a[21] = bc1 ^ (bc3 &^ bc2)
a[7] = bc2 ^ (bc4 &^ bc3)
a[18] = bc3 ^ (bc0 &^ bc4)
a[4] = bc4 ^ (bc1 &^ bc0)
// Round 4
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
d0 = bc4 ^ (bc1<<1 | bc1>>63)
d1 = bc0 ^ (bc2<<1 | bc2>>63)
d2 = bc1 ^ (bc3<<1 | bc3>>63)
d3 = bc2 ^ (bc4<<1 | bc4>>63)
d4 = bc3 ^ (bc0<<1 | bc0>>63)
bc0 = a[0] ^ d0
t = a[1] ^ d1
bc1 = bits.RotateLeft64(t, 44)
t = a[2] ^ d2
bc2 = bits.RotateLeft64(t, 43)
t = a[3] ^ d3
bc3 = bits.RotateLeft64(t, 21)
t = a[4] ^ d4
bc4 = bits.RotateLeft64(t, 14)
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+3]
a[1] = bc1 ^ (bc3 &^ bc2)
a[2] = bc2 ^ (bc4 &^ bc3)
a[3] = bc3 ^ (bc0 &^ bc4)
a[4] = bc4 ^ (bc1 &^ bc0)
t = a[5] ^ d0
bc2 = bits.RotateLeft64(t, 3)
t = a[6] ^ d1
bc3 = bits.RotateLeft64(t, 45)
t = a[7] ^ d2
bc4 = bits.RotateLeft64(t, 61)
t = a[8] ^ d3
bc0 = bits.RotateLeft64(t, 28)
t = a[9] ^ d4
bc1 = bits.RotateLeft64(t, 20)
a[5] = bc0 ^ (bc2 &^ bc1)
a[6] = bc1 ^ (bc3 &^ bc2)
a[7] = bc2 ^ (bc4 &^ bc3)
a[8] = bc3 ^ (bc0 &^ bc4)
a[9] = bc4 ^ (bc1 &^ bc0)
t = a[10] ^ d0
bc4 = bits.RotateLeft64(t, 18)
t = a[11] ^ d1
bc0 = bits.RotateLeft64(t, 1)
t = a[12] ^ d2
bc1 = bits.RotateLeft64(t, 6)
t = a[13] ^ d3
bc2 = bits.RotateLeft64(t, 25)
t = a[14] ^ d4
bc3 = bits.RotateLeft64(t, 8)
a[10] = bc0 ^ (bc2 &^ bc1)
a[11] = bc1 ^ (bc3 &^ bc2)
a[12] = bc2 ^ (bc4 &^ bc3)
a[13] = bc3 ^ (bc0 &^ bc4)
a[14] = bc4 ^ (bc1 &^ bc0)
t = a[15] ^ d0
bc1 = bits.RotateLeft64(t, 36)
t = a[16] ^ d1
bc2 = bits.RotateLeft64(t, 10)
t = a[17] ^ d2
bc3 = bits.RotateLeft64(t, 15)
t = a[18] ^ d3
bc4 = bits.RotateLeft64(t, 56)
t = a[19] ^ d4
bc0 = bits.RotateLeft64(t, 27)
a[15] = bc0 ^ (bc2 &^ bc1)
a[16] = bc1 ^ (bc3 &^ bc2)
a[17] = bc2 ^ (bc4 &^ bc3)
a[18] = bc3 ^ (bc0 &^ bc4)
a[19] = bc4 ^ (bc1 &^ bc0)
t = a[20] ^ d0
bc3 = bits.RotateLeft64(t, 41)
t = a[21] ^ d1
bc4 = bits.RotateLeft64(t, 2)
t = a[22] ^ d2
bc0 = bits.RotateLeft64(t, 62)
t = a[23] ^ d3
bc1 = bits.RotateLeft64(t, 55)
t = a[24] ^ d4
bc2 = bits.RotateLeft64(t, 39)
a[20] = bc0 ^ (bc2 &^ bc1)
a[21] = bc1 ^ (bc3 &^ bc2)
a[22] = bc2 ^ (bc4 &^ bc3)
a[23] = bc3 ^ (bc0 &^ bc4)
a[24] = bc4 ^ (bc1 &^ bc0)
}
}
package matrix
import (
"errors"
"io"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/crypto"
)
// StateMatrix implements a stateful keccak sponge with the ability to create state commitments after each permutation
type StateMatrix struct {
s *state
}
// LeafSize is the size in bytes required for leaf data.
const LeafSize = 136
var uint256Size = 32
// NewStateMatrix creates a new state matrix initialized with the initial, zero keccak block.
func NewStateMatrix() *StateMatrix {
return &StateMatrix{s: newLegacyKeccak256()}
}
// StateCommitment returns the state commitment for the current state matrix.
// Additional data may be absorbed after calling this method.
func (d *StateMatrix) StateCommitment() common.Hash {
buf := d.PackState()
return crypto.Keccak256Hash(buf)
}
// PackState packs the state in to the solidity ABI encoding required for the state matrix
func (d *StateMatrix) PackState() []byte {
buf := make([]byte, 0, len(d.s.a)*uint256Size)
for _, v := range d.s.a {
buf = append(buf, math.U256Bytes(new(big.Int).SetUint64(v))...)
}
return buf
}
// AbsorbNextLeaf reads up to [LeafSize] bytes from in and absorbs them into the state matrix.
// If EOF is reached while reading, the state matrix is finalized and [io.EOF] is returned.
func (d *StateMatrix) AbsorbNextLeaf(in io.Reader) error {
data := make([]byte, LeafSize)
read := 0
final := false
for read < LeafSize {
n, err := in.Read(data[read:])
if errors.Is(err, io.EOF) {
final = true
break
} else if err != nil {
return err
}
read += n
}
d.AbsorbLeaf(data[:read], final)
if final {
return io.EOF
}
return nil
}
// AbsorbLeaf absorbs the specified data into the keccak sponge.
// If final is true, the data is padded to the required length, otherwise it must be exactly
// LeafSize bytes.
func (d *StateMatrix) AbsorbLeaf(data []byte, final bool) {
if !final && len(data) != LeafSize {
panic("sha3: Incorrect leaf data length")
}
_, _ = d.s.Write(data[:])
if final {
d.s.padAndPermute(d.s.dsbyte)
}
}
// Hash finalizes the keccak permutation and returns the final hash.
// No further leaves can be absorbed after this is called
func (d *StateMatrix) Hash() (h common.Hash) {
_, _ = d.s.Read(h[:])
return h
}
package matrix
import (
"bytes"
_ "embed"
"encoding/json"
"errors"
"fmt"
"io"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/stretchr/testify/require"
)
//go:embed testdata/commitments.json
var refTests []byte
func TestStateCommitment(t *testing.T) {
tests := []struct {
expectedPacked string
matrix []uint64 // Automatically padded with 0s to the required length
}{
{
expectedPacked: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
},
{
expectedPacked: "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000019",
matrix: []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25},
},
{
expectedPacked: "000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
matrix: []uint64{18446744073709551615},
},
}
for _, test := range tests {
test := test
t.Run("", func(t *testing.T) {
state := NewStateMatrix()
copy(state.s.a[:], test.matrix)
expected := crypto.Keccak256Hash(common.Hex2Bytes(test.expectedPacked))
actual := state.StateCommitment()
require.Equal(t, test.expectedPacked, common.Bytes2Hex(state.PackState()))
require.Equal(t, expected, actual)
})
}
}
type testData struct {
Input []byte `json:"input"`
Commitments []common.Hash `json:"commitments"`
}
func TestReferenceCommitments(t *testing.T) {
var tests []testData
require.NoError(t, json.Unmarshal(refTests, &tests))
for i, test := range tests {
test := test
t.Run(fmt.Sprintf("Ref-%v", i), func(t *testing.T) {
s := NewStateMatrix()
commitments := []common.Hash{s.StateCommitment()}
for i := 0; i < len(test.Input); i += LeafSize {
end := min(i+LeafSize, len(test.Input))
s.AbsorbLeaf(test.Input[i:end], end == len(test.Input))
commitments = append(commitments, s.StateCommitment())
}
if len(test.Input) == 0 {
s.AbsorbLeaf(nil, true)
commitments = append(commitments, s.StateCommitment())
}
actual := s.Hash()
expected := crypto.Keccak256Hash(test.Input)
require.Equal(t, expected, actual)
require.Equal(t, test.Commitments, commitments)
})
}
}
func TestReferenceCommitmentsFromReader(t *testing.T) {
var tests []testData
require.NoError(t, json.Unmarshal(refTests, &tests))
for i, test := range tests {
test := test
t.Run(fmt.Sprintf("Ref-%v", i), func(t *testing.T) {
s := NewStateMatrix()
commitments := []common.Hash{s.StateCommitment()}
in := bytes.NewReader(test.Input)
for {
err := s.AbsorbNextLeaf(in)
if errors.Is(err, io.EOF) {
commitments = append(commitments, s.StateCommitment())
break
}
// Shouldn't get any error except EOF
require.NoError(t, err)
commitments = append(commitments, s.StateCommitment())
}
actual := s.Hash()
expected := crypto.Keccak256Hash(test.Input)
require.Equal(t, expected, actual)
require.Equal(t, test.Commitments, commitments)
})
}
}
func FuzzKeccak(f *testing.F) {
f.Fuzz(func(t *testing.T, number, time uint64, data []byte) {
s := NewStateMatrix()
for i := 0; i < len(data); i += LeafSize {
end := min(i+LeafSize, len(data))
s.AbsorbLeaf(data[i:end], end == len(data))
}
actual := s.Hash()
expected := crypto.Keccak256Hash(data)
require.Equal(t, expected, actual)
})
}
[
{
"input": "kYbKyRm02RR58P+t8WPE/UNL4zmr4XIe3qfMfFwRZVWlpzgDSmAXGNhqCGJZivDoNDRM1zrLaPAk5Ol8dAyi3shQgLHaBur7TLczzwxS9b8rU7WKPhTMsK+zblk3ps19yKixxPMjzMA5L70JOy0ng7/ZoJJhMuHC7TD1SYL5LEA=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x87d8548924b20b95fe1ed923236c44d2f98b8dc7a3c8c378e4193cc2745b1e8d"
]
},
{
"input": null,
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xb87c3be3d5bf2230e08186014204ab2d4e5eb457ec9e95fd4a703f9f97b8c49a"
]
},
{
"input": "d2w7VVWNxlrhpX8iaT9gU3dqU/LStT7JDOxkPmKDpdExTm23fLcfou2UP+1koHU2XOlRU3gyde/InQA2axIOqmaWn7oU+Zyt8yChgn0fbY6icCcf3ILIKneVRxQQYef6lX7gloDl65pA85pQYZxSfAOIfqrMsAkWoebxmJsoTLSsCHSGrdlE8Cy9hzyNjx2MwnjwTc/GIrX+cpbEfnRXHTQSYrwHjILe57MaJ5EuVA==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x74df6384655843a30a8064467ece134524f68d18ca2e2290e0cd6f1c159d901b",
"0xb0729c23d40d7d05656a9c0af18caf4234b2d51f7b11f8ad091fb6c6c5f41788"
]
},
{
"input": "QbjuDum/N3hGQLgqXL+MCiPEUrt4bF+xejAngdRK3D8IOKnZfk6TaiGMdsG8vg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xafaa5d998cf20052dea34066e466691f3a59af8a6143b7ff5626f87cb76f820b"
]
},
{
"input": "PaMoGKkQH3/NFs0YYsAG2u80tRrxq+flLSff0yCFhe5akRB8t03nLlhPgofL80CDBxC0Yc5hGj7bxMVgg4mfjLQ8tKjfxYK99F+IO9cq5cqxHS/QMSQ97KgyNUVb89PB2JwdDuqbCe+RnioFR1MpKyroSJpfmFPt+icQ/OZs6bVKqCw2TnALoheU/9r8MMDWW9NdHzf72ZZJC8UPa86dhESNMnL5VYv27wZibh8FaNw5oAFmEg2C8NBn2RsIkn9yEBD7M1YVA/7QDJghK7iVYhy5x7Hhd+VFikbBmgbWJKG1TQuNc5T1+iYS90GOvOHBwFbJB4/C4b5gUAaJcc7Y4V3/nUPhVMGHj+PA5emMS3J/9Qt43RzJa0/fn0LtCH4mvx73Ll6a91iINQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xccd955f751642425fd9b3bf7785da8c9f6e9d55027d1048ade2b9f0a3071860b",
"0xf77a4c6e252daf3f67bbe40f3275aa854418b0e0afb389bfc4425899898b1953",
"0xf3402153d5503ec0a32cff2b3590764fb284d15f77a6688a6f5d0fc579c7f64a"
]
},
{
"input": "vKG+6yYjKSdPcwd7e0iBfiwk7dek86+aVEoSgpkf9IdxiukoQFjZsx4XiOHcwv4=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xc59f075e03c34088cfe44693f1260a94c0ebb6075b07c00875d0c2c072a87708"
]
},
{
"input": "8qf1VUYedwv+s6Swd3mfEOvga7Hq/DGOXlV/zZucPT1IdXnG119li9Q+ELxWLSMXD4T4TKoeQnyOXr0t7sNLguKzca1Ra5+iZKCWsDQD77wGJgjh+rVw93NupUjHOtRYyixRVBHe/NrsQIy248NZc5B7fc7XcND3wFDk6gsqiXWmoSdu7ak6n23IruOGlZ5K1ZhlXh5ax1Z3YDfdJQSFbeGcQg0RVg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x73aa7c55e21e7d1da31e759983a2d81d88ad9306b45e1448c8cc7fbbd8f48e57",
"0x640dd808bb3264f28233d889b062c26fe80cf4477946dc0162cfb3033aa92cee"
]
},
{
"input": "3MZjvdJnTVg343pKZjz1OVl1yY8e+Tg8tKM4lPZHys+s0w4R8f6n1Iz7k00DCF3GLQDk96PaNBlGoLZBYjp5EXqXwj/o2q0gYz9wZXxDP0Lkkqo24PRExtAtIPUmVMKOtjpsQ9hnZtAap9fI1CYcokU0ub+HwsB6aZcekWEJHCbfiQKt2eojkVRs/6TGWfyhSo1CB5jZh42btX9NcPY0+NvfcVk+pM34GGgrH//bMDx952t6MxwgN3CevaJMybeZAKzikCvAZU/xj9mPD1WY5tW+YKN1/YoRRba6mSDKkAcYv3PZXk/mfLISvXD1wlIJVjCwffN0d7nhXzha7tXpdkkx4r9/TdwaXMkWFuEBN1Xd0yPRWTELFos=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xf483f22d3ab0f7ed87d97b62150f67e41ea771c0c3cdb6187d041756d3e93aaf",
"0x86a10716ffd3208dc77e6ccc5b7a614c9e0543db2058dec6e3878605237a63d2",
"0x9ae0878d45796e55b8b866a1c91672b921aee33964af6351f8221c996058e03b"
]
},
{
"input": "3EMdZkAwjohNpPLE/zR6nAXNkEk4DP0eNuXjKgQ0hDtQ2mdnsbCCwJ3Lih8qsVTyGRNc/xfZHc/ChlntAvTunU92p0JJvP7TMnyAZUPmmqGWtvk1vne2KbDXV0sD/sfhMG5cW8vHt8XGq7S/2GsljPjUjZyHV2Gg0s0G/r4W/FPrMw/GNNKKP9GQXfSDnqoUYRdJEtnz8rWi1w==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x5ef96af187147cc0ab594b8989269a10417a1aaa8dc382cf82ca5febba03d2da",
"0xef1e1ebbd234ac51de0fc268f182b1b5b9d27f98d5052d59aed0fa8e0bcb6b5a"
]
},
{
"input": "JU9To00l+wzr7e2q+IGxvyanpdY8nI/LPGy9YJye2BlWkUPvDyXBSWwKzNML9rgCtNwvfMp49Yv0dkEjuOsijZaOi1OVB+uTFrw2NHaoK6t94riJLLyGFo3ObYsTFxXVYqdRUv3y8dqOyrJ2bA9rXmnExDFvLSkqE7grxQ6rW3MuiMGaLsjObw7L+yOey2P5K8GSnjgnvSl1PSFdTvcW0XwNiUmxF9mj/CLl0VLj0+tcp7PTOL+rGda+ERID35cNSxAqiy37r1RD0Aku5e3A9KlRW6XY8HtitjgbUgkyncd/+i49XLMOy6Z7+VRHW5ySOMQzBM4aZF0494wo8+hnYkyOQF4uzQdqp1nE5fAmpwG6ZBS1Il2d1IulXjjdcY+wTCBzWQZoRnxxYbU=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xc2244d44050cd1bf8c48ef1fd151118e24d0f4d055c6f8e2d9380393ecf536db",
"0x4217f2d70fe289c61f167410b02f0e21cea079e677abc7211e3419acfbfbb68f",
"0xbd91622393a0ce9bff67d7746746e9510fc00f9333d76461c17cdfa3dbfeca1f"
]
},
{
"input": "U+4ryEt1iB943t/XSZVdzLlwakB+Y+hPoG9iSrjOiyfL08ir1RT5PgquCmGzHi6wz6h+F5NnmByCJym79jxR9kfWm2I1B03pT0YwqfX6Z3t2RRDbG68VVK9vffAb+8tyReLczU+rF+PjF4KPhBeKIjHJ/D1QapCnCpq5wwVMOGixw7qr+SNPamMjg/KbVCNI9oaxDlyoXJy1cG3WlsU2OXRpUX0Ny/58kR70fXyjLIEADP7VRgz2M5k74W4PWd5XzssOnajYJ32tgAMLdje3NGyupp5c10LZjO3F2tks7POoMmzdNPrlkgXnfmwPsj7e8+Dq14LHVPOVWIMw9dpx+T+empmJNCLXNdkQni0ONijwtKc5iARcIe4NB6l0q0YiEw3w3MjK8E5BKG1j5w5CIx1MIfuUc/4yp842Geiv08u/4yhBIPgEUtdGqdQc1J3hDZfWgs/434158ANQG8kbE9Fcr0/phrlh5+fIkW1tVKrtwrmNG/YCE35gVLKd6pJ+MBG1WIN30f1yiNfde9HU20fjcV8Zw90ir1GYr1PNchXGG/FuvDrLkd6m2IbDNzsQuijBCRxefsjcJsnhuZgs3WkSCaRr6q9ka0o1yUQKigfYLR/ern3rF4G+dOlV3zh6Vm832UPqRP5J/VNYjVqajjx4MALzQ7OkIDGr8T/Hb2cKxMFWc5xoEf7yZgAGC2N5jyQUSw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xc0f0ab359c32b6aa50a73d3aeaec405c311434e1029ab5b4069cce69bc621047",
"0xab029840421422083410d3ea591cc1d6d7f987e11fd1fb41673e4886cc7f9ec0",
"0xec87dfbf5373bbf99dde1e23353bedfa596df7887141406cc75a7788c75b1725",
"0x26d05dcd547e9c12fd9372c7a72a756d43eab9b1b184f573e87200e516f5199b"
]
},
{
"input": "ivixMAmdy1yLuqm6Z95ZCzFzPgJJwLbWxMLLECdqYwqyjscxsa55NlLoGIA6wdMUNjEYHifxsmhXRhfvu9vPS3nXJ0oLzvnwLtHp8nZJHfGfcVttccT3c5ODPLaxYArShpMIbeBOu7Cp5BrYt3WnjoWkdpvlD0SJex8VP4mz/XJ0bTt2/xyJg8GSQbyxQn+GzCnpUKDPPK9L8s+Fh/1tCYdzbX+YzCeW9+8vXkoVTQ9QrrPBxgU=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x89271427bd0052876b950a60146c74fa471497eaa803e2c24c4a358c768019a0",
"0x41235a392b38e63d2cad93c5a5cd4f9cd4caecfbd9ef0459dc4a17c2893f37a4"
]
},
{
"input": "Ck5zoYOAXqv3Uh/+JT/v86YSU9pO47Tg0RttlXad8wZnXyOVT6XqyFT+LpDufiRtYLWctKgbSOYGm/kH3UNbLDRdCItm6aCom/0HJ++ZvhUu8dX1FG1S4P+Jr/kNuokvOgHFTlQhrp5sIzD9jOqPSemxWmXhjbRbU5LuSz53AHxg/OshWA1CokEDDfH+2DrEBVDnqXHXBXKL3McudqosDj/jU1NW50GVlX4ZGjyZLYF5jxVfIDz4vFzW6uThNoTyJ+6jMWl1m93FSylA8bFtq3sxz9yMYnKFESv7YvsQND5EpwnoGfWK9ff1OHLv3XSY7AQv5igZpOkA2rBOdJFT0KH+kj9SKxPH/SnZgIjlNVbCALMgt81ZTtBS1CioTPIx2eAKKiEjn8ESVA1O5oTP7fxF1xvtj/gM1M0dOhY+u4c7jnWmcIDCVyXhBqgTkrhPqJ8eKXdTF/p5cmjs34gjF8TFIL7+",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xbc47fa6d888b9725f9d5c4d7b586161e7fc0fac8049df9b36d39dac2f5a6c738",
"0xfa87ab1b88d828bca2748721f15f86f725edf0d3f578e172a013cb2e8d6fec00",
"0x13921647e516ba9af4a595fb8141525a79c78c1f00fb7837a07682871efe1289"
]
},
{
"input": "6HjAPGpmaPGPLCx9xAj1Vhl8nKdgpXryqReIbBsNyxDJuqaJW5D0Te4+UWi2yYdbAy6fQPmq73XVG+N3sVHNt7vbKXNrVvSpoCS4m+p0PsFNztulo15r/gxcNeCaI9IKf+m8D0TSNFYYfOhF4k1aZS+74bWrcgYuOmeqv6XgdWR7mL9UjK6+AZryeUyEChjqydX8JGK8soYWOWNrTzV2u6GizHeOCFed8cZ4mXhdEjzlAcKjKxEO24f8qih37sI+6V6WokMW6+E/LZqQ/VxaUqMfTjQVoJ/RRsS79jBAoJ1yi5/oCu+3kHE3leNMMN7aJ+8nnDxuG+jW7ckYdNcjCFoSQLibTGxIbUPixXY4ZCDenuELGETWRy2wFuZllZBD+sRyLtcHPGREFO98GIgfNGBN3u+iCgY6jw2LRWUCkeLtzwWvx7WU4tTWDm3NYqhCQFuo1pH4ttX/ah/RnD+nt8tmdgwKcLeV+pOvNO/MAyBKNi9qbtmMexH8nXyC1immp0u3eVfhJ2DjWGAto43k904V7KJuUDnrlYkikK0sGX/w/qVUfPJFhjaFvF2bSDGAvywCQ53sO8ZgCTWUn66kkDgEpudtLQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x60fd3e6b5913fc082a47e438c988fefe3da4322870d961d27d330b6d3f7f02e0",
"0xaea0c1b37e1e2705800f5b90a14284a9bc7eca441368b493516961b3a98e1a13",
"0x341f062f82ad17beb00c8a01a18b17783cf2987fbf3174f768ca42a5a19069e4",
"0xc6f3092dbe89d9406fc98aeb99de16f69c9045dcda1f9f72f81537c0e26ab71a"
]
},
{
"input": "+CYzcP/9LE+EdqOG+9a5RTQG00FP7wvzuwEsw/yuTYI+xxGehPkz9n5YKlJ3BrjkX3jQv2jKM98fMEvSkiJ2+u1sB66qmILE0m/4SDeSRXVphqrP758vExOEsL7NHEgBVd7IvslUFU7gSMZ0+ee1ee0CD8i51lBcpP7rQK3kheu+6RuNTQK+8SJ+bpWgzYqpXisZGIXDefKhANcQWDs+dg4xo/y9FyluuECVtzSGQxwDCLmZDfvKXLozcl+f8wMbRE2MXNMwVYefP6uy0/GgEXIDkwPH4o9dv65JBnlTyUDBEIdB/fbEJRneWTOxOl+SyRz8FLNCkygP953Efo0fcXpKjbIrzuROgxyI+3Amm0Hsj5Zl34RErO1p33m8NBnMK6jBHeXcWp/40tZTmF1j2TE8xyzt76cC9ancmkoipvVCUmyp3S1XWUQZWVrSCdY7QPLXcG81AsdoCwlOe7ZpL5h/b8AZ3wr6ccu3qjYtmfsRLkwA+oUTsNJ6Xr/cRUKhumCdDU0+CLuo6UuNTq4DNPVJNUF4XtFjMh/UsR4GfOts7SBtXjOQgIJf6YAl0S3Cl1bhR9g2hvZyuXxK8kTfwg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x49837749118bd52989e66683b0c390e648d6bd14617a48db4fb0ac3c23fa6002",
"0x38c6d5cbf76e73a3fb3f8c056e936dccf9e8b2fe6379cebd58a5bd3358e0da52",
"0xe0d2db8687a4e0f0e475fc73a6b4d01b4c2798588940c476313111c3e2eab19d",
"0xeec6ab48f1d2149b86dfa43a21ebce258f2dee0f29cc3b133cf94f8eda6f2cb7"
]
},
{
"input": "V+Je3MC72y9Nj/ndRQ22pHbmfIk3L04GyLRx1y8NdQ8MW/VDtk4DFoJytmVgYMhgk14XRGrdjnRV6qZjElRbxhYkKOCVPMlHfFSLRuJywuMrbZD/ED4enQkcwGBbc0y4xD7SGMxmAN/xe3s115EKb7CmMd1OJKgFXtWCxjqZw3+cTMckBaTamyAhF2wZOFqLCiwACHeaSNuxEfr4tnKt0/WORdepDMBFHQQ2PyyRV6rSpX/wC9n9hTipbADlW+UCoiM0ohC9s+4D89xUWElcl+e0EsomsKduFctgqrExO9O5qkY8buHJZWViNKvpoTaRBfeYCaiGh/rHOBzyC5wfp5gloXw7vOkWV1pB",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x1f98ad3e4862403d0ab27479c5949c3e68f715806316dad1139287ae00e9e936",
"0xe25797a6a442516c9fe6adff1104f7238df721e74f26494958ac5d0cfcbdad54"
]
},
{
"input": "RyWgwd+Qr5ZO+DBrEHeoHOYKkGSv27AC8AUv7u2tGD8nb4x63hVOAvXbiJNrHqz/hiKCN0PS04CHDVDuugALETTnNJbBzxsXxFQut7x1sQgTrfMI9ZYusMnUgKZU8qgNk0b1QYWEbTOvaCLpMQ9oeyjJbMqIv8X9eqZx8vwKreJvKEa7WWJIxCaLqhMme2Lyq7So2I9YGpAgo5QRbxHSAARLIdtUA66lE37l1Fx+JNlwcl4GD30X1sU9GUdZOtzSHyowWzjz0actn3rjVSmGaOuS3Ah2/gvjQYWC7i3M81anjhdV/2ZCY94AYpr9Lqs+kMxE+nAoBNmJfBoJTZBJrIPqigbSouhH0ijV/5TbuMwfAUQfxSI5ZXQMwdxGwuBImixeglEtxvaYqyM9OJz8n3RHlO8rbSIR8yxShm2SAMn3ry/GoRH5xlxUbLdWN/Q965PJUv0KDi8Vovdj+5ic1XCyLUvWV84ptZyiel+UZdb/CS9YHoPkbcp/GWQIvAUWpNg493eNfwbuZqI=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x9306fc1d963a177e83f4294d9eb3925accaed510895a1e3f574891cf55129601",
"0xe2c0e7a580553e21a6a6871769ab80e27077320bc12104b8292fe3e42f753b75",
"0x4927ece860e24003c45d18f0baec468dfd68e61eaef117b9568e2bada6743903"
]
},
{
"input": "7uyV3gHKCTWno05X0NsqCo+ecSbBndWk2chOcOj9/OEdE2e8xZA9D2PwsHc0Pa/kD7Kz44HRg9tZ2x12S9+8tyrX1Xt3qSVa/rgq9tCp2pK47d/ErS2uMN+7z6Q5YjoCb8opZhOVJYMQ1ydyjfKHklPbkWwe5fxZ8kyX7v1om9RgetMEJC6N++NZA8EiTg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x6aa1207bbebcbdb562d89afcb3cc5eedd746af84a099ee5782d39c02a444c866",
"0xbebbf678447f96212658092d091eb3460ab4f40fd714c02f2526dc79e0853f74"
]
},
{
"input": "TOjxDmmIhy7Mlq4a4V11/CFNbv8NeLrJ7cCi9m2fT537JagWJiMdobTVLNuN71dEO8ER074q5m93RkHwt7oJ73+iTUWGiYgfU5yo6hAIK8kV+Z/lL2p7SGza+xJkbTnrR5lfeNyhynrWGL+TqR54y5ZustFTvDEVWCTk87RjXYUHzseDkYE3JP8AHxKQzZgc3GCTsDjmrtzd1SkKb0s9uF15CfGJqAx+wryGlfkeWrAhf72hp5YGH8Umo5onUBWPvWQyRzHUFKv6LX92kGsJ5t9l9iSuYK6rSmMeTYM3LNM2V2S+vGreS+kzLWa1yJlaiQqN0mEJwdvSzTxbBwt6C4y76+hGmY3Puq7fzN5esJEdsXQh1JBjxG3bGZ2JsJHUF9xaxLN5XVRnMNwykHCW/AV4GYNVlB5tJvwY6bKORgvcf5pZN3iw5QZUVlc8a7KEoyA7e1PxSQiulTp1Jx5tD8WJkSFr8Yh3Ce5Pm6H+48LY4AZV2cWIbsq1FJAPMMxcmejnGxN1sG27SLP/HS/7YOJfclRTPy+ZR7DGcwBwj/TKWpWW/OTlMVv2mPrJVUvTD7qQ53PXdJM1FYQRMolHHFEK4ggJO7n12eyDqKR+aHZYLED8Izt8hUrpzAOTstFX3iov0wEr5N38ldQ2stYA7d/X",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x91bc28ac308d1ac17d009f234d35738e9b1692439304b54459d3a2495eb3b616",
"0x07c48b7c309b8cff89cd1c96f7596ebd1218f588aac8238f5f81704780e4ad93",
"0x43673747aca7a3e7428f4ed0702b099e4cb6b3a07b9d876cfe26c93827c7c48a",
"0xf9cd4a3c8e8110e3d72dd2196cddfb4e7f7c0cb487743ab4b0d7c27e9dbb203a"
]
},
{
"input": "AvTCu82tHn4vqAeJvRF0D0ZzROQvXqApfQS8wMMPGYeMKMoxv1ylmcZVy8449joQXyI/MCvRBw9ifmRPvvQrz6hAEFrrc9vnVeOGZ3JO4kqqwtXCsBk0uWdX54fTJwKltF79gR2FUWv6jdub+vIPPc/2GNV24VwrYCLJKM3ngc/V6MjklLR2SUufmcU13Nz1GZrNegoEwXzq3SjSX7Jy+UBMaD3OIqwB6TP83BHVlgDGSmyROUcFtXs/P7xakgS4ehCQImklzuDO9DRdMOHM8QVG+7Ru5liTcdnLHGZmuw9w15xzukp3lcBz9r0YE4JpNp88jHSRWy9je1YLiQZqCzsezJTZayTV+PDg7yhzknV7I9ilh9F2Km715Uq8mfqLoSu3P8jhFV6TpfxdbTsf//GiOj2vn50p1OTpw4szVojg3zKFM8LBIsnBlZlhjehSik5/UgXkXidGxftAIgs8QpK1ZM9+Egq77myavndGABvf4Jdj4evZPxg/7lbfF5M5NMRta3z2EL7F",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x7ecf008045f77c20bef4585b6fd642c26fe09f2f56a5acb504cfd4bce2e3fadc",
"0x253fb668c2363e1f74df922439adbe18e4825be8bf1f900b13c63fdee66855c5",
"0x9280e4e10b784a59a620a6e7f6486dc9191529cb19ecb76a909cd99797f269c4"
]
},
{
"input": "KxErXRtL1JhC7Tl36SnTA6yN1kPJ+FHWHd9Qw3EL1nx7/WjXd3adHalOH+IoiUE8avgcjU0OswihibvyaphqgjYW4aFleB50E4ezd6d6mh5uWbXJM1NXdmUH8BBwCmLoJokM8lv16OJSqavrVRUEcY8Ldl09pmg83KO4wRxjhVe20DUWBnTXztMNlx4HaAcKN7Y67KZQ3m9Oos+CdAL75Wytioo0WVYhef2zg2ZdreOePOACaK+6alFL81Iki/C8Uja2v+YjX8YUs0AsfOpWOZL/Fn8p7BizAwYj",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x8a396ea38a21ce7e46777864c464f655b0774045c084d8aa04d5f62ce1ceea4d",
"0xf72e61753fd7f471e01d8ad73e725b8251d981ff03161a9b21c195b59bb9e05d"
]
},
{
"input": "XCg8YCiTI2f46kIaq7zPtH6/qXjsCjjTqJ9T8OIRWrxk7S44HcXD/V72OryGTkghwWJEaZGE3h8iSOeimpclxuVoHl2lgucVrja/U9cqgJryH3pMiikQnrIxRiWLdVfrkYK9F98iNxwd3cbZMYd6MfH620ISHBek84dz4+Ae+aeyLlUd/CKwHZ1CZYOymLaRvlkviy7vhqq9Fyrf1FYXg+bp/gLUxup9cNsX1Q1/OVbieyhOFd39rXJ6ACxWfGZCMPJ+Wuse7ngKebZ2he+G96hX2dUWGSOYxsiozqoP9kg=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x3840877367d901f1bf14f3d589aed7e83948595e0222868a08b59873cb9230df",
"0x4ea862d23c02f1a6cc17dbf5ecf1822fa357304128fb6d2edb82a640b0a3ee09"
]
},
{
"input": "3tCzFeEQ/cLtfrIrf3xDuG3HIlg3bn9sOR4FFzYSjPqma9CORBkKrq1myqUT5/WFkFRB+6zj/17Kbl/T0M6BWTgQZktrDpup+xCiU2m7ZKqvYImjW1X638odReqVo6XdrC6NyFn9YE/ssHioUKX5FMs3X4+TLi9UmW3brrNfrkw+lum704sAPctDtMwh/LVPapDfhqZlG+f6yTrmp3D6oBLqwcrAMNjIJ5LRJHsI31XG9/Pcd99qCPyg/xzcObVq9XyDg5vX22dSDe204eesHUyfsc1z7Et6MQY99MW83Lp1CGKJc7EgDgj3",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x2b345b6138b0af72126dacf2bb933135ec22d9927e66905753ed4dd7673fbcc7",
"0x14b3d8fae959461ff1a0682c7e82d63477b4a1bdd83fd7425ae51bd1df4b3188"
]
},
{
"input": "bfAo9s0t5LyD6E/FL3YItSp7iHRxZsByDcTBKVGLTTYZUOEWd5PDCX0J5GgN82XcwfW8zko0e/ejkOrDk0fvVefhLAD8pcG17MbtQ4wnZ8yKUSAZjA5LMA1gz8MpSMsDWt77ZNb2HXGeHNL8BWu7WhuGzm8d2GpSNCm0b7IpY6mBi1m8LNByXyxkHauXXkNgK4qM/gMHWwsPsW7V344EtcM5YjhT6rfboO1zuAF2udqcZblSuHEQmq8psLJj0mj7t2EPY+p1yxmax8zkfG5qlJUNY+jOTiACzMGGFBOh373aC1MrrVd+Et0BX6IC+k46gZT/jIs2MBMeKl/0NGG0urvHvayTLJXYJEKzplvyDaR7PrUSdxprJIQHfrZe9LnOlZe4PIw1LHo2vrbJ+9TJPR3izoeeUPeIIQjSSG28NzJ5Iar+86ZdSTEI/LnXEaAYSvQ7X28ShxZuHThkWxi9q8pdEv9BWXc=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x70ca6cbbd65222ea5e90b0c595d1cf55b423e1503dd07edaffc5a4a8babf3004",
"0x9e04f3082de4ecf1669b7cb0b458a8cafe452a424b395808cc2262236b71b729",
"0x115b8dba0fc4524995038e8e06953799cefd0119c75b306020ec53f884480e8b"
]
},
{
"input": "Fn/bjMz27Pmo0ojZ1PbO1pulKlSVEA3NkoaIXezePMDDWhuLfbwngufLxwoyPb3cDAg8JZWXaE0O+liog7xV0p99KYUVOf2bmXcc/Yx1P40ikNkJT2zhhUoqaPBgBAsfSvw0eGBNmTer5Io/sjCdAaY46UnAVG0m303QSc7seGgY52p3Q+p0fblbjieR0iDmtStbnmeRMoc1CybVEWrkUM8mhnoHGzP8fe5i5BIOhGdOEhFEfNr/E128wwTjRYP80nAPZO2vx3sSIrYBl1uAAxglTZd1qqY8ds3LRAT7ioZSImxJgoGwQhaZ2g8zGBFRQlXu",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x5bb3fd28f16cf712e71ef328668bddb7304a23900d57281146e3d11379f787a1",
"0xfa09386208b45515b49b97f859070db73d59b4d5a701ac3925c9ffc65c5648a5"
]
},
{
"input": "aKNFw0pM0XmPQULBOYhXDEpG7xyGpTPpLKWdfAqcx/TsA8M5fxeCyWV01nQK",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xd587c1123b4ff0fa464810067afb76c630d2f55e699e10c87c0a0ef9b8066fb7"
]
},
{
"input": "1AjkmC7TXNJh/LirlVsFxMYFLR0QNB4Wiwi16JAepiRK42RpxBrbhNPOIJFX16r+vK31OWgJwxlCQamOACegcfgDYj6dRhQolfOFs8rccy7bYLsvUA8wgg1LBs4iQ6GJgZHkpaOq83zxZSqiZ+wNyhBH7ZRayhkti1XAbO3zZxJaG/RHfP3JKs6m/VOA7A47/unOIwaZjIsJZPLJABJ+wAhAXNQLQlgL+Tt9JWPr4mWW3d+K5iMNG4R7VJC8Y9MPVWX1P1/h64bToqRj4ELOp8nxsbDmEEnPmXpm",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x7c5a831165523b98e237daa7ec4f137fd85b4dd3e667bc49064cc31965129850",
"0x61fd8ed7abeb89608f8e48309f153b8885b4b4e4bea4c3b7e2c318b977737092"
]
},
{
"input": "7GzH5TVEhQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x1a1f489ba334d4068d05ea8347fd83a14a73082101f8d2daba09553485e73c60"
]
},
{
"input": "x9xGIRFaMdQq0l4MEJbBDSzCSTZLsd/0UkOSiHtALhd75Gi/c7ObBdk=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x1811020a0424b78b1697b9cfaf67ea339be0988c5bfa859725bfbb0aec7ed76a"
]
},
{
"input": "O3mF1GL0vHkl1aZEKundwta4m+07cngnlLAtOOlhZA2n9NVQHvffMRc7kgg1zs9nUWNPUcj+O994cRWgMC1k",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xdf980f53d2c8527c8438791243c129bd2aadb23872502fa0e4447e1b0b2202c3"
]
},
{
"input": "h0RMltv7EyhwfqVLrCEDhVvTJ1tNmbM+C0InbnQY+Kk5eUWfMUMHvUqR/Qgmg9aLlmoFROkcUpfH4AcMm0eFlxnav5yoWlJJmkLKR0CWUAT1jhsxkLOVqpNPWKRvl1IZSpgPW2Czp9SlYP7Z7yfrIovxoNM3qjNWiiXQIqmxl9rKXcXNY/jo0jla8avWXD7lIF7HbE0IWxNTqSwGc111TQUMrzRyonNz2uwW+2YzC4hrwJzkUfAe98pc7qWDv5iJyOU6iPhymXr1Rgead3DRgE6gpdOrVwWqLpUFajhk8LVKH0muEVsQqkSL3/RkuxyYJ1SdbZG0FD70wiGSTBlY",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xfa1bafcf85ada822d18184fbc939be33cd6bea9203d763a6baba6daa13e925c0",
"0x175913e44136b3a8b1eeb4ecd8544a12d5d79b98885c2453c7823a958245953c"
]
},
{
"input": "Gy9pBTkfOeD0fUr8zbC58w5zP6YqVJZGv52nGLRXSlBlWeJLI35GmP219qhBhPZipJID71G+Hmjea/IB/N4poRzxS+9Ky/7wQNWMOadc/d+VVADXPu71Cy9IV3w=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x85baa18bcb8dac402216a7c99c6bb508bfc96caabdfc83c7bccc0898a0389910"
]
},
{
"input": "JstIxj+GOiDJaEtSsZLg0MDSvXRLEFo3DhAkyInR0UA/i+s4R4YYvGUw0TCGsWsGepVPFYbTK+iivctM8ayPPEQGsFCVbKj78kG2QiOswmFy57L/8HhNatetUY9cwMDXwUY+z/7pEsh7GjfL9Sb60HKJ6a+imgyxiUbYdbx06mLfwRy8O4xn0ZoUZKacGvR6XXfnKkBx6EZnQ4X/CmRJGEMyDtm9f+386hlnYVyrZKgGh0C8NiLh++Op1jSYUJzCDkSet1ZFVXo1pAEzSCR3cueBzR1M6GM=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xe3d55fc5170899ae0ca36a90920c6ca338608f4a5dcd8d93e44e234f36917d68",
"0x159eaff490f4841410fe8eded5148778aa5ecbd0fb1bd908f992a85b36e9a613"
]
},
{
"input": "/tWP3uV4e9CVYkPJL8Z4kw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xf38cdf1a78988c925677b1078d433a759ca4500334818977f2a480532921d78d"
]
},
{
"input": "bQHlLQQAa9z8oay/nSDVQJURbG/WJkpRBmzYuxfSn7gtd2BWzMxBYegXsaZ4HtpSOIYfRJQX6q2dASJI+naNH3BcUgbcn63G1XeyaZdEptndY0d2JqnWQjMEsurhZE+xJYhdv3PISfZxeSbxCiL1xE3vPfqbJ8zz//E1C+DSnHMfOc91tf09bBBgrqsfUyarZkYoT91m8mTZhEHfXE6Go0lEe4xuKugeArM3XIvcaen/q0i2Om3mh6dddYaOVtpy1tuevw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xddcb88fe5a9d0df55e4c94569523b05b58eb515ca6114674f61e9721c8357f7e",
"0x4781cefa8e8bdb384f677c4a87ffd201f31980eea5ed4c321b5770bd6d5bb9b0"
]
},
{
"input": "evoB",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x38859b60e7bc24fc4fb617ce269ca5eb01359eaf45a40b0b50f9248cf0904a32"
]
},
{
"input": "tC4HUMrXZ3p1UM4PpGTSYOjLWuLb9BUCGwbTU317sa/az2/NlC7+96kJyL+NVS7+b010XdHKFtS5RcuANAgyqSEwSvV3pTA0wmUymaERp2yEVlwfWwLz7/COl10+rLOft//Q48PVuYxqswRCpbWC570Jfz6RPAX9CZtbIe7+9Jzxfp4hIPlqC4dBuiGoIAuRu7U3jssEYLjtjlWTn5Kip9VYyYyzhMshcYQwOsvm6nIGe2aD9DtqICEaPCAu3mUEIKZ3B1BlyiEkMk3RoTI0n00PxgzKnSZ/MgdyjKoAhV8OyN/8PJJvNB3Jhqiblb+pVhP/DYilY5eFJ3Oy3YpPZcknzX9GwirQP+jWr4N7spt0c8Wzssi0cHXOxLkcy5MuHMrvkcI5lih5HQyzo3Z9rSS5apDdidANjar368I4f9HwPquq9+WRA90qf9dhFp6KlZotH4LzrHyIbPSshpIhgwg1bnVq15PICPT29MSH2I/LrS+RWnNS3A==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xbc688ec6014c19982e8950edc434aab78dda6c284b8bf6685c1ba6199c65005f",
"0x837c62188c9acc191b9860e11d5607ebf25715bb4ed725b62eb0051bf7842420",
"0xd4cb178f83a9174a2f984aab73b0d599f288cb7c8df9ea7643194f63456c0a1c"
]
},
{
"input": "EC+6W9qOHpBbkZ4bddtI5XLTkI+RqMvwGV30CdmjcFck/tJGV+6slQu/zD7YqL/hSHCZiqV+uzfN7qohYLSv6SRgnRDcnvcOT5Cjpg8asRH8ZRjBxahqXnVIlY9nOIYoyu+HqMUFm6TJNorPTtiIpUMW1waBYDOFhEBEtAAdS9U80jrf3WmhVBOCVURwQSveLHzZNdZxIHzyOFmZEkijELI/m3Ob/isfh5udJMk0yRTXq6jO+bATgzPegfRjaxSIA8l527VNR/MEuopKB6Cfza9TgWdTn04hk3koxI8BvExOxBI5a2SUm6ZKbI63QgbaTkif+NDIS5GZkIrGPaO4Dyk2gxFAzPWnoBVmAr3TO4BnXdelxSb80ROee74zVVOqQbEAE+caMjXOHCXQZY25grC9ufY4iqMNQRKAiUg=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xbe64214360727aaf82768e2c8c6eea5f5fbca0f0a6a8a5d4bbeb2aaa999cd9b5",
"0xdcc702820b8512ab42e85ecbed1c1ad91bda6f27dc3d5c62c01c5e2cf6b55f58",
"0x4bc0af92dea76212482183a6822c450d3dd2babf0451f14fe107b4a4bb962a50"
]
},
{
"input": "ZeDJP67Sw5nYOdhdEIfRUVZL1fFstyMtPOsqF5UYQzOBhgH8dpwpjuvcN6/O1uhtGhFWwbljx/jcazFF2BWfBWf3eC0LWHRMPUiiD6OLrV6k+zrS2yWxqGkulIDOndPUaVeFKZWNSAEi19zmckdy5ItruOIDgo/fBDsH9Nvz/2Wk8j2HkuE+EE+nR9Y9M4fnH79BZk0iTqaDCjwO6bxcfX7yWOHJiWcK6Dl+9fP/Ol24E73andCsbzjcqRs3",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x1bfaf14d73c3d16d6277777e30253e43da7ae876a245749379bc2870f8f9fc35",
"0xfcfc506a0bca1c16ff13fcf14c7f4f1efd72cfd3d74aa17e61ddcbcfe56258a9"
]
},
{
"input": "+2Sm8j0qq7iqM0k3evWER+e28ZIHbQYaXV79/6cPAkBd1pcuCsA2rsFHJ4YE60RtUviaiDKZmn+yrEd23ZET2De0Ws+eYO/V+D/qldWvL8LI87BSuy62adDjq6bO6e5sEKsopovHiJDYq1LALR+EqOftQPvAT4/xC8yoFEC/rV/k81QmGJ4cpmG0zYOJpIeAZJ+D85AFCDv1M/yj0tVVdhYmcQCobbvUMy7EblzJZs5ZFnuJ78D/6LH50Ldy4H37AJH3pptsV80D0vvPQU5zdVfUA4swUYSQqRw9KGrtjGQgCCHHLrSQzFcMbpvtDsZFb56ix/JWGLKLVVGbA1btq80RH90EFG5IcXo7VyIqGnDQIPJW8hQk1vAluokZ9dciBhkVrsvg5mg4f4clZ7TN0G/uXBzkF9mzjRo4qvGHyIRYqL94kWMZHT8EkeQ27tcXf49hBkBA9ftF66MzMrOiiPaESYhCCyOFHI6iIy7587FfDDUGE0wkNbafxkvZtgJ7e1s20Dtu3d0aDUH1szIrWIvrfRpe7mbP6/+/9EXMwOK23lC+MCm/ykuK3Px8l5jHIEvj/0ZMlIn5OWjTAEY4G1c=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x65815809d69250b67f6ec42c96f375fde201e879ed394d318a2840592535ab68",
"0x6c2d4ce7ac4605c324e7a23628a3846b98d28af41db84680d8a598670dee9928",
"0x40bce7b1abce938dc4f8b76c8dca3dd2740096a8e1f511bca4c6ade3fe730220",
"0x8181226e378240f61866948ba6984e16009879643db599225dc170b05b584bec"
]
},
{
"input": "L+x6UWa4Rgm5LHUcwpki2J9NtnTVoIGMbYopms9v/U0bicETMtSC15rxm0KvOSkekklULQLz5CrvoFl8ikQKV8tTnedD5UWWjtP40Qs0MCDUJVzbdNZKzQaPY40vO4bMt7A4wv+1tRtM+eH1RkEhvil/lpZd9diiMxFkjKt3EFZ9uxD3r0KGtFmdwPCXec12tcT42t2yucXEPVFJu3zhggp76H7FPeO8GjAHN/paoNq3wNsIIHfmPXyWaQrq7I+cMd5J5eDRKoct4ZjALXXGT1+5QLIGWctzxq3jMCz7vP6XUlRqUOntEtkliCK/7e0S1ELzlG0=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x8587343e3e6c2059a0335c44fc19a11bf63cb0790e3eb8e57173ef54bfd363b2",
"0xf38b109226bec4ec6685d4253e00c26c72aabb581b2376ecf07a475b559733c3"
]
},
{
"input": "SBpvZe6U4DpWPmgdDCMRTdWN3kLWrzjM6uKzA2/08baRIUhYguRJeP12DgO6O7XYMyzJMPffzpoqtbEBcdneMLjP+V/qt+sA36RDAyPusmMgx1tX6kA22+ddJyF4AxQEyh3gEjiMFBj+RAu27qiP22hdBlQDbkzwfMjkf7MqWJ/JqrBZXkkUIn9eCEKci7llGB44Vd0In7nssZ5XnMIq/wWV8NlUABr5IQEMstGWVN1ujOTl9ATinpFGqaKSmcXsEiOkDRuBJ3IAyPzbjPv2jDwfon63IIWa3gWTKkhXN03n/Wkx7YaoLiI1/NNU3i+4sJp8j0YWTJJUcuMYRkN6H+o/3bIS+TB//GO4vj66MPHWK+bpGZgv7dslUpowS7c9+DRIF2peKR6SV0zhMzdfjghPafu32/e/FsD5kbs6YY/5oRuFHqYgCobjJxyrEdMdVoE1/ug4OnC/TywE8krvpmCNrlNvH+YJ5I9/BIFOsg9PObjX5gxnJb4Ziu/+2B3phg5K7IGen+yTp61qwmZZxQMCWr4cc4/x1/c1uDcA15UIBO44ezvtfevdt4VQJCVMcbkSbZOIEBirKgY1a24uFFfy7IKLa2EDFWSyZxLwwBPbI4OM4UqltlNs2UN2soTAK15ODQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xb967f1c88e6409034042352fd9457edd5242011eb3bb311f79e8dcff2fb7ece4",
"0x422817ae854712d4b23180f01303cbe6eb53d13152059619433a38999cdc32aa",
"0xdc0935a99ce5cbe914c53d7a83d7cd735ad3b8d8bc4b833ad411cc815f3dec98",
"0xe46d6fcd0fd03eb50aa8d43420f3234a15387cbac907c9fbdde1a914a01e624c"
]
},
{
"input": "2QJIWbRUBBG2N/NWq/0sBTi+1xV17LSEombqPr1d1B/e+PRV7KV7a4ztE6rAwCfaFXzb8O/muDh3Wkcs29q+0FSkdVrJEUWH77XEvrjg3j/thC4ARnE/Usy7b/+MDdJl+0p/7uuF+bUbYsF6NgJT4WHqDSiGBs5ZGiwPe8gBiDX2HEyLQDQDEAtcAVbLI8on23epD9/cCS91UygxKYrx1CZyfRYLYEKZ9LyH0ltmll0AqGRvQHuCHq/obtlnW+wfw9Pg+E/0dzMX/B0ESCIKBTgLFLCTupSvV4rwYxo7yHYcAvIKD67HECyncSqp6yVSbsxavmNzlWgo4sfjOhWmPGUsQSb5gmw+5gccDOWmTouTVQ7tOkP8A4n3UpUM04qDQtgbhSWSuxtJ9bb0wPtavJVb1fsZ7N/zb0URAG3M5Kye7ZtDYDwhgEjS4+MBb3DbBilViAuIM6D7fHXpdkSi67TOMmoCz0JWaaNPuWuHxVixPckB2uE8M6cXSNkUVyHsWi1+VVJqHq+bLTSSt76F+EBAICDCtGpmoAxcYWZIXU8xfDG4osgoAyROyR5z18m6Me4Llcw=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x5ad3e588bc4e1176b34088fef035587577c589936a98ab49905bc4bddfc99b67",
"0x90f85be195450bb1744d71057b67c90c1b75bb59d8cf4c3bdea1e757f28f7655",
"0xa284918096cb63f386d38a9493583da530c7937ed570c5f6bfc952c99ac76959",
"0x6597135748dd127cc5f095c2da3b7a28a78aa67b4e1fc218ec090defc1201fc0"
]
},
{
"input": "Nn2tikbbV4mNX+t5FfPtWH+fYknuGvo/rC2dAmatoA6PAOCuRlWM5ogABBwX+LAXjJeNX5AL/L6TRcz4UGNLsyo/1V4ZNQe5+NPQxeh/2470e5z3QsvL27C+ZM7kOHXOXjcNEA7+0ikU9bDXxOIRxjni7KmEW7SGA8XItKI8HV0QlDaW5b9irY/nNVJz5kXHlR1scXVTQrLAjT37kWlvuZd8Ue/5bknPdH3Ix5Gvk9zGpthAmwBpmVAXCF3BWiZtLCJE+aP9tSiWCn+ezb83mmHTktLrar+xWZYXSf82cIIzgkPnPiWL0xz59QV+PoXfh/74/ICRCSyzGiMkDD+eDGdsiu7Qox9KFkLSvxUQ5hKLZwcZIldTMGL0XOdGxRNjx6BQIvzCZ6ns2d3V+pBjm9QUiJiwCasxzExWOU/2sVMPXCaQx0BWZ9W8Su/VIsZsLtYIsNyFs65/OXMsH/3o5/F5zKg1fyxWfyFki2WmBP2LJpelqFrWoKe0UPMYCsVTuGkgOQtJPFA5f/4VKNdaYXguvCoC0DDx1cn0qcuaKGvqW2MsuCCteT8tBBy1x9KLivPmSxMJrgvHAi7rQYOhovkPdB7/",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x209bb0d076f9195391f7ed900a4d8c788cc9bf114a1c0c467f5555920b061a70",
"0xf5b1c844495f0396f5418e9eb4e487d26f70f0e464c83670e8efba62f2af843e",
"0x6555bc7af8c1790ace374c7ae84e169d4acde81319606c6ac37fa846014e2ace",
"0xc2e9d0bc1c81d6860da30267bf89552a542ece90ed5aac3cc6da5bd1ee114aa1"
]
},
{
"input": "sKUc0bS3vxziYuLSVP+8vjktAy0msieRxuSg0iLcAUuY03cmnnGtdmwOKwfuF2sHLGMDos8IwPbULHApG/i49Y3JAF4iRBWmppjET9h2cKwXgF83mrzd7Zd1bh7f/nz70AGPgfwuRVCYPRruYO36Lbynwg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x932653825685e7a4719f711e5de643e9325e3e584f4b1f4f173a1d8914f087ef"
]
},
{
"input": "iCvCPAopIESMi+Hl25arOaBs3JhDP9dQJg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x2a05292281cbe8bb141e10a2199e10229ea3b1c049f9c3837090109a6c2c2ecc"
]
},
{
"input": "0Q32kVEATjV2f/Cc0dbx3q+SNfict2QIVg8omyeC1HVF5Q203mKtvn8AH+QrgdMblbSwlGNS9QzCnqG1nnL3RER16Nb8DP8e9r+iLNtBeOFehZTn1KN/1ijJPHZNvJrvDwM5dwh9EMX1ctTG8Byoc3UG/+gZR+gmEQLxO0nQcsgHPzt6+ycmnOxjSEXOzCPltEAzAL9hkcz6fq6+m6TxC88wYP9/bW9QaZ7b0zX1i8Uw+mV5PXl8wnBdOPjRvVAQORtgrMP8VTQJO22AuUwSkz5x3amjKwSzzck1OZhpkrCaUDfRCHkMbntJTG00XNTJYzW2nJEU1Fxt6H1106wqX7MfYmWGhyQFHbz/nyu8Ry72f/4k6AuM+mtv75ST3UzpuQsG3OAYiejOiNM8dBoNP7jlU71SX+CmyGEPUP8OZ+hzY3JGIV7R/gYKIlf/EUCh4Ia12ulV1wQYy4WXCimRZeb93WsDmwaQRPzLwPDWqVmaiabpIgu6YkxTnmKs9fjKiCfVk3qn+P0ozfesw2wC2ZzlwfEu1/wqaaI/D/g0B3w5XkdcCj0jcynsocZxcRKD5K0xHtsk1fW6WBaJahzdCbze52YfGEd6pjdqIkC1pWBNCBOzzHxdAdy2uLkO06VLUXrfqi7NhGFx/A//0mAwrYBvZg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x0612e664e63ff3bb719e78e5b85386d0dec52681cfaf54d349d977c8a280e4fb",
"0x022de869c20a4d79405b04d2e0a220a3221bd4a6b4c4193470167a01e38255d4",
"0x7c6e00e7a3f0b65becc63b04d3666ce3223bc97cb3cdd9b5a541bebc2d6bcf39",
"0x5d9ccd2eecf274c471a3402b8f702ba8da1f9658c33c218ee6415ddbdb6b0fac"
]
},
{
"input": "NIvaQ23RKSRtOnN9vQ/eEvXlDlYOTTy9STSkj6bTYU9dIQEZy8rHsgD+UkPF8anrPL0ZUdMQ5S7mAa0VB4/vDfB8Kl9H5j3jISJWQEY8HaCuc9JsS1PyLxROveE=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xf4fd54da2d9deebfb13c263519bc96a75981aec25cfb546c9de7705284ae6c07"
]
},
{
"input": "WJq3C6/ENKsK+af/2LODE86sRiOi2eX+Mkro7gDG2NdmasXjRH0RpFhKyL73WFEeGYbAaO5f4E/zHCrXGfYZyyarF0LZHNBq8TkvrsojRRhVmGbnn4axeDtUdJq+Hd2eQAem4mgKo6UnuY8aqizBlyJ58mR6KFSOG093KapJ55umKtTD1yvwroBss+KQfT2ZKYfEKDPK1e+iASvyeaYcR5lACt1pUMbnoDjmgg776vW0lITGXIijVQ8U7KWwrKi5k0qgxcpJgEAB5IHQUf4z/hWlLWCpvYlKmVNDKQVVTkrXEXArYXorV/SkjMijQrfZT1AO1e9Z4WDXVJ2l5g9KQVfOpuveOMiFV3/wuvRXVf70bAS+NdJKjq1ybTnauagyZcmMDdkgwZNikg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x9410877f4fdd218916c30132d71ad536abd51dd03b167c8883f42f0859db47f8",
"0x526b5b02a339336494f78a1640c5ba2c7d7c4c6c710866660dee1fbd740fa3da",
"0x696dd9436f075634f1169564bb051a3f285ddabaa3e849ac8b8793644311c0cc"
]
},
{
"input": "ZWavHk6IjAS6FtSg9Qg0/c66sfYSTd8ER1pOY+RfR4csyVA8hTFGr6qhOijQjiOzhgUyhZ5Fh8qz0bHMVcxradAbUTZWgb42FrrLUxQptkt8dXZL/Q6phalrTgbWQ5+96ibUGN35fp7PGywHBjlfua4R6/PMBh+hB/8e+Yw63JIZEo2cCYkDp8vMVsIAXkcXD2N8EnIogwhabH3m4XzTvg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x69f77a980ff49e17ec1d6f7b5a139c639ee8992e0eb984828230ef8c053ceae3",
"0x9cd3406f0032d6c07706ebf760890230207d0450a82a711a4d0d927f58dae176"
]
},
{
"input": "9B9WjYRHM8VA/jKZMRck7bmaKpBidrMIUDcXfze1p7pTFpDN2z4ypMC/qtKkHTVCKFxR9Nb3OkatpLc7L3Zb3mGxgRnL9Z3oviZBQcOwAlgbrnEDnMStOStYHz+FoFWIcvBTblRBdviyQP/eD548mirFH2ldUm/0OVk1ESw336R2lZjz+f2puqfz2eRG9az/4C0qY2FYH2KMzrsdM18sGfOZjf9ptIS47Q8BccZJm/QshiofxA+lGzjI16iJPdAEKEKn+rZ2mcgU+DqOoZBXLqM09+5xW9oIMnAHrN8JLC2xC8cIExVAjFvPK7ePTMIn8mC958AvxYS9H6fmocZqPqbJp1FH/8H0NzNcZvyIFYMNHD4jfX3Y1b6Q6FAY/gIpmZ91PyeOmoNHiRPgGiCvsBULJPLMdSr1iCgeVWwZ/ZmCiaKopqElo9q1BAPaLLBzLm0Ev/1CjQlp4tXvKcLtgcvmU6/7N7xQ4qE7tLEc1q62XUjXBgPorL+HyK52mKN9Ezuuey0rmrtx8qClcggg1LL+yAk2Vw25F4uwRHc9/jbv468ejPRGc/vOgU7hpqi8q5aYtsKcP4DB7k9+DbwViyVHOuYO+BKXYw0SAKF0cptWjYXzSCYNabym/jOMpiJpAF4OzH9acQGVFOV+fIEEwLp/GIPvy3/QAYsoKrnkVq/2dznCLVdLMYZuFdfWd55T",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xa9075e08f50b532bf7d6b052d069f6912a004996b9e8267427e50051abd7eeeb",
"0x622ef2b8079f03d64180a9a075edb64a30a6749de2ca75ea95f7aea3b73036b4",
"0x28ad78f57bf70f4a719bf2425675f92b0a455058db0ea2d80758ec35232f67c8",
"0x0481c175877e232f0950033b43560e873846692d8680038ca0fe78edd4f99300"
]
},
{
"input": "owc1BQ5UPycfsH2vPF8uvab49MBYxShWUNX2a3eL/IhA1Z+4OVXjj2pHNa6ojDeNmMh3hF6Y9g2lfENfNWYlLjFyB5FtVcQH87J/qQNHFW6l/WyUxD63YanQRZBs+t6MhyYHOSjfFdh/cGfXRgq57jeeQFlaVQez00hKrWKP3j5HPd0xe8ujwj684kT4aJs8024CHmzFG8YaR0N12SEjYZ80GifHAu8Yr16pfTezBBtlvrnwScH53fpJpRhECOrNZYM4anrxniTWCr2In03wvwGoPiYyQBWIrdQqwSL77qd7/xr90Lgx1GN3aSrr5T4Os4eI7c3lUz3dBm5u2fSWCORB3iRWTYeRLL7+CxX0aVv3FCYP2ILFpBw+ARsNPF3ixCXGPMup8sDUWata79q06TSKNJkJB1kYtrLq7yDr8shi4RGVxeDE9XvrXCKyAvPndIVWyqGzBU6RihuN+AZXtIlodwXnxBOT2m61YYO7w0Md61Dau5BeTAdqcxjTEfI+YCbSztCVsDGPRg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xcbdf37a7133ed5a200a3fad2902cd9bc1c4dec85d29cc1a83867217940d0d114",
"0xfed99f21455221b33517e24fcd4c26288a62348960c6da111ac49e9059aa2b1d",
"0xb8c1db5a6337825b6233ce1435766d364a7f2f6b2dab42ea06b24a9af485a916"
]
},
{
"input": "YmDfFJIJu992WScmzsVyne6MajcLV+PAuHQjjeqJffVgEfJQF5F63v7SVo2qm3F70XGO6LGinr8bUrXd/PKZp75uTG3THIudOg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x759c2672c3bad10c418cbecf4d7562dba49569dfea68ffcb444d7660591e2d7d"
]
},
{
"input": "TlqhRie7Nhwexw1cmkr0hATHvGmCOnB8i9ftoZMSzbAS/165lmc0rlMZ447NSXcz3NIe11btVQziiaCWa9v4EOJsrrN6b+TPcHao380s+qpWskkRjkxb8iFLIpgiOnty6/uENcyPjlVG3Ll+MT+ICas+Xua9cQweWhn2NrOWU5Q5rvRJu/YiUAzuyE1m3WCNR+VayoqtOYCot7ehD3QBUyHx/zPXSgLiYoFNxdEfmm46AEeXjpZoCYvLm2CBALOt",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x28c1a0012cbe44f3fb5ed2feccbd1fa7aae1f76234c1a8dc19ef694bad386c55",
"0xcde2358bf74c4718abbb00ab46ee37162b743cb879145dd598861253bdbd607b"
]
},
{
"input": "gKWk0Np+a/dx780AIKKk56s351Mse9BugFfE0VVhqhSwR4NSyqoHio77lhavHgnRAcMLLJXhjTAIZ4lg+0+L0iN2z4jTg+SfcDe5rBLN5E16a8c+0+ezxQ/L6MWOlfp4sHHIcBo/HGF0YRiTcx42pBF+pW3BNSobeB3EXPWuKDloNXpOXj0sgNcV2KtBGfEnjcnySaTEqeHtEWDy2o/h5MTc3on1DPcLKihAQLvQ9GLphQ8Vt2kl4qEsyuta6YczVzQUHKy86ft90ksQwq7EAWsK1jyDCbtlgjoTV21ZxW+7ZN4IJPEcSEZ1wZqbvIffvm2S9GyuxTQB+WVI4pfaBuLRs7cTn14F4aZQdoynjIdi1tQnFynhgt6i51GaKbNQaQTennUT6OHHR27psec9grrM4g9rP4iQpwhN3NA0TUkKWewZnF1HLdT8sHjIgcl/m/juYV8qSM8pg10zQ4igltSy28ercGVATyR8I2Ec9TyWJl0k/9Nb4Nbubm1/ihXcKj2M7vrz3qCX0FCZ0rtkV6TJEkH1zzHeNvMHJHs6",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x164fec47c39000332e03169d3f0d740846ee98a365a839fd75dc244d4ebf72ce",
"0x7824bccd36d6084e91e3602f58d6c1326872ffb714e9eb277b6744a9827ee4f0",
"0x1e2bfc61a776eda7628befbc415539254225bb9393d147911a85f3b4f3ac8a97",
"0xe7cdcbf0dad6b72f51f1fee83827cb0bca75da17ff1178abd13ec30c28d67512"
]
},
{
"input": "XUhVEs9TzsmGyDuTIzwiSfzBvUfuFL1az6WNUYUwrx1x+5eAlN4vNxu53vMsPyzxsNs5bdR51KrDOC4cMB+ruK+ScuqtroI4AH3HIZT4mJeDOZnQHQXwumlybeeumFxL4MWq8YlFe15lUeRbVLlOXPuvWb7D2K2eGout3LFWEJ2jhfyQKgBiE8bUxTRX0MbJwoyR3LOOraDdtJWnomR5rdDqKwvtSjzBRmkHErNfVngifWgxz21H/JpM/FcEuHVWyoVUON2vMO7VY49DtNzX3mnVODXaIfiuxUx9tNt/qKiru5ds51w/7Mi/4MAx/VQQljOBzukf6fSo3IQR/VIr/oNZD8jS+/rTU9wxcbu6f0GstkKbJ3FmZm2/sRh/tmW3M+aMdHewQWUkH3n/z7CWJmh9Eb+1h6oCQ55we2ZsaxK0DFa+7YB6WpCVPg7AJe4iE7caMvDByi+w3VmbfLQknySPxShXdqCaIQPc53sFLrnHNSQWIium8o7KKU2DB4mPHO3atulp1MwoleLYD8FApfV4Qawoe0/22EGcWrlKFV7X3bS44jzNv/A2PiUUgE/Z34ND+Ofw5z9J4l9Ndc39vG0D/r+nGaL7zaeJ7MV7pQE+xZc6P5K4R1+Q+s+eVh16vsscYybG",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xab67a1d5b80bd313522dfb9ab7e5f5134da2a78e13c4cbd21915014bf2c9f820",
"0x7e524169ad08838f7119b4bd41062fdbbd856fe06ab23be337cbbfa7617c3312",
"0x353f3fc5a7ae59224bcc68262145bb94fb94f9ebed52f9c9dbc5439fab5b1fcc",
"0xc407900eb6a3f77e774a60251244f5e9fae95765de26f48869a834bbe7c5f847"
]
},
{
"input": "OkvbSQAYhLTM/S40CwkShoqc/doQKJuRniWw25qw0ATH9AGBMrIH4GQmBhBJ21JF+DXKHbaX0hiDUo5sRiyPhUNLC3WiHB58XzKUr2R3TCFy1G8f1ufiJSl0tiVEuPUo7EHVB9J8WXz/O97Icsakb5jrzYiLSdsy0Pc82A/tfTZBPuhC4HZ5jhqVetBiRoW8HdS6/dLSioR7XyXUP18KEn9+GC+/QvLpl/bvVRnnvmXpXM/h68d0+cfI5yVvvKZccaAHZcwmkLSC6Sm39Lh3TTM5ETt9Y2nB1kVD2K+02E7Q6pvC61Sm9sVGRSTylcCCLO1HnCQyN50U0HpJwNkC0svtIOfQCnN25I6Mice/rD0sWPkxaEGTJjnYVLY+14+yEhsSRfJPAacUfkmV4QFhFd1bD+PWmRWe3y2C97zwFp2P6i9WANfG/WV1HxXibjJSasmkdb32mHDBa/XFR+A5uDMdprOoJDKS",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x6a9c620efe67cd187c9f5885cc2c58d9b359246302be95baf2364c508398d59d",
"0xc9f347ba036d7973cd36ee090a73da7a99331f913b962292912b5c64bed6711a",
"0x961ed6a2ceb428015ef02f857d420a6e858daee2ba77a7bd025d9ca785ea4725"
]
},
{
"input": "Dni8xdY2FY53gk916B/zgDq3IuWYwhZ2NCTGNBSp7F4a/peabO3eHNz3/j/lD3a4nG8CIZ5/NeS52OhCAo4ie7iS2SkEt0hLmoXOXHg6WRM7BEFFymqBjnr3R7gj26Uht93NNYK9+UuaW1kW4+s4ZvmyVHPPZ9I4hSIaSjg2r3l3/ZVnCgD640AxwtJL/kGZSjjlU5Snhmkn+X911AofeDbyZB4K70P+9fbGKYsKJCVF7VMP/EBmLNlTryt12Us3k7ddtMF1NJzk8xDamkYrmJZNjf3ol3kYr9qdbd5JkBdOObnc9b5m898vqXQWCmS6LcThuy5+QM0y8lDBEScuQag/xKboULbjwcYBur0Ci5ua+d0H4/xlDmNMI+ruuB+B+G14+P+xPPjK2Iu9b93K38K+yZvTPh21tdvj/4njdAMp2w3C0S4tM/XNQVHZLFwuDR6mMzMUj1M9u2rZNU607qL32thrYE/gDavvDUJ1EcKTtHefUbxPYTBwZ5STNTGImenbSCu3wWdNieRmtujsLXSr6vYgqHtF6K8cyqOaOQwb6D1J/ilxZhD0cNWqQEJOnKjIcw3MhjQjSz13Zqy4Kz4BgfZYiVqfsoMW3sW7233jtPR5tmMe3G2kDppZbMmrlak8ooiKstiYKwMR4XvKKQVJyhjj5M9LheuzBvH8fol9wihZWOBdvz5s3RvqDWQkikwMDHxSrRRkwVO7weEK",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x9236647f7e834b5ef526146639f3e19a91a5e84f2f6a0483b11389a644cedf68",
"0xe3e0db33b1016c4a1e2cd90fa3cdd7268a70a17cfa801b8112bf9da81e9dff6e",
"0x31b580ad3e4eab83a0cefe3b5f580325e02cc9698dfd892c1f89dc881103edb3",
"0x619db25a967f481df1824cba2a713b7f0e256f74be84aa09b1a80fdc51c20aa6"
]
},
{
"input": "548ML89LjxGqzaKfXD2+DzRe/n4KnhoXHQQxl245B4A6Jd1kIisZ7ZtlgMFIsrRI4SHYo56gPUeNQKKZS1tnkbhwz4Be7FJgaNhy8qmaR1lrPMmGNG3yK0OZbDoZPWWKEnGYwb0wXIXKykd2OeD+V1FEVIb1varcqD6e31UxjH2sKNfbfb2LJj/OC2L5Lg91Qs6L188Wb63WNt+B8c7ArvbgwKwMLVfFcBwwKJjez6MsuiY7nADjs6i/PhTXrkQQKTF5WWzbHpOtCpBAGEF+TjPD0V3V3eAkz7tcvl1PaAcF63i7f5whXYhhpng/QWrxSKjYBFp1E1fcTATM9+O49z7f6AebERcv34sspmYXZE+Hs6HLE0oMnYHOPUOf91qT29khKLbW2DIYZgd8TR/xnL8u6aLZY3dED9cKpUNtJxX2aLN+2gX+O5rZ5MC8816oBTtBmT7eph2HVrPdJODSGtmQ+QU55DORHur9tss1uf+cy3mKtwY+Y7xDmTsA",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xfe5251befacdee21746ad860d05e7b49c23a954a731a7ae61f1a02e6408e66ba",
"0x45bcd5f51777f3ab924800b6671cd928b96287806ba19fbf9f90d1aa8f50774a",
"0x5d4d865d850c9cea52df84142bc0ee4599e586103df653530d5204e265061ca4"
]
},
{
"input": "ugu7GzhFq70GgrGQSZEFItW0+khpzmPODUEXabcK2KJPgynWcsBBeW0vNfySTjgOiz6pPaoAvoOf/PokycT6t5fd1A8qHbV+yowAzHElFEJXHjUntFCxI9PNJcJo8758kELCR8R9YKBXZVjmF+M87WWg6/g+d9dpj5AL32dU7kQmLkPu5kaxL7hJRTOlzBJQrMNz7G/BWPJJ0GNbFhvrc2YZIL/LGPCt4OZEHFjG90RRXa9w+cWjZHS/QHAGufVSswFDt52O8/XB0KbI2MWpltbOz2+lCg+M6h19Fx0f47i90BlLymMVi5CZRJ5DhlPkuG3KVo0rUrGEcuizcx7HifIbf45PHOdT8HYvxKedmXCq5MsLd1Ohh9WjzCwaCuql9kc1jBW5OzoFWKnaDGlaCyJqeI1lQBz8FqBHYQi5w8DH/m1ZV7T9StMH1qndmcyNJyMlxhGmGU8QmYBR7hnDTnJpeNkRK6l8LEwcjfen1JXhWy78M98bqZxZiArQBmYImtO1YG7LHhftULixizOxezWO9xaSPZBXh5a7pQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xe72dc36a1aa4e46b0ad98ecca057473bbb1cd8af95eeaa11718fde0b652d7c00",
"0xd76c62cf7bfb075bde0ca1f3559e20ea16ff017bf9d8c56dd6a7b5d25b0d4c96",
"0x6e8fb71d0bea05ea7d8426b3169b2ad5c59d13679139ea6cf80c27db4def900c",
"0xff0fda4e3f43d1c1cdcc59bde8114efff8959d1aec78910020892f6786a11f3d"
]
},
{
"input": "iO4gx/gywUBIM+L59hSKkEPKdj5hVnhQGPcTRscZ10xBbdpZW6xIvZtsCGxmFXa85MP9X37X7ysMtUvspHBYeU8sVGl0GbGb3oxD1Eb9JBGDs1BGPnkDqWeikVfMEaE3HeqrDaxHhGOOLLCT2kM+mWKhAM1NlO4CD/1YuITSyfPlygI0bP5NuhjRe46vVaJpxa0dbByZNvX9dWqk6TQ7hb6ui5eOhtjeN0nw5rxyHPZXn2JTBZGfD0WRI3vDi+97DxziWq/Hl7xJUql1fYiq1X6BYevrMcO16ORcJUY9Q9LtLw+aq38xbQCrtYZv9PqjHjMLG38Lj5pqFi+PiacaDEsWYHk8JmC6VWMkVGP42uWncKlI4vBO+S/7G5VVuJociI8Bmu0Io0Tr7S/NaERIqC9y4SSN7UPzqtpHhQexlfYdnl41UsBzTrDwhdoHyDHuDNnRRB7vTIRnV1ejNX3F72XyrhB2q5fWza2ex+Iz9op7ldop7x3jJjl5PVSmPP0a5QhOW6k+TWtDrujqFaqk9Vuz9Qq27bj51nLNzbMzM57kupnIKNrHr3Hr/W8FdqXmU8UWCI5cX3lBxg/ywNVpvE5JV3C/vfXcfS5vFm4zJS5Gbg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x3465128281e0960e6d11814935dece2d58fe79fd3ae0dc9aa1fedb23190adcea",
"0x956bddcb7caf1472e24289ec253118a9a946cfec3faa43d9cdfb3583c6428c02",
"0x256986bdf9066db60f75792c65aa192e846df14a3478a7881238b66b458a81be",
"0x9db4b75e27b3bb292bdd450030a1b43d0f6be658fe6d59c711f534d97afa964d"
]
},
{
"input": "VLPu7ILgq9sB+QMzMPf+iYHuoTT2uKjjcs3QJwJGZOlTXBqUZClVaii3BV/rI/iDshbTrWefG4rD5CaLBqcdYTM4JXt1DnnK2S1C77rFTkM6dkN+q2juKQJNDIxGDxcgztKPzmksK47yLnCwxEDbA9E5mKDjnBwCcnfsqbKjg6o2/9LJu1xlj0q0urR3TMCBl+/FaIJmiQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xbf4fd89b077bf39077318ff9f2eb126cb04c2b3ef6f9f3f1bfb2204e367f731e",
"0xb669198808b22cc2e730d88fee059c96b9d13057b509b4b26cb625a04e75432e"
]
},
{
"input": "iaA3KhRXBhnFjkR2szfpxFslTINxAiauR6ZS41N7Tyfnk5iczJHJmjmPvWLUVbsoFWwbBvGkVPPJSyYV8z6Ll+CzQJmR",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xe2a777a8bffe0bbba1ad4d89515f6eaa9440c7d843b5543ce53cf15cdd7dc4ef"
]
},
{
"input": "X/hVerdH6C8Evfr1bjZ7xBxsFQN1t/PSrXv64Au/vEZMz68f9T7p9OopxElulNEjA/UlijpVs0H81HF29eAyyfqvKojBH6dhCjhMij2DErMGLenHXanHzN6u2LKVv1o1+tCusG7Rw6bzbTsq0Ee95bOfvzfO27/kpJtBFN+5rhm01rez85tb1bEmkgx6Uf18hKF4WES4zUmdE1MEhcClMJEfQy6ZR8NA3x1qRYhUq9r3xmhN1+vFC+YDX0hdTWuCJg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xead8ca105740b9ddb7988299eb5f06b4dcae604c5b0d08a2cdc8695be973f1f9",
"0x053b8f8c5638392c64f158efd55ccb268671ff1cadfa6b919f23f4c58722ddbe"
]
},
{
"input": "CeiQEBsTzUss2uuNs6R4kez3liQg+cPLxmbI4+TE19MAHKQ78tPctAoZ3otdXalXdNWwpX1JnWlFGINd+p0g99Vbk718CS349DY5mBwMh11sOmiSRMG5TGE7d9XqSIK+5X8II7vMrcikfvhImOj1+qcVpMYMAiCceIfbnqAeS55Av+SZSDYWUnrVVZ/UBJcHeMqLmFGsJnyulwQIAvPbKPO+qY0IV8LOY8tA6NXF0aIWaSY9izGrb3pvEGOO36uaDzoYEJ6QbN9BCKUq18LtmfjqrEWfl4exdt/twKzFRWcf5MsKUkaBQyFS7mU8Lp49hs9eELETw7Tv67y+QmsWquDOoFNbGRzsclXtkoNTGJOASap3eNKvuLb3DHd5vUidqU0+6/P18dyGjJ+0JWqO",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x8cda77b99eb425ea9850550203a6525ecfefce976537ec8841cd5094ea3f5ae9",
"0xf7cbceee65f235eec33ca84440f300aecc1c83e265086d562c226065939f1b0f",
"0xf3db4825d2244a11f679202c1b476faa6467b60faeaf220b760c90799c4fc041"
]
},
{
"input": "T43pAryJO7P0xU/AXcqoGcNUCxUvdZ+t+IhKI6wU821towh4/f3ykzeiOyIf4PpQ252B5CjHQzkTf4i6Tvayioo+ZwvFl7Cbt42y3apjZQExrwpCsb/NFfmw328/us91lMipJmcHox7JPPQKibW8KFa6IhseC1msQ7h8V1c1LPnr+TE4NrsfTcI+rB5mSS4YG8F+Kpi+S5OR2C8qx4NbZ7IWIpIZIxKFV28xTtl5LH837MZqYWQigiZexEpvRC4Cua6WTstsNUihbjjElElZPdZhFFLwvpG5uDUEnyt6fm+mJZkLDJG52stPIOIi0YVhkXLVln784zUUXJGWDQGg+ub+vEh2zJ+BYYsUeHUjtnfclH/s66XWtOkTMCs+rt0Kw8lJ4SX8MFDb0yjRt4HhmhyVNfU1VOxkm/Z7ad36ycQ8UOJp+qrqPr5Rk4y7RqJzKj/Fro8mJu2lanKbeYLIPsSgLwrl2rPhbUal7rHstS0UzWLxqPE9EmKikDJ6OJmSQpfF5GOuhRGoWM8NVwwt612f9xEMirXrzUzbNPgBoUibr596HzTr/m4H86gu/wVTNK7v0xMEk//6yOIKy4P3CzROI5jSHTECoNN+8Zw2rHuxctHl/rYic+4qaP2EYNKXF0EV5cJdIqvgApxbz2abAdC+Rqw5ZNYQ+O5JDy4/y7O6WB0vgsx5XXdhM8S+0gTq",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xc5f4a649be4a2f0cc9248d8ddefeee3ab3220c4d063a611eb7aad752cecba852",
"0x325134ff3a1fb7cbea02c70bf9fe234aeffb339e6c72f355f307c3f2464e9154",
"0xc11dd00fa0ecb786e18159660c847a90fcdfe098738e2b15996b2ccbf7960b06",
"0x8a645af9f6900d64a16558ad878421f6557221476f78b44ae7b03e3d2e0304dd"
]
},
{
"input": "E8ftDm2vrPzfRJ12Iqh62rOORhMZ1BZOGxer0msLFmHUFVOorUGWfbvJHZFHVP1oRGbqlHdr05MpakpXoi+ZNSubKu/zPEAvi0veKZAm/bDzpR7rvTIaIs23pSnq35DfjT/0Xw7ksNsVlu6ZfsS0FPm26RcuOPBiYO9V8/Gq6aAvhSwDmuV33ntGNRwuCm3CZOuA72AwMJtl1LKWVsk+IV8VfVXwitp7SvDDT5e0m970/UnG/o9M9RjSRZbTWLeZfcuYH4iEi0GvvZhywJA5LIn9qg8ixhrrxbO4sl1Sto+BY4BfA4M9/bDyONN+osuVlnh5R9ovFdSqyH+nqAve6lWntoap4B1Dfgu306E7gHT1q2+9HCGrQs9puzi02qSgNCfj+RQHsdGBRgzrruXUjKx+PZV74+Wh3IwPCCwTvQvYkU/Weu8QZoP/bYpgdBJ1AVtiVI1/RTOg",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x27a30ccd006cc8547173c85181c75f532dd71c50fb6c7e57f1da58b0555b0546",
"0x540375311f1657dd7140d32f2e60d54e53b335ae54539ba511fda8d8c57b74eb",
"0xeb893e6229e028b2c510d874435c751039360b203368fa4c75114cfaf39b3c8a"
]
},
{
"input": "aCjoLgKIwqWlW8lhM5bxPyX5Qlipms9rSCj8uLfm6YkYbudeyCaevudHxjcCFWDzmNN4+j/6iNI2dbkQpmrulFvviU5Vn2WlmQSU5D0PvjysOviISM8Tz4PUrdvNxUfIfczgIyFhAG7hKUhi56PtZ9qkYw/I6paRhex8sVqmuei89vswG9SbLkVYU7iOOU/GgeNCfZSM",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xe9a9ed50c10f5da4e10231ad4122859ad7a4849aac33887fd6929feebb34239f",
"0xccddec19638af750e06720249e99c099c6ea622134ec8a20503013e10d2fb163"
]
},
{
"input": "2EWBx+PqSowDuumM8eRw5jMnkK54s+tRd5qlGO6RlsR099f8Nz2regoK81zbOwFnDaLJuWMpSi0lQayfwydkZvMz5Nili00eh1d16VxCuvM4OugCz2QxaikZ3SMHiNcVStO4asCZbN2dcZpihuZSNyVScd4VvLEoPk6EZnWaEeAVV14xjfoPgT2iwwVzmrGk8sqjQJGKeYBpcbkpKa4BQqUsonxMCmTngb9p5hU9fkg4uKhVnTOV+R/1QDvhnpxbIQkSn7/oDGqQZ6H4VbR8oB7kMswhED5dQBFmF/VXvVpdwcF5fj0LMF20QIWzs8cn9o2YTS7AZJtOvFBWxBXjzhsXYDFpRI+uiOdP5lgIGDq5L03HvXa591o71hzPfmjyR8Y=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x7261444591a7e2089579fd29293a60dd750951cdb884ba12c741a159b8682d4f",
"0x7a9ea07151ca7ca8cea49e9831f91986136303705ed5589d03a9b3101e569b99",
"0x5e8282b46e4352cb1e56e9f5a0a08ddacb112cc8e85192ed906ab67445235202"
]
},
{
"input": "wAA1Mt5xqAbr0sTMUomvimo+WbCHDEiS+pWu+eQGgnXxDWmOmuVqwaA5N4fMefoy2e1ROvyuStbgImQ7TRSaVOJQjT7wgEjoh8K5//MlSbuNFQZnWsAltKhlibYqDV3dl+gUdz3ya0wj2Rv+bp5CgQ1DdBcct+uPD1AeLHWzE+iHDpcTUpyvZ7RFw5ZFcM0zVLObx1UDl1eTmQCWqJDNjunwTmd+msSNX7B4ot6XgR1ox5sBQyqCSLbZ+VeN3fuHzX659WQbXaYGpBE8/xBE9iYBhRMm9jYGY8ycDQVNh/5WYzvB5BX/biu0yv0M9bW/cUd7FzYZGhgVuYznR4Qi+G+HkQ7dncKk5e5PqsduTi3iA6UEOO9Oqpg5jH1MkUoi5d4yrxcdjdAuQdM/J+UQbkQ7CgH+IW3R0wZivS8UepXi7rLazScJKHL/+nZgtI/IRFl6GGvPOYUXmCmWRwzMiON1KXqzon3mKSaIb35O+uJwreK9UjkijgJJuZlRXeubMQD3I+9hSQSGrY3Zm0sVtmR2a8nboqiS0hCn9zwq+NfBnzGr2Tn9lG302auqr3hZ3ESfSYpcrcyD+yu+dRhHwIIHYLbl+Uydkc0+/llyEmEOg1QsJuHac7HPeXEX94hDhKLVey/ZVYLOe+xYPhuLilzQwqt9AorjFGtsogEWmSaO3sfjj+pOiYg=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xeed8dddc6a60a05bb1ba49d0bd7b7aa120ea8ee2757e59e8954b71502d83e295",
"0xd9e75a98f4ae520b38436ca9bf464d6f26768bad4afedcb9f7af183eccce01e3",
"0x1a7e9bdb037a90170457843bfa64b4e1442f83c1b383bd1f31878599d8d6250c",
"0xae40f2bf7d42e665ab60a5ca75ffa1515014aefd3c13f1161cc432e5b6ebad27"
]
},
{
"input": "Qvy7rQFYakrZWqUKvpTKDtWYg24HYfPSRdE+KrTXeNPq5K1J/7VvR38m6DuUtaVhVcn/d6QRQRRS5RTIDLrUQ1crIWaQ8XmMqNaFKZlBytIGvLpdDWuJ2XydRkPYYChqnH+nSpvJNfAYYKK4K4UY1JNXPjiAOP0jXvWi3oOwEz3brl84/dFPG3IO3dVHJtSzYF63YZ7UXlpJV2MP9q84GwbKirkZthc5IFv7BzOX2AXNIXNDEVkMz1oyytJGK2mlRKLNljapNmo4eAbzHKC4bF4T4ah2O8wpPiUXoWlrQex7wuAnBYGdLS6l3e8mE+Gsd0mEW7vFYKotLAepsHwbPwJ7ESGmDBxbMzicKswWKWyexEL6LpwqcFAcc6Gmiho2D1BOOqpKaApZnWowBk8HFdA2EPjaXycGIxhyftQtMV019XX6hzz93Xt4d4PS0fWfj/ViuFopU/JO3cimvzHqo7tgP8LkiHUlNDF3xnzzn8OpVtvkB7rKAx0tMRWtG+TzvBKKElyr16cYQUX+wd2/u6QBIIx45Vz5z/GzHRXP3nCuFwxNQKhXr0v6KcnGW2QfQRX2LN4PPSk5znTS8Q2R9SgBu4Kjq5sKON5zym8LW8fKOH0Nmheb1Q==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x60c9a594932bdc77815923284197c8032d96af34174bbd71ca0373b4ff58f678",
"0x945dfe1b90dad1ac86ddf5b8f27d8a8faaa6ba396113167510fb60cd088ede07",
"0xf52616b7f35617b69013c8a9485507bda0753fef7eac1b1bff8d93574de672fb",
"0x72ecc86dd75d9c5c7b1f964dd4a664a8a258a34d0b11f2d97dabaa5d4bb8ad55"
]
},
{
"input": "8DTi9g8t1UVGL22HRPz6nazHrn1f/hKJghZqGDvIVodeI6eld/nUqc4EUOgcn6QAMP1ukAqK+vezIt+T6mNTSxiAf/3wTkmduX3FskhRJ8Iler8Ux1TaZhGMk4WPFbc85DUxrndqKlMsDUgSg9lPcl6KwZ6TVFKT5dIsDXSL+82geDhAyPWs3QKYcnbyJDjoN84NXjxYX/CkZOuvLi4Gf7f3VwtHM18YR6zB07hzIucsKxW2yRaMOQe4cfd0QwODs8qhxJdackMRIpDLFzVdvuglBNdrYjmIwYJtGMK5VFOJYUN3BwC3BlmZ5o9BUzDHZguVtUI2Be2fIH4HtQNnHnxZbNAZGEwoZEfc7IlAOIWu6Gy9ihCaey2Ny+xAAgC866WybS51v9QEKzfG02En0G0qxvTQI6yS16NjKFfAP06LgshjC5sZBSg35YGvlCIe/sNlLivxtJjZwx1btzp2xv/cCOOsYx7OycOQl9w9uqYdFnU1W93VErvuBDgR6+jYpyHUvguDt2SZWA3G4pf+tpS3ng2JsOjjvOVs8buGYKZeUHnfz6p9IfvFpBYu7xY4XOIY3ECTr10Kp0sOGRlBxecJ3FJwIEG8B4+dqLNO5I4AY3KjMsiWd2IPzAUN/iyOIw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x91a22b73667e7daf8bae65680d26f92820c825105c6c5c7680e5439dd596dcd1",
"0x598fae2025414a8902bc1d75b443d7d00745e0723a1668b0d321b4d8cd22c4e4",
"0xadc78b18886ac722fd3fba10b4e2570e25eac9c438cfce45b7dbfb439b6681b9",
"0xaf0b22baaec8e6e9491ab8186ff1f262f1bf51394d61d3c1d1cef3f84796e78d"
]
},
{
"input": "hgb6TGeZKH9EF6P843QwlJxc7JJQpBM9n5w64QSXa3VCFyrYQp3Ep/xSbgXRdIaVQVOu/yzHE1siHjhYZNCR5o1go61dlkWOULFrmfIhsFnFKbllrm8KInzHlenysEhxAMFrDr5+vfZizD0Tt/8JIMkzGy9zUfEjgRSr67dE4Do9HMznfMkgnnfO69/wlZsePVbKR/KoS8keVY/oqaDsCt6EXppCIOdX3s+uel4pWhuNEM15IxCZO3LnOTVRI+lHga7deq0xLZjDHshQVGJhX2BQn7Dey6ZBItRdF8RMNxtKaFnsV+fII5NJ/IrAl6rEPkkoyLShZX8B65Gami0QkBLHQaD1OOopE6fJjUCJCni9Ew3avacWGcA5W+Gvprv3a+budPDTTlvctGY/MWF1B2bCnCv+1lXusDfvN8Yi0a56CGabuIsk0BKlClHCcmxyxmrlswbQZ/ZRjoPHW0W2pOta7p9odDJg79cvJYEgNKn+JW99vKtb3PDXb/gsdVD/OQ+pR4RKUZNBw9YKzyFCnY/lX5jlNSb+RFyyLCBVSm3GvDIm5RTVSnQ5G0fkBZDSmLjCCIU2C3qMQoWHlx79IQfG8+BGNamo9txUgPSZDcq05RRVHLXLNg==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x99c8ecba39d9f433fb397768d380ec2231ce81b1fe7c61e58e71e31d3048dc2d",
"0x9eff473185e3c9d53c21e858e1660b72696628953521d6755e77ca29cb3740a0",
"0xd937a37fe13016d30a8722a08c3271f875a625186bca9949fda3234c96288317",
"0xb1b8222b6a4010a9f5c0773954556ddab87e7f144ef784144e84b793219ef7ec"
]
},
{
"input": "qa3vm4/HuDuyj8khkZxhXKZvFhhxiGOW47bfybP4mndme0Aek0OdIq6kExKRWSbRN/ZarQ7685YsovxpEq44G1IERrGbVHAcJjiwarh/+8NVYNACr2wb19TRdEGFPRDlLmV2/qurj0h0uZ7IMp0wEhAbY6sXHdaOWO/NZlt0BZIoYWtkJ9ihNWASQgqCBOMoFiVag6wNyeamX6rnw4NgAIZ0KhhP8ahHZo5Tw0UVFvD+HKErSlgUmJHJBpgwFKtHSs8ViTCYFyXGjdGuWRn+LUNHNbcSehCaV0QVy0pXczeYpU/inUvku1NanAZVQV7C8G/yAvBr+tWWrSqSgw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x667dd12200a0c28ab5d704010fbf9c93efe8f431ba264112d8e505cc9ad494af",
"0xc7f3a3e75dfa75b48ddf293608c2f6fb6697cd51a2dbd4ba3e8d987c86f50426"
]
},
{
"input": "GJNvpfWnfXEBn+maEIEAP1HR6sP0guRY4m902PH+sf4XrP1cUCcbxAgMQZKbhZXkvPf5q0J2Gn++UAwvVto3ORTlv0qGT366PYAkBZsw2BXFVC6CVCFqsm2iarYI1f2aoUM/wbQlzW7eBrhvPvxNLgt4rnhX2RS85mEqocaA2Ud6qBwPAlvkUsSGQjB0zlylLd3OO7IA3LeLzsdF3xldlgcrEd6WjKr2yZyNxFJnaDn0fTI=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xea78fd5eba89918cf126ce1268f142622b39d1e9c1fd9d60771e8db8468f9e83",
"0x15e000fd4ec88a4d5617d54fc6c4649ffc00c517559b2634b3eb0d9e877ddaf8"
]
},
{
"input": "AKxthvJXDO1M+B5i5mYyidmHRAP7jB/1bRMCGz0GmTC0gMq9Dbq91Rdmf8ldoYZXMx9VrzrVCchNVeIaJVGIhMgs5UUwPjtKBjItuhSkctd9k1NYFQBgJc2mPMb7H+d/VmyoiegxKdi5Vh4VTr83N+EKyZDdwb8JKRB7D1wMM7r55No7k2fMANLFOT+VSPzg70WPpaY5HEd1uR5IQ9OnXNjdZBv7wKmk1q9AUIpqgrSK+r2V9d49qaPXyX+XzkNqsWLV3a6dxJ9QG1JqD25RLsUUS0i12TZh0jpdkeHP7FP4R7LPUEODXVroI5+bYNSlRVe7OwNrDk+htHkHKODS0+FBVfulr6qYqoAUBEa0XL/veJdMgjGDh+HTD0x46E7PtjzTwmBMS1H7Vh5ErVaQtDx7iLY9N7moJqI1heBDheMiEDil98Xhmqj3IUncZ1uJfWDqrESS8hwah6WJrP7elcBWaqVI4DFhy8KMtUkeXqd6iV7nycVjbtD02+T/uEFT0V9qzd4zWA+wrvGxitlsrIwcMw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xb8cd587689045570423cd43026a2f2739adb54b24b56e7f85bd9fe851c454d26",
"0x7f1a5e9247f9c215ec0c2a34cd80e1931b96eed90dded0707e4c2772d6a2b2be",
"0xd40445f4d71545e4bed22b752ca2110e6c9bb3da8af4abfd31554332f2f2658e"
]
},
{
"input": "d900eUWWrZtBabto65ygKjqnV/jGt+IfbH8GS+AxWdgUIpGGArTHTIUzmZhsMtssGWDMWdsugOjLbD1yhls8RJwRAF8soTs3rhSmphVFOn6KPIc4lyDpPBckmxItmGlk5uP9+JbcyPY4F5I05UAkmtnuoyYMvPyurSCsCPdhwALOXckHdEDSGjaRqY+rugGthFbFICxQXL89u27AhOO7uAtsfle430nfUawwhrr7Kvzfo6UYSQur5TkZGaZS29jvhfY+yR3H+c2U5k2oUfOOLK1QEBNT1WcQ6gywypQwRCQLbV5D73/OBatPjOiKx5KAHU3AdHzt8/0+Ej7G6p+fVeWnoasKALs1dX7I3MUuPPGqZRYrySJLPotrEyFj0ZrNZkzzPhO40Wy+J3mFj7INUvfQSfSFOWa6b+YRrxOJ4tI8fpnzciM1y/Rx64mYOCOQxnBP50Yn4is5RLseJYzSCKTl8yBqyHydCvEqOoBGqcJvtkQmNFTctVfNK4oAXIRxeAYkvRA69Q/xSnBFtKZY+Zid0BlrKeUuT3YJSU+agpGJC0Imiy8ufl6/k1m9B+oKng==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x7e80cac4eef5ab4b93c9e40f44770c65651613c8cca6839c872515ac2de12d82",
"0x2ec375aedfc478bef69a5f4d9d74359cdfe51ca01698b179212b5b7a538fbe12",
"0xd99eaaa52afb616a2959621233062e8c1ba07fea58f34d00beab630442df1c89",
"0xc24b6beb031f922de9b4c4a48ce28bd3b32982126d4104bfd0dabfaf48dfb56c"
]
},
{
"input": "96g+NaYbWNY8fhK355lnCK0TarKbCBPF/3c0Kp/cF9H1/CncnguutxlZHcJbAiN0IeW10CXmDQSK7gnlIF57tv2fvdaviKJ19s9dlIHjVbWckLcm3kwkfaXZEffsPHFototrK+04ODDNiO+ONvKPANCsi10R11D2RlLJ6JavAVxFUliiLnfVgN8OPHkoG1o5z+LQcYtqoQI+iBCFXoqPq/2ielSTbHn2XbAi9rlZEFRKovLqGB5TOvjZTd0M1yMvEgd9BJjJJ/4=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x8e4daa5e0393a3e6afe66e2d9ccf0684a559f41c5d113d0adf9a27d46fc7c44b",
"0x557b27463478dbaeed224211344a3d1800a9aee66c3587ea633c214388014a2a"
]
},
{
"input": "naVpEVoOzteWfeK9u0WSh79jh1i+pl3BlBXzrAiSCnl+gO+IAGE4FszQN4aVfZGdBodkAQlLNsBmG7Or725IFhcHJ+E82JlLRg9kpMKHtTl5UHvqPZ/hVv2XCZfj9le0df5lz0e2Lsp0XGEReYz42q4fkjxWOLa3rFwkVQgaePf2tgwIwrPd48iweP0hwbOcgFfWVrn5g0Ui53uwKa8KCjmKeuGsSJKGR1TxTAb98mFs5SVzUPE7ajmErHfe1A4JVqSD98D/9IG/OnRYzPidCZytI8WhBwfA3235dO2Q9k11Pg42QO6wfbsdRF8dJ8jCc1zJNQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xa74f9004e2958c050a01134b23c268d4c10871ce1f5910d6f67a5224fdaaa077",
"0x925b929b966d69070e5b9dd4571730f52833440c82d21b032759d39c6b2a380d"
]
},
{
"input": "b9X5EOqu99dYeLiCgE7ihEmhbhQoo7AQHkRuQ6Js9yGGxvYQDGhVMuo+g2ay56ViV0lmEMsW/15x6o5RMVHeX7ScDfuu22aGhKPo5AGnKj44OaLeUogqLsNp7q40CMTBZH1bkXgHiOGvs+GU7ZAPEuWwKwvKXkbnMSAnD8ybu1eQiAdTGDXglqUI4e7qhDuapIBaVPuUYMnmBc3580o9f3mYP4NCQwcJGafH9B4ToPppHYdjcT6dcTYOp01eMoiKzTsE6nDEIa/atPusKgajDk82L53RuEQBMRmAPGisPISbEog8l8kN+gRfmv/RnRNGUcbUhRUWSKsAo1EtpZOhh4U1aBj1WUAQ/SfnPh9cBUqrqvR4DvJawwxheHuaKi2rzT1esbQhuxT+W+iUdo6pRXJGXiTAvEyippY366NaHUZDR9vN03iU/ryJYkKp3KYyOGZ3AZV0py20gwh8kQXfoc5gVpH24BOrv6MT",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x43937b0f787a47a32041578337614b4c322750e68a582e8f0ebb39a09551a876",
"0x934d1b6297160f8a3b5975d2be38e7789a593e4074f0f8c536aa3644dc0bfea3",
"0xc9b69ea06a2fce42e1ece4b565badc6ce0a7dc9937d13373c57e2bdd19c7b921"
]
},
{
"input": "wCn84Ysh1rI+gqpuVqxHuCSePXQZxFjuSX9VWfGVoSh0PUy0geNnEObkVqE2U48nLt92YPJSgmKFw/JQ7l0XS1teRVBmVWQ1oXtxxp38FDdEZUHui7GKI22m55tbLmDOA3TaX/UgjemQWS3vtEJPO1c4B0GZhepYJvYNIyi83Fjgn26tRFT43Bg4qY4X2vrpMt8kGtLeuoQDFZV2KH4hmEyWlkii3loaclTqwctZTO9Wor6543ynogCm71Sedw80lE13+wOPTbi/Q2Rj0xgGPeim8d+YQ+io8z0gEuL0wh3xBFugxMqe7PjHELq5sHzGkWaHKTmBBUrstI30eacUT67xwwyvWcMY8QoBRoql8IpwQY3i",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x77ed1b9215130e26e30bb32940f10803564d21eaf3c34813a88b3620f52925ff",
"0x6a3c76ccc0da597941e5336c78c7e74359d0172c76f4ed01eb4c17687758a873",
"0x9395db5326d485ca6b249b9d2cae2d71abb6b5a06c5bcf337d886bee66abf4df"
]
},
{
"input": "6ig8b6H7sUxHcjRDPImXIbLVndahV896pfdMqOe391tOFBOOiZFn6Kzfm/qFrwab3NQvNNc2xcVI3XxA0qDKyRK2WnzkZ7XR1Hrz5Tctr7h5rUy1COhwV/76kNICQ5TktETPDI5EXt0j7II/C2zxDSJHvTU7/IGuhG5rSQ5H5b+Xnb9z2I4mpqy+Gye8KOihYFMl5atGDyGReKO3lUe6Au7wE1/n/YaMCbLcc/0E6pxsqOqkgiIKoKhlVHPPfMXwtg81a0fY0sYz5fmoxJmGExLmTRz61eGb2SYsvBtx",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x969ac4305a9133683ee676aaf8df9c9d0d6ff69d9f84f93ded06ae5ebb63af27",
"0x69408a441399bb046f0422718652ac8c2a61649041458ec5ed52f4f50bc2af5e"
]
},
{
"input": "s+gSK/z1Yq6vS7gHZ46TwA4nI4PEEfp3bFQ49VMpa8gBa8sVQJbUvo6yVTk6zuLfkj6tXqYtUyN8jQfH3E6dEy92OlrXqH5u44bYWljAawyOiEV87fUAe5Cun3moBFNpt++w+6l0r4WulyHSi+WIroNSXdSIas8wKBHb5JNwi+6x/4Zg9aZQ0A0ZweBLp3+LHX3SpYSvEzni8xxsSC+rhAl4CQhlMUIrZ1wMorsdgCOthcbNXrKtfpa875ZY0cacjXutXimuzbudNOes+6f2y+8=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x66145485300432cafb0f5c1387c5cf90e275dcd905c24348107bedc231ba690f",
"0x7388d16dff1dedd7e404403daaeed4df3a9bdb3baa81c586662624f13dfa56bb"
]
},
{
"input": "mM4wTpKyOkZgpKod6R3xAcVeU0tiiklnVLM+vGmInIc0MnLiDjuNBTlIhm+6zZW5xYgVk5aOWWXb1MQjFcDEKfZLkn9SUVFjy01ISZlM9dppiUMFjSDjnzbEgKPE3lBuOJ+wfy/S+T7NNOxGboy+4HJbasw9CeK0orJTGpa8CAD97ZF8tVmhLvLQHfPQB8Be8ighEFl9lh5wFLbIzaiBHQdYSKSZRJUL3Rl/T1Bt7KLCLevgfszkxs/JWxA5woclF3ugsFZOg76RCeUVp0c=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x32f7beadef18e590ffe82aa5e8d36005de9bcb0e7e78a0c68381eacc4947e9bc",
"0x75f2eebd6c67f78c7a6804b8c4d7637d12be4f35f505b4359e89e7bec6e52ec4"
]
},
{
"input": "fXxLDLxHCvA4pJ5lr6+oXvZGW1UrxF0hDPn3pSkL7R7PHWCoW3AZ0N0t7kqIniKqjULZZ/ARy5fj4sXQhRWwJFRVSFs+hYmW3OXAUrrX2OIUAsPjj1q/Ooak5BzMFZ0INZgH5Nc2dGJTdnkatSf5yB3OWpTbx8zEhemmEBbQZIn2RpOC1S7kw9+bSl+hhT40Pn0H6bzrowytyMJZonr4d9Z7pPw/cEG0oxP0bflw380hAtB7aW3LX8qf/OpYRr4Ihwfj2eu0+ZkRLzHhZ2tqfqw1q7fVbryfpFij2edKyzKlzV1DLAplTUGNVdrV1NyVgWvny0MUAiSJJWPeRZXKqehiP4+myA1nDKuXYYgWlJLmPCJSoWjGEkDxltZGByDaLNkFC+eW25XQ2OMbdfzC2N3u60c7/cr2CPbiHzAhVZg/Wl8s5cDJMwTA8b38W3yks3QJGDCtgahuK5jUlWPRn88Ew3rz3NQ2l2fC4X3ZCteKYQFUDDX8IE/WeVeAmcH6yvoOEUM=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xa363a494c41749fa34acbfe0db3a4123732d2ee07bb972035424a4fbb757a992",
"0xb4ba5242df70b066f1fdea7bd089ed021a3ddbf6a8cd7a755aec642983c7946c",
"0xe1582c446cf455e06911c8bc76c3201fd3fd37c14241919f6aaab0e50d0393b1"
]
},
{
"input": "BC+MRlxbvGUWnKSyfDm/ivblXLU9B8lijzAPSyuyDdTkYBZ/FSK4+2SMFmtm8KTghrh5OEvpwDz+NYX+y9wcxWFGBxy4zmC5QAmAZO78bJ0wSMdodhKgjE7JcPsUPgMuMGpvAa3TOQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x6b0b2b4094f608f73c61f68be51329aff2fb0a5179de2b9b9467bfe9c3cdbe83"
]
},
{
"input": "3L2fS5vNMdKj6LqS47x4oHrNhIIxLe9WYJ8inef4jgT/WXKUwlXH3SH1x9WDtYYD2A==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x202223f2c589349b4674f6a6e32bf2ade3d3134b59a5c7c663117ecc87fa1455"
]
},
{
"input": "+1FoFm7ydb3xXIdbfSHG7FduytLO9fpgdX43FT+x7FtCbosJEV75Q81gxdLJ8JMMS3/Cxyk0dnEE7f/kI8tiaCdpoFMbXVSPETE+VhpYh3tqUsPx3XvxPp3UnsTT6QwXSWshkw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x6c7492b6bf953a71885ecd61168a95fc2e6d73ee46df0bf5ef3a366a34c364d3"
]
},
{
"input": "3NaoqHhyoYC9jYZUqLHxpGgV4QbDipeCZ8KMnYabEON2SusALPKdC6RsHpTor+9WiZGPVCzoIVL7uDeHQJqY1VQEYtpFjOhrrFzKQbTdgk1cVDGBR0lq6ePoElwQk8dbnXLuKtFoxm1dwXWXP1GTPup292cFh1z48m/uVunD53XXUmegojcj/z0XyOdUaPMQ/bK69bFNcwtoD3ZlfGukiNllk7jy59i3dK2KhabV2AaQjGJV6GZZmUku3reZ7E8nw536tqEUb0FcOCtXTjCyhFT5KyBzuDUR4w5MbNWj04L5TnRgZheADM3xb1XdBUrHYJNNCpDUKCUnYrHZrc4KEgCi+q/KppcvbvcBOAE8hoceshGtczZDXEdeycCZ",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x01cbae12168f2f42f20bc0e26d21447f6e272d77ebea52b645f594b57fb2b6f7",
"0x0392329f9ca01abab9d2b1cade00e7f99d0fcae8cee9f22c77b7adf1b4681432",
"0x16938f33e76b533c425af0f345683dbc3f3d06abcef46ed196da3012aba4ff7e"
]
},
{
"input": "bos9QTnn1rzgaPL0vtnPW9Jr1bj31IF1UGb7alBiDWiyNMWfXo+vlXuCdCKkVIn1kpB0ETLS05ZThUpi0rwMB85JRI9jYIiaZtqHECqmODDmi8HgMxNH8Tf3M9WEc2E4sN47vB6LJa7sZOgIfviCHla7LIUI6PCFNXMz6yg/eUNtQbA11qplkdP1LmRTOrw3Ry309S9eWmqkaVfDjzG94kpvM5yHl73JMdXVp/v0vCxFuuIM2EIVnaHbGbK2ggqwaHFIHXdSN2VQ/2O5TbG7gxEdxy/LWjV8RuttAbF1SAxEE5bXGiz6p1bkpLwcIzMTcdLSMjwwBgd2/1auF8Vm3NnAO+Rqnw==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x91d6e1afd0a075888cc2d5b5e693bdda3803325e39fbd6336ce9bc005c2d96e8",
"0x948020ab27061f5f45c46affe3be5203860745491d71540e2b860330c0dd57ec"
]
},
{
"input": "6SaxxD+YGI1vnZPnjyTUukGwlnv+6mi+kr0tPJNb+byqdsnp3EmNiZotRPcjKv0mSrN2QlaSgVvtpd1QeM61kh/HHzPqeyY+yl5q8oNTlh75uxskT6MdhHH0348dNg+jR2PkDEXArgnB+l036KgkH42p7RC8eX9fSvXEWnA/9y/khnGRJcfxPqXhFOSlGtFPbI/b4Ia1wmPRwUN80iNxypnlEWgyfClqvaftdOiWDlKOnzzBR3G0ZB1j7/AzKS0Z70K2nVOKtO7oYjMb17Puu3zVIpka2uh6iwLwa58wZlX4Wt2BG+r98k263zW90XyrYt00m6E8diC3B+t/7j0rt9gV6rlBbY6F/c8cIRENxBqWXcc3iemFBr/LYLI=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xec846a6c4315bc6e764fb641a2afe9f15d5eb1861714c76af033da30c15b04b2",
"0x6fb5d7ce201d34f801ad591867e189294147d20f911077e1952d0b071bd3fa31",
"0x0128bf2377b1952f0146ff7ae00ece8c7d6688cbc6c7cf2418a43bedc1fe5b38"
]
},
{
"input": "7HvyePr04PVkmE4UxQQoYO5qwGyrIYsGY0wmtlMaQ7p6ahwsCXxYL+1Rc7a9lz/oRaRmmhHt5DW6RFtBukhXe2ISy1ftItb82fmikh+Byu1fvJlVfkLfl5dzhoeXv8UHEroxoDNZnhOnt9/saECxkKX9Hp3y9wERFy3uXJzu68I+6tLcK7yRb6ZPAFlJgc8NFfYwu0SaXbV6HUPt50c0EqXs2B4vrxNdiJ5JPDm8a/bw6TB03dEZ7En2cbAYpTyrFjOTws2NdjWqkW1WH+RrSCSNiNSsbEEC6RIEfEss45JL28Ny9YjAnjwl31jpIkH1eY7SO5zuvKsxloZ8NeBTJeaiPu6MfO9WjO1HMi9usfe5IbjNT/Gsc+mcBFszP/6NHcyQYhR4qPNfOf5xp9wNjVYGOTSu5iQUPDfDgEEbTA6BiWIGnLIVT3xkWRcUGVoKM4cct7RHAie38r4/RMhQzfyEQ+Hjz1bZi/+DrXfUFyS6Cvn8G1eHcPXRUHZ+dLy2GzICgTLkTPbbTk8SgvepgdFIJPwGJgkSCYEvpWStEon41UiOP4ojQX4OFGwFrZ/wCdCGAKMB0Wa24Mww9n3ulrdRa95weEg=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xa26cbc2a66287c2836fa49ff8aa3f3aa1e0e5287d772f3b68304ae8b9b204a35",
"0x0cec7fa9e32761ef269f706014f5ca47b83388f58abf405cb3d4b58616b561a0",
"0x34751c222f5447e5ce41d6f871bf218a1e7e270ddf360d0a200f1bf523d36e5f",
"0xa6cada596a1452764f92fc089941d8205a08c8ce544d084eef7f65ce9c208b3e"
]
},
{
"input": "ul0dLBs/YmNE/uyOROGboezkmoislGftlZIN22FEHY+3nJzijZvf5hUnIeUjR34oGMXa8SIfAmPVhcM5MT3XIR6ZsZSs1Xg2Q4gsIz+lIdlke9uLi01KCa5+2ut8Um+3u9co+h9X/vM4Iwwmz43xaOVUlb6zn+4rBq3gAbFrxq3OrpYJJpfnxMnXp5qdYqQjH1vUYdYlrQKYYZKQHw8TVKHZZ2z/EV0XyqrUTzO6TRFRGNxcYtV8/OX5ErC3PF0FCoOat2iX3wgsptUNB3DhK9LuFu9G6/RJDOhfw/Ehps79yLjFYAwSyKi+OL874MkGgUsTiUTElF/EFAAfuB53aJHYPdEQi2Z6Zw74Ezzvh3oKQtp/Q/dShwyJ1/uZj2xdnfqwTWdI66ZcNNVT+PWTtLANTpFiJtgiy7f4f7xqWh0tcDqDFxwbQrzrdh+U3Mm7EZjQjACGLkCB1VNUn14JFuDnxfOnpqRQgdrzdFWmzsX/JFl4i8uCN4aYNCe1f38wMVb2d+1DqIzL20fIuMc7CjX/u+hojwRQZSTwDCLo9xMjB5sEFYu/NI8QyUNvx18pXkkLWIvvL8BYFkhB/lpzc9NMY6HCM5kV3Odk0u8FIHRm9B+Slj3gf//H5DbbU30pu3tJ9FAv9HkDs1U=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x258c3147665aaf5c5fc7c739f6c01e58759a0516ea1e3d084a03275ae29732a6",
"0x2879dc29eb40af28eb88ed17c047548bedbf6dcab331ba8b6c050fe6803892a1",
"0x85ad14cf814e5cf867611f6222ceb3f2c82dba3f6b1af34ecd236a1d8d9959ef",
"0x60e4344aa77bf92735092f446229eb16a0e91ccf7351c9a9e8b207632861a936"
]
},
{
"input": "5AOpWwV0q9zthtbxpvpnf/utrQl1riNtoHTJPRm2uWgO6XaJlJQNKMXa",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x5f19fac317da21422bb1f587b1dff8f3df060092fdbfdd227271e3bb3fc182fb"
]
},
{
"input": "svQ4eiNJWQvSsDd6UeZ9Vtc4B7u8MwMnxWdNmlP6LtqRbUIflXt3qcub8ceF9a37f10jXztRn/ey1pexOjfxxtCbyXKLjNGVLw0VdpgBK6D0cnPJsLuJEqZz7dgObU2Q4lY9rATN9ENjIu+QRW5s6kNiaaZwO7FC4xp6u9s0fnQBb9J46ORA5vBIclmqArka0tHUlGCVh4wm888oSMyKCpfGbyjRJotodRi+2JC6UVcAemTUqmO9ckw6pGZzupdgpD6HCsAHhATZIufyS4Uu+gzEzbCJjUz4aS0DvxItfw3LrNJnwv2pwqvstnxcx4N1loLN6N10yZ2qftCdhiv/Ci/DMf3wqn8ZhNOt9fXwMWF0EmhJznNMG+Hyej8g4/nuTMzwx/WcwATTsx0JJicXPDXphVOIYEw9lJlWnQ==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0x52311ccdc69e2b3309a674bf5475cd132d2c32ed815028115cafd0f497ea6eb8",
"0x5108714c345510560c7e8ad860626f648555dde85c5ff3c1bb9dac1b4b440481",
"0x09c7f822bffa5ef1ac75cad13f6b2741bbe5e5ce34a347d16bf7e1b48b8c7687"
]
},
{
"input": "XTleBrkuE5hWTQJFJRFhD12lyVTeV9AXaG/EaSuKhyAjK1EWJGArTmr/+vXyPgm7Wnc3TVRD32GpQIl3o/6bg9nHQ119M2lXyw6mAyypwl5IhmzIns1D3nhgrZJ+9Nz68SRWJ84oLv0Mm33ZHLAoCYmpGqFL4IIWPg96Ds5UHzF8bbEF2SAiYV3LLmGs1sblREH8+yYCCRSwgW9m65lYsDDvM7+QqauLXaOxWEQJcW8zA9G+U402rkB4q26uXxUkUcEsXGWW6d6qyE2uG8C54BWb2eYaaYVC+rWFdIUwJaXJvD7jJhFIj36NsjxZdX2Wckt6j3s2EmNiQwQNJgPqyHd/1cLANrekOoGKWOVm7P/LNpDEoxHntBvh7MVnEorJ",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xc34e8c6768cdd7c7cce28f8547e33f113191da57e3691db60e1ee55800fe96b0",
"0x0ac6cedb22f964162bf1a543d006b8d232af6a3f44076cbe30772f9f28c27a95",
"0x0809ac2786ade5f79fa427a0377b89ec99ac109ff230ec81bb4d609bcf7fd954"
]
},
{
"input": "eCmovNYrO+YV73aWboXDY/ToIZIp6UfGwIarwJunhPk8EVjTQb3x5K8BPPMG5KRLbTh12+Pu31HC2xXyg7F+SmHbXmt+Uog9FXvnrI9emRAk",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xd517103b16c5e12cca833ae2cc160e3d11c59c20aa380cfa5284aa10bdf4709a"
]
},
{
"input": "uY3e1GKA8n27JPlxrOmwzav0R8hB2C1oQbUTsZVf17ImDpTqC2e0aeBUOvA+xfyOEUiVoAhF8zd2EfZdt1PG9U+3kOYhLyNKzmjvzosHvIHRw6W8NXqrd0RsmW4i1OLAzJyxbwHvH5G55VVdE1WTmWh/uWC/ww1JDMuUd9n+QddNQng8Q9lxAzhZ8PQMefc9a7fe/XBinzIBtnd2A6kkGa0zd7uoEbElMcrwqBEkDhteq1ykSOE/WDk4xcazJZqt4eMIj6asb5YTLr5EZQXtS1StsS6KiMZmiowo6rBtHCkpwGHN5Vx3whCG1BPw1l3ZRsYq09YM++DF7krB/rf/VxZGvS1T1UUX5v64dSj9PfR2Hm46qnB3eiA+5vwYAA0m7n+Rb6tSKVgpG/FnMXR29PH86EDxNWSzVIa9yFFhRReIW/BHlV7saXrb3A6Ff8UxQxcpcgMMdYDttUeQ7g==",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xcdd63146e8f5f65947495f8051b4696f73b6dcf5965519736f223e4cafb50b4e",
"0x7633254742d3f1fb964adde4a6b281aacbe57b38ccfd3032a0fb8d8ccf1352ed",
"0x8a08eb0d9beec9bd41f5244566b9d8c524e89a9b22dc0f33504fbbe3dd5eed20"
]
},
{
"input": "l55l8M4SnsMkcXMGROaphUDY4YUoIyj1d4c/9n3Oym78zfdrkHlgmId6gEeOwUsh0VJ3ja8OH42qiHP10gmKlkXLaWdmJBXQTrT/ygJt7FLJzpqmsSC082JcGT8EHbktfLmRtyKa7mNZjgVsZvxEOcR/fCnF23QnW3qB9gy7Z9odXlqrOka01yBXgPIvcWutRK1M6pq/BRZ9WrXg6uatCZcgE7VhSvAqVq7IWWoA9bKzPlDcWqrwKmIgmGY6gA8J83LbX9Pw4lyvj7AO9rJg4hvuRbbWDeMva2DjzBZsw/66T+CQ5htuevS35DWEVBsEcnPjBdEtWS5dqOiNl72levHJIbfM3RQ/pmhhPd87CmEX9AUeRZ1RFmHB6k7I+ZPZF5IO0+y9Vug67oXUSBmo1onZLKRdbiEuClHf9mbh4Ms=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xf9df249199350922bdb3d0d66ad8348746df540c87f092b006ae68637b8af765",
"0x5d6cbc50af5573059040f81bb9855d2685660e5caa57b88126a9ef7beccb8e26",
"0x40d0dc4e0214f314b8114d49e6b3ba842433c341390d7a63ad9be12ad76697ce"
]
},
{
"input": "pisVHfcf8JErfu8ZBb1hDtca67kfmzBHQU4ls3/oeZ7EN0mGnmHN/wUvrHqNyS+32HnH5duO/MiyN5kGH1IqY8IVLEjXF84WfbZsupoXyuDvvkYjPEwVlVAer0vCRkugw9Z8X2DctMcRq9Tc3xLTEPel2+jLCceyzbJvvUNjFqh4CWT1zqpqQCgRYfzo1+hDV554ifwMhbrWCrAam+CvGzmvNZ8+AJ6VIdbTPiSCOywS+/UIzz0=",
"commitments": [
"0xee0a1a26c607ab52c6308165995365f7951a185fccca4b76c847b8860d9fea7a",
"0xcd4659f1f12afa5949b88198029fc204f63a18d6d4b00c4f8c216019cda7653c",
"0x55b83209b05d78020837a302f30f74151e1c871be2ae0f43d6e3d239a05a6416"
]
}
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment