longfellow 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +10 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +152 -0
  5. data/ext/longfellow/CMakeLists.txt +76 -0
  6. data/ext/longfellow/extconf.rb +77 -0
  7. data/lib/longfellow/attribute.rb +65 -0
  8. data/lib/longfellow/c.rb +105 -0
  9. data/lib/longfellow/errors.rb +78 -0
  10. data/lib/longfellow/version.rb +5 -0
  11. data/lib/longfellow/zk_spec.rb +40 -0
  12. data/lib/longfellow.rb +162 -0
  13. data/sig/longfellow.rbs +74 -0
  14. data/vendor/longfellow-zk/LICENSE +203 -0
  15. data/vendor/longfellow-zk/lib/algebra/blas.h +121 -0
  16. data/vendor/longfellow-zk/lib/algebra/bogorng.h +68 -0
  17. data/vendor/longfellow-zk/lib/algebra/compare.h +40 -0
  18. data/vendor/longfellow-zk/lib/algebra/convolution.h +219 -0
  19. data/vendor/longfellow-zk/lib/algebra/crt.cc +42 -0
  20. data/vendor/longfellow-zk/lib/algebra/crt.h +299 -0
  21. data/vendor/longfellow-zk/lib/algebra/crt_convolution.h +114 -0
  22. data/vendor/longfellow-zk/lib/algebra/crt_test.cc +371 -0
  23. data/vendor/longfellow-zk/lib/algebra/fft.h +104 -0
  24. data/vendor/longfellow-zk/lib/algebra/fft_interpolation.h +304 -0
  25. data/vendor/longfellow-zk/lib/algebra/fft_interpolation_test.cc +168 -0
  26. data/vendor/longfellow-zk/lib/algebra/fft_test.cc +257 -0
  27. data/vendor/longfellow-zk/lib/algebra/fp.h +59 -0
  28. data/vendor/longfellow-zk/lib/algebra/fp2.h +240 -0
  29. data/vendor/longfellow-zk/lib/algebra/fp24.h +342 -0
  30. data/vendor/longfellow-zk/lib/algebra/fp24_6.h +305 -0
  31. data/vendor/longfellow-zk/lib/algebra/fp24_6_test.cc +197 -0
  32. data/vendor/longfellow-zk/lib/algebra/fp2_test.cc +280 -0
  33. data/vendor/longfellow-zk/lib/algebra/fp_generic.h +533 -0
  34. data/vendor/longfellow-zk/lib/algebra/fp_p128.h +91 -0
  35. data/vendor/longfellow-zk/lib/algebra/fp_p256.h +68 -0
  36. data/vendor/longfellow-zk/lib/algebra/fp_p256k1.h +123 -0
  37. data/vendor/longfellow-zk/lib/algebra/fp_p384.h +65 -0
  38. data/vendor/longfellow-zk/lib/algebra/fp_p521.h +62 -0
  39. data/vendor/longfellow-zk/lib/algebra/fp_test.cc +522 -0
  40. data/vendor/longfellow-zk/lib/algebra/hash.h +39 -0
  41. data/vendor/longfellow-zk/lib/algebra/interpolation.h +117 -0
  42. data/vendor/longfellow-zk/lib/algebra/interpolation_test.cc +74 -0
  43. data/vendor/longfellow-zk/lib/algebra/limb.h +153 -0
  44. data/vendor/longfellow-zk/lib/algebra/limb_test.cc +75 -0
  45. data/vendor/longfellow-zk/lib/algebra/nat.cc +32 -0
  46. data/vendor/longfellow-zk/lib/algebra/nat.h +212 -0
  47. data/vendor/longfellow-zk/lib/algebra/nat_test.cc +183 -0
  48. data/vendor/longfellow-zk/lib/algebra/nussbaumer.h +400 -0
  49. data/vendor/longfellow-zk/lib/algebra/nussbaumer_test.cc +138 -0
  50. data/vendor/longfellow-zk/lib/algebra/nussbaumerfp2_test.cc +139 -0
  51. data/vendor/longfellow-zk/lib/algebra/permutations.h +79 -0
  52. data/vendor/longfellow-zk/lib/algebra/poly.h +240 -0
  53. data/vendor/longfellow-zk/lib/algebra/poly_test.cc +123 -0
  54. data/vendor/longfellow-zk/lib/algebra/reed_solomon.h +150 -0
  55. data/vendor/longfellow-zk/lib/algebra/reed_solomon_extension.h +108 -0
  56. data/vendor/longfellow-zk/lib/algebra/reed_solomon_extension_test.cc +76 -0
  57. data/vendor/longfellow-zk/lib/algebra/reed_solomon_test.cc +473 -0
  58. data/vendor/longfellow-zk/lib/algebra/rfft.h +400 -0
  59. data/vendor/longfellow-zk/lib/algebra/rfft_test.cc +102 -0
  60. data/vendor/longfellow-zk/lib/algebra/static_string.h +29 -0
  61. data/vendor/longfellow-zk/lib/algebra/sysdep.h +495 -0
  62. data/vendor/longfellow-zk/lib/algebra/sysdep_test.cc +41 -0
  63. data/vendor/longfellow-zk/lib/algebra/twiddle.h +59 -0
  64. data/vendor/longfellow-zk/lib/algebra/utility.h +86 -0
  65. data/vendor/longfellow-zk/lib/algebra/utility_test.cc +86 -0
  66. data/vendor/longfellow-zk/lib/arrays/affine.h +56 -0
  67. data/vendor/longfellow-zk/lib/arrays/affine_test.cc +220 -0
  68. data/vendor/longfellow-zk/lib/arrays/dense.h +210 -0
  69. data/vendor/longfellow-zk/lib/arrays/eq.h +75 -0
  70. data/vendor/longfellow-zk/lib/arrays/eqs.h +137 -0
  71. data/vendor/longfellow-zk/lib/arrays/eqs_test.cc +151 -0
  72. data/vendor/longfellow-zk/lib/arrays/sparse.h +192 -0
  73. data/vendor/longfellow-zk/lib/cbor/host_decoder.h +323 -0
  74. data/vendor/longfellow-zk/lib/cbor/host_decoder_test.cc +541 -0
  75. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor.h +594 -0
  76. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_byte_decoder.h +150 -0
  77. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_byte_decoder_test.cc +147 -0
  78. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_constants.h +27 -0
  79. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_pluck.h +110 -0
  80. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_pluck_test.cc +55 -0
  81. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_test.cc +174 -0
  82. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_testing.h +98 -0
  83. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_witness.h +312 -0
  84. data/vendor/longfellow-zk/lib/circuits/cbor_parser/mso2_test.cc +662 -0
  85. data/vendor/longfellow-zk/lib/circuits/cbor_parser/mso_test.cc +485 -0
  86. data/vendor/longfellow-zk/lib/circuits/cbor_parser/scan.h +104 -0
  87. data/vendor/longfellow-zk/lib/circuits/cbor_parser/scan_test.cc +137 -0
  88. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor.h +640 -0
  89. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_byte_decoder.h +150 -0
  90. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_byte_decoder_test.cc +147 -0
  91. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_constants.h +27 -0
  92. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_testing.h +99 -0
  93. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_witness.h +319 -0
  94. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/lexer_test.cc +120 -0
  95. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/mdoc_examples_test.cc +89 -0
  96. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/parser_circuit_test.cc +506 -0
  97. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/parser_size_test.cc +79 -0
  98. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/parser_test.cc +473 -0
  99. data/vendor/longfellow-zk/lib/circuits/compiler/canonicalization_test.cc +185 -0
  100. data/vendor/longfellow-zk/lib/circuits/compiler/circuit_dump.h +65 -0
  101. data/vendor/longfellow-zk/lib/circuits/compiler/compiler.h +471 -0
  102. data/vendor/longfellow-zk/lib/circuits/compiler/compiler_test.cc +110 -0
  103. data/vendor/longfellow-zk/lib/circuits/compiler/node.h +176 -0
  104. data/vendor/longfellow-zk/lib/circuits/compiler/pdqhash.h +127 -0
  105. data/vendor/longfellow-zk/lib/circuits/compiler/schedule.h +435 -0
  106. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_circuit.h +371 -0
  107. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_external_test.cc +246 -0
  108. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_test.cc +587 -0
  109. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_witness.h +201 -0
  110. data/vendor/longfellow-zk/lib/circuits/logic/bit_adder.h +140 -0
  111. data/vendor/longfellow-zk/lib/circuits/logic/bit_adder_test.cc +64 -0
  112. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker.h +247 -0
  113. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker_constants.h +35 -0
  114. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker_encoder.h +72 -0
  115. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker_test.cc +183 -0
  116. data/vendor/longfellow-zk/lib/circuits/logic/compiler_backend.h +62 -0
  117. data/vendor/longfellow-zk/lib/circuits/logic/counter.h +171 -0
  118. data/vendor/longfellow-zk/lib/circuits/logic/counter_test.cc +102 -0
  119. data/vendor/longfellow-zk/lib/circuits/logic/evaluation_backend.h +94 -0
  120. data/vendor/longfellow-zk/lib/circuits/logic/logic.h +1232 -0
  121. data/vendor/longfellow-zk/lib/circuits/logic/logic_circuit_test.cc +310 -0
  122. data/vendor/longfellow-zk/lib/circuits/logic/logic_test.cc +521 -0
  123. data/vendor/longfellow-zk/lib/circuits/logic/memcmp.h +68 -0
  124. data/vendor/longfellow-zk/lib/circuits/logic/memcmp_test.cc +148 -0
  125. data/vendor/longfellow-zk/lib/circuits/logic/polynomial.h +94 -0
  126. data/vendor/longfellow-zk/lib/circuits/logic/polynomial_test.cc +62 -0
  127. data/vendor/longfellow-zk/lib/circuits/logic/routing.h +445 -0
  128. data/vendor/longfellow-zk/lib/circuits/logic/routing_test.cc +241 -0
  129. data/vendor/longfellow-zk/lib/circuits/logic/unary.h +55 -0
  130. data/vendor/longfellow-zk/lib/circuits/logic/unary_plucker.h +77 -0
  131. data/vendor/longfellow-zk/lib/circuits/logic/unary_plucker_constants.h +37 -0
  132. data/vendor/longfellow-zk/lib/circuits/logic/unary_plucker_test.cc +53 -0
  133. data/vendor/longfellow-zk/lib/circuits/logic/unary_size_test.cc +69 -0
  134. data/vendor/longfellow-zk/lib/circuits/logic/unary_test.cc +62 -0
  135. data/vendor/longfellow-zk/lib/circuits/mac/mac_circuit.h +193 -0
  136. data/vendor/longfellow-zk/lib/circuits/mac/mac_circuit_test.cc +223 -0
  137. data/vendor/longfellow-zk/lib/circuits/mac/mac_reference.h +72 -0
  138. data/vendor/longfellow-zk/lib/circuits/mac/mac_witness.h +94 -0
  139. data/vendor/longfellow-zk/lib/circuits/mdoc/circuit_maker.cc +242 -0
  140. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_attribute_ids.h +311 -0
  141. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_attribute_test.cc +64 -0
  142. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_circuit_id.cc +85 -0
  143. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_constants.h +85 -0
  144. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_decompress.cc +41 -0
  145. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_decompress.h +27 -0
  146. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_examples.h +5232 -0
  147. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_generate_circuit.cc +199 -0
  148. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_hash.h +554 -0
  149. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_signature.h +143 -0
  150. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_signature_test.cc +444 -0
  151. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_test_attributes.h +157 -0
  152. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_witness.h +863 -0
  153. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_zk.cc +693 -0
  154. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_zk.h +216 -0
  155. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_zk_test.cc +724 -0
  156. data/vendor/longfellow-zk/lib/circuits/mdoc/zk_spec.cc +100 -0
  157. data/vendor/longfellow-zk/lib/circuits/mdoc/zk_spec_test.cc +155 -0
  158. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_circuit.h +330 -0
  159. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_circuit_test.cc +607 -0
  160. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_io.h +26 -0
  161. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_witness.cc +163 -0
  162. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_witness.h +47 -0
  163. data/vendor/longfellow-zk/lib/circuits/sha/sha256_constants.cc +34 -0
  164. data/vendor/longfellow-zk/lib/circuits/sha/sha256_constants.h +27 -0
  165. data/vendor/longfellow-zk/lib/circuits/sha/sha256_test_values.h +389 -0
  166. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/ptrcred.h +171 -0
  167. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small.h +218 -0
  168. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_examples.h +118 -0
  169. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_io.h +25 -0
  170. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_test.cc +208 -0
  171. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_witness.h +130 -0
  172. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode.h +508 -0
  173. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_circuit_test.cc +95 -0
  174. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_test.cc +119 -0
  175. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_util.cc +47 -0
  176. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_util.h +29 -0
  177. data/vendor/longfellow-zk/lib/circuits/tests/ec/pk_circuit.h +231 -0
  178. data/vendor/longfellow-zk/lib/circuits/tests/ec/pk_circuit_test.cc +428 -0
  179. data/vendor/longfellow-zk/lib/circuits/tests/ec/pk_witness.h +102 -0
  180. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt.h +190 -0
  181. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt_constants.h +26 -0
  182. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt_test.cc +559 -0
  183. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt_witness.h +315 -0
  184. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f.h +411 -0
  185. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f_io.h +32 -0
  186. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f_test.cc +364 -0
  187. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f_witness.h +278 -0
  188. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation.h +146 -0
  189. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation_constants.h +25 -0
  190. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation_test.cc +315 -0
  191. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation_witness.h +136 -0
  192. data/vendor/longfellow-zk/lib/circuits/tests/pq/bitaddr/bitaddr.h +250 -0
  193. data/vendor/longfellow-zk/lib/circuits/tests/pq/bitaddr/bitaddr_test.cc +333 -0
  194. data/vendor/longfellow-zk/lib/circuits/tests/pq/bitaddr/bitaddr_witness.h +152 -0
  195. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44.h +903 -0
  196. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_circuit_test.cc +274 -0
  197. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_eval_test.cc +440 -0
  198. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_examples.cc +8851 -0
  199. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_examples.h +93 -0
  200. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_types.cc +24 -0
  201. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_types.h +118 -0
  202. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_witness.h +453 -0
  203. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_witness_test.cc +49 -0
  204. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref.cc +458 -0
  205. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref.h +150 -0
  206. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test.cc +398 -0
  207. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test_vectors.inc +3618 -0
  208. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test_vectors_pkdecode.inc +689 -0
  209. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test_vectors_sigdecode.inc +1501 -0
  210. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/sigdecode_test_vectors.inc +540 -0
  211. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_circuit.h +394 -0
  212. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_circuit_test.cc +577 -0
  213. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_constants.h +90 -0
  214. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_witness.cc +174 -0
  215. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_witness.h +140 -0
  216. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_circuit.h +351 -0
  217. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_circuit_test.cc +466 -0
  218. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_reference.cc +207 -0
  219. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_reference.h +59 -0
  220. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_reference_test.cc +153 -0
  221. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_round_constants.cc +39 -0
  222. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_round_constants.h +29 -0
  223. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_slicing.h +31 -0
  224. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_witness.cc +83 -0
  225. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_witness.h +72 -0
  226. data/vendor/longfellow-zk/lib/circuits/tests/sha3/shake_test_vectors.h +477 -0
  227. data/vendor/longfellow-zk/lib/ec/elliptic_curve.h +596 -0
  228. data/vendor/longfellow-zk/lib/ec/elliptic_curve_test.cc +548 -0
  229. data/vendor/longfellow-zk/lib/ec/p256.cc +36 -0
  230. data/vendor/longfellow-zk/lib/ec/p256.h +60 -0
  231. data/vendor/longfellow-zk/lib/ec/p256k1.cc +34 -0
  232. data/vendor/longfellow-zk/lib/ec/p256k1.h +60 -0
  233. data/vendor/longfellow-zk/lib/gf2k/gf2_128.h +503 -0
  234. data/vendor/longfellow-zk/lib/gf2k/gf2_128_bench.cc +48 -0
  235. data/vendor/longfellow-zk/lib/gf2k/gf2_128_test.cc +416 -0
  236. data/vendor/longfellow-zk/lib/gf2k/gf2poly.h +74 -0
  237. data/vendor/longfellow-zk/lib/gf2k/lch14.h +242 -0
  238. data/vendor/longfellow-zk/lib/gf2k/lch14_bench.cc +75 -0
  239. data/vendor/longfellow-zk/lib/gf2k/lch14_reed_solomon.h +127 -0
  240. data/vendor/longfellow-zk/lib/gf2k/lch14_reed_solomon_test.cc +110 -0
  241. data/vendor/longfellow-zk/lib/gf2k/lch14_test.cc +246 -0
  242. data/vendor/longfellow-zk/lib/gf2k/sysdep.h +329 -0
  243. data/vendor/longfellow-zk/lib/ligero/ligero_param.h +449 -0
  244. data/vendor/longfellow-zk/lib/ligero/ligero_prover.h +354 -0
  245. data/vendor/longfellow-zk/lib/ligero/ligero_test.cc +136 -0
  246. data/vendor/longfellow-zk/lib/ligero/ligero_transcript.h +67 -0
  247. data/vendor/longfellow-zk/lib/ligero/ligero_verifier.h +272 -0
  248. data/vendor/longfellow-zk/lib/merkle/merkle_commitment.h +104 -0
  249. data/vendor/longfellow-zk/lib/merkle/merkle_tree.h +216 -0
  250. data/vendor/longfellow-zk/lib/merkle/merkle_tree_test.cc +240 -0
  251. data/vendor/longfellow-zk/lib/proto/circuit.h +354 -0
  252. data/vendor/longfellow-zk/lib/proto/circuit_test.cc +202 -0
  253. data/vendor/longfellow-zk/lib/random/random.h +119 -0
  254. data/vendor/longfellow-zk/lib/random/random_test.cc +189 -0
  255. data/vendor/longfellow-zk/lib/random/secure_random_engine.h +37 -0
  256. data/vendor/longfellow-zk/lib/random/transcript.h +193 -0
  257. data/vendor/longfellow-zk/lib/random/transcript_test.cc +344 -0
  258. data/vendor/longfellow-zk/lib/sumcheck/circuit.h +148 -0
  259. data/vendor/longfellow-zk/lib/sumcheck/circuit_id.h +71 -0
  260. data/vendor/longfellow-zk/lib/sumcheck/equad.h +126 -0
  261. data/vendor/longfellow-zk/lib/sumcheck/hquad.h +115 -0
  262. data/vendor/longfellow-zk/lib/sumcheck/prover.h +59 -0
  263. data/vendor/longfellow-zk/lib/sumcheck/prover_layers.h +362 -0
  264. data/vendor/longfellow-zk/lib/sumcheck/quad.h +227 -0
  265. data/vendor/longfellow-zk/lib/sumcheck/quad_builder.h +211 -0
  266. data/vendor/longfellow-zk/lib/sumcheck/quad_test.cc +169 -0
  267. data/vendor/longfellow-zk/lib/sumcheck/sumcheck_test.cc +324 -0
  268. data/vendor/longfellow-zk/lib/sumcheck/testing.h +69 -0
  269. data/vendor/longfellow-zk/lib/sumcheck/transcript_sumcheck.h +85 -0
  270. data/vendor/longfellow-zk/lib/sumcheck/verifier.h +84 -0
  271. data/vendor/longfellow-zk/lib/sumcheck/verifier_layers.h +221 -0
  272. data/vendor/longfellow-zk/lib/testing/test_main.cc +50 -0
  273. data/vendor/longfellow-zk/lib/util/ceildiv.h +164 -0
  274. data/vendor/longfellow-zk/lib/util/ceildiv_test.cc +152 -0
  275. data/vendor/longfellow-zk/lib/util/crc64.h +45 -0
  276. data/vendor/longfellow-zk/lib/util/crypto.cc +39 -0
  277. data/vendor/longfellow-zk/lib/util/crypto.h +108 -0
  278. data/vendor/longfellow-zk/lib/util/log.cc +110 -0
  279. data/vendor/longfellow-zk/lib/util/log.h +33 -0
  280. data/vendor/longfellow-zk/lib/util/panic.h +40 -0
  281. data/vendor/longfellow-zk/lib/util/readbuffer.h +67 -0
  282. data/vendor/longfellow-zk/lib/util/serialization.h +54 -0
  283. data/vendor/longfellow-zk/lib/zk/zk_common.h +455 -0
  284. data/vendor/longfellow-zk/lib/zk/zk_proof.h +378 -0
  285. data/vendor/longfellow-zk/lib/zk/zk_prover.h +202 -0
  286. data/vendor/longfellow-zk/lib/zk/zk_test.cc +340 -0
  287. data/vendor/longfellow-zk/lib/zk/zk_testing.h +154 -0
  288. data/vendor/longfellow-zk/lib/zk/zk_verifier.h +109 -0
  289. metadata +347 -0
@@ -0,0 +1,540 @@
1
+ // Generated by gen_sigdecode_test_vectors.py
2
+ const size_t kNumSigDecodeTests = 3;
3
+ const size_t kSignatureSize = 2420;
4
+ const uint8_t kSigDecodeSignatures[3][2420] = {
5
+ {
6
+ 97, 76, 101, 140, 98, 83, 8, 58, 220, 126, 26, 74, 37, 153,
7
+ 150, 193, 41, 0, 142, 63, 78, 71, 231, 146, 77, 210, 191, 136,
8
+ 32, 58, 216, 65, 163, 94, 155, 241, 110, 133, 158, 32, 116, 125,
9
+ 162, 136, 158, 251, 150, 165, 227, 127, 17, 235, 245, 153, 204, 237,
10
+ 115, 74, 167, 163, 93, 97, 208, 170, 18, 149, 229, 241, 246, 120,
11
+ 238, 221, 43, 168, 71, 202, 212, 82, 179, 37, 216, 37, 129, 37,
12
+ 153, 191, 8, 62, 226, 117, 71, 155, 147, 211, 121, 214, 174, 233,
13
+ 111, 115, 2, 126, 49, 110, 129, 1, 215, 221, 122, 243, 11, 237,
14
+ 218, 39, 177, 38, 78, 18, 44, 141, 12, 228, 171, 207, 86, 208,
15
+ 138, 206, 19, 95, 193, 158, 244, 186, 45, 170, 225, 156, 66, 171,
16
+ 107, 236, 71, 179, 105, 145, 225, 215, 45, 136, 155, 213, 172, 248,
17
+ 121, 58, 200, 226, 21, 43, 133, 181, 163, 132, 173, 128, 33, 97,
18
+ 253, 152, 144, 82, 88, 57, 117, 52, 239, 118, 94, 33, 59, 250,
19
+ 11, 243, 16, 76, 209, 145, 202, 177, 188, 244, 65, 0, 68, 18,
20
+ 18, 110, 51, 116, 50, 253, 73, 123, 116, 255, 99, 55, 166, 132,
21
+ 7, 4, 154, 154, 130, 113, 49, 73, 171, 67, 64, 45, 255, 248,
22
+ 3, 242, 247, 115, 210, 111, 56, 122, 53, 162, 232, 17, 114, 179,
23
+ 157, 108, 232, 232, 173, 181, 236, 247, 184, 62, 105, 135, 59, 19,
24
+ 22, 105, 228, 72, 247, 238, 96, 219, 92, 77, 142, 2, 136, 209,
25
+ 158, 180, 118, 135, 104, 146, 88, 70, 139, 73, 237, 42, 153, 103,
26
+ 173, 9, 121, 88, 84, 204, 237, 36, 97, 171, 91, 143, 27, 202,
27
+ 37, 179, 249, 4, 171, 87, 179, 244, 43, 110, 118, 126, 38, 165,
28
+ 73, 9, 80, 181, 74, 210, 196, 152, 155, 130, 12, 4, 238, 185,
29
+ 148, 239, 244, 194, 78, 91, 157, 50, 151, 38, 151, 157, 105, 102,
30
+ 114, 94, 69, 103, 235, 12, 239, 254, 181, 25, 4, 75, 146, 133,
31
+ 159, 19, 126, 71, 61, 229, 98, 88, 36, 42, 64, 98, 120, 92,
32
+ 136, 62, 196, 198, 221, 186, 88, 18, 29, 172, 27, 161, 125, 36,
33
+ 172, 198, 201, 229, 89, 252, 129, 168, 175, 4, 126, 49, 0, 224,
34
+ 37, 125, 223, 149, 2, 66, 208, 38, 28, 85, 23, 9, 248, 159,
35
+ 150, 61, 39, 97, 152, 33, 46, 112, 178, 24, 196, 201, 78, 104,
36
+ 249, 136, 187, 244, 244, 241, 182, 38, 80, 12, 116, 135, 95, 81,
37
+ 146, 176, 35, 211, 190, 211, 148, 34, 8, 201, 20, 218, 66, 46,
38
+ 39, 67, 243, 174, 143, 115, 11, 24, 164, 1, 42, 122, 39, 133,
39
+ 240, 107, 237, 74, 213, 145, 238, 119, 80, 87, 30, 16, 19, 194,
40
+ 30, 76, 49, 153, 233, 36, 177, 172, 9, 110, 11, 215, 238, 12,
41
+ 10, 22, 140, 71, 62, 52, 171, 218, 175, 255, 222, 164, 40, 30,
42
+ 102, 26, 37, 253, 119, 107, 135, 62, 45, 19, 4, 169, 173, 123,
43
+ 93, 72, 220, 246, 216, 136, 201, 93, 140, 36, 206, 2, 70, 30,
44
+ 150, 78, 23, 54, 61, 214, 230, 226, 195, 148, 218, 162, 129, 23,
45
+ 132, 220, 32, 126, 17, 238, 169, 59, 151, 236, 203, 98, 66, 107,
46
+ 39, 33, 65, 81, 196, 84, 218, 205, 81, 151, 164, 71, 42, 235,
47
+ 131, 78, 12, 164, 236, 47, 65, 148, 75, 190, 231, 253, 113, 232,
48
+ 88, 240, 105, 130, 114, 77, 180, 29, 117, 113, 179, 195, 101, 42,
49
+ 20, 176, 89, 110, 156, 155, 232, 78, 136, 242, 138, 205, 210, 106,
50
+ 159, 140, 54, 86, 209, 142, 223, 138, 38, 226, 8, 202, 139, 193,
51
+ 66, 126, 118, 163, 10, 198, 160, 0, 124, 181, 125, 91, 22, 107,
52
+ 147, 99, 201, 113, 227, 119, 209, 212, 191, 195, 172, 64, 216, 165,
53
+ 225, 125, 196, 103, 81, 112, 134, 143, 109, 26, 169, 173, 117, 211,
54
+ 74, 148, 142, 131, 30, 101, 3, 201, 134, 79, 143, 204, 204, 20,
55
+ 158, 228, 155, 172, 86, 63, 124, 68, 27, 55, 173, 210, 129, 249,
56
+ 211, 134, 165, 3, 32, 16, 222, 160, 237, 30, 188, 241, 85, 78,
57
+ 243, 64, 219, 185, 192, 52, 44, 204, 39, 75, 205, 84, 115, 89,
58
+ 40, 136, 107, 9, 21, 106, 13, 54, 207, 46, 242, 80, 149, 172,
59
+ 109, 32, 186, 122, 97, 118, 254, 231, 67, 147, 98, 88, 66, 105,
60
+ 113, 106, 47, 178, 64, 119, 37, 190, 109, 55, 234, 81, 216, 58,
61
+ 180, 74, 208, 222, 136, 198, 190, 15, 99, 248, 114, 201, 77, 100,
62
+ 143, 154, 207, 143, 182, 64, 243, 172, 85, 28, 77, 198, 179, 57,
63
+ 38, 195, 122, 217, 188, 49, 228, 53, 117, 232, 50, 192, 221, 46,
64
+ 190, 119, 153, 196, 192, 83, 65, 142, 51, 236, 168, 59, 46, 52,
65
+ 64, 119, 197, 219, 52, 208, 215, 54, 229, 241, 119, 207, 146, 148,
66
+ 215, 23, 82, 136, 169, 224, 180, 164, 98, 57, 223, 91, 17, 1,
67
+ 218, 228, 12, 128, 210, 211, 118, 57, 66, 209, 134, 131, 113, 87,
68
+ 89, 245, 185, 74, 143, 166, 114, 247, 178, 199, 83, 56, 10, 137,
69
+ 103, 242, 161, 138, 166, 208, 235, 59, 88, 0, 194, 80, 15, 220,
70
+ 218, 214, 147, 143, 199, 239, 67, 70, 3, 49, 241, 105, 101, 89,
71
+ 187, 17, 152, 117, 99, 180, 109, 171, 126, 41, 234, 171, 137, 214,
72
+ 11, 1, 128, 121, 2, 229, 55, 142, 13, 66, 215, 36, 161, 181,
73
+ 165, 14, 75, 211, 1, 123, 26, 12, 194, 38, 22, 206, 55, 146,
74
+ 38, 179, 50, 30, 18, 253, 152, 169, 173, 149, 20, 46, 170, 38,
75
+ 10, 162, 96, 45, 38, 101, 77, 248, 0, 126, 47, 156, 170, 107,
76
+ 112, 240, 10, 194, 104, 18, 234, 251, 112, 56, 151, 60, 47, 125,
77
+ 233, 70, 247, 209, 104, 185, 47, 51, 79, 228, 67, 79, 213, 65,
78
+ 104, 221, 198, 73, 84, 104, 239, 10, 158, 30, 17, 52, 131, 68,
79
+ 79, 206, 76, 78, 183, 133, 140, 148, 165, 251, 62, 75, 69, 24,
80
+ 58, 176, 143, 252, 218, 140, 122, 28, 215, 8, 168, 149, 143, 93,
81
+ 214, 59, 104, 203, 19, 180, 45, 154, 209, 121, 73, 153, 143, 251,
82
+ 96, 223, 130, 72, 100, 66, 92, 134, 122, 143, 174, 100, 199, 202,
83
+ 68, 139, 150, 48, 177, 115, 18, 215, 201, 192, 195, 210, 52, 202,
84
+ 205, 104, 104, 63, 87, 233, 20, 93, 147, 49, 92, 94, 228, 185,
85
+ 182, 21, 141, 245, 62, 32, 149, 232, 220, 83, 38, 107, 112, 193,
86
+ 213, 139, 139, 221, 26, 0, 185, 7, 143, 202, 129, 13, 123, 217,
87
+ 175, 193, 82, 66, 246, 230, 181, 14, 221, 173, 177, 86, 156, 214,
88
+ 33, 124, 29, 129, 42, 69, 222, 125, 161, 232, 167, 34, 187, 192,
89
+ 67, 124, 54, 42, 133, 98, 54, 136, 61, 236, 4, 1, 136, 5,
90
+ 22, 182, 56, 42, 118, 201, 2, 91, 80, 233, 209, 234, 51, 101,
91
+ 122, 71, 218, 24, 238, 97, 124, 47, 134, 95, 106, 250, 154, 49,
92
+ 239, 162, 115, 98, 40, 251, 4, 148, 137, 203, 173, 187, 145, 235,
93
+ 50, 62, 169, 113, 3, 245, 78, 65, 39, 255, 84, 212, 99, 229,
94
+ 221, 250, 253, 192, 212, 66, 67, 142, 79, 13, 172, 65, 227, 162,
95
+ 193, 95, 199, 10, 68, 157, 135, 159, 99, 189, 210, 66, 110, 22,
96
+ 50, 218, 199, 60, 78, 121, 123, 159, 62, 131, 152, 171, 161, 42,
97
+ 130, 200, 191, 160, 250, 60, 79, 215, 155, 245, 114, 220, 246, 117,
98
+ 184, 142, 57, 118, 1, 253, 119, 140, 170, 134, 62, 250, 166, 42,
99
+ 188, 54, 142, 87, 151, 232, 31, 175, 222, 21, 87, 130, 123, 131,
100
+ 113, 68, 184, 161, 74, 190, 39, 129, 113, 69, 31, 56, 154, 155,
101
+ 129, 139, 25, 198, 126, 105, 142, 251, 22, 179, 82, 54, 116, 59,
102
+ 150, 142, 124, 124, 1, 200, 64, 190, 244, 64, 41, 175, 217, 158,
103
+ 156, 231, 156, 12, 241, 208, 149, 105, 20, 176, 125, 6, 19, 37,
104
+ 125, 202, 165, 112, 252, 243, 5, 33, 10, 208, 134, 186, 253, 228,
105
+ 9, 187, 75, 52, 30, 215, 81, 26, 8, 80, 168, 187, 61, 155,
106
+ 133, 28, 245, 19, 96, 215, 64, 218, 196, 26, 65, 55, 27, 157,
107
+ 115, 213, 70, 194, 254, 101, 226, 149, 128, 84, 143, 55, 5, 38,
108
+ 252, 82, 29, 48, 94, 152, 144, 203, 231, 74, 191, 111, 195, 227,
109
+ 202, 200, 120, 21, 66, 144, 74, 186, 66, 206, 157, 237, 2, 40,
110
+ 222, 217, 207, 88, 226, 110, 196, 156, 0, 4, 166, 105, 35, 36,
111
+ 177, 231, 231, 72, 129, 193, 18, 2, 233, 221, 228, 18, 80, 8,
112
+ 142, 233, 16, 154, 203, 153, 37, 181, 251, 252, 59, 229, 32, 229,
113
+ 103, 10, 34, 20, 160, 156, 67, 162, 28, 248, 54, 30, 81, 15,
114
+ 197, 136, 3, 0, 4, 207, 208, 99, 217, 40, 123, 95, 117, 126,
115
+ 207, 242, 196, 215, 70, 69, 87, 32, 200, 125, 241, 31, 26, 102,
116
+ 165, 214, 52, 89, 234, 85, 62, 151, 89, 222, 10, 180, 135, 67,
117
+ 121, 166, 89, 72, 184, 223, 23, 152, 93, 33, 151, 42, 253, 85,
118
+ 145, 117, 166, 1, 182, 152, 91, 135, 92, 90, 26, 57, 33, 195,
119
+ 2, 229, 238, 43, 160, 144, 77, 242, 116, 141, 198, 237, 218, 40,
120
+ 54, 139, 99, 250, 187, 218, 137, 107, 218, 229, 157, 219, 220, 114,
121
+ 178, 71, 17, 212, 75, 76, 57, 116, 57, 180, 152, 84, 215, 68,
122
+ 2, 76, 102, 126, 83, 212, 25, 61, 185, 159, 77, 197, 146, 172,
123
+ 241, 240, 115, 153, 110, 10, 210, 48, 198, 251, 215, 217, 23, 172,
124
+ 23, 186, 221, 12, 207, 131, 106, 114, 116, 190, 200, 38, 242, 2,
125
+ 23, 246, 206, 63, 237, 158, 72, 80, 16, 32, 176, 56, 208, 119,
126
+ 159, 179, 237, 209, 24, 200, 228, 160, 230, 132, 126, 216, 245, 67,
127
+ 24, 81, 108, 128, 231, 14, 43, 170, 30, 81, 139, 0, 121, 163,
128
+ 134, 150, 145, 104, 169, 82, 251, 131, 147, 227, 221, 77, 166, 251,
129
+ 34, 21, 76, 251, 134, 168, 73, 23, 20, 177, 216, 160, 223, 134,
130
+ 199, 59, 217, 146, 47, 114, 0, 141, 170, 6, 23, 149, 248, 248,
131
+ 243, 93, 130, 172, 191, 198, 212, 153, 247, 96, 245, 26, 207, 49,
132
+ 104, 136, 218, 196, 155, 182, 230, 114, 189, 212, 155, 31, 193, 66,
133
+ 170, 168, 212, 216, 19, 151, 1, 184, 219, 200, 121, 212, 117, 219,
134
+ 155, 139, 84, 139, 189, 125, 151, 19, 3, 95, 31, 200, 241, 50,
135
+ 244, 31, 182, 82, 76, 236, 62, 74, 197, 49, 120, 74, 250, 109,
136
+ 57, 135, 121, 14, 94, 225, 195, 17, 218, 21, 172, 227, 146, 67,
137
+ 230, 142, 93, 51, 161, 219, 59, 142, 229, 85, 170, 201, 230, 216,
138
+ 144, 234, 158, 22, 128, 85, 112, 0, 123, 78, 38, 175, 16, 173,
139
+ 161, 242, 237, 44, 128, 115, 23, 189, 171, 98, 235, 24, 192, 117,
140
+ 163, 254, 170, 67, 62, 151, 101, 228, 70, 127, 6, 127, 61, 170,
141
+ 168, 20, 4, 189, 8, 209, 153, 103, 209, 205, 250, 86, 179, 122,
142
+ 240, 67, 147, 150, 11, 130, 170, 181, 255, 112, 205, 131, 255, 26,
143
+ 93, 117, 226, 12, 244, 67, 56, 18, 61, 147, 80, 190, 237, 23,
144
+ 87, 18, 34, 25, 138, 166, 186, 106, 167, 153, 80, 103, 46, 64,
145
+ 148, 114, 21, 108, 10, 229, 117, 102, 91, 161, 177, 42, 139, 99,
146
+ 189, 65, 252, 131, 172, 84, 30, 91, 91, 154, 161, 49, 187, 205,
147
+ 105, 92, 72, 54, 161, 90, 128, 171, 130, 221, 199, 222, 171, 69,
148
+ 92, 112, 248, 156, 126, 149, 33, 23, 208, 212, 24, 202, 35, 220,
149
+ 162, 154, 9, 109, 65, 69, 220, 48, 251, 23, 234, 193, 188, 124,
150
+ 173, 136, 170, 100, 105, 133, 82, 75, 136, 158, 65, 174, 67, 163,
151
+ 171, 69, 36, 255, 187, 106, 60, 117, 190, 188, 130, 153, 132, 174,
152
+ 71, 148, 180, 197, 48, 18, 66, 196, 86, 0, 10, 172, 199, 207,
153
+ 183, 163, 86, 54, 149, 220, 122, 82, 2, 82, 226, 253, 180, 65,
154
+ 63, 80, 4, 91, 21, 79, 84, 4, 223, 144, 35, 53, 74, 62,
155
+ 43, 117, 48, 54, 99, 68, 245, 109, 138, 93, 167, 4, 10, 188,
156
+ 246, 168, 225, 197, 22, 232, 201, 175, 194, 109, 231, 162, 233, 60,
157
+ 119, 1, 112, 121, 81, 58, 49, 139, 68, 211, 187, 71, 45, 59,
158
+ 198, 122, 8, 37, 109, 154, 227, 25, 141, 183, 64, 22, 81, 149,
159
+ 166, 206, 84, 96, 0, 35, 156, 7, 31, 222, 233, 48, 217, 55,
160
+ 107, 166, 4, 169, 251, 68, 52, 130, 214, 33, 187, 167, 174, 176,
161
+ 87, 233, 118, 99, 205, 77, 177, 49, 200, 242, 223, 110, 52, 55,
162
+ 20, 9, 75, 96, 93, 178, 217, 221, 196, 108, 166, 111, 204, 56,
163
+ 88, 93, 252, 224, 84, 197, 84, 140, 136, 136, 133, 140, 248, 139,
164
+ 136, 13, 79, 216, 202, 170, 195, 41, 240, 240, 56, 247, 255, 34,
165
+ 170, 124, 67, 19, 224, 231, 22, 124, 66, 134, 22, 248, 46, 198,
166
+ 22, 208, 214, 10, 255, 171, 62, 122, 91, 11, 222, 2, 228, 144,
167
+ 200, 16, 29, 134, 74, 163, 34, 69, 143, 52, 234, 210, 106, 153,
168
+ 177, 241, 10, 19, 81, 124, 97, 67, 93, 169, 134, 207, 197, 21,
169
+ 151, 178, 72, 188, 61, 107, 177, 170, 228, 37, 33, 73, 110, 190,
170
+ 229, 23, 48, 241, 198, 237, 150, 83, 61, 209, 247, 79, 60, 50,
171
+ 20, 11, 241, 173, 57, 207, 6, 123, 193, 232, 143, 68, 41, 6,
172
+ 98, 105, 230, 204, 87, 220, 228, 180, 199, 245, 70, 35, 2, 28,
173
+ 45, 49, 51, 55, 56, 67, 74, 75, 105, 116, 144, 173, 193, 205,
174
+ 216, 220, 228, 233, 236, 11, 26, 45, 71, 76, 88, 90, 94, 107,
175
+ 114, 118, 132, 152, 195, 231, 251, 3, 12, 19, 32, 34, 46, 52,
176
+ 87, 89, 92, 97, 139, 154, 170, 173, 190, 191, 196, 207, 232, 254,
177
+ 255, 5, 7, 39, 54, 68, 87, 101, 121, 137, 179, 185, 194, 200,
178
+ 219, 233, 0, 0, 0, 0, 0, 0, 21, 37, 59, 74,
179
+ },
180
+ {
181
+ 159, 200, 65, 81, 139, 0, 130, 59, 9, 31, 109, 28, 61, 205,
182
+ 121, 8, 197, 54, 221, 58, 90, 49, 79, 93, 212, 35, 124, 107,
183
+ 96, 89, 129, 115, 167, 208, 130, 237, 126, 60, 254, 25, 211, 173,
184
+ 54, 95, 138, 160, 87, 110, 63, 92, 195, 2, 18, 114, 101, 76,
185
+ 148, 208, 204, 102, 241, 98, 214, 180, 130, 71, 199, 16, 191, 192,
186
+ 233, 94, 25, 116, 1, 81, 176, 151, 79, 185, 46, 185, 225, 47,
187
+ 215, 173, 138, 141, 208, 6, 116, 158, 17, 146, 224, 173, 132, 90,
188
+ 55, 201, 219, 213, 230, 231, 244, 111, 161, 97, 47, 169, 82, 204,
189
+ 116, 33, 211, 29, 44, 109, 211, 27, 109, 167, 106, 135, 234, 130,
190
+ 153, 9, 251, 121, 112, 84, 40, 71, 137, 170, 108, 162, 52, 189,
191
+ 103, 150, 211, 33, 211, 147, 99, 80, 175, 48, 184, 49, 248, 169,
192
+ 162, 90, 220, 52, 131, 9, 123, 246, 118, 81, 135, 144, 225, 221,
193
+ 57, 52, 51, 22, 112, 49, 45, 12, 97, 46, 93, 99, 119, 85,
194
+ 24, 157, 169, 102, 140, 106, 155, 170, 2, 83, 171, 100, 205, 92,
195
+ 200, 233, 151, 155, 234, 58, 27, 221, 36, 173, 43, 216, 34, 45,
196
+ 199, 138, 60, 26, 38, 195, 100, 242, 130, 82, 106, 136, 221, 195,
197
+ 205, 254, 38, 180, 91, 68, 159, 150, 127, 39, 249, 137, 117, 181,
198
+ 17, 237, 67, 252, 96, 185, 67, 212, 166, 241, 248, 191, 11, 76,
199
+ 20, 131, 1, 131, 92, 113, 248, 44, 51, 124, 11, 26, 185, 233,
200
+ 204, 250, 81, 191, 113, 44, 189, 198, 21, 129, 20, 119, 69, 80,
201
+ 200, 202, 20, 26, 218, 251, 215, 182, 166, 142, 177, 187, 150, 31,
202
+ 43, 27, 38, 63, 42, 119, 47, 58, 91, 85, 221, 3, 92, 15,
203
+ 47, 234, 181, 118, 79, 123, 213, 143, 110, 119, 157, 85, 175, 255,
204
+ 190, 12, 112, 119, 153, 244, 187, 187, 12, 115, 143, 29, 106, 60,
205
+ 13, 237, 154, 172, 217, 47, 37, 206, 6, 60, 150, 217, 118, 72,
206
+ 174, 194, 234, 211, 222, 254, 248, 121, 140, 56, 94, 128, 207, 159,
207
+ 36, 34, 9, 212, 83, 142, 67, 152, 58, 71, 7, 225, 29, 140,
208
+ 133, 143, 49, 66, 50, 201, 43, 237, 133, 246, 247, 79, 9, 222,
209
+ 109, 3, 241, 54, 155, 237, 157, 100, 216, 177, 15, 225, 221, 3,
210
+ 85, 77, 167, 186, 113, 247, 14, 120, 11, 223, 89, 103, 179, 110,
211
+ 64, 162, 29, 223, 199, 214, 72, 140, 82, 114, 250, 211, 0, 174,
212
+ 103, 53, 200, 158, 8, 78, 26, 235, 190, 97, 29, 226, 217, 53,
213
+ 175, 208, 115, 3, 38, 98, 221, 93, 56, 119, 32, 37, 122, 48,
214
+ 239, 225, 13, 181, 252, 3, 65, 59, 33, 209, 71, 110, 66, 203,
215
+ 188, 233, 112, 230, 106, 138, 35, 224, 11, 22, 183, 106, 123, 4,
216
+ 170, 219, 147, 121, 182, 235, 161, 231, 208, 244, 68, 224, 14, 251,
217
+ 50, 242, 85, 48, 162, 21, 134, 240, 132, 104, 13, 116, 192, 94,
218
+ 113, 235, 236, 22, 158, 120, 119, 226, 111, 161, 223, 201, 168, 37,
219
+ 147, 81, 47, 166, 103, 74, 41, 135, 237, 115, 202, 169, 171, 81,
220
+ 180, 202, 172, 24, 73, 118, 231, 233, 35, 191, 81, 51, 97, 27,
221
+ 225, 69, 217, 145, 25, 160, 187, 89, 21, 64, 248, 223, 120, 145,
222
+ 93, 178, 152, 247, 95, 242, 197, 137, 176, 161, 249, 18, 145, 139,
223
+ 69, 103, 17, 45, 109, 220, 12, 60, 84, 90, 15, 54, 24, 170,
224
+ 249, 132, 51, 82, 22, 183, 136, 203, 212, 179, 142, 235, 18, 228,
225
+ 234, 156, 205, 4, 43, 171, 126, 110, 176, 227, 191, 176, 18, 183,
226
+ 18, 151, 174, 187, 105, 28, 64, 151, 19, 79, 99, 151, 32, 120,
227
+ 129, 139, 125, 47, 131, 57, 149, 225, 17, 176, 170, 90, 196, 12,
228
+ 162, 141, 227, 84, 95, 85, 150, 125, 225, 255, 190, 129, 252, 233,
229
+ 117, 62, 185, 129, 52, 72, 199, 204, 17, 211, 30, 77, 178, 198,
230
+ 236, 203, 254, 61, 112, 170, 103, 121, 236, 57, 24, 201, 93, 14,
231
+ 134, 83, 178, 69, 103, 169, 81, 135, 6, 252, 28, 108, 159, 31,
232
+ 231, 126, 107, 231, 146, 21, 193, 190, 139, 60, 60, 25, 9, 176,
233
+ 248, 153, 34, 39, 22, 37, 3, 202, 155, 221, 238, 62, 123, 75,
234
+ 126, 230, 40, 155, 60, 83, 70, 40, 226, 150, 146, 237, 246, 127,
235
+ 43, 38, 250, 78, 127, 133, 5, 63, 212, 133, 66, 27, 25, 95,
236
+ 109, 156, 212, 73, 124, 124, 134, 139, 165, 98, 246, 150, 131, 15,
237
+ 33, 123, 165, 64, 182, 132, 31, 250, 232, 174, 138, 192, 153, 48,
238
+ 176, 161, 24, 69, 80, 23, 120, 209, 39, 80, 60, 127, 0, 5,
239
+ 219, 155, 38, 167, 210, 146, 110, 241, 163, 61, 234, 82, 207, 153,
240
+ 143, 173, 132, 13, 151, 51, 255, 173, 73, 182, 205, 181, 85, 239,
241
+ 134, 211, 176, 32, 122, 136, 127, 191, 54, 125, 35, 59, 83, 102,
242
+ 43, 82, 239, 112, 125, 10, 28, 104, 48, 148, 188, 219, 192, 28,
243
+ 139, 140, 133, 33, 77, 127, 174, 133, 237, 76, 89, 120, 162, 101,
244
+ 75, 208, 153, 168, 60, 115, 137, 254, 199, 214, 184, 49, 85, 181,
245
+ 120, 11, 201, 162, 61, 63, 8, 119, 75, 122, 18, 172, 175, 89,
246
+ 141, 74, 200, 183, 219, 25, 78, 178, 5, 24, 69, 16, 118, 151,
247
+ 64, 200, 233, 202, 37, 157, 38, 5, 94, 154, 158, 36, 105, 11,
248
+ 215, 142, 13, 247, 168, 39, 140, 161, 167, 204, 59, 75, 197, 245,
249
+ 106, 188, 220, 59, 204, 149, 154, 1, 178, 209, 119, 220, 163, 32,
250
+ 231, 46, 80, 177, 97, 247, 13, 97, 102, 35, 235, 236, 85, 45,
251
+ 76, 181, 28, 27, 178, 141, 255, 83, 174, 96, 139, 240, 217, 140,
252
+ 69, 246, 243, 75, 238, 246, 239, 106, 224, 81, 74, 159, 155, 6,
253
+ 202, 235, 200, 154, 251, 172, 81, 5, 211, 101, 215, 193, 113, 213,
254
+ 153, 102, 186, 181, 200, 127, 163, 168, 244, 155, 209, 58, 244, 18,
255
+ 210, 55, 73, 15, 120, 212, 35, 211, 135, 106, 35, 214, 64, 20,
256
+ 151, 172, 13, 239, 43, 62, 117, 42, 36, 31, 205, 169, 102, 140,
257
+ 185, 25, 5, 17, 73, 70, 171, 191, 55, 245, 85, 19, 3, 84,
258
+ 134, 195, 53, 87, 210, 148, 16, 137, 118, 19, 176, 22, 53, 248,
259
+ 202, 239, 155, 214, 211, 14, 93, 75, 220, 117, 118, 83, 81, 239,
260
+ 102, 144, 182, 53, 150, 156, 177, 53, 2, 223, 147, 79, 167, 119,
261
+ 95, 102, 254, 115, 95, 98, 220, 209, 166, 45, 191, 30, 123, 247,
262
+ 98, 7, 146, 213, 179, 137, 144, 150, 221, 234, 14, 212, 194, 122,
263
+ 64, 8, 63, 150, 4, 118, 226, 153, 166, 24, 240, 214, 162, 111,
264
+ 109, 157, 99, 50, 210, 253, 168, 189, 191, 27, 64, 53, 166, 100,
265
+ 184, 74, 197, 219, 63, 140, 88, 59, 147, 247, 67, 2, 9, 56,
266
+ 131, 70, 148, 32, 145, 21, 48, 169, 96, 139, 205, 146, 99, 109,
267
+ 211, 116, 12, 85, 102, 243, 40, 211, 129, 178, 184, 8, 168, 15,
268
+ 153, 63, 127, 182, 37, 5, 83, 238, 22, 123, 15, 92, 67, 137,
269
+ 232, 211, 212, 33, 41, 98, 234, 91, 222, 170, 18, 42, 180, 229,
270
+ 254, 251, 35, 43, 241, 15, 30, 182, 67, 25, 27, 220, 77, 127,
271
+ 166, 255, 166, 34, 244, 139, 186, 12, 44, 109, 77, 223, 217, 171,
272
+ 206, 171, 235, 203, 68, 57, 143, 124, 177, 20, 103, 169, 187, 55,
273
+ 82, 131, 179, 102, 38, 203, 166, 208, 106, 30, 155, 79, 43, 33,
274
+ 194, 34, 82, 225, 90, 116, 174, 84, 171, 135, 252, 102, 24, 22,
275
+ 255, 111, 21, 161, 37, 116, 239, 28, 43, 111, 84, 206, 73, 95,
276
+ 39, 80, 243, 115, 196, 156, 111, 193, 8, 248, 5, 62, 194, 132,
277
+ 167, 76, 10, 39, 75, 9, 89, 207, 254, 105, 28, 93, 193, 162,
278
+ 212, 226, 197, 145, 242, 81, 128, 193, 176, 156, 133, 163, 155, 123,
279
+ 86, 201, 58, 90, 216, 189, 168, 199, 208, 9, 144, 128, 181, 104,
280
+ 180, 72, 119, 5, 77, 159, 209, 92, 47, 51, 98, 138, 136, 92,
281
+ 243, 220, 194, 184, 12, 197, 35, 192, 63, 160, 157, 204, 62, 143,
282
+ 233, 26, 218, 2, 134, 212, 24, 153, 92, 149, 93, 217, 49, 167,
283
+ 156, 49, 193, 176, 238, 96, 219, 65, 165, 127, 26, 94, 205, 238,
284
+ 106, 212, 212, 64, 96, 67, 194, 48, 3, 12, 33, 139, 1, 125,
285
+ 60, 165, 161, 212, 31, 4, 94, 8, 26, 182, 9, 237, 61, 211,
286
+ 164, 86, 160, 229, 207, 220, 235, 46, 87, 198, 117, 20, 240, 119,
287
+ 131, 113, 98, 134, 242, 171, 90, 145, 147, 195, 74, 241, 88, 40,
288
+ 107, 218, 28, 158, 189, 226, 139, 238, 73, 231, 156, 106, 137, 242,
289
+ 186, 54, 33, 245, 218, 33, 122, 37, 95, 6, 235, 75, 89, 31,
290
+ 116, 182, 71, 27, 129, 42, 219, 244, 96, 135, 143, 12, 249, 191,
291
+ 12, 76, 53, 121, 249, 150, 174, 31, 215, 219, 222, 106, 1, 208,
292
+ 175, 186, 180, 137, 86, 30, 31, 97, 41, 140, 170, 176, 214, 210,
293
+ 253, 96, 130, 250, 255, 122, 51, 70, 232, 155, 12, 30, 218, 10,
294
+ 141, 161, 240, 119, 53, 73, 39, 191, 173, 48, 236, 38, 149, 77,
295
+ 159, 189, 233, 241, 78, 136, 165, 128, 253, 75, 237, 61, 96, 195,
296
+ 241, 92, 242, 185, 11, 234, 16, 168, 76, 199, 24, 165, 36, 133,
297
+ 28, 211, 88, 78, 40, 221, 60, 219, 65, 95, 9, 37, 233, 245,
298
+ 61, 185, 103, 3, 245, 157, 132, 86, 136, 236, 153, 187, 126, 152,
299
+ 29, 224, 151, 233, 51, 99, 8, 231, 107, 108, 207, 39, 214, 154,
300
+ 63, 184, 229, 160, 122, 129, 39, 141, 252, 211, 117, 223, 251, 27,
301
+ 212, 5, 119, 15, 177, 11, 40, 137, 249, 93, 130, 90, 122, 153,
302
+ 133, 158, 105, 81, 216, 46, 62, 131, 67, 230, 76, 116, 162, 31,
303
+ 9, 174, 39, 253, 250, 223, 234, 77, 6, 42, 150, 230, 21, 240,
304
+ 12, 209, 68, 42, 255, 175, 173, 224, 44, 102, 33, 85, 13, 208,
305
+ 123, 90, 169, 27, 225, 218, 54, 166, 239, 8, 24, 5, 78, 66,
306
+ 244, 196, 58, 243, 66, 22, 189, 32, 107, 98, 127, 30, 208, 201,
307
+ 149, 187, 10, 231, 60, 65, 106, 196, 46, 24, 138, 21, 175, 191,
308
+ 152, 57, 112, 185, 28, 80, 216, 168, 107, 0, 81, 176, 16, 92,
309
+ 242, 187, 252, 36, 177, 77, 100, 183, 103, 160, 164, 144, 58, 195,
310
+ 207, 16, 224, 245, 192, 140, 26, 176, 130, 206, 83, 141, 213, 122,
311
+ 155, 149, 140, 236, 211, 43, 117, 194, 144, 29, 183, 245, 82, 231,
312
+ 226, 252, 217, 33, 79, 122, 109, 72, 11, 176, 97, 215, 75, 7,
313
+ 15, 69, 19, 31, 253, 188, 20, 40, 115, 23, 131, 32, 138, 185,
314
+ 104, 221, 54, 179, 146, 193, 254, 85, 152, 16, 122, 243, 199, 112,
315
+ 12, 75, 181, 177, 116, 122, 180, 78, 36, 185, 120, 59, 17, 197,
316
+ 194, 13, 7, 48, 139, 247, 55, 183, 199, 111, 190, 249, 240, 229,
317
+ 248, 248, 58, 17, 33, 56, 192, 7, 38, 228, 234, 22, 249, 178,
318
+ 241, 8, 255, 23, 244, 111, 191, 127, 151, 165, 78, 235, 66, 121,
319
+ 184, 135, 53, 231, 117, 36, 13, 222, 81, 240, 210, 139, 80, 181,
320
+ 179, 197, 210, 105, 83, 69, 5, 171, 156, 221, 48, 9, 152, 24,
321
+ 149, 154, 178, 46, 42, 223, 233, 176, 36, 175, 222, 149, 68, 43,
322
+ 116, 239, 20, 89, 226, 212, 150, 9, 161, 248, 220, 215, 214, 113,
323
+ 64, 217, 50, 151, 66, 232, 14, 112, 181, 49, 152, 151, 185, 15,
324
+ 134, 55, 7, 21, 71, 50, 83, 222, 254, 252, 168, 16, 58, 139,
325
+ 210, 182, 47, 159, 32, 97, 162, 180, 53, 249, 79, 68, 83, 167,
326
+ 99, 110, 99, 205, 185, 172, 206, 226, 176, 70, 50, 188, 112, 35,
327
+ 214, 4, 122, 37, 164, 225, 159, 74, 101, 111, 180, 147, 58, 118,
328
+ 102, 18, 111, 228, 216, 95, 58, 73, 31, 86, 194, 35, 60, 206,
329
+ 219, 169, 52, 54, 248, 43, 180, 47, 128, 117, 241, 40, 15, 31,
330
+ 241, 212, 5, 114, 30, 155, 254, 27, 189, 214, 131, 186, 206, 199,
331
+ 3, 110, 142, 63, 183, 77, 238, 215, 242, 57, 88, 153, 128, 76,
332
+ 183, 224, 63, 248, 197, 94, 67, 141, 117, 221, 48, 52, 178, 43,
333
+ 48, 105, 1, 100, 104, 254, 193, 7, 66, 215, 225, 36, 84, 25,
334
+ 34, 186, 109, 227, 138, 19, 170, 91, 75, 0, 10, 202, 112, 196,
335
+ 205, 67, 166, 233, 248, 82, 82, 241, 98, 96, 51, 139, 241, 126,
336
+ 198, 61, 167, 136, 35, 1, 12, 84, 245, 14, 25, 90, 146, 55,
337
+ 185, 18, 85, 104, 63, 136, 59, 57, 35, 214, 107, 26, 136, 78,
338
+ 106, 159, 152, 0, 49, 184, 212, 128, 201, 41, 133, 23, 141, 63,
339
+ 104, 166, 238, 255, 58, 53, 194, 242, 18, 40, 223, 97, 139, 159,
340
+ 37, 255, 124, 68, 104, 144, 143, 55, 1, 12, 146, 233, 147, 178,
341
+ 252, 18, 106, 254, 202, 62, 107, 12, 162, 80, 111, 241, 85, 174,
342
+ 5, 197, 181, 96, 194, 218, 70, 36, 48, 213, 149, 115, 99, 171,
343
+ 23, 86, 14, 215, 25, 12, 48, 186, 28, 5, 13, 110, 247, 120,
344
+ 64, 9, 72, 118, 187, 116, 34, 148, 159, 95, 206, 110, 152, 162,
345
+ 239, 202, 241, 51, 115, 151, 234, 176, 91, 111, 158, 206, 233, 246,
346
+ 153, 245, 150, 32, 227, 229, 81, 127, 79, 251, 11, 100, 50, 218,
347
+ 107, 22, 169, 21, 49, 139, 24, 176, 193, 14, 54, 88, 56, 117,
348
+ 123, 138, 152, 183, 6, 31, 53, 118, 123, 133, 148, 180, 184, 191,
349
+ 227, 234, 243, 249, 252, 38, 65, 84, 108, 170, 203, 230, 246, 251,
350
+ 3, 10, 11, 65, 68, 123, 126, 139, 145, 151, 153, 168, 181, 199,
351
+ 200, 219, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
352
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 21, 30, 47,
354
+ },
355
+ {
356
+ 218, 203, 92, 107, 210, 83, 224, 56, 174, 33, 80, 25, 235, 64,
357
+ 231, 46, 218, 54, 8, 227, 2, 196, 111, 76, 46, 161, 151, 230,
358
+ 186, 241, 126, 131, 236, 249, 240, 193, 155, 119, 49, 175, 183, 25,
359
+ 19, 213, 37, 197, 239, 109, 70, 223, 138, 254, 45, 205, 92, 59,
360
+ 150, 173, 171, 39, 159, 141, 181, 160, 216, 2, 130, 107, 208, 115,
361
+ 99, 211, 230, 4, 149, 10, 227, 255, 90, 69, 223, 212, 172, 163,
362
+ 8, 169, 227, 107, 206, 160, 109, 214, 90, 193, 69, 231, 23, 68,
363
+ 196, 42, 236, 125, 64, 254, 164, 185, 161, 149, 123, 162, 66, 130,
364
+ 242, 191, 59, 88, 62, 7, 49, 237, 90, 188, 4, 182, 48, 235,
365
+ 110, 107, 248, 26, 39, 68, 161, 30, 77, 14, 204, 247, 128, 71,
366
+ 44, 168, 98, 122, 29, 243, 121, 158, 166, 233, 47, 104, 144, 82,
367
+ 192, 170, 243, 63, 0, 190, 177, 100, 185, 213, 72, 224, 112, 190,
368
+ 224, 240, 104, 245, 118, 57, 89, 102, 24, 86, 227, 51, 123, 150,
369
+ 243, 20, 235, 117, 166, 43, 184, 60, 192, 232, 178, 250, 86, 94,
370
+ 103, 24, 143, 230, 38, 135, 241, 219, 237, 76, 27, 160, 80, 255,
371
+ 106, 209, 19, 7, 190, 148, 16, 226, 31, 44, 39, 187, 121, 82,
372
+ 24, 161, 81, 60, 53, 17, 8, 188, 43, 196, 177, 201, 137, 68,
373
+ 58, 161, 250, 198, 91, 246, 153, 68, 105, 81, 254, 9, 124, 186,
374
+ 38, 48, 100, 50, 144, 215, 139, 242, 243, 51, 201, 178, 227, 60,
375
+ 87, 182, 114, 50, 68, 96, 89, 140, 80, 89, 17, 44, 102, 253,
376
+ 86, 89, 201, 14, 108, 14, 17, 139, 165, 158, 27, 208, 86, 0,
377
+ 167, 138, 27, 82, 169, 228, 37, 188, 108, 215, 193, 121, 109, 73,
378
+ 182, 173, 36, 189, 59, 44, 203, 2, 47, 38, 125, 183, 184, 219,
379
+ 99, 195, 215, 18, 162, 240, 191, 4, 153, 83, 218, 176, 228, 103,
380
+ 71, 48, 82, 40, 105, 130, 71, 13, 186, 67, 252, 223, 97, 204,
381
+ 49, 126, 229, 82, 112, 37, 113, 33, 97, 190, 128, 182, 40, 161,
382
+ 122, 227, 60, 72, 185, 100, 136, 176, 74, 235, 230, 148, 60, 252,
383
+ 195, 221, 87, 3, 99, 119, 35, 160, 1, 98, 180, 68, 45, 133,
384
+ 254, 240, 57, 250, 222, 107, 19, 21, 140, 214, 44, 158, 3, 254,
385
+ 137, 81, 78, 247, 44, 159, 207, 26, 189, 10, 65, 146, 229, 198,
386
+ 205, 79, 182, 107, 7, 228, 169, 248, 6, 89, 93, 217, 139, 235,
387
+ 206, 133, 94, 159, 35, 90, 17, 158, 224, 230, 84, 178, 9, 148,
388
+ 255, 97, 98, 129, 140, 142, 22, 145, 39, 242, 152, 83, 212, 14,
389
+ 115, 113, 69, 93, 94, 136, 245, 85, 199, 197, 197, 51, 219, 172,
390
+ 28, 66, 79, 198, 216, 184, 230, 223, 212, 83, 249, 5, 164, 30,
391
+ 241, 88, 248, 253, 117, 66, 214, 15, 67, 58, 47, 106, 13, 168,
392
+ 124, 1, 59, 182, 105, 3, 156, 62, 174, 12, 195, 199, 202, 254,
393
+ 155, 249, 73, 32, 86, 6, 240, 134, 165, 127, 103, 241, 199, 173,
394
+ 159, 83, 48, 149, 201, 28, 137, 57, 72, 135, 129, 26, 3, 23,
395
+ 47, 133, 204, 95, 77, 77, 90, 118, 231, 146, 130, 43, 130, 52,
396
+ 59, 229, 249, 53, 126, 153, 226, 0, 148, 41, 100, 2, 174, 64,
397
+ 177, 160, 122, 255, 150, 75, 119, 168, 80, 168, 66, 34, 41, 197,
398
+ 249, 105, 221, 135, 91, 34, 40, 144, 56, 248, 8, 34, 182, 166,
399
+ 212, 60, 213, 161, 25, 149, 4, 224, 227, 171, 67, 184, 7, 71,
400
+ 16, 130, 232, 11, 176, 123, 252, 246, 181, 31, 85, 216, 255, 159,
401
+ 34, 7, 68, 7, 12, 212, 18, 191, 220, 58, 162, 0, 28, 244,
402
+ 219, 7, 56, 81, 193, 234, 245, 141, 48, 242, 231, 120, 49, 72,
403
+ 117, 213, 163, 181, 36, 74, 140, 36, 146, 167, 228, 24, 47, 84,
404
+ 132, 26, 146, 6, 121, 211, 179, 80, 43, 164, 160, 225, 55, 50,
405
+ 246, 147, 61, 126, 70, 37, 224, 189, 221, 181, 188, 185, 111, 14,
406
+ 2, 45, 193, 35, 251, 107, 126, 238, 42, 97, 0, 191, 11, 76,
407
+ 67, 189, 184, 15, 145, 183, 57, 98, 87, 73, 205, 164, 202, 161,
408
+ 215, 91, 32, 139, 29, 237, 136, 245, 243, 179, 238, 254, 203, 99,
409
+ 93, 225, 133, 99, 183, 239, 45, 186, 174, 142, 248, 202, 140, 42,
410
+ 45, 244, 168, 145, 40, 243, 117, 61, 102, 74, 60, 70, 75, 223,
411
+ 127, 217, 92, 214, 232, 141, 228, 5, 121, 94, 68, 68, 167, 154,
412
+ 15, 42, 123, 238, 161, 166, 216, 17, 127, 102, 161, 214, 23, 194,
413
+ 23, 31, 106, 227, 32, 163, 7, 99, 33, 158, 68, 165, 125, 32,
414
+ 246, 73, 229, 233, 184, 24, 70, 5, 223, 79, 198, 204, 102, 54,
415
+ 27, 217, 70, 27, 135, 118, 230, 123, 155, 19, 144, 177, 78, 251,
416
+ 197, 236, 11, 223, 73, 29, 94, 178, 118, 227, 73, 77, 24, 29,
417
+ 214, 72, 220, 49, 238, 157, 108, 180, 144, 149, 14, 122, 205, 179,
418
+ 38, 86, 66, 24, 213, 45, 51, 95, 80, 249, 115, 142, 249, 52,
419
+ 23, 87, 164, 62, 95, 45, 195, 213, 139, 50, 18, 220, 59, 183,
420
+ 120, 72, 88, 168, 183, 152, 246, 245, 136, 90, 7, 50, 125, 204,
421
+ 21, 119, 201, 221, 191, 106, 123, 119, 35, 205, 30, 3, 112, 254,
422
+ 28, 25, 195, 84, 50, 210, 107, 106, 121, 135, 68, 238, 88, 234,
423
+ 225, 162, 62, 20, 210, 175, 231, 166, 204, 113, 232, 6, 101, 6,
424
+ 68, 172, 234, 9, 209, 178, 142, 73, 130, 32, 135, 211, 180, 74,
425
+ 212, 92, 63, 166, 201, 214, 234, 125, 109, 98, 194, 235, 134, 70,
426
+ 231, 16, 228, 141, 68, 120, 99, 164, 132, 132, 133, 176, 3, 240,
427
+ 102, 183, 163, 60, 102, 117, 61, 40, 3, 119, 154, 9, 31, 18,
428
+ 115, 18, 45, 156, 51, 208, 137, 19, 119, 48, 164, 140, 163, 55,
429
+ 151, 231, 15, 209, 175, 97, 96, 134, 220, 62, 243, 89, 60, 185,
430
+ 131, 65, 227, 140, 210, 31, 126, 92, 82, 225, 50, 19, 96, 88,
431
+ 83, 185, 69, 144, 179, 171, 16, 165, 107, 253, 222, 25, 202, 19,
432
+ 97, 130, 198, 215, 189, 59, 41, 222, 227, 162, 235, 248, 66, 144,
433
+ 228, 10, 246, 78, 214, 248, 229, 194, 120, 7, 94, 205, 220, 172,
434
+ 196, 180, 174, 214, 116, 126, 94, 182, 249, 16, 78, 47, 64, 232,
435
+ 28, 236, 211, 23, 189, 147, 32, 133, 124, 176, 249, 249, 128, 182,
436
+ 93, 26, 188, 56, 43, 244, 75, 229, 63, 151, 159, 117, 7, 137,
437
+ 9, 24, 127, 8, 140, 83, 54, 166, 151, 16, 238, 92, 233, 63,
438
+ 92, 125, 151, 112, 120, 157, 235, 29, 47, 159, 141, 83, 31, 180,
439
+ 48, 188, 73, 85, 72, 62, 200, 170, 66, 115, 117, 57, 57, 235,
440
+ 20, 174, 43, 233, 41, 8, 102, 119, 101, 48, 63, 19, 98, 32,
441
+ 40, 194, 255, 225, 129, 157, 61, 110, 157, 132, 204, 242, 193, 137,
442
+ 75, 132, 77, 105, 17, 23, 61, 251, 189, 42, 14, 181, 72, 189,
443
+ 165, 13, 83, 55, 146, 109, 209, 216, 131, 205, 141, 78, 198, 211,
444
+ 139, 187, 105, 170, 91, 152, 136, 246, 173, 201, 208, 80, 36, 157,
445
+ 198, 87, 174, 231, 120, 172, 131, 37, 28, 171, 10, 79, 181, 42,
446
+ 174, 23, 205, 134, 107, 59, 213, 94, 157, 131, 225, 126, 255, 49,
447
+ 10, 140, 133, 3, 76, 203, 111, 35, 219, 60, 117, 249, 68, 3,
448
+ 110, 194, 152, 7, 232, 75, 201, 132, 105, 93, 21, 221, 243, 255,
449
+ 224, 148, 140, 245, 132, 145, 42, 242, 59, 74, 140, 163, 191, 40,
450
+ 234, 216, 249, 56, 235, 179, 213, 143, 74, 185, 112, 60, 183, 181,
451
+ 126, 248, 135, 89, 116, 145, 176, 249, 145, 221, 97, 24, 61, 182,
452
+ 34, 89, 160, 40, 33, 169, 74, 192, 28, 237, 103, 253, 100, 188,
453
+ 31, 119, 160, 82, 218, 110, 114, 19, 56, 155, 100, 251, 200, 165,
454
+ 129, 182, 64, 58, 169, 44, 161, 51, 29, 230, 121, 1, 126, 20,
455
+ 125, 1, 188, 68, 80, 170, 4, 13, 54, 181, 50, 229, 221, 217,
456
+ 118, 4, 143, 168, 189, 11, 63, 107, 148, 83, 81, 135, 61, 64,
457
+ 226, 142, 134, 34, 70, 244, 145, 225, 182, 217, 191, 74, 160, 30,
458
+ 121, 34, 122, 1, 71, 2, 184, 63, 221, 160, 216, 239, 246, 251,
459
+ 166, 52, 113, 220, 142, 254, 250, 189, 23, 189, 182, 116, 83, 178,
460
+ 135, 180, 207, 18, 11, 40, 143, 10, 73, 202, 40, 142, 19, 113,
461
+ 190, 25, 167, 115, 10, 150, 127, 25, 239, 133, 234, 205, 137, 251,
462
+ 167, 198, 24, 246, 198, 221, 229, 203, 188, 29, 235, 113, 116, 98,
463
+ 167, 35, 20, 194, 120, 60, 7, 215, 195, 6, 75, 133, 204, 243,
464
+ 241, 95, 68, 45, 94, 142, 194, 137, 38, 135, 176, 142, 107, 210,
465
+ 197, 144, 158, 97, 115, 233, 186, 253, 40, 82, 82, 180, 116, 45,
466
+ 90, 82, 226, 160, 55, 58, 57, 211, 181, 206, 78, 112, 153, 203,
467
+ 89, 148, 169, 73, 61, 253, 19, 169, 194, 192, 35, 111, 245, 16,
468
+ 19, 201, 156, 57, 85, 142, 216, 219, 115, 45, 224, 162, 127, 118,
469
+ 56, 120, 159, 133, 63, 203, 37, 123, 118, 168, 151, 40, 147, 199,
470
+ 57, 1, 169, 52, 151, 150, 135, 13, 188, 97, 84, 214, 200, 253,
471
+ 64, 40, 46, 19, 243, 73, 36, 216, 122, 109, 127, 175, 4, 135,
472
+ 40, 234, 47, 90, 111, 63, 13, 39, 205, 250, 22, 224, 123, 97,
473
+ 10, 179, 189, 184, 108, 154, 36, 60, 116, 112, 80, 45, 226, 87,
474
+ 200, 130, 126, 31, 111, 140, 231, 80, 228, 107, 186, 32, 112, 38,
475
+ 173, 15, 109, 136, 251, 174, 164, 105, 205, 161, 173, 176, 48, 87,
476
+ 40, 179, 48, 108, 202, 219, 39, 134, 253, 50, 171, 181, 184, 15,
477
+ 250, 24, 234, 114, 139, 146, 229, 89, 13, 166, 126, 195, 225, 58,
478
+ 64, 90, 147, 249, 71, 42, 252, 23, 47, 155, 217, 49, 193, 131,
479
+ 81, 242, 254, 124, 188, 237, 156, 34, 9, 253, 60, 219, 108, 101,
480
+ 120, 237, 27, 58, 92, 226, 114, 196, 213, 174, 104, 227, 79, 165,
481
+ 210, 23, 125, 211, 56, 68, 250, 14, 139, 53, 179, 168, 173, 175,
482
+ 46, 116, 96, 136, 82, 183, 9, 172, 244, 222, 234, 205, 71, 8,
483
+ 196, 214, 246, 198, 190, 249, 58, 58, 50, 54, 188, 177, 121, 27,
484
+ 213, 64, 199, 2, 164, 229, 88, 70, 63, 219, 225, 174, 166, 193,
485
+ 198, 122, 86, 153, 112, 194, 232, 217, 105, 241, 87, 230, 111, 89,
486
+ 212, 241, 86, 136, 158, 51, 197, 188, 41, 233, 25, 6, 103, 55,
487
+ 147, 208, 35, 97, 213, 190, 207, 224, 232, 2, 196, 21, 170, 234,
488
+ 48, 208, 30, 223, 221, 129, 174, 61, 61, 71, 222, 221, 195, 86,
489
+ 219, 142, 126, 138, 213, 13, 220, 109, 200, 104, 183, 19, 38, 187,
490
+ 177, 49, 205, 92, 19, 1, 44, 64, 31, 10, 27, 82, 251, 101,
491
+ 126, 7, 174, 123, 45, 131, 184, 139, 4, 185, 77, 27, 65, 167,
492
+ 213, 78, 28, 197, 189, 39, 239, 108, 183, 76, 59, 168, 142, 190,
493
+ 57, 245, 88, 21, 142, 69, 23, 28, 94, 154, 166, 167, 35, 215,
494
+ 236, 175, 18, 220, 227, 175, 146, 184, 226, 129, 81, 252, 18, 225,
495
+ 1, 206, 241, 134, 235, 196, 114, 221, 200, 37, 173, 243, 240, 209,
496
+ 152, 153, 87, 24, 126, 69, 239, 247, 48, 149, 139, 127, 55, 158,
497
+ 209, 228, 110, 92, 7, 18, 207, 129, 150, 180, 56, 106, 143, 15,
498
+ 174, 171, 45, 115, 171, 44, 45, 228, 129, 100, 59, 227, 165, 180,
499
+ 21, 255, 119, 124, 239, 20, 138, 160, 7, 196, 241, 100, 225, 63,
500
+ 3, 158, 146, 37, 140, 188, 47, 150, 195, 127, 135, 239, 32, 58,
501
+ 121, 208, 207, 180, 19, 156, 133, 43, 105, 173, 115, 89, 25, 188,
502
+ 157, 133, 143, 32, 58, 209, 78, 198, 1, 149, 61, 213, 242, 107,
503
+ 47, 138, 111, 156, 102, 19, 150, 126, 71, 94, 215, 142, 115, 125,
504
+ 187, 240, 66, 109, 131, 70, 176, 22, 140, 105, 231, 121, 243, 208,
505
+ 194, 206, 200, 234, 30, 101, 231, 37, 243, 215, 131, 239, 141, 70,
506
+ 178, 223, 17, 98, 253, 233, 183, 77, 147, 11, 186, 117, 23, 145,
507
+ 148, 151, 8, 208, 244, 159, 40, 188, 66, 15, 254, 244, 23, 215,
508
+ 136, 175, 181, 32, 7, 1, 183, 14, 123, 169, 48, 17, 253, 158,
509
+ 66, 73, 227, 174, 70, 195, 106, 71, 222, 229, 113, 77, 152, 2,
510
+ 107, 228, 245, 180, 101, 229, 216, 151, 172, 37, 222, 67, 213, 248,
511
+ 209, 20, 221, 10, 242, 248, 189, 117, 227, 190, 95, 168, 60, 64,
512
+ 204, 83, 135, 200, 163, 204, 124, 67, 246, 7, 72, 83, 127, 112,
513
+ 204, 120, 214, 192, 220, 152, 131, 122, 147, 158, 117, 71, 27, 71,
514
+ 188, 33, 124, 100, 69, 232, 54, 247, 213, 193, 11, 232, 44, 158,
515
+ 239, 252, 125, 249, 201, 36, 137, 152, 109, 86, 140, 48, 155, 102,
516
+ 79, 249, 12, 37, 185, 158, 127, 168, 244, 196, 23, 99, 39, 152,
517
+ 154, 87, 164, 20, 250, 221, 177, 31, 52, 245, 154, 161, 213, 241,
518
+ 199, 95, 162, 245, 72, 165, 26, 33, 130, 54, 14, 137, 203, 177,
519
+ 137, 90, 51, 27, 191, 18, 5, 171, 115, 64, 134, 31, 126, 99,
520
+ 193, 131, 126, 245, 152, 38, 125, 29, 69, 101, 96, 183, 191, 220,
521
+ 169, 182, 131, 143, 50, 217, 35, 65, 122, 29, 224, 137, 26, 15,
522
+ 79, 182, 185, 101, 4, 72, 18, 227, 27, 155, 193, 159, 12, 15,
523
+ 16, 17, 32, 68, 95, 134, 142, 209, 211, 226, 245, 16, 33, 35,
524
+ 54, 56, 67, 81, 84, 97, 121, 137, 148, 156, 157, 163, 203, 225,
525
+ 227, 0, 9, 29, 37, 50, 77, 80, 122, 127, 132, 136, 149, 151,
526
+ 153, 181, 190, 202, 210, 220, 227, 250, 17, 30, 34, 35, 71, 75,
527
+ 77, 80, 83, 138, 188, 204, 206, 217, 225, 230, 240, 251, 0, 0,
528
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 31, 52, 70,
529
+ }};
530
+
531
+ const uint8_t kExpectedCTilde[3][32] = {
532
+ {97, 76, 101, 140, 98, 83, 8, 58, 220, 126, 26, 74, 37, 153, 150, 193,
533
+ 41, 0, 142, 63, 78, 71, 231, 146, 77, 210, 191, 136, 32, 58, 216, 65},
534
+ {159, 200, 65, 81, 139, 0, 130, 59, 9, 31, 109, 28, 61, 205, 121, 8,
535
+ 197, 54, 221, 58, 90, 49, 79, 93, 212, 35, 124, 107, 96, 89, 129, 115},
536
+ {218, 203, 92, 107, 210, 83, 224, 56, 174, 33, 80,
537
+ 25, 235, 64, 231, 46, 218, 54, 8, 227, 2, 196,
538
+ 111, 76, 46, 161, 151, 230, 186, 241, 126, 131}};
539
+
540
+ const uint64_t kExpectedZ[3][4][256] = {{