@umbra-privacy/sdk 1.0.0 → 2.0.1
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.
- package/README.md +104 -25
- package/dist/{addresses-Brzgurv_.d.ts → addresses-B7HybtbJ.d.ts} +2 -1
- package/dist/{addresses-D_0YAS6B.d.cts → addresses-CTVY1oi7.d.cts} +2 -1
- package/dist/arcium-BXXlryfe.d.cts +20 -0
- package/dist/arcium-BXXlryfe.d.ts +20 -0
- package/dist/chunk-3LS5P32X.cjs +10892 -0
- package/dist/chunk-3LS5P32X.cjs.map +1 -0
- package/dist/chunk-4RHXVBNI.js +203 -0
- package/dist/chunk-4RHXVBNI.js.map +1 -0
- package/dist/chunk-4TZVXB5G.js +324 -0
- package/dist/chunk-4TZVXB5G.js.map +1 -0
- package/dist/chunk-5GUSMQ74.cjs +549 -0
- package/dist/chunk-5GUSMQ74.cjs.map +1 -0
- package/dist/chunk-5KPQXPQM.js +36 -0
- package/dist/chunk-5KPQXPQM.js.map +1 -0
- package/dist/chunk-AXD7LXYY.cjs +405 -0
- package/dist/chunk-AXD7LXYY.cjs.map +1 -0
- package/dist/{chunk-HOEXDXRC.cjs → chunk-BL6WXLPV.cjs} +32 -360
- package/dist/chunk-BL6WXLPV.cjs.map +1 -0
- package/dist/chunk-CFFLOE7D.cjs +598 -0
- package/dist/chunk-CFFLOE7D.cjs.map +1 -0
- package/dist/{chunk-BM7N6N7E.js → chunk-CFTW5WNG.js} +3 -325
- package/dist/chunk-CFTW5WNG.js.map +1 -0
- package/dist/chunk-DD2WCK4C.js +327 -0
- package/dist/chunk-DD2WCK4C.js.map +1 -0
- package/dist/chunk-DMPMQ74B.cjs +246 -0
- package/dist/chunk-DMPMQ74B.cjs.map +1 -0
- package/dist/{chunk-2Q75CQQJ.js → chunk-EEKF4553.js} +2 -2
- package/dist/chunk-EEKF4553.js.map +1 -0
- package/dist/chunk-ENVYYEM4.cjs +113 -0
- package/dist/chunk-ENVYYEM4.cjs.map +1 -0
- package/dist/chunk-FQX6ZYGJ.js +500 -0
- package/dist/chunk-FQX6ZYGJ.js.map +1 -0
- package/dist/chunk-FSK2ICMB.cjs +39 -0
- package/dist/chunk-FSK2ICMB.cjs.map +1 -0
- package/dist/chunk-FZYWLQAF.cjs +355 -0
- package/dist/chunk-FZYWLQAF.cjs.map +1 -0
- package/dist/chunk-GP26R377.js +436 -0
- package/dist/chunk-GP26R377.js.map +1 -0
- package/dist/chunk-HA5FLM63.js +393 -0
- package/dist/chunk-HA5FLM63.js.map +1 -0
- package/dist/chunk-INJ73LXQ.js +1107 -0
- package/dist/chunk-INJ73LXQ.js.map +1 -0
- package/dist/chunk-KMRROOME.js +10750 -0
- package/dist/chunk-KMRROOME.js.map +1 -0
- package/dist/{chunk-MDFSBU5W.cjs → chunk-LTCKPTZC.cjs} +2 -351
- package/dist/chunk-LTCKPTZC.cjs.map +1 -0
- package/dist/chunk-MKNCBUFA.js +564 -0
- package/dist/chunk-MKNCBUFA.js.map +1 -0
- package/dist/chunk-NKVMSABR.cjs +207 -0
- package/dist/chunk-NKVMSABR.cjs.map +1 -0
- package/dist/chunk-OFDWNWCL.js +70 -0
- package/dist/chunk-OFDWNWCL.js.map +1 -0
- package/dist/chunk-QJAUUYZU.cjs +331 -0
- package/dist/chunk-QJAUUYZU.cjs.map +1 -0
- package/dist/chunk-TLR7A64G.js +103 -0
- package/dist/chunk-TLR7A64G.js.map +1 -0
- package/dist/{chunk-MVKTV3FT.cjs → chunk-TQQZGNOI.cjs} +2 -2
- package/dist/chunk-TQQZGNOI.cjs.map +1 -0
- package/dist/chunk-UOFYS6M3.js +219 -0
- package/dist/chunk-UOFYS6M3.js.map +1 -0
- package/dist/chunk-UXMQI6B7.js +2406 -0
- package/dist/chunk-UXMQI6B7.js.map +1 -0
- package/dist/chunk-WN75ORDT.js +571 -0
- package/dist/chunk-WN75ORDT.js.map +1 -0
- package/dist/chunk-Y55PYKXH.cjs +595 -0
- package/dist/chunk-Y55PYKXH.cjs.map +1 -0
- package/dist/chunk-YEZBTYCP.cjs +77 -0
- package/dist/chunk-YEZBTYCP.cjs.map +1 -0
- package/dist/chunk-ZQOIYCGA.cjs +1126 -0
- package/dist/chunk-ZQOIYCGA.cjs.map +1 -0
- package/dist/chunk-ZY3TSHMJ.cjs +2665 -0
- package/dist/chunk-ZY3TSHMJ.cjs.map +1 -0
- package/dist/client-DkVBHMWb.d.cts +2613 -0
- package/dist/client-V4AF6Bz9.d.ts +2613 -0
- package/dist/common/pda/index.cjs +145 -0
- package/dist/common/pda/index.cjs.map +1 -0
- package/dist/common/pda/index.d.cts +1250 -0
- package/dist/common/pda/index.d.ts +1250 -0
- package/dist/common/pda/index.js +8 -0
- package/dist/common/pda/index.js.map +1 -0
- package/dist/constants/index.cjs +38 -164
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts +8 -425
- package/dist/constants/index.d.ts +8 -425
- package/dist/constants/index.js +15 -124
- package/dist/constants/index.js.map +1 -1
- package/dist/crypto/index.cjs +583 -0
- package/dist/crypto/index.cjs.map +1 -0
- package/dist/crypto/index.d.cts +6731 -0
- package/dist/crypto/index.d.ts +6731 -0
- package/dist/crypto/index.js +14 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/{cryptography-BTGC72u-.d.ts → cryptography-BFSJcvi6.d.ts} +3 -2465
- package/dist/{cryptography-BTGC72u-.d.cts → cryptography-D6tPDh-Y.d.cts} +3 -2465
- package/dist/errors/index.cjs +64 -54
- package/dist/errors/index.d.cts +7 -797
- package/dist/errors/index.d.ts +7 -797
- package/dist/errors/index.js +3 -1
- package/dist/errors-B9EoPeWV.d.cts +593 -0
- package/dist/errors-B9EoPeWV.d.ts +593 -0
- package/dist/errors-DAIrstEL.d.cts +300 -0
- package/dist/errors-DPNMfyh0.d.ts +300 -0
- package/dist/index-BG0yjL7C.d.cts +6006 -0
- package/dist/index-ByynoyBO.d.ts +6006 -0
- package/dist/index.cjs +5133 -16116
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1031 -7685
- package/dist/index.d.ts +1031 -7685
- package/dist/index.js +3228 -14905
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.cts +14 -6
- package/dist/interfaces/index.d.ts +14 -6
- package/dist/interfaces-43cReBcS.d.cts +3346 -0
- package/dist/interfaces-B8xKNl_6.d.ts +997 -0
- package/dist/interfaces-D2NO6kDD.d.cts +997 -0
- package/dist/interfaces-z_xYJlgV.d.ts +3346 -0
- package/dist/math/index.cjs +115 -0
- package/dist/math/index.cjs.map +1 -0
- package/dist/math/index.d.cts +1327 -0
- package/dist/math/index.d.ts +1327 -0
- package/dist/math/index.js +10 -0
- package/dist/math/index.js.map +1 -0
- package/dist/networks-RMd3abPE.d.ts +44 -0
- package/dist/networks-yAoO8peQ.d.cts +44 -0
- package/dist/relayer-NRRMSMNB.js +4 -0
- package/dist/relayer-NRRMSMNB.js.map +1 -0
- package/dist/relayer-RJHEIXJG.cjs +21 -0
- package/dist/relayer-RJHEIXJG.cjs.map +1 -0
- package/dist/solana/index.cjs +56 -0
- package/dist/solana/index.cjs.map +1 -0
- package/dist/solana/index.d.cts +105 -0
- package/dist/solana/index.d.ts +105 -0
- package/dist/solana/index.js +7 -0
- package/dist/solana/index.js.map +1 -0
- package/dist/{index-CLj_zWSD.d.ts → temporal-BbRaEPoO.d.ts} +1 -1
- package/dist/{index-CX6_pIRS.d.cts → temporal-oUj7iCaq.d.cts} +1 -1
- package/dist/transaction-forwarder-5mAMTjw6.d.ts +1155 -0
- package/dist/transaction-forwarder-C6gMUG7a.d.cts +1155 -0
- package/dist/types/index.cjs +232 -231
- package/dist/types/index.d.cts +15 -1485
- package/dist/types/index.d.ts +15 -1485
- package/dist/types/index.js +2 -1
- package/dist/types-BohhvPth.d.cts +87 -0
- package/dist/types-CW0oTT0j.d.ts +87 -0
- package/dist/types-C_V_CaKK.d.cts +2468 -0
- package/dist/types-C_V_CaKK.d.ts +2468 -0
- package/dist/types-Ca7frykr.d.ts +793 -0
- package/dist/types-CuKeoI19.d.cts +1296 -0
- package/dist/types-CxfTIpN9.d.ts +1052 -0
- package/dist/{types-n-sHFcgr.d.ts → types-D1jDUjfN.d.ts} +2 -2
- package/dist/types-DKEDUlH9.d.ts +1296 -0
- package/dist/types-EKuIfxTz.d.cts +1052 -0
- package/dist/{types-BBuELtY8.d.cts → types-IMGYmlv-.d.cts} +2 -2
- package/dist/types-PwNLi_2k.d.cts +793 -0
- package/dist/utils/index.cjs +823 -525
- package/dist/utils/index.d.cts +1711 -4021
- package/dist/utils/index.d.ts +1711 -4021
- package/dist/utils/index.js +9 -3
- package/dist/{versions-D9PqsEvj.d.cts → versions-BRlR36EA.d.cts} +1 -0
- package/dist/{versions-D9PqsEvj.d.ts → versions-BRlR36EA.d.ts} +1 -0
- package/package.json +79 -18
- package/dist/chunk-2Q75CQQJ.js.map +0 -1
- package/dist/chunk-BM7N6N7E.js.map +0 -1
- package/dist/chunk-GXKSUB2U.cjs +0 -4416
- package/dist/chunk-GXKSUB2U.cjs.map +0 -1
- package/dist/chunk-HOEXDXRC.cjs.map +0 -1
- package/dist/chunk-MDFSBU5W.cjs.map +0 -1
- package/dist/chunk-MQY7HDIA.js +0 -600
- package/dist/chunk-MQY7HDIA.js.map +0 -1
- package/dist/chunk-MVKTV3FT.cjs.map +0 -1
- package/dist/chunk-PG2J6V6Y.js +0 -4094
- package/dist/chunk-PG2J6V6Y.js.map +0 -1
- package/dist/chunk-VEGLTTYQ.cjs +0 -621
- package/dist/chunk-VEGLTTYQ.cjs.map +0 -1
- package/dist/chunk-WVHQ46DD.js +0 -758
- package/dist/chunk-WVHQ46DD.js.map +0 -1
- package/dist/index-B9pDY73x.d.ts +0 -12933
- package/dist/index-D33yo0qB.d.cts +0 -12933
- package/dist/networks-C-orpSFW.d.ts +0 -65
- package/dist/networks-FxYERGD1.d.cts +0 -65
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/crypto/aes/aes.ts","../src/crypto/aes/types.ts","../src/crypto/key-derivation/types.ts","../src/crypto/key-derivation/personalization.ts","../src/crypto/poseidon/poseidon.ts","../src/crypto/poseidon/types.ts","../src/crypto/key-derivation/derivation.ts","../src/crypto/rescue/constants.ts","../src/crypto/rescue/engine.ts","../src/crypto/rescue/rescue.ts","../src/crypto/rescue/types.ts","../src/crypto/challenges/challenges.ts","../src/crypto/commitment/commitment.ts"],"names":["assertAesKey","assertAesPlaintext","randomBytes","AES_IV_LENGTH","gcm","AES_AUTH_TAG_LENGTH","assertAesCiphertextWithMetadata","__name","CryptographyAssertionError","assertX25519PrivateKey","assertX25519PublicKey","assertSharedSecret","U256_BYTE_LENGTH","U512_BYTE_LENGTH","assertMasterSeed","assertMasterViewingKey","assertYearlyViewingKey","BN254_FIELD_PRIME","assertMonthlyViewingKey","assertDailyViewingKey","assertHourlyViewingKey","assertMinuteViewingKey","assertSecondViewingKey","assertMintViewingKey","splitConstants","assertBn254FieldElement","createPoseidon","Fr","prf","generator","assertPoseidonCounter","assertPoseidonKey","assertPoseidonKeystream","assertPoseidonPlaintext","assertPoseidonCiphertext","getBn254ModularAdder","encryptor","getBn254ModularSubtractor","decryptor","aggregator","commitmentFunction","defaultKmac256","assertU512BeBytes","bn254FieldElementSampler","splitAddressToLowHigh","createBn254FieldElement","ed25519","sha512","curve25519FieldElementSampler","keccak_512","CURVE25519_FIELD_PRIME","curve25519ModuloAdd","curve25519ModuloSub","curve25519ModuloMul","curve25519ModuloInv","curve25519ModuloPow","shake256","x25519","generateRandomNonce","assertRcPlaintext","encodeU128ToU128LeBytes","assertU256LeBytes","decodeU256LeBytesToU256","assertRcCiphertext","assertRcEncryptionNonce","encodeU256ToU256LeBytes","assertRcCounter","assertRcKey","convertU256ToBase85Limbs","createU256","U128_MAX","keccak_256","assertCurve25519FieldElement","getCurve25519ModularMulFunction","getCurve25519ModularAddFunction"],"mappings":"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;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA;AAAA,EAEA;AAAA,IACE;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA;AAAA,EAEA;AAAA,IACE;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA;AACF;AAEJ,CAAA;AAqDA,IAAM,UAAA,GAAyB;AAAA;AAAA,EAE7B;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA;AAAA,IACE,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,IACA,mEAAA;AAAA,I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BAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCAAA;AAAA,IACE,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,oCA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","file":"chunk-3LS5P32X.cjs","sourcesContent":["/**\n * AES-256-GCM Encryption Implementation\n *\n * This module provides AES-256-GCM encryption and decryption functions\n * for UTXO recovery data encryption using @noble/ciphers.\n *\n * ## Role in the Umbra Protocol\n *\n * AES-256-GCM is **not** the primary confidential-computing mechanism in Umbra\n * (that role belongs to the Rescue cipher operating over X25519 key exchange via MPC).\n * Instead, AES is used for a narrower purpose: encrypting the 32-byte `optionalData`\n * field that is attached to certain on-chain instructions, and for encrypting UTXO\n * recovery data so that the sender or recipient can later recover the information\n * needed to spend or claim a UTXO.\n *\n * ## Two Recovery Key Types\n *\n * - **Ephemeral Unlocker Key**: Derived from the sender's master seed + generation\n * index. Allows the sender to recover a UTXO they created.\n * - **Receiver Unlocker Key**: Derived from the X25519 shared secret between the\n * sender's ephemeral private key and the recipient's X25519 public key. Allows\n * the recipient to recover the UTXO.\n *\n * ## Ciphertext Format\n *\n * The combined ciphertext format stored on-chain or transmitted is:\n * ```\n * [IV (12 bytes) | AuthTag (16 bytes) | Ciphertext (N bytes)]\n * ```\n *\n * This ordering differs from the internal format produced by @noble/ciphers\n * (which appends the AuthTag after the Ciphertext). The reordering is done\n * explicitly during encryption and reversed during decryption so the stored\n * bytes are self-describing: IV, then authentication tag, then ciphertext body.\n *\n * ## Security Properties\n *\n * - AES-256-GCM is an authenticated encryption with associated data (AEAD) scheme.\n * - The 16-byte authentication tag provides both integrity and authenticity.\n * - The 12-byte IV is generated fresh from a cryptographically secure RNG per encryption.\n * - Never reuse the same (key, IV) pair; each call to the encryptor generates a new IV.\n *\n * @packageDocumentation\n * @module implementation/cryptography/aes\n * @public\n */\n\nimport { gcm } from \"@noble/ciphers/aes.js\";\nimport type { AesCiphertextWithMetadata, AesKey, AesPlaintext } from \"../../types\";\nimport {\n AES_AUTH_TAG_LENGTH,\n AES_IV_LENGTH,\n assertAesCiphertextWithMetadata,\n assertAesKey,\n assertAesPlaintext,\n} from \"../../types\";\nimport type {\n AesDecryptorFunction as AesDecryptorFunction,\n AesEncryptorFunction as AesEncryptorFunction,\n} from \"../../interfaces\";\nimport { randomBytes } from \"node:crypto\";\n\n/**\n * Creates a fresh AES-256-GCM encryptor function.\n *\n * The returned async function encrypts arbitrary plaintext data using AES-256-GCM\n * with the supplied 32-byte key. A new cryptographically random 12-byte IV is\n * generated internally for every encryption call.\n *\n * @returns An {@link AesEncryptorFunction} that accepts an {@link AesKey} and\n * {@link AesPlaintext} and resolves to an {@link AesCiphertextWithMetadata}.\n *\n * @remarks\n * ## Internal Byte Layout (after @noble/ciphers `encrypt`)\n *\n * @noble/ciphers appends the 16-byte AuthTag to the end of the ciphertext:\n * ```\n * noble output: [EncryptedData (N bytes) | AuthTag (16 bytes)]\n * ```\n *\n * This module reorders the components to match the Umbra on-chain format:\n * ```\n * stored format: [IV (12 bytes) | AuthTag (16 bytes) | EncryptedData (N bytes)]\n * ```\n *\n * ## IV Generation\n *\n * Uses `node:crypto` `randomBytes(12)` which is backed by the operating system's\n * CSPRNG (e.g. `/dev/urandom` on Linux, `BCryptGenRandom` on Windows). Each\n * invocation of the returned encryptor generates a fresh independent IV.\n *\n * ## Thread Safety\n *\n * The returned function is stateless — each call creates a new `gcm` cipher\n * instance and a new random IV. It is safe to call concurrently from multiple\n * async tasks.\n *\n * ## Validation\n *\n * Both `key` and `plaintext` are validated via {@link assertAesKey} and\n * {@link assertAesPlaintext} before encryption begins. The output is validated\n * via {@link assertAesCiphertextWithMetadata} before being returned.\n *\n * @public\n *\n * @example\n * ```typescript\n * const encryptor = getAesEncryptor();\n * const key = deriveAesKey(masterSeed, generationIndex);\n * const plaintext = buildRecoveryPlaintext(amount, genIndex, destination);\n *\n * const ciphertext = await encryptor(key, plaintext);\n * // ciphertext layout: [IV (12) | AuthTag (16) | EncryptedData (N)]\n * // total length: 12 + 16 + plaintext.length bytes\n * ```\n *\n * @example\n * ```typescript\n * // Two calls with the same key produce different IVs and therefore different outputs:\n * const a = await encryptor(key, plaintext);\n * const b = await encryptor(key, plaintext);\n * // a !== b (different IVs)\n * ```\n *\n * @see {@link defaultAesEncryptor} — pre-instantiated convenience instance\n * @see {@link getAesDecryptor} — paired decryption function\n * @see {@link AesEncryptorFunction} — the function type contract\n */\nexport function getAesEncryptor(): AesEncryptorFunction {\n \n return async (key: AesKey, plaintext: AesPlaintext): Promise<AesCiphertextWithMetadata> => {\n // Validate inputs\n assertAesKey(key);\n assertAesPlaintext(plaintext);\n\n // Generate random IV (12 bytes for AES-GCM)\n const iv = randomBytes(AES_IV_LENGTH);\n\n // Create cipher instance and encrypt\n // @noble/ciphers gcm.encrypt returns: ciphertext || authTag (tag appended)\n const cipher = gcm(key, iv);\n const ciphertextWithTag = cipher.encrypt(plaintext);\n\n // @noble/ciphers returns ciphertext with authTag appended at the end\n // ciphertextWithTag = [encrypted data | authTag (16 bytes)]\n // We need to reorder to: [IV | authTag | encrypted data]\n const encryptedLength = ciphertextWithTag.length - AES_AUTH_TAG_LENGTH;\n const encryptedData = ciphertextWithTag.slice(0, encryptedLength);\n const authTag = ciphertextWithTag.slice(encryptedLength);\n\n // Combine: IV (12) + AuthTag (16) + Ciphertext (N)\n const result = new Uint8Array(AES_IV_LENGTH + AES_AUTH_TAG_LENGTH + encryptedLength);\n result.set(iv, 0);\n result.set(authTag, AES_IV_LENGTH);\n result.set(encryptedData, AES_IV_LENGTH + AES_AUTH_TAG_LENGTH);\n\n assertAesCiphertextWithMetadata(result);\n return result;\n };\n}\n\n/**\n * Creates a fresh AES-256-GCM decryptor function.\n *\n * The returned async function decrypts data previously encrypted by\n * {@link getAesEncryptor} (or any AES-256-GCM implementation that stores bytes\n * in the `[IV | AuthTag | Ciphertext]` format). Authentication is verified\n * automatically; if the tag does not match, an error is thrown.\n *\n * @returns An {@link AesDecryptorFunction} that accepts an {@link AesKey} and\n * {@link AesCiphertextWithMetadata} and resolves to the decrypted {@link AesPlaintext}.\n *\n * @throws {Error} If authentication tag verification fails — this indicates either\n * a wrong decryption key or corrupted/tampered ciphertext bytes.\n * @throws {Error} If `key` is not a valid 32-byte {@link AesKey}.\n * @throws {Error} If `combined` is not a valid {@link AesCiphertextWithMetadata}\n * (less than 28 bytes).\n *\n * @remarks\n * ## Byte Extraction (on input)\n *\n * The stored format `[IV | AuthTag | Ciphertext]` is decomposed as follows:\n * ```\n * bytes 0–11 → IV (12 bytes)\n * bytes 12–27 → AuthTag (16 bytes)\n * bytes 28+ → EncryptedData (N bytes)\n * ```\n *\n * The EncryptedData and AuthTag are then reordered back into the @noble/ciphers\n * format before calling `cipher.decrypt`:\n * ```\n * noble input: [EncryptedData (N bytes) | AuthTag (16 bytes)]\n * ```\n *\n * ## Authentication Guarantee\n *\n * @noble/ciphers' `gcm.decrypt` verifies the 128-bit authentication tag in\n * constant time before returning plaintext. If verification fails, it throws\n * without exposing partial decryption results. This prevents padding-oracle\n * and related attacks that exploit early plaintext access.\n *\n * @public\n *\n * @example\n * ```typescript\n * const decryptor = getAesDecryptor();\n * const key = deriveAesKey(masterSeed, generationIndex);\n *\n * try {\n * const plaintext = await decryptor(key, ciphertext);\n * const { amount, genIndex, destination } = parseRecoveryPlaintext(plaintext);\n * } catch (error) {\n * // Authentication failed — either a wrong key or corrupted data.\n * // Do not attempt to use any partial output.\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Round-trip example\n * const encryptor = getAesEncryptor();\n * const decryptor = getAesDecryptor();\n * const ct = await encryptor(key, plaintext);\n * const recovered = await decryptor(key, ct);\n * // recovered deep-equals plaintext\n * ```\n *\n * @see {@link defaultAesDecryptor} — pre-instantiated convenience instance\n * @see {@link getAesEncryptor} — paired encryption function\n * @see {@link AesDecryptorFunction} — the function type contract\n */\nexport function getAesDecryptor(): AesDecryptorFunction {\n \n return async (key: AesKey, combined: AesCiphertextWithMetadata): Promise<AesPlaintext> => {\n // Validate inputs\n assertAesKey(key);\n assertAesCiphertextWithMetadata(combined);\n\n // Extract components from our format: [IV | AuthTag | Ciphertext]\n const iv = combined.slice(0, AES_IV_LENGTH);\n const authTag = combined.slice(AES_IV_LENGTH, AES_IV_LENGTH + AES_AUTH_TAG_LENGTH);\n const encryptedData = combined.slice(AES_IV_LENGTH + AES_AUTH_TAG_LENGTH);\n\n // Reconstruct @noble/ciphers format: [encrypted | authTag]\n const ciphertextWithTag = new Uint8Array(encryptedData.length + AES_AUTH_TAG_LENGTH);\n ciphertextWithTag.set(encryptedData, 0);\n ciphertextWithTag.set(authTag, encryptedData.length);\n\n // Create cipher instance and decrypt\n const cipher = gcm(key, iv);\n const plaintext = cipher.decrypt(ciphertextWithTag);\n\n assertAesPlaintext(plaintext);\n return plaintext;\n };\n}\n\n/**\n * Pre-instantiated default AES-256-GCM encryptor.\n *\n * A module-level singleton {@link AesEncryptorFunction} created by calling\n * {@link getAesEncryptor} once at module load time. Use this export for the\n * common case where no custom configuration is needed.\n *\n * @remarks\n * ## When to Use This vs `getAesEncryptor()`\n *\n * - Use `defaultAesEncryptor` when you need a ready-made encryptor with no\n * special configuration and do not require a distinct function identity (e.g.\n * for equality checks or WeakMap keys).\n * - Use `getAesEncryptor()` when you need a fresh closure identity, for example\n * when building a dependency-injection tree that uses reference equality.\n *\n * Both options behave identically at runtime: each encryption call generates a\n * fresh random IV and returns a new ciphertext.\n *\n * @public\n *\n * @example\n * ```typescript\n * import { defaultAesEncryptor } from './aes';\n *\n * const ciphertext = await defaultAesEncryptor(key, plaintext);\n * ```\n *\n * @see {@link getAesEncryptor} — factory that created this instance\n * @see {@link AesEncryptorFunction} — the function type this satisfies\n */\nexport const defaultAesEncryptor: AesEncryptorFunction = getAesEncryptor();\n\n/**\n * Pre-instantiated default AES-256-GCM decryptor.\n *\n * A module-level singleton {@link AesDecryptorFunction} created by calling\n * {@link getAesDecryptor} once at module load time. Use this export for the\n * common case where no custom configuration is needed.\n *\n * @remarks\n * ## When to Use This vs `getAesDecryptor()`\n *\n * - Use `defaultAesDecryptor` when you need a ready-made decryptor with no\n * special configuration and do not require a distinct function identity.\n * - Use `getAesDecryptor()` when you need a fresh closure identity.\n *\n * Both options behave identically at runtime.\n *\n * @public\n *\n * @example\n * ```typescript\n * import { defaultAesDecryptor } from './aes';\n *\n * const plaintext = await defaultAesDecryptor(key, ciphertext);\n * ```\n *\n * @see {@link getAesDecryptor} — factory that created this instance\n * @see {@link AesDecryptorFunction} — the function type this satisfies\n */\nexport const defaultAesDecryptor: AesDecryptorFunction = getAesDecryptor();\n","/**\n * AES Encryption Types, Groth16 Proof Types, ZK Proof Types, and Optional Data Types\n *\n * This module defines branded types for AES-256-GCM encryption, Groth16 zero-knowledge\n * proofs, serialized ZK proof bytes, and optional data fields used throughout the\n * Umbra SDK.\n *\n * ## Branded Types Pattern\n *\n * Every type in this module is a \"branded\" (nominally-typed) wrapper over a\n * primitive (`Uint8Array` or `bigint`). Branding prevents accidental mixing of\n * semantically different byte arrays: a 32-byte AES key cannot be passed where\n * a 64-byte G1 proof component is expected, even though both are `Uint8Array`\n * at runtime. The `assert*` functions serve as the casting gates — callers must\n * pass through them to obtain a branded type, and those functions perform the\n * necessary runtime size / type checks.\n *\n * ## Module Sections\n *\n * - **AES Encryption Types** — constants, `AesKey`, `AesPlaintext`,\n * `AesCiphertextWithMetadata`, and their assertion functions.\n * - **Groth16 Proof Types** — `Groth16ProofA/B/C`, `Groth16Proof` interface,\n * size constants, and assertion functions.\n * - **ZK Proof Bytes Type** — `ZkProofBytes` (serialised proof) and assertion.\n * - **Optional Data** — `OptionalData32` (32-byte on-chain optional field) and assertion.\n *\n * @packageDocumentation\n * @module crypto/aes/types\n * @public\n */\n\nimport type { SubBrandedType } from \"../../common/branded\";\nimport type { Bytes } from \"../../common/types\";\nimport { CryptographyAssertionError } from \"../../common/errors\";\n\n/* =============================================================================\n * AES ENCRYPTION TYPES\n * ============================================================================= */\n\n/**\n * Byte length for AES-256 encryption keys.\n *\n * @remarks\n * AES-256 mandates exactly 32 bytes (256 bits) for the symmetric encryption key.\n * Using fewer bytes would reduce the security level below 256-bit; using more\n * bytes is not supported by the AES key schedule.\n *\n * @see {@link AesKey} — branded type enforcing this length\n * @public\n */\nexport const AES_KEY_LENGTH = 32;\n\n/**\n * Byte length for AES-GCM initialization vectors (IVs).\n *\n * @remarks\n * AES-GCM uses a 12-byte (96-bit) IV as recommended by NIST SP 800-38D.\n * This length is optimal for GCM: longer IVs would need to be hashed down to\n * 96 bits internally, while the 96-bit IV can be used directly as the initial\n * counter value. Each encryption call must use a fresh, unique IV.\n *\n * @see {@link AesCiphertextWithMetadata} — type that embeds the IV in bytes 0–11\n * @public\n */\nexport const AES_IV_LENGTH = 12;\n\n/**\n * Byte length for AES-GCM authentication tags.\n *\n * @remarks\n * AES-GCM produces a 16-byte (128-bit) authentication tag (also called the\n * MAC or \"auth tag\"). The 128-bit tag provides 64-bit security against forgery\n * under a birthday-bound analysis. NIST SP 800-38D allows shorter tags but\n * 128 bits is the recommended maximum and what @noble/ciphers uses by default.\n *\n * @see {@link AesCiphertextWithMetadata} — type that embeds the auth tag in bytes 12–27\n * @public\n */\nexport const AES_AUTH_TAG_LENGTH = 16;\n\n/**\n * Total byte overhead introduced by AES-GCM metadata (IV + AuthTag).\n *\n * @remarks\n * Any {@link AesCiphertextWithMetadata} byte array has `AES_METADATA_OVERHEAD`\n * bytes of overhead beyond the actual encrypted content:\n * ```\n * total_length = AES_METADATA_OVERHEAD + plaintext_length\n * = 12 + 16 + plaintext_length\n * = 28 + plaintext_length\n * ```\n * This constant is used as the minimum valid length in {@link assertAesCiphertextWithMetadata}.\n *\n * @public\n */\nexport const AES_METADATA_OVERHEAD = AES_IV_LENGTH + AES_AUTH_TAG_LENGTH;\n\n/**\n * AES-256 encryption key — a branded 32-byte array.\n *\n * A 32-byte (256-bit) key used for AES-256-GCM symmetric encryption. These keys\n * are derived from:\n * - **Ephemeral Unlocker**: sender's master seed + generation index via KDF\n * - **Receiver Unlocker**: X25519 Diffie-Hellman shared secret between the\n * sender's ephemeral private key and the recipient's X25519 public key\n *\n * @remarks\n * - Size: exactly {@link AES_KEY_LENGTH} (32) bytes.\n * - Must be kept secret and never transmitted in plaintext.\n * - Should be derived using a cryptographically secure KDF (not truncated or\n * padded hashes without a proper key derivation step).\n * - Once the key is no longer needed, zero it out from memory.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes (branded: valid Uint8Array)\n * └── AesKey (sub-brand: length === 32)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const rawKey: Uint8Array = deriveKeyFromSeed(seed, index);\n * assertAesKey(rawKey);\n * // rawKey is now typed as AesKey and accepted by AesEncryptorFunction\n * ```\n *\n * @see {@link assertAesKey} — runtime assertion and type narrowing\n */\nexport type AesKey = SubBrandedType<Bytes, \"AesKey\">;\n\n/**\n * AES-GCM plaintext input — a branded byte array of any length.\n *\n * Variable-length byte array to be encrypted with AES-256-GCM. For UTXO recovery\n * data the plaintext structure is:\n * ```\n * [amount (8 bytes, little-endian u64)]\n * [modified generation index (16 bytes)]\n * [destination address (32 bytes, Ed25519 public key or similar)]\n * [domain separator hash (12 bytes)]\n * = 68 bytes total\n * ```\n * The content structure and serialisation format depend entirely on the caller's\n * context; this type imposes no constraints beyond being a valid `Uint8Array`.\n *\n * @remarks\n * - Size: any length (including zero bytes for empty plaintext).\n * - Content is context-dependent; see above for the UTXO recovery layout.\n * - After encryption the output length equals `plaintext.length + AES_METADATA_OVERHEAD`.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes (branded: valid Uint8Array)\n * └── AesPlaintext (sub-brand: any length)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const raw: Uint8Array = buildRecoveryPlaintext(amount, genIndex, destination);\n * assertAesPlaintext(raw);\n * const ciphertext = await aesEncryptor(key, raw);\n * ```\n *\n * @see {@link assertAesPlaintext} — runtime assertion and type narrowing\n */\nexport type AesPlaintext = SubBrandedType<Bytes, \"AesPlaintext\">;\n\n/**\n * AES-GCM ciphertext with embedded IV and authentication tag.\n *\n * A self-contained byte array that includes all information needed for decryption\n * (except the secret key): the IV, the authentication tag, and the encrypted data,\n * packed in a canonical order.\n *\n * ## Byte Layout (28 + N bytes)\n * ```\n * Offset 0 – 11 : IV (12 bytes) — random nonce used during encryption\n * Offset 12 – 27 : AuthTag (16 bytes) — GCM authentication/integrity tag\n * Offset 28 – EOF : Ciphertext (N) — encrypted payload; length === plaintext.length\n * ```\n *\n * @remarks\n * - Minimum size: {@link AES_METADATA_OVERHEAD} (28) bytes (IV + AuthTag, empty plaintext).\n * - The IV is generated fresh by a CSPRNG for each encryption call; it is\n * unique per ciphertext and does not need to be kept secret.\n * - The AuthTag provides both data integrity and authenticity. Decryption fails\n * if any byte of the IV, AuthTag, or Ciphertext is modified.\n * - Ciphertext length equals plaintext length (AES-CTR, the underlying stream\n * cipher in GCM, does not pad).\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes (branded: valid Uint8Array)\n * └── AesCiphertextWithMetadata (sub-brand: length >= 28)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const ciphertext = await aesEncryptor(key, plaintext);\n * assertAesCiphertextWithMetadata(ciphertext); // already asserted inside encryptor\n *\n * // Manually extract components if needed:\n * const iv = ciphertext.slice(0, 12);\n * const authTag = ciphertext.slice(12, 28);\n * const payload = ciphertext.slice(28);\n * ```\n *\n * @see {@link assertAesCiphertextWithMetadata} — runtime assertion and type narrowing\n * @see {@link AES_METADATA_OVERHEAD} — total overhead constant (28 bytes)\n */\nexport type AesCiphertextWithMetadata = SubBrandedType<Bytes, \"AesCiphertextWithMetadata\">;\n\n/**\n * Asserts that a value is a valid AES-256 key (exactly 32 bytes).\n *\n * Narrows the type of `value` from `Uint8Array` to {@link AesKey} when the\n * assertion passes. Throws a {@link CryptographyAssertionError} otherwise.\n *\n * @param value - The `Uint8Array` to validate and narrow to {@link AesKey}.\n * Must be exactly {@link AES_KEY_LENGTH} (32) bytes.\n * @throws {CryptographyAssertionError} If `value` is not a `Uint8Array`.\n * @throws {CryptographyAssertionError} If `value.length !== 32`.\n *\n * @remarks\n * This is the only sanctioned way to obtain an {@link AesKey} branded type.\n * Callers should pass through this assertion immediately after key derivation\n * to catch length mismatches early, close to the derivation site.\n *\n * @public\n *\n * @example\n * ```typescript\n * const keyBytes = deriveKeyFromSeed(seed); // Uint8Array (may be wrong length)\n * assertAesKey(keyBytes); // throws if not 32 bytes\n * // keyBytes: AesKey — safe to pass to AesEncryptorFunction\n * ```\n *\n * @example\n * ```typescript\n * // Incorrectly sized input:\n * assertAesKey(new Uint8Array(16)); // throws: expected 32 bytes, got 16\n * ```\n *\n * @see {@link AesKey} — the branded type produced by this assertion\n */\nexport function assertAesKey(value: Uint8Array): asserts value is AesKey {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"AesKey\",\n });\n }\n if (value.length !== AES_KEY_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(AES_KEY_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"AesKey\",\n constraint: `length === ${String(AES_KEY_LENGTH)}`,\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid AES plaintext (any-length `Uint8Array`).\n *\n * Narrows the type of `value` from `Uint8Array` to {@link AesPlaintext}. Since\n * AES-CTR (the underlying mode in GCM) supports arbitrary-length inputs, this\n * assertion only verifies the type, not the length.\n *\n * @param value - The `Uint8Array` to validate and narrow to {@link AesPlaintext}.\n * May be any length, including zero bytes.\n * @throws {CryptographyAssertionError} If `value` is not a `Uint8Array`.\n *\n * @remarks\n * Empty plaintext (`new Uint8Array(0)`) is a valid input to AES-256-GCM; the\n * resulting ciphertext will be exactly 28 bytes (IV + AuthTag with no encrypted\n * payload). This assertion reflects that constraint by imposing no length check.\n *\n * @public\n *\n * @example\n * ```typescript\n * const raw = new Uint8Array([1, 2, 3, 4]);\n * assertAesPlaintext(raw);\n * // raw: AesPlaintext — safe to pass to AesEncryptorFunction\n * ```\n *\n * @example\n * ```typescript\n * // Empty plaintext is valid:\n * assertAesPlaintext(new Uint8Array(0));\n * ```\n *\n * @see {@link AesPlaintext} — the branded type produced by this assertion\n */\nexport function assertAesPlaintext(value: Uint8Array): asserts value is AesPlaintext {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"AesPlaintext\",\n });\n }\n}\n\n/**\n * Asserts that a value is a valid AES ciphertext with embedded metadata.\n *\n * Narrows the type of `value` from `Uint8Array` to {@link AesCiphertextWithMetadata}.\n * Validates that the byte array is at least {@link AES_METADATA_OVERHEAD} (28) bytes\n * long, which is the minimum for an IV + AuthTag + empty ciphertext body.\n *\n * @param value - The `Uint8Array` to validate and narrow to {@link AesCiphertextWithMetadata}.\n * Must be at least 28 bytes (`AES_IV_LENGTH + AES_AUTH_TAG_LENGTH`).\n * @throws {CryptographyAssertionError} If `value` is not a `Uint8Array`.\n * @throws {CryptographyAssertionError} If `value.length < 28`.\n *\n * @remarks\n * The assertion checks the minimum structural requirement for the combined format.\n * It does **not** verify that the IV, AuthTag, and ciphertext body are individually\n * well-formed (that is the responsibility of the `gcm` cipher inside the decryptor).\n *\n * A 28-byte input corresponds to an empty plaintext: 12 (IV) + 16 (AuthTag) + 0\n * (payload). Any input shorter than 28 bytes cannot contain a valid IV and AuthTag,\n * so it is definitively invalid.\n *\n * @public\n *\n * @example\n * ```typescript\n * const encrypted = await aesEncrypt(key, plaintext);\n * assertAesCiphertextWithMetadata(encrypted); // already done inside encryptor\n * // encrypted: AesCiphertextWithMetadata\n * ```\n *\n * @example\n * ```typescript\n * // Too short — throws:\n * assertAesCiphertextWithMetadata(new Uint8Array(20));\n * // CryptographyAssertionError: Expected at least 28 bytes, got 20\n * ```\n *\n * @see {@link AesCiphertextWithMetadata} — the branded type produced by this assertion\n * @see {@link AES_METADATA_OVERHEAD} — the minimum length constant (28)\n */\nexport function assertAesCiphertextWithMetadata(\n value: Uint8Array,\n): asserts value is AesCiphertextWithMetadata {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"AesCiphertextWithMetadata\",\n });\n }\n if (value.length < AES_METADATA_OVERHEAD) {\n throw new CryptographyAssertionError(\n `Expected at least ${String(AES_METADATA_OVERHEAD)} bytes (IV + AuthTag), got ${String(value.length)}`,\n {\n value,\n expectedType: \"AesCiphertextWithMetadata\",\n constraint: `length >= ${String(AES_METADATA_OVERHEAD)}`,\n },\n );\n }\n}\n\n/* =============================================================================\n * GROTH16 PROOF TYPES\n * ============================================================================= */\n\n/**\n * Byte length for elliptic curve G1 points in serialised Groth16 proofs.\n *\n * @remarks\n * A G1 point on the BN254 curve is a pair of field elements (x, y) each\n * 32 bytes, serialised consecutively:\n * ```\n * [x (32 bytes big-endian) | y (32 bytes big-endian)] = 64 bytes\n * ```\n * Both the A and C components of a Groth16 proof are G1 points.\n *\n * @public\n */\nexport const GROTH16_G1_BYTE_LENGTH = 64;\n\n/**\n * Byte length for elliptic curve G2 points in serialised Groth16 proofs.\n *\n * @remarks\n * A G2 point on the BN254 curve lives in the extension field Fq2 = Fq[i]/(i²+1).\n * Each coordinate is a pair of Fq elements, so a G2 point is 4 field elements\n * serialised consecutively:\n * ```\n * [x0 (32 bytes) | x1 (32 bytes) | y0 (32 bytes) | y1 (32 bytes)] = 128 bytes\n * ```\n * where (x0 + x1·i) is the x-coordinate and (y0 + y1·i) is the y-coordinate.\n * The B component of a Groth16 proof is a G2 point.\n *\n * @public\n */\nexport const GROTH16_G2_BYTE_LENGTH = 128;\n\n/**\n * The A component of a Groth16 proof — a serialised G1 point (64 bytes).\n *\n * `A` is a point on the G1 group of the BN254 pairing-friendly elliptic curve,\n * serialised as two consecutive 32-byte big-endian field elements: `[x | y]`.\n *\n * @remarks\n * - Size: exactly {@link GROTH16_G1_BYTE_LENGTH} (64) bytes.\n * - Encoding: `[x-coordinate (32 bytes, big-endian) | y-coordinate (32 bytes, big-endian)]`.\n * - Together with {@link Groth16ProofB} and {@link Groth16ProofC}, forms a complete\n * Groth16 zkSNARK proof tuple `(A, B, C)` that can be verified in a single\n * batched pairing equation on-chain.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes\n * └── Groth16ProofA (sub-brand: length === 64)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofA = new Uint8Array(64);\n * // ... fill from proof generation ...\n * assertGroth16ProofA(proofA);\n * // proofA: Groth16ProofA\n * ```\n *\n * @see {@link assertGroth16ProofA} — runtime assertion\n * @see {@link Groth16Proof} — container for the full (A, B, C) tuple\n */\nexport type Groth16ProofA = SubBrandedType<Bytes, \"Groth16ProofA\">;\n\n/**\n * The B component of a Groth16 proof — a serialised G2 point (128 bytes).\n *\n * `B` is a point on the G2 group of the BN254 pairing-friendly elliptic curve,\n * serialised as four consecutive 32-byte big-endian field elements:\n * `[x0 | x1 | y0 | y1]`.\n *\n * @remarks\n * - Size: exactly {@link GROTH16_G2_BYTE_LENGTH} (128) bytes.\n * - Encoding: coordinates over the extension field Fq2 are split into two base-field\n * elements each, giving four 32-byte components: `x = x0 + x1·i`, `y = y0 + y1·i`.\n * - The G2 component is typically the largest part of a Groth16 proof.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes\n * └── Groth16ProofB (sub-brand: length === 128)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofB = new Uint8Array(128);\n * assertGroth16ProofB(proofB);\n * // proofB: Groth16ProofB\n * ```\n *\n * @see {@link assertGroth16ProofB} — runtime assertion\n * @see {@link Groth16Proof} — container for the full (A, B, C) tuple\n */\nexport type Groth16ProofB = SubBrandedType<Bytes, \"Groth16ProofB\">;\n\n/**\n * The C component of a Groth16 proof — a serialised G1 point (64 bytes).\n *\n * `C` is a point on the G1 group of the BN254 curve, serialised identically\n * to {@link Groth16ProofA}: `[x (32 bytes big-endian) | y (32 bytes big-endian)]`.\n *\n * @remarks\n * - Size: exactly {@link GROTH16_G1_BYTE_LENGTH} (64) bytes.\n * - `C` is a distinct component from `A` even though both are G1 points.\n * Branded separately to prevent accidental substitution in the proof tuple.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes\n * └── Groth16ProofC (sub-brand: length === 64)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofC = new Uint8Array(64);\n * assertGroth16ProofC(proofC);\n * // proofC: Groth16ProofC\n * ```\n *\n * @see {@link assertGroth16ProofC} — runtime assertion\n * @see {@link Groth16Proof} — container for the full (A, B, C) tuple\n */\nexport type Groth16ProofC = SubBrandedType<Bytes, \"Groth16ProofC\">;\n\n/**\n * Asserts that a value is a valid {@link Groth16ProofA} (exactly 64 bytes).\n *\n * @param value - The `Uint8Array` to validate. Must be exactly\n * {@link GROTH16_G1_BYTE_LENGTH} (64) bytes.\n * @param name - Optional human-readable name used in error messages.\n * Defaults to `\"Groth16ProofA\"`.\n * @throws {TypeError} If `value` is not a `Uint8Array`.\n * @throws {TypeError} If `value.length !== 64`.\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofA = new Uint8Array(64);\n * assertGroth16ProofA(proofA);\n * // proofA: Groth16ProofA\n * ```\n *\n * @example\n * ```typescript\n * // With a descriptive name for clearer errors:\n * assertGroth16ProofA(rawBytes, \"claimProof.a\");\n * // On failure: \"claimProof.a must be exactly 64 bytes, got N\"\n * ```\n *\n * @see {@link Groth16ProofA} — the branded type produced by this assertion\n */\nexport function assertGroth16ProofA(\n value: Uint8Array,\n name?: string,\n): asserts value is Groth16ProofA {\n if (!(value instanceof Uint8Array)) {\n throw new TypeError(`${name ?? \"value\"} must be a Uint8Array, got ${typeof value}`);\n }\n if (value.length !== GROTH16_G1_BYTE_LENGTH) {\n throw new TypeError(\n `${name ?? \"Groth16ProofA\"} must be exactly ${String(GROTH16_G1_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n );\n }\n}\n\n/**\n * Asserts that a value is a valid {@link Groth16ProofB} (exactly 128 bytes).\n *\n * @param value - The `Uint8Array` to validate. Must be exactly\n * {@link GROTH16_G2_BYTE_LENGTH} (128) bytes.\n * @param name - Optional human-readable name used in error messages.\n * Defaults to `\"Groth16ProofB\"`.\n * @throws {TypeError} If `value` is not a `Uint8Array`.\n * @throws {TypeError} If `value.length !== 128`.\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofB = new Uint8Array(128);\n * assertGroth16ProofB(proofB);\n * // proofB: Groth16ProofB\n * ```\n *\n * @see {@link Groth16ProofB} — the branded type produced by this assertion\n */\nexport function assertGroth16ProofB(\n value: Uint8Array,\n name?: string,\n): asserts value is Groth16ProofB {\n if (!(value instanceof Uint8Array)) {\n throw new TypeError(`${name ?? \"value\"} must be a Uint8Array, got ${typeof value}`);\n }\n if (value.length !== GROTH16_G2_BYTE_LENGTH) {\n throw new TypeError(\n `${name ?? \"Groth16ProofB\"} must be exactly ${String(GROTH16_G2_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n );\n }\n}\n\n/**\n * Asserts that a value is a valid {@link Groth16ProofC} (exactly 64 bytes).\n *\n * @param value - The `Uint8Array` to validate. Must be exactly\n * {@link GROTH16_G1_BYTE_LENGTH} (64) bytes.\n * @param name - Optional human-readable name used in error messages.\n * Defaults to `\"Groth16ProofC\"`.\n * @throws {TypeError} If `value` is not a `Uint8Array`.\n * @throws {TypeError} If `value.length !== 64`.\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofC = new Uint8Array(64);\n * assertGroth16ProofC(proofC);\n * // proofC: Groth16ProofC\n * ```\n *\n * @see {@link Groth16ProofC} — the branded type produced by this assertion\n */\nexport function assertGroth16ProofC(\n value: Uint8Array,\n name?: string,\n): asserts value is Groth16ProofC {\n if (!(value instanceof Uint8Array)) {\n throw new TypeError(`${name ?? \"value\"} must be a Uint8Array, got ${typeof value}`);\n }\n if (value.length !== GROTH16_G1_BYTE_LENGTH) {\n throw new TypeError(\n `${name ?? \"Groth16ProofC\"} must be exactly ${String(GROTH16_G1_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n );\n }\n}\n\n/**\n * A complete Groth16 zero-knowledge proof, structured as typed component fields.\n *\n * Groth16 (Groth, 2016) is a pairing-based zkSNARK system that produces\n * succinct, constant-size proofs. A proof consists of three elliptic curve\n * points — two from G1 (A and C) and one from G2 (B) — which are checked by\n * a single batched pairing equation:\n *\n * ```\n * e(A, B) = e(alpha, beta) * e(sum, gamma) * e(C, delta)\n * ```\n *\n * where `alpha`, `beta`, `gamma`, `delta` are fixed verification-key points.\n *\n * @remarks\n * ## Proof Structure (256 bytes total)\n *\n * - `a` — G1 point, 64 bytes. The \"witness commitment.\"\n * - `b` — G2 point, 128 bytes. The \"randomised statement.\"\n * - `c` — G1 point, 64 bytes. The \"response/linear combination.\"\n *\n * ## Security Properties\n *\n * - Proof size is **constant** (256 bytes) regardless of circuit complexity.\n * - On-chain verification cost is constant (3 pairings + linear public-input combination).\n * - Requires a **circuit-specific trusted setup** (powers-of-tau ceremony + circuit-specific\n * phase 2). The verification key stored on-chain encodes this setup.\n * - Under the generic group model and q-PKE assumption, Groth16 is knowledge-sound.\n *\n * ## Use in Umbra\n *\n * Groth16 proofs are used in Umbra's claim and transfer instructions to prove\n * that a UTXO commitment is correctly formed and that the claimant knows the\n * preimage — all without revealing the UTXO value or the private key.\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofA = new Uint8Array(64);\n * const proofB = new Uint8Array(128);\n * const proofC = new Uint8Array(64);\n * assertGroth16ProofA(proofA);\n * assertGroth16ProofB(proofB);\n * assertGroth16ProofC(proofC);\n *\n * const proof: Groth16Proof = { a: proofA, b: proofB, c: proofC };\n * ```\n *\n * @see {@link Groth16ProofA} — type for the A component\n * @see {@link Groth16ProofB} — type for the B component\n * @see {@link Groth16ProofC} — type for the C component\n * @see {@link ZkProofBytes} — serialised form of this proof\n */\nexport interface Groth16Proof {\n /**\n * The A component of the Groth16 proof.\n *\n * A point on the G1 group of BN254, serialised as 64 bytes.\n * Encodes the prover's commitment to the witness.\n *\n * @readonly\n */\n readonly a: Groth16ProofA;\n\n /**\n * The B component of the Groth16 proof.\n *\n * A point on the G2 group of BN254, serialised as 128 bytes.\n * Encodes the randomised statement derived from the proving key.\n *\n * @readonly\n */\n readonly b: Groth16ProofB;\n\n /**\n * The C component of the Groth16 proof.\n *\n * A point on the G1 group of BN254, serialised as 64 bytes.\n * Encodes the prover's linear combination of the witness and randomness.\n *\n * @readonly\n */\n readonly c: Groth16ProofC;\n}\n\n/* =============================================================================\n * ZK PROOF BYTES TYPE\n * ============================================================================= */\n\n/**\n * Expected byte length for a Groth16 proof when serialised to a flat byte array.\n *\n * @remarks\n * A serialised Groth16 proof packs the three elliptic curve point components\n * end-to-end:\n * ```\n * [A.x (32) | A.y (32) | B.x0 (32) | B.x1 (32) | B.y0 (32) | B.y1 (32) | C.x (32) | C.y (32)]\n * ──── G1 (64) ──── ──────────────── G2 (128) ─────────────────────── ──── G1 (64) ────\n * total: 64 + 128 + 64 = 256 bytes\n * ```\n *\n * @public\n */\nexport const ZK_PROOF_BYTE_LENGTH = 256;\n\n/**\n * Serialised zero-knowledge proof bytes — a branded 256-byte array.\n *\n * Represents a Groth16 proof serialised to a flat byte array suitable for\n * on-chain storage, network transmission, or passing to the Solana verifier\n * instruction (`groth16-solana`).\n *\n * @remarks\n * - Size: exactly {@link ZK_PROOF_BYTE_LENGTH} (256) bytes.\n * - Format: `[A (64 bytes) | B (128 bytes) | C (64 bytes)]` where each\n * coordinate is encoded as 32-byte big-endian.\n * - On-chain the Umbra program unpacks this into the three components and\n * passes them to `groth16-solana`'s verification instruction.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes\n * └── ZkProofBytes (sub-brand: length === 256)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofBytes = serializeGroth16Proof(proof);\n * assertZkProofBytes(proofBytes);\n * // proofBytes: ZkProofBytes — safe to include in an on-chain instruction\n * ```\n *\n * @see {@link assertZkProofBytes} — runtime assertion and type narrowing\n * @see {@link Groth16Proof} — structured form of the proof before serialisation\n */\nexport type ZkProofBytes = SubBrandedType<Bytes, \"ZkProofBytes\">;\n\n/**\n * Asserts that a value is a valid serialised ZK proof (exactly 256 bytes).\n *\n * Narrows the type of `value` from `Uint8Array` to {@link ZkProofBytes}.\n *\n * @param value - The `Uint8Array` to validate. Must be exactly\n * {@link ZK_PROOF_BYTE_LENGTH} (256) bytes.\n * @throws {CryptographyAssertionError} If `value` is not a `Uint8Array`.\n * @throws {CryptographyAssertionError} If `value.length !== 256`.\n *\n * @public\n *\n * @example\n * ```typescript\n * const proofBytes = new Uint8Array(256);\n * // ... filled by proof generation ...\n * assertZkProofBytes(proofBytes);\n * // proofBytes: ZkProofBytes\n * ```\n *\n * @see {@link ZkProofBytes} — the branded type produced by this assertion\n */\nexport function assertZkProofBytes(value: Uint8Array): asserts value is ZkProofBytes {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"ZkProofBytes\",\n });\n }\n if (value.length !== ZK_PROOF_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(ZK_PROOF_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"ZkProofBytes\",\n constraint: `length === ${String(ZK_PROOF_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/* =============================================================================\n * OPTIONAL DATA\n * ============================================================================= */\n\n/**\n * Fixed byte length for optional data fields in on-chain instructions.\n *\n * @remarks\n * On-chain Arcium/Umbra instructions may include a 32-byte \"optional data\"\n * slot. When unused, this slot is zeroed out. The fixed size ensures the\n * account layout remains stable across protocol versions.\n *\n * @internal\n */\nexport const OPTIONAL_DATA_BYTE_LENGTH = 32;\n\n/**\n * A 32-byte array for optional data fields in Umbra on-chain instructions.\n *\n * Optional data fields accompany certain Arcium and Umbra protocol instructions\n * as a forward-compatibility mechanism. The semantics of the bytes depend on the\n * specific instruction; if the instruction does not use this field, it is set to\n * all zeros. This type enforces the fixed 32-byte size at the type level.\n *\n * @remarks\n * - Size: exactly {@link OPTIONAL_DATA_BYTE_LENGTH} (32) bytes.\n * - Content: instruction-specific; may be all zeros when unused.\n * - The fixed 32-byte size matches the on-chain account layout.\n *\n * ## Type Hierarchy\n * ```\n * Uint8Array\n * └── Bytes\n * └── OptionalData32 (sub-brand: length === 32)\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * // Zero optional data (no additional metadata):\n * const optionalData = new Uint8Array(32); // all zeros\n * assertOptionalData32(optionalData);\n * // optionalData: OptionalData32\n * ```\n *\n * @see {@link assertOptionalData32} — runtime assertion and type narrowing\n */\nexport type OptionalData32 = SubBrandedType<Bytes, \"OptionalData32\">;\n\n/**\n * Asserts that a value is a valid 32-byte optional data array.\n *\n * Narrows the type of `value` from `Uint8Array` to {@link OptionalData32}.\n *\n * @param value - The `Uint8Array` to validate. Must be exactly\n * {@link OPTIONAL_DATA_BYTE_LENGTH} (32) bytes.\n * @param name - Optional human-readable name used in error messages.\n * Defaults to `\"OptionalData32\"`.\n * @throws {CryptographyAssertionError} If `value` is not a `Uint8Array`.\n * @throws {CryptographyAssertionError} If `value.length !== 32`.\n *\n * @public\n *\n * @example\n * ```typescript\n * const data = new Uint8Array(32);\n * assertOptionalData32(data);\n * // data: OptionalData32\n * ```\n *\n * @example\n * ```typescript\n * // With a descriptive name for clearer error messages:\n * assertOptionalData32(raw, \"depositInstruction.optionalData\");\n * // On failure: \"depositInstruction.optionalData must be exactly 32 bytes, got N\"\n * ```\n *\n * @see {@link OptionalData32} — the branded type produced by this assertion\n */\nexport function assertOptionalData32(\n value: Uint8Array,\n name?: string,\n): asserts value is OptionalData32 {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(\n `${name ?? \"OptionalData32\"}: Expected Uint8Array, got ${typeof value}`,\n {\n value,\n expectedType: \"OptionalData32\",\n },\n );\n }\n if (value.length !== OPTIONAL_DATA_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `${name ?? \"OptionalData32\"} must be exactly ${String(OPTIONAL_DATA_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"OptionalData32\",\n constraint: `length === ${String(OPTIONAL_DATA_BYTE_LENGTH)}`,\n },\n );\n }\n}\n","/**\n * Key Derivation Types\n *\n * This module defines branded types for Curve25519 (Ed25519/X25519) key exchange,\n * Keccak hashing, master seeds, and hierarchical viewing key derivation.\n *\n * @remarks\n * All types in this module are \"branded\" nominal types built on top of primitive\n * TypeScript types (`Uint8Array` or `bigint`). Branding prevents accidental\n * cross-use of structurally identical values that have different semantic meanings\n * (e.g., passing an X25519 public key where a private key is expected).\n *\n * ## Type Hierarchy Overview\n *\n * ```\n * Bytes\n * └── X25519Bytes (32 bytes, endianness-agnostic)\n * ├── X25519PrivateKey — secret scalar; never share\n * ├── X25519PublicKey — public curve point; safe to share\n * └── SharedSecret — ECDH output; feed into a KDF before use\n *\n * LeBytes\n * └── U256LeBytes\n * └── Keccak256Hash — 32-byte Keccak-256 digest\n * └── U512LeBytes\n * └── Keccak512Hash — 64-byte Keccak-512 digest\n * ├── MasterSeed — root of the key hierarchy; 64 bytes\n * └── GenerationSeed — ephemeral seed input; 64 bytes\n *\n * bigint\n * └── U256\n * └── Bn254FieldElement\n * ├── MasterViewingKey — < 2^252, views all txs\n * ├── YearlyViewingKey — views one calendar year\n * ├── MonthlyViewingKey — views one calendar month\n * ├── DailyViewingKey — views one calendar day\n * ├── HourlyViewingKey — views one calendar hour\n * ├── MinuteViewingKey — views one calendar minute\n * ├── SecondViewingKey — views one calendar second\n * └── MintViewingKey — views one token (mint)\n * ```\n *\n * ## Security Model\n *\n * - The `MasterSeed` is the single secret from which all other keys are derived.\n * Compromising it compromises the entire key hierarchy.\n * - KMAC256 domain separation ensures that different derived keys are\n * computationally independent: knowledge of one does not reveal another.\n * - Viewing keys (MVK and sub-keys) grant read-only access to transaction\n * history and can be selectively shared for compliance purposes.\n * - X25519 private keys are used for ECDH with token senders to enable\n * encrypted token account balance decryption.\n *\n * @packageDocumentation\n * @public\n *\n * @module crypto/key-derivation/types\n */\n\nimport type {\n SubBrandedType,\n SubSubBrandedType,\n SubSubSubBrandedType,\n SubSubSubSubBrandedType,\n} from \"../../common/branded\";\nimport {\n type Bytes,\n type U256LeBytes,\n type U512LeBytes,\n U256_BYTE_LENGTH,\n U512_BYTE_LENGTH,\n} from \"../../common/types\";\nimport { type Bn254FieldElement, BN254_FIELD_PRIME } from \"../../math/bn254/types\";\nimport { CryptographyAssertionError } from \"../../common/errors\";\n\n/* =============================================================================\n * X25519 KEY EXCHANGE TYPES\n * ============================================================================= */\n\n/**\n * Exact byte length of X25519 keys and shared secrets.\n *\n * @remarks\n * X25519 operates on Curve25519 in Montgomery form. All values — private keys,\n * public keys, and ECDH shared secrets — are exactly 32 bytes (256 bits).\n * This constant is used as the canonical length assertion for all X25519 types.\n *\n * @public\n */\nexport const X25519_BYTE_LENGTH = 32;\n\n/**\n * Base branded byte-array type for X25519 key exchange operations.\n *\n * X25519 is an elliptic curve Diffie-Hellman (ECDH) protocol using Curve25519\n * in Montgomery form. All X25519 values (public keys, private keys, shared\n * secrets) are exactly 32 bytes.\n *\n * @remarks\n * - Size: 32 bytes (256 bits)\n * - Used as the parent brand for X25519PrivateKey, X25519PublicKey, and SharedSecret\n * - Parallel to LeBytes/BeBytes as a sub-brand of Bytes\n * - Endianness-agnostic: the X25519 spec defines a fixed byte ordering\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base)\n * └── X25519Bytes (sub-brand, 32 bytes)\n * ├── X25519PrivateKey\n * ├── X25519PublicKey\n * └── SharedSecret\n * ```\n *\n * @see {@link X25519PrivateKey}\n * @see {@link X25519PublicKey}\n * @see {@link SharedSecret}\n * @see https://cr.yp.to/ecdh/curve25519-20060209.pdf\n * @see https://tools.ietf.org/html/rfc7748\n * @public\n */\nexport type X25519Bytes = SubBrandedType<Bytes, \"X25519Bytes\">;\n\n/**\n * X25519 private key for elliptic curve Diffie-Hellman key exchange.\n *\n * A private key is a 32-byte scalar derived from the master seed via KMAC256\n * with domain separator `\"UserAccountX25519Keypair\"`. It is used together\n * with a counterparty's public key to compute a shared secret.\n *\n * @remarks\n * - Size: 32 bytes (256 bits)\n * - MUST be kept secret and never shared or logged\n * - The X25519 algorithm applies RFC 8032 clamping to the scalar during use\n * - In Umbra, private keys are derived deterministically from the master seed;\n * they must never be generated independently with a random number generator\n *\n * ## Security Warning\n *\n * Exposure of this key allows the holder to decrypt all balances encrypted to\n * the corresponding public key. Store it only in memory during use.\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base)\n * └── X25519Bytes (sub-brand, 32 bytes)\n * └── X25519PrivateKey (sub-sub-brand)\n * ```\n *\n * @example\n * ```typescript\n * // Generate a new private key\n * const rawPrivateKey = crypto.getRandomValues(new Uint8Array(32));\n * assertX25519PrivateKey(rawPrivateKey);\n * // rawPrivateKey is now typed as X25519PrivateKey\n *\n * // Derive the public key\n * const publicKey = x25519GetPublicKey(rawPrivateKey);\n * ```\n *\n * @see {@link assertX25519PrivateKey}\n * @see {@link X25519Keypair}\n * @see https://tools.ietf.org/html/rfc7748#section-5\n * @public\n */\nexport type X25519PrivateKey = SubSubBrandedType<X25519Bytes, \"X25519PrivateKey\">;\n\n/**\n * X25519 public key for elliptic curve Diffie-Hellman key exchange.\n *\n * A public key is a 32-byte Montgomery curve point derived from a private key\n * via scalar multiplication of the Curve25519 base point. It is stored on-chain\n * in the encrypted token account and used by token senders to encrypt balances\n * for the account holder.\n *\n * @remarks\n * - Size: 32 bytes (256 bits)\n * - Safe to transmit over insecure channels and store on-chain\n * - Derived from the corresponding X25519PrivateKey\n * - Used as input to X25519 ECDH: both parties independently compute the same shared secret\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base)\n * └── X25519Bytes (sub-brand, 32 bytes)\n * └── X25519PublicKey (sub-sub-brand)\n * ```\n *\n * @example\n * ```typescript\n * // Receive a public key from another party\n * const theirPublicKey = receivePublicKey();\n * assertX25519PublicKey(theirPublicKey);\n * // theirPublicKey is now typed as X25519PublicKey\n *\n * // Compute shared secret\n * const sharedSecret = x25519(myPrivateKey, theirPublicKey);\n * ```\n *\n * @see {@link assertX25519PublicKey}\n * @see {@link X25519Keypair}\n * @see https://tools.ietf.org/html/rfc7748#section-5\n * @public\n */\nexport type X25519PublicKey = SubSubBrandedType<X25519Bytes, \"X25519PublicKey\">;\n\n/**\n * ECDH shared secret produced by an X25519 key exchange operation.\n *\n * This type represents the raw 32-byte output of `X25519(privateKey, publicKey)`.\n * Both communicating parties independently compute the same shared secret by\n * swapping the public key and private key roles.\n *\n * @remarks\n * - Size: 32 bytes (256 bits)\n * - MUST be processed by a Key Derivation Function (KDF) before use as an\n * encryption key. Raw shared secrets have low-order bits that are not\n * uniformly distributed.\n * - Never transmit, log, or store the raw shared secret.\n *\n * ## Security Warning\n *\n * Do not use the raw shared secret directly as an AES or ChaCha20 key. Always\n * derive a symmetric key using a proper KDF (e.g., HKDF or KMAC256).\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base)\n * └── X25519Bytes (sub-brand, 32 bytes)\n * └── SharedSecret (sub-sub-brand)\n * ```\n *\n * @example\n * ```typescript\n * // After performing X25519 key exchange\n * const rawSharedSecret = x25519(myPrivateKey, theirPublicKey);\n * assertSharedSecret(rawSharedSecret);\n * // rawSharedSecret is now typed as SharedSecret\n *\n * // Derive an encryption key from the shared secret (required)\n * const encryptionKey = kdf(rawSharedSecret);\n * ```\n *\n * @see {@link assertSharedSecret}\n * @see https://tools.ietf.org/html/rfc7748#section-6\n * @public\n */\nexport type SharedSecret = SubSubBrandedType<X25519Bytes, \"SharedSecret\">;\n\n/**\n * An X25519 key pair consisting of a private key and its corresponding public key.\n *\n * X25519 is an elliptic curve Diffie-Hellman (ECDH) protocol using Curve25519\n * in Montgomery form. In Umbra, this keypair is derived deterministically from\n * the master seed and is used to establish shared secrets with token senders,\n * enabling the account holder to decrypt their encrypted balance.\n *\n * @remarks\n * ## Key Generation\n * - Private key: 32 bytes derived via KMAC256 from the master seed\n * - Public key: Scalar multiplication of the private key with the Curve25519 base point\n *\n * ## Security Properties\n * - Private key MUST be kept secret; it enables decryption of all balances sent to this account\n * - Public key can be freely shared and is stored on-chain in the token account PDA\n * - Shared secret is computed as: `X25519(myPrivate, senderPublic)` — symmetric by construction\n * - Compromise of the private key does not reveal the master seed or other derived keys\n *\n * ## Use Cases in Umbra\n * - `registerTokenPublicKey`: The public key is registered on-chain for a token account\n * - Balance decryption: The private key is used to decrypt AES-GCM ciphertexts from senders\n * - ECDH with ephemeral sender keys for forward secrecy of individual transfers\n *\n * @example\n * ```typescript\n * import { X25519Keypair, generateX25519Keypair } from \"./cryptography\";\n *\n * // Generate a new keypair\n * const keypair: X25519Keypair = await generateX25519Keypair();\n *\n * // Share public key with peer\n * sendPublicKey(peer, keypair.publicKey);\n *\n * // Compute shared secret with peer's public key\n * const sharedSecret = x25519(keypair.privateKey, peerPublicKey);\n * ```\n *\n * @example\n * ```typescript\n * // Ephemeral key exchange for forward secrecy\n * const ephemeralKeypair: X25519Keypair = await generateX25519Keypair();\n *\n * // Use ephemeral keypair for this session only\n * const sessionKey = deriveSessionKey(\n * x25519(ephemeralKeypair.privateKey, recipientPublicKey)\n * );\n *\n * // Discard private key after use for forward secrecy\n * ```\n *\n * @see {@link assertX25519Keypair}\n * @see {@link X25519PrivateKey}\n * @see {@link X25519PublicKey}\n * @public\n */\nexport interface X25519Keypair {\n /**\n * The X25519 private key (32 bytes).\n *\n * This key MUST be kept secret. It is used to:\n * - Compute shared secrets with other parties' public keys\n * - Derive the corresponding public key\n *\n * @remarks\n * The private key is derived from the master seed via KMAC256 with the\n * domain separator `\"UserAccountX25519Keypair\"`. The X25519 algorithm applies\n * RFC 8032 §5.1.5 clamping to the scalar during use.\n *\n * @readonly\n */\n readonly privateKey: X25519PrivateKey;\n\n /**\n * The X25519 public key (32 bytes).\n *\n * This key can be freely shared. It is:\n * - Computed from the private key via scalar multiplication with the base point\n * - Used by other parties to compute shared secrets with their own private key\n * - Stored on-chain in the Umbra token account PDA\n * - Safe to transmit over insecure channels\n *\n * @readonly\n */\n readonly publicKey: X25519PublicKey;\n}\n\n/**\n * Ed25519 keypair for digital signatures on the Edwards form of Curve25519.\n *\n * Ed25519 is the signing scheme defined in RFC 8032. In Umbra, an Ed25519\n * keypair is derived from the same 32-byte seed as the corresponding X25519\n * keypair (they are related via the birational equivalence of Curve25519 in\n * Edwards vs Montgomery form). The Ed25519 public key is used as the on-chain\n * signer identity in registration transactions.\n *\n * @remarks\n * ## Key Derivation\n * - Seed: First 32 bytes of a 64-byte KMAC256 output keyed by the master seed\n * - Public key: Derived via `ed25519.getPublicKey(seed)`; uses SHA-512 internally\n * - The relationship to X25519: the Ed25519 public key can be converted to the\n * Montgomery form via `ed25519.utils.toMontgomery(edPublicKey)`\n *\n * ## Relationship to X25519\n * - Ed25519 uses compressed Edwards curve coordinates\n * - X25519 uses Montgomery curve coordinates\n * - Both represent points on the same underlying elliptic curve (Curve25519)\n * - The birational map between them is cheap and deterministic\n *\n * @example\n * ```typescript\n * import { ed25519 } from \"@noble/curves/ed25519\";\n *\n * const seed = crypto.getRandomValues(new Uint8Array(32));\n * const publicKey = ed25519.getPublicKey(seed);\n *\n * const keypair: Ed25519Keypair = { seed, publicKey };\n * ```\n *\n * @see {@link assertEd25519Keypair}\n * @see {@link Curve25519KeypairResult}\n * @public\n */\nexport interface Ed25519Keypair {\n /**\n * The Ed25519 private key seed (32 bytes).\n *\n * This is the raw 32-byte seed from which both the signing scalar and the\n * public key are derived (via SHA-512 key expansion defined in RFC 8032).\n * MUST be kept secret.\n */\n readonly seed: Uint8Array;\n\n /**\n * The Ed25519 public key (32 bytes).\n *\n * A compressed Edwards curve point derived from the seed via SHA-512 key\n * expansion and scalar multiplication. Can be freely shared and is used\n * as the on-chain signer identity.\n */\n readonly publicKey: Uint8Array;\n}\n\n/**\n * Combined Curve25519 keypair result containing both Ed25519 and X25519 keypairs.\n *\n * This interface represents the result of deriving both Ed25519 (Edwards curve)\n * and X25519 (Montgomery curve) keypairs from a single 32-byte seed. Both\n * keypairs are cryptographically linked through the same underlying Curve25519\n * and are derived together for efficiency.\n *\n * @remarks\n * ## Derivation Pipeline\n *\n * 1. **Ed25519 Keypair**:\n * - Input: First 32 bytes of a 64-byte KMAC256 output\n * - Output: Ed25519 public key via `ed25519.getPublicKey(seed)`\n *\n * 2. **X25519 Keypair**:\n * - Hash seed with SHA-512 → 64 bytes\n * - Clamp first 32 bytes per RFC 8032 §5.1.5\n * - Use clamped bytes as X25519 private key\n * - Derive X25519 public key via birational map: `ed25519.utils.toMontgomery(ed25519Pub)`\n *\n * ## Security Properties\n *\n * - **Deterministic**: Same master seed always produces the same keypairs\n * - **Domain Separated**: Independent from all other key derivations via KMAC256\n * - **Cryptographically Linked**: Both keypairs share the same Curve25519 foundation\n *\n * @example\n * ```typescript\n * import { getUserAccountX25519KeypairDeriver } from \"@umbra-privacy/sdk\";\n *\n * const generator = getUserAccountX25519KeypairDeriver({ client });\n * const result: Curve25519KeypairResult = await generator();\n *\n * // Use Ed25519 for signing\n * const signature = ed25519.sign(message, result.ed25519Keypair.seed);\n *\n * // Use X25519 for key exchange\n * const sharedSecret = x25519.getSharedSecret(\n * result.x25519Keypair.privateKey,\n * peerPublicKey\n * );\n * ```\n *\n * @see {@link Ed25519Keypair}\n * @see {@link X25519Keypair}\n * @see {@link assertCurve25519KeypairResult}\n * @public\n */\nexport interface Curve25519KeypairResult {\n /**\n * Ed25519 keypair for digital signatures.\n *\n * Contains the 32-byte seed and the derived 32-byte compressed Edwards\n * public key. Used as the on-chain signer for registration transactions.\n */\n readonly ed25519Keypair: Ed25519Keypair;\n\n /**\n * X25519 keypair for Diffie-Hellman key exchange.\n *\n * Contains the RFC 8032-clamped 32-byte private key (derived from SHA-512\n * of the Ed25519 seed) and the derived 32-byte Montgomery public key (via\n * birational conversion from the Ed25519 public key).\n */\n readonly x25519Keypair: X25519Keypair;\n}\n\n/* =============================================================================\n * KECCAK HASH TYPES\n * ============================================================================= */\n\n/**\n * Output of the Keccak-256 (pre-NIST SHA3-256) hash function.\n *\n * Keccak-256 produces a 256-bit (32-byte) digest. It is widely used in\n * Ethereum-ecosystem applications and is distinct from the NIST standardized\n * SHA3-256 (which uses a different padding rule).\n *\n * @remarks\n * - Always exactly 32 bytes (256 bits)\n * - Stored in little-endian byte order as a branded U256LeBytes\n * - Collision-resistant and preimage-resistant under standard assumptions\n * - NOT the same as NIST SHA3-256: uses original Keccak padding (0x01 vs 0x06)\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base branded type)\n * └── LeBytes (little-endian sub-brand)\n * └── U256LeBytes (256-bit sized sub-sub-brand)\n * └── Keccak256Hash (hash-specific sub-sub-sub-brand)\n * ```\n *\n * @example\n * ```typescript\n * import { assertKeccak256Hash, Keccak256Hash } from \"./cryptography\";\n *\n * const hashBytes = keccak256(data);\n * assertKeccak256Hash(hashBytes);\n * // hashBytes is now typed as Keccak256Hash\n * ```\n *\n * @see {@link assertKeccak256Hash}\n * @public\n */\nexport type Keccak256Hash = SubSubSubBrandedType<U256LeBytes, \"Keccak256Hash\">;\n\n/**\n * Output of the Keccak-512 (pre-NIST SHA3-512) hash function.\n *\n * Keccak-512 produces a 512-bit (64-byte) digest, providing a higher security\n * margin than Keccak-256. In Umbra, it is used as the basis for master seed\n * generation: high-entropy user input is hashed with Keccak-512 to produce\n * the canonical 64-byte master seed.\n *\n * @remarks\n * - Always exactly 64 bytes (512 bits)\n * - Stored in little-endian byte order as a branded U512LeBytes\n * - Provides 256-bit pre-image security and 256-bit collision resistance\n * - Used as the foundation for {@link MasterSeed} and {@link GenerationSeed}\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base branded type)\n * └── LeBytes (little-endian sub-brand)\n * └── U512LeBytes (512-bit sized sub-sub-brand)\n * └── Keccak512Hash (hash-specific sub-sub-sub-brand)\n * ```\n *\n * @example\n * ```typescript\n * import { assertKeccak512Hash, Keccak512Hash } from \"./cryptography\";\n *\n * const hashBytes = keccak512(entropy);\n * assertKeccak512Hash(hashBytes);\n * // hashBytes is now typed as Keccak512Hash\n * ```\n *\n * @see {@link assertKeccak512Hash}\n * @see {@link MasterSeed}\n * @public\n */\nexport type Keccak512Hash = SubSubSubBrandedType<U512LeBytes, \"Keccak512Hash\">;\n\n/* =============================================================================\n * KEY DERIVATION TYPES\n * ============================================================================= */\n\n/**\n * Strict upper bound for master viewing key values (exclusive).\n *\n * @remarks\n * Master viewing keys are constrained to be strictly less than 2^252 (rather\n * than the full BN254 field prime which is close to 2^254). This tighter bound\n * is required for compatibility with ZK circuits that perform range checks on\n * field element inputs. After KMAC256 derivation, the raw value is ANDed with\n * `2^252 - 1` to enforce the constraint.\n *\n * @see {@link MasterViewingKey}\n * @see {@link assertMasterViewingKey}\n * @public\n */\nexport const MASTER_VIEWING_KEY_MAX = 2n ** 252n;\n\n/**\n * Master seed for hierarchical deterministic key derivation.\n *\n * The master seed is the root secret of the entire Umbra key hierarchy. All\n * other keys — X25519 keypairs, Poseidon keys, master viewing key, and all\n * time-scoped viewing keys — are derived from it deterministically via KMAC256.\n *\n * @remarks\n * - Always exactly 64 bytes (512 bits)\n * - Generated by hashing high-entropy user input with Keccak-512\n * - MUST be kept secret at all times; its compromise reveals all derived keys\n * - Should originate from at least 256 bits of cryptographically secure entropy\n * - Can reconstruct the full key hierarchy when combined with the client's version\n * and network metadata\n *\n * ## Security Considerations\n * - Store securely and encrypted at rest (e.g., hardware-backed keystore)\n * - Never log, transmit over insecure channels, or expose in error messages\n * - Consider hardware security module (HSM) integration for production deployments\n * - Backup procedures should use offline, air-gapped storage\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base)\n * └── LeBytes\n * └── U512LeBytes\n * └── Keccak512Hash\n * └── MasterSeed\n * ```\n *\n * @example\n * ```typescript\n * import { assertMasterSeed, MasterSeed } from \"./cryptography\";\n *\n * // Generate master seed from entropy\n * const entropy = crypto.getRandomValues(new Uint8Array(32));\n * const seedBytes = keccak512(entropy);\n * assertMasterSeed(seedBytes);\n * // seedBytes is now typed as MasterSeed\n *\n * // Derive master viewing key\n * const masterViewingKey = deriveMasterViewingKey(seedBytes);\n * ```\n *\n * @see {@link assertMasterSeed}\n * @see {@link MasterViewingKey}\n * @public\n */\nexport type MasterSeed = SubSubSubSubBrandedType<Keccak512Hash, \"MasterSeed\">;\n\n/**\n * Generation seed for ephemeral single-use key derivation.\n *\n * A generation seed serves as input to the ephemeral master seed generator,\n * producing a single-use 64-byte value from which an ephemeral key sub-hierarchy\n * can be derived. Using a generation seed instead of the master seed directly\n * prevents long-lived secrets from being exposed in ephemeral operations.\n *\n * @remarks\n * - Always exactly 64 bytes (512 bits)\n * - Derived from external entropy or protocol-specific deterministic data\n * - Semantically distinct from MasterSeed: it is an input, not a derived root\n * - After all required ephemeral keys are derived, the generation seed should\n * be discarded to limit its exposure window\n *\n * ## Type Hierarchy\n * ```\n * Bytes (base)\n * └── LeBytes\n * └── U512LeBytes\n * └── Keccak512Hash\n * └── GenerationSeed\n * ```\n *\n * @example\n * ```typescript\n * import { assertGenerationSeed, GenerationSeed } from \"./cryptography\";\n *\n * // Create generation seed from protocol data\n * const seedBytes = keccak512(protocolData);\n * assertGenerationSeed(seedBytes);\n * // seedBytes is now typed as GenerationSeed\n *\n * // Use to generate ephemeral master seed\n * const ephemeralSeed = generateEphemeralMasterSeed(seedBytes);\n * ```\n *\n * @see {@link assertGenerationSeed}\n * @see {@link MasterSeed}\n * @public\n */\nexport type GenerationSeed = SubSubSubSubBrandedType<Keccak512Hash, \"GenerationSeed\">;\n\n/* =============================================================================\n * VIEWING KEY TYPES\n * ============================================================================= */\n\n/**\n * Master viewing key (MVK) for full privacy-preserving transaction visibility.\n *\n * The master viewing key is derived from the master seed via KMAC256 and serves\n * as the root of a Poseidon-based hierarchical viewing key tree. Holding the MVK\n * allows an auditor or compliance tool to view ALL transactions across ALL tokens\n * and ALL time periods, without gaining spending capability.\n *\n * @remarks\n * - Element of the BN254 scalar field, constrained to be < 2^252\n * - Derived deterministically from the master seed using KMAC256\n * - Derivation: `KMAC256(key=\"Umbra Privacy - MasterViewingKey - {offset}\", msg=masterSeed)`, then ANDed with `2^252 - 1`\n * - The 252-bit constraint ensures compatibility with ZK circuits\n * - Can be shared to grant full read-only access to the user's history\n *\n * ## Type Hierarchy\n * All viewing keys are siblings under Bn254FieldElement (NOT subbrands of each other):\n * ```\n * bigint (base)\n * └── U256 (SubBrandedType)\n * └── Bn254FieldElement (SubSubBrandedType)\n * ├── MasterViewingKey (SubSubSubBrandedType)\n * ├── YearlyViewingKey\n * ├── MonthlyViewingKey\n * ├── DailyViewingKey\n * ├── HourlyViewingKey\n * ├── MinuteViewingKey\n * ├── SecondViewingKey\n * └── MintViewingKey\n * ```\n *\n * ## Derivation Hierarchy (NOT type hierarchy)\n * ```\n * MasterSeed\n * └── MasterViewingKey (views all time, all tokens)\n * └── MintViewingKey = Poseidon(MVK, mintLow, mintHigh)\n * └── YearlyViewingKey = Poseidon(MintVK, year)\n * └── MonthlyViewingKey = Poseidon(YearlyVK, month)\n * └── DailyViewingKey = Poseidon(MonthlyVK, day)\n * └── HourlyViewingKey = Poseidon(DailyVK, hour)\n * └── MinuteViewingKey = Poseidon(HourlyVK, minute)\n * └── SecondViewingKey = Poseidon(MinuteVK, second)\n * ```\n *\n * @example\n * ```typescript\n * import { MasterViewingKey, assertMasterViewingKey } from \"./cryptography\";\n *\n * const mvk = deriveMasterViewingKey(masterSeed);\n * assertMasterViewingKey(mvk);\n *\n * // Grant viewing access to auditor (full access — all tokens, all time)\n * shareViewingKey(auditor, mvk);\n * ```\n *\n * @see {@link assertMasterViewingKey}\n * @see {@link MASTER_VIEWING_KEY_MAX}\n * @see {@link MintViewingKey}\n * @public\n */\nexport type MasterViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"MasterViewingKey\">;\n\n/**\n * Yearly viewing key for time-scoped transaction visibility.\n *\n * A yearly viewing key grants read-only visibility into all transactions\n * involving any token within a specific calendar year. It is the first\n * time-scoped level below the mint viewing key in the derivation hierarchy.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(MintViewingKey, year)`\n * - Can view all transactions in the specified year across the specified mint\n * - Cannot view transactions from other years or other mints\n * - Can be used to derive finer-grained monthly, daily, etc. keys\n *\n * ## Use Cases\n * - Annual financial audits\n * - Tax reporting and regulatory compliance for a specific fiscal year\n * - Year-over-year activity comparison\n *\n * @example\n * ```typescript\n * import { YearlyViewingKey, assertYearlyViewingKey } from \"./cryptography\";\n *\n * const yearKey = deriveYearlyViewingKey(masterViewingKey, 2024);\n * assertYearlyViewingKey(yearKey);\n *\n * // Share with tax authority for 2024 audit\n * shareViewingKey(taxAuthority, yearKey);\n * ```\n *\n * @see {@link assertYearlyViewingKey}\n * @see {@link MasterViewingKey}\n * @public\n */\nexport type YearlyViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"YearlyViewingKey\">;\n\n/**\n * Monthly viewing key for time-scoped transaction visibility.\n *\n * A monthly viewing key grants read-only visibility into all transactions\n * involving a specific token within a specific calendar month. It provides\n * more granular access control than yearly keys.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(YearlyViewingKey, month)` where month is 1–12\n * - Can view all transactions in the specified month for the specified mint\n * - Cannot view transactions from other months or other mints\n * - Can derive daily and finer-grained keys\n *\n * ## Use Cases\n * - Monthly financial reconciliation and accounting\n * - Periodic compliance audit sampling\n * - Subscription billing verification for monthly periods\n *\n * @example\n * ```typescript\n * import { MonthlyViewingKey, assertMonthlyViewingKey } from \"./cryptography\";\n *\n * const monthKey = deriveMonthlyViewingKey(yearlyKey, 6); // June\n * assertMonthlyViewingKey(monthKey);\n *\n * // Share with accountant for monthly review\n * shareViewingKey(accountant, monthKey);\n * ```\n *\n * @see {@link assertMonthlyViewingKey}\n * @see {@link YearlyViewingKey}\n * @public\n */\nexport type MonthlyViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"MonthlyViewingKey\">;\n\n/**\n * Daily viewing key for time-scoped transaction visibility.\n *\n * A daily viewing key grants read-only visibility into all transactions\n * involving a specific token within a specific calendar day. It provides\n * day-level precision for scenarios requiring fine-grained access control.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(MonthlyViewingKey, day)` where day is 1–31\n * - Can view all transactions on the specified day for the specified mint\n * - Cannot view transactions from other days or other mints\n * - Can derive hourly and finer-grained keys\n *\n * ## Use Cases\n * - Daily settlement verification\n * - Incident investigation for specific dates\n * - Daily trading activity review and reporting\n *\n * @example\n * ```typescript\n * import { DailyViewingKey, assertDailyViewingKey } from \"./cryptography\";\n *\n * const dayKey = deriveDailyViewingKey(monthlyKey, 15); // 15th of month\n * assertDailyViewingKey(dayKey);\n *\n * // Share for investigating a specific date\n * shareViewingKey(investigator, dayKey);\n * ```\n *\n * @see {@link assertDailyViewingKey}\n * @see {@link MonthlyViewingKey}\n * @public\n */\nexport type DailyViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"DailyViewingKey\">;\n\n/**\n * Hourly viewing key for time-scoped transaction visibility.\n *\n * An hourly viewing key grants read-only visibility into all transactions\n * involving a specific token within a specific hour. This enables very\n * fine-grained access control for high-frequency trading or forensic scenarios.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(DailyViewingKey, hour)` where hour is 0–23\n * - Can view all transactions in the specified hour for the specified mint\n * - Cannot view transactions from other hours or other mints\n * - Can derive minute and second-level keys\n *\n * ## Use Cases\n * - High-frequency trading audit windows\n * - Incident response for specific time intervals\n * - Market manipulation investigation with hour-level isolation\n *\n * @example\n * ```typescript\n * import { HourlyViewingKey, assertHourlyViewingKey } from \"./cryptography\";\n *\n * const hourKey = deriveHourlyViewingKey(dailyKey, 14); // 2 PM\n * assertHourlyViewingKey(hourKey);\n * ```\n *\n * @see {@link assertHourlyViewingKey}\n * @see {@link DailyViewingKey}\n * @public\n */\nexport type HourlyViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"HourlyViewingKey\">;\n\n/**\n * Minute viewing key for time-scoped transaction visibility.\n *\n * A minute viewing key grants read-only visibility into all transactions\n * within a specific minute. This provides extremely fine-grained access control\n * for forensic analysis or real-time monitoring.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(HourlyViewingKey, minute)` where minute is 0–59\n * - Can view all transactions in the specified minute for the specified mint\n * - Cannot view transactions from other minutes or other mints\n * - Can derive second-level keys for ultimate precision\n *\n * ## Use Cases\n * - Real-time fraud detection in narrow windows\n * - Precise transaction timing verification\n * - Forensic timeline reconstruction at minute granularity\n *\n * @example\n * ```typescript\n * import { MinuteViewingKey, assertMinuteViewingKey } from \"./cryptography\";\n *\n * const minuteKey = deriveMinuteViewingKey(hourlyKey, 30); // :30 minute\n * assertMinuteViewingKey(minuteKey);\n * ```\n *\n * @see {@link assertMinuteViewingKey}\n * @see {@link HourlyViewingKey}\n * @public\n */\nexport type MinuteViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"MinuteViewingKey\">;\n\n/**\n * Second viewing key — the finest granularity of the viewing key hierarchy.\n *\n * A second viewing key grants read-only visibility into all transactions\n * within a specific second. This is the leaf level of the time-scoped\n * viewing key tree and is primarily used for forensic analysis of\n * individual transactions.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(MinuteViewingKey, second)` where second is 0–59\n * - Can view all transactions in the specified second for the specified mint\n * - Cannot view transactions from other seconds or other mints\n * - Finest time granularity; no further time-scoped sub-keys exist\n *\n * ## Use Cases\n * - Precise transaction attribution and sequencing\n * - MEV (Maximal Extractable Value) and front-running detection\n * - Block-level transaction ordering analysis\n *\n * @example\n * ```typescript\n * import { SecondViewingKey, assertSecondViewingKey } from \"./cryptography\";\n *\n * const secondKey = deriveSecondViewingKey(minuteKey, 45); // :45 second\n * assertSecondViewingKey(secondKey);\n * ```\n *\n * @see {@link assertSecondViewingKey}\n * @see {@link MinuteViewingKey}\n * @public\n */\nexport type SecondViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"SecondViewingKey\">;\n\n/**\n * Mint viewing key for token-specific transaction visibility.\n *\n * A mint viewing key grants read-only visibility into all transactions involving\n * a specific SPL token mint address. It is derived directly from the master\n * viewing key and the mint's address split into 128-bit halves.\n *\n * @remarks\n * - Element of the BN254 scalar field: range [0, BN254_FIELD_PRIME)\n * - Derivation: `Poseidon(MVK, mintAddressLow, mintAddressHigh)` where\n * `mintAddressLow` = bytes 0–15 of the mint address (LE U128) and\n * `mintAddressHigh` = bytes 16–31 (LE U128)\n * - Grants visibility into all transactions for the specified mint across all time\n * - Cannot view transactions involving other mints\n * - Serves as the base for all time-scoped viewing keys for this mint\n *\n * ## Use Cases\n * - Token-specific compliance reporting (e.g., USDC activity only)\n * - Asset-specific audit trails for regulated token issuers\n * - Selective disclosure for specific token positions\n *\n * @example\n * ```typescript\n * import { MintViewingKey, assertMintViewingKey } from \"./cryptography\";\n *\n * const mintKey = deriveMintViewingKey(masterViewingKey, usdcMint);\n * assertMintViewingKey(mintKey);\n *\n * // Share with auditor for USDC-specific review (no access to other tokens)\n * shareViewingKey(auditor, mintKey);\n * ```\n *\n * @see {@link assertMintViewingKey}\n * @see {@link MasterViewingKey}\n * @public\n */\nexport type MintViewingKey = SubSubSubBrandedType<Bn254FieldElement, \"MintViewingKey\">;\n\n/* =============================================================================\n * X25519 KEY EXCHANGE ASSERTIONS\n * ============================================================================= */\n\n/**\n * Asserts that a value is a valid X25519 byte array (exactly 32 bytes).\n *\n * X25519 operations (public keys, private keys, shared secrets) all operate on\n * 32-byte values. This assertion validates the runtime type (`Uint8Array`) and\n * the required byte length.\n *\n * @remarks\n * This is the base assertion for all X25519 types. The more specific assertions\n * `assertX25519PrivateKey` and `assertX25519PublicKey` delegate to this function\n * for length and type checks.\n *\n * @param value - The Uint8Array to assert as X25519Bytes\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array\n * @throws {CryptographyAssertionError} If the value is not exactly 32 bytes\n *\n * @example\n * ```typescript\n * const rawBytes = new Uint8Array(32);\n * assertX25519Bytes(rawBytes);\n * // rawBytes is now typed as X25519Bytes\n *\n * assertX25519Bytes(new Uint8Array(31)); // Throws: wrong length\n * ```\n *\n * @see {@link X25519Bytes}\n * @public\n */\nexport function assertX25519Bytes(value: Uint8Array): asserts value is X25519Bytes {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"X25519Bytes\",\n });\n }\n if (value.length !== X25519_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(X25519_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"X25519Bytes\",\n constraint: `length === ${String(X25519_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid X25519 private key (exactly 32 bytes).\n *\n * A private key must be exactly 32 bytes. This assertion validates both\n * the runtime type and the length of the input.\n *\n * @remarks\n * **Security Warning**: Private keys must be kept secret. Never log, transmit,\n * serialize to persistent storage unencrypted, or expose private keys in\n * error messages. Use secure in-memory storage and zero the buffer after use\n * where the runtime permits.\n *\n * This assertion does NOT verify that the private key is a valid Curve25519\n * scalar (clamping is applied by the X25519 algorithm itself during use).\n *\n * @param value - The Uint8Array to assert as an X25519PrivateKey\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array\n * @throws {CryptographyAssertionError} If the value is not exactly 32 bytes\n *\n * @example\n * ```typescript\n * // Derive a private key from master seed (preferred in Umbra)\n * const rawKey = kmac256DerivedBytes;\n * assertX25519PrivateKey(rawKey);\n * // rawKey is now typed as X25519PrivateKey\n * ```\n *\n * @see {@link X25519PrivateKey}\n * @public\n */\nexport function assertX25519PrivateKey(value: Uint8Array): asserts value is X25519PrivateKey {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"X25519PrivateKey\",\n });\n }\n if (value.length !== X25519_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(X25519_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"X25519PrivateKey\",\n constraint: `length === ${String(X25519_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid X25519 public key (exactly 32 bytes).\n *\n * A public key must be exactly 32 bytes. This assertion validates both\n * the runtime type and the length of the input.\n *\n * @remarks\n * This assertion does NOT perform curve-point validity checks (checking that\n * the point lies on Curve25519). The X25519 algorithm itself handles invalid\n * points by producing the all-zero output, which callers should check for.\n *\n * @param value - The Uint8Array to assert as an X25519PublicKey\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array\n * @throws {CryptographyAssertionError} If the value is not exactly 32 bytes\n *\n * @example\n * ```typescript\n * // Receive and validate a public key from on-chain storage\n * const theirKey = fetchPublicKeyFromChain();\n * assertX25519PublicKey(theirKey);\n * // theirKey is now typed as X25519PublicKey\n *\n * // Use in key exchange\n * const sharedSecret = x25519(myPrivateKey, theirKey);\n * ```\n *\n * @see {@link X25519PublicKey}\n * @public\n */\nexport function assertX25519PublicKey(value: Uint8Array): asserts value is X25519PublicKey {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"X25519PublicKey\",\n });\n }\n if (value.length !== X25519_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(X25519_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"X25519PublicKey\",\n constraint: `length === ${String(X25519_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid X25519 shared secret (exactly 32 bytes).\n *\n * A shared secret is the raw 32-byte output of an X25519 ECDH operation.\n * This assertion validates the runtime type and the required byte length.\n *\n * @remarks\n * Shared secrets MUST NOT be used directly as encryption keys. Always derive\n * a symmetric key from the shared secret using a proper KDF such as HKDF\n * (RFC 5869) or KMAC256 before use in an authenticated encryption scheme.\n *\n * @param value - The Uint8Array to assert as a SharedSecret\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array\n * @throws {CryptographyAssertionError} If the value is not exactly 32 bytes\n *\n * @example\n * ```typescript\n * // After performing X25519 key exchange\n * const rawSecret = x25519(privateKey, publicKey);\n * assertSharedSecret(rawSecret);\n * // rawSecret is now typed as SharedSecret\n *\n * // Derive an encryption key (required — do not use rawSecret directly)\n * const encryptionKey = hkdf(rawSecret, salt, info);\n * ```\n *\n * @see {@link SharedSecret}\n * @public\n */\nexport function assertSharedSecret(value: Uint8Array): asserts value is SharedSecret {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"SharedSecret\",\n });\n }\n if (value.length !== X25519_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(X25519_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"SharedSecret\",\n constraint: `length === ${String(X25519_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/* =============================================================================\n * KECCAK HASH ASSERTIONS\n * ============================================================================= */\n\n/**\n * Asserts that a value is a valid Keccak-256 hash output (exactly 32 bytes).\n *\n * @param value - The Uint8Array to assert as a Keccak256Hash (must be exactly 32 bytes)\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array or not exactly 32 bytes\n *\n * @example\n * ```typescript\n * const hashBytes = keccak256(data);\n * assertKeccak256Hash(hashBytes);\n * // hashBytes is now typed as Keccak256Hash\n * ```\n *\n * @see {@link Keccak256Hash}\n * @public\n */\nexport function assertKeccak256Hash(value: Uint8Array): asserts value is Keccak256Hash {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"Keccak256Hash\",\n });\n }\n if (value.length !== U256_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(U256_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"Keccak256Hash\",\n constraint: `length === ${String(U256_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid Keccak-512 hash output (exactly 64 bytes).\n *\n * @param value - The Uint8Array to assert as a Keccak512Hash (must be exactly 64 bytes)\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array or not exactly 64 bytes\n *\n * @example\n * ```typescript\n * const hashBytes = keccak512(data);\n * assertKeccak512Hash(hashBytes);\n * // hashBytes is now typed as Keccak512Hash\n * ```\n *\n * @see {@link Keccak512Hash}\n * @see {@link MasterSeed}\n * @public\n */\nexport function assertKeccak512Hash(value: Uint8Array): asserts value is Keccak512Hash {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"Keccak512Hash\",\n });\n }\n if (value.length !== U512_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(U512_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"Keccak512Hash\",\n constraint: `length === ${String(U512_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/* =============================================================================\n * KEY DERIVATION ASSERTIONS\n * ============================================================================= */\n\n/**\n * Asserts that a value is a valid master seed (exactly 64 bytes).\n *\n * Validates that the value is a 64-byte Uint8Array as produced by Keccak-512\n * hashing. Does not verify the entropy quality of the seed.\n *\n * @param value - The Uint8Array to assert as a MasterSeed (must be exactly 64 bytes)\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array or not exactly 64 bytes\n *\n * @example\n * ```typescript\n * const seedBytes = keccak512(entropy);\n * assertMasterSeed(seedBytes);\n * // seedBytes is now typed as MasterSeed\n * ```\n *\n * @see {@link MasterSeed}\n * @public\n */\nexport function assertMasterSeed(value: Uint8Array): asserts value is MasterSeed {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"MasterSeed\",\n });\n }\n if (value.length !== U512_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(U512_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"MasterSeed\",\n constraint: `length === ${String(U512_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid generation seed (exactly 64 bytes).\n *\n * Validates that the value is a 64-byte Uint8Array as produced by Keccak-512\n * hashing. Structurally identical to MasterSeed but semantically distinct.\n *\n * @param value - The Uint8Array to assert as a GenerationSeed (must be exactly 64 bytes)\n * @throws {CryptographyAssertionError} If the value is not a Uint8Array or not exactly 64 bytes\n *\n * @example\n * ```typescript\n * const seedBytes = keccak512(protocolData);\n * assertGenerationSeed(seedBytes);\n * // seedBytes is now typed as GenerationSeed\n * ```\n *\n * @see {@link GenerationSeed}\n * @public\n */\nexport function assertGenerationSeed(value: Uint8Array): asserts value is GenerationSeed {\n if (!(value instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`Expected Uint8Array, got ${typeof value}`, {\n value,\n expectedType: \"GenerationSeed\",\n });\n }\n if (value.length !== U512_BYTE_LENGTH) {\n throw new CryptographyAssertionError(\n `Expected ${String(U512_BYTE_LENGTH)} bytes, got ${String(value.length)}`,\n {\n value,\n expectedType: \"GenerationSeed\",\n constraint: `length === ${String(U512_BYTE_LENGTH)}`,\n },\n );\n }\n}\n\n/* =============================================================================\n * VIEWING KEY ASSERTIONS\n * ============================================================================= */\n\n/**\n * Asserts that a value is a valid master viewing key.\n *\n * Validates that the value is a non-negative bigint strictly less than 2^252.\n * The 2^252 bound is tighter than the BN254 field prime to ensure compatibility\n * with ZK circuits that perform sub-252-bit range checks.\n *\n * @param value - The bigint to assert as a MasterViewingKey (must be in range [0, 2^252))\n * @throws {CryptographyAssertionError} If the value is not a bigint\n * @throws {CryptographyAssertionError} If the value is negative\n * @throws {CryptographyAssertionError} If the value is >= 2^252\n *\n * @example\n * ```typescript\n * const mvk = deriveMasterViewingKey(masterSeed);\n * assertMasterViewingKey(mvk);\n * // mvk is now typed as MasterViewingKey\n * ```\n *\n * @see {@link MasterViewingKey}\n * @see {@link MASTER_VIEWING_KEY_MAX}\n * @public\n */\nexport function assertMasterViewingKey(value: bigint): asserts value is MasterViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"MasterViewingKey\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"MasterViewingKey\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= MASTER_VIEWING_KEY_MAX) {\n throw new CryptographyAssertionError(`Value exceeds 2^252`, {\n value,\n expectedType: \"MasterViewingKey\",\n constraint: `value < ${String(MASTER_VIEWING_KEY_MAX)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid yearly viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link YearlyViewingKey}\n * @public\n */\nexport function assertYearlyViewingKey(value: bigint): asserts value is YearlyViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"YearlyViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"YearlyViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid monthly viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link MonthlyViewingKey}\n * @public\n */\nexport function assertMonthlyViewingKey(value: bigint): asserts value is MonthlyViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"MonthlyViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"MonthlyViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid daily viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link DailyViewingKey}\n * @public\n */\nexport function assertDailyViewingKey(value: bigint): asserts value is DailyViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"DailyViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"DailyViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid hourly viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link HourlyViewingKey}\n * @public\n */\nexport function assertHourlyViewingKey(value: bigint): asserts value is HourlyViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"HourlyViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"HourlyViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid minute viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link MinuteViewingKey}\n * @public\n */\nexport function assertMinuteViewingKey(value: bigint): asserts value is MinuteViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"MinuteViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"MinuteViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid second viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link SecondViewingKey}\n * @public\n */\nexport function assertSecondViewingKey(value: bigint): asserts value is SecondViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"SecondViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"SecondViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Asserts that a value is a valid mint viewing key.\n *\n * Validates that the value is a non-negative bigint within the BN254 field prime.\n *\n * @param value - The bigint to assert (must be in range [0, BN254_FIELD_PRIME))\n * @throws {CryptographyAssertionError} If not a bigint or out of range\n *\n * @see {@link MintViewingKey}\n * @public\n */\nexport function assertMintViewingKey(value: bigint): asserts value is MintViewingKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"MintViewingKey\",\n });\n }\n if (value < 0n || value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value out of BN254 field range`, {\n value,\n expectedType: \"MintViewingKey\",\n constraint: `0 <= value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/* =============================================================================\n * X25519 KEYPAIR ASSERTION\n * ============================================================================= */\n\n/**\n * Asserts that a value is a valid X25519Keypair.\n *\n * Validates that the value is a non-null object with valid `privateKey` and\n * `publicKey` fields, each of which must pass their respective assertions.\n *\n * @param value - The object to assert as an X25519Keypair\n * @throws {CryptographyAssertionError} If the value is not a non-null object\n * @throws {CryptographyAssertionError} If `privateKey` or `publicKey` are missing\n * @throws {CryptographyAssertionError} If either key fails its byte-level assertion\n *\n * @example\n * ```typescript\n * const keypair = { privateKey: privKey, publicKey: pubKey };\n * assertX25519Keypair(keypair);\n * // keypair is now typed as X25519Keypair\n * ```\n *\n * @see {@link X25519Keypair}\n * @see {@link assertX25519PrivateKey}\n * @see {@link assertX25519PublicKey}\n * @public\n */\nexport function assertX25519Keypair(value: {\n privateKey: Uint8Array;\n publicKey: Uint8Array;\n}): asserts value is X25519Keypair {\n \n if (typeof value !== \"object\" || value === null) {\n throw new CryptographyAssertionError(`Expected object, got ${typeof value}`, {\n value,\n expectedType: \"X25519Keypair\",\n });\n }\n\n if (!(\"privateKey\" in value) || !(\"publicKey\" in value)) {\n throw new CryptographyAssertionError(\n `Expected object with privateKey and publicKey properties`,\n {\n value,\n expectedType: \"X25519Keypair\",\n constraint: \"must have privateKey and publicKey\",\n },\n );\n }\n\n // Validate private key\n assertX25519PrivateKey(value.privateKey);\n\n // Validate public key\n assertX25519PublicKey(value.publicKey);\n}\n\n/**\n * Asserts that a value is a valid Ed25519Keypair.\n *\n * Validates that the value is a non-null object with `seed` (exactly 32 bytes)\n * and `publicKey` (exactly 32 bytes) properties.\n *\n * @param value - The object to assert as an Ed25519Keypair (must have seed and publicKey properties)\n * @throws {CryptographyAssertionError} If the value is not a non-null object\n * @throws {CryptographyAssertionError} If `seed` or `publicKey` are missing\n * @throws {CryptographyAssertionError} If `seed` or `publicKey` are not Uint8Array(32)\n *\n * @example\n * ```typescript\n * const keypair = { seed, publicKey };\n * assertEd25519Keypair(keypair);\n * // keypair is now typed as Ed25519Keypair\n * ```\n *\n * @see {@link Ed25519Keypair}\n * @public\n */\nexport function assertEd25519Keypair(value: {\n seed: Uint8Array;\n publicKey: Uint8Array;\n}): asserts value is Ed25519Keypair {\n \n if (typeof value !== \"object\" || value === null) {\n throw new CryptographyAssertionError(`Expected object, got ${typeof value}`, {\n value,\n expectedType: \"Ed25519Keypair\",\n });\n }\n\n if (!(\"seed\" in value) || !(\"publicKey\" in value)) {\n throw new CryptographyAssertionError(`Expected object with seed and publicKey properties`, {\n value,\n expectedType: \"Ed25519Keypair\",\n constraint: \"must have seed and publicKey\",\n });\n }\n\n // Validate seed (32 bytes)\n if (!(value.seed instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`seed must be Uint8Array`, {\n value: value.seed,\n expectedType: \"Ed25519Keypair\",\n constraint: \"seed: Uint8Array(32)\",\n });\n }\n if (value.seed.length !== 32) {\n throw new CryptographyAssertionError(\n `seed must be exactly 32 bytes, got ${String(value.seed.length)}`,\n {\n value: value.seed,\n expectedType: \"Ed25519Keypair\",\n constraint: \"seed.length === 32\",\n },\n );\n }\n\n // Validate public key (32 bytes)\n if (!(value.publicKey instanceof Uint8Array)) {\n throw new CryptographyAssertionError(`publicKey must be Uint8Array`, {\n value: value.publicKey,\n expectedType: \"Ed25519Keypair\",\n constraint: \"publicKey: Uint8Array(32)\",\n });\n }\n if (value.publicKey.length !== 32) {\n throw new CryptographyAssertionError(\n `publicKey must be exactly 32 bytes, got ${String(value.publicKey.length)}`,\n {\n value: value.publicKey,\n expectedType: \"Ed25519Keypair\",\n constraint: \"publicKey.length === 32\",\n },\n );\n }\n}\n\n/**\n * Asserts that a value is a valid Curve25519KeypairResult.\n *\n * Validates that the value is a non-null object with valid `ed25519Keypair`\n * and `x25519Keypair` fields, each of which must pass their respective assertions.\n *\n * @param value - The object to assert as a Curve25519KeypairResult\n * @throws {CryptographyAssertionError} If the value is not a non-null object\n * @throws {CryptographyAssertionError} If either nested keypair is missing or invalid\n *\n * @example\n * ```typescript\n * const result = { ed25519Keypair, x25519Keypair };\n * assertCurve25519KeypairResult(result);\n * // result is now typed as Curve25519KeypairResult\n * ```\n *\n * @see {@link Curve25519KeypairResult}\n * @see {@link assertEd25519Keypair}\n * @see {@link assertX25519Keypair}\n * @public\n */\nexport function assertCurve25519KeypairResult(value: {\n ed25519Keypair: { seed: Uint8Array; publicKey: Uint8Array };\n x25519Keypair: { privateKey: Uint8Array; publicKey: Uint8Array };\n}): asserts value is Curve25519KeypairResult {\n \n if (typeof value !== \"object\" || value === null) {\n throw new CryptographyAssertionError(`Expected object, got ${typeof value}`, {\n value,\n expectedType: \"Curve25519KeypairResult\",\n });\n }\n\n if (!(\"ed25519Keypair\" in value) || !(\"x25519Keypair\" in value)) {\n throw new CryptographyAssertionError(\n `Expected object with ed25519Keypair and x25519Keypair properties`,\n {\n value,\n expectedType: \"Curve25519KeypairResult\",\n constraint: \"must have ed25519Keypair and x25519Keypair\",\n },\n );\n }\n\n // Validate ed25519 keypair\n assertEd25519Keypair(value.ed25519Keypair);\n\n // Validate x25519 keypair\n assertX25519Keypair(value.x25519Keypair);\n}\n","/**\n * Personalization String Builder for KMAC-based Key Derivation\n *\n * This module provides functions for building KMAC personalization strings\n * that include version information to ensure key derivation is versioned and\n * forward-compatible.\n *\n * ## Personalization String Format\n *\n * The personalization string format is:\n * ```\n * protocol_name/protocol_version|algorithm_name/algorithm_version|scheme_name/scheme_version|network\n * ```\n *\n * Example: `umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|mainnet`\n *\n * This ensures that:\n * - Keys derived with different protocol versions produce different outputs\n * - Keys derived with different algorithms produce different outputs\n * - Keys derived with different schemes produce different outputs\n * - Keys derived on different networks produce different outputs\n *\n * @remarks\n * The personalization string is injected into every KMAC256 call as the\n * customization string (S parameter in NIST SP 800-185). This provides\n * cryptographic domain separation at the algorithm level, complementing the\n * domain separators embedded in the KMAC key argument.\n *\n * Changing any version component (protocol, algorithm, scheme) or the network\n * identifier causes ALL derived keys to change, which makes version migrations\n * explicit and prevents cross-version key reuse.\n *\n * @packageDocumentation\n * @public\n *\n * @module crypto/key-derivation/personalization\n */\n\nimport type { IUmbraClient } from \"../../umbra/interfaces\";\n\n/**\n * Builds a personalization string for KMAC-based key derivation.\n *\n * @remarks\n * The personalization string includes all version information from the client\n * to ensure that keys are derived consistently and that version changes produce\n * different keys (ensuring forward compatibility).\n *\n * The string is encoded as UTF-8 bytes and passed to KMAC256 as the\n * customization parameter (S), which is cryptographically mixed into the\n * function output. This guarantees that a key derived for `mainnet` cannot\n * accidentally match a key derived for `devnet`, and that a version bump in\n * any component produces an entirely independent key space.\n *\n * Format: `protocol_name/protocol_version|algorithm_name/algorithm_version|scheme_name/scheme_version|network`\n *\n * @param client - The Umbra client containing version information\n * @returns Personalization string as Uint8Array for use with KMAC\n *\n * @example\n * ```typescript\n * const personalization = buildPersonalizationString(client);\n * // Result: \"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|mainnet\" as Uint8Array\n *\n * const output = kmac256(key, message, { dkLen: 64, personalization });\n * ```\n *\n * @see {@link getPersonalizationStringBuilder} for a curried factory variant\n * @public\n */\nexport function buildPersonalizationString(client: IUmbraClient): Uint8Array {\n // Get version information from client\n const protocol = client.versions.protocol();\n const algorithm = client.versions.algorithm();\n const scheme = client.versions.scheme();\n const network = client.versions.network();\n\n // Build personalization string\n const personalizationString = `${protocol.name}/${protocol.version}|${algorithm.name}/${algorithm.version}|${scheme.name}/${scheme.version}|${network}`;\n\n // Convert to Uint8Array\n return new TextEncoder().encode(personalizationString);\n}\n\n/**\n * Required arguments for creating a personalization string builder.\n *\n * @remarks\n * Carries the Umbra client reference from which protocol, algorithm, scheme,\n * and network version information will be read at build time.\n *\n * @public\n */\nexport interface GetPersonalizationStringBuilderArgs {\n /**\n * The Umbra client containing version information.\n *\n * @remarks\n * The client exposes version accessors via `client.versions`. All four\n * components (protocol, algorithm, scheme, network) are read each time\n * the builder is invoked to support dynamic version changes.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * A zero-argument function that builds and returns the KMAC personalization string.\n *\n * @remarks\n * This function type is used when the builder needs to be passed around as a\n * dependency or captured in a closure. Calling it repeatedly returns the\n * same bytes as long as the underlying client's version information has not\n * changed.\n *\n * @returns Personalization string as Uint8Array encoded from the version-aware format\n *\n * @see {@link getPersonalizationStringBuilder}\n * @public\n */\nexport type PersonalizationStringBuilderFunction = () => Uint8Array;\n\n/**\n * Creates a personalization string builder function bound to a client.\n *\n * @remarks\n * This factory function creates a builder that captures the client's version\n * information. The returned function can be called repeatedly to get the same\n * personalization string (useful when the builder needs to be passed around as a\n * dependency without carrying the full client reference).\n *\n * ## Motivating Pattern\n *\n * Passing a zero-argument builder rather than the full client allows components\n * to build personalization strings without having unrestricted access to the\n * client's master seed or other sensitive operations.\n *\n * @param args - Arguments containing the client\n * @returns A function that builds the personalization string when called\n *\n * @example\n * ```typescript\n * const builder = getPersonalizationStringBuilder({ client });\n * const personalization = builder();\n * // Use personalization with KMAC\n * const output = kmac256(key, message, { dkLen: 64, personalization });\n * ```\n *\n * @see {@link buildPersonalizationString} for the underlying implementation\n * @public\n */\nexport function getPersonalizationStringBuilder(\n args: GetPersonalizationStringBuilderArgs,\n): PersonalizationStringBuilderFunction {\n const { client } = args;\n\n return (): Uint8Array => {\n return buildPersonalizationString(client);\n };\n}\n","/**\n * Poseidon Hash Implementation\n *\n * This module provides Poseidon hashing functionality compatible with Circom's Poseidon\n * implementation. Poseidon is a cryptographic hash function specifically designed for\n * zero-knowledge proof systems, providing efficient and circuit-friendly hashing operations.\n *\n * ## Overview\n *\n * Poseidon is an algebraic hash function optimized for use in SNARK and STARK circuits.\n * It operates natively on field elements, making it significantly more efficient than\n * traditional hash functions (like SHA-256) when used inside zero-knowledge proofs.\n *\n * The Poseidon permutation operates over the BN254 (alt_bn128) scalar field with\n * prime `p = 21888242871839275222246405745257275088548364400416034343698204186575808495617`.\n * Each round applies an S-box layer (`x^5 mod p`), an MDS matrix multiplication for\n * diffusion, and addition of round constants for algebraic protection. The permutation\n * alternates between full rounds (S-box applied to every state element) and partial\n * rounds (S-box applied only to the first state element) to achieve both security and\n * performance targets.\n *\n * ## Key Features\n *\n * - **Circom Compatible**: Produces identical outputs to Circom's Poseidon implementation\n * - **1 to 12 Inputs**: Supports state sizes t from 2 to 13 (1 to 12 data inputs)\n * - **BN254 Field Arithmetic**: Uses the BN254 (alt_bn128) scalar field for ZK compatibility\n * - **No Initialization**: All constants are embedded; ready to use immediately\n * - **Type-Safe**: Uses branded `PoseidonHash` and `Bn254FieldElement` types\n * - **Async Interface**: Returns `Promise` for consistency with other cryptographic APIs\n * - **Caching**: Function instances are cached for optimal performance\n *\n * ## Security Considerations\n *\n * - All inputs must be valid BN254 field elements (less than the field prime)\n * - The hash output is deterministic for the same inputs\n * - Input order matters: `hash([a, b])` ≠ `hash([b, a])`\n * - Security level is approximately 128 bits for all supported arities\n *\n * ## Round Structure\n *\n * The Poseidon permutation for state size `t` uses:\n * - 8 full rounds (4 before and 4 after the partial rounds)\n * - A varying number of partial rounds per arity (56–66, see `ROUNDS_PARTIAL`)\n * - S-box exponent: `x^5 mod p` (the smallest power that is a permutation over BN254)\n *\n * ## Exported API\n *\n * - `getPoseidonHasher()` — Circom-compatible Poseidon hash (1–12 inputs)\n * - `getPoseidonPrf()` — Poseidon-based pseudo-random function\n * - `getPoseidonKeystreamGenerator()` — Counter-mode keystream generation\n * - `getPoseidonEncryptor()` / `getPoseidonDecryptor()` — Symmetric encryption/decryption\n * - `getPoseidonAggregator()` — Two-round aggregation for up to 144 inputs\n * - `getUtxoCommitmentHashGenerator()` — UTXO Merkle tree leaf hash (H2)\n * - `getKeystreamCommitmentGenerator()` — Keystream binding commitments\n * - `MAX_POSEIDON_INPUTS`, `MAX_PRF_SEEDS`, `MAX_AGGREGATOR_INPUTS` — Arity constants\n *\n * ## Usage\n *\n * ```typescript\n * import { getPoseidonHasher, getPoseidonPrf } from '@umbra/sdk';\n * import { assertBn254FieldElement } from '@umbra/sdk/types';\n *\n * // Get the hasher function (cached singleton)\n * const hasher = getPoseidonHasher();\n *\n * // Hash a single value\n * const input1 = 123n;\n * assertBn254FieldElement(input1);\n * const hash1 = await hasher([input1]);\n *\n * // Hash multiple values (up to 12)\n * const inputs = [1n, 2n, 3n];\n * inputs.forEach(assertBn254FieldElement);\n * const hash2 = await hasher(inputs);\n *\n * // Use PRF for key derivation\n * const prf = getPoseidonPrf();\n * const derivedKey = await prf([secretSeed], evaluationPoint);\n * ```\n *\n * @packageDocumentation\n * @module implementation/cryptography/poseidon\n */\n\nimport { poseidon as createPoseidon, splitConstants } from \"@noble/curves/abstract/poseidon.js\";\nimport { bn254_Fr as Fr } from \"@noble/curves/bn254.js\";\nimport {\n assertBn254FieldElement,\n assertPoseidonCiphertext,\n assertPoseidonCounter,\n assertPoseidonKey,\n assertPoseidonKeystream,\n assertPoseidonPlaintext,\n type Bn254FieldElement,\n type PoseidonCiphertext,\n type PoseidonCounter,\n type PoseidonKey,\n type PoseidonKeystream,\n type PoseidonPlaintext,\n} from \"../../types\";\nimport type {\n PoseidonDecryptorFunction as PoseidonDecryptorFunction,\n PoseidonEncryptorFunction as PoseidonEncryptorFunction,\n PoseidonHashFunction as PoseidonHashFunction,\n PoseidonKeystreamGeneratorFunction as PoseidonKeystreamGeneratorFunction,\n PoseidonPrfFunction as PoseidonPrfFunction,\n} from \"./interfaces\";\nimport type {\n ModuloAddFunction as ModuleAddFunction,\n ModuloSubFunction as ModuleSubFunction,\n} from \"../../math/bn254/interfaces\";\nimport {\n getBn254ModularAdder as getBn254ModuleAdder,\n getBn254ModularSubtractor as getBn254ModuleSubtractor,\n} from \"../../math/bn254/field-arithmetic\";\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/**\n * Number of full rounds in the Poseidon permutation.\n *\n * @remarks\n * The Poseidon permutation splits its rounds into full rounds and partial rounds.\n * In a full round every element of the state vector passes through the S-box (`x^5 mod p`),\n * while in a partial round only the first element is cubed. This value is fixed at 8\n * for all supported arities (4 full rounds before and 4 full rounds after the partial rounds),\n * which together with the arity-specific partial round counts achieves approximately\n * 128-bit security over the BN254 scalar field.\n *\n * @see {@link ROUNDS_PARTIAL} for the per-arity partial round counts.\n * @see {@link SBOX_POWER} for the S-box exponent.\n *\n * @example\n * ```typescript\n * // The permutation structure for any arity t is:\n * // ROUNDS_FULL/2 full rounds, then ROUNDS_PARTIAL[t-2] partial rounds,\n * // then ROUNDS_FULL/2 full rounds.\n * const totalRounds = ROUNDS_FULL + ROUNDS_PARTIAL[0]; // 8 + 56 = 64 for t=2\n * ```\n *\n * @internal\n */\nconst ROUNDS_FULL = 8;\n\n/**\n * Number of partial rounds per arity for the Poseidon permutation.\n *\n * @remarks\n * Each entry corresponds to a state size `t` starting from `t=2` (index 0, 1 input)\n * through `t=13` (index 11, 12 inputs). In a partial round only the first state element\n * is passed through the S-box (`x^5 mod p`), while the remaining `t-1` elements bypass\n * the non-linear layer. This hybrid structure dramatically reduces the circuit constraint\n * count for large arities while preserving security.\n *\n * The partial round counts are tuned by the Poseidon authors to achieve the security\n * margin required for 128-bit collision and preimage resistance over the BN254 field.\n *\n * Index mapping:\n * - Index 0 (t=2, 1 input): 56 partial rounds\n * - Index 1 (t=3, 2 inputs): 57 partial rounds\n * - Index 2 (t=4, 3 inputs): 56 partial rounds\n * - Index 3 (t=5, 4 inputs): 60 partial rounds\n * - Index 4 (t=6, 5 inputs): 60 partial rounds\n * - Index 5 (t=7, 6 inputs): 63 partial rounds\n * - Index 6 (t=8, 7 inputs): 64 partial rounds\n * - Index 7 (t=9, 8 inputs): 63 partial rounds\n * - Index 8 (t=10, 9 inputs): 60 partial rounds\n * - Index 9 (t=11, 10 inputs): 66 partial rounds\n * - Index 10 (t=12, 11 inputs): 60 partial rounds\n * - Index 11 (t=13, 12 inputs): 65 partial rounds\n *\n * @see {@link ROUNDS_FULL} for the fixed full round count.\n *\n * @example\n * ```typescript\n * // Retrieve partial rounds for arity 3 (t=4, index 2):\n * const partialRoundsFor3Inputs = ROUNDS_PARTIAL[2]; // 56\n * ```\n *\n * @internal\n */\nconst ROUNDS_PARTIAL = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65];\n\n/**\n * S-box exponent used in the Poseidon permutation.\n *\n * @remarks\n * The Poseidon S-box is the power map `f(x) = x^SBOX_POWER mod p`, applied element-wise\n * to the state in full rounds and to the first element only in partial rounds.\n *\n * The exponent 5 is the smallest integer `e > 1` such that `gcd(e, p-1) = 1` over\n * the BN254 scalar field, making it a bijection (permutation) over the field. This\n * property is required for the Poseidon permutation to be invertible, which is\n * necessary for security proofs.\n *\n * Using `x^5` provides better circuit efficiency than higher powers (e.g., `x^7` used\n * in some other hash functions over different fields) because fewer multiplications\n * are needed: `x^5 = ((x^2)^2) * x` requires only 3 multiplications.\n *\n * @example\n * ```typescript\n * // Field element S-box application:\n * const y = Fr.pow(x, BigInt(SBOX_POWER)); // x^5 mod p\n * ```\n *\n * @internal\n */\nconst SBOX_POWER = 5;\n\n/**\n * MDS (Maximum Distance Separable) matrices for the Poseidon permutation.\n *\n * @remarks\n * This array holds one MDS matrix for each supported state size `t`, indexed from\n * `t=2` (index 0) through `t=13` (index 11). An MDS matrix is a `t × t` matrix\n * over the BN254 scalar field whose every square sub-matrix is invertible. The MDS\n * property guarantees maximum branch number (diffusion), ensuring that the linear\n * layer provides the strongest possible mixing at a given size.\n *\n * In the Poseidon permutation the MDS matrix is applied after every S-box layer\n * (both full and partial rounds). This ensures that each round output depends on\n * all state elements, preventing differential and linear attacks from exploiting\n * sparse intermediate states.\n *\n * ## Provenance\n *\n * All matrices are sourced from circomlibjs v0.1.7 (`poseidon_constants.json`) and\n * are bit-exact with Circom's reference implementation. Any deviation would break\n * compatibility with on-chain Circom circuits.\n *\n * ## Structure\n *\n * `POSEIDON_M[i]` is the MDS matrix for state size `t = i + 2`:\n * - `POSEIDON_M[0]` — 2×2 matrix for t=2 (1 input)\n * - `POSEIDON_M[1]` — 3×3 matrix for t=3 (2 inputs)\n * - `POSEIDON_M[2]` — 4×4 matrix for t=4 (3 inputs)\n * - ...\n * - `POSEIDON_M[11]` — 13×13 matrix for t=13 (12 inputs)\n *\n * Each matrix entry is a BN254 scalar field element represented as a `bigint`.\n *\n * @see {@link POSEIDON_C} for the round constants used alongside these matrices.\n * @see {@link getCircomParameters} for how these matrices are looked up at runtime.\n *\n * @example\n * ```typescript\n * // Retrieve the MDS matrix for t=3 (2 inputs):\n * const mds3x3 = POSEIDON_M[1]; // 3×3 matrix\n * const entry = mds3x3[0][1]; // element at row 0, column 1\n * ```\n *\n * @internal\n */\n// MDS matrices for t=2 to t=13\nconst POSEIDON_M: bigint[][][] = [\n // t=2 (1 input)\n [\n [\n 0x06_6f_6f_85_d6_f6_8a_85_ec_10_34_53_51_a2_3a_3a_af_07_f3_8a_f8_c9_52_a7_bc_ec_a7_0b_d2_af_7a_d5n,\n 0x2b_9d_4b_41_10_c9_ae_99_77_82_e1_50_9b_1d_0f_db_20_a7_c0_2b_bd_8b_ea_73_05_46_2b_9f_81_25_b1_e8n,\n ],\n [\n 0x0c_c5_7c_db_b0_85_07_d6_2b_f6_7a_44_93_cc_26_2f_b6_c0_9d_55_70_13_ff_f1_f5_73_f4_31_22_1f_8f_f9n,\n 0x12_74_e6_49_a3_2e_d3_55_a3_1a_6e_d6_97_24_e1_ad_ad_e8_57_e8_6e_b5_c3_a1_21_bc_d1_47_94_32_03_c8n,\n ],\n ],\n // t=3 (2 inputs)\n [\n [\n 0x10_9b_7f_41_1b_a0_e4_c9_b2_b7_0c_af_5c_36_a7_b1_94_be_7c_11_ad_24_37_8b_fe_db_68_59_2b_a8_11_8bn,\n 0x16_ed_41_e1_3b_b9_c0_c6_6a_e1_19_42_4f_dd_bc_bc_93_14_dc_9f_db_de_ea_55_d6_c6_45_43_dc_49_03_e0n,\n 0x2b_90_bb_a0_0f_ca_05_89_f6_17_e7_dc_bf_e8_2e_0d_f7_06_ab_64_0c_eb_24_7b_79_1a_93_b7_4e_36_73_6dn,\n ],\n [\n 0x29_69_f2_7e_ed_31_a4_80_b9_c3_6c_76_43_79_db_ca_2c_c8_fd_d1_41_5c_3d_de_d6_29_40_bc_de_0b_d7_71n,\n 0x2e_24_19_f9_ec_02_ec_39_4c_98_71_c8_32_96_3d_c1_b8_9d_74_3c_8c_7b_96_40_29_b2_31_16_87_b1_fe_23n,\n 0x10_10_71_f0_03_23_79_b6_97_31_58_76_69_0f_05_3d_14_8d_4e_10_9f_5f_b0_65_c8_aa_cc_55_a0_f8_9b_fan,\n ],\n [\n 0x14_30_21_ec_68_6a_3f_33_0d_5f_9e_65_46_38_06_5c_e6_cd_79_e2_8c_5b_37_53_32_62_44_ee_65_a1_b1_a7n,\n 0x17_6c_c0_29_69_5a_d0_25_82_a7_0e_ff_08_a6_fd_99_d0_57_e1_2e_58_e7_d7_b6_b1_6c_df_ab_c8_ee_29_11n,\n 0x19_a3_fc_0a_56_70_2b_f4_17_ba_7f_ee_38_02_59_3f_a6_44_47_03_07_04_3f_77_73_27_9c_d7_1d_25_d5_e0n,\n ],\n ],\n // t=4 (3 inputs)\n [\n [\n 0x23_6d_13_39_3e_f8_5c_c4_8a_35_1d_d7_86_dd_7a_1d_e5_e3_99_42_29_61_27_fd_87_94_72_23_ae_51_08_adn,\n 0x27_76_86_49_4f_76_44_bb_c4_a9_b1_94_e1_07_24_eb_96_7f_1d_c5_87_18_e5_9e_3c_ed_c8_21_b2_a7_ae_19n,\n 0x02_3d_b6_87_84_e3_f0_cc_0b_85_61_88_26_a9_b3_50_51_29_c1_64_79_97_3b_0a_84_a4_52_9e_66_b0_9c_62n,\n 0x1d_35_9d_24_5f_28_6c_12_d5_0d_66_3b_ae_73_3f_97_8a_f0_8c_db_d6_30_17_c5_7b_3a_75_64_6f_f3_82_c1n,\n ],\n [\n 0x2a_75_a1_71_56_3b_80_7d_b5_25_be_25_96_99_ab_28_fe_9b_c7_fb_1f_70_94_3f_f0_49_bc_97_0e_84_1a_0cn,\n 0x08_3a_bf_f5_e1_00_51_f0_78_e2_82_7d_09_2e_1a_e8_08_b4_dd_3e_15_cc_c3_70_6f_38_ce_41_57_b6_77_0en,\n 0x1a_5a_d7_1b_bb_ec_d8_a9_7d_c4_9c_fd_ba_e3_03_ad_24_d5_c4_74_1e_ab_8b_75_68_a9_ff_82_53_a1_eb_6fn,\n 0x0d_74_5f_d0_0d_d1_67_fb_86_77_21_33_64_0f_02_ce_94_50_04_a7_bc_2c_59_e8_79_0f_72_5c_5d_84_f0_afn,\n ],\n [\n 0x20_70_67_9e_79_87_82_ef_59_2a_52_ca_9c_ef_82_0d_49_7a_d2_ee_cb_aa_7e_42_f3_66_b3_e5_21_c4_ed_42n,\n 0x2e_18_c8_57_0d_20_bf_5d_f8_00_73_9a_53_da_75_d9_06_ec_e3_18_cd_22_4a_b6_b3_a2_be_97_9e_2d_7e_abn,\n 0x0f_a8_6f_0f_27_e4_d3_dd_7f_33_67_ce_86_f6_84_f1_f2_e4_38_6d_3e_5b_9f_38_fa_28_3c_6a_a7_23_b6_08n,\n 0x03_f3_e6_fa_b7_91_f1_66_28_16_8e_4b_14_db_ae_b6_57_03_5e_e3_da_6b_2c_a8_3f_0c_24_91_e0_b4_03_ebn,\n ],\n [\n 0x2f_54_5e_57_82_02_c9_73_24_88_54_0e_41_f7_83_b6_8f_f0_61_3f_d7_93_75_f8_ba_8b_3d_30_95_8e_76_77n,\n 0x23_81_0b_f8_28_77_fc_19_bf_f7_ee_fe_ae_3f_af_4b_b8_10_4c_32_ba_4c_d7_01_59_6a_15_62_3d_01_47_6en,\n 0x01_4f_cd_5e_b0_be_6d_5b_ee_af_c4_94_40_34_cf_32_1c_06_8e_f9_30_f1_0b_e2_20_7e_d5_8d_2a_34_cd_d6n,\n 0x00_c1_5f_c3_a1_d5_73_3d_d8_35_ea_e0_82_3e_37_7f_8b_a4_a8_b6_27_62_7c_c2_bb_66_1c_25_d2_0f_b5_2an,\n ],\n ],\n // t=5 (4 inputs)\n [\n [\n 0x25_1e_7f_df_99_59_10_80_08_0b_0a_f1_33_b9_e4_36_9f_22_e5_7a_ce_3c_d7_f6_4f_c6_fd_bc_f3_8d_7d_a1n,\n 0x25_fb_50_b6_5a_cf_4f_b0_47_cb_d3_b1_c1_7d_97_c7_fe_26_ea_9c_a2_38_d6_e3_48_55_04_86_e9_1c_77_65n,\n 0x29_3d_61_7d_7d_a7_21_02_35_5f_39_eb_f6_2f_91_b0_6d_eb_53_25_f3_67_a4_55_6e_a1_e3_1e_d5_76_78_33n,\n 0x10_4d_02_95_ab_00_c8_5e_96_01_11_ac_25_da_47_43_66_59_9e_57_5a_9b_7e_df_61_45_f1_4b_a6_d3_c1_c4n,\n 0x0a_aa_35_e2_c8_4b_af_11_7d_ea_3e_33_6c_d9_6a_39_79_2b_38_13_95_4f_e9_bf_3e_d5_b9_0f_2f_69_c9_77n,\n ],\n [\n 0x2a_70_b9_f1_d4_bb_cc_db_c0_3e_17_c1_d1_dc_db_02_05_29_03_dc_66_09_ea_69_69_f6_61_b2_eb_74_c8_39n,\n 0x28_11_54_65_1c_92_1e_74_63_15_a9_93_4f_1b_8a_1b_ba_9f_92_ad_8e_f4_b9_79_11_5b_8e_2e_99_1c_cd_7an,\n 0x28_c2_be_2f_82_64_f9_5f_0b_53_c7_32_13_4e_fa_33_8c_cd_8f_db_9e_e2_b4_5f_b8_6a_89_4f_7d_b3_6c_37n,\n 0x21_88_80_41_e6_fe_bd_54_6d_42_7c_89_0b_18_83_bb_9b_62_6d_8c_b4_dc_18_dc_c4_ec_8f_a7_5e_53_0a_13n,\n 0x14_dd_b5_fa_da_01_71_db_80_19_5b_95_92_d8_cf_2b_e8_10_93_0e_3e_a4_57_4a_35_0d_65_e2_cb_ff_49_41n,\n ],\n [\n 0x2f_69_a7_19_8e_1f_bc_c7_de_a4_32_65_30_6a_37_ed_55_b9_1b_ff_65_2a_d6_9a_a4_fa_84_78_97_0d_40_1dn,\n 0x00_1c_1e_dd_62_64_5b_73_ad_93_1a_b8_0e_37_bb_b2_67_ba_31_2b_34_14_0e_71_6d_6a_37_47_59_4d_30_52n,\n 0x15_b9_8c_e9_3e_47_bc_64_ce_2f_2c_96_c6_96_63_c4_39_c4_0c_60_30_49_46_6f_a7_f9_a4_b2_28_bf_c3_2bn,\n 0x12_c7_e2_ad_fa_52_4e_59_58_f6_5b_e2_fb_ac_80_9f_cb_a8_45_8b_28_e4_4d_92_65_05_1d_e3_31_63_cf_9cn,\n 0x2e_fc_2b_90_d6_88_13_48_49_01_82_22_e7_b8_92_2e_af_67_ce_79_81_6e_f4_68_53_1e_c2_de_53_bb_d1_67n,\n ],\n [\n 0x0c_3f_05_0a_6b_f5_af_15_19_81_e5_5e_3e_1a_29_a1_3c_3f_fa_45_50_bd_25_14_f1_af_d6_c5_f7_21_f8_30n,\n 0x0d_ec_54_e6_db_f7_52_05_fa_75_ba_79_92_bd_34_f0_8b_2e_fe_2e_cd_42_4a_73_ed_a7_78_43_20_a1_a3_6en,\n 0x1c_48_2a_25_a7_29_f5_df_20_22_58_15_03_4b_19_60_98_36_4a_11_f4_d9_88_fb_7c_c7_5c_f3_2d_81_36_fan,\n 0x26_25_ce_48_a7_b3_9a_42_52_73_26_24_e4_ab_94_36_08_12_ac_2f_c9_a1_4a_5f_b8_b6_07_ae_9f_d8_51_4an,\n 0x07_f0_17_a7_eb_d5_6d_d0_86_f7_cd_4f_d7_10_c5_09_ed_7e_f8_e3_00_b9_a8_bb_9f_b9_f2_8a_f7_10_25_1fn,\n ],\n [\n 0x2a_20_e3_a4_a0_e5_7d_92_f9_7c_9d_61_86_c6_c3_ea_7c_5e_55_c2_01_46_25_9b_e2_f7_8c_2c_cc_2e_35_95n,\n 0x10_49_f8_21_05_66_b5_1f_aa_fb_1e_9a_5d_63_c0_ee_70_16_73_ae_d8_20_d9_c4_40_3b_01_fe_b7_27_a5_49n,\n 0x02_ec_ac_68_7e_f5_b4_b5_68_00_2b_d9_d1_b9_6b_4b_ef_35_7a_69_e3_e8_6b_55_61_b9_29_9b_82_d6_9c_8en,\n 0x2d_3a_1a_ea_2e_6d_44_46_68_08_f8_8c_9b_a9_03_d3_bd_cb_6b_58_ba_40_44_1e_d4_eb_cf_11_bb_e1_e3_7bn,\n 0x14_07_4b_b1_4c_98_2c_81_c9_ad_17_1e_4f_35_fe_49_b3_9c_4a_7a_72_db_b6_d9_c9_8d_80_3b_fe_d6_5e_64n,\n ],\n ],\n // t=6 (5 inputs)\n [\n [\n 0x12_46_66_f8_05_61_ed_59_16_f2_f0_70_b1_bd_24_8c_6d_53_f4_4d_27_3d_95_6a_0c_87_b9_17_69_2a_4d_18n,\n 0x11_92_4f_02_fd_19_b0_92_55_aa_a1_cf_46_ea_05_18_e3_d7_bf_ee_f4_74_21_60_94_91_01_1d_b0_bd_0b_02n,\n 0x24_7f_a7_f0_22_30_4a_19_94_ff_50_54_56_c2_20_1e_f9_b7_17_36_94_98_d3_ff_ce_44_66_01_ed_9d_f8_45n,\n 0x03_fd_7b_19_ef_2c_86_1f_22_f7_7f_f8_10_f5_4e_27_7b_c9_4e_b7_6c_02_d7_9d_98_6b_e3_dc_df_05_1c_3fn,\n 0x18_bd_41_23_9c_3e_71_57_9a_67_74_43_ec_ff_bd_55_5a_81_ee_ee_a6_93_52_a6_8b_67_c8_56_3c_0c_2a_06n,\n 0x2d_78_c3_a5_d2_8d_e9_ff_35_bf_0a_25_76_35_19_6e_57_30_ca_7f_40_49_32_77_07_8c_d7_5d_a8_b4_eb_dcn,\n ],\n [\n 0x0a_51_4a_5c_22_7f_4c_ec_95_df_a0_29_e8_dd_12_4c_34_89_5a_a4_6b_b2_7c_09_11_f3_78_0d_50_15_54_0an,\n 0x19_2e_16_d1_7d_95_6b_25_7b_85_a6_52_ee_fd_f2_ee_09_58_9e_ac_5b_e8_09_15_77_57_23_d2_cb_1d_a0_6dn,\n 0x29_8c_e0_c1_e3_11_3b_b9_35_c7_05_8e_77_72_b5_33_b1_aa_9d_b0_c0_92_6b_dc_89_17_e5_60_5c_a3_ac_10n,\n 0x09_4c_b4_e8_36_21_af_d2_71_e4_1b_c7_17_27_f0_15_8e_bd_61_22_39_ac_9d_69_8b_17_fe_4b_e0_5b_7f_c8n,\n 0x03_d8_80_39_5b_e9_3c_27_d6_49_af_5f_d1_42_e7_6b_33_91_8c_b8_84_1d_5a_28_17_3b_d5_cf_7d_32_87_91n,\n 0x28_ee_ae_6b_58_66_ad_68_e4_43_bb_af_91_68_0d_b7_d7_e2_b3_03_7e_38_fe_f6_1b_42_cb_cc_ff_ce_ca_81n,\n ],\n [\n 0x27_8b_b4_9a_7b_4e_44_ae_a4_6e_b0_f8_82_cb_69_28_01_a6_e6_0f_dd_5b_5c_23_c6_3c_d6_5c_cc_e4_fe_0an,\n 0x06_3e_de_c1_be_d8_31_f5_06_af_8d_b6_48_d6_fd_ea_14_53_45_88_7e_8b_dc_ff_10_90_35_a1_d9_b6_74_d7n,\n 0x1b_ae_f1_cb_55_09_b5_26_a4_20_61_fb_53_65_7f_99_b3_23_25_00_e8_55_19_2c_be_8c_94_0e_06_8c_47_5fn,\n 0x13_24_56_4a_c7_bd_f9_e2_21_64_e9_85_8d_7f_a8_e3_68_b1_65_ea_ea_3d_af_4e_b6_7e_e5_9c_0d_f2_e5_d4n,\n 0x00_57_61_b8_c6_ae_cb_1a_8c_a4_ea_4d_fc_2c_83_76_06_4a_4a_80_04_ce_ed_a2_10_a5_52_40_56_2d_dc_13n,\n 0x10_c9_e2_83_15_9d_58_cb_4c_b2_e3_5f_de_83_a3_ba_1f_dc_28_00_2e_d9_96_3d_2a_99_f1_86_17_8a_14_8dn,\n ],\n [\n 0x0c_39_9e_9f_67_aa_40_70_7a_20_3f_ee_fb_0b_95_8b_bd_ad_ce_c5_ca_34_90_1d_25_3d_02_6a_24_19_f6_a2n,\n 0x08_3f_0d_f3_f1_a0_35_1d_03_30_ec_3f_f6_02_ca_8c_c3_53_b7_f6_e7_62_c7_10_71_84_cd_7b_42_34_49_f6n,\n 0x1a_67_64_d5_94_3f_c4_a7_20_b4_c0_a1_9f_db_8c_71_19_84_30_72_87_a5_8b_9b_5f_9f_5d_58_21_2c_b2_63n,\n 0x01_1a_63_a2_6f_ea_bf_87_fa_66_bd_e6_6c_c2_5a_92_2c_96_38_2d_76_c6_a7_ff_48_f1_53_7b_ea_ed_68_3an,\n 0x08_ca_7b_64_65_7c_35_48_f3_2b_ef_5b_63_ad_24_28_8a_41_c0_b2_51_09_9a_d2_7f_94_34_30_7e_3e_64_d4n,\n 0x01_99_82_70_47_1e_93_61_95_54_46_b0_cd_b8_be_a9_15_ec_06_75_f1_cd_64_8d_dc_b0_43_03_50_7a_44_89n,\n ],\n [\n 0x1d_6b_3d_5f_6e_a3_69_c2_6f_82_5d_23_62_93_3e_aa_31_ea_35_ec_0a_77_c1_fb_d9_e0_1c_a1_52_3e_44_32n,\n 0x11_9e_f1_88_bb_3d_d0_d3_23_06_97_6c_19_94_1e_86_64_be_68_7e_7a_69_69_2d_a2_7d_a2_15_a6_f0_6d_40n,\n 0x2d_9e_0a_b5_c0_68_93_df_df_d0_34_81_38_1b_a8_6b_6e_62_92_df_56_09_d7_1f_2c_64_b2_d9_a7_9f_80_9en,\n 0x25_f1_66_31_bf_77_06_0f_7e_a3_40_87_c0_25_bf_13_57_84_31_9e_f0_8c_da_2e_31_41_9e_e0_a5_29_e6_58n,\n 0x14_4c_7a_11_da_5a_7c_5d_ab_ae_3f_33_fb_d0_3c_ad_86_d1_8b_c5_94_c7_9a_49_7e_cb_98_94_ed_b5_54_f1n,\n 0x0f_97_11_62_62_77_23_f3_fe_ad_ac_b2_8b_0c_10_4c_b8_f7_4d_e5_08_75_2f_a8_d7_c0_db_2a_f1_3d_e8_een,\n ],\n [\n 0x24_be_51_00_95_43_62_06_dd_0a_bd_0b_0c_bb_95_c8_83_ab_30_4a_a5_25_98_b1_a6_93_06_ec_98_1a_68_8dn,\n 0x21_16_10_e2_ad_4a_37_74_26_fa_df_70_68_b0_c1_a6_c2_99_a1_64_c1_c1_a6_03_ea_ed_94_48_70_d0_b9_b9n,\n 0x15_a6_7d_98_10_41_b1_f6_f0_9f_3f_9e_be_fd_86_4e_77_9d_3a_f0_81_57_78_6a_c0_77_50_5e_50_ec_79_fcn,\n 0x04_93_27_fa_79_d2_8c_12_a2_c8_24_06_94_7f_77_f0_67_75_b0_28_74_68_b3_13_68_77_70_1d_be_7c_95_98n,\n 0x23_09_40_dc_c5_23_26_58_ff_9c_29_69_7a_3f_d4_16_d1_70_e8_c9_98_f1_aa_85_de_a0_c4_2d_79_f9_51_aan,\n 0x1b_12_1c_04_9c_d1_15_9e_28_90_07_e0_c9_da_99_95_cc_4b_ab_4c_26_fb_88_8e_c3_97_2a_8a_2e_65_69_64n,\n ],\n ],\n // t=7 (6 inputs)\n [\n [\n 0x2a_bd_9e_16_b7_b4_82_89_aa_19_cd_fe_c7_26_fa_3f_a1_5c_c1_62_51_02_ae_51_1b_ca_45_f3_9d_33_7e_9dn,\n 0x1b_4b_c5_88_5d_1c_fc_8e_b6_91_87_53_00_db_5a_0c_73_62_ae_38_18_98_ac_af_8b_63_ca_d0_4e_cb_36_c6n,\n 0x08_a7_2f_bb_55_dd_e3_e9_3c_58_18_57_1a_42_4a_54_95_36_95_02_9e_ed_bc_f9_1e_ae_b0_12_75_1c_7f_83n,\n 0x0f_95_35_9a_1f_68_45_d4_92_18_92_f8_3e_50_0b_bb_1b_3d_37_63_d8_fc_76_24_00_af_03_9b_0a_bb_83_f5n,\n 0x16_f0_17_51_ce_98_53_28_af_de_34_d8_16_19_de_fb_43_e6_c7_b5_da_df_52_d0_f8_24_72_fb_ce_77_70_d9n,\n 0x1c_39_16_26_32_84_57_fc_af_a6_29_f3_e6_d3_3e_25_55_e8_d8_85_e3_c0_7c_ec_c8_af_1f_4d_56_59_64_17n,\n 0x00_97_0f_67_1b_9b_a3_5e_3e_3c_64_2d_1e_0b_80_32_02_3e_d5_ba_c9_1c_2c_10_56_f0_39_65_a4_2c_52_97n,\n ],\n [\n 0x1f_e9_fe_b5_c7_f7_c7_a4_26_bf_f0_32_cd_6a_31_58_27_8b_6c_6b_2c_c5_7a_87_12_13_fc_af_d6_42_79_89n,\n 0x0c_c7_ea_bb_15_4a_a7_95_5e_ac_47_a1_9f_64_37_a2_b8_de_c0_fe_9e_56_86_15_0f_f6_e8_8b_1a_7b_4b_c4n,\n 0x03_93_ef_d9_63_99_aa_07_26_ef_9a_f7_9b_e8_b6_c7_15_e4_29_90_6c_a0_d1_50_76_b5_a9_90_fe_a7_5a_cen,\n 0x08_71_23_38_35_b7_52_ea_03_0c_f8_a4_f4_37_71_29_6e_eb_33_f6_97_d1_b0_82_5d_b4_7d_39_ac_9e_59_55n,\n 0x1a_02_79_8f_04_7a_51_ba_ae_a3_4f_cf_b2_6c_a6_af_e9_6a_5f_ad_1d_2d_b4_27_04_97_b6_e6_50_48_91_cbn,\n 0x05_56_65_d7_6d_f3_cd_0f_cb_71_3c_23_4e_a7_9d_06_a3_1d_6e_3e_4c_3b_cc_65_7d_ba_4c_66_4d_5a_0d_a0n,\n 0x26_ee_96_91_a6_38_ed_c7_c9_18_87_e3_02_fc_55_e8_e7_75_82_86_a4_48_45_ad_88_fd_7d_e3_bb_10_52_c1n,\n ],\n [\n 0x00_cd_b2_db_9e_4f_9d_73_2d_21_7c_5e_31_14_82_11_65_d4_9e_5a_2d_41_55_6b_cd_53_d0_c4_d4_33_22_4cn,\n 0x01_2f_3b_b2_9c_97_27_93_18_21_23_f5_c4_93_06_e1_6a_3a_78_7c_4b_cd_9c_79_8a_13_1b_70_85_6d_1c_ben,\n 0x0b_ba_90_06_40_4c_5e_de_82_b5_27_67_7d_af_44_4e_d4_3f_d1_e0_db_dc_55_28_dd_2c_d1_f1_7a_d7_34_81n,\n 0x17_e4_e7_3b_f7_01_f8_8d_21_9a_cf_1c_a6_39_0c_c1_e1_7c_9f_84_b1_71_38_20_83_7c_a0_70_be_84_a2_dcn,\n 0x23_4b_8a_07_7e_f5_2b_53_a3_43_b8_da_5b_20_cc_35_8a_d6_07_60_dd_60_27_6d_48_50_15_f7_3d_53_d2_07n,\n 0x2d_c3_fd_77_39_4b_7b_5a_c1_cb_d1_b4_6e_6d_ed_5b_83_5d_72_17_a4_c5_0a_48_7a_e9_a3_5a_7f_d4_5d_9dn,\n 0x16_68_47_76_40_fa_b1_4c_72_b1_c1_6f_f0_19_2e_48_cf_88_2f_12_27_6b_d1_2f_97_f8_2c_6e_e2_e6_1e_48n,\n ],\n [\n 0x09_66_42_16_ca_56_5c_1a_44_fc_2b_98_34_7e_a8_b3_69_04_b3_87_7f_21_59_dc_c9_99_89_5a_de_b4_d7_0bn,\n 0x11_1f_d8_df_ce_2b_d3_b7_ba_0c_fa_93_e2_0f_b6_85_ab_f7_6d_77_30_58_57_b8_df_30_91_4e_48_49_ec_efn,\n 0x19_f5_3c_0a_59_2b_3e_a9_34_97_a5_11_e5_6f_66_75_35_98_26_5b_1a_b6_77_4d_a4_8e_ec_04_e4_d9_34_26n,\n 0x19_b6_83_c3_9d_3b_00_2f_c3_52_3b_7b_ee_5a_60_14_8b_1d_bd_f1_8d_d1_c3_18_e6_a5_41_e8_cf_66_a1_74n,\n 0x25_47_11_3a_81_87_79_f1_3e_34_48_71_9c_7e_f1_00_b8_03_6b_b3_e8_82_dd_5e_64_56_c3_53_11_c1_bd_5bn,\n 0x00_cf_14_8f_80_45_cd_be_7b_b1_01_3f_72_eb_d4_12_6a_3e_35_cb_a9_a9_70_44_1b_a8_d5_bc_76_94_3b_0bn,\n 0x30_08_42_1e_ed_76_7a_09_33_22_a0_9c_37_33_97_3a_03_81_68_cb_28_cd_2e_1f_70_90_76_c0_0b_86_95_99n,\n ],\n [\n 0x14_63_f5_1d_4a_4c_b1_eb_a1_6d_bc_11_55_66_aa_48_fe_77_b4_3c_24_4c_99_88_a3_c6_58_d2_f5_64_93_d6n,\n 0x16_af_d8_f4_c3_90_38_b8_00_6a_59_d2_92_ae_a8_47_31_c0_f8_38_32_a6_1b_82_25_0e_d9_01_18_e8_fe_c2n,\n 0x22_96_36_1f_3b_f1_54_ef_ba_b9_96_92_19_36_e9_b1_df_f8_35_27_11_f9_58_63_81_72_05_53_33_e0_75_79n,\n 0x1c_31_60_eb_ae_b1_0f_80_9f_69_84_3c_f8_d5_bb_ac_a1_98_d1_f8_e3_43_9b_e2_9b_eb_92_d9_09_ec_89_1cn,\n 0x09_4c_66_bd_cf_f5_43_82_cd_92_13_ab_e4_33_12_ed_b5_b4_d4_14_c6_e0_9a_cc_a2_49_12_a7_63_54_04_c6n,\n 0x2e_88_3b_d4_08_c4_c8_26_d0_04_ff_77_7d_7c_09_38_43_4a_b5_bb_84_f3_42_0e_5d_94_b8_53_b1_74_6f_89n,\n 0x22_8a_f6_d4_25_e9_1a_78_3d_d1_8f_d8_9a_6b_38_bd_a0_53_f2_f2_3c_09_4b_87_5f_27_cb_3a_bb_a2_03_0bn,\n ],\n [\n 0x21_4e_41_78_8b_d2_b9_90_34_7c_7f_2a_8f_47_61_2d_4d_fc_eb_1a_1e_6d_a3_81_65_87_3d_f6_6c_e5_1f_59n,\n 0x03_fb_a8_2d_3f_78_36_20_87_3d_a9_4e_9f_4e_84_c8_b5_29_d7_6f_54_e4_b5_d7_d4_80_52_72_af_9b_97_75n,\n 0x06_67_82_fe_3e_86_9d_e2_ce_bd_7e_bb_f6_0f_b4_35_78_53_29_df_b1_2a_d9_bd_1b_4e_46_ed_36_28_95_11n,\n 0x1c_5c_d6_b2_3e_f3_36_be_01_ef_a3_7a_27_e6_b7_aa_e5_d1_64_3f_ce_eb_21_2c_df_f5_15_88_83_5f_b5_37n,\n 0x2f_3b_4b_f0_f1_05_f8_8e_27_24_8a_f0_94_e2_9f_ee_d9_ff_3f_ad_9a_79_4e_15_83_0b_d2_b3_11_53_94_53n,\n 0x2f_40_85_ea_a9_f8_0a_69_b7_39_fc_23_f2_fe_40_57_f6_47_29_b3_11_78_3f_cf_ab_3a_0a_36_fc_1f_f4_32n,\n 0x23_63_60_33_49_e9_4f_52_0f_a1_f9_8f_e2_50_7f_6a_ae_36_19_34_07_8a_a5_9a_16_21_4c_08_81_85_63_8bn,\n ],\n [\n 0x05_48_54_17_24_f6_4e_20_12_82_60_89_9a_be_8f_bc_df_f1_84_a1_95_7a_93_85_fb_71_59_23_bf_0f_c7_9dn,\n 0x21_c5_e2_5a_69_91_36_4e_59_a2_05_e5_b0_1c_81_1d_ee_b0_95_68_0a_72_92_83_69_cf_d2_de_71_b1_4f_98n,\n 0x11_c5_cc_53_f6_33_8c_82_58_17_af_f7_79_2a_2e_fb_ce_8f_ff_17_13_00_d4_14_55_a2_ed_ac_37_66_3d_02n,\n 0x27_a0_94_9f_dc_9f_10_49_5c_4e_e7_21_4a_a0_ed_d2_ad_8e_ef_68_f5_77_da_8b_96_f9_d8_7a_39_50_4b_f9n,\n 0x1c_7f_c6_8f_3f_bd_e4_a2_3c_45_5e_f0_d0_db_ce_0c_e5_56_a0_19_4e_6d_55_2c_04_55_cb_b5_b0_c2_30_e2n,\n 0x11_d0_f5_6f_c0_0e_7d_85_b3_a2_93_9f_d3_39_91_dc_8a_bc_1c_ed_0c_3f_3c_53_0c_bf_b4_50_0d_63_de_9cn,\n 0x01_b2_e9_d2_0d_9b_55_de_b0_48_ca_be_16_36_f0_e9_63_63_be_c8_86_67_9c_bd_91_f3_32_fb_2b_ad_e4_4fn,\n ],\n ],\n // t=8 (7 inputs)\n [\n [\n 0x1a_a4_d4_70_ab_ea_a2_35_70_79_12_9d_11_4b_ab_11_70_94_4f_92_9f_c1_78_21_6a_d8_47_d4_43_0f_3f_27n,\n 0x0e_1f_4e_4d_26_e9_da_5f_8e_e3_de_af_48_b4_93_61_0b_e6_1d_7d_3d_b1_d9_75_4f_ec_a3_08_79_ad_c6_44n,\n 0x0c_29_8c_14_35_6a_5a_7f_22_6c_5a_54_9e_59_18_49_00_38_5a_af_d8_ea_41_d9_74_67_29_96_4e_f7_5f_34n,\n 0x19_e0_70_98_2d_3e_e6_75_e1_62_2c_a2_0d_13_b2_37_5e_52_8b_67_67_06_88_2e_b8_f1_af_e1_c5_04_5e_a1n,\n 0x03_33_e2_92_39_92_e8_9d_ee_57_0a_65_01_25_ed_a7_5a_20_a7_2e_69_e1_08_63_a1_9d_17_b7_be_ea_92_95n,\n 0x19_44_aa_c7_2b_f6_fb_cd_ec_04_36_12_38_c3_c4_d9_51_0d_5f_07_43_9a_1b_6f_f4_1f_65_29_90_be_01_39n,\n 0x27_d8_02_ad_01_9a_42_fd_04_89_2a_d1_67_d9_e8_35_96_a7_30_60_58_90_40_13_19_66_16_75_73_63_59_f3n,\n 0x2b_d0_5a_04_0a_09_87_ac_6b_c0_1f_67_24_2d_54_b7_a2_c5_27_a9_70_ad_28_15_b2_73_47_1e_b9_62_3e_73n,\n ],\n [\n 0x25_4b_81_26_f4_52_43_f1_4d_d8_21_1d_f4_1f_e5_51_6b_35_95_2d_56_c6_26_78_c1_48_e7_3c_db_ad_37_18n,\n 0x20_89_c5_97_fe_aa_4c_a9_a2_02_ed_fb_c8_23_76_31_00_e2_94_c9_e3_30_00_e5_13_b2_a2_16_49_1d_47_4an,\n 0x0d_de_aa_90_6c_b6_5f_3e_9c_9b_ea_63_44_dd_a8_db_90_c2_53_c0_f7_f9_9e_ce_f8_87_86_fe_fe_0e_5c_c3n,\n 0x11_14_c9_12_04_42_75_04_93_d9_99_d4_dd_45_db_d4_f3_b7_5a_b1_83_20_92_35_39_6c_e8_3d_8e_e9_91_6fn,\n 0x2e_8b_35_a8_c2_9e_63_9d_de_8d_fd_49_b4_b3_47_f0_0e_e4_67_86_3f_6e_fc_b3_55_fa_15_34_ef_70_78_3fn,\n 0x20_e6_cc_61_3a_e6_cb_0a_51_84_25_f5_3d_b1_29_8a_7f_88_59_ee_20_aa_d0_83_20_d0_a4_f9_bb_fe_85_12n,\n 0x24_20_dd_12_81_fc_0d_fa_c1_76_a7_52_d1_59_06_b5_5f_13_7b_9c_c3_20_d5_d5_da_a9_df_3f_3d_43_d3_e6n,\n 0x17_bd_4f_27_26_74_8d_99_92_5a_f9_a2_f2_92_9e_23_1c_18_69_42_8c_13_b1_e3_97_bb_00_99_19_17_23_a3n,\n ],\n [\n 0x27_07_12_f1_8b_15_18_fa_fe_09_36_60_f4_92_cd_bc_2f_b7_0f_fa_b3_1d_8a_4d_8a_19_34_be_68_79_23_69n,\n 0x10_7c_fe_fa_1e_86_40_45_a6_68_39_65_26_ed_9f_67_5b_2b_bf_27_2c_a6_35_d8_d3_e8_80_10_99_bb_97_d0n,\n 0x04_b9_6a_29_6a_35_ac_f4_15_92_9b_87_84_b6_bb_a6_4a_63_0d_29_df_f2_8b_62_8f_c9_8e_f7_08_23_0b_57n,\n 0x1f_04_65_a9_c1_33_a1_c6_80_5d_70_5b_e6_b3_ea_99_12_a2_d0_62_c3_4d_be_f9_2d_e4_69_55_b8_3e_7b_d9n,\n 0x27_a2_b7_f5_54_9e_5e_ed_b9_01_05_c0_f8_e2_0f_05_71_ab_7a_f0_80_1f_1b_dd_23_ea_ad_91_f2_22_9a_13n,\n 0x03_1b_0a_fb_7a_b2_f1_d2_41_f8_82_17_8f_7d_cd_ad_48_59_1c_c6_79_05_d6_51_db_ca_fc_e9_4b_14_d0_73n,\n 0x22_e0_32_3b_bb_da_ce_5f_bc_74_a0_b3_de_de_a6_e1_e3_bf_10_e8_4d_fc_71_fe_39_50_89_ac_19_7a_f7_44n,\n 0x1e_ef_36_d6_2f_3f_86_4e_ae_67_c6_33_24_e4_7a_63_44_e3_3a_2d_5b_fb_82_f0_5b_ef_99_00_c5_4e_74_5an,\n ],\n [\n 0x2b_fc_39_81_a2_49_ae_aa_ec_4a_b9_00_17_27_d3_2d_4e_6f_e7_55_98_ee_96_4f_c8_5c_f3_0d_50_df_58_4bn,\n 0x02_16_30_ec_3f_23_6e_d2_19_f7_3c_c6_17_b9_f8_b2_67_db_ee_99_a6_3c_52_85_44_ea_31_b2_7c_de_49_fbn,\n 0x28_89_0a_03_19_9b_72_7f_ed_e5_ed_00_90_ed_69_49_4c_05_3c_97_93_0f_bb_6c_52_35_8b_0d_7d_10_4c_16n,\n 0x1b_80_f3_f4_39_39_6c_2f_46_6b_8e_9b_25_76_5a_01_49_70_45_5a_1b_ea_ed_7a_6f_a3_08_da_c7_5f_b5_82n,\n 0x2a_4b_ba_d2_45_a3_3e_5d_97_01_53_7f_75_14_10_e4_ff_29_7b_8f_1d_1d_90_98_fe_9c_51_8c_26_1a_1b_0an,\n 0x1e_43_1f_2b_1b_7e_da_e4_f8_cb_b5_d3_07_bf_51_31_c3_52_c2_a2_15_a8_70_d7_39_61_7f_4b_01_7c_6d_16n,\n 0x25_56_39_88_9a_25_9e_be_59_f7_4a_8f_df_2e_fc_e7_fd_e1_e3_a6_66_b3_5d_8e_6e_c6_01_d4_d0_b2_26_89n,\n 0x2d_0d_8a_81_4c_fa_16_c2_32_3f_17_4b_e2_dc_be_0c_29_58_29_fc_59_bf_2a_89_f1_3b_4e_ad_0e_b0_56_a8n,\n ],\n [\n 0x16_06_0a_17_e1_b1_1f_85_1c_ea_b2_04_64_57_2b_3d_78_d5_82_ea_05_00_14_84_31_01_48_5f_65_ab_72_3dn,\n 0x27_41_20_3d_66_c5_23_c7_63_9e_a7_13_b2_03_46_11_9c_96_1c_c1_e9_65_9a_45_8a_f7_4c_be_e1_6d_71_bfn,\n 0x22_08_c5_00_48_06_c7_aa_f5_83_14_59_0b_cb_ea_16_16_8f_e6_2e_c0_49_7a_fc_6b_dd_29_38_c1_2d_9a_23n,\n 0x1c_01_f6_db_43_5d_c4_88_5e_ef_9c_df_ed_19_32_50_b9_d3_eb_4c_ee_36_66_74_b0_7b_dd_19_4f_f3_49_fdn,\n 0x1f_0e_36_c2_cf_9a_c2_c4_38_8e_74_96_6d_9e_e7_d1_a0_b3_18_69_16_a0_8c_fa_30_6f_6b_b3_6d_21_e5_48n,\n 0x19_9f_c2_be_60_e4_9e_67_9e_c2_ed_e6_cf_33_45_dc_b3_b9_18_e5_b3_e0_7c_2c_d8_14_13_33_93_4e_17_8fn,\n 0x0a_38_d1_63_b8_a2_fa_30_92_99_9c_17_97_b1_af_90_9b_d9_71_a2_5a_65_6b_ae_fb_db_df_a3_62_8e_67_8fn,\n 0x19_89_49_ee_f2_b2_7c_2b_9c_3d_69_9e_3f_e5_7d_a3_d5_b5_09_c2_b6_70_af_ce_40_0a_ba_1a_aa_9e_d5_1fn,\n ],\n [\n 0x00_e7_32_17_a1_06_c4_02_e4_c6_c1_66_cd_9e_f1_fd_2a_0b_16_ac_1c_b4_36_46_bc_1c_72_6f_83_17_77_70n,\n 0x17_b2_09_2b_0f_63_45_76_b6_54_c6_de_21_a1_a8_d8_12_bd_4c_01_55_9f_ff_83_21_71_29_08_2e_2b_2b_20n,\n 0x2f_24_d6_09_cb_23_72_0e_da_55_fa_e2_9e_c6_f1_99_02_c4_2d_8b_f9_04_fb_65_62_02_73_6d_97_b2_eb_69n,\n 0x2d_f1_83_fe_2b_c9_b8_b7_57_73_fa_96_1c_8d_41_17_e5_82_a8_0b_65_6a_f5_c5_87_63_e7_02_4e_a4_18_9cn,\n 0x15_fe_96_3f_5b_d0_d9_28_78_c1_0a_89_4e_11_80_18_db_82_e6_35_28_af_a4_d4_70_3e_98_81_ed_a1_18_d1n,\n 0x0a_f5_94_dc_40_30_e8_50_97_01_fb_d3_d8_99_5f_73_12_6a_d7_2a_7a_f0_ff_f3_44_ee_e8_2a_31_ce_77_ffn,\n 0x0b_8e_85_7d_9f_b1_d5_54_f3_a4_ec_30_7a_d9_07_de_7a_43_64_38_60_3a_f1_b2_8d_4e_4e_e3_79_96_0c_e7n,\n 0x07_eb_cd_25_a1_0e_56_69_3a_28_15_5f_cd_af_7b_35_19_d9_e0_e0_82_41_e2_17_89_69_6c_b7_6e_e0_62_97n,\n ],\n [\n 0x04_b9_59_ca_07_e7_18_2c_a0_8f_23_51_a0_35_45_bd_7a_b6_76_f7_40_b0_23_31_63_7e_a1_43_4c_85_45_ecn,\n 0x06_8e_8e_63_41_1d_f2_b3_a9_d7_c5_67_f6_64_19_a5_80_d3_ba_15_bb_fd_d1_22_6e_ff_a3_fd_6b_d4_7b_3cn,\n 0x03_44_d0_c7_72_c2_f0_53_66_4a_7b_92_66_b1_9d_48_ae_5d_2a_b3_d1_c1_a1_81_50_75_4a_b4_b8_36_af_d3n,\n 0x07_e0_cc_a1_a3_5e_d1_5f_bd_b6_19_bf_ae_cc_7a_9a_8f_4c_51_29_39_27_56_2a_ce_a8_ea_b8_17_c6_b8_4bn,\n 0x22_2e_df_3e_26_bf_74_b2_f5_03_98_31_89_20_1d_4e_e8_e6_d6_fa_d3_41_d7_ff_50_74_8d_d7_39_74_9d_f6n,\n 0x2d_43_08_b4_82_3b_46_5d_b6_53_d3_68_18_18_12_09_d2_3c_d1_2f_84_4f_72_f7_54_8d_49_e5_50_55_a6_01n,\n 0x2e_8e_67_fc_85_f9_b4_d0_0e_9e_11_97_b3_5b_ed_f5_5a_fd_73_00_a4_c3_70_98_7c_83_c1_5c_f7_3c_ae_3cn,\n 0x22_f1_bc_4e_c1_38_b5_96_12_8c_e5_ee_5b_81_84_96_4c_c2_62_31_8e_17_ad_21_d4_5c_55_24_77_f5_3e_61n,\n ],\n [\n 0x0f_c9_cc_95_22_2f_92_71_5c_f7_47_60_10_22_5e_14_cc_38_f3_14_07_1e_50_e0_f3_bc_9e_c6_74_a8_aa_ccn,\n 0x2f_5a_2a_0c_d0_cb_24_89_6c_94_87_8a_81_06_d5_7e_82_c6_8d_cf_1e_20_91_67_a4_5a_e9_cf_85_70_fe_d2n,\n 0x2c_d1_9b_5c_55_ba_b1_80_9e_52_cc_9f_c1_a0_38_c0_89_35_da_19_cf_c5_63_e7_04_8d_6b_d1_97_0a_0c_8en,\n 0x24_ff_29_86_78_1f_e4_0a_e6_1e_8f_5c_a0_ef_17_c5_a5_ea_7b_dd_bc_12_7d_43_15_47_c1_f6_a8_f5_ce_ddn,\n 0x12_a8_7d_0c_54_19_f4_48_41_98_40_e5_e5_a9_2d_27_6a_ce_00_96_3d_98_7f_2a_10_08_91_3d_98_a2_71_14n,\n 0x0a_f3_ce_ff_2c_86_5a_90_1b_94_06_d5_d9_b2_fc_58_83_3d_64_2f_46_c6_49_3c_a0_30_ef_59_50_61_ec_6cn,\n 0x27_f4_2d_86_84_2f_4d_8a_8c_3a_ff_2f_47_ff_c1_e1_79_f0_97_aa_ec_ce_55_bb_a0_b0_fd_fd_5b_19_0a_a7n,\n 0x2b_6b_3b_c3_40_d4_11_9e_57_83_1e_4a_21_87_01_3f_12_16_ab_3b_63_99_45_dd_92_a9_84_94_32_41_f1_d0n,\n ],\n ],\n // t=9 (8 inputs)\n [\n [\n 0x01_90_f9_22_d9_7c_8a_7d_cf_0a_14_2a_3b_e2_77_49_d1_c6_4b_c2_2f_1c_55_6a_aa_24_92_5d_15_8c_ac_56n,\n 0x1f_8d_3a_9d_2d_31_ab_32_d9_bd_b6_37_51_70_db_ba_89_f6_f8_f7_4d_16_e4_fd_02_f3_67_5d_5f_e2_ba_adn,\n 0x23_0c_69_41_39_41_6f_40_42_2d_71_3e_13_c0_56_c4_5c_3c_63_1b_34_68_54_52_39_70_ea_ea_58_a3_7d_f4n,\n 0x20_63_a4_61_ad_06_31_5a_e5_99_2a_53_a1_4b_b5_98_36_76_24_af_c2_83_3c_cb_b8_3a_f9_2c_a0_f6_a3_34n,\n 0x0c_57_4e_62_8f_84_b6_ba_9d_17_b9_d2_bf_d4_74_7e_06_dd_68_cd_a2_38_3d_64_ce_36_59_27_09_8c_04_6fn,\n 0x27_64_28_d8_80_40_a3_e0_f4_42_42_4d_2f_fc_b8_d1_9b_ec_f3_fb_6c_a0_2c_1b_5c_61_b5_dd_c5_3c_eb_90n,\n 0x24_bd_f6_10_1b_2f_22_31_74_e8_69_d6_ae_cb_e8_ea_5b_04_a1_4c_38_fd_f1_49_43_93_cc_6f_db_3e_42_a5n,\n 0x18_0f_ca_18_41_50_c0_e3_54_b4_b3_a4_a0_75_82_4d_4b_68_e8_27_49_43_f4_dd_8b_0c_64_ec_a2_5d_c6_8en,\n 0x10_72_6d_cf_f8_72_99_c8_53_21_59_97_66_07_63_3f_1b_c2_ad_24_45_3c_1b_ab_26_b7_26_b8_2d_75_6e_bbn,\n ],\n [\n 0x06_07_cd_8f_f9_b8_89_77_3c_9e_b6_8b_8a_43_66_46_9d_47_0c_d7_c6_00_41_06_ca_ae_95_c1_0c_42_44_19n,\n 0x25_91_58_0b_73_e7_b5_d5_f3_4d_9f_dc_0c_f7_fe_3d_e7_f6_a1_8a_25_5e_43_76_fd_e3_eb_31_df_a5_1d_79n,\n 0x09_3c_ff_12_15_0a_ec_b3_46_5c_4c_99_f0_44_be_85_dc_c1_eb_a2_1d_42_91_32_c2_26_0d_d3_d1_2e_a4_41n,\n 0x05_91_16_da_88_a0_81_26_7d_d8_88_20_4f_c6_fb_79_04_6c_32_97_cc_b6_5f_9e_0f_e0_d5_0b_4d_b4_4e_c6n,\n 0x2c_94_84_97_37_35_14_e7_d9_84_6d_ea_9d_df_57_55_33_7d_db_66_10_43_d6_c6_28_ce_cb_8f_55_17_3b_d8n,\n 0x2c_27_29_81_2b_e9_ed_43_2e_75_70_91_33_11_9c_b0_a1_4e_1b_6e_a3_1c_12_79_b7_c3_e4_95_de_af_10_8en,\n 0x22_80_d6_d4_71_8f_9f_06_b5_51_a9_88_40_8f_05_15_07_0e_45_5e_d6_33_77_e9_10_be_08_7f_b7_9b_d1_91n,\n 0x1b_1b_ba_12_55_05_ae_96_75_bc_ec_7c_9a_f5_79_c5_cc_83_53_3c_9d_55_5b_e3_98_af_a0_9c_bf_95_d6_a7n,\n 0x17_01_32_57_71_6d_3c_ba_e2_8e_1c_27_2c_b6_aa_a2_84_41_36_04_9f_fb_ca_05_ca_20_15_23_03_2c_64_d4n,\n ],\n [\n 0x1d_a5_24_cf_f6_0b_64_85_6d_c1_f5_dd_e0_ff_62_da_7b_18_2d_a2_69_08_f6_ba_6e_59_0a_de_bf_91_b4_0cn,\n 0x2b_b4_56_58_93_b6_ff_c5_79_91_39_cd_c1_51_15_87_49_c2_c6_5d_b4_86_72_ab_af_24_c5_b3_81_3c_0e_2bn,\n 0x25_08_1a_00_fc_20_ae_36_6b_1f_e7_ea_6b_09_e6_2a_51_f6_fd_37_7f_60_83_68_c1_2b_a4_e3_bf_89_93_5fn,\n 0x1b_43_71_9c_d1_0b_60_c5_64_7c_09_7d_1f_a8_4b_8f_3c_12_c9_c4_75_ad_e1_3b_38_8c_7e_c4_72_40_be_11n,\n 0x22_dd_20_1e_cb_ab_94_a2_ee_39_37_96_fe_fc_ca_63_aa_54_d9_a1_9a_b9_c7_f2_0a_0b_ed_cf_b9_d1_91_f2n,\n 0x0b_8e_79_83_8c_d3_07_07_99_9c_62_16_21_e7_7e_69_c0_f4_33_d5_43_b7_9c_66_8c_f3_79_b6_62_3b_ac_84n,\n 0x02_08_2d_56_47_65_8e_ae_64_89_36_ce_fb_ed_fa_d2_cd_05_38_57_2a_a6_12_2c_a6_8c_cc_ed_68_f4_32_f4n,\n 0x27_7b_ae_2f_c5_97_a5_36_ad_be_9c_24_bc_8e_e8_17_31_ed_db_57_4c_6a_51_42_c1_c5_a4_8c_51_f8_2e_81n,\n 0x30_35_4c_9f_29_c9_20_c0_5e_99_d7_cc_74_75_10_e7_6f_7f_a6_9a_71_59_4a_29_0e_ae_72_93_c5_a4_84_41n,\n ],\n [\n 0x22_f3_3e_ae_e3_c4_81_e6_58_01_b7_61_a7_28_32_90_8f_06_6f_e2_1d_ab_5f_a5_ec_1d_4c_6e_99_dd_6d_fcn,\n 0x1c_5c_e7_77_76_89_3d_48_14_74_44_b9_f6_d6_6a_4d_a2_9c_95_70_7d_e8_32_75_6c_73_9e_ab_8e_87_65_8fn,\n 0x2a_b8_ed_d2_2f_be_2a_1c_d3_ce_9a_42_12_d0_ef_b2_82_cc_ac_28_af_4d_87_6f_c9_46_20_30_70_c9_20_bdn,\n 0x26_e4_91_54_ac_ca_24_42_4d_5f_8d_29_f6_50_f9_82_4d_e8_2e_b7_88_73_29_cb_c8_3a_56_ae_01_de_e4_a2n,\n 0x0b_ad_d7_7f_51_6d_4f_a3_21_d1_09_9b_c1_e5_19_09_00_15_91_ad_99_19_f0_8c_e9_71_8a_ee_b2_bc_a4_d6n,\n 0x23_67_1c_5d_1f_b5_56_06_3a_64_b5_f6_64_34_09_36_dc_5f_fe_dd_4b_db_aa_2e_96_20_57_04_da_58_64_f5n,\n 0x02_0d_72_02_cc_de_24_90_1d_6c_e2_d1_07_e7_9e_1f_d7_8d_6c_93_98_ba_7a_49_96_f1_16_ad_ef_14_de_f3n,\n 0x1d_86_49_69_95_f1_42_64_e7_a0_54_cc_82_24_90_03_68_77_5c_3e_5a_c6_b5_f5_42_85_f4_a7_3c_21_71_aen,\n 0x13_69_61_74_6d_34_fd_19_60_25_17_3c_4d_79_bf_8b_3d_1d_05_29_1c_58_49_28_d9_72_58_fd_5f_b4_fb_4en,\n ],\n [\n 0x07_5f_84_e9_c7_19_bb_8d_e8_e6_10_83_29_0d_af_f1_9a_aa_43_37_45_4e_5b_a8_04_25_77_87_47_0f_2f_54n,\n 0x17_55_05_39_1c_61_9b_75_53_0f_a8_3e_51_31_84_38_1e_60_3d_84_49_d1_e0_70_01_7e_e8_ec_0a_4d_25_f9n,\n 0x29_c5_ce_97_71_0c_15_78_a0_99_0d_86_2c_f8_81_ba_df_10_e4_f6_bd_e6_29_19_9e_80_3c_d1_c4_26_be_4en,\n 0x2c_af_86_cf_f6_05_21_cc_c5_ec_6e_2e_2c_83_b4_70_7b_b9_0f_94_86_44_bf_aa_8f_80_b0_af_cd_4c_de_10n,\n 0x24_f9_27_93_d6_76_38_b4_ab_fd_f4_8c_e3_b6_2a_b5_d0_e1_b2_50_dc_27_4d_74_6f_2f_7d_05_44_18_5b_62n,\n 0x02_80_9d_fe_24_c7_fd_7c_d4_9b_97_b2_71_50_f4_d3_8a_34_0b_60_f0_73_3f_d4_53_0c_d4_26_9b_48_11_e4n,\n 0x26_70_96_88_15_0e_d0_35_f9_59_68_7e_df_77_47_ee_8e_e9_46_b7_70_17_3d_be_50_39_0a_b8_c0_8c_5f_9cn,\n 0x1e_5a_e4_c2_95_ad_5a_17_e0_0f_97_3f_13_6f_12_30_a6_fb_85_63_76_31_b3_06_d3_70_5f_80_ef_fa_c2_4an,\n 0x23_10_e2_33_7e_4d_53_c1_63_5d_a1_8a_27_22_17_8d_55_af_58_35_91_bc_c3_17_eb_a8_42_df_24_7d_ea_a9n,\n ],\n [\n 0x20_84_be_9a_57_e9_ad_b8_03_03_a8_dc_af_fd_4b_b7_7a_db_68_15_16_8b_36_a1_d3_63_b3_84_25_43_71_35n,\n 0x06_ed_1d_14_de_df_76_3a_30_65_f2_7e_7a_46_d7_fb_f2_0d_2b_4e_86_a0_db_86_69_2a_26_97_67_d5_77_e3n,\n 0x13_24_54_4a_54_17_4c_f7_b3_cd_8f_fc_4b_86_32_0f_23_19_d9_b8_8c_17_79_b8_9b_19_16_01_8f_3f_b9_b7n,\n 0x2e_92_3e_a4_6d_49_22_47_e1_2e_0a_7d_cc_f6_62_0f_5e_ea_66_29_b7_53_2b_3a_f2_46_80_93_98_85_96_33n,\n 0x00_0b_bb_bb_87_ec_cc_91_d5_fb_07_b6_c5_50_88_ca_51_4d_68_dd_d9_3c_f3_1c_8e_d2_d2_cc_7f_23_b2_2bn,\n 0x26_01_0a_3f_52_95_bb_44_81_31_0c_bc_a5_38_4a_47_af_0f_99_05_e4_c7_6b_f5_4b_87_0e_f0_ff_ef_a1_c8n,\n 0x07_51_a4_a4_af_24_62_55_ce_41_2c_4b_b4_7f_a3_4a_51_b8_62_8f_3c_d9_02_07_77_75_c8_fa_48_8e_75_19n,\n 0x28_d2_35_16_19_cc_c6_fb_31_ad_42_06_e2_c0_64_bf_4d_9b_22_92_b2_84_63_e5_3e_47_71_f1_06_70_dd_bfn,\n 0x18_15_e4_f7_b4_0a_70_27_87_86_40_a6_cd_c4_b2_85_43_00_cf_6f_d4_95_3c_2a_c2_c7_76_25_ef_44_ae_04n,\n ],\n [\n 0x0b_30_34_49_f1_bf_4b_92_d2_cb_c2_6a_b3_4b_42_15_b6_dd_7a_f0_10_74_7a_70_5b_2a_6e_33_98_88_29_22n,\n 0x14_0c_dd_a3_3b_b7_a7_9b_2b_aa_85_1d_f5_ad_45_9e_7d_f5_69_b9_f2_c3_da_54_2d_3b_8d_5b_76_b3_56_cen,\n 0x1d_18_b2_5a_ac_98_b2_82_e1_0b_5a_3a_74_ce_5c_aa_16_9a_5c_30_ba_e5_2b_ba_28_0e_d5_17_f3_f8_2f_efn,\n 0x1e_c6_c3_2f_51_3b_8f_30_c7_aa_b4_2e_7d_91_ae_cb_e5_4a_eb_18_8a_84_f8_ca_46_bd_7e_97_41_b9_a3_89n,\n 0x08_9b_ee_b2_1c_34_6c_b9_bc_18_2a_a2_b7_0f_85_3f_1a_22_58_d5_68_93_ce_5a_94_8d_9c_64_5e_cb_c9_bbn,\n 0x27_90_64_3a_66_03_8c_ce_4a_64_88_84_7d_8d_2d_a2_ee_a8_49_61_f8_13_4b_1b_e3_69_47_f8_03_52_7e_67n,\n 0x15_9e_25_e0_03_26_a7_6f_25_c1_14_3a_5b_e6_f5_3f_a5_1c_cf_36_8d_99_74_cc_6d_93_cc_e8_eb_81_d3_7cn,\n 0x24_86_b8_84_37_0d_49_a0_03_fd_04_1e_80_0f_0a_89_8a_b6_1b_5e_94_79_97_46_1e_e3_28_42_41_f3_ba_aan,\n 0x11_1e_fc_13_6a_9d_fe_0e_bc_ff_ae_89_43_e6_79_cc_0f_bf_62_fd_0c_e0_3b_40_9f_ec_d9_32_a8_28_1b_10n,\n ],\n [\n 0x0c_09_9b_c6_82_43_53_72_03_f9_72_54_f0_8d_fb_7e_fc_09_de_8f_96_d7_2f_3b_3e_0a_ad_ed_45_e1_8b_4an,\n 0x03_5e_9e_cc_46_4c_b4_31_cc_92_c3_35_6e_8a_98_54_7e_84_3e_d1_32_4c_1e_97_11_79_fd_1a_d9_fd_51_a0n,\n 0x02_f3_5e_92_1d_ae_87_f1_28_4c_0c_8a_e7_37_db_dc_49_36_cb_bb_03_a0_3a_59_18_55_2f_e5_65_27_0a_8dn,\n 0x23_a7_2c_27_f4_f5_e6_ea_53_25_d5_b3_68_f9_8b_40_69_3b_2d_b1_e8_ca_3d_09_67_39_75_3d_c5_67_83_03n,\n 0x0e_07_b1_d2_2e_ed_54_fd_f9_66_ff_df_bc_eb_b6_53_b5_da_c3_b2_a9_1f_50_27_28_76_ef_b1_71_58_be_2cn,\n 0x05_fa_56_d4_31_d4_bd_09_62_5a_86_d3_62_34_64_dc_90_bd_54_1e_a4_17_48_f2_02_6f_65_02_5e_a9_d2_f2n,\n 0x2d_6f_3e_0e_98_41_3d_5d_6a_11_01_b2_45_c9_e7_11_bb_2e_95_6e_27_a5_87_07_84_fd_54_03_b3_98_67_ccn,\n 0x21_31_76_bc_1a_04_93_9f_e7_d6_bc_30_69_1a_ab_d6_15_2e_d2_4f_30_9b_ff_39_39_a0_d9_1d_54_c6_7a_66n,\n 0x0a_5a_11_48_da_d4_56_2e_ab_18_16_2b_39_14_b6_4d_57_53_e9_61_7a_51_54_e9_3f_7e_43_e6_86_06_87_ean,\n ],\n [\n 0x1c_5f_d9_06_0d_4e_0d_99_92_64_42_9a_50_04_c1_65_57_0b_d1_67_5b_09_f9_77_70_8b_1c_a4_8e_61_63_88n,\n 0x12_9f_06_c9_30_ed_d3_6f_c2_fb_70_44_a6_33_27_51_a2_e3_bc_db_e7_56_d8_83_71_6c_ea_d6_bc_70_63_cbn,\n 0x14_a5_ce_16_03_22_8d_6e_6f_ad_e5_7c_1d_a5_36_65_9b_a4_6d_1b_25_56_6f_12_c2_8d_eb_cb_ed_c5_b4_f4n,\n 0x14_36_17_ef_cd_bb_c0_d2_7a_09_1f_28_03_9e_ba_8a_bb_39_39_2e_2a_46_28_50_b1_f9_cd_85_32_f5_07_5fn,\n 0x28_85_f2_d4_4b_e0_ec_ff_57_d9_2a_43_84_ed_b5_be_bf_b5_85_bb_23_ea_e2_a2_ea_50_80_6b_ab_8b_7b_d7n,\n 0x04_71_5d_b6_d8_6b_51_3d_00_25_89_f1_f9_52_2f_7d_e3_b1_a8_bd_70_2c_16_75_59_ed_e9_7d_a2_c0_07_6dn,\n 0x08_88_87_96_6c_07_9d_2e_68_9a_8d_6d_7b_d9_13_e9_2d_32_69_59_ba_da_59_b9_9a_65_3f_ea_ad_f6_c4_67n,\n 0x12_de_d4_1f_80_47_da_3e_6c_22_bf_ed_3e_c5_bb_52_d0_27_e5_60_04_8d_b4_c0_f9_6c_a9_fa_85_e1_7b_c3n,\n 0x1f_47_c6_7a_43_25_67_2f_17_b8_bd_1d_db_d8_0e_4e_9e_6c_62_41_9a_9c_20_4c_c7_e8_82_18_92_43_1a_aen,\n ],\n ],\n // t=10 (9 inputs)\n [\n [\n 0x0b_1e_79_7e_ee_3f_15_b8_8c_e3_a1_fa_fe_c8_8d_a1_d6_32_9a_c3_c3_47_12_db_57_0d_e8_86_cf_56_90_98n,\n 0x2f_e4_29_db_80_68_e6_1b_82_62_4f_25_76_62_73_cd_9f_e6_36_8f_f0_97_ea_b9_7a_aa_09_be_4c_63_0e_27n,\n 0x2e_75_08_67_94_24_39_08_33_65_d2_1f_e7_60_c7_df_ec_9e_35_93_c6_7d_e1_2a_42_55_c6_b0_16_48_b6_90n,\n 0x23_23_79_85_a9_6b_17_7f_f7_c0_14_86_ab_0d_60_3d_29_99_1b_83_24_ab_d6_b0_7d_bb_96_f5_c2_1b_a1_7fn,\n 0x15_cc_ec_85_7b_25_93_4f_fd_42_9a_f9_2c_91_0d_b3_1d_00_dc_1c_3f_b8_37_45_a3_1d_81_31_ea_5b_aa_85n,\n 0x17_10_2a_d2_d9_80_43_e5_50_9e_76_c3_31_e6_b2_2d_5f_b6_2d_07_47_60_80_6a_a6_75_76_46_60_eb_56_d2n,\n 0x0a_4e_ca_ab_de_9d_1e_a1_1c_81_da_fa_8d_5d_48_69_be_e7_ad_0b_f4_eb_78_39_7b_71_b8_f9_89_cf_98_12n,\n 0x0e_c1_82_16_48_fd_dc_44_8a_15_12_ae_cc_8a_c3_77_14_92_39_81_94_0f_55_42_73_7a_46_8d_4d_88_7c_8fn,\n 0x25_5a_49_3a_a4_be_cd_9d_13_7e_b7_69_41_c4_12_07_84_c1_23_3f_6c_5f_df_5d_65_c0_83_2a_f5_43_e4_15n,\n 0x12_0f_44_67_03_01_b1_43_52_49_29_4d_98_33_d5_9e_01_68_2a_f4_c8_65_87_19_72_76_78_fd_9a_b7_ef_2en,\n ],\n [\n 0x1a_bb_95_b6_e3_32_43_a0_50_e5_63_b5_c4_fd_05_9d_e5_51_3e_c2_89_94_a6_f6_0e_57_c9_8d_3b_c8_f5_86n,\n 0x0a_5b_60_4c_95_8b_c9_00_71_ad_10_61_8b_17_72_59_9e_0c_8d_dd_fb_64_11_31_fe_f3_9d_aa_58_a3_99_23n,\n 0x24_e8_2d_f5_87_39_53_79_2b_ac_a3_45_b7_c1_9f_61_03_9a_de_b1_19_05_92_bc_a1_8c_f4_f9_07_c1_a6_fen,\n 0x10_e3_34_9e_ef_d3_a1_12_41_7e_11_0f_d9_e8_32_07_8e_54_b5_f4_53_7c_d0_18_ae_e3_df_bb_90_54_15_81n,\n 0x16_5a_de_be_00_c7_ba_01_94_99_01_8c_96_f5_c5_87_0e_ca_56_79_c9_0c_84_3d_95_27_18_4a_52_5f_cc_a0n,\n 0x01_fb_81_21_8f_ee_ed_f4_e7_e0_e3_3d_d8_ec_be_62_d6_5c_6b_7d_42_33_f3_2e_07_35_71_ff_86_2d_89_c3n,\n 0x1b_e2_80_2f_be_a5_10_03_aa_fa_e8_2f_f4_49_9d_11_58_37_7b_10_8f_8b_02_0c_82_b8_46_0a_8d_60_3a_fan,\n 0x04_18_08_1d_e8_c2_95_83_55_a1_e4_5e_28_ee_51_ba_2c_66_ca_d0_48_35_f4_fb_d8_1e_69_6d_e6_39_87_69n,\n 0x1f_3e_93_7a_b2_9f_3a_88_c6_fe_43_86_98_a7_19_8a_52_09_aa_6a_c9_f1_41_31_9f_3b_b2_01_e7_fd_67_16n,\n 0x01_13_e9_68_76_9b_0e_a3_2c_b7_b5_ff_70_48_4a_ac_c9_6f_13_dc_28_27_a8_e5_e6_11_69_5e_07_97_fc_3cn,\n ],\n [\n 0x11_0d_21_3a_83_64_78_aa_30_1b_c1_fd_4e_dd_38_85_07_d8_77_45_b3_ab_fb_a5_bf_28_2a_fd_21_f7_24_2an,\n 0x2c_de_e0_c6_35_a4_fc_d9_54_9f_0f_91_b4_f4_a9_b6_28_aa_73_19_e2_ea_a0_94_a6_93_b3_8b_5c_f9_a2_42n,\n 0x00_d6_0f_05_85_75_5d_48_57_7b_46_57_46_de_8e_28_6e_49_92_51_50_f1_78_4f_29_fb_6b_96_db_d8_f0_ecn,\n 0x21_68_dc_f2_16_d8_36_9a_62_6c_cc_61_45_32_36_a3_89_d0_25_19_f3_05_2e_87_ef_f9_cc_b8_aa_29_9c_46n,\n 0x03_53_0d_d9_62_ef_23_dc_16_f7_9b_28_c1_fc_1d_da_fe_94_58_be_15_17_4c_bb_bf_3a_80_6d_e5_f6_3c_efn,\n 0x1c_ed_c6_d4_e1_47_67_41_c1_09_95_57_e5_8e_64_2c_42_89_2a_a3_6e_2d_0a_79_3f_67_07_81_a2_1b_0d_bdn,\n 0x26_9c_8c_13_9a_4f_61_e1_6b_fa_ae_9e_8b_bb_1c_69_80_8c_90_71_08_3b_0a_33_9d_ff_9e_49_04_b4_43_d6n,\n 0x0e_a7_bc_52_50_3e_20_39_d2_77_91_2e_02_2f_d6_d0_de_d5_bc_68_7c_6f_f9_71_94_97_6f_3a_28_bd_30_c6n,\n 0x21_80_b9_eb_15_6e_b3_3c_ad_1a_a7_50_ea_0f_a3_dd_bf_a4_12_72_96_e4_97_f8_6e_64_41_e0_52_a2_3b_45n,\n 0x18_cd_14_71_43_0a_da_d3_1e_45_b5_29_49_4f_c8_a7_e3_19_bd_2f_c0_61_9c_99_20_7d_fa_cd_b6_57_bb_f7n,\n ],\n [\n 0x18_ed_b2_d1_05_bb_53_b7_68_ae_01_37_85_0d_c2_d2_bf_6d_13_03_a1_f8_ee_4a_ad_f7_6d_8f_81_99_05_88n,\n 0x2c_96_2d_7d_54_a9_8c_3a_82_a6_38_d8_c8_24_50_81_3f_42_07_1a_17_c6_c0_5f_47_0b_44_95_8f_57_ef_15n,\n 0x1f_49_5e_93_01_43_14_98_8d_ac_e5_e4_e8_67_f5_10_9e_09_fa_00_fc_e8_79_29_d1_e0_ec_e9_5a_44_93_45n,\n 0x26_29_03_f3_6a_cf_0d_c0_55_f6_10_39_7d_f0_79_4f_bc_30_92_7e_f1_85_c6_35_6b_c3_3e_5c_31_fa_ef_9fn,\n 0x1b_7e_92_2b_3d_d5_03_e6_44_1a_da_96_6c_8b_3b_a7_b9_08_cb_2b_98_b5_fb_e1_e4_c2_fb_98_24_55_ba_a2n,\n 0x1a_88_ae_2f_de_12_ba_32_e5_f4_ec_ca_cf_11_c2_5b_c1_63_bd_ed_aa_a8_82_44_74_ca_e5_86_9e_5e_c2_0fn,\n 0x23_40_77_28_26_9c_70_fe_71_2b_02_19_15_05_9d_c8_dc_21_24_ae_64_8e_2c_b5_49_fc_76_36_2b_c2_b9_7dn,\n 0x12_ab_31_86_26_d5_11_c2_3d_28_ba_a9_fb_5b_58_02_e0_ab_95_e3_cb_17_ae_db_aa_25_f4_d0_84_cf_da_57n,\n 0x1c_c6_9d_8f_34_ee_87_78_38_95_0e_20_a9_d4_c4_bd_3e_9a_ca_f3_d6_93_aa_64_ca_e0_4f_aa_22_5a_2e_1en,\n 0x23_d0_fa_96_5e_92_0d_fc_53_0b_52_67_0b_1e_32_e2_d5_fc_28_21_fc_91_8c_08_44_a0_03_b7_14_18_25_adn,\n ],\n [\n 0x1e_53_e9_2d_f6_c5_3e_ce_c4_c0_de_5b_07_dc_4c_9a_0c_55_45_f2_ab_cc_1f_ab_f4_cc_b8_4a_0a_6e_2c_27n,\n 0x2b_c7_61_18_5f_59_ef_b7_b6_7b_cf_1d_3e_54_da_00_da_ea_06_7f_e4_9e_3f_1d_93_34_e5_47_04_38_b4_54n,\n 0x12_43_31_e0_ec_b1_d9_80_8a_1d_91_ef_aa_98_95_0a_be_93_0c_46_fe_e5_a3_0d_5a_d0_79_76_a5_bc_02_63n,\n 0x00_46_88_77_24_f2_93_21_89_5c_2e_f8_bc_0c_f5_45_df_77_3c_04_ba_a0_97_c3_52_a4_16_53_95_cc_a7_86n,\n 0x24_74_60_ad_45_80_a1_86_39_ea_da_69_b9_04_c9_1b_19_f7_d4_38_74_35_70_76_96_c4_0b_ac_3b_fb_dd_33n,\n 0x26_54_12_a4_e3_b5_56_0a_ba_50_2d_20_ed_83_3d_ef_f7_07_b7_d4_25_ba_3c_09_f3_b6_39_2b_6f_1f_43_39n,\n 0x02_ad_06_fc_9f_81_68_45_42_e0_45_8a_ae_19_c0_a7_c1_8b_e9_4f_1d_e3_fc_e6_a3_e5_d2_33_5a_01_e9_0en,\n 0x0d_1e_34_19_23_43_d6_6f_c1_b6_59_1c_b6_a3_b0_60_2b_08_35_a4_03_c7_22_7d_bc_bd_72_fd_80_00_c6_f2n,\n 0x0b_56_51_79_88_7e_e3_0e_38_16_31_d8_e5_dd_35_7c_70_ee_2e_bb_41_06_17_d2_32_1f_6d_85_37_f9_89_70n,\n 0x2e_a6_b3_2a_f3_7c_d7_65_d7_28_dd_ef_a3_09_18_90_2a_21_e1_9b_29_14_00_85_4f_56_39_3c_56_d6_94_60n,\n ],\n [\n 0x10_fc_b8_17_e1_0f_69_f7_07_4e_64_c3_93_b8_07_cd_dd_f3_3c_84_a8_b5_cf_e3_3f_44_b7_3f_e1_8c_0e_36n,\n 0x2e_45_0d_1f_e7_77_3c_98_89_a0_be_55_e4_44_53_bc_c8_44_c9_4b_56_fc_0b_b8_06_eb_99_82_ac_55_34_28n,\n 0x2f_42_1f_cf_54_d7_7d_d3_89_30_cd_69_07_6f_9b_aa_dd_3d_3f_19_47_37_12_15_a6_6c_89_4d_63_7e_89_b9n,\n 0x13_27_60_81_db_01_2d_1d_4f_4b_7d_d2_d8_a2_f8_a5_18_0d_2e_cc_33_85_4c_dd_35_f9_ce_b0_7b_f4_0d_53n,\n 0x14_4d_5b_e3_8d_44_c5_bf_8f_3c_57_35_33_4f_b1_a0_7c_13_70_2d_86_af_39_ba_0b_42_20_ec_9a_75_68_a2n,\n 0x12_69_1b_59_9d_32_ed_c4_8a_e9_9c_7a_73_ab_d5_9e_5b_18_f4_bf_77_3f_a1_05_1c_ab_d2_c4_9a_aa_bf_6bn,\n 0x05_78_a5_5f_0f_da_29_90_9b_9f_85_0c_3d_74_be_66_68_e4_44_4a_c6_91_76_4f_16_44_a6_26_49_82_18_e4n,\n 0x12_e3_b0_49_24_b2_cf_6e_40_7b_d2_6b_3c_d4_7b_ca_61_d6_ff_cf_7e_fa_1a_ea_1c_2e_0d_8a_49_de_64_ben,\n 0x11_62_a5_6e_d3_bb_bb_4b_67_60_a1_6a_30_0b_a7_20_21_30_08_6d_a4_d5_58_8a_70_92_64_23_ff_8c_24_2fn,\n 0x03_34_0c_ac_b0_4d_5a_85_61_4e_ac_c4_be_33_52_93_8b_aa_3f_c7_14_c2_57_5a_a9_d8_5f_73_91_13_c5_0bn,\n ],\n [\n 0x2b_1d_8c_11_fc_65_2c_59_35_43_b6_f9_80_0b_b7_d0_c9_37_1d_ed_b9_6f_08_bb_bc_cf_fd_c6_cc_44_db_98n,\n 0x25_c0_f8_7c_94_6f_37_5e_34_1f_72_f6_a8_dd_63_a9_4e_86_f4_ad_18_27_15_bc_fc_bf_2b_28_df_6b_4a_0dn,\n 0x05_43_b2_bc_66_f3_b2_d9_3d_4c_18_82_03_9d_db_37_c7_0c_0b_43_7a_c2_3a_c5_bb_98_68_e6_df_24_48_5en,\n 0x2d_d1_17_21_85_38_e8_ac_b0_30_1e_b4_0a_df_a2_43_5f_5b_ff_a8_02_8f_f5_2f_96_a9_9d_77_fe_92_70_66n,\n 0x26_9b_06_b3_1e_89_ff_13_2d_ae_bc_20_0e_fd_c8_ab_06_81_36_fc_e6_5f_2f_c5_5a_1d_cb_93_9b_7f_c6_f5n,\n 0x20_d4_40_1c_bb_f9_28_77_ec_f6_16_d7_d2_85_51_cb_0a_ec_55_2f_ae_95_18_dc_f9_21_8c_38_c1_a0_bc_90n,\n 0x2e_e2_da_24_b7_f8_e7_03_5f_b7_3b_08_c3_41_48_33_ff_a3_8e_14_b1_fa_ac_19_8a_86_0a_57_67_d2_fe_edn,\n 0x06_dd_89_fa_bf_92_54_68_47_b9_c1_3b_3a_36_bb_c7_e6_79_c5_bb_0d_d7_85_40_3f_3f_f4_9b_be_61_c8_e7n,\n 0x13_60_f7_19_03_45_72_b5_94_10_c5_29_b6_2a_62_aa_94_56_56_54_59_7e_42_77_9f_33_40_0f_1d_17_d6_52n,\n 0x15_ff_82_7e_03_4c_02_a9_07_67_f0_15_28_40_e7_fc_6d_b9_83_e4_96_ea_05_19_c0_ff_41_de_a8_18_06_28n,\n ],\n [\n 0x19_f4_73_e4_0c_05_67_6d_5f_8d_51_e1_13_36_e9_c6_5c_b3_28_28_c3_97_cc_81_25_f1_dc_66_7b_6c_ad_f7n,\n 0x0b_fe_6f_c0_8e_2a_2e_1b_89_11_ae_06_5b_98_53_88_fc_d1_05_a4_90_a4_ab_94_3b_25_55_8c_f3_d0_54_b6n,\n 0x20_3d_9e_e6_46_2a_58_69_14_fe_7d_bf_c1_bf_a2_97_73_b7_f9_b3_d6_3a_ea_41_20_c6_01_12_9c_16_66_0fn,\n 0x1b_91_2a_bf_2e_16_49_ad_48_34_ca_5b_2a_38_31_cc_9c_20_7d_4d_08_e4_bf_27_4a_79_dc_a8_0e_52_fe_24n,\n 0x06_2c_aa_3c_9f_d3_9b_69_86_4f_af_70_1d_c8_a4_58_85_71_cb_31_bf_d5_c9_c3_c5_9d_fd_97_e9_9f_70_1an,\n 0x13_8c_03_a2_ec_ea_18_3c_b8_f2_65_ee_cd_7e_93_27_5b_0b_b9_82_97_c1_54_5a_72_19_7d_c6_dd_d9_33_5fn,\n 0x11_58_99_59_fc_24_93_29_2f_b6_c5_07_30_e7_49_94_ad_7c_d6_d3_53_3c_3b_00_a5_7d_ae_83_3c_c7_01_e5n,\n 0x17_b9_fa_cd_be_74_7d_7c_51_63_ca_00_e3_b0_b8_25_d0_12_ed_43_57_60_4e_71_85_75_0d_67_7c_6b_35_7fn,\n 0x0c_60_3d_03_f9_28_60_da_8a_68_c6_dc_b1_92_4d_1a_45_09_9a_ea_50_f1_a3_62_ed_b2_f2_a7_dd_fe_90_ffn,\n 0x05_d5_6f_0c_84_4d_16_92_48_50_31_35_e4_de_b9_ff_d6_32_9d_54_cf_ce_ed_4b_94_7d_78_a5_68_68_11_47n,\n ],\n [\n 0x0f_cf_3a_4d_9c_6c_33_92_de_1b_df_e2_5c_fb_86_81_7e_cb_80_c5_1b_e1_7d_47_f7_97_50_20_1f_1f_cd_01n,\n 0x0c_18_2e_43_82_57_c4_ad_7e_7b_79_c3_b6_8d_60_98_4e_50_7a_c5_97_cb_47_dc_31_d9_13_a7_a5_40_fd_9an,\n 0x02_5a_1e_cb_d7_e7_89_3f_64_6f_35_d3_e0_7e_e9_97_c9_43_54_73_78_84_fe_6c_26_ae_81_55_76_0d_b8_aan,\n 0x20_13_5f_f2_63_86_7f_70_8e_e0_27_51_70_cc_97_88_68_9c_08_8b_29_33_a3_61_c7_75_cf_43_07_48_ef_1fn,\n 0x20_e1_60_f7_72_99_8a_2f_7d_00_64_c7_ef_a1_58_84_eb_c6_d8_b7_18_21_cd_53_36_e2_df_14_34_1c_95_een,\n 0x15_0d_f1_12_91_b6_80_e3_ba_92_5a_04_71_c7_fb_b3_0e_70_4a_b4_b5_54_ea_5d_8c_07_b7_0b_2b_96_20_2an,\n 0x17_57_20_29_e8_e8_97_20_2d_0e_65_c2_17_2c_57_1d_4b_91_ca_85_6e_7a_d3_f1_18_ad_92_21_27_b8_70_54n,\n 0x0a_ff_15_65_0b_80_5b_ff_6f_8b_35_15_d5_e2_9c_f9_14_b7_34_9a_f8_92_4e_79_60_09_f8_a4_f1_b7_26_4cn,\n 0x1a_91_8f_c1_17_d9_a6_44_5e_36_3e_e5_83_3d_c0_14_11_03_4b_95_38_4d_98_ee_e4_7a_e8_96_f9_2a_7d_67n,\n 0x2e_56_18_41_1e_fe_a3_0c_c7_de_31_0d_48_72_59_7d_08_7c_1e_12_2e_02_eb_b1_17_db_0c_2d_ff_04_fc_0cn,\n ],\n [\n 0x23_b0_2d_00_fe_26_34_88_96_73_a7_d0_47_36_fe_15_b9_f6_26_52_b1_c0_62_6a_19_af_8d_60_85_d7_08_22n,\n 0x2f_f4_d0_b8_79_8a_82_66_77_93_53_37_30_08_3c_25_22_3d_58_9c_dd_07_93_62_f1_e8_c2_e0_1d_54_47_6an,\n 0x1d_89_7f_60_e8_7f_ce_5c_ee_d8_da_7f_2f_4a_63_fd_ee_7f_f9_dc_f1_79_c0_8e_05_e9_e5_cd_d8_23_8a_c7n,\n 0x0b_a6_d4_ce_ee_21_82_d3_f2_ab_2e_4a_3a_d0_8f_c3_1f_7f_4c_c0_fe_c9_1a_d5_3e_92_bf_8a_da_3e_27_8fn,\n 0x05_ce_94_b8_e9_a6_0b_28_94_77_10_46_1d_87_c7_75_72_46_26_6a_e8_fa_5d_3a_f3_ea_81_77_6b_5b_8c_07n,\n 0x0c_34_6b_04_6a_f0_3c_b9_04_8c_29_35_3e_11_07_d6_b7_5e_59_0b_b2_d4_22_ea_83_c0_9a_5d_a1_ba_0c_65n,\n 0x2f_bf_8c_c6_ec_7e_fb_30_10_64_23_f2_e6_7b_0a_a9_40_33_60_e5_6e_88_b6_c5_cb_ae_c3_4a_80_bd_c7_f4n,\n 0x0d_06_4e_72_44_9e_fc_11_d1_e9_0b_97_74_9d_e3_90_94_90_b9_12_bb_1f_72_f5_42_f4_1d_62_ab_2d_84_7an,\n 0x02_a8_8e_0c_35_61_76_65_f3_cc_2f_c7_7d_90_af_c7_a8_d1_00_1c_71_de_bc_f2_73_3c_a0_c7_1a_19_e1_ean,\n 0x15_ee_b3_e0_54_1b_cf_01_0d_a0_c4_7a_db_12_f6_df_54_0b_97_4d_43_9c_93_e1_9e_a4_d0_2f_99_75_d4_46n,\n ],\n ],\n // t=11 (10 inputs)\n [\n [\n 0x02_6d_ba_58_ad_e8_cd_a1_88_f4_9e_52_fc_e7_16_7b_8f_21_9d_bd_92_4d_77_86_b0_f9_8f_b7_99_fe_fa_2en,\n 0x01_1a_13_1a_37_78_c3_77_42_33_bc_54_09_64_19_d4_63_d3_ab_ba_e1_83_22_a7_e7_7a_51_18_81_66_5f_93n,\n 0x2a_18_ab_4d_c4_77_7e_13_cb_83_58_c1_c4_23_15_35_70_d1_cb_90_95_44_24_3a_bd_ac_d4_54_7c_8e_c3_aan,\n 0x16_eb_d7_82_cb_cf_6d_63_c3_8b_87_b2_7d_b2_a4_a5_af_58_47_a9_a6_08_89_c4_cf_6a_a3_18_d6_86_6b_1en,\n 0x02_b7_ed_47_fa_c2_75_d3_4f_84_2f_09_b0_1e_f9_42_10_14_de_04_0c_26_a5_91_59_5b_22_7b_a7_bc_6f_b2n,\n 0x0c_5e_49_e3_19_fb_95_35_07_3f_07_f9_e0_55_ac_ca_f3_e3_f2_4a_35_dc_b4_6c_ab_67_df_c6_48_ef_af_30n,\n 0x01_61_e4_ae_5b_2d_24_cd_63_8b_a5_c3_2b_c2_31_7b_f9_0d_40_4e_37_e0_03_f1_05_5d_9a_96_e4_06_d3_0dn,\n 0x22_3c_7f_c6_d2_4f_c5_3d_1b_42_8e_db_8f_1c_52_d2_0c_ee_c5_92_18_7d_2c_7a_6b_0b_14_7b_62_92_b8_1en,\n 0x1a_e0_60_e3_9b_33_8d_09_84_5e_2e_9e_be_b7_0b_fb_74_cd_4a_f9_26_21_7f_57_32_be_2b_6c_b7_fe_72_a6n,\n 0x04_61_91_ab_41_e9_39_29_ea_51_f1_90_fd_4e_77_3a_c8_d5_08_33_28_d4_b2_f0_48_28_dc_a3_e6_90_98_c3n,\n 0x14_ba_1b_53_83_e3_73_3c_63_d0_0c_32_c2_bb_ff_d8_e5_45_07_ed_33_bf_75_44_c8_63_88_19_1e_ca_3e_40n,\n ],\n [\n 0x00_98_13_c8_03_ff_84_a3_69_4e_ed_af_4b_1c_21_72_61_52_75_dc_18_ca_65_4c_79_9a_70_44_09_46_cc_f0n,\n 0x14_95_af_03_dc_91_80_c8_86_f0_e1_bd_af_9d_18_e3_2e_6b_0d_1b_80_37_0e_7c_be_57_45_da_fc_43_35_23n,\n 0x0d_95_e8_cf_8a_66_b5_6c_32_e7_d1_1e_01_07_e4_1e_12_97_12_2d_1a_cc_41_33_2f_1b_49_89_5a_3c_97_fcn,\n 0x0b_05_f1_61_08_c4_61_6a_97_3b_01_d8_2e_50_d4_fc_9d_cd_cc_e6_7d_2d_21_f8_52_81_6b_d2_34_e9_87_2bn,\n 0x23_0b_62_31_5b_30_bc_49_d7_3d_ff_8a_9d_e7_9c_62_0e_03_c7_47_b1_4c_43_2f_17_07_15_e5_88_d6_05_aan,\n 0x15_d2_17_a3_17_84_74_10_48_f3_26_e1_55_af_96_e9_0b_5a_ae_73_4f_06_77_9e_69_88_64_03_9c_92_e1_23n,\n 0x0a_f9_af_be_ca_e1_76_1c_c1_7d_44_b5_1c_a6_6d_1d_bd_ea_f3_41_e8_5f_10_82_95_8f_9c_b7_2f_7b_55_d4n,\n 0x1d_a4_f4_e3_c6_79_0a_e1_b8_9c_41_18_86_1d_8c_a2_a5_0c_c8_2a_4e_7f_1e_d3_c5_ba_8c_b9_44_ba_46_89n,\n 0x28_60_aa_52_dc_2f_96_7c_0c_1a_0b_94_2a_c8_1e_02_18_9d_03_14_30_c1_1a_91_9a_5a_a8_95_bc_fb_61_51n,\n 0x16_ff_33_d6_7c_85_12_1b_ce_e7_d8_1c_ff_16_18_92_7f_1c_92_b4_d1_d2_1c_2a_07_b6_ae_18_b2_b7_b9_b7n,\n 0x1b_a0_e8_35_f4_76_26_b0_d8_24_26_90_0c_49_17_0a_8b_e2_9c_39_d9_03_37_aa_5f_c1_07_64_e2_32_1a_1bn,\n ],\n [\n 0x00_20_29_73_f7_fb_a5_bd_21_ed_58_bf_e7_15_6d_7b_29_01_0d_41_09_0f_63_f1_bb_29_0c_1d_5d_a1_ad_60n,\n 0x11_93_44_c5_37_07_f0_02_43_98_3c_6d_02_4f_d4_9a_0f_8a_f8_0e_58_71_93_3e_58_ff_87_c3_a1_f4_8b_93n,\n 0x07_c2_2f_96_f2_f5_56_53_d0_4e_dc_63_15_05_67_a7_a0_46_09_b0_b7_9e_ec_fa_cb_14_85_dc_eb_7b_c8_73n,\n 0x2f_39_4c_fd_3e_44_25_03_c3_a2_25_12_aa_4b_76_b9_5b_74_3c_70_76_ca_41_15_a9_fb_bb_7c_6b_07_ee_5dn,\n 0x20_63_51_75_00_37_bd_c9_0d_4f_3e_79_18_61_9f_c6_90_c2_b5_85_7f_8b_fb_d8_6d_7c_00_1e_4c_f2_ca_18n,\n 0x1a_cc_ea_09_c2_bf_d1_7f_40_61_72_5c_71_2f_d1_97_6a_07_e7_73_e5_4d_90_6d_a1_66_21_52_01_a5_81_36n,\n 0x05_e5_2c_0f_f8_c0_4a_8e_5e_3c_7e_af_a1_d0_90_2f_e6_3e_35_89_89_34_b0_0f_43_33_b3_8f_e6_14_f9_13n,\n 0x2e_70_8b_aa_f8_94_bc_58_35_e5_fe_a8_12_27_fa_8c_fa_ef_99_08_6d_12_b0_a3_a7_f3_f8_5b_bc_a6_1d_28n,\n 0x0a_c2_3f_00_ff_01_5b_aa_b1_c8_be_9a_90_94_3c_3c_72_d1_78_18_be_7a_d4_27_c4_5e_b3_ff_18_28_72_7dn,\n 0x02_13_47_98_f4_ca_7f_b9_92_80_12_c9_37_f3_7d_e8_74_32_b8_66_5a_ee_df_37_3e_7f_fa_6f_e0_c1_3d_00n,\n 0x02_19_f5_e2_8a_5f_a5_26_89_d2_b7_be_43_26_24_28_0c_94_0c_9b_f9_88_3c_1f_b0_fe_92_9f_78_87_3c_1bn,\n ],\n [\n 0x12_30_5e_ad_f6_4d_ac_24_a7_91_3a_62_d9_5a_ef_d4_5f_48_35_55_76_c6_71_e5_6f_de_9c_c7_c8_34_4f_fdn,\n 0x00_a9_2b_d6_a9_19_d1_60_56_15_78_6f_2e_fe_80_74_3c_a5_7c_10_ec_80_cf_b9_26_72_2b_5b_ed_40_8b_79n,\n 0x0f_71_6c_54_de_41_92_0c_40_1a_62_df_8f_91_86_e1_9b_95_23_e9_86_37_a5_b1_13_d6_1c_cc_30_ba_02_13n,\n 0x0a_15_7e_24_4f_93_91_25_d5_7f_9c_8e_66_f7_d8_8e_c0_fb_3c_05_b9_0f_52_6b_ac_08_71_bc_a8_46_77_f5n,\n 0x22_18_be_86_1d_52_4e_af_03_b9_42_0b_13_68_e9_c5_aa_7c_ef_ee_72_d0_e6_ef_80_73_2e_e9_d7_e6_e2_c0n,\n 0x2f_9b_d1_9d_0c_8c_38_87_a7_fc_01_73_f8_63_f0_75_e6_6b_18_3a_d8_9f_13_70_49_30_41_6e_1d_5c_b7_ecn,\n 0x14_eb_40_1c_10_84_a9_dd_cd_5d_00_92_e5_d1_a2_99_aa_0f_55_c3_51_54_5c_78_17_03_c0_1c_e8_7d_6b_29n,\n 0x13_fe_23_be_24_26_1b_a5_b9_2d_36_39_89_f5_8e_17_fc_ee_d4_a8_58_d1_c6_1f_c2_cf_2b_71_db_db_69_36n,\n 0x03_2f_a2_f1_66_62_2f_05_7f_61_a9_40_5c_92_56_22_3c_ab_2b_a8_2c_94_95_60_79_21_75_5a_b0_18_f6_90n,\n 0x2a_ed_db_fa_24_57_56_ad_1e_16_58_62_9f_74_7b_8d_a7_59_3b_19_5c_c9_50_32_4f_95_ed_c9_ed_a4_2a_afn,\n 0x12_3a_60_55_68_10_23_b1_65_70_c7_0f_cd_f3_ae_8e_38_7a_97_36_90_b9_e6_76_1b_e2_2f_99_41_d7_ef_76n,\n ],\n [\n 0x25_c7_83_ad_66_d6_a1_fc_6c_84_77_0b_d6_37_f6_20_70_97_df_fb_03_78_d7_e0_39_5f_8c_0b_86_b5_05_f9n,\n 0x1c_7d_3a_92_ca_a4_35_cd_d9_74_52_0b_b6_fb_6c_ac_81_63_4c_c9_bf_4e_53_4d_f7_77_36_e0_6d_76_8c_3cn,\n 0x2c_d6_8f_c3_1b_67_dc_45_fb_6b_16_f4_2b_5e_b8_9d_ba_2a_e7_e9_aa_50_c5_f1_91_52_75_a8_18_87_19_0an,\n 0x1d_45_67_c1_2d_b6_48_d4_a9_c4_13_24_c0_32_93_25_b7_6a_07_73_0f_ad_72_ef_9e_49_0a_74_86_74_98_5cn,\n 0x06_9e_e4_eb_20_b4_86_0d_4a_f9_1a_fe_17_81_33_8f_53_aa_35_45_62_ec_d8_73_e0_e6_25_af_70_74_6f_26n,\n 0x06_ca_d0_c2_bd_43_8c_4d_ba_2e_d6_4b_bf_75_06_6e_73_14_84_c3_6d_1f_67_38_b6_e9_86_01_e9_fb_49_8dn,\n 0x1e_0e_16_6d_73_4a_a6_14_c6_b5_3d_b4_f6_91_17_98_41_a3_3f_81_05_43_0a_3e_e7_0a_bc_a8_3b_a6_ec_6en,\n 0x1c_87_9c_94_28_e1_96_07_d6_47_f5_ef_14_15_e7_6f_7c_59_fd_01_e5_2a_fb_80_48_60_81_85_1f_9a_52_84n,\n 0x21_5c_0c_d4_e3_f1_bd_b4_82_b9_3e_57_18_79_d7_93_1b_e9_00_23_d7_a2_20_e8_f9_3b_21_c8_ad_d4_1f_fan,\n 0x1f_41_fc_67_ca_13_22_b3_7b_7a_a0_1b_63_1f_d1_91_05_28_1f_6c_6a_4d_37_fb_f6_8f_c1_b5_f6_28_02_c6n,\n 0x1d_ce_36_06_2a_f7_e4_b0_09_8f_55_90_62_2c_ed_7a_f9_f2_8e_88_d4_76_cd_e1_39_1e_b3_04_08_d5_d2_66n,\n ],\n [\n 0x22_2d_eb_60_6f_13_cf_28_c7_3a_67_21_6d_88_b1_6f_59_58_d5_d2_92_ba_10_ef_3b_c2_c1_0f_5a_0b_61_3fn,\n 0x12_fb_88_a0_f6_f7_49_d6_8d_a9_25_0d_5a_de_cf_08_84_42_82_72_48_d6_7f_98_9f_d1_4b_5c_9c_d4_d4_c7n,\n 0x00_66_29_2e_64_e6_a2_c6_46_73_ae_d3_65_cb_50_f7_bd_4e_1d_3b_52_70_f6_b2_e9_98_25_90_c3_f8_40_0en,\n 0x0a_94_a2_d7_c4_09_3c_63_88_23_b0_95_73_3f_37_17_6d_7e_74_7b_a2_46_45_b5_15_ac_2a_24_1f_fd_da_81n,\n 0x0a_22_61_28_da_1d_9b_d5_b3_29_f5_5f_52_c7_56_82_de_f3_36_9a_b1_33_59_dc_b7_d2_12_ee_fc_a8_62_29n,\n 0x1b_5d_a8_39_66_36_15_86_e8_81_0f_ed_03_24_35_ca_a8_0a_9b_47_6d_b2_12_90_47_4e_d1_97_7f_ce_f2_2fn,\n 0x2f_a7_5d_ee_d2_81_db_73_4f_ab_a5_b7_0e_af_57_96_2f_93_e2_ee_a1_d3_dc_ee_34_c8_1a_b1_e9_fc_c0_een,\n 0x12_8c_b3_15_0b_15_cb_c4_fa_ab_14_bf_7d_67_6e_f3_68_2b_52_ca_bf_c8_d3_41_9d_fd_98_10_9d_19_ec_c0n,\n 0x05_27_00_b1_9e_f6_d4_2e_a3_92_e0_44_a0_94_cb_fc_30_8e_ea_1f_72_f2_a3_42_8b_1e_72_1b_fc_32_c6_adn,\n 0x22_d1_e6_4d_4e_e1_5e_60_c4_59_d8_51_ef_9f_34_95_e9_37_f5_a9_09_90_38_2c_97_86_7c_45_b7_94_00_71n,\n 0x25_2e_74_74_66_77_fd_75_84_ce_b0_f8_aa_69_36_bd_04_f9_52_8e_f6_00_73_7e_99_13_fe_4b_56_98_eb_28n,\n ],\n [\n 0x16_14_d0_25_47_27_71_fd_87_0a_9e_9d_42_2b_35_71_c5_49_4e_7d_67_98_24_d8_fe_12_12_17_7d_5f_a2_ecn,\n 0x2f_6c_4e_09_7b_b5_85_1b_e1_2b_be_2c_71_2c_2f_a9_06_f3_10_b7_80_48_d6_95_b4_aa_d3_01_ff_c0_d2_68n,\n 0x08_a1_ef_65_f5_21_28_eb_3b_22_df_2b_6a_ca_30_50_9b_0a_f8_af_2f_78_88_ee_e7_66_c0_c2_48_71_18_8bn,\n 0x2f_6f_14_50_2f_20_d9_58_a9_ff_23_b6_96_ca_c3_ae_24_96_75_17_ae_8b_2e_95_92_da_f4_51_84_0b_b9_8en,\n 0x17_ce_b4_2a_19_de_6d_d3_2e_3b_38_cc_29_90_e6_42_73_b5_2a_56_18_26_3e_eb_fa_49_d8_45_18_ea_3b_efn,\n 0x2a_db_de_5c_7b_73_e9_a7_e2_2b_91_3f_99_e4_0d_95_e6_89_c6_5c_42_8c_23_97_cd_27_39_23_cf_68_dd_bdn,\n 0x14_bf_e3_31_15_df_29_36_70_39_3e_1d_c8_da_4d_69_47_ac_c4_b6_02_49_e5_b1_c8_ca_e3_76_66_5c_d5_80n,\n 0x2b_f5_23_cd_8a_a3_be_20_ce_7d_89_1f_87_27_a7_b2_4b_72_a4_d4_83_84_84_de_84_2a_cc_78_2f_d8_bd_32n,\n 0x03_3b_93_a5_cf_15_ff_ba_fa_27_26_f2_52_78_24_a1_1a_f8_e4_2e_01_d3_a7_ee_15_9b_27_3c_a0_a6_52_0cn,\n 0x24_9f_41_6f_ae_5a_b5_2a_43_5d_65_20_10_06_dd_8a_e8_d5_42_66_e4_d5_64_33_07_55_19_02_42_3f_7c_c6n,\n 0x19_a9_07_9a_98_97_a2_37_07_42_52_76_79_12_be_d7_b7_63_5a_e8_ca_0e_de_2d_d3_a4_2a_75_c1_c6_b8_1an,\n ],\n [\n 0x01_35_8b_dd_6b_7a_51_b1_f5_b5_d0_94_db_d8_ee_08_6c_cd_cf_b9_c2_7f_aa_d0_80_6e_8e_f7_18_d0_e2_b1n,\n 0x1c_06_c7_82_fb_c0_98_0b_9e_49_3b_29_a5_e4_a0_4a_ef_c6_68_cd_42_55_d6_cf_e2_08_e9_e7_c8_b9_a1_c4n,\n 0x24_52_96_38_eb_cd_f2_6d_e8_81_62_87_fe_c6_37_06_14_e1_12_e1_0c_03_91_90_c1_03_a7_5c_ed_11_b4_26n,\n 0x12_64_1c_c3_cf_50_ca_67_bc_93_bc_8c_19_ed_89_d4_61_3e_9e_28_1a_51_cd_f3_13_cb_c8_11_19_22_24_2cn,\n 0x29_01_2d_ef_fb_11_2e_b1_40_34_15_9c_59_16_2f_86_6d_4a_18_03_b4_d1_92_a4_32_93_59_f0_f9_03_26_6fn,\n 0x1a_8b_8a_d1_ec_b6_cb_88_82_73_a9_0b_ef_8b_1a_2c_fc_03_dd_44_e0_b2_8b_18_e1_07_4e_40_4a_9e_0f_4cn,\n 0x17_ea_19_8f_3a_b2_61_da_00_01_52_f2_6b_0e_b0_eb_e0_88_a7_09_e8_b0_6a_18_a3_dc_21_08_c2_09_68_64n,\n 0x04_5a_aa_99_ce_1e_06_a3_c0_21_50_80_4a_91_08_7f_57_a4_3b_79_79_77_73_e8_32_16_ca_96_9e_87_33_80n,\n 0x25_4e_3a_cd_bc_75_ac_59_26_79_b0_32_b6_5a_9c_91_d2_e0_92_ab_5e_57_19_55_1b_5d_a6_35_b1_3e_94_71n,\n 0x12_a9_96_ab_c8_57_70_21_ac_78_80_c1_6f_05_8d_9e_06_e9_51_11_87_f0_aa_df_f6_bb_64_0e_43_16_d2_6cn,\n 0x07_77_ed_ef_4d_91_52_0f_cd_49_0a_22_dc_56_9a_97_e5_40_a0_fd_b5_27_b4_b1_a3_a8_54_fe_34_6b_8e_7fn,\n ],\n [\n 0x1c_20_07_eb_a4_d1_62_98_46_bb_69_40_4a_cc_84_56_5d_e5_d2_46_20_f7_5c_fc_d9_f1_1f_ee_eb_3f_37_48n,\n 0x21_18_65_b7_f9_c1_c7_91_a3_3d_70_3a_d3_28_0f_69_75_63_24_34_9a_fc_89_12_a1_9b_83_de_2c_d0_6a_0cn,\n 0x12_e4_b5_40_8f_48_64_19_51_73_9e_a2_7e_52_10_67_24_0b_82_aa_51_a4_2d_e2_d4_dc_1e_82_25_90_81_87n,\n 0x02_18_5c_7a_4a_d8_cb_21_f1_90_09_39_6f_13_4a_2c_3f_d6_14_d3_05_e4_75_dd_d1_9f_26_f6_d4_b3_f9_cen,\n 0x09_c4_b2_f6_1a_df_24_52_66_16_8c_c9_18_e9_6f_7f_8d_fc_35_bd_3d_f7_b2_3f_c6_41_ef_01_bc_c7_1c_cen,\n 0x28_1e_ca_14_bb_c3_92_09_19_e0_01_15_04_51_c3_e4_4f_f1_8e_1d_d1_17_14_12_ff_5e_66_3d_74_a0_73_c1n,\n 0x05_33_e8_a4_54_b8_cd_6d_f8_d4_8f_a9_b0_a9_cb_29_52_93_3e_1a_6b_1d_42_3c_bc_54_d0_53_3a_72_59_9bn,\n 0x28_4c_cf_70_85_95_47_fc_b9_c3_c7_b6_4c_f0_ad_62_e5_17_26_ec_81_b5_8e_b0_1c_1a_1f_8e_c7_a9_eb_70n,\n 0x04_fa_56_20_a2_c0_57_dc_55_2a_59_fd_ef_e5_0a_90_10_68_19_0f_dc_3d_f8_76_19_91_ca_b5_0a_01_a4_49n,\n 0x2d_26_40_a7_4e_de_9a_f6_c9_88_8e_5f_68_a8_4f_ac_92_b1_33_37_da_d8_fc_61_52_fa_b3_4b_55_41_99_08n,\n 0x12_1a_37_64_26_9f_d3_5c_df_1e_62_1c_3d_c6_31_8f_47_b8_62_38_0b_a0_03_57_84_9d_88_40_05_94_63_een,\n ],\n [\n 0x22_f4_9d_72_44_07_7e_41_f4_09_c0_b3_53_af_d1_69_6e_3a_a1_5f_fd_b4_a0_bd_b8_83_ff_e7_a1_a8_72_17n,\n 0x25_54_2e_07_c1_c1_39_79_bb_14_f8_d4_ee_93_da_b7_a3_dc_75_08_06_cf_37_f2_c0_2f_f5_3b_4b_b9_e6_6dn,\n 0x00_84_b8_8b_1c_e4_59_8b_70_1c_f9_6a_33_79_a0_2a_31_57_d4_19_3c_8a_8f_11_57_45_9f_6a_34_ec_32_fbn,\n 0x2f_6d_a3_85_45_09_11_cd_27_2e_13_60_1e_7c_e6_6c_2b_91_d8_09_30_74_92_f7_ee_57_8a_e3_4d_6f_5f_b4n,\n 0x18_02_b9_7e_54_bf_3a_89_78_63_2c_be_10_e4_29_70_5b_03_68_03_25_d2_6e_a1_90_c0_f1_eb_c7_36_2e_a3n,\n 0x00_54_cc_81_c7_d1_d5_95_81_eb_cd_26_b1_6c_cb_dc_bf_19_68_d7_7f_87_a2_08_1d_13_05_4f_51_11_8f_7cn,\n 0x19_68_1b_42_42_d1_1e_28_aa_72_53_0c_f3_3a_7d_15_71_9f_1a_88_8f_ff_62_5e_04_65_2c_77_ee_2b_2d_e3n,\n 0x1a_bf_e4_b1_cf_5d_b2_9d_40_78_e5_28_9b_b1_43_49_8a_bb_bd_c9_af_56_72_04_70_a2_6a_3d_fa_2b_a8_55n,\n 0x1d_22_79_67_3f_6c_ab_f0_a1_c4_b8_ee_bf_8e_9c_78_36_16_80_b2_e5_9d_7e_c1_93_48_81_9f_5b_3d_5a_14n,\n 0x0f_24_6d_2f_bb_4e_12_17_f0_96_31_fb_c8_77_08_27_c3_67_51_e6_ad_8d_6f_b1_68_10_e3_39_51_43_ad_80n,\n 0x2f_80_ca_15_1b_07_7b_50_76_72_81_ea_5d_4c_1f_74_57_f8_da_44_4d_da_16_d8_14_9b_b6_c1_06_1e_d0_aan,\n ],\n [\n 0x19_51_52_3a_42_70_c5_44_03_df_e3_21_8f_d3_d4_cc_ef_a4_31_14_f1_b1_9f_b2_c2_82_1a_43_74_71_8b_9dn,\n 0x12_b5_a0_9e_1e_95_e0_d0_1f_bc_d2_34_fa_d4_73_d8_ee_2b_a9_76_fa_22_82_7f_fa_6d_d0_3c_8b_25_a6_4fn,\n 0x2c_18_4e_90_4d_7b_fd_36_8d_44_95_b9_e3_02_7f_9a_f6_b9_31_3c_8f_19_3f_92_9a_c9_e2_4d_10_d7_a3_6fn,\n 0x16_fc_48_e5_5d_64_d8_30_10_ad_57_33_77_ea_24_22_39_7f_c3_a7_e6_c8_8a_f8_08_a5_66_de_02_23_f0_c0n,\n 0x2d_b1_ac_4c_2b_1c_23_a0_00_27_fd_cf_0f_66_3a_f8_96_d8_74_15_bb_03_5b_14_9d_28_ad_3d_a9_8c_6f_ccn,\n 0x17_0c_05_a5_f8_a5_5d_5c_9f_dc_5e_82_38_b3_67_be_35_89_17_a1_9a_28_b4_c4_7e_46_f3_e7_3d_42_a0_85n,\n 0x1e_b7_f6_e5_52_02_15_c1_5e_27_43_55_b1_9b_bf_71_ab_bf_04_aa_42_6c_d0_7d_a5_36_cb_3f_90_9f_6e_57n,\n 0x14_11_1a_74_bd_24_73_0c_83_36_99_eb_41_b3_8f_1d_4e_d1_6f_cf_0f_ec_c1_65_5b_76_f2_43_7d_4a_0c_9an,\n 0x2d_46_b4_8e_50_90_c0_c5_6a_39_0d_e3_73_f4_c9_a2_00_8d_b3_11_fe_31_06_3c_f4_fe_d5_46_29_11_35_85n,\n 0x15_f3_0e_bd_fb_8b_8e_e6_44_24_10_39_a2_6b_40_8d_c7_a8_de_77_f2_cc_6f_ed_75_4b_70_3e_a9_2d_de_53n,\n 0x1e_e9_50_c4_5a_0c_2f_4a_4b_64_68_8a_79_35_ed_2b_63_d4_fe_5b_41_4a_fa_05_c1_a2_84_67_44_09_f1_65n,\n ],\n ],\n // t=12 (11 inputs)\n [\n [\n 0x2c_b1_31_79_d6_e8_a4_ad_1b_9f_ec_37_37_62_53_cf_64_38_6a_d9_05_e2_40_57_5f_ca_86_53_9b_27_2d_c6n,\n 0x0f_d5_47_84_0f_3a_30_a5_33_a9_94_d1_fd_b3_f6_0a_e5_07_3f_44_84_f3_4b_e9_51_ee_16_a2_76_fd_eb_9an,\n 0x05_01_96_71_bd_a0_26_67_0c_7f_fa_90_81_79_51_05_96_3f_56_ce_32_7f_cf_78_45_1f_ba_2b_db_3a_c1_c6n,\n 0x29_52_c1_8c_15_55_8f_29_b2_ae_77_fc_39_e5_1a_39_5f_17_3a_90_97_db_40_4d_b7_65_ab_02_90_6b_27_dcn,\n 0x23_53_a6_0a_f6_bd_61_e5_ea_c2_c9_a4_26_3d_45_1f_ad_07_38_06_54_d4_79_23_78_da_f7_52_e5_cc_33_fan,\n 0x0e_d6_a3_bd_48_17_4e_37_0b_4f_26_4b_37_48_8b_03_a5_e3_f4_c0_f6_1c_f3_2d_31_57_ad_3e_3b_86_f6_bdn,\n 0x21_10_3a_7a_a2_0c_8d_15_50_1b_e8_c2_35_04_c6_a9_12_c6_10_0c_5d_88_08_5c_c2_e4_2a_52_30_2f_44_83n,\n 0x2f_b2_32_57_3e_85_d6_8c_53_6d_10_0c_3a_6e_a9_17_28_84_45_1e_67_7b_0d_1c_d0_fb_4d_c4_c2_75_36_b7n,\n 0x30_2a_08_5b_e0_40_ff_9a_70_9a_d0_c7_32_38_b0_d1_e1_1e_1d_17_40_9a_ba_a3_4f_c4_5d_e2_9b_54_15_35n,\n 0x06_83_e6_40_e6_15_4e_f7_3c_3c_d6_b1_d0_f0_fd_86_eb_f7_e2_92_e6_3f_a8_4c_f0_a8_83_c2_f1_fa_a8_ban,\n 0x1f_09_f3_fb_07_f7_f6_47_6f_ac_98_94_6b_73_75_09_5e_01_4b_28_f2_3a_07_ac_9f_c7_07_71_44_ac_39_79n,\n 0x05_98_c3_8d_2e_2c_78_df_e4_90_7c_74_e8_23_25_cb_19_1d_52_60_89_55_b5_83_e5_82_6e_be_bd_18_57_b5n,\n ],\n [\n 0x1f_93_05_57_a2_84_99_82_25_f5_f4_e4_df_bc_f5_ac_21_1f_1b_12_d9_1b_05_62_ed_3d_63_28_5d_7a_71_4an,\n 0x04_c4_06_18_20_cd_a9_bf_47_2d_f3_f6_4d_6a_fa_00_4f_1e_86_23_d0_a4_f6_14_2c_ca_1f_19_a4_c2_75_fbn,\n 0x0d_bc_22_c3_e5_4c_92_4a_88_2c_22_00_09_51_23_9c_c2_63_75_5d_fc_b3_8b_27_ef_4f_88_0e_20_2c_b5_fan,\n 0x2f_bb_1c_59_e9_e8_99_9d_91_c4_0f_4d_44_23_31_22_ab_35_ff_c9_75_ed_fb_43_c5_3e_d0_7d_bf_0d_9c_76n,\n 0x0b_8f_40_d2_c4_d2_8c_47_20_85_20_3a_0e_46_0a_f7_3b_be_ce_c3_b2_b3_a6_3f_27_02_8f_2c_a8_a7_12_51n,\n 0x02_8c_01_a9_f0_16_01_bb_46_41_7e_d4_66_be_60_08_59_50_52_f7_82_e4_68_57_d8_12_29_e6_4e_6b_da_02n,\n 0x23_ce_8e_40_29_39_cc_cf_36_17_6a_5b_d8_31_83_a0_d5_4a_24_ee_6c_ab_e4_fc_7f_81_4d_fb_f2_6f_85_ean,\n 0x0d_b8_2a_bb_cd_3a_1b_56_f7_fc_8d_11_6c_b5_4c_54_fe_26_24_37_02_bd_3d_57_e7_1f_7c_e0_d4_70_a4_0fn,\n 0x2e_70_3e_a9_af_99_16_1a_cf_99_49_da_7a_fb_18_d4_62_d8_5b_67_16_56_d6_1c_2c_de_e3_a7_23_90_21_3fn,\n 0x16_51_2c_15_0c_1d_2f_b7_23_5e_fd_2d_4f_0f_ad_5f_dd_78_f8_d0_cd_e5_3a_66_bc_90_20_6c_82_c4_b5_97n,\n 0x02_98_aa_5d_5a_44_56_5b_75_ef_68_df_90_2d_79_1d_01_d9_8a_75_e8_22_ef_55_3b_17_61_c5_8d_6f_df_32n,\n 0x20_3f_d2_07_8a_b2_a8_f8_8b_76_06_54_31_45_ee_34_da_ea_b2_ae_fc_a3_1b_c0_4a_47_60_65_69_7c_ab_f8n,\n ],\n [\n 0x01_8e_82_22_f6_90_7d_a5_74_5e_eb_9c_d4_a9_e6_2f_28_b8_b7_10_aa_85_fe_72_9f_9e_a7_3a_3e_f0_09_9dn,\n 0x10_77_57_eb_0c_07_99_f7_81_30_8d_83_d2_e0_57_ef_81_06_f6_b6_56_b4_5e_76_36_18_1e_11_3a_2c_df_32n,\n 0x09_66_a2_1b_96_15_af_2b_75_63_df_e4_1b_8b_9f_c0_60_39_51_2d_c9_c8_e1_19_68_91_eb_77_f8_56_b6_08n,\n 0x08_20_46_08_14_98_ee_e6_3c_28_7c_6f_a3_ef_cd_ef_eb_a1_b5_27_2a_77_bb_a9_cf_dd_b5_6a_fa_53_c8_2dn,\n 0x2c_7e_cb_f1_4b_2d_60_49_a6_43_9d_0f_29_f1_0e_26_ec_97_5a_cc_3e_3e_dd_b7_7c_83_1a_50_9a_f5_91_96n,\n 0x14_40_22_e7_e0_77_ff_22_a2_ce_3d_fe_99_23_10_7d_5a_ef_04_6d_0a_1f_2c_b5_f3_61_91_ab_04_ea_e4_edn,\n 0x17_04_03_d4_14_14_8f_46_81_b8_21_35_50_95_1e_23_8e_dc_00_9f_46_b0_06_93_ce_3d_9c_58_00_fa_dd_0an,\n 0x29_97_d9_2a_5e_9b_c6_6c_84_f6_35_e8_cb_f0_80_eb_72_0e_cd_4c_a3_e4_2c_3a_b8_d0_88_61_18_80_86_1an,\n 0x21_42_7b_3a_9a_2c_df_1e_2e_6c_62_89_06_b2_1e_24_27_1d_72_c1_8b_02_61_be_68_cc_a4_48_65_de_ce_11n,\n 0x24_bb_a5_80_86_a7_85_41_a8_eb_fd_53_5c_10_7c_36_94_6d_78_ba_6c_b2_6d_22_7e_61_51_31_f7_1d_33_7dn,\n 0x01_fd_5a_6e_ba_52_e9_ea_1d_b3_89_a1_fc_8d_d3_d0_28_3d_73_7c_18_eb_06_e0_90_b6_fd_2d_c8_8e_0a_14n,\n 0x12_76_44_2d_93_83_c5_2d_50_fc_9b_5a_c3_44_42_a4_ec_8e_9c_d7_ae_e6_d6_ce_ac_c1_a6_f5_21_aa_e4_a4n,\n ],\n [\n 0x18_0e_92_4d_75_7d_0b_e4_06_6f_eb_14_6e_d5_62_12_e3_8a_cf_9d_f4_95_74_32_65_3f_37_0f_90_5b_8b_07n,\n 0x2a_cd_39_e3_89_2a_c4_29_ed_81_28_63_ef_a0_5e_da_74_6b_55_bb_97_46_94_a4_e7_7b_9a_19_ab_b5_50_01n,\n 0x17_b1_86_21_db_d6_1d_f0_85_da_4c_f8_a0_33_95_e3_70_02_69_c7_df_4d_98_ce_48_51_f9_0a_bc_bb_36_31n,\n 0x02_a4_29_c2_d0_6d_cf_34_d3_47_30_c3_af_8b_c1_9b_04_ab_d6_52_46_8d_e5_a8_5b_5d_5c_bf_d9_c2_3e_6en,\n 0x19_7d_fb_64_18_9c_09_aa_ef_94_a1_f5_42_d8_c3_4a_ea_27_ff_fb_a7_04_20_2d_52_86_d6_2b_d0_ee_d3_72n,\n 0x0f_d3_bd_b7_9c_ad_91_34_32_b7_d3_82_8e_07_2d_ad_c2_6c_f4_90_3d_56_b8_97_62_00_72_38_46_c6_57_7en,\n 0x29_b9_ff_e0_5d_b2_c5_2d_dd_1b_f0_e5_c5_32_ee_fe_70_49_7c_7d_f4_b9_7d_b2_f0_62_48_36_57_6a_6b_29n,\n 0x0a_2a_00_6e_3b_08_6b_f5_02_c5_b1_54_0e_aa_ec_14_b9_c1_5b_f8_84_71_cb_6d_47_9f_b4_56_3f_01_64_97n,\n 0x23_7a_9e_02_09_08_cd_0e_db_d9_ea_e8_77_23_50_e0_e7_31_e3_22_8b_89_2f_c5_f6_4f_df_a9_b9_da_a6_70n,\n 0x00_6d_34_9d_61_82_ec_30_d6_8c_9b_e0_10_58_7c_70_7f_7e_1e_17_5c_0d_32_4e_6a_dd_ed_63_37_a7_2c_2bn,\n 0x0a_ab_ba_39_d2_20_f3_06_04_d0_c4_4d_d4_7c_3c_70_de_3b_79_f5_ba_a7_0a_3a_7a_0c_a0_2a_e1_b0_80_c5n,\n 0x16_ee_98_0a_2c_67_de_24_fa_1a_34_08_2f_11_c7_1b_7c_45_96_6a_6e_8b_c6_aa_1a_1d_bc_7e_f6_a9_ba_b2n,\n ],\n [\n 0x2f_7d_07_15_d1_39_11_90_e7_b1_4a_12_42_b6_79_9e_ac_31_42_e2_1f_08_ca_02_c2_17_55_ea_e7_7a_55_bcn,\n 0x29_78_8b_b6_cd_94_7e_a9_ef_ae_ef_d0_ee_b7_fd_56_3f_cc_2e_40_bd_62_3e_a2_b2_44_2b_55_d9_8d_c5_a6n,\n 0x12_cc_27_46_47_fc_57_2b_b7_90_35_bf_c3_33_2a_4e_56_6a_28_01_1f_69_dd_08_74_f0_1c_56_bc_44_c3_e2n,\n 0x2e_f5_84_c3_aa_ee_db_be_2b_4b_10_3a_61_e9_4e_d4_0a_97_29_41_56_ad_7d_df_0d_e4_3b_84_52_49_f5_34n,\n 0x05_f9_a6_a8_d6_4c_ca_12_72_5d_d1_51_10_f7_4a_ec_f9_9d_d3_0e_57_a7_d9_98_29_cd_87_57_b7_5b_77_2fn,\n 0x29_79_d1_ae_af_df_97_98_85_60_d4_eb_ba_cf_a6_e2_b7_f3_d0_26_94_6a_bb_b9_d5_39_76_45_e6_e8_18_25n,\n 0x15_38_91_05_2f_ca_12_90_fb_f8_32_40_d3_34_fd_4c_e0_5d_e7_8a_df_aa_2c_96_86_48_8e_0c_47_ce_1f_c0n,\n 0x1b_8c_7e_b0_4d_35_1a_ff_4e_76_af_7f_9f_a1_11_4f_e4_5a_ae_da_fd_eb_42_c1_c2_35_03_b1_22_63_9c_7bn,\n 0x2d_81_25_db_ef_60_2b_d9_70_d1_1f_ad_7c_fe_06_c3_c6_4f_56_87_b0_9b_96_0a_b9_2b_14_f6_9e_fb_ea_57n,\n 0x10_92_48_07_f6_fd_c4_e9_e5_86_79_2e_3a_ce_30_01_f1_6b_c0_2e_84_ad_a5_df_51_d7_bd_37_24_3e_e1_een,\n 0x23_09_18_91_9b_68_26_fa_a7_12_4c_5b_d1_5d_10_c0_36_d5_65_e1_00_b6_96_a3_be_7a_fa_ed_b2_ab_ba_6bn,\n 0x1d_b9_22_b8_c2_49_ff_7b_f9_61_21_ea_e9_d9_55_5e_f7_77_0f_3d_d7_b0_56_19_1a_e9_ab_38_a5_cc_f6_edn,\n ],\n [\n 0x02_28_3e_d8_d5_e6_f9_47_0b_3f_4f_49_a7_71_06_1e_4a_4f_c7_da_c6_83_de_fc_c0_34_8a_88_62_c6_ce_71n,\n 0x06_ab_86_72_c9_36_07_0a_10_75_7a_db_45_03_1a_5e_29_22_f0_fb_8b_5f_ab_3a_4f_5e_38_72_fb_58_2e_d3n,\n 0x2c_7d_53_8b_9e_6d_2b_2e_06_e7_2f_8a_aa_b2_6d_bd_de_ad_1f_ef_6a_74_0a_11_e9_95_3f_8e_8e_9e_e0_57n,\n 0x28_e4_62_0d_21_05_36_bc_aa_42_ee_46_b1_cd_cb_21_bf_21_59_33_ba_e4_ee_c6_39_ef_bd_51_f4_bb_65_57n,\n 0x00_fe_0d_ef_70_bf_ba_40_67_9a_ef_8d_5a_23_9b_3a_1b_5a_52_fe_8f_d7_ed_b7_54_ae_e2_b1_82_d6_4b_66n,\n 0x22_ae_02_35_20_97_97_41_e5_c5_8f_b0_4f_d2_5d_12_dc_8f_5f_cb_6a_d1_52_23_a5_da_7e_0f_91_c7_b4_f5n,\n 0x10_5c_0b_24_66_60_c4_bd_8a_6f_1b_36_fc_3c_ff_86_a2_c4_32_c0_dc_93_21_cb_50_ab_b9_8a_10_cd_1b_aen,\n 0x2a_5a_ba_3b_45_e7_9e_b2_60_6b_2a_5b_47_eb_90_75_84_ae_cf_bf_c0_b4_cd_50_cd_a1_ce_48_54_33_85_97n,\n 0x23_a3_b2_3d_5e_df_5c_b6_61_60_fd_25_23_b3_a3_83_14_22_91_c0_e0_ee_66_66_82_e9_46_b1_d5_79_37_d6n,\n 0x26_63_5f_4d_f7_17_21_07_da_d6_b7_c3_06_8d_2d_43_8b_fb_f4_86_47_10_39_f9_e6_5a_9c_84_62_a2_c9_c2n,\n 0x2b_b2_8e_f4_2f_5f_ad_ab_6a_6f_fd_56_55_b3_65_80_de_b0_63_ae_30_81_d5_87_bb_15_98_87_85_90_f1_ccn,\n 0x09_6d_d4_3a_83_2a_b6_8e_35_e5_7c_98_d7_b0_1f_2a_2e_59_36_80_77_04_59_3a_c7_2c_74_00_13_83_f7_e2n,\n ],\n [\n 0x21_f6_0e_fb_13_2b_62_90_99_90_b9_f9_94_f3_81_a9_c0_2a_bc_3c_cb_54_c5_c8_e8_c9_c5_66_4c_69_13_d6n,\n 0x1d_b9_8a_56_2f_cd_1a_5e_44_96_e6_12_64_aa_d5_ea_3b_45_5f_46_ea_bd_89_57_ba_67_1e_9c_31_e5_09_2bn,\n 0x2f_30_80_0c_0e_e4_61_01_05_69_d3_6b_60_68_5a_38_b0_29_12_a0_20_bc_47_08_59_88_54_f6_58_22_f1_5cn,\n 0x1e_32_b1_e2_e6_b5_92_73_a1_13_d6_09_66_3a_f6_b3_0c_95_b3_68_84_fe_5f_af_37_1d_e3_d5_64_21_3c_3bn,\n 0x1b_15_23_46_3a_45_a2_98_28_89_04_86_81_a4_22_c0_2e_a3_73_f8_b8_c1_bf_16_c7_4a_37_5d_50_60_c6_62n,\n 0x05_24_6e_e7_85_4b_2e_20_e8_61_2d_a0_21_b3_07_98_e5_f0_d0_2a_5b_fd_5e_79_d3_f9_ac_6c_79_fa_60_9bn,\n 0x06_cd_f8_05_54_39_ac_84_24_c4_35_e7_e9_be_a3_f0_ae_93_ea_b1_71_ac_38_3e_d2_ce_db_46_0f_cb_04_c4n,\n 0x2f_9a_5c_db_79_64_5e_34_54_c6_17_d7_7a_77_4f_ea_f2_4e_f6_03_45_4c_02_07_6f_c4_c9_d7_54_8c_c4_55n,\n 0x01_b1_62_5d_75_77_86_a1_9a_93_b3_7a_df_7f_22_ca_8a_50_2a_a4_46_2c_a7_8f_7d_a2_d7_c2_2b_37_d7_f9n,\n 0x28_bf_54_88_a5_25_f5_51_44_00_dc_e7_22_43_02_87_fe_8e_4c_81_01_54_05_6e_b0_f4_d6_fe_61_09_1c_f5n,\n 0x21_89_1b_ee_31_fb_7b_d8_9f_0e_44_22_b3_c8_f5_b3_93_29_9a_f0_d9_82_5d_b9_be_73_e7_b2_00_97_92_3cn,\n 0x22_82_e8_6a_de_85_85_5d_4e_a0_65_7c_4a_dd_20_62_5c_6d_aa_90_bc_93_94_3b_59_a9_2d_bb_77_b6_36_81n,\n ],\n [\n 0x1c_de_82_ac_ee_60_b8_44_24_e9_bc_ee_49_a5_46_4e_e0_5d_1c_f0_b7_04_69_20_8a_67_56_35_ac_71_54_95n,\n 0x1c_4d_de_07_d0_f9_4d_1a_aa_83_2a_c2_f5_71_2d_43_8b_4e_18_04_b5_20_9c_e5_59_42_d7_af_b2_4c_64_01n,\n 0x11_6c_45_e4_d8_8c_ea_e4_56_5c_0e_94_da_84_4e_af_27_75_d5_f5_b4_35_d9_4d_2d_3d_38_b5_83_fa_78_41n,\n 0x18_82_03_64_80_4d_22_11_93_47_b7_28_13_5b_40_99_56_f7_93_3d_ef_a1_05_9d_63_4b_97_7d_9d_3a_bc_den,\n 0x0c_84_9d_07_b1_d9_e6_ec_ba_c5_17_fc_19_23_7f_f7_34_24_a0_67_8f_94_69_9b_23_f7_69_52_af_a4_51_4cn,\n 0x2b_60_a4_d4_3d_12_cf_31_07_6e_06_90_e9_31_71_6c_47_a8_6e_77_28_c3_4b_2d_3c_b0_cb_cf_95_bb_b7_4fn,\n 0x03_16_1d_7b_94_e1_b0_41_1f_c0_1d_cf_bd_74_8a_6d_f3_15_6f_f0_45_36_b3_dd_31_01_f7_b2_eb_c3_81_1bn,\n 0x06_43_8e_8b_02_20_46_40_39_a7_b8_02_2f_06_be_ae_e5_02_c5_de_26_9d_b8_2f_91_d8_8f_e1_b7_28_34_fan,\n 0x14_89_8b_ab_c8_81_0c_bc_62_66_88_53_15_11_a8_47_3e_d8_9a_22_56_9d_47_ba_58_6c_28_4e_45_bd_0a_e0n,\n 0x00_90_df_cc_03_27_a5_41_67_2c_fc_26_c7_e1_37_05_83_c5_f9_21_41_77_09_30_10_fd_3f_bf_27_9a_af_d4n,\n 0x03_8e_0c_2e_29_c7_9c_cf_46_b5_ea_1b_c5_89_27_6a_ec_95_b7_4e_8b_b8_2e_43_85_c0_58_56_37_c8_85_f8n,\n 0x28_33_1d_0d_31_ca_86_75_ad_47_67_c4_90_26_1b_bf_e5_b8_4a_db_4c_a2_c5_59_9a_87_f3_31_90_81_30_f4n,\n ],\n [\n 0x11_8a_24_51_0a_21_53_f8_18_f0_a9_96_c8_7d_e9_13_58_78_05_f1_6c_db_19_39_d9_40_69_41_f9_58_e8_e1n,\n 0x2c_fc_82_71_2e_d9_d7_1f_f4_fd_f6_3e_e4_ad_11_6f_ac_19_57_94_f8_d9_10_28_6c_15_2e_fd_9f_95_9b_een,\n 0x2f_fc_cb_c4_00_31_eb_af_ec_fc_3a_97_28_4b_d0_f6_dc_4d_45_ec_eb_8b_89_98_f1_a6_67_be_e3_69_ed_62n,\n 0x09_b6_c0_0a_37_df_27_70_ce_c0_f1_bf_62_a6_aa_c3_bd_38_0c_6c_e9_f4_f9_6e_0f_08_79_23_7f_fa_51_0bn,\n 0x2c_40_36_61_6c_15_60_06_33_77_71_c1_e3_55_fc_0f_2f_23_8e_64_cb_d6_9d_06_8a_ab_b4_b5_81_16_88_6fn,\n 0x04_1b_90_9a_65_8d_13_69_93_b3_f5_09_a9_e9_d5_01_38_ba_ca_48_f6_b6_63_99_ac_5c_64_9e_68_dd_3a_a4n,\n 0x25_c0_75_b4_1e_a2_d8_27_a4_95_5b_64_69_db_9d_41_76_0f_af_88_5f_2c_6e_9c_09_40_7e_bb_1c_4d_c2_74n,\n 0x11_5a_91_86_72_33_cc_75_d1_c9_06_a4_29_30_e9_3c_b9_c1_6a_fc_ed_39_0c_c1_44_35_e5_cf_ef_b4_e9_6en,\n 0x2f_8f_b3_71_78_b5_25_75_8b_f6_aa_52_7f_25_77_3e_1e_bc_f8_e1_42_53_79_50_0c_82_45_c7_41_ba_3f_c4n,\n 0x29_a1_4d_c4_ba_c0_a4_c5_2b_f3_0a_af_6b_9b_8e_05_45_3d_0d_79_72_46_b6_47_32_d5_0f_17_6a_7c_a2_57n,\n 0x2c_89_dc_75_62_b9_1d_8f_2f_7d_aa_20_9b_75_60_52_0b_6b_c6_2e_c6_31_db_41_cc_5e_da_c1_fb_14_2b_e4n,\n 0x14_97_2b_fc_85_de_03_7b_07_e5_53_32_e6_bc_5b_4f_08_f3_9e_d4_eb_8a_97_21_df_fc_4a_58_6d_d9_a1_dfn,\n ],\n [\n 0x16_45_67_b0_de_16_b7_a5_55_0f_ca_22_9b_ac_7c_b0_77_95_24_32_5e_4c_a5_e7_8a_86_07_88_81_66_02_64n,\n 0x18_b4_9b_77_3f_57_99_88_8e_9a_be_3f_68_83_d7_06_33_33_83_5b_6c_dd_33_35_80_b2_b4_bf_48_f3_b2_7en,\n 0x20_07_42_4b_12_9a_de_21_94_c7_3e_6e_2c_9d_79_36_0d_13_60_c4_fb_b8_c5_f3_13_30_f9_38_55_8b_3a_cen,\n 0x04_45_e2_6e_26_f9_17_07_da_2d_f5_c1_88_ba_f8_0e_a2_f4_8c_70_36_14_98_0f_a7_98_97_1c_d8_ec_60_f5n,\n 0x17_68_04_ec_1c_f8_5d_35_29_83_51_24_5d_32_23_65_46_83_8d_9b_98_cf_42_42_d6_01_c7_e8_e5_01_b4_9bn,\n 0x25_b6_e6_5e_90_ff_bf_91_0d_19_fe_3a_e2_3d_03_7f_8f_64_da_9f_e3_df_48_3f_c4_f4_97_7c_a3_6a_7b_1cn,\n 0x2f_a2_af_79_70_e1_31_f7_ef_e3_a7_c7_88_89_0a_b8_60_f7_67_51_e5_5b_4f_f6_34_dd_46_cc_4d_e6_60_d8n,\n 0x0c_8f_d4_ec_e5_c2_05_19_0c_f6_c8_42_d1_68_34_44_07_9b_f4_98_35_d5_c8_b8_df_bb_11_af_95_6c_ca_f3n,\n 0x0e_99_2f_44_46_3e_2d_fd_26_7e_6a_4a_1c_33_03_ea_7a_11_86_25_2e_fd_6c_9f_ae_9e_5f_0c_1f_6d_82_66n,\n 0x02_60_9f_f9_7e_f5_74_fd_68_d1_6a_3d_e0_87_2c_3b_59_a5_b9_28_25_8d_d1_46_98_26_a1_91_dc_bf_5b_d0n,\n 0x15_dc_57_87_9c_b4_1d_60_15_da_98_81_f9_48_b4_0d_20_f0_e0_3f_ad_87_74_6d_85_75_af_00_9c_96_03_3dn,\n 0x06_d0_39_b6_4e_82_d7_97_5d_d2_1a_37_b5_ee_79_30_8f_20_e8_2e_23_48_93_82_ec_2d_17_61_90_58_78_96n,\n ],\n [\n 0x18_8f_f3_03_19_41_12_a7_03_45_27_cc_9d_d0_b4_de_b0_96_0c_9c_10_6c_e1_15_17_8d_d7_08_7e_4e_8c_02n,\n 0x0b_30_0d_e5_b9_9c_27_d3_32_09_1f_8f_b0_d9_7c_f0_4a_86_a5_1d_4d_20_37_78_8e_0d_4f_38_e8_f4_ea_b2n,\n 0x2c_53_d6_67_6d_4d_4c_87_d9_ea_f5_d4_da_08_d1_e9_8d_10_3a_33_88_d5_9a_7c_0c_3d_e5_1e_26_23_aa_3an,\n 0x19_f5_10_17_15_16_29_76_76_6e_2b_57_a5_86_74_bc_58_e1_ba_2b_e1_8a_59_b0_7a_07_e4_a9_3e_03_80_75n,\n 0x2f_58_55_a8_76_a3_7f_7b_bb_d6_10_4a_cc_fc_ae_50_7e_9d_dc_d2_a7_21_9b_48_7a_76_b1_7c_52_5b_50_can,\n 0x2c_0d_e4_48_a8_8d_fe_aa_cc_9b_cf_28_50_b6_ff_4f_70_1e_1a_53_8d_69_09_8b_c9_40_87_cc_35_93_09_66n,\n 0x0c_e5_87_06_6e_ae_0c_34_5c_33_68_c5_3d_ff_21_70_cd_b0_81_be_e5_2b_24_3a_1e_6d_e6_d4_f8_24_51_d7n,\n 0x2c_ea_98_cc_64_ab_d9_26_df_96_3d_a5_7f_2e_f4_c4_34_14_1c_b5_3a_c6_31_1b_25_66_ed_b9_57_98_27_13n,\n 0x2c_7a_e4_75_d9_0c_47_5f_73_c0_d2_9b_e8_88_9d_0c_4b_85_36_fe_e6_c0_38_99_84_bf_9e_4d_bb_1a_ae_6dn,\n 0x23_23_8f_da_14_17_30_2d_d0_3c_e5_46_07_74_96_10_29_29_45_bd_db_d5_87_24_17_14_fd_39_64_af_5f_10n,\n 0x1c_67_4f_f2_ea_d2_7c_e0_02_f4_be_fc_7a_d5_f0_f5_12_3e_59_79_3c_0f_e2_10_75_e8_19_ce_56_ce_1e_83n,\n 0x26_27_be_68_d9_cd_0c_cd_a3_82_8d_51_62_1b_a4_09_f9_ac_f0_9f_1a_9c_c5_03_a2_9e_c3_06_f8_60_6a_e7n,\n ],\n [\n 0x08_3d_83_2a_df_9b_b4_a2_5f_68_6a_be_da_9f_16_eb_f5_32_63_dc_f9_ef_43_11_78_1d_09_92_0d_09_4e_adn,\n 0x05_41_af_6b_96_52_46_62_08_4d_12_08_d7_1b_6b_2a_8d_66_d9_11_79_74_5b_21_36_79_c2_a2_bb_c9_49_68n,\n 0x2c_f2_c9_92_c0_2a_36_33_4f_f5_dc_85_16_46_ee_7d_a0_4b_44_eb_54_4e_e3_c0_fa_db_8d_c5_ee_f2_a5_85n,\n 0x06_c5_df_8f_d6_1e_ca_2f_b4_92_3f_0a_46_dd_4e_41_6a_3a_3b_48_c1_0d_ed_13_13_3f_fe_ab_6f_d1_53_e3n,\n 0x1a_23_3c_7c_eb_fb_0c_6e_b7_2d_fd_07_aa_2b_53_7c_cf_29_1e_84_09_3a_ae_36_cc_68_00_2f_fb_83_63_9bn,\n 0x05_f6_d6_2f_54_51_8f_03_9e_79_aa_72_6b_f1_5a_59_83_58_3e_ca_40_62_40_54_00_ac_ca_58_ca_9d_22_35n,\n 0x2b_09_de_93_c6_e3_14_8c_f7_ff_57_31_c8_e1_44_de_bb_66_ca_89_6e_cb_e4_08_9d_2d_22_cb_db_09_77_7en,\n 0x02_39_ec_d9_25_17_82_51_74_f7_96_34_5d_b2_96_56_22_23_76_0f_b1_b8_1c_09_1b_74_a6_a4_a8_29_68_a4n,\n 0x29_45_cb_85_e3_45_32_e3_a2_2f_c5_76_70_37_97_89_3c_e2_90_d0_15_64_30_a8_dc_e6_1c_9d_f8_9a_8b_d5n,\n 0x00_d3_be_6a_5b_12_bc_f1_bc_70_5c_20_c3_0f_32_0b_88_81_c6_c2_ec_00_e8_57_68_5c_05_99_26_2a_3c_f0n,\n 0x11_e7_bc_4a_39_d2_73_01_96_b6_c3_34_f9_97_50_de_5b_b5_e4_fb_ca_5d_6a_19_eb_7f_e1_4a_be_84_5d_bdn,\n 0x0c_7c_9d_b9_52_86_5f_b9_47_0f_8a_a1_40_25_36_cb_3b_82_27_6d_9e_28_80_82_ac_7f_83_b1_0b_cb_6d_17n,\n ],\n ],\n // t=13 (12 inputs)\n [\n [\n 0x0d_06_4d_ee_82_49_28_d3_9f_2a_8b_e7_d2_fa_58_32_23_c3_39_95_78_4d_22_88_39_ad_de_25_59_59_25_92n,\n 0x2b_2f_f5_f2_75_31_b6_f3_d6_a8_5d_75_e3_e0_8f_3a_2f_0d_ac_36_80_a6_c2_6d_55_ec_bf_80_3c_a8_05_69n,\n 0x0b_65_88_49_ce_62_0b_be_ef_f2_33_b7_d1_22_58_01_5e_a9_f8_7a_53_90_f5_61_49_81_eb_6e_4c_b4_a5_fan,\n 0x11_81_32_fb_c1_cd_83_f9_51_67_cb_44_73_d5_4c_6b_d2_c4_17_e2_78_2e_5e_fe_a1_6e_72_d4_7b_48_b7_0fn,\n 0x0b_59_44_76_8d_61_c1_b3_56_2a_57_49_f4_f0_6c_4d_d0_85_bb_56_2b_83_8d_7e_2e_f1_4a_21_fd_f5_24_c0n,\n 0x2b_04_d6_ff_ba_f7_14_40_12_d9_2c_5c_62_12_80_3c_0b_5b_cc_0d_7b_19_50_b8_89_d1_fa_6f_3e_56_44_5an,\n 0x29_be_2a_42_83_4a_e3_2d_e3_32_0f_b0_ee_46_b4_c1_02_a3_d1_ae_44_c5_dc_e1_52_fd_ea_b5_45_0c_9c_44n,\n 0x19_46_fe_9d_e0_a9_43_d5_a7_16_ea_c0_85_61_cd_91_f9_03_1f_ec_82_da_9a_b7_28_83_c7_b2_18_b1_1e_b7n,\n 0x1a_f3_ca_62_40_a5_5a_ba_55_df_8e_49_83_5b_92_fa_17_e3_9a_d5_70_1e_f7_0f_81_44_10_9f_89_4b_f1_d0n,\n 0x08_1f_58_a9_1a_4e_0d_10_0e_03_69_fd_d8_1a_19_00_35_34_2f_d0_67_7e_e1_bf_52_15_e4_7f_8e_58_c2_c3n,\n 0x22_a8_52_af_90_68_0a_8c_a9_68_8b_71_ed_27_c1_57_d0_2b_40_6b_d6_c7_fd_81_21_d7_c7_79_3a_d2_30_5dn,\n 0x0b_27_ba_82_a0_ff_b9_83_68_98_17_36_ae_92_7a_22_78_28_98_5c_00_c3_e5_df_8c_12_76_b1_00_10_89_a1n,\n 0x04_b4_65_26_20_7e_dc_70_a0_d2_3c_84_38_bc_49_a3_65_63_55_52_de_e2_40_66_1a_2c_de_ef_96_6f_20_f6n,\n ],\n [\n 0x2d_8c_70_03_57_31_ad_9e_fb_a9_28_21_a8_81_19_f6_b8_18_3a_36_2b_e6_41_72_9a_93_d6_a3_27_c0_38_09n,\n 0x09_ef_34_92_ad_19_dd_1d_0b_fb_eb_19_13_30_a8_80_ee_79_33_c9_d3_b3_6b_b5_fa_02_28_3b_ae_5d_60_5en,\n 0x14_58_de_51_6a_53_41_90_c5_55_0c_6a_1b_ed_3a_f5_35_c3_8b_24_2e_b9_29_13_73_09_6e_c6_0e_39_c1_f1n,\n 0x13_6e_f2_51_59_55_ff_66_19_49_8f_ac_59_42_48_16_18_9f_89_6a_c0_ed_69_b5_98_54_d1_05_df_47_c4_b4n,\n 0x18_cb_fd_e0_cd_21_c1_83_79_7a_2f_08_95_94_a8_1c_d8_28_f3_b0_74_23_71_ed_02_eb_83_fb_00_64_dd_43n,\n 0x22_75_7d_a9_e8_22_34_52_97_bd_06_0a_3f_71_bb_1e_70_ce_97_70_49_c3_93_23_50_35_67_7e_84_35_73_14n,\n 0x16_22_80_51_25_dd_f3_44_c1_8e_35_1d_11_e8_22_91_61_8b_97_58_22_ad_0c_90_3e_fb_ea_da_5a_51_d4_4fn,\n 0x29_76_5d_8c_f7_76_19_a5_80_65_8d_12_7f_b6_fa_a4_4d_6c_70_a0_f4_d6_5d_ba_a9_60_75_4b_41_95_d9_fen,\n 0x2b_b0_b6_b0_8f_c1_bd_11_07_0e_dc_42_f2_3e_80_7b_82_e8_b8_8e_f7_03_55_df_c7_4e_09_6a_7f_f3_81_cbn,\n 0x04_95_1e_74_7b_7a_e6_b9_9d_92_50_10_8c_5d_2b_70_18_1a_93_ff_1d_4b_f7_23_78_1e_1b_93_80_29_82_7cn,\n 0x17_78_0b_94_69_e8_1c_a7_0c_7c_bb_43_47_e7_fb_40_c6_3e_f6_8f_3d_de_51_d0_4c_b4_7b_3b_83_fc_29_9en,\n 0x19_13_d5_1d_9c_71_d0_42_bf_bf_64_9d_9e_6e_6e_a5_fd_d8_2b_4f_d3_17_3f_f2_fe_02_b8_55_82_52_89_12n,\n 0x2a_9e_34_2a_56_c8_b6_46_6d_3f_e5_33_b8_9f_1a_b4_41_b6_2d_ff_31_53_d3_ae_65_00_c2_c3_be_63_65_e8n,\n ],\n [\n 0x07_b6_20_c8_a7_8e_09_e4_9c_e5_47_aa_78_3a_a7_8f_3e_45_94_c4_9a_b3_dd_6f_60_2b_c6_c0_35_1d_82_3fn,\n 0x27_d6_bd_18_70_3d_7c_a9_2a_a2_40_76_d3_18_7b_6c_00_28_d0_b6_21_3d_9e_5d_2c_66_11_52_37_a1_90_51n,\n 0x29_69_eb_50_16_f2_4b_31_ac_cf_17_3c_a2_04_66_8d_c2_22_98_45_bf_64_46_ce_a0_07_c1_13_34_9b_d4_d7n,\n 0x29_c6_7b_ce_04_bf_d0_20_f4_ff_7e_ac_ab_6c_bd_e0_34_b2_2f_b8_63_34_67_5a_36_1f_05_9e_50_39_53_11n,\n 0x12_44_74_b0_88_29_d9_b7_17_c5_08_84_bc_89_5c_d3_f8_1d_51_98_59_d2_12_35_d7_a7_44_50_d0_a9_42_7bn,\n 0x2c_7e_28_f5_9f_e8_a8_a3_bb_2f_a2_b2_b1_e1_14_ce_28_3f_e2_2a_97_8a_3d_f9_f6_2a_17_1c_b1_d6_5e_4en,\n 0x16_5c_0b_97_8b_4b_b6_46_a9_ff_22_5a_c4_90_05_21_29_2b_e5_4c_87_98_82_d3_f1_1e_aa_31_03_34_14_87n,\n 0x02_06_61_34_bb_29_9d_9e_35_9c_b8_2a_83_80_fe_b6_3b_60_e4_b9_85_9d_9b_98_72_ed_af_91_52_f9_2d_4fn,\n 0x09_37_2e_d1_8b_a1_a7_74_ea_fe_1b_ff_6d_ee_c4_bc_08_14_b0_89_9c_61_96_fa_15_a7_ac_d1_5e_cc_5c_a2n,\n 0x1e_3a_13_0e_8c_af_f9_b5_e5_63_e8_aa_f8_4b_2f_c7_36_68_e3_51_cf_d2_8c_f6_6f_50_12_de_61_34_5b_58n,\n 0x25_55_43_a3_14_af_c5_a2_99_14_13_22_8c_75_ea_e3_98_b9_05_76_b2_3b_6c_d8_61_28_66_5c_c3_bd_94_78n,\n 0x07_65_47_44_9f_a0_38_45_f1_85_e6_15_78_a5_a8_f2_68_3a_19_73_3f_c0_4c_73_ac_6a_0b_89_be_bb_84_53n,\n 0x2f_98_bf_08_1e_0e_b7_8f_80_25_c0_3e_e9_c1_99_f2_e8_38_c5_1e_5a_0a_ef_d3_33_e9_f7_cf_b3_8f_53_4bn,\n ],\n [\n 0x23_19_96_b5_92_52_85_75_56_7d_39_d0_06_45_a8_3b_13_92_90_93_bb_fa_00_d6_a6_61_e4_a6_90_35_1d_0fn,\n 0x19_3f_32_a3_f8_39_f7_60_49_c9_cb_f2_41_45_90_69_8a_21_18_e8_36_58_32_7c_43_38_aa_36_48_d8_f7_d7n,\n 0x0a_5d_a6_59_b6_fc_b1_a4_27_3e_1b_7e_3b_54_4d_2c_bd_36_2c_ac_49_7a_fd_00_4b_8e_a9_20_fd_b0_4b_ffn,\n 0x02_a8_32_ce_ed_38_37_e7_42_19_6e_09_49_1f_e2_3e_3f_6e_51_12_6e_ab_9a_ce_c9_6e_71_95_31_02_ef_24n,\n 0x09_8b_b2_c4_c6_33_4d_fe_a4_74_d0_4c_b2_e9_76_18_61_f6_b1_8a_80_58_a5_2b_61_9d_62_27_a2_62_28_a8n,\n 0x10_17_49_f9_dd_26_05_19_1c_19_63_f2_56_94_ae_26_7f_6b_44_bf_e2_d1_af_34_fe_fc_b6_5e_95_87_84_b0n,\n 0x0c_7b_5e_09_34_3d_b5_c6_3c_11_0d_31_75_d0_1b_b4_98_29_0d_97_1b_1e_6d_c0_e9_a0_e9_e7_15_83_56_b1n,\n 0x11_6a_31_3d_00_cf_99_dc_18_e2_1f_93_a5_bb_19_80_18_bb_ea_4b_7c_dc_ed_3e_4d_21_09_71_dd_0a_68_1bn,\n 0x04_04_c0_fa_1b_d1_f7_e0_59_05_4c_bb_87_f6_b5_c6_9d_11_45_7e_59_f9_04_19_ce_4b_d1_0b_b8_a8_03_dfn,\n 0x0c_1c_21_6a_f3_30_54_c4_97_ef_04_38_1f_58_58_22_98_b5_43_35_f6_32_bd_62_ad_d2_9e_08_06_7a_59_d9n,\n 0x11_cb_20_54_4f_43_43_7a_68_8a_7d_cb_57_3a_7d_a4_f8_c7_b4_43_73_49_ee_df_3f_ce_43_2a_6f_3c_16_53n,\n 0x18_6f_16_0a_e8_66_e1_0c_4b_e0_ea_7d_20_4c_d6_4e_57_33_7c_60_c4_0b_34_c3_a3_71_d7_53_f2_ff_00_1an,\n 0x1e_1d_59_20_ed_cf_e9_d6_b2_d0_dd_b2_f6_f7_41_af_b0_65_90_34_0f_c0_7b_18_2e_a7_c3_eb_bd_93_39_31n,\n ],\n [\n 0x04_e4_7a_72_e4_9b_9c_5a_a3_f6_9f_6a_f2_2f_a0_ab_64_0c_93_fc_52_4d_d3_c5_08_48_6d_66_f0_79_85_2an,\n 0x23_5d_0e_71_a3_50_f1_f2_3d_9b_b5_18_2a_c4_4e_c9_e4_61_5e_77_80_1e_5a_ad_ca_b8_33_6a_ad_b1_71_2cn,\n 0x12_19_74_0c_42_47_43_db_bf_89_69_96_f0_ee_7a_40_76_ba_96_0a_57_e8_d7_67_9b_82_84_79_21_85_70_d1n,\n 0x2b_50_1f_10_03_e2_7a_a8_09_dc_9e_5c_d8_49_76_a3_b8_c1_69_c1_e9_c6_39_77_d7_82_3f_80_d3_f8_23_ben,\n 0x0f_34_db_93_ea_8d_2a_d7_d1_ef_f8_6d_b5_82_0c_c7_ad_a4_7b_dc_d8_c8_2d_01_82_1f_5c_21_a3_ea_23_25n,\n 0x04_d0_2a_b0_58_26_fa_50_bc_c5_f9_af_9e_39_64_77_e6_85_42_d0_76_b6_83_ee_61_b8_58_69_d4_53_58_93n,\n 0x2b_cc_82_e7_53_91_be_4e_a9_cd_0f_8a_50_5f_9e_4f_68_47_78_fc_7a_9b_1b_ce_b7_86_8b_b2_99_cd_20_72n,\n 0x0f_e2_9b_5b_ea_d5_4c_5b_bf_42_6b_b1_28_44_a2_92_08_84_ac_44_79_06_10_1c_ea_98_88_98_6a_03_0b_11n,\n 0x1b_b2_09_18_70_a4_fa_c0_36_82_fe_5b_1e_2e_b5_6b_14_ad_6e_48_f4_67_6f_e4_14_54_bf_ee_b0_ff_d4_d9n,\n 0x0f_54_c9_c5_22_a5_c7_4e_0d_4e_0c_63_61_1a_75_02_65_75_75_b7_a9_63_c0_e7_86_d2_a7_61_c4_e8_45_bbn,\n 0x16_0f_5a_c0_b2_48_1f_80_19_e9_5e_0b_26_44_5b_a6_4d_c0_3a_4b_e8_a1_54_61_49_62_47_e6_ac_29_00_2an,\n 0x2f_3d_6b_8e_23_61_16_60_89_50_1b_91_47_e8_4a_b6_b0_97_92_ac_17_a5_f0_80_d7_5b_3e_32_0a_ff_c8_6cn,\n 0x1b_59_bb_60_e9_86_19_49_87_fc_ea_07_04_98_bc_c7_c9_3d_d5_61_ce_8a_f5_fa_de_75_4c_ea_c0_7b_17_05n,\n ],\n [\n 0x0a_8c_b4_b2_bf_3f_0c_5d_a6_71_e4_8f_83_e5_c1_b3_01_8f_0d_31_20_0a_6f_19_fd_51_95_db_22_ee_f7_f4n,\n 0x1d_f5_c9_ef_69_4a_fe_61_bc_25_3a_e9_08_a8_f6_af_0a_08_cd_b9_e7_8a_9f_32_2c_22_38_83_22_f1_6c_2an,\n 0x13_44_31_12_8e_5f_fc_0a_b6_01_36_c5_d8_51_a1_1d_cd_d6_3c_dc_f1_7a_d6_4f_d7_75_17_70_1d_e6_75_f8n,\n 0x03_ea_4e_2b_ff_e0_2d_a5_97_7c_ed_1f_1a_6e_85_2e_92_1a_be_2e_01_5f_35_b3_6c_e4_bd_02_46_c2_cd_89n,\n 0x06_e0_3c_a1_14_67_05_52_2b_b5_e9_dc_73_56_0e_ee_e6_b9_b4_bf_51_d4_8f_95_3f_bd_1f_00_6d_75_8a_75n,\n 0x01_4c_49_9e_e5_19_25_b2_31_da_17_ee_7b_55_a7_5f_96_f4_62_e4_31_67_5e_e3_6c_7b_e4_e9_b0_69_e2_60n,\n 0x06_11_ec_d1_f3_79_a0_06_2b_05_c4_ae_db_10_0b_c0_15_24_4c_6a_88_f1_63_1a_45_6c_c2_ac_ca_89_30_ccn,\n 0x22_af_37_c0_e4_a8_8d_ea_e9_f7_fa_d8_38_19_91_07_35_cb_4b_49_31_1e_0a_ae_11_cb_75_34_d0_bc_ee_6en,\n 0x29_9e_f9_5a_ed_8c_75_49_4d_b8_2e_86_79_fb_c6_d5_a3_d2_e2_9a_ec_dc_f6_97_9a_9b_27_2a_60_7d_d5_dfn,\n 0x10_3c_c8_38_4b_e1_be_10_87_b9_bb_47_c0_eb_60_49_f8_5e_04_13_f7_b4_08_f1_dc_2f_a1_e6_fc_4a_f9_1bn,\n 0x20_6c_f4_29_0a_c9_84_43_4f_a7_74_bb_0f_89_01_a2_33_90_56_32_b7_93_c8_0b_1d_59_96_6e_96_a7_38_32n,\n 0x0d_d8_5d_cf_08_fd_38_d2_2f_31_6d_91_d8_12_cb_2a_88_43_08_77_5a_fa_9f_66_7c_6c_a8_09_54_39_7c_86n,\n 0x24_ce_0a_cb_52_2d_a5_27_d3_ea_b7_28_65_cf_07_3d_95_4b_ab_be_d3_cd_17_06_aa_69_d7_67_e9_af_e7_cdn,\n ],\n [\n 0x18_bb_b0_02_b4_6f_2e_5f_ec_2b_12_0f_af_87_82_2c_a8_e7_7a_ce_94_e0_3a_ab_5c_16_c4_b9_31_73_9d_c8n,\n 0x1d_b2_02_1e_ca_3a_36_24_a7_d4_5b_b1_6c_f4_a4_4e_2a_f4_fa_e0_dc_28_00_30_e7_eb_e5_53_94_f6_9d_8cn,\n 0x09_7c_61_33_ae_a8_fe_48_f3_a5_fc_41_6b_df_5e_46_d0_5d_e0_72_3b_c4_9e_53_b9_fb_5e_83_d3_50_c2_95n,\n 0x15_0e_f9_e9_32_a7_4b_8d_eb_f6_70_08_06_41_33_9b_12_68_4f_f5_a3_03_b2_fb_7c_1d_8d_56_f5_6a_b6_1fn,\n 0x12_37_f4_4f_03_6b_2d_a0_06_7a_94_94_73_34_e3_af_a2_ac_4c_f1_00_98_96_76_6f_5b_19_1c_de_28_49_72n,\n 0x2d_9e_a9_9d_2d_23_73_28_26_6d_59_dd_7e_01_8b_bd_6b_cc_79_41_d9_ff_5f_07_a1_7b_af_00_99_f6_14_d2n,\n 0x04_77_f9_51_e1_9f_53_1b_84_34_ad_75_5b_67_83_d6_1b_67_9e_fb_b8_7f_d9_56_e3_94_db_9c_43_4e_23_52n,\n 0x1d_8b_8b_a7_72_c4_cd_a7_2e_8e_f9_b1_9c_42_4d_55_d5_72_51_b2_47_c6_32_be_a2_55_27_1a_fc_fc_70_b6n,\n 0x20_6a_a2_f3_6e_32_b2_b0_6d_6b_e4_8a_d4_93_d3_54_ca_74_68_75_3f_52_6e_6b_d8_25_49_fc_36_cd_41_09n,\n 0x28_da_93_09_ac_ca_10_3e_cf_19_df_72_a7_22_13_4d_53_0b_ae_6c_66_0d_b3_c3_64_d0_eb_b2_00_c2_ae_aan,\n 0x01_b9_43_58_55_d6_cc_43_39_24_0e_9f_a3_81_9c_2f_f4_20_98_0d_6c_f1_47_21_b7_5e_4c_b1_fe_57_e1_18n,\n 0x23_88_32_e6_43_15_8e_96_68_9b_58_03_b0_b7_76_01_b5_9b_df_b4_92_61_13_a3_45_5f_1f_f4_df_6e_2b_46n,\n 0x0b_43_b8_fa_cc_43_cf_c0_67_b5_51_3a_bc_ce_84_65_04_b9_39_5c_dc_14_df_96_86_1a_52_8a_52_ae_2e_c5n,\n ],\n [\n 0x02_bf_ae_1b_05_4e_f2_e9_24_d7_5a_8a_01_28_3d_a2_91_03_c5_7b_ad_12_9e_c8_39_6c_e2_74_ba_45_24_dfn,\n 0x1a_46_a2_66_91_84_1c_26_10_9a_32_ae_07_eb_58_4a_6b_8a_f6_57_27_3c_dc_4d_8a_11_2d_ea_0b_cc_85_cfn,\n 0x10_7d_a0_78_4d_fb_31_4d_82_85_9b_e4_4d_37_b4_d2_b6_34_5c_17_4b_91_65_1c_65_c9_84_49_68_2a_52_04n,\n 0x2b_45_b3_be_26_74_fd_82_05_16_ac_d6_cc_61_83_c4_fa_e0_f7_ed_fa_9a_fc_d0_2d_fe_ec_cd_02_bf_ed_46n,\n 0x20_82_e9_10_3c_c4_52_45_92_42_89_11_15_27_31_28_60_f6_e7_ee_94_57_8f_01_18_f4_a9_20_d0_f8_d5_25n,\n 0x30_3a_9e_22_85_5d_95_d0_7e_81_72_f3_a0_53_6d_4b_95_14_2f_96_2b_00_6a_8a_b0_9e_7b_b6_33_5e_84_87n,\n 0x29_63_51_43_13_f0_46_f8_44_f9_50_ff_ea_80_f5_e5_b4_24_b7_07_f1_65_99_66_2e_5a_2e_36_68_cb_e5_fbn,\n 0x04_b7_f8_d1_d5_ec_8b_f6_89_ad_f1_2d_65_6b_94_e1_5b_0b_22_9c_16_38_c9_c4_75_7f_af_0d_18_fa_64_33n,\n 0x25_95_47_16_8b_64_b2_a2_28_94_1a_54_2f_39_4a_26_99_c0_81_c1_49_46_3d_c2_c3_d2_1f_d8_b2_e4_f3_1cn,\n 0x27_91_9d_d2_f9_d3_dc_9f_cb_da_1a_23_b9_5c_f2_3e_36_30_e6_fd_52_10_fa_ca_6a_cf_46_29_b8_8e_5f_f1n,\n 0x2b_92_37_e5_94_1e_16_57_ef_a5_07_b8_92_c3_b8_dd_57_fc_8d_52_87_6e_cb_59_9d_d5_e1_05_2b_6b_1f_2fn,\n 0x20_2e_38_e6_69_88_36_19_ec_bc_6a_6a_45_36_8b_9b_9a_3e_9a_b6_7e_fe_f5_0f_89_6d_fe_48_b7_8d_3d_acn,\n 0x26_27_58_fb_3e_07_69_36_99_5f_f3_14_0e_f7_d1_b0_a1_e0_fe_42_40_a5_07_47_e2_c3_c1_20_d9_77_f3_acn,\n ],\n [\n 0x06_d1_01_b1_94_77_d1_62_7b_95_42_58_1b_f0_cd_fa_b3_8b_05_cd_ef_dc_b8_19_65_c5_be_00_d7_80_f1_92n,\n 0x0c_ae_80_cc_05_ae_db_66_d6_e6_49_b0_57_db_c5_ae_97_59_da_5d_7b_43_d5_e2_5a_40_0e_1f_92_e9_d1_aan,\n 0x12_25_6b_3b_99_d3_1d_8a_37_29_86_f9_5d_66_cc_13_9d_d2_3e_93_54_87_da_26_b3_e2_49_ea_7c_bf_91_aen,\n 0x23_89_65_d6_58_96_7a_fa_2b_ce_50_ff_18_cb_be_53_53_27_c6_5b_0b_76_e5_0d_a3_07_39_de_d2_5e_b4_92n,\n 0x23_a6_e1_43_28_4e_8f_23_8c_4b_63_2a_d7_8a_ce_5b_0d_cd_94_a8_97_cb_05_d1_e2_97_b4_88_0e_74_33_b2n,\n 0x24_e1_3a_38_f0_4d_5e_0f_c0_b6_b6_e0_f7_82_a6_a5_23_a8_b3_b0_12_72_24_b8_e2_37_51_b9_cb_9f_89_60n,\n 0x09_01_0d_73_67_76_20_aa_e1_b0_fa_80_23_ff_1c_81_23_13_ae_9c_3b_f4_30_66_ea_60_bc_1a_b4_77_a7_f8n,\n 0x0a_41_e5_a4_42_1d_ef_d5_ed_7a_cf_d4_84_01_39_5a_40_9a_67_c3_ed_f4_c1_68_ce_33_68_ed_94_42_12_d7n,\n 0x2f_c7_d1_7f_3a_9a_fc_1d_e2_89_ad_0f_94_12_6a_ee_c8_34_49_81_20_62_9c_c8_7c_45_86_c6_27_78_00_75n,\n 0x1f_86_e3_e9_d1_47_ed_60_4c_71_e1_fb_6e_f8_45_9c_fc_40_00_1b_b4_fc_5c_cc_26_61_66_9b_15_5a_be_ban,\n 0x18_2d_8f_91_ee_2a_9a_26_21_5b_35_f3_c0_ee_cf_8e_c5_cc_36_01_24_cf_6b_90_3e_70_ca_83_12_69_75_dcn,\n 0x06_7d_2b_61_2d_75_f4_f9_74_31_2d_04_ae_0f_ef_43_a3_5b_60_ef_05_4c_0f_47_53_02_c5_5f_c1_0b_da_b0n,\n 0x0e_ab_3f_26_41_7e_6b_53_c5_32_07_2d_e9_2d_4a_a7_8c_cd_f1_da_91_66_0a_46_1a_bb_0f_9f_d7_bd_cd_7fn,\n ],\n [\n 0x18_af_61_f6_18_4f_f8_5f_10_4c_2b_ef_17_9b_3e_c5_a5_d2_42_df_be_be_8e_27_a2_91_8f_62_0e_8a_5b_e8n,\n 0x19_50_57_af_13_19_e2_4d_f1_b9_05_c6_e2_eb_29_57_00_3c_fc_34_b0_01_c0_e5_4b_9d_cf_2e_a5_df_6b_e9n,\n 0x1d_95_2e_bf_fc_be_dd_26_03_6c_54_a1_e8_a2_82_8f_e3_20_ad_f0_7a_28_6e_7f_2c_21_1b_47_f6_c3_ee_86n,\n 0x03_70_b7_57_ac_6c_dd_46_61_0e_ec_0c_22_d4_3a_54_3d_5e_04_82_57_7b_bd_c1_4e_71_09_03_07_b5_f6_9an,\n 0x22_e0_76_a3_aa_6e_bf_e9_96_ba_06_8b_f5_bf_fb_17_fa_72_43_38_cd_67_f6_7e_a2_53_30_19_5c_62_81_72n,\n 0x12_68_51_f3_ea_dc_01_83_28_8a_75_01_53_91_0a_41_e0_74_b3_54_4f_06_10_a5_12_73_ad_36_98_be_0c_b9n,\n 0x03_61_f4_08_2b_75_a6_eb_d2_3f_9a_6e_73_09_d8_c4_e7_52_01_59_da_23_44_1e_dd_63_1a_6a_c1_4c_20_cdn,\n 0x1a_be_8b_ad_b2_d1_23_53_b9_bb_98_15_20_86_a9_42_1b_7c_ee_17_76_17_30_e2_5a_c2_84_d6_b1_ed_7b_37n,\n 0x15_a7_e6_4a_5a_46_f5_97_3e_4e_82_a2_63_ef_90_5e_d6_4f_18_2b_20_41_ba_a0_0a_13_59_e7_e9_c5_ed_a7n,\n 0x0e_15_4e_bd_50_db_3c_28_64_db_e1_ed_72_b0_81_62_10_85_1b_86_c3_53_69_2d_17_44_cb_33_72_bf_a7_2dn,\n 0x25_52_8d_5d_31_db_d7_7c_fa_6e_7b_18_47_f8_e8_4c_81_c1_ed_5b_ae_2a_51_c9_e4_03_cc_75_4c_54_bb_55n,\n 0x21_f0_c6_b8_96_fb_14_22_0d_81_14_41_62_9c_78_f8_e8_e2_77_46_02_62_20_e3_31_cc_eb_89_a0_ee_89_a3n,\n 0x20_ad_de_b2_af_d2_0e_75_2a_39_d2_f2_1e_bd_dc_27_72_77_3b_06_29_22_dc_8d_d3_ba_06_88_36_db_a4_64n,\n ],\n [\n 0x11_e3_a7_c2_d5_f7_43_71_be_b1_88_c6_e3_d7_a1_4b_33_12_8a_f8_ee_32_87_54_6d_12_d7_77_7c_ef_70_cbn,\n 0x2d_4d_35_ac_d9_f2_8a_3e_6b_fd_60_14_72_94_82_93_c1_e4_f0_84_c7_14_dd_b1_a0_75_f2_ea_e9_ce_21_b3n,\n 0x26_30_9b_52_cb_55_f6_ea_5a_90_30_b0_13_78_f6_5d_2e_6b_7a_96_19_92_6d_9b_1b_1e_21_cb_a0_1f_a7_e1n,\n 0x2a_a8_4c_1e_f9_e8_48_a6_4f_74_8b_80_e2_79_dd_cf_f8_71_e9_c4_c3_e2_fa_fa_af_79_15_9b_0b_4e_40_18n,\n 0x2f_e3_1b_0d_f0_4f_27_6a_52_5b_61_9a_cc_4a_5b_a3_eb_58_d8_c3_21_c6_23_90_fe_ba_b0_5e_cd_bc_79_8dn,\n 0x27_c1_b4_06_bd_19_ed_13_d5_33_55_0b_8b_62_11_86_b1_fd_47_f6_71_e6_60_46_80_31_7e_66_38_b0_91_e1n,\n 0x0c_eb_cf_30_97_5b_37_26_7a_ed_f5_21_ee_2b_c7_53_c3_42_4d_c4_b6_ed_f3_98_4f_b0_2a_e1_ea_d4_4d_afn,\n 0x29_1c_0d_a7_31_c0_16_c0_d6_c4_c7_53_87_03_0a_96_2b_f7_a2_eb_35_e1_5a_ac_02_fa_df_53_02_78_a3_d1n,\n 0x12_16_f0_56_07_e0_32_e4_90_38_ac_14_58_10_0e_89_ac_85_19_a5_a3_ce_e4_54_5b_08_85_0d_8b_f1_60_e0n,\n 0x19_ae_65_94_5a_1d_be_d3_96_5f_2d_e3_a3_9f_f2_d5_4a_b1_de_e0_f3_33_b8_8f_b4_9e_db_3f_c9_ac_78_99n,\n 0x2f_99_6a_e6_20_d0_0a_3d_4e_55_ef_7a_6c_e0_b6_81_38_8f_1b_7f_f3_87_5b_72_5a_ea_6e_b9_03_9d_8b_25n,\n 0x2c_82_5e_e5_61_c4_ab_6a_22_33_11_77_99_9c_89_80_6f_bc_34_51_83_87_e8_07_c2_0c_35_97_39_ba_9e_b6n,\n 0x07_54_94_74_36_c3_cd_ed_29_a6_0c_9e_89_82_37_c2_18_3a_49_db_7e_70_e7_eb_73_ae_fb_4b_5c_69_32_46n,\n ],\n [\n 0x2d_e5_d6_a7_a2_73_43_dd_04_22_ac_71_b8_d4_09_b4_3c_cb_0b_67_2e_97_8f_8f_df_d2_14_f4_d7_86_64_04n,\n 0x02_5e_b2_ed_84_c5_20_ab_a1_64_e3_3f_03_53_b5_13_18_86_c0_fb_d1_8e_55_69_55_41_51_2d_ec_56_3a_0cn,\n 0x0a_12_52_5f_07_81_32_23_71_fd_70_b0_92_8c_ce_6e_2e_aa_a6_7b_89_70_dc_df_31_9d_f2_5e_80_19_a6_den,\n 0x1b_bf_43_dd_b5_a0_b0_d2_84_59_23_b1_ce_12_82_92_35_9c_bb_31_3c_58_76_fb_b5_2f_5e_6b_1f_cb_70_31n,\n 0x23_e8_c3_60_6a_ee_81_8d_2a_fa_8c_44_65_d5_ec_b9_c4_5b_de_78_dd_81_9c_0f_35_a6_20_59_3c_1f_42_e6n,\n 0x15_88_80_f5_ad_b9_6d_d1_39_81_28_b9_ff_33_9f_3d_82_7d_a6_46_38_91_cc_a1_29_c0_12_c0_6b_16_b3_21n,\n 0x23_a1_ac_07_35_19_46_a9_74_c8_84_1e_92_09_2a_4f_fc_6a_ef_c7_fa_98_8e_3c_1f_7e_7c_87_e1_51_2a_90n,\n 0x03_4c_46_0f_ff_28_86_2e_f7_a5_09_a1_75_0a_26_ed_1e_59_60_fc_b5_8c_4f_48_c7_d2_67_c7_7e_58_dd_66n,\n 0x22_3d_b1_8f_31_c8_5e_98_e1_dd_7b_72_45_dd_dd_a0_ff_8e_31_9b_d7_d1_a6_7f_db_c7_ee_f5_6d_66_78_18n,\n 0x00_99_b9_7c_87_8c_e3_5c_95_7d_01_b4_3d_ab_07_f8_00_3e_2c_37_9b_41_ca_61_a6_e5_6a_92_04_fb_16_bcn,\n 0x2c_2b_1e_7c_70_fe_c2_f5_8c_a0_1b_ef_5a_c3_7c_bb_94_71_ae_79_14_bf_08_df_7e_47_dd_8e_3b_c3_ce_93n,\n 0x04_62_5f_22_58_ed_f0_26_2b_a0_64_7c_ae_42_6a_48_6f_c8_01_dc_0b_59_d2_0e_c0_f4_d0_af_8c_bd_23_cen,\n 0x23_9c_a6_1a_6e_f7_e5_01_81_0a_a8_9a_b4_99_6d_be_a8_fb_d4_7f_d2_f7_a2_c9_6a_81_8e_93_a3_c3_8c_89n,\n ],\n [\n 0x22_7c_b4_3b_98_18_92_4f_2a_25_88_96_4a_0a_d7_dd_fa_3d_f6_22_84_b4_b3_b1_01_99_a5_01_ed_97_06_22n,\n 0x16_c7_c5_c6_16_1e_da_32_c6_5b_b3_47_65_5a_ca_a8_0b_cc_98_bf_c0_23_f4_ab_12_f5_b2_a8_99_f3_7e_3dn,\n 0x27_e3_7c_68_a0_15_30_f0_92_cd_37_c4_a2_6d_ec_e2_73_78_68_dc_2c_35_19_43_5e_1f_2c_b8_8f_07_b6_2cn,\n 0x19_dd_1c_6d_45_29_82_48_ad_49_95_31_f3_3c_e0_02_50_54_58_d7_61_78_ec_a2_62_98_e3_9a_62_fb_95_01n,\n 0x21_5f_55_63_46_4e_2d_f6_a8_da_a8_c3_44_76_a4_65_e4_ee_9f_a0_ad_01_fc_43_99_b6_49_b2_e0_7d_16_79n,\n 0x00_f3_6d_16_6e_99_13_9b_9b_fc_1a_c3_27_0a_3d_98_c4_af_a8_1b_f9_74_36_07_6f_57_38_3d_a5_04_36_a5n,\n 0x1e_dd_7c_7d_ea_f2_49_e0_fd_3f_57_68_aa_92_e9_da_d6_41_18_b4_91_bc_ce_12_34_0c_46_f2_10_b0_7c_edn,\n 0x08_e1_74_1a_97_f6_34_8e_d6_d6_8f_4b_7b_c6_ec_8b_2d_bf_03_f4_26_76_9c_c7_79_ce_ee_4b_a1_be_b0_3fn,\n 0x2f_4a_a8_64_1e_a4_13_50_31_f4_d9_7a_7a_2f_67_9a_8c_bc_a5_62_ba_6a_a5_4e_ae_7d_32_ff_7d_04_db_d2n,\n 0x21_a0_a4_3c_88_ce_26_ef_fb_f8_b9_ad_66_80_56_b5_b0_36_2e_50_09_f3_d8_00_33_db_47_32_28_fb_7f_c8n,\n 0x03_1b_36_9d_01_1f_21_9e_4a_8f_b2_1d_f9_35_28_78_d9_3f_f8_03_5b_cd_a8_34_c3_dc_c4_1c_3c_2d_f8_5dn,\n 0x02_0a_72_08_35_79_05_9c_b6_59_95_2d_3f_2a_01_ed_90_d2_10_02_27_5b_5e_a1_1f_20_9c_76_3b_aa_84_57n,\n 0x19_f1_17_71_04_9b_5b_e8_1b_43_ca_81_e3_61_1f_41_08_a4_b9_dc_30_cd_12_24_41_f7_43_19_c3_ad_cd_e9n,\n ],\n ],\n];\n\n/**\n * Round constants for the Poseidon permutation for all supported arities.\n *\n * @remarks\n * This array holds one flat list of round constants for each supported state size `t`,\n * indexed from `t=2` (index 0) through `t=13` (index 11). The constants are stored in\n * a flat (one-dimensional) array per arity and are split into per-round sub-arrays at\n * runtime.\n *\n * ## Role in Poseidon\n *\n * Round constants are added to every state element before the S-box application in each\n * round. Their purpose is to break the otherwise symmetric algebraic structure of the\n * cipher, preventing wide-pipe differential and invariant-subspace attacks.\n *\n * ## Array Layout\n *\n * `POSEIDON_C[i]` corresponds to state size `t = i + 2`:\n * - Index 0 (t=2, 1 input): 128 constants (64 rounds × 2 elements)\n * - Index 1 (t=3, 2 inputs): 195 constants (65 rounds × 3 elements)\n * - Index 2 (t=4, 3 inputs): 256 constants (64 rounds × 4 elements)\n * - Index 3 (t=5, 4 inputs): 340 constants (68 rounds × 5 elements)\n * - Index 4 (t=6, 5 inputs): 408 constants (68 rounds × 6 elements)\n * - Index 5 (t=7, 6 inputs): 497 constants (71 rounds × 7 elements)\n * - Index 6 (t=8, 7 inputs): 576 constants (72 rounds × 8 elements)\n * - Index 7 (t=9, 8 inputs): 639 constants (71 rounds × 9 elements)\n * - Index 8 (t=10, 9 inputs): 680 constants (68 rounds × 10 elements)\n * - Index 9 (t=11, 10 inputs): 814 constants (74 rounds × 11 elements)\n * - Index 10 (t=12, 11 inputs): 816 constants (68 rounds × 12 elements)\n * - Index 11 (t=13, 12 inputs): 949 constants (73 rounds × 13 elements)\n *\n * ## Provenance\n *\n * All constants are sourced from circomlibjs v0.1.7 (`poseidon_constants.json`) and are\n * bit-exact with Circom's reference implementation, ensuring compatibility with circuits\n * compiled with the standard Poseidon template.\n *\n * @see {@link POSEIDON_M} for the MDS matrices used in the linear mixing layer.\n * @see {@link ROUNDS_FULL} for the number of full rounds.\n * @see {@link ROUNDS_PARTIAL} for the per-arity partial round counts.\n *\n * @example\n * ```typescript\n * // Retrieve all round constants for t=3 (2 inputs):\n * const constants = POSEIDON_C[1]; // 195-element flat array\n * // At runtime the hash implementation splits these into per-round arrays of length t\n * ```\n *\n * @internal\n */\n// Round constants for t=2 to t=13\nconst POSEIDON_C: bigint[][] = [\n // t=2 (1 input) - 128 constants\n [\n 0x09_c4_6e_9e_c6_8e_9b_d4_fe_1f_aa_ba_29_4c_ba_38_a7_1a_a1_77_53_4c_dd_1b_6c_7d_c0_db_d0_ab_d7_a7n,\n 0x0c_03_56_53_08_96_ee_c4_2a_97_ed_93_7f_31_35_cf_c5_14_2b_3a_e4_05_b8_34_3c_1d_83_ff_a6_04_cb_81n,\n 0x1e_28_a1_d9_35_69_8a_d1_14_2e_51_18_2b_b5_4c_f4_a0_0e_a5_aa_bd_62_68_bd_31_7e_a9_77_cc_15_4a_30n,\n 0x27_af_2d_83_1a_9d_27_48_08_09_65_db_30_e2_98_e4_0e_57_57_c3_e0_08_db_96_4c_f9_e2_b1_2b_91_25_1fn,\n 0x1e_6f_11_ce_60_fc_8f_51_3a_6a_3c_fe_16_ae_17_5a_41_29_14_62_f2_14_cd_08_79_aa_f4_35_45_b7_4e_03n,\n 0x2a_67_38_4d_3b_bd_5e_43_85_41_81_9c_b6_81_f0_be_04_46_2e_d1_4c_36_13_d8_f7_19_20_62_68_d1_42_d3n,\n 0x0b_66_fd_f3_56_09_3a_61_16_09_f8_e1_2f_bf_ec_f0_b9_85_e3_81_f0_25_18_89_36_40_8f_5d_5c_9f_45_d0n,\n 0x01_2e_e3_ec_1e_78_d4_70_83_0c_61_09_3c_2a_de_37_0b_26_c8_3c_c5_ce_be_ed_da_a6_85_2d_bd_b0_9e_21n,\n 0x02_52_ba_5f_67_60_bf_bd_fd_88_f6_7f_81_75_e3_fd_6c_d1_c4_31_b0_99_b6_bb_2d_10_8e_7b_44_5b_b1_b9n,\n 0x17_94_74_cc_ec_a5_ff_67_6c_6b_ec_3c_ef_54_29_63_54_39_1a_89_35_ff_71_d6_ef_5a_ea_ad_7c_a9_32_f1n,\n 0x2c_24_26_13_79_a5_1b_fa_92_28_ff_4a_50_3f_d4_ed_9c_1f_97_4a_26_49_69_b3_7e_1a_25_89_bb_ed_2b_91n,\n 0x1c_c1_d7_b6_26_92_e6_3e_ac_2f_28_8b_d0_69_5b_43_c2_f6_3f_50_01_fc_0f_c5_53_e6_6c_05_51_80_1b_05n,\n 0x25_50_59_30_1a_ad_a9_8b_b2_ed_55_f8_52_97_9e_96_00_78_4d_bf_17_fb_ac_d0_5d_9e_ff_5f_d9_c9_1b_56n,\n 0x28_43_7b_e3_ac_1c_b2_e4_79_e1_f5_c0_ec_cd_32_b3_ae_a2_42_34_97_0a_81_93_b1_1c_29_ce_7e_59_ef_d9n,\n 0x28_21_6a_44_2f_2e_1f_71_1c_a4_fa_6b_53_76_6e_b1_18_54_8d_a8_fb_4f_78_d4_33_87_62_c3_7f_5f_20_43n,\n 0x2c_1f_47_cd_17_fa_5a_df_1f_39_f4_e7_05_6d_d0_3f_ee_e1_ef_ce_03_09_45_81_13_1f_23_77_32_34_82_c9n,\n 0x07_ab_ad_02_b7_a5_eb_c4_86_32_bc_c9_35_6c_eb_7d_d9_da_fc_a2_76_63_8a_63_64_6b_85_66_a6_21_af_c9n,\n 0x02_30_26_46_01_ff_df_29_27_5b_33_ff_aa_b5_1d_fe_94_29_f9_08_80_a6_9c_d1_37_da_0c_4d_15_f9_6c_3cn,\n 0x1b_c9_73_05_4e_51_d9_05_a0_f1_68_65_64_97_ca_40_a8_64_41_45_57_ee_28_9e_71_7e_5d_66_89_9a_a0_a9n,\n 0x2e_1c_22_f9_64_43_50_08_20_6c_31_57_e8_63_41_ed_d2_49_af_f5_c2_d8_42_1f_2a_6b_22_28_8f_0a_67_fcn,\n 0x12_24_f3_8d_f6_7c_53_78_12_1c_1d_5f_46_1b_bc_50_9e_8e_a1_59_8e_46_c9_f7_a7_04_52_bc_2b_ba_86_b8n,\n 0x02_e4_e6_9d_8b_a5_9e_51_92_80_b4_bd_9e_d0_06_8f_d7_bf_e8_cd_9d_fe_da_19_69_d2_98_91_86_cd_e2_0en,\n 0x1f_1e_cc_c3_4a_ab_a0_13_7f_5d_f8_1f_c0_4f_f3_ee_4f_19_ee_36_4e_65_3f_07_6d_47_e9_73_5d_98_01_8en,\n 0x16_72_ad_3d_70_9a_35_39_74_26_6c_30_39_a9_a7_31_14_24_44_80_32_cd_18_19_ea_cb_8a_4d_42_84_f5_82n,\n 0x28_3e_3f_dc_2c_6e_42_0c_56_f4_4a_f5_19_2b_4a_e9_cd_a6_96_1f_28_4d_24_99_1d_2e_d6_02_df_8c_8f_c7n,\n 0x1c_2a_3d_12_0c_55_0e_cf_d0_db_09_57_17_0f_a0_13_68_37_51_f8_fd_ff_59_d6_61_4f_bd_69_ff_39_4b_ccn,\n 0x21_6f_84_87_7a_ac_61_72_f7_89_7a_73_23_45_6e_fe_14_3a_9a_43_77_3e_a6_f2_96_cb_6b_81_77_65_3f_bdn,\n 0x2c_0d_27_2b_ec_f2_a7_57_64_ba_7e_8e_3e_28_d1_2b_ce_aa_47_ea_61_ca_59_a4_11_a1_f5_15_52_f9_47_88n,\n 0x16_e3_42_99_86_5c_0e_28_48_4e_e7_a7_4c_45_4e_9f_17_0a_54_80_ab_e0_50_8f_cb_4a_6c_3d_89_54_6f_43n,\n 0x17_5c_eb_a5_99_e9_6f_5b_37_5a_23_2a_6f_b9_cc_71_77_20_47_76_58_02_29_0f_48_cd_93_97_55_48_8f_c5n,\n 0x0c_75_94_44_0d_c4_8c_16_fe_ad_9e_17_58_b0_28_06_6a_a4_10_bf_bc_35_4f_54_d8_c5_ff_bb_44_a1_ee_32n,\n 0x1a_3c_29_bc_39_f2_1b_b5_c4_66_db_7d_7e_b6_fd_8f_76_0e_20_01_3c_cf_91_2c_92_47_98_82_d9_19_fd_8dn,\n 0x0c_cf_dd_90_6f_34_26_e5_c0_98_6e_a0_49_b2_53_40_08_55_d3_49_07_4f_5a_66_95_c8_ee_ab_cd_22_e6_8fn,\n 0x14_f6_bc_81_d9_f1_86_f6_2b_db_47_5c_e6_c9_41_18_66_a7_a8_a3_fd_06_5b_3c_e0_e6_99_b6_7d_d9_e7_96n,\n 0x09_62_b8_27_89_fb_3d_12_97_02_ca_70_b2_f6_c5_aa_cc_09_98_10_c9_c4_95_c8_88_ed_eb_73_86_b9_70_52n,\n 0x1a_88_0a_f7_07_4d_18_b3_bf_20_c7_9d_e2_51_27_bc_13_28_4a_b0_1e_f0_25_75_af_ef_0c_8f_6a_31_a8_6dn,\n 0x10_cb_a1_84_19_a6_a3_32_cd_5e_77_f0_21_1c_15_4b_20_af_29_24_fc_20_ff_3f_4c_30_12_bb_7a_e9_31_1bn,\n 0x05_7e_62_a9_a8_f8_9b_3e_bd_c7_6b_a6_3a_9e_ac_a8_fa_27_b7_31_9c_ae_34_06_75_6a_28_49_f3_02_f1_0dn,\n 0x28_7c_97_1d_e9_1d_c0_ab_d4_4a_df_53_84_b4_98_8c_b9_61_30_3b_bf_65_cf_f5_af_a0_41_3b_44_28_0c_een,\n 0x21_df_33_88_af_16_87_bb_b3_bc_a9_da_0c_ca_90_8f_1e_56_2b_c4_6d_4a_ba_4e_6f_7f_79_60_e3_06_89_1dn,\n 0x1b_e5_c8_87_d2_5b_ce_70_3e_25_cc_97_4d_09_34_cd_78_9d_f8_f7_0b_49_8f_d8_3e_ff_8b_56_0e_16_82_b3n,\n 0x26_8d_a3_6f_76_e5_68_fb_68_11_71_75_ce_a2_cd_0d_d2_cb_5d_42_fd_a5_ac_ea_48_d5_9c_27_06_a0_d5_c1n,\n 0x0e_17_ab_09_1f_6e_ae_50_c6_09_be_af_55_10_ec_ec_c5_d8_bb_74_13_5e_bd_05_bd_06_46_0c_c2_6a_5e_d6n,\n 0x04_d7_27_e7_28_ff_a0_a6_7a_ee_53_5a_b0_74_a4_30_91_ef_62_d8_cf_83_d2_70_04_0f_5c_aa_1f_62_af_40n,\n 0x0d_db_d7_bf_9c_29_34_15_81_b5_49_76_2b_c0_22_ed_33_70_2a_c1_0f_1b_fd_86_2b_15_41_7d_7e_39_ca_6en,\n 0x27_90_eb_33_51_62_17_52_76_81_62_e8_29_89_c6_c2_34_f5_b0_d1_d3_af_9b_58_8a_29_c4_9c_87_89_65_4bn,\n 0x1e_45_7c_60_1a_63_b7_3e_44_71_95_01_93_d8_a5_70_39_5f_3d_9a_b8_b2_fd_09_84_b7_64_20_61_42_f9_e9n,\n 0x21_ae_64_30_1d_ca_96_25_63_8d_6a_b2_bb_e7_13_5f_fa_90_ec_d0_c4_3f_f9_1f_c4_c6_86_fc_46_e0_91_b0n,\n 0x03_79_f6_3c_8c_e3_46_8d_4d_a2_93_16_6f_49_49_28_85_4b_e9_e3_43_2e_09_55_58_58_53_4e_ed_8d_35_0bn,\n 0x00_2d_56_42_03_59_d0_26_6a_74_4a_08_08_09_e0_54_ca_0e_49_21_a4_66_86_ac_8c_9f_58_a3_24_c3_50_49n,\n 0x12_31_58_e5_96_5b_5d_9b_1d_68_b3_cd_32_e1_0b_be_da_8d_62_45_9e_21_f4_09_0f_c2_c5_af_96_35_15_a6n,\n 0x0b_e2_9f_c4_08_47_a9_41_66_1d_14_bb_f6_cb_e0_42_0f_bb_2b_6f_52_83_6d_4e_60_c8_0e_b4_9c_ad_9e_c1n,\n 0x1a_c9_69_91_de_c2_bb_05_57_71_61_42_01_5a_45_3c_36_db_9d_85_9c_ad_5f_9a_23_38_02_f2_4f_df_4c_1an,\n 0x15_96_44_3f_76_3d_bc_c2_5f_49_64_fc_61_d2_3b_3e_5e_12_c9_fa_97_f1_8a_92_51_ca_33_55_bc_b0_62_7en,\n 0x12_e0_bc_d3_65_4b_df_a7_6b_28_61_d4_ec_3a_ea_e0_f1_85_7d_9f_17_e7_15_ae_d6_d0_49_ea_e3_ba_32_12n,\n 0x0f_c9_2b_4f_1b_be_a8_2b_9e_a7_3d_4a_f9_af_2a_50_ce_ab_ac_7f_37_15_4b_19_04_e6_c7_6c_7c_f9_64_ban,\n 0x1f_9c_0b_16_10_44_64_42_d6_f2_e5_92_a8_01_3f_40_b1_4f_7c_77_22_23_6f_4f_9c_7e_96_52_33_87_27_62n,\n 0x0e_bd_74_24_4a_e7_26_75_f8_cd_e0_61_57_a7_82_f4_05_0d_91_4d_a3_8b_4c_05_8d_15_9f_64_3d_bb_f4_d3n,\n 0x2c_b7_f0_ed_39_e1_6e_9f_69_a9_fa_fd_4a_b9_51_c0_3b_06_71_e9_73_46_ee_39_7a_83_98_39_dc_cf_c6_d1n,\n 0x1a_9d_6e_2e_cf_f0_22_cc_56_05_44_3e_e4_1b_ab_20_ce_76_1d_05_14_ce_52_66_90_c7_2b_ca_73_52_d9_bfn,\n 0x2a_11_54_39_60_7f_33_5a_5e_a8_3c_3b_c4_4a_93_31_d0_c1_33_26_a9_a7_ba_30_87_da_18_2d_64_8e_c7_2fn,\n 0x23_f9_b6_52_9b_5d_04_0d_15_b8_fa_7a_ee_3e_34_10_e7_38_b5_63_05_cd_44_f2_95_35_c1_15_c5_a4_c0_60n,\n 0x05_87_2c_16_db_0f_72_a2_24_9a_c6_ba_48_4b_b9_c3_a3_ce_97_c1_6d_58_b6_8b_26_0e_b9_39_f0_e6_e8_a7n,\n 0x13_00_bd_ee_08_bb_78_24_ca_20_fb_80_11_80_75_f4_02_19_b6_15_1d_55_b5_c5_2b_62_4a_7c_de_dd_f6_a7n,\n 0x19_b9_b6_3d_2f_10_8e_17_e6_38_17_86_3a_8f_6c_28_8d_7a_d2_99_16_d9_8c_b1_07_2e_4e_7b_7d_52_b3_76n,\n 0x01_5b_ee_13_57_e3_c0_15_b5_bd_a2_37_66_85_22_f6_13_d1_c8_87_26_b5_ec_42_24_a2_01_28_48_1b_4f_7fn,\n 0x29_53_73_6e_94_bb_6b_9f_1b_97_07_a4_f1_61_5e_4e_fe_1e_1c_e4_ba_b2_18_cb_ea_92_c7_85_b1_28_ff_d1n,\n 0x0b_06_93_53_ba_09_16_18_86_2f_80_61_80_c0_38_5f_85_1b_98_d3_72_b4_5f_54_4c_e7_26_6e_d6_60_8d_fcn,\n 0x30_4f_74_d4_61_cc_c1_31_15_e4_e0_bc_fb_93_81_7e_55_ae_b7_eb_93_06_b6_4e_4f_58_8a_c9_7d_81_f4_29n,\n 0x15_bb_f1_46_ce_9b_ca_09_e8_a3_3f_5e_77_df_e4_f5_aa_d2_a1_64_a4_61_7a_4c_b8_ee_54_15_cd_e9_13_fcn,\n 0x0a_b4_df_e0_c2_74_2c_de_44_90_10_31_48_79_64_ed_9b_8f_4b_85_04_05_c1_0c_a9_ff_23_85_95_72_c8_c6n,\n 0x0e_32_db_32_0a_04_4e_31_97_f4_5f_76_49_a1_96_75_ef_5e_ed_fe_a5_46_de_a9_25_1d_e3_9f_96_39_77_9an,\n 0x0a_17_56_aa_1f_37_8c_a4_b2_76_35_a7_8b_68_88_e6_67_97_73_3a_82_77_48_96_a3_07_8e_fa_51_6d_a0_16n,\n 0x04_4c_4a_33_b1_0f_69_34_47_fd_17_17_7f_95_2e_f8_95_e6_1d_32_8f_85_ef_a9_42_54_d6_a2_a2_5d_93_efn,\n 0x2e_d3_61_1b_72_5b_8a_70_be_65_5b_53_7f_66_f7_00_fe_08_79_d7_9a_49_68_91_d3_7b_07_b5_46_6c_4b_8bn,\n 0x1f_9b_a4_e8_ba_b7_ce_42_c8_ec_c3_d7_22_aa_2e_0e_ad_fd_eb_9c_fd_d3_47_b5_d8_33_9e_a7_12_08_58_aan,\n 0x1b_23_30_43_05_2e_8c_28_8f_7e_e9_07_a8_4e_51_8a_a3_8e_82_ac_45_02_06_6d_b7_40_56_f8_65_c5_d3_dan,\n 0x24_31_e1_cc_16_4b_b8_d0_74_03_1a_b7_2b_d5_5b_4c_90_20_53_bf_c0_f1_4d_b0_ca_2f_97_b0_20_87_59_54n,\n 0x08_2f_93_4c_91_f5_aa_c3_30_cd_69_53_a0_a7_db_45_a1_3e_32_20_97_58_33_19_a7_91_f2_73_96_58_01_fdn,\n 0x2b_9a_0a_22_3e_75_38_b0_a3_4b_e0_74_31_55_42_a3_c7_72_45_e2_ae_7c_be_99_9a_d6_bb_93_0c_48_99_7cn,\n 0x0e_1c_d9_1e_dd_2c_fa_2c_ce_b8_54_83_b8_87_a9_be_81_64_16_3e_75_a8_a0_0e_b0_b5_89_cc_70_21_4e_7dn,\n 0x2e_1e_ac_0f_2b_fd_fd_63_c9_51_f6_14_77_e3_69_89_99_77_4f_19_85_4d_00_f5_88_d3_24_60_1c_eb_e2_f9n,\n 0x0c_bf_a9_5f_37_fb_74_06_0c_76_15_8e_76_9d_6d_15_73_45_78_4d_8e_fd_b3_3c_23_d7_48_11_5b_50_0b_83n,\n 0x08_f0_5b_3b_e9_23_ed_44_d6_5a_d4_9d_8a_61_e9_a6_76_d9_91_e3_a7_75_13_d9_98_0c_23_2d_fa_4a_4f_84n,\n 0x22_71_9e_2a_07_0b_cd_08_52_bf_8e_21_98_4d_04_43_e7_28_49_25_dc_07_58_a3_25_a2_dd_51_0c_04_7e_f6n,\n 0x04_1f_59_6a_9e_e1_cb_2b_c0_60_f7_fc_c3_a1_ab_4c_7b_db_f0_36_11_99_82_c0_f4_1f_62_b2_f2_68_30_c0n,\n 0x23_3f_d3_5d_e1_be_52_0a_87_62_8e_b0_6f_6b_1d_4c_02_1b_e1_c2_d0_dc_46_4a_19_fc_dd_09_86_b1_0f_89n,\n 0x05_24_b4_6d_1a_a8_7a_5e_43_25_e0_a4_23_eb_c8_10_d3_1e_07_8a_a1_b4_70_7e_ef_cb_45_3c_61_c9_c2_67n,\n 0x2c_34_f4_24_c8_1e_57_16_ce_47_fc_ac_89_4b_85_82_42_27_bb_95_4b_0f_31_99_cc_44_86_23_7c_51_52_11n,\n 0x0b_5f_2a_4b_63_38_78_19_20_7e_ff_c2_b5_54_1f_b7_2d_d2_02_5b_54_57_cc_97_f3_30_10_32_7d_e4_91_5en,\n 0x22_20_78_56_08_2c_cc_54_c5_b7_2f_e4_39_d2_cf_d6_c1_74_35_d2_f5_7a_f6_ce_ae_fa_c4_1f_e0_5c_65_9fn,\n 0x24_d5_7a_8b_f5_da_63_fe_4e_24_15_9b_7f_89_50_b5_cd_fb_21_01_94_ca_f7_9f_27_85_40_48_ce_2c_81_71n,\n 0x0a_fa_b1_81_fd_d5_e0_58_3b_37_1d_75_bd_69_3f_98_37_4a_d7_09_7b_b0_1a_85_73_91_9b_b2_3b_79_39_6en,\n 0x2d_ba_9b_10_8f_20_87_72_99_8a_52_ef_ac_7c_bd_56_76_c0_05_71_94_c1_6c_0b_f1_62_90_d6_2b_11_28_een,\n 0x26_34_9b_66_ed_b8_b1_6f_56_f8_81_c7_88_f5_3f_83_cb_b8_3d_e0_bd_59_2b_25_5a_ff_13_e6_bc_e4_20_b3n,\n 0x25_af_7c_e0_e5_e1_03_57_68_5e_95_f9_23_39_75_3a_d8_1a_56_d2_8e_cc_19_3b_23_52_88_a3_e6_f1_37_dbn,\n 0x25_b4_ce_7b_d2_29_43_90_c0_94_d6_a5_5e_dd_68_b9_70_ee_d7_aa_e8_8b_2b_ff_1f_7c_01_87_fe_35_01_1fn,\n 0x22_c5_43_f1_0f_6c_89_ec_38_7e_53_f1_90_8a_88_e5_de_9c_ef_28_eb_df_30_b1_8c_b9_d5_4c_1e_02_b6_31n,\n 0x02_36_f9_3e_77_89_c4_72_4f_c7_90_8a_9f_19_1e_1e_42_5e_90_6a_91_9d_7a_34_df_66_8e_74_88_2f_87_a9n,\n 0x29_35_0b_40_11_66_ca_01_0e_7d_27_e3_7d_05_da_99_65_2b_da_e1_14_eb_01_65_9c_b4_97_af_98_0c_4b_52n,\n 0x0e_ed_78_7d_65_82_0d_3f_6b_d3_1b_ba_b5_47_f7_5a_65_ed_b7_5d_84_4e_bb_89_ee_12_60_91_66_52_36_3fn,\n 0x07_cc_11_70_f1_3b_46_f2_03_6a_75_3f_52_0b_32_91_fd_cd_0e_99_bd_94_29_7d_19_06_f6_56_f4_de_6f_adn,\n 0x22_b9_39_23_3b_1d_72_05_f4_9b_cf_61_3a_3d_30_b1_90_87_86_d7_f9_f5_d1_0c_20_59_43_56_89_e8_ac_ean,\n 0x01_45_17_62_a0_aa_b8_1c_8a_ad_1d_c8_bc_33_e8_70_74_0f_08_3a_5a_a8_54_38_ad_d6_50_ac_e6_0a_e5_a6n,\n 0x23_50_6b_b5_d8_72_7d_44_61_fa_bf_10_25_d4_6d_1f_e3_2e_aa_61_de_c7_da_57_e7_04_fe_c0_89_2f_ce_89n,\n 0x2e_48_4c_44_e8_38_ae_a0_ba_c0_6a_e3_f7_1b_dd_09_2a_37_09_53_1e_1e_fe_a9_7f_8b_d6_89_07_35_55_22n,\n 0x0f_4b_c7_d0_7e_ba_fd_64_37_9e_78_c5_0b_d2_e4_2b_af_4a_59_45_45_ce_dc_25_45_41_8d_a2_68_35_b5_4cn,\n 0x1f_4d_3c_8f_65_83_e9_e5_fa_76_63_78_62_fa_ae_e8_51_58_23_88_72_5d_f4_60_e6_20_99_6d_50_d8_e7_4en,\n 0x09_35_14_e0_c7_07_11_f8_26_60_d0_7b_e0_e4_a9_88_fa_e0_2a_bc_7b_68_1d_91_53_eb_9b_cb_48_fe_73_89n,\n 0x1a_da_b0_c8_e2_b3_ba_d3_46_69_9a_2b_5f_3b_c0_36_43_ee_83_ec_e4_72_28_f2_4a_58_e0_a3_47_e1_53_d8n,\n 0x16_72_b1_72_60_57_d9_9d_d1_47_09_eb_b4_74_64_1a_37_8c_1b_94_b8_07_2b_ac_1a_22_db_ef_9e_80_da_d2n,\n 0x1d_fd_53_d4_57_6a_f2_e3_8f_44_f5_3f_dc_ab_46_8c_c5_d8_e2_fa_e0_ac_c4_ee_30_d4_7b_23_9b_47_9c_14n,\n 0x0c_68_88_a1_0b_75_b0_f3_a7_0a_36_26_3a_37_e1_7f_e6_d7_7d_64_0f_6f_c3_de_bc_7f_20_77_53_20_5c_60n,\n 0x1a_dd_b9_33_a6_5b_e7_70_92_b3_4a_7e_77_d1_2f_e8_61_1a_61_e0_0e_e6_84_8b_85_09_1e_cc_a9_d1_e5_08n,\n 0x00_d7_54_0d_cd_26_8a_84_5c_10_ae_18_d1_de_93_3c_f6_38_ff_54_25_f0_af_ff_79_35_62_8e_29_9d_17_91n,\n 0x14_0c_0e_42_68_7e_9e_ad_01_b2_82_7a_56_64_ca_9c_26_fe_dd_e4_ac_d9_9d_b1_d3_16_93_9d_20_b8_2c_0en,\n 0x2f_0c_3a_11_5d_43_17_d1_91_ba_89_b8_d1_3d_18_06_c2_0a_0f_9b_24_f8_c5_ed_c0_91_e2_ae_56_56_59_84n,\n 0x0c_4e_e7_78_ff_7c_14_55_30_06_ed_22_0c_f9_c8_10_08_a0_cf_f6_70_b2_2b_82_d8_c5_38_a1_dc_95_8c_61n,\n 0x17_04_f2_76_6d_46_f8_2c_36_93_f0_04_40_cc_c3_60_94_24_ed_26_c0_ac_c6_62_27_c3_d7_48_5d_e7_4c_69n,\n 0x2f_2d_19_cc_3e_a5_d7_8e_a7_a0_2c_1b_51_d2_44_ab_f0_76_9c_9f_85_44_e4_02_39_b6_6f_e9_00_9c_3c_fan,\n 0x1a_e0_38_53_b7_5f_ca_ba_50_53_f1_12_e2_a8_e8_dc_dd_7e_e6_cb_9c_fe_d9_c7_d6_c7_66_a8_06_fc_66_29n,\n 0x09_71_aa_bf_79_52_41_df_51_d1_31_d0_fa_61_aa_5f_35_56_92_1b_2d_6f_01_4e_4e_41_a8_6d_da_f0_56_d5n,\n 0x14_08_c3_16_e6_01_4e_1a_91_d4_cf_6b_6e_0d_e7_3e_da_62_4f_83_80_df_1c_87_5f_5c_29_f7_bf_e2_f6_46n,\n 0x16_67_f3_fe_2e_db_e8_50_24_8a_be_42_b5_43_09_3b_6c_89_f1_f7_73_ef_28_53_41_69_1f_39_82_2e_f5_bdn,\n 0x13_bf_7c_5d_0d_2c_43_76_a4_8b_0a_03_55_7c_df_91_5b_81_71_84_09_e5_c1_33_42_4c_69_57_65_00_fe_37n,\n 0x07_62_0a_6d_fb_0b_6c_ec_30_16_ad_f3_d3_53_3c_24_02_4b_95_34_78_56_b7_97_19_bc_0b_a7_43_a6_2c_2cn,\n 0x15_74_c7_ef_0c_43_54_5f_36_a8_ca_08_bd_bd_d8_b0_75_d2_95_9e_2f_32_2b_73_16_75_de_3e_19_82_b4_d0n,\n 0x26_9e_4b_5b_7a_2e_b2_1a_fd_56_79_70_a7_17_ce_ec_5b_d4_18_45_71_c2_54_fd_c0_6e_03_a7_ff_83_78_f0n,\n ],\n // t=3 (2 inputs) - 195 constants\n [\n 0x0e_e9_a5_92_ba_9a_95_18_d0_59_86_d6_56_f4_0c_21_14_c4_99_3c_11_bb_29_93_8d_21_d4_73_04_cd_8e_6en,\n 0x00_f1_44_52_35_f2_14_8c_59_86_58_71_69_fc_1b_cd_88_7b_08_d4_d0_08_68_df_56_96_ff_f4_09_56_e8_64n,\n 0x08_df_f3_48_7e_8a_c9_9e_1f_29_a0_58_d0_fa_80_b9_30_c7_28_73_0b_7a_b3_6c_e8_79_f3_89_0e_cf_73_f5n,\n 0x2f_27_be_69_0f_da_ee_46_c3_ce_28_f7_53_2b_13_c8_56_c3_53_42_c8_4b_da_6e_20_96_63_10_fa_dc_01_d0n,\n 0x2b_2a_e1_ac_f6_8b_7b_8d_24_16_be_bf_3d_4f_62_34_b7_63_fe_04_b8_04_3e_e4_8b_83_27_be_bc_a1_6c_f2n,\n 0x03_19_d0_62_07_2b_ef_7e_cc_a5_ea_c0_6f_97_d4_d5_59_52_c1_75_ab_6b_03_ea_e6_4b_44_c7_db_f1_1c_fan,\n 0x28_81_3d_ca_eb_ae_aa_82_8a_37_6d_f8_7a_f4_a6_3b_c8_b7_bf_27_ad_49_c6_29_8e_f7_b3_87_bf_28_52_6dn,\n 0x27_27_67_3b_2c_cb_c9_03_f1_81_bf_38_e1_c1_d4_0d_20_33_86_52_00_c3_52_bc_15_09_28_ad_dd_f9_cb_78n,\n 0x23_4e_c4_5c_a2_77_27_c2_e7_4a_bd_2b_2a_14_94_cd_6e_fb_d4_3e_34_05_87_d6_b8_fb_9e_31_e6_5c_c6_32n,\n 0x15_b5_25_34_03_1a_e1_8f_7f_86_2c_b2_cf_7c_f7_60_ab_10_a8_15_0a_33_7b_1c_cd_99_ff_6e_87_97_d4_28n,\n 0x0d_c8_fa_d6_d9_e4_b3_5f_5e_d9_a3_d1_86_b7_9c_e3_8e_0e_8a_8d_1b_58_b1_32_d7_01_d4_ee_cf_68_d1_f6n,\n 0x1b_cd_95_ff_c2_11_fb_ca_60_0f_70_5f_ad_3f_b5_67_ea_4e_b3_78_f6_2e_1f_ec_97_80_55_18_a4_7e_4d_9cn,\n 0x10_52_0b_0a_b7_21_ca_df_e9_ef_f8_1b_01_6f_c3_4d_c7_6d_a3_6c_25_78_93_78_17_cb_97_8d_06_9d_e5_59n,\n 0x1f_6d_48_14_9b_8e_7f_7d_9b_25_7d_8e_d5_fb_ba_f4_29_32_49_80_75_fe_d0_ac_e8_8a_9e_b8_1f_56_27_f6n,\n 0x1d_96_55_f6_52_30_90_14_d2_9e_00_ef_35_a2_08_9b_ff_f8_dc_1c_81_6f_0d_c9_ca_34_bd_b5_46_0c_87_05n,\n 0x04_df_5a_56_ff_95_bc_af_b0_51_f7_b1_cd_43_a9_9b_a7_31_ff_67_e4_70_32_05_8f_e3_d4_18_56_97_cc_7dn,\n 0x06_72_d9_95_f8_ff_f6_40_15_1b_3d_29_0c_ed_af_14_86_90_a1_0a_8c_84_24_a7_f6_ec_28_2b_6e_4b_e8_28n,\n 0x09_99_52_b4_14_88_44_54_b2_12_00_d7_ff_af_dd_5f_0c_9a_9d_cc_06_f2_70_8e_9f_c1_d8_20_9b_5c_75_b9n,\n 0x05_2c_ba_22_55_df_d0_0c_7c_48_31_43_ba_8d_46_94_48_e4_35_86_a9_b4_cd_91_83_fd_0e_84_3a_6b_9f_a6n,\n 0x0b_8b_ad_ee_69_0a_db_8e_b0_bd_74_71_2b_79_99_af_82_de_55_70_72_51_ad_77_16_07_7c_b9_3c_46_4d_dcn,\n 0x11_9b_15_90_f1_33_07_af_5a_1e_e6_51_02_0c_07_c7_49_c1_5d_60_68_3a_80_50_b9_63_d0_a8_e4_b2_bd_d1n,\n 0x03_15_0b_7c_d6_d5_d1_7b_25_29_d3_6b_e0_f6_7b_83_2c_4a_cf_c8_84_ef_4e_e5_ce_15_be_0b_fb_4a_8d_09n,\n 0x2c_c6_18_2c_5e_14_54_6e_3c_f1_95_1f_17_39_12_35_53_74_ef_b8_3d_80_89_8a_be_69_cb_31_7c_9e_a5_65n,\n 0x00_50_32_55_1e_63_78_c4_50_cf_e1_29_a4_04_b3_76_42_18_ca_de_da_c1_4e_2b_92_d2_cd_73_11_1b_f0_f9n,\n 0x23_32_37_e3_28_9b_aa_34_bb_14_7e_97_2e_bc_b9_51_64_69_c3_99_fc_c0_69_fb_88_f9_da_2c_c2_82_76_b5n,\n 0x05_c8_f4_f4_eb_d4_a6_e3_c9_80_d3_16_74_bf_be_63_23_03_7f_21_b3_4a_e5_a4_e8_0c_2d_4c_24_d6_02_80n,\n 0x0a_7b_1d_b1_30_42_d3_96_ba_05_d8_18_a3_19_f2_52_52_bc_f3_5e_f3_ae_ed_91_ee_1f_09_b2_59_0f_c6_5bn,\n 0x2a_73_b7_1f_9b_21_0c_f5_b1_42_96_57_2c_9d_32_db_f1_56_e2_b0_86_ff_47_dc_5d_f5_42_36_5a_40_4e_c0n,\n 0x1a_c9_b0_41_7a_bc_c9_a1_93_51_07_e9_ff_c9_1d_c3_ec_18_f2_c4_db_e7_f2_29_76_a7_60_bb_5c_50_c4_60n,\n 0x12_c0_33_9a_e0_83_74_82_3f_ab_b0_76_70_7e_f4_79_26_9f_3e_4d_6c_b1_04_34_90_15_ee_04_6d_c9_3f_c0n,\n 0x0b_74_75_b1_02_a1_65_ad_7f_5b_18_db_4e_1e_70_4f_52_90_0a_a3_25_3b_aa_c6_82_46_68_2e_56_e9_a2_8en,\n 0x03_7c_28_49_e1_91_ca_3e_db_1c_5e_49_f6_e8_b8_91_7c_84_3e_37_93_66_f2_ea_32_ab_3a_a8_8d_7f_84_48n,\n 0x05_a6_81_1f_85_56_f0_14_e9_26_74_66_1e_21_7e_9b_d5_20_6c_5c_93_a0_7d_c1_45_fd_b1_76_a7_16_34_6fn,\n 0x29_a7_95_e7_d9_80_28_94_6e_94_7b_75_d5_4e_9f_04_40_76_e8_7a_7b_28_83_b4_7b_67_5e_f5_f3_8b_d6_6en,\n 0x20_43_9a_0c_84_b3_22_eb_45_a3_85_7a_fc_18_f5_82_6e_8c_73_82_c8_a1_58_5c_50_7b_e1_99_98_1f_d2_2fn,\n 0x2e_0b_a8_d9_4d_9e_cf_4a_94_ec_20_50_c7_37_1f_f1_bb_50_f2_77_99_a8_4b_6d_4a_2a_6f_2a_09_82_c8_87n,\n 0x14_3f_d1_15_ce_08_fb_27_ca_38_eb_7c_ce_82_2b_45_17_82_2c_d2_10_90_48_d2_e6_d0_dd_cc_a1_7d_71_c8n,\n 0x0c_64_cb_ec_b1_c7_34_b8_57_96_8d_bb_dc_f8_13_cd_f8_61_16_59_32_3d_bc_bf_c8_43_23_62_3b_e9_ca_f1n,\n 0x02_8a_30_58_47_c6_83_f6_46_fc_a9_25_c1_63_ff_5a_e7_4f_34_8d_62_c2_b6_70_f1_42_6c_ef_94_03_da_53n,\n 0x2e_4e_f5_10_ff_0b_6f_da_5f_a9_40_ab_4c_43_80_f2_6a_6b_cb_64_d8_94_27_b8_24_d6_75_5b_5d_b9_e3_0cn,\n 0x00_81_c9_5b_c4_33_84_e6_63_d7_92_70_c9_56_ce_3b_89_25_b4_f6_d0_33_b0_78_b9_63_84_f5_05_79_40_0en,\n 0x2e_d5_f0_c9_1c_bd_97_49_18_7e_2f_ad_e6_87_e0_5e_e2_49_1b_34_9c_03_9a_0b_ba_8a_9f_40_23_a0_bb_38n,\n 0x30_50_99_91_f8_8d_a3_50_4b_bf_37_4e_d5_aa_e2_f0_34_48_a2_2c_76_23_4c_8c_99_0f_01_f3_3a_73_52_06n,\n 0x1c_3f_20_fd_55_40_9a_53_22_1b_7c_4d_49_a3_56_b9_f0_a1_11_9f_b2_06_7b_41_a7_52_90_94_42_4e_c6_adn,\n 0x10_b4_e7_f3_ab_5d_f0_03_04_95_14_45_9b_6e_18_ee_c4_6b_b2_21_3e_8e_13_1e_17_08_87_b4_7d_dc_b9_6cn,\n 0x2a_19_82_97_9c_3f_f7_f4_3d_dd_54_3d_89_1c_2a_bd_dd_80_f8_04_c0_77_d7_75_03_9a_a3_50_2e_43_ad_efn,\n 0x1c_74_ee_64_f1_5e_1d_b6_fe_dd_be_ad_56_d6_d5_5d_ba_43_1e_bc_39_6c_9a_f9_5c_ad_0f_13_15_bd_5c_91n,\n 0x07_53_3e_c8_50_ba_7f_98_ea_b9_30_3c_ac_e0_1b_4b_9e_4f_2e_8b_82_70_8c_fa_9c_2f_e4_5a_0a_e1_46_a0n,\n 0x21_57_6b_43_8e_50_04_49_a1_51_e4_ee_af_17_b1_54_28_5c_68_f4_2d_42_c1_80_8a_11_ab_f3_76_4c_07_50n,\n 0x2f_17_c0_55_9b_8f_e7_96_08_ad_5c_a1_93_d6_2f_10_bc_e8_38_4c_81_5f_09_06_74_3d_69_30_83_6d_4a_9en,\n 0x2d_47_7e_38_62_d0_77_08_a7_9e_8a_ae_94_61_70_bc_97_75_a4_20_13_18_47_4a_e6_65_b0_b1_b7_e2_73_0en,\n 0x16_2f_52_43_96_70_64_c3_90_e0_95_57_79_84_f2_91_af_ba_22_66_c3_8f_5a_bc_d8_9b_e0_f5_b2_74_7e_abn,\n 0x2b_4c_b2_33_ed_e9_ba_48_26_4e_cd_2c_8a_e5_0d_1a_d7_a8_59_6a_87_f2_9f_8a_77_77_a7_00_92_39_33_11n,\n 0x2c_8f_bc_b2_dd_85_73_dc_1d_ba_f8_f4_62_28_54_77_6d_b2_ee_ce_6d_85_c4_cf_42_54_e7_c3_5e_03_b0_7an,\n 0x1d_6f_34_77_25_e4_81_6a_f2_ff_45_3f_0c_d5_6b_19_9e_1b_61_e9_f6_01_e9_ad_e5_e8_8d_b8_70_94_9d_a9n,\n 0x20_4b_0c_39_7f_4e_be_71_eb_c2_d8_b3_df_5b_91_3d_f9_e6_ac_02_b6_8d_31_32_4c_d4_9a_f5_c4_56_55_29n,\n 0x0c_4c_b9_dc_3c_4f_d8_17_4f_11_49_b3_c6_3c_3c_2f_9e_cb_82_7c_d7_dc_25_53_4f_f8_fb_75_bc_79_c5_02n,\n 0x17_4a_d6_1a_14_48_c8_99_a2_54_16_47_4f_49_30_30_1e_5c_49_47_52_79_e0_63_9a_61_6d_dc_45_bc_7b_54n,\n 0x1a_96_17_7b_cf_4d_8d_89_f7_59_df_4e_c2_f3_cd_e2_ea_aa_28_c1_77_cc_0f_a1_3a_98_16_d4_9a_38_d2_efn,\n 0x06_6d_04_b2_43_31_d7_1c_d0_ef_80_54_bc_60_c4_ff_05_20_2c_12_6a_23_3c_1a_82_42_ac_e3_60_b8_a3_0an,\n 0x2a_4c_4f_c6_ec_0b_0c_f5_21_95_78_28_71_c6_dd_3b_38_1c_c6_5f_72_e0_2a_d5_27_03_7a_62_aa_1b_d8_04n,\n 0x13_ab_2d_13_6c_cf_37_d4_47_e9_f2_e1_4a_7c_ed_c9_5e_72_7f_84_46_f6_d9_d7_e5_5a_fc_01_21_9f_d6_49n,\n 0x11_21_55_2f_ca_26_06_16_19_d2_4d_84_3d_c8_27_69_c1_b0_4f_ce_c2_6f_55_19_4c_2e_3e_86_9a_cc_6a_9an,\n 0x00_ef_65_33_22_b1_3d_6c_88_9b_c8_17_15_c3_7d_77_a6_cd_26_7d_59_5c_4a_89_09_a5_54_6c_7c_97_cf_f1n,\n 0x0e_25_48_3e_45_a6_65_20_8b_26_1d_8b_a7_40_51_e6_40_0c_77_6d_65_25_95_d9_84_5a_ca_35_d8_a3_97_d3n,\n 0x29_f5_36_dc_b9_dd_76_82_24_52_64_65_9e_15_d8_8e_39_5a_c3_d4_dd_e9_2d_8c_46_44_8d_b9_79_ee_ba_89n,\n 0x2a_56_ef_9f_2c_53_fe_ba_df_da_33_57_5d_bd_bd_88_5a_12_4e_27_80_bb_ea_17_0e_45_6b_aa_ce_0f_a5_ben,\n 0x1c_83_61_c7_8e_b5_cf_5d_ec_fb_7a_2d_17_b5_c4_09_f2_ae_29_99_a4_67_62_e8_ee_41_62_40_a8_cb_9a_f1n,\n 0x15_1a_ff_5f_38_b2_0a_0f_c0_47_30_89_aa_f0_20_6b_83_e8_e6_8a_76_45_07_bf_d3_d0_ab_4b_e7_43_19_c5n,\n 0x04_c6_18_7e_41_ed_88_1d_c1_b2_39_c8_8f_7f_9d_43_a9_f5_2f_c8_c8_b6_cd_d1_e7_6e_47_61_5b_51_f1_00n,\n 0x13_b3_7b_d8_0f_4d_27_fb_10_d8_43_31_f6_fb_6d_53_4b_81_c6_1e_d1_57_76_44_9e_80_1b_7d_dc_9c_29_67n,\n 0x01_a5_c5_36_27_3c_2d_9d_f5_78_bf_bd_32_c1_7b_7a_2c_e3_66_4c_2a_52_03_2c_93_21_ce_b1_c4_e8_a8_e4n,\n 0x2a_b3_56_18_34_ca_73_83_5a_d0_5f_5d_7a_cb_95_0b_4a_9a_2c_66_6b_97_26_da_83_22_39_06_5b_7c_3b_02n,\n 0x1d_4d_8e_c2_91_e7_20_db_20_0f_e6_d6_86_c0_d6_13_ac_af_6a_f4_e9_5d_3b_f6_9f_7e_d5_16_a5_97_b6_46n,\n 0x04_12_94_d2_cc_48_4d_22_8f_57_84_fe_79_19_fd_2b_b9_25_35_12_40_a0_4b_71_15_14_c9_c8_0b_65_af_1dn,\n 0x15_4a_c9_8e_01_70_8c_61_1c_4f_a7_15_99_1f_00_48_98_f5_79_39_d1_26_e3_92_04_29_71_dd_90_e8_1f_c6n,\n 0x0b_33_9d_8a_cc_a7_d4_f8_3e_ed_d8_40_93_ae_f5_10_50_b3_68_4c_88_f8_b0_b0_45_24_56_3b_c6_ea_4d_a4n,\n 0x09_55_e4_9e_66_10_c9_42_54_a4_f8_4c_fb_ab_34_45_98_f0_e7_1e_af_f4_a7_dd_81_ed_95_b5_08_39_c8_2en,\n 0x06_74_6a_61_56_eb_a5_44_26_b9_e2_22_06_f1_5a_bc_a9_a6_f4_1e_6f_53_5c_6f_35_25_40_1e_a0_65_46_26n,\n 0x0f_18_f5_a0_ec_d1_42_3c_49_6f_38_20_c5_49_c2_78_38_e5_79_0e_2b_d0_a1_96_ac_91_7c_7f_f3_20_77_fbn,\n 0x04_f6_ee_ca_17_51_f7_30_8a_c5_9e_ff_5b_eb_26_1e_4b_b5_63_58_3e_de_7b_c9_2a_73_82_23_d6_f7_6e_13n,\n 0x2b_56_97_33_64_c4_c4_f5_c1_a3_ec_4d_a3_cd_ce_03_88_11_eb_11_6f_b3_e4_5b_c1_76_8d_26_fc_0b_37_58n,\n 0x12_37_69_dd_49_d5_b0_54_dc_d7_6b_89_80_4b_1b_cb_8e_13_92_b3_85_71_6a_5d_83_fe_b6_5d_43_7f_29_efn,\n 0x21_47_b4_24_fc_48_c8_0a_88_ee_52_b9_11_69_aa_ce_a9_89_f6_44_64_71_15_09_94_25_7b_2f_b0_1c_63_e9n,\n 0x0f_dc_1f_58_54_8b_85_70_1a_6c_55_05_ea_33_2a_29_64_7e_6f_34_ad_42_43_c2_ea_54_ad_89_7c_eb_e5_4dn,\n 0x12_37_3a_82_51_fe_a0_04_df_68_ab_cf_0f_77_86_d4_bc_ef_f2_8c_5d_bb_e0_c3_94_4f_68_5c_c0_a0_b1_f2n,\n 0x21_e4_f4_ea_5f_35_f8_5b_ad_7e_a5_2f_f7_42_c9_e8_a6_42_75_6b_6a_f4_42_03_dd_8a_1f_35_c1_a9_00_35n,\n 0x16_24_39_16_d6_9d_2c_a3_df_b4_72_22_24_d4_c4_62_b5_73_66_49_2f_45_e9_0d_8a_81_93_4f_1b_c3_b1_47n,\n 0x1e_fb_e4_6d_d7_a5_78_b4_f6_6f_9a_db_c8_8b_43_78_ab_c2_15_66_e1_a0_45_3c_a1_3a_41_59_ca_c0_4a_c2n,\n 0x07_ea_5e_85_37_cf_5d_d0_88_86_02_0e_23_a7_f3_87_d4_68_d5_52_5b_e6_6f_85_3b_67_2c_c9_6a_88_96_9an,\n 0x05_a8_c4_f9_96_8b_8a_a3_b7_b4_78_a3_0f_9a_5b_63_65_0f_19_a7_5e_7c_e1_1c_a9_fe_16_c0_b7_6c_00_bcn,\n 0x20_f0_57_71_2c_c2_16_54_fb_fe_59_bd_34_5e_8d_ac_3f_78_18_c7_01_b9_c7_88_2d_9d_57_b7_2a_32_e8_3fn,\n 0x04_a1_2e_de_da_9d_fd_68_96_72_f8_c6_7f_ee_31_63_6d_cd_8e_88_d0_1d_49_01_9b_d9_0b_33_eb_33_db_69n,\n 0x27_e8_8d_8c_15_f3_7d_ce_e4_4f_1e_54_25_a5_1d_ec_bd_13_6c_e5_09_1a_67_67_e4_9e_c9_54_4c_cd_10_1an,\n 0x2f_ee_d1_7b_84_28_5e_d9_b8_a5_c8_c5_e9_5a_41_f6_6e_09_66_19_a7_70_32_23_17_6c_41_ee_43_3d_e4_d1n,\n 0x1e_d7_cc_76_ed_f4_5c_7c_40_42_41_42_0f_72_9c_f3_94_e5_94_29_11_31_2a_0d_69_72_b8_bd_53_af_f2_b8n,\n 0x15_74_2e_99_b9_bf_a3_23_15_7f_f8_c5_86_f5_66_0e_ac_67_83_47_61_44_cd_ca_df_28_74_be_45_46_6b_1an,\n 0x1a_ac_28_53_87_f6_5e_82_c8_95_fc_68_87_dd_f4_05_77_10_74_54_c6_ec_03_17_28_4f_03_3f_27_d0_c7_85n,\n 0x25_85_1c_3c_84_5d_47_90_f9_dd_ad_bd_b6_05_73_57_83_2e_2e_7a_49_77_5f_71_ec_75_a9_65_54_d6_7c_77n,\n 0x15_a5_82_15_65_cc_2e_c2_ce_78_45_7d_b1_97_ed_f3_53_b7_eb_ba_2c_55_23_37_0d_dc_cc_3d_9f_14_6a_67n,\n 0x24_11_d5_7a_48_13_b9_98_0e_fa_7e_31_a1_db_59_66_dc_f6_4f_36_04_42_77_50_2f_15_48_5f_28_c7_17_27n,\n 0x00_2e_6f_8d_65_20_cd_47_13_e3_35_b8_c0_b6_d2_e6_47_e9_a9_8e_12_f4_cd_25_58_82_8b_5e_f6_cb_4c_9bn,\n 0x2f_f7_bc_8f_43_80_cd_e9_97_da_00_b6_16_b0_fc_d1_af_8f_0e_91_e2_fe_1e_d7_39_88_34_60_9e_03_15_d2n,\n 0x00_b9_83_1b_94_85_25_59_5e_e0_27_24_47_1b_cd_18_2e_95_21_f6_b7_bb_68_f1_e9_3b_e4_fe_bb_0d_3c_ben,\n 0x0a_2f_53_76_8b_8e_bf_6a_86_91_3b_0e_57_c0_4e_01_1c_a4_08_64_8a_47_43_a8_7d_77_ad_bf_0c_9c_35_12n,\n 0x00_24_81_56_14_2f_d0_37_3a_47_9f_91_ff_23_9e_96_0f_59_9f_f7_e9_4b_e6_9b_7f_2a_29_03_05_e1_19_8dn,\n 0x17_1d_56_20_b8_7b_fb_13_28_cf_8c_02_ab_3f_0c_9a_39_71_96_aa_6a_54_2c_23_50_eb_51_2a_2b_2b_cd_a9n,\n 0x17_0a_4f_55_53_6f_7d_c9_70_08_7c_7c_10_d6_fa_d7_60_c9_52_17_2d_d5_4d_d9_9d_10_45_e4_ec_34_a8_08n,\n 0x29_ab_a3_3f_79_9f_e6_6c_2e_f3_13_4a_ea_04_33_6e_cc_37_e3_8c_1c_d2_11_ba_48_2e_ca_17_e2_db_fa_e1n,\n 0x1e_9b_c1_79_a4_fd_d7_58_fd_d1_bb_19_45_08_8d_47_e7_0d_11_4a_03_f6_a0_e8_b5_ba_65_03_69_e6_49_73n,\n 0x1d_d2_69_79_9b_66_0f_ad_58_f7_f4_89_2d_fb_0b_5a_fe_aa_d8_69_a9_c4_b4_4f_9c_9e_1c_43_bd_af_8f_09n,\n 0x22_cd_bc_8b_70_11_7a_d1_40_11_81_d0_2e_15_45_9e_7c_cd_42_6f_e8_69_c7_c9_5d_1d_d2_cb_0f_24_af_38n,\n 0x0e_f0_42_e4_54_77_1c_53_3a_9f_57_a5_5c_50_3f_ce_fd_31_50_f5_2e_d9_4a_7c_d5_ba_93_b9_c7_da_ce_fdn,\n 0x11_60_9e_06_ad_6c_8f_e2_f2_87_f3_03_60_37_e8_85_13_18_e8_b0_8a_03_59_a0_3b_30_4f_fc_a6_2e_82_84n,\n 0x11_66_d9_e5_54_61_6d_ba_9e_75_3e_ea_42_7c_17_b7_fe_cd_58_c0_76_df_e4_27_08_b0_8f_5b_78_3a_a9_afn,\n 0x2d_e5_29_89_43_1a_85_95_93_41_30_26_35_44_13_db_17_7f_bf_4c_d2_ac_0b_56_f8_55_a8_88_35_7e_e4_66n,\n 0x30_06_eb_4f_fc_7a_85_81_9a_6d_a4_92_f3_a8_ac_1d_f5_1a_ee_5b_17_b8_e8_9d_74_bf_01_cf_5f_71_e9_adn,\n 0x2a_f4_1f_bb_61_ba_8a_80_fd_cf_6f_ff_9e_3f_6f_42_29_93_fe_8f_0a_46_39_f9_62_34_4c_82_25_14_50_86n,\n 0x11_9e_68_4d_e4_76_15_5f_e5_a6_b4_1a_8e_bc_85_db_87_18_ab_27_88_9e_85_e7_81_b2_14_ba_ce_48_27_c3n,\n 0x18_35_b7_86_e2_e8_92_5e_18_8b_ea_59_ae_36_35_37_b5_12_48_c2_38_28_f0_47_cf_f7_84_b9_7b_3f_d8_00n,\n 0x28_20_1a_34_c5_94_df_a3_4d_79_49_96_c6_43_3a_20_d1_52_ba_c2_a7_90_5c_92_6c_40_e2_85_ab_32_ee_b6n,\n 0x08_3e_fd_7a_27_d1_75_10_94_e8_0f_ef_af_78_b0_00_86_4c_82_eb_57_11_87_72_4a_76_1f_88_c2_2c_c4_e7n,\n 0x0b_6f_88_a3_57_71_99_52_61_58_e6_1c_ee_a2_7b_e8_11_c1_6d_f7_77_4d_d8_51_9e_07_95_64_f6_1f_d1_3bn,\n 0x0e_c8_68_e6_d1_5e_51_d9_64_4f_66_e1_d6_47_1a_94_58_95_11_ca_00_d2_9e_10_14_39_0e_6e_e4_25_4f_5bn,\n 0x2a_f3_3e_3f_86_67_71_27_1a_c0_c9_b3_ed_2e_11_42_ec_d3_e7_4b_93_9c_d4_0d_00_d9_37_ab_84_c9_85_91n,\n 0x0b_52_02_11_f9_04_b5_e7_d0_9b_5d_96_1c_6a_ce_77_34_56_8c_54_7d_d6_85_8b_36_4c_e5_e4_79_51_f1_78n,\n 0x0b_2d_72_2d_09_19_a1_aa_d8_db_58_f1_00_62_a9_2e_a0_c5_6a_c4_27_0e_82_2c_ca_22_86_20_18_8a_1d_40n,\n 0x1f_79_0d_4d_7f_8c_f0_94_d9_80_ce_b3_7c_24_53_e9_57_b5_4a_99_91_ca_38_bb_e0_06_1d_1e_d6_e5_62_d4n,\n 0x01_71_eb_95_df_bf_7d_1e_ae_a9_7c_d3_85_f7_80_15_08_85_c1_62_35_a2_a6_a8_da_92_ce_b0_1e_50_42_33n,\n 0x0c_2d_0e_3b_5f_d5_75_49_32_9b_f6_88_5d_a6_6b_9b_79_0b_40_de_fd_2c_86_50_76_23_05_38_1b_16_88_73n,\n 0x11_62_fb_28_68_9c_27_15_4e_5a_82_28_b4_e7_2b_37_7c_bc_af_a5_89_e2_83_c3_5d_38_03_05_44_07_a1_8dn,\n 0x2f_14_59_b6_5d_ee_44_1b_64_ad_38_6a_91_e8_31_0f_28_2c_5a_92_a8_9e_19_92_16_23_ef_82_49_71_1b_c0n,\n 0x1e_6f_f3_21_6b_68_8c_3d_99_6d_74_36_7d_5c_d4_c1_bc_48_9d_46_75_4e_b7_12_c2_43_f7_0d_1b_53_cf_bbn,\n 0x01_ca_8b_e7_38_32_b8_d0_68_14_87_d2_7d_15_78_02_d7_41_a6_f3_6c_dc_2a_05_76_88_1f_93_26_47_88_75n,\n 0x1f_77_35_70_6f_fe_9f_c5_86_f9_76_d5_bd_f2_23_dc_68_02_86_08_0b_10_ce_a0_0b_9b_5d_e3_15_f9_65_0en,\n 0x25_22_b6_0f_4e_a3_30_76_40_a0_c2_dc_e0_41_fb_a9_21_ac_10_a3_d5_f0_96_ef_47_45_ca_83_82_85_f0_19n,\n 0x23_f0_be_e0_01_b1_02_9d_52_55_07_5d_dc_95_7f_83_34_18_ca_d4_f5_2b_6c_3f_8c_e1_6c_23_55_72_57_5bn,\n 0x2b_c1_ae_8b_8d_db_b8_1f_ca_ac_2d_44_55_5e_d5_68_5d_14_26_33_e9_df_90_5f_66_d9_40_10_93_08_2d_59n,\n 0x0f_94_06_b8_29_65_64_a3_73_04_50_7b_8d_ba_3e_d1_62_37_12_73_a0_7b_1f_c9_80_11_fc_d6_ad_72_20_5fn,\n 0x23_60_a8_eb_0c_c7_de_fa_67_b7_29_98_de_90_71_4e_17_e7_5b_17_4a_52_ee_4a_cb_12_6c_8c_d9_95_f0_a8n,\n 0x15_87_1a_5c_dd_ea_d9_76_80_4c_80_3c_ba_ef_25_5e_b4_81_5a_5e_96_df_8b_00_6d_cb_bc_27_67_f8_89_48n,\n 0x19_3a_56_76_69_98_ee_9e_0a_86_52_dd_2f_3b_1d_a0_36_2f_4f_54_f7_23_79_54_4f_95_7c_cd_ee_fb_42_0fn,\n 0x2a_39_4a_43_93_4f_86_98_2f_9b_e5_6f_f4_fa_b1_70_3b_2e_63_c8_ad_33_48_34_e4_30_98_05_e7_77_ae_0fn,\n 0x18_59_95_4c_fe_b8_69_5f_3e_8b_63_5d_cb_34_51_92_89_2c_d1_12_23_44_3b_a7_b4_16_6e_88_76_c0_d1_42n,\n 0x04_e1_18_17_63_05_0e_58_01_34_44_db_cb_99_f1_90_2b_11_bc_25_d9_0b_bd_ca_40_8d_38_19_f4_fe_d3_2bn,\n 0x0f_db_25_3d_ee_83_86_9d_40_c3_35_ea_64_de_8c_5b_b1_0e_b8_2d_b0_8b_5e_8b_1f_5e_55_52_bf_d0_5f_23n,\n 0x05_8c_be_8a_9a_50_27_bd_aa_4e_fb_62_3a_de_ad_62_75_f0_86_86_f1_c0_89_84_a9_d7_c5_ba_e9_b4_f1_c0n,\n 0x13_82_ed_ce_99_71_e1_86_49_7e_ad_b1_ae_b1_f5_2b_23_b4_b8_3b_ef_02_3a_b0_d1_52_28_b4_cc_ec_a5_9an,\n 0x03_46_49_90_f0_45_c6_ee_08_19_ca_51_fd_11_b0_be_7f_61_b8_eb_99_f1_4b_77_e1_e6_63_46_01_d9_e8_b5n,\n 0x23_f7_bf_c8_72_0d_c2_96_ff_f3_3b_41_f9_8f_f8_3c_6f_ca_b4_60_5d_b2_eb_5a_aa_5b_c1_37_ae_b7_0a_58n,\n 0x0a_59_a1_58_e3_ee_c2_11_7e_6e_94_e7_f0_e9_de_cf_18_c3_ff_d5_e1_53_1a_92_19_63_61_58_bb_af_62_f2n,\n 0x06_ec_54_c8_03_81_c0_52_b5_8b_f2_3b_31_2f_fd_3c_e2_c4_eb_a0_65_42_0a_f8_f4_c2_3e_d0_07_5f_d0_7bn,\n 0x11_88_72_dc_83_2e_0e_b5_47_6b_56_64_8e_86_7e_c8_b0_93_40_f7_a7_bc_b1_b4_96_2f_0f_f9_ed_1f_9d_01n,\n 0x13_d6_9f_a1_27_d8_34_16_5a_d5_c7_cb_a7_ad_59_ed_52_e0_b0_f0_e4_2d_7f_ea_95_e1_90_6b_52_09_21_b1n,\n 0x16_9a_17_7f_63_ea_68_12_70_b1_c6_87_7a_73_d2_1b_de_14_39_42_fb_71_dc_55_fd_8a_49_f1_9f_10_c7_7bn,\n 0x04_ef_51_59_1c_6e_ad_97_ef_42_f2_87_ad_ce_40_d9_3a_be_b0_32_b9_22_f6_6f_fb_7e_9a_5a_74_50_54_4dn,\n 0x25_6e_17_5a_1d_c0_79_39_0e_cd_7c_a7_03_fb_2e_3b_19_ec_61_80_5d_4f_03_ce_d5_f4_5e_e6_dd_0f_69_ecn,\n 0x30_10_2d_28_63_6a_bd_5f_e5_f2_af_41_2f_f6_00_4f_75_cc_36_0d_32_05_dd_2d_a0_02_81_3d_3e_2c_ee_b2n,\n 0x10_99_8e_42_df_cd_3b_bf_1c_07_14_bc_73_eb_1b_f4_04_43_a3_fa_99_be_f4_a3_1f_d3_1b_e1_82_fc_c7_92n,\n 0x19_3e_dd_8e_9f_cf_3d_76_25_fa_7d_24_b5_98_a1_d8_9f_33_62_ea_f4_d5_82_ef_ec_ad_76_f8_79_e3_68_60n,\n 0x18_16_8a_fd_34_f2_d9_15_d0_36_8c_e8_0b_7b_33_47_d1_c7_a5_61_ce_61_14_25_f2_66_4d_7a_a5_1f_0b_5dn,\n 0x29_38_3c_01_eb_d3_b6_ab_0c_01_76_56_eb_e6_58_b6_a3_28_ec_77_bc_33_62_6e_29_e2_e9_5b_33_ea_61_11n,\n 0x10_64_6d_2f_26_03_de_39_a1_f4_ae_5e_77_71_a6_4a_70_2d_b6_e8_6f_b7_6a_b6_00_bf_57_3f_90_10_c7_11n,\n 0x0b_eb_5e_07_d1_b2_71_45_f5_75_f1_39_5a_55_bf_13_2f_90_c2_5b_40_da_7b_38_64_d0_24_2d_cb_11_17_fbn,\n 0x16_d6_85_25_20_78_c1_33_dc_0d_3e_ca_d6_2b_5c_88_30_f9_5b_b2_e5_4b_59_ab_df_fb_f0_18_d9_6f_a3_36n,\n 0x0a_6a_bd_1d_83_39_38_f3_3c_74_15_4e_04_04_b4_b4_0a_55_5b_bb_ec_21_dd_fa_fd_67_2d_d6_20_47_f0_1an,\n 0x1a_67_9f_5d_36_eb_7b_5c_8e_a1_2a_4c_2d_ed_c8_fe_b1_2d_ff_ee_c4_50_31_72_70_a6_f1_9b_34_cf_18_60n,\n 0x09_80_fb_23_3b_d4_56_c2_39_74_d5_0e_0e_bf_de_47_26_a4_23_ea_da_4e_8f_6f_fb_c7_59_2e_3f_1b_93_d6n,\n 0x16_1b_42_23_2e_61_b8_4c_bf_18_10_af_93_a3_8f_c0_ce_ce_3d_56_28_c9_28_20_03_eb_ac_b5_c3_12_c7_2bn,\n 0x0a_da_10_a9_0c_7f_05_20_95_0f_7d_47_a6_0d_5e_6a_49_3f_09_78_7f_15_64_e5_d0_92_03_db_47_de_1a_0bn,\n 0x1a_73_0d_37_23_10_ba_82_32_03_45_a2_9a_c4_23_8e_d3_f0_7a_8a_2b_4e_12_1b_b5_0d_db_9a_f4_07_f4_51n,\n 0x2c_81_20_f2_68_ef_05_4f_81_70_64_c3_69_dd_a7_ea_90_83_77_fe_ab_a5_c4_df_fb_da_10_ef_58_e8_c5_56n,\n 0x1c_7c_88_24_f7_58_75_3f_a5_7c_00_78_9c_68_42_17_b9_30_e9_53_13_bc_b7_3e_6e_7b_86_49_a4_96_8f_70n,\n 0x2c_d9_ed_31_f5_f8_69_1c_8e_39_e4_07_7a_74_fa_a0_f4_00_ad_8b_49_1e_b3_f7_b4_7b_27_fa_3f_d1_cf_77n,\n 0x23_ff_4f_9d_46_81_34_57_cf_60_d9_2f_57_61_83_99_a5_e0_22_ac_32_1c_a5_50_85_4a_e2_39_18_a2_2e_ean,\n 0x09_94_5a_5d_14_7a_4f_66_ce_ec_e6_40_5d_dd_d9_d0_af_5a_2c_51_03_52_94_07_df_f1_ea_58_f1_80_42_6dn,\n 0x18_8d_9c_52_80_25_d4_c2_b6_76_60_c6_b7_71_b9_0f_7c_7d_a6_ea_a2_9d_3f_26_8a_6d_d2_23_ec_6f_c6_30n,\n 0x30_50_e3_79_96_59_6b_7f_81_f6_83_11_43_1d_87_34_db_a7_d9_26_d3_63_35_95_e0_c0_d8_dd_f4_f0_f4_7fn,\n 0x15_af_11_69_39_68_30_a9_16_00_ca_81_02_c3_5c_42_6c_ea_e5_46_1e_3f_95_d8_9d_82_95_18_d3_0a_fd_78n,\n 0x1d_a6_d0_98_85_43_2e_a9_a0_6d_9f_37_f8_73_d9_85_da_e9_33_e3_51_46_6b_29_04_28_4d_a3_32_0d_8a_ccn,\n 0x27_96_ea_90_d2_69_af_29_f5_f8_ac_f3_39_21_12_4e_4e_4f_ad_3d_be_65_89_45_e5_46_ee_41_1d_da_a9_cbn,\n 0x20_2d_7d_d1_da_0f_6b_4b_03_25_c8_b3_30_77_42_f0_1e_15_61_2e_c8_e9_30_4a_7c_b0_31_9e_01_d3_2d_60n,\n 0x09_6d_67_90_d0_5b_b7_59_15_6a_95_2b_a2_63_d6_72_a2_d7_f9_c7_88_f4_c8_31_a2_9d_ac_e4_c0_f8_be_5fn,\n 0x05_4e_fa_1f_65_b0_fc_e2_83_80_89_65_27_5d_87_7b_43_8d_a2_3c_e5_b1_3e_19_63_79_8c_b1_44_7d_25_a4n,\n 0x1b_16_2f_83_d9_17_e9_3e_db_33_08_c2_98_02_de_b9_d8_aa_69_01_13_b2_e1_48_64_cc_f6_e1_8e_41_65_f1n,\n 0x21_e5_24_1e_12_56_4d_d6_fd_9f_1c_dd_2a_0d_e3_9e_ed_fe_fc_14_66_cc_56_8e_c5_ce_b7_45_a0_50_6e_dcn,\n 0x1c_fb_56_62_e8_cf_5a_c9_22_6a_80_ee_17_b3_6a_be_cb_73_ab_5f_87_e1_61_92_7b_43_49_e1_0e_4b_df_08n,\n 0x0f_21_17_7e_30_2a_77_1b_ba_e6_d8_d1_ec_b3_73_b6_2c_99_af_34_62_20_ac_01_29_c5_3f_66_6e_b2_41_00n,\n 0x16_71_52_23_74_60_69_92_af_fb_0d_d7_f7_1b_12_be_c4_23_6a_ed_e6_29_05_46_bc_ef_7e_1f_51_5c_23_20n,\n 0x0f_a3_ec_5b_94_88_25_9c_2e_b4_cf_24_50_1b_fa_d9_be_2e_c9_e4_2c_5c_c8_cc_d4_19_d2_a6_92_ca_d8_70n,\n 0x19_3c_0e_04_e0_bd_29_83_57_cb_26_6c_15_06_08_0e_d3_6e_dc_e8_5c_64_8c_c0_85_e8_c5_7b_1a_b5_4b_ban,\n 0x10_2a_df_8e_f7_47_35_a2_7e_91_28_30_6d_cb_c3_c9_9f_6f_72_91_cd_40_65_78_ce_14_ea_2a_da_ba_68_f8n,\n 0x0f_e0_af_78_58_e4_98_59_e2_a5_4d_6f_1a_d9_45_b1_31_6a_a2_4b_fb_dd_23_ae_40_a6_d0_cb_70_c3_ea_b1n,\n 0x21_6f_67_17_bb_c7_de_db_08_53_6a_22_20_84_3f_4e_2d_a5_f1_da_a9_eb_de_fd_e8_a5_ea_73_44_79_8d_22n,\n 0x1d_a5_5c_c9_00_f0_d2_1f_4a_3e_69_43_91_91_8a_1b_3c_23_b2_ac_77_3c_6b_3e_f8_8e_2e_42_28_32_51_61n,\n ],\n // t=4 (3 inputs) - 256 constants\n [\n 0x19_b8_49_f6_94_50_b0_68_48_da_1d_39_bd_5e_4a_43_02_bb_86_74_4e_dc_26_23_8b_08_78_e2_69_ed_23_e5n,\n 0x26_5d_df_e1_27_dd_51_bd_72_39_34_7b_75_8f_0a_13_20_eb_2c_c7_45_0a_cc_1d_ad_47_f8_0c_8d_cf_34_d6n,\n 0x19_97_50_ec_47_2f_18_09_e0_f6_6a_54_5e_1e_51_62_41_08_ac_84_50_15_c2_aa_3d_fc_36_ba_b4_97_d8_aan,\n 0x15_7f_f3_fe_65_ac_72_08_11_0f_06_a5_f7_43_02_b1_4d_74_3e_a2_50_67_f0_ff_d0_32_f7_87_c7_f1_cd_f8n,\n 0x2e_49_c4_3c_45_69_dd_9c_5f_d3_5a_c4_5f_ca_33_f1_0b_15_c5_90_69_2f_8b_ee_fe_18_f4_89_6a_c9_49_02n,\n 0x0e_35_fb_89_98_18_90_52_0d_4a_ef_2b_6d_65_06_c3_cb_2f_0b_69_73_c2_4f_a8_27_31_34_5f_fa_2d_1f_1en,\n 0x25_1a_d4_7c_b1_5c_4f_11_05_f1_09_ae_5e_94_4f_1b_a9_d9_e7_80_6d_66_7f_fe_c6_fe_72_30_02_e0_b9_96n,\n 0x13_da_07_dc_64_d4_28_36_98_73_e9_71_60_23_46_41_f8_be_b5_6f_dd_05_e5_f3_56_3f_a3_9d_9c_22_df_4en,\n 0x0c_00_9b_84_e6_50_e6_d2_3d_c0_0c_7d_cc_ef_74_83_a5_53_93_96_89_d3_50_cd_46_e7_b8_90_55_fd_47_38n,\n 0x01_1f_16_b1_c6_3a_85_4f_01_99_2e_39_56_f4_2d_8b_04_eb_65_0c_6d_53_5e_b0_20_3d_ec_74_be_fd_ca_06n,\n 0x0e_d6_9e_5e_38_3a_68_8f_20_9d_9a_56_1d_aa_79_61_2f_3f_78_d0_46_7a_d4_54_85_df_07_09_3f_36_75_49n,\n 0x04_db_a9_4a_7b_0c_e9_e2_21_ac_ad_41_47_2b_6b_be_3a_ec_50_7f_5e_b3_d3_3f_46_36_72_26_4c_9f_78_9bn,\n 0x0a_3f_26_37_d8_40_f3_a1_6e_b0_94_27_1c_9d_23_7b_60_36_75_7d_4b_b5_0b_f7_ce_73_2f_f1_d4_fa_28_e8n,\n 0x25_9a_66_6f_12_9e_ea_19_8f_8a_1c_50_2f_db_38_fa_39_b1_f0_75_56_95_64_b6_e5_4a_48_5d_11_82_32_3fn,\n 0x28_bf_74_59_c9_b2_f4_c6_d8_e7_d0_6a_4e_e3_a4_7f_77_45_d4_27_10_38_e5_15_7a_32_fd_f7_ed_e0_d6_a1n,\n 0x0a_1c_a9_41_f0_57_03_75_26_ea_20_0f_48_9b_e8_d4_c3_7c_85_bb_cc_e6_a2_ae_ec_91_bd_69_41_43_24_47n,\n 0x0c_6f_8f_95_8b_e0_e9_30_53_d7_fd_4f_c5_45_12_85_55_35_ed_15_39_f0_51_dc_b4_3a_26_fd_92_63_61_cfn,\n 0x12_31_06_a9_3c_d1_75_78_d4_26_e8_12_8a_c9_d9_0a_a9_e8_a0_07_08_e2_96_e0_84_dd_57_e6_9c_aa_f8_11n,\n 0x26_e1_ba_52_ad_92_85_d9_7d_d3_ab_52_f8_e8_40_08_5e_8f_a8_3f_f1_e8_f1_87_7b_07_48_67_cd_2d_ee_75n,\n 0x1c_b5_5c_ad_7b_d1_33_de_18_a6_4c_5c_47_b9_c9_7c_be_4d_8b_7b_f9_e0_95_86_44_71_53_7e_6a_4a_e2_c5n,\n 0x1d_cd_73_e4_6a_cd_8f_8e_0e_2c_7c_e0_4b_de_7f_6d_2a_53_04_3d_50_60_a4_1c_71_43_f0_8e_6e_90_55_d0n,\n 0x01_10_03_e3_2f_6d_9c_66_f5_85_2f_05_47_4a_4d_ef_0c_da_29_4a_0e_b4_e9_b9_b1_2b_9b_b4_51_2e_55_74n,\n 0x2b_1e_80_9a_c1_d1_0a_b2_9a_d5_f2_0d_03_a5_7d_fe_ba_df_e5_90_3f_58_ba_fe_d7_c5_08_dd_22_87_ae_8cn,\n 0x25_39_de_17_85_b7_35_99_9f_b4_da_c3_5e_e1_7e_d0_ef_99_5d_05_ab_2f_c5_fa_ea_a6_9a_e8_7b_ce_c0_a5n,\n 0x0c_24_6c_5a_2e_f8_ee_01_26_49_7f_22_2b_3e_0a_0e_f4_e1_c3_d4_1c_86_d4_6e_43_98_2c_b1_1d_77_95_1dn,\n 0x19_20_89_c4_97_4f_68_e9_54_08_14_8f_7c_06_32_ed_bb_09_e6_a6_ad_1a_1c_2f_3f_03_05_f5_d0_3b_52_7bn,\n 0x1e_ae_0a_d8_ab_68_b2_f0_6a_0e_e3_6e_eb_0d_0c_05_85_29_09_7d_91_09_6b_75_6d_8f_dc_2f_b5_a6_0d_85n,\n 0x17_91_90_e5_d0_e2_21_79_e4_6f_82_82_87_2a_bc_88_db_6e_2f_dc_0d_ee_99_e6_97_68_bd_98_c5_d0_6b_fbn,\n 0x29_bb_9e_2c_90_76_73_25_76_e9_a8_1c_7a_c4_b8_32_14_52_8f_7d_b0_0f_31_bf_6c_af_e7_94_a9_b3_cd_1cn,\n 0x22_5d_39_4e_42_20_75_99_40_3e_fd_0c_24_64_a9_0d_52_65_26_45_88_2a_ac_35_b1_0e_59_0e_6e_69_1e_08n,\n 0x06_47_60_62_3c_25_c8_cf_75_3d_23_80_55_b4_44_53_2b_e1_35_57_45_1c_08_7d_e0_9e_fd_45_4b_23_fd_59n,\n 0x10_ba_3a_0e_01_df_92_e8_7f_30_1c_4b_71_6d_8a_39_4d_67_f4_bf_42_a7_5c_10_92_29_10_a7_8f_6b_5b_87n,\n 0x0e_07_0b_f5_3f_84_51_b2_4f_9c_6e_96_b0_c2_a8_01_cb_51_1b_c0_c2_42_eb_9d_36_1b_77_69_3f_21_47_1cn,\n 0x1b_94_cd_61_b0_51_b0_4d_d3_97_55_ff_93_82_1a_73_cc_d6_cb_11_d2_49_1d_8a_a7_f9_21_01_4d_e2_52_fbn,\n 0x1d_7c_b3_9b_af_b8_c7_44_e1_48_78_7a_2e_70_23_0f_9d_4e_91_7d_57_13_bb_05_04_87_b5_aa_7d_74_07_0bn,\n 0x2e_c9_31_89_bd_1a_b4_f6_91_17_d0_fe_98_0c_80_ff_87_85_c2_96_18_29_f7_01_bb_74_ac_1f_30_3b_17_dbn,\n 0x2d_b3_66_bf_dd_36_d2_77_a6_92_bb_82_5b_86_27_5b_ea_c4_04_a1_9a_e0_7a_90_82_ea_46_bd_83_51_79_26n,\n 0x06_21_00_eb_48_5d_b0_62_69_65_5c_f1_86_a6_85_32_98_52_75_42_84_50_35_9a_dc_99_ce_c6_96_07_11_b8n,\n 0x07_61_d3_3c_66_61_4a_aa_57_0e_7f_1e_82_44_ca_11_20_24_3f_92_fa_59_e4_f9_00_c5_67_bf_41_f5_a5_9bn,\n 0x20_fc_41_1a_11_4d_13_99_2c_27_05_aa_03_4e_3f_31_5d_78_60_8a_0f_7d_e4_cc_f7_a7_2e_49_48_55_ad_0dn,\n 0x25_b5_c0_04_a4_bd_fc_b5_ad_d9_ec_4e_9a_b2_19_ba_10_2c_67_e8_b3_ef_fb_5f_c3_a3_0f_31_72_50_bc_5an,\n 0x23_b1_82_2d_27_8e_d6_32_a4_94_e5_8f_6d_f6_f5_ed_03_8b_18_6d_84_74_15_5a_d8_7e_7d_ff_62_b3_7f_4bn,\n 0x22_73_4b_4c_5c_3f_94_93_60_6c_4b_a9_01_24_99_bf_0f_14_d1_3b_fc_fc_cc_aa_16_10_2a_29_cc_2f_69_e0n,\n 0x26_c0_c8_fe_09_eb_30_b7_e2_7a_74_dc_33_49_23_47_e5_bd_ff_40_9a_a3_61_02_54_41_3d_3f_ad_79_5c_e5n,\n 0x07_0d_d0_cc_b6_bd_7b_ba_e8_8e_ac_03_fa_1f_bb_26_19_6b_e3_08_3a_80_98_29_bb_d6_26_df_34_8c_ca_d9n,\n 0x12_b6_59_5b_db_32_9b_6f_b0_43_ba_78_bb_28_c3_be_c2_c0_a6_de_46_d8_c5_ad_60_67_c4_eb_fd_42_50_dan,\n 0x24_8d_97_d7_f7_62_83_d6_3b_ec_30_e7_a5_87_6c_11_c0_6f_ca_9b_27_5c_67_1c_5e_33_d9_5b_b7_e8_d7_29n,\n 0x1a_30_6d_43_9d_46_3b_08_16_fc_6f_d6_4c_c9_39_31_8b_45_eb_75_9d_dd_e4_aa_10_6d_15_d9_bd_9b_aa_aan,\n 0x28_a8_f8_37_2e_3c_38_da_ce_d7_c0_04_21_cb_46_21_f4_f1_b5_4d_dc_27_82_1b_0d_62_d3_d6_ec_7c_56_cfn,\n 0x00_94_97_57_17_f9_a8_a8_bb_35_15_2f_24_d4_32_94_07_1c_e3_20_c8_29_f3_88_bc_85_21_83_e1_e2_ce_7en,\n 0x04_d5_ee_4c_3a_a7_8f_7d_80_fd_e6_0d_71_64_80_d3_59_3f_74_d4_f6_53_ae_83_f4_10_32_46_db_2e_8d_65n,\n 0x2a_6c_f5_e9_aa_03_d4_33_63_49_ad_6f_b8_ed_22_69_c7_be_f5_4b_88_22_cc_76_d0_84_95_c1_2e_fd_e1_87n,\n 0x23_04_d3_1e_aa_b9_60_ba_92_74_da_43_e1_9d_de_b7_f7_92_18_08_08_fd_6e_43_ba_ae_48_d7_ef_cb_a3_f3n,\n 0x03_fd_9a_c8_65_a4_b2_a6_d5_e7_00_97_85_81_72_49_bf_f0_8a_7e_07_26_fc_b4_e1_c1_1d_39_d1_99_f0_b0n,\n 0x00_b7_25_8d_ed_52_bb_da_22_48_40_4d_55_ee_50_44_79_8a_fc_3a_20_91_93_07_3f_79_54_d4_d6_3b_0b_64n,\n 0x15_9f_81_ad_a0_77_17_99_ec_38_fc_a2_d4_bf_65_eb_b1_3d_3a_74_f3_29_8d_b3_62_72_c5_ca_65_e9_2d_9an,\n 0x1e_f9_0e_67_43_7f_bc_85_50_23_7a_75_bc_28_e3_bb_90_00_13_0e_a2_5f_0c_54_71_e1_44_cf_42_64_43_1fn,\n 0x1e_65_f8_38_51_5e_5f_f0_19_6b_49_aa_41_a2_d2_56_8d_f7_39_bc_17_6b_08_ec_95_a7_9e_d8_29_32_e3_0dn,\n 0x2b_1b_04_5d_ef_3a_16_6c_ec_6c_e7_68_d0_79_ba_74_b1_8c_84_4e_57_0e_1f_82_65_75_c1_06_8c_94_c3_3fn,\n 0x08_32_e5_75_3c_eb_0f_f6_40_25_43_b1_10_92_29_c1_65_dc_2d_73_be_f7_15_e3_f1_c6_e0_7c_16_8b_b1_73n,\n 0x02_f6_14_e9_ce_df_b3_dc_6b_76_2a_e0_a3_7d_41_ba_b1_b8_41_c2_e8_b6_45_1b_c5_a8_e3_c3_90_b6_ad_16n,\n 0x0e_24_27_d3_8b_d4_6a_60_dd_64_0b_8e_36_2c_ad_96_73_70_eb_b7_77_be_df_f4_0f_6a_0b_e2_7e_7e_d7_05n,\n 0x04_93_63_0b_7c_67_0b_6d_eb_7c_84_d4_14_e7_ce_79_04_9f_0e_c0_98_c3_c7_c5_07_68_bb_e2_92_14_a5_3an,\n 0x22_ea_d1_00_e8_e4_82_67_4d_ec_da_b1_70_66_c5_a2_6b_b1_51_53_55_d5_46_1a_3d_c0_6c_c8_53_27_ce_a9n,\n 0x25_b3_e5_6e_65_5b_42_cd_aa_e2_62_6e_d2_55_4d_48_58_3f_1a_e3_56_26_d0_4d_e5_08_4e_0b_6d_2a_6f_16n,\n 0x1e_32_75_2a_da_88_36_ef_58_37_a6_cd_e8_ff_13_db_b5_99_c3_36_34_9e_4c_58_4b_4f_dc_0a_0c_f6_f9_d0n,\n 0x2f_a2_a8_71_c1_5a_38_7c_c5_0f_68_f6_f3_c3_45_5b_23_c0_09_95_f0_50_78_f6_72_a9_86_40_74_d4_12_e5n,\n 0x2f_56_9b_8a_9a_44_24_c9_27_8e_1d_b7_31_1e_88_9f_54_cc_bf_10_66_1b_ab_7f_cd_18_e7_c7_a7_d8_35_05n,\n 0x04_4c_b4_55_11_0a_8f_dd_53_1a_de_53_02_34_c5_18_a7_df_93_f7_33_2f_fd_21_44_16_53_74_b2_46_b4_3dn,\n 0x22_78_08_de_93_90_6d_5d_42_02_46_15_7f_2e_42_b1_91_fe_8c_90_ad_fe_11_81_78_dd_c7_23_a5_31_90_25n,\n 0x02_fc_ca_29_34_e0_46_bc_62_3a_de_ad_87_35_79_86_5d_03_78_1a_e0_90_ad_4a_85_79_d2_e7_a6_80_03_55n,\n 0x0e_f9_15_f0_ac_12_0b_87_6a_bc_cc_eb_34_4a_1d_36_ba_d3_f3_c5_ab_91_a8_dd_cb_ec_2e_06_0d_8b_ef_acn,\n 0x17_97_13_0f_4b_7a_3e_17_77_eb_75_7b_c6_f2_87_f6_ab_0f_b8_5f_6b_e6_3b_09_f3_b1_6e_f2_b1_40_5d_38n,\n 0x0a_76_22_5d_c0_41_70_ae_33_06_c8_5a_ba_b5_9e_60_8c_7f_49_7c_20_15_6d_4d_36_c6_68_55_5d_ec_c6_e5n,\n 0x1f_ff_b9_ec_19_92_d6_6b_a1_e7_7a_7b_93_20_9a_f6_f8_fa_76_d4_8a_cb_66_47_96_17_4b_53_26_a3_1a_5cn,\n 0x25_72_1c_4f_c1_5a_3f_28_53_b5_7c_33_8f_a5_38_d8_5f_8f_bb_a6_c6_b9_c6_09_06_11_88_9b_79_7b_9c_5fn,\n 0x0c_81_7f_d4_2d_5f_7a_41_21_5e_3d_07_ba_19_72_16_ad_b4_c3_79_07_05_da_95_eb_63_b9_82_bf_ca_f7_5an,\n 0x13_ab_e3_f5_23_99_15_d3_9f_7e_13_c2_c2_49_70_b6_df_8c_f8_6c_e0_0a_22_00_2b_c1_58_66_e5_2b_5a_96n,\n 0x21_06_fe_ea_54_62_24_ea_12_ef_7f_39_98_7a_46_c8_5c_1b_c3_dc_29_bd_bd_7a_92_cd_60_ac_b4_d3_91_cen,\n 0x21_ca_85_94_68_a7_46_b6_aa_a7_94_74_a3_7d_ab_49_f1_ca_5a_28_c7_48_bc_71_57_e1_b3_34_5b_b0_f9_59n,\n 0x05_cc_d6_25_5c_1e_6f_0c_5c_f1_f0_df_93_41_94_c6_29_11_d1_4d_03_21_66_2a_8f_1a_48_99_9e_34_18_5bn,\n 0x0f_0e_34_a6_4b_70_a6_26_e4_64_d8_46_67_4c_4c_88_16_c4_fb_26_7f_e4_4f_e6_ea_28_67_8c_b0_94_90_a4n,\n 0x05_58_53_1a_4e_25_47_0c_61_57_79_4c_a3_6d_0e_96_47_db_fc_fe_35_0d_64_83_8f_5b_1a_8a_2d_e0_d4_bfn,\n 0x09_d3_dc_a9_17_3e_d2_fa_ce_ea_12_51_57_68_3d_18_92_4c_ad_ad_3f_65_5a_60_b7_2f_58_64_96_1f_14_55n,\n 0x03_28_cb_d5_4e_8c_09_13_49_3f_86_6e_d0_3d_21_8b_f2_3f_92_d6_8a_ae_c4_86_17_d4_c7_22_e5_bd_43_35n,\n 0x2b_f0_72_16_e2_af_f0_a2_23_a4_87_b1_a7_09_4e_07_e7_9e_7b_cc_97_98_c6_48_ee_33_47_dd_53_29_d3_4bn,\n 0x1d_af_34_5a_58_00_6b_73_64_99_c5_83_cb_76_c3_16_d6_f7_8e_d6_a6_df_fc_82_11_1e_11_a6_3f_e4_12_dfn,\n 0x17_65_63_47_24_56_aa_a7_46_b6_94_c6_0e_18_23_61_1e_f3_90_39_b2_ed_c7_ff_39_1e_6f_22_93_d2_c4_04n,\n 0x2e_f1_e0_fa_d9_f0_8e_87_a3_bb_5e_47_d7_e3_35_38_ca_96_4d_2b_7d_10_83_d4_fb_02_25_03_5b_d3_f8_dbn,\n 0x22_6c_9b_1a_f9_5b_ab_cf_17_b2_b1_f5_7c_73_10_17_9c_18_03_de_c5_ae_8f_0a_17_79_ed_36_c8_17_ae_2an,\n 0x14_bc_e3_54_9c_c3_db_74_28_12_6b_4c_3a_15_ae_0f_f8_14_8c_89_f1_3f_b3_5d_35_73_4e_b5_d4_ad_0d_efn,\n 0x2d_eb_ff_15_6e_27_6b_b5_74_2c_33_73_f2_63_5b_48_b8_e9_23_d3_01_f3_72_f8_e5_50_cf_d4_03_42_12_c7n,\n 0x2d_40_83_cf_5a_87_f5_b6_fc_23_95_b2_2e_35_6b_64_41_af_e1_b6_b2_9c_47_ad_d7_d0_43_2d_1d_47_60_c7n,\n 0x0c_22_5b_7b_cd_04_bf_9c_34_b9_11_26_2f_dc_9c_1b_91_bf_79_a1_0c_01_84_d8_9c_31_7c_53_d7_16_1c_29n,\n 0x03_15_21_69_d4_f3_d0_6e_c3_3a_79_bf_ac_91_a0_2c_99_aa_02_00_db_66_d5_aa_7b_83_52_65_f9_c9_c8_f3n,\n 0x0b_61_81_1a_92_10_be_78_b0_59_74_58_74_86_d5_8b_dd_c8_f5_1b_fd_fe_bb_b8_7a_fe_8b_7a_a7_d3_19_9cn,\n 0x20_3e_00_0c_ad_29_8d_aa_f7_eb_a6_a5_c5_92_18_78_b8_ae_48_ac_f7_04_8f_16_04_6d_63_7a_53_3b_6f_78n,\n 0x1a_44_bf_09_37_c7_22_d1_37_66_72_b6_9f_6c_96_55_ba_7e_e3_86_fd_a1_11_2c_07_57_14_3d_1b_fa_91_46n,\n 0x03_76_b4_fa_e0_8c_b0_3d_35_00_af_ec_1a_1f_56_ac_b8_e0_fd_e7_5a_21_06_d7_00_2f_59_c5_61_1d_4d_aan,\n 0x00_78_0a_f2_ca_1c_ad_64_65_a2_17_12_50_fd_fc_32_d6_fc_24_1d_32_14_17_7f_3d_55_3e_f3_63_18_21_85n,\n 0x10_77_4d_9a_b8_0c_25_bd_eb_80_8b_ed_fd_72_a8_d9_b7_5d_be_18_d5_22_1c_87_e9_d8_57_07_9b_dc_31_d5n,\n 0x10_dc_6e_9c_00_6e_a3_8b_04_b1_e0_3b_4b_d9_49_0c_0d_03_f9_89_29_ca_1d_7f_b5_68_21_fd_19_d3_b6_e8n,\n 0x00_54_4b_83_38_79_15_18_b2_c7_64_5a_50_39_27_98_b2_1f_75_bb_60_e3_59_61_70_06_7d_00_14_1c_ac_16n,\n 0x22_2c_01_17_57_18_38_6f_2e_2e_82_eb_12_27_89_e3_52_e1_05_a3_b8_fa_85_26_13_bc_53_44_33_ee_42_8cn,\n 0x28_40_d0_45_e9_bc_22_b2_59_cf_b8_81_1b_1e_0f_45_b7_7f_7b_db_7f_7e_2b_46_15_1a_14_30_f6_08_e3_c5n,\n 0x06_27_52_f8_6e_eb_e1_1a_00_9c_93_7e_46_8c_33_5b_04_55_45_74_c2_99_01_96_50_8e_01_fa_58_60_18_6bn,\n 0x06_04_1b_da_c4_82_05_ac_87_ad_b8_7c_20_a4_78_a7_1c_99_50_c1_2a_80_bc_0a_55_a8_e8_3e_aa_f0_47_46n,\n 0x04_a5_33_f2_36_c4_22_d1_ff_90_0a_36_89_49_b0_02_2c_7a_2a_e0_92_f3_08_d8_2b_1d_cb_bf_51_f5_00_0dn,\n 0x13_e3_1d_7a_67_23_2f_d8_11_d6_a9_55_b3_d4_f2_5d_fe_06_6d_1e_7d_c3_3d_f0_4b_de_50_a2_b2_d0_5b_2an,\n 0x01_1c_26_83_ae_91_eb_4d_fb_c1_3d_63_57_e8_59_9a_92_79_d1_64_8f_f2_c9_5d_2f_79_90_5b_b1_39_20_f1n,\n 0x0b_0d_21_93_46_b8_57_45_25_b1_a2_70_e0_b4_cb_a5_d5_6c_92_8e_3e_2c_2b_d0_a1_ec_ae_d0_15_aa_f6_aen,\n 0x14_ab_de_c8_db_9c_6d_c9_70_29_1e_e6_38_69_02_09_b6_50_80_78_1e_f9_fd_13_d8_4c_7a_72_6b_5f_13_64n,\n 0x1a_0b_70_b4_b2_6f_dc_28_fc_d3_2a_a3_d2_66_47_88_01_eb_12_20_2e_f4_7c_ed_98_8d_03_76_61_0b_e1_06n,\n 0x27_85_43_72_1f_96_d1_30_7b_69_43_f9_80_4e_7f_e5_64_01_de_b2_ef_99_c4_d1_27_04_88_2e_72_78_b6_07n,\n 0x16_eb_59_49_4a_97_76_cf_57_86_62_14_db_d1_47_3f_3f_07_38_a3_25_63_8d_8b_a3_65_35_e0_11_d5_82_59n,\n 0x25_67_a6_58_a8_1f_fb_44_4f_24_00_88_fa_55_24_c6_9a_9e_53_ee_ab_6b_7f_8c_41_c3_47_9d_cf_8c_64_4an,\n 0x29_aa_1d_7c_15_1e_9a_d0_a7_ab_39_f1_ab_d9_cf_77_ab_78_e0_21_5a_57_15_a6_b8_82_ad_e8_40_bb_13_d8n,\n 0x15_c0_91_23_3e_60_ef_e0_d4_bb_fc_e2_b3_64_15_00_6a_4f_01_7f_9a_85_38_8c_e2_06_b9_1f_99_f2_c9_84n,\n 0x16_bd_7d_22_ff_85_8e_5e_08_82_c2_c9_99_55_8d_77_e7_67_3a_d5_f1_91_5f_9f_eb_67_9a_81_15_f0_14_cfn,\n 0x02_db_50_48_0a_07_be_0e_b2_c2_e1_3e_d6_ef_40_74_c0_18_2d_9b_66_8b_8e_08_ff_e6_76_92_50_04_20_25n,\n 0x05_e4_a2_20_e6_a3_bc_9f_7b_68_06_ec_9d_6c_db_a1_86_33_0e_f2_bf_7a_db_4c_13_ba_86_63_43_b7_31_19n,\n 0x1d_da_05_eb_c3_01_70_bc_98_cb_f2_a5_ee_3b_50_e8_b5_f7_0b_c4_24_d3_9f_a4_10_4d_37_f1_cb_cf_7a_42n,\n 0x01_84_be_f7_21_88_81_87_f6_45_b6_fe_e3_66_7f_3c_91_da_21_44_14_d8_9b_a5_cd_30_1f_22_b0_de_89_90n,\n 0x14_98_a3_07_e6_89_00_06_5f_5e_82_76_f6_2a_ef_1c_37_41_4b_84_49_4e_15_77_ad_1a_6d_64_34_1b_78_ecn,\n 0x25_f4_0f_82_b3_1d_ac_c4_f4_93_98_00_b9_d2_c3_ea_ce_f7_37_b8_fa_b1_f8_64_fe_33_54_8a_d4_6b_d4_9dn,\n 0x09_d3_17_cc_67_02_51_94_3f_6f_58_62_a3_0d_2e_a9_e8_30_56_ce_49_07_bf_bb_cb_1f_f3_1c_e5_bb_96_50n,\n 0x2f_77_d7_77_86_d9_79_b2_3b_a4_ce_4a_4c_1b_3b_d0_a4_11_32_cd_46_7a_86_ab_29_b9_13_b6_cf_31_49_d0n,\n 0x0f_53_da_fd_53_5a_9f_44_73_dc_26_6b_6f_cc_c6_84_1b_bd_33_69_63_f2_54_c1_52_f8_9e_78_5f_72_9b_bfn,\n 0x25_c1_fd_72_e2_23_04_52_65_c3_a0_99_e1_75_26_fa_0e_69_76_e1_c0_0b_af_16_de_96_de_85_de_ef_2f_a2n,\n 0x2a_90_2c_89_80_c1_7f_aa_e3_68_d3_85_d5_2d_16_be_41_af_95_c8_4e_ae_a3_cf_89_3e_65_d6_ce_4a_8f_62n,\n 0x1c_e1_58_0a_34_52_ec_f3_02_87_8c_89_76_b8_2b_e9_66_76_dd_11_4d_1d_c8_d2_55_27_40_57_62_f8_35_29n,\n 0x24_a6_07_3f_91_ad_dc_33_a4_9a_1f_a3_06_df_00_88_01_c5_ec_56_96_09_03_4d_2f_c5_0f_7f_0f_4d_00_56n,\n 0x25_e5_2d_bd_61_24_53_0d_9f_c2_7f_e3_06_d7_1d_45_83_e0_7c_a5_54_b5_d1_57_7f_25_6c_68_b0_be_2b_74n,\n 0x23_df_fa_e3_c4_23_fa_7a_93_46_8d_bc_cf_b0_29_85_59_74_be_4d_0a_7b_29_94_67_96_e5_b6_cd_70_f1_5dn,\n 0x06_34_2d_a3_70_cc_0d_8c_49_b7_75_94_f6_b0_27_c4_80_61_5d_50_be_36_24_3a_99_59_1b_c9_92_4e_d6_f5n,\n 0x27_54_11_42_81_28_65_46_b7_5f_09_f1_15_fc_75_1b_47_78_30_3d_04_05_c1_b4_cc_7d_f0_d8_e9_f6_39_25n,\n 0x15_c1_9e_85_34_c5_c1_a8_86_2c_2b_c1_d1_19_ed_de_ab_f2_14_15_38_33_d7_bd_b5_9e_e1_97_f8_18_7c_f5n,\n 0x26_5f_e0_62_76_6d_08_fa_b4_c7_8d_0d_9e_f3_ca_be_36_6f_3b_e0_a8_21_06_16_79_b4_b3_d2_d7_7d_5f_3en,\n 0x13_cc_f6_89_d6_7a_3e_c9_f2_2c_b7_cd_0a_c3_a3_27_d3_77_ac_5c_d0_14_6f_04_8d_eb_fd_09_8d_3e_c7_ben,\n 0x17_66_2f_74_56_78_97_39_f8_1c_d3_97_48_27_a8_87_d9_2a_5e_05_bd_f3_fe_6b_9f_bc_cc_a4_52_4a_ae_bdn,\n 0x21_b2_9c_76_32_9b_31_c8_ef_18_63_1e_51_5f_7f_2f_82_ca_6a_5c_ca_70_ce_e4_e8_09_fd_62_4b_e7_ad_5dn,\n 0x18_13_74_78_38_2a_ad_ba_44_1e_b9_7f_e2_79_01_98_9c_06_73_81_65_21_53_19_93_9e_b1_7b_01_fa_97_5cn,\n 0x2b_c0_7e_a2_bf_ad_68_e8_dc_72_4f_5f_ef_2b_37_c2_d3_4f_76_19_35_ff_d3_b7_39_ce_ec_46_68_f3_7e_88n,\n 0x2d_db_2e_37_6f_54_d6_4a_56_38_40_48_0d_f9_93_fe_b4_17_32_03_c2_bd_94_ad_0e_60_20_77_ae_f9_a0_3en,\n 0x27_7e_b5_0f_2b_aa_70_61_06_b4_1c_b2_4c_60_26_09_e8_a2_0f_8d_72_f6_13_70_8a_db_25_37_35_96_c3_f7n,\n 0x0d_4d_e4_7e_1a_ba_34_26_9d_0c_62_09_04_f0_1a_56_b3_3f_c4_b4_50_c0_db_50_bb_7f_87_73_4c_9a_1f_e5n,\n 0x0b_84_42_bf_e9_e4_a1_b4_42_86_73_b6_bd_3e_ea_6f_9f_44_56_97_05_8f_13_4a_ae_90_8d_02_79_a2_9f_0cn,\n 0x11_fe_5b_18_fb_be_a1_a8_6e_06_93_0c_b8_9f_7d_4a_26_e1_86_a6_59_45_e9_65_74_24_7f_dd_b7_20_f8_f5n,\n 0x22_40_26_f6_df_af_71_e2_4d_25_d8_f6_d9_f9_00_21_df_5b_77_4d_ca_d4_d8_83_17_0e_4a_d8_9c_33_a0_d6n,\n 0x0b_2c_a6_a9_99_fe_68_87_e0_70_4d_ad_58_d0_34_65_a9_6b_c9_e3_7d_10_91_f6_1b_c9_f9_c6_2b_be_b8_24n,\n 0x22_1b_63_d6_6f_0b_45_f9_d4_0c_54_05_3a_28_a0_6b_1d_0a_4c_e4_1d_36_47_97_a1_a7_e0_c9_65_29_f4_21n,\n 0x30_18_5c_48_b7_b2_f1_d5_3d_41_20_80_1b_04_7d_08_74_93_bc_e6_4d_4d_24_ae_dc_e2_f4_83_6b_b8_4a_d4n,\n 0x23_f5_d3_72_a3_f0_e3_cb_a9_89_e2_23_05_62_27_d3_53_33_56_f0_fa_a4_8f_27_f8_26_73_18_63_2a_61_f0n,\n 0x27_16_68_3b_32_c7_55_fd_1b_f8_23_5e_a1_62_b1_f3_88_e1_e0_09_0d_06_16_2e_8e_6d_fb_e4_32_8f_3e_3bn,\n 0x09_77_54_58_36_86_6f_a2_04_ca_1d_85_3e_c0_90_9e_3d_14_07_70_c8_0a_c6_7d_c9_30_c6_97_48_d5_d4_bcn,\n 0x14_44_e8_f5_92_bd_bf_d8_02_5d_91_ab_49_82_dd_42_5f_51_68_2d_31_47_2b_05_e8_1c_43_c0_f9_43_4b_31n,\n 0x26_e0_4b_65_e9_ca_82_70_be_b7_4a_1c_5c_b8_fe_e8_be_3f_fb_fe_58_3f_70_12_a0_0f_87_4e_77_18_fb_e3n,\n 0x22_a5_c2_fa_86_0d_11_fe_34_ee_47_a5_cd_9f_86_98_00_f4_8f_4f_eb_e2_9a_d6_df_69_81_6f_b1_a9_14_d2n,\n 0x17_4b_54_d9_90_7d_8f_5c_6a_fd_67_2a_73_8f_42_73_7e_c3_38_f3_a0_96_4c_62_9f_74_74_dd_44_c5_c8_d7n,\n 0x1d_b1_db_8a_a4_52_83_f3_11_68_fa_66_69_4c_f2_80_8d_21_89_b8_7c_8c_81_43_d5_6c_87_19_07_b3_9b_87n,\n 0x15_30_bf_0f_46_52_7e_88_90_30_b8_c7_b7_df_de_12_6f_65_fa_f8_cc_e0_ab_66_38_73_41_d8_13_d1_bf_d1n,\n 0x0b_73_f6_13_99_32_29_f5_9f_01_c1_ce_c8_76_0e_99_36_ea_d9_ed_c8_f2_81_48_89_33_0a_2f_2b_ad_e4_57n,\n 0x29_c2_5a_22_fe_21_64_60_45_52_aa_ea_37_7f_44_8d_58_7a_b9_77_fc_82_27_78_7b_d2_dc_0f_36_bc_f4_1en,\n 0x2b_30_d5_3e_d1_75_9b_fb_85_03_da_66_c9_2c_f4_07_7a_be_82_79_5d_c2_72_b3_77_df_57_d7_7c_87_55_26n,\n 0x12_f6_d7_03_b5_70_2a_ab_7b_7b_7e_69_35_9d_53_a2_75_6c_08_c8_5e_de_72_27_cf_5f_0a_29_16_78_7c_d2n,\n 0x25_20_e1_83_00_af_da_3f_61_a4_0a_0b_88_37_29_3a_55_ad_01_07_10_28_d4_84_1f_fa_9a_c7_06_36_41_13n,\n 0x1e_c9_da_ea_86_09_71_ec_dd_a8_ed_4f_34_6f_a9_67_ac_9b_c5_92_78_27_73_93_c6_8f_09_fa_03_b8_b9_5fn,\n 0x0a_99_b3_e1_78_db_2e_2e_43_2f_5c_d5_be_f8_fe_44_83_bf_5c_bf_70_ed_40_7c_08_aa_e2_4b_83_0a_d7_25n,\n 0x07_cd_a9_e6_3d_b6_e3_9f_08_6b_89_b6_01_c2_bb_e4_07_ee_0a_ba_c3_c8_17_a1_31_7a_ba_d7_c5_77_84_92n,\n 0x08_c9_c6_5a_4f_95_5e_89_52_d5_71_b1_91_bb_0a_db_49_bd_82_90_96_32_03_b3_5d_48_aa_b3_8f_8f_c3_a3n,\n 0x27_37_f8_ce_1d_5a_67_b3_49_59_0d_db_fb_d7_09_ed_9a_f5_4a_2a_3f_27_19_d3_38_01_c9_c1_7b_dd_9c_9en,\n 0x10_49_a6_c6_5f_f0_19_f0_d2_87_70_07_27_98_e8_b7_90_94_32_bd_0c_12_98_13_a9_f1_79_ba_62_7f_7d_6an,\n 0x18_b4_fe_96_87_32_c4_62_c0_ea_5a_9b_eb_27_ce_cb_de_88_68_94_4f_df_64_ee_60_a5_12_23_61_da_ed_dbn,\n 0x2f_f2_b6_fd_22_df_49_d2_44_0b_2e_ae_ee_fa_8c_02_a6_f4_78_cf_cf_11_f1_b2_a4_f7_47_34_83_88_5d_19n,\n 0x2e_c5_f2_f1_92_8f_e9_32_e5_6c_78_9b_8f_6b_bc_b3_e8_be_40_57_cb_d8_db_d1_8a_1b_35_2f_5c_ef_42_ffn,\n 0x26_5a_5e_cc_d8_b9_29_75_e3_3a_d9_f7_5b_f3_42_6d_42_4a_4c_6a_77_94_ee_3f_08_c1_d1_00_37_8e_54_5en,\n 0x24_05_ea_a4_c0_bd_e1_12_9d_62_42_bb_5a_da_0e_68_77_8e_65_6c_fc_b3_66_bf_20_51_7d_a1_df_d4_27_9cn,\n 0x09_4c_97_d8_c1_94_c4_2e_88_01_80_04_cb_bf_2b_c5_fd_b5_19_55_d8_b2_d6_6b_76_dd_98_a2_db_f6_04_17n,\n 0x2c_30_d5_f3_3b_b3_2c_5c_22_b9_97_9a_60_5b_f6_4d_50_8b_70_52_21_e6_a6_86_33_0c_96_25_c2_af_e0_b8n,\n 0x01_a7_56_66_f6_24_1f_68_25_d0_1c_c6_dc_b1_62_2d_48_86_ea_58_3e_87_29_9e_6a_a2_fc_71_6f_db_6c_f5n,\n 0x0a_32_90_e8_39_81_13_ea_4d_12_ac_09_1e_87_be_7c_6d_35_9a_b9_a6_69_79_fc_f4_7b_f2_e8_7d_38_2f_cbn,\n 0x15_4a_de_9c_a3_6e_26_8d_fe_b3_84_61_42_5b_b0_d8_c3_12_19_d8_fa_0d_fc_75_ec_d2_1b_f6_9a_a0_cc_74n,\n 0x27_aa_8d_3e_25_38_0c_0b_1b_17_2d_79_c6_f2_2e_ee_99_23_1e_f5_dc_69_d8_dc_13_a4_b5_09_5d_02_87_72n,\n 0x2c_f4_05_1e_6c_ab_48_30_1a_8b_2e_3b_ca_60_99_d7_56_bb_df_48_5a_fa_1f_54_9d_39_5b_bc_bd_80_64_61n,\n 0x30_1e_70_f7_29_f3_c9_4b_1d_3f_51_7d_df_f9_f2_01_51_31_fe_ab_8a_fa_5e_eb_b0_84_3d_7f_84_b2_3e_71n,\n 0x29_8b_eb_64_f8_12_d2_5d_8b_4d_96_20_34_7a_b0_23_32_dc_4c_ef_11_3a_e6_0d_17_a8_d7_a4_c9_1f_83_bcn,\n 0x1b_36_2e_72_a5_f8_47_f8_4d_03_fd_29_1c_3c_47_1e_d1_c1_4a_15_b2_21_68_0a_cf_11_a3_f0_2e_46_aa_95n,\n 0x0d_c8_a2_14_61_10_c0_b3_75_43_29_02_99_92_23_d5_aa_1e_f6_e7_8e_1e_5e_bc_bc_1d_9b_a4_1d_c1_c7_37n,\n 0x0a_48_66_3b_34_ce_5e_1c_05_dc_93_09_2c_b6_97_78_cb_21_72_9a_72_dd_c0_3a_08_af_a1_eb_92_2f_f2_79n,\n 0x0a_87_39_1f_b1_cd_8c_df_60_96_b6_4a_82_f9_e9_5f_0f_e4_6f_14_3b_70_2d_74_54_5b_b3_14_88_10_98_een,\n 0x1b_5b_29_46_f7_c2_89_75_f0_51_2f_f8_e6_ca_36_2f_88_26_ed_d7_ea_9c_29_f3_82_ba_8a_2a_08_92_fd_5dn,\n 0x01_00_1c_f5_12_ac_24_1d_47_eb_e2_23_92_19_bc_6a_17_3a_8b_bc_b8_a5_b9_87_b4_ea_c1_f5_33_31_5b_6bn,\n 0x2f_d9_77_c7_0f_64_5d_b4_f7_04_fa_7d_76_93_da_72_7a_c0_93_d3_fb_5f_5f_eb_c7_2b_eb_17_d8_35_8a_32n,\n 0x23_c0_03_9a_3f_ab_4a_d3_c2_d7_cc_68_81_64_f3_9e_76_1d_53_55_c0_54_44_d9_9b_e7_63_a9_77_93_a9_c4n,\n 0x19_d4_3e_e0_c6_08_1c_05_2c_9c_0d_f6_16_1e_aa_c1_ae_c3_56_cf_43_58_88_e7_9f_27_f2_2f_f0_3f_a2_5dn,\n 0x2d_9b_10_c2_f2_e7_ac_1a_fd_dc_cf_fd_94_a5_63_02_8b_f2_9b_64_6d_02_08_30_91_9f_9d_5c_a1_ce_fe_59n,\n 0x24_57_ca_6c_2f_2a_a3_0e_c4_7e_4a_ff_5a_66_f5_ce_27_99_28_3e_16_6f_c8_1c_da_e2_f2_b9_f8_3e_42_67n,\n 0x0a_bc_39_2f_e8_5e_da_85_58_20_59_24_45_09_40_22_81_1e_e8_67_6e_d6_f0_c3_04_4d_fb_54_a7_c1_0b_35n,\n 0x19_d2_cc_5c_a5_49_d1_d4_0c_eb_cd_37_f3_ea_54_f3_11_61_ac_39_93_ac_f3_10_1d_2c_2b_c3_0e_ac_1e_b0n,\n 0x0f_97_ae_30_33_ff_a0_16_08_aa_fb_26_ae_13_cd_39_3e_e0_e4_ec_04_1b_a6_44_a3_d3_ab_54_6e_98_c9_c8n,\n 0x16_db_c7_8f_d2_8b_7f_b8_26_0e_40_4c_f1_d4_27_a7_fa_15_53_7e_a4_e1_68_e8_8a_16_64_96_e8_8c_fe_can,\n 0x24_0f_af_28_f1_14_99_b9_16_f0_85_f7_3b_c4_f2_2e_ef_83_44_e5_76_f8_ad_3d_18_27_82_03_66_d5_e0_7bn,\n 0x0a_1b_b0_75_aa_37_ff_0c_fe_6c_85_31_e5_5e_17_70_ea_ba_80_8c_8f_db_6d_bf_46_f8_ca_b5_8d_9e_f1_afn,\n 0x2e_47_e1_5e_a4_a4_7f_f1_a6_a8_53_aa_f3_a6_44_ca_38_d5_b0_85_ac_10_42_fd_c4_a7_05_a7_ce_08_9f_4dn,\n 0x16_6e_5b_f0_73_37_83_48_86_0c_a4_a9_c0_9d_39_e1_67_3a_b0_59_93_5f_4d_f3_5f_b1_45_28_37_57_72_b6n,\n 0x18_b4_2d_7f_fd_d2_ea_4f_af_23_59_02_f0_57_a2_74_0c_ac_cc_d0_27_23_30_01_ed_10_f9_65_38_f0_91_6fn,\n 0x08_9c_b1_b0_32_23_8f_5e_49_14_78_8e_3e_3c_7e_ad_4f_c3_68_02_0b_3e_d3_82_21_de_ab_10_51_c3_77_02n,\n 0x24_2a_cd_3e_b3_a2_f7_2b_af_7c_70_76_dd_16_5a_df_89_f9_33_9c_7b_97_19_21_d9_e7_08_63_45_1d_d8_d1n,\n 0x17_4f_bb_10_4a_4e_e3_02_bf_47_f2_bd_82_fc_e8_96_ea_c9_a0_68_28_3f_32_64_74_af_86_04_57_24_5c_3bn,\n 0x17_34_0e_71_d9_6f_46_6d_61_f3_05_8c_e0_92_c6_7d_28_91_fb_2b_b3_18_61_3f_78_0c_27_5f_e1_11_6c_6bn,\n 0x1e_8e_40_ac_85_3b_7d_42_f0_0f_2e_38_39_82_d0_24_f0_98_b9_f8_fd_45_59_53_a2_fd_38_0c_4d_f7_f6_b2n,\n 0x05_29_89_8d_c0_64_99_07_e1_d4_d5_e2_84_b8_d1_07_51_98_c5_5c_ad_66_e8_a9_bf_40_f9_29_38_e2_e9_61n,\n 0x21_62_75_4d_b0_ba_a0_30_bf_7d_e5_bb_79_73_64_dc_e8_c7_7a_a0_17_ee_1d_7b_f6_5f_21_c4_d4_e5_df_8fn,\n 0x12_c7_55_36_98_c4_bf_6f_3c_eb_25_0a_e0_0c_58_c2_a9_f9_29_1e_fb_de_4c_84_21_be_f4_47_41_75_2e_c6n,\n 0x29_26_43_e3_ba_20_26_af_fc_b8_c5_27_93_13_bd_51_a7_33_c9_33_53_e9_d9_c7_9c_b7_23_13_65_26_50_8en,\n 0x00_cc_f1_3e_0c_b6_f9_d8_1d_52_95_1b_ea_99_0b_d5_b6_c0_7c_5d_98_e6_6f_f7_1d_b6_e7_4d_5b_87_d1_58n,\n 0x18_5d_1e_20_e2_3b_09_17_dd_65_41_28_cf_2f_3a_aa_b6_72_38_73_cb_30_fc_22_b0_f8_6c_15_ab_64_5b_4bn,\n 0x14_c6_1c_83_6d_55_d3_df_74_2b_df_11_c6_0e_fa_18_67_78_e3_de_0f_02_4c_0f_13_fe_53_f8_d8_76_4e_1fn,\n 0x0f_35_68_41_b3_f5_56_fc_e5_db_e4_68_04_57_69_1c_29_19_e2_af_53_00_81_84_d0_3e_e1_19_5d_72_44_9en,\n 0x1b_8f_d9_ff_39_71_4e_07_5d_f1_24_f8_87_bf_40_b3_83_14_33_74_fd_20_80_ba_0c_0a_6b_6e_8f_a5_b3_e8n,\n 0x0e_86_a8_c2_00_9c_14_0c_a3_f8_73_92_4e_2a_aa_14_fc_3c_8a_e0_4e_9d_f0_b3_e9_10_34_18_79_6f_60_24n,\n 0x2e_6c_5e_89_8f_55_47_77_0e_54_62_ad_93_2f_cd_d2_37_3f_c4_38_20_ca_2b_16_b0_86_14_21_e7_91_55_c8n,\n 0x05_d7_97_f1_ab_36_47_23_7c_14_f9_d1_df_03_2b_c9_ff_9f_e1_a0_ec_d3_77_97_2c_e5_fd_5a_0c_01_46_04n,\n 0x29_a3_11_04_63_a5_aa_e7_6c_3d_15_28_75_98_1d_0c_1d_af_2d_cd_65_51_9e_f5_ca_89_29_85_1d_a8_c0_08n,\n 0x29_74_da_7b_c0_74_32_22_73_c3_a4_b9_1c_05_35_4c_dc_71_64_0a_8b_bd_1f_86_4b_73_2f_81_63_88_33_14n,\n 0x1e_d0_fb_06_69_9b_a2_49_b2_a3_06_21_c0_5e_b1_2c_a2_9c_b9_1a_a0_82_c8_bf_cc_e9_c5_22_88_9b_47_dcn,\n 0x1c_79_3e_f0_dc_c5_11_23_65_4f_f2_6d_8d_86_3f_ee_ae_29_e8_c5_72_ec_a9_12_d8_0c_8a_e3_6e_40_fe_9bn,\n 0x1e_6a_ac_1c_6d_3d_d3_15_79_56_25_7d_3d_23_4e_f1_8c_91_e8_25_89_a7_81_69_fb_b4_a8_77_09_77_dc_2fn,\n 0x1a_20_ad_a7_57_62_34_ee_e6_27_3d_d6_fa_98_b2_5e_d0_37_74_80_80_a4_7d_94_8f_cd_a3_32_56_fb_6b_f5n,\n 0x19_10_33_d6_d8_5c_ea_a6_fc_7a_9a_23_a6_fd_99_96_64_2d_77_20_45_ec_e5_13_35_d4_93_06_72_8a_f9_6cn,\n 0x00_6e_59_79_da_7e_7e_f5_3a_82_5a_a6_fd_dc_3a_bf_c7_6f_20_0b_37_40_b8_b2_32_ef_48_1f_5d_06_29_7bn,\n 0x0b_0d_7e_69_c6_51_91_0b_be_f3_e6_8d_41_7e_9f_a0_fb_d5_7f_59_6c_8f_29_83_1e_ff_8c_01_74_cd_b0_6dn,\n 0x25_ca_f5_b0_c1_b9_3b_c5_16_43_5e_c0_84_e2_ec_d4_4a_c4_6d_bb_b0_33_c5_11_2c_4b_20_a2_5c_9c_df_9dn,\n 0x12_c1_ea_89_2c_c3_1e_0d_9a_f8_b7_96_d9_64_58_72_f7_f7_74_42_d6_2f_d4_c8_08_5b_2f_15_0f_72_47_2an,\n 0x16_af_29_69_51_57_ab_a9_b8_bb_e3_af_eb_24_5f_ee_e5_a9_29_d9_f9_28_b9_b8_1d_e6_da_dc_78_c3_2a_aen,\n 0x01_36_df_45_7c_80_58_8d_d6_87_fb_2f_3b_e1_86_91_70_5b_87_ec_5a_4c_fd_c1_68_d3_10_84_25_6b_67_dcn,\n 0x16_39_a2_8c_5b_4c_81_16_6a_ea_98_4f_ba_6e_71_47_9e_07_b1_ef_bc_74_43_4d_b9_5a_28_50_60_e7_b0_89n,\n 0x03_d6_2f_bf_82_fd_1d_43_13_f8_e6_50_f5_87_ec_06_81_6c_28_b7_00_bd_c5_0f_7e_23_2b_d9_b5_ca_9b_76n,\n 0x11_ae_eb_52_7d_c8_ce_44_b4_d1_4a_ad_dc_a3_cf_e2_f7_7a_1e_40_fc_6d_a9_7c_24_98_30_de_1e_df_de_54n,\n 0x13_f9_b9_a4_12_74_12_94_79_c5_e6_13_8c_6c_8e_e3_6a_67_0e_6b_c6_8c_7a_49_64_2b_64_58_07_bf_c8_24n,\n 0x0e_47_72_fa_3d_75_17_9d_c8_48_4c_d2_6c_7c_1f_63_5d_de_ee_d7_a9_39_44_0c_50_6c_ae_8b_7e_bc_d1_5bn,\n 0x1b_39_a0_0c_bc_81_e4_27_de_4b_de_c5_8f_eb_e8_d8_b5_97_17_52_06_7a_61_2b_39_fc_46_a6_8c_5d_4d_b4n,\n 0x2b_ed_b6_6e_1a_d5_a1_d5_71_e1_6e_29_53_f4_87_31_f6_64_63_c2_eb_54_a2_45_44_4d_1c_0a_3a_25_70_7en,\n 0x2c_f0_a0_9a_55_ca_93_af_8a_bd_06_8f_06_a7_28_7f_b0_8b_19_3b_60_85_82_a2_73_79_ce_35_da_91_5d_ecn,\n 0x2d_1b_d7_8f_a9_0e_77_aa_88_83_0c_ab_fe_f2_f8_d2_7d_1a_51_20_50_ba_7d_b0_75_3c_8f_b8_63_ef_b3_87n,\n 0x06_56_10_c6_f4_f9_24_91_f4_23_d3_07_1e_b8_35_39_f7_c0_d4_9c_13_87_06_2e_63_0d_7f_d2_83_dc_33_94n,\n 0x2d_93_3f_f1_92_17_a5_54_50_13_b1_28_73_45_2b_eb_cc_5f_99_69_03_3f_15_ec_64_2f_b4_64_bd_60_73_68n,\n 0x1a_a9_d3_fe_4c_64_49_10_f7_6b_92_b3_e1_3b_30_d5_00_da_e5_35_4e_79_50_8c_3c_49_c8_aa_99_e0_25_8bn,\n 0x02_7e_f0_48_69_e4_82_b1_c7_48_63_8c_59_11_1c_6b_27_09_5f_a7_73_e1_ac_a0_78_ce_a1_f1_c8_45_0b_ddn,\n 0x2b_7d_52_4c_51_72_cb_bb_15_db_4e_00_66_8a_8c_44_9f_67_a2_60_5d_9e_c0_38_02_e3_fa_13_6a_d0_b8_fbn,\n 0x0c_7c_38_24_43_c6_aa_78_7c_87_18_d8_67_47_c7_f7_46_93_ae_25_b1_e5_5d_f1_3f_7c_3c_1d_d7_35_db_0fn,\n 0x00_b4_56_71_86_bc_3f_7c_62_a7_b5_6a_cf_4f_76_20_7a_1f_43_c2_d3_0d_0f_e4_a6_27_dc_dd_9b_d7_90_78n,\n 0x1e_41_fc_29_b8_25_45_4f_e6_d6_17_37_fe_08_b4_7f_b0_7f_e7_39_e4_c1_e6_1d_03_37_49_08_83_db_4f_d5n,\n 0x12_50_7c_d5_56_b7_bb_cc_72_ee_6d_af_c6_16_58_44_21_e1_af_87_2d_8c_0e_89_00_2a_e8_d3_ba_06_53_b6n,\n 0x13_d4_37_08_35_53_00_6b_ce_f3_12_e5_e6_f5_2a_5d_97_eb_36_61_7e_f3_6f_e4_d7_7d_3e_97_f7_1c_b5_dbn,\n 0x16_3e_c7_32_51_f8_54_43_68_72_22_48_7d_da_9a_65_46_7d_90_b2_2f_0b_38_66_46_86_07_7c_6a_44_86_d5n,\n ],\n // t=5 (4 inputs) - 340 constants\n [\n 0x0e_b5_44_fe_e2_81_5d_da_7f_53_e2_9c_ca_c9_8e_d7_d8_89_bb_4e_bd_47_c3_86_4f_3c_2b_d8_1a_6d_a8_91n,\n 0x05_54_d7_36_31_5b_86_62_f0_2f_db_a7_dd_73_7f_bc_a1_97_ae_b1_2e_a6_47_13_ba_73_3f_28_47_51_28_cbn,\n 0x2f_83_b9_df_25_9b_2b_68_bc_d7_48_05_63_07_c3_77_54_90_7d_f0_c0_fb_00_35_f5_08_7c_58_d5_e8_c2_d4n,\n 0x2c_a7_0e_2e_8d_7f_39_a1_24_47_ac_83_05_24_51_b4_61_f1_5f_8b_41_a7_5e_f3_19_15_20_8f_5a_ba_96_83n,\n 0x1c_b5_f9_31_9b_e6_a4_5e_91_b0_4d_72_22_27_1c_94_99_41_96_f1_2e_d2_2c_5d_4e_c7_19_cb_83_ec_fe_a9n,\n 0x2e_b4_f9_9c_69_f9_66_eb_f8_a4_21_92_de_7f_f6_16_21_c7_bb_47_b9_37_50_c2_b9_ea_08_d1_84_46_c1_22n,\n 0x22_4a_28_e5_a3_53_85_a7_c5_19_81_69_e4_05_d9_ea_0f_c7_da_8b_93_ee_13_b6_d5_f7_d0_99_e2_99_52_0en,\n 0x0f_74_11_b4_65_e6_00_ee_d8_af_dd_6a_fc_a4_9c_30_36_f3_3e_cb_d9_a0_f9_78_23_79_6b_99_3b_bd_82_f7n,\n 0x0f_9d_0d_5a_ad_2c_95_55_a2_be_71_50_39_2d_8d_98_19_b2_08_ae_33_70_f9_9a_06_26_f9_ff_5d_90_e4_e3n,\n 0x1e_9a_96_dc_82_92_bb_59_6f_52_a5_95_38_d3_29_22_97_32_b2_52_59_cf_74_4b_6a_12_d3_07_02_d6_fb_a0n,\n 0x08_78_05_14_cc_d9_03_80_88_7d_57_8c_45_55_5e_59_3c_fe_52_ea_b4_b9_45_c6_c2_cd_4d_52_8f_b3_fe_3cn,\n 0x27_24_98_fc_ed_68_6c_7a_c8_14_9f_a3_f7_3e_f8_c2_ce_d6_47_17_e3_55_6d_5a_59_f1_19_d6_29_cc_b5_fcn,\n 0x01_ef_8f_9d_d7_c9_3a_ac_4b_7c_b8_09_30_bd_06_eb_45_bd_35_0a_ff_58_5f_10_e3_d0_ef_8a_78_2e_f7_dfn,\n 0x04_5b_9f_59_b6_59_5e_61_4d_c0_8f_22_2b_46_9b_13_8e_88_6e_64_bf_3c_40_aa_97_ea_0a_e7_54_93_4d_30n,\n 0x0a_c1_e9_1c_57_d9_da_91_9f_d6_f5_9d_2a_40_ff_8e_a3_e4_1e_24_e2_47_a3_87_ad_f2_58_42_95_d6_1c_66n,\n 0x02_8a_16_21_a9_40_54_b0_c7_f9_a4_21_35_3c_d8_9d_0f_d6_70_61_ae_e9_99_79_d1_2e_68_f0_4e_62_d1_34n,\n 0x26_b4_18_02_c0_71_ea_4c_96_32_64_7e_d0_59_23_6e_50_c1_9c_3f_b3_c9_6d_09_d0_2a_ae_2a_0d_cd_9d_bcn,\n 0x2f_b5_dd_a8_07_2b_b7_2c_ba_ac_2f_63_e4_68_21_5e_05_c9_de_06_75_8d_b6_a9_4a_f3_43_84_ae_db_46_2bn,\n 0x22_12_d3_a0_f5_fc_ca_f2_44_ff_35_47_fd_82_32_49_ad_8a_b8_ba_2a_18_d3_83_dd_05_c5_6e_e8_94_d8_50n,\n 0x1b_04_1a_d5_b2_f0_68_42_58_e4_df_ae_ea_09_be_56_a3_27_6f_db_19_f4_4c_01_5c_d0_c7_ee_d4_65_e2_e3n,\n 0x0a_01_77_6b_b2_2f_4b_6b_8e_cc_ff_33_e7_6f_de_d3_14_4f_b7_e3_ac_14_e8_46_a9_1e_64_af_b1_50_0e_ffn,\n 0x2b_7b_56_74_aa_ec_c3_cb_f3_4d_3f_27_50_66_d5_49_a4_f3_3a_e8_c1_5c_f8_27_f7_93_64_40_81_0a_ce_43n,\n 0x29_d2_99_b8_0c_d4_48_9e_4c_f7_57_79_ed_54_b4_8c_60_b0_42_25_7b_78_fc_00_4c_1b_80_33_81_a3_bd_fdn,\n 0x1c_46_83_1d_9a_74_52_93_57_64_1c_21_9d_72_1a_74_a4_27_11_00_32_b5_e1_dd_19_dd_e3_04_24_be_40_1en,\n 0x06_d7_62_6c_95_3c_cb_72_f3_71_41_dc_34_d5_78_e0_36_29_6c_06_57_67_4f_80_73_9a_e1_d8_83_e9_12_69n,\n 0x28_ff_dd_c8_6f_18_c1_36_c5_40_02_74_8e_0c_41_0e_dc_5c_44_0a_30_22_cd_96_0f_10_8c_71_cd_a2_93_0cn,\n 0x2e_67_f7_ee_5e_4a_a2_95_f8_5d_ee_d0_9e_40_0b_17_be_67_f1_b7_ed_2a_b6_ad_b8_ec_06_19_f6_fb_c5_e9n,\n 0x26_ce_38_fa_63_6c_90_63_0e_97_f2_51_14_a7_9a_2d_ca_56_85_9e_f7_59_e5_3c_e7_ab_f2_2c_24_e8_0f_27n,\n 0x2e_6e_07_c3_c9_5b_f7_c3_4d_d7_a0_1d_00_a7_ff_ec_42_cb_3d_16_a1_f7_27_21_af_ac_b4_c4_cf_d3_5d_b1n,\n 0x2a_a7_4f_75_97_f0_c9_f4_5f_91_d7_96_1c_3a_54_fb_88_90_d2_76_61_2e_12_46_38_4b_14_70_da_24_d8_ccn,\n 0x28_7d_68_1a_46_a2_fa_ae_2c_7c_09_0f_66_8a_b4_5b_8a_71_31_3c_15_09_18_3e_2e_c0_ca_63_9b_7f_73_fen,\n 0x21_2b_d1_9d_f8_12_ea_ae_f4_a4_06_00_52_8f_3d_7d_a5_d3_10_6f_f5_65_aa_3b_11_e2_9f_33_05_e7_3c_04n,\n 0x11_54_f7_cf_51_91_86_bf_1a_af_b1_4b_35_0e_b8_60_f9_7f_d9_74_09_26_da_b9_38_09_c2_84_04_71_35_04n,\n 0x1d_ff_63_85_cb_31_f1_c2_46_37_81_0a_4b_d1_b1_6f_bf_51_52_90_5b_e3_65_83_da_74_7e_79_66_1f_c2_07n,\n 0x0e_44_45_82_d2_2b_4e_76_c0_81_d3_4c_44_c1_8e_42_40_11_a3_4d_54_76_25_28_63_ea_3c_60_6b_55_1e_5cn,\n 0x03_23_c9_e4_33_ba_66_c4_ab_ab_66_38_32_8f_02_f1_81_57_73_e9_c2_84_63_23_ff_72_d3_aa_b7_e4_ef_f8n,\n 0x12_74_6b_bd_71_79_10_59_19_3b_ba_79_cd_ec_44_8f_25_b8_cf_00_27_40_11_2d_b7_0f_2c_68_76_a9_c2_9dn,\n 0x11_73_b7_d1_12_c2_a7_98_fd_9b_9d_37_51_84_2c_75_d4_66_c8_37_cf_50_d7_3e_fd_04_9e_b4_43_8a_22_40n,\n 0x13_d5_1c_10_90_a1_ad_48_76_d1_e5_55_d7_fe_d1_3d_a8_e5_71_3b_25_02_6e_be_5f_db_48_08_70_32_43_dan,\n 0x00_87_4c_13_44_a4_ad_51_ff_8d_cb_7c_bd_2d_97_43_cb_72_74_3f_03_94_ef_e7_f4_a5_8e_be_b9_56_ba_a1n,\n 0x22_df_22_13_1a_aa_b8_58_65_ce_23_6b_07_f2_44_fa_0e_ea_48_d3_54_6e_97_d6_a3_2a_56_20_74_fe_f0_8fn,\n 0x0b_f9_64_d2_db_d2_5b_90_87_08_b4_37_a4_45_fc_3e_98_45_24_a5_91_01_e6_c1_8b_f5_eb_05_a9_19_f1_55n,\n 0x09_b1_8d_9b_91_7a_55_bc_a3_02_be_1f_7f_18_1e_0e_64_0b_9d_73_a9_ab_29_8c_69_b4_35_b5_fc_50_2f_32n,\n 0x09_4f_55_34_44_4f_ae_36_a4_bf_c1_d5_bf_3d_c0_5b_fb_bb_c7_0a_63_65_36_6d_d6_74_5a_50_67_28_9e_43n,\n 0x29_99_ba_b1_a5_f2_52_10_51_9f_a6_62_2a_f5_3a_15_a3_e2_40_c0_da_57_01_cb_78_4f_dd_c0_dc_23_f0_1fn,\n 0x2f_68_98_c0_75_81_f6_37_1c_a9_4d_b7_37_10_e8_80_84_30_1b_ce_8a_93_d1_36_69_57_5a_11_b0_3a_3d_23n,\n 0x07_26_8e_aa_ba_08_bc_19_ec_16_d7_e1_31_8a_47_40_56_5d_eb_1e_8e_57_42_f8_62_17_4b_1a_68_66_fc_cbn,\n 0x18_62_79_b0_03_45_4d_b0_13_39_ff_77_11_3b_c9_eb_62_60_3e_07_8e_1c_66_89_a6_c9_58_2c_41_a0_52_9fn,\n 0x18_a3_f7_36_50_91_97_d6_e4_91_5b_dd_04_d3_e5_dd_b6_7e_2c_c5_de_9a_22_75_07_68_e5_52_47_37_17_2cn,\n 0x0a_21_fa_19_88_cf_38_d8_77_cc_1e_2e_d2_4c_80_8c_72_5e_2d_4b_cb_2d_3a_00_7b_59_87_b8_70_85_67_1dn,\n 0x15_b2_85_cb_e2_6c_46_7f_1f_af_5e_f6_a6_46_25_22_83_28_c1_84_a2_c4_3b_c0_0b_36_a1_35_e7_85_fb_a2n,\n 0x16_4b_70_62_c4_67_1c_f0_8c_08_b8_c3_f9_80_6d_56_0b_77_75_b7_c9_02_f5_78_8c_d2_8d_e3_e7_79_f1_61n,\n 0x08_90_ba_08_19_ac_0a_6f_86_d9_86_5f_e7_e5_0e_f3_61_c6_1d_3d_43_b6_e6_5d_7a_24_f6_51_24_9b_aa_70n,\n 0x2f_be_a4_d6_5d_7e_d4_25_a4_27_12_e5_a7_21_e4_ea_a6_27_ac_5c_b0_eb_87_8c_cc_2e_e0_ae_d5_43_e9_22n,\n 0x04_92_bf_38_3c_36_fa_55_54_03_03_a3_b5_36_f8_5e_7b_70_a5_8e_85_4a_b9_b9_10_3d_7f_5f_37_9a_ba_aan,\n 0x05_e9_1f_e9_44_e9_44_10_4e_20_25_1c_56_51_42_d6_1d_61_85_a9_ce_85_67_5f_6a_96_9d_56_29_2d_c2_4en,\n 0x12_fe_5c_20_29_e4_b3_38_93_d4_63_cb_04_1a_ca_d0_99_5b_96_21_e6_e4_9c_3b_7e_38_0a_76_e3_6e_6c_1cn,\n 0x02_41_54_ad_f0_25_5d_47_95_8f_77_23_92_14_74_13_1f_26_29_fa_dc_89_49_69_06_cd_01_dc_6f_a0_78_4en,\n 0x18_82_4a_09_e6_af_af_4a_36_ed_24_62_a8_6b_d0_ba_d7_98_81_56_44_f2_bb_de_88_13_c1_34_57_a4_55_50n,\n 0x0c_8b_48_2d_ba_0a_d5_1b_e9_f2_55_de_0c_3d_bd_dd_df_84_a6_30_af_68_d5_0b_bb_06_98_3e_3d_5d_58_a5n,\n 0x17_32_5f_d0_ab_63_58_71_36_3e_0a_16_67_d3_b6_7c_5a_4f_a6_7f_cd_6a_af_86_44_13_92_87_8f_db_05_e6n,\n 0x05_0a_e9_5f_6d_2f_15_19_12_2f_5a_f6_7b_69_0f_31_e5_50_77_3f_a8_d1_8b_f7_1c_c6_d0_e9_11_fa_40_2en,\n 0x0f_0d_13_9a_0e_81_e9_43_03_8c_b2_88_d6_26_36_76_4b_bb_62_95_f0_75_69_88_57_71_ec_84_ed_c5_0c_40n,\n 0x1c_0f_86_97_79_56_89_cd_f7_0f_d2_f2_c0_f9_3d_1a_79_b3_9e_bc_7a_1b_1c_54_9d_bb_ca_7b_8e_74_7c_d6n,\n 0x2b_d0_f9_40_ad_93_6b_79_6d_2b_c2_e0_48_bc_97_9e_49_be_23_a4_b1_35_98_f9_fe_53_6a_16_dc_1d_81_e6n,\n 0x27_eb_1b_e2_7c_9c_4e_93_47_78_c0_9a_00_53_33_7f_a0_6e_bb_27_5e_09_6d_16_7c_e5_4d_1e_96_ee_62_cbn,\n 0x2e_48_89_d8_30_a6_7e_5a_8f_96_bd_d3_15_5a_7c_a3_28_4f_bd_30_7d_1f_71_b0_f1_51_be_62_54_8e_2a_ean,\n 0x19_3f_e3_db_0a_b4_7d_3c_5d_2e_c5_e9_c5_bd_99_83_c9_89_1f_2c_ad_c1_65_db_60_64_bb_e6_fc_c1_e3_05n,\n 0x2b_f3_08_6e_96_c3_6c_7b_ce_41_59_07_ad_0c_40_ed_6e_96_61_c0_09_67_9e_4e_37_cb_13_02_7c_83_e5_25n,\n 0x12_f1_6e_2d_e6_d4_ad_46_a9_8c_db_69_7c_6c_ad_5d_d5_e7_e4_13_f7_41_cc_f2_9f_f2_ea_48_6e_59_bb_28n,\n 0x2a_72_14_7d_23_01_19_f3_a0_26_2e_36_53_dd_d1_9f_33_f3_d5_d6_ec_6c_4b_f0_ad_91_9b_03_43_b9_2d_2fn,\n 0x21_be_0e_2c_4b_fd_64_e5_6d_c4_7f_95_78_06_dc_5f_0a_2d_9b_cc_26_41_2e_29_77_df_79_ac_c1_0b_a9_74n,\n 0x0e_2d_7e_1d_c9_46_d7_0b_27_49_a3_b5_43_67_b2_5a_71_b8_4f_b9_11_aa_57_ae_13_7f_d4_b6_c2_1b_44_4an,\n 0x26_67_f7_fb_5a_4f_a1_24_61_70_a7_45_d8_a4_18_8c_c3_1a_db_0e_ae_33_25_dc_9f_3f_07_d4_b9_2b_3e_2en,\n 0x2c_cc_6f_43_1f_b7_40_07_30_a7_83_b6_60_64_69_7a_15_50_c1_2b_08_df_eb_72_83_0e_10_7d_a7_8e_34_05n,\n 0x08_88_8a_94_fc_5a_2c_a3_4f_02_01_46_24_20_00_1f_ae_6d_be_e9_e8_ca_0c_24_2e_c5_06_21_e3_8e_6e_5dn,\n 0x02_97_7b_34_ee_aa_3c_b6_ad_40_dd_42_c9_b6_fd_d7_a0_d2_fb_e7_53_af_88_b3_6a_cf_cd_3c_cb_c5_3f_2an,\n 0x12_0c_cc_e1_3d_28_b7_5c_fd_6f_b6_c9_ea_13_a6_48_bf_cf_e0_d7_e6_ff_8e_96_10_b5_e9_f9_71_e1_6b_9an,\n 0x09_fa_d2_26_9c_4a_8e_93_c8_1e_1b_97_70_ea_09_8c_92_78_7a_45_75_b2_bd_73_a0_bf_2a_f3_2f_86_ff_3cn,\n 0x02_60_91_fd_3d_4c_44_d5_0a_4b_31_0e_4a_c6_f0_fa_0d_eb_db_70_77_5e_eb_8a_f6_30_cf_fb_60_09_2d_6fn,\n 0x29_40_4a_a2_ba_56_5b_77_bb_7f_ba_9d_fb_6f_c3_21_25_43_cc_56_af_ad_6a_fc_b9_04_fd_2b_ca_89_39_94n,\n 0x27_49_47_5c_39_9a_af_39_d4_e8_7c_25_48_69_5b_4e_f1_ff_d8_65_90_e0_82_7d_e7_20_13_51_b7_c8_83_f9n,\n 0x09_8c_84_23_22_47_9f_72_39_91_2b_50_42_46_85_cb_a2_eb_e2_dc_2e_4d_a7_0a_c7_55_7d_ab_65_ff_a2_22n,\n 0x18_ce_f5_81_22_2b_64_7e_31_23_8e_57_fe_ad_7d_5c_75_8a_ce_14_c9_3c_4d_a4_01_91_d0_c0_53_b5_19_36n,\n 0x13_17_78_39_c6_8a_50_80_d4_e7_46_74_5e_43_71_1d_3c_bc_0c_a4_a1_08_f9_8d_63_b2_aa_68_16_98_de_60n,\n 0x02_0c_a6_96_f5_31_e4_3e_c0_88_f5_6f_4b_74_32_56_26_cc_4d_f7_12_c0_e5_f0_a9_07_d8_8e_5f_0d_ef_fdn,\n 0x27_23_0e_ed_e9_cc_cf_c9_fa_80_5a_30_fc_54_8d_b6_93_d1_37_08_c6_46_84_1d_16_e0_28_38_7c_7a_c0_22n,\n 0x01_64_59_11_c1_19_8b_01_d6_4f_de_34_a3_42_a1_78_64_97_c0_59_69_a0_15_43_90_57_d2_fe_75_bb_28_1cn,\n 0x2c_32_3f_e1_64_81_bf_49_6e_43_9c_88_34_1c_e2_5f_19_89_71_e1_44_87_05_6c_fd_ca_4a_45_1a_5d_86_43n,\n 0x0f_c0_82_df_e7_07_28_e8_45_0b_d2_07_4c_3e_22_e1_b0_22_c1_24_d3_bf_fe_8b_5a_f8_8a_e6_db_50_85_c8n,\n 0x20_52_c1_74_80_0d_b2_09_d8_cd_ca_56_8d_cc_25_b3_be_96_42_11_6a_c4_c7_7e_fe_8a_48_8b_42_35_21_een,\n 0x28_e4_20_e1_0d_f2_fb_b5_af_96_d6_21_d5_54_23_19_0b_e3_51_ce_81_29_06_5a_8d_d9_fd_05_b3_ec_e9_c0n,\n 0x25_69_8c_a5_e2_4a_1b_79_9f_78_3c_44_62_a2_4d_b6_55_d6_ae_1b_da_cd_1c_b5_49_d6_e0_bc_3a_e5_06_9an,\n 0x16_0a_99_81_a5_c8_9a_57_cf_8f_fb_fa_57_d5_10_49_a2_97_b6_10_74_42_2a_c1_34_d9_b8_57_d6_98_4d_35n,\n 0x21_c9_1a_39_e1_45_c3_bc_34_d9_b6_94_b8_43_f3_bf_8b_7c_eb_f5_9d_db_b0_a0_64_64_2b_06_99_97_f3_d4n,\n 0x1a_c8_d8_0d_cd_5e_e8_76_d2_b0_93_45_ef_11_23_45_d6_ea_a0_29_d9_3f_03_b6_d1_09_75_46_1e_41_73_4cn,\n 0x0a_b3_e6_ad_0e_cf_8b_8e_7c_16_62_a4_17_4c_52_22_5d_82_28_95_e2_75_55_44_b8_db_ce_a5_65_7c_e0_2cn,\n 0x1c_67_51_82_51_26_20_ae_27_e3_b0_b9_17_b3_a2_1c_a5_2e_f3_ef_59_09_b4_e1_c5_b2_23_7c_bd_ab_33_77n,\n 0x2c_db_c9_98_df_d7_af_fd_3d_94_8d_0c_85_ba_d2_e2_e3_7a_4a_3e_07_a7_d7_5d_0c_8a_90_92_ac_2b_ed_45n,\n 0x23_b5_84_a5_6e_21_17_b0_77_4b_f6_7c_c0_de_e3_33_24_33_73_50_30_9d_ff_83_3e_49_1a_13_3b_b6_3b_2en,\n 0x1e_9e_2b_31_0f_60_ba_9f_8c_b7_30_30_a3_c9_d2_a1_0d_13_3b_c6_ba_4e_c1_15_2f_3d_20_de_14_65_e9_a5n,\n 0x0e_01_e3_65_ba_5b_30_31_ab_c3_e7_20_14_0a_e7_46_c9_ab_5d_ab_98_75_20_c4_60_bc_d4_f1_fa_5b_22_dbn,\n 0x04_08_84_cd_cf_c6_4b_fc_7b_71_27_34_04_98_d5_c4_43_38_20_11_b6_1c_9a_4b_13_87_d8_5b_c1_26_4e_68n,\n 0x19_0b_1e_e1_20_5e_b9_50_0c_74_a3_99_8f_2b_ea_36_35_3f_17_24_d6_06_7e_d0_a0_a1_7d_e3_11_ef_96_68n,\n 0x16_47_c7_2a_ec_6c_43_88_d0_4f_52_fc_23_cd_9c_08_c1_df_cf_65_ce_61_e1_65_fc_28_d1_f8_32_bd_3b_2cn,\n 0x24_30_00_63_46_a0_14_5f_79_98_80_cc_4c_87_36_26_9f_54_94_d8_9f_b4_8b_02_84_2e_59_5b_71_e4_54_1dn,\n 0x17_7b_9a_08_34_39_17_e1_36_51_07_a3_da_3a_e7_f6_9d_85_39_02_bb_16_ba_cb_32_21_85_02_52_b7_57_afn,\n 0x04_a4_20_e6_42_b1_1a_e9_4e_58_86_2a_68_f5_e3_26_09_cd_53_d0_ae_29_42_34_39_b1_1d_04_66_6d_f4_f8n,\n 0x25_d0_e0_f7_39_fb_39_fc_10_5a_88_fa_b0_af_d8_10_de_24_61_85_8e_95_6c_cc_cd_fa_be_dd_b6_a2_5c_8fn,\n 0x04_47_6d_91_b7_ef_f2_fd_85_90_5c_bf_58_65_1e_dc_32_0c_b1_56_10_ea_ed_45_2c_4d_4f_fa_0c_74_0a_27n,\n 0x10_90_c0_b6_8b_3d_7d_7b_8b_c9_ca_24_19_eb_8d_ea_1c_28_f6_d5_e1_25_0c_b5_e9_78_0f_d9_ca_28_6f_aen,\n 0x25_39_3c_e3_b9_25_6d_50_44_8a_72_5c_5c_7c_d5_ad_37_6f_2d_43_58_55_c1_0e_bf_28_99_cb_5c_66_17_ben,\n 0x25_93_1c_0c_73_71_f4_f1_fc_86_2f_30_6e_6e_58_30_ed_82_43_88_d6_b9_34_26_97_d1_44_f0_fa_b4_66_30n,\n 0x23_96_cb_50_17_00_bb_e6_c8_2a_ad_51_b0_fb_79_cf_8a_4d_35_31_85_d5_80_82_03_f7_3f_22_af_bf_62_f6n,\n 0x26_a3_63_48_33_48_b5_89_54_ea_74_8a_71_29_a7_b0_a3_dc_90_68_c3_cc_a7_b5_b3_f0_ce_03_b8_72_48_84n,\n 0x27_ca_10_7c_a2_04_f2_a1_8d_6f_15_35_b9_2c_54_78_c9_9b_89_33_34_21_5f_6b_a7_a0_e5_b4_5f_cd_68_97n,\n 0x26_da_28_fc_09_7e_d7_7c_e4_66_2b_de_32_6b_2c_ce_ac_15_f7_30_11_78_58_1d_8d_2d_02_b3_b2_d9_10_56n,\n 0x05_6a_b3_51_69_1d_8b_b3_70_3e_30_55_07_0a_c9_cc_65_57_74_c1_bb_35_d5_75_72_97_1b_a5_6e_e0_cb_89n,\n 0x26_38_b5_7f_23_b7_54_ae_c7_6d_10_9a_2f_48_1a_a3_c2_25_47_a1_1f_fc_50_15_2d_72_9a_f6_32_37_6a_90n,\n 0x30_47_54_bb_8c_57_d6_07_32_f4_92_c2_60_51_84_fd_c3_3e_46_a5_32_bd_ec_80_ea_7b_c5_51_9e_de_7c_efn,\n 0x00_d1_72_7f_84_57_ee_03_51_4f_15_5b_58_06_cb_f7_48_ec_68_57_fc_55_40_10_75_2a_c9_3a_9b_76_19_acn,\n 0x00_ee_1f_3c_66_fb_c0_5c_43_ba_29_5a_30_3c_72_fa_b5_bc_a8_68_05_ec_94_19_c5_88_e5_09_47_76_1f_a3n,\n 0x0a_fa_fa_dc_f5_b4_dd_4a_4a_76_b5_a1_d8_24_15_fd_10_a1_9f_bc_fc_59_07_8c_61_f9_29_7e_b6_75_d9_72n,\n 0x0b_24_49_f3_97_46_08_5e_86_ce_45_e8_ee_d1_08_ee_65_a2_34_83_5a_0a_6a_5e_a8_99_6d_12_4d_d0_4d_0an,\n 0x20_6b_0c_e2_f1_b2_c5_b7_c9_f3_7b_00_45_22_70_95_f6_c6_f0_71_ec_3b_dd_a7_6a_7d_df_48_23_dd_5d_d6n,\n 0x0f_eb_a4_fb_87_83_4c_7c_b6_96_e6_74_33_62_8c_d6_ca_ff_c3_a4_ef_20_fe_a8_52_c7_e1_02_94_59_40_9cn,\n 0x25_4d_bf_ac_74_c4_9b_0b_89_26_75_2e_08_4e_02_51_3b_06_f1_31_5e_6d_70_e1_81_73_e9_72_33_6e_55_d3n,\n 0x0a_dd_b1_37_2c_ee_4e_16_46_55_16_8c_36_75_59_e1_96_06_c5_bd_17_91_0a_eb_37_71_9e_df_a0_ca_87_62n,\n 0x26_b2_5b_7e_25_7f_3e_97_c7_99_02_4f_b0_19_f6_5c_6c_a4_d8_d8_1b_1a_e1_62_21_a5_89_d6_88_31_d7_59n,\n 0x09_09_95_b7_9a_ce_c2_40_41_3b_8d_4c_65_87_87_e5_a4_65_7b_9a_b0_0b_db_5b_19_60_b1_05_9e_11_3b_a3n,\n 0x08_db_dc_2e_21_ef_11_f2_c5_72_99_68_78_43_ce_a3_eb_0d_8e_40_e9_91_31_f4_29_74_17_8d_44_f7_3b_7bn,\n 0x09_e8_ab_a6_71_48_11_97_67_9f_af_75_2a_0f_78_e3_42_fe_9c_49_15_96_ab_67_58_f1_70_93_97_85_17_9fn,\n 0x1d_eb_05_18_0e_83_3e_45_65_90_52_a7_eb_af_81_6c_7e_fd_12_a7_f9_ee_c9_4b_7b_c7_c6_83_f1_36_3d_5cn,\n 0x19_a7_0e_c6_bd_fc_90_98_a9_26_ef_bc_c0_4a_a9_ee_24_89_97_e8_b2_c2_4a_f3_35_fd_65_23_e5_25_08_79n,\n 0x21_d7_73_66_0a_da_fb_8a_87_99_86_f9_aa_b4_89_05_66_35_3a_37_77_d8_a3_f1_eb_93_ab_e1_0b_bf_1f_64n,\n 0x09_f1_89_0f_72_e9_dc_71_3e_20_ba_63_7b_89_d5_d3_97_a6_b0_1f_cd_66_73_47_f6_f4_66_17_84_1c_39_01n,\n 0x05_af_45_93_61_eb_45_4d_2a_30_0c_61_e4_46_99_8d_48_fa_1f_89_7b_f2_19_d6_08_c2_14_5c_33_b1_11_c3n,\n 0x0f_a1_a1_d6_82_9f_03_45_66_4a_66_dc_75_a6_57_33_5f_33_6f_15_f3_40_75_6c_fa_12_fc_85_0c_c8_b5_13n,\n 0x02_e4_7a_35_bc_c0_c3_a0_bd_a0_b1_c0_30_7a_d5_43_f4_28_0f_cf_87_f6_36_f8_53_65_5c_f9_7a_62_8b_b0n,\n 0x14_f7_73_e9_83_4c_6b_de_b8_f9_0e_78_bf_4c_24_b7_20_34_11_46_01_12_49_10_36_62_18_95_20_4d_0f_12n,\n 0x10_2d_98_cf_50_2e_d8_43_25_5c_f1_9d_29_bc_7d_8e_64_2a_be_7c_fd_63_99_92_ff_b0_91_96_2f_c8_f7_ccn,\n 0x04_3d_d5_f4_aa_5a_76_dd_4c_47_f6_c6_5d_a7_ca_23_20_d4_c7_3a_d3_29_47_38_cb_a6_86_a7_e9_13_73_c2n,\n 0x21_83_38_19_c3_33_71_94_a6_c0_d2_9a_48_d4_f2_67_6f_0e_7c_79_74_3a_30_6f_4c_fd_b2_b2_6b_d1_1e_fan,\n 0x0f_28_19_25_cf_5e_e6_49_b4_74_a6_81_9d_11_6c_a3_eb_4e_ca_24_6c_31_1e_ca_dc_53_26_2a_3c_ff_2b_53n,\n 0x0d_3e_24_77_a7_b1_0b_eb_44_70_9c_77_46_d6_82_4e_df_62_5d_d6_05_04_d5_dc_93_ce_66_2f_15_c2_38_d6n,\n 0x2c_d7_f6_41_be_db_f6_69_56_ff_8a_01_be_9c_de_35_d8_0f_80_ab_51_e7_3b_49_ac_bf_c3_ef_f5_ae_fc_44n,\n 0x29_e9_5b_49_2b_f2_f9_5f_4d_09_38_0f_98_b7_4e_38_91_49_d2_40_45_81_1d_7a_86_dd_86_13_10_46_3c_f8n,\n 0x22_da_66_bc_62_e8_f0_11_26_6e_fc_a8_6a_6c_81_0f_9a_e4_c5_1a_f6_ff_eb_57_f8_b3_c5_0d_f8_3c_c1_3en,\n 0x0f_e6_d3_0d_e7_a8_2d_16_30_23_49_17_94_f4_ac_a3_22_0d_b7_9e_81_29_df_36_43_07_2d_84_19_25_55_4an,\n 0x00_50_e8_42_a1_29_99_09_12_3c_46_ef_f1_85_c2_3a_d3_12_d0_3f_ef_1a_df_ec_c7_e0_7e_cb_29_8f_d6_7fn,\n 0x21_30_a3_a7_b3_22_12_22_be_34_cc_53_a4_2d_77_33_66_6f_9d_df_71_4e_d7_c5_88_5c_bb_db_63_10_8c_21n,\n 0x2d_f9_ee_29_4e_df_99_e3_d8_d5_88_3f_e0_56_6c_24_aa_66_73_1f_34_a9_32_80_e1_d3_28_e6_7b_33_c9_fan,\n 0x1b_f7_d6_e4_89_ad_8c_0c_f2_6e_b6_8c_c2_1f_f5_41_58_13_23_96_dc_25_0a_eb_a4_b6_fc_5f_c3_37_27_62n,\n 0x0c_60_2f_a1_55_be_95_87_61_ea_f7_39_61_7a_b1_36_cf_7b_80_77_28_bf_7f_e3_5d_47_78_d3_11_78_0e_54n,\n 0x2e_50_e2_c5_b3_6a_a2_05_32_40_7d_86_b8_d2_2d_7d_51_54_08_0a_24_97_2f_ae_b6_3f_af_01_21_ed_7f_21n,\n 0x17_c2_51_09_82_a7_b5_82_57_10_d6_29_0e_c4_f7_82_f6_74_99_5e_e8_40_9b_42_b4_59_12_3b_18_03_32_e1n,\n 0x0b_0d_52_f0_3c_8a_f7_27_68_03_ec_f2_46_5b_88_5b_21_33_7b_53_8e_ab_d2_f6_b2_ab_25_5f_37_6b_42_a8n,\n 0x0f_56_33_df_19_72_b9_45_59_53_d8_8a_63_f8_06_47_a9_ac_77_c6_c0_f8_5d_45_61_97_2d_d8_fa_b8_bd_14n,\n 0x0e_bf_7a_d2_9c_a1_38_04_e1_42_2e_93_96_81_15_51_24_78_0f_f4_3e_76_e9_29_03_54_98_13_0a_7f_15_72n,\n 0x1a_ff_13_c8_1b_da_47_e8_0b_02_96_21_73_bb_a3_43_e1_8f_94_be_e2_7c_8a_57_66_1b_11_03_a7_20_ff_e2n,\n 0x21_04_49_db_f5_cf_30_61_da_24_65_be_85_50_58_62_d3_f3_1d_e1_a3_b5_8f_f3_57_13_be_57_ef_ac_6c_07n,\n 0x08_82_30_c2_79_4e_50_c5_7d_75_cd_6d_3c_7b_9d_be_19_d1_e2_f1_d3_00_10_44_b9_3a_d1_c3_ee_62_98_17n,\n 0x1c_40_8c_25_64_90_b0_a1_da_08_dc_46_41_38_df_c7_8c_ce_9a_9e_16_c7_70_56_17_a4_d6_db_b2_0e_7e_3an,\n 0x07_45_17_e0_81_eb_4c_1f_22_d1_77_12_00_fb_07_65_8f_7c_77_65_4d_58_44_04_90_dd_6f_55_7e_9e_39_03n,\n 0x02_d0_4e_9c_21_df_1d_bd_88_52_4b_db_20_36_91_b4_ce_e5_53_05_59_d6_cf_0f_a0_5a_df_61_e1_2f_dc_bfn,\n 0x2e_b7_a0_11_b8_bc_e9_10_82_e1_3e_bd_75_de_3b_58_eb_9b_46_50_da_e9_f1_1a_a8_1d_b3_2c_f1_b6_7b_13n,\n 0x2e_fd_a7_7e_d3_5f_4a_f0_29_9f_75_d6_e8_a8_49_b5_4d_2a_c6_bf_95_36_83_04_e6_03_0c_18_f0_cf_17_b5n,\n 0x09_19_9d_ca_fd_50_ce_64_2e_dd_be_da_65_20_6d_4f_61_a7_3d_10_85_2b_81_14_c5_1b_24_40_19_2a_e0_64n,\n 0x26_8c_5c_fc_44_6d_39_9c_4d_d3_19_db_66_6a_75_b5_cb_65_5d_8c_17_97_e9_fa_76_18_1c_b4_21_6e_15_62n,\n 0x23_03_a6_52_c9_49_07_18_26_b0_e9_a3_6c_80_57_86_97_b4_4e_91_2c_ce_66_87_01_28_54_ed_a1_1a_18_dcn,\n 0x27_c5_35_63_b1_2a_6e_e2_c3_f0_41_f3_1d_c4_59_22_bc_53_53_eb_11_08_68_d2_37_07_3f_4e_fb_35_fb_dfn,\n 0x12_01_a8_7e_af_4a_e6_18_f0_2b_d8_2d_0a_51_09_04_99_69_b5_24_8c_fe_90_f4_2c_27_8f_22_61_5d_2b_0en,\n 0x2c_43_16_94_39_fc_d6_9e_ad_82_14_99_7b_b0_69_be_ca_fc_b1_ba_2c_51_e5_70_6c_b4_b4_3d_ab_2a_44_3dn,\n 0x06_83_59_73_15_35_90_40_ea_03_c4_5d_69_84_c6_89_4f_46_cb_b3_6d_70_2e_3c_4f_b9_84_7e_63_04_d9_44n,\n 0x03_54_57_06_70_6e_ab_36_af_b9_3b_12_8f_eb_d1_6f_b0_42_5e_15_83_14_19_7b_77_79_5a_d3_a7_98_d1_83n,\n 0x1a_33_c2_54_ec_11_76_19_d3_5f_1f_c0_51_b3_17_28_74_0b_ed_23_a6_a3_78_70_ed_b3_93_b7_1a_0c_0e_6bn,\n 0x1f_fe_69_68_a4_47_0c_d5_67_b0_c0_02_28_1c_af_99_6e_88_f7_1e_75_9b_87_e6_f3_38_e5_17_f1_69_0c_78n,\n 0x0f_d6_6e_03_ba_88_08_ff_ec_b0_59_c8_99_fd_80_f4_14_0d_dd_5d_2a_5c_44_83_10_7f_4e_02_e3_55_b3_93n,\n 0x26_3a_b6_9f_13_b9_66_f8_19_73_94_55_29_06_b1_7e_6c_86_17_a7_bd_d5_d7_4a_7b_e3_39_6b_7f_e0_13_abn,\n 0x16_a4_25_e4_7d_11_10_62_50_54_d5_a1_65_de_41_3e_3b_d8_7d_5a_a3_95_8f_dd_6e_b7_e0_3e_39_ba_40_46n,\n 0x2d_c5_10_a4_71_9e_c1_0c_ad_75_2f_03_c6_73_f0_e2_53_cc_31_d1_3e_39_e9_09_fc_c5_f7_3a_f9_13_8d_9an,\n 0x24_df_8e_8d_85_6c_5b_5e_1b_d1_ca_d2_3d_07_dd_a3_42_3c_51_79_32_9b_7a_82_cb_4a_a7_09_a9_45_76_e5n,\n 0x2b_cc_94_ff_4f_c3_c7_6f_3c_d5_c6_89_15_a0_42_e8_76_28_24_9a_01_b0_95_61_bd_f2_4a_6c_dc_e5_62_0fn,\n 0x07_6c_1e_88_dc_54_0c_8d_8d_e5_4e_34_3d_f7_c4_29_d3_29_5f_52_c3_8c_ff_e6_b4_8b_e8_68_52_da_97_dfn,\n 0x09_b5_f2_09_a4_51_ac_43_1c_05_1f_b1_2d_9a_5e_4f_e4_0e_e1_60_11_20_94_7d_a9_90_fb_8e_12_cb_46_e1n,\n 0x20_5f_17_b0_d8_72_9e_2e_aa_88_d6_a4_41_35_a6_ab_64_e9_42_4f_55_b0_f1_ea_06_83_af_75_eb_67_7c_07n,\n 0x28_1c_5c_68_88_36_f6_cf_91_26_38_c3_8b_e0_46_cd_09_16_81_f0_a4_17_61_72_0c_dd_1e_df_9f_23_70_29n,\n 0x1a_05_3e_68_78_e9_00_f4_5f_4d_67_44_8c_47_1c_f3_00_9a_44_e7_a0_2e_a5_0e_4a_fa_44_f2_59_26_21_f5n,\n 0x10_0d_c7_d4_26_de_be_30_07_fb_7c_ea_c8_4e_4f_54_68_ef_cb_89_7e_7b_be_e9_81_74_28_39_d5_9e_06_4cn,\n 0x17_02_26_72_a0_16_a9_57_bb_87_e2_cf_ad_c8_b7_5f_b2_89_05_bd_b6_2c_82_c8_0b_1c_b3_1b_41_1e_49_c8n,\n 0x10_86_db_7e_27_60_fc_8b_71_05_3a_87_eb_e1_51_23_9f_b8_b5_47_18_2b_17_0d_e0_c2_72_03_f9_54_f4_d2n,\n 0x15_38_4f_e3_9d_73_b6_33_02_46_0a_e4_c2_94_2f_ac_2b_41_fb_65_a1_85_53_6f_b8_5d_d2_4f_d7_58_40_64n,\n 0x2e_bb_59_9f_e9_13_6d_42_4b_f4_ab_c5_34_2c_6c_74_47_b1_a8_53_20_5f_cf_b5_51_9e_55_13_57_70_90_08n,\n 0x1b_4b_5e_87_cf_b9_26_2c_fe_c3_c0_f0_54_2e_4c_5a_4c_f2_78_29_2b_4c_e3_ee_d9_96_fa_c6_f4_d3_72_88n,\n 0x24_65_05_3a_e5_0b_68_85_80_1f_3f_82_e3_02_ca_fb_bb_4a_75_81_bb_4f_ba_60_b6_37_fe_be_65_9e_50_57n,\n 0x11_4f_32_ed_cd_ea_09_cd_09_5c_5b_b5_d3_8f_1b_97_da_9f_05_e1_8b_37_08_bf_6e_0a_b9_d3_d5_48_59_efn,\n 0x2b_c7_0d_fe_b2_ba_ab_2f_6b_38_7c_d7_7b_e7_79_ac_2e_5e_55_19_f3_d1_81_23_ee_28_d8_c2_54_3c_71_48n,\n 0x01_c9_bf_7a_20_3c_e2_2b_77_5e_3a_61_ad_7e_77_b6_a7_83_48_b9_f6_ec_68_a4_12_e4_9b_fe_32_c0_54_15n,\n 0x05_14_b0_fe_59_09_ea_88_7b_ed_b0_29_5f_bb_ce_c3_55_cf_b5_75_ff_6a_97_cd_9f_4a_d0_0c_cb_57_ee_9bn,\n 0x26_7c_76_ec_81_93_4c_c8_1a_13_2a_8b_05_89_10_a1_20_92_52_0b_12_a2_01_af_03_e3_20_2d_7b_6c_1b_7en,\n 0x29_17_0e_33_22_b3_d8_d5_c7_8c_84_ba_bb_b4_70_ad_f1_62_24_93_ce_83_e9_5c_fb_15_1c_f7_57_bd_e5_d6n,\n 0x01_9f_6a_81_24_b1_9e_33_af_33_e5_d3_87_3f_9c_33_5c_6f_09_a4_54_86_ca_b5_36_dd_59_6c_a4_1d_95_19n,\n 0x19_04_aa_4d_69_08_54_4a_8b_34_8e_9d_b1_98_1c_27_00_9e_d8_ea_17_15_18_ae_54_05_d0_36_24_2b_60_e9n,\n 0x26_f1_78_73_94_9b_c6_79_f7_f0_43_95_66_94_e4_22_b3_ce_e1_de_9d_d6_f6_47_3b_93_2a_47_64_55_ff_1an,\n 0x1a_c6_68_f6_12_b8_24_3c_19_3b_33_72_0b_8a_a5_40_40_c4_76_03_11_97_13_1e_bd_ca_c9_b1_8b_c4_8f_75n,\n 0x09_96_d9_61_a7_5c_0d_07_19_6d_ae_45_bf_62_47_66_cc_fb_f8_55_5b_e9_79_6d_a5_2f_81_56_8e_f0_66_3dn,\n 0x03_0c_97_e1_b8_ca_d1_d4_fd_50_d1_b4_38_3f_be_66_74_d1_71_f9_9c_63_fe_bb_54_25_b3_95_c2_4f_c8_19n,\n 0x06_e3_ad_6a_46_90_0e_2d_39_53_37_02_55_b6_8f_89_b3_e5_23_f1_fe_50_26_42_ee_22_6f_2d_8b_d0_84_8fn,\n 0x1d_6b_37_55_33_1c_d0_21_6b_68_80_e4_2f_98_80_f5_65_cb_94_b0_e0_45_51_53_a3_29_89_05_88_cc_91_6en,\n 0x28_e4_dc_ba_4b_96_f1_2a_59_b0_41_53_5e_73_0a_c8_c3_51_89_dc_0b_85_ac_03_3d_d3_8c_08_ba_e5_31_f2n,\n 0x08_b6_08_60_46_a8_35_50_8c_cf_48_4f_29_74_b6_a6_b0_71_2a_47_62_60_37_6c_7a_3b_3e_4b_c4_a4_7a_14n,\n 0x16_2c_d2_ca_7f_e3_b5_f1_44_4b_ce_c9_78_12_01_9b_b6_fd_85_fb_a6_a0_53_6a_89_64_3e_15_b9_bb_3b_52n,\n 0x28_f1_e0_3b_aa_ea_9b_bc_05_af_5b_11_93_7e_4f_5c_b5_c9_a9_c1_19_20_63_d1_99_8c_01_c6_4d_48_3a_76n,\n 0x1b_db_06_27_78_d7_c1_5d_a3_95_af_27_34_c2_5f_aa_01_27_d2_aa_b4_aa_71_36_60_31_a0_bb_67_91_ce_10n,\n 0x23_75_83_95_02_e0_98_90_cb_29_14_e8_29_62_7e_0e_0f_c9_88_70_b2_32_4a_8b_50_32_9e_bd_d2_47_49_cbn,\n 0x1f_a8_66_2f_bc_b6_1f_b3_ad_7c_55_66_8d_c9_42_3a_33_2d_c8_7c_fb_2d_f4_56_e9_2d_33_61_1e_d7_bb_50n,\n 0x1e_4f_ad_2d_d6_b0_a6_f1_f8_70_7f_72_17_16_c8_a4_46_e2_fb_2c_47_a5_13_8f_3f_7f_97_36_07_9d_76_94n,\n 0x21_12_56_d1_6c_72_69_fd_6d_f6_f5_fc_dd_1f_a7_88_ba_3b_d0_50_05_9f_53_d2_61_b0_f5_f1_37_31_ff_e7n,\n 0x2e_49_08_4b_33_6e_ce_aa_4f_8e_2a_2e_6a_f0_83_18_f4_20_60_e5_74_dd_a3_41_f4_a1_07_9b_12_bc_c5_a5n,\n 0x0c_e1_9f_54_cd_c3_9f_7f_3b_f3_51_92_ac_68_08_21_1a_ec_ea_08_df_e1_4c_ab_75_8d_25_89_1f_b0_0b_b9n,\n 0x00_11_c5_d5_6c_39_0e_89_3c_c3_94_22_12_61_d8_74_8d_c6_04_51_e4_ae_4e_1c_84_a8_46_8b_ab_2c_14_cbn,\n 0x17_d7_9f_f0_6b_63_ac_2a_8a_9e_05_ee_6a_f3_db_b7_ca_60_e1_7b_fa_39_b4_75_14_a8_cd_80_51_57_9b_4cn,\n 0x19_a7_d3_a4_46_cb_53_93_dc_74_56_00_93_59_2b_06_b1_a8_b3_5c_d6_41_6a_2e_ca_b0_01_73_63_90_15_fan,\n 0x03_0c_00_a0_93_3d_cd_ba_2a_80_8b_2e_1b_92_82_f3_31_f0_45_96_d8_92_8d_a7_aa_6c_3c_97_23_70_37_a6n,\n 0x16_bc_b4_47_ce_2d_50_f3_ae_25_ad_08_06_95_38_2e_93_5d_2d_00_18_4c_4a_cc_93_70_be_8a_ab_64_13_9cn,\n 0x12_34_1b_46_b0_15_0a_a2_5e_a4_ec_87_15_31_29_97_e6_21_24_f3_7c_ab_7b_6d_39_25_5b_7c_d6_6f_eb_1dn,\n 0x0e_86_d1_39_17_f4_40_50_b7_2a_97_b2_bf_61_0c_84_00_2f_c2_8e_29_6d_10_44_dc_89_21_2d_b6_a4_9f_f4n,\n 0x08_e6_eb_40_89_d3_7d_66_d3_57_e0_0b_53_d7_f3_0d_10_52_a1_81_f8_f2_eb_14_d0_59_02_5b_11_0c_72_62n,\n 0x2e_a1_23_85_62_45_f6_c8_47_38_d1_5d_d1_48_1a_0c_04_15_cc_b3_51_a1_e0_ce_e1_0c_48_ce_97_ca_7b_18n,\n 0x2d_ca_72_b2_eb_ca_b8_c2_34_46_e0_03_30_b1_63_10_41_95_78_90_25_41_3a_bf_66_4d_b0_f9_c8_4d_fa_6fn,\n 0x06_ff_9e_d5_0d_32_7e_84_63_32_9f_58_5e_c9_24_b3_f2_f6_b4_23_5f_03_6f_a4_c6_4a_26_cb_d4_2b_6a_6bn,\n 0x24_6a_10_b7_e3_e0_08_99_47_f7_c9_bd_a3_d5_4d_f8_e2_a6_0e_0c_ca_84_ea_2a_c6_30_a4_53_5a_fb_f7_30n,\n 0x22_a6_35_01_c5_f0_4b_90_18_71_9e_d9_9d_70_0e_e5_2f_84_6a_71_5a_e6_7a_d7_5c_96_b3_9d_68_8b_66_91n,\n 0x2f_4c_50_47_7f_7f_d9_c6_71_79_9a_c5_d2_e2_24_cd_b9_16_4f_58_35_1d_8a_a1_40_ec_07_e5_14_fa_e9_37n,\n 0x10_ff_b7_aa_d1_f5_1c_7d_13_b1_7f_4d_87_6d_9a_1e_38_f0_ba_8a_4a_23_d4_b5_0c_da_32_ca_d8_51_56_7en,\n 0x0e_9c_ef_dd_c3_c2_d3_be_a4_d3_97_22_53_2d_54_20_78_40_27_35_21_87_e7_af_1a_05_69_35_c3_58_03_aen,\n 0x07_af_84_a4_d3_14_1e_7a_c2_33_52_e6_dc_6e_a4_af_a1_65_6f_96_a3_3c_89_78_a3_e8_3b_dd_4b_a6_2b_41n,\n 0x2d_9e_31_a1_0a_eb_c7_61_f8_de_00_d1_4b_1e_56_6d_1a_39_32_3d_6e_89_b6_38_e9_40_f3_ec_8a_22_c3_c5n,\n 0x27_f1_9a_65_32_e6_6b_53_33_db_1a_fd_59_2f_66_f1_d3_60_34_b3_14_da_d8_44_76_56_74_7b_e2_7e_64_c7n,\n 0x00_58_fa_3c_84_54_d6_33_54_b2_02_4c_3b_4a_57_7a_18_0e_d9_9f_8f_31_55_cd_7e_4d_61_7d_47_d0_7f_fdn,\n 0x04_16_27_b6_71_5b_78_09_67_95_7c_08_06_99_34_3e_b0_41_4a_20_5d_3a_17_5d_70_89_64_95_68_16_a5_d5n,\n 0x00_6a_c4_9d_d9_25_3e_dc_7f_63_2e_57_b9_58_cc_ec_d9_82_01_47_1c_f1_f6_65_89_88_8f_12_b7_27_c5_2dn,\n 0x01_31_ad_ff_d8_bd_72_54_b1_d8_c3_61_6b_be_33_86_ec_0c_9c_0d_6d_25_a9_a4_ec_46_a6_bf_18_30_13_98n,\n 0x1c_4a_6f_52_c9_fc_cf_7a_41_38_e4_13_ef_62_a2_83_77_97_7a_d7_e2_5e_49_a3_cf_03_0e_1c_d8_f9_f5_b6n,\n 0x03_f2_a6_be_51_ec_67_7f_94_65_51_b3_86_0e_a4_79_fe_e0_48_ae_20_78_ae_b7_d1_f7_95_8d_2c_26_45_f6n,\n 0x2d_a7_70_aa_d2_c2_eb_09_39_1a_0c_b7_8e_f3_a9_64_8a_13_72_d8_54_31_19_56_4d_73_76_39_6b_8d_dc_62n,\n 0x15_27_84_63_66_5f_74_cd_dc_18_02_fe_bf_ab_02_ce_c9_d4_5f_e8_66_c3_59_c7_38_06_2a_fb_75_d6_4a_03n,\n 0x12_fe_27_8a_a3_65_44_ea_c9_73_10_27_09_05_18_d4_34_e3_8e_a9_66_a0_8a_6f_8d_58_06_38_ac_54_c7_73n,\n 0x14_9b_9c_80_21_82_55_8a_4c_45_d1_19_d3_f4_cc_7f_d8_58_76_04_ca_4f_0d_6e_21_b0_6f_f3_0b_6a_23_b6n,\n 0x08_12_e7_b4_d8_47_bc_85_17_d1_93_19_77_2f_3c_98_55_e0_44_fd_60_db_ac_9a_0a_dc_49_59_b6_91_df_e4n,\n 0x02_ed_8d_8d_de_af_e3_d9_d8_df_7f_28_a0_bf_aa_7f_55_58_13_c7_e7_50_3a_ea_2a_66_97_37_03_a0_c6_1bn,\n 0x0e_bd_07_3b_a0_53_7b_51_4d_eb_60_29_f9_21_02_9e_55_e5_e4_d9_a0_3d_6b_6b_a1_30_40_38_66_2d_4d_b8n,\n 0x15_c7_54_d5_b1_4b_2c_42_05_c6_ba_8d_2c_cd_02_82_55_b3_e7_92_c6_af_a0_8b_44_ee_75_b6_2e_ff_9f_59n,\n 0x16_95_15_c8_9a_c5_47_9d_b0_ed_8f_a6_fa_31_1b_39_1c_c1_23_52_70_f4_cb_c5_c2_9e_7c_bc_30_e8_73_2an,\n 0x25_47_9f_bf_b3_a6_8f_98_23_88_f2_62_10_01_10_16_08_bd_c2_9f_6f_f0_37_69_6d_91_61_f5_cd_9a_4f_efn,\n 0x14_47_5c_4b_d5_20_45_1f_3c_85_2c_b0_31_1a_57_8c_a7_f8_e6_e9_72_18_21_96_ce_09_48_6e_94_be_60_71n,\n 0x04_5a_69_10_66_cc_66_be_c9_ba_f2_79_88_33_a1_df_d3_a8_47_50_2a_ec_8d_5f_5c_4e_73_36_3d_09_77_99n,\n 0x26_02_9c_0c_26_7c_79_9f_b8_33_ac_8a_11_e3_a3_f0_14_7a_8c_a0_37_22_1b_90_01_3b_8b_cb_37_eb_a6_83n,\n 0x16_3f_ac_b3_4f_f5_72_fb_f7_c9_46_96_9c_1c_26_08_73_ce_12_a6_a9_4a_3e_45_b8_10_1d_5b_94_8d_16_41n,\n 0x2c_71_4e_96_e1_91_3b_35_1d_96_93_20_cc_69_d5_ec_13_e0_6a_62_75_e5_86_88_af_8e_e0_0c_42_40_ee_28n,\n 0x1c_16_61_e2_a7_ce_74_b7_5a_ba_84_66_5e_cd_2b_f9_dd_d6_26_8f_06_de_bf_e2_d5_2b_80_4e_ff_1d_5f_a6n,\n 0x06_a6_9a_e7_95_ee_9b_fe_5e_5a_f3_e6_61_9a_47_d2_66_35_b3_4c_2a_08_89_fe_a8_c3_c0_68_b7_dc_2c_71n,\n 0x11_3d_58_53_5d_89_21_15_c5_d2_8b_4c_19_a3_60_93_74_db_db_ad_f5_41_95_c7_31_41_6c_85_d7_31_d4_6an,\n 0x2a_b8_91_02_e2_b8_d5_e6_38_ff_97_d7_61_da_60_42_e5_34_f1_ff_47_f7_91_7a_2c_a1_a7_40_63_b4_61_01n,\n 0x03_c1_1c_a7_9e_41_fd_fe_96_27_30_c4_5e_69_95_46_34_90_31_89_3d_a2_b4_fd_39_80_4f_d6_a1_5a_d1_b3n,\n 0x27_09_6c_67_26_21_40_38_88_01_4d_db_bb_fc_9d_a1_f7_f6_7b_4d_4c_fe_84_6c_6a_df_04_0f_aa_f2_66_9cn,\n 0x2d_e3_2a_d1_54_97_ae_f4_d5_04_d4_de_eb_53_b1_3c_66_db_79_0c_e4_86_13_0c_aa_9d_c2_b5_7e_f5_be_0dn,\n 0x0d_c1_08_f2_b0_a2_80_d2_fd_5d_34_13_10_72_2a_2d_28_c7_38_dd_da_ec_9f_3d_25_57_54_44_8e_ef_d0_01n,\n 0x18_69_f3_b7_63_fe_81_64_c9_68_58_a1_bb_9e_fa_d5_bc_dc_3e_eb_c4_09_be_7c_7d_34_ca_50_36_5d_83_2fn,\n 0x02_2e_d3_a2_d9_ff_31_cb_f8_25_59_fe_6a_91_18_43_b6_16_94_5e_16_a5_68_d4_8c_6d_33_76_71_29_68_2dn,\n 0x21_55_d6_00_52_10_16_9e_39_44_ed_13_65_bd_0e_72_92_fc_a1_f2_7c_19_c2_66_10_c6_ae_c0_77_d0_26_bcn,\n 0x0d_e1_ba_7a_56_2a_8f_7a_ca_e9_32_63_f5_f1_b4_bb_ec_0c_05_56_c9_1a_f3_db_3e_a5_92_8c_8c_ae_ae_85n,\n 0x05_db_b4_40_60_24_be_ab_cf_ce_5b_f4_6e_c7_da_38_12_6f_74_0b_ce_8d_63_7b_63_51_df_a7_da_90_25_63n,\n 0x05_d4_14_9b_aa_c4_13_be_d4_d8_dc_8a_d7_78_d3_2c_00_e7_89_e3_fc_d7_2d_cc_c9_7e_54_27_a3_68_fd_5en,\n 0x01_cd_f8_b4_52_d9_7c_2b_9b_e5_04_6e_73_97_e7_6f_f0_b6_80_2f_a9_41_c7_87_92_12_e2_21_72_c2_7b_2en,\n 0x1f_c6_a7_18_67_02_7f_56_af_80_85_ff_81_ad_ce_33_c4_d7_c5_01_5e_ce_d8_c7_1b_0a_22_27_9d_46_c0_7cn,\n 0x10_40_be_f4_c6_42_d0_34_5d_4d_59_a5_a7_a3_a4_2b_a9_e1_85_b7_53_06_d9_c3_56_8e_0f_da_96_aa_af_c2n,\n 0x16_b7_9c_3a_6b_f3_16_e0_ff_2c_91_b2_89_33_4a_4d_2b_21_e9_56_76_43_19_18_a8_08_14_75_ab_8f_ad_0dn,\n 0x20_df_f1_bc_30_f6_db_6b_43_4b_3a_13_87_e3_c8_c6_a3_40_70_e5_2b_60_1f_c1_3c_be_1c_dc_d5_9f_47_4en,\n 0x02_12_ac_2a_b7_a6_ea_ae_c2_54_95_50_30_a9_70_f8_06_2d_d4_17_1a_72_6a_8b_df_b7_fd_85_12_ae_06_0dn,\n 0x2f_29_37_74_91_47_44_42_86_9a_10_9c_92_15_63_7c_b0_2d_c0_31_34_f0_04_42_13_c8_11_9f_69_96_ae_09n,\n 0x09_84_ca_6a_5f_91_85_d5_25_ec_93_c3_3f_ea_60_32_73_be_9f_38_66_aa_28_4c_58_37_d9_f3_2d_81_4b_fan,\n 0x0d_08_0a_6b_6b_3b_60_70_0d_29_9b_d6_fa_81_22_0d_e4_91_36_1c_8a_6b_d1_9c_eb_0e_e9_29_4b_24_f0_28n,\n 0x0e_65_cd_99_e8_4b_05_2f_67_89_53_06_38_cb_0a_d8_21_ac_c8_5b_64_00_26_4d_ce_92_9e_d7_c8_5a_45_44n,\n 0x2e_20_88_75_bc_7a_c1_22_48_08_f7_2c_71_6c_d0_5e_e3_0e_3d_20_38_0f_f6_a6_55_97_5d_a1_27_36_92_0bn,\n 0x29_89_f3_ae_47_7c_2f_d3_76_a0_b0_ff_3d_7d_fa_c1_ae_2e_3b_89_4a_fd_29_f6_4a_60_d1_aa_85_92_ba_d5n,\n 0x11_36_1c_e5_44_e9_41_37_92_22_d1_01_e6_fa_c0_ce_91_81_06_a4_63_29_0a_3e_3a_74_c3_ce_a7_18_94_59n,\n 0x1e_8d_01_4b_86_cb_5a_7d_a5_39_e1_0c_17_3f_6a_75_d1_22_a8_22_b8_fb_36_6c_34_c8_bd_05_a2_06_14_38n,\n 0x17_3f_65_ad_ec_8d_ee_e2_7b_a8_12_ad_29_55_8e_23_a0_c2_32_41_67_ef_6c_91_21_2e_e2_c2_8e_e9_87_33n,\n 0x01_c3_6d_aa_f9_f0_1f_1b_af_ee_8b_d0_c7_79_ac_3e_5d_a5_df_7a_d4_54_99_d0_99_1b_d6_95_31_0e_dd_d9n,\n 0x13_53_ac_b0_8c_05_ad_b4_aa_9a_b1_c4_85_bb_85_ff_f2_77_d1_a3_f2_fc_89_94_4a_6f_57_41_f3_81_e5_62n,\n 0x2e_5a_bd_25_37_20_7c_ad_18_60_e7_1e_a1_18_8e_e4_00_9d_33_de_b4_f9_3a_eb_20_f1_c8_7a_3b_06_4d_34n,\n 0x19_1d_5c_5e_da_ef_42_d3_d0_2e_ed_bb_7a_b8_56_25_13_de_b4_eb_34_91_3a_13_42_17_26_ba_8f_69_45_5cn,\n 0x11_d7_f8_d1_f2_69_26_42_82_a2_63_fe_a6_d7_59_9d_82_a0_4c_74_c1_27_de_9d_ee_79_39_dd_2d_cd_08_9en,\n 0x04_21_8f_de_36_68_29_ed_90_f7_9a_d5_e6_79_97_97_34_45_cb_4c_d6_bc_6f_95_1b_ad_08_52_86_ca_c9_71n,\n 0x00_70_77_2f_7c_f5_24_53_04_83_97_ca_5f_47_a2_02_02_7b_73_b4_89_30_1c_32_27_b7_1c_73_0d_76_d6_ddn,\n 0x03_8a_38_9b_ae_f5_d9_a7_c8_65_b0_65_68_7a_1d_9b_67_68_1a_98_cd_05_16_34_c1_dc_04_db_e3_d2_b8_61n,\n 0x09_a5_ee_fa_b8_b3_6a_80_cd_a4_46_b2_b4_b5_9c_cd_0f_39_d0_09_66_a5_0b_ea_f1_98_60_78_90_15_a6_e5n,\n 0x01_b5_88_84_8b_8b_47_c8_b9_69_c1_45_10_9b_4b_58_3d_9e_c9_9e_df_ac_b7_48_9d_16_21_2c_75_84_cd_8cn,\n 0x0b_84_6e_4a_39_0e_56_0f_6e_1a_f6_df_c3_34_14_19_54_5e_5a_bf_a3_23_d8_17_fe_d9_1e_30_d4_29_54_a6n,\n 0x23_a6_67_9c_7d_9a_db_66_0d_43_a0_2d_db_90_00_40_eb_15_13_bc_39_4f_c4_f9_85_ca_bf_e8_5c_e7_2f_e3n,\n 0x2e_03_74_a6_99_19_7e_34_3e_5c_aa_35_f1_35_1e_9f_4c_34_02_fb_7c_85_ec_cc_f7_2f_31_d6_fe_08_92_54n,\n 0x07_52_cd_89_9e_52_dc_4d_7f_7a_08_af_4c_de_3f_f6_4b_8c_c0_b1_17_6b_b9_ec_37_d4_19_13_a7_a2_7b_48n,\n 0x06_8f_88_13_12_72_99_da_c3_49_a2_b6_d5_73_97_a5_02_75_14_2b_66_4b_80_2c_99_e2_87_3d_d7_ae_55_a7n,\n 0x2b_a7_0a_10_23_55_d5_49_67_75_74_16_74_34_b3_f9_86_87_2d_04_a2_95_b5_b8_b3_74_33_0f_2d_a2_02_b5n,\n 0x2c_46_7a_f8_87_48_ab_f6_a3_34_d1_df_03_b5_52_13_09_f9_09_9b_82_5d_d2_89_b8_60_9e_70_a0_b5_08_28n,\n 0x05_c5_f2_0b_ef_1b_d8_27_01_00_9a_2b_44_8a_e8_81_e3_a5_2c_2d_1a_31_95_72_96_d2_9e_57_63_e8_f4_97n,\n 0x0d_c6_38_5f_dc_56_7b_e5_84_2a_38_1f_60_06_e2_c6_0c_d0_83_a2_c6_49_d9_f2_3a_c8_c9_fe_61_b7_38_71n,\n 0x14_2d_39_83_f3_dc_7f_7e_19_d4_99_11_b8_67_0f_a7_03_78_d5_b8_41_50_d2_5e_d2_55_ba_a8_11_4b_36_9cn,\n 0x29_a0_1e_fb_2f_6a_a8_94_fd_7e_6d_98_c9_6a_0f_a0_f3_6f_86_a7_a9_9a_a3_5c_00_fa_18_c1_b2_df_67_bfn,\n 0x05_25_ff_ee_73_7d_60_51_38_c4_a5_06_66_44_ec_63_0a_b9_e8_af_c6_45_55_b7_d2_a1_af_04_eb_61_3a_76n,\n 0x1e_80_7d_ca_81_d7_95_81_f0_76_67_7c_a0_e8_22_76_7e_16_4f_61_49_10_26_4e_f1_77_cf_42_38_30_1d_c8n,\n 0x03_85_fb_3f_89_c7_4d_c9_93_51_08_16_47_24_74_d3_4c_02_23_e0_f7_33_a5_2f_db_a5_60_82_db_d8_75_7cn,\n 0x03_76_40_dc_1a_fc_01_43_e1_a6_29_8e_53_ca_e5_9f_cf_ab_d7_01_6f_d6_ef_1a_f5_58_f3_37_ba_b0_ea_01n,\n 0x13_41_99_9a_1e_d8_69_19_f1_2a_6c_52_60_82_9e_ee_5f_d5_6c_f0_31_da_80_50_b7_e4_c0_de_89_60_74_b4n,\n 0x06_9e_b0_75_86_6b_0a_f3_56_90_6d_4b_af_b1_0a_d7_73_af_d6_42_ef_dc_c5_65_7b_24_4f_65_be_d8_ec_e7n,\n 0x17_1c_0b_81_e6_21_36_e3_95_b3_8e_8e_08_b3_e6_46_d2_72_61_01_d3_af_aa_02_ea_19_09_a6_19_03_36_96n,\n 0x2c_81_81_4c_94_53_f5_1c_b6_eb_55_c3_11_75_3e_84_cb_bd_cb_39_bf_e6_96_f9_55_75_10_75_02_ac_ce_d8n,\n 0x29_d8_43_c0_41_5d_35_d9_e3_b3_3f_ad_cf_27_4b_2a_b0_4b_39_03_2a_dc_a9_2c_e3_9b_8a_86_a7_c3_a6_04n,\n 0x08_5d_6a_10_70_f3_51_3d_84_36_bc_cd_ab_b7_87_50_d8_e1_5e_a5_94_7f_2c_da_a7_66_9c_f3_fa_e7_72_8bn,\n 0x11_82_03_63_ed_54_1d_aa_10_a4_4b_a6_65_bf_30_2c_db_f1_dd_4e_67_06_b0_2c_9e_2a_5c_da_41_2f_c3_94n,\n 0x20_19_35_a5_8f_5c_57_fc_02_b6_0d_61_a8_37_85_bd_df_d3_15_0e_05_f1_df_5d_10_58_40_b7_51_a1_63_17n,\n 0x0a_8c_28_20_c5_69_71_aa_e2_7a_95_2a_bd_33_a0_3d_46_79_4e_ed_d6_86_cd_8e_cf_ed_61_0e_87_c0_2e_9an,\n 0x18_06_38_ff_30_1a_64_ca_04_ab_d6_d0_bd_75_00_b6_65_0b_65_ff_33_e6_be_1f_d5_0d_bc_16_3a_28_18_77n,\n 0x09_5c_71_62_66_f1_de_59_04_4f_97_11_4a_41_58_a3_f8_5c_a8_a9_37_cf_be_c6_3e_9b_32_1a_81_2d_d3_6bn,\n 0x17_c3_1e_a0_2f_bc_37_83_20_d8_6f_fe_d6_c7_ca_15_83_b6_18_c5_c1_a6_87_81_8d_40_87_a4_97_d7_34_90n,\n 0x05_b8_6c_4b_b8_ef_31_8b_6a_72_27_e4_19_2d_14_9d_3c_17_a9_76_4c_cd_66_0d_e4_d5_0a_77_f1_92_a9_1bn,\n 0x26_5b_c9_5d_f4_a4_c4_87_6f_f7_0d_7e_a2_fd_e2_c7_ab_15_f4_a6_ae_0d_23_7c_d6_ce_74_ba_98_6c_7a_7bn,\n 0x24_75_2b_47_bc_6c_6b_c8_d9_bb_e4_8f_5f_ef_2f_69_08_70_17_39_c5_f5_b4_b3_d6_c8_86_d4_71_5c_79_29n,\n 0x14_81_4a_1e_0f_49_2a_4e_a0_d8_6e_52_7a_96_48_21_78_d6_24_b9_8d_a9_6e_e5_e5_83_b9_32_4d_97_4e_fen,\n 0x10_de_f9_31_07_3b_64_79_bd_60_57_73_78_f2_93_81_99_7c_8e_04_1d_3c_fb_3d_c7_52_3b_ca_90_6f_00_bdn,\n 0x14_f7_ae_77_0b_f7_e9_5f_7f_70_6c_0d_8a_b4_ed_03_fa_0b_88_0d_28_c6_9d_03_1b_45_92_c9_86_10_17_5fn,\n 0x1a_ef_50_a0_ce_e7_51_b5_9f_92_6a_f4_0e_80_35_d1_9d_ec_c9_d4_28_eb_e4_e7_75_c5_cc_9d_ce_1c_e5_89n,\n 0x04_19_35_60_71_72_f6_8e_ba_65_ca_60_06_8d_fe_3b_08_6c_2a_2d_57_d0_96_02_95_12_14_b5_7e_73_cf_5an,\n 0x26_86_3e_9d_d2_42_55_d1_57_3b_d0_83_95_9b_85_6c_04_93_fb_ef_e8_3c_81_98_37_a1_51_d3_bf_45_2c_b8n,\n 0x20_36_ef_b6_f9_83_09_65_eb_3d_7a_06_8b_d0_87_c9_f5_ad_f2_51_ba_62_05_2c_65_27_38_e6_3f_f8_b3_afn,\n 0x0c_71_2a_97_5b_74_dc_9d_76_6b_63_9a_02_99_69_ca_30_be_4f_75_a7_53_f8_54_b0_0f_a4_f1_b4_f4_ee_9bn,\n 0x08_01_4d_ab_3c_d1_66_7e_27_af_c9_9b_fa_c1_e6_80_7a_fd_ff_64_56_49_2c_a3_37_57_31_d3_87_53_96_99n,\n 0x19_8d_07_19_2d_b4_fa_c2_a8_2a_4a_79_83_9d_6a_2b_97_c4_dd_4d_37_b4_e8_f3_b5_30_09_f7_9b_34_e6_a4n,\n 0x29_eb_1d_e4_2a_3a_d3_81_b2_3b_41_31_42_68_97_a3_27_09_b2_9d_53_bb_94_6d_fd_15_78_4d_1f_63_e5_72n,\n ],\n // t=6 (5 inputs) - 408 constants\n [\n 0x14_48_61_45_98_e0_0f_98_e7_ae_7d_ea_45_fb_d8_3b_d9_68_65_3e_f8_39_0c_de_2e_86_b7_06_ad_40_c6_51n,\n 0x0a_b7_b2_91_38_8e_5c_9e_43_c0_dc_1f_59_1f_b8_3e_cd_b6_50_22_e1_b7_0a_f4_3b_8a_7b_40_c1_df_f7_c3n,\n 0x2b_7c_bb_21_78_96_f5_2c_9a_8c_08_8e_65_4a_f2_1e_84_cd_e7_54_a3_ce_f5_b1_5c_4d_54_66_61_2d_6a_dfn,\n 0x2b_c6_b0_dd_be_1d_70_1b_65_70_42_8b_dc_1c_a1_bf_0d_a5_9f_f3_bb_bb_95_fc_2b_c7_1c_0c_6e_67_a6_5cn,\n 0x12_3a_55_a3_19_80_38_4f_3d_20_b2_ce_cb_c4_4e_d6_0c_38_c1_1f_7d_20_e9_27_1e_fa_b9_a9_05_ee_fd_3cn,\n 0x03_75_01_cc_8c_9d_c8_19_30_9a_76_9f_4d_f0_98_e5_88_b0_18_58_bc_8e_b7_e2_79_e2_88_3b_e9_fb_8c_53n,\n 0x1c_21_16_e4_7e_03_a8_6b_b1_16_95_b0_a5_f6_da_b6_b9_a4_60_b1_eb_95_1a_b0_1c_25_9e_ca_3f_d4_7d_51n,\n 0x2c_18_21_34_89_03_2e_85_a9_c8_cb_8e_9a_65_83_9b_fa_ed_13_e5_7b_c0_fa_e4_9d_bd_ae_bf_54_f5_6f_93n,\n 0x2e_e8_fe_d3_d4_d2_c7_1a_04_29_ea_fd_8e_5d_b1_71_8f_29_e2_22_79_85_fd_f2_ad_87_03_c8_35_b9_e0_31n,\n 0x28_c6_4d_8f_5e_d7_aa_c0_04_c9_20_29_d9_e9_bf_91_ba_94_36_d1_cc_e9_4b_93_16_d1_11_c7_0a_0c_17_14n,\n 0x18_a0_1d_9f_fb_74_7a_e0_de_3e_83_c7_07_f8_b2_4f_68_2c_84_f1_5a_bf_57_1b_34_25_4a_03_47_86_65_e0n,\n 0x1c_21_d9_2b_ef_19_7e_73_b2_34_e4_77_7b_60_db_14_e6_42_a5_6c_ee_71_51_5d_54_e1_ac_71_cd_e7_2b_d3n,\n 0x0a_d4_04_cc_bc_b1_e1_95_89_7c_b6_0c_80_98_1e_bb_9d_66_a6_67_7d_bb_ed_ad_8b_64_55_fe_62_d8_07_b1n,\n 0x0a_9b_6d_e8_33_06_4f_93_b6_ad_b9_9a_f6_c0_05_94_5c_b6_54_cb_7b_d1_4c_8b_97_af_8b_60_cc_1f_b3_87n,\n 0x13_12_9e_3f_93_0a_ed_6d_47_69_03_31_ff_09_dc_51_60_ef_a5_8d_dc_e2_c3_e6_18_0d_45_be_c3_aa_3a_6fn,\n 0x0d_7a_61_4c_89_91_50_8a_b1_ce_48_95_81_3b_b1_c8_2f_18_bf_7b_fc_9e_28_0c_cc_a1_80_79_83_93_87_f1n,\n 0x05_32_f7_ec_36_e3_00_41_b0_48_69_86_87_5c_91_3a_49_bd_df_2f_5a_f5_fe_be_8c_31_f2_f4_09_4f_fe_a5n,\n 0x06_bb_cb_8e_8e_18_02_01_29_3e_71_2f_49_50_f1_b0_bb_ee_80_8c_9d_64_26_3c_84_d9_d8_ae_15_5c_b8_92n,\n 0x0f_55_8a_4d_b1_a3_ac_07_f6_1e_2e_6b_ee_94_7f_73_58_6b_f4_0f_21_1c_eb_4f_68_7c_a5_67_8a_9d_cb_33n,\n 0x2b_e1_40_a6_0b_5b_5f_2f_8e_dd_78_a8_18_a9_69_b2_0c_64_3e_41_9b_cf_0b_57_7c_24_a0_d0_e7_ac_fe_98n,\n 0x1c_49_c4_b9_a9_f0_9f_7b_9a_d5_f7_4e_ba_cc_71_05_12_b8_e8_67_ba_ce_27_cb_0d_ea_06_e8_9b_96_f6_31n,\n 0x17_0c_1a_73_27_21_b1_2c_de_7f_33_e4_76_a3_9a_1a_a7_7a_81_c0_6e_2e_ac_50_38_47_b0_0d_59_76_52_dbn,\n 0x19_c2_7d_0e_52_f6_5c_a3_4f_4e_31_a0_68_e4_93_31_c6_bf_c3_9d_92_41_f9_d4_c3_02_04_16_15_cf_27_f1n,\n 0x2f_1b_dc_52_54_f9_22_0c_1a_73_1f_c5_27_69_64_da_b2_6b_38_5f_a4_0b_6b_04_be_d9_96_0e_25_43_ba_08n,\n 0x05_b4_2d_2f_bc_cb_f4_d3_9d_2b_e9_33_9c_ab_e9_d0_dc_6d_92_1e_85_5c_d9_11_54_b6_39_d2_8d_4a_1c_f0n,\n 0x12_20_04_07_15_a4_1a_d5_9f_4f_41_0e_0c_05_a4_2c_5f_d3_2a_c5_2f_e9_d0_6f_88_18_8d_71_f6_1e_09_35n,\n 0x25_f9_52_65_26_15_5b_83_94_66_09_f7_bb_95_07_dd_49_25_ef_87_1d_ee_91_6d_91_44_eb_b4_ec_e1_34_3cn,\n 0x01_7b_fe_42_84_29_9a_e7_74_0b_6d_0e_20_49_51_e3_14_a8_a5_d0_45_24_19_14_79_78_a9_5b_34_74_24_44n,\n 0x2a_5d_47_64_02_1c_a7_1d_78_a9_67_4c_b6_70_8f_15_88_d2_ce_af_35_78_c4_11_1c_f8_b3_59_ee_f0_89_cfn,\n 0x17_f0_2d_ab_74_5f_be_3c_08_13_21_fe_5c_ef_84_5e_7b_8d_07_0b_25_14_d2_9b_2a_7b_7d_89_cc_08_15_dan,\n 0x19_da_62_62_6d_b7_19_9b_65_f4_ad_cf_57_fa_4a_3d_ba_a1_76_4a_7b_d1_55_70_8e_e6_f3_78_c8_9e_f0_13n,\n 0x0f_88_e2_95_fa_2e_d8_1b_42_6c_91_fa_69_36_6a_73_ed_f7_5f_39_bf_18_63_4c_d2_66_ec_40_38_82_9e_05n,\n 0x1f_e3_1c_55_48_54_6c_79_48_fe_4e_e1_bd_74_12_e3_28_0e_ff_7d_20_cb_09_aa_85_f4_9f_27_66_14_80_17n,\n 0x10_fd_c1_61_3b_db_f6_7f_38_bd_de_56_1b_2f_91_e4_cc_48_b5_9f_98_d6_43_63_8f_dc_0a_fa_db_fe_12_6en,\n 0x1f_26_18_c2_eb_e9_57_45_08_b9_c5_2f_00_00_e3_3e_bf_dd_ad_1a_03_fd_d6_bc_a6_ef_7f_00_93_12_7b_efn,\n 0x12_9f_e7_fc_3e_fa_c6_a8_ab_23_db_a6_d8_86_f3_94_da_11_f5_95_3c_f9_8e_28_26_9a_0d_ba_2a_74_5d_d3n,\n 0x15_af_d4_cd_f1_e4_f8_20_c1_63_1d_4a_b8_5c_a4_ba_3b_af_cf_ee_72_be_ad_e9_fa_e6_05_23_10_24_48_e3n,\n 0x1f_2c_74_ba_5c_36_7e_37_0d_72_8e_71_e1_5b_26_88_51_a7_bb_8b_45_52_8c_b7_34_95_60_79_ac_99_b0_12n,\n 0x11_30_e1_87_2d_76_f2_f9_36_9c_f5_9b_95_ed_f9_ce_19_f0_1f_a8_9c_9c_36_b2_6e_09_de_f6_78_6d_ad_3cn,\n 0x13_52_3d_17_3f_7e_6b_ad_b7_3b_63_fc_1c_9b_bd_be_e2_42_c6_1b_c6_86_56_49_33_27_53_3a_5c_1b_1d_can,\n 0x14_da_40_d0_af_42_7a_65_f1_84_1b_5a_dc_96_53_86_53_36_8f_72_54_cb_56_67_dd_ad_bb_ad_7a_57_4c_d4n,\n 0x00_91_f9_64_00_e4_29_7e_a8_5b_b1_86_c1_7b_30_4e_82_63_8e_57_fd_63_1f_f6_31_59_76_e1_a5_dd_8b_86n,\n 0x30_33_29_bf_90_31_c5_51_5b_9a_34_d4_9a_64_bb_6a_02_67_bc_7b_54_a0_de_ca_5c_45_02_77_a0_02_cd_cbn,\n 0x14_ed_47_e5_5c_1d_a1_c2_f0_5d_3c_1a_1b_2e_6c_18_50_9f_c8_33_6e_cf_e9_db_73_79_16_e2_83_fa_82_1bn,\n 0x11_61_f1_0b_35_77_75_d8_10_ad_53_bc_c4_a2_0d_5a_dd_2b_03_25_1c_74_7d_eb_04_ee_94_c5_65_e5_8d_6bn,\n 0x17_a8_a5_0a_e7_2c_e7_07_f2_2b_c0_70_eb_99_28_51_ca_91_4e_b9_4c_c6_8e_af_bb_8a_96_a7_14_eb_82_21n,\n 0x1a_6c_61_d7_95_db_af_62_f9_92_50_b3_7e_c5_df_88_64_5a_1c_15_37_91_db_63_12_b9_32_dc_25_0e_4f_62n,\n 0x1f_8b_d2_ab_8a_a8_40_66_4c_4e_ee_19_8c_46_84_dc_4b_05_77_2b_b2_a0_86_9d_a6_72_2b_15_f4_47_a1_33n,\n 0x1f_fc_b8_52_a4_f0_02_7a_97_99_f1_31_cd_74_b9_8c_cf_b8_cb_c0_63_49_d8_fe_fc_c6_2f_10_c8_fb_3e_2fn,\n 0x03_5e_74_2e_c5_2f_19_b3_6d_48_9c_72_0f_46_7f_fa_d7_7c_d5_3b_c2_db_5d_dd_b2_46_b2_30_21_f7_9f_18n,\n 0x1d_fa_ae_e4_1b_df_94_d7_83_aa_29_fc_62_b7_ec_7b_55_67_3a_a8_18_d3_05_fd_42_d1_75_a0_5f_2e_3d_86n,\n 0x28_21_37_84_77_a0_2e_99_50_05_a5_63_50_88_54_09_45_bd_33_3f_2d_14_55_f0_38_a2_19_b8_c4_79_6b_3an,\n 0x1d_b4_a4_d0_f2_38_a5_70_b1_06_1c_6e_ec_81_c0_2f_31_ff_dd_4a_7c_19_e7_63_17_4f_23_8d_04_89_74_21n,\n 0x14_bf_78_89_45_7b_20_b7_a1_36_7b_34_a3_a5_38_21_7d_69_3b_52_42_6a_ff_40_a4_bb_72_89_3b_17_84_can,\n 0x2c_ed_52_c2_bf_29_6f_87_e5_74_10_c3_ec_9a_94_83_a7_96_d1_64_f6_04_91_27_10_9f_f0_d3_a9_c0_84_65n,\n 0x1d_de_ac_58_05_a7_f4_ad_a4_d0_44_1e_d1_08_e3_14_9d_4c_e6_58_4f_49_ae_5b_df_d4_6d_67_66_ee_a3_34n,\n 0x2e_36_b4_e5_e9_c9_7b_46_23_04_e8_e2_b5_f9_dc_88_e1_c9_f2_16_1b_a0_40_67_3f_91_11_23_f0_42_ae_70n,\n 0x0c_68_40_d1_cb_06_66_dc_59_e8_9b_18_65_27_5d_8a_16_4b_44_7c_5e_d6_43_47_ca_ee_63_50_2c_23_8d_5en,\n 0x13_7e_2e_3e_89_e7_1d_46_1f_4c_9b_c3_e8_f1_21_83_26_2a_4d_1d_b5_5c_58_9b_2c_ae_aa_c0_12_38_f5_8cn,\n 0x25_09_32_e7_b0_ad_cf_2c_84_ed_4b_fb_60_a3_6b_6b_82_e5_5a_a9_47_51_15_7b_1d_45_79_4b_08_1c_8a_adn,\n 0x17_0a_72_92_f5_63_4c_06_dd_3b_f0_9a_b5_c9_c4_ec_d4_b0_0d_5c_e2_f3_5f_97_2b_45_55_39_1f_16_b4_2dn,\n 0x0d_68_cb_be_77_28_9e_78_d5_cb_f5_1d_70_f1_b7_5b_a2_15_df_4e_7b_d0_14_9d_10_b2_c5_0f_2a_4f_3b_81n,\n 0x0c_af_74_56_3b_90_52_5f_64_5a_6d_20_36_ec_d1_30_6f_a1_dc_68_0b_49_d9_ce_4e_d2_4c_97_49_97_31_78n,\n 0x20_a7_d1_c0_a2_7f_cc_e7_8f_fe_37_2f_4c_58_30_6b_16_6f_94_56_ed_46_cd_eb_25_5e_39_5b_7d_30_d4_2an,\n 0x06_23_f3_22_6b_54_70_b2_78_9b_8a_53_04_0e_44_44_33_85_e9_6b_9c_fa_0b_e4_d3_50_15_15_8a_46_84_65n,\n 0x16_32_30_86_88_c2_5e_79_0f_57_d6_8a_53_50_24_12_42_a5_63_05_34_7d_e4_a5_00_9c_e4_6b_8c_dc_b9_1fn,\n 0x2d_e4_79_3a_6f_99_cd_14_e3_f6_64_22_11_f4_d0_b7_bc_fa_36_15_97_c5_44_ff_cb_5a_56_7e_90_76_f4_7fn,\n 0x1d_4d_06_d1_9e_a1_b0_9c_ad_79_08_6d_51_bd_e1_17_25_a5_54_fa_99_55_9c_a2_f0_9f_3b_b7_3d_72_8c_66n,\n 0x04_80_e7_47_9a_66_a7_cd_9e_a6_1c_8b_28_97_43_89_90_83_50_ab_c4_aa_fc_18_cd_75_e3_3d_d1_30_c1_44n,\n 0x30_43_0b_03_36_8e_bc_aa_91_24_69_60_49_0b_cf_91_7d_78_68_14_63_e2_e7_d7_44_bf_b4_43_35_da_c2_4dn,\n 0x0b_57_b3_73_20_12_7d_4c_50_f2_69_12_4b_0d_bd_cb_2b_1f_13_52_24_1a_5d_12_10_32_83_e0_89_c0_c7_42n,\n 0x2c_f4_89_06_50_d2_72_40_e1_95_f6_0a_4f_69_8e_da_24_9b_8d_d6_14_b2_33_76_b5_01_78_d2_df_6d_2b_8fn,\n 0x1e_22_1c_55_26_89_8b_fd_12_de_86_85_1a_0d_97_03_75_1a_2f_23_90_08_ab_5f_9b_7d_3b_69_11_c6_41_84n,\n 0x28_e0_74_85_ad_7d_99_2e_d1_a5_8f_32_9c_a1_2a_dc_e4_ec_69_3e_bd_db_b2_95_2e_54_d3_39_f2_ee_bd_a5n,\n 0x2f_44_d6_4f_84_de_16_dc_67_bd_5e_ad_51_ef_b1_dc_83_81_c8_45_20_c1_28_54_dd_5e_f3_a0_79_ac_d4_e0n,\n 0x05_0a_76_bc_32_eb_d1_df_e2_be_33_0f_30_4e_dc_7a_ce_71_67_ab_7b_a1_51_6f_40_21_c6_2c_f0_d4_fa_c2n,\n 0x2f_58_c4_5e_5d_65_9a_67_d7_81_36_72_41_f6_c3_5d_8c_b4_63_61_d9_7b_28_94_7d_29_42_1c_27_05_94_a9n,\n 0x25_e8_da_9a_e0_e4_2e_84_0e_04_b2_30_37_0e_78_2b_db_67_53_48_44_32_5b_a3_6f_c7_e5_e1_60_c6_6a_74n,\n 0x2f_ec_73_4d_a2_0f_e3_20_03_ea_04_f1_27_f8_44_72_4f_38_a3_68_ba_10_c2_95_44_25_2b_e7_96_04_0f_7fn,\n 0x28_8a_67_78_f3_a8_39_88_a8_ed_17_27_f1_5e_93_b4_cb_14_f4_e3_a3_bb_b9_1d_d6_d1_fa_ca_ff_fd_5e_efn,\n 0x20_dc_c6_c7_5f_d8_92_59_be_7f_40_67_50_b3_db_67_9a_25_a8_cd_27_15_d2_45_b9_17_53_90_ac_92_2c_84n,\n 0x17_f4_2b_a1_09_42_df_25_cb_8a_54_17_82_a1_8b_6f_d3_1c_f9_65_d1_11_78_c7_b0_4a_c4_5b_4d_ea_5d_d3n,\n 0x02_8e_eb_85_d1_15_a9_04_02_0e_0c_61_48_ee_c6_60_3e_9c_ed_ab_c6_64_ab_ee_76_4a_af_d4_55_98_6b_a5n,\n 0x0b_1d_7c_ec_f3_a7_9b_2a_d3_fa_29_8f_6c_ea_7a_e9_5d_80_c0_29_9e_cc_91_8e_9f_8c_9c_3d_38_d5_9d_40n,\n 0x04_40_33_9c_97_64_ce_c7_9c_16_ef_db_83_4a_26_26_1d_b8_e3_f1_2c_e1_cf_72_2d_23_c0_e1_1f_f4_cf_07n,\n 0x06_ca_64_7c_29_72_7c_19_62_a0_02_17_7d_a2_d5_04_f4_b0_7a_5f_7e_b5_7c_79_b8_8e_6b_7a_bb_bd_ad_5cn,\n 0x2e_a1_20_a8_64_f5_c4_09_3d_d1_a9_62_e8_f0_13_c7_b8_ef_77_8b_04_d2_ba_5b_fc_3c_ab_28_61_9b_a9_e3n,\n 0x2b_b7_37_54_6c_4a_ee_7c_0c_c2_ba_87_c1_15_7e_2a_77_c4_79_eb_fb_5d_c7_6a_db_b3_9c_f8_69_76_33_fdn,\n 0x0e_30_da_64_90_62_5d_33_e7_9c_d5_01_76_f5_68_f9_a2_c2_8c_2f_44_9a_2b_d5_1a_25_d1_56_86_80_3a_93n,\n 0x0d_f7_ca_72_78_a1_36_50_b9_19_d8_54_97_b2_eb_b0_f7_10_35_a7_c2_04_30_d4_13_1d_90_3a_b7_f5_75_21n,\n 0x27_cc_58_9f_5b_f5_85_79_4a_ba_ce_58_9f_b8_a7_4a_2f_78_4c_09_90_b8_0f_ca_a6_94_40_97_f8_70_e2_d5n,\n 0x22_55_c3_6a_38_c8_73_5d_e4_5c_ed_f4_52_af_a8_42_33_2d_33_04_2f_78_e6_0c_43_c7_45_54_21_b3_25_bfn,\n 0x13_3d_96_02_bd_33_78_d6_9f_68_1c_27_b0_5b_df_fc_98_b7_d8_6c_ca_63_d7_3a_60_ca_ed_48_57_84_d0_87n,\n 0x0e_15_48_e9_42_ae_9d_3e_26_86_06_99_b9_37_27_c8_17_a9_94_86_16_c9_3e_f4_ac_cd_98_1b_1d_c3_d7_8an,\n 0x0f_20_f0_e5_5d_93_68_9f_e0_9e_c3_12_f6_af_47_62_74_82_e4_bd_e0_a1_60_2a_8e_2c_8d_6e_84_e8_a6_aen,\n 0x2e_52_32_84_83_cb_5b_7f_f2_eb_4e_45_b1_2e_51_b2_62_32_c9_bc_17_b7_29_29_54_c0_a9_f6_bf_a5_1b_b9n,\n 0x02_b2_16_2d_53_3e_05_9a_6e_da_2a_bb_74_71_2e_db_3a_78_60_be_ea_95_dd_8a_4a_bf_c9_57_66_08_04_f4n,\n 0x19_e0_92_77_15_d1_cc_6d_38_94_29_94_7f_b3_73_7d_ad_73_39_74_c6_b2_e1_3e_5b_3d_43_25_19_51_6c_74n,\n 0x0d_3a_80_04_57_d7_77_85_63_63_03_b8_b9_4f_17_dc_ff_cb_46_04_88_72_ac_9f_74_ef_7f_27_ee_57_37_05n,\n 0x2c_97_4d_19_52_55_7a_1a_ac_5f_7b_ae_49_96_61_6d_a6_19_b7_3f_44_1c_4e_50_4d_c8_fe_9c_fb_55_9e_32n,\n 0x07_66_bf_ee_ed_e2_cc_f3_70_8e_1b_4f_f3_07_14_c2_2c_1d_43_4c_db_e8_f5_55_14_ba_bc_2d_d5_d9_7b_efn,\n 0x23_da_c8_ea_54_08_2f_c1_31_e1_73_ae_55_e4_63_0c_d4_ca_7c_87_1b_2a_0a_47_9c_1e_74_e7_f1_91_e6_2cn,\n 0x17_d5_fb_6c_2c_b3_70_10_e3_e3_58_ab_2d_57_53_76_87_0e_d3_31_86_b8_ea_e4_9a_d3_b4_7e_34_0a_8d_7fn,\n 0x17_5d_ca_c7_6d_8a_81_26_13_9b_58_3a_e3_88_53_29_02_46_e4_3e_78_3f_a6_90_3e_c8_00_7f_17_8c_00_23n,\n 0x0c_4f_d0_8f_ed_e5_d2_21_ad_b7_ab_f5_49_89_8c_91_e5_be_7e_85_bf_1f_d2_a6_11_bf_18_2c_c2_e7_16_55n,\n 0x27_79_34_b9_09_e7_2d_3a_34_75_bb_1e_c7_66_ab_7a_38_ad_59_b1_28_30_3f_c5_00_2f_02_a6_5b_df_e7_29n,\n 0x0e_88_34_99_98_df_e7_03_f1_b1_84_52_4f_9c_39_4d_60_04_cc_ac_f9_cb_95_28_96_e8_cf_db_0b_07_8b_68n,\n 0x1f_1b_20_78_b6_0b_0f_ce_07_82_4e_2a_2b_c8_ca_e8_ee_67_35_14_b0_07_0a_8b_45_71_0c_c7_8c_bb_99_42n,\n 0x2e_b1_55_95_66_c5_36_dd_bc_31_6f_64_82_d5_1f_a3_40_55_76_57_70_0f_5b_8a_84_6e_81_2a_0e_d3_34_d1n,\n 0x1c_4d_bd_c3_35_cf_67_64_35_52_08_b4_c9_d2_43_d3_45_41_d6_23_c6_69_de_c2_c3_ba_06_6b_be_af_67_73n,\n 0x23_74_a6_b2_da_6f_8c_ab_8e_5c_fe_8d_80_5d_d3_a2_df_ca_1e_8b_7e_ba_5d_c8_57_40_21_fd_12_41_e3_b4n,\n 0x19_dd_34_25_33_cc_c6_03_a9_97_38_e3_fb_5a_56_9b_94_ef_71_b3_e4_9f_90_fb_87_4f_61_61_73_30_72_f4n,\n 0x21_7d_66_db_6c_7f_b3_ef_fa_50_88_00_58_7d_2e_b3_c6_d0_3d_83_85_13_2f_2f_cc_e7_f3_5f_27_05_cc_cfn,\n 0x08_15_fb_85_91_fe_01_03_8c_d3_a3_b3_8b_23_6f_9e_fc_a7_7c_61_8d_3b_fc_6c_2a_7f_a8_92_96_c7_e6_4fn,\n 0x2b_b9_43_b4_0c_2b_d4_56_a6_c1_78_53_b1_ca_88_eb_0f_f3_6f_59_74_b2_ff_9a_5f_50_93_e9_bf_63_a1_6fn,\n 0x11_a5_15_3f_ce_65_95_13_ee_7c_b9_97_4a_e6_cb_a5_81_e3_b4_cd_14_57_0c_57_09_fe_c3_d8_d3_fc_82_e9n,\n 0x1b_72_bf_d0_76_35_d8_50_1b_2e_ff_87_85_a2_49_5b_ae_74_c7_65_3c_f9_0e_6d_5c_9f_14_44_26_83_6d_f4n,\n 0x14_90_2c_07_00_ee_c8_97_ae_17_8b_a8_ca_f8_50_d7_93_f1_d8_75_12_be_a0_ec_ea_39_cf_6b_1f_ee_23_3dn,\n 0x09_c1_38_c6_e0_a6_16_a4_9f_f9_0d_43_a6_b0_43_f3_b7_45_b7_88_65_85_6d_c4_c1_a4_5e_2f_d8_4c_b3_f4n,\n 0x05_b5_8a_3d_ce_57_b2_81_a2_71_d6_98_95_05_2d_88_74_58_a7_15_78_3e_83_17_e0_24_a6_1a_35_ec_10_bcn,\n 0x2b_e8_d2_95_25_c0_cf_dd_5e_6b_31_25_e3_bd_e3_bf_55_8e_55_fb_e8_67_f0_24_45_7a_96_76_54_74_d0_37n,\n 0x06_1d_72_f7_8f_1b_a9_dc_6b_4d_7f_77_84_22_5d_6a_81_bd_fc_1b_5a_d6_c2_43_69_f9_c0_56_05_23_d9_adn,\n 0x0b_f1_8a_ef_ca_cf_fa_bd_f4_11_2e_dd_ad_ca_61_45_73_8b_48_03_b3_61_45_bb_95_16_db_50_1a_06_92_e9n,\n 0x2e_73_dd_10_5f_a8_b2_ec_93_1d_8c_df_29_ec_67_9e_3a_98_01_a9_30_71_a7_d5_ea_30_65_92_55_f0_3b_c6n,\n 0x0f_84_40_ef_66_7c_9a_e8_13_37_ba_5d_8c_92_7a_53_47_de_72_96_86_0b_21_1c_ad_1e_cb_fb_5d_35_98_efn,\n 0x00_4d_30_3b_2d_ea_62_7b_27_31_be_83_f9_3a_c3_4e_7d_14_d1_78_a1_38_00_55_8c_a7_39_63_95_eb_11_8fn,\n 0x23_45_41_ad_72_04_0a_70_da_29_96_a3_52_69_23_0c_94_69_9e_ef_31_3a_4d_48_05_08_00_8c_bc_3d_37_c1n,\n 0x0d_12_3f_1e_72_d2_6b_92_bd_d8_fd_73_d1_42_86_c3_12_ad_4c_23_ac_b4_6b_2e_08_c1_57_10_44_09_e1_74n,\n 0x2f_b3_60_77_6f_0d_e7_9d_70_98_ee_7a_a4_12_3c_05_ee_6b_05_a8_be_46_0a_77_4f_3a_04_8e_13_85_45_bbn,\n 0x03_68_5c_07_94_34_e1_67_27_6c_57_d3_cc_79_70_3b_7d_fd_c4_1c_15_6e_a1_e8_b7_f9_9b_69_56_a5_53_26n,\n 0x26_0a_f0_e0_ff_fc_c9_77_2c_16_31_b1_79_34_45_66_b4_7a_aa_da_36_81_eb_90_34_c6_f7_5c_37_05_c1_c7n,\n 0x28_62_b4_13_74_f8_9b_69_52_74_b3_3b_77_3f_25_54_91_6e_2b_ff_9f_f6_72_54_5f_c2_f4_95_63_f6_27_67n,\n 0x02_a9_91_2f_e1_70_31_02_27_18_9e_a1_e6_91_d0_36_2f_18_b3_8b_40_0b_0e_ff_19_2c_a5_95_13_eb_a8_d5n,\n 0x08_e5_13_ad_e6_94_a0_d8_ac_1f_3e_bf_1a_96_44_0d_32_c7_13_d5_05_8e_12_24_e0_70_34_8c_28_1f_4a_6fn,\n 0x14_0a_4a_43_1e_2e_e7_94_00_ed_74_65_97_8d_84_77_32_13_c6_28_26_4f_f8_0f_21_ac_7a_6b_67_3d_09_abn,\n 0x29_6a_f4_d0_19_cb_5d_f7_d9_59_b2_9d_54_9c_3f_07_12_02_b4_eb_a8_b5_3d_c5_ee_97_9e_d1_43_37_79_27n,\n 0x01_83_2e_28_4a_7f_4c_81_61_48_82_b6_93_9f_c0_f1_85_57_3b_d2_02_3e_3e_50_57_65_47_0b_b8_12_b3_49n,\n 0x1a_84_d5_6a_67_bf_dd_3d_96_5a_bd_cd_32_9a_a7_8d_4f_e9_34_34_49_6f_2d_10_38_61_fd_19_d6_6d_72_60n,\n 0x04_0c_b8_28_47_77_39_27_d2_ae_fd_c0_74_89_03_7a_9d_1f_76_31_ec_a7_5c_9f_b0_dd_a0_cb_9d_bd_e1_43n,\n 0x01_0d_cf_08_4c_c2_9c_b7_ca_ec_f2_6a_a6_33_bc_e4_ed_2b_01_9f_28_87_ce_e7_b1_a7_8f_89_d3_fa_be_2fn,\n 0x07_ed_c2_2a_09_11_ea_21_44_25_ef_54_2b_77_6d_b2_3b_0f_e5_81_78_10_d4_0c_72_ca_98_aa_bd_9a_fa_83n,\n 0x2e_ea_4a_b0_8a_ec_77_5f_21_48_47_9e_a3_6f_bb_96_93_6d_a5_8b_a4_8b_d1_d2_d3_ac_d4_81_73_aa_ab_e7n,\n 0x1e_40_c0_e8_25_7f_e4_a6_10_05_cd_cf_ad_14_8c_f7_f4_7d_1b_5c_fd_df_aa_08_27_38_69_55_18_24_5f_19n,\n 0x23_a2_78_09_58_3b_d1_ea_51_f4_36_de_54_43_e1_08_f6_9d_44_cd_f5_1d_c1_f0_3e_21_94_8b_49_80_b8_76n,\n 0x2e_46_52_b0_44_db_fe_40_e6_3b_6b_23_2f_cd_5f_3f_39_ab_fb_d2_05_1e_e6_8a_dc_75_40_80_d4_92_50_a9n,\n 0x11_e7_ab_db_6e_cb_af_c2_e7_d8_cd_ef_e9_c7_b9_c5_04_75_eb_47_5d_b3_c2_ca_f7_f7_d6_7f_48_57_75_f2n,\n 0x19_9d_52_35_0c_c3_0e_8c_73_82_1f_80_20_96_f0_e5_47_a1_35_51_b2_7b_f6_b8_99_39_6f_63_ac_5c_f8_e7n,\n 0x0f_57_5d_6e_e6_7c_be_cd_98_34_56_24_e0_32_a3_7c_85_9a_7c_be_f3_0b_3f_dd_c9_49_cd_09_78_48_41_01n,\n 0x1c_4b_6f_9a_2a_e2_b4_18_e6_26_5a_cb_a9_c9_6b_06_18_4d_07_02_8e_5f_b7_84_f3_47_5a_e7_77_2f_f0_57n,\n 0x2d_cb_5c_f8_89_6d_e3_9f_22_8e_15_7c_0c_55_93_f4_62_6f_b9_bc_22_52_06_38_3d_b2_03_60_ab_f0_c9_25n,\n 0x13_40_ab_b9_f4_e1_13_18_6b_dc_26_cb_df_4b_cc_a5_0b_53_1a_10_7f_86_3c_a5_44_57_5e_3c_f8_70_f8_e1n,\n 0x23_68_e6_92_b7_27_87_cb_88_70_ea_88_8e_71_4e_00_6f_59_d2_b4_46_0c_fb_74_c4_8a_8c_c7_3b_1d_1a_5bn,\n 0x1f_ab_9a_dd_9b_aa_4a_4f_56_f2_31_65_77_5c_6f_2d_92_2a_76_32_a9_4f_96_37_4b_7d_c8_52_75_6f_54_b6n,\n 0x0c_7f_7b_82_30_0d_3c_6c_e3_f8_95_7b_a1_e4_ad_d5_4c_4c_01_5e_20_d9_76_5d_22_05_71_c1_6a_b8_68_0fn,\n 0x15_d6_3e_86_be_ac_d9_3c_60_83_68_8e_5d_9c_8f_3c_69_47_92_9f_9f_1f_99_ab_57_8a_4c_3a_92_2e_ff_03n,\n 0x0b_e8_43_ae_5f_9b_07_e5_25_72_17_8a_f7_da_e8_ed_05_d3_6b_12_c0_60_78_62_92_93_55_ea_74_02_3d_9en,\n 0x13_32_74_9c_52_36_94_cb_69_35_e0_96_3a_07_e8_1b_05_96_7c_e1_d9_50_c0_b7_31_05_8e_c9_2a_7a_0c_9an,\n 0x25_43_94_08_81_0e_07_4c_0b_dd_45_98_b9_81_5f_ee_89_2b_b9_5c_a5_10_29_ec_f0_09_bf_fa_5b_9b_96_82n,\n 0x05_7e_8d_19_dd_99_9a_91_8d_a2_9b_09_40_b3_83_ba_9f_d1_5d_b0_b0_f6_49_96_df_f6_7f_eb_55_f9_a7_42n,\n 0x1e_01_4e_37_e9_b1_17_cf_3b_48_70_d9_99_f2_b5_5d_35_34_d0_a6_be_98_e9_e3_57_fa_43_f0_1e_70_a2_9dn,\n 0x1a_4e_d2_4e_6e_03_ae_bc_d6_bd_b1_00_53_3d_c9_66_59_7a_fe_15_c8_51_b4_b8_63_f6_e8_89_08_4c_64_79n,\n 0x25_34_20_00_70_83_f1_aa_86_3a_d4_76_09_05_c1_03_9e_d4_11_1c_9f_05_3f_27_71_04_52_f8_3c_e3_6a_90n,\n 0x22_76_a1_44_19_71_70_9a_ff_e6_d2_a9_93_20_00_1e_c4_5e_c7_21_55_c5_75_dd_ee_ca_c0_e3_27_59_ab_06n,\n 0x28_95_7d_d1_21_8e_a7_99_fd_34_11_eb_19_32_58_53_ad_f7_ae_8a_e1_28_1f_75_33_02_fe_7d_31_df_a7_b0n,\n 0x2f_d9_25_72_6a_b7_94_c8_8b_d7_57_96_aa_3e_7f_1e_66_92_f2_91_4c_f8_02_26_7d_df_01_e3_79_02_a0_08n,\n 0x1c_f8_a5_c9_c7_6a_84_b1_47_c8_23_8d_92_53_cd_55_b4_7c_0c_43_d8_29_66_c4_63_6a_28_67_47_05_fd_9an,\n 0x03_73_cb_bc_30_6e_1b_ab_9e_70_77_36_87_15_e6_23_0b_4b_2e_2e_4a_1d_b9_c6_74_b8_c3_59_a4_1e_91_08n,\n 0x06_02_83_d2_fe_7f_23_df_f5_13_d9_11_0b_3d_c6_24_48_bc_48_f5_31_ce_0c_1e_ab_59_20_bf_23_29_0a_40n,\n 0x0d_ab_46_5d_6d_91_07_40_f3_3e_f6_cc_0e_ad_c7_1b_f8_11_9b_df_d5_a3_52_7d_c8_bb_fa_df_aa_40_26_3cn,\n 0x0c_ba_7b_cb_c8_22_4b_2a_8e_4a_ba_17_97_72_30_a6_86_cd_64_21_dc_0c_a5_34_6f_34_46_b6_24_39_c4_c3n,\n 0x1e_43_65_db_07_90_c9_c4_f4_45_b0_65_3c_46_6f_f2_1d_b9_6c_38_b4_07_6b_a8_bd_68_bc_b4_de_a6_91_1dn,\n 0x1b_b2_db_a2_19_9a_9a_b3_bc_86_ef_5f_9d_e7_f6_c5_ca_13_d6_0e_ab_42_ce_d6_8d_e9_8f_c6_43_80_0a_8dn,\n 0x0a_d3_c1_87_0c_6d_6e_f4_0e_eb_ad_52_12_3c_d1_a2_91_3d_9d_62_e8_0b_fb_ac_ae_81_2e_08_20_21_f9_can,\n 0x01_b0_98_c9_1e_7b_0c_bb_5c_34_58_80_77_c0_dd_f9_53_00_dd_f6_14_93_56_30_c0_ce_3a_26_27_24_53_08n,\n 0x19_fd_5c_0e_ac_14_fa_e7_59_8b_d4_ce_ea_3b_1e_29_98_b0_c1_68_49_3b_6d_72_ae_41_b5_76_e5_5b_9c_3fn,\n 0x0d_47_49_d7_9c_c1_63_f1_71_10_a4_04_a4_6f_e4_27_c6_43_4f_3f_e6_7b_7e_7b_4c_cf_a6_ab_95_bd_7e_18n,\n 0x1e_bb_fe_81_14_a4_1b_b8_09_e0_b3_33_99_24_12_32_eb_94_0a_d8_72_8c_8a_51_6d_40_ad_a4_40_db_fd_cfn,\n 0x27_04_e5_b6_13_3d_97_64_d6_d3_f1_7d_49_d8_33_22_3e_39_37_f8_0e_b9_fa_ea_bb_fb_a9_ba_f4_b4_c1_b8n,\n 0x21_65_e1_c8_02_73_05_b1_ae_0e_32_35_71_63_5e_5d_54_0d_13_d7_10_c3_f9_a3_90_b6_91_3f_14_d0_35_e3n,\n 0x2e_34_97_e4_d3_5f_da_59_6c_06_af_a6_3b_c3_a0_f2_e5_5d_4e_eb_a4_ac_eb_60_e6_50_81_ad_63_aa_8b_8an,\n 0x03_1d_a4_34_5e_ec_d6_db_6c_0f_7b_07_c7_81_5d_7a_dd_1f_e0_54_6d_73_8f_4d_79_ab_5c_57_aa_84_1e_dfn,\n 0x08_9e_ce_54_e4_7a_a5_c9_08_e4_3e_5f_08_73_7c_14_36_96_70_89_00_6a_ca_b1_c9_cd_19_ea_c4_a2_08_76n,\n 0x2f_53_c1_5e_2a_de_d3_3c_47_f5_5a_07_04_83_e6_cc_7f_38_21_fb_f8_aa_40_67_7d_05_52_ed_9d_10_d8_47n,\n 0x14_2a_a3_4f_4b_2e_8a_d0_df_7a_21_b3_e3_9c_00_c8_b0_aa_28_57_09_48_01_ea_af_d7_2b_ef_ed_07_7f_93n,\n 0x17_ae_a4_da_4c_7b_cf_0d_75_88_b0_14_eb_8b_40_97_9d_d2_72_5e_da_4e_6a_ce_33_19_82_46_7c_7f_f2_bfn,\n 0x0e_97_0c_19_d1_97_48_d8_c4_65_10_4d_8f_02_20_03_63_f9_a4_17_86_f0_2f_18_27_74_2b_20_dc_0d_17_27n,\n 0x04_bc_ad_9e_55_37_95_64_2f_59_ba_f7_14_a6_bd_b4_32_fc_45_a0_a0_b7_7f_1a_ba_3a_98_23_47_6d_f9_b9n,\n 0x24_2c_0b_fb_cd_aa_76_f7_15_db_d4_ba_82_5c_71_fc_fe_d6_71_c1_b1_90_1f_a4_84_c8_7f_81_03_15_d0_cen,\n 0x25_db_13_43_c2_41_04_07_10_23_fb_6e_d3_4d_99_09_07_83_11_e1_ef_e8_5a_f0_a1_1b_19_11_4f_a9_e7_90n,\n 0x2f_fe_4d_9c_42_0a_59_e9_cd_c7_c3_1a_b2_bf_35_18_7c_a1_47_cb_89_8a_39_42_de_b3_67_77_86_03_6a_80n,\n 0x12_5b_b0_3a_f3_e2_cf_18_bb_e6_f5_b5_90_eb_3b_f8_d0_d1_ba_63_be_69_64_83_e9_8f_28_3b_c7_cd_07_a3n,\n 0x08_16_be_42_74_5b_7d_bb_4c_ef_fe_5b_8e_24_ea_60_fd_8b_71_9d_eb_a5_00_37_ac_7b_75_94_87_45_c6_bcn,\n 0x11_11_60_f9_ac_f6_ec_36_0d_1b_6a_71_23_13_a0_db_cb_e2_3e_64_42_00_55_47_1d_2e_e4_c5_de_db_35_d4n,\n 0x13_77_97_8e_1b_1f_6a_89_25_fa_8e_7b_79_41_bd_f8_fb_59_ab_95_42_34_24_19_28_3d_82_03_43_5c_93_91n,\n 0x0d_ef_c1_d8_88_21_66_ef_3c_cd_e5_3a_4f_23_6f_ba_83_d3_84_62_19_37_ce_e5_7e_42_1a_51_3d_0d_33_97n,\n 0x2f_8f_a5_c7_8c_70_6e_3a_5d_4a_03_f2_a7_a3_95_30_46_d7_e9_4c_b8_8a_7e_f3_50_e6_7b_5b_a0_f0_de_bfn,\n 0x1a_2a_95_7e_c0_a7_23_da_61_c2_13_4b_ab_0b_f1_7b_eb_00_e6_dc_d8_46_90_c2_30_dc_b9_e5_8d_a9_48_27n,\n 0x1c_df_87_10_99_5f_5e_03_41_2b_4a_7f_69_95_32_f9_fd_01_f0_ea_16_7a_8d_fc_1d_df_37_e2_80_5a_dd_efn,\n 0x26_fd_31_47_18_28_c3_6a_e3_6c_27_b7_48_05_4b_0c_0c_4f_e5_23_9b_30_16_99_e3_76_5e_eb_ec_c1_89_46n,\n 0x07_75_d9_96_cc_2c_44_56_f3_03_a2_c1_f9_00_76_47_e1_1a_92_1d_9f_ea_3f_7b_92_61_43_b9_9d_2f_a0_ben,\n 0x01_6f_b9_33_77_08_ca_63_8c_df_da_91_bd_0d_ae_a6_b9_72_24_ef_7b_20_62_67_2a_dd_d1_bd_18_bb_89_00n,\n 0x2c_39_2f_be_7d_3f_de_42_fc_a4_f9_47_8b_b4_39_33_12_58_25_53_56_f1_84_af_6f_76_f1_19_05_41_17_d7n,\n 0x18_7a_2a_3b_f7_9a_69_fa_3e_50_89_ef_9f_1f_d5_6f_db_47_c5_5e_ec_e7_7a_a2_28_aa_3d_e1_b4_86_bc_b1n,\n 0x02_71_a8_63_a2_80_a3_26_41_ff_a3_35_10_b2_ed_d2_78_c9_86_30_35_95_32_f3_e5_06_b2_75_fd_5d_20_cen,\n 0x15_57_45_9c_9c_74_c9_4a_a0_0e_5a_f6_9a_1e_31_12_fb_69_53_7c_e8_97_ec_0c_71_89_58_d9_65_16_f2_abn,\n 0x2a_8e_26_ca_8d_64_7d_9a_63_88_51_6e_a9_dc_ff_89_08_3d_53_9e_58_16_8c_2a_50_c6_da_e3_0f_10_9f_21n,\n 0x21_cb_75_21_94_cf_43_f3_b5_19_42_eb_00_40_eb_a9_de_2b_cf_b1_c2_a3_fa_e9_79_24_b7_10_f2_68_32_cdn,\n 0x2c_26_da_f9_96_be_24_7a_cd_6d_d4_ac_ad_60_d3_8b_5a_47_1e_63_22_18_8d_02_c1_37_e7_cb_48_43_77_ecn,\n 0x02_40_17_6e_e0_e7_98_2e_eb_e9_2a_68_d3_e3_a3_8c_26_82_1a_cc_0f_5d_05_8c_f8_c1_37_bc_a2_d2_6f_1bn,\n 0x26_36_e0_97_3c_86_5c_1b_d9_74_dd_78_da_aa_8d_0a_84_cd_af_6b_e1_ad_47_ec_f2_a0_d1_8f_11_73_18_f2n,\n 0x19_e8_4f_4f_25_a7_99_49_60_41_66_1d_c5_d9_75_b6_81_f6_e0_67_44_ce_e8_9b_7b_e5_d9_fd_e1_74_4a_c0n,\n 0x0e_bf_89_06_4a_3a_f2_47_ca_1f_36_f6_f3_57_01_88_e2_71_e0_b3_26_c4_fb_26_66_4e_89_e1_45_4c_a1_10n,\n 0x25_c7_e9_7b_47_5b_e0_0e_8b_55_9a_38_c4_52_36_4f_4c_9c_53_1f_ec_b8_ac_69_8f_7f_d7_3c_e2_2e_71_ecn,\n 0x04_44_c9_9e_59_23_53_e5_ae_ca_a3_02_ad_d9_01_c1_4d_8c_55_27_0a_16_0a_fe_d4_42_9e_f5_59_8a_d7_4fn,\n 0x13_8d_b8_88_78_30_56_5f_26_93_d0_e0_f0_2e_4e_79_e1_44_96_7f_0b_a5_3b_03_51_9a_ba_76_4b_5c_99_4an,\n 0x24_d4_0f_46_21_14_fe_9e_e0_2a_af_cf_74_b4_fc_a2_4e_1a_e3_65_dc_75_c3_b5_2b_b1_3c_bb_b2_f2_1e_ddn,\n 0x21_e6_5d_6d_8e_e4_37_60_bc_a4_0e_73_0b_5d_f4_c4_cf_3a_8a_73_2d_b1_48_f4_b2_95_1b_4c_61_d6_8e_8cn,\n 0x24_8d_d7_96_69_ec_09_db_f0_35_0a_15_d6_c7_5c_6a_9b_da_ac_ef_ca_14_d5_13_00_97_8f_13_d1_ab_6d_1cn,\n 0x2b_82_38_c1_54_8f_9c_be_29_fd_35_cf_91_e7_b4_8f_0e_bd_a7_e6_39_ed_f6_9f_e8_d5_ab_a7_92_4d_53_62n,\n 0x24_39_fd_23_92_57_f3_81_81_c7_be_3c_f5_13_f1_bf_72_35_eb_a9_4f_6b_89_42_a9_4c_bd_de_cf_6f_62_f7n,\n 0x20_09_58_23_52_81_a6_1b_a2_c4_be_0a_a3_28_2a_18_c7_4b_6d_26_2f_5d_e7_c2_e3_3d_2b_b3_e8_93_df_ecn,\n 0x0e_1e_ca_5d_f8_8e_e5_f6_0c_fa_7e_1f_e5_be_fb_b7_19_fa_d8_21_1f_a9_b2_d0_2f_cc_23_31_90_c1_7f_12n,\n 0x26_b5_34_27_f9_b3_ea_2c_76_9d_9c_66_0f_c6_08_81_a1_69_c1_27_32_d0_01_b7_15_8e_e4_b1_b8_42_ca_24n,\n 0x20_f3_b3_f4_ac_af_e9_f8_af_3e_06_66_1b_3a_8f_77_8f_a2_81_25_22_b9_d7_0a_67_40_2c_ff_8d_b2_b1_b4n,\n 0x21_1e_5d_2b_39_d6_25_20_a7_a6_27_ec_e8_ca_cb_ac_9f_97_50_6d_ef_4e_c2_86_92_8b_a6_c2_7d_46_3b_17n,\n 0x0b_b7_43_ee_34_80_21_29_c5_56_73_1a_ed_9d_30_2d_cd_08_53_13_ce_57_2f_62_42_d1_38_32_e5_36_b4_b4n,\n 0x23_cb_26_61_b4_88_ee_71_e4_c7_53_ff_23_ae_4b_d2_5d_8a_44_09_4f_66_b6_53_29_77_e2_21_40_eb_a5_cbn,\n 0x03_a3_5a_a3_12_39_11_cd_b4_53_5b_ae_d3_35_9f_5f_6a_52_05_b9_c9_3e_f3_1d_35_32_3a_47_80_7b_8b_c9n,\n 0x27_80_38_48_a0_ae_d9_6a_93_fa_94_3b_66_35_e4_50_21_7e_13_7f_4a_de_74_a6_2d_79_17_32_27_14_b6_97n,\n 0x0c_b3_78_39_c2_c9_a7_ff_79_88_4c_be_c7_5f_41_e9_be_5e_47_c7_6d_61_53_82_31_bd_81_62_99_6d_6f_67n,\n 0x1f_00_26_d0_bf_1f_8e_1d_d5_42_3c_c2_fe_c1_fb_5c_da_a1_ec_dc_4c_3c_b2_18_db_ce_ef_77_c0_0d_2f_93n,\n 0x02_a7_d7_bb_97_0b_8a_6e_d2_ee_66_fa_bb_ba_95_6b_6d_a3_b1_00_f5_b5_fb_92_8e_ef_42_f9_70_82_73_c9n,\n 0x0c_fd_7f_42_15_e4_34_c8_da_17_ec_32_58_b0_bc_60_5a_d1_ab_2e_90_aa_49_43_51_e4_ee_40_bb_c4_91_fan,\n 0x18_0b_11_b7_20_62_2a_15_68_49_dc_6f_7f_6e_7f_57_16_59_be_69_68_22_30_c5_ed_9a_c3_39_70_0a_7c_den,\n 0x04_e9_6a_96_5b_ce_3d_3a_0a_24_a4_a4_57_c9_51_58_2c_87_13_49_ce_7e_ee_1a_ab_fe_57_8a_94_c6_50_11n,\n 0x15_93_1f_78_2b_45_f7_fb_65_6f_2c_db_d1_f7_70_5c_35_3a_23_fe_1d_30_a5_a4_6a_15_22_ed_16_0d_f3_adn,\n 0x2e_29_6e_57_c9_7a_53_09_ac_d2_6f_eb_f5_5a_c9_63_a5_44_4c_1c_5f_70_3a_d8_8a_0d_7b_97_b9_dd_38_b1n,\n 0x26_15_7b_ce_b7_8e_84_6b_bb_26_2f_9a_1e_06_d4_27_1b_de_5a_5b_ce_8f_04_19_95_2f_97_ff_d1_3e_ac_a8n,\n 0x21_94_eb_89_84_7d_6b_0f_18_97_f6_75_f1_9c_0c_56_b6_1b_13_24_8e_ff_3c_a3_6e_34_fb_9d_1c_79_ee_43n,\n 0x23_50_bf_35_47_76_56_89_91_51_ad_7d_de_96_ea_78_57_e1_55_01_44_70_08_da_b6_b3_d2_7c_8f_fa_27_4fn,\n 0x1a_48_6f_0a_e5_91_ca_cd_af_09_c5_8a_49_c4_d1_79_54_05_43_53_40_81_9e_00_3f_04_69_d1_10_b7_75_2bn,\n 0x1b_56_dc_f7_6f_b2_3c_c4_a8_34_d4_55_a4_06_5e_13_35_71_40_2b_7d_f3_09_d5_9b_c3_10_5d_42_a8_c3_01n,\n 0x1a_74_9d_79_64_af_0b_72_02_91_3e_f2_04_c6_53_f2_b4_bf_b6_5c_ea_b7_b6_85_23_3a_b5_9c_e3_bb_69_25n,\n 0x18_ae_59_00_73_f9_69_69_6a_f7_62_ff_a4_e8_f0_eb_bf_97_f8_cc_78_7e_37_cd_dd_1f_32_1b_e3_be_ad_bbn,\n 0x21_c4_7b_27_5d_82_dd_e6_46_0d_5e_76_9a_99_42_11_44_b1_c5_a9_da_59_29_4a_de_9c_bb_31_71_03_f2_49n,\n 0x04_73_dd_bd_52_e7_37_e5_27_36_4e_8e_b6_32_07_97_5c_38_d5_fd_6c_c3_2b_27_21_02_b0_82_cd_15_18_fbn,\n 0x0b_12_fa_c9_5b_6d_3a_88_1d_89_26_57_c8_42_4e_64_5a_c4_e6_b0_05_15_f9_02_d5_94_57_43_02_b2_6e_02n,\n 0x08_ae_76_16_a2_60_cf_66_57_f8_f7_3a_c2_84_58_8d_2c_5f_07_ff_42_5d_83_7a_a7_cd_ce_f6_3e_3e_21_03n,\n 0x03_9d_af_68_76_28_0b_80_e8_73_bf_2a_32_fd_28_34_a8_3c_69_75_7b_ad_d5_8a_88_8e_f8_19_e9_26_ce_28n,\n 0x25_e7_b1_d7_47_0a_3c_75_f1_3f_0b_56_54_6c_8e_09_f2_d8_ef_ef_f0_6e_f7_66_f9_c7_83_ca_86_9d_13_0dn,\n 0x1e_8f_d3_63_4c_3f_f7_64_18_4d_03_43_5f_98_58_4b_11_b5_b1_5a_eb_9c_75_26_2d_a3_f1_ea_2c_2a_9e_7an,\n 0x24_1d_cc_51_ac_37_80_8a_41_5d_d1_e3_c2_81_f0_5a_ff_11_78_9d_c0_ca_fd_d7_7a_35_48_4e_09_93_f9_a4n,\n 0x1f_fc_31_53_c5_6e_f9_75_59_32_ce_a2_be_05_73_74_9b_da_fe_1c_4f_a0_78_1a_4b_8b_40_78_ce_9d_75_47n,\n 0x17_63_0d_62_d9_a3_e5_10_c8_8a_4d_43_c3_60_f9_2b_c0_fa_00_b6_60_31_ad_ec_29_bd_95_43_fd_3a_17_een,\n 0x29_80_40_0e_dd_1d_74_e3_d6_9d_b5_45_8d_2c_cd_5f_ab_db_23_6e_c1_6a_82_a4_30_1a_0a_b5_9e_a4_a6_e9n,\n 0x30_34_fb_24_36_61_23_ec_6d_ca_fc_ad_35_72_6d_bf_b1_61_94_c0_36_dc_d6_48_fa_69_43_9b_fc_d0_0c_d4n,\n 0x1a_a7_e8_f4_18_9c_a9_df_f3_db_2a_b7_64_8b_e0_a2_39_29_95_ce_46_04_1e_04_68_0d_ca_8a_d7_23_2d_f0n,\n 0x1f_a1_95_f8_34_a6_9e_62_37_2f_60_eb_49_7d_a1_67_64_6e_ae_14_15_3d_80_3b_39_dc_5d_11_f5_d7_80_0bn,\n 0x0f_23_f1_c7_4d_5f_bf_61_95_ad_5a_6a_ee_5e_56_99_3c_54_77_e8_45_3f_5b_93_a0_d7_ba_fd_33_30_36_d3n,\n 0x01_65_56_fa_c9_34_8a_73_5a_b5_0a_a0_89_c9_71_51_b3_ca_af_0a_20_a3_4f_b9_d9_37_05_05_a1_51_57_29n,\n 0x23_d9_2b_79_36_48_11_0f_c5_ae_ef_06_33_f0_c7_7c_ac_b0_db_bc_a1_87_9b_8a_6f_6e_5d_f4_45_e5_f7_0bn,\n 0x2e_4c_10_ec_5e_65_e2_f2_39_bb_c4_3c_13_03_1d_f2_68_6a_b4_0f_d7_9a_30_4b_05_d6_11_b8_23_f2_3b_73n,\n 0x12_41_8b_bf_d7_7b_63_ad_5e_16_86_4a_d9_c3_2f_fb_fc_5a_3d_d9_b7_8e_c2_b7_93_29_fe_5e_0a_8d_29_53n,\n 0x1e_4a_8a_ac_e1_5a_bc_1d_5b_76_a9_e8_48_43_1d_2c_06_a7_8f_72_b6_be_bb_12_93_e6_c5_8e_51_85_69_6dn,\n 0x0f_3e_96_10_7d_ec_db_d6_87_2c_20_ea_09_ac_f9_2c_df_17_a3_ee_1d_13_31_48_80_92_d9_61_76_de_b7_55n,\n 0x01_2c_37_80_20_7f_39_5c_c2_1d_eb_0a_bd_95_16_81_ee_a3_24_98_dd_ba_6c_e8_97_a8_f9_f0_c2_35_70_67n,\n 0x13_ea_b1_b4_e6_72_ba_1b_1c_1b_b9_01_76_93_01_f1_e5_65_9d_03_ea_10_c6_1d_e2_47_7f_f0_ac_22_14_21n,\n 0x20_dc_66_4a_bb_20_b7_45_6c_06_62_9c_e3_7a_1e_cb_1a_27_a4_e8_b2_4e_31_b4_8b_9c_46_35_aa_30_32_3en,\n 0x2c_6b_1e_2c_fe_a7_8e_2c_36_78_5e_76_a8_cf_b1_b0_57_e9_47_1f_24_f5_b3_91_17_5c_3d_ec_b0_1e_00_0fn,\n 0x18_8c_92_62_55_f5_b7_af_3d_a9_63_55_72_9c_2a_86_70_ab_4c_2c_70_40_04_81_b2_ac_90_37_40_e0_c5_abn,\n 0x2f_99_13_20_8e_09_e3_d6_e9_e6_fb_a6_38_4f_d0_76_ab_89_f2_66_29_76_e3_e3_0e_08_70_bb_30_eb_54_f2n,\n 0x2b_33_80_3d_90_88_97_06_e7_14_f7_20_b5_62_8d_26_fb_60_b5_45_a1_f3_e9_ce_49_a6_ae_91_2b_02_40_86n,\n 0x26_cc_ab_c1_0e_b0_43_27_cb_5c_c3_dd_e2_ab_b3_6f_09_70_86_c9_7e_73_8c_13_3c_9f_57_07_7e_74_8b_09n,\n 0x1b_16_ae_0d_7c_54_40_8c_b7_5f_d9_31_f2_46_75_1f_2b_0c_3d_c2_0d_79_e8_2a_25_31_b7_6c_22_b4_d5_dfn,\n 0x11_d0_bb_46_1b_d8_af_28_44_f4_9f_0f_84_0c_94_ef_95_18_b2_51_13_44_74_2d_1f_54_38_fe_3d_41_5a_e4n,\n 0x23_30_31_84_7b_47_6b_ea_d0_11_8d_3d_b3_38_e8_91_33_ec_42_0d_67_3e_50_4a_d6_47_25_9d_f6_55_57_1en,\n 0x1f_84_e9_78_95_be_e4_38_eb_3c_92_dc_9b_18_46_c9_ad_29_c1_64_38_7b_06_ae_b6_ed_18_41_ed_8c_4d_can,\n 0x27_7f_7f_9b_54_2f_0c_2b_b5_f4_5b_ed_05_4f_09_62_45_36_01_0c_3c_f9_45_2d_22_73_19_33_27_f8_01_d6n,\n 0x1e_fc_9c_90_69_e5_06_8b_aa_c1_3d_2e_66_45_64_1b_7d_27_e8_0f_c2_30_77_16_15_35_c4_46_82_ee_57_a9n,\n 0x0d_6e_c4_77_76_1e_2e_fb_ac_4f_14_b3_bf_3d_52_57_a9_9e_64_c3_f2_5f_e1_04_fa_f9_88_b2_0f_e5_ff_44n,\n 0x0e_0e_7d_7c_55_01_99_9b_7d_16_17_3b_59_b7_ca_e1_f2_03_be_f2_1a_eb_f0_02_51_88_14_39_cc_f9_30_13n,\n 0x21_7b_ef_2f_4f_12_c6_dc_c9_1c_20_58_a2_33_91_cb_77_de_53_ca_6e_44_dc_dc_6e_a3_d3_6f_ea_32_6e_a6n,\n 0x05_78_0c_88_ad_f0_15_31_b5_0f_81_7e_3f_e4_44_47_d2_9b_35_aa_8a_38_9c_71_e8_cf_12_26_ac_ef_68_ban,\n 0x18_73_38_87_a6_b2_b3_b4_c9_0d_8e_49_90_19_6e_23_44_5e_47_d7_ea_59_39_eb_fb_89_a3_ee_3d_67_b4_bdn,\n 0x20_ba_ce_63_ac_fc_ae_0b_1c_9f_2b_ee_24_b8_e9_da_85_ba_59_7d_37_b0_90_57_20_c4_f1_5d_b2_31_b0_7an,\n 0x16_6e_a5_95_37_5a_67_86_ac_52_7e_e9_ec_ed_73_ed_6b_f5_50_87_6a_bc_af_3a_c9_2b_42_c8_08_b0_0d_8fn,\n 0x30_42_62_a9_ef_f4_04_0a_cf_43_e3_22_d6_f5_26_76_ae_2f_85_3e_c2_e7_a8_0d_b0_0c_48_8c_f9_17_c7_4en,\n 0x22_6b_ac_70_50_16_6e_5f_6d_b7_8c_d0_b1_2d_36_f3_05_b6_e8_c9_a0_55_11_4a_d7_70_9e_6f_57_24_5b_6bn,\n 0x26_b2_f5_39_c5_73_82_9f_6a_ca_91_ba_a9_54_50_5b_c5_c3_eb_4e_1d_f1_d6_38_58_27_17_fb_df_23_88_ccn,\n 0x06_a0_fb_f4_cd_52_e9_3b_a5_e4_c6_c4_af_65_db_02_ee_96_29_7f_8a_d2_00_f2_f1_cf_f2_52_e7_69_b5_51n,\n 0x2c_b9_c2_41_12_d3_53_41_ac_ea_c8_83_60_fb_52_89_24_e5_8b_6e_ca_c3_21_b9_fb_29_e6_aa_33_68_ff_23n,\n 0x20_e8_8a_4d_60_75_26_dd_07_fe_08_a3_55_2a_44_66_91_29_eb_87_fc_c0_b1_3a_ac_8f_e8_af_d9_30_15_21n,\n 0x15_44_64_9a_2b_d7_3e_3b_a7_2f_39_6d_f9_1d_d6_54_01_dd_8f_af_51_de_32_5f_ba_ed_b9_d5_36_ad_94_fcn,\n 0x19_80_07_74_57_99_57_12_c4_4d_a7_e1_77_13_25_8e_3f_8e_b3_54_bf_d8_0e_d9_ea_f3_ec_ba_f6_96_01_05n,\n 0x25_d1_d2_2f_f1_3e_77_05_d3_c0_85_f9_7f_c4_e4_f6_91_4b_82_ff_aa_5d_20_91_ec_64_da_c4_23_76_5e_f7n,\n 0x2f_ec_99_0e_f5_56_ef_e1_03_5a_46_4f_f5_58_1e_74_06_74_45_cd_54_ab_ca_f6_b8_c0_39_9f_e0_d2_4c_fcn,\n 0x1b_d9_56_35_06_d9_54_4e_f3_e4_83_0e_13_54_50_12_c5_79_37_9c_2d_cc_13_30_41_6c_4a_e4_9b_c4_ec_61n,\n 0x00_af_fc_d1_7b_a6_00_3c_56_df_a8_55_71_fc_29_73_7b_22_5a_80_d4_80_e7_dd_7e_de_c0_1f_14_f2_30_10n,\n 0x23_67_0d_ba_ef_96_68_81_f0_7f_91_9a_2d_88_31_28_c7_b2_3c_f7_67_a4_77_b2_b2_e0_76_2b_c0_db_c1_8bn,\n 0x1f_93_a5_32_91_73_94_c7_e2_2f_d1_7a_be_ea_63_89_c6_6f_d7_ae_2d_d9_f0_2f_86_0f_6d_96_94_7f_0e_ddn,\n 0x2d_e4_2e_9f_53_7b_7d_61_b0_21_37_71_c0_e7_4f_55_55_12_be_07_b6_a5_09_34_73_4e_2c_5b_eb_40_be_37n,\n 0x25_c5_57_f4_5b_99_78_1c_d3_7d_3b_b2_29_31_66_2a_67_f7_8b_37_78_2c_88_5b_45_6b_b9_6d_55_e8_84_04n,\n 0x20_74_c8_b7_09_70_5c_98_88_53_8a_7f_8a_3c_4a_ff_64_77_31_bd_16_f8_e2_54_fa_74_ea_9f_2b_e7_66_2cn,\n 0x27_38_35_59_56_29_81_38_94_9e_44_21_71_d6_a4_e4_b7_4e_f2_06_57_40_db_7c_fc_3a_0b_60_fd_57_3a_cbn,\n 0x13_d3_6a_d0_a4_eb_eb_81_96_97_78_64_96_59_c6_5c_b7_d0_c4_1c_c5_19_87_1f_db_71_a9_ea_6a_0c_aa_56n,\n 0x08_a2_c1_8b_a4_13_81_34_8c_1a_cf_bf_96_17_71_68_06_b4_62_a1_69_1b_c2_e3_43_b7_9b_80_85_e3_76_b0n,\n 0x05_90_92_fc_39_5a_ed_28_58_07_bb_f5_57_ad_9a_10_41_f5_9c_07_98_22_b1_08_84_57_88_2f_ee_7b_61_2cn,\n 0x16_19_24_15_1b_5a_5a_d2_d8_ca_c1_19_52_2a_99_1a_90_6f_15_e8_53_1d_c7_05_67_f6_b2_83_71_cc_24_e3n,\n 0x1c_68_ca_8f_7a_a1_76_59_07_54_05_ef_63_41_b8_e6_9a_29_8b_9a_4d_72_f3_bb_85_4b_30_9e_4b_a8_7a_1bn,\n 0x27_f5_d0_3b_ca_1c_82_07_f7_23_9a_4b_2c_f7_3a_e5_59_a1_5a_a3_7e_7b_dd_df_3a_ab_05_ee_c5_ce_55_92n,\n 0x0e_cb_ff_48_46_96_2a_97_5d_34_7e_a9_a8_fc_46_5f_b4_68_61_55_76_22_f2_c2_56_4a_7e_63_98_33_c1_69n,\n 0x27_7c_4d_e2_36_3d_8b_5b_45_6c_fc_5a_7f_f8_e4_6f_f2_ec_8d_aa_59_85_5f_5a_d6_4b_c0_52_1f_3a_c5_67n,\n 0x1b_11_86_2c_52_ac_d3_51_b7_a4_64_79_3f_4f_bb_57_fe_c9_9f_83_2b_63_22_6f_95_d1_75_c8_d2_fc_08_b2n,\n 0x06_a7_19_c5_84_c7_4f_fb_dd_72_18_eb_56_5c_b4_c8_bd_86_c9_2e_3d_fb_3c_73_e1_52_72_01_aa_51_23_4en,\n 0x23_0e_4a_de_ec_b7_99_87_7f_7c_e9_a5_8c_83_6b_99_d5_33_58_4a_19_5c_1d_77_a3_13_ab_e1_c7_d1_26_bdn,\n 0x10_b1_09_b8_64_80_9c_47_67_a1_33_cc_e6_cb_ad_6c_88_62_81_73_b8_ea_51_e8_cc_a8_58_30_ca_7d_e5_22n,\n 0x0e_21_11_79_70_dc_fb_d4_b1_52_6b_25_36_36_f3_77_53_8d_3b_4f_aa_eb_5a_8b_24_bf_62_00_d1_4c_c5_91n,\n 0x26_67_34_99_78_40_13_62_f6_b1_79_39_ee_b0_e6_4f_f5_56_07_eb_db_35_c7_07_1d_b4_6b_b3_e7_ba_47_78n,\n 0x05_00_0f_a5_fd_a5_05_e0_29_a1_3b_fe_30_4c_26_7b_0d_86_c7_2c_03_9b_ab_f6_d3_ff_02_ee_24_6b_e0_2en,\n 0x26_4d_9e_09_4a_ed_5f_41_a6_02_42_22_0a_34_a2_84_08_90_87_b2_43_6a_9b_fc_e8_17_4c_c9_be_8c_2e_20n,\n 0x08_07_6f_9c_47_43_de_61_30_ff_62_2c_f4_01_ed_d2_c9_2f_24_bf_e1_14_f3_c5_e7_24_89_17_46_31_5c_47n,\n 0x13_23_70_ab_dd_bb_0b_1d_d5_7f_2a_52_0c_25_33_6b_d7_ce_de_94_b9_5b_bf_5c_21_51_d6_d8_8e_64_1b_64n,\n 0x08_ff_11_16_b7_a2_27_bf_df_d4_46_5a_67_89_08_82_b6_15_c8_c4_c1_7f_28_d8_d2_49_58_ed_f6_02_dd_cbn,\n 0x2b_cb_0b_0d_b8_b9_e3_e0_2b_7e_9c_1c_94_60_fd_d9_c6_cd_98_56_23_32_e6_48_d8_a3_e0_ab_94_59_75_20n,\n 0x12_ea_68_ce_68_81_be_ca_d7_f8_a6_b1_17_b0_3a_b9_76_f7_ab_d5_97_f9_03_b0_bf_23_0d_20_d2_1a_94_3an,\n 0x27_43_9c_98_a7_66_88_06_7a_09_7b_19_b6_fd_d7_d7_8d_5f_88_e2_74_e0_d8_fe_a5_ea_6b_74_06_fd_da_7fn,\n 0x02_f4_0d_0a_d0_5f_56_52_e3_1e_f9_44_0a_d7_1e_bc_84_19_e3_93_49_39_37_f0_5f_00_49_9d_02_a9_9e_36n,\n 0x2f_bf_04_28_43_27_ee_4f_68_0f_06_bd_39_0e_30_9d_0d_13_ac_c7_4b_9c_5b_14_b6_30_59_b8_cc_7a_bf_f5n,\n 0x1b_e6_86_d5_3e_2a_8a_d5_7a_82_8b_06_51_42_5c_fc_69_78_c7_02_7e_db_f2_47_f6_b6_72_3c_21_df_86_e7n,\n 0x26_83_b4_25_e8_5a_50_8f_96_85_2f_14_b4_22_0f_cf_e9_f7_ad_8b_17_bf_ef_c0_e3_48_c4_7c_a7_8b_b5_7fn,\n 0x16_da_ce_9b_2e_80_12_e3_1d_b1_c7_eb_e6_72_d8_6b_be_61_a1_aa_3e_16_93_e0_ed_df_c0_de_0a_9d_d9_51n,\n 0x27_a3_21_f8_c7_d3_c9_02_2e_96_2f_7f_ef_2e_3c_84_8b_45_39_db_b7_5a_a1_39_f3_04_30_fe_54_5b_ce_dbn,\n 0x06_cc_d7_21_0d_ee_1d_6b_0e_22_b7_9e_12_d1_90_82_d8_07_8b_78_8d_71_00_7b_95_e7_a7_74_ed_86_a6_51n,\n 0x0a_41_dd_42_22_16_53_75_2b_ef_35_0f_6d_74_a9_17_b6_cb_b1_fd_76_a3_a1_21_66_f4_d0_be_97_8e_40_26n,\n 0x22_0a_02_88_1e_4d_47_ac_94_d9_50_cd_f8_38_62_74_d1_78_2e_27_cb_d0_d8_45_97_8d_ee_c9_12_98_f1_65n,\n 0x0e_21_55_a5_45_fe_5f_3c_bb_63_97_60_65_89_ea_c1_9c_d9_26_39_33_9c_6b_01_72_98_a4_ad_34_08_b4_b9n,\n 0x0f_0f_19_c6_29_1e_51_54_6a_26_7c_60_cc_77_4e_5f_b9_d0_88_ba_c5_30_78_2d_89_1e_c1_af_4b_84_70_73n,\n 0x0e_92_5b_cd_1c_6d_db_4a_3a_1c_67_ec_8d_ee_fb_d4_0c_53_c0_d3_3e_7a_ee_f1_b4_67_95_ae_d5_94_3c_9dn,\n 0x2a_d0_00_b1_74_8a_bb_81_2c_d6_e5_41_12_86_b9_ff_3e_f0_a5_bd_3d_25_9a_36_e4_5e_f0_5b_9e_b5_be_ebn,\n 0x0a_65_aa_23_2d_32_ed_6e_8d_e6_3d_1c_df_fe_bc_2f_3f_a6_16_46_5c_27_aa_f9_7e_8c_d3_dc_ff_64_86_52n,\n 0x02_63_d8_47_0a_b4_b1_c6_1d_74_d8_e8_96_24_2f_4f_26_1d_cb_16_7a_3a_06_92_38_93_d7_cb_2c_93_d6_a1n,\n 0x29_01_d9_46_ad_dc_94_b0_40_fd_58_00_4d_9a_5f_8c_d1_92_65_40_c7_a8_61_2c_ec_1c_58_cb_60_c2_b3_a5n,\n 0x18_89_cf_a8_20_9f_49_52_df_90_22_db_9d_c5_83_b5_71_7a_06_96_da_41_ce_e6_49_37_d0_cd_63_21_e6_93n,\n 0x23_60_64_d7_1c_b6_c6_4c_84_74_7a_c2_5f_cf_8d_88_15_02_e5_f0_3b_ff_87_56_1b_85_a1_16_b1_f3_9a_can,\n 0x2f_f7_a1_74_ff_ce_c2_98_62_e0_4f_5d_bd_c7_3e_bf_36_61_57_00_33_57_62_90_c0_c1_f6_cd_8c_ed_27_aen,\n 0x19_e7_24_a1_d7_42_ca_b1_03_45_5f_00_40_ed_f7_45_a2_69_6a_71_08_4c_93_e3_22_71_54_50_dd_4d_6f_5bn,\n 0x03_ee_d3_89_2b_6f_0e_6c_5d_a1_05_9c_5f_37_93_98_58_35_aa_28_35_00_a8_12_99_04_a9_4c_87_f1_61_bfn,\n 0x08_e2_b8_27_3b_fa_30_c1_ac_85_03_06_d9_1e_46_8a_9e_8d_05_09_2a_ee_4c_bc_80_c6_87_24_84_63_ba_30n,\n 0x07_ad_cc_a7_6d_83_37_72_88_39_a1_b6_ac_3b_3e_d4_2a_fb_87_d7_2a_f9_8f_52_f4_16_f2_ec_58_b2_8c_ecn,\n 0x17_1e_f3_78_96_ba_e2_b1_02_0a_0a_58_39_bd_51_78_4c_e1_1b_b4_23_7d_54_8c_17_11_69_d3_2f_a1_9b_40n,\n 0x20_ff_df_cb_86_f4_d0_05_06_4e_db_c2_96_91_8c_33_2d_32_fb_ef_f1_72_9d_e5_05_6a_26_ab_bc_3a_35_fan,\n 0x08_ec_d7_a6_f1_73_5e_ed_86_ba_a0_94_e6_08_f4_88_f3_8d_bb_39_8f_cf_ed_4b_99_43_83_a0_ca_8e_46_47n,\n 0x1c_3f_5d_86_e5_92_1f_de_98_90_18_9f_1d_8c_61_87_54_28_86_00_e6_92_8b_c1_82_ac_4d_5e_4c_9f_0c_cbn,\n 0x29_c6_11_84_ed_9d_46_0f_33_75_58_a1_af_63_9a_a7_e3_c0_97_5e_40_14_ed_8e_bc_ad_4a_25_d5_1e_ab_f3n,\n 0x0d_ef_d4_5b_28_95_87_28_22_8a_db_b2_db_da_ef_6a_5e_9b_1a_64_90_2a_73_4f_40_2b_8c_ef_b8_ab_3b_56n,\n 0x0a_74_ea_22_d8_a0_93_36_06_06_10_17_9a_c1_d8_2f_ff_a9_49_2d_f7_6d_ee_d4_ea_60_e0_13_3b_08_11_a8n,\n 0x03_a3_7b_f1_2d_af_14_00_d2_97_ac_4a_c1_3b_a2_4c_17_dc_26_2d_b1_6c_85_23_de_ee_4e_0c_cd_e9_a6_80n,\n 0x11_fe_17_90_d5_ab_bf_59_35_ff_22_31_8e_4f_7f_fe_69_96_6a_da_2f_91_36_b5_4f_83_0e_ac_b0_a6_53_68n,\n 0x01_81_65_84_2f_40_63_75_f2_34_66_86_91_5a_fb_14_bf_1f_e0_56_4c_88_58_ee_3b_de_0a_ba_3d_e5_f6_8fn,\n 0x26_1d_b2_5e_7c_ff_5a_9f_b7_2f_27_6b_1f_92_60_b6_67_30_0f_b7_d3_61_b5_0f_d5_c0_e8_b6_99_5b_05_f9n,\n 0x2a_3a_c3_31_4b_2b_66_e7_96_fb_e3_6d_f7_78_c5_e4_69_72_32_0c_c4_3e_c8_07_04_88_26_b6_70_4b_a7_c4n,\n 0x23_ca_a4_b8_0e_cf_a9_9e_9d_3f_ea_2b_bc_1d_bb_f3_69_d1_bf_c8_93_7d_03_d0_74_06_1c_30_fd_8c_d7_6bn,\n 0x27_db_26_00_85_e2_24_89_8d_f1_45_f2_3f_63_5f_20_66_d8_e4_e1_24_e5_81_e8_c6_26_19_29_b1_df_e1_07n,\n 0x27_4f_6c_5f_d3_4a_78_4d_6b_91_5e_f0_5d_42_4e_e6_c0_ba_bb_f3_69_e7_9a_b1_38_b8_16_7b_56_18_ec_7fn,\n 0x2c_3a_29_e1_3a_84_d2_6a_09_11_c9_28_9d_af_1a_a4_cf_58_40_aa_da_07_01_d5_7e_23_df_c7_96_da_6d_a1n,\n 0x1e_a2_10_f2_00_1a_33_4d_3e_80_1f_4e_53_27_0d_42_da_7a_af_31_7a_55_3b_42_82_aa_78_ea_a2_28_2e_6dn,\n 0x25_4d_be_b5_28_84_b6_99_c1_ba_7f_a0_d6_e8_0d_61_09_03_b1_8a_3e_50_9c_36_35_1c_cc_3b_02_49_46_e3n,\n 0x05_9e_78_1d_65_89_6e_be_0e_4b_a2_6d_c2_f2_99_07_f4_7b_cd_ed_a4_a2_ca_2c_71_3d_85_05_ea_31_fd_5dn,\n 0x0b_5b_1c_ec_63_d4_2d_5e_61_5d_c2_69_b8_85_a2_4c_ef_30_3e_c7_8c_97_2d_d1_7c_db_b3_e9_15_cc_4f_fbn,\n 0x2a_7c_01_5e_9c_3b_2c_57_ca_8b_7d_26_d3_9a_1b_cc_85_d6_ff_ac_b7_d9_fb_d6_6d_2a_8f_1d_64_ed_0c_92n,\n 0x29_b7_36_b9_11_d7_1a_79_cf_63_d8_a6_f7_86_f1_1b_d5_ab_ee_24_16_1d_c5_67_a7_c8_51_ea_e1_e4_3b_51n,\n 0x28_57_45_a9_0a_7f_e3_d0_9a_f5_a8_08_70_4b_c6_9c_6f_17_01_e5_73_91_2d_f5_cc_1e_26_5d_59_6c_41_41n,\n 0x2d_90_1b_81_95_c3_c9_6c_8c_36_eb_99_fe_c0_13_4e_c2_b8_30_4a_e8_10_bd_30_da_55_4e_30_80_82_67_15n,\n 0x19_05_d3_51_83_55_ea_ba_78_59_b5_91_ed_7b_8c_9c_25_39_80_f0_45_0d_bd_f5_4d_7a_77_82_ba_05_83_92n,\n 0x23_e8_13_02_6f_c0_b8_00_64_d1_9b_5c_54_28_94_2f_df_7e_fe_a8_0b_fa_8e_c4_09_52_72_bf_db_7b_4c_9fn,\n 0x23_c0_a1_9a_25_2c_87_e6_b1_c1_c2_1b_1a_79_80_02_00_c3_fb_ff_3e_33_00_e7_e5_56_80_71_de_9e_fb_81n,\n 0x11_c4_ae_60_7b_ae_49_24_13_bf_62_cd_aa_2c_28_68_ed_1f_ec_6d_c0_63_1b_06_7c_a6_0f_ab_12_5b_9e_2an,\n 0x2c_d0_55_eb_b7_ee_46_86_36_5d_ea_45_0f_04_6f_f6_24_05_fa_e1_b1_af_c9_fb_01_70_7c_f8_1d_a0_e3_b9n,\n 0x05_3c_9f_ef_2e_02_1f_a9_a2_0f_ad_a2_2f_de_a1_50_5b_58_a3_15_9b_bb_47_33_7d_bf_79_1b_21_5b_14_52n,\n 0x0a_35_bd_74_e8_7c_ba_ba_ab_e8_9a_d1_31_9d_2c_9e_86_3b_4c_63_1c_21_93_8c_9a_53_95_bf_97_87_2a_9fn,\n 0x1c_11_50_56_53_9c_e2_0c_d5_a0_4d_1a_5c_43_e2_b0_0f_be_83_b2_59_01_be_36_f5_dd_c4_66_6f_c3_83_fen,\n 0x24_29_54_04_7e_57_72_fd_3b_de_d5_90_ec_8b_eb_4c_54_2f_2e_26_4c_8c_3e_28_4c_dc_47_35_05_c5_1a_90n,\n 0x0e_2a_bd_31_5b_47_c0_dc_93_84_9c_0c_df_26_7e_81_1c_bd_bd_b2_00_a6_e7_c2_b6_7e_df_7c_b0_17_42_14n,\n 0x28_2b_37_02_0c_08_90_d7_51_c3_fd_76_95_0d_80_68_66_8e_1d_fe_ae_62_1d_d5_52_d2_de_88_7d_a2_ea_75n,\n 0x28_93_38_52_26_6b_52_d9_ea_6b_5b_b9_23_d9_d9_4f_2e_5a_5b_e5_c7_78_e7_5e_07_94_2c_23_4b_64_3b_d9n,\n 0x09_9a_b6_76_55_05_ba_11_98_ef_14_0e_77_b7_95_4d_4f_be_79_a0_56_ce_72_ba_ce_39_c0_48_c0_0d_a3_cfn,\n 0x2a_f2_11_d8_e0_ac_2d_8f_da_7f_84_9b_8f_22_9a_22_5c_61_86_b5_57_62_c7_a7_b2_ae_2d_1d_d8_5c_57_cbn,\n 0x0c_d0_70_f2_34_01_4a_28_09_ab_90_c7_1c_1d_a6_1e_98_a9_63_22_fe_dd_99_b6_aa_ae_1c_a1_04_f3_fa_cfn,\n 0x26_79_3e_2a_bc_8d_3c_30_c6_06_26_fb_aa_15_8f_26_35_87_d6_bd_15_83_3d_44_8b_11_62_64_b9_30_25_6an,\n 0x22_5b_e3_6e_d0_ee_85_e1_f8_45_ad_a8_4e_57_48_a5_66_99_15_21_13_ff_61_b5_05_6b_6d_8b_de_60_c1_9dn,\n 0x02_17_4f_49_ed_b0_2d_51_54_d2_be_ca_2d_c9_2b_9c_c5_95_38_3d_a1_fd_e8_f0_9e_4b_5e_e3_ea_5a_06_5en,\n 0x0f_64_89_1c_2c_8b_02_0e_46_c3_59_4c_b7_58_f0_bd_dc_db_d0_9b_d0_30_88_16_fb_41_73_4a_86_98_72_c3n,\n 0x19_2a_84_ca_2f_99_d3_69_91_e2_d2_b1_de_ff_39_89_d1_c1_56_c2_39_e1_0e_9f_56_14_0e_18_54_57_60_67n,\n 0x29_df_cd_7b_63_f0_5a_bf_27_53_a8_c3_41_d6_b7_a6_0c_62_43_b0_4c_9a_1b_8b_33_20_bb_a0_4a_4d_47_87n,\n 0x1e_e2_7a_d6_b9_b5_a8_67_73_3a_fc_61_a2_b3_e7_6a_52_ba_3e_4b_d5_e6_57_ad_e9_1f_c0_38_81_9d_ba_5bn,\n 0x0a_b4_77_3f_15_0c_3f_8a_d3_bc_95_38_f4_3c_ec_39_5a_7e_37_31_ae_97_3f_ef_eb_62_3a_09_21_7e_64_c7n,\n 0x13_c3_52_a0_2f_59_51_86_20_2c_b0_b9_9f_a5_8c_55_42_ab_67_f9_b6_d3_a0_af_d1_03_de_ef_f6_d8_0f_41n,\n 0x2a_97_cf_2c_10_c4_bf_bf_d2_99_f6_7c_52_a1_69_f9_2c_05_b7_da_c5_6a_41_c4_dd_4f_e8_7c_82_46_ce_14n,\n 0x00_be_cb_b4_70_42_bd_7f_8c_9f_6b_b4_22_16_2d_1a_ed_08_9a_28_48_2f_7f_d1_6a_b0_6a_13_28_5f_e7_02n,\n 0x00_8e_44_da_21_d7_38_69_1b_88_17_57_ef_37_ed_29_c5_bd_9f_7a_44_50_fc_f5_32_90_a9_2c_c2_ca_21_76n,\n 0x2b_20_5a_8b_6d_4b_70_63_d9_31_f3_bb_5d_34_64_05_38_43_fe_7f_be_4b_83_c1_78_83_f8_65_27_88_2a_18n,\n 0x2d_9e_32_a7_c9_05_56_fe_10_8d_25_5a_c0_1e_75_df_33_8f_cd_63_b2_bf_84_c1_92_80_d4_27_29_88_63_fcn,\n 0x29_a3_22_a8_4c_25_bd_2d_df_6e_2e_42_00_22_8d_95_ab_d6_34_9a_02_26_6a_c1_db_ba_52_07_38_ce_ca_97n,\n 0x06_78_c9_bf_c6_f2_df_01_2f_4f_e5_5e_33_bb_68_ac_14_ce_d1_df_0d_02_15_27_92_08_9d_04_6d_82_8c_43n,\n 0x0f_af_f3_a5_e7_42_57_94_fe_20_a7_e0_eb_61_5b_8b_17_60_39_4b_7f_23_04_28_6a_3a_e4_00_91_24_db_23n,\n 0x1f_8f_5b_61_1a_f9_fe_b9_ce_a8_6c_08_40_58_12_05_53_e4_04_10_3a_ee_21_3f_5a_41_d1_d0_25_41_c0_d3n,\n 0x16_08_75_d8_47_96_02_f9_6f_40_ac_c2_d0_42_ee_52_c1_58_8b_6a_29_de_42_84_96_5a_6d_c6_c9_30_ea_07n,\n 0x16_d8_7a_51_83_a3_16_a1_d7_0a_fc_95_1e_fe_2c_d6_67_c7_73_28_fc_fd_a4_58_cb_f5_fe_30_45_f4_6d_9en,\n ],\n // t=7 (6 inputs) - 497 constants\n [\n 0x21_97_70_3f_ce_b4_cb_f0_7c_6d_bf_46_c4_ad_93_e7_d1_4e_55_4d_b6_6d_09_10_2f_f8_48_24_74_3f_e4_e7n,\n 0x13_22_f0_ff_fc_7e_48_54_bd_8b_5f_c2_3e_71_06_b5_1f_59_bd_50_61_d8_b5_65_ac_a2_fd_3e_fe_51_2f_79n,\n 0x19_e4_14_f8_03_80_aa_2d_22_21_33_11_8c_33_7d_82_a8_c5_89_4c_2f_88_86_1e_e4_6f_44_8f_a9_d6_13_59n,\n 0x22_24_11_99_a4_df_9c_b7_d6_52_49_d9_56_2c_ad_6c_65_f1_64_60_e7_9a_79_39_cb_fd_d6_d7_b9_20_9d_9an,\n 0x03_01_06_17_35_38_4d_fc_ec_f9_a3_11_c2_2a_de_32_7b_51_c7_8b_21_16_15_f4_1c_77_f6_d8_5e_8a_41_b6n,\n 0x22_9e_1d_86_c1_f2_81_0f_4a_26_33_b7_b4_b5_bb_61_b7_dc_5d_19_ac_95_fd_8d_37_95_48_ff_2b_68_50_een,\n 0x0e_31_dc_f9_c5_32_09_a8_17_ee_b2_92_e9_89_72_7c_3f_56_bf_f6_58_83_af_e5_fd_c2_8a_c3_df_be_a6_75n,\n 0x22_2c_73_18_eb_e9_63_06_c9_d7_9a_c1_12_37_26_3c_6b_8e_b2_52_72_eb_88_40_7e_8c_29_a3_58_b4_0f_2an,\n 0x0c_b4_16_b4_2c_53_a8_29_cf_4f_c8_23_be_8f_4f_ed_d1_25_93_39_4c_d5_29_05_3f_f4_e3_60_49_74_a2_c6n,\n 0x08_92_72_9d_09_59_4a_8d_8b_1a_df_bf_2e_2e_d7_53_99_de_e6_12_84_2b_6d_b3_d2_d2_c2_aa_dd_b6_c0_aan,\n 0x18_e3_9e_9a_e4_5f_14_ba_97_a1_5b_d6_72_71_1a_e1_24_37_5d_9f_48_2a_44_87_a0_e3_34_de_e2_d2_7c_71n,\n 0x25_60_c9_ff_67_2e_6e_a6_9d_bb_33_84_4d_0d_22_87_04_61_d1_8e_af_0f_89_92_d4_d7_ac_64_9e_dd_66_10n,\n 0x21_be_e2_b8_ed_54_b7_26_ef_17_f7_73_66_b1_dc_fb_da_7c_cf_1e_48_7f_99_16_e5_f9_63_e8_14_c5_73_12n,\n 0x30_0e_1b_28_da_be_bd_c0_d4_bd_bc_19_be_29_a3_de_e4_ed_a8_42_5d_d0_c7_c6_e8_2f_ec_14_7c_b0_70_ban,\n 0x2c_44_a5_ff_45_de_ea_69_dd_29_61_d6_70_11_af_49_82_b9_40_5f_9f_e3_8d_e4_a7_32_d2_ae_ae_88_cc_23n,\n 0x0c_8d_59_fe_1b_7f_55_09_5e_6a_aa_d9_e3_b4_e7_b1_c9_3d_87_6b_a3_23_4d_d1_ac_5e_c6_41_08_29_1b_fdn,\n 0x06_cf_82_bc_5f_d1_15_d3_48_a3_0b_0c_45_37_8d_90_cc_a1_66_04_46_ba_04_97_59_fa_53_10_3f_cd_78_b5n,\n 0x2f_80_ed_01_a2_11_8d_02_e2_14_51_11_c3_fe_6c_a7_0e_fd_f9_5d_8a_be_ae_e8_82_92_93_34_7d_c9_06_1cn,\n 0x0b_df_e7_f6_80_3e_4d_ee_7b_02_6e_07_90_75_90_8c_b8_41_4e_3d_65_1d_d1_2f_da_67_df_08_dd_ed_9e_42n,\n 0x06_cc_48_ed_88_24_05_59_5b_34_d3_91_38_f5_0b_b5_b3_1a_96_3a_0d_ba_66_ae_f1_7c_19_ad_62_2e_29_b1n,\n 0x2a_67_f3_ba_6d_15_94_99_32_ac_56_22_cf_9e_2b_49_38_01_bf_16_a5_03_36_a4_51_82_58_bc_c6_86_7c_95n,\n 0x25_72_72_5a_67_c6_07_18_df_65_69_34_aa_78_fb_eb_80_c8_f3_95_ae_b6_a2_0c_d8_33_c4_b1_4f_ef_41_2an,\n 0x03_bb_7f_6c_a4_35_45_b1_1f_19_72_12_65_b4_16_16_65_79_cb_75_33_30_b1_87_9b_79_68_5d_1d_f0_bf_a7n,\n 0x24_12_81_5e_86_3f_8f_3b_c2_8b_fc_bb_95_7f_aa_5f_39_33_00_b2_51_33_e9_22_1b_8e_b3_15_6e_d5_c1_2bn,\n 0x0d_bf_64_d5_8d_f2_12_e4_30_78_71_96_6d_e0_97_a5_db_09_a9_3e_5b_c3_05_ce_bd_cd_06_30_f4_33_af_45n,\n 0x27_4c_06_c0_11_58_e0_47_ff_4a_79_1e_25_b7_bb_3d_b1_90_52_9d_f8_f5_0b_63_86_27_3f_81_0f_15_c6_abn,\n 0x23_cf_40_69_3f_52_ab_f0_ed_3d_84_2f_7b_c8_5d_1a_21_11_d0_ab_ec_fc_18_ac_d0_fe_39_91_ee_5f_d3_3dn,\n 0x1d_aa_a9_26_52_8f_33_68_f4_e4_cf_92_41_66_b8_bd_3f_f8_da_ef_bc_f9_00_e6_dc_c4_ee_63_c4_09_96_98n,\n 0x10_10_37_89_dc_94_71_ad_71_86_57_be_bb_67_81_e3_9b_d9_2f_d2_0e_e1_a3_2d_0d_e3_ea_28_17_a0_15_55n,\n 0x00_09_bc_25_06_50_80_e6_c6_e9_93_2e_34_bf_de_78_d1_08_5f_19_e9_ff_c8_96_5a_46_60_a4_d9_b6_d6_07n,\n 0x13_12_c7_27_cb_54_89_bb_17_4e_1d_cb_82_58_8e_df_ab_31_a2_99_9b_37_7d_ab_ec_e4_66_e9_dc_d6_af_een,\n 0x20_29_4a_46_2c_7d_0c_25_ae_b5_37_46_18_e5_e7_73_16_68_2a_e3_d7_26_82_4f_15_f0_0f_7c_b9_a7_00_9fn,\n 0x25_e0_c6_be_89_bb_b0_4b_d8_39_1c_90_cf_35_58_8f_0e_9d_73_fd_b0_62_59_f4_7a_05_51_3a_d7_a2_3e_91n,\n 0x00_84_a0_b8_7e_0b_33_6c_9a_91_10_69_f8_9d_87_5a_38_be_31_3e_fc_42_0d_28_b9_ec_28_7f_28_81_0f_d3n,\n 0x28_a0_3e_e2_9f_61_2a_ab_26_8f_76_24_1d_54_d4_77_a1_d9_7f_58_07_ba_2e_18_12_f4_d3_50_d7_c6_f7_dan,\n 0x0b_67_94_18_2b_72_3a_12_e0_b3_5f_76_bd_55_a7_d1_06_ee_6a_40_35_52_7c_4d_32_9a_6f_33_06_8d_7e_dan,\n 0x01_5b_9a_69_84_65_42_8f_c6_86_b7_9d_b4_95_9c_84_95_b9_2b_85_12_2f_6a_69_32_94_08_36_fa_ce_a8_6dn,\n 0x1b_fe_52_28_9f_81_1f_5c_36_19_f1_48_66_13_8a_e9_a1_27_9b_b7_6e_8c_ec_9a_89_36_fd_c3_6f_59_df_7bn,\n 0x1c_d5_74_fe_8d_5e_4c_42_8b_92_b2_3a_97_17_34_21_76_e1_d3_09_a7_e2_59_05_2c_31_bd_c9_af_09_1f_a3n,\n 0x21_2d_1b_bd_fa_af_02_00_73_5b_c5_85_1a_15_6a_dc_bf_a4_f6_07_f5_da_12_2e_1f_63_af_ae_cd_38_ca_b7n,\n 0x0b_04_79_e2_88_20_e8_83_d9_03_a9_51_f9_5b_13_09_37_88_e9_e1_ca_64_dd_f2_ab_b9_4b_13_fe_e9_ed_bcn,\n 0x01_10_f5_25_7c_21_c9_37_9d_73_b7_6e_9c_a9_5c_51_3c_77_a1_5c_c8_ee_0e_f7_26_d8_46_0d_4f_bb_da_aan,\n 0x08_c5_2e_94_01_a9_76_4f_0c_24_87_df_ed_34_e2_15_c1_86_b6_c2_83_8e_38_eb_5a_50_cc_a4_f0_bc_69_94n,\n 0x2e_42_2b_43_23_cb_4c_0a_f4_6f_4b_0e_50_52_f7_57_44_c5_38_ab_cc_c7_64_3f_33_94_40_dc_3a_ae_ec_a3n,\n 0x2e_12_48_2b_a1_60_47_2d_45_54_9f_f7_9c_d0_4a_eb_c4_a3_27_c4_bb_9d_78_c2_57_3b_83_5b_05_c5_5f_e6n,\n 0x12_4f_a5_f9_c5_a9_6d_6c_ce_92_cf_c7_3e_a2_44_62_02_f0_91_00_ee_d2_03_ae_42_67_aa_63_7a_03_2d_36n,\n 0x0b_f6_51_f8_2f_83_ca_1f_a0_37_a9_41_d4_e2_a4_b3_e0_8f_5e_16_03_f9_33_a1_72_3a_df_41_35_79_6d_e7n,\n 0x21_c6_74_ea_7b_83_47_41_cb_ad_39_b2_1b_24_2a_b9_a5_55_4c_6c_9f_92_e8_01_cb_1f_e4_38_2b_61_94_63n,\n 0x21_4f_91_d6_c4_ae_f5_7e_83_18_6b_57_fd_9f_a4_8a_19_3e_1c_af_16_d7_f6_dc_15_59_d1_44_a2_71_b3_41n,\n 0x20_3e_22_18_38_97_29_c2_6c_6f_66_21_3f_22_69_c2_62_78_5e_c6_8c_75_95_99_c2_d8_e3_f6_80_35_05_5bn,\n 0x1a_a9_34_19_87_13_ce_17_65_8f_51_29_3f_ad_44_b1_c2_2f_c8_03_91_40_5c_e7_6c_92_b2_34_9b_7e_b3_a2n,\n 0x10_14_d4_e5_dd_d9_c1_7b_3c_2b_29_68_44_76_af_db_af_7f_c5_6e_8b_79_96_16_a6_7b_bc_66_78_e4_53_51n,\n 0x03_3c_13_ed_45_b4_76_2a_47_e1_d2_d4_5d_7f_c8_fb_f9_d4_e2_45_46_e2_0d_c5_96_91_1f_b9_91_71_03_58n,\n 0x09_bc_1c_32_74_c5_69_e7_e5_c5_d7_7c_51_fe_69_b2_3b_7e_43_51_38_f4_f3_21_70_16_a2_d7_0c_e7_1d_5en,\n 0x18_03_17_1c_9d_bc_06_10_e3_8d_83_08_db_10_1d_6a_99_ca_90_13_7f_6a_b8_cd_ab_2a_91_b3_6b_63_32_2an,\n 0x0b_a6_07_1a_a9_8a_fe_c3_fb_de_b4_6a_88_e4_a5_d1_7b_d4_45_4c_0e_7d_a8_c7_4b_15_b0_84_48_8c_fd_cfn,\n 0x17_9e_90_ab_4b_08_a4_ea_d2_81_a8_70_90_57_48_7e_07_7b_71_08_79_91_1f_21_5f_bd_6e_8e_bf_83_8e_97n,\n 0x1c_bc_a8_8b_8a_b3_f0_58_8f_f8_7d_ee_a9_78_d0_00_08_ad_ba_d8_08_e6_51_08_97_23_8e_a0_07_f4_91_a4n,\n 0x2f_50_b2_0b_33_69_2b_b0_f6_27_77_de_5e_31_98_37_7d_79_23_ef_2f_a8_ed_e0_88_31_e1_0f_7e_9b_9f_5an,\n 0x15_ba_03_0e_8f_1e_f6_f2_60_56_6f_d6_fc_ff_fc_d2_1a_1c_fc_12_32_f7_ec_71_48_ff_07_6d_1b_a6_87_07n,\n 0x0d_be_05_3d_a0_1a_a4_b7_c0_fa_d8_3a_3c_c9_66_f0_b8_28_1b_b4_94_0f_97_a5_51_6c_fb_9d_cd_54_3a_6fn,\n 0x22_2e_ca_5d_75_4a_fe_ca_89_97_f3_1d_6f_cb_94_a5_d7_99_af_b7_95_e6_8d_4d_8b_0c_e6_d8_39_f6_dd_7en,\n 0x2a_bf_fa_43_d7_56_ef_24_2d_b7_f5_84_bd_62_40_59_91_11_26_18_36_2f_1b_29_a3_3e_e2_13_1b_46_a4_46n,\n 0x03_c9_25_24_eb_e6_73_00_d0_dd_0a_ac_46_4f_0e_6e_cf_96_2d_6a_d4_1b_f2_68_5f_07_7b_fd_78_8e_b3_fdn,\n 0x28_22_41_75_8a_de_4e_f8_ff_38_58_30_52_88_d3_b4_a5_22_09_29_5d_1a_4b_c8_9d_88_5b_2f_5d_c3_34_1an,\n 0x02_63_5c_b9_73_d7_1b_b3_d2_13_7b_d8_16_80_dd_3b_c6_07_fc_54_87_e8_98_c4_c2_d8_3c_1d_c2_81_76_87n,\n 0x13_c8_66_aa_66_e8_d5_06_07_9d_c2_4c_2d_f7_b1_e6_91_99_48_87_d3_56_22_f4_cf_cf_01_4b_be_a2_23_e9n,\n 0x15_1f_00_07_cc_f4_2a_7e_f9_69_f1_b6_f6_31_59_92_e6_59_4b_b5_34_4d_28_39_fe_e6_62_0b_60_e2_c0_23n,\n 0x1c_1c_6a_5e_bc_ce_e8_ca_a4_dc_7e_f1_8e_19_42_74_f6_e1_98_d2_b1_40_dd_cc_97_cb_15_c9_2b_a1_40_9cn,\n 0x18_33_0c_9e_67_d6_2f_78_61_a9_96_d7_ed_69_bb_a9_04_b0_dd_45_9f_2b_25_4f_c7_cc_53_dd_28_e4_5a_65n,\n 0x26_b7_47_74_0c_95_bf_13_9c_b1_1b_df_02_fa_63_a4_bd_b2_9a_90_f1_58_93_3a_18_22_cd_de_53_87_29_0dn,\n 0x14_75_67_6f_b2_05_08_42_46_ef_9b_c7_23_4f_31_2c_21_4f_42_68_52_dc_b2_ec_7d_c3_77_2f_57_9a_f8_b1n,\n 0x1b_03_ad_90_80_d2_9b_70_aa_f3_0b_bc_32_00_ef_ff_e7_3e_e2_69_dc_03_2d_2e_32_bd_19_07_67_bc_38_0dn,\n 0x21_c1_75_f9_37_c2_f8_2e_99_73_5b_c7_c2_01_28_4f_89_57_7b_27_a1_f8_4f_a2_46_42_ec_eb_55_2f_44_55n,\n 0x11_92_e0_26_9a_6b_66_a8_c5_88_75_27_aa_44_74_c2_de_91_cf_8c_71_eb_da_83_5d_f2_cd_cc_dd_4a_4e_4bn,\n 0x0f_3a_12_c0_ee_52_f0_d3_4f_2b_4a_0d_cd_13_54_1b_48_ae_b3_d5_12_1d_31_11_13_bb_a9_79_2a_45_a5_8dn,\n 0x07_fb_52_18_83_bd_f7_8b_33_68_92_05_b4_5e_52_26_94_58_a0_61_bc_b8_7e_eb_3b_1e_18_3c_6d_7e_b5_b7n,\n 0x24_8d_0e_80_51_c1_a9_65_64_0c_96_c6_f0_10_c4_93_1f_e6_48_b9_6f_95_ef_6f_5b_8e_47_4f_64_cf_31_69n,\n 0x2a_b5_53_db_9e_ad_2c_82_ce_91_fe_be_18_05_29_ef_f3_52_18_75_f7_e9_0a_9b_8b_7a_3c_4d_e4_87_7c_d6n,\n 0x21_1e_e3_bd_a3_c9_5f_19_54_ee_f2_2a_0a_82_c2_ed_e8_44_4e_42_a7_2a_82_00_ba_b6_a1_33_84_6d_5b_5cn,\n 0x11_1d_b3_b5_18_4f_f7_41_2f_79_c1_29_90_4a_9c_ac_4e_e6_5a_51_c2_06_2d_66_73_2f_54_bc_df_76_7b_e4n,\n 0x1a_73_84_32_64_cf_9a_3a_1b_b6_fb_68_ef_76_03_7c_4f_a9_83_37_e5_c1_00_96_c6_30_b4_49_ec_4a_5f_67n,\n 0x1c_2e_5a_2d_93_32_f6_51_28_c8_53_58_66_2d_6a_7c_44_35_3a_dd_09_c2_7c_d0_7d_a0_2f_91_44_da_85_5en,\n 0x0e_2b_35_fe_10_21_b8_79_de_5b_67_a7_45_8f_a6_18_8b_bd_ea_39_e2_bf_46_8a_1a_24_e3_62_5c_af_ff_98n,\n 0x2e_56_85_94_e5_df_bf_ad_f2_72_b8_d6_e8_c9_9b_d7_85_c4_fa_94_ce_9e_87_fa_8a_9a_37_e3_2c_7a_28_den,\n 0x07_04_3c_75_71_cb_7d_c5_20_5b_fd_a4_2d_69_35_27_a4_bc_b5_82_38_ed_6a_6a_24_8e_79_17_dd_af_0c_3an,\n 0x23_9e_18_a0_c8_5b_84_5f_fd_6b_85_e9_63_43_f1_a8_37_8f_3c_69_1d_ad_fb_22_8d_a6_ff_7a_a7_9e_fe_1fn,\n 0x25_e2_47_af_25_0c_56_4c_00_f5_ff_1c_f1_f2_bc_86_06_60_0f_17_3c_b6_5e_f0_78_0a_f9_f5_a1_b6_76_c8n,\n 0x03_1b_a3_38_56_64_54_4e_3e_08_01_f1_69_8b_15_03_3a_60_49_b2_50_4e_9c_dc_2c_6e_3e_b2_fd_12_10_0dn,\n 0x2a_33_77_77_39_e2_ab_0a_df_b1_ca_56_87_db_1e_05_9b_20_37_0c_be_ec_ca_d3_2d_a5_c3_60_94_31_ff_65n,\n 0x2b_fd_6f_0e_9e_99_6b_a1_37_49_32_7b_9c_5c_ec_69_90_3d_41_3b_2d_f2_9b_77_7d_05_38_4b_3e_7a_f9_52n,\n 0x2d_45_3d_93_fb_36_fb_f8_e3_67_47_ee_92_d9_0c_ad_9e_02_e6_92_d0_74_8c_07_fd_43_ea_fc_2c_c5_e8_23n,\n 0x18_7b_d8_04_3f_86_42_cd_a2_b6_ba_d8_29_58_d1_15_81_88_80_eb_80_f6_b7_30_38_1d_97_4a_c5_d5_03_7en,\n 0x21_ac_a6_05_f9_2a_48_ac_35_70_8f_e5_14_07_29_fb_35_c3_e4_8c_ce_c4_41_21_77_13_b0_86_49_44_39_30n,\n 0x17_3f_d1_64_f5_22_4a_c0_6c_2e_99_f3_e2_ea_a6_37_9d_f1_13_de_30_aa_48_5e_8b_bc_c7_f0_fd_2d_1e_03n,\n 0x07_1c_66_a6_46_3c_3f_d4_29_2b_f1_e5_ac_b6_de_61_11_42_d7_3c_d1_db_59_0e_89_b6_1b_57_d4_4d_69_bdn,\n 0x04_4a_40_e3_96_85_5b_e5_50_d8_cc_ce_7b_82_ee_2c_aa_ef_66_75_be_be_92_26_6c_66_69_82_ff_72_bb_f8n,\n 0x11_76_d9_f5_2e_12_df_67_f0_87_11_0a_15_aa_f9_8d_1d_ed_29_3f_fd_f9_95_99_fe_de_f2_e5_15_69_e4_f6n,\n 0x06_e8_eb_7d_d0_26_d2_57_b1_5c_66_24_be_e2_f3_7d_5b_67_b4_a6_71_cf_cd_fe_e5_79_7e_84_57_b6_39_16n,\n 0x06_96_aa_48_c1_d5_fe_84_ca_5c_f5_90_09_ab_0b_aa_ef_bb_61_2e_32_c9_1d_5e_f3_06_de_f3_8d_c5_67_3an,\n 0x08_53_c3_3a_9c_7a_7c_3b_35_5c_92_c7_5d_e4_44_36_5d_b8_2d_24_1e_ef_9f_3f_ac_41_70_04_a3_a1_ac_ccn,\n 0x30_16_c0_ba_34_67_8e_0a_67_f5_9c_f9_6c_e1_6e_90_81_54_f5_f9_80_25_91_71_7e_66_e9_5b_a2_5a_b7_7fn,\n 0x0a_f0_08_60_1d_c9_55_25_17_f3_03_ff_9e_22_c7_93_a6_82_ca_a9_32_56_f2_f0_9a_4f_74_65_42_60_3b_0en,\n 0x04_cb_6d_76_b5_a2_7a_5a_ae_38_7c_b6_47_79_03_18_c2_5f_c1_6f_8d_7d_18_55_a3_87_65_f8_47_f7_31_b0n,\n 0x2e_cf_70_c3_72_d8_e5_ed_ca_d4_9e_58_d4_78_75_f2_69_33_d6_26_14_f2_66_e6_b4_f5_86_17_71_48_56_5fn,\n 0x01_f3_93_a6_ee_74_dd_6c_4d_52_b0_e7_82_0a_71_32_f8_c4_88_97_42_31_3c_06_ca_a6_ec_c5_5f_3d_d4_13n,\n 0x2e_4d_4c_e3_f9_7b_f9_6f_f8_6b_88_e9_69_d1_3e_41_5e_14_72_12_82_76_9f_7c_f8_c3_a7_37_23_f0_94_dbn,\n 0x30_60_00_ef_24_a7_f5_a9_c6_52_e3_a9_36_75_78_55_4e_a5_9b_f8_ef_a0_bd_8b_c5_77_64_60_c1_8c_1a_ddn,\n 0x26_e5_8d_62_87_67_8f_3d_b9_c2_25_c1_d3_b9_3a_e7_c4_3a_69_02_4e_bf_24_9c_8b_de_40_61_7c_2b_3d_49n,\n 0x09_ee_e0_9f_87_3d_1b_f6_83_97_1d_f4_d7_ce_56_c8_f0_b8_b9_8d_dc_05_b9_61_2c_0a_0d_31_73_10_65_5an,\n 0x0f_08_87_9d_fd_4f_a0_dc_11_de_d5_56_ef_01_c6_f9_4c_c6_f4_d1_85_53_b0_8b_cb_1d_d6_04_39_2e_c0_0cn,\n 0x11_45_9f_7e_9f_0e_3c_72_77_77_e3_4d_6d_93_ec_28_a2_5b_d8_67_17_15_23_ba_d5_be_0d_5a_20_02_9e_b7n,\n 0x04_e9_cb_b6_f6_e8_e8_05_a2_0f_bd_80_1a_53_b7_23_f7_8c_1f_5a_cd_22_78_80_f7_f3_7f_4e_5b_05_28_adn,\n 0x2d_2f_f3_2e_b7_a0_c0_26_6d_d4_6b_d5_93_9c_9a_9a_ae_88_b3_e9_af_5d_ad_01_a7_30_4f_98_68_f7_c7_c6n,\n 0x23_b7_7e_b0_f2_7e_95_02_00_a5_90_44_7d_64_5a_72_3d_9b_40_5f_a2_53_8a_5c_b7_6f_c5_fd_ae_16_d8_39n,\n 0x2c_d6_d2_c5_65_8e_c0_79_2d_ae_e2_06_7e_2f_95_8d_68_49_88_63_18_a6_c1_c2_72_33_a4_69_e9_99_8c_2fn,\n 0x0a_e1_da_a4_20_ba_c9_07_80_d0_c8_30_26_bf_cc_84_af_83_95_3e_26_ec_a8_39_da_76_86_1e_73_98_55_e7n,\n 0x2b_49_5b_85_45_53_d0_2a_75_b6_87_63_bd_a6_dd_8e_f0_e8_1f_e3_2b_5c_b0_72_d3_f5_80_a9_14_96_7b_f0n,\n 0x05_6f_a5_d7_ce_2c_32_bc_57_35_35_1d_2d_48_af_5d_6c_92_56_a4_b7_2e_12_a3_56_40_b5_3e_a9_59_e2_96n,\n 0x2e_cb_e1_a0_6b_28_ec_78_ea_7d_22_df_11_cd_22_4a_0e_1a_0a_c7_a3_47_6c_5c_c3_c4_e5_0d_a9_61_a8_7bn,\n 0x14_30_53_c1_c3_87_f9_35_3b_d6_77_e5_db_6e_99_75_79_2b_ff_ee_cf_02_d6_aa_0f_e8_f6_27_57_9f_e6_cfn,\n 0x04_06_4b_25_58_44_99_a0_11_ea_74_ac_04_7a_8b_37_49_41_89_bc_63_34_2b_b1_18_2e_23_42_12_d4_2b_dbn,\n 0x10_0f_61_f6_b8_15_42_15_67_60_a6_d2_9a_f5_dd_86_44_c8_2d_ea_b5_b9_0e_6a_c6_6d_e8_b4_a0_69_56_4an,\n 0x18_d3_31_b2_e8_18_0b_7a_a7_05_5c_02_9f_a7_7a_ff_4f_02_b0_e2_a2_07_8b_ff_67_68_8e_d6_5b_51_d6_ddn,\n 0x0f_cf_9b_89_e1_9b_1a_55_f9_b0_32_55_cf_80_cc_b9_fb_6a_af_de_2b_46_20_7d_87_3f_ac_80_cc_ef_08_5cn,\n 0x25_4f_80_1f_3c_89_c6_24_36_ef_63_df_67_d9_12_c1_f2_31_bb_1f_76_c6_c7_b4_97_f7_70_8d_bc_fd_c1_7bn,\n 0x16_d8_e8_5e_57_81_9a_10_a6_14_61_bc_d8_d3_d3_c9_63_c4_f9_5a_fb_a3_e4_d8_fd_0d_6e_c8_82_b9_d1_61n,\n 0x29_c9_56_5a_a7_02_08_8b_d4_43_e4_62_0d_84_bb_2b_fb_93_25_3a_8f_0f_04_e5_cf_40_8c_92_82_0a_da_84n,\n 0x29_4f_b6_80_64_64_3d_8b_eb_23_7b_d7_05_a5_57_87_1b_5f_14_08_62_4e_da_46_d4_7b_58_3a_60_d2_9c_f9n,\n 0x2c_26_f3_08_31_40_c1_04_ba_f2_4c_3d_f9_22_31_75_84_aa_11_77_04_51_e6_a8_46_de_7d_c7_95_19_73_13n,\n 0x23_18_11_27_98_54_70_7d_ba_a5_37_cb_27_24_1e_70_21_a9_49_a1_d9_67_13_80_a7_d6_94_4c_83_89_04_cbn,\n 0x14_19_36_5a_db_b9_1f_1f_7d_1b_b0_aa_8a_4b_5d_11_c7_ad_05_70_cc_6c_f3_63_8b_e9_c5_a2_a2_75_b4_95n,\n 0x16_74_42_5f_2e_9f_ca_a6_6e_b0_01_fe_ca_48_dd_d4_b2_a2_9e_86_d4_51_f0_0d_17_6e_a3_5b_4e_02_fb_84n,\n 0x29_1f_95_6d_ef_59_b8_78_02_80_00_ce_f0_3d_7b_54_dc_c2_fe_1d_d5_a7_5d_c1_80_d6_d5_be_d8_98_cd_30n,\n 0x2f_13_02_89_4f_e6_a2_6b_5b_c0_3f_ba_a6_9c_4d_95_01_23_94_d7_8d_e4_94_54_9c_70_57_b7_ef_96_5b_ccn,\n 0x06_27_d6_d6_d9_4d_0a_19_a1_7d_b4_5c_07_96_f7_db_8d_e1_3d_27_8a_2b_24_c9_9a_c5_d9_2d_0a_1a_1c_e2n,\n 0x2e_e2_97_66_2b_af_eb_cb_01_df_8e_62_bd_5f_50_f0_30_25_51_5b_10_46_5d_59_f3_a2_94_f0_bf_bb_2f_c5n,\n 0x11_80_29_94_5d_f7_73_f5_2f_ef_54_29_da_76_6b_90_2e_ea_e7_d9_67_06_2f_dd_87_9c_60_a1_bf_ab_a7_5bn,\n 0x30_60_42_d2_62_f6_26_8b_a7_89_eb_43_23_c2_16_92_79_75_2f_fe_c6_b8_53_6c_c6_8b_53_bd_4d_f0_e8_58n,\n 0x04_72_a1_3a_c7_da_9e_be_11_32_e0_5f_9e_f6_09_13_5c_82_a0_eb_d9_27_8d_ef_2b_34_f8_ce_70_9a_ee_4an,\n 0x2e_8f_76_b2_7b_47_41_80_f0_0c_5a_6c_2d_65_85_0b_bf_96_01_9b_f0_d7_6d_bb_47_43_a9_70_f4_2a_13_0fn,\n 0x1e_33_98_41_65_f4_7c_20_4a_33_fe_e3_1f_61_35_44_b7_d8_46_a7_d5_ea_45_28_0e_de_4b_36_2c_32_aa_a4n,\n 0x17_f2_2e_27_25_2b_dc_f9_1a_72_b5_9e_b2_76_a6_66_ce_4f_ea_7a_df_ba_cb_2e_a9_fd_f2_85_24_b7_b4_3dn,\n 0x00_54_7e_7c_70_ee_4e_3f_b4_a4_d3_86_c8_ba_a5_5d_82_3a_0f_02_bc_96_3b_43_03_9b_88_47_cf_f6_e6_c9n,\n 0x08_ea_4c_cb_f8_15_be_32_5c_cd_15_49_4f_38_f3_f9_71_53_ab_09_c5_4a_87_a8_52_b2_a9_94_80_72_4e_25n,\n 0x27_7c_b4_5f_3e_63_27_18_67_3b_a0_5d_48_c7_12_fe_74_04_df_9e_ff_54_01_ce_be_45_d1_94_c6_7f_a8_dbn,\n 0x01_59_ec_7e_a4_9a_ad_b3_a8_b0_a2_3c_1d_ba_00_23_80_7b_0d_09_9d_3c_40_b6_9d_f8_66_a9_2d_c8_7b_37n,\n 0x0c_33_48_92_97_e2_44_95_6d_e5_79_c5_c1_12_ab_40_c7_fb_2d_89_86_6a_28_41_8f_66_0a_86_ee_18_52_4en,\n 0x01_bb_4f_cb_ae_28_a2_f3_39_95_68_c6_b3_84_9d_a2_7d_6d_df_4f_e6_ad_ab_b5_91_15_16_79_ed_37_d2_1fn,\n 0x2a_23_34_3d_24_a9_cf_a3_b8_f4_13_f5_2e_e1_b2_33_ce_4c_1d_5b_9b_f3_4b_03_db_c6_d7_33_d5_23_05_c9n,\n 0x07_07_a6_d5_15_b3_ba_d0_3a_9b_06_d6_be_04_8d_ef_a8_50_13_4a_ac_d1_20_f3_8f_a9_32_64_01_6b_77_86n,\n 0x18_37_db_54_01_dd_6e_c3_0b_a6_b8_66_18_4d_a5_6e_8d_b4_39_ff_d0_41_54_ec_46_9b_62_12_0c_e3_5c_b4n,\n 0x24_48_72_a0_d2_76_6b_85_47_e6_b6_a5_af_ea_bf_19_8e_14_09_a0_f0_02_6d_e3_6c_10_17_93_95_2f_6c_fbn,\n 0x20_4f_b1_79_27_ce_87_3c_76_11_96_39_5f_7d_a4_6f_67_9c_a3_31_83_2a_59_fd_dd_2a_e3_1e_84_eb_a1_f5n,\n 0x05_6f_53_03_7d_5d_8e_fc_7c_f6_a6_fe_ba_18_d1_02_bf_81_8b_bb_a7_0b_86_dd_9b_76_3a_12_07_2f_4c_2en,\n 0x1d_f4_bc_5d_73_23_9f_5e_c3_b8_9e_fa_d5_3d_f9_cd_8a_d8_fc_a5_43_be_01_f5_f4_0f_ea_29_52_07_1b_d6n,\n 0x1f_fb_6c_cb_ba_00_11_55_d4_6e_16_7d_1f_ad_1c_13_bf_28_92_ac_87_cd_9c_34_7c_73_4a_b5_ef_65_83_67n,\n 0x08_ee_36_e8_81_49_65_39_b0_ab_d6_47_d3_53_e5_1b_63_fe_f9_1f_c9_44_88_00_06_f2_c2_6c_2e_cf_2a_24n,\n 0x1c_30_80_c2_54_44_33_32_a3_e6_28_3d_5b_ab_6f_7f_ce_8a_aa_68_48_7b_9e_e4_e3_72_cb_c6_cc_17_26_65n,\n 0x2d_c6_04_05_00_e7_32_9f_75_a3_ce_fa_4d_b4_9f_9b_47_08_5b_16_60_f8_87_3b_3e_81_b7_b1_af_82_af_53n,\n 0x2c_8b_ca_9d_d2_93_bb_67_db_1f_66_ff_2e_82_04_7a_e9_38_5c_e6_7d_7f_33_56_8c_d4_c2_16_a8_99_94_b7n,\n 0x2a_15_7b_97_86_f9_22_4c_f6_36_48_aa_ec_1b_9f_61_c7_a7_08_7e_d6_eb_8a_b2_0c_6c_54_69_d4_01_b7_dfn,\n 0x1e_0f_b0_cd_d8_a5_45_91_c4_2e_7c_26_b9_02_7b_77_41_7e_4e_65_22_b4_72_bf_e6_1f_f8_9c_39_bc_40_e9n,\n 0x25_01_44_d1_ce_a0_33_fd_78_bd_73_ee_4e_a4_cf_dc_d6_a4_2f_7c_00_e2_d7_ee_67_94_d4_64_20_7d_2b_3dn,\n 0x0b_6b_3f_e9_a7_a5_25_ca_60_44_3c_4b_78_a8_e8_30_95_7a_ae_04_03_11_6d_22_98_3a_2e_68_0e_ed_ff_65n,\n 0x2f_df_61_3e_67_d1_76_56_9f_47_43_b4_96_3f_8c_53_e5_24_82_fa_32_e7_05_24_7e_b6_50_bc_7b_d6_16_e9n,\n 0x04_8f_64_b1_42_75_fb_86_fc_55_b3_c0_46_9c_d8_93_06_75_28_27_c3_c0_44_63_be_5b_ea_66_fb_d7_b3_8cn,\n 0x0f_20_27_b7_81_c2_c5_24_90_e1_1e_d4_b7_b4_94_d6_6c_dc_16_e6_90_b6_a4_b3_c9_24_dc_9d_6e_85_48_32n,\n 0x29_65_27_85_16_0b_26_1c_1c_20_c7_41_52_4a_26_14_7c_c3_19_1f_33_b7_4e_bf_17_d4_4c_e2_f8_8b_0f_91n,\n 0x11_76_90_9e_02_a5_b3_7b_fd_47_81_0f_cb_e7_3a_f8_7f_ea_13_04_70_aa_44_bd_f6_b0_58_c4_d3_59_e1_79n,\n 0x18_0f_26_c6_ce_2a_3a_47_7b_af_0d_a5_8d_06_97_69_c2_bf_01_56_d6_36_f2_25_5e_1b_c3_5c_01_e9_89_93n,\n 0x2a_fe_ed_cc_2c_ec_57_28_5a_d2_2e_73_4f_b7_fe_3d_d6_5f_62_60_1c_1c_a4_88_4a_86_c7_a6_a0_5f_08_3dn,\n 0x0d_d2_1a_87_ee_22_62_69_98_db_cd_73_dd_75_1a_ff_b4_9d_47_a0_2e_99_5a_41_bc_a2_63_99_10_30_87_d2n,\n 0x1d_21_ba_a0_9d_7f_50_f0_15_9f_a8_a0_b6_e0_d6_14_46_d1_c7_db_5d_15_66_46_9d_a6_a8_5a_a7_22_49_62n,\n 0x2d_c5_9c_4c_9e_27_5c_d8_c2_50_62_82_cc_5b_b8_42_c0_14_be_a4_23_6b_1b_c2_7a_85_63_51_b4_8a_f8_02n,\n 0x2c_f6_2d_08_54_1d_ff_09_19_ba_68_a6_97_f4_4f_47_91_c4_2d_14_47_a4_15_13_ab_9d_5f_75_5e_b1_f3_8an,\n 0x2f_5b_88_53_e2_cd_2e_47_a9_fe_de_ea_40_47_e4_60_83_c9_7a_cd_4b_68_7a_eb_d2_26_4e_7a_0e_b3_54_b1n,\n 0x05_86_53_28_a9_b2_fd_46_91_70_c3_91_c5_ba_8d_b5_c6_6e_ef_99_38_e4_da_5b_ae_33_f2_70_3c_47_07_30n,\n 0x29_76_1c_9f_c3_d2_c4_cc_1b_12_6b_e1_dc_04_70_a9_7b_8f_27_25_d3_27_c6_d1_ca_92_3c_2a_a8_09_2b_1en,\n 0x1d_3f_b1_f8_dc_3c_77_cb_51_5c_37_bc_81_0d_3a_5e_3b_96_55_2d_4b_bb_57_fd_b0_1c_2a_ee_b1_d9_a0_48n,\n 0x05_f2_fb_eb_7c_ae_0a_35_ee_2f_3a_4d_29_64_d2_41_a0_ce_eb_47_b3_f7_c4_c8_7b_b3_b0_52_c8_70_5d_90n,\n 0x1f_44_50_14_a0_f2_66_08_2a_50_25_71_52_60_9c_c2_19_06_21_54_f4_d7_c1_32_88_74_69_54_b9_79_98_f8n,\n 0x2d_35_91_7c_b1_d0_ca_61_1e_e3_7c_fd_90_78_c9_24_fc_84_bd_1a_4b_fd_7d_b3_ce_39_e0_5b_38_f6_98_b1n,\n 0x05_a8_9a_4e_b4_03_87_b8_51_2f_2f_39_8b_65_26_ef_e7_67_16_95_1c_50_0f_c8_da_bc_83_57_75_33_5c_edn,\n 0x04_e2_6a_a3_f0_26_01_17_4f_46_ce_d1_55_94_32_9e_4f_4e_5b_d5_d7_d5_3d_5d_f6_c8_63_3a_94_dd_01_den,\n 0x20_4d_58_7d_61_52_6c_1e_04_7e_1d_c6_b6_d4_03_b9_eb_87_30_f2_e2_df_b7_bc_73_50_d9_39_ba_c5_b9_0fn,\n 0x21_c8_ca_21_3d_2f_44_44_6a_e9_0a_6b_da_e5_84_3b_7c_2c_b5_3e_d6_99_f3_66_75_ea_82_80_a2_a4_20_e5n,\n 0x13_03_bd_92_1f_32_fa_4c_4e_73_af_21_45_7c_46_b6_d6_9e_2e_6a_2c_39_67_16_21_77_87_b4_6e_82_2e_bfn,\n 0x06_13_82_3c_5b_6a_be_ef_14_38_74_65_31_7e_71_3b_45_ac_e7_9c_0e_44_33_d7_c4_d3_52_09_7e_5c_83_99n,\n 0x0f_27_c5_30_5e_e9_78_f4_f7_75_e2_13_e3_ba_12_a9_01_f5_11_44_ce_1e_a8_9b_b5_04_69_30_f5_ec_55_d1n,\n 0x2c_ad_11_c6_93_c6_a6_27_53_19_50_a3_07_e0_7b_30_ea_8a_49_51_15_f5_a5_38_88_27_79_21_20_c7_bd_b0n,\n 0x16_bb_25_68_83_c4_4c_f3_73_66_61_8e_46_c6_db_4e_3d_a9_7a_9d_4a_e7_d5_c5_85_95_9d_e3_27_2f_82_b1n,\n 0x29_af_e5_0b_d7_8f_72_cc_76_36_95_97_64_10_32_4b_fd_67_15_7a_5c_cd_b7_ae_45_b0_00_32_e1_d5_7a_51n,\n 0x09_32_99_02_e5_9e_52_43_a7_26_ae_5c_a3_54_08_a2_07_14_86_09_ab_36_98_13_97_25_ae_fe_29_ae_b1_67n,\n 0x04_b1_80_0e_60_0c_90_ec_47_76_bc_6a_f1_76_4c_cb_dc_10_bf_55_c3_31_4f_42_ac_d0_53_1a_d5_34_20_fdn,\n 0x29_8d_01_10_bb_90_e4_c3_5e_29_3c_7a_7d_ac_ed_ef_7e_e9_34_2a_59_1b_43_30_e2_72_76_aa_13_b6_7a_d1n,\n 0x02_4e_a6_e6_8c_b1_aa_6b_40_7e_02_26_49_aa_32_d1_b7_ea_4a_35_0e_51_0c_07_ee_e4_39_29_39_5e_4f_82n,\n 0x22_ae_3a_1a_81_c4_55_0f_5f_a0_11_6e_13_5d_2d_f2_bd_9f_68_35_a0_f0_d0_3f_4d_d9_34_e1_32_0a_3d_8dn,\n 0x1f_0f_5e_ee_9e_9a_bb_2a_2f_4a_e0_4d_6f_e0_93_11_fe_01_15_c1_e1_99_c2_8e_22_70_5e_68_14_42_ed_37n,\n 0x02_3c_86_60_66_16_f3_17_af_02_24_64_f3_50_b4_be_e8_0c_2f_ca_32_06_4b_cb_f8_3e_8c_d3_5d_ac_06_c7n,\n 0x2a_89_c4_e5_b0_74_fb_e6_7d_04_cb_03_ef_e1_8c_4b_f9_04_be_c4_75_9b_33_da_d6_b2_c8_6e_bf_d2_b9_d5n,\n 0x04_b0_f4_8c_4f_2e_05_bd_a4_b9_cf_80_60_75_f9_c2_75_df_2c_f6_0b_5f_d1_14_70_ea_a7_39_4a_82_72_7en,\n 0x0e_dd_e5_a2_c0_13_27_ad_04_2a_68_6f_44_34_17_bd_8f_10_7c_99_eb_7c_02_90_0c_93_1a_7b_d8_cb_34_9en,\n 0x2c_ac_ac_c9_c9_d8_b0_00_4d_89_32_08_0f_93_78_b6_06_75_a8_bd_85_3a_ad_1d_c5_06_72_f1_37_21_2c_c1n,\n 0x08_16_f3_35_08_62_1f_2d_56_37_11_56_b0_a3_f7_73_10_30_e4_b2_18_e4_4c_90_a8_8c_ec_af_07_17_0d_ecn,\n 0x2e_f8_e0_a4_55_d4_72_b4_9b_ff_da_93_5c_8d_3b_ee_1a_e9_24_86_08_e2_a5_2d_53_f4_b7_63_13_c9_79_20n,\n 0x17_18_4a_8a_f9_19_9a_ba_60_5d_d1_f2_dd_18_eb_c0_2e_30_55_ce_40_80_68_ec_ca_af_3e_a7_c0_a3_34_afn,\n 0x16_39_5e_15_39_37_a8_36_60_db_6f_78_44_6c_b9_95_83_64_36_60_27_77_d8_1f_06_07_13_0b_44_88_14_48n,\n 0x0e_17_40_88_22_3c_38_e9_44_0f_c7_73_07_d6_72_0a_c3_27_84_c9_d2_f5_91_e2_43_7e_ae_a9_b8_f5_e2_bbn,\n 0x19_e7_0f_a9_37_78_8f_7a_21_27_57_3d_56_c8_19_7b_d0_dd_09_61_40_f3_90_64_86_5c_65_c3_1b_47_d4_02n,\n 0x0e_43_4c_32_9d_52_42_ad_bd_ab_24_78_04_95_ff_97_23_0b_eb_34_4b_91_8f_6f_8d_6b_d7_d2_1b_03_69_2en,\n 0x2c_88_a8_2e_b8_7c_81_ba_42_a2_11_bf_2e_f3_c1_58_75_ac_15_7c_7f_38_68_ff_f3_5a_f9_f5_5a_8c_22_bcn,\n 0x11_1d_c2_23_e3_c9_fc_74_52_a9_c2_de_46_93_83_91_5f_33_ad_f4_cf_5b_49_fd_2e_01_c5_1d_09_cc_f4_36n,\n 0x10_64_73_53_de_31_97_b9_cb_48_f4_53_9b_50_7e_45_39_3b_00_08_42_e8_ba_a1_21_8a_f0_97_f8_71_ba_ean,\n 0x0e_53_d6_41_21_c0_a8_51_c1_b3_f0_74_23_58_20_34_ab_ce_69_85_25_d0_a4_77_24_35_4c_07_15_2f_70_3bn,\n 0x28_91_93_8a_cb_83_ee_19_37_54_96_9f_4a_a5_a6_2a_53_10_81_db_ca_4d_ec_22_62_58_ea_92_98_4b_43_48n,\n 0x04_10_6f_95_e4_ba_3f_b7_4d_be_4b_c5_3a_bc_17_02_62_ba_00_c7_c6_3e_d8_c4_57_c3_22_75_32_c1_2c_e3n,\n 0x2a_73_e6_1b_8f_1b_ab_fb_b3_8b_18_6f_40_1e_ed_0d_92_c5_61_3b_a2_5d_d2_ff_4d_09_9f_7d_d3_c1_9f_e5n,\n 0x18_e1_6b_24_64_2f_19_19_3b_79_8b_92_3b_8d_d2_5f_6e_48_56_d6_b2_1b_72_9a_ed_22_81_ab_15_4f_7c_5fn,\n 0x0d_5f_84_9b_16_6a_b9_f6_fc_1a_64_46_7c_55_57_02_9f_35_9a_2d_0f_19_40_30_c4_dd_87_5e_12_ae_34_85n,\n 0x0e_25_25_0c_57_36_5a_29_c6_3a_4f_15_31_b8_b0_ef_52_3e_aa_93_c1_d7_0a_cd_0a_a7_cd_78_44_dd_04_42n,\n 0x0f_81_3d_14_af_0c_85_bc_ed_fb_f4_80_b3_d8_0b_9f_33_58_53_c6_01_88_52_6d_80_76_12_74_07_4a_59_9an,\n 0x0d_23_56_a9_2d_ba_ae_8c_24_a8_ce_be_d6_42_80_83_ef_2f_46_94_60_f1_66_a6_e7_74_37_7e_78_05_54_35n,\n 0x1f_b6_dc_eb_49_5b_f9_0f_ff_56_c8_aa_d7_0b_40_bf_77_3e_a1_00_3c_dd_09_2f_d7_7a_43_96_1e_9d_7d_c7n,\n 0x2c_0a_70_ce_d7_99_51_a7_5e_23_c5_a3_23_fd_70_6c_2a_b8_7c_38_1c_fc_3c_26_90_81_62_77_41_c2_bb_e8n,\n 0x13_dc_6b_3b_db_05_16_7d_ce_b4_b1_10_37_06_4a_c5_fd_22_db_5e_22_9e_4c_6b_a5_5e_83_82_32_1d_c5_een,\n 0x21_0f_a8_b7_77_90_7e_c3_0b_b8_8d_bd_7c_0e_6c_a9_00_4e_b3_42_5d_49_80_25_da_6c_90_a4_7c_35_02_5cn,\n 0x0c_5c_fa_95_71_39_b4_5a_72_fb_bf_80_a4_10_aa_b5_45_4a_98_26_68_ba_f2_4b_0d_d3_c0_4e_4d_59_9c_d9n,\n 0x1f_1f_3b_c4_c2_1d_63_34_00_fc_f8_bd_b7_be_59_b7_f6_5c_ed_c0_6b_b2_fc_93_a8_73_b6_ef_12_e0_f5_2bn,\n 0x18_8f_0e_e9_5a_9d_fb_03_cd_5e_3f_b3_08_27_05_7e_93_37_11_64_4e_e7_bd_57_49_03_74_c0_d6_75_32_e1n,\n 0x08_23_87_7e_bf_8a_84_2b_77_e8_e0_f3_b4_48_73_e9_40_97_27_10_1b_18_6c_ae_2b_80_d0_cf_a7_26_ec_8cn,\n 0x0f_e8_16_03_de_39_cc_f1_48_ca_63_90_d6_f8_bd_c9_39_5c_a2_f3_f5_08_78_28_3d_98_f1_f0_e6_1b_1a_ffn,\n 0x2e_f6_1f_e1_92_f5_2a_9d_7c_eb_f4_1c_13_40_98_f2_cc_ae_35_ca_bc_aa_12_96_35_66_76_8f_f1_b8_37_06n,\n 0x0d_b6_d0_76_b2_dd_1b_9f_4d_56_d2_f6_6f_ab_4d_7b_fc_6a_38_fe_f7_f9_ae_1d_4c_2f_8c_44_b1_51_0f_51n,\n 0x2a_19_4a_4a_e8_58_3f_28_18_9f_9c_01_1d_10_7b_82_f2_79_e6_a0_f8_ca_8b_c9_cb_0a_a5_81_83_1c_7d_06n,\n 0x0a_e5_39_fa_9c_a6_7d_4a_f4_8f_b2_92_f9_18_8c_9e_72_f2_ee_aa_e2_e5_00_b7_e7_20_17_18_c8_da_8d_e9n,\n 0x23_f6_6a_89_4b_1d_f4_d2_6a_8b_aa_6d_05_b1_ac_e5_11_fa_ff_d4_60_5b_36_cf_d1_2b_b4_c6_dc_2b_b4_d7n,\n 0x13_7c_ef_52_2a_f2_94_2a_ee_9a_4f_b8_01_7b_f3_30_e6_46_01_f4_66_b5_6d_32_24_56_69_d9_fe_5b_a7_07n,\n 0x18_7a_af_cb_87_84_1b_2d_f9_d6_4c_17_67_78_9a_6b_22_17_67_e4_63_4f_0d_55_00_63_a0_bf_92_78_8c_32n,\n 0x23_21_2e_75_f4_b8_99_92_a3_64_70_36_ee_36_d7_49_38_bb_9a_98_51_e1_3d_7b_6e_52_da_f6_6c_4c_bd_25n,\n 0x0f_54_cb_e9_67_77_0d_fa_9d_06_8b_2f_c5_3a_bc_96_48_9b_b7_d2_66_21_26_54_d3_26_de_6b_9a_f1_6d_63n,\n 0x23_d8_3a_60_b9_88_7a_b4_35_9b_85_69_ff_3a_21_9b_b8_13_67_95_5f_de_72_a6_20_02_d3_cd_51_10_1f_ccn,\n 0x2e_a6_76_fe_7f_21_fc_58_3a_b0_b0_e1_89_02_0d_42_cb_22_f0_44_60_7e_e1_5b_fa_c7_dd_66_da_5e_be_76n,\n 0x16_f3_7f_35_7a_0c_58_48_21_a3_56_ab_56_a1_6d_41_f0_45_02_9c_b5_15_f5_8e_de_00_1f_05_a8_07_89_0bn,\n 0x13_90_93_b7_8f_c9_60_3a_42_88_ae_58_11_ed_13_11_be_91_6e_4c_97_d3_5a_5c_f1_8e_4b_7e_47_d1_3b_03n,\n 0x0a_ab_a5_fc_ad_1c_04_70_30_c8_bf_24_6f_41_61_0b_68_d6_0b_ad_28_5c_c1_5f_55_90_0f_52_77_8a_11_ban,\n 0x16_11_82_79_56_f3_43_5c_1f_c6_7d_d3_d3_79_54_a2_55_ea_a0_19_6c_dd_c5_d5_a6_18_7f_a0_a2_83_9e_fbn,\n 0x23_db_56_36_2f_24_89_12_42_1e_5f_08_7a_d1_6e_0c_9e_6d_2b_b5_9d_b3_0a_52_81_8e_41_96_4b_7d_81_26n,\n 0x2f_21_5e_64_02_07_a8_8b_02_99_9c_98_f1_af_8f_a1_73_31_d1_9e_a3_de_1d_ec_fe_8f_2e_47_82_24_20_9cn,\n 0x2b_2a_26_19_17_c0_fe_cf_2b_ce_19_02_1f_85_06_e3_78_e9_d3_e1_af_b4_51_e9_d1_62_b3_d9_3e_ed_86_12n,\n 0x2f_66_2e_4c_df_ef_5f_82_2c_b9_56_df_75_b1_7b_46_f1_7b_08_f9_30_f5_4b_ab_43_24_a0_36_3e_23_38_4bn,\n 0x08_70_ee_ab_2e_7b_b1_e8_2c_42_6c_2a_b1_d6_5f_da_25_d4_26_74_9a_53_8b_4e_a6_69_ea_a3_1f_66_1a_00n,\n 0x16_94_18_df_fc_99_f2_ef_5d_c6_b1_01_37_17_c1_34_40_93_49_d8_46_45_79_85_72_5b_15_ac_6a_15_2f_acn,\n 0x02_1d_3c_b2_40_d6_40_03_39_ad_5b_c5_35_b4_fb_b4_09_19_ce_6b_90_16_2e_51_ec_68_95_a7_ca_bb_43_75n,\n 0x12_e4_5c_46_c4_5b_66_0b_6a_dd_c1_49_e4_21_6e_eb_6f_b1_94_74_c8_cc_e4_d7_8e_34_c3_cc_18_02_4a_fbn,\n 0x0c_7c_86_39_4b_7a_d6_1d_8c_34_8d_18_54_03_dc_77_15_2f_d3_10_b5_d0_59_70_37_5a_11_b5_ab_d0_35_48n,\n 0x30_24_e7_8b_21_7f_85_d8_ef_eb_60_00_8f_f7_0d_33_c3_e8_4c_23_8d_9c_21_a0_41_21_b4_98_a2_fb_b1_31n,\n 0x23_59_77_10_1b_56_07_1c_ed_31_63_c1_ec_71_87_90_9a_3e_d7_67_9b_b5_4a_d4_08_11_ba_31_8e_1a_fc_81n,\n 0x14_bf_88_5e_66_f7_c0_1f_d9_74_ef_dc_0b_c2_d6_28_ed_79_ad_6f_c6_ba_51_1c_5a_8e_c3_83_e1_a7_3a_70n,\n 0x22_33_25_ae_7e_73_cf_09_3e_1d_58_91_aa_92_ed_43_f8_26_10_f1_28_3f_26_5f_56_54_8b_38_07_2f_38_d3n,\n 0x23_9a_5a_e1_38_dc_e6_a0_19_f4_45_60_ef_7c_19_d2_b8_02_5d_ad_f0_40_55_92_26_f5_48_70_d3_18_a5_7en,\n 0x01_dc_c3_51_15_d9_05_7e_fa_f4_68_d7_c8_a7_d4_60_48_e0_13_59_c9_74_85_5b_c9_97_38_f0_b2_47_67_2en,\n 0x13_59_a4_00_12_c5_33_25_87_a4_de_b5_60_4a_43_6e_26_9c_28_2b_a2_40_cc_a0_a6_d7_7b_34_3e_76_bb_f3n,\n 0x0a_9e_e3_97_12_22_3d_4c_0c_37_c2_6a_96_f2_67_c8_5f_c8_e3_1a_ca_ee_0c_07_35_4d_37_98_dc_50_03_e7n,\n 0x11_81_2d_1c_a3_67_1a_e6_88_a9_87_72_33_ee_b5_ec_29_86_8f_7c_d7_c5_e1_32_75_39_1a_84_16_7e_02_31n,\n 0x24_35_cd_69_9b_c9_49_85_94_5d_87_89_60_77_0f_92_98_d4_0c_0e_28_b6_b5_97_90_69_e0_59_09_52_f0_b8n,\n 0x2b_f0_20_78_5e_41_17_a1_ea_59_30_cd_53_55_30_3b_f9_aa_b2_a1_ea_0d_66_85_39_1f_40_ee_ab_2a_f0_a0n,\n 0x2c_ef_6c_78_57_7c_9e_97_a7_68_55_29_2c_a9_2e_42_69_ac_53_e9_b7_43_9d_ff_ba_c2_ed_a5_c6_75_80_24n,\n 0x09_a3_0e_00_c9_f0_f6_f2_60_f0_5f_02_9c_da_a7_c7_af_ca_50_6a_5c_e5_62_c8_77_b3_b8_d5_43_13_54_29n,\n 0x1f_d8_59_28_f8_c8_05_3c_9b_26_4a_74_f1_21_b9_0b_bf_9a_e8_06_3e_0e_89_67_01_65_b9_ba_66_a3_e7_cdn,\n 0x24_48_22_79_d9_ef_a5_78_62_a6_cd_45_24_aa_28_9e_69_50_60_6d_f8_cd_f8_fb_ca_ed_4b_67_4f_da_de_91n,\n 0x10_26_0a_39_cf_b0_d8_2a_d8_18_2a_69_51_f9_c7_80_a4_55_fc_1d_e4_8c_41_7d_6c_e6_b2_7f_36_46_21_85n,\n 0x25_20_78_27_a7_60_52_d4_89_bb_26_98_73_0d_5c_3f_c9_71_92_a4_42_05_78_d2_47_4a_37_ae_7d_7e_31_48n,\n 0x28_e3_6b_63_4e_cb_df_7b_8e_4f_9e_1a_34_7d_f9_5d_77_1f_15_d9_7f_2d_5c_40_1e_df_6a_6e_37_58_74_bdn,\n 0x07_3f_0d_ea_6f_83_d4_43_ee_3b_a2_7c_5b_7f_00_64_ab_7c_c0_d3_4b_ab_ae_85_9f_6b_f6_6d_46_a1_e1_65n,\n 0x14_c6_61_85_69_f7_48_ff_65_51_44_37_ad_bc_fa_97_f8_7b_9b_0d_16_90_48_e8_4c_55_3b_a9_88_8c_45_1en,\n 0x0c_76_75_a0_42_ba_6c_c7_4f_a5_88_a0_b2_6f_dc_4f_2d_1f_11_9a_0f_e6_ef_11_1b_e6_a2_d4_5b_4b_bc_adn,\n 0x03_df_ad_7d_b3_f3_2c_6e_d8_13_0c_43_cf_f6_04_db_e1_c2_9d_bf_f2_50_c6_84_c9_55_f0_9e_49_5f_b3_4cn,\n 0x20_11_42_81_fb_e3_5c_18_81_64_fc_6d_41_44_20_0f_c1_d9_ec_43_3e_fc_67_74_80_bd_2c_dc_b3_5b_64_e6n,\n 0x29_e4_2f_52_18_b1_ea_3f_ad_06_a4_8e_22_92_c0_fe_3d_f0_8a_2c_4a_82_3a_3b_e4_b9_98_95_5d_a8_a2_1dn,\n 0x13_bf_40_39_48_8d_94_b1_b6_a6_7f_25_62_96_da_eb_6c_7c_80_fa_d2_72_6d_6e_9b_e1_1e_17_c2_35_28_16n,\n 0x18_47_a4_e3_6b_3e_ac_e1_3d_e5_8f_a4_66_2a_9f_88_c9_c1_7a_46_4e_6d_bd_20_83_c2_93_8c_22_7e_e3_fan,\n 0x0a_7a_20_56_c7_b7_93_84_af_9f_e3_c6_82_68_30_14_5f_51_f6_f8_ca_5d_1a_34_4e_29_5c_a7_66_3a_da_27n,\n 0x18_12_78_ca_a1_5b_df_b5_94_0c_ff_2b_c3_21_6f_f0_6a_45_96_2d_49_79_df_c0_d6_c9_49_93_bb_7d_e8_6dn,\n 0x0a_8a_6f_4f_bb_a2_ee_09_a3_6d_39_0f_bb_14_85_fb_78_9c_f3_f9_f6_41_da_e0_11_52_0c_8f_10_e5_7a_43n,\n 0x08_f6_b4_c0_d7_bd_5e_4c_87_fb_c6_87_45_20_e3_32_9c_06_7b_68_41_fc_83_3a_a3_75_14_43_5e_98_7c_ean,\n 0x22_06_b2_c1_8f_32_92_e7_a9_a9_10_39_68_3a_55_d8_13_dd_91_4b_0c_7d_52_32_10_42_4f_f0_f2_81_7d_f7n,\n 0x01_86_ce_f5_c0_4b_3a_6c_32_da_26_40_5a_16_cd_d3_59_df_57_be_8e_93_29_1a_cb_eb_a3_f4_87_32_9c_fcn,\n 0x07_5a_ff_67_57_0e_a1_7c_7c_79_c9_11_4c_7a_10_d5_33_c6_08_0b_6d_15_a5_be_bd_12_04_fd_cd_e7_72_f0n,\n 0x2b_06_d8_38_9b_a9_62_1c_38_69_d2_e8_b2_5a_c1_5e_2c_97_38_9c_aa_f7_f9_7a_35_70_0b_e6_6c_16_55_a8n,\n 0x04_fc_6d_0a_6b_67_74_44_28_16_1c_b5_22_8a_94_e7_c0_e9_5d_ed_e8_04_b2_b4_7a_18_05_5a_cd_73_7a_ebn,\n 0x25_e4_a2_95_b4_e7_a2_dc_71_39_4d_41_ec_2a_8f_4b_12_4e_58_c2_34_44_8a_02_8a_2c_3b_c6_ad_25_e6_9bn,\n 0x00_94_c2_4a_b0_1c_6d_b5_94_fd_a9_07_b6_39_a7_b3_a5_43_01_43_93_40_e8_89_b6_ca_9c_b6_cb_a0_67_b0n,\n 0x27_51_82_1a_6e_3b_22_06_cd_6b_c3_cd_5d_98_cb_ae_88_50_74_5e_c6_cb_be_a4_13_e7_25_4d_2a_51_45_49n,\n 0x14_5a_ae_cc_24_e3_87_8d_b9_a8_d7_71_49_b2_41_9e_d5_b4_2d_f0_25_ec_bd_1a_8e_97_d8_b8_17_90_4b_b9n,\n 0x0d_2a_a0_0c_c6_e5_16_7d_84_5e_e1_87_7b_7a_a0_59_b5_e5_15_1c_57_e4_c1_63_da_34_03_f9_a9_57_55_f2n,\n 0x24_23_3b_69_86_1c_70_c4_49_eb_d3_6e_44_20_dd_fc_3c_24_2b_69_ff_6e_3d_4c_60_90_c2_bd_08_a7_64_c2n,\n 0x2c_55_fe_1a_75_14_7c_9c_82_6f_76_2f_83_6d_56_45_ac_41_84_ba_19_27_dd_56_a7_6d_c0_56_a9_89_56_67n,\n 0x19_77_9b_1c_b1_6a_9c_79_65_40_16_67_49_78_b8_b6_ee_1a_78_b6_45_79_de_93_ed_2d_67_b9_e4_9f_09_8en,\n 0x18_07_72_1b_a6_0f_ba_e4_76_ff_60_12_0c_1f_47_ec_0b_ce_69_2c_fc_00_10_2a_e5_0b_d9_37_6c_5a_22_a1n,\n 0x1c_02_08_f5_ab_a1_27_50_80_2f_bd_c3_bf_12_ea_c9_e0_0a_da_70_8f_16_7d_4b_16_7b_d7_d4_b0_3d_76_f1n,\n 0x09_0b_6e_28_ff_54_1c_c3_88_69_ab_e2_f5_db_fb_9f_be_88_8d_21_02_1f_29_d2_bd_db_91_27_d3_c2_73_ben,\n 0x19_3d_6c_7e_76_ad_94_eb_59_a2_00_10_a7_99_c7_bf_96_a8_dd_a8_c9_08_87_d6_52_14_c8_66_5e_cd_a0_1bn,\n 0x09_dd_d5_bc_0b_1f_8d_4c_4f_1a_7a_10_2c_1b_a1_2e_c7_e7_54_0c_da_28_5a_56_4e_a7_c4_75_3a_f8_a8_d1n,\n 0x30_0a_1d_d5_fd_a1_5d_1a_9c_fe_2a_28_78_01_81_71_68_72_1d_a2_f9_70_13_95_49_e1_68_11_f5_55_be_1fn,\n 0x15_20_90_8d_f2_ee_fb_a0_75_bb_41_cf_e0_74_0e_1e_5a_1e_e1_81_ce_49_20_16_e1_52_70_6e_49_3c_f4_70n,\n 0x0b_3f_21_5d_52_e8_5e_c3_c6_82_69_8e_bc_b6_22_82_33_ae_95_18_f9_45_0f_48_06_89_e7_cf_30_13_78_46n,\n 0x05_09_96_a0_7a_f6_76_5c_56_a8_ee_2f_73_66_50_de_b4_97_2b_fc_dd_b1_94_a0_ef_eb_19_54_da_a8_a4_d7n,\n 0x23_a5_93_26_da_f5_f9_4f_3b_51_92_c1_8e_d0_6c_c5_8c_d9_60_8e_44_13_86_86_39_9d_c4_f1_ee_80_7a_ddn,\n 0x1d_22_0b_9a_dd_05_92_86_68_98_ce_83_4b_1b_dc_20_03_97_6e_81_5c_0c_f7_d3_f6_b8_bf_96_7a_d5_64_96n,\n 0x19_b4_9c_4d_a3_d9_e3_a2_6d_36_56_67_38_65_89_23_47_7c_50_4e_76_a3_8a_82_b1_b1_24_71_04_f6_81_e1n,\n 0x13_9d_ec_c5_67_b0_6b_49_5b_d6_f3_cf_00_6c_05_b7_e1_f2_5d_5b_7a_c5_54_44_5c_37_dd_28_5b_ea_ae_7an,\n 0x1a_5a_7d_8b_ca_8d_4f_07_d4_cd_6e_9b_cd_00_c0_09_e3_09_9e_99_af_30_80_de_bb_b2_1f_90_f8_e5_b4_25n,\n 0x06_21_e3_81_1d_3d_cb_95_84_d0_a8_be_41_e4_31_d5_88_c9_32_74_c8_54_9e_62_5f_98_fd_15_98_3a_80_9en,\n 0x02_a4_1c_2d_2b_cf_14_66_4a_01_30_a0_21_da_a6_ef_d4_a3_b0_c3_ad_ed_38_63_5b_ff_97_e3_78_5e_d6_bdn,\n 0x21_cf_b5_4b_a7_2f_c0_67_94_94_7c_c3_bd_a3_3d_81_53_55_41_6e_2a_ae_19_08_4d_84_47_1e_ed_ca_39_9dn,\n 0x05_11_50_93_89_40_89_a2_02_a4_cf_8d_0a_ea_32_9d_83_cb_e0_ec_e7_41_16_0f_99_75_cf_01_b7_c8_5d_c6n,\n 0x2e_40_54_1c_ac_a7_65_32_12_82_71_29_55_9a_b4_22_a1_c0_6a_6f_48_c9_74_29_14_70_c6_5f_c0_70_df_b6n,\n 0x07_ee_ad_d7_30_28_4f_5a_b6_07_78_90_0b_60_30_0d_27_97_00_01_aa_63_e4_6e_bb_7f_9c_da_11_57_60_0en,\n 0x0c_f3_3e_49_64_d3_50_ad_f2_05_1f_8e_2e_84_48_d3_32_4d_24_d3_f4_85_84_07_f4_fd_60_d3_33_3b_d9_8dn,\n 0x28_7c_60_48_3e_2d_b3_13_f1_a2_bd_a9_2c_1e_1c_28_b6_5e_f0_b9_9d_f4_ac_fb_75_70_9e_df_6a_3b_fc_b9n,\n 0x28_94_40_f4_b7_fd_b8_b2_b2_26_61_d0_74_2e_96_95_13_9c_1a_1e_ce_f5_3c_3f_eb_de_0b_5f_6d_9b_b4_a5n,\n 0x29_1b_da_2c_37_fa_c9_62_a2_45_55_a7_ab_eb_36_d8_e8_b9_eb_25_22_2f_97_f4_81_7e_f2_e5_b0_bc_72_08n,\n 0x0e_10_54_49_58_94_12_40_4c_da_7b_82_f1_4d_52_75_94_ff_99_d0_4c_ea_89_4d_6e_cc_31_51_19_f4_2b_73n,\n 0x0e_60_97_f0_ad_41_8a_c7_12_3a_e7_eb_a6_cd_45_22_b7_ff_a8_dc_8c_f6_0a_1f_83_6b_e2_3e_41_ec_25_e5n,\n 0x22_fd_b6_76_72_40_17_af_a8_a8_06_9c_62_d3_07_aa_4f_f5_2c_14_45_ad_41_b9_4c_3e_40_6e_33_e0_de_f1n,\n 0x02_04_d5_94_ad_78_55_ad_0f_69_50_74_2b_19_e6_0c_2c_53_38_81_7a_ab_7e_e7_bf_63_1c_3a_a9_21_60_f1n,\n 0x0b_6a_64_3d_ad_3f_95_38_77_11_05_17_f7_b3_36_51_8c_8f_c1_1d_86_8b_c7_2e_76_cd_76_c3_b2_f7_dc_1bn,\n 0x04_18_9e_a6_c2_bd_4b_00_fa_63_49_ad_de_17_02_7e_b7_d7_63_53_a1_0b_d0_7d_09_42_63_94_47_cb_43_d3n,\n 0x23_bc_84_49_d8_98_a7_52_4b_2d_fd_e2_63_03_6c_ac_2e_14_93_51_34_f8_c3_ba_f7_f1_e1_3e_a2_de_ec_3cn,\n 0x00_17_ef_a6_08_d9_94_1b_c6_4d_39_e0_b2_59_3b_74_25_76_db_a2_57_fa_b3_23_d4_c9_9c_7a_42_10_7a_16n,\n 0x02_f0_61_47_5e_9d_88_88_b3_87_7f_93_08_e7_75_8a_16_f9_1e_3a_34_a5_85_6f_15_ad_0b_9f_2f_92_e2_b4n,\n 0x1f_25_7d_4d_6f_32_77_67_4a_06_13_30_d7_3d_6b_a1_35_da_7c_b0_cb_a3_18_68_68_72_fe_1e_f6_d5_2e_25n,\n 0x19_53_40_f6_c1_f7_b5_f6_15_88_84_bd_23_77_15_14_9c_ea_48_8e_db_fd_80_fc_9b_9c_c6_1c_38_48_53_abn,\n 0x27_3e_20_01_79_c5_c4_5d_86_0b_26_a2_0b_2c_08_53_c1_00_8f_94_24_59_d5_cd_be_d6_33_ed_e0_31_aa_1dn,\n 0x24_bd_0e_ce_a1_e1_df_97_af_0f_29_6c_0e_79_2d_67_6e_2c_8e_02_e8_08_a1_58_bd_be_01_43_1c_5e_4a_48n,\n 0x0c_6e_6f_0f_7c_20_81_1f_40_45_99_d4_58_af_5c_6c_b4_1a_b6_71_59_9d_63_50_df_38_e8_21_04_bc_68_35n,\n 0x1d_ee_13_52_47_02_35_cd_8e_12_9b_56_11_fa_95_37_06_bc_08_d5_8f_6a_3e_f3_d8_03_70_d8_d1_96_83_a2n,\n 0x1b_e0_cc_30_34_3a_16_8f_da_7c_75_7a_c0_c7_e5_e1_6a_fd_db_fb_72_65_87_80_80_72_5a_12_fa_12_ad_4cn,\n 0x1a_44_9a_bf_64_4f_68_a6_4c_21_7c_6a_04_2a_23_11_07_ca_8d_9c_61_92_08_58_0e_b7_6b_bd_92_15_d9_84n,\n 0x08_01_17_dd_e5_8f_22_8a_45_9f_59_d9_0e_64_ba_be_2d_af_47_6a_9a_2c_a0_18_fa_a3_c5_fe_ca_ac_17_89n,\n 0x24_ab_9a_16_7b_61_85_5e_0f_2c_60_bf_f0_98_d5_eb_7d_15_16_6f_ab_51_f2_b6_2c_80_9d_e3_18_d6_d1_76n,\n 0x2b_56_ac_a9_d5_95_46_05_03_36_32_92_bc_cd_c8_0e_82_32_01_f7_1b_54_bd_a6_84_c9_3e_b0_89_37_84_f6n,\n 0x05_73_61_ec_23_c8_7b_30_08_0f_f1_cd_f3_46_7d_57_c9_5a_12_af_bf_c4_8a_b5_e1_e4_de_01_62_a4_1b_5an,\n 0x1b_ae_d1_77_17_7a_25_ec_bb_fa_f4_f2_04_d9_92_1e_ad_e3_68_9b_a1_37_8c_d9_36_2c_c1_41_45_08_9f_95n,\n 0x00_cc_db_6d_5f_49_13_d7_65_68_89_c3_12_97_5f_db_e0_e0_30_9a_84_18_49_fd_80_8d_75_f5_93_a7_14_81n,\n 0x2c_52_f5_e1_ef_57_de_5d_de_52_84_71_cc_1f_0e_e7_83_99_29_df_98_ee_74_3d_9e_ff_96_25_15_56_19_10n,\n 0x02_34_a4_a3_2f_76_7f_2e_1c_a4_8d_ad_3a_2f_dd_3f_f5_4b_2c_a3_d5_3c_e1_3f_c9_05_24_14_ad_7f_75_55n,\n 0x18_2b_4c_0c_55_1a_b0_ce_19_90_b4_72_27_8f_79_4b_a9_cc_62_ab_cc_90_a8_9e_fd_d8_07_76_55_8e_34_33n,\n 0x00_1a_b2_bb_db_d0_43_d2_d7_d1_a4_eb_76_db_4d_e7_1f_dd_f1_9e_df_10_d7_cd_b9_55_0e_18_46_e5_3f_d5n,\n 0x20_6e_6c_d1_e3_15_4c_11_3a_76_2a_62_8e_24_94_09_07_b4_1e_90_e7_c2_d4_3a_a2_56_ea_52_49_97_83_58n,\n 0x27_81_6c_ab_4b_ec_18_57_7b_d3_35_bd_af_82_98_79_8a_26_1b_b1_75_13_71_77_d4_6b_a9_5d_d0_3d_c8_bbn,\n 0x16_80_b6_32_a0_4b_e3_eb_1e_d6_4e_f5_89_44_0b_3f_95_26_b2_ad_82_cf_0b_88_39_d3_e7_b0_f5_85_bc_8cn,\n 0x19_6b_2c_c0_e6_e0_76_28_df_82_34_f5_8c_02_7c_19_0c_75_b0_34_25_11_ef_ea_4c_37_24_c4_fe_dd_6e_75n,\n 0x29_ab_0b_60_65_eb_be_fc_68_46_08_ac_c6_bf_3b_5f_c6_93_77_0c_38_bf_91_b4_be_38_fe_6f_72_64_74_86n,\n 0x22_4c_e8_14_d3_9c_38_2d_a2_d6_5e_cc_d9_de_b4_80_56_ed_e1_8c_5e_fc_b8_e2_55_15_b7_27_e5_40_a8_59n,\n 0x19_5e_1c_b2_8f_38_a9_cb_57_b2_c7_19_b5_04_f5_fd_d1_d4_25_59_b6_a3_68_26_4f_d0_fb_fe_fa_66_55_9fn,\n 0x0e_9e_5e_b7_0f_44_90_ba_6d_bd_1c_0e_e1_d6_72_4c_cd_d5_8a_cd_f1_38_78_5c_e9_8e_e3_84_8f_fb_78_40n,\n 0x19_95_c9_c8_e5_20_01_4e_44_12_ec_65_38_39_d7_81_54_8c_f7_1f_46_fb_eb_51_91_95_82_22_6c_bd_5b_21n,\n 0x08_86_09_5c_c3_76_c8_7f_a6_53_00_02_83_a6_ea_e1_10_08_98_2f_27_10_4a_fe_e1_98_fc_37_7f_26_e3_24n,\n 0x13_76_1e_20_6b_3e_89_b2_3d_e2_34_2b_fc_a8_60_f9_b0_d9_a3_6d_48_6a_a1_15_56_5f_9f_52_36_9c_12_4dn,\n 0x22_a8_c6_cf_c0_e3_8a_50_0a_47_51_5c_51_9a_d6_a7_25_06_ec_0d_50_8d_e2_59_42_c1_0f_51_f0_df_ab_81n,\n 0x18_98_5e_9c_7e_a6_f1_a1_69_62_e4_e2_7c_f1_aa_4a_a3_08_69_38_b1_3f_8e_e9_46_5a_5e_c7_be_bd_ee_03n,\n 0x21_5b_52_3c_e3_f0_55_c9_2e_b1_48_c0_00_27_d1_ad_40_6a_2a_bd_64_08_10_43_e0_d1_54_92_84_5b_31_a4n,\n 0x01_02_f7_8c_75_13_b0_93_b8_85_72_6b_7d_f2_e7_02_98_80_1b_3e_40_19_cd_d4_22_39_d7_64_48_58_8c_31n,\n 0x0b_ce_88_60_2f_d3_a0_f0_ab_88_85_89_1a_d4_40_45_05_8f_9a_ce_11_fd_ab_d2_4e_8d_fa_1b_0a_4a_e7_27n,\n 0x07_45_f7_60_f8_d4_66_fc_21_04_3e_22_92_e6_cb_b2_0b_62_27_51_7f_52_00_25_11_29_c5_48_1f_52_fa_4bn,\n 0x04_06_de_38_07_44_5c_6d_3c_bd_f7_b1_74_c4_10_a9_98_a1_53_0f_cc_a9_91_53_5a_2a_26_2d_e4_e2_ee_56n,\n 0x26_77_9e_73_46_34_90_68_db_ba_66_f7_84_f8_7e_24_3c_c2_7c_ab_59_e8_87_f7_ed_7a_01_17_88_7d_1a_cdn,\n 0x25_15_06_52_a0_8a_f8_ca_57_4c_7c_5c_77_ff_d9_8b_17_25_9a_1d_91_4a_6e_a4_1d_b7_50_14_26_79_49_d8n,\n 0x00_bb_8d_13_43_80_40_f6_74_a7_9e_d4_22_02_c5_bf_6e_67_de_6f_c3_f6_b6_5c_a8_37_ce_ab_79_5f_cc_6fn,\n 0x0c_1e_bf_40_ee_aa_c3_d4_a1_92_dd_50_ee_25_c0_06_7f_66_ef_f6_22_9d_04_5d_5a_80_10_67_63_9c_cf_2cn,\n 0x1a_39_73_1e_b3_2f_db_51_dd_79_37_54_f7_61_03_b5_ca_b8_69_47_aa_d1_2d_49_0d_49_51_93_2f_f2_07_27n,\n 0x2b_aa_d3_d4_1b_18_ae_10_c4_63_af_16_62_ec_b2_8c_69_88_52_4e_dd_ed_36_94_36_72_a0_e8_57_b9_60_f8n,\n 0x2e_77_8d_a1_51_8b_6a_4f_ad_2e_83_3e_41_46_6f_b2_fe_82_f4_f8_df_1b_5c_21_8c_dd_3b_7e_49_af_67_e1n,\n 0x15_6d_c7_17_93_0d_64_90_16_77_43_91_1e_9b_f4_d4_63_4a_e0_49_b5_3a_da_b2_81_69_86_45_f8_b1_6d_c6n,\n 0x11_7f_2e_f1_71_26_92_ab_9d_bd_c5_1d_b4_96_8b_45_f5_e0_10_4f_9e_52_81_32_93_49_d9_08_b2_3e_23_1cn,\n 0x0b_28_1b_5d_9d_d2_ca_1a_92_e2_d8_3b_50_87_b6_a0_8d_6a_b0_83_30_f4_75_12_aa_04_7b_2f_88_ba_68_ccn,\n 0x1c_28_03_76_6d_d9_09_65_67_a3_36_60_61_76_4f_8c_91_6f_2a_2d_d6_40_b6_ee_c0_94_2c_cb_75_d4_07_67n,\n 0x12_01_74_d5_3b_a5_7d_1a_14_1b_f4_0e_4c_70_56_83_66_8b_d5_58_00_00_0a_ab_6f_34_76_6b_7b_65_75_a2n,\n 0x0c_37_b2_50_20_f8_c7_6e_a5_53_6d_e5_4c_72_2e_47_d0_17_95_d3_1b_5e_d7_34_66_e7_d8_b8_ad_37_6d_46n,\n 0x0a_50_8f_34_5c_c9_a8_b0_c3_0b_a2_76_51_ba_1c_3a_d8_39_80_25_a4_00_0a_5c_25_00_22_8c_44_fa_91_b8n,\n 0x12_af_a4_9f_f4_d8_b4_c6_c3_72_f7_e0_65_84_07_83_cb_94_97_ee_ac_c8_47_a3_40_f6_1f_18_23_cb_2a_8dn,\n 0x29_fc_37_eb_5e_c7_cd_00_48_09_51_6b_7a_a3_c7_16_f4_f7_f6_e7_77_2f_44_3e_07_30_b0_1d_d5_07_1a_55n,\n 0x20_48_fb_9c_1f_da_ce_d0_fd_c5_15_94_90_db_29_77_e5_7d_bc_bf_f7_51_4a_d1_e5_2a_27_1b_f8_4d_d1_a8n,\n 0x00_a6_c4_22_3a_ab_e5_83_e8_99_bb_cd_03_14_a4_74_31_81_f1_d5_e0_3d_bc_11_c8_a4_d0_25_50_fa_b6_4fn,\n 0x15_f4_62_ab_5b_21_c3_15_57_e2_5d_9c_22_d8_dc_6a_0c_ca_93_c8_ed_68_a3_56_55_cf_f7_45_68_67_64_d0n,\n 0x27_bc_1c_9a_f6_8e_df_8e_37_30_19_71_24_be_55_9f_14_72_e7_e3_bb_a0_d3_5e_07_9b_2d_1b_9e_42_71_efn,\n 0x1a_2e_c1_48_f9_00_ee_ae_38_c0_d3_d6_ef_da_64_e1_46_92_9c_71_eb_82_da_31_39_a3_a8_59_68_ec_6e_bcn,\n 0x04_ff_41_cb_55_3c_a6_16_d0_61_65_45_92_2f_20_30_b7_1b_23_54_bc_d1_c5_5d_7e_ab_ca_ea_89_04_c2_2en,\n 0x2f_2c_4e_7b_18_a8_45_fc_d6_ad_d6_70_09_fc_23_7b_14_a9_84_61_92_60_a7_b3_d3_87_12_e0_3a_08_49_b7n,\n 0x22_92_5c_60_6a_1f_09_1c_1d_5c_71_22_f8_e1_a8_ff_ea_6a_14_00_31_10_68_26_ac_53_a9_c6_9d_84_c0_abn,\n 0x10_e2_a8_c7_b1_2b_f7_02_66_c2_57_57_3c_a2_59_4d_88_11_63_3f_77_82_2d_7c_23_2b_32_9c_5b_4e_72_79n,\n 0x17_12_31_95_95_ae_46_49_92_52_4b_f8_e4_88_b7_83_fa_45_b3_54_8c_d3_f1_62_d5_86_bc_e3_1e_c7_18_4cn,\n 0x2e_96_16_98_7d_33_33_38_8e_a5_a1_cb_56_b4_c1_61_f2_79_ff_19_45_4a_64_ad_e4_3d_ae_d4_dc_da_5c_0bn,\n 0x2c_68_21_0d_75_66_0d_f5_d9_a8_39_2a_28_05_ea_16_12_fc_61_37_cf_5b_35_a6_8f_c1_f0_3a_cf_bf_e4_can,\n 0x05_3c_f3_70_72_83_df_87_30_b6_e1_f6_37_d2_3c_67_b0_b3_53_30_61_a3_5b_cb_0c_b0_f9_bb_e4_e8_ad_c2n,\n 0x07_57_74_91_48_3d_03_d7_76_9d_ac_c7_96_07_b9_89_70_81_c0_09_5d_ec_dc_e3_d2_27_c0_59_dd_ed_db_66n,\n 0x05_63_9b_23_24_c0_b0_af_81_c5_b2_56_ca_6b_2d_46_b9_5e_af_85_5f_c2_6c_ed_bf_90_41_13_12_de_4a_12n,\n 0x0e_c9_09_44_eb_8f_c3_6c_52_f3_fd_13_76_37_14_f4_1c_ea_1f_f4_87_ea_39_d7_0b_d9_4e_9b_7f_8f_16_d5n,\n 0x1e_96_cd_3a_c3_45_bb_2e_5b_d3_e7_55_92_2f_84_af_af_30_3d_6f_b2_27_fc_68_f7_03_b9_36_65_f5_ea_96n,\n 0x04_08_42_54_05_c6_6b_aa_7d_49_85_8e_6d_58_71_e5_b4_2f_fe_bb_0d_f8_85_a8_24_94_2d_a1_e2_e3_6d_58n,\n 0x28_4d_77_56_6b_42_f3_91_3d_41_eb_b0_52_8b_89_94_26_e0_80_5a_ad_b9_95_7a_53_4b_02_2b_08_1a_a9_77n,\n 0x0b_04_4e_59_84_88_7c_da_33_7f_58_c7_ca_50_a7_81_26_de_b5_62_4f_64_45_16_23_94_27_94_8d_7d_06_bcn,\n 0x04_86_97_21_79_ee_34_96_79_5b_de_d1_c2_fc_96_74_c0_c3_f7_1b_58_15_0c_9c_52_50_63_a6_f2_b3_40_d8n,\n 0x25_b7_56_83_16_c4_b2_fe_f9_b7_25_43_b6_03_3b_31_7a_7b_fe_40_66_23_e4_7c_b6_8e_5c_79_29_6e_6b_een,\n 0x0c_ec_9e_74_c3_44_19_87_03_ce_ff_28_a4_d1_12_75_f6_c5_c1_57_38_aa_5a_54_a1_92_69_26_1e_c6_a8_a8n,\n 0x2b_cc_34_a9_93_45_17_4c_97_a6_5e_89_78_19_44_86_a9_95_7c_9d_73_6f_0c_a3_9b_98_13_08_01_d1_a1_14n,\n 0x2d_db_2e_bc_0a_c9_8f_64_98_c0_f2_be_2d_73_e8_6a_78_69_40_a1_e8_c5_58_d8_db_ed_8d_6f_44_b0_25_51n,\n 0x26_42_b4_a2_08_e5_03_e3_48_07_18_d4_d2_05_35_1f_43_da_18_3e_d2_84_ed_7a_38_5e_f7_cd_ca_80_be_a8n,\n 0x23_fa_bd_b0_9b_48_1b_c7_64_10_2a_e8_5c_cf_1e_6f_f7_1c_77_62_f8_ba_d0_4a_2d_e3_f7_a0_25_cb_50_87n,\n 0x0a_e4_ed_0e_a6_ad_b7_4b_9d_32_7f_bc_d0_1d_bf_37_f5_f6_c4_67_48_0c_8a_a5_f4_95_12_4c_f7_0b_82_3en,\n 0x09_03_4e_1a_64_6d_66_74_be_f0_41_af_a7_74_e3_63_4f_af_8a_dc_c7_c7_1b_c2_ed_6e_03_b0_b4_49_20_16n,\n 0x28_17_ea_20_b4_71_a4_bf_13_8d_ec_79_d8_4f_9f_6c_00_15_e0_ca_14_7b_65_06_83_df_4b_33_72_b5_5e_f2n,\n 0x2d_fb_7f_81_42_5c_2d_ef_6b_fa_4e_83_3e_51_e9_12_29_83_97_de_78_fd_2a_a1_7f_6d_1d_d2_f1_37_9c_a9n,\n 0x13_7b_5b_db_74_65_23_c0_51_d6_80_be_08_da_a6_b0_d5_4c_9f_f7_09_9f_2b_f5_ce_89_4c_24_a8_ef_1f_37n,\n 0x03_90_0e_c7_ad_c8_e2_8a_f7_04_68_33_db_ad_3f_a1_02_4e_38_2a_eb_e0_2b_cb_53_52_43_dd_ca_21_aa_85n,\n 0x2b_28_5b_6c_23_b2_5c_52_f2_07_98_63_c7_59_e6_a1_0c_33_df_8f_19_15_51_ea_d5_3e_a5_08_51_1c_b5_55n,\n 0x12_42_06_7b_e2_20_2d_1b_2c_32_b7_9c_46_4e_2d_6c_97_7e_6f_d1_2d_8b_35_28_1e_84_c3_75_86_46_13_d8n,\n 0x1e_86_90_f5_b0_a8_72_9b_95_36_ef_29_20_ab_e7_e6_f3_ee_e8_05_23_7b_15_8d_99_7d_b6_3b_17_52_5e_efn,\n 0x04_7f_51_13_e1_28_7b_55_72_c8_2e_db_36_9f_b0_f7_17_a9_1f_26_1e_f9_d8_17_64_a5_b2_79_ad_9c_13_ban,\n 0x2d_88_00_f2_1c_d6_77_4d_5a_6a_a5_8a_e2_cd_32_59_35_93_d1_73_b6_87_12_2a_4d_61_c4_47_43_90_21_05n,\n 0x27_4b_a1_52_1d_5b_c5_c5_80_64_7f_10_d1_a4_c4_ca_de_ef_08_86_85_d1_97_69_79_ba_d8_13_75_6f_84_b0n,\n 0x17_89_5b_7c_10_d6_a4_75_31_0d_34_a0_73_7e_fa_ed_dd_ca_8f_1e_ee_9d_8d_56_e7_fe_49_34_c8_b5_64_41n,\n 0x06_ee_d1_1a_e9_f7_0d_f5_ce_d0_9b_1a_6d_b2_58_97_8c_f5_be_ca_d2_f6_6d_15_76_1b_f6_1e_7d_c1_34_40n,\n 0x30_36_b5_21_c6_31_ce_5d_35_99_e3_7f_6a_5d_af_92_88_42_ce_fc_bc_d2_c6_bf_84_e2_db_5d_ed_74_8f_09n,\n 0x1f_52_d6_e9_ac_28_97_6c_5a_6f_bf_16_8c_81_84_78_64_5c_90_d7_2e_36_76_09_d7_d7_80_5a_63_67_48_2dn,\n 0x2a_0e_60_35_68_75_d6_ac_e1_05_59_32_b3_dd_9e_f3_9c_3d_d8_71_09_1e_96_a3_23_c1_59_6c_ed_b3_5e_6bn,\n 0x02_08_96_33_a6_19_4f_3e_d3_8e_ee_c2_c8_f5_4d_0c_7f_43_49_38_fd_eb_b9_c0_e1_83_0d_be_53_11_c3_8fn,\n 0x17_8c_73_d2_76_97_65_d8_53_83_28_3f_db_0d_76_94_57_cf_ef_06_12_ba_a9_63_33_6b_ac_12_40_b6_04_c2n,\n 0x2f_c2_0b_ca_ba_9e_3d_96_eb_cd_d7_10_e3_b3_41_83_7d_5d_0d_b8_49_e7_89_f2_8c_4b_e5_00_4a_fa_19_a0n,\n 0x15_1a_42_3b_ee_67_fb_14_d5_ad_27_9f_42_52_13_db_7e_0f_21_49_49_82_df_87_23_54_c0_1f_0f_4a_72_2cn,\n 0x25_d6_16_19_e1_35_69_0c_4e_10_e4_af_eb_4f_55_78_ad_0f_8e_25_c2_07_35_36_68_95_b3_1e_eb_cd_f4_7en,\n 0x15_dd_57_9b_bd_07_54_29_30_1d_72_95_d3_e6_85_d8_32_bf_9f_36_c5_12_77_d0_9f_2c_3a_66_4b_04_5c_d7n,\n 0x23_6f_a2_9b_81_67_8c_8a_10_9f_d3_61_c1_ca_90_ad_f4_42_3c_13_cf_5b_8c_c1_03_2b_72_83_bc_c9_59_b1n,\n 0x2a_80_cb_ac_9b_88_4e_20_36_86_91_bf_15_67_cb_73_20_53_7a_97_7d_a1_0e_53_c5_ba_ea_34_46_c0_1d_1dn,\n 0x11_d4_cb_89_57_93_7b_36_28_a3_b3_f4_d2_7f_27_6c_c0_c1_79_b0_c2_2b_2c_13_ff_fb_de_85_fd_91_23_78n,\n 0x12_89_bf_8e_c5_07_bf_75_2a_07_c9_b7_1e_fc_0f_80_0a_52_fb_eb_16_37_c5_01_0f_a5_4e_ad_ab_40_29_46n,\n 0x26_f8_42_b1_a9_93_94_29_7d_25_79_9f_2f_03_dc_9e_49_03_e7_7d_2d_dc_03_ec_2f_b1_55_46_6d_a6_f3_03n,\n 0x15_94_4b_99_54_b6_18_23_14_e8_78_fa_2f_9e_09_1d_cc_40_ea_dc_48_d3_7d_39_bd_d5_f0_99_05_c3_a3_69n,\n 0x07_42_16_6d_cd_8e_bd_85_76_a6_bf_e0_f1_fe_d1_37_93_92_8f_84_44_2c_74_65_a0_01_2f_58_44_26_fa_dfn,\n 0x08_60_3d_5a_0e_93_7b_53_53_b5_6b_05_76_8f_d5_0b_de_79_2e_72_fd_61_c0_63_44_cb_d7_35_70_7b_68_ffn,\n 0x0c_aa_17_11_c6_6e_93_01_b6_f2_5e_21_a3_16_83_d8_0b_f5_8d_86_03_2d_03_bf_d2_5b_97_77_ed_b7_4a_75n,\n 0x2d_65_06_da_69_5d_20_87_df_f8_7b_5f_63_6e_e6_76_fa_b0_0c_32_ae_45_c7_5b_3d_b3_45_f3_fe_74_a3_11n,\n 0x0d_92_44_b0_7a_f9_b6_ea_ef_f6_f8_40_49_cb_2e_01_d7_5d_c4_cb_68_53_36_06_e9_76_b8_b3_00_75_8c_84n,\n 0x24_3a_bc_3c_33_82_fa_a5_dd_e3_f1_c3_b4_32_04_2d_3f_03_0e_f6_a1_f5_40_1a_a3_7a_cd_15_cb_1c_8c_46n,\n 0x16_84_16_e0_a6_d2_75_d3_0e_da_39_89_24_2e_07_23_02_47_27_d3_b0_79_1b_06_f8_e1_bf_e8_ef_e4_01_98n,\n 0x1b_cd_ee_f0_36_93_d1_ad_0e_a8_0c_65_68_86_54_af_fe_63_4a_a1_4c_b1_1a_e3_a4_91_68_1d_9c_5f_8e_ebn,\n 0x02_f6_6b_fd_a3_d2_a1_bd_ed_b0_ab_8b_f7_eb_1c_4e_55_1b_ef_58_d9_4f_ad_7f_7c_23_11_07_e5_65_39_09n,\n 0x01_9f_68_02_17_1a_b8_2a_59_22_f0_23_fd_ec_c0_97_eb_8a_c1_fd_0a_1e_d3_49_af_e9_a7_b9_42_98_97_5an,\n 0x19_5a_1c_73_83_98_fe_ed_8c_76_04_68_a0_55_6c_23_26_45_a1_dd_86_2d_87_c1_f5_08_c9_49_ad_52_c3_aen,\n 0x0a_36_a3_a4_6e_6e_c1_65_67_df_ae_1f_85_3f_36_0e_6f_24_92_48_10_e8_38_cb_24_ed_1b_0f_ce_37_f1_e3n,\n 0x00_21_23_c2_9e_a8_7f_7e_a7_b3_5c_25_f9_e8_dd_3e_81_bb_c3_97_4c_3c_17_c6_07_cd_84_0c_09_f3_74_aen,\n 0x02_a7_17_49_9c_b6_c3_1f_71_f0_f0_35_2b_0f_5b_fe_f3_00_5b_80_e9_3a_52_0b_6e_42_b3_98_57_89_e2_d3n,\n 0x0f_c0_53_58_4b_0a_46_07_a2_29_3e_18_ba_a3_09_c5_2f_dc_93_3e_9b_a9_0f_d3_27_aa_a8_c8_cf_c4_da_a1n,\n 0x13_10_d1_94_21_29_73_7b_32_e8_7a_86_f4_57_30_32_b1_b9_9a_e3_c6_d7_1b_af_ef_7b_49_47_94_85_55_41n,\n 0x1b_fa_da_e5_3f_c8_29_00_f5_76_1c_55_8f_ee_5e_12_18_e6_b2_a6_65_7e_74_b5_40_96_9e_eb_49_e0_b8_den,\n 0x28_c0_8a_69_e5_f3_64_14_60_ff_2c_60_b7_57_93_95_65_0c_5b_6a_fb_39_2d_a1_42_d3_2d_e8_67_75_56_ean,\n 0x22_32_22_ee_42_b6_ca_99_7f_44_d6_43_ed_6a_3f_2b_04_0f_47_fe_8c_d9_22_16_3d_9d_9d_8b_26_22_d9_09n,\n 0x06_4d_ad_47_52_e7_08_ff_29_bb_08_42_d2_c4_52_a7_14_48_b4_39_49_34_56_90_03_1c_b1_25_58_88_76_a0n,\n 0x2d_5d_dc_21_79_70_43_99_6b_22_dc_ab_b9_a1_ba_6c_82_b7_1e_9a_1b_c5_91_9d_b8_be_fd_35_41_10_56_a5n,\n 0x26_31_5f_cd_9b_5e_1a_26_6e_c8_e9_f6_60_0f_5a_6e_0b_cd_b2_2f_92_6d_61_59_1e_83_fa_21_06_9c_0e_0bn,\n 0x07_59_27_3a_41_77_fc_de_ab_23_da_38_b4_78_fa_f2_d4_f2_2e_82_f3_46_aa_75_4b_0a_13_31_bc_83_71_een,\n 0x09_e1_33_00_ea_de_70_56_8f_a0_a8_40_ea_97_29_89_6d_dd_84_c3_64_d6_27_9d_34_a0_b9_d1_47_8f_cf_2an,\n 0x13_e9_7e_d3_c1_6f_ad_6c_b5_b7_bb_95_4f_27_8f_24_34_b2_2f_8c_c0_54_46_3a_14_5c_be_02_40_d4_f8_bcn,\n 0x05_cd_34_86_dc_a5_8f_4e_b2_21_bc_2c_be_db_8a_a3_02_7c_de_57_65_97_1b_b1_f6_1c_27_2c_5a_a5_1a_d0n,\n 0x00_5c_e5_23_f6_bc_21_da_f1_df_46_8b_12_fd_3e_86_65_e1_c1_69_78_16_a9_a6_71_a3_b2_b6_14_9c_7d_e4n,\n 0x21_03_06_6c_c5_df_55_e6_7c_d7_91_40_28_14_5f_b7_1f_08_9d_67_1c_83_c5_b5_37_ab_ea_48_2b_2d_8c_bbn,\n 0x03_9f_80_77_bd_9b_71_f9_1c_a0_50_2e_ac_cc_16_72_c5_39_f7_23_29_31_7a_af_81_73_d2_ed_d7_63_69_28n,\n 0x22_47_bc_0c_c4_37_37_05_b8_96_72_a2_20_53_46_e6_af_3a_64_22_e8_1b_4f_48_85_dc_3a_f7_ca_dc_c5_c5n,\n 0x27_bc_c7_68_bd_31_b9_d0_06_87_a7_e5_3c_3c_e5_3c_42_67_62_70_61_88_79_0e_a2_0b_2e_81_96_38_df_80n,\n 0x0d_91_ce_f5_1a_76_f7_a6_2c_51_c7_3a_28_09_73_2d_79_ac_35_01_59_81_4e_a5_36_48_73_68_cf_df_d7_08n,\n 0x20_a9_ec_dc_64_9a_26_38_8d_c6_8d_c0_23_43_a0_f1_67_ba_d4_6d_6a_a1_cd_00_85_37_f6_27_ba_14_07_30n,\n 0x23_13_41_49_a0_d4_56_7c_6d_fc_91_1d_5c_b8_0c_1a_10_16_22_0d_39_e0_c2_30_32_5d_ae_29_41_f5_28_bbn,\n 0x2a_07_50_7e_9f_03_0a_42_c6_f2_9c_cf_1c_9c_c4_f3_e5_a5_b0_db_f0_58_74_d5_ed_ad_c0_3f_e7_4b_94_74n,\n 0x1b_df_66_bb_1d_57_fd_78_8e_54_ef_29_f0_6f_35_fd_b2_72_9b_71_8c_e8_11_52_cf_3a_af_c6_49_66_11_0bn,\n 0x27_5c_33_d0_7f_9e_73_38_dd_f5_07_83_bf_15_8d_51_be_61_9b_f7_7a_12_02_0c_f5_63_0b_78_e7_e0_d0_b9n,\n 0x16_41_15_54_e5_5f_e6_04_a1_ff_1b_3b_5b_7a_fb_6a_2b_fd_0f_32_c4_07_0b_55_bf_1a_d2_34_e8_b2_81_16n,\n 0x07_3e_6a_c7_e6_af_22_75_57_24_9c_a1_a5_c5_52_22_a3_6c_64_1b_c2_85_1a_0d_fc_fb_60_83_1f_67_59_a8n,\n 0x10_a6_fd_e8_8c_5f_62_1d_74_85_43_c7_6a_21_8f_95_c2_02_bb_c3_ba_ca_06_83_8f_31_33_1b_05_56_e1_2fn,\n 0x29_c5_86_5a_26_58_8c_a8_a8_81_28_a0_72_c8_43_4c_c9_7a_1b_ce_c2_3e_13_6f_03_8d_29_dc_f9_6b_0e_b6n,\n 0x23_3e_0e_f6_ad_13_2e_d2_11_b1_91_1c_dd_56_95_76_fe_a8_c1_7c_a6_4e_4d_5d_d5_16_fc_ca_07_21_2c_1an,\n 0x09_6f_9b_92_b9_cf_2c_7d_66_44_08_a2_98_60_36_5f_5b_6a_dc_23_8d_87_8a_47_6b_de_d3_e4_d2_e0_b8_40n,\n 0x2f_c7_88_fe_8a_ad_4c_28_b9_43_bb_57_cb_90_ed_f6_d7_b1_f1_e8_35_de_1f_bf_31_92_e3_95_db_78_55_54n,\n 0x1b_ac_0e_d6_09_23_31_48_50_37_95_fc_5e_11_40_76_ef_7c_9d_72_2b_c6_48_dd_03_38_d9_68_9f_6e_02_3an,\n 0x00_1c_35_26_8a_a0_30_d6_cd_14_8e_10_6e_3f_c2_30_94_e5_61_57_3d_8c_72_a6_9f_c3_83_64_3e_2a_dc_82n,\n 0x2b_b1_f8_fe_5d_99_8d_0b_8b_92_83_7f_fb_27_bf_e7_a3_9c_e3_9f_f9_4f_c1_67_dd_cc_95_a7_20_2e_34_b2n,\n 0x1a_98_57_64_50_a4_3e_5e_70_5b_9a_f6_8c_d0_c1_45_42_2d_a2_39_45_63_0b_10_b8_e8_21_dd_61_f9_a2_b2n,\n 0x27_14_d3_7e_e5_06_ef_bc_2b_a9_94_10_43_fb_23_f1_6a_f9_66_f1_23_d6_53_f3_83_88_bc_bd_d5_0e_60_37n,\n 0x17_5d_04_80_ba_14_ab_f0_bc_b8_07_5a_03_f4_a2_a0_1f_f7_ed_75_41_39_17_b5_3e_50_ea_00_cc_2a_4a_d0n,\n 0x20_3d_e4_5a_03_7b_75_ef_63_76_17_50_dc_e0_8d_a2_be_77_09_70_1e_c8_15_8c_17_fc_02_6f_d0_84_d5_41n,\n 0x26_5a_ab_fc_78_b7_0c_a9_85_c3_29_08_0d_63_29_a1_25_60_f7_6b_01_cc_3d_43_1a_72_83_02_21_93_ab_f8n,\n 0x13_54_68_df_be_b7_0e_8c_2e_da_ff_ac_86_58_a6_c2_2b_2a_d1_52_0a_c0_81_9c_12_7a_f2_ea_5f_3a_87_a8n,\n 0x21_6a_41_e2_43_29_de_da_65_a8_a8_20_01_c8_4c_e8_28_6c_61_75_84_47_ff_1b_fa_9d_92_93_b6_71_1f_ddn,\n 0x28_87_ed_49_79_7b_d6_65_2b_ed_8b_b9_9a_e3_45_ad_70_d1_a2_7c_db_21_b9_46_0b_b6_fd_0d_4f_e4_82_e6n,\n 0x03_e2_bf_82_69_0c_80_4b_b6_ee_3c_79_da_bd_18_92_ea_53_a9_81_1e_24_24_a1_9f_ae_44_6b_8a_e4_9c_adn,\n 0x0e_6d_ce_1b_be_6e_9e_46_5c_be_14_dc_c6_15_61_18_67_41_46_76_dd_8a_8c_e9_94_66_49_b1_c4_e8_11_16n,\n ],\n // t=8 (7 inputs) - 576 constants\n [\n 0x12_39_92_df_3b_9d_aa_65_13_9e_c1_3f_bb_52_f7_d3_48_e1_34_33_36_84_c1_59_6f_eb_0e_8d_8c_3a_d5_96n,\n 0x2f_a4_6f_5d_ba_99_09_ce_99_84_a0_1e_2a_f3_0b_55_0d_fe_c9_78_be_92_b4_91_19_a3_95_9c_7f_62_37_03n,\n 0x21_d8_f9_4d_3b_d9_8f_0b_63_a7_aa_cb_17_5b_2c_ca_13_b2_dd_8a_8c_f6_8f_c3_6d_94_ae_29_40_1b_2d_2cn,\n 0x1a_8c_06_c6_10_46_e0_f8_dc_6a_39_bc_57_ae_a0_d0_7f_d7_db_34_e6_8f_73_57_9d_a8_9e_11_6a_f8_7e_b8n,\n 0x29_8c_d7_04_6f_58_c0_ca_b7_75_23_a5_8a_6f_df_d1_40_1b_89_e7_ae_5e_ef_49_94_44_2d_16_7f_7a_d1_d3n,\n 0x0e_ac_73_79_66_71_5d_f4_a2_0b_31_ab_69_3e_da_86_a0_7f_3e_83_0f_ca_47_5a_65_74_d6_7f_c5_f1_9f_63n,\n 0x06_b9_b7_18_bb_3b_6d_45_e0_cb_e6_d5_d9_a2_f0_96_a7_7b_eb_05_68_21_75_0d_07_22_62_af_2a_70_a3_3en,\n 0x0b_cc_da_d6_e8_b1_fd_fb_a8_46_a9_55_3f_c7_90_5b_3f_96_e4_35_d6_53_ee_c3_97_25_65_e1_fb_bc_30_2an,\n 0x1b_3f_f4_a6_bc_84_90_99_3a_bb_7a_00_23_93_cd_1c_1c_00_7f_49_24_0f_fc_2a_e1_f1_05_7c_fc_d8_c7_adn,\n 0x01_7f_0c_94_52_d7_0e_ec_df_5c_c8_b6_b0_b2_05_ec_2d_a1_de_59_75_0d_6d_17_09_75_18_31_b7_e4_ce_26n,\n 0x0c_f1_ab_80_5b_c4_7a_10_34_9a_e7_71_35_ea_95_a4_14_4a_6e_d0_71_8f_de_ed_42_97_1c_16_07_91_b2_69n,\n 0x18_dc_ac_ac_61_31_8a_f6_44_ab_0f_2e_61_ef_48_c2_9a_8a_ec_fa_02_82_e9_fc_32_5b_5c_02_87_10_3c_e0n,\n 0x16_fb_b3_bd_f4_06_6e_2b_2f_05_0b_89_b6_85_d4_08_71_16_85_db_7e_46_38_de_c9_0a_b1_cc_79_43_50_fen,\n 0x0e_ef_d0_b8_61_7a_1e_cd_77_11_ff_d5_f6_c4_cd_04_96_48_7a_1b_11_46_e9_f3_d5_32_75_af_18_fc_6c_6fn,\n 0x03_c7_07_d1_83_50_66_fa_30_e7_29_5a_09_7a_6f_f4_63_b8_5b_77_8c_a1_1d_9b_d2_98_8d_41_b6_00_aa_e2n,\n 0x06_3a_d3_f6_e3_f8_44_3e_09_08_af_99_ce_32_d2_c0_96_06_e8_4a_ae_5e_3a_d3_0e_d6_0d_7a_66_07_38_cbn,\n 0x2c_f6_7c_c9_cd_3a_53_13_d9_92_e3_15_01_0d_90_cb_50_1f_79_0b_be_35_a1_66_39_2a_51_d9_0d_11_73_53n,\n 0x2a_6e_7a_7b_f7_c1_90_d4_e4_f7_f2_58_d8_90_dd_41_78_0e_28_f6_b7_1e_89_37_16_f7_01_40_f4_40_6b_34n,\n 0x26_14_04_20_00_9b_6d_8c_73_14_72_3e_66_92_5b_ad_cf_98_44_0d_a6_c2_b9_7b_66_a5_2b_98_cb_df_1d_41n,\n 0x21_2c_61_11_49_d0_57_b2_ff_ef_c9_93_8a_b1_49_8d_3b_26_53_92_c7_34_80_b9_cb_02_27_69_06_e4_45_ban,\n 0x08_91_8a_b6_86_c1_a1_60_a5_5d_b1_20_10_b2_01_50_f8_26_32_dd_59_33_e2_7c_d0_11_29_51_8c_d9_e9_52n,\n 0x17_3e_f7_76_77_49_a3_24_9b_00_4e_ac_7a_a7_e9_4d_ab_20_d4_65_c6_5e_bf_4b_ab_42_2f_74_3f_17_d8_b0n,\n 0x04_9d_90_fb_54_9e_0e_25_79_0f_5a_65_70_75_5c_68_c1_3c_97_b1_8d_67_bb_91_99_dc_76_53_55_fc_b1_fen,\n 0x0d_1a_a7_cf_e6_ca_9e_04_8a_c6_ce_2c_da_40_c6_d6_4a_fb_b8_c1_5a_7c_d9_e0_22_25_66_f9_92_2a_15_47n,\n 0x2d_82_e2_cc_d8_bd_63_b2_ba_44_bc_0f_4c_b5_ec_88_14_2a_44_08_ac_f1_da_d4_52_a6_6e_82_19_f6_67_c9n,\n 0x2a_b7_3a_84_2e_0b_bf_e2_29_ea_11_54_bf_8a_eb_48_cf_2f_c2_89_b9_39_47_1d_6b_46_5b_72_02_eb_23_54n,\n 0x23_3f_36_bb_20_5d_d5_9d_04_53_10_06_44_08_c6_ea_f7_10_17_3a_11_8f_9e_d2_11_53_c9_9a_6b_07_83_fcn,\n 0x18_c1_4a_50_59_5b_8d_f3_21_24_bf_57_f8_b8_df_43_04_49_f3_59_86_24_2a_2f_f7_9a_64_4f_51_0c_ef_27n,\n 0x18_65_08_d6_b7_5c_79_02_ed_6a_19_48_f9_10_88_c7_cd_df_97_3d_8c_fc_db_4e_5a_5b_0c_ac_6b_5b_22_d0n,\n 0x10_bf_42_99_01_04_c3_9b_27_ef_0b_a4_51_b5_10_cb_b0_01_f8_ec_39_a3_13_d2_59_be_43_09_d6_42_9b_d2n,\n 0x16_3e_87_5f_d9_e0_4b_25_59_71_07_2c_0d_2e_76_14_ee_1f_3c_7d_2b_93_79_9a_a1_57_0b_f7_31_53_f3_acn,\n 0x29_25_a5_9f_82_c1_47_2b_81_20_98_8e_3a_f6_cf_24_c2_eb_ec_9a_9f_0f_83_0b_b5_c8_26_06_1c_65_eb_8cn,\n 0x25_ca_f9_ff_65_43_dc_c3_4e_2d_0b_8c_2a_f3_b3_6e_be_f3_d4_c3_fe_62_e2_93_7c_e5_90_a3_8d_f2_da_1bn,\n 0x14_cc_41_7f_d6_74_08_30_90_f4_46_3f_66_18_0e_4a_3f_38_ca_5b_a8_7f_48_89_e5_10_ad_a9_24_f6_b7_99n,\n 0x18_25_50_ae_d7_fb_3b_7d_92_ef_0b_91_f4_91_6a_c7_f7_db_3b_94_31_03_ae_7b_a2_e0_9e_c0_f4_a0_85_17n,\n 0x21_63_05_85_24_67_47_5a_9f_93_4d_3b_11_32_a9_96_42_fb_79_fb_6b_b9_1d_94_8f_39_1a_c9_e1_c3_f1_c8n,\n 0x04_23_b7_71_f7_21_57_16_cf_97_b3_a7_2c_cf_fe_15_6b_b9_f8_09_7c_77_a2_b6_dc_67_bb_58_48_68_9b_8dn,\n 0x22_47_cd_5a_f8_b5_ce_0a_98_3a_ed_e9_49_f8_1d_c7_d3_fc_5a_2c_bb_eb_8d_16_ad_43_fa_2c_3a_88_25_37n,\n 0x04_99_0c_e4_91_23_ed_1e_ca_92_df_7b_ca_2b_27_1d_07_ba_4a_e5_a3_0c_6a_01_19_f7_7b_51_c3_64_3d_2fn,\n 0x06_4e_8b_b2_9c_c0_72_af_72_7a_f1_b7_9a_f5_08_96_a6_54_8d_ec_41_ba_c1_0f_03_19_fb_ef_c1_bf_ef_9dn,\n 0x05_f9_be_83_35_1a_03_7f_57_4f_d0_f5_4d_4e_9a_e5_ca_db_93_0c_eb_51_c9_1b_07_89_4f_01_60_f8_fa_42n,\n 0x20_2c_e1_7e_96_cb_24_e8_98_6c_d0_93_51_ab_95_76_d5_a5_16_71_68_f9_d5_f3_87_7c_4c_5c_e0_36_29_b6n,\n 0x09_8a_2f_b5_cb_01_86_8c_de_64_24_c4_21_1b_95_49_b8_f5_50_a7_f0_3e_7f_cd_8b_51_21_51_6b_3f_45_2dn,\n 0x2c_bd_94_7e_53_2c_da_0f_8f_1b_89_9f_fb_cd_d5_e0_b6_b0_84_51_e6_37_fe_53_f3_b4_a8_ea_78_32_aa_27n,\n 0x0e_0f_a4_62_0c_fc_94_3d_a8_1b_40_b6_b4_2f_86_fe_74_e5_59_00_f8_00_64_5b_a6_61_37_b6_b7_c7_28_a0n,\n 0x2e_1c_a0_81_c9_6d_5a_bf_2c_c4_0b_37_97_c3_8b_0a_e8_a8_ef_5d_76_e6_d0_3e_9b_b0_67_41_c2_18_41_23n,\n 0x27_1c_f3_ea_7b_06_b4_e7_43_58_5a_e6_89_97_c0_14_35_42_e4_05_c7_08_55_78_71_81_16_3e_4a_c2_0b_45n,\n 0x09_de_a1_27_97_2d_21_09_ca_db_7e_96_ab_ba_75_77_c0_ac_00_77_31_2b_95_50_f8_1b_77_16_a9_2f_5e_abn,\n 0x19_82_cc_71_6d_a2_0b_11_95_25_c6_4a_3f_e8_5f_5e_31_ba_a9_7c_76_c8_23_76_99_96_37_d8_ef_1c_8a_07n,\n 0x22_66_00_de_8b_b6_5b_38_ec_f9_96_e5_bb_26_fd_62_88_c6_90_f1_6a_5e_ed_b7_30_d9_39_31_1d_0c_3f_f1n,\n 0x02_0f_7b_77_fb_bc_ad_99_8e_77_44_ca_27_c0_f7_c0_c2_55_0a_3d_b9_0f_e2_89_44_e7_3d_01_d2_4a_e6_cbn,\n 0x1c_2e_44_5c_fc_98_63_7a_ae_bc_2c_1a_b7_b6_d7_90_eb_ac_50_27_07_1d_10_57_a9_45_bc_90_43_7c_49_c2n,\n 0x24_4b_34_95_02_df_4a_33_56_3b_30_23_7e_e7_50_e7_9b_de_13_5f_0b_08_96_f0_d9_cd_e0_4f_10_04_17_1en,\n 0x10_86_0a_87_5d_80_bd_71_c6_26_7c_1d_54_b0_2f_b5_8c_89_0b_1c_ff_c3_5f_a7_07_fe_6a_94_94_12_81_cdn,\n 0x2e_ec_5a_dd_ec_c4_e2_46_50_db_be_a5_31_a0_fe_f0_dc_32_7d_c6_94_f2_29_b2_52_6d_2f_30_b2_c4_99_c1n,\n 0x18_8b_b7_15_0b_6e_40_62_4b_02_ea_28_21_ae_b6_b5_2b_1e_85_b5_b7_24_bc_0e_c5_12_f8_fa_64_11_82_can,\n 0x05_e5_60_07_da_bd_e2_cc_83_d4_98_37_1e_99_ad_a9_53_ec_d6_9e_13_5e_f0_20_4d_2d_3b_6c_c1_f4_9a_a1n,\n 0x25_53_75_5b_36_de_61_1e_d5_57_76_8b_b5_51_37_31_47_4a_0a_8c_dc_6d_ba_8f_04_f3_03_1b_07_68_7b_16n,\n 0x1c_f2_67_dd_9b_fb_6e_67_8a_82_c7_74_58_57_a6_3e_2b_57_06_6a_86_26_b5_2c_0f_d5_ff_42_41_8a_a6_5dn,\n 0x10_6b_2a_40_08_73_75_ea_29_88_b8_e0_70_0f_dd_71_d3_71_6a_f2_bf_d0_b6_b0_ca_6e_24_ab_4b_4c_25_e1n,\n 0x0b_97_8e_4a_10_db_cd_cb_c7_e9_0a_ae_2c_a1_96_15_df_67_48_19_cb_61_1d_93_b4_cb_f5_f2_ff_9a_0a_16n,\n 0x2e_d6_8f_fb_a6_a6_46_e5_04_76_66_b8_ad_69_f6_cb_35_ad_09_6d_6d_34_fe_1c_a6_7e_53_2b_51_86_bb_f4n,\n 0x23_c6_32_c2_fe_68_d4_f0_a7_1b_1e_e6_39_51_c7_2b_7d_34_97_97_f0_70_53_df_2e_d3_35_20_ea_3e_94_cdn,\n 0x27_fd_a5_f8_26_ce_6a_83_40_d1_2a_58_4d_4b_9c_84_f0_a4_ea_3c_9d_33_ea_e8_d6_c0_e2_3a_5a_98_97_e3n,\n 0x2d_24_aa_4c_07_72_25_6e_90_34_4d_20_d4_6d_fb_db_b5_e9_dc_13_2a_4f_b0_7f_af_8e_dd_aa_30_da_76_74n,\n 0x04_8d_52_c4_e3_d7_14_85_ce_6a_f1_22_ea_13_6e_60_05_3e_38_7d_77_36_9e_ed_f8_d9_bb_c6_63_fb_98_f7n,\n 0x0e_0c_1f_00_5a_17_59_dd_16_13_02_fd_b2_33_cb_ac_5f_e1_51_b5_c2_19_22_55_bd_75_7b_3c_ed_89_9f_92n,\n 0x23_0d_64_1c_45_52_e5_e5_54_16_e3_60_ea_a3_29_00_75_1d_e5_ca_53_e8_65_4a_f8_d4_22_ee_c6_27_ef_b2n,\n 0x02_ff_6f_a8_36_4a_8c_fb_19_e3_0b_e8_7d_4c_de_ed_9f_95_7d_d0_24_f8_13_8d_53_5c_63_80_a8_b5_d3_8an,\n 0x16_89_a0_47_62_a5_ab_13_88_f6_a7_25_7e_7c_72_83_85_13_c5_7d_a7_f5_46_a2_01_7f_f1_28_af_e1_61_71n,\n 0x28_8d_8c_73_25_20_42_50_e8_63_2f_42_de_be_e8_a3_1a_47_03_12_ab_2f_d0_0a_fb_c7_69_4f_95_b8_27_cdn,\n 0x23_99_61_35_af_9f_3a_42_a6_db_33_fd_55_31_9a_7c_ae_d8_da_2e_6e_33_80_68_d7_8f_54_08_55_2c_83_c1n,\n 0x15_d0_52_da_dc_e1_45_06_fc_cd_26_90_c3_33_f8_ec_ac_38_2d_2b_67_34_72_62_36_cf_9c_7b_e2_78_bb_e4n,\n 0x14_94_fb_65_e5_99_3d_96_c3_0b_f0_bc_e3_f5_6d_ce_68_a2_de_52_29_9b_48_09_cc_11_9e_37_d8_e0_42_e6n,\n 0x0b_80_0e_f8_74_9f_91_b3_07_94_7c_58_10_95_ec_92_83_c3_b1_31_be_5a_d5_bd_a4_20_09_92_fb_ff_05_3cn,\n 0x0b_ac_1f_53_d5_a7_d3_98_11_ba_e7_c1_a7_9d_c9_97_fd_d5_f1_27_0f_72_80_5f_b0_5f_5c_52_d7_7c_1c_b0n,\n 0x17_92_49_89_3f_a8_6e_e0_67_b4_7b_be_83_35_b8_94_2b_c9_21_ae_0e_08_2c_30_3e_32_b8_09_d9_39_78_6en,\n 0x09_85_a7_c9_b4_28_05_d9_10_a8_9e_2d_c9_56_3e_7e_34_49_fd_5b_40_1f_f4_d5_ea_c7_5d_ce_7f_cb_42_0dn,\n 0x2c_19_05_b5_f0_0c_92_7a_57_a1_54_c4_74_42_7e_31_f3_ca_ab_81_98_1d_62_1f_b7_fe_a5_25_cc_da_9b_fen,\n 0x0b_23_50_2c_e0_4c_0f_4c_b3_0c_0b_db_6c_4f_2a_4f_81_c2_ef_22_39_36_f0_7e_f5_78_56_f0_a9_bb_4f_70n,\n 0x2d_c0_51_c1_bc_f6_37_23_3e_a7_c5_e0_86_ae_d7_dc_de_b5_1b_7a_35_25_82_0b_dd_6e_b6_5e_57_85_19_ban,\n 0x27_3d_8a_41_66_dc_3f_53_b1_ff_24_c6_1f_1a_3b_30_07_a2_82_b5_26_c7_23_9e_ec_81_e9_2f_51_c7_41_aen,\n 0x25_79_88_be_7d_c2_57_a0_c5_dd_70_78_b7_2f_69_2c_75_5f_01_ba_3c_8e_57_d8_2d_9b_96_95_65_db_f0_fan,\n 0x21_3d_0f_e5_a3_e7_60_8f_a6_02_f5_b5_ad_5b_82_60_65_44_45_eb_d7_24_92_a3_2a_d3_99_1f_3a_5a_62_18n,\n 0x07_a3_83_e7_a2_21_bc_76_fb_14_37_0d_4b_3e_ee_8d_e5_02_60_1a_5e_4d_54_b3_37_0c_4c_50_2b_09_7a_8an,\n 0x18_ce_7b_3e_64_7c_e9_a3_a9_0d_0e_d9_aa_57_eb_9a_89_5d_59_6a_54_95_8c_c9_70_2d_8d_a2_19_62_3e_81n,\n 0x12_32_0e_e1_0e_fc_1f_81_18_d3_ea_69_75_74_ea_e2_df_af_8f_29_c1_83_ab_d1_23_39_2e_3c_28_29_90_0an,\n 0x09_3d_0e_13_04_c6_60_fd_da_fd_b4_82_95_92_8f_b6_a8_31_14_82_75_66_cb_cd_e2_6e_f4_c8_7c_9f_a8_9en,\n 0x29_31_b9_29_5d_96_e5_b9_73_64_b3_7d_ae_fd_a7_dc_bf_3d_c9_f4_8a_b3_36_4d_a9_dc_6a_72_34_d7_14_c6n,\n 0x1f_53_3a_1e_4b_48_78_c2_fc_2e_97_06_e5_41_d2_84_81_ce_43_b1_62_7d_0b_a4_65_96_90_6c_f3_28_16_24n,\n 0x25_17_cb_72_4d_12_ee_6e_bf_a7_b4_b0_d2_5c_f0_31_54_66_e9_8d_8c_ac_3f_fb_fb_1a_1b_cd_ee_0c_f0_64n,\n 0x00_e4_3d_c9_83_bc_8f_eb_ea_ad_40_13_04_44_ab_7f_91_87_18_56_24_14_9a_7f_27_44_92_d9_bd_83_89_ean,\n 0x18_6b_c0_9a_7f_fc_4e_dd_29_15_79_87_6b_77_c2_fd_3e_ed_0b_1b_83_f2_1d_df_b8_99_03_9c_eb_77_f3_79n,\n 0x05_d2_2a_2f_48_f6_46_58_e1_81_b8_ae_5e_72_e1_a9_42_79_6a_f2_bf_e6_ef_74_ac_9a_bf_53_ac_65_ee_b4n,\n 0x1f_00_6e_8d_24_63_63_6b_ca_78_7f_76_5f_d6_ac_72_3a_d2_c2_e4_66_ae_63_24_f5_d3_9f_3e_ee_58_f0_cdn,\n 0x28_91_3d_42_bd_f6_80_47_8f_fd_17_37_4e_89_5f_e7_79_9d_9d_10_01_96_f6_cc_c3_0d_c0_8f_39_a4_79_f7n,\n 0x11_b5_57_c8_d7_e9_7b_d9_9a_e5_f4_9e_82_33_08_bd_6e_22_69_42_25_d4_02_9d_fd_cd_83_6c_b7_c0_ad_7bn,\n 0x07_44_b5_39_26_e1_a0_ef_39_5b_b0_49_08_b1_33_26_ae_18_66_a6_89_83_c4_1d_e5_6f_b7_cc_7d_cc_e2_97n,\n 0x2b_fb_2f_24_56_a7_09_89_b1_65_fb_6a_3e_e6_f9_44_d2_83_62_93_5c_ab_e5_16_11_49_80_f1_41_42_2a_03n,\n 0x30_27_04_79_44_ec_82_ce_f6_24_0d_16_37_07_0c_62_2c_5d_28_a7_43_02_de_0e_fd_6d_4a_dd_d4_dc_2d_b2n,\n 0x1e_d0_b5_e4_b2_9a_eb_0b_5b_3e_b1_28_cf_03_17_59_cb_3b_c4_7c_c1_28_66_57_cd_fe_88_c5_c4_11_d4_a2n,\n 0x26_34_79_ee_77_e4_4e_8b_2a_b9_53_e8_2e_f6_3a_7e_4a_ff_48_f0_e7_30_f4_78_2b_22_5c_b2_27_77_10_4fn,\n 0x19_90_4c_84_e5_5e_1a_f3_14_7c_db_7f_3a_42_82_65_e2_0c_1b_bc_cb_ec_2a_5c_8b_95_04_17_ca_2e_e4_71n,\n 0x2f_a8_46_8f_ea_32_04_ed_2a_93_4a_1e_ef_7c_78_58_0a_8d_a3_0c_5e_c5_92_2f_ac_89_ab_92_ad_81_a3_a4n,\n 0x26_7c_0b_4b_19_66_2c_f0_9b_87_0e_05_f7_44_1e_04_2e_5b_96_2f_73_df_d7_8d_23_38_4d_c7_ea_71_af_a5n,\n 0x2f_15_04_67_50_41_75_54_09_94_6e_8c_5f_54_32_d3_58_49_ba_7b_ea_0d_12_51_25_47_ae_68_4b_83_ac_2dn,\n 0x20_41_99_d6_49_82_f5_74_32_7f_f3_f4_00_70_5e_0a_53_b2_5d_59_ae_91_ce_0b_9d_31_fd_bb_a1_ee_2b_0cn,\n 0x0a_08_75_54_e5_51_14_26_78_0e_45_77_57_c1_75_cf_61_87_a2_ef_b9_56_8a_3d_39_0d_3a_51_c2_29_7c_cfn,\n 0x2e_f9_b8_84_28_46_5f_53_5c_b0_41_19_f5_18_d1_c2_05_22_68_45_5f_1a_b1_45_cc_f1_69_3b_e9_24_16_abn,\n 0x2a_96_c9_f2_00_b4_77_eb_a7_83_16_fc_44_97_e0_8b_2a_43_84_b2_6c_97_c7_b4_ce_87_7c_b6_5f_f5_63_4fn,\n 0x04_32_93_e6_1e_f1_b6_14_85_0b_c0_15_dd_31_6e_2c_7c_54_f1_2d_2d_b7_46_f7_c0_cd_cb_0e_c5_51_cf_c2n,\n 0x1d_81_e0_e2_80_61_1b_f3_09_89_c1_a7_40_88_49_35_04_b8_18_b3_85_d0_4d_96_ad_29_8d_be_d9_a7_bd_fbn,\n 0x1a_d9_cf_17_b8_36_8d_98_00_2c_ed_2c_f6_ef_93_85_a0_74_c5_e3_aa_0b_2e_12_f4_b7_68_cc_48_04_bd_e3n,\n 0x19_b3_0a_27_11_9f_f5_0d_a2_73_4b_12_7a_b8_32_99_a4_b0_99_69_4c_31_ac_c1_82_ab_45_3f_c0_00_ef_95n,\n 0x13_2d_81_f0_0b_be_f2_80_49_01_c4_07_3f_cd_9c_81_7a_63_83_2c_30_d6_53_06_3f_67_fd_86_48_2e_19_98n,\n 0x29_2e_a3_ef_23_13_86_3a_12_76_b1_f0_e4_97_3f_a7_84_de_a7_8a_1e_c9_8f_4d_59_39_47_f6_a4_e7_39_24n,\n 0x02_8c_fb_5e_0c_41_b0_c7_7d_98_7e_73_7a_50_18_78_70_79_f2_ff_a6_50_10_2f_2f_eb_73_5c_7d_9b_ce_84n,\n 0x11_af_d7_5d_c8_43_53_e2_f9_c2_f0_5d_1f_3c_a7_34_eb_45_54_6b_92_39_62_33_a3_f2_9f_4e_8f_67_91_b3n,\n 0x1a_af_43_ed_6d_a3_9b_45_31_20_bd_03_12_f2_59_29_4e_a1_01_b6_78_df_f4_27_84_3c_0f_c8_16_40_9e_d6n,\n 0x19_db_09_df_83_38_7b_1e_41_85_cd_79_40_06_09_e7_9f_37_e5_a4_65_8d_be_e0_78_5d_ab_5d_cc_e3_28_68n,\n 0x02_9c_b3_dc_af_2e_bb_0f_5b_0b_94_9e_84_27_8f_ed_2d_11_db_8c_1f_cf_35_e3_81_89_af_ca_16_c0_cb_fdn,\n 0x28_81_df_93_52_d2_74_f0_cf_eb_55_df_8f_fe_b1_d0_d8_1f_cd_ab_79_40_82_e2_10_7e_1b_04_26_a7_30_a2n,\n 0x06_28_a0_f9_59_4c_15_92_06_c7_62_7a_8f_10_74_8a_1d_f2_ce_58_2b_76_04_a8_e6_4a_70_15_eb_dd_b6_5bn,\n 0x22_65_73_93_eb_7e_d9_f4_57_2c_22_cd_7b_9d_51_34_d1_fb_ce_29_5c_2a_95_f1_af_c6_44_1d_e6_0d_7f_b8n,\n 0x00_63_25_f5_09_f0_36_27_14_c4_85_0d_ae_d8_74_40_62_fc_f8_09_86_08_00_5e_7d_08_b5_09_bb_a3_36_24n,\n 0x17_1d_64_98_b4_2b_39_34_5d_56_e8_66_1c_cc_2b_57_6e_f4_49_b1_f8_e5_bd_c5_ac_72_d9_f9_3d_c3_dd_9an,\n 0x1b_e8_2f_3b_1c_c9_d8_49_59_5d_85_e3_39_83_31_18_6b_6e_4b_4c_bd_f4_3c_ee_ed_bf_04_73_53_15_a8_d2n,\n 0x15_47_11_be_62_f2_3c_d4_60_86_b9_31_1b_28_ee_ad_a8_d2_63_23_f8_86_4d_e7_e3_6e_55_43_bc_d7_a3_8fn,\n 0x19_ec_e5_d8_c0_b6_cc_07_fa_01_19_74_6e_7f_36_c9_c8_d4_96_ac_1e_1d_95_cd_5b_b8_d7_69_a6_74_5c_d8n,\n 0x26_d6_16_2d_8d_9c_9c_60_24_4c_bc_c1_bb_78_81_42_65_fe_f9_7a_53_a1_68_c6_2a_43_b9_e6_f4_cb_2d_16n,\n 0x28_bb_85_fe_f9_f6_58_84_e4_a9_9a_63_a5_9a_90_6d_58_6c_dd_88_bb_a7_c5_12_59_b1_fe_6a_37_5f_e4_afn,\n 0x26_7c_ca_c1_e3_42_71_97_1e_47_41_79_c5_80_05_26_ce_ef_2f_1a_6f_dd_aa_c1_de_22_99_e9_2d_9d_8c_e0n,\n 0x2e_6b_48_68_d1_53_90_d8_01_42_48_ee_c0_c7_f1_0d_8e_e9_ee_bf_a6_40_25_f9_61_ec_e4_9a_9f_fa_d9_85n,\n 0x17_03_90_23_ba_24_e3_7b_c4_cd_e4_97_e9_5d_13_4f_f3_5d_de_6f_e0_93_ed_78_8e_48_39_d2_bc_ec_f8_40n,\n 0x21_44_55_d9_1f_c7_47_c6_aa_99_08_ad_92_d1_9b_2d_c7_5a_84_65_11_83_dc_f4_3b_9a_25_63_20_c3_3e_57n,\n 0x0a_07_40_5f_03_6d_30_ec_77_ec_64_b0_34_b9_fc_5d_f2_cf_f5_87_7c_3c_67_b7_ab_23_b9_f2_d8_da_d2_a4n,\n 0x29_f6_80_72_84_b6_e4_35_cc_c2_fc_14_57_9b_ae_d0_a6_06_17_e0_ee_33_a3_58_cb_31_68_11_b3_d8_86_4an,\n 0x24_68_94_f6_07_1f_c9_63_0f_69_18_7c_b5_ab_50_6c_05_08_41_14_d2_ef_cf_23_17_80_b5_d4_b5_c4_a0_c6n,\n 0x04_22_40_81_b9_0a_67_77_4d_15_ff_98_e6_13_44_93_c0_19_26_f7_ec_25_05_3d_e5_62_15_c1_45_e5_da_67n,\n 0x0d_99_cf_e7_64_9d_1d_fd_29_2f_11_77_3b_ff_f1_ce_36_45_ce_42_12_78_7e_d3_69_c0_a0_6b_60_2b_ab_21n,\n 0x1f_c7_60_23_33_3b_a4_dc_0f_2a_8d_ba_fb_ba_1b_ff_33_b7_53_fd_77_e6_b1_bd_c4_c7_96_a0_31_b7_81_5an,\n 0x2f_60_e0_5f_a1_f7_44_67_35_a3_71_7a_9d_73_72_8a_5b_20_16_65_37_ff_eb_65_70_7e_5f_75_03_e8_ac_f3n,\n 0x1a_2b_75_08_92_1f_a0_54_f5_8c_a4_d6_ee_b1_33_45_36_63_c8_97_9d_62_16_ec_9e_e1_24_0b_8c_89_4e_80n,\n 0x0a_0a_ca_49_24_be_a6_97_9a_56_e4_7a_f0_bf_a1_9c_1d_b7_d7_56_bb_4a_ad_e0_a5_8e_5b_dd_d7_dd_cb_4dn,\n 0x26_2a_23_65_cc_78_0f_62_55_7c_85_45_66_fa_2c_88_22_e6_fd_ff_8e_ad_b9_09_49_fa_a5_ab_d6_3a_7f_82n,\n 0x19_ad_5a_88_2f_1d_c4_97_14_29_54_5d_da_3d_b1_85_7b_1c_a0_a2_46_76_8b_3a_2b_00_14_ba_5a_30_24_39n,\n 0x26_1e_33_60_fb_23_c0_8e_87_b8_f5_88_bd_59_f0_8c_ef_07_bb_48_a6_f1_22_6a_64_cd_c7_d4_de_7e_95_can,\n 0x06_9c_c6_7c_ae_46_de_d1_8f_dc_72_5c_9c_ad_9d_d6_4e_44_5c_99_02_71_b0_e2_d2_cc_c4_2f_dc_e0_bf_59n,\n 0x16_2e_21_89_6c_8d_1f_6c_2b_7e_c1_6f_b7_ae_7e_f8_c8_ee_19_21_6a_e1_89_a6_ef_2d_7e_bd_b1_ce_62_c8n,\n 0x12_8d_42_c0_84_44_d8_95_68_79_99_5a_10_5a_33_6c_42_48_ff_95_81_13_91_22_ed_9c_9d_55_46_4e_e9_b3n,\n 0x12_e9_39_1f_7f_13_1f_13_c3_97_25_c4_41_46_69_bc_c6_4c_7a_41_b6_76_4e_68_7c_ee_8e_50_74_33_e3_e9n,\n 0x1d_e9_88_e4_6c_2c_9a_1c_00_d8_5d_fa_fb_1d_a7_50_9b_cb_36_42_2a_ab_60_52_fd_1f_92_7d_f7_41_c1_70n,\n 0x20_02_cb_8a_77_9f_93_de_8b_44_d7_fb_08_cf_f5_08_28_e0_77_1d_65_01_1f_99_54_b4_24_e6_78_02_cf_0dn,\n 0x28_f6_e5_af_27_52_c7_9d_01_a3_c6_c7_d2_93_0f_df_b1_64_98_9c_20_f9_05_cc_fc_09_82_c2_93_65_d6_31n,\n 0x19_eb_ac_b5_35_4f_7f_27_2f_5c_12_d6_c7_1b_39_d8_9e_14_aa_a4_ef_bf_98_73_77_33_7f_fa_3c_02_6b_2bn,\n 0x05_dd_47_c6_95_cc_6c_95_e2_ac_d1_bf_c0_ce_33_5c_b3_04_a3_c3_38_0a_94_e8_b7_c0_70_68_2c_a8_69_a1n,\n 0x24_6b_c3_c0_37_a3_c9_ae_2b_ba_7e_73_57_8b_1a_82_5e_16_72_a7_41_88_01_cc_07_43_95_45_34_d9_c0_c7n,\n 0x1b_7e_e2_55_81_5b_a7_02_0f_0c_f7_8c_eb_98_60_81_5c_0e_eb_a2_68_a7_2c_ec_f9_e3_fd_1a_68_70_b3_aen,\n 0x1c_e0_4f_64_3b_c9_51_33_16_21_1f_dc_0b_c2_3c_9a_52_bd_af_4b_cc_d9_ca_18_59_0c_17_03_a2_d1_20_e1n,\n 0x2e_3a_65_32_af_a9_53_88_b4_1a_d5_9d_7c_27_05_44_5d_7c_e1_0c_88_d7_34_11_b7_27_1f_52_ed_4c_44_cbn,\n 0x1f_91_12_1f_2c_bd_1e_ad_2f_70_f4_f7_47_29_a2_57_23_72_1a_89_5a_87_d7_33_94_cc_9c_18_09_fc_cf_bbn,\n 0x11_08_24_03_38_8a_99_da_0d_e3_ed_7d_3b_87_3f_5a_bc_f7_1f_8b_ea_6e_35_8f_5b_0f_17_ca_52_76_d9_26n,\n 0x03_96_2a_69_1e_b4_2c_f5_ef_77_9b_ee_82_50_86_41_32_9e_d9_ee_b7_85_7f_1c_ec_c4_6d_c9_30_46_e1_f6n,\n 0x0a_67_91_0e_29_45_83_73_9c_2b_6d_18_ea_5a_d7_4e_14_1b_b2_a3_53_fc_dd_93_fc_3e_f8_3f_4f_d7_86_3an,\n 0x1c_20_f9_bd_13_23_70_9f_da_12_4f_71_e8_89_01_23_5f_44_c5_e4_82_87_bf_0f_43_b4_54_43_dd_cb_ae_5cn,\n 0x11_1a_b5_6e_19_27_4e_fd_47_39_2b_70_17_1d_fd_ab_0c_8c_ef_5b_6d_e5_79_de_67_f5_79_e8_6b_50_6f_bdn,\n 0x00_6e_6b_88_e6_f0_cd_f9_82_de_48_3a_a0_4b_b9_d0_fe_28_8e_e5_86_3a_68_92_91_5d_12_5e_ae_d7_86_b4n,\n 0x29_bc_59_d6_fb_a6_d6_92_e2_a5_e8_5b_a5_0d_6f_d9_bc_fc_cc_57_e2_bc_bd_dd_d6_58_81_af_44_5f_ff_84n,\n 0x26_1d_13_ac_44_1b_2f_30_09_6c_1f_7f_66_a6_d9_73_24_4c_2c_07_02_11_27_5a_37_d4_9b_1d_70_34_0e_ddn,\n 0x07_7f_8d_92_73_ff_da_37_ed_1e_a6_83_f6_93_49_71_5f_95_98_6d_26_16_3f_00_d4_1c_9e_3c_36_6c_cb_fcn,\n 0x16_78_f9_fc_6c_45_02_c2_35_26_7f_4b_84_1d_95_43_20_85_42_35_5e_d7_db_42_0a_60_9a_cb_8e_8e_bd_cen,\n 0x1a_65_b4_1d_c3_02_b9_06_fd_14_4a_59_4b_ea_6d_90_9f_72_fb_70_75_00_b2_70_83_7c_9a_24_95_90_07_5bn,\n 0x26_53_59_bf_0e_ad_77_72_64_d1_8d_bb_4c_46_64_30_1a_23_b1_05_79_36_8f_40_b4_33_71_0b_97_f8_07_a9n,\n 0x2e_94_4c_e0_eb_65_37_45_a4_56_32_c0_70_b9_31_d0_8e_cc_49_73_ea_09_1e_5d_c6_71_25_cc_90_45_e4_1en,\n 0x27_e3_02_5a_2d_3e_82_61_4a_4d_d0_55_0f_59_35_9f_56_43_b8_68_35_92_6a_ed_2e_b0_a7_aa_4f_06_21_9an,\n 0x0d_98_48_e0_d3_b8_bc_8d_43_e5_e6_95_4e_6f_01_81_98_6e_57_50_54_84_0f_23_8c_ab_4c_b5_b0_3f_ff_c2n,\n 0x1a_c3_aa_d8_15_d8_ec_13_b0_35_de_cf_67_a6_85_49_6a_87_b1_04_bf_57_ef_38_cd_a8_55_87_7f_ca_7c_75n,\n 0x0c_91_01_86_f9_12_ee_f9_5f_d6_73_ea_d2_28_1f_fd_0d_5c_e9_c8_0c_c5_1f_6f_93_1d_0c_75_b9_c0_a3_afn,\n 0x24_8b_63_a7_6a_02_4d_5c_f2_e4_2a_1b_f7_0a_95_4f_01_b1_84_9d_ac_31_fd_54_5a_7c_d7_4c_5c_3a_1e_54n,\n 0x1a_71_fb_a6_0c_d3_63_b0_be_3e_a3_60_4a_38_6c_d1_df_46_6b_5e_69_f9_35_03_85_8c_69_f5_a8_68_69_5en,\n 0x15_a2_86_9b_63_63_cd_02_a4_72_cb_ce_c5_c9_1b_fa_17_24_2c_ed_ea_b8_30_84_f0_ee_df_28_34_31_78_b1n,\n 0x28_13_c1_07_31_f7_69_45_40_ea_cd_e8_57_78_6a_b2_44_3f_b1_89_16_19_24_3b_8d_4d_9a_52_9a_73_35_48n,\n 0x2a_a9_69_05_ef_42_bc_1e_84_52_08_7f_e1_3d_c3_d5_5c_e9_40_62_93_6f_de_48_fc_29_f8_69_8e_d5_ec_50n,\n 0x0f_09_3d_36_9f_ad_0a_0d_25_5b_fc_31_1c_4a_58_dc_98_a1_90_0c_f3_59_b3_e7_d9_68_8f_65_91_b8_d3_84n,\n 0x06_8d_bb_c5_30_96_77_65_cf_7c_7e_69_b8_be_e4_ee_08_d4_86_b4_20_d5_33_96_26_c8_41_1c_a9_84_02_7dn,\n 0x1d_d0_ca_b7_15_70_94_1e_e9_62_bd_61_da_d1_cb_68_a8_ed_80_22_ad_ff_35_6a_67_fc_ab_3a_6e_af_5a_een,\n 0x29_a8_57_f0_84_ae_7f_2b_50_6e_fd_6c_fb_06_72_d6_3a_e9_60_cd_19_79_f7_8d_7f_55_d7_82_59_55_37_77n,\n 0x20_81_f7_71_3f_51_b3_93_0d_fa_0a_6d_f8_e8_36_11_bc_88_29_cd_1f_84_71_b7_e2_e1_7f_48_0d_85_3c_33n,\n 0x2e_ea_37_4a_60_ab_1a_20_64_8c_b9_08_e6_05_c6_d8_59_9b_a6_01_53_86_35_c8_cc_ee_00_ca_bc_85_72_7bn,\n 0x1a_1b_68_bd_29_51_13_1e_6d_71_95_22_33_64_7e_41_65_bc_41_2d_a6_d9_9c_21_97_aa_39_7d_8d_3e_e5_ban,\n 0x1d_ef_df_14_41_5a_78_d5_e6_f2_87_ae_6e_49_eb_b1_18_22_b8_73_4c_9d_f9_1c_80_e0_8d_e5_7b_2d_4f_2bn,\n 0x10_04_0c_c4_fd_20_ba_cc_a6_9e_26_28_71_38_be_4d_ac_94_04_0c_c6_22_4e_2b_fd_c7_66_61_10_6a_72_49n,\n 0x20_ce_67_f3_2e_82_3b_98_80_11_d0_c3_3a_bb_0f_72_5b_e9_6f_c9_ab_5b_2e_b7_10_12_f5_f8_0a_55_ff_40n,\n 0x20_2e_cd_50_c8_2c_9e_1c_79_f0_fe_13_65_18_b2_25_51_c0_58_c2_1b_6e_ec_e4_35_85_bc_d2_8c_c4_ea_87n,\n 0x10_fb_a5_0c_06_0f_ce_b9_89_d7_53_6c_36_92_f0_c3_24_33_38_21_0d_14_5d_61_87_92_67_98_b7_47_08_7dn,\n 0x02_68_09_36_e4_02_76_5d_d6_cc_fd_fe_2d_ea_71_9d_3c_50_7a_7c_55_11_23_c0_f9_dd_59_a5_8b_f8_dc_b5n,\n 0x10_2b_eb_4a_5c_4c_90_3e_ae_f9_ec_b0_d5_79_41_54_62_0d_7e_9d_e8_43_64_fe_05_83_be_79_b4_de_7c_fbn,\n 0x08_d0_1d_b1_8f_ae_cd_1a_26_c2_85_be_65_41_4b_f1_8a_b0_12_d7_ef_b2_67_5f_4a_e1_d6_f5_e1_37_06_22n,\n 0x11_2f_e5_d2_17_f3_3c_2d_2d_19_76_2d_28_68_41_36_6b_a7_82_b4_bd_df_a3_3b_da_83_6f_a2_de_41_90_10n,\n 0x06_48_85_f4_57_cf_af_e6_ec_e2_94_4a_9a_93_5e_fd_c7_17_af_fc_b4_44_9c_eb_31_a2_79_2d_5e_ea_67_65n,\n 0x0b_bd_c3_71_ab_6d_42_96_e7_3e_d2_07_8b_99_fa_47_d0_0c_44_cf_51_ee_c0_ad_4a_d0_aa_b9_c0_9c_d8_86n,\n 0x0b_9e_59_b6_99_aa_68_8d_d1_21_43_e8_90_b6_fd_0e_34_80_0d_6b_44_0f_5f_6b_6c_42_6b_30_ad_07_88_87n,\n 0x0a_5a_a3_1d_4f_ab_8e_10_9b_0f_df_c5_5e_b1_4a_5c_2d_92_67_d7_f9_86_b6_10_17_0c_e5_54_3b_fb_30_b7n,\n 0x03_23_9d_50_b4_a0_12_8e_39_c7_67_3f_2f_99_d8_8b_59_03_eb_1b_b7_70_4c_6c_0c_dd_4c_31_40_8a_7a_6bn,\n 0x11_a6_94_59_49_a1_82_75_9b_6f_1d_a6_0e_ad_af_2c_73_0c_ce_66_ea_04_6f_8f_5e_b7_81_e7_c4_5f_8c_9dn,\n 0x0c_50_2f_f1_be_d8_a6_87_26_80_3e_22_2b_87_d5_90_74_95_6d_83_4f_2d_63_81_7f_2a_9e_fe_d3_dc_93_1en,\n 0x22_2d_9d_aa_38_4a_e2_b4_0e_43_e2_74_cc_07_d2_db_b9_eb_69_88_d0_38_94_b6_fb_f5_13_36_63_4c_91_7en,\n 0x1d_f8_fe_0d_da_8e_51_97_1b_91_7b_0f_f0_f3_e0_5e_d4_b0_0c_09_54_53_51_a1_17_78_05_c5_0f_6b_c0_09n,\n 0x22_2b_b8_29_04_05_c5_b3_37_3f_1b_19_99_69_c6_d0_f9_ba_8e_b7_72_f2_49_7c_55_c0_f5_51_77_5b_26_35n,\n 0x07_90_2b_ec_23_d9_f9_1a_00_3a_92_8e_aa_ff_96_47_ac_03_02_89_dd_5e_ac_d8_ca_fd_d3_1b_93_26_4d_10n,\n 0x2c_70_6f_05_9d_6a_86_ea_49_6c_2e_46_93_d1_71_7e_40_98_ff_87_d0_5a_82_d7_38_fd_88_83_a8_2b_9d_5en,\n 0x05_ae_26_16_94_be_e2_44_6a_18_13_60_8e_de_c6_96_f2_52_92_2d_33_e9_42_80_aa_80_5b_fd_84_37_86_f5n,\n 0x18_6e_e2_ca_77_9c_5c_26_a1_93_ad_f0_ff_47_d9_f3_33_b7_50_f9_9b_77_65_50_11_c6_4b_3e_8c_cd_f9_3dn,\n 0x1c_2a_b6_e9_6f_68_e3_b2_cc_e6_da_34_65_b1_9e_3e_4a_43_7b_1f_20_9c_55_e6_ef_99_a1_ac_07_36_bd_11n,\n 0x2f_d1_7d_b7_e1_82_71_69_c3_2c_cf_c0_ad_14_d9_f9_7c_75_07_f8_ef_88_dc_5d_6f_04_b0_22_03_c3_7e_55n,\n 0x24_1f_ad_75_70_62_84_18_ab_97_48_ce_d5_36_46_c2_e1_00_ae_eb_d6_2a_6c_73_80_4f_08_0d_e6_6d_97_20n,\n 0x00_16_b5_b5_34_03_ee_6f_47_e6_10_0c_27_78_ca_97_0b_40_af_6b_e2_77_e9_8b_71_03_2f_89_4e_6f_6a_2fn,\n 0x00_0a_09_58_42_f7_18_e7_16_45_b2_e8_1c_90_b3_f0_85_7c_8c_93_5b_13_5b_0c_b2_5d_f1_54_1d_38_c7_ffn,\n 0x30_3f_2b_a0_4e_ed_f1_42_5b_5d_7c_c4_be_2c_50_88_b9_d2_ef_2b_f4_78_b9_e9_b8_ce_6f_f1_66_89_09_bdn,\n 0x14_94_43_51_42_c9_6f_c9_4e_8d_66_d9_b6_43_e0_19_16_3c_6a_c2_e4_e1_62_05_6f_a8_fe_ee_51_95_66_67n,\n 0x03_1c_db_b9_ad_28_ec_57_c4_e1_ac_8f_f6_6c_79_1d_04_b2_5a_28_ab_ca_da_e8_3a_55_73_e3_f3_d4_bf_ean,\n 0x0c_78_7d_ff_01_2f_13_6b_89_ce_35_16_c1_cf_86_79_28_d7_10_7d_21_8d_62_d5_1b_0b_2d_8c_c9_85_04_98n,\n 0x0b_20_b3_14_90_7f_52_2e_17_a9_d5_da_8c_10_fc_f8_8c_b9_56_55_6c_f0_77_45_7c_1e_4a_9a_d5_dc_0b_0dn,\n 0x11_d5_ca_df_d0_41_89_c6_c1_4a_49_e8_ba_67_83_54_0a_dc_7e_d7_0b_f2_5a_fe_25_df_9e_2f_fd_9b_c3_5fn,\n 0x08_52_30_9d_50_f1_45_38_c8_b7_d3_56_58_d8_9b_a3_0e_29_aa_b6_62_65_31_aa_a1_18_5f_f0_ca_b8_a1_ffn,\n 0x25_73_95_e7_c1_90_b3_cd_ce_5f_93_4d_be_a9_07_70_50_08_a3_05_93_c6_92_93_fd_71_05_62_26_02_60_4an,\n 0x0a_ae_37_af_5c_3a_54_22_02_93_5f_59_0b_66_7f_97_9f_b4_14_27_3c_c8_79_31_61_0a_4b_31_44_ae_bf_b7n,\n 0x1c_16_54_a7_7f_ea_fc_d7_fe_eb_a9_4c_32_60_5f_95_de_d0_3e_13_c0_8a_62_74_c4_7e_db_41_13_4e_24_44n,\n 0x14_80_cc_4c_b3_b9_d9_fc_97_b9_9e_34_0f_ec_19_82_3d_cd_2e_df_19_8f_70_95_ee_5c_70_a9_20_09_95_e0n,\n 0x18_71_10_57_86_91_89_12_6f_88_53_6a_cc_ea_48_82_a3_47_97_a9_dd_96_a9_4c_c8_7b_8e_a4_62_41_76_55n,\n 0x0e_9c_47_35_ee_79_7b_9c_70_83_3a_7a_6b_e7_c2_cf_cb_96_2f_07_0c_aa_a6_49_46_6f_df_9b_be_58_28_cdn,\n 0x2e_2e_38_cc_ea_7e_f6_c2_9a_92_2b_02_7d_31_d9_87_0a_c0_f9_d2_7d_e1_9d_70_03_9b_bd_1f_90_ff_74_fcn,\n 0x1d_66_36_9e_95_c2_e7_60_30_e3_80_d6_53_8a_93_27_8f_91_ea_5d_d6_0e_5a_31_6b_3d_ce_d2_7f_c1_37_a3n,\n 0x29_ef_91_02_b5_e6_71_ed_c0_5f_87_bc_ce_b6_d9_00_48_4e_7e_e7_40_2a_32_cc_c7_7f_de_2e_78_66_a0_83n,\n 0x21_03_b0_4c_17_35_f7_51_1e_b7_75_c7_33_4a_0b_b6_d6_26_fb_60_93_7b_a3_76_1d_ad_73_a8_44_78_e3_ddn,\n 0x0d_d1_b6_ba_84_a3_c2_9b_62_92_37_65_06_8c_f6_3c_71_1b_c1_d6_bb_28_ee_fe_38_a0_e4_86_1a_d1_39_63n,\n 0x1e_ab_4c_7f_aa_be_c5_8a_b9_b7_3b_2b_aa_f2_1e_42_88_0b_77_b0_f0_df_d3_0d_38_e1_c9_55_e9_dd_72_1bn,\n 0x00_2e_1a_3f_66_9d_fc_92_9b_9c_c8_4d_96_d4_89_ec_e1_14_d5_be_5d_b8_57_14_69_f7_74_cf_6f_6c_80_22n,\n 0x12_14_ca_42_4e_a1_51_78_51_50_d7_db_57_b9_3c_c6_bb_c8_d7_5d_19_29_93_84_60_a7_c6_7f_0c_79_1f_11n,\n 0x2e_17_4d_d4_aa_ff_f6_10_31_64_d9_16_5f_f8_31_9d_92_60_c8_62_18_51_0a_4d_91_03_41_f0_b4_e0_1d_38n,\n 0x20_b3_2f_4a_42_36_17_fe_f1_46_da_5f_1a_26_95_fc_ff_64_97_ff_ab_a3_0d_ec_f6_ff_e6_2a_e9_52_c4_35n,\n 0x29_f4_dd_46_8d_b0_87_34_91_46_8b_70_09_db_af_c7_99_51_f3_b8_3a_b6_4e_fb_8d_d2_e5_6c_c9_b3_1a_8en,\n 0x25_19_80_1d_e4_e5_8e_41_64_f7_f0_d8_69_94_31_1c_87_f2_79_a3_8a_fc_4c_b3_c4_d2_6c_f4_1c_64_2a_f0n,\n 0x2c_a1_23_fa_f8_75_de_4e_aa_d8_0e_ba_73_cb_2a_00_f2_2e_af_5b_61_09_ef_41_a6_5d_2d_28_6f_60_2c_c1n,\n 0x0e_fe_d6_51_a6_1f_a3_0b_70_93_7b_de_9d_02_b9_b6_a3_02_a1_aa_b7_06_68_7b_22_33_ae_9b_20_33_12_67n,\n 0x13_e2_1d_bb_fd_7e_55_26_bd_c5_07_5e_73_de_e0_ae_f4_5a_0e_d2_c8_80_b2_9b_7d_bd_5c_9e_64_39_ee_3fn,\n 0x2c_24_86_d8_5a_ad_bc_35_8b_10_65_dd_7b_14_95_7e_8c_f5_bf_74_51_af_cb_39_46_59_74_1c_f6_be_58_21n,\n 0x2c_97_a5_d5_b9_75_19_43_bc_11_e0_4c_2d_60_a5_6c_43_d9_45_b9_6b_09_82_c8_a3_f5_e6_3b_73_55_0d_6bn,\n 0x0d_38_76_b0_55_36_94_38_0a_dc_08_6c_c9_27_2e_17_70_e2_f8_6b_33_6f_f7_80_40_41_9e_5e_dc_cd_8c_f5n,\n 0x12_36_5c_7c_dd_61_6d_25_8f_9a_e3_50_4b_37_d4_4e_95_8c_81_6a_0b_ba_37_42_78_e8_b7_ad_79_ab_96_79n,\n 0x1b_60_35_4d_16_b0_18_43_54_0b_8f_c6_96_1f_f8_4a_58_eb_e5_e4_2b_46_d2_2a_eb_61_8e_2d_b4_ad_e6_5fn,\n 0x03_77_8f_c7_23_cc_d0_3a_d8_c9_0c_31_1c_14_19_63_de_a6_39_d2_52_4a_d9_72_d8_49_6d_12_9e_1c_24_34n,\n 0x2e_e7_21_dd_e8_52_87_9e_12_38_cb_7a_79_20_71_47_b3_d8_64_e6_c8_a1_4a_32_7e_2e_55_8b_9d_f5_76_62n,\n 0x11_02_0d_05_81_ff_8e_79_c8_f5_aa_4d_50_be_2d_c7_92_a0_38_bc_b6_1a_ec_4c_ce_a2_ec_4d_f2_d0_af_4cn,\n 0x1e_0e_92_11_93_e3_5b_3c_42_de_d0_03_dc_bb_ed_8e_ae_46_71_2e_15_e6_3a_ec_71_5f_3f_70_31_cf_4f_8fn,\n 0x2a_6c_13_d7_af_d6_63_6c_2d_4d_5d_36_f4_2c_09_ac_32_86_b6_77_03_ac_4d_2c_24_dc_f5_a3_ad_d9_02_0dn,\n 0x27_bd_de_de_a7_d8_d3_98_b4_b6_e9_15_2e_17_c2_d0_92_21_76_09_b1_09_c1_45_74_f9_32_bb_02_c8_84_40n,\n 0x2e_13_f9_cb_c3_56_72_8e_6d_2b_7a_5c_59_3a_a9_ec_c9_b9_00_bb_98_90_15_93_d0_21_d6_1e_ba_65_55_a3n,\n 0x10_9a_f3_37_73_e4_16_15_68_85_ba_b0_51_3d_c1_99_a0_04_5d_40_5d_81_bd_2a_15_16_90_bd_af_ba_3b_66n,\n 0x0b_f7_a1_21_a9_85_d2_0e_eb_eb_f6_24_f3_83_73_07_41_5a_e4_80_95_4b_f4_95_52_dd_8c_5f_3e_50_30_1an,\n 0x0f_78_ba_7c_3e_6d_15_d1_12_92_dd_12_1a_ad_45_94_83_27_1b_5f_e2_ee_56_a6_38_14_d5_db_19_29_05_67n,\n 0x16_25_df_03_5e_aa_99_2f_42_4d_dc_6d_c8_8c_1b_70_0a_c5_e6_d5_98_1e_2a_d0_df_9b_29_0a_56_bd_50_01n,\n 0x1a_c7_d1_f3_3b_b5_98_fe_95_81_ac_73_b0_aa_d4_e9_ac_e9_9e_ad_01_98_1f_cf_2c_50_2a_71_af_d5_67_62n,\n 0x2d_37_29_6e_f0_cd_56_76_d0_80_96_08_ba_34_0c_d7_b2_02_e2_e1_c2_54_6d_98_94_17_d3_03_ec_31_93_37n,\n 0x01_9c_aa_62_c5_23_8e_03_ec_df_75_bb_2c_27_6b_e1_80_5b_e3_fe_44_a9_57_d8_aa_3b_f0_7c_ac_f1_c1_14n,\n 0x0f_32_de_a1_04_32_0c_e0_f0_09_19_d9_0f_9c_6c_76_d4_96_88_27_91_14_6c_52_2a_8a_ca_ce_ae_3e_4a_48n,\n 0x2c_e5_d2_45_2c_0a_5a_9f_b6_5a_4a_64_82_f3_49_98_86_5b_e9_a2_9f_26_6f_88_a8_af_fa_85_0f_5e_c6_e5n,\n 0x13_5d_59_0d_e8_0a_0e_71_7d_a7_32_5c_78_1a_a1_67_a2_5e_5c_31_0d_92_df_83_12_0e_89_1c_ce_d2_4a_8bn,\n 0x1d_3c_e9_6a_7c_d7_9e_94_49_2e_32_b8_98_3d_62_fa_c7_36_49_98_50_72_2f_7f_e7_dd_15_89_70_6a_b6_93n,\n 0x0e_a3_a1_e1_f5_dc_a3_ff_7d_86_71_f2_fe_cf_b4_67_f6_a4_e6_51_6c_80_38_a9_30_6b_36_dc_81_83_21_b2n,\n 0x1e_d0_8c_4f_0e_16_d1_44_05_91_00_f0_5f_b4_63_09_8e_3d_86_9f_34_2e_0e_f8_b4_a4_7a_fe_74_a8_3a_25n,\n 0x0a_df_61_2b_c0_c2_4e_82_61_35_c7_de_0d_ba_90_fb_e1_bd_24_9f_74_24_f1_97_0b_52_e8_bb_24_d9_86_edn,\n 0x24_0c_42_4a_02_4e_59_be_a3_a1_4f_ca_73_d7_b6_38_69_eb_9b_68_74_6a_d9_c3_56_b9_3f_b6_ea_a3_e2_2bn,\n 0x24_df_ab_72_38_b0_5b_f0_8f_66_fb_e5_99_76_3f_63_d5_c7_0a_18_1a_7e_9f_e3_5d_af_04_79_e2_b1_cb_d4n,\n 0x16_0d_79_a0_39_59_c9_68_da_fb_76_ea_3e_08_ff_d2_ce_11_7d_09_4e_82_0d_5e_9f_7c_e1_de_bd_3b_b0_8cn,\n 0x1b_65_21_61_87_a1_ca_16_79_64_2d_4c_40_aa_05_bf_f7_25_bf_a5_02_48_aa_89_d5_7f_57_0c_2f_e9_34_5an,\n 0x24_35_03_ba_d8_ad_af_14_a8_e5_65_01_38_63_c1_3a_77_f6_f7_a0_ff_f5_71_c1_27_5b_18_f5_4b_d7_73_51n,\n 0x06_c2_ad_47_bf_4d_e5_74_ca_cf_ba_51_5d_18_dd_af_78_2a_8a_dd_fa_d1_c1_8e_e4_39_11_63_c5_41_a6_2cn,\n 0x21_43_66_67_3d_38_71_48_57_8f_ef_89_43_4b_cf_c7_e0_ce_4e_b0_86_61_90_40_26_b3_0b_a1_0f_3a_13_41n,\n 0x1d_b8_1d_98_b4_d4_d8_32_26_ae_41_31_30_1c_8e_36_22_a3_2e_2b_78_84_86_0e_85_25_7f_5f_7b_7e_6d_e4n,\n 0x29_d2_bd_bc_19_89_6e_8f_af_0c_e1_5d_7c_88_3b_cb_fa_a3_88_61_d7_c9_22_99_a6_be_f4_2f_7c_44_3f_0fn,\n 0x19_29_5f_72_c5_90_7e_8d_9f_8d_8c_de_cf_7d_19_3f_a8_64_04_cb_b7_a8_55_22_f7_fc_33_85_7b_7a_9c_88n,\n 0x0b_f0_15_76_07_70_cb_e8_e6_f6_90_80_f3_ac_a1_82_58_f2_cd_09_2e_33_d3_ed_62_d8_d1_9d_14_4b_ac_a8n,\n 0x06_cb_21_aa_c0_be_8d_c2_52_8c_39_74_72_4b_38_d7_3a_91_85_30_97_6f_f1_18_d0_87_64_cd_42_e0_b2_40n,\n 0x12_76_fe_2c_75_1b_a4_9f_d5_b7_5c_ab_5b_71_f6_4a_a0_58_8e_de_80_7d_b1_bd_58_3c_3d_6a_e6_94_13_56n,\n 0x2a_17_fd_80_41_ec_d7_62_f5_28_d1_20_67_a0_92_04_f9_29_6e_a5_73_74_80_6c_39_89_6f_e9_49_9b_98_cfn,\n 0x19_04_e2_bf_9c_05_12_c7_25_59_e7_1e_3f_13_2f_65_25_90_58_f7_d6_8b_9d_7d_6d_a1_a8_f9_f5_ca_f6_74n,\n 0x11_5b_5e_b9_92_33_a8_a2_20_01_70_73_3c_47_43_b8_04_c6_01_b5_d8_d4_65_6a_13_82_12_d6_6e_b8_9d_38n,\n 0x00_6b_58_88_5f_0e_09_be_6b_a9_11_76_fc_8a_61_72_bc_16_d6_80_f8_88_a3_d9_2f_31_a3_bf_21_3e_7e_f8n,\n 0x13_c6_70_4e_90_53_53_52_93_4d_cd_c0_48_3b_4b_b9_74_d5_0b_eb_7a_5b_6b_e3_0a_f0_e4_6f_bd_73_25_cen,\n 0x0f_bb_cb_96_cc_af_43_c7_73_ba_1c_e7_06_13_89_25_43_73_2f_ec_cc_87_29_75_b8_eb_73_e3_fb_4d_54_a5n,\n 0x05_9b_4d_f6_3d_bd_2b_b6_6e_0b_2a_82_6c_5c_bd_a9_6c_33_8f_cc_38_db_f9_e9_c4_60_41_91_8b_dd_8b_fcn,\n 0x27_d8_59_e7_86_8c_99_d8_0f_99_d1_81_e6_ef_7e_a9_3a_69_46_23_a8_9b_be_57_a6_c8_e7_ee_54_be_21_fen,\n 0x21_ea_ce_d0_8f_9d_0b_42_c6_fa_51_f5_9d_65_f9_65_98_e9_ca_50_d6_cd_1d_d4_9b_84_fd_c0_64_6e_d6_8fn,\n 0x06_81_5b_7a_3b_80_97_1d_05_fd_e6_d7_dc_5c_d2_82_33_63_f3_8d_0a_f5_c0_ff_8a_be_aa_71_a3_23_a2_a7n,\n 0x06_a7_78_d2_9a_ab_eb_b5_a3_cd_94_0b_1c_33_f0_55_51_21_7b_60_05_24_8e_0e_71_6b_d5_a1_0d_55_8c_6fn,\n 0x14_fe_9f_b1_f1_67_c6_25_7e_a0_10_08_81_15_76_9e_62_b6_0e_f3_ad_d0_f3_a2_2c_9f_e7_a4_91_8e_94_c7n,\n 0x09_03_05_df_f3_14_17_4e_27_ed_eb_e5_74_bd_8f_0c_8f_d8_58_43_e7_d2_62_7d_b6_07_b2_81_6e_35_7d_c1n,\n 0x2c_e2_3d_fb_eb_8e_18_74_b9_ba_89_4c_b8_5f_06_8b_fb_04_97_55_5c_fd_3d_fa_f3_88_8a_a4_92_d2_04_45n,\n 0x1b_0f_d9_4d_d9_cf_e7_74_d9_14_6b_e5_84_ed_0b_25_cb_2c_74_95_a7_08_24_7f_57_63_c2_38_0e_5c_1c_d5n,\n 0x06_0b_b7_16_ba_72_3a_4e_5f_5f_aa_17_93_63_a3_67_74_61_9d_1e_0c_d9_1b_f4_78_9a_1a_ad_b3_e6_12_aan,\n 0x04_3b_10_c5_08_e8_68_18_43_ed_dc_05_e7_3b_95_b7_f5_4d_a5_a9_3b_70_1c_ba_4d_68_22_f9_c9_dc_f4_36n,\n 0x12_67_34_e9_50_2b_a9_fa_e4_a3_14_b6_7a_de_6c_e8_89_0e_30_4a_43_0e_6c_9f_4f_d6_0c_b8_ad_69_95_0dn,\n 0x26_ed_d3_5d_b9_7c_2a_b2_ce_27_b5_03_59_28_59_b4_31_7a_25_a6_88_f9_74_3e_f0_dd_9c_c2_61_9d_b7_e7n,\n 0x27_b2_25_e4_a9_81_af_36_ce_a8_63_f5_91_c8_bc_5a_a9_5a_4b_eb_6d_5c_9a_bc_5e_03_ba_90_6e_d7_20_62n,\n 0x11_02_72_88_32_f7_51_c3_13_ac_66_10_fa_e5_8b_9c_bd_51_1b_51_d6_12_1b_3b_fa_60_f4_7d_b1_25_18_dan,\n 0x18_27_6c_b0_11_bd_c6_d7_5e_b1_c7_d5_d0_6c_ce_10_c7_c9_07_9c_8c_99_20_fa_38_9b_11_66_20_ee_41_41n,\n 0x25_02_d7_de_ce_8c_d7_d7_a0_4a_17_30_bf_d2_86_8f_c6_4f_83_5d_fe_14_3c_ee_18_48_0c_7c_3f_ca_da_76n,\n 0x06_b2_0b_ea_a5_75_dd_84_62_54_69_50_68_48_46_11_bb_ee_1a_e4_82_85_ba_2c_3d_99_c1_4e_62_58_1a_2cn,\n 0x06_3a_b4_a0_78_fc_b2_12_27_5f_f5_fd_06_04_2b_db_d1_7a_ce_ae_99_4e_2c_27_a1_ba_87_61_39_f8_ec_1an,\n 0x06_37_2d_59_52_bb_69_a4_60_bf_13_33_ef_4a_c6_b2_0b_07_ad_4a_b4_12_4d_d4_06_6a_6c_f6_6f_40_69_93n,\n 0x0f_41_d4_e3_ef_55_da_71_cf_40_37_c4_9d_44_c0_a6_41_f5_2a_5a_17_4f_7a_be_c5_22_47_6e_3c_62_3c_e0n,\n 0x0f_0e_e9_84_1b_21_b9_b2_23_c1_d1_a9_06_99_3b_d6_6b_0e_bc_b7_da_fb_e2_b8_02_bb_81_65_c6_01_17_73n,\n 0x01_df_2e_b2_fa_42_3f_01_39_6e_07_33_90_10_4c_ad_80_04_a6_a5_f1_40_a2_b1_8e_d6_58_06_81_67_52_1an,\n 0x1c_e0_5b_c5_54_07_c8_83_a5_a4_17_92_ef_34_86_ff_22_e4_03_d3_84_74_cf_a9_0f_5e_d3_0c_8d_30_19_8cn,\n 0x03_7f_1f_c7_93_4b_bd_5f_dc_34_38_8b_fb_d0_f9_54_67_25_4e_5d_f2_b5_b6_2c_ae_d0_50_0a_25_94_dd_adn,\n 0x1b_d6_a6_14_00_43_98_f3_29_b7_08_0f_fe_69_d3_df_f6_de_06_c8_19_fe_de_a2_4a_ed_16_e4_c4_71_64_e7n,\n 0x0f_c2_e5_cf_f7_e9_ef_d4_6f_ee_62_aa_3b_3f_22_bc_c9_f1_a3_bd_89_17_e2_e1_cf_5a_a3_34_d2_9d_2a_06n,\n 0x27_4f_a4_e3_d8_6e_7e_f8_b0_fd_f1_a8_1a_cc_e8_f9_ed_2f_2e_b4_62_7d_e7_57_81_a8_13_f1_06_a3_77_e7n,\n 0x19_3a_f1_c5_fa_05_7c_e6_82_ec_72_8c_ea_90_73_59_35_a2_2b_5a_ff_46_ea_2f_80_3a_29_42_1a_a9_50_d6n,\n 0x0e_72_c3_3e_d6_05_54_71_ad_ad_61_d0_27_c5_ac_1b_f7_54_44_fc_4e_14_98_8b_42_26_8f_07_87_e2_98_75n,\n 0x1c_75_80_4a_4e_f1_c8_1c_83_68_4d_68_8c_44_29_ab_1a_7e_51_7d_fc_60_2c_9a_24_43_c5_9f_32_ee_96_14n,\n 0x08_80_3f_69_d8_3e_0c_33_97_e0_9d_d4_7a_80_cf_9f_4e_42_34_37_00_8c_ab_ad_2e_50_11_04_56_c8_c6_0dn,\n 0x2d_12_14_ed_17_bf_81_16_2a_5d_d4_3a_3f_dc_f1_95_fb_f4_74_26_04_4c_b2_2d_b5_38_47_8e_94_2b_07_e6n,\n 0x0c_85_b2_4b_79_ab_57_50_44_22_13_5f_b1_cb_0c_5e_1e_3a_5f_0a_06_10_3c_24_86_ee_6a_3e_ef_ac_72_88n,\n 0x2e_29_f5_17_dd_1b_30_b7_91_bf_ab_03_ce_74_7f_95_02_02_f0_eb_82_67_ef_3f_71_cc_ec_40_e9_1d_95_e6n,\n 0x13_28_1c_94_a6_70_fe_5a_b0_97_73_af_42_60_67_40_50_35_09_ef_d7_4c_1e_d9_93_bc_6a_fa_f3_d6_41_74n,\n 0x21_a2_11_40_7c_ef_7b_04_42_16_0a_cc_9d_bf_ce_1a_1e_1d_58_c9_e9_8f_38_1a_7e_b4_8f_7b_da_0f_1e_05n,\n 0x08_5e_f1_e7_7f_92_9b_cf_fa_d1_a9_3f_92_0c_1d_8c_8b_36_32_e1_e1_a1_cc_d4_ec_b0_16_02_75_9e_08_7en,\n 0x2b_6f_79_6d_e3_50_9e_a7_03_c8_da_62_76_e3_ea_15_4b_50_41_70_c5_9a_8e_c4_58_1e_97_57_d7_4b_a7_59n,\n 0x1f_da_50_74_fa_5b_ae_5e_16_fb_4f_2d_18_d5_89_a7_23_0b_9a_1c_1e_4d_08_a8_06_9f_c8_d4_5b_1d_e3_cdn,\n 0x02_d2_2a_3c_0d_32_47_50_d3_be_31_21_9a_f3_2a_82_82_c3_72_df_de_48_61_ef_86_ef_15_c3_15_5d_cf_14n,\n 0x0c_21_f4_f4_bd_ae_07_a7_9b_b3_a9_8c_fb_35_1a_a6_29_f3_23_9c_4d_24_ae_f9_2e_a7_9b_fa_c9_c2_fa_25n,\n 0x1b_72_1e_c1_c1_df_81_c8_3a_cd_7a_95_ac_e1_6b_3e_2f_f4_29_7a_ab_b6_f5_81_00_b5_da_b0_6d_3d_c4_04n,\n 0x27_ec_9e_9e_92_3e_de_e5_81_89_d6_c7_f3_03_ee_3e_52_49_c5_ae_f7_87_58_c7_f5_11_cf_87_b9_53_56_1fn,\n 0x1e_cf_10_60_36_6d_ea_95_06_fd_a0_d0_1c_ba_01_6d_b9_62_00_90_a1_60_d5_a7_60_a7_5d_12_d5_d7_2e_78n,\n 0x25_d4_32_df_31_2e_00_5c_69_a0_6a_1f_00_4e_c8_99_57_50_34_da_26_39_27_60_d1_7a_cc_80_c3_95_06_cdn,\n 0x17_a0_ea_51_f9_a2_01_ba_2a_0f_85_7c_99_69_a7_f6_bc_6f_5d_5b_c0_e4_95_7e_1c_0d_fe_4b_20_2e_4a_24n,\n 0x02_d3_4c_47_b8_47_d6_7c_9b_4d_c3_13_bc_71_4f_f2_23_ab_01_12_78_06_ff_6c_92_2d_87_63_f1_42_02_4bn,\n 0x02_0e_59_e5_e5_bb_09_51_a6_60_12_2f_c1_ae_fe_a2_94_e7_cc_d5_f9_c7_98_39_28_2e_bd_9e_11_9f_96_can,\n 0x24_9c_9c_85_01_73_db_a0_ff_ea_35_68_c2_84_16_02_01_21_c3_d9_99_0d_fe_2e_91_73_77_46_77_59_26_7bn,\n 0x01_e8_ec_57_b7_68_1d_63_1a_02_d5_30_c9_ae_ef_93_77_58_69_ef_09_3d_e9_20_14_cd_f8_5e_e2_d4_59_dan,\n 0x00_f7_39_dc_b9_f3_ee_6e_7b_55_19_77_4b_54_0b_28_98_bb_6c_ba_36_29_bb_6c_60_e4_23_b7_eb_6b_5f_fcn,\n 0x0e_01_6f_07_24_ff_f8_5d_78_1a_eb_15_48_d7_6c_56_6e_5c_26_aa_79_96_ed_f5_04_e4_16_72_85_fd_a6_6en,\n 0x27_52_70_82_8b_9d_dc_96_4b_b8_d6_8a_62_58_54_35_68_c8_44_94_7e_d5_ed_94_b3_18_0c_b8_74_c6_83_25n,\n 0x00_f1_ca_3f_c2_8a_ac_b8_ac_21_a5_b4_4b_be_b0_ae_64_cc_33_9d_e1_3e_04_c7_4f_ce_82_0f_4f_93_e4_8dn,\n 0x21_6b_2f_89_c9_01_05_f5_70_e0_91_1b_d1_ce_20_e0_66_4f_fe_01_81_1c_b7_77_f9_03_76_71_9c_0e_20_f3n,\n 0x1a_91_ed_f9_09_50_cb_26_89_d2_c2_9c_b2_2f_8d_ea_61_ec_41_fb_06_1f_1b_60_02_f7_22_65_69_4c_78_4en,\n 0x2d_a3_34_2e_af_39_a2_b2_42_71_34_84_46_29_71_af_e5_3d_f5_5b_ed_5f_5d_50_d6_7d_91_38_cd_78_fe_84n,\n 0x29_f7_9c_86_f5_a9_c9_6f_ca_f2_29_6b_e3_64_25_b7_2a_fa_ad_48_65_cb_90_90_84_82_49_15_8e_2e_a4_b1n,\n 0x05_19_42_6a_15_a5_99_f2_0d_29_79_30_20_67_db_d1_45_4b_46_53_9c_94_99_c6_5f_61_95_b5_5c_76_03_37n,\n 0x0f_9c_47_5c_d7_2b_7e_2e_38_65_e9_6b_ae_f8_9a_14_9e_ac_d3_ab_34_02_10_a9_c5_e0_de_6f_c0_82_e8_9dn,\n 0x15_f1_d7_11_97_9d_fe_13_e4_5e_eb_97_59_a8_9f_51_db_3d_27_59_49_85_89_0b_88_c9_bf_27_69_22_17_3an,\n 0x1f_08_3a_c0_54_9a_1a_b0_0d_4b_c9_06_6f_05_49_41_48_f6_0c_95_69_e7_98_99_41_c3_f5_0f_d6_ac_f7_60n,\n 0x15_05_ee_4f_79_bc_81_87_85_6d_5f_3f_5a_24_de_97_aa_08_2b_8d_45_2c_63_b1_7a_c3_a5_91_45_1b_74_7en,\n 0x0f_20_87_6d_71_2f_14_7e_2f_b9_f7_be_6a_51_f3_46_ea_28_44_7d_f5_29_eb_41_34_29_48_fc_2d_8f_09_6bn,\n 0x16_96_d1_2d_9a_e7_79_c9_21_20_ee_71_5f_6b_8d_a1_1e_a9_3a_f2_67_37_15_a2_df_77_31_db_91_e3_60_dcn,\n 0x28_48_5f_43_8e_ec_13_3b_0b_e3_6b_32_fa_e8_2d_a5_7f_b4_00_6b_d7_f5_bb_15_a2_67_e7_74_6b_37_ba_d1n,\n 0x27_80_43_6f_9d_a1_24_61_fb_e3_1d_97_96_56_e6_d1_a1_33_86_e0_e6_a5_30_9b_05_0c_a8_19_e1_0a_d9_45n,\n 0x27_1e_a8_63_67_33_32_df_2b_f2_47_1e_6c_89_35_b0_37_ea_83_18_ea_5b_32_37_95_83_f6_11_e0_6b_3d_a6n,\n 0x29_f1_ba_4b_29_c1_da_ec_b9_83_9b_dc_08_43_1b_ca_be_68_39_1c_a5_40_f6_8b_48_4a_4f_8e_96_a9_dc_61n,\n 0x29_4f_4c_c7_28_dd_42_3f_da_f3_73_77_e0_69_ab_a6_6f_4d_30_00_f1_a5_59_bf_4c_44_91_03_30_60_31_e3n,\n 0x14_6b_52_1b_1c_08_c9_18_12_13_eb_db_c2_a3_4f_c3_ef_d8_7d_de_b1_bf_c5_e5_d1_7c_a9_51_f5_5a_bd_17n,\n 0x0d_ae_0a_f9_73_ea_0b_0f_cd_d8_15_8e_a5_1b_9e_fd_ee_d5_eb_66_4b_84_ef_67_ea_a2_55_fe_4e_55_f3_e2n,\n 0x26_04_cc_cc_37_0f_0a_50_f3_f7_26_ed_f1_24_2b_cc_13_1d_dd_f2_69_78_53_27_6c_07_9e_bf_b8_83_d8_c2n,\n 0x28_73_b1_9d_b1_d0_38_96_d3_d5_2d_6f_93_61_e3_fd_ad_e5_e7_b2_e6_83_3e_4d_5c_e4_66_11_86_bb_bb_9fn,\n 0x0b_04_d0_90_bc_c4_cf_ab_fa_47_f6_00_43_85_9a_eb_5f_33_a6_de_20_5d_fd_f0_e3_d0_99_d4_a8_39_4e_08n,\n 0x05_08_a1_95_c0_ca_58_3e_c1_01_56_f2_05_ca_1b_b6_f6_91_73_18_b8_ed_6e_bb_73_47_b7_7d_72_dc_f7_48n,\n 0x09_26_2d_fa_80_aa_a0_bc_61_c5_89_1c_23_7a_51_9d_38_08_c5_3f_c0_5d_ce_3d_71_f1_7c_0e_3f_2a_5e_ebn,\n 0x0c_e6_d2_5b_1c_6c_1b_89_fa_00_5c_23_61_9d_87_7f_2a_b2_fd_e7_08_d3_09_23_66_9a_49_fe_25_b3_c7_dcn,\n 0x2e_69_68_5b_46_c8_05_02_68_db_c1_04_0e_23_c7_39_d7_21_6b_2c_5e_76_10_81_36_d6_89_5d_ed_3d_dc_44n,\n 0x02_78_fb_3d_f3_fe_91_36_57_bc_cc_eb_55_31_38_fa_7b_8a_b6_e0_62_a5_dd_ea_df_dd_dd_5b_30_5f_f8_22n,\n 0x16_da_89_2a_de_35_75_4e_57_d8_f0_3f_3e_6f_41_10_a9_dc_16_39_d9_b6_de_65_e4_79_16_5c_a4_9f_7a_4en,\n 0x15_97_54_92_4e_73_34_85_4f_f8_03_a1_78_2f_fc_05_99_27_a3_c2_6d_c4_3e_66_1e_09_a1_26_1b_d7_c9_4an,\n 0x22_12_ca_64_87_b8_45_ba_4d_16_c0_9e_22_42_97_d4_b1_a1_6e_34_1e_6c_59_3d_7f_ab_ad_ad_a3_92_9d_7an,\n 0x2d_d0_88_de_83_18_52_d1_69_ae_e1_d6_be_69_b5_2c_5d_ee_0b_73_e1_8f_ca_91_cd_ce_f9_b9_03_96_a0_47n,\n 0x24_ab_42_ad_67_49_a1_4f_e2_f7_07_ec_53_ac_3b_03_15_de_ec_f4_21_b9_75_30_32_53_3e_28_49_1d_b3_0fn,\n 0x2f_64_66_e5_0e_f3_c6_1a_0e_64_93_b1_8d_34_91_14_06_e2_e9_7d_35_51_88_7a_f8_08_d6_7e_1c_e9_ae_27n,\n 0x1f_58_86_fb_86_18_c8_71_1e_c0_8d_e9_47_75_71_f0_eb_6e_46_2b_8f_5e_53_49_f8_56_31_f0_59_59_44_80n,\n 0x05_ba_34_95_39_59_78_4a_57_c0_01_9e_91_6e_2a_de_5d_6a_52_31_10_43_7c_ea_9c_2b_94_45_3d_cd_f2_a0n,\n 0x27_ae_e6_7a_3c_6e_f7_83_cb_55_91_51_65_a5_bb_fd_d8_6b_c0_6c_77_6f_14_50_48_bb_24_01_dc_f1_73_41n,\n 0x0f_57_ef_c0_5e_9f_97_e7_f6_8c_69_4b_a2_b3_bf_21_6e_ef_bd_5c_71_71_0a_56_f4_60_68_2a_6b_a5_d5_efn,\n 0x1d_35_eb_4a_40_a4_1d_d7_75_06_d8_72_a4_58_ac_93_d7_33_6d_cb_72_f1_5b_18_2a_67_02_ca_53_b9_4e_efn,\n 0x18_a3_30_64_58_6d_5a_70_2b_c4_bf_64_f7_0b_44_b5_a7_79_18_25_5c_2d_ff_be_fc_53_7e_40_bd_59_51_ffn,\n 0x0b_0a_e5_71_6e_42_b4_40_b7_42_3b_d8_99_31_9c_88_0a_4a_67_45_50_b7_bd_03_62_07_e0_06_ac_7a_2d_21n,\n 0x11_36_a0_f6_c0_04_a2_c5_7d_21_a0_0c_40_de_c6_f0_27_b1_40_b3_6d_35_94_c1_cd_c1_b0_e8_70_7b_62_f1n,\n 0x21_ce_c5_2a_c4_b2_aa_7f_80_f9_8e_b7_5b_4e_02_80_59_19_77_d5_0b_67_7b_8f_f1_0b_0a_3d_02_85_32_acn,\n 0x28_4a_63_67_86_fa_63_57_9b_15_41_74_69_01_d4_8e_44_0c_f0_c5_86_f1_b0_89_cc_45_e8_b8_30_fa_d2_2en,\n 0x1d_4a_0a_ba_0c_ac_51_c3_26_1f_7c_48_3d_89_62_8d_76_74_8b_08_33_cb_a6_bb_fc_ac_52_43_e4_bc_b4_dan,\n 0x04_10_a0_65_92_5e_90_fc_70_ed_1a_aa_46_47_7a_8a_c8_19_3a_10_c4_8b_5d_84_fb_5e_9c_f2_12_3a_e2_4fn,\n 0x30_14_53_b2_3d_05_5c_18_4a_65_ad_6a_6a_cf_fd_9f_52_06_37_fe_75_1f_f7_b7_69_40_9d_51_2f_c9_2f_0fn,\n 0x03_78_27_10_42_87_d9_4b_bd_c0_65_84_d3_6d_4d_5e_2c_46_c4_ea_22_4f_4e_0d_c0_c3_bb_54_1f_05_3b_79n,\n 0x29_46_41_ba_8a_02_76_8c_5e_3b_7f_54_2d_28_1c_69_dc_2c_3f_2e_80_32_f8_64_29_5a_64_b0_8a_93_d9_93n,\n 0x1c_12_f9_93_f0_f1_ed_d8_09_ee_ef_ae_69_32_e5_b8_87_38_b3_36_bb_e6_f9_76_f5_f7_a0_a1_78_ff_ea_b0n,\n 0x0c_b2_d9_48_d3_8f_b8_e1_7c_60_ba_6c_67_60_8c_9f_fd_91_2e_0a_62_7e_ee_75_6b_8d_22_af_8b_9e_5e_43n,\n 0x26_f1_ff_73_12_68_d9_bb_d2_6a_b3_3e_58_8a_ce_c0_9f_d5_a4_b7_0d_60_b5_53_90_4f_5e_2d_05_e8_94_c5n,\n 0x09_ae_f8_a2_02_9f_82_b7_6d_80_ad_8a_39_26_cb_6e_11_74_d8_b8_b8_9c_59_70_7c_12_34_73_12_0b_4c_7dn,\n 0x1b_e8_0c_ab_12_f4_bd_17_37_79_6b_c7_70_f1_70_73_c6_b0_04_6c_32_7b_cb_f3_a3_6e_26_40_6c_77_5c_74n,\n 0x24_76_e7_bc_63_7f_24_3d_23_d7_62_cb_3e_2c_d8_43_0d_ad_89_76_25_76_cb_dd_91_84_28_a7_58_28_83_6an,\n 0x19_6d_70_7c_a5_a9_ed_cc_0e_31_03_ae_df_c6_0a_bd_d1_c9_e5_77_35_4d_93_0b_e0_d5_b6_d0_36_17_c2_09n,\n 0x1d_26_24_87_23_7e_85_03_90_8d_53_75_a1_a7_98_a9_b8_c0_fa_cc_c0_56_ed_dd_8a_a8_7d_0a_66_b0_7d_24n,\n 0x2a_21_e0_3d_41_15_4b_f3_19_1f_1a_83_4b_9a_f6_b2_3d_40_bc_01_d0_27_c2_b4_84_1f_b2_3d_c9_ff_71_5bn,\n 0x02_9c_64_78_22_a1_ae_56_5b_2b_f1_24_9e_da_eb_a0_cb_b3_ad_73_0d_eb_6d_2e_66_18_fb_f9_e7_4d_aa_d9n,\n 0x23_e1_97_11_75_b8_fb_b2_6c_09_89_de_a8_2d_8f_4a_3f_70_87_74_c2_86_e4_ed_2f_8d_fa_ed_af_3d_b5_e3n,\n 0x13_06_18_8b_79_23_68_eb_da_1f_2e_31_e8_46_85_4c_bb_34_f1_75_e0_1c_92_45_79_59_ee_1c_6d_a0_ff_3dn,\n 0x12_7d_0f_7e_b9_80_4f_c2_0a_b4_f8_b9_40_98_34_ae_52_16_45_ff_fa_86_b0_c2_21_d9_22_3f_a0_e9_d2_b2n,\n 0x24_41_98_5b_ca_ce_35_a8_1b_1f_81_fc_66_21_21_5d_f0_ba_42_44_1e_45_0f_c6_5e_35_19_a0_39_3b_11_96n,\n 0x2d_f7_d4_eb_11_51_14_54_4a_c4_f5_2f_ca_36_d6_b3_3f_09_f6_39_25_3e_9e_35_49_d5_98_7b_0e_09_71_36n,\n 0x0f_6c_55_18_f9_2e_e2_e5_49_d3_1a_db_b4_e7_80_36_ef_9a_a3_c2_16_4c_31_7a_ca_92_20_3e_3b_99_f9_40n,\n 0x26_e2_cc_9d_ea_47_dc_68_07_f8_7c_d8_7c_53_1b_17_a7_f2_f5_ea_86_ac_09_4e_5d_5a_22_fc_34_33_dc_dcn,\n 0x1c_71_e3_3c_86_4b_0a_8d_e4_d1_0d_c2_6f_76_be_d5_57_71_d1_60_1a_0e_04_d3_99_cb_23_97_06_4c_5c_f8n,\n 0x2a_2f_0b_56_3b_40_83_76_6c_8b_6c_60_87_2c_32_ee_ff_2b_20_7a_19_81_c0_5b_1f_39_61_78_f0_12_07_afn,\n 0x0c_1a_f0_bc_55_46_25_0a_7f_dd_f1_cb_d3_e7_bc_db_af_74_eb_b9_79_53_5e_0b_34_36_76_dc_9f_94_33_can,\n 0x01_8b_df_2e_70_78_dc_40_af_1c_be_48_8c_b5_62_fd_32_12_04_99_c4_c9_72_a6_d4_3b_92_ce_16_7d_df_e5n,\n 0x22_b3_68_59_a1_6a_8c_dc_3d_f1_0a_f2_82_07_15_89_1f_77_96_60_a1_f9_a2_5e_f6_52_01_9f_64_0b_ef_06n,\n 0x10_e6_97_db_bc_43_c7_ae_20_30_f5_d4_99_74_f8_34_4d_5e_48_ab_66_d6_35_b4_1e_7b_96_fb_c7_c6_28_9en,\n 0x05_7d_eb_4f_e5_63_90_ab_bb_dc_d8_82_2c_ab_5d_a1_20_7a_0a_d7_94_23_92_06_22_b0_c4_a1_2f_ef_35_52n,\n 0x12_b2_7c_16_39_f1_62_f8_46_fb_37_ae_71_44_f2_91_37_68_2e_e7_eb_16_32_e7_91_b4_62_8a_ff_4a_ac_23n,\n 0x0b_2c_7c_76_d0_18_43_a2_d1_46_55_c2_3e_80_91_af_b6_f3_55_9d_66_c3_bb_f3_d1_15_dc_9d_70_db_5a_f2n,\n 0x0b_7d_96_84_c0_c8_ec_a0_e8_c3_16_34_c9_fb_68_b2_e8_3a_be_72_a3_67_9b_36_78_a8_c9_b1_a1_3a_48_95n,\n 0x13_ab_0a_7f_ea_9b_2c_82_87_66_d2_fa_bf_57_42_48_d2_d7_f7_b2_f8_e6_0e_26_1c_ef_29_cd_91_6e_9a_2bn,\n 0x2d_e3_57_9d_79_0a_c3_67_f6_6d_90_55_7b_54_66_81_53_a5_c3_7d_53_91_e9_2a_6a_56_15_c9_d6_0b_e9_79n,\n 0x1b_a0_10_b6_d6_3b_95_38_b2_81_be_37_64_e8_e6_23_16_42_c6_a6_73_5d_89_c9_80_8f_ab_7b_ad_a2_1f_6en,\n 0x26_ff_de_a8_a8_d9_89_4e_bb_e0_2a_70_5f_b7_50_6e_12_b1_a7_f1_00_c5_90_25_84_e4_dc_be_1f_21_19_acn,\n 0x11_ff_16_19_a4_9d_6a_bb_b5_63_90_e3_db_aa_f0_c1_cb_01_b9_51_a7_34_21_8b_3c_bd_a4_e8_05_2c_cb_a2n,\n 0x26_0c_36_b8_08_90_be_fa_e8_9c_bb_34_78_b9_f7_b5_b3_f6_b1_1d_ed_47_aa_e2_c0_d5_e0_c4_8d_8e_51_74n,\n 0x05_ca_88_85_7c_b0_dd_5f_38_0e_59_2a_a3_7f_6f_94_f7_f0_c3_26_21_31_ce_f2_99_48_a1_a4_9f_d1_84_fbn,\n 0x18_b3_83_2a_19_eb_7e_e1_a9_dc_f5_74_30_2e_e0_63_ec_19_04_6b_3b_9e_b7_fb_27_7a_48_ee_83_90_e4_85n,\n 0x25_35_29_1f_03_da_d1_e3_c5_40_e7_f2_62_01_c2_e3_30_18_8f_da_58_be_78_30_67_69_8a_17_39_f7_93_69n,\n 0x01_4f_83_2b_38_a9_f4_3a_f2_6e_5e_c2_fa_bf_6c_42_50_08_3c_f8_7f_0b_a8_6b_95_05_3e_91_82_d1_37_3en,\n 0x25_48_e6_c4_76_7c_67_69_1a_f5_51_62_d9_ce_0e_45_e8_9e_a0_8a_42_32_fa_0a_22_3f_de_86_9b_fd_3e_a4n,\n 0x02_3e_cd_aa_3f_94_2b_d4_5b_a4_6f_52_8c_bc_81_a5_1c_e1_42_50_39_f4_47_81_a7_69_6f_48_d2_9d_fb_d1n,\n 0x16_11_bb_59_a3_b2_87_56_b8_40_db_31_89_a3_a5_ea_22_ec_16_84_54_72_ab_d6_85_70_ac_77_1c_8f_15_een,\n 0x0b_f7_61_88_45_01_33_30_ff_46_5f_12_ca_95_07_9a_b7_2d_0c_a9_d8_a7_e6_33_04_8c_11_bf_2c_46_c7_adn,\n 0x15_c8_8f_a2_eb_a3_d0_87_fd_29_f6_de_6f_d8_64_b8_75_66_2f_fa_43_81_44_35_2d_68_47_17_cd_cd_3c_cdn,\n 0x0d_58_d1_27_98_ab_55_2f_96_f0_d9_51_e9_7c_be_ef_88_7d_85_86_56_b1_f6_af_40_10_c8_00_91_b0_c6_62n,\n 0x04_06_ee_cd_7b_bc_21_eb_04_fa_1e_56_57_45_cc_65_44_5e_4f_82_f4_a2_41_ef_b8_ba_b0_6e_af_9c_7c_bcn,\n 0x2f_a8_8e_da_06_57_14_b9_ae_5e_18_45_61_30_e3_1b_d6_f4_8d_02_b2_41_5e_c6_1e_d2_09_ad_8d_dc_31_64n,\n 0x01_74_98_63_ae_ab_13_ca_51_22_61_10_3e_ab_93_b4_3f_ac_53_df_6b_04_02_2c_7c_b7_f1_76_38_f5_1c_29n,\n 0x01_55_32_63_a3_18_ed_f3_44_29_d9_01_f3_87_99_32_b7_2f_5c_32_ad_56_e9_00_ab_f4_76_72_f8_6f_9a_62n,\n 0x02_8b_7a_8b_e4_7c_22_39_07_9a_01_dd_6d_0e_57_dd_c0_3f_ca_9c_6a_58_d3_df_6f_23_4d_fe_82_f9_6a_can,\n 0x2c_48_9b_ef_0f_ac_19_bb_18_7e_5f_8a_06_4e_67_63_6f_34_b2_89_c2_e8_ad_c7_6e_cb_db_b5_10_5f_c1_c9n,\n 0x1f_f5_48_c6_69_0f_52_27_d5_76_66_8f_ef_67_41_f9_99_c9_91_4c_f4_84_2e_79_3f_d5_b5_19_4b_d0_c3_ddn,\n 0x03_c1_b5_51_c8_49_03_04_0f_af_3d_6d_b9_34_e8_3d_af_c5_f0_ef_de_b7_a8_fe_b2_75_47_72_47_27_a3_44n,\n 0x1e_e3_62_0e_8f_0d_da_8c_6f_15_5c_e8_1a_93_76_00_9b_ce_f2_c8_d8_f6_f2_66_e0_4b_7b_80_ac_8c_f8_67n,\n 0x18_e4_5f_e7_ea_17_1f_b1_1d_0c_4a_f5_33_85_68_99_0f_22_14_7e_14_42_1f_33_6f_e6_e0_bc_bb_8a_00_14n,\n 0x27_39_34_04_52_1a_55_e0_e1_a4_e5_8c_56_11_80_04_0c_18_68_28_14_88_2f_45_aa_dd_13_1b_9f_08_75_3dn,\n 0x07_ff_68_57_01_1a_24_b2_0d_69_8a_d4_3a_5f_95_9a_ce_ff_f7_29_94_0e_34_6a_b1_8f_9d_26_00_f8_3d_05n,\n 0x29_81_b3_a2_88_b4_32_78_39_54_2c_57_96_ce_2f_09_af_9d_02_2a_60_4f_fa_d6_1f_e0_07_7d_76_74_8b_fen,\n 0x00_dd_5b_0b_81_58_e8_a7_39_95_ef_d0_b9_d8_98_d4_fd_35_87_01_1f_a5_86_cf_e0_2c_e8_00_f3_06_40_33n,\n 0x08_4c_05_fa_e7_3c_bd_64_32_e6_22_cf_98_80_f0_d2_83_37_c6_87_4b_87_b8_8e_c0_b4_5a_55_d3_93_62_3dn,\n 0x1e_2e_e2_fe_e9_b9_bf_8d_3f_37_22_e7_02_8f_f3_af_8e_5e_c6_31_9f_a6_d8_99_7d_c1_15_e5_de_2e_a8_b1n,\n 0x00_03_41_8f_c5_90_9b_62_b0_29_6e_6e_b4_2a_a0_7a_97_10_50_93_9e_99_ee_37_1f_64_12_e4_4e_0e_f5_77n,\n 0x1c_49_94_a2_d4_12_58_06_43_76_be_5c_f3_c9_98_87_aa_b7_48_03_f6_7c_12_c6_4e_65_aa_f7_f1_ef_56_b2n,\n 0x04_13_c2_b3_87_33_96_1f_ed_a0_a6_84_93_d3_cf_44_fe_bc_d7_79_52_b8_80_6f_f5_83_e8_c4_0b_31_03_2en,\n 0x01_c4_6a_d3_94_55_25_55_25_b2_67_b8_a0_53_3c_5c_66_50_4f_81_ae_95_34_bd_d0_91_ea_98_99_49_97_f1n,\n 0x23_2f_a2_c0_90_ff_3d_de_a8_3a_dc_a0_b9_cd_0e_09_18_c9_45_8b_75_b0_ba_3b_7d_67_7a_dd_82_0b_e2_89n,\n 0x1c_d5_70_1c_80_a1_0f_42_0e_b3_4f_53_47_38_c0_dc_cf_cc_b6_c8_7c_cf_9a_ec_e3_5a_ba_b3_7c_f0_5f_ban,\n 0x03_b9_81_fe_0c_71_88_2c_61_94_46_55_37_d5_e4_02_b8_16_11_8a_ae_94_bf_85_18_eb_07_a5_29_e4_ea_54n,\n 0x16_8a_58_89_00_10_00_06_44_36_58_a6_1c_a9_d6_59_f0_ac_45_1d_1e_0b_fd_5a_6c_6a_3a_ee_85_72_3b_ean,\n 0x1e_51_f5_58_bc_ed_24_0c_65_b7_ce_bc_dc_bb_db_7a_9a_b0_6e_35_80_d4_6f_31_8d_e8_4e_dc_79_5e_6f_88n,\n 0x1a_fa_5a_8c_5f_ce_39_6d_e5_6e_c9_7d_cf_03_17_a6_b7_cb_c3_ee_1f_8e_9a_3b_cc_d6_d8_70_02_2b_75_0cn,\n 0x11_35_ef_d6_3e_8f_8c_c9_cc_06_61_dd_49_d3_6a_c8_eb_f7_90_0d_90_d6_6d_d5_fa_81_60_54_d4_01_7d_can,\n 0x29_14_d2_1c_2d_28_45_ce_2b_14_e9_51_f4_21_03_59_9c_87_55_01_56_41_db_03_c5_4d_f3_37_10_34_40_adn,\n 0x20_c8_7a_2d_75_97_49_ae_a9_b2_f0_f8_cc_01_45_24_52_e7_11_e3_9e_af_5a_8b_07_10_0a_19_71_27_ef_f6n,\n 0x0d_b0_79_20_dd_77_9c_19_fc_1e_a8_ec_53_23_d5_af_0d_51_1b_86_9d_b6_7d_ee_04_08_78_5e_d9_22_90_5dn,\n 0x0d_63_1f_18_fa_da_cc_bf_dd_3b_3b_e4_67_72_a3_bc_ee_27_63_78_cd_2e_46_ba_ba_90_d5_64_68_cc_50_b6n,\n 0x2c_50_0f_79_0d_46_3f_b1_36_f2_d8_d4_ca_de_62_29_6e_7d_7c_49_bc_e1_83_95_b3_01_4c_9f_c7_2d_00_5an,\n 0x17_6a_9e_ba_97_63_5d_1e_59_b1_9f_aa_2b_33_25_a5_b1_a2_73_76_a1_6d_ec_73_17_aa_e4_af_ee_02_bf_b4n,\n 0x12_02_fc_e1_a5_01_b8_8b_45_5c_a4_47_88_d5_52_14_ba_eb_3b_54_e3_7d_1c_c8_0f_3d_6e_c0_e0_9d_47_47n,\n 0x22_29_48_37_7e_e9_d2_7f_c6_40_60_07_e1_72_7b_56_6b_82_5d_ec_b9_50_96_c9_ae_df_a8_e6_45_3a_5c_bcn,\n 0x2e_c6_6f_c2_7d_82_aa_b2_c9_8e_b5_0e_67_a0_93_22_10_f3_c6_e1_24_56_26_9d_57_ea_90_95_f4_11_66_ebn,\n 0x2f_5c_23_3d_be_35_71_83_6f_da_c0_91_5c_e6_59_6f_c0_84_4f_ec_3d_0b_f5_a9_b9_68_ca_58_c4_58_46_a3n,\n 0x13_88_9b_b5_9b_9c_07_95_3b_52_f6_61_23_c8_c1_38_0e_6f_27_24_26_10_3a_dc_ef_de_f4_db_d2_86_5d_a2n,\n 0x1c_f7_8f_25_fa_a5_2c_74_73_12_d0_9f_b4_e9_ab_b4_f1_e5_5a_3d_a3_49_cc_8d_cc_6d_ca_81_cf_99_ac_3an,\n 0x2c_0e_ae_28_66_d6_5c_97_07_70_47_d0_f4_c4_3c_28_c8_d7_f3_6a_f6_a9_c6_fe_07_ec_89_21_9f_1c_c7_35n,\n 0x28_b8_16_cd_8b_8c_98_16_33_80_06_6d_0a_50_d8_b0_e0_6f_f1_c6_90_b8_1b_91_8c_7d_dd_08_a6_b7_06_6an,\n 0x1d_46_d9_16_69_ce_5b_e6_55_4f_c3_ec_ee_89_5d_41_fd_ae_ee_18_9a_de_e3_81_ab_fb_75_ed_e1_48_8c_fan,\n 0x18_41_e0_3b_9f_c5_27_45_0e_44_70_aa_8f_08_88_d9_ec_85_99_db_6b_0f_72_22_dc_a2_6c_d4_3d_22_bb_05n,\n 0x2d_2e_ad_7b_20_78_b0_90_85_80_5c_27_77_c9_0f_6c_55_74_4b_49_a7_3b_be_f0_4c_89_93_13_ba_fa_0f_57n,\n 0x01_83_0a_8d_b3_42_67_6c_f7_49_22_81_b4_cf_c7_b1_38_c5_5d_44_da_ae_47_b1_4f_c8_88_e5_bf_74_50_95n,\n 0x07_4e_4c_e3_2b_d1_4b_01_fe_9f_67_29_de_2a_12_f2_18_fe_44_3f_b7_08_73_8a_86_0f_19_10_bd_fa_46_78n,\n 0x1f_ad_4c_b1_40_fa_4d_55_9c_f9_52_5f_b2_4e_7f_17_49_4d_23_9a_f6_79_a0_30_e7_d1_b7_c9_cf_fa_94_9dn,\n 0x1e_50_c6_52_6c_73_24_b9_7b_7f_33_87_52_bd_70_0c_a5_bd_6c_0e_fc_b2_25_26_02_24_55_6d_76_a2_83_31n,\n 0x02_cf_03_59_b8_da_1a_bf_ff_fd_73_f9_07_58_64_57_93_f5_d1_11_2f_e8_98_e8_af_0c_61_e7_9e_67_3e_5bn,\n 0x0a_14_ae_49_7b_49_78_5a_e7_77_1f_0d_fe_f4_bf_41_85_7b_b2_fd_1f_27_d1_5c_3c_bc_8c_e3_df_98_95_cdn,\n 0x16_bf_a0_2f_57_73_56_62_ea_c1_c1_f5_20_b4_b3_f9_c4_bd_26_cd_27_92_17_7b_27_60_68_91_69_54_cd_41n,\n 0x0f_6f_a9_5e_01_17_b7_34_57_9f_68_dc_59_73_6c_7f_9a_fd_9c_dd_4a_90_e1_36_29_ee_ab_fd_84_52_5e_9bn,\n 0x1d_59_ca_fe_27_bd_fd_78_f5_64_89_43_00_76_34_36_da_f9_3f_86_3c_32_13_c1_a8_49_d1_c3_16_9b_a7_71n,\n 0x28_9e_39_d6_a2_d4_bc_81_7a_b1_04_44_3b_89_b8_a6_08_b1_3b_bb_93_b3_ad_e7_72_a6_3b_ee_30_0b_bc_3an,\n 0x0d_47_ed_af_d6_a8_d4_65_1c_27_f6_be_e4_8e_97_56_f5_d6_51_5a_f1_a3_a3_51_2f_59_e9_e3_eb_dc_c3_31n,\n 0x19_8d_6a_a9_07_2a_06_de_13_12_8d_7b_17_15_7f_85_99_4a_10_c4_95_72_62_77_0c_c4_f5_9e_6c_6d_33_2fn,\n 0x17_4b_80_e4_21_0f_9d_81_be_7b_f7_0e_3a_b0_b2_1d_e8_06_5f_72_22_e8_0c_bb_d3_cf_98_5d_6a_ab_0f_05n,\n 0x2d_78_03_6b_a0_94_87_52_ae_78_b1_13_8b_4b_9c_4b_67_f0_d7_8a_9c_89_65_e1_bb_bf_a3_56_15_85_32_bfn,\n 0x0c_1f_f4_04_59_9a_f8_23_90_8f_32_e6_07_56_4f_52_1b_75_81_2c_67_05_43_e3_90_cb_02_e3_08_7c_e9_24n,\n 0x0a_56_1b_57_8f_4b_e4_c5_33_15_1d_a1_a5_29_bc_98_f4_94_0a_a5_b4_8f_8c_01_2a_9c_18_1d_81_1b_8f_34n,\n 0x20_12_a6_ed_24_5e_48_cf_65_03_02_89_a1_cd_01_d2_6d_3e_b2_e4_39_bb_c4_f1_6f_25_6a_dc_eb_40_bd_ecn,\n 0x08_24_42_2a_bb_64_b7_58_f6_00_c1_8e_6b_99_8c_19_d8_2a_9f_fa_cb_95_f9_ef_f9_e0_18_d5_af_b3_0b_afn,\n 0x25_0a_09_1b_c9_13_01_bb_13_93_78_2a_7e_21_ee_a8_1c_0b_c8_e6_81_61_a3_a4_e5_e4_a8_a7_e3_09_64_adn,\n 0x1a_4a_db_c8_53_0e_ac_e4_e1_96_96_d7_7a_06_e1_ee_de_ba_3d_ec_2e_44_ac_cd_3a_cf_d7_fa_e6_d0_76_b3n,\n 0x25_a5_11_f7_b8_59_5b_12_27_8f_2b_05_b4_ed_66_84_ee_12_b1_d2_98_fc_e2_7c_cd_67_87_b5_a8_6e_26_bbn,\n 0x07_df_25_e8_f7_6f_32_d9_9b_99_dd_04_d9_27_c1_b2_fa_19_03_77_66_36_e3_8f_71_88_d8_c2_b7_3c_3a_54n,\n 0x05_94_21_ce_d9_bb_92_26_2f_97_e7_c7_be_b8_13_55_39_dd_66_bc_d6_f0_bd_41_bd_12_4a_92_98_23_f7_5cn,\n 0x26_e1_cd_ac_de_91_e1_12_79_6d_f7_0d_d3_a4_79_b5_95_b8_cf_e7_c4_c9_5b_59_56_ed_47_7a_07_81_38_42n,\n 0x29_80_83_de_ae_9e_0c_c4_0a_9b_60_e4_94_e4_4e_6e_fe_93_a8_e0_fe_21_18_1c_b1_35_1d_97_fc_0d_95_4bn,\n 0x0f_01_fc_7b_f4_d2_f1_ec_8c_b1_af_8f_f1_77_15_31_6f_c4_43_87_d5_15_18_5f_49_a2_44_3a_d2_a1_4e_den,\n 0x18_60_49_57_3b_32_86_b1_70_03_f9_e5_b2_7b_8a_36_a7_8b_8f_32_ef_bf_05_10_d9_fc_c8_fa_7e_73_c5_f0n,\n 0x07_33_58_29_d8_e3_75_8c_bb_fc_4c_c4_9b_65_5e_c7_58_08_66_76_b4_d3_91_2d_a3_9f_2c_cd_c4_a2_8d_14n,\n 0x01_9d_07_2d_6e_66_aa_6e_03_48_43_cc_3d_7c_a5_1c_47_df_51_f3_5d_bb_f4_a9_9d_34_29_3f_c3_d5_96_24n,\n 0x2b_ea_34_0a_22_3b_66_65_f5_be_6d_de_2e_b5_5b_40_a0_5a_ae_26_d3_49_a6_c4_af_07_e3_45_8a_b9_be_5dn,\n 0x1b_90_f5_c0_e5_34_09_f8_b5_73_05_64_38_bd_9e_63_95_f5_25_6f_ab_b1_60_06_c0_09_bc_ad_e1_ee_cd_a7n,\n 0x01_93_2c_3f_3e_1c_44_81_42_0c_60_3e_23_f1_60_29_d8_b9_76_03_56_5f_63_14_18_47_76_d8_65_ba_2e_7en,\n 0x12_e4_e9_f3_1b_e3_36_77_75_27_af_3a_d4_43_88_4e_35_35_52_da_36_29_21_07_4e_02_3f_14_58_0b_5e_73n,\n 0x25_e7_a0_9a_55_69_8b_0c_73_23_47_2b_24_09_65_4e_f1_2f_29_59_a7_65_6c_0d_cf_35_ad_9a_79_26_f3_f1n,\n 0x17_8c_92_38_fb_91_fe_51_2f_68_85_e5_12_e2_a5_9b_76_86_a3_4a_ed_0f_de_1d_de_ce_6b_1d_08_d4_22_d4n,\n 0x2b_56_88_32_e6_26_26_28_c3_1e_40_53_05_f8_84_02_94_8b_51_5d_28_86_1f_0d_fa_ef_24_92_1e_7e_35_2cn,\n 0x14_6c_a0_db_fb_0f_bb_98_c1_62_eb_84_b3_72_28_cf_d7_31_1e_0d_15_d2_e4_8d_ef_85_f9_d2_07_bd_17_5bn,\n 0x00_95_37_16_73_ed_3e_e5_58_92_e3_73_d5_ad_5c_76_02_68_c8_3d_f7_f5_0d_44_d2_9d_36_6e_1d_7a_93_73n,\n 0x05_1c_57_cc_37_34_39_89_74_42_72_86_9c_dc_94_c0_66_0b_fc_f6_ea_1c_1c_7a_e5_14_27_fb_29_8c_9d_b4n,\n 0x1c_8b_d9_6c_a3_90_71_4a_2b_00_79_ec_38_e2_5a_f0_fe_7a_69_fc_e1_62_0f_37_6f_77_0e_13_25_aa_65_dfn,\n 0x17_12_f6_7e_82_f9_04_46_55_0d_51_c1_d2_e4_eb_b1_47_5d_6e_60_43_a5_c4_6e_da_31_70_83_97_85_07_2an,\n 0x1c_33_63_71_5d_fe_a9_57_de_96_14_b6_cd_ea_17_06_6c_38_5a_88_64_da_d5_b4_3a_ff_09_c9_63_57_39_25n,\n 0x26_72_b8_ad_ef_74_ad_b0_b7_1c_01_66_de_76_6a_39_e5_e1_ca_e0_37_19_ae_d0_fc_cf_b7_ff_43_2f_e9_16n,\n 0x10_63_57_71_a3_78_50_c2_41_7c_96_b7_f5_fa_48_a9_87_34_ff_a5_90_38_d8_b7_13_6c_b5_d0_c6_46_e1_aan,\n 0x0b_16_fd_5b_a9_7f_28_f5_61_9f_69_89_cf_0d_66_5e_90_8c_fe_8a_1f_c2_4e_53_26_46_19_73_d0_9b_f0_e7n,\n 0x00_27_df_27_e1_61_82_78_ed_22_49_75_90_17_56_92_d2_62_d4_aa_fd_df_e3_4b_f8_db_61_9c_37_a6_60_68n,\n 0x03_6a_b8_de_1d_7d_f7_73_01_d1_6c_b5_76_a1_34_6f_d1_96_d2_55_34_b2_26_67_f5_06_28_76_9a_e1_36_ecn,\n 0x04_9a_b0_f3_7e_c5_bc_c7_24_a3_ea_32_1a_91_95_1f_90_cc_00_af_da_d5_ba_3d_50_81_70_6d_f5_e7_5e_6cn,\n 0x11_2f_e3_f6_64_84_9a_f9_f4_94_cc_f3_cc_f0_d4_b8_f1_e4_a6_00_c2_96_31_d0_59_bc_6e_c3_43_45_0c_49n,\n 0x23_2b_3e_1d_47_15_27_2d_5f_18_a0_36_c1_37_f0_c6_fa_56_87_8c_9a_a0_54_cc_33_06_4e_2a_5d_30_f5_67n,\n 0x05_6c_91_dc_ea_ce_41_ab_13_1a_1c_59_ce_4a_32_08_57_22_4a_09_65_7e_d8_2f_71_41_e7_61_9a_5d_b5_45n,\n 0x14_4c_d9_83_cf_a2_59_51_63_82_14_8e_29_0d_ab_14_ba_9b_5d_8e_6e_76_b8_4d_da_e2_ab_08_6e_7a_79_52n,\n 0x1d_21_aa_d5_c6_b4_07_e6_ee_e7_d0_b5_5a_a9_2c_e0_a3_2a_39_e9_18_bb_32_bc_8d_45_c2_80_94_a6_34_afn,\n 0x17_6f_60_be_5a_21_b9_8d_34_69_e1_33_9b_d5_c7_a0_a8_ee_84_a0_d3_43_39_be_f6_75_d0_64_e6_e0_a4_66n,\n 0x03_29_d0_48_65_8d_0e_ef_ed_7f_3a_aa_9b_c1_43_b0_c2_66_36_f1_32_62_17_6d_65_0a_1a_7a_20_44_d3_4bn,\n 0x0f_ef_28_f1_14_d6_42_0d_1a_28_8f_96_0f_d9_dd_40_bd_4a_5a_02_d5_80_81_62_17_11_dd_d2_88_7c_75_7bn,\n 0x08_81_88_13_ba_3e_9a_93_29_25_4e_78_e0_0a_83_b3_60_c9_05_c7_20_24_59_cf_ad_0a_b4_76_58_27_6a_81n,\n 0x02_0a_12_8b_71_12_99_4e_52_c4_84_9b_ba_8d_12_17_f1_3a_95_7b_b4_d0_ba_6a_0d_97_cf_19_14_b6_5b_07n,\n 0x09_80_db_3c_7d_2c_88_66_e9_ca_09_02_c3_b8_e0_a0_78_58_59_51_ea_4a_cb_ac_24_5b_61_cf_55_a7_03_afn,\n 0x14_f2_bd_6d_c3_17_fe_19_12_6b_58_3d_a1_8e_2d_71_75_cf_a7_04_c5_26_7b_84_8a_2f_f9_a1_2b_b1_88_c4n,\n 0x11_22_6f_e9_d8_1f_aa_6c_6a_35_d3_a1_22_30_d6_32_45_06_1f_20_45_36_1e_75_7a_a0_c5_ba_7c_5b_31_52n,\n 0x1f_c1_44_aa_27_5c_ad_95_0e_e4_e3_18_2b_b8_77_83_dc_45_90_6b_2e_84_6e_27_03_22_8e_5d_53_28_c1_fbn,\n 0x07_85_8a_3e_15_ad_fc_14_14_10_90_d9_72_cd_da_34_61_90_8d_bf_d1_c9_1b_7e_9b_99_17_60_c1_d4_77_49n,\n 0x19_28_44_89_d7_b5_3e_d2_54_9c_5f_c6_63_31_c7_1b_9b_31_44_6e_b3_66_8c_65_d8_5a_d0_94_72_7d_45_e0n,\n 0x05_87_70_2c_19_b9_73_78_57_f9_9c_fd_02_1f_8f_c6_af_71_b4_28_e3_ae_90_f9_f5_d2_ec_8e_71_40_f5_d8n,\n 0x30_60_2b_29_6c_e2_45_0d_72_b0_0e_e8_ce_ce_9f_89_68_42_ff_34_70_b9_8e_1c_ba_2a_1b_3a_d8_75_39_ebn,\n 0x27_76_db_ec_07_9a_50_34_70_0c_d9_c6_e2_14_04_ea_bf_7c_13_fa_17_d0_65_a2_d6_9d_29_87_a7_18_e7_8en,\n 0x28_bd_d0_09_54_9a_97_fd_0c_29_e9_c3_0f_7a_f9_55_5d_86_4a_ee_05_ad_18_86_fb_91_8d_37_1a_d2_9e_90n,\n 0x29_79_1a_2e_17_dc_20_4a_fe_64_53_06_f5_84_ad_76_7f_2b_e9_49_aa_6d_06_1f_88_6f_21_d0_40_1a_ad_14n,\n 0x22_a6_67_b6_59_08_69_9a_22_ed_c1_69_73_24_bd_37_ff_b0_f1_8f_00_c0_ba_72_92_ec_8e_05_47_0f_bd_76n,\n 0x20_0d_48_63_b2_f3_5a_85_3b_7d_5d_cd_c2_2b_cf_fd_8f_45_b6_0b_d0_36_c2_f9_49_07_d8_73_e5_d9_5c_a2n,\n 0x18_bd_cc_ac_a1_1c_8a_10_a1_2b_e6_f7_cc_96_d4_55_7d_d9_cd_be_cd_5f_84_1e_87_30_3e_3a_31_2e_9e_23n,\n 0x12_6f_f5_02_71_4b_58_c3_a4_0f_fa_3d_96_df_0d_e4_e8_af_f3_54_39_75_23_5b_f3_51_0c_7a_b2_2d_89_7cn,\n 0x05_70_fa_4d_1c_92_cf_29_17_03_6f_b2_d4_77_72_7e_55_b5_69_b4_a5_88_91_a0_7f_96_c5_00_c2_8b_bc_e2n,\n 0x08_c8_40_00_db_8f_72_56_55_f4_74_32_db_3a_4d_de_51_4d_cf_49_b4_0f_c4_d3_01_a1_7c_e5_d7_22_8f_ebn,\n 0x07_21_2d_a8_af_b3_53_76_a4_b9_f9_3c_20_f7_41_9e_c7_04_b2_2c_89_8b_20_eb_bf_3a_c9_f1_bf_51_30_38n,\n 0x28_c6_bd_86_67_a7_e5_33_6e_bb_7e_53_c7_24_99_0f_c8_af_6a_05_93_90_35_3b_ee_16_d8_c8_db_a9_71_e0n,\n 0x01_79_0e_7a_8c_59_eb_bd_ce_18_ea_7b_9b_e2_61_b8_84_8a_8f_5c_69_b3_cd_7a_7b_63_a1_b1_e6_d4_c9_26n,\n 0x09_ce_10_75_1c_2b_7b_90_bc_e0_d6_2e_8f_cb_29_fd_3c_8a_0d_28_6e_93_41_1f_c6_65_88_a7_0a_14_a4_fen,\n 0x20_3e_c5_79_41_7e_bd_5f_05_6e_13_46_a8_c5_be_34_cd_a6_6c_99_01_fb_b0_bc_27_b8_d7_73_de_7f_66_5fn,\n 0x22_97_98_11_00_bf_d0_bd_bc_49_55_72_aa_e5_ed_56_76_ec_f2_b6_93_e3_39_13_b8_fc_ff_e6_5f_57_f4_cfn,\n 0x00_e3_ff_f3_6b_b5_54_a0_17_f9_4e_88_13_09_57_a9_75_d3_43_d1_5c_07_72_a6_7c_e8_8b_b1_73_6d_b3_e5n,\n 0x22_21_4f_9d_c3_1c_17_66_78_48_46_26_09_71_d0_51_ae_ee_92_22_6b_6f_13_e2_c4_67_86_89_ee_13_04_ban,\n 0x1e_ec_ca_ac_a2_3a_14_46_30_9c_a4_c3_d9_b7_d0_79_62_db_f8_bc_d8_b3_b3_72_18_f4_19_92_81_26_33_27n,\n 0x1b_d5_2c_f0_ab_bd_32_e8_88_d4_02_aa_c0_a3_58_30_9b_c8_3e_b7_42_56_ef_a1_7e_dc_1a_ba_d1_96_bf_63n,\n 0x26_cd_8c_e2_ac_e7_91_14_e2_ee_96_fc_1c_a3_80_1d_01_23_45_c6_87_50_00_97_45_73_5e_df_c4_e2_9d_71n,\n 0x1d_d9_21_01_3e_65_19_e2_9b_9a_a0_f5_2c_c8_c0_2f_ff_3a_d7_af_6a_18_7e_f0_e9_06_35_00_84_06_dd_02n,\n 0x10_35_8e_1c_b8_ac_12_e5_49_88_a6_4b_ee_4f_1e_94_92_1f_03_0a_69_26_a0_0d_57_23_62_83_ea_0c_0a_c2n,\n 0x1c_a1_16_8b_16_7a_a5_29_8b_ff_96_d8_23_56_b7_38_7e_bd_1d_70_43_1c_30_b1_c0_c0_df_81_fc_04_08_c3n,\n 0x08_d1_ab_26_92_d2_91_aa_ef_2e_50_98_5c_86_94_85_06_15_78_a2_df_c3_79_97_22_2c_81_ef_30_1f_a9_42n,\n 0x2d_59_78_0d_d0_a0_0a_86_95_16_c6_a0_b3_00_ed_06_f6_fc_39_e0_f9_ea_d6_05_07_cb_24_c1_44_44_89_9cn,\n 0x19_b3_0f_06_35_56_90_af_a7_79_69_3f_7f_99_c4_a4_70_f8_ab_8a_bd_69_89_99_3d_48_9a_9b_17_18_0c_b2n,\n 0x1b_93_c9_36_7d_56_b2_07_bb_1a_2f_17_1b_56_20_8c_6a_a1_27_9b_e2_57_2c_1a_59_e6_53_45_d8_73_76_8dn,\n 0x2f_8b_45_e1_e0_79_44_8a_de_81_8b_cb_78_5b_0c_8b_ca_ee_f0_04_d9_56_14_23_47_a0_84_67_e1_96_18_09n,\n 0x23_9a_f6_91_b7_d6_ed_f2_76_1f_88_de_ea_ec_66_51_69_de_99_39_9c_ef_81_9d_cc_37_b4_60_9b_6c_b4_e0n,\n 0x12_60_bd_29_9d_9e_99_32_15_61_09_05_59_b3_f9_0a_fe_d3_a3_6f_36_c4_d3_97_07_2d_e2_93_d3_4c_f8_b3n,\n ],\n // t=9 (8 inputs) - 639 constants\n [\n 0x20_88_ce_95_34_57_7b_f3_8b_e7_bc_45_7f_27_56_d5_58_d6_6e_0c_07_b9_cc_00_1a_58_0b_d4_2c_da_0e_77n,\n 0x1b_86_e6_39_08_c4_b1_2a_f4_3c_ec_68_10_35_6c_94_d2_1c_9e_37_d7_3d_ff_f9_74_2a_58_e0_ec_35_6b_e1n,\n 0x09_ca_02_2b_a1_14_2d_17_0f_75_52_12_e2_ed_c9_d0_a4_ac_e3_3e_16_82_5f_54_0d_5d_50_d5_a0_21_a1_69n,\n 0x27_7e_69_d4_7a_13_38_04_24_1f_6a_eb_e9_44_9b_e6_e2_2c_84_9c_6d_8a_d8_c9_38_ea_f6_13_bc_1a_ec_d4n,\n 0x17_b5_7e_a0_37_54_e2_4a_e0_ef_42_5a_a2_ad_93_1a_ac_9b_a5_45_7a_18_ce_c5_94_54_5a_23_5d_b6_b2_69n,\n 0x11_c7_40_98_33_95_e0_f4_a0_26_e2_c7_c9_39_23_63_75_c9_07_77_55_eb_1a_37_a7_7d_5a_1f_d7_4a_ba_c6n,\n 0x1c_d8_55_29_01_0d_d7_e2_fb_7e_a4_03_51_5b_ab_57_27_55_6a_47_9c_59_b8_22_ef_c5_a8_1e_b3_7b_c5_bdn,\n 0x2c_b9_35_40_02_ce_c4_bc_bf_a9_85_de_34_f4_3d_70_2c_ed_83_d1_97_aa_37_4b_5a_1f_96_f8_7b_12_f2_92n,\n 0x1f_7a_f9_8e_08_f6_87_79_23_f2_7a_3d_ad_40_c5_25_ac_52_f5_6f_bb_d8_78_50_65_44_f9_ac_d6_1a_a3_2dn,\n 0x2b_15_17_69_25_df_33_a4_5c_9e_99_a7_c4_f2_6a_d9_46_b1_07_5d_e5_8c_70_64_c0_ff_92_c4_31_d3_1d_d5n,\n 0x22_c8_98_59_b4_d3_99_d3_a6_0a_32_2d_6b_39_9b_88_06_13_58_49_3f_3c_b3_65_3f_da_94_0e_98_8c_1c_a3n,\n 0x1a_9f_27_30_c8_08_54_d8_f6_dd_98_10_93_63_d4_05_59_70_39_37_3a_f5_05_5a_a6_7f_c1_8e_5b_19_38_fen,\n 0x04_0b_ae_2c_57_fc_68_e3_ce_5e_29_49_98_ea_06_0e_25_63_eb_ba_c5_8f_f8_fc_4a_1a_0a_40_57_5f_0e_d3n,\n 0x16_bf_4f_56_22_72_94_67_ee_97_49_cc_38_06_05_d2_bc_4d_88_5c_b9_96_99_aa_2d_d8_56_5c_4f_af_8b_7en,\n 0x10_45_ec_ea_04_4b_a1_cb_1c_3b_f0_7f_f4_96_83_90_a3_ea_07_50_01_b2_16_37_ec_7f_ce_f6_1b_11_32_9an,\n 0x26_a3_19_fe_6b_7d_6e_08_dd_6c_ea_95_87_cf_e3_f5_23_49_2e_ce_76_9f_70_f6_6d_3b_61_97_a2_62_fd_09n,\n 0x28_a5_62_9b_4c_20_83_38_7e_ac_b0_9c_15_71_25_6d_17_2e_f1_ed_9c_07_38_68_6d_a8_42_16_ba_81_bd_6en,\n 0x18_6b_e2_2b_6a_06_3d_18_cc_87_60_db_a6_3b_11_9c_fc_6d_88_97_e3_2d_6a_0b_19_de_28_05_32_fa_97_26n,\n 0x2c_41_ea_f9_c0_12_8c_48_6c_55_95_a1_ce_d6_b3_dd_15_bd_9b_73_21_8c_6a_f8_81_37_cb_8a_a5_c5_74_e7n,\n 0x11_86_42_65_d7_6e_88_73_b4_d2_ce_cc_d1_8d_ad_a4_6a_b7_21_33_21_db_e0_68_37_27_fa_2d_f7_e3_cd_7an,\n 0x13_83_e7_37_1d_7f_3e_b7_5f_97_46_1f_f7_95_65_53_81_66_ed_e6_fb_6a_c6_8b_02_cb_60_d8_32_24_67_e4n,\n 0x1a_00_53_46_e9_ed_c5_95_73_e3_98_9f_34_c3_04_ff_13_51_de_96_42_f3_98_16_36_02_e1_38_c5_9c_74_69n,\n 0x2b_54_13_45_bc_4f_e1_58_9d_64_92_70_ce_ed_4b_2d_c6_29_9c_69_a5_d2_4b_46_0e_36_f3_b4_eb_48_60_52n,\n 0x21_3e_74_e3_b8_86_92_06_8b_42_0f_da_c7_a6_2f_3e_90_f8_7e_8b_d9_93_31_0b_98_28_81_b4_ea_7e_b5_8dn,\n 0x02_54_37_0f_df_60_e3_19_df_5d_27_b9_84_e2_1d_89_79_c8_6c_c6_c9_db_77_b4_7e_9e_03_7d_41_ae_2b_84n,\n 0x08_3b_73_77_98_7b_ed_3f_bd_0c_5e_e3_27_9c_cc_b3_19_ad_aa_66_0b_b6_a7_9c_ee_e6_27_f5_a6_36_9e_cbn,\n 0x0a_2b_26_bb_f2_b8_4a_55_bc_4c_5b_09_b2_09_d4_a7_7b_ad_e4_ec_b0_99_9e_2a_70_02_1c_cc_d4_fb_ce_1cn,\n 0x28_70_90_d4_07_c4_c5_29_3c_d7_2b_dd_88_1a_ce_1a_47_85_c5_18_89_ac_9c_a0_53_fa_ef_06_85_33_eb_09n,\n 0x00_a9_fc_c2_1a_23_4b_c2_2a_47_3c_04_93_1d_de_66_47_60_01_ea_6e_32_93_12_77_ca_4c_da_b6_2a_85_87n,\n 0x1d_79_fc_c5_06_6f_f2_a6_2d_6e_c0_c0_96_f3_c0_62_3f_97_22_c5_d1_0d_64_11_38_6b_8c_f0_66_06_d1_16n,\n 0x1d_2d_a6_76_08_1b_7b_0a_7d_87_a5_7c_6a_6f_2c_91_02_2a_82_29_19_34_ae_8d_64_68_14_f3_8b_7c_9c_c3n,\n 0x01_21_18_9d_73_62_db_a9_2f_3b_ba_28_73_7e_a2_47_e8_5f_f4_b3_ce_ab_b4_ea_da_c2_6f_7a_79_d3_71_adn,\n 0x03_ba_01_bd_c7_f3_1b_4b_36_26_83_1d_5e_82_85_2a_5d_a5_a7_f4_72_f4_97_56_43_62_ee_63_bd_6d_61_02n,\n 0x21_64_87_ac_4e_ea_81_e4_d8_35_b2_20_c7_f1_e7_b7_a3_31_2d_f5_ed_0b_6e_60_6a_16_9b_de_c8_9a_35_cbn,\n 0x0e_b5_eb_42_4b_c7_2e_5b_20_77_9d_61_38_a7_29_6d_c3_33_b4_d9_8e_4c_ed_e6_98_c1_d8_f3_06_9f_c8_04n,\n 0x14_76_08_7e_e6_88_63_fe_69_d5_38_de_90_f9_0b_f2_71_87_5f_af_ec_3a_ac_68_31_fa_17_81_1a_fc_45_f6n,\n 0x25_99_5e_cf_07_9f_4f_81_92_5c_e8_05_0e_6b_dd_0b_44_0e_7a_df_b0_0d_a7_e4_df_d8_a5_aa_ec_00_9f_32n,\n 0x01_b5_90_ea_14_5d_f6_15_2f_f0_e8_ec_cb_97_f0_57_eb_37_8d_3d_c8_58_5a_81_95_a8_fc_6b_03_dd_db_21n,\n 0x0e_bf_ed_12_77_7a_d9_74_77_34_d8_2f_b7_ab_59_eb_c8_5f_07_c3_d0_55_eb_98_7d_d4_24_70_e0_16_bd_52n,\n 0x2e_03_b5_19_ff_07_0e_31_ba_d1_ce_d2_5d_02_de_18_c5_c0_73_35_58_90_f2_6d_64_37_c9_99_0a_3e_23_2cn,\n 0x02_8e_d4_8b_ef_b7_05_34_a1_57_c0_bc_80_37_34_78_30_ff_6f_7b_ff_ed_a9_3a_22_66_31_17_c3_03_81_09n,\n 0x21_d5_48_0e_f2_28_8c_f3_76_27_08_3f_5c_6f_f5_80_66_45_d7_87_83_39_79_21_69_d1_09_94_5a_a8_79_ccn,\n 0x2a_01_7f_4c_a6_27_17_fe_9d_61_6f_c3_b7_4f_42_6a_22_66_6a_26_8e_ed_19_0c_92_51_36_79_ff_53_18_66n,\n 0x08_5c_f1_23_08_4d_6b_4b_0b_2b_34_cf_06_cf_6f_89_3e_0a_9d_b6_64_95_85_60_e1_31_02_dc_a2_58_a1_82n,\n 0x01_ca_b1_eb_61_ae_5a_9c_4f_1b_1f_0f_4c_f7_10_73_d0_63_cf_8e_a6_ec_b3_a3_26_bc_3f_2f_24_fc_30_abn,\n 0x08_b6_59_a7_37_c0_a7_e1_98_c5_1d_e0_74_38_e7_fa_ee_94_36_97_15_04_23_67_49_5f_03_05_e8_9b_b9_6fn,\n 0x02_b3_ad_fe_f9_56_00_7b_a9_49_e0_44_a6_81_15_b0_a9_c8_95_a8_13_86_e7_69_74_4e_7b_5b_2c_30_7d_f6n,\n 0x1a_50_2a_7b_08_83_de_af_9b_24_a7_b4_51_cf_43_9d_9b_04_c4_0a_f2_fe_cc_17_2b_05_7b_4f_c0_0c_af_a6n,\n 0x30_48_a5_36_a2_a7_5a_f4_1a_0f_a5_96_75_2c_83_ed_b1_9c_46_c0_0e_40_72_51_6a_2c_ce_33_a4_2c_e9_49n,\n 0x01_d0_08_21_68_32_f7_77_36_b9_f2_c8_ea_f1_8d_2a_e6_9a_75_95_a3_d2_e8_72_5e_75_b3_e9_c6_6a_b2_2cn,\n 0x06_73_89_fa_67_19_bb_9e_49_34_24_57_6d_30_d6_25_4f_1b_7d_54_e6_9e_1d_18_96_c1_b1_5e_e8_5c_0c_20n,\n 0x17_da_04_cb_50_60_86_15_88_a4_de_e6_0d_ac_ec_40_7e_08_d6_b1_96_50_35_94_52_70_56_99_bc_dc_ab_f4n,\n 0x1e_11_0b_24_52_6c_f1_94_48_a0_4b_71_f9_1f_83_4d_90_3a_08_d3_a7_65_8e_05_ff_01_04_ce_6d_e1_4a_f0n,\n 0x0b_0a_28_b6_72_69_dc_fb_24_22_31_c7_38_4d_9b_96_c4_40_67_08_f1_a7_be_c2_61_60_e2_35_2a_82_0e_34n,\n 0x02_26_ba_22_3b_f5_cc_83_1b_ca_60_4a_2f_55_b3_24_ad_1d_4b_29_b8_1a_e3_3c_bd_73_91_ad_0d_ca_0c_61n,\n 0x1f_a5_06_fa_e7_1f_61_7d_b6_a0_4d_ba_21_eb_62_24_ac_ca_c5_f7_cf_f1_45_94_70_93_bf_ce_2f_3f_5c_fcn,\n 0x29_72_4c_c2_97_3b_5b_34_c4_e5_3f_b9_81_f2_73_58_9e_7e_04_67_a5_b4_b5_a1_6d_59_6f_48_84_4f_03_94n,\n 0x20_18_58_15_e6_d5_bd_43_d7_69_b1_e7_b3_a4_23_69_db_44_fa_da_44_53_4a_9e_41_a1_81_a7_cd_90_ca_c4n,\n 0x2c_b5_ec_ab_94_a2_fa_f8_99_86_b5_65_54_54_93_d5_d8_64_9d_73_a9_f5_31_33_b6_14_af_6d_89_37_66_12n,\n 0x06_77_27_04_a6_a6_c3_96_f2_f1_86_27_2d_b8_25_13_5c_59_86_fb_db_ce_0a_3f_d8_79_bc_27_ee_21_34_bfn,\n 0x01_12_bf_f4_73_66_79_a4_77_44_0e_74_4d_7f_c6_19_1e_16_8e_fe_6c_37_fd_0b_ee_b6_e6_4d_30_59_18_51n,\n 0x2f_aa_cc_24_8d_2f_74_2b_7d_c5_0b_01_3b_e9_c4_b2_ea_8d_00_be_17_28_32_ad_07_ac_0e_26_8e_39_1a_57n,\n 0x11_5e_a0_53_91_5c_92_31_d6_b9_a7_1b_4f_34_37_e7_6d_08_af_6e_8f_e7_e4_2a_38_00_13_64_98_df_40_aan,\n 0x03_53_e2_c2_84_5c_0f_df_c5_3f_58_39_4e_2d_ba_ca_06_16_4d_10_db_af_75_61_27_62_1b_5a_22_18_12_35n,\n 0x29_b3_68_59_00_bb_ac_a9_10_36_3a_e0_cd_ec_5f_61_ca_e2_c5_2c_7e_de_3e_c0_10_e2_af_ea_c7_48_71_0en,\n 0x1a_73_ba_98_5b_82_42_09_d0_a9_f3_10_92_07_91_fa_d9_22_7b_21_bf_d8_e8_a3_a9_f1_c2_fa_89_fa_c1_a4n,\n 0x27_46_82_d6_3a_1d_6a_9e_b5_ea_22_e0_55_8b_14_5f_5b_9b_5e_84_5c_8c_9d_ce_b8_3b_e9_43_30_9a_30_5fn,\n 0x24_9d_e6_63_df_df_66_82_dd_c1_22_e0_2a_ac_0d_79_39_8f_38_e6_08_9d_92_e2_c8_92_cc_f9_49_fc_af_cdn,\n 0x07_63_46_a4_94_ca_49_99_18_22_9d_2f_af_87_b6_b5_af_d4_99_2f_0d_7d_40_23_cb_b6_77_ea_43_76_d4_e2n,\n 0x07_12_15_4e_b4_3b_0a_3e_8b_dd_94_e2_9a_d8_59_39_e2_20_da_f6_93_1b_84_46_47_41_e6_4e_99_26_b5_0en,\n 0x15_bb_7e_12_7b_9f_c9_37_64_26_92_a9_2d_86_49_60_e2_49_dd_f3_27_fc_6c_92_af_de_dd_89_be_fc_6c_32n,\n 0x0d_43_8d_88_5c_3f_ce_5b_06_a8_05_84_01_5e_af_7a_8a_e0_5c_60_05_2c_10_ab_80_d8_00_76_80_0d_8e_11n,\n 0x2b_ff_b8_73_c9_b0_47_62_b2_e3_62_d6_19_5c_80_13_dc_f7_a5_fd_88_18_94_b7_dc_38_3c_8a_a3_4a_9e_0cn,\n 0x24_ea_42_c7_6f_73_50_d0_8e_8b_10_16_66_3f_da_a3_f8_55_2b_95_64_e5_ba_2d_a4_5b_76_65_27_07_d6_c0n,\n 0x2a_62_ea_21_a0_ad_e4_74_0b_80_8b_9d_83_8b_4e_f2_05_b1_19_3b_57_9e_ce_ce_0d_a3_45_23_c4_81_df_bcn,\n 0x0c_49_77_4a_68_f5_27_4b_46_8c_ea_0f_32_21_1c_c9_a8_ca_86_4c_6d_32_f2_c6_44_b1_ab_89_ed_f4_75_e9n,\n 0x0a_9b_4d_3d_32_56_4d_83_c2_4d_4e_05_2d_c3_07_2c_ff_d6_1c_bf_fa_ec_95_71_51_fe_ad_13_24_60_73_ccn,\n 0x22_11_79_d8_48_ae_3c_29_ba_a0_de_8e_19_ad_39_9c_f0_00_dc_fc_e5_72_ac_31_0f_c6_4b_d4_d2_01_c3_a1n,\n 0x17_02_29_43_52_57_9a_43_d1_9d_a1_5d_ee_1f_dc_b2_a7_0a_45_de_25_20_34_35_e2_34_06_92_f7_f5_e0_a0n,\n 0x05_9a_b7_88_27_36_00_68_5c_f6_de_04_f8_7c_a9_db_bc_eb_1a_ef_e3_7f_77_96_63_a7_ef_50_19_d4_d8_e0n,\n 0x23_af_64_b1_62_2b_e0_77_35_af_19_99_69_13_98_ad_6a_03_40_29_a1_09_ce_43_5f_12_c1_b2_1b_41_f5_99n,\n 0x10_9e_d2_1e_24_56_ad_7f_94_a0_c6_ca_6e_d9_42_ef_5e_81_32_43_3e_5f_ba_6e_d8_f4_9b_20_38_59_45_16n,\n 0x26_d9_cc_fa_53_79_d3_fd_69_27_a5_89_58_33_8d_60_37_87_22_71_d8_91_f1_9f_67_f7_0c_39_e0_89_33_26n,\n 0x24_ea_9e_2d_b3_58_c1_be_cf_7d_cd_7d_0e_46_97_9a_64_72_07_81_6a_e5_a9_01_fb_00_a6_cc_d9_91_d0_fen,\n 0x00_15_a9_b8_c3_3f_ce_93_ae_39_71_d1_93_a4_30_be_98_ee_ca_1d_27_73_59_74_cf_50_2b_fb_20_c7_1b_bcn,\n 0x2b_bb_36_6f_79_bc_3b_aa_13_8d_79_a9_6a_b5_cd_14_82_6b_d3_a8_53_47_e5_59_55_0b_f3_51_f2_96_dc_1cn,\n 0x0a_1c_76_64_1e_de_d1_57_ea_a1_bf_4a_ad_c9_56_79_1d_9e_7b_29_eb_14_d0_76_54_af_05_26_86_b7_0e_29n,\n 0x0a_8a_9f_9e_e8_ec_f8_ad_0b_5c_d8_42_17_af_26_fd_ce_2c_a1_6c_07_bc_74_7d_10_3a_bc_b4_8a_b2_1f_c2n,\n 0x26_d6_85_2b_59_17_f4_e2_29_c4_68_24_d0_0b_44_44_2b_77_d8_e5_66_fe_3b_39_01_ba_6d_e2_01_1d_ea_d6n,\n 0x19_60_17_34_c3_0c_b2_a4_4e_e4_a3_23_b3_5f_2c_17_1e_d6_7e_0f_3c_1f_ce_c7_09_6e_5f_01_fb_ae_68_85n,\n 0x07_89_5f_7f_02_9f_84_c3_f1_7e_35_9b_0e_e9_26_d4_02_50_55_87_f3_86_cb_b7_10_70_bc_17_cc_87_d0_44n,\n 0x05_80_7e_0a_2b_24_73_f3_b8_71_30_58_6c_78_68_22_8e_b4_d9_50_3b_f2_5c_c2_b0_f3_5a_93_9e_0e_f4_83n,\n 0x1a_c9_ba_8e_b9_e2_fd_e0_a7_98_86_aa_8c_7d_bd_36_2a_a4_90_a3_55_e0_79_82_82_8b_e3_e5_09_9d_2f_den,\n 0x23_1c_75_95_f7_6f_ea_58_28_67_2a_fc_5b_bb_64_63_cd_00_e7_a0_73_46_e2_58_8a_f5_63_8e_3b_32_1b_40n,\n 0x2e_3d_16_77_31_02_17_ce_5f_cc_58_f4_03_95_32_ff_94_6e_2e_ff_2b_80_d1_7f_58_1c_a7_8f_00_68_67_2dn,\n 0x09_74_16_34_41_71_29_75_a3_3b_40_93_f9_22_d7_df_17_b2_bd_ce_7b_7e_b0_2c_78_30_c5_98_04_64_00_0en,\n 0x1c_f5_c1_a4_28_08_22_a5_9d_ee_cb_82_a6_4b_aa_b4_ed_b8_79_77_e9_8e_e2_91_39_bb_51_67_1b_99_19_b2n,\n 0x11_ad_46_e1_37_92_15_0c_f5_79_33_aa_94_76_ec_91_84_bf_d5_f2_3d_e4_6f_1d_f7_8e_d7_e9_4c_c8_12_89n,\n 0x08_28_fb_fc_09_51_c1_ea_0c_0f_3d_5a_f2_fe_57_96_ed_79_2a_9c_3c_c4_00_2b_41_e7_a1_bb_8e_63_da_e7n,\n 0x02_c7_20_a8_48_6e_71_22_30_53_04_ec_f3_a0_0f_99_85_45_35_c4_ff_40_4f_e8_2e_30_e9_9e_85_00_fc_f6n,\n 0x09_bd_fc_94_2f_ba_88_24_c0_a3_8d_6f_52_5f_91_76_36_0d_28_81_aa_42_50_28_f1_cd_3a_7f_c3_ef_72_c2n,\n 0x1d_95_4a_0f_93_25_0e_55_81_c6_b8_97_fb_d7_2f_4f_2a_94_3d_de_51_e2_62_e7_dc_c4_a1_b2_ca_82_e2_bbn,\n 0x2b_82_93_52_e2_97_ab_21_06_e7_4f_9f_e7_02_f6_96_35_ed_f3_7e_7a_b0_e1_a7_f9_2f_14_c9_8a_ed_56_ebn,\n 0x12_d3_b9_17_e5_8f_1f_44_e1_ba_ba_a3_41_d1_da_c9_23_df_ac_75_48_2e_10_8a_f1_c3_33_68_73_4a_90_4en,\n 0x28_a9_e6_c6_5d_06_ed_6e_a4_77_95_bd_e9_b1_77_b5_50_93_05_f8_53_26_06_2a_d5_01_50_77_af_e4_bb_fbn,\n 0x2b_d3_c3_3a_e3_11_c2_f8_d4_ad_82_50_8b_76_df_89_0c_31_1f_c8_d2_32_fb_c2_dc_53_5f_a5_93_22_1c_a8n,\n 0x27_2d_00_d7_a8_fb_14_63_bb_62_4f_1d_d7_74_ed_c8_f3_a0_92_3b_f9_05_9b_ae_3d_84_da_23_76_7d_68_73n,\n 0x13_55_a7_96_ab_df_aa_90_3b_81_df_ae_32_10_1a_13_06_8f_50_70_44_05_52_ee_e0_ac_f2_a4_d0_7d_03_bdn,\n 0x07_34_bc_bc_e4_18_0a_e1_6d_4a_66_89_b9_b9_4f_2b_02_cc_7d_74_ca_8e_f1_59_2c_d1_6a_fe_2a_03_37_28n,\n 0x07_78_d4_a6_14_c2_f7_6e_28_19_9d_98_9a_90_52_e2_62_74_64_b6_20_d9_1e_7b_6d_3d_15_db_d4_79_9d_54n,\n 0x16_bb_c9_80_a6_7b_2a_65_43_4d_08_7c_50_18_59_d1_27_db_37_7a_e1_44_ff_63_4c_b8_57_4f_e8_bf_86_9cn,\n 0x12_a3_e7_e1_97_b0_50_4c_68_94_36_62_45_be_d6_5e_32_6d_b7_c7_aa_f2_c1_c0_d5_9e_4b_ac_10_d6_33_cfn,\n 0x1f_35_f8_c4_43_1f_b0_db_f4_2d_9d_07_33_4f_d6_7f_99_16_0f_a9_f7_e2_0d_81_1f_4b_8f_ea_7d_d5_d3_3fn,\n 0x25_d5_bf_1a_86_3a_0a_64_41_cf_55_e7_c8_5b_8f_23_2f_f1_55_6e_77_fb_cc_6d_71_e8_bd_f3_49_bf_df_bcn,\n 0x15_e6_b8_d9_ab_7e_06_3a_36_38_21_6a_e4_71_17_6e_87_ee_4c_e3_0c_c2_4c_ad_19_58_7a_23_33_23_20_aan,\n 0x01_92_9e_f4_7c_73_22_b7_7e_bd_0d_1a_40_f9_ec_4d_41_eb_26_41_bf_ba_35_a9_cb_a7_b7_08_a5_34_c9_can,\n 0x18_4f_51_e7_91_ed_aa_2d_ea_79_11_15_12_47_ba_d4_b0_e8_64_d7_a8_f6_78_c7_70_8a_c6_5c_51_e3_bb_79n,\n 0x26_05_ad_f5_56_2d_50_55_ff_b2_84_df_1e_c0_d4_e3_71_ee_e0_59_5c_e1_42_2a_c5_35_a4_10_59_7c_d8_66n,\n 0x06_e6_d4_1f_eb_83_2c_2f_e0_07_e1_bc_cc_81_44_25_85_bc_9e_ae_16_12_b8_bc_3d_2a_49_25_c2_39_ad_51n,\n 0x13_7e_b7_da_06_89_55_cd_e2_8d_b6_ae_5e_78_0b_7a_e1_c0_d6_33_cd_d1_13_bf_0f_de_43_45_ac_9c_95_4dn,\n 0x2e_97_93_0e_b4_19_f7_35_3b_a2_7b_25_87_97_53_fe_64_d7_d1_87_02_3c_e2_de_4b_f9_e7_0e_ba_6e_9b_b6n,\n 0x13_af_40_93_62_08_78_66_e6_2d_68_60_fd_ab_15_92_07_40_5b_f9_c7_5a_9e_fd_93_21_73_6a_1d_81_24_13n,\n 0x0f_d2_f9_54_04_a9_e9_2f_46_d5_7c_80_50_73_75_72_49_66_26_45_60_eb_af_b3_ff_2f_d1_92_59_d4_7d_62n,\n 0x0b_dd_93_ac_21_ae_df_31_82_6f_c3_01_2f_c8_ff_f1_43_84_ad_d5_21_d9_81_35_df_3c_e7_0e_47_d3_81_16n,\n 0x08_3e_a6_78_d5_a5_3e_8a_9b_60_19_06_be_fb_ef_23_81_1a_61_37_78_8b_b8_73_fe_fd_55_21_f7_d9_9f_03n,\n 0x08_a9_90_6b_e6_e9_ab_93_cb_f1_b9_4f_09_0d_f2_d0_2d_f6_c6_cc_ff_63_64_c2_ed_69_86_d6_1f_16_af_29n,\n 0x18_7b_1c_82_cf_af_88_04_49_33_7c_fa_77_f6_18_e3_ed_19_c6_04_e6_5f_b7_68_b0_33_3d_8d_53_5e_aa_47n,\n 0x24_50_05_f8_14_e3_82_50_75_11_43_11_7f_5e_27_d5_c1_73_f0_ca_4e_a2_a8_1b_1b_8f_3e_90_d7_fe_c4_f3n,\n 0x25_aa_5a_53_ec_5e_71_f3_f4_7f_b1_cf_8e_a8_c7_57_fa_b6_9a_61_27_4f_b3_6e_ad_a7_1d_ea_f1_61_4d_b2n,\n 0x01_c2_44_a2_ed_19_22_75_3b_39_ec_6b_77_5f_07_ca_d9_1b_14_cd_9b_65_78_b6_44_92_c2_cc_4b_0c_8b_b9n,\n 0x01_66_4e_5c_86_12_16_c4_cb_10_cf_3a_3b_d5_1a_fa_0f_3e_59_ea_e2_4f_cd_7e_7d_aa_a8_53_d4_6c_38_2en,\n 0x2a_f0_01_a2_96_c1_11_e4_1e_32_7a_d2_12_ed_30_23_4d_a2_be_ad_a0_44_9e_a1_d2_e0_f0_a0_0e_42_40_74n,\n 0x16_02_2b_dd_67_d2_ad_e1_5f_66_1a_28_7d_fe_23_91_54_33_b2_70_f2_8c_24_e6_06_6e_45_03_9a_ed_81_3bn,\n 0x13_2d_7c_a5_f9_35_f3_e8_86_42_68_ad_72_3e_87_80_df_36_91_63_84_a5_4b_81_2c_74_a7_49_a2_68_26_f6n,\n 0x20_bd_ab_98_29_e4_8c_89_a9_9d_0e_8b_0d_69_b7_9a_4a_27_38_08_80_7a_de_4e_c5_db_95_fd_18_4c_4f_37n,\n 0x28_db_49_43_50_ae_9c_81_ab_52_d7_19_ea_05_f9_8d_c2_af_e8_7b_c1_af_e5_56_16_1e_61_77_22_58_a9_51n,\n 0x19_fc_92_f1_d2_c1_dc_04_3a_f3_42_7b_77_ea_74_e8_0a_b9_f6_04_1e_0e_51_d1_b2_4d_9c_b9_f3_fb_3e_d0n,\n 0x16_be_a7_12_6b_8f_07_2a_b6_c8_6a_fc_a8_0b_60_6c_b9_0c_7e_5f_d0_2b_bd_ba_1d_d7_33_c3_cb_88_47_05n,\n 0x1f_c5_7b_16_8a_5b_ad_ca_15_a4_17_eb_b4_bf_5b_eb_28_fd_09_e0_df_f8_89_55_0a_12_6f_58_33_f1_fd_5dn,\n 0x1a_d2_0d_1a_3e_e5_59_b6_33_4b_e4_ba_91_1d_ec_95_7d_56_69_9c_f3_7d_d7_b9_7d_23_dc_bc_65_bd_9a_fdn,\n 0x21_73_43_0a_68_42_06_1f_02_73_93_a4_43_b6_e2_5e_59_a3_e5_bc_d2_08_95_ad_e0_fc_d7_be_bc_d8_88_85n,\n 0x11_67_31_73_04_3e_15_13_73_61_db_05_a0_b0_67_14_7a_23_d7_f3_00_36_80_f3_e1_53_4b_18_3f_e2_7c_d8n,\n 0x03_7c_80_af_5e_d5_1c_1c_22_18_1f_3e_77_38_80_69_84_49_3e_b9_98_ad_d0_55_56_ef_f6_51_29_25_9f_f2n,\n 0x1d_70_b9_61_24_6d_22_62_ca_cd_8c_09_54_04_05_48_b6_3f_bd_25_f3_03_82_85_c3_6f_6b_44_e9_b9_ff_5fn,\n 0x21_84_44_8a_7b_b8_0d_17_6d_be_3d_e7_3f_38_3a_90_96_35_e4_61_0c_25_86_4b_2c_63_25_21_86_b6_c4_4bn,\n 0x03_bd_ca_6b_22_fb_80_cf_9e_7b_31_71_90_eb_bb_9f_6c_7d_3c_96_c1_bf_7d_50_13_f3_65_21_a5_db_a7_d0n,\n 0x2b_65_87_33_13_d5_bf_fa_44_d5_10_dc_b3_f5_50_48_43_6f_4e_ea_91_a1_00_ec_0d_1a_f9_52_eb_64_b2_47n,\n 0x2a_7f_d0_2e_f1_0d_b1_c9_dc_03_c9_cb_e8_2e_85_7c_f0_6f_37_ea_10_e7_e3_f5_39_b5_37_78_ca_27_46_16n,\n 0x1c_b8_80_ce_a1_92_15_38_65_71_35_65_ee_42_55_ce_72_da_23_b3_d2_14_2d_26_5f_bc_21_96_fb_8b_56_9fn,\n 0x16_62_8b_6f_83_fc_36_bb_c1_d6_00_29_a6_9c_84_3d_27_48_4f_59_4a_7e_3b_a8_d4_7c_df_a5_48_a9_1a_56n,\n 0x26_fa_9b_84_e8_55_f1_06_9e_76_e0_37_10_4f_88_86_b7_60_d4_91_9b_ed_79_8e_2e_4b_8d_be_00_80_f1_6en,\n 0x0e_e8_6c_87_bd_f0_ec_d5_26_e3_6a_6c_4a_c9_fc_9b_f0_5b_91_61_85_6d_65_8c_1b_9e_cd_80_da_9e_96_87n,\n 0x08_a5_17_99_93_a8_05_64_05_52_7c_b8_2b_6f_61_99_84_c6_3c_d1_15_ff_ed_3a_67_34_ff_a8_52_67_19_1fn,\n 0x04_7a_a6_1e_4b_f0_72_1a_c4_e0_a2_f2_91_e6_21_24_bc_c2_ad_39_49_dc_f9_6e_87_5f_45_df_7e_eb_54_37n,\n 0x26_3a_51_1f_03_3e_1f_bd_c6_d2_82_b5_27_12_a0_9b_f5_d1_fe_c2_1e_a8_bb_fe_2e_b1_ef_5b_c4_f2_11_48n,\n 0x22_65_20_bf_73_04_86_e2_d8_c8_59_b4_49_bb_da_76_31_b8_64_32_a2_c1_00_dd_73_86_c9_b1_f9_93_f3_4en,\n 0x2b_ae_f2_71_07_a5_28_54_78_8f_0c_5a_94_0f_5a_4d_f0_d1_8d_38_b8_93_cb_b1_15_7b_38_6a_7d_35_63_57n,\n 0x18_02_2c_ca_17_f2_68_18_d5_4e_60_e3_00_b5_c9_49_d9_c9_21_22_f7_de_56_51_a6_0c_f7_0c_8d_a5_fc_52n,\n 0x07_ba_ad_30_1d_58_46_0d_1e_6e_d1_0f_52_ab_f1_bd_78_5c_ae_f8_56_57_77_fe_d9_4d_d6_7d_e6_71_7d_25n,\n 0x1e_47_61_06_c4_bc_e3_90_3a_5a_ac_6e_11_0d_f2_cc_1a_7f_71_b4_13_5b_e3_66_2f_4b_01_04_7e_24_8a_6an,\n 0x1e_01_9d_ea_50_28_d2_3b_2d_f0_63_c2_10_46_6a_88_c3_fc_1e_bd_ed_cc_b8_04_5c_7e_9d_1b_b6_e7_7a_98n,\n 0x0d_d5_5f_00_65_59_bb_67_47_b2_54_d2_9a_73_f5_ea_71_74_c6_b6_06_7e_73_0a_5f_9a_99_08_18_63_08_e2n,\n 0x09_93_08_5a_80_24_a5_98_e0_c9_05_9d_3b_91_9f_b2_eb_c8_1b_e4_08_cb_96_fe_38_a4_8a_95_2c_02_91_89n,\n 0x14_3f_3c_bf_98_e4_09_71_b2_11_54_93_ee_06_e2_6c_78_93_78_7b_fc_fb_13_b3_9f_16_58_69_ec_7f_b9_b7n,\n 0x05_25_ff_28_fa_24_29_1b_8d_03_3b_02_13_95_75_4f_a0_30_d4_97_31_2c_c1_7c_aa_fd_00_85_24_ed_a0_7dn,\n 0x2d_9f_dc_18_cd_25_86_b9_f4_49_14_20_17_90_93_92_02_50_95_18_2d_5f_40_d5_91_1f_70_8e_b0_5c_d8_52n,\n 0x23_09_97_20_2f_cd_6f_05_1e_1b_f1_e5_9a_9d_01_18_8e_36_21_d6_13_fe_0e_78_e6_df_b4_00_ef_b4_3f_45n,\n 0x04_4b_56_46_9f_fb_bc_9d_0c_0f_07_5e_20_f3_90_d3_0d_11_98_1a_76_7e_50_7b_80_ae_f7_ed_69_e7_17_1fn,\n 0x15_07_d8_8b_be_10_b2_1c_23_a9_45_55_d1_e4_d3_79_aa_71_67_2e_00_24_50_39_3e_af_7a_23_73_61_50_b7n,\n 0x10_4d_67_52_a7_61_b5_00_26_37_7e_c7_98_40_4f_71_15_1b_3c_f6_a9_ea_1b_e9_3c_68_40_59_48_24_e9_b6n,\n 0x25_27_63_05_cd_ea_e4_c1_65_58_de_60_da_72_94_14_46_a9_fd_22_26_aa_60_4d_44_bb_ff_12_b1_e0_ec_23n,\n 0x10_f3_ce_fb_05_4d_63_0b_d7_dc_4c_7c_ab_d9_79_40_dc_a6_83_da_d8_cc_35_a6_d0_c3_0c_bd_98_12_05_1cn,\n 0x0e_40_6c_bf_a3_84_c6_b2_4e_d0_43_ff_3c_b1_d6_89_1b_af_f0_58_5a_fc_4f_ce_cc_7c_cc_ec_80_9d_f0_3dn,\n 0x18_f3_60_33_fc_f6_4f_1b_da_0c_12_61_6b_00_b6_11_86_3e_fd_b8_96_6d_b7_ed_35_34_cf_da_40_ae_af_0dn,\n 0x16_5d_02_2a_34_cf_10_ad_32_55_72_36_35_a5_1a_35_ba_2a_6d_b0_75_72_db_a1_06_dc_56_ca_6c_93_7c_52n,\n 0x22_3c_8c_9a_ed_30_5b_3d_18_26_5b_56_ec_b7_a4_cf_c4_b1_0e_58_ba_a1_36_58_27_a5_39_c4_78_19_42_4fn,\n 0x21_03_fe_e9_46_74_84_0b_1a_a1_85_a1_f8_22_1e_e4_51_1a_2b_52_68_f1_ac_96_d7_b2_8c_89_84_fd_e6_d6n,\n 0x1c_13_96_43_3b_b9_ea_c9_a0_2a_bf_23_90_97_3c_17_23_ec_5c_d5_52_97_a3_87_a9_28_06_f7_8e_f9_d3_84n,\n 0x1b_ef_ee_24_00_5a_88_d2_c9_ae_92_26_16_9e_89_81_06_99_6f_d3_2f_ec_b7_2b_0c_b4_de_cf_10_9f_1b_92n,\n 0x1a_dc_49_f1_f1_b4_05_df_72_7a_64_e9_86_75_ea_0a_c2_fc_74_2c_80_6f_0d_59_50_c8_ac_41_35_0f_51_84n,\n 0x10_a0_e0_ca_b7_6d_b0_b6_a0_07_99_da_b1_f2_e4_a7_4e_f7_39_17_3c_fa_ab_2d_03_ea_e2_40_c9_c8_47_cbn,\n 0x1a_9a_ff_62_d6_c6_6f_df_ed_0e_b9_1b_6c_4f_97_4c_1e_04_7c_0b_27_ef_49_b1_0d_29_33_af_1a_f3_f9_97n,\n 0x26_19_67_f6_84_09_95_da_f7_41_10_34_52_6e_b5_ac_72_5f_95_e2_1f_c3_6c_8e_d1_91_87_39_85_f9_5c_b4n,\n 0x13_38_03_0f_85_fc_d2_fa_e0_9e_b0_16_f4_25_40_86_e1_af_2f_88_fe_7d_be_29_d1_83_c8_9e_d5_28_60_98n,\n 0x02_c5_37_45_d1_f0_e6_64_99_ff_10_9e_77_77_27_e7_50_c1_13_49_14_cb_b4_d5_2b_df_16_49_c7_91_1a_dan,\n 0x27_40_10_03_54_40_6d_e4_d9_4e_b8_57_a1_c5_df_1c_0e_88_d8_b0_b8_2d_10_c1_27_6e_a7_d9_f6_2a_05_d0n,\n 0x0b_8a_91_53_d3_d6_43_f0_a9_f7_dc_08_f2_4d_70_86_3e_4f_15_0d_1c_32_ac_89_05_a6_22_68_87_c9_bc_efn,\n 0x25_dd_73_d8_1e_a8_91_8c_9c_1f_f6_9b_0b_86_a0_ed_38_01_ed_1a_a4_05_9d_94_eb_72_cf_54_8b_2e_ea_1dn,\n 0x25_3d_81_3c_f0_5f_2f_f1_c7_d6_62_2b_db_9f_aa_ff_27_7b_4d_03_12_a5_88_8a_9d_cd_12_89_1a_d1_52_6fn,\n 0x25_23_32_2d_2d_2a_78_cc_54_c9_44_b5_77_52_bd_d8_d2_c8_e6_2e_3a_f5_1e_02_0e_b2_c1_5e_d8_30_f5_f6n,\n 0x2a_c9_c2_d6_0d_45_68_48_e8_df_d4_74_99_cd_bd_4f_23_77_f3_b4_ac_98_e1_0e_2a_e3_e4_f8_3b_00_71_b4n,\n 0x2a_4e_35_f1_df_83_34_42_f9_cc_b8_c7_55_23_b1_ac_8a_97_16_17_4f_47_fb_08_30_d9_4f_9b_c4_38_6b_cfn,\n 0x27_0e_7f_6b_15_f2_c0_e0_92_61_47_cb_f7_9a_73_30_b6_76_d1_74_ac_b6_5b_73_05_22_dc_cb_09_6f_9f_dbn,\n 0x19_33_ef_75_d4_b8_62_f2_27_46_34_e1_f5_a4_e5_0c_e8_99_f1_52_14_f0_b8_fe_ae_bb_2c_a2_ef_52_ce_d2n,\n 0x16_51_30_dd_f7_7a_82_db_84_27_8a_31_84_11_09_da_41_08_d3_64_bb_dc_6a_cb_b1_b0_fa_7a_a5_17_5d_c5n,\n 0x2f_c1_fe_03_1d_cd_45_38_d5_d8_b1_34_0d_0d_37_df_55_05_e9_65_b7_e7_dc_4c_19_89_5b_9f_6f_ce_da_6cn,\n 0x0e_1e_ad_2b_e6_f6_45_59_d9_03_ea_eb_6e_02_a7_c8_5d_54_64_22_e7_73_0e_36_0a_1e_4b_cc_0f_62_f1_6fn,\n 0x0a_98_33_60_bf_32_39_2d_5d_f3_0a_2e_4b_22_53_5a_4f_16_1f_da_3d_05_b1_a5_06_7d_27_8e_21_c8_e5_4cn,\n 0x2e_27_e6_18_28_69_36_07_c1_7e_ff_9b_b1_e5_ed_0b_ae_ef_78_2e_87_9c_52_30_b8_6d_6a_79_d7_29_f4_cen,\n 0x0d_1c_ea_26_a0_82_07_e5_22_ac_e5_05_e8_37_ca_a2_ce_7b_10_5c_bd_04_e7_c8_38_c1_ac_d0_06_ff_a5_3fn,\n 0x0b_95_8d_ab_c9_a8_06_6d_e9_e4_ce_f8_9a_bc_82_e3_39_6a_03_56_83_76_fb_44_cc_de_4c_38_cb_2a_19_44n,\n 0x16_f5_b4_2d_88_f8_d4_f7_87_ff_ff_79_6b_cf_81_75_b1_cd_ce_30_72_61_de_c8_6c_f2_03_4a_9b_88_bb_e8n,\n 0x12_b6_8a_ec_2d_b2_62_e0_a6_1f_0f_d4_b9_76_b0_0d_db_cf_75_46_ef_27_f4_7d_74_35_a2_88_c2_b6_c6_3an,\n 0x1d_22_38_d8_d9_76_8d_c6_39_d0_6c_a5_87_0e_35_03_f3_f8_1e_f8_63_30_09_44_c8_7b_77_62_8a_b6_d8_4dn,\n 0x0d_16_4e_32_fc_a3_c3_c8_da_3a_e3_32_a8_31_cc_9a_95_e7_5d_48_33_ae_23_2a_e3_82_bd_c6_b7_90_d9_1an,\n 0x02_fc_dd_e6_d6_ea_bd_7f_2f_a1_92_34_fb_15_76_61_b7_62_a5_c4_7b_57_73_9a_62_00_0d_7f_6c_a8_ef_3bn,\n 0x0f_13_3b_8b_1e_54_f4_34_84_57_46_47_81_2c_a3_77_c8_02_a1_59_0d_f5_e5_b8_f9_c8_c2_19_08_ef_be_37n,\n 0x03_05_7e_a8_93_2e_9b_f7_d1_a4_ba_d8_24_1e_14_f1_e6_0a_fd_13_ba_4e_90_af_b4_72_d9_dd_29_c4_2b_den,\n 0x23_db_cb_6e_cb_48_07_74_0d_eb_dc_82_5f_77_64_57_1b_c9_3f_33_64_58_25_d0_e4_5c_88_b0_08_8a_9f_18n,\n 0x01_b9_07_54_a2_05_82_17_cd_b6_4a_b4_5e_24_c2_e2_94_23_bc_3a_76_f8_28_95_79_92_7e_cd_f6_3e_da_c9n,\n 0x28_db_80_0a_e1_6d_70_33_c8_e1_07_e1_98_ae_aa_bb_f9_d0_27_1c_74_d9_57_c6_bb_95_14_a0_f0_38_fa_91n,\n 0x02_f9_7a_36_ef_93_a7_90_4c_bd_bd_c3_6e_5e_f3_74_e5_8e_af_37_b5_b9_43_94_73_cb_e4_77_c3_fa_b1_78n,\n 0x1b_ad_1d_96_37_a6_ad_6d_b5_cb_d1_9b_a7_b9_55_a4_5b_9e_80_89_d1_69_74_45_a1_30_74_3e_03_ed_3c_afn,\n 0x2b_96_f5_20_dd_a8_25_1a_87_8b_28_bf_96_d2_81_85_5b_9c_43_22_0b_0a_32_79_17_97_53_f7_40_ed_ae_80n,\n 0x04_1f_97_f7_6c_60_b2_8e_0f_df_79_74_bf_92_2b_7a_09_99_e0_e0_e4_0c_65_43_78_ae_12_84_32_12_90_9dn,\n 0x13_b5_cf_57_47_50_57_a2_f5_fb_6d_08_09_31_23_97_3a_ef_97_26_cb_d9_83_5b_95_61_6c_2a_ed_55_88_e0n,\n 0x2c_a4_3a_ed_5a_ea_16_2e_8c_9b_e9_2a_15_e7_ad_0a_f8_4d_44_f3_d2_e3_98_b5_f7_49_1f_a2_df_12_de_een,\n 0x08_9f_6b_1e_c8_b5_1c_d1_e6_ea_69_b9_64_95_20_a6_f0_f2_f9_6e_a1_1d_f2_70_ab_0c_5d_9a_db_5c_3d_f0n,\n 0x04_f5_10_cf_c7_e5_28_37_0b_ab_b8_ed_7c_50_c3_4c_60_41_77_26_27_79_3a_0f_37_11_d1_30_0b_4d_12_75n,\n 0x26_0e_12_c4_7d_0a_b5_25_63_af_fc_dd_5c_28_62_f4_ba_d5_b7_af_4e_e0_37_ea_5f_81_64_d0_f1_3d_10_59n,\n 0x1a_65_64_24_76_0e_75_46_8a_ed_d8_51_5b_31_11_e1_6c_c0_d6_0f_8d_ce_45_1f_7b_b3_5b_12_de_c7_72_b7n,\n 0x00_cc_85_0e_95_9c_56_7b_ed_20_05_8b_67_69_fc_27_a6_c7_0c_f7_2f_22_2b_80_87_9e_9b_df_bc_67_11_a9n,\n 0x08_89_47_91_0e_b3_b4_3e_bd_86_88_69_5c_64_ac_02_0e_19_d0_bb_e8_75_a7_f3_a0_b6_99_bc_60_f1_8c_acn,\n 0x2c_25_c2_36_bb_48_03_5f_45_fd_e5_b1_78_10_56_55_ac_e9_f3_f9_af_b0_90_71_e7_90_dc_4b_ab_dc_86_ben,\n 0x12_df_e1_bc_28_65_4f_5c_9b_a6_58_65_76_9c_9e_47_f2_bd_e0_d7_9d_db_dd_a2_17_04_90_4b_29_05_da_68n,\n 0x05_64_5b_68_f9_9a_56_4f_f0_8f_74_5e_14_13_bd_83_ab_5b_04_42_f0_b8_ef_aa_2a_98_6a_6c_fb_2f_d8_fbn,\n 0x17_cf_3e_c9_83_1b_4d_6e_ad_64_0d_91_2e_41_b4_c7_2e_9c_25_91_26_bf_63_10_fa_4b_11_0e_43_86_4c_75n,\n 0x12_b1_5f_28_fe_fe_5d_6f_a5_19_ab_9c_c6_7a_78_c5_7d_d7_21_ab_44_af_28_6e_72_fb_bd_56_89_a6_6f_61n,\n 0x2d_a4_4f_72_10_52_07_79_cb_da_cf_aa_b2_e1_ef_01_ed_da_8e_ed_b6_fe_6d_03_7f_fa_f8_e5_98_42_a0_0bn,\n 0x13_7f_f7_32_3f_e7_57_f3_2a_fa_16_5f_11_58_8b_40_3b_d3_93_d5_c9_a9_61_cd_2f_7d_a2_e5_d9_a8_94_ccn,\n 0x13_18_10_5f_a9_fe_15_49_f0_4e_f4_86_79_c7_3d_46_b9_1e_e0_bf_27_b4_45_11_95_de_94_5c_8c_f7_8a_ffn,\n 0x14_08_a4_25_9d_f5_2a_49_17_75_93_6b_2c_2d_47_6a_12_17_08_c3_12_e6_35_ef_8d_1f_84_3c_3b_a3_43_8dn,\n 0x10_cf_20_dd_57_34_c1_88_80_de_c5_be_44_ae_2d_dc_c4_f4_47_f2_0c_ac_98_c9_51_93_eb_75_71_58_5d_07n,\n 0x27_87_fe_46_23_bd_32_64_e0_c8_b5_a4_71_97_4a_c1_fe_b1_e3_7f_bc_3a_9c_8a_4e_a7_4d_60_10_b7_d0_8en,\n 0x1b_90_e2_10_74_90_75_45_c1_de_c3_c5_9d_bf_2a_6b_1f_70_32_58_bc_03_70_7e_33_db_58_2d_45_ab_17_2en,\n 0x0b_8e_91_2a_5e_c5_a0_bf_b7_79_a0_80_1b_90_86_3e_df_d9_42_9a_7b_36_32_bb_50_22_fd_bc_40_63_6c_fbn,\n 0x0d_99_82_37_8c_d9_a8_37_0b_b7_a5_55_c3_4d_f3_18_3e_e6_b0_d8_ab_f3_1f_1f_54_7a_39_93_04_41_88_dbn,\n 0x1e_49_7b_cf_d5_c9_5c_df_d6_30_b0_af_bf_6d_37_6f_29_a4_68_d1_cd_3e_cd_e5_6f_69_40_22_1d_24_8a_f4n,\n 0x2d_60_24_01_ca_bb_c6_9d_ff_3d_d5_52_e2_71_ee_c2_9a_5a_4a_cb_c9_35_68_6c_cf_f9_a1_50_76_58_5b_7an,\n 0x17_0a_5f_45_18_f5_85_44_33_06_71_ad_2a_36_1f_2c_80_3c_0d_35_5f_3e_10_a5_78_49_51_f2_ab_ef_a7_07n,\n 0x21_b3_a2_3c_3a_55_3d_40_1c_08_50_2e_ca_49_7b_e9_38_77_6a_f6_71_ed_fe_44_c7_84_95_6a_cf_98_86_5en,\n 0x22_4d_d4_97_bf_3a_42_47_b9_c4_8c_9a_c3_ce_e5_30_74_90_e8_24_a1_42_04_ed_88_c2_b1_16_6e_8e_47_9an,\n 0x26_54_96_5a_3b_f3_c9_24_22_fb_54_e6_76_ac_84_01_ba_af_0f_68_d4_26_64_e3_00_62_4a_37_53_02_e0_efn,\n 0x1d_52_5f_41_05_f5_1b_69_c0_06_82_86_70_e7_78_5b_72_6e_95_be_16_0e_e1_a3_e2_99_67_78_20_83_9f_32n,\n 0x28_f8_8d_08_9f_42_1c_a2_bf_e6_97_27_0f_c0_f3_4f_50_ec_41_a1_ed_e5_36_12_c5_2d_b7_44_79_b4_b3_23n,\n 0x08_2e_62_11_53_ee_34_32_4e_9f_b7_ff_3d_12_3f_c9_56_0e_f9_af_0f_a0_f9_48_db_24_d1_c8_e6_f0_7a_9cn,\n 0x07_f8_57_83_37_52_38_67_b1_d9_40_3e_9c_a6_1a_d9_9c_0d_7d_5b_cd_e4_f1_9d_87_52_e1_2a_4d_58_05_f7n,\n 0x2e_52_f3_0d_d0_59_31_ad_b7_d7_e8_52_55_84_9b_06_2b_a1_cf_2e_b8_d5_92_08_b5_bd_a8_e3_5d_69_81_9an,\n 0x14_cb_3e_56_b2_b8_c6_60_5b_a0_42_61_a8_b1_17_79_1c_af_26_f7_c2_33_bb_18_3f_83_f7_2e_f4_c8_f3_45n,\n 0x2f_d6_b4_e6_c8_92_60_9f_da_21_41_4d_d8_71_2d_e8_45_ea_b3_05_be_62_7d_f4_d3_6c_8d_32_5c_9b_d7_acn,\n 0x03_25_89_8c_84_34_f7_ca_32_eb_d7_3f_53_df_3b_1a_db_0c_99_40_a6_9e_91_91_fd_99_6a_4a_96_15_7b_f8n,\n 0x08_f5_0a_7b_58_4d_c0_22_b8_5d_6a_16_a0_d3_df_f6_b8_a7_ec_4d_cf_5e_c0_66_f9_9f_c4_64_4d_6d_5d_48n,\n 0x29_c5_bb_b8_eb_21_4f_b2_85_ca_30_a4_3c_fd_71_41_d9_ce_b8_a1_9f_f3_c9_70_f2_bb_f4_c9_ba_e9_e1_1fn,\n 0x12_64_cb_d9_ec_00_11_75_21_1e_28_56_a7_89_01_e4_08_8f_1e_b7_ea_f5_93_49_99_e1_99_73_07_e7_43_2cn,\n 0x28_a0_e7_81_9a_a0_25_1e_9c_f2_bd_ab_f6_4f_ad_bd_51_dc_94_16_53_3a_e3_3f_7c_b9_7f_d1_77_68_85_04n,\n 0x1a_9b_e6_51_c4_12_fe_e6_c8_00_84_84_77_cb_b6_7e_4c_52_fc_23_e5_1a_de_9c_48_f6_af_30_7e_c6_21_d6n,\n 0x1b_f7_0a_24_fe_7f_c8_94_6f_dd_e6_f5_56_b3_ed_4b_03_c3_30_05_cb_e7_f3_4a_c1_12_96_e5_b0_c7_5f_6dn,\n 0x2f_56_c8_c0_38_7e_5e_44_cf_49_21_ab_d3_3b_15_90_ca_d0_71_9e_93_2a_36_19_5c_51_38_e0_c6_ac_83_c2n,\n 0x11_09_db_87_b7_68_4f_49_27_b2_af_ee_ff_00_60_8a_f5_f2_11_92_0e_b8_d6_38_e3_a7_c9_43_b2_93_fe_den,\n 0x18_51_c2_98_04_02_5b_6f_9c_69_c8_08_91_03_55_90_a5_1d_13_03_2c_d5_76_d3_32_ca_89_22_2b_c7_57_87n,\n 0x09_09_e4_cd_c0_bc_47_f2_df_48_98_10_6b_5c_40_f2_5c_71_37_e1_d5_ac_9a_98_6c_9f_66_fd_5d_fa_df_ban,\n 0x2a_e3_e9_0e_26_50_e2_86_d5_91_3d_4d_d1_e7_1d_4f_23_36_59_70_1b_31_9a_a2_28_e1_6a_f9_f0_10_e0_7en,\n 0x06_a6_c0_15_f9_51_73_44_1f_7a_40_d4_f1_bd_e0_4e_b6_0f_bc_4d_c7_2f_da_b7_dd_81_ec_55_72_35_d5_30n,\n 0x2f_6a_b5_d3_5c_cf_e9_ea_36_6d_a2_57_c8_59_6f_a6_ff_30_d6_c4_68_16_a3_bd_3d_48_4c_97_f8_d2_44_6cn,\n 0x01_f9_c6_03_08_18_2e_b6_d4_a8_3f_92_72_bc_22_0a_87_45_d9_c9_12_70_50_89_9b_f6_42_6f_7a_b5_7c_ddn,\n 0x2f_51_4c_41_2b_fd_97_54_e6_79_8e_4c_3c_b1_3d_5e_4c_4b_29_60_9d_3e_a5_61_7d_ed_35_bc_01_d7_99_d8n,\n 0x14_c4_16_2b_9c_9e_ef_b9_79_41_b1_f1_33_bb_18_22_5d_28_29_4d_09_2c_b8_91_7a_fc_b3_e0_8a_bc_d9_ccn,\n 0x19_92_1f_d6_25_c6_6e_c6_7e_cd_8a_f3_d6_ff_0e_0a_3c_b6_50_e1_e7_2b_3f_c9_88_84_b0_03_54_08_5b_32n,\n 0x1c_85_2a_ef_c9_29_67_53_e1_26_87_39_ac_15_d2_c6_d2_1d_e3_43_6c_81_6f_75_f9_3b_8d_eb_f3_7e_b6_can,\n 0x04_bf_4a_69_b1_aa_4f_30_4a_fa_a1_dd_1b_f6_0d_e1_f5_59_e8_16_7e_dd_da_c1_eb_88_ad_9d_02_74_5f_b8n,\n 0x24_0a_79_1f_3b_8b_b6_2d_5d_9a_ae_80_f3_41_cb_56_9f_e3_fe_72_e7_18_3d_8e_58_30_16_5e_4d_12_37_53n,\n 0x15_1b_29_5b_42_42_e0_c0_9f_ef_7b_c5_ef_40_f1_e3_c8_55_16_54_18_6d_62_cc_66_3e_e4_f2_8f_f5_e7_64n,\n 0x08_6e_b3_d3_0b_c4_d8_06_64_a0_74_a0_97_39_dc_8c_49_7c_93_cf_7e_65_79_54_b0_cb_f7_67_61_65_f2_3dn,\n 0x17_aa_89_92_d7_b9_01_ea_de_7e_ac_d9_5a_8e_89_38_2a_29_2a_71_21_ab_0e_bb_eb_e0_dd_62_62_2c_21_c4n,\n 0x1a_5b_33_45_a4_c0_d8_75_66_36_57_60_7b_5c_7f_f8_32_f4_89_b2_3a_3c_43_96_20_08_57_0f_96_eb_8d_e8n,\n 0x2f_03_b4_6d_9e_ee_dc_d7_f8_f4_cf_2c_f7_10_e4_8c_e3_f3_1d_13_64_f0_33_45_b2_a7_96_4b_01_e6_34_7cn,\n 0x0f_ef_58_3e_7e_8e_10_2f_eb_a8_79_f7_bd_60_24_18_70_a0_29_17_23_aa_35_4a_35_25_9e_0a_40_05_0d_45n,\n 0x2e_07_b5_d7_0c_a5_83_cf_4d_9b_af_fa_cd_02_d7_d8_0f_a5_e5_23_ab_bd_89_50_86_a3_62_88_b9_69_fa_6an,\n 0x24_59_9d_bf_a1_dd_1f_47_14_d5_85_24_8c_f2_3c_a1_39_4b_85_8a_f8_e9_04_c0_51_7b_ae_db_f2_f1_76_dfn,\n 0x00_a8_26_af_d3_70_bc_b6_5b_66_18_9e_8d_98_67_77_e6_13_77_38_8d_87_27_e4_07_b5_00_fb_52_91_f8_een,\n 0x28_74_59_50_87_0b_c1_84_8a_db_c5_f4_bc_03_41_5f_0a_2b_f2_3e_90_5e_7d_33_ca_d0_3d_e9_07_08_1e_3bn,\n 0x21_9e_6d_cd_a5_90_fc_88_d4_05_67_3d_2c_b4_71_0f_8b_57_47_b4_6d_d9_91_4d_1b_e4_08_17_14_ca_ce_58n,\n 0x29_66_92_07_7b_42_e9_72_39_9f_17_ba_71_ff_ed_ed_d9_51_85_ff_72_53_d9_d1_f4_17_47_c6_f2_7d_be_6an,\n 0x2c_cc_5f_0e_20_49_d4_26_84_18_62_f3_2f_80_62_82_9f_b5_d8_26_a6_a4_83_dd_50_78_de_85_9f_9c_bc_ebn,\n 0x04_f9_15_a4_fa_bc_8a_b2_08_a6_15_dd_89_fa_20_7d_36_77_00_bb_b9_bc_06_1d_07_fa_90_a7_0f_ef_fd_a2n,\n 0x2e_04_b7_c1_aa_85_3f_9e_e5_e4_fb_b5_cd_7b_6e_60_cc_ea_4e_d5_92_8a_34_f4_e5_9e_a9_eb_a8_79_47_08n,\n 0x08_70_0d_f5_11_38_b3_6c_0e_f2_be_d1_2b_d7_83_40_ec_69_b0_4a_2e_1b_86_51_08_03_63_91_b4_b6_db_3an,\n 0x25_03_33_63_98_f1_65_bd_ea_8d_49_29_db_1d_d0_b3_71_04_16_fd_63_d7_aa_dc_ec_41_bb_70_62_c2_47_82n,\n 0x05_63_37_85_a5_0a_9c_77_57_3a_b1_0d_89_33_41_a0_cc_2d_f0_72_ed_8e_ab_9a_29_96_a4_7a_52_7b_da_edn,\n 0x0b_a4_08_4e_44_c5_0e_14_12_a4_c9_82_dc_0d_8a_0d_46_22_51_3b_7c_96_e9_fc_cb_2c_3b_e2_d3_90_1e_1cn,\n 0x2d_6f_32_cb_76_14_06_df_a9_e0_3d_7f_f8_a4_3b_ae_10_6d_c4_51_9c_61_c3_99_6c_c9_cc_cd_8f_30_7c_86n,\n 0x2f_95_9c_83_07_37_e6_31_39_58_46_37_3b_1f_7d_00_3c_8e_6b_ae_3a_ea_2e_db_73_49_12_44_f8_37_36_87n,\n 0x14_86_3a_f5_97_92_ad_b1_bb_40_90_16_64_34_92_17_49_8d_99_92_50_cc_0a_85_8d_b2_7a_ed_54_fb_aa_38n,\n 0x27_62_3d_10_1b_1f_92_28_99_f9_c5_78_3e_1f_db_b1_e7_55_28_26_e4_d6_b5_8d_6d_f8_d9_86_93_7c_dc_82n,\n 0x24_73_28_a4_d9_ce_81_60_3e_37_ea_72_cc_5d_1c_89_5c_21_f0_93_05_30_1b_f1_41_1c_07_98_60_2a_62_68n,\n 0x19_21_90_9a_aa_d0_3c_c7_8a_6c_fb_ed_6c_10_56_e3_d9_3a_25_a5_49_6c_af_ac_a1_2a_f4_ce_32_4c_60_81n,\n 0x0a_85_c0_35_8c_f3_88_b4_7d_14_d4_2f_ea_fb_dd_43_92_df_15_4f_64_9b_72_13_e2_9c_f1_01_ae_d0_0d_80n,\n 0x01_ba_c0_47_34_a5_92_0d_65_d6_7a_ae_e0_41_65_de_62_1b_eb_56_f9_02_ca_48_38_60_f7_07_75_37_51_2en,\n 0x1d_d1_72_09_66_b3_23_1b_b0_0b_08_d6_b8_ba_c6_c7_6d_ee_54_54_f7_84_13_4b_93_d8_c7_0a_b3_ee_d9_99n,\n 0x22_89_7d_eb_c6_eb_2a_7f_36_be_e1_e7_f4_2e_d4_b0_d3_7a_d6_96_53_5d_82_d3_9c_cf_bb_e9_2e_86_c0_8en,\n 0x2a_d0_1b_b4_2b_95_d1_13_b3_b9_1a_d8_8c_69_a3_3c_1e_94_dc_85_51_2b_c5_16_8e_e7_30_65_b3_87_e1_75n,\n 0x2e_82_bd_0a_05_3c_e0_3a_f9_aa_94_7d_f5_f1_31_79_15_29_a5_7f_83_60_a2_cd_69_7e_aa_17_7c_60_00_b0n,\n 0x2d_2d_ae_ae_aa_93_a5_f9_d8_b6_52_9f_00_c4_c6_d6_91_c3_bc_4e_fb_fc_8e_7c_2f_08_ae_3e_44_e1_f4_bbn,\n 0x0a_b0_89_14_b2_de_57_39_79_83_ba_ce_0b_32_7f_98_c1_a9_c1_e5_8c_76_ef_2e_71_6c_c3_05_72_7a_0f_72n,\n 0x27_58_79_6c_d1_c1_78_ed_0c_43_3c_4f_1b_6b_19_d4_2f_fa_1b_c8_84_c3_cd_1c_cc_a1_07_cb_2b_c9_19_98n,\n 0x06_3d_f5_b0_34_90_16_e7_bd_a4_74_1e_c8_98_c7_4e_4a_30_fc_4f_1b_59_fb_71_3a_82_49_92_31_1e_30_f4n,\n 0x23_71_30_16_55_55_46_75_3d_41_ab_d6_9e_6f_b9_1e_43_44_b7_c0_58_38_04_8e_d0_64_1c_ed_c5_fc_67_28n,\n 0x26_bd_fc_0a_89_49_98_e6_93_b7_e2_05_9d_6a_52_8a_a8_6a_b5_7e_b0_31_b9_6b_53_fe_8b_5a_db_74_c0_75n,\n 0x08_89_71_18_f7_5c_c8_e9_11_5d_ac_58_1b_95_53_cb_40_7a_1d_e1_35_b6_32_54_1b_b7_34_f5_39_85_28_6an,\n 0x02_ef_8e_b2_c7_b2_6f_7a_57_69_1e_cb_1e_15_a4_0a_fa_9b_3a_55_57_ab_e8_11_46_ea_6f_6d_49_60_c3_46n,\n 0x25_4e_8e_5f_c1_1b_99_23_48_fd_7a_2c_9f_4a_5a_0b_58_6b_ca_af_12_60_36_58_b2_59_10_f6_3c_f0_8b_01n,\n 0x02_f4_1c_21_b7_3d_d4_e7_b5_10_dc_a1_6e_7b_4b_42_77_30_1d_a5_fb_bd_59_db_03_d3_a3_2b_89_c5_7b_7cn,\n 0x25_3f_09_ce_9e_cf_d2_ae_ea_e9_8b_a1_b2_98_06_bc_28_71_e5_fc_67_bf_f1_3e_30_3d_b9_96_18_e1_d0_a0n,\n 0x04_39_5e_b6_55_58_2d_03_f2_57_75_e6_6a_e6_7b_e0_aa_f7_c6_3c_ef_fb_be_a9_22_6b_04_b0_e7_95_bf_c9n,\n 0x13_71_12_35_c3_d2_1d_d7_49_e3_e4_1b_d0_48_a3_2b_fa_2e_79_6e_26_b7_2e_05_c9_99_e6_e6_12_6e_40_2cn,\n 0x08_3c_75_11_75_10_a3_7d_43_b5_51_39_63_fb_d0_f9_f3_35_90_dd_cc_29_7e_3c_dd_9e_a4_2a_dd_7a_17_5bn,\n 0x26_cc_9b_57_18_d8_4e_60_65_82_d3_5d_8f_db_da_94_4c_65_25_dd_cd_74_88_cf_f2_1d_4d_0d_82_3d_ce_a9n,\n 0x0e_89_78_f0_47_92_9b_1a_94_60_14_99_63_4a_8d_a0_20_b9_a4_6d_0b_11_87_d5_45_04_ed_8a_34_4d_56_e4n,\n 0x2b_11_42_3a_f3_9a_5d_15_be_39_74_39_b5_ca_50_aa_9a_6d_41_23_4a_ca_be_d2_00_62_47_68_8f_6f_a8_05n,\n 0x21_a5_63_81_04_0c_70_2d_da_5a_31_a5_aa_27_5c_e6_92_68_56_25_e5_aa_77_bb_c4_30_38_25_73_b4_02_b6n,\n 0x19_a8_69_e1_5b_3f_9b_96_50_16_fe_ca_2c_b8_2a_2f_14_c8_00_94_5b_a4_9d_b7_4a_ad_8e_93_46_af_07_f6n,\n 0x2b_01_c5_a2_ba_a1_6f_95_69_d4_67_00_98_46_6f_05_bf_3a_e0_97_aa_93_07_71_b7_6f_24_af_a6_be_50_d5n,\n 0x05_86_14_85_73_b6_b5_66_17_f9_46_02_fd_6c_86_ad_4a_71_b3_fc_67_a3_54_48_d6_4e_ae_a5_32_58_21_24n,\n 0x04_03_52_e1_98_09_dd_93_bc_7a_2c_54_9b_c1_9c_b0_07_87_2e_05_99_a3_12_7a_3e_77_04_41_18_94_f9_8an,\n 0x2d_64_86_b8_e7_b9_54_9e_a8_6c_f0_44_e8_95_0f_fa_36_97_4e_84_2e_1f_ef_87_65_61_e1_34_6c_5a_89_3an,\n 0x2e_a9_d2_e1_b7_d0_7c_9a_38_95_56_58_40_e2_58_43_c9_de_be_58_90_44_f3_05_c1_b5_87_2c_74_e5_a4_9fn,\n 0x12_e0_dc_41_05_ac_d8_69_2b_7c_ea_0b_d7_6d_a3_4a_ae_b8_f6_d0_0e_cf_84_b4_f0_62_27_04_13_a8_08_7an,\n 0x0d_a9_c1_06_56_e6_f4_2c_3c_e7_c9_80_a7_0c_9d_79_3d_b4_df_83_07_59_9a_33_a4_91_f2_4b_63_68_29_0fn,\n 0x02_f3_55_1c_6a_64_83_87_da_62_9c_96_63_3d_5c_c9_93_60_d9_b8_9a_ec_23_c1_8a_c7_6a_f2_1b_11_a8_50n,\n 0x20_2d_e3_3a_6f_ce_9d_fe_8a_ee_a3_4a_f1_ed_5c_74_09_33_86_c8_a5_53_d3_a3_da_46_e1_34_73_1d_de_14n,\n 0x07_37_2d_41_05_4d_bc_00_9e_3e_91_f9_02_d5_7a_21_3f_04_35_75_f3_42_7e_35_76_8a_5a_52_48_2b_1b_7cn,\n 0x02_f7_e3_5a_4b_be_96_99_94_9a_81_92_62_94_3c_97_e8_e9_38_cd_99_9c_d9_11_a9_ed_bc_71_6e_24_54_fan,\n 0x2a_27_b8_4a_74_22_e2_9b_8c_c7_3b_f5_4b_f5_35_b0_11_60_6c_81_9b_4b_aa_68_24_b6_12_30_36_d7_3f_f1n,\n 0x19_52_7e_90_93_b3_13_d5_d2_63_8c_86_34_99_83_9f_f5_d8_e5_f9_8e_74_b3_12_fa_0c_63_af_f7_16_1a_3en,\n 0x08_57_1a_6b_8b_73_03_63_29_96_66_23_1e_3c_49_ed_23_1d_1e_35_5d_93_89_4c_85_62_ba_03_31_47_f0_25n,\n 0x2c_0f_32_77_8e_df_e9_32_d9_12_96_1c_81_d8_8e_98_d4_fb_64_ca_ea_2c_c2_d4_e3_f2_13_a5_d2_a1_b9_edn,\n 0x27_10_a6_3e_84_f8_bf_3b_15_da_09_e6_9b_c2_4c_56_7f_84_a4_57_76_10_b1_9c_c5_81_91_b2_b1_45_3e_a0n,\n 0x2d_4b_84_40_f1_68_74_5e_d8_4c_3e_39_3f_75_bd_c0_b0_fb_3f_14_8e_4e_e7_7b_52_5e_bc_25_8a_95_3d_d7n,\n 0x23_49_01_ff_3e_c6_5e_0a_4f_62_9b_f6_e9_6e_af_37_9a_ea_7c_80_8c_a9_ee_79_b6_b7_96_89_59_17_68_4fn,\n 0x28_a5_29_a6_27_cf_c6_89_ba_1b_b3_37_20_72_51_8c_77_20_b4_50_97_53_39_e8_78_65_c3_6b_e5_26_e5_e6n,\n 0x1a_1a_f2_60_47_3d_83_48_9a_6a_46_6d_dc_18_55_fd_c6_e8_3d_73_b5_c5_c0_fe_d5_54_af_11_c6_ce_f5_ebn,\n 0x2f_d5_94_dc_14_99_7e_8e_01_23_f3_af_16_c9_28_9d_08_82_64_cc_16_a8_11_9e_8f_02_ab_72_70_95_29_24n,\n 0x0d_35_64_e4_47_16_de_8c_02_d8_f8_27_8b_0d_2f_81_96_58_23_4b_c4_db_59_14_7f_a3_a5_dc_23_ee_c8_33n,\n 0x29_3e_9a_c4_48_ba_da_42_37_7d_d8_b0_2d_5a_e5_69_5e_88_6e_0f_8e_43_f0_1b_38_26_6a_ad_a3_cf_aa_0dn,\n 0x21_86_e9_61_df_07_28_bc_d7_b6_67_d3_5e_95_f3_54_cf_b1_ee_12_88_ae_fb_7e_0b_23_81_29_6d_ae_cd_b8n,\n 0x1b_49_72_ee_03_b2_78_7a_27_21_9c_de_ab_7a_cd_b5_dc_e4_4b_f8_36_8a_0c_43_e1_e3_b8_c8_a7_f4_9e_74n,\n 0x01_10_5a_d2_66_51_d5_ac_52_e8_17_c3_2d_86_a3_b1_0f_05_73_8f_ce_99_6b_2f_a9_05_ce_1c_32_79_52_2an,\n 0x07_2b_77_0a_70_da_b2_42_ac_30_d0_3f_5d_24_77_59_5c_f5_21_ba_7c_91_47_8d_72_e4_53_58_56_9e_f3_0cn,\n 0x1e_39_9a_42_19_6a_80_61_07_9e_9d_61_ec_97_ff_8c_83_71_95_bb_93_62_06_99_7f_5a_93_02_1b_70_d2_75n,\n 0x24_f5_0c_cc_3a_68_ab_3e_2c_ba_45_3e_c4_0a_87_96_a3_c5_97_35_dd_33_03_bc_fa_db_62_18_ae_fb_7d_6an,\n 0x14_fe_92_dc_92_27_b4_2d_f2_3f_8a_5a_0a_7a_2f_50_bc_11_9f_01_df_e7_08_b9_11_8f_75_61_67_14_bd_3cn,\n 0x24_71_3d_85_95_17_36_c7_7b_66_94_1c_00_7d_17_02_82_27_19_58_c9_8f_d4_2d_6b_12_69_6a_70_65_91_6fn,\n 0x05_cf_2a_d0_5c_75_de_38_23_8f_63_25_8c_8d_fc_e0_d1_b6_98_de_de_7f_ee_a9_a9_7b_26_3c_ce_81_5c_ebn,\n 0x2d_62_69_5c_70_08_a1_1d_0c_87_4b_40_39_5a_69_5f_ff_aa_ea_6e_6b_fc_e8_5a_e1_58_0d_c4_82_18_aa_26n,\n 0x19_e4_72_27_e7_4d_55_63_12_67_70_fa_5b_a6_14_05_ea_6f_34_85_65_c3_aa_da_d0_83_0b_3e_f5_d7_75_a0n,\n 0x20_e4_3f_f5_80_37_8b_af_e2_07_4a_6b_2f_d5_0c_74_59_45_37_f9_85_65_f2_d6_5e_d8_c1_5e_5c_a1_08_4an,\n 0x26_4e_48_41_30_9a_c1_aa_e9_2d_dd_9c_b4_d9_73_e2_37_40_6d_50_d2_84_9c_70_91_bf_1c_1b_f5_c1_27_3en,\n 0x12_38_be_ac_ed_d4_f5_3b_35_b5_78_af_1c_30_c0_77_f4_28_96_80_65_8f_b2_6a_e1_b4_c0_b2_f7_10_e6_04n,\n 0x0d_90_47_4c_26_2a_ac_19_13_f3_74_59_d4_f2_05_5d_ad_e9_03_de_9b_c0_2f_a5_fc_7c_13_7c_ce_05_fe_35n,\n 0x0f_5a_af_48_27_d5_f4_0e_00_23_5e_bd_1c_d1_b9_f6_eb_f3_38_83_83_e6_92_57_3b_95_ca_e4_f6_53_ad_82n,\n 0x2c_dd_a4_35_0f_35_33_47_73_cd_82_3d_f3_70_97_ee_96_7c_28_d6_2d_0c_45_c3_4d_0c_ee_40_08_83_48_93n,\n 0x1c_0c_8c_2e_bb_68_60_e6_4d_c4_67_55_a7_e0_72_79_5b_c2_c7_88_32_a6_18_bb_6a_2d_5d_09_11_b7_d7_68n,\n 0x26_9f_a2_60_69_db_1c_f0_cb_70_5b_c3_58_4c_01_50_b8_56_42_d4_f2_43_d5_e6_8d_72_40_b8_e8_c0_32_76n,\n 0x09_b4_43_b0_a7_67_65_75_b9_a6_d3_f0_03_60_9f_a7_c7_b6_22_63_41_ac_83_89_25_88_81_d9_94_fa_91_c8n,\n 0x19_1b_46_97_a8_e2_95_ab_80_f8_1b_25_74_3f_e1_3f_3f_b6_99_8e_91_31_e9_9a_86_f2_2b_d3_3e_7b_dd_bcn,\n 0x0b_48_8b_6a_87_5f_23_8b_c3_24_f0_42_88_ad_86_5c_85_77_e8_f9_06_a9_71_ad_4b_b9_d9_17_75_64_57_30n,\n 0x27_59_28_b2_5e_50_3c_9c_95_c0_1b_18_a5_d3_00_81_bb_0c_d3_1c_36_cd_17_2b_de_1d_b8_32_87_f5_f5_e6n,\n 0x1f_de_05_3d_d8_72_91_d7_e1_4f_0f_2e_7b_74_61_b4_9f_60_e4_af_c3_9c_fd_cd_e6_5d_70_f6_5c_3b_02_6fn,\n 0x29_b2_c3_86_81_6e_9d_3f_76_10_0e_8f_b9_54_33_29_ff_88_ac_29_19_9a_18_13_58_dc_23_1a_a1_dd_3e_0bn,\n 0x04_98_7d_e3_e3_12_18_11_ec_3c_10_42_10_05_e1_33_fe_1c_e9_c2_aa_7d_7c_54_a2_6f_42_5c_d1_97_67_c5n,\n 0x19_a2_3b_a9_74_26_bf_a8_1b_75_7e_35_aa_35_59_05_06_28_66_5e_b4_96_ed_87_32_d4_09_94_2f_b6_e1_6bn,\n 0x12_33_3e_97_d1_f0_e3_28_0b_5e_2f_9d_96_56_1b_2c_04_d0_01_d2_b3_93_79_1a_86_1f_dc_26_c1_b7_f7_67n,\n 0x23_e4_8a_5b_64_6d_35_38_95_d0_69_28_a1_81_d7_5a_d2_5c_95_a7_67_2f_3a_1f_49_17_ca_03_ba_ff_32_27n,\n 0x1b_6b_ff_42_33_17_d2_c2_72_19_65_97_28_23_ca_2e_93_b8_f2_bb_0a_52_24_5c_ed_cd_94_58_7d_59_63_82n,\n 0x16_af_0f_38_7b_9b_a9_4c_0b_a6_d1_76_df_30_70_1f_f3_78_b3_52_46_80_aa_fd_a4_f7_c4_df_4b_08_8b_07n,\n 0x1b_fa_d9_c1_a9_22_34_ed_97_c5_1a_c7_dc_2d_80_f2_e9_08_c0_98_b2_8b_be_71_2c_b7_5b_92_79_7a_21_03n,\n 0x29_bb_50_64_07_3e_9a_6a_ae_c7_bf_d9_4d_48_fe_22_07_d9_0e_a8_96_25_30_f3_88_44_2c_a4_d9_5e_62_56n,\n 0x1c_be_45_6e_c3_f8_d8_84_9e_10_fe_a3_65_09_ac_c3_64_7e_dc_3e_76_5f_4d_e7_48_92_64_f5_e3_40_33_e5n,\n 0x00_87_a3_50_62_db_d7_35_63_6f_76_ce_f6_fa_b3_b4_12_74_97_81_f0_3b_39_b1_81_49_5a_62_aa_e4_24_24n,\n 0x1f_12_19_14_5f_f0_bf_15_d9_64_5e_34_78_79_a7_34_7f_9a_6a_5f_3d_ea_9a_9b_f9_49_51_74_d2_28_bc_c3n,\n 0x07_f9_3f_b4_16_05_d3_ca_e1_b4_2b_92_d5_27_b2_ce_7c_ef_14_ad_2b_90_77_02_af_a1_3d_76_ce_02_f8_8cn,\n 0x0a_e3_de_8a_6e_dd_58_9a_b6_27_67_e9_2f_3c_19_ef_bf_32_11_56_79_d2_62_9a_5e_bd_26_c1_c7_d3_42_99n,\n 0x15_b6_68_8e_87_77_24_b4_1c_e0_8f_b1_76_95_34_7b_5e_b8_84_44_23_c7_1a_98_eb_cc_18_8c_23_88_8d_cbn,\n 0x13_1c_dc_25_2f_00_cf_e4_8c_d6_cb_1b_15_34_4b_6f_ec_8b_17_6c_1c_a5_58_4d_76_d6_f9_f6_ad_26_bb_13n,\n 0x1b_d5_70_cf_87_8b_3d_c1_61_6c_a3_2b_f5_5e_0b_3f_d8_98_44_4d_0e_70_d6_49_09_ec_78_9f_f1_1e_8e_edn,\n 0x1e_5a_54_e7_1e_f7_b9_ea_bf_71_7c_01_dd_99_b7_26_2c_3b_43_d1_d6_96_00_94_b8_e5_08_d1_e1_1f_03_cbn,\n 0x21_c8_8d_e3_60_b3_6a_24_fb_64_10_14_fe_ce_ac_ee_94_85_62_33_df_bc_cb_dd_1e_9f_0f_35_c9_e7_fc_cdn,\n 0x2e_f3_87_dc_10_12_ae_94_89_8b_8a_fc_9a_a5_4a_3b_e1_f9_18_20_b6_1a_b8_6f_45_ec_b3_ae_21_e2_3a_c3n,\n 0x28_39_14_da_97_f0_36_34_99_36_af_11_57_c5_36_d9_c2_87_3f_c3_c1_54_3a_fd_bf_c1_c0_c5_5c_c6_d5_f4n,\n 0x27_6a_d4_f7_ba_33_97_1e_4d_b2_29_2c_7f_f7_04_d1_5a_14_24_6a_6e_7d_76_ea_79_f1_18_90_66_dd_42_c0n,\n 0x24_ca_7f_d6_a2_01_4d_98_21_a6_24_bf_07_95_0e_8f_64_f5_e6_89_2d_48_e4_a7_1c_d4_f6_3e_9e_2c_63_d8n,\n 0x0f_e8_f3_70_d2_49_68_de_4d_ec_0f_ae_59_19_d8_f4_f6_66_67_3e_ca_e7_8b_d7_e2_2d_c2_27_63_64_af_d5n,\n 0x2f_0b_be_c7_f6_a2_55_51_2d_f3_48_12_2d_f4_b9_17_78_77_5a_ce_58_9d_46_57_dc_c1_22_3a_af_bf_25_86n,\n 0x18_07_32_ee_6d_3a_e2_aa_48_66_15_8f_54_f4_d8_b9_80_01_3c_c6_71_d6_8c_69_a7_2d_59_55_67_87_03_d1n,\n 0x05_a0_b0_ba_16_b7_b0_63_1d_be_2c_92_f9_12_12_84_97_4a_70_33_a6_9b_e3_04_07_be_c6_b1_53_59_07_03n,\n 0x29_08_a5_a3_20_4a_9a_14_4f_65_65_e5_61_bb_fe_9a_4b_66_4e_da_eb_a4_10_6e_1a_57_ac_77_29_01_93_dbn,\n 0x18_c8_60_a5_d2_53_7a_84_94_4a_10_75_e8_04_c3_2e_c6_6c_b5_97_99_08_a8_ca_8c_d7_f2_d8_a7_02_9c_0fn,\n 0x1e_f8_06_17_b0_25_bd_54_de_53_61_dc_2f_b1_6c_fb_90_c3_64_e3_7f_7a_1f_07_dd_b9_ab_29_2a_fc_0e_91n,\n 0x2a_b4_95_21_5c_cd_fd_a4_98_51_0f_6d_5d_bf_da_c1_42_94_64_e7_78_8a_22_9f_ea_e5_61_be_3d_62_c2_c5n,\n 0x25_1d_c0_73_bf_23_01_0a_06_be_a2_55_60_e1_be_3c_cb_2c_38_e6_7d_64_ea_c6_80_ae_a6_c1_99_52_a7_ecn,\n 0x02_20_1c_36_62_a5_96_85_a5_11_e2_55_56_43_56_7d_f5_07_72_e8_c1_50_bc_ec_09_43_a8_af_3f_10_68_47n,\n 0x2b_b9_27_7b_80_21_c5_d3_54_30_0d_a0_91_01_d2_4c_72_a8_42_f9_76_27_a8_20_65_e5_e6_7a_22_f4_65_f9n,\n 0x14_f5_ee_46_87_8e_60_55_85_b3_de_d3_fa_8b_9b_7f_d6_2a_20_17_b6_d2_f3_0e_d6_13_39_cc_a4_35_e3_48n,\n 0x11_45_78_66_8b_59_52_2f_c7_d7_94_ab_cd_24_97_ba_ab_d8_55_f3_fb_a5_03_d5_f5_e0_48_60_47_bf_3f_c4n,\n 0x20_bc_06_a3_5f_e0_7c_d5_07_d0_dd_0a_9d_a6_98_7f_22_80_17_05_50_96_ee_68_cd_33_ea_b3_77_3a_11_46n,\n 0x18_48_01_f6_55_e8_2f_8d_32_b9_4f_b0_61_2b_aa_4e_c9_83_d1_cd_94_ca_da_67_23_76_70_05_1d_5f_ac_5fn,\n 0x14_04_d5_fc_7a_2e_89_40_77_81_58_fb_2d_30_33_64_89_21_47_a6_4b_fe_e5_4b_25_d3_90_6a_b5_b3_49_0fn,\n 0x25_1d_f4_33_5e_51_64_fc_bb_ae_73_be_b8_cb_57_b8_09_d7_1c_b5_9d_6e_30_3d_b0_56_0b_0c_1e_e7_9e_0fn,\n 0x09_a4_5b_e4_9f_35_c4_f9_87_b5_8d_74_9c_78_c6_90_82_48_6d_3f_87_77_eb_a4_10_3e_ac_71_90_fa_ad_57n,\n 0x2e_de_22_8b_9b_96_b2_1d_d5_e1_e6_ea_26_0a_87_f9_02_c0_05_1f_1f_20_3c_78_8f_b9_07_df_00_e5_11_77n,\n 0x10_0a_31_18_e3_24_8a_c4_00_e6_aa_b0_e4_e6_b1_0f_07_e9_6d_e5_82_c2_c9_23_a9_9c_d1_4e_45_d6_f2_09n,\n 0x15_87_2d_ba_1f_10_47_ac_1f_ae_ac_07_6b_57_51_3a_d9_2f_f7_1b_6a_6a_2b_32_f2_7a_dc_e0_84_89_4e_10n,\n 0x1f_68_a3_5d_81_c0_57_33_a5_73_07_6c_cd_79_46_a4_03_9d_a2_2e_42_95_95_20_73_7e_4a_68_43_28_3f_a9n,\n 0x2a_16_5a_1a_2b_01_8a_b2_fa_4e_58_1d_7c_b5_67_d9_b1_51_5d_b2_7e_a7_10_af_36_83_a8_91_9e_99_a2_82n,\n 0x06_4f_f9_4b_98_a0_58_8a_a9_24_e9_43_ca_62_7f_cb_d2_ef_85_4c_66_f9_17_ae_52_6f_71_9f_b4_0c_67_59n,\n 0x1c_83_49_f8_98_cb_f2_d1_fe_6d_b9_36_c5_3b_d3_56_4b_67_3b_72_d6_73_aa_a3_9f_96_91_e0_82_83_d5_efn,\n 0x2e_46_28_a8_65_5d_2f_c8_4a_32_f1_0e_0a_95_e9_2d_05_76_73_9c_07_05_0b_cb_01_58_f1_56_db_6e_7c_5an,\n 0x00_68_31_6d_e7_1f_ed_80_21_33_80_a8_75_7b_3a_9d_51_7e_7e_a1_e4_80_0a_22_c5_10_75_5a_4a_1e_c1_52n,\n 0x22_9e_32_cd_f9_52_fd_49_dd_ac_8b_ac_ca_9e_c0_a8_5b_9f_5f_1e_8b_4e_bb_d9_95_ec_5b_82_89_a5_42_89n,\n 0x26_c9_af_69_ab_4a_7e_08_33_5c_df_df_33_ce_10_2a_14_cf_af_b0_5a_d0_00_af_a7_38_3f_01_b9_b5_b8_92n,\n 0x14_bc_51_40_56_69_15_51_8f_20_d5_14_98_ca_60_f6_e5_e4_86_78_f9_7c_1b_b5_8e_17_af_4d_b8_f2_32_d4n,\n 0x22_fe_06_bb_ac_cc_5b_18_b4_a8_bf_2c_c8_c4_7e_35_12_91_ba_ce_e5_c5_22_6f_bd_0c_db_30_87_34_33_9cn,\n 0x1d_ca_14_03_77_35_81_14_4b_08_3a_a9_b9_76_8d_b5_a8_19_02_62_6d_e0_d8_1d_80_f5_3d_75_d2_47_af_04n,\n 0x04_15_2e_8c_a3_29_e8_92_a4_50_36_13_f3_47_2e_e9_4b_7e_30_25_a5_92_d4_62_5f_42_0c_45_c5_6a_1f_52n,\n 0x13_ce_7e_dc_9f_1c_7d_2e_d5_33_02_61_50_f2_bb_6d_26_1f_37_9f_1f_bb_48_a8_d5_56_cc_5a_d7_91_4e_36n,\n 0x24_f4_fa_36_a4_8b_e0_1d_0b_be_57_85_4d_48_39_9d_81_ec_03_c3_94_fb_2e_ec_54_4a_63_1f_4e_1c_b1_den,\n 0x26_e0_65_9a_f8_c8_38_aa_cc_35_27_10_f1_43_3d_9d_f9_cc_ef_c4_7b_d5_c4_87_a0_b3_c2_9a_01_e5_59_ecn,\n 0x22_2f_80_f3_32_7f_f7_30_c8_ca_58_5c_06_7b_5c_e9_46_72_47_07_60_1b_7a_4a_72_47_6c_4f_73_e7_81_8dn,\n 0x19_cd_3a_66_21_6e_85_9e_43_3f_64_e4_f9_f3_e2_ad_9c_58_d9_93_ee_16_8c_ea_e5_eb_ed_30_49_ab_2f_87n,\n 0x0d_01_aa_82_3e_e8_46_c2_cb_69_55_43_c8_49_98_03_10_1f_c0_ef_22_2e_3c_2b_44_d8_68_0e_8a_76_18_8en,\n 0x2e_17_90_19_18_cb_6f_4f_ad_9a_c0_d3_87_75_7a_a7_7c_72_07_92_4e_17_7d_08_26_eb_cc_45_c7_64_88_b3n,\n 0x2e_30_cc_49_63_90_69_e2_10_1c_b4_79_c7_28_1e_87_15_ce_5f_34_d1_7c_01_64_30_a9_fa_75_bf_48_4a_d4n,\n 0x18_69_4d_18_fe_67_58_b3_6c_38_ac_70_d1_34_4c_6d_2b_70_24_9d_b9_2a_74_e1_40_46_83_b2_f0_0d_ee_5cn,\n 0x25_97_ef_c1_13_29_ee_3e_0c_8b_d4_0b_4a_78_68_17_38_b4_c5_2a_f4_e5_5f_b5_be_52_99_96_b5_6b_ff_bcn,\n 0x00_3e_ad_8c_ba_0d_24_71_5a_ea_9f_f5_44_3d_25_ee_64_08_93_18_6e_6f_f6_c0_45_df_c9_1e_db_bd_1c_94n,\n 0x1e_17_e4_58_3d_68_f0_e1_e7_23_4d_41_91_5f_2f_a3_c7_b7_c0_4c_c2_af_aa_bd_7f_3b_be_07_1c_f1_ca_2cn,\n 0x2d_05_09_8e_f2_82_8d_71_e8_75_88_37_f5_c9_73_ec_97_b7_54_7b_df_a1_43_3a_55_27_16_8e_e9_f9_d5_c0n,\n 0x09_22_0c_a5_7e_2d_df_5a_1b_2f_29_71_62_7d_1a_74_b7_c1_b8_37_ad_e6_4a_37_e8_e1_f0_d4_36_05_1a_7en,\n 0x22_ee_5c_6d_36_a9_80_b7_a4_28_f8_af_c9_99_eb_09_86_8a_dc_52_b4_fc_cf_db_68_b3_f5_fb_a5_18_e0_3fn,\n 0x1b_70_15_4b_6e_76_cf_9b_cf_44_11_20_3d_b1_c1_9c_77_bc_0c_a8_be_f9_07_ae_8a_4b_4a_ac_27_08_42_c1n,\n 0x1a_2a_d9_a8_34_a4_d4_1b_c0_d5_ba_c3_b7_e9_45_31_00_f5_8c_86_05_fd_11_2e_f6_b7_a2_5b_aa_7d_fb_88n,\n 0x07_5a_a0_6f_43_a2_73_43_3c_f8_ee_19_6e_85_77_e5_fa_28_84_45_95_b1_f2_b3_6f_64_73_ff_da_38_38_0dn,\n 0x07_0f_88_4d_5d_00_93_ff_75_fb_09_ce_93_4c_87_33_00_8f_99_4e_fa_4f_55_65_20_f1_1e_e8_bc_ed_f8_2an,\n 0x07_d5_a9_30_12_09_de_0f_a5_6d_9d_ee_45_f8_48_0b_12_d3_3a_73_be_02_f0_78_f7_b9_df_6f_92_25_dd_f9n,\n 0x01_00_dd_4a_28_33_b1_27_fd_80_0d_28_af_04_25_4a_01_88_53_21_8c_e5_65_a8_f6_15_99_5a_0f_24_66_ean,\n 0x16_4c_79_e2_90_62_02_e7_3b_cf_b8_10_5c_5c_10_82_93_97_bc_b0_08_9c_e0_3b_af_c5_f0_e6_27_e0_d8_36n,\n 0x29_de_c9_bf_a2_a1_2f_2f_a1_bc_91_58_dc_1d_3d_1e_ba_d1_d8_49_fa_d5_8d_34_16_3d_74_19_23_f8_fd_acn,\n 0x27_d5_90_c9_5d_3d_dd_cd_d4_3e_3c_40_f7_57_9d_de_64_5f_33_c7_b0_ce_03_d5_5e_07_97_80_96_25_7f_88n,\n 0x0c_32_e7_1b_e0_2f_a8_30_2d_8a_bc_b8_ab_2c_6a_3d_c4_e9_62_e7_59_55_40_1c_1e_6a_66_15_7d_fb_96_5cn,\n 0x0c_ec_d5_91_ea_4f_3c_fe_0c_7d_3e_df_52_f4_f9_3d_60_a3_12_64_33_bf_9b_9e_47_71_0d_29_8c_31_e9_d3n,\n 0x07_06_27_a0_42_1f_de_84_42_16_f5_f2_47_89_b3_f5_4d_44_f1_a0_61_84_aa_81_f7_5a_a2_27_33_5f_26_4en,\n 0x11_6f_52_32_ab_ca_ba_c8_a8_b9_f1_a3_ac_86_bf_a9_7f_e2_85_81_1e_c2_cf_d7_33_f1_20_6f_44_9d_1d_e6n,\n 0x2a_8e_ca_ec_f1_35_58_50_d0_3f_a2_f1_a7_90_4c_f3_a2_ba_7d_3b_ae_30_aa_d7_a3_5c_fb_4a_6d_7d_be_c1n,\n 0x25_2e_e8_a2_df_ba_ab_26_5c_06_06_00_b3_f6_e1_9f_24_e4_91_dd_d3_71_95_21_1f_95_91_8d_3d_39_b9_11n,\n 0x23_ed_5e_73_a4_22_3d_f8_5a_fe_94_8f_de_f2_b6_e0_d3_c1_20_aa_31_e2_f1_b4_c8_90_54_d5_21_82_58_e8n,\n 0x0d_de_f5_10_d2_c7_ba_32_e4_33_1d_db_a9_3a_a6_88_bb_9f_b8_61_73_62_50_37_b8_6b_a4_c6_2a_06_00_fen,\n 0x23_39_cd_5c_b7_69_ac_f2_da_fb_50_73_bd_98_8b_e1_5a_65_bf_8a_d0_6c_38_a8_2d_38_d3_17_f0_fe_be_8dn,\n 0x26_fb_4a_10_1c_97_c0_6a_cc_99_91_50_48_3d_44_aa_76_2b_58_5c_42_2b_f8_dc_b3_7a_fb_fd_f0_76_ab_49n,\n 0x07_7d_58_74_db_a2_1d_26_0c_b0_2f_28_0c_5f_df_78_fb_8e_d9_e0_ac_ad_a9_98_ab_5c_b8_33_b0_9d_18_58n,\n 0x22_dd_b2_be_bc_8c_d1_c9_46_f8_52_2d_73_26_70_23_28_51_13_13_b4_0b_4a_9e_81_2b_69_ae_b6_11_32_20n,\n 0x2e_7c_43_c6_22_2e_63_23_f6_82_c0_5c_57_1f_6a_a6_2a_3d_a6_4b_e2_c3_f3_81_69_8e_2c_0d_da_dc_93_b5n,\n 0x19_ee_0e_60_fc_2d_a7_a2_95_37_1c_66_7c_e8_50_77_2a_cd_bb_fa_0a_9e_ab_7a_7c_94_a5_0c_9c_68_2d_e5n,\n 0x04_d4_6d_32_c1_31_ca_79_25_8e_f2_c5_25_65_9b_81_38_c0_e1_99_ce_59_68_e5_7a_82_e7_80_f1_fa_79_b9n,\n 0x2d_dd_25_bd_37_de_a2_33_86_a0_30_f4_bc_c1_d4_38_26_35_a6_dc_7e_a3_cf_38_89_a5_e8_fa_ca_46_bd_82n,\n 0x0b_e3_e9_d4_72_b8_11_8c_e3_d0_1a_92_fc_16_8d_e7_85_49_34_7b_44_52_68_93_31_2f_d5_ec_3d_27_26_adn,\n 0x27_fa_8f_23_5d_b6_16_a5_90_9a_2f_31_89_6d_c8_de_95_94_79_87_07_b4_77_f3_43_b4_8f_f5_28_e4_9b_8en,\n 0x17_22_64_12_ab_2f_ab_62_23_ee_da_0b_84_83_33_81_6a_4d_d6_49_5e_29_ca_47_ce_8b_96_f8_c8_7a_ea_21n,\n 0x00_8a_2a_ca_60_9e_63_44_08_6e_ed_8a_71_0a_35_46_9b_dc_e6_86_46_a4_35_a6_91_82_77_a2_1d_03_d4_a8n,\n 0x27_a1_06_19_ee_c3_b5_21_1b_7c_e9_c3_18_df_7e_df_ae_cf_7b_c8_40_98_dc_1c_58_23_2a_c2_50_93_e3_5an,\n 0x06_de_f2_df_63_8e_ab_98_99_86_53_93_56_3e_c8_bc_81_89_7f_e0_f1_ad_c5_c0_49_97_55_f2_54_97_fc_46n,\n 0x0c_86_bd_5b_00_46_7b_98_56_3b_7a_d1_b3_62_a0_58_53_8a_7f_aa_11_0a_43_8b_9d_0e_c7_be_8c_50_c0_98n,\n 0x02_23_7c_38_70_ca_51_c0_c9_da_f0_86_52_47_07_a7_8b_e8_84_5d_f4_71_e4_d4_fb_3f_2e_7f_30_d9_02_14n,\n 0x2a_ef_4c_14_a5_14_a3_6c_e1_af_a9_f2_c5_f1_ed_e8_d0_05_30_e0_1e_2a_70_4d_70_49_4c_fd_3c_29_82_cfn,\n 0x0f_42_5f_81_86_1a_da_85_6f_01_fc_f0_d5_ef_10_8a_ce_a2_81_73_5a_91_3d_24_ee_a7_5b_55_83_3b_32_8fn,\n 0x1e_56_2f_2a_3a_83_be_13_21_ee_af_56_4f_b1_9f_57_ae_c9_c6_6e_6c_c8_fd_a1_89_99_d5_ba_a0_b4_63_0fn,\n 0x06_27_d8_f4_c1_a8_c8_f8_c5_e1_eb_61_75_98_95_4a_a8_14_a7_56_78_2e_2c_d8_5b_79_e8_e1_e7_48_c7_05n,\n 0x15_e5_ad_36_f7_19_cc_a8_3a_41_f6_77_82_38_8c_ca_38_0c_25_99_2e_5c_d1_4c_67_0f_d3_c3_17_b0_ea_5bn,\n 0x0c_c8_d1_38_d0_85_4f_9b_62_69_7b_77_91_da_96_0b_e5_00_e3_52_9c_de_fd_4f_0b_18_d1_6c_5e_75_7c_e2n,\n 0x17_ff_55_5b_52_d2_8b_e1_b3_c4_6c_80_94_6d_f5_19_e9_de_24_7d_2c_f8_d8_17_50_86_f9_75_d2_4c_1e_8bn,\n 0x0f_d5_dd_57_c2_ce_de_87_66_71_97_8d_2f_d2_89_aa_0a_02_69_32_52_b7_4f_7f_de_e8_bd_40_4e_6c_79_e6n,\n 0x20_31_44_a7_7c_72_ea_89_fc_af_f3_9b_14_1d_ef_7e_93_a1_da_1f_b9_e2_2b_7d_0c_67_33_bd_72_f0_6f_69n,\n 0x19_79_32_05_24_df_a4_5a_a8_ef_35_ee_bb_cf_6f_62_1e_1c_85_5b_57_04_d8_bf_75_5b_ed_7d_aa_f7_21_d4n,\n 0x08_9b_66_83_b1_f8_49_db_ba_b0_f1_09_2c_a0_48_80_f8_b8_94_d7_f8_bb_cb_95_ca_de_4e_73_6e_a2_89_98n,\n 0x2c_2d_d8_e6_61_0a_04_95_78_4a_a0_8b_b9_66_1f_be_25_c9_08_39_6b_5c_3f_2b_d5_11_09_51_7f_a2_81_62n,\n 0x2b_96_27_b5_79_ec_40_19_30_68_86_e1_ff_40_03_ae_b3_a3_32_49_be_5c_c6_b5_6d_c3_60_7b_17_e4_24_77n,\n 0x17_8f_70_a9_95_01_a6_e0_5b_f4_ca_79_b2_d6_da_47_04_9f_8c_98_89_36_69_65_19_34_4d_dd_93_11_74_f5n,\n 0x22_4f_fa_0f_9d_0d_57_eb_0c_7d_71_8e_99_cf_3b_6b_a0_1b_52_35_48_ea_0c_a2_3a_3f_15_6c_04_08_3a_ben,\n 0x00_f2_ee_1e_2b_e1_ec_e2_cd_8a_ef_1d_bf_c8_26_99_7d_30_4d_88_cd_ee_55_5e_f6_7a_79_97_59_c3_9e_d4n,\n 0x25_75_77_40_ab_14_ca_93_74_5a_76_00_0e_24_32_8e_b1_a3_d2_1d_3c_be_d1_93_0d_d1_ba_2c_bf_7d_e2_36n,\n 0x0f_a6_b9_63_bc_65_bd_93_05_10_b3_ca_6e_1a_e6_2c_1b_46_75_ed_f7_9e_e7_9a_7f_28_0e_ae_64_96_f1_6fn,\n 0x0c_cb_79_4d_df_87_0b_b9_2a_9c_ba_5f_85_9f_b3_cc_3f_4e_b1_f1_11_7d_14_c1_ca_ef_37_be_ce_d0_e3_2dn,\n 0x12_3f_c6_d3_06_f1_7f_cd_5a_43_09_d4_fe_6e_0c_c1_ca_00_fc_23_ea_94_47_a7_c6_b6_8c_7f_6b_a5_00_05n,\n 0x22_16_21_70_a1_f8_45_eb_0a_a1_ee_7b_ae_a4_86_21_2a_09_81_4a_95_57_bc_b9_fc_72_cf_90_f0_a2_99_61n,\n 0x13_e3_85_a5_cd_2f_bd_a9_78_dc_77_40_e9_27_ce_8d_42_2c_9e_e8_61_c4_30_36_25_72_42_48_4e_49_7e_3an,\n 0x13_be_bd_80_c2_02_27_24_01_7d_8e_3e_b8_4c_26_98_10_ce_cf_47_f9_f5_7e_23_7b_b4_be_69_41_0a_78_03n,\n 0x13_ed_29_15_02_56_6a_70_33_b4_c4_60_72_45_15_6a_15_8a_6f_c8_4f_4b_a6_f0_24_6c_1d_e0_57_d8_ff_1cn,\n 0x2f_fa_06_92_85_36_af_91_c7_ac_3b_77_14_f2_04_e2_6c_54_11_42_74_21_79_21_70_95_a6_e5_4f_74_32_47n,\n 0x2a_6d_f6_55_e9_26_c4_aa_02_97_49_aa_a7_c9_a4_0a_10_fd_55_a3_68_62_4c_14_8b_5e_52_8d_43_13_18_3en,\n 0x27_d8_53_1e_c6_12_1a_3e_ca_74_db_52_43_23_fc_10_0d_b5_02_a5_80_b8_a4_cf_86_51_f1_bf_6b_9b_02_38n,\n 0x1e_a1_04_a4_4d_82_fb_e1_bc_1c_cf_d4_62_6c_ea_0c_06_69_34_22_b3_84_6b_3a_2b_4a_a1_2a_3b_0e_74_7dn,\n 0x1d_69_a3_85_27_20_a8_87_58_03_4d_95_4d_ea_60_2e_59_89_11_4a_46_67_25_1b_0d_a5_91_54_12_ac_5f_f4n,\n 0x1b_8e_23_27_10_f6_c1_ce_ef_f9_c1_08_6d_49_cd_8d_2e_64_7f_69_26_da_91_3c_b5_e1_03_37_d7_f3_d7_e5n,\n 0x2d_40_d3_f8_e6_f9_e3_aa_60_14_c6_96_30_db_fd_f3_16_9f_88_06_75_74_ff_c9_21_0f_7d_a5_99_c4_fb_3dn,\n 0x24_e1_c2_f6_0b_1c_d3_61_01_77_0c_ef_c4_33_4a_8c_02_f0_0c_c6_96_df_64_f7_6d_f5_4a_6f_b6_f0_50_8bn,\n 0x24_08_f2_eb_6b_1e_95_8c_ca_db_ff_81_c9_a4_49_13_ac_0c_9c_b5_cb_cb_4b_40_54_01_7a_bb_3d_b8_c0_4dn,\n 0x0e_3c_6e_cd_28_1b_a2_e1_6a_a3_7d_ac_d2_ab_c3_8e_b0_7c_13_53_da_d9_6e_87_d1_4e_5e_a3_3f_f8_ec_den,\n 0x24_8c_7c_fb_7b_a2_e7_18_19_bf_c7_55_eb_9e_9a_30_6c_d0_f6_e3_21_2e_25_40_90_f0_00_6d_9e_c5_43_e8n,\n 0x26_7f_dc_de_ec_f6_9d_79_9e_79_f6_86_32_21_7d_f5_12_26_d8_ce_39_57_4d_72_b4_ae_4f_39_d2_17_21_edn,\n 0x2b_d9_17_3e_f2_76_b7_d4_91_1e_bf_78_dd_15_34_2e_b2_61_60_3c_2c_9a_fc_f4_ad_83_1d_e9_fa_34_ba_b9n,\n 0x1c_c0_af_33_d0_7e_50_b2_ad_da_33_46_72_30_06_25_0f_ab_ad_8f_a3_dd_b3_65_c1_d8_58_2f_4d_c6_5f_14n,\n 0x22_1f_2b_c4_b7_dc_e9_19_5f_9c_a9_ce_8f_de_ae_fc_b0_54_40_c2_0d_d9_75_4b_c5_9c_11_44_7c_ae_ce_bcn,\n 0x18_eb_d5_c6_3b_0b_f2_0f_45_d2_38_fd_0c_ab_5d_ec_8d_bf_19_96_bc_d1_b3_48_9f_3c_24_99_ec_f9_2b_07n,\n 0x2f_33_8b_c5_a5_86_f2_77_4a_f3_be_b9_2a_a9_2c_e8_e5_8a_5e_fa_19_dd_c8_91_be_47_a5_e7_7e_9f_5a_4bn,\n 0x05_56_b9_c3_78_41_45_eb_4f_2f_f6_e0_c8_8f_41_98_9d_a5_90_7f_8c_71_18_ae_49_29_39_bf_e4_e9_fb_1en,\n 0x1e_c1_00_36_7f_65_68_45_38_bc_69_56_80_5e_d3_70_51_23_8a_36_37_e4_70_22_a3_29_4c_bd_e3_8b_22_84n,\n 0x16_45_a2_9d_d4_52_7a_b9_1a_4b_79_8c_70_96_e8_32_07_3c_8b_aa_c6_e5_db_87_e2_6c_21_5b_f4_48_f8_4fn,\n 0x22_a7_8a_bf_7d_5b_36_2a_74_3e_d5_2e_f2_73_7b_bb_dd_d3_75_e9_b3_bf_b4_24_09_a9_5a_d1_05_ac_93_50n,\n 0x1a_99_21_de_ad_26_c5_5a_af_b3_ac_9f_3f_35_ac_b6_1a_49_d5_f1_81_e8_03_65_40_83_0b_b1_86_86_eb_37n,\n 0x0e_b8_64_5b_0d_2b_8f_0c_39_27_d4_64_35_74_c0_b1_a5_88_27_24_65_d3_19_e1_5f_cc_6c_32_62_19_1a_a9n,\n 0x0e_48_af_0c_b2_75_af_55_de_b8_25_a3_4c_a4_89_04_a4_7c_31_b5_59_2c_4a_fa_90_77_d6_0e_5e_7e_a6_55n,\n 0x17_df_ba_c5_a2_6f_06_ff_f9_67_cf_ef_59_7a_6d_a1_1b_5b_c8_94_ee_6b_62_e6_26_a6_2e_85_a3_ea_4b_66n,\n 0x0d_ff_bd_01_6f_fd_2b_79_52_26_a8_3e_db_db_3c_5a_6f_78_91_7d_7f_bd_bb_c1_b3_63_10_27_c8_66_aa_a1n,\n 0x2f_94_8d_5f_70_85_6b_5f_23_a4_33_8d_24_4f_6b_a7_e7_eb_fc_75_0e_16_eb_d1_e2_c2_d1_38_25_09_43_10n,\n 0x19_4c_9f_76_15_cb_e3_ea_a0_f8_85_c5_9e_42_0b_b8_9d_ca_60_fe_17_4e_a3_21_d8_04_35_30_15_11_71_3cn,\n 0x16_e8_1a_05_40_14_3c_bb_e6_62_c7_ae_72_60_51_ec_66_3d_62_15_62_fb_37_01_24_0c_bf_bb_4b_17_b3_cfn,\n 0x11_ef_0c_2d_88_13_1f_71_5e_47_e9_a4_95_3f_78_9f_ec_78_de_cd_be_ed_34_bc_8e_aa_42_92_7e_a6_ee_e2n,\n 0x08_76_e4_5a_4f_86_29_01_bf_c6_20_a5_59_51_80_2a_1d_1d_5c_3e_14_14_30_8d_b7_d5_48_40_0f_66_85_35n,\n 0x2e_78_d3_5e_1d_d8_67_76_a4_dd_ae_e1_19_2c_05_5a_a8_67_63_63_bf_cf_31_65_31_7d_cc_98_01_7e_6c_75n,\n 0x19_f6_e5_89_ba_38_4d_b3_c3_6a_da_e4_bc_03_4f_b9_a4_44_da_42_16_4b_6e_f2_89_00_9a_2c_d7_d1_5a_6en,\n 0x09_fe_d9_0b_1f_10_f8_4f_67_39_bd_b1_b4_b5_08_95_7a_cc_ea_da_ce_68_7a_a7_35_dc_9f_6a_b1_44_04_fen,\n 0x05_5e_35_bb_ef_7c_e5_ee_7a_36_03_22_2e_09_00_5d_d5_19_2a_dc_d7_0d_c3_37_21_71_41_37_22_1f_48_31n,\n 0x05_e8_dc_35_9e_e9_8d_3b_b6_99_0f_d9_28_ec_f0_56_f9_bb_73_6e_0d_47_ce_c2_2a_96_e7_ca_c6_5a_98_28n,\n 0x0c_73_22_97_f8_b0_c2_72_fa_c7_69_44_ee_96_99_30_75_2a_7b_d3_94_3c_7b_97_e0_38_bc_d2_31_5d_29_0fn,\n 0x16_70_3f_b8_b0_2c_94_ad_e3_15_d5_b6_2a_a1_bf_78_34_de_24_83_10_88_7d_c1_3c_fd_13_fb_6c_2a_10_ban,\n 0x28_71_5a_c5_26_5d_7a_81_2a_f4_e3_9e_43_bf_9a_c8_00_59_63_5d_01_fd_6f_e4_0f_3f_1e_05_9d_7f_7f_4en,\n 0x2f_68_3b_00_27_99_4e_09_5e_71_ee_c8_47_57_30_fe_22_7b_48_0a_6a_ca_67_ab_15_93_ce_6f_83_7b_ca_f8n,\n 0x08_54_d9_c3_be_72_18_7a_2f_19_85_90_de_cd_43_94_3c_5a_a6_14_0a_85_8f_21_59_5b_9a_08_da_85_b3_23n,\n 0x1e_3d_59_2b_71_a4_73_c8_5b_21_04_ac_c1_d8_db_8c_b9_10_1a_3c_ce_55_c6_68_01_a0_d3_79_49_7d_ea_ddn,\n 0x1e_b2_73_77_cf_a3_8a_39_67_a7_1e_69_77_25_c1_95_bc_1d_7c_e0_47_e8_3d_0e_06_9d_ee_8b_95_a9_a7_0an,\n 0x00_45_b9_fd_1e_0f_11_58_01_23_2c_7a_aa_fb_5e_73_bc_2d_65_7c_47_b1_22_f4_e3_ea_30_a6_59_bd_d9_ben,\n 0x02_7a_ef_e3_d1_13_0e_93_94_b6_1a_80_4d_fe_22_31_d6_82_95_91_0d_d3_92_45_f1_e1_de_65_a8_7d_ba_6an,\n 0x2e_4c_5f_a1_a4_20_64_e5_56_fc_50_dd_7f_ca_7b_48_62_5e_4c_16_94_15_48_7d_4d_f0_48_2a_9b_1d_f4_ebn,\n 0x05_76_7c_b2_8f_10_19_a3_96_27_a1_91_96_a7_e4_67_2e_82_44_1b_e0_b9_05_23_c7_b9_b9_f7_4d_d3_31_5dn,\n 0x17_e4_43_e3_2a_b3_52_d2_09_d3_e0_38_d1_36_4b_24_eb_3f_94_5e_99_a6_80_95_02_c5_43_9c_80_7f_b4_ddn,\n 0x01_7a_0c_0d_83_ce_ad_8f_fb_70_97_8e_de_c1_bf_3c_4a_ce_f4_a2_cd_cf_d8_c3_35_bc_e4_27_93_51_3e_43n,\n 0x28_b7_49_b2_a9_be_cb_34_66_5e_38_f3_c4_9b_76_7f_20_73_8a_48_1a_7a_76_a1_9b_f1_03_00_08_a2_52_b3n,\n 0x1f_52_52_eb_62_99_22_c7_0f_2f_c1_b5_ec_5e_a0_a0_e0_ac_ee_47_da_26_c4_04_36_c3_f1_ff_ca_69_03_56n,\n 0x29_32_4c_40_ee_7b_c8_5d_33_a0_56_c3_fa_8f_44_d6_a7_72_4d_a5_3c_ce_db_3e_56_cc_26_b7_33_58_aa_0en,\n 0x00_56_7e_9b_d8_a2_b9_47_d7_5b_37_6a_9a_1a_f1_7b_f8_be_c6_c9_ab_ed_e5_82_05_4f_b3_ec_f7_86_0c_den,\n 0x1e_96_ba_b6_ed_6f_45_55_0f_26_21_c0_ad_ad_74_7c_2f_c9_98_84_85_f6_18_43_55_c3_17_6d_5c_11_e8_d6n,\n 0x08_d4_7d_c2_3b_1f_f5_27_99_2c_9e_dd_c9_12_59_a7_48_f6_cd_7c_1f_61_87_4a_08_36_f5_99_e9_95_a3_99n,\n 0x22_73_3c_dd_31_81_50_f4_0d_89_d1_ac_14_2f_26_75_08_09_a0_b8_88_c8_57_43_af_67_10_50_cf_67_36_a2n,\n 0x21_68_17_4b_b9_c4_5b_e2_ee_87_44_11_74_a2_4f_d4_1d_e6_bf_f4_a3_77_80_30_25_86_4c_5c_a1_92_73_47n,\n 0x0b_48_fd_ab_a8_85_24_ef_8d_04_95_ba_63_e8_71_3b_65_af_4a_92_67_b5_d6_20_83_e7_b8_72_60_43_a1_e0n,\n 0x18_65_86_43_fc_b6_36_44_52_0c_0f_a0_2d_ce_23_29_35_a4_ce_8d_7b_73_3a_9b_17_a8_66_e5_0b_3e_c8_a9n,\n 0x2f_c9_4c_da_52_38_fc_78_58_71_bc_a9_79_60_b2_99_ed_0d_f0_5f_6c_6b_28_a3_83_48_65_fd_49_74_bc_21n,\n 0x1a_54_a9_1a_89_dd_7e_0c_e8_75_30_30_3c_12_ef_76_24_4f_cf_42_c3_8d_b3_55_13_d6_5c_6d_59_94_ab_6fn,\n 0x15_61_0d_8d_64_ba_02_95_2f_41_70_ea_f4_2a_27_cf_b2_d1_3f_04_d4_67_35_37_b7_25_10_c5_c4_c3_da_22n,\n 0x13_59_7b_47_07_65_7f_43_7e_e4_20_87_cf_8b_58_90_42_b2_77_46_7d_8a_04_36_cf_66_ea_44_a6_66_12_12n,\n 0x2d_bb_95_e5_11_4e_74_00_28_bc_5e_df_58_b2_e9_fc_7e_38_71_d3_f1_6a_d0_c3_84_5d_5e_96_1a_87_83_7fn,\n 0x2c_b3_a3_e7_ce_16_ca_d9_59_6e_ab_92_d7_72_f6_b8_af_b4_3c_b6_49_2b_2c_36_3e_c7_1e_11_f8_6c_52_f9n,\n 0x28_6e_8b_94_68_bd_2d_39_2d_ad_5d_90_ef_65_d2_8d_ec_27_de_71_47_ce_50_b8_ed_ff_ec_a5_d7_00_20_a4n,\n 0x16_6e_76_2a_73_b5_19_00_1d_75_37_37_d7_d9_08_ef_22_62_37_b0_77_cb_76_ed_9f_6b_bf_cc_e9_98_93_17n,\n 0x1d_c5_be_e6_47_7d_7e_78_79_fa_2f_33_ba_9a_dc_e8_78_a5_7f_ad_38_45_e7_c9_ea_f4_be_54_ab_84_4f_61n,\n 0x1f_16_f7_f1_cd_61_d9_56_3e_06_4c_86_b5_08_af_ec_41_d6_14_ab_c7_b3_4b_b4_51_74_b4_0d_38_77_15_5cn,\n 0x28_df_04_cd_d7_f7_9c_b0_6f_bf_04_4e_63_1a_b1_1f_ad_f9_69_1e_4e_a5_f6_20_9f_87_51_af_58_c8_eb_15n,\n 0x18_aa_64_90_04_7a_b5_21_05_dc_1e_60_f4_48_76_24_61_b7_07_5d_38_a7_c0_b2_ba_95_64_65_26_58_8f_b6n,\n 0x00_76_ab_81_43_a2_90_79_21_47_c6_a6_46_5c_9a_83_bd_df_4f_65_38_8c_ae_83_57_bc_6b_d9_40_0a_b9_9bn,\n 0x26_16_21_7a_94_f4_07_05_3c_ef_3b_23_4c_c1_1a_cb_bd_2e_34_4b_40_3b_bd_8a_26_f8_21_bc_b6_f1_f8_den,\n 0x22_96_86_2c_b9_a1_44_24_a3_4d_3a_11_08_0d_6e_d5_bf_e1_bc_4e_03_01_ec_1c_bd_4e_26_0d_81_67_56_84n,\n 0x08_28_42_80_22_a2_99_90_34_06_31_4c_15_97_32_bc_0f_da_22_7a_3e_7a_40_a4_83_4e_51_3f_3e_f9_7c_53n,\n 0x07_71_ff_9f_39_74_69_dd_a6_f2_0c_f1_84_1e_70_2c_17_80_a0_71_9b_3f_59_01_75_b3_94_f3_82_79_c7_7bn,\n 0x0d_c4_89_dc_f6_1a_ba_11_04_92_5e_b9_43_9a_4f_44_22_8d_06_dd_45_67_fc_e1_44_49_65_a7_49_56_79_75n,\n 0x10_44_70_f9_29_23_d3_b9_da_fa_39_ea_bd_f7_ea_a2_3b_6f_f1_1b_2e_bb_64_a6_3b_db_91_2d_43_86_5f_a1n,\n 0x14_a4_90_ce_09_c9_29_50_5a_d2_23_e2_f3_97_18_61_35_aa_65_86_b2_7c_c9_cc_d4_f7_8e_fb_ec_99_3a_6dn,\n 0x20_68_93_bb_74_7c_a2_50_44_61_fb_24_a2_f7_2e_ae_4c_f3_30_83_58_25_fb_8a_c9_56_3f_ed_9a_78_53_ean,\n 0x03_c2_a7_38_e7_53_f3_5b_06_8c_6a_c8_17_12_44_c2_3f_bd_4f_37_c8_0b_a5_08_61_8c_80_0a_cf_62_65_46n,\n 0x12_9e_db_7a_01_30_29_be_80_ef_c7_40_02_12_cd_7a_f1_30_81_00_d3_4a_56_9e_f3_64_6b_52_cf_b0_6e_16n,\n 0x08_74_b0_ed_fe_e0_5d_8c_dd_ac_89_e7_b5_62_f9_17_c7_ec_e1_ec_2e_26_2f_22_6f_4d_15_24_a1_dd_c1_58n,\n 0x10_a0_ba_b2_78_6c_da_30_53_7c_69_6b_b1_ff_af_89_80_78_84_18_96_f7_be_41_cd_f3_0a_d2_51_7b_2a_aen,\n 0x0b_ab_66_1c_2a_17_fb_e0_22_1f_43_5b_a9_05_20_bc_ed_92_83_64_ca_c9_84_e1_7a_6c_72_a4_7e_13_fc_2bn,\n 0x20_42_01_6e_68_6c_98_40_57_a2_8a_a2_ae_13_c9_81_ad_8d_d0_2a_c7_d4_66_30_05_e1_38_0c_54_f8_43_b2n,\n 0x1f_c2_95_ac_71_91_1a_59_a8_1d_08_7f_96_7f_16_a3_a8_87_73_9d_7c_ee_66_3f_ff_5d_6e_07_10_cf_4a_42n,\n 0x05_92_26_97_b0_4a_e6_08_cc_3b_b0_d9_d3_45_ca_de_af_4f_a2_91_de_88_8e_9b_1d_d3_2c_19_cb_1a_87_77n,\n 0x27_1b_87_d8_b8_95_c6_e1_d8_64_b9_cd_03_07_29_e5_23_bc_90_b4_69_ce_e3_7b_51_14_4b_b3_b0_e4_b9_dbn,\n 0x24_aa_40_13_43_e4_70_5f_22_90_0f_ee_89_2c_ca_26_9d_0c_0f_fa_b8_f5_5c_21_c6_74_ed_b9_d7_bb_a5_52n,\n 0x1b_07_06_8c_af_e1_7b_55_b5_e0_0f_70_37_c9_ac_37_ef_02_68_d5_d2_b7_6d_72_71_c6_17_00_4f_05_92_2dn,\n 0x1e_35_ba_d3_19_a0_36_cc_6a_20_94_f2_a1_bf_2d_19_84_a2_b7_4a_af_3e_5b_13_a6_ee_30_c9_00_97_cb_33n,\n 0x2a_b9_1b_9a_85_ce_69_e7_be_a6_8f_4f_b5_b1_fa_09_03_94_5e_03_9c_4d_db_e0_5e_ff_2d_5e_75_4f_c2_19n,\n 0x21_e9_79_fa_3a_25_94_d2_36_5e_c7_0b_5b_3e_0d_dc_5e_db_8e_28_fa_7e_c3_07_aa_b1_4b_54_78_58_f6_66n,\n 0x18_7c_ff_d7_6c_5f_b2_97_95_52_3e_be_06_5c_9c_21_15_e7_37_84_ac_6b_15_c5_96_fd_d6_84_69_d1_ad_0en,\n 0x18_d2_ff_88_2c_52_b3_96_a8_c0_68_f8_8c_3d_23_f9_d1_1d_9f_91_c0_f7_fd_e9_ef_6a_f2_18_0a_00_73_92n,\n 0x0a_87_8a_77_de_61_5e_83_c3_d4_30_f1_1f_32_6b_78_5c_1a_c1_14_e5_99_c2_4e_5a_dc_1d_9f_b9_1b_31_f3n,\n 0x28_6b_9c_63_81_70_02_88_bc_c7_5d_02_0e_a0_9c_45_95_7a_61_55_76_d7_62_0a_0b_9a_f2_60_9d_39_af_ccn,\n 0x1c_4e_5e_d7_db_96_db_52_05_9a_e2_da_70_98_79_d4_89_a1_ac_50_31_c3_5e_e1_b6_c4_22_d9_08_0c_3f_12n,\n 0x27_14_16_79_bb_92_60_a6_93_b8_80_78_4f_f5_fb_c5_d5_94_57_b9_66_30_e0_a5_c0_49_12_09_2a_4d_2a_bdn,\n 0x15_e3_37_c6_5f_a5_8e_db_6a_74_fd_be_7c_dd_19_01_b5_d0_19_ce_7d_d4_14_4a_8b_49_eb_a0_2b_f0_85_fen,\n 0x08_25_67_92_21_8c_82_27_ec_a8_9f_51_14_f1_e7_f0_91_d8_8a_55_7c_69_b2_a9_56_fd_2d_c9_0c_ae_36_31n,\n 0x0c_08_d1_9a_f9_c3_0a_31_ac_d3_92_8f_fb_5a_57_de_5e_83_36_72_04_ee_67_20_9e_e7_ed_1b_ca_51_85_dan,\n 0x19_19_83_9a_d9_16_04_c3_70_f2_37_d2_a0_aa_98_ef_ac_29_24_6f_93_c2_4a_1b_d0_f9_d2_b6_07_09_b6_fan,\n 0x15_bf_65_b0_2b_92_f4_0b_9f_0e_a8_93_dd_bb_05_72_f4_93_75_ac_b5_95_8b_f9_44_c7_7f_f6_c3_56_1a_41n,\n 0x12_2e_02_f2_e0_16_98_09_b2_2d_ef_00_1a_cc_79_7b_20_2d_33_5a_f7_bd_2c_f0_32_e3_a7_c7_5e_f0_33_b5n,\n 0x12_07_51_00_dd_db_80_98_65_4e_71_86_05_21_1f_7f_6a_21_f5_17_6d_38_01_41_fb_39_97_73_05_18_24_69n,\n 0x2d_ad_bb_b8_fe_cf_5c_cd_f0_1f_73_d0_cc_60_b1_5f_1b_be_f0_18_a6_3f_50_f6_8d_00_b7_2d_8a_df_08_78n,\n 0x14_33_4e_ce_05_a6_31_ab_37_5e_7c_fe_7b_89_fa_0d_80_92_ec_0c_ee_24_c9_fa_30_09_ed_cd_62_ea_8b_71n,\n 0x09_a5_18_56_d4_9e_c6_54_f7_d4_4a_ca_57_b1_74_36_5b_a5_47_9d_87_14_a0_9f_0f_6d_e0_8b_34_e3_94_2cn,\n 0x04_8e_8f_ee_a9_b8_28_52_8d_bc_63_cd_3d_81_1e_d0_5c_e9_de_01_8f_4a_46_47_ac_1f_68_5b_b8_f6_71_5bn,\n 0x20_4b_a6_f1_81_93_f7_47_ff_10_98_09_57_02_2e_ca_a8_fa_4c_13_e7_fa_4e_89_73_0a_76_25_3c_9b_07_f6n,\n 0x00_79_e1_be_16_22_ed_c5_74_2e_4f_81_1e_a2_c0_37_9b_ff_4f_a8_2b_79_fd_e5_d0_c9_a0_d1_74_df_13_0en,\n 0x27_e4_8e_ab_b0_ef_3b_22_30_5a_b7_20_ee_4c_7f_41_4e_8d_4d_bf_43_60_c8_1d_1f_fa_e4_d7_68_3f_63_7an,\n 0x15_57_1b_ec_c7_f5_45_4e_45_ae_41_6a_6b_35_76_27_47_67_21_5f_65_9c_91_ba_35_43_72_d9_99_88_1d_5an,\n 0x2e_6a_45_45_eb_f7_c2_e4_4a_f9_1c_a7_19_2e_ec_4a_ed_dd_bd_2a_c1_df_4f_51_01_f7_f8_cd_d3_16_65_5en,\n 0x2d_e1_9f_cc_78_80_00_27_b1_93_2c_df_6f_9e_95_92_08_60_6c_bf_8a_07_52_44_57_49_28_67_f8_f6_bc_a5n,\n 0x2e_1c_a8_ef_d1_87_6e_20_9f_c2_d6_2c_b1_44_46_e8_f3_c4_bd_d5_3d_63_82_ca_86_b1_13_f3_20_9d_55_f2n,\n 0x15_4b_3f_85_ea_ed_8b_65_71_8e_73_3c_a2_ca_7c_8a_f0_3c_f8_f2_3b_ef_c4_d7_c6_17_7a_c0_0e_ba_d3_68n,\n 0x29_e5_8f_39_55_5d_9d_de_7b_ac_3d_f1_8d_8e_ae_b2_a5_a5_05_03_86_0d_20_c5_cd_0b_a2_a2_cf_63_73_bdn,\n 0x03_2d_32_03_2e_52_10_3a_d7_98_fb_36_ef_7c_06_81_50_4c_d2_d8_6a_12_c7_d9_37_ff_51_8e_57_b4_c3_f0n,\n 0x28_1d_e0_19_1d_30_af_73_10_5e_39_dc_17_40_15_d6_5d_c7_ff_12_d2_08_88_d0_2c_ec_65_0e_1a_24_5a_3an,\n 0x0f_7e_76_af_80_0e_ba_b1_42_81_64_5d_29_06_07_ea_bb_06_2b_f0_af_e1_41_91_33_e1_ff_dc_f7_0c_80_8fn,\n 0x27_ea_40_5b_df_c6_55_7a_4d_d3_38_a2_bc_a9_81_95_47_50_1f_6f_77_a5_88_a7_5c_01_4d_46_28_3f_75_b3n,\n 0x05_70_af_54_3e_fe_fd_fd_da_b6_3f_b0_5d_31_ed_ca_d3_95_ac_82_38_14_91_a8_0c_82_5c_62_1c_7a_c2_2bn,\n 0x02_7a_79_7e_00_14_30_24_78_a4_13_ce_de_7a_45_cd_89_4b_0a_22_9c_8e_89_f5_6e_ba_ec_4c_46_69_2b_fen,\n 0x1d_d0_e2_83_a8_ef_7d_0f_49_66_a5_17_68_7f_c5_32_43_55_4a_8d_3c_7e_41_d9_17_19_b3_6b_ac_e8_15_16n,\n 0x20_06_44_46_95_98_75_60_86_9d_f6_dc_de_26_73_e5_b7_3e_e5_bc_cb_b4_3a_05_c2_d8_be_6c_59_97_92_42n,\n 0x27_19_26_39_2e_5f_1c_94_43_7a_fe_2c_29_69_be_a4_ff_3f_6d_83_ee_71_39_40_08_83_1d_24_bb_1b_6c_b6n,\n 0x1b_60_7e_d2_f1_30_58_0d_9a_8c_20_ea_26_b3_3b_47_8d_6e_1f_00_cc_82_f0_01_76_93_5a_8b_54_ca_bf_8en,\n 0x0b_7a_6e_33_80_8d_21_7a_9e_55_c2_38_71_cf_df_e4_95_c1_0d_62_b8_b9_81_78_4b_04_87_e6_3d_f0_3e_0an,\n 0x28_ac_79_0d_46_2b_b3_45_ab_80_cd_16_70_40_39_43_59_9b_79_ed_ef_17_cf_70_23_6e_cb_1e_f8_72_cb_c9n,\n 0x2f_8d_74_5b_1b_47_50_fd_2f_93_2f_79_13_09_55_15_c4_98_be_31_42_10_18_0c_6c_30_77_23_12_26_bb_94n,\n 0x2a_3e_f2_0e_60_14_2f_17_d2_f3_b8_2e_ef_61_35_07_95_23_95_6d_8b_c6_84_09_2e_ec_b7_a7_d5_6d_71_ben,\n 0x08_11_9b_14_b8_39_22_e4_b2_24_69_7c_2c_65_36_cf_77_2d_06_74_89_d4_26_72_b9_88_cb_63_8c_71_a0_f0n,\n 0x1a_4b_ae_6c_9c_f7_3e_a2_27_39_a2_75_bc_72_2c_8c_c8_3d_91_e7_dd_fd_51_10_61_4a_52_d8_4c_e7_32_05n,\n 0x1d_65_9a_eb_e4_b3_7b_88_8b_e3_a7_d7_f2_3e_36_2c_25_00_46_c0_9d_53_26_31_2d_8d_94_cd_b3_84_d1_ben,\n 0x28_e2_fb_92_bf_6d_a4_e6_b9_67_30_47_9f_17_07_60_56_44_58_d9_5f_73_2a_ae_24_06_af_4c_03_96_9f_8fn,\n 0x10_f4_ec_3a_d6_f3_ed_33_87_72_99_90_45_6c_96_85_78_6e_de_8e_6e_14_b7_c6_63_11_d4_7b_87_78_aa_68n,\n 0x2a_d3_66_d9_04_19_10_78_66_50_4d_4d_34_34_6e_0a_3c_59_5d_e6_e0_aa_51_c8_05_27_2a_e1_bc_dd_c2_d8n,\n 0x02_f1_dc_29_a0_6c_64_c9_e4_3d_33_79_db_0f_2e_8f_0c_d8_f8_03_51_72_4d_31_3c_a0_2a_d2_4c_6d_ac_81n,\n 0x20_08_6a_67_2c_39_7e_65_cb_37_cf_b6_4d_da_b0_80_74_f1_73_f3_7d_0e_4a_17_47_b7_f0_20_65_2d_a6_4en,\n 0x0e_f2_86_1f_4e_c9_ba_5f_ec_74_ba_22_c0_b7_af_9d_45_8c_3c_d8_f9_0c_82_5c_1f_36_11_0c_a2_ee_90_76n,\n ],\n // t=10 (9 inputs) - 680 constants\n [\n 0x0e_19_62_c2_32_fd_0a_6b_b5_4a_d8_96_2a_82_b9_83_8c_fe_f1_9d_29_0a_55_fc_49_d6_de_bd_06_1c_d2_f6n,\n 0x01_e1_f4_5c_ff_3e_74_16_8a_cc_d0_a9_45_36_fc_a6_31_71_28_95_3e_b4_7d_8d_2d_79_b8_47_b3_55_cf_51n,\n 0x13_67_ee_c3_b2_0c_b7_49_53_61_8f_d9_26_10_47_75_5e_f7_f8_aa_e5_ff_e9_6f_c8_f7_d9_a0_2e_37_bd_1an,\n 0x2f_f6_ad_40_53_3a_fa_2a_cb_78_c9_b9_16_50_d7_cc_bd_27_4b_09_f7_8c_10_04_79_f3_a4_d7_29_56_d7_06n,\n 0x15_2c_8c_3d_9e_43_d9_0a_d8_09_48_31_a7_4a_f8_15_1f_dc_da_0b_18_d7_bd_83_74_ff_da_68_d1_a5_fc_71n,\n 0x24_17_07_db_26_f9_6d_f5_02_36_4d_26_71_2c_7f_46_5d_0a_c5_59_7a_30_95_59_b0_75_40_63_51_a2_09_77n,\n 0x15_a4_e4_72_8a_19_7d_ae_63_03_d0_cd_d2_b6_d1_e4_11_4a_9f_ad_38_a5_30_bc_a6_fd_06_ca_1f_fc_1f_56n,\n 0x0c_bf_d6_3f_36_39_78_c3_87_d6_56_e9_3f_11_e3_36_98_7a_68_74_8c_8f_54_f3_85_88_7e_64_b1_07_55_98n,\n 0x1f_b5_94_47_4b_83_34_f9_ae_a6_fe_5e_32_3f_b0_e0_ac_27_d2_89_59_21_ac_64_e9_3e_52_4e_4f_fd_25_c4n,\n 0x05_ac_55_36_1d_a9_31_c1_b4_c5_60_aa_8d_ba_bc_86_24_ba_22_58_71_bc_e2_24_ad_db_5a_f9_01_67_6a_ebn,\n 0x13_5f_83_31_42_52_58_5f_7e_01_16_92_cd_9a_cf_f3_6d_f6_be_98_50_29_f2_26_de_25_68_03_ea_70_4d_78n,\n 0x0a_68_f2_62_c9_e1_4d_8a_9e_e1_16_bf_90_cd_7d_65_e3_df_56_1b_b3_91_4e_31_4e_3f_43_f1_67_f5_c0_4an,\n 0x0a_83_60_a8_37_d4_c9_7b_94_66_33_c3_53_29_8b_77_d6_89_1b_6c_e7_8e_82_a3_bd_39_fb_7e_51_19_3d_10n,\n 0x13_6a_21_bd_13_b1_18_57_e0_f7_67_0e_12_d2_32_90_c2_31_8b_da_c8_30_15_4c_c3_73_30_cc_ad_9a_3f_e6n,\n 0x2a_60_98_9b_80_92_f8_e1_c1_cb_02_38_ec_85_bb_d6_b8_b6_59_32_7a_03_e8_e1_93_c1_5a_54_db_b7_3c_04n,\n 0x1b_5e_b8_1f_14_3b_f3_26_da_0f_4e_b9_5d_4f_45_c8_14_2c_ea_64_0d_33_ac_af_c8_de_ab_15_5f_37_34_5fn,\n 0x08_90_3c_f6_b6_84_82_67_37_a3_48_ac_aa_45_2e_1b_a9_f9_34_5d_e9_11_f2_34_0a_b7_32_4d_0b_cb_47_e0n,\n 0x03_b8_b7_17_ba_10_03_5a_12_ae_4d_c4_0f_42_10_b0_f0_52_9a_e8_37_76_6e_1a_26_95_22_10_56_35_d8_18n,\n 0x06_23_ee_7c_19_ea_bd_13_11_53_98_89_3e_82_6e_ee_21_1d_ae_a7_3f_80_fa_53_a2_2f_8c_e5_59_06_02_7cn,\n 0x0b_c8_b2_43_69_ab_76_64_7f_e0_ea_27_8c_86_6d_4d_45_bc_3f_93_e8_b0_6e_76_90_1b_be_5b_f2_0d_b5_c6n,\n 0x1a_32_7d_5f_54_01_90_e1_c9_cb_1e_31_d8_57_b5_c5_1c_5c_ad_9f_1e_e1_26_c4_46_70_b7_82_d4_6c_2f_50n,\n 0x10_87_ef_ac_87_bf_a4_80_7a_ca_41_0a_9c_29_7d_23_18_4c_05_bb_58_ab_fd_43_a3_fc_2d_d4_83_38_05_92n,\n 0x29_97_11_73_04_df_bb_46_4b_5c_d4_a4_18_8a_a4_f6_cc_d5_6d_e9_cb_d8_13_da_27_0a_d7_ee_69_9e_80_65n,\n 0x22_96_48_2e_91_9f_bd_46_f7_a5_18_15_5e_72_a5_59_65_59_68_66_f3_2b_1f_84_33_39_0f_3e_1f_0e_40_63n,\n 0x21_52_d5_f1_64_ce_09_f6_92_8a_ce_25_66_be_bc_61_09_a4_f6_20_47_e4_74_7a_05_1e_29_dc_18_75_25_d9n,\n 0x10_54_10_98_61_b3_34_9e_41_92_16_f1_bb_e8_2f_4a_57_82_3a_77_ac_b1_de_b6_c4_8f_a2_67_ee_5d_30_2fn,\n 0x17_72_f4_02_95_40_43_2a_b8_c6_96_8b_37_39_c3_a2_41_cd_a3_ad_e1_3e_ce_2e_a0_a0_b1_57_d6_5c_2c_93n,\n 0x00_c2_96_af_db_2e_03_7d_79_79_87_86_71_c7_8a_5f_60_08_d9_8c_bf_75_be_4e_3e_c3_cc_1d_44_e8_45_9en,\n 0x0e_c8_5b_22_c6_26_86_e5_2c_b7_9a_b2_9a_01_81_dc_8e_34_dd_f3_16_7d_1e_35_35_14_ec_86_8e_72_9a_5en,\n 0x14_9e_24_35_c2_0d_48_a3_ec_56_c4_e4_5d_bb_c5_83_b8_5b_d6_43_11_a2_57_6f_f3_52_66_89_62_c2_18_66n,\n 0x1d_44_14_0d_cb_45_97_c7_21_4a_6e_d8_5b_ff_1a_3b_5f_ad_33_fd_7c_53_06_99_bb_d6_10_e3_bf_52_40_den,\n 0x03_cf_b0_57_0f_82_48_56_fb_f4_15_13_be_01_ed_32_71_e1_c3_8a_16_f6_10_a8_09_7c_d2_7a_13_25_d4_d3n,\n 0x0f_22_3b_39_64_23_ed_c2_9d_51_e5_88_72_b2_da_b7_ea_3a_ae_89_51_7b_c4_19_57_ea_c7_9c_e9_76_13_79n,\n 0x1f_e6_dc_2e_6e_83_ab_88_e8_43_37_a4_51_30_96_33_37_74_6c_cd_01_c2_f2_be_10_00_80_be_32_a5_95_20n,\n 0x04_73_10_eb_b4_59_fe_86_0c_95_45_17_24_94_40_d3_67_c6_ef_c5_b9_3f_70_c4_10_bc_76_f8_08_8b_4a_3fn,\n 0x21_85_8c_e6_9a_01_9e_4c_d4_60_96_a6_17_90_bf_7e_03_e1_0e_3e_dc_1a_29_88_df_76_84_98_ad_66_7c_dfn,\n 0x0d_a4_f8_7d_a1_96_da_cc_96_4f_b6_92_8a_51_f3_ac_ef_04_20_37_db_74_1f_31_7b_4d_80_a8_1c_f9_8a_8en,\n 0x19_8e_ee_a9_81_eb_25_6b_4f_a4_3f_05_fa_4e_1a_ec_90_8e_57_61_3e_ef_d3_50_26_35_80_80_e3_29_bc_12n,\n 0x11_96_4e_fd_21_ea_07_93_40_c6_6a_d9_2f_db_62_b8_a1_8e_e0_8a_99_92_f1_33_a4_17_d2_3b_78_cb_1b_0cn,\n 0x04_b0_7b_19_60_51_81_22_f5_72_5c_ea_dc_0c_1f_06_09_28_bd_f0_f5_ec_42_e1_6f_8c_29_34_87_7b_41_43n,\n 0x02_46_f5_fb_b5_f7_19_b0_89_6e_07_b4_c2_3f_cf_1d_24_48_7b_4c_77_59_83_ce_a4_95_00_f8_63_77_09_ecn,\n 0x24_d7_8d_ae_de_93_27_f4_9e_ba_67_95_39_f8_5d_09_9d_65_83_06_09_38_cb_05_2d_ce_50_12_5b_01_cd_d0n,\n 0x23_de_93_26_58_d2_f1_81_f5_9d_72_34_a6_7e_17_47_63_ff_79_0d_39_04_cf_b3_dd_10_af_8a_f4_d8_86_5bn,\n 0x0c_4f_54_31_da_aa_99_4d_df_5f_3f_e6_b1_df_0c_0c_42_28_7a_38_c9_a5_c4_c7_58_f7_26_38_e3_bd_b4_03n,\n 0x17_59_99_58_98_95_b6_94_7d_38_6d_83_a5_e6_f5_fa_f9_c6_58_8d_52_3c_78_46_43_32_12_23_3f_64_d0_4bn,\n 0x02_d5_4c_ef_5e_3c_ad_1a_80_47_1b_c6_ef_0c_6e_4e_74_c2_e5_68_86_a3_1d_79_25_7b_27_62_ee_7a_b5_17n,\n 0x15_39_cd_c6_9f_d9_3f_2e_a5_0d_d1_2e_bb_04_37_c2_3d_f4_ec_da_29_c7_6a_eb_09_43_7f_fd_bf_01_c7_78n,\n 0x23_59_a4_54_52_82_4b_a9_7d_bc_05_00_86_bb_91_0c_12_ce_e0_a9_08_db_1c_28_08_97_9d_ed_c8_f2_99_42n,\n 0x08_80_e5_da_21_25_b0_84_22_03_bb_98_e5_f2_4a_e2_62_28_a5_af_5a_6e_fd_54_61_f6_34_a4_47_6a_15_f2n,\n 0x16_11_0f_c6_c8_16_79_30_bd_e2_30_d5_df_95_4f_10_7c_fd_0d_a0_05_ae_e4_4e_c5_ff_64_28_72_76_4c_19n,\n 0x13_10_c8_44_b7_0d_6a_58_56_f6_d1_86_69_e5_32_c2_d6_bd_5d_01_e6_a3_1e_80_4d_81_a2_f5_ad_c6_3f_dfn,\n 0x2e_a8_68_21_7a_99_a6_cb_e7_9b_44_2e_21_52_85_3c_73_30_fd_8d_e7_57_eb_75_55_76_58_79_fe_42_ce_2cn,\n 0x29_c5_04_24_71_d9_09_ee_48_13_cd_1a_36_e8_ec_a0_8d_4e_0d_38_30_09_f1_7c_4a_36_7a_87_7a_3d_f4_bdn,\n 0x25_e3_6e_da_0e_ab_57_60_75_e8_8a_da_39_14_c2_94_42_17_2a_02_7c_6d_17_4c_e0_dd_fb_b0_17_d5_1d_ffn,\n 0x2d_21_05_8e_c4_46_74_d8_49_3e_70_2a_ad_e5_bd_f3_b6_91_e3_fa_ac_04_27_08_9e_86_7f_9e_d8_56_bc_73n,\n 0x18_d1_7c_38_35_ec_ab_44_bd_b8_b6_7e_fe_2a_cc_71_d3_9e_9d_34_43_dd_0e_d1_1d_95_04_54_09_a7_c7_88n,\n 0x28_a2_f6_3b_0e_94_0a_fd_2c_78_d0_0d_e1_aa_6f_d6_95_3e_6d_6c_cc_3a_a3_20_3b_39_61_8f_5d_69_8f_5an,\n 0x02_63_5f_5b_d9_be_ba_ff_0c_e7_61_4e_c7_84_34_18_a9_aa_83_63_79_10_22_9b_ef_fd_b9_1e_23_eb_c1_0fn,\n 0x1f_b8_e8_72_65_25_26_80_18_84_5f_8c_82_6b_0e_4d_56_c4_e9_c5_8e_a9_27_52_d5_81_d1_a5_17_02_b8_82n,\n 0x08_7e_2c_e4_d2_ae_5c_93_ea_56_11_d5_0c_31_32_02_a8_0c_4b_43_53_3b_49_07_7f_b5_69_f8_37_ea_1f_e5n,\n 0x07_88_fa_95_32_cf_00_f1_3c_81_7f_38_ee_1b_ab_85_fb_c6_87_99_8c_f1_c1_4a_ff_5f_c1_ea_b1_15_a7_dan,\n 0x1c_5c_85_c5_7a_1f_75_87_f8_d2_fc_ef_c1_d4_e9_8c_27_41_a0_19_ef_fb_d4_c5_03_34_b0_c1_5c_38_15_cen,\n 0x0c_1f_b8_32_b7_cb_e0_e7_e1_1e_8e_dc_2b_af_87_49_f6_ea_06_37_b2_0e_97_2a_63_31_5d_bd_d5_be_14_72n,\n 0x22_97_58_a2_2b_52_ec_39_07_f9_4a_11_7f_66_39_16_45_08_c7_7b_fd_bc_67_9c_1b_3f_87_6b_46_ca_f8_09n,\n 0x05_e0_66_ca_12_57_d8_d5_ed_ca_65_a2_92_1f_b5_b5_e0_1e_3a_2f_0a_2a_3b_c6_62_2c_79_15_52_19_0a_2an,\n 0x2b_1a_93_5a_4f_f1_6c_25_00_bd_fe_e2_08_6d_9d_f3_92_7a_35_8e_8e_ab_e7_5f_6a_70_d7_db_25_a3_19_17n,\n 0x19_a5_59_93_10_80_88_e0_3f_e7_fb_c2_a0_14_50_9c_e9_87_f4_27_7f_72_9b_a5_b9_24_d2_5b_39_e0_66_9an,\n 0x1b_b6_5a_3f_9a_43_75_ad_92_6d_44_c1_88_dc_fe_51_b5_a5_dd_6a_7e_e1_52_aa_6c_cc_e4_48_13_e9_5d_b9n,\n 0x1f_72_1c_4d_0d_b7_59_2f_9b_da_01_fd_1f_be_bc_8e_57_45_2e_21_8d_8a_2e_19_16_30_67_d4_af_12_8d_37n,\n 0x2b_d3_2a_02_89_94_98_a9_73_38_2a_4d_40_26_6d_ac_ae_89_8a_98_47_c2_b3_3c_2a_d3_0b_cd_c4_25_47_76n,\n 0x28_58_5b_05_2d_22_28_36_50_a9_13_9d_63_61_b0_8c_e9_4d_17_d7_c8_f6_dc_1d_54_f5_85_89_06_6e_4a_31n,\n 0x03_eb_34_35_26_10_22_7b_eb_26_f8_ed_fe_46_6c_bf_a3_47_d7_95_0b_ee_43_1e_71_65_64_7b_f1_c5_cc_dfn,\n 0x1c_13_47_ef_41_8d_65_7a_bb_e6_e4_c0_19_01_1b_d3_4d_db_20_7a_b5_4a_9b_99_f0_7c_40_44_58_9e_09_86n,\n 0x04_a8_aa_3b_18_26_3e_17_13_63_e9_39_68_47_a1_93_3f_04_4f_ac_5f_5b_11_f7_54_e6_fe_af_54_ec_47_47n,\n 0x12_74_4a_06_3c_ab_e9_2e_2e_18_f0_00_af_ef_29_c9_28_58_5a_03_af_ac_3b_2f_4c_17_14_12_03_94_42_39n,\n 0x10_af_4d_39_a7_2d_2d_cb_65_ee_ea_bf_ca_40_a0_8a_69_b2_74_12_97_04_c0_21_a0_13_88_ff_86_62_fa_e7n,\n 0x10_38_c6_56_b3_32_e5_19_f4_83_d5_4e_52_22_b3_4b_35_af_12_90_6d_13_65_2d_1d_8c_6b_0f_50_9b_27_fcn,\n 0x10_ee_02_ed_11_76_80_4b_7d_43_69_6e_b8_76_43_b4_fb_45_f0_1d_d6_58_89_e5_b6_51_28_f7_81_d3_9d_93n,\n 0x1d_08_cc_d4_75_41_57_5c_60_b5_67_fd_9b_67_05_de_88_24_8f_9c_c6_0a_f2_34_30_98_d3_5d_9e_4f_6d_35n,\n 0x06_bb_f6_e3_2d_26_e9_22_ba_ac_8c_62_bc_f8_5e_c9_34_cb_df_68_70_e3_81_8c_fe_49_dd_3a_4c_70_89_7dn,\n 0x03_ae_60_40_3f_93_a9_83_70_68_81_00_dc_d8_7a_d4_c7_1e_e5_29_c4_dc_c3_be_32_d6_bc_06_21_d4_23_55n,\n 0x0f_d0_f7_76_d2_67_dc_3c_01_a3_77_d2_17_e3_3a_25_5c_39_93_7a_c2_81_a3_b0_ea_cb_58_b1_01_23_93_c8n,\n 0x2d_4a_b3_b8_5e_e6_f5_5b_c1_7d_05_1f_ce_f7_39_16_8a_e2_8b_7e_6d_5a_a4_ac_12_a2_dc_c0_7b_9b_a6_f7n,\n 0x2e_c0_7b_3f_ad_be_29_6f_9b_d1_fc_d1_75_8f_95_e6_b9_22_db_75_82_06_8d_76_d5_52_18_41_31_e0_83_2fn,\n 0x0a_60_13_e3_7f_56_0f_54_0d_bd_3e_97_90_60_02_00_77_7b_86_a5_77_c2_d2_d8_3e_c7_cd_13_db_31_93_76n,\n 0x0d_cb_c3_cb_4a_af_e0_8c_62_73_1d_ca_44_c8_43_01_22_65_95_0e_07_96_c7_3d_8f_9e_53_a7_67_c7_e8_88n,\n 0x19_8c_37_3f_bc_6b_a5_98_02_04_56_f6_24_df_c9_06_f2_8c_ab_91_5b_70_eb_55_68_f1_75_f8_42_35_5c_27n,\n 0x2a_95_15_77_0f_30_53_63_8e_3c_06_4f_59_01_da_7a_cc_25_10_fb_29_f5_f3_60_7f_8a_d1_25_6a_da_07_een,\n 0x2d_41_54_73_9e_d8_a6_cf_9a_92_e5_90_81_2f_15_f9_30_13_16_3f_57_b8_03_97_73_cf_86_34_8d_53_18_c8n,\n 0x02_bb_ea_e4_c7_16_ee_13_6c_4c_ee_f1_94_e7_98_5d_46_41_5f_c1_30_43_0a_65_b2_4e_9f_47_53_30_77_d9n,\n 0x19_2b_5b_08_32_07_66_f4_5b_e7_bb_a9_e9_a7_0c_0e_fc_69_af_ec_2a_75_e4_e0_71_e6_c8_f5_5f_b9_ef_54n,\n 0x2b_be_0e_0b_bd_a9_36_b3_05_82_9e_3a_74_a8_2d_f0_30_d4_fd_81_12_aa_7f_16_96_70_87_6b_02_8f_07_02n,\n 0x09_63_72_2d_8d_b5_32_fc_95_cf_22_40_a5_70_cd_7a_13_63_66_df_f5_44_94_78_45_b6_d4_87_dc_7f_a6_2an,\n 0x16_01_0c_0e_d7_a3_7b_ca_96_82_ac_85_8f_c8_d2_c4_af_51_3f_02_d0_f1_7d_d3_06_f0_5c_d5_7d_c6_94_cfn,\n 0x24_48_61_22_98_7e_17_07_7b_02_6b_aa_81_e7_05_e5_d0_cb_76_b4_d9_2d_d3_ff_54_bb_b8_13_f3_d0_9e_a1n,\n 0x28_da_35_a8_52_62_58_2b_22_0f_72_62_ea_68_c3_81_57_3a_91_8c_10_dd_17_e8_e5_64_eb_6d_a1_13_e5_c4n,\n 0x1d_31_96_aa_62_09_08_5c_34_db_2f_0e_2b_3d_d4_bb_6b_b6_70_e6_ca_24_d2_7d_90_dc_8e_fa_5e_81_63_8an,\n 0x0e_56_fe_4b_7b_a6_2d_cd_a0_d2_f7_b9_de_86_bc_e6_16_6d_79_a0_a0_c3_c6_95_34_1f_bd_b4_07_b9_a5_06n,\n 0x14_5f_d4_76_76_ad_e5_c3_80_b9_0b_f0_80_20_fa_ef_c8_c3_d2_70_c6_bd_97_f9_2a_18_ab_94_f9_73_db_cfn,\n 0x0b_67_04_48_6f_dd_2a_63_3b_f9_e4_0a_5c_5e_40_91_e2_d4_30_c9_37_30_6a_b3_04_5b_39_b8_b7_4e_33_3en,\n 0x27_67_47_99_44_73_ba_91_52_27_5d_15_be_af_e4_2b_92_4d_e6_97_28_10_78_98_b4_70_1a_66_36_df_3c_f4n,\n 0x12_66_53_24_c9_fc_8d_24_6c_15_18_e0_40_a1_5e_3a_17_c0_f8_3f_0a_47_95_71_d8_f6_1a_47_f3_98_2d_21n,\n 0x02_88_c5_89_32_7f_f9_78_24_ea_a3_df_f4_0b_bc_c9_ca_73_f6_9e_43_ee_bf_24_b2_9c_d5_3f_a1_11_cc_8dn,\n 0x2c_3b_3f_26_6f_21_d2_1d_a3_3e_4c_39_00_1c_7a_70_3e_6b_93_e0_47_35_78_40_12_3f_30_72_4f_da_33_6cn,\n 0x1d_08_92_60_f5_3d_9b_6d_91_24_60_c6_a9_d9_ff_9d_f5_a6_39_1a_49_27_31_53_48_26_a5_57_5e_8a_77_25n,\n 0x05_22_26_cd_4f_f2_c8_5d_c3_fc_bb_fd_ca_a0_ec_ad_71_25_a0_3d_53_32_23_c8_66_70_40_fb_fc_f7_06_2en,\n 0x27_12_f9_17_18_04_27_3a_9c_19_73_f7_e8_7f_ae_28_be_d9_a8_33_fd_b7_0e_d9_3d_c6_27_48_65_86_93_56n,\n 0x27_6f_2f_78_1e_0c_9c_a0_42_4a_9a_51_35_59_3b_e9_57_64_a7_59_c2_31_19_9d_b5_d5_e0_e7_76_e1_5a_acn,\n 0x2b_21_ff_c3_ba_16_3e_a6_1b_7c_0b_71_7d_51_9c_64_aa_ca_b8_19_57_e2_68_e1_75_f4_68_76_e9_ac_6f_62n,\n 0x2f_3c_2b_68_74_b8_15_31_b8_90_a6_03_be_7e_36_ce_aa_ed_6c_8a_33_60_a8_68_f1_8b_f2_37_36_28_8c_09n,\n 0x05_67_21_14_8d_9a_37_0a_8e_81_28_ee_00_17_86_95_f6_6e_c5_06_3c_66_60_ff_55_49_13_39_4c_d5_df_67n,\n 0x0e_17_12_fd_17_98_db_b4_a2_97_6d_fa_a0_85_bb_98_22_d2_d2_69_39_83_e9_9c_76_a5_56_e7_5e_63_31_3fn,\n 0x26_c9_84_6c_7c_a0_b8_22_7b_6e_aa_76_34_cf_aa_6c_4a_13_bf_a4_71_0c_be_fe_80_be_fe_51_19_c0_b6_08n,\n 0x1e_bb_9e_b4_79_a6_44_d2_5f_53_da_b3_e6_dc_a0_83_39_f0_ef_fd_e9_b7_aa_d7_a3_47_48_50_7d_69_a8_aen,\n 0x16_11_f5_e2_ad_d8_cc_fe_9d_09_3b_ea_1d_55_ea_c6_26_61_a9_ac_97_13_fa_4c_70_89_59_97_44_1b_ba_88n,\n 0x24_62_c3_d5_55_56_11_ae_ea_4a_14_6b_8d_a5_0d_30_c4_19_94_3c_1a_a6_00_e5_b1_3b_c4_7a_38_10_f6_3bn,\n 0x0f_37_6e_b9_e7_de_4c_45_ff_50_8a_22_b3_4e_55_f0_ff_da_02_68_26_a9_8b_29_86_72_d8_1c_82_6b_62_92n,\n 0x0e_7f_f8_0c_3d_19_a2_ad_98_c8_c5_2a_5d_19_d1_71_25_17_aa_65_82_62_91_ae_6e_75_e0_50_3c_8b_8a_3cn,\n 0x2e_b1_3f_f6_6a_b4_9a_73_aa_ad_76_0f_5b_f2_71_31_6f_3f_85_38_c5_26_a1_a6_4f_a6_5b_d3_b3_fc_2d_4fn,\n 0x22_a4_0e_53_0d_e7_dd_dc_1f_84_2c_94_21_19_2c_63_5b_43_a6_cb_1f_83_d8_9d_db_d3_c5_6c_2a_51_2e_dbn,\n 0x27_40_ba_a3_18_c0_2f_de_16_2c_92_0a_62_45_b0_f2_20_8f_7d_0e_e1_89_82_3a_db_47_ba_ff_dd_5e_e2_1dn,\n 0x19_65_52_2c_ce_8b_d2_9b_3c_eb_50_8c_e4_04_31_f4_0d_54_b5_9c_04_11_e5_ca_42_7f_8c_1c_78_9d_29_b0n,\n 0x10_a0_db_7c_2b_09_69_dc_25_06_47_af_0b_db_0d_99_ce_a4_28_5f_d8_a9_07_17_c2_76_02_32_a9_06_be_7en,\n 0x02_95_48_62_71_ad_a3_ca_e4_cf_e3_72_1e_6d_7b_0a_cf_21_bd_ca_3c_aa_0e_02_0a_6d_88_ea_d1_f2_bb_11n,\n 0x1d_00_20_6d_65_a9_24_66_dd_ef_22_e5_58_36_61_c6_8e_e3_13_cc_40_a0_1c_09_0e_5c_cb_11_8a_1a_f1_3dn,\n 0x11_22_22_60_50_52_42_3f_d6_da_21_d9_55_45_d6_e9_68_78_e5_a6_f4_3f_b2_66_6e_2f_dc_59_37_97_1b_c5n,\n 0x25_cf_af_db_7d_f3_2a_86_f2_ff_44_a3_2a_d7_b2_fd_9a_60_f3_1a_44_e5_b5_ad_42_3a_e5_2b_0e_3f_f2_efn,\n 0x1a_42_ac_a3_30_7d_f8_4a_81_ff_5b_9f_be_c0_11_ac_9f_da_f3_d9_c7_3c_df_e9_50_11_f7_c1_ac_77_9d_15n,\n 0x14_fb_6c_4e_0d_f0_06_32_75_d3_80_e6_7c_25_1a_29_ae_63_80_28_d8_e6_07_2a_6e_4f_df_f4_e0_39_a4_ffn,\n 0x16_87_f5_01_a8_c0_7c_9e_43_eb_4a_b2_24_49_14_b6_51_29_38_07_a2_8b_c4_3d_73_ac_4b_56_40_44_52_64n,\n 0x2d_64_ba_40_67_ab_89_8f_7b_43_44_09_31_9d_7c_ad_dd_b1_41_82_f6_13_e4_66_42_91_9b_43_c8_9b_81_59n,\n 0x26_5e_19_e2_a2_bc_ff_94_89_cb_74_9d_af_9b_77_25_6e_40_8f_18_0c_fa_f0_55_06_e1_1a_02_d6_d4_b1_42n,\n 0x11_20_d9_11_6a_58_4e_ca_d3_23_cb_8b_88_25_b9_e4_3a_d1_6c_e5_9c_5e_8b_b5_f1_1b_4a_b8_e5_ee_68_01n,\n 0x13_5c_20_0f_7c_14_5c_04_2f_dc_94_ad_5b_d2_e4_66_1b_0d_b8_89_dd_c3_c2_4a_20_7f_5c_7c_40_98_03_4an,\n 0x2f_9d_36_5d_9b_5f_9f_ff_c5_49_1c_0c_c3_9e_6b_9a_d1_4e_4d_87_94_bf_76_e6_6b_ec_a2_97_4d_c6_c6_5an,\n 0x2b_b2_7c_1a_1e_84_52_f3_17_bf_86_a6_38_49_54_f8_60_9a_28_50_04_59_3c_52_fd_cf_fe_7d_85_81_2d_f4n,\n 0x24_5f_28_da_69_86_36_87_76_96_8d_7e_5d_a1_76_3d_38_b4_e1_a5_b5_3a_c3_b4_57_b2_6d_35_d8_cc_55_3bn,\n 0x16_04_7c_3f_4c_a2_3c_6f_5d_ac_a5_d0_1e_bc_67_21_a3_d1_56_ca_4c_35_e0_08_49_03_83_6b_d1_28_93_ben,\n 0x13_29_9d_dd_b9_e2_77_b1_22_24_0d_08_65_61_64_d1_5f_8d_15_cc_74_83_de_70_87_e8_ad_96_90_9c_05_65n,\n 0x15_90_dd_e2_9e_11_42_4a_0e_7f_7d_4b_3e_0f_c7_e4_12_d0_92_46_3c_f9_54_5b_7c_62_26_0a_b2_d4_34_b9n,\n 0x19_fd_60_ba_a2_48_6b_fd_ff_ff_c8_f6_72_ab_64_cb_a4_0b_39_4f_28_18_36_6c_76_d0_5b_77_e9_1e_2b_36n,\n 0x26_58_28_ed_fb_03_91_d8_60_82_2c_41_19_b3_9c_ee_ec_02_19_16_53_f9_5c_73_92_c0_17_25_44_4e_e8_49n,\n 0x02_3b_da_9a_3c_2e_8b_b1_b2_27_b1_26_ea_57_4f_97_ec_77_93_cd_80_c6_2c_a4_4c_f8_b2_e4_15_13_2b_b1n,\n 0x1b_77_0c_80_4b_fb_91_8b_19_76_e3_35_7a_b8_84_66_8b_0d_2a_a4_14_e0_07_ed_e0_00_71_47_14_aa_09_d3n,\n 0x1d_84_ea_ab_a6_52_1e_b8_66_b6_00_74_90_69_e6_64_3d_aa_80_f7_de_10_ec_27_35_1f_13_69_a3_72_9d_13n,\n 0x07_3a_0a_a1_ba_4c_1e_1e_98_2e_f0_05_39_18_3e_f6_48_fc_44_1b_e8_8a_b1_dc_53_15_a0_cb_b4_01_c9_b3n,\n 0x25_ac_09_9a_a8_5c_9e_2a_ee_67_89_f2_59_22_58_cd_f5_ca_8c_7b_57_39_e2_67_f1_20_34_f7_05_79_7f_81n,\n 0x1c_1f_0d_c2_2a_d5_4d_a9_f2_63_21_b7_93_e0_14_ac_1b_85_30_01_d1_56_eb_59_0e_6e_c5_22_e6_85_0c_31n,\n 0x10_37_49_cc_ae_90_e4_34_a1_d9_61_31_9f_96_c7_44_e0_4e_c0_f7_7c_8c_65_05_bc_21_a1_19_4d_a6_c1_4bn,\n 0x09_3c_47_c9_da_d5_ea_61_c8_56_66_20_e4_f4_36_c3_6a_d0_0d_04_6b_25_2d_22_64_d0_6d_9a_37_7e_9c_68n,\n 0x12_d4_8a_22_d4_43_71_1b_05_bb_a7_3f_e7_cb_f5_e0_73_4d_f7_ed_34_58_7f_85_d8_50_a5_15_8c_0a_27_4en,\n 0x0d_14_87_ee_7b_fc_a4_6f_eb_ce_db_83_e9_dc_73_c3_3d_3c_09_9b_f3_c1_a7_79_33_48_34_f8_9f_7d_a3_34n,\n 0x2e_ba_b1_e5_44_f6_ad_45_25_eb_55_92_15_2e_cb_46_f8_e0_f7_0c_c5_4e_73_9f_5a_e4_c4_89_45_e5_34_a8n,\n 0x17_26_01_10_bc_0f_a2_d8_59_a6_5a_51_9b_67_9c_ab_15_7a_64_85_e5_06_2c_af_a3_d9_e8_52_35_43_d4_60n,\n 0x14_b6_0b_b1_b8_13_53_36_55_b7_4d_19_48_fa_fd_94_c7_3e_1e_0b_ad_2b_f3_e7_cb_be_99_7c_40_c2_2c_b0n,\n 0x14_4c_a9_b1_81_04_b5_bb_5a_9d_21_d7_3b_d9_57_f3_73_25_95_39_a1_63_c7_81_97_21_0c_d1_6c_88_66_41n,\n 0x0b_69_85_40_c0_ab_22_73_4b_ad_58_e4_85_15_ff_84_52_00_51_21_5f_5c_e4_91_5d_80_44_40_32_a3_ba_49n,\n 0x1f_45_8f_df_92_a4_c0_3b_ce_2b_f6_9d_d3_dd_4e_26_bf_c1_66_3c_18_77_99_bb_35_95_8d_36_13_e2_5b_dan,\n 0x26_c0_c3_f9_f2_ab_d1_93_92_33_0e_e9_3e_25_54_ab_b2_7e_d3_77_48_1e_2a_25_52_79_8d_c9_52_a0_ac_d7n,\n 0x00_fe_82_5b_dd_e1_ab_af_b4_80_e9_85_d6_fa_8f_4c_7a_e9_c6_73_5f_9b_e0_a6_92_42_93_d2_ba_11_45_c0n,\n 0x24_de_ed_39_88_54_6a_e6_52_0a_6c_20_c7_65_9e_bd_2a_5f_4b_82_81_82_a3_0f_51_95_67_49_97_b1_f7_34n,\n 0x0b_bb_cd_55_5c_18_4a_ae_08_91_58_2c_61_d6_51_95_13_2b_a1_4a_a2_6f_ae_5b_ca_4c_fa_0e_f7_1c_90_b8n,\n 0x0f_9f_78_d8_5d_ed_e3_78_43_7a_fb_ec_3f_6b_a4_0c_8e_3f_67_4c_ba_a5_1f_2f_c5_35_55_77_9c_e9_aa_4dn,\n 0x26_9c_d2_fb_8c_03_93_6a_a6_e3_0d_fd_09_c3_4f_f7_86_c8_39_96_e8_9f_70_6c_39_cf_9a_67_3a_79_c8_f0n,\n 0x04_0a_5e_d5_5c_15_41_ad_14_31_b2_e0_a5_c2_37_0c_c0_ab_8c_b2_ab_31_e6_25_05_f7_99_b0_a5_35_53_7en,\n 0x0b_10_db_52_d6_9a_08_38_2c_9b_0f_60_d5_3c_58_63_33_01_88_77_ec_87_90_67_a2_f9_54_8f_a0_35_b6_13n,\n 0x1e_6c_c5_c4_09_0d_2d_91_f5_67_23_70_64_c5_7a_bb_80_f1_d1_88_6a_50_9c_ab_6b_c2_3e_81_76_7a_2a_a0n,\n 0x10_4f_99_66_b6_a8_92_13_83_19_ca_03_7d_42_98_fa_e4_fa_d5_d0_9c_d0_5e_6e_48_14_b7_52_e5_1f_57_0bn,\n 0x29_d9_6f_53_0e_d5_cc_92_c9_04_d2_1b_f5_60_c8_29_23_bf_65_69_ac_b9_0a_bf_b9_d6_8c_49_5c_bb_98_14n,\n 0x16_b9_17_a2_41_c5_e2_a1_94_1d_74_56_66_d8_ad_fe_de_fb_48_f9_cf_fc_75_6f_ef_66_67_43_9e_ab_a1_fdn,\n 0x28_04_9d_c8_70_3e_7e_eb_4a_e5_cb_7e_ec_9d_0b_96_14_f3_3f_03_be_ca_54_a6_7d_72_9c_ff_65_97_1f_a0n,\n 0x2b_c2_36_71_4a_ef_eb_86_45_4c_f9_72_67_6c_64_6a_07_1e_70_95_9d_53_87_1a_23_a2_7b_cc_4a_51_4b_46n,\n 0x0e_85_e3_f0_b6_2d_fa_c0_4d_ef_e8_93_26_b1_f1_c9_c5_7f_95_dc_29_9e_f9_5f_dc_e2_dd_13_0b_0e_09_f2n,\n 0x15_76_f5_56_50_e0_df_a8_19_a1_27_3e_6a_0f_a0_4c_1f_1a_e1_8f_1f_84_1d_af_0a_d5_a2_35_79_3b_86_2en,\n 0x2e_6d_1f_98_4d_90_d7_78_bc_0e_09_90_db_e6_be_66_25_8a_d0_04_87_12_9a_b3_43_8d_a9_0c_9e_c3_07_f1n,\n 0x0a_52_16_c2_40_37_80_84_d7_41_0c_c7_78_80_1c_59_03_91_c6_f6_00_a8_55_14_de_1d_5c_fd_2e_29_fa_95n,\n 0x16_af_0c_6e_c8_57_71_4b_9e_9e_79_32_ac_8a_6b_1b_01_fb_42_53_2e_51_e9_57_c7_35_e0_24_03_ec_d4_92n,\n 0x07_ef_38_29_b2_1e_86_dc_db_c3_aa_02_fd_24_6b_8f_a8_e7_e4_c2_15_78_ef_05_84_87_4d_36_de_49_1a_acn,\n 0x02_1c_df_dc_ab_1f_fd_ac_2b_af_01_5d_da_d7_ef_6f_c1_96_b7_44_2e_82_b3_70_a1_18_7b_48_4d_5d_62_d5n,\n 0x09_11_aa_1c_e6_08_f4_23_4f_f3_b9_f3_5d_9b_e5_46_f5_e7_b9_4b_f0_a2_5f_8b_cc_b3_53_5e_bf_1c_58_46n,\n 0x1c_86_1e_b0_1c_4b_33_5e_cf_db_63_20_7c_51_67_f2_f2_a2_db_bd_4c_60_4d_f9_73_90_82_c5_db_91_71_3an,\n 0x03_2a_b5_c0_09_3a_fc_05_9d_72_26_51_52_02_6b_c6_74_b6_98_84_89_fa_19_22_d3_f6_a1_30_e6_e9_8c_0bn,\n 0x1d_bb_7c_4e_30_b3_bd_b3_a2_48_e0_11_8c_92_59_c3_1b_75_be_bb_da_8a_cd_e2_d1_14_31_1e_11_66_b8_50n,\n 0x29_57_21_98_7b_2a_07_2f_96_82_16_f6_9e_14_af_c1_0a_c7_ce_68_70_a1_ce_f6_20_b9_e3_16_71_21_e5_65n,\n 0x0d_84_8b_bb_53_ea_8c_72_c8_ca_0a_93_37_11_06_1c_d1_1c_38_be_f5_20_4e_19_87_c6_e0_01_6c_c8_77_28n,\n 0x12_54_37_f6_10_5b_57_32_9c_04_53_76_be_98_01_f1_50_08_83_84_91_6a_b5_7e_e9_0e_4d_f2_60_53_3e_40n,\n 0x16_a6_f8_5c_f0_70_a9_34_37_69_df_bd_e8_ce_c3_0d_62_50_0d_50_ee_29_41_67_b0_cf_c9_af_47_07_ac_24n,\n 0x23_e4_ba_16_6e_2b_5a_15_06_df_9d_d4_dc_74_c7_a3_0d_fb_79_f4_93_ad_e3_8b_e2_1c_0a_60_40_73_d3_59n,\n 0x0d_7a_57_0d_5c_13_1b_f7_80_31_c6_6c_8a_e5_fd_45_4b_a9_85_5f_ab_92_ea_f9_ca_37_9d_08_e8_56_41_4fn,\n 0x21_79_3d_46_a6_96_ee_50_40_f5_99_f4_82_bd_98_45_35_6c_02_e4_c2_b0_7a_64_50_a1_00_55_43_66_58_21n,\n 0x04_cf_9f_12_17_8b_a8_6f_ab_11_c1_2d_69_0e_62_06_03_52_5f_f7_df_cb_56_06_d0_f6_7f_0a_72_50_d0_a6n,\n 0x1e_1c_87_14_ae_ba_7e_75_49_e0_84_77_b4_36_5e_c2_db_eb_df_bb_60_18_93_7f_68_0d_3c_fa_db_5b_92_24n,\n 0x12_5f_99_c8_1d_b5_d7_e7_4b_e0_c6_e6_b4_47_6d_d0_e5_03_c1_c7_04_b3_c7_d3_ff_0e_d3_56_f9_a5_bf_d4n,\n 0x11_1b_c3_21_5b_3b_b2_a5_d1_72_57_fa_73_a7_78_51_d2_a2_4e_48_04_ad_1a_c6_e6_52_f0_85_83_26_ce_b2n,\n 0x09_e7_37_71_fa_ea_00_65_c8_06_53_df_aa_8b_ff_40_2e_eb_0b_e3_66_88_34_38_26_fa_f6_39_f6_84_b3_1an,\n 0x09_64_f6_21_94_68_10_a1_23_46_9f_ce_6b_54_4f_f6_1c_c9_b7_33_03_3b_63_20_70_d4_7b_c9_47_4f_4b_0cn,\n 0x09_53_2b_f9_f1_10_51_f8_63_a4_e8_06_79_78_2b_07_32_d6_63_94_73_90_c1_2b_02_95_49_18_a1_8e_47_adn,\n 0x1d_14_80_8c_54_58_3a_62_0e_65_87_c2_4b_99_3b_18_38_a0_eb_07_39_5c_30_85_b4_49_d3_13_5b_e3_22_f5n,\n 0x09_b8_8c_eb_cc_bb_2a_0a_18_e2_d2_e7_99_e7_7c_ab_cb_4a_23_11_23_c3_03_e9_8c_d8_97_ff_ad_59_8d_44n,\n 0x24_ff_5a_b3_8e_f4_57_48_44_93_05_4c_9b_d3_ec_89_4a_85_66_49_1a_91_a5_2b_d7_88_34_3c_42_9d_0a_93n,\n 0x13_ee_ae_a2_29_8c_a2_4e_e7_a7_31_62_ec_3a_21_d8_17_ba_86_f9_77_2b_b6_8c_04_61_d1_15_53_5d_ae_c3n,\n 0x11_60_0a_36_cb_41_fd_e2_dd_26_a7_cd_4a_98_cd_8b_ea_e0_a0_4e_46_db_39_9e_ec_5c_1d_49_02_05_10_f0n,\n 0x2c_76_82_d3_ee_4e_c3_ce_7e_1f_67_cc_e9_bd_eb_a4_a1_f6_69_f0_4d_9f_7a_4b_ee_13_b3_c9_7d_3e_aa_3an,\n 0x2d_9b_1d_b2_46_b0_04_e1_85_b0_8c_95_3d_c0_af_4f_bb_7c_7d_c6_7b_23_78_ef_f7_07_50_7b_2d_b0_6c_b7n,\n 0x17_f1_40_7c_28_72_d3_81_0b_74_74_be_be_37_11_f7_25_83_cc_95_83_13_01_b4_e3_e0_6a_3c_a9_62_83_18n,\n 0x08_9f_d5_80_55_d2_06_02_bd_bc_21_71_ae_48_5f_f4_8f_20_53_01_06_59_32_bc_9d_52_6f_e5_4d_29_7f_02n,\n 0x27_79_ea_f5_37_10_f3_a5_84_8a_8d_ff_be_40_b5_f4_42_a8_a1_3c_51_4f_f9_75_01_fd_ca_08_0f_b3_ba_fcn,\n 0x07_d6_c3_dd_b8_07_b8_63_4c_89_ae_f3_56_15_da_73_59_6e_8e_e1_a8_ca_b4_9d_02_2f_0b_ca_87_80_ec_15n,\n 0x1b_29_18_da_0b_9b_ee_a6_9a_80_b0_5a_15_1e_68_17_22_cb_66_fb_8e_f1_f7_dd_82_93_9e_99_1c_d0_21_e8n,\n 0x1a_21_a1_40_9d_df_ca_99_e3_c0_98_7f_97_45_08_40_f9_58_52_4a_ff_eb_28_c1_8f_de_73_9c_81_89_ca_bbn,\n 0x1f_9e_67_e3_97_91_95_d3_68_17_22_67_a6_ba_3b_44_81_73_e2_37_9f_25_ca_a1_37_ab_69_64_71_4d_1f_e1n,\n 0x07_e5_79_31_39_9b_cc_41_19_d9_cd_7b_21_91_79_3d_e0_ee_69_47_47_16_b0_80_08_a9_f6_8a_42_87_87_a6n,\n 0x09_ef_7d_4a_ea_df_7b_f5_93_c5_a7_92_79_e9_e6_55_78_d1_43_15_df_9d_ee_07_40_16_93_d1_99_59_94_82n,\n 0x28_5f_e3_b1_5f_4b_43_26_9d_4c_c0_18_3f_9f_75_b0_b4_fe_69_ff_17_0a_c6_41_b1_8c_7f_b1_05_d2_d7_11n,\n 0x19_a7_68_2b_fe_cf_e1_8f_ba_b2_23_01_27_38_95_c1_c4_b9_a9_94_87_7d_d7_78_64_6e_9d_fd_64_f2_4d_bcn,\n 0x0a_b7_94_b4_43_3b_5d_0c_a9_f3_f9_23_61_59_ee_7b_9f_11_2a_be_71_d3_a4_d1_93_85_20_2c_20_95_01_d0n,\n 0x08_ff_64_f5_bb_9e_3f_8b_e8_15_73_11_7e_01_1c_80_3f_69_dc_6a_09_70_dc_05_11_8a_b1_07_1a_28_98_0cn,\n 0x2f_0d_45_4b_49_e0_36_61_71_d9_51_42_23_00_02_d7_0f_90_c8_c3_70_47_c6_b2_58_c0_7c_0c_9d_03_88_a9n,\n 0x17_b4_63_c6_8f_cb_a4_61_e1_49_e5_6e_da_9e_8d_b1_a4_bc_5c_7b_82_89_b0_cd_42_86_de_b5_c9_35_54_c8n,\n 0x2d_1a_83_ac_83_2e_49_28_0d_f9_4b_1e_27_ba_b6_5f_aa_9e_21_a6_0a_48_ef_0f_45_57_c0_3f_9b_7d_11_f1n,\n 0x1e_18_24_11_56_0c_80_d7_d4_c4_80_e4_fd_65_b9_99_71_32_a4_ed_29_f9_a8_dc_3d_88_22_09_b6_3b_07_c2n,\n 0x04_bc_5c_19_cb_b3_12_94_1b_a1_b7_31_f0_96_34_9a_e7_62_4e_ca_3b_83_be_88_64_70_80_f7_94_d7_fa_b3n,\n 0x0f_10_a1_31_95_08_c0_9a_a4_42_7e_a7_90_71_da_02_dc_e4_a1_74_5e_13_9e_69_49_f9_92_16_ac_d8_30_5an,\n 0x07_57_9d_96_ba_b7_93_ef_1f_74_07_13_f7_0f_3d_2c_f4_af_1d_20_ea_56_0f_48_e6_f8_c0_4d_f6_4f_20_77n,\n 0x1f_d8_b5_5d_0a_28_cf_d0_09_b2_98_b3_0e_22_6a_a3_d4_24_33_dc_14_83_18_c9_9c_4e_32_af_13_c5_14_4an,\n 0x2a_ff_d5_0c_6a_eb_a5_76_87_d8_24_ae_ff_a5_5c_21_7f_63_3d_46_84_0c_92_8c_03_73_ca_46_43_2f_a7_31n,\n 0x2f_c1_63_4b_69_dc_69_7b_66_8f_ad_3e_89_c8_81_86_a7_6e_40_77_bf_6d_11_40_d8_e4_28_ea_eb_7a_38_72n,\n 0x23_a5_3e_51_4a_b2_62_e2_2e_ca_7e_e7_22_49_78_18_c0_64_f8_f7_4c_cd_33_05_03_d7_ab_fa_85_f0_15_d3n,\n 0x08_6e_a9_8e_8a_4e_db_6d_85_00_bc_a0_3d_53_a0_3a_22_f6_9b_6f_13_2c_99_ec_af_9e_95_0f_bf_26_c8_7bn,\n 0x0f_48_91_58_55_b4_d1_91_b7_c3_7d_85_e8_a5_d4_91_64_8c_d4_e5_3f_58_06_d4_99_a8_de_87_ee_10_f2_e2n,\n 0x13_e0_bb_95_d9_d3_07_8c_10_ed_2f_73_1f_57_f5_e9_e4_0c_95_63_75_74_e9_5a_93_3d_9f_2a_7a_a5_6c_5bn,\n 0x2b_c3_5b_0c_5b_33_5d_fc_6f_1a_93_62_e5_b3_89_da_fe_b6_5f_0c_e5_b4_45_48_28_0f_46_c1_6f_f5_1f_ebn,\n 0x05_b2_dd_cc_86_a8_50_4b_00_80_8a_cb_b4_a6_43_b1_69_db_2b_07_fc_25_c9_cc_31_38_46_7c_a7_50_b5_acn,\n 0x17_50_d1_a4_7d_a2_11_d8_e8_38_6c_19_80_95_b8_3f_f6_65_b5_89_ac_27_8b_ca_8c_0f_a0_1b_fc_68_3c_ban,\n 0x1b_b5_32_1e_95_d1_fb_a2_b2_2c_f4_d7_5e_2e_a2_c3_64_3b_85_ef_bb_f1_a3_b2_cd_4b_e0_e7_d1_23_88_0fn,\n 0x2a_4e_8a_d4_df_a2_76_52_83_9c_e1_79_e0_96_4c_c4_d4_73_2f_b5_53_70_90_1b_32_92_d6_63_bd_e4_1e_cdn,\n 0x19_b9_84_a2_d5_a0_32_3b_95_6f_ae_09_b5_29_bd_cf_45_51_22_c4_43_ee_ac_7f_f1_58_4b_cd_d6_32_78_7fn,\n 0x11_10_5f_81_8c_c2_72_32_a8_44_5f_f8_86_de_d8_38_fe_98_00_38_72_7b_9e_2b_33_43_6a_55_c2_f9_fd_3bn,\n 0x22_28_20_57_32_fe_6b_9a_f2_81_b5_b2_b5_fd_a2_d0_7f_51_84_c5_55_fb_52_a7_f5_14_c6_c1_b1_fa_80_a0n,\n 0x20_b4_c4_68_bb_8e_29_c1_86_e7_f4_5f_ee_ef_84_bd_85_7d_b8_56_43_aa_79_8b_c2_64_51_9d_aa_46_3f_ddn,\n 0x14_bc_d2_fd_5c_73_92_bf_9d_93_e4_9b_58_55_b5_f3_5c_71_7d_4c_e5_11_37_b8_75_1b_82_83_86_a7_a5_f6n,\n 0x16_1c_b2_6e_6f_a4_8d_bb_05_a5_c3_bd_ab_4a_1a_52_44_69_f9_8b_8d_10_18_1f_28_48_02_9c_79_5e_05_76n,\n 0x26_d5_37_cc_d8_d4_f3_e6_2f_d0_fa_c4_1c_6a_24_c9_41_1f_4d_6d_dc_03_27_6b_ac_26_17_68_95_3b_d7_45n,\n 0x1d_e7_d3_df_97_d1_1a_08_11_06_a4_bd_21_b9_76_03_a7_6a_df_f1_65_cd_40_ac_74_7e_d4_9e_61_c6_11_f5n,\n 0x29_80_0f_b0_02_0a_e1_8d_4e_fd_8f_ac_1d_ef_5c_76_07_af_35_f4_e2_23_90_4a_cc_6a_14_d8_c6_d1_4a_c0n,\n 0x27_12_71_f8_50_f6_92_a3_50_3f_b7_21_24_b5_83_a8_1f_3f_0e_a6_78_9b_e3_a5_6f_fb_49_77_65_79_eb_25n,\n 0x16_69_4b_f3_7f_e4_21_34_0b_18_6c_bc_81_7d_0b_13_6f_97_2c_93_55_79_f2_da_30_0d_8f_3c_66_34_81_fcn,\n 0x19_cc_af_83_9b_cd_e3_fb_97_64_e5_7b_40_f8_be_03_6c_1d_0a_d6_dd_23_ca_f4_0f_0c_2d_ea_76_4b_45_38n,\n 0x13_45_bc_63_be_8e_3e_86_d3_ea_cd_cc_4c_f1_42_54_2e_0a_c6_60_f6_f7_5f_e3_4d_3c_7f_34_53_82_3d_2fn,\n 0x07_e7_33_e3_6a_63_b1_c5_4e_45_30_50_ae_43_07_8c_86_a1_80_3b_9b_c1_98_4f_83_6d_a9_e5_bd_e2_6c_f4n,\n 0x06_7d_f8_5f_c4_61_d1_e1_3b_0a_74_4c_4f_78_94_d3_12_6d_40_0c_0f_67_41_15_d7_64_a0_7a_05_3f_64_31n,\n 0x03_c2_02_5e_a4_ee_2c_19_b2_f8_d8_be_0a_2b_90_a1_d2_f4_34_53_51_5e_c0_42_57_ae_1f_c6_ce_53_34_afn,\n 0x2c_bf_1d_c7_af_58_fa_9a_db_8b_a3_1b_19_30_84_76_24_cc_4f_8f_67_cd_d8_bc_a3_a9_27_6c_1f_06_fb_b7n,\n 0x01_20_35_a5_21_9b_90_0d_ed_ae_c3_2f_62_cb_b8_5a_22_28_a3_e7_1b_53_af_d4_d2_fe_6b_3c_96_4f_91_fbn,\n 0x1b_8c_71_3c_90_d6_2b_36_73_82_c0_ce_eb_eb_e2_98_93_15_7a_cd_56_e1_07_55_d1_06_99_92_8f_35_05_aen,\n 0x14_47_5f_75_8d_5d_b0_1a_2d_e2_ad_d4_6c_40_5d_93_9e_b1_af_0a_b3_6b_cf_26_ff_93_e4_86_05_41_dd_56n,\n 0x21_37_76_f1_e0_fa_c8_55_f9_58_cb_20_aa_09_0d_4f_d4_7e_70_fd_0e_93_6f_75_10_37_fc_33_cf_9c_41_27n,\n 0x2a_cf_42_c1_ec_a1_a0_93_f1_01_98_dd_5a_16_bc_e1_6b_f8_b2_11_07_72_4a_94_af_f2_f1_90_90_6e_69_80n,\n 0x19_19_4b_68_b8_98_47_65_96_a9_e2_d4_05_6e_15_c9_5a_66_48_23_4a_bb_bf_9c_a5_92_cc_2c_53_70_33_80n,\n 0x0b_20_a1_d9_a2_47_00_11_eb_2f_81_80_21_54_00_b5_83_cb_bb_1f_d0_85_fd_53_bd_d1_c9_21_7c_c5_a3_b8n,\n 0x14_a7_d1_d7_06_5e_d6_f6_ad_72_a0_ef_3b_84_8d_76_03_4f_7a_95_d2_da_2a_06_43_3c_6c_41_60_ef_9c_8an,\n 0x19_14_24_16_e3_b1_68_ab_b9_9b_ab_c1_7c_e6_82_1d_95_a2_9a_31_d9_2b_f7_4a_12_2a_8e_fe_79_9f_9b_bdn,\n 0x2c_d1_57_1d_fb_32_ab_e6_e5_df_ec_83_71_f8_13_0c_f7_75_66_a9_ed_a0_6c_c8_b6_46_6f_e9_e1_b3_c5_28n,\n 0x1c_b1_eb_c4_b4_20_52_87_6e_83_04_0b_de_7b_38_02_30_f5_f1_45_f9_40_0b_5d_4d_71_36_a6_1c_6e_b4_58n,\n 0x05_c4_ab_72_cd_d1_de_95_41_96_89_66_1e_5e_73_5e_15_b3_ff_ca_ec_a1_fd_c8_66_9e_73_d8_a6_cb_c9_6dn,\n 0x24_c8_da_03_cd_8f_b4_97_e4_f0_45_00_69_b5_d4_de_b1_02_b6_4e_68_d5_88_97_72_48_3e_8d_0e_39_74_d7n,\n 0x0d_e8_19_58_05_70_6f_f7_4c_b2_51_cf_b0_ba_d9_b9_e3_fd_d0_59_d0_1a_5f_c7_c7_05_d6_09_71_fa_48_40n,\n 0x30_4c_e8_cb_3c_d5_51_96_23_52_0a_48_83_d3_57_92_25_6d_ca_0c_12_dc_1e_85_51_57_a5_9d_aa_45_08_f4n,\n 0x0f_36_b5_86_98_4d_19_59_a7_9c_38_a0_e0_64_50_ed_ba_00_3d_ae_b7_92_c8_d4_df_30_7c_55_c9_ef_a8_b1n,\n 0x1a_83_25_d5_54_80_64_6a_c7_fa_a3_ad_de_cb_2e_c0_ef_74_82_f1_0a_09_9c_5b_46_56_75_2e_24_55_18_69n,\n 0x2d_7f_67_44_d0_61_96_ae_08_79_f4_06_81_4a_ab_f8_89_07_35_05_de_da_84_66_51_fa_fc_8c_20_18_5a_ecn,\n 0x09_20_55_07_df_c3_76_72_dd_97_11_d7_bf_42_e7_de_29_0b_36_6b_5d_f2_36_7d_43_7a_82_dc_9e_08_66_81n,\n 0x1c_22_e9_bd_3f_23_df_c3_f7_3d_c7_3c_91_31_e1_6a_8b_07_68_18_fc_88_23_42_5c_cb_1b_73_2b_f5_49_3fn,\n 0x1c_59_76_23_37_50_07_84_11_d6_c9_36_80_d8_87_95_96_df_af_5f_92_d4_8f_d4_dd_94_ee_5d_29_c5_1c_a1n,\n 0x07_cb_86_c6_97_3a_bb_c6_9f_89_d2_48_d7_44_14_7e_26_69_0a_61_b6_e3_1d_10_e9_80_13_78_79_e4_26_73n,\n 0x0c_3c_98_80_a8_24_85_20_b6_11_ee_4d_f7_fd_cc_16_a6_6a_f4_5f_52_eb_01_04_57_57_91_07_dc_c9_9d_39n,\n 0x03_92_8e_6d_e6_6d_49_0c_ba_3a_1e_3e_36_65_12_39_19_93_8e_ff_a7_fc_4f_8c_9b_31_bb_de_e1_e4_79_adn,\n 0x03_40_f7_88_57_3b_53_6f_e1_e4_2c_7f_d4_09_d3_67_12_47_23_dd_a9_c4_b0_f3_b9_62_e0_13_76_67_e8_7fn,\n 0x03_0a_65_bd_5d_b7_9f_00_9c_c1_b3_fa_c1_ce_46_4c_4c_0d_54_33_85_25_2d_a0_17_b1_16_14_6f_e8_0d_82n,\n 0x2a_42_a8_02_de_90_85_d9_2c_3b_dd_40_86_37_1a_3f_17_ed_03_c0_8a_2b_c6_1b_3e_43_e0_53_93_57_de_14n,\n 0x15_49_a1_cb_25_04_35_69_9b_3a_24_67_f8_39_01_12_80_94_44_6a_6b_ba_52_6d_54_73_e8_24_1b_50_04_aan,\n 0x30_50_16_45_d7_f6_7d_6d_4e_1f_64_b9_5a_34_4a_85_bc_6a_6f_97_fb_36_1e_76_92_c9_6c_fd_54_a1_d4_14n,\n 0x1c_3e_a3_69_de_18_dc_dc_33_78_f6_1d_d5_63_a1_aa_f2_56_98_2f_ac_9e_a0_99_4a_3e_ee_26_c1_f5_d0_0an,\n 0x00_4f_2d_24_37_25_2a_0d_4d_9c_a4_c1_b0_1b_66_08_3c_70_12_81_c2_33_80_7e_74_49_10_b3_dd_b9_71_f3n,\n 0x13_2f_e5_29_e4_aa_bd_03_04_12_96_24_80_56_2c_95_c8_fb_3c_4a_ba_de_93_26_e1_d8_7b_ec_be_13_92_a0n,\n 0x19_fa_10_71_56_b9_61_88_6f_b9_d9_9e_c1_3b_cd_8d_0c_4c_54_4d_42_40_c1_f7_f4_3c_77_c6_3f_14_48_57n,\n 0x2d_5f_91_cd_3c_b5_52_da_c7_f7_84_3f_60_55_2b_de_86_f4_5e_8b_ba_ae_48_4c_6b_79_cc_ff_34_ac_5e_e1n,\n 0x2d_ad_d9_a6_9a_d1_46_e6_5b_ba_bf_ba_ac_33_78_af_9c_55_40_d1_7b_9b_a1_9b_b2_9c_48_c8_5d_bf_e7_1an,\n 0x03_c9_00_30_74_e4_50_20_92_12_b3_bd_16_22_da_61_c7_1a_ba_0e_8a_09_4a_76_60_be_1f_46_38_ea_bc_8bn,\n 0x0b_a9_17_29_27_1f_6b_81_43_78_bf_2b_84_74_90_d8_b0_6b_46_ca_31_cc_5c_4f_c7_4c_1c_b0_4b_71_cf_14n,\n 0x0e_e5_83_d8_17_f1_70_5a_c7_ac_0b_9a_e0_42_15_8a_d0_d5_ef_36_72_c1_d1_3d_c7_dd_79_4a_a8_4f_30_61n,\n 0x11_40_02_6a_5a_bd_89_c4_01_2d_2c_43_a4_78_b5_2f_bb_46_ec_08_61_ce_5b_3b_7c_1c_f6_9f_e5_c4_0f_62n,\n 0x17_6e_c0_bf_a5_8b_39_76_29_0a_c1_45_95_44_18_c5_77_ed_77_ab_87_fb_9f_82_28_17_5a_9a_d8_e6_f5_fan,\n 0x13_e5_89_9c_46_c1_4f_70_04_fd_0f_d3_76_47_6c_d3_4a_a7_d3_b1_34_70_fd_c5_23_2d_56_a3_e5_9b_47_ean,\n 0x16_73_0c_e7_66_f6_5c_06_cb_61_1f_8d_7f_4f_c3_d5_3c_66_62_ea_12_ca_45_02_bb_96_88_73_f3_e1_4f_86n,\n 0x16_5d_b0_eb_88_5f_fe_d5_f7_7a_55_7b_3e_b2_1e_f2_d4_8b_4a_7c_c6_22_07_09_de_00_e6_1c_d9_f8_f5_25n,\n 0x0c_42_82_78_c2_17_c1_e7_e7_6e_31_10_f7_e1_b2_6a_90_95_e8_c8_cb_c0_7a_17_17_14_e9_af_ee_26_70_f9n,\n 0x2e_f1_83_42_4c_59_0a_0a_5d_3b_8a_63_9f_37_e4_e7_7d_10_fe_9e_12_32_77_18_b8_ec_c2_b4_0a_2e_92_ben,\n 0x0b_bb_e0_9f_bb_fd_a7_b6_e0_6c_ad_86_8c_b1_a3_89_fb_a5_ca_29_9e_d9_54_53_51_c9_74_e6_12_f5_fd_d3n,\n 0x2f_42_00_3e_cc_ab_3b_ff_0d_ce_2b_22_a8_76_9a_5b_a1_a0_a6_f8_54_c7_3a_78_84_43_bc_13_e8_fa_5e_a5n,\n 0x05_91_13_aa_f9_28_ac_d9_15_4e_a9_29_5a_5a_69_f8_64_14_9e_c9_6f_04_09_67_3b_e8_60_cd_c1_ed_de_d1n,\n 0x1f_bf_aa_e7_7b_c0_60_fb_bd_03_ff_ae_ab_ae_2c_d4_d3_27_93_63_c5_e4_64_37_83_df_b9_a5_d5_94_68_25n,\n 0x25_b3_ce_f1_d5_24_c4_81_56_e9_a2_4a_a0_d2_c2_0e_d3_2f_b6_9b_4d_eb_e1_c1_2d_e5_0d_b2_46_e3_c8_05n,\n 0x15_e6_f0_32_9e_d4_e4_4d_03_23_f0_27_44_b4_f6_d0_32_1e_20_4f_d3_8c_99_cc_b7_2a_35_78_4b_94_02_6en,\n 0x16_e4_7f_64_2b_f1_3c_e6_6c_2c_2b_ca_01_a2_76_3d_70_4b_46_de_0d_7c_99_dc_b2_b4_80_70_7c_1a_3b_f7n,\n 0x1d_9f_84_8c_b9_df_db_81_ca_d6_2d_d5_fd_43_15_6e_57_c4_ba_19_4e_32_b4_21_aa_07_de_9e_0a_87_00_ecn,\n 0x07_0e_20_69_46_f4_cb_2c_2a_7c_5c_7c_0c_a8_4f_e5_3f_fd_88_42_79_25_9e_ae_ee_e0_06_27_dd_98_5c_fen,\n 0x0a_5f_91_ae_d1_15_95_0c_e6_34_8b_0f_0f_00_15_69_24_3c_84_00_41_b9_74_e4_fb_de_ac_cf_72_b1_9d_a7n,\n 0x27_73_67_47_79_5d_23_55_97_04_7a_57_b5_24_dd_4c_1e_d0_e3_f4_27_98_21_5b_a8_50_56_be_a7_65_54_0en,\n 0x01_67_c1_d7_64_79_10_69_53_28_2f_94_5c_8d_8c_b7_21_60_f6_31_04_70_a7_f5_16_5f_15_72_d6_c2_7e_a4n,\n 0x1b_ec_d4_57_d2_1b_a0_94_80_4c_47_c3_a6_88_73_4b_d5_43_b2_e6_d7_cb_51_ae_c0_ca_89_d6_c1_e3_c3_55n,\n 0x1f_43_38_6f_e7_39_e7_f9_c6_3f_bd_cb_b8_2b_cc_dc_d4_17_33_8f_ea_c1_ee_d4_2d_ef_71_50_d4_a2_13_58n,\n 0x2d_09_1c_35_81_75_58_3b_32_cb_97_c5_81_68_f3_2d_83_a6_8c_99_bd_fa_7c_20_08_d9_c4_54_b0_ea_de_16n,\n 0x01_72_57_c5_bc_8d_ad_57_ef_6f_66_cc_04_1a_16_06_35_09_00_dc_e1_84_c3_12_42_60_65_34_6d_bd_b1_ban,\n 0x0b_4a_dc_03_c7_bf_d3_13_90_2d_da_67_8c_2f_a2_51_52_2a_92_a7_fc_6e_4b_47_d4_f1_ff_98_ea_1f_21_c4n,\n 0x1a_f8_45_24_44_1a_c0_3f_a2_d8_b5_b3_91_a7_c3_71_f2_d9_cf_06_a0_90_05_fe_a6_e3_b7_08_cc_ce_2c_b5n,\n 0x23_ec_af_81_28_63_36_25_1a_1f_cc_5d_d4_4a_4a_b9_fd_39_40_a0_48_e7_71_ee_46_68_83_07_44_a5_a9_bdn,\n 0x18_7b_c7_03_cc_89_3e_2c_ba_22_fb_b5_98_c0_e7_78_c2_04_6a_db_e5_8b_3f_f2_52_d7_b6_35_ed_99_0c_20n,\n 0x26_0b_02_db_11_1d_63_99_8b_6a_f0_9a_81_92_8f_62_cf_c9_7c_4f_8c_ba_26_e8_28_ff_5c_05_7a_0e_55_f3n,\n 0x2f_02_32_a9_94_0c_4c_4c_dd_0e_44_e3_c4_78_5c_ed_14_ff_13_b5_f8_71_ce_2f_6e_e3_57_42_ad_05_0a_cen,\n 0x05_0a_dc_4d_5d_64_80_7f_73_0d_0f_45_0d_a5_51_74_79_a3_78_6a_3b_b2_c8_de_24_53_6a_7c_a5_de_2d_8en,\n 0x16_ab_8f_68_2a_40_83_d0_f9_99_f5_81_6f_41_cc_7e_db_ce_82_c0_d5_9b_cc_aa_89_c2_54_72_94_40_f9_81n,\n 0x11_27_fb_2f_0c_a9_cc_95_3f_bb_1d_47_93_47_42_63_a6_e5_1b_77_e7_2c_38_b1_14_7e_f8_65_41_5d_4d_acn,\n 0x1f_6d_04_ad_97_f2_f4_b7_10_f9_1f_52_26_a8_c5_5e_cb_c1_c2_5a_f4_e4_ca_8b_76_cc_4f_ad_24_ee_c6_74n,\n 0x14_1b_e5_44_be_4c_23_b3_62_5e_fa_88_6d_a6_5e_67_5b_67_99_02_8d_3a_7a_6d_de_1e_d1_49_fa_a4_96_78n,\n 0x1b_f7_85_f9_86_71_94_b4_5e_21_dc_76_b2_00_32_5c_e4_bd_66_4b_7c_e3_69_91_74_b2_8c_0f_b3_24_39_06n,\n 0x24_d9_be_7c_32_c7_e3_3b_f7_68_16_e1_9a_3c_1e_4a_88_7c_9a_e7_4d_15_a7_71_2d_ae_80_28_64_c0_86_51n,\n 0x28_a4_81_ef_85_15_85_13_20_db_9c_fd_e8_16_82_6a_2e_af_99_4a_ef_8a_55_1a_3d_00_22_d7_72_05_ad_6cn,\n 0x20_57_3c_15_8a_49_c5_47_31_fe_db_7c_49_4e_ba_7c_ca_17_97_5c_b4_a4_48_c6_88_bc_56_49_59_07_26_1fn,\n 0x0a_15_b1_56_59_29_72_64_1e_ef_29_70_90_4d_e3_e1_33_43_76_ee_64_bf_76_db_4b_f5_e7_c8_54_2c_21_c0n,\n 0x1b_2b_c4_a3_f3_f4_48_ef_bf_a2_1a_4e_41_d5_d6_e0_9b_73_57_47_39_b6_6e_ac_27_e6_5a_a1_fd_b7_8c_70n,\n 0x1a_79_a5_d8_3a_28_bb_c4_c1_13_60_00_38_13_5e_86_ce_61_88_df_4d_ff_93_81_55_30_15_93_d4_cc_73_aan,\n 0x1e_15_e7_f1_1e_a3_67_57_fd_cf_cc_55_8e_7c_6b_d8_c7_cb_84_84_38_8a_2c_95_25_8e_21_25_16_4d_f4_13n,\n 0x29_8a_03_bc_1e_dd_77_6e_c3_37_2c_82_ce_73_c4_4b_3e_12_e9_50_9c_12_44_59_f1_5d_9d_f7_83_95_38_16n,\n 0x0a_ca_ed_18_6b_d2_1b_6b_f0_18_84_c2_e8_0d_fb_84_69_9e_0b_d8_3b_77_70_d0_3b_91_8d_24_a0_12_93_16n,\n 0x25_29_c4_ff_b6_c3_9c_fd_1a_a6_e0_48_00_cb_59_ba_ea_a3_1d_a4_39_03_d3_38_5b_2a_b2_58_64_81_29_63n,\n 0x19_c4_7c_2a_37_27_8f_18_3f_3b_58_42_71_14_13_9b_3e_b8_2c_0b_89_0c_41_99_70_6a_d9_44_39_1f_a6_a4n,\n 0x0d_27_01_bd_fa_57_cf_91_1f_1c_d1_fb_43_5f_ee_06_8c_ae_d6_85_c6_36_38_22_49_dd_9a_cf_45_d4_c9_89n,\n 0x1e_58_e3_6e_0a_d7_b4_ba_d2_7a_c7_f7_6d_34_ab_49_74_88_d1_66_1a_44_4d_bc_07_cb_9c_72_19_40_9f_12n,\n 0x26_98_b2_f6_6f_b1_5f_3b_16_a7_e5_0c_bd_83_5a_31_fb_b8_3e_0b_65_98_2d_7a_7a_cb_29_71_cc_58_25_b8n,\n 0x1c_3a_8e_37_37_85_65_14_07_1a_58_91_b7_eb_28_6f_cc_83_6f_11_b6_29_c1_2c_9b_61_a7_6a_6f_6d_be_2dn,\n 0x29_27_ce_51_73_08_64_73_fa_44_5d_53_17_2a_05_aa_66_a8_f9_d9_a1_69_f6_85_c4_7a_a9_89_b9_e0_f5_acn,\n 0x25_aa_17_d8_24_58_0d_6d_53_32_36_41_2a_48_9a_a4_5a_a3_89_b3_d3_d5_5a_34_5d_35_66_3a_1b_14_3b_f1n,\n 0x0f_cf_11_12_da_cc_31_17_98_19_d6_65_74_a5_cb_8d_ed_45_00_3f_76_66_7d_34_c1_d3_41_53_d8_fc_a9_94n,\n 0x06_03_2d_6e_50_d0_59_05_7d_46_14_77_99_9e_fb_4a_ca_bd_1a_9d_a5_92_73_1a_40_48_ae_8d_19_b3_d3_51n,\n 0x01_e4_0e_81_9f_42_6f_ae_3d_bb_00_92_6a_7d_65_56_f3_0d_84_93_4c_ca_bf_99_e9_87_63_51_d1_71_6b_5en,\n 0x27_90_84_96_d0_90_6f_52_4c_25_16_53_25_10_98_cf_bd_c9_7b_9d_74_17_e4_37_71_0e_1a_7f_4b_80_d0_8an,\n 0x02_db_18_14_f1_43_5c_d0_7e_e5_4f_8c_32_05_c7_d7_62_62_cb_5f_c5_da_60_58_36_a0_8d_47_f3_fd_f1_34n,\n 0x19_37_7a_45_d6_a5_de_00_75_1e_a9_01_19_8e_1a_0a_cc_41_ca_8a_99_fe_ae_5e_ec_07_fe_52_33_d2_89_bcn,\n 0x2d_00_4f_c8_2e_3d_f9_a9_b8_93_21_82_34_58_83_27_70_ec_80_f8_75_89_5a_3f_fe_23_70_c0_aa_a5_cf_ban,\n 0x17_b8_36_25_6a_7d_e4_13_cd_cf_93_a4_c4_f8_fb_6b_76_97_5b_1e_fe_30_ae_ef_0a_c1_2a_83_b3_43_4c_0en,\n 0x1b_23_4a_28_da_b9_14_9e_2c_d3_9b_b3_4f_79_4a_85_dd_12_5f_33_38_3b_77_84_1b_91_31_28_cb_86_a3_fcn,\n 0x15_88_61_fd_76_bd_8a_58_95_0c_0c_55_d9_57_8c_9c_6c_3f_f1_ae_fa_88_80_3f_32_77_0a_db_1a_6f_17_a6n,\n 0x0e_ef_80_93_02_d3_14_15_84_28_56_18_b0_ff_2e_6a_37_3b_1b_e0_db_06_85_be_37_1b_b6_01_88_8a_ac_b4n,\n 0x1a_cf_3e_e7_6f_19_de_15_79_96_76_8d_af_af_e6_04_e1_85_bb_23_35_6b_6e_25_92_03_2e_b7_32_db_a4_4en,\n 0x2f_4f_55_f5_7b_77_1e_cc_15_81_35_26_d7_3b_52_b2_fa_1c_4f_06_55_17_b9_bb_f8_c3_65_80_40_e1_20_bbn,\n 0x06_22_96_4c_a6_5a_48_b3_0d_40_a9_fd_4e_8f_a7_57_fd_73_7f_02_04_59_e7_4a_53_3c_ea_55_82_90_72_bcn,\n 0x1c_8c_b3_49_b5_eb_a5_94_e3_e9_6e_e0_41_ee_b7_e0_96_fa_cd_42_1f_78_9b_d7_df_6a_ea_d0_30_cf_d1_ebn,\n 0x1e_f5_19_f3_b8_2f_28_04_69_c1_ea_7b_25_51_d3_a3_8d_3e_50_ad_2b_0c_52_ed_01_85_78_0e_83_47_06_97n,\n 0x07_1f_96_6c_5b_b8_71_11_e1_d0_f0_3d_17_e2_88_5d_df_50_b7_b5_da_c9_9f_2c_f9_c8_7f_25_a1_38_33_54n,\n 0x07_68_f9_4a_8c_c8_22_2f_9d_2e_b3_6a_ba_ea_e3_b3_51_ad_7c_8f_d0_75_97_1b_c9_5d_e6_c2_42_2f_f2_abn,\n 0x13_6f_b9_d0_89_17_0f_cb_34_3d_d1_f2_cf_25_44_68_11_8c_97_ad_2c_95_1b_6b_3f_e4_93_3d_5a_4f_aa_70n,\n 0x14_20_4a_d5_2e_17_ef_cc_8d_6c_3b_29_ce_52_20_a5_ea_8c_68_29_e2_a9_d3_3f_64_6d_f2_42_12_c2_ca_81n,\n 0x19_34_9a_56_f1_59_18_f1_e9_c6_c5_87_cd_23_bb_3f_93_3a_f5_83_32_2d_d5_c0_fa_61_66_cf_1c_d5_8c_6fn,\n 0x2f_fd_15_40_0e_3d_57_af_1d_50_37_55_eb_97_d3_31_81_4a_ae_9a_dd_47_64_bb_7e_95_18_16_e0_6b_4f_d8n,\n 0x00_18_80_d4_06_f0_43_52_ba_0e_70_d1_ea_4e_55_30_2f_23_93_27_e1_df_bb_0f_e9_fa_74_d9_47_c0_43_04n,\n 0x21_94_fd_04_a6_d3_e8_0a_04_f5_32_35_a5_f4_6e_8e_22_25_e9_9c_53_01_73_cc_28_fb_15_77_a0_eb_aa_4fn,\n 0x13_84_cc_dd_e5_77_42_28_1a_3d_11_7c_0d_bc_82_5c_b7_d1_b7_e2_b5_7c_0d_ee_65_21_d3_15_d6_0d_8a_11n,\n 0x0a_b8_0f_67_9a_df_87_89_e9_f6_86_15_f8_e6_5c_ad_e1_2c_9c_19_e8_b0_96_f9_d7_a5_8a_6e_91_55_af_c9n,\n 0x1b_e3_a5_57_06_d4_81_44_87_26_8b_f1_01_96_ee_80_00_9a_c6_9d_26_ea_a4_ae_6b_82_99_d3_fa_27_da_6bn,\n 0x1f_8a_78_89_40_44_64_27_7e_3f_a7_da_d1_43_8e_5a_55_db_2b_53_b4_6f_10_80_ab_25_b3_1b_53_8a_cd_d4n,\n 0x26_3c_85_c5_82_82_f6_56_ea_61_93_f7_26_41_aa_2c_f9_9e_e4_f7_e4_7f_1b_c1_bb_22_c4_6c_ef_ad_ba_een,\n 0x01_01_90_99_26_7f_f1_ed_72_4e_46_35_73_70_1f_4c_2d_07_43_37_b2_7f_47_40_60_dc_35_e7_2c_cd_18_a1n,\n 0x04_29_be_bc_43_0d_40_62_e3_87_33_61_9b_8d_3f_dd_d5_c2_6d_05_b2_03_ba_9b_cd_5f_b9_05_8c_75_45_f9n,\n 0x0a_03_e1_13_f7_4f_c0_ae_e3_e5_46_e5_93_7b_f8_c5_61_c1_22_74_fc_50_08_cc_63_18_0a_26_00_41_47_dfn,\n 0x06_88_88_73_34_f4_83_42_2f_47_a9_39_7e_45_66_6c_9f_dc_15_e5_08_fb_d4_fa_83_a5_e7_22_be_92_61_2an,\n 0x1c_ab_73_17_7f_ee_ca_8c_86_36_01_74_5b_40_13_8d_81_b0_c2_09_33_4a_ac_58_95_17_09_27_8c_cf_7c_3fn,\n 0x05_89_e1_12_f4_3c_97_9a_b3_b8_f1_31_a7_90_9a_28_4f_37_86_78_3a_92_05_27_1f_79_81_35_00_82_6f_3an,\n 0x08_1a_1d_79_b2_26_d0_2f_3e_dc_79_d6_75_6b_2b_78_d0_6b_76_77_fb_e7_bf_d2_e1_c7_3c_5b_05_5c_f6_f8n,\n 0x1d_12_6b_23_da_26_bd_26_2a_0b_a4_5c_b8_3b_78_ae_17_ef_cf_1a_a5_b9_74_78_d9_08_43_f0_a6_18_e9_23n,\n 0x19_d0_2c_ca_f1_f7_28_c3_5b_88_59_2e_30_0d_af_8c_6c_ba_6e_aa_73_34_35_2e_b0_47_88_5d_b2_2f_97_ddn,\n 0x1e_7e_21_db_f6_6d_a4_7b_76_b4_e0_25_bb_d4_38_a6_54_d6_65_ee_cc_ff_92_8e_29_dd_d0_58_7b_da_bd_ecn,\n 0x16_9c_a0_9f_61_d1_01_04_65_b3_d6_a0_4e_a6_f3_23_ff_21_26_b2_c5_13_f4_73_e2_58_a7_38_c3_4e_84_a3n,\n 0x1a_fc_1d_0d_b8_f4_d4_3d_32_19_33_44_63_40_43_bd_3c_d5_9e_c3_c9_e8_67_e5_8f_7c_83_48_9c_f8_e1_bbn,\n 0x21_9f_86_04_bf_a2_f5_ae_bd_19_6e_ce_21_fb_aa_2b_5e_9d_5a_62_85_5b_ed_a8_78_1a_fc_d6_68_35_7e_efn,\n 0x0d_b7_1d_9b_e8_54_81_33_a2_60_5d_71_3b_9f_50_cc_76_8c_1a_b2_82_43_03_b1_41_f4_b2_f2_74_c6_f0_98n,\n 0x13_60_3e_5c_d2_0c_12_cc_f1_2d_a4_f7_d0_4e_95_55_cd_a6_44_e5_d9_ab_d0_f5_41_7f_7b_b8_c6_c2_45_44n,\n 0x00_35_c4_35_60_44_38_9e_8d_8d_3d_84_61_92_43_b5_7e_c3_0c_ec_c3_ba_8c_7e_e6_6d_8e_d9_87_7c_40_d3n,\n 0x0b_a6_8c_56_af_0f_04_5f_ee_1b_22_66_f5_39_80_c3_1c_ee_55_18_7f_af_97_b6_12_dc_d9_30_cd_db_45_2an,\n 0x23_f4_75_9e_8c_f8_2a_f4_e5_1b_1a_31_23_3d_c5_27_7f_53_aa_24_22_43_5d_a2_69_8f_1b_65_a9_51_57_87n,\n 0x12_01_28_79_b9_f5_9d_ec_e1_ed_0e_03_b1_7e_c9_4a_6a_c6_f2_91_91_57_ab_97_dc_1d_5f_ec_6f_a4_f0_17n,\n 0x19_15_79_7a_54_b7_03_83_36_31_0e_46_e2_fa_a0_b4_8b_a3_e1_a2_d4_2b_8b_58_7b_ab_86_f8_0b_95_94_ean,\n 0x19_0e_d1_87_77_ce_88_aa_8a_d8_5e_8e_c2_39_d8_25_9b_f0_f5_1e_d8_99_63_39_75_9d_04_53_42_9b_44_25n,\n 0x24_e0_40_81_c1_51_9e_ac_39_90_43_9d_5f_86_f2_96_76_85_fe_86_b8_dc_37_a4_44_4d_5f_bf_2a_b7_01_b0n,\n 0x13_45_cd_ab_47_51_0f_db_e7_fc_38_9b_e0_42_56_33_5e_38_7d_3f_24_d2_aa_73_26_f5_93_99_a1_0c_85_fdn,\n 0x11_9a_3a_c7_80_3d_fb_da_55_64_dc_81_78_a7_9c_c1_ef_f7_85_97_ac_a6_fd_95_b3_db_bf_49_52_51_1e_7cn,\n 0x19_7b_35_96_d3_b6_6c_ad_ac_6c_c4_d8_8c_2d_a1_de_33_65_94_ee_48_a4_f2_e8_2c_ee_fd_9c_81_26_7b_49n,\n 0x01_57_40_cb_f5_b8_0c_05_8f_67_1a_b7_b1_4b_2e_0b_f3_b1_5a_44_dc_a4_d6_40_da_40_45_3d_0e_bc_cb_13n,\n 0x23_da_64_49_43_d6_f8_90_a3_44_24_9f_0d_49_97_02_83_80_11_dc_6e_45_35_c4_78_ef_c8_a0_e7_ea_1a_fcn,\n 0x23_44_f7_6a_1b_e8_f4_bb_a4_8d_9d_ec_02_fa_88_b6_ee_e0_1d_1c_48_d7_e3_7d_72_10_b5_a8_e4_71_28_1en,\n 0x2e_d6_f7_c7_b4_18_8a_cd_56_23_02_2b_46_1c_26_72_05_4e_f8_f6_9a_05_ec_58_fc_8e_c7_f0_a8_fc_60_85n,\n 0x0f_5a_91_9e_83_a1_03_cc_62_a7_35_02_81_9f_a1_63_49_4d_90_2d_7c_ea_df_61_3d_7e_0f_7b_56_ae_96_2dn,\n 0x16_85_06_fb_5a_e2_17_03_31_ee_46_37_08_ad_01_24_c5_0d_da_86_c1_ab_46_4f_13_71_1d_b7_a2_f6_c4_e8n,\n 0x06_50_64_ae_2c_28_46_b1_e8_c7_39_42_bd_b1_e2_b4_02_eb_97_a3_93_e1_8a_60_0b_b8_ed_bc_8d_02_9a_f0n,\n 0x17_10_ff_94_c0_79_ae_c5_58_9d_7a_04_87_ee_07_4f_fa_49_f8_80_ab_b1_4d_9d_dd_d2_73_9e_e6_ad_de_2bn,\n 0x2a_f3_55_4c_9b_be_59_5b_39_61_66_69_ca_19_84_c2_c1_43_d1_6f_9e_e9_ed_31_62_29_b4_f5_a0_a0_10_3an,\n 0x22_96_4f_c3_47_9b_20_e7_0b_3e_98_30_6e_c3_0b_f3_d5_12_80_56_b6_fb_52_5e_10_0f_68_43_66_c3_89_1an,\n 0x25_de_0b_4c_d6_1c_81_94_0d_0f_ea_87_d9_38_9e_b4_73_d4_69_f0_41_5e_ef_d8_1b_56_d2_04_8e_ba_cb_62n,\n 0x1f_d5_75_da_1c_53_52_da_ae_23_7b_0e_8f_76_72_3d_44_a3_41_3b_49_e0_16_ea_12_63_48_76_31_0e_db_38n,\n 0x05_33_b5_6a_f3_29_97_63_50_64_5c_7c_b7_fa_29_c1_e0_c3_b5_d8_80_e2_5f_5a_52_77_4d_05_6e_96_58_acn,\n 0x16_7d_88_5c_64_5b_d9_cf_b4_a2_d6_3d_57_26_80_00_b7_3d_88_39_86_16_fb_db_e5_6f_23_1b_8b_2b_c8_25n,\n 0x0c_c2_f2_43_dd_60_cd_41_e0_4b_24_30_c9_6a_be_40_f2_1e_3f_d1_09_e7_a1_94_61_31_88_05_16_bf_86_f8n,\n 0x03_41_71_5b_cd_52_b7_5e_84_c6_0e_dd_47_29_26_11_c4_70_3f_8f_81_ab_b4_5f_58_f8_6f_f7_89_7e_ee_12n,\n 0x1c_cc_6d_83_01_ac_14_bc_b7_d8_cb_9f_ee_c2_28_f9_c2_ee_bd_ef_57_78_fb_88_e6_95_71_37_4f_2c_24_81n,\n 0x26_d5_4c_fc_d5_1f_1d_76_c8_a6_f6_7f_37_df_e4_cb_53_65_e3_30_17_fb_4c_d4_d5_aa_df_ea_67_2b_3b_88n,\n 0x24_45_31_34_40_a2_0b_29_65_0a_00_e2_ef_a7_43_2e_cc_cd_21_8a_8b_11_1a_67_e0_ec_28_c5_59_be_72_c3n,\n 0x08_28_7c_d7_09_9b_71_8a_47_3e_3a_2d_bf_f7_35_4e_6f_56_a5_4f_86_0d_15_33_b2_8a_0c_03_40_75_58_b7n,\n 0x26_c2_46_28_35_6a_67_c0_a4_50_cf_53_f6_04_53_de_fa_58_0f_fb_ec_52_95_da_c6_f2_6d_87_ca_67_a7_1dn,\n 0x1d_1c_f3_ee_a9_d6_f2_3c_17_22_07_12_41_36_7e_e8_b0_55_60_a7_af_1a_82_5f_e7_88_58_76_92_09_1a_a4n,\n 0x29_a6_cc_34_0d_c5_09_32_1a_8d_b9_9a_1e_4a_6f_92_ed_22_51_87_18_e0_50_94_6a_21_1b_9b_0b_03_50_91n,\n 0x22_b0_47_2d_8d_18_e2_20_7c_7f_aa_81_9e_64_6a_af_fe_c0_28_3c_06_cc_cb_04_55_48_99_c2_8d_dd_b3_85n,\n 0x0a_ca_63_7d_3f_71_39_3f_5c_b5_d0_1e_08_37_78_f5_19_b8_21_ef_37_e1_33_5d_65_d1_4b_2f_ad_55_55_68n,\n 0x0c_c0_6c_dd_a9_bb_ac_58_a1_e1_62_ef_5c_91_0e_d9_fa_98_61_16_3b_5b_ff_62_77_65_b6_de_8e_1e_97_19n,\n 0x21_c5_47_72_8f_c9_64_c1_7b_65_a6_01_76_da_2a_1a_82_92_d0_d5_03_dc_16_a5_c6_05_13_bf_88_86_3c_44n,\n 0x08_51_2d_f5_2d_8a_94_31_9b_cc_6d_aa_9f_81_48_53_e4_bf_58_f5_7d_16_f5_79_97_eb_61_d6_a1_9b_ff_bfn,\n 0x25_c0_d9_fe_b0_c0_2a_64_b7_53_bc_a5_7c_c6_82_48_a5_de_c4_14_9b_e2_b7_59_bd_db_53_b6_f7_59_3c_39n,\n 0x23_52_d3_94_4f_a6_1a_2c_4e_d5_c8_4e_c3_18_fb_ba_e0_5e_b1_02_07_56_12_c2_6b_0f_38_67_0e_69_99_5en,\n 0x24_bb_39_3d_ed_b3_f8_11_4a_cd_c7_7c_da_2e_74_a9_7f_f8_cf_89_d7_51_fb_fc_d9_f5_2a_42_87_44_17_63n,\n 0x03_3b_a0_91_bc_66_5e_26_8b_65_a8_f2_27_8a_b3_11_3f_8c_4a_e9_b6_a0_ba_cc_b4_b8_40_96_9a_3b_4f_3bn,\n 0x21_cb_4b_44_5e_8a_57_9c_73_43_6f_6e_08_b6_b2_48_7a_d0_f5_c4_70_6f_0d_dc_95_45_fa_62_ea_02_24_b3n,\n 0x04_a9_25_ae_34_26_0d_fd_eb_17_f5_c7_93_e4_b6_72_b8_f5_c0_da_69_f1_6b_fb_29_40_39_26_e8_d7_d5_0dn,\n 0x2d_f4_26_67_61_0a_6b_c6_60_2a_ba_26_74_62_66_87_70_79_dc_34_5a_79_f6_d6_73_d6_4f_b2_7d_7f_f4_99n,\n 0x17_99_34_38_6a_64_23_cd_b3_a1_09_50_fb_65_d1_c7_77_68_12_ee_19_c8_13_f5_a6_72_02_bd_f3_6c_98_07n,\n 0x0c_0f_3c_c0_64_3c_90_53_e7_e8_7a_1e_d5_90_de_a8_a7_0e_6d_5e_bd_90_75_43_c9_56_1d_a4_ee_9f_cf_63n,\n 0x05_1a_85_8d_ef_c0_40_ea_f0_84_7b_c5_71_4f_ca_3d_63_77_57_09_d5_48_6a_99_5e_93_33_61_84_fe_0a_a8n,\n 0x10_a0_da_93_f5_e2_4e_02_e1_da_3b_70_3e_ec_e9_7f_d3_a0_8f_43_a0_47_6c_fe_fd_70_37_2d_62_74_fa_47n,\n 0x2d_7b_eb_40_67_84_0b_65_45_69_35_fe_80_8f_57_cc_97_1b_6f_ef_b7_e0_9e_c9_13_36_10_3e_2f_b0_72_b3n,\n 0x13_f1_bb_b6_a8_50_cb_b5_36_a0_19_7c_01_6a_46_72_3d_73_87_e9_91_b6_7d_58_a8_06_5c_3e_4d_c1_8c_55n,\n 0x04_1f_d9_80_97_1d_48_97_e5_e3_f4_2f_43_42_db_10_e5_17_f6_39_85_5f_ba_f2_1c_0b_95_90_b2_3b_d8_d8n,\n 0x09_63_69_27_f5_b3_49_d2_90_06_70_29_f7_40_50_c9_75_0e_f5_72_69_14_24_a8_a0_a0_16_63_a4_5c_50_31n,\n 0x2a_f3_6e_70_40_01_f6_02_3a_cb_e0_75_76_37_f6_cb_0f_ac_ba_8e_05_15_b0_df_5e_b3_17_a1_dd_0e_65_bfn,\n 0x2f_97_55_8f_e6_f6_00_41_09_ac_46_58_60_9a_6d_2c_d1_b2_2e_5d_c0_99_a2_ea_13_2e_88_08_7e_72_cc_a0n,\n 0x23_cc_4c_0f_96_eb_91_52_44_74_40_a5_5e_3a_3d_0b_e1_ab_c8_38_34_d9_fe_08_73_fc_9d_71_4b_0e_26_d0n,\n 0x2a_5b_6b_d8_88_a8_a3_65_78_d8_62_5f_5b_77_e5_27_ea_06_db_8d_c1_b5_47_96_d8_0f_b1_c7_db_29_3b_90n,\n 0x27_22_0b_e3_7f_22_3c_82_ef_31_57_df_59_6b_7c_3f_21_bc_c0_3d_e8_c4_ab_8d_7f_1d_5b_aa_af_63_8f_0cn,\n 0x09_b9_2d_05_c0_59_08_c5_d9_aa_f4_e8_d2_34_48_1f_96_84_06_6b_ec_0f_47_8a_6f_7f_41_e4_73_8f_94_c2n,\n 0x10_36_86_d8_4f_62_09_57_2c_db_82_9b_7a_a6_79_62_be_01_75_28_99_dd_b7_17_83_1d_f6_59_c2_e2_f6_0bn,\n 0x23_b6_27_23_d5_8e_d5_c2_c6_ba_81_83_83_ac_d3_96_4c_f3_92_43_28_8d_59_1a_4b_a0_80_3b_15_b4_87_35n,\n 0x18_87_0f_43_6c_cb_65_a0_e1_dc_5e_68_37_24_84_74_ae_52_fd_22_6b_17_92_21_bb_fe_73_f7_47_ea_e1_39n,\n 0x02_86_91_d2_f0_c3_36_14_8b_5b_5f_1c_5d_c0_6b_42_2d_34_07_17_05_f9_a3_3f_af_26_13_c9_07_f3_32_5dn,\n 0x11_91_fc_63_b7_9d_85_ed_ac_a6_a2_7d_88_e9_2d_40_d8_97_cc_0a_d0_52_13_6e_60_b5_bd_0a_8e_56_02_82n,\n 0x16_68_0b_82_f6_e7_55_d8_b4_19_d1_e3_03_20_34_57_b5_47_0d_8d_fa_21_4d_02_35_79_cb_6c_1d_09_a3_b6n,\n 0x18_0f_d6_5f_8c_73_7e_7e_07_fb_d0_e7_64_6c_15_41_c8_c3_4f_0b_d8_a1_e1_62_3a_3a_0e_38_3c_a4_22_37n,\n 0x06_c7_ac_54_dd_40_d3_89_1a_14_b4_8e_74_2a_06_e5_87_cb_df_b6_5d_ff_4a_95_5d_a9_c7_1d_15_22_41_b2n,\n 0x2c_65_c9_5a_72_57_13_73_a6_ab_7a_18_b7_f4_39_2c_1a_ef_29_6e_b5_81_54_1d_87_6b_ab_6c_3b_fe_6d_afn,\n 0x0d_9c_00_08_a4_f0_72_14_c2_4f_d0_e7_33_86_4d_7c_57_f4_e1_3c_04_0c_31_92_3b_de_3e_92_88_55_2b_c7n,\n 0x12_d3_a0_4f_34_39_bf_85_b6_52_52_21_a3_f3_14_a2_66_3b_9b_84_ee_29_0e_48_11_69_da_b2_b0_a4_8d_0en,\n 0x2c_75_ef_5f_ce_e2_92_d0_5d_ee_7a_7e_a2_7e_eb_e8_7b_ed_fe_65_82_64_4d_ba_0f_b5_11_8c_fd_f2_55_ebn,\n 0x17_c0_13_30_bb_57_0b_1c_a9_97_0d_58_72_c1_aa_ab_8c_da_24_b3_30_e9_4a_2c_95_d1_25_49_16_82_83_e3n,\n 0x03_5f_a2_65_ba_78_ef_ec_1b_38_9d_50_f1_88_01_91_c3_5b_d4_02_97_7c_50_d2_52_89_2c_70_ff_3a_66_f9n,\n 0x14_6a_64_8e_47_15_88_02_e1_fd_7b_6e_21_15_61_de_3c_e1_0d_f6_34_73_c2_54_ed_2e_39_94_79_6f_3b_28n,\n 0x05_c2_f2_d7_31_8f_91_f0_39_8a_b5_41_c7_2b_9a_be_4c_d4_81_05_98_bd_0a_fb_23_0f_cd_ca_28_f0_dc_9cn,\n 0x1a_14_ba_c9_26_bc_80_4f_aa_b0_ad_62_fa_21_35_83_87_22_94_ff_31_da_73_06_e8_a0_92_eb_07_0a_cd_47n,\n 0x08_83_cd_6e_7d_be_3b_b2_93_20_db_1d_a1_17_61_8f_f9_f7_61_71_3b_7b_07_81_4f_4b_ba_d7_16_10_d8_9dn,\n 0x06_f9_8d_2b_be_b4_5a_d8_2e_76_24_bc_3e_38_7a_1b_0d_81_8f_cc_94_ce_9d_96_f4_e7_3e_80_ca_a2_3e_55n,\n 0x0c_2e_c9_8d_c0_ee_67_6d_86_2c_c0_5b_09_e7_d7_43_89_f6_84_4e_f4_62_de_33_6f_6a_8b_69_3e_56_8d_96n,\n 0x25_51_91_cf_a8_33_cd_6a_86_2a_c8_69_e5_20_57_5e_8d_a7_0d_a3_0e_c9_70_65_7c_38_78_1a_7b_00_26_41n,\n 0x26_36_c3_de_1d_d7_79_e5_57_7d_e2_14_b3_e6_c6_35_17_11_e9_cc_13_48_db_c5_53_be_1c_8d_68_b8_b0_67n,\n 0x06_43_70_37_93_72_18_fc_f4_e7_3c_e9_b3_38_ba_ca_0c_3f_e9_48_c3_98_cf_9f_cb_a2_5a_c0_2e_65_29_56n,\n 0x10_08_55_02_84_34_01_74_d1_e4_7a_c5_a0_27_79_33_11_c4_28_67_e3_b7_18_b2_4a_47_89_ac_fb_7d_6d_c9n,\n 0x15_2b_99_15_9e_87_dd_6e_68_1a_ae_f3_8b_f7_29_54_19_bb_87_db_5f_9f_b0_cb_f3_73_20_ec_72_6d_44_8en,\n 0x0d_38_2a_de_9b_28_1a_2e_72_6c_b9_6d_b5_4d_26_f4_33_25_88_18_75_3b_88_e2_66_28_0f_74_d8_dc_a8_06n,\n 0x0f_54_4e_24_59_e6_a6_36_d8_da_23_83_4e_31_7e_a9_ad_e7_b2_a0_7c_4a_b9_4c_36_8d_a3_56_cd_88_4e_6dn,\n 0x2a_61_22_af_7c_1c_f2_94_6b_33_73_5d_2a_9f_50_20_cc_5d_d8_66_95_29_e7_7d_00_69_db_36_4c_cb_08_can,\n 0x2b_d7_10_63_8f_a0_9f_a7_0c_b0_aa_b6_bc_de_56_ca_ca_eb_11_aa_9b_ec_68_8c_03_3e_f7_83_0d_d0_cd_07n,\n 0x17_e1_72_b0_3f_25_c9_8e_96_80_cd_0b_ba_cf_19_33_a9_42_d8_34_d9_45_fb_98_80_fa_e9_5d_25_94_93_9en,\n 0x07_59_ac_c9_cb_97_5a_ef_b1_8a_83_3f_f4_c8_4d_f8_34_6e_f6_3c_4e_b6_7e_22_0b_11_b0_f5_35_0c_63_31n,\n 0x22_9f_41_e1_53_a4_40_9f_a2_c0_c7_c7_58_11_81_3d_8a_71_93_0d_a6_c8_b1_b8_82_7a_a6_48_bd_ce_a6_3cn,\n 0x0d_31_53_d6_d1_44_0a_a8_e8_dc_0b_f1_05_86_67_a1_8e_59_31_af_e2_4f_a9_0a_c1_91_1f_e3_22_d3_d9_f7n,\n 0x19_8a_6f_17_9f_92_ba_42_74_90_fb_90_b8_cf_34_55_f6_9f_02_b7_56_e9_8e_b0_7d_46_01_a5_2c_77_a3_3cn,\n 0x29_c2_be_07_e3_0d_93_dd_92_7e_80_aa_49_c4_4d_f0_db_b5_f0_50_6e_96_67_6d_2d_4b_1a_91_57_0b_c7_e4n,\n 0x13_e7_5b_09_5a_d2_1a_c9_d1_07_b2_a7_f1_e6_20_88_97_42_40_54_9c_0b_b4_e7_d8_3c_e4_63_0c_da_bd_cdn,\n 0x18_6d_1e_26_c4_e4_15_c8_aa_b3_05_f1_62_f0_0d_8a_77_54_cc_1a_7a_4a_5f_2f_31_8b_74_37_46_5c_a8_69n,\n 0x24_46_2e_17_b2_b3_ff_39_12_d0_e4_1f_17_50_cf_f1_69_80_6b_c1_58_64_8d_a8_22_e1_bc_9f_62_12_88_6cn,\n 0x04_c8_ff_3b_9a_17_4f_c0_6d_3b_33_02_ff_57_c5_10_ad_38_58_0c_35_f4_e3_b5_af_79_e2_40_55_66_2b_c2n,\n 0x17_4a_26_f7_9f_26_fa_7c_4c_26_82_ce_c1_4d_a7_0a_ed_49_fe_7c_75_77_0f_87_a5_2b_5a_67_24_13_28_9fn,\n 0x17_94_c8_0f_a2_06_e9_98_62_d7_e1_a7_53_d7_75_4f_6f_17_79_58_1a_85_20_1f_d4_6a_5b_fb_7b_aa_95_2fn,\n 0x02_5b_46_32_d2_97_70_66_7d_09_f7_9c_33_bb_2a_8a_5a_f6_6a_44_9d_6d_39_f6_fd_be_63_c9_76_e1_ca_11n,\n 0x11_ad_f7_de_f9_6c_53_db_df_fd_06_a8_5d_63_14_5f_0d_d2_39_50_63_e8_d3_32_be_42_ea_99_ca_36_85_47n,\n 0x01_b9_28_b7_f2_93_be_ab_03_23_50_dd_3e_a4_c4_b4_8c_4a_04_fd_ff_08_2b_4f_54_2e_09_4d_97_3a_39_9bn,\n 0x28_11_87_bf_98_a4_c5_a6_bf_90_20_30_92_c6_ae_cb_9f_c2_e5_61_97_4f_79_f7_48_1a_a6_d2_99_18_32_ban,\n 0x24_71_68_cd_8f_c0_ee_2c_c9_fe_a5_61_bc_4e_01_ad_3e_a5_78_74_75_6f_9d_9d_73_4a_7f_bc_45_c0_00_b9n,\n 0x23_09_7d_74_12_5e_04_27_8e_5f_d0_e1_4f_52_ee_19_36_b9_01_c2_de_64_a0_5b_2b_80_99_1a_1f_3f_19_e8n,\n 0x2c_af_df_ff_64_22_23_93_99_75_3a_96_11_0f_ea_a8_a1_56_26_4b_bf_59_01_3f_1d_81_95_a3_08_38_e6_49n,\n 0x1a_58_20_28_0d_1c_c6_6e_2c_bb_99_32_0a_29_d8_0e_78_44_57_63_77_63_6d_8c_c2_2a_5b_89_83_8b_5e_81n,\n 0x04_39_af_19_1c_82_47_75_b8_6b_6a_e9_cd_de_d6_9e_0a_c5_24_d2_d7_95_3b_ce_65_dc_54_e1_16_54_6a_47n,\n 0x05_92_16_dc_e0_6b_d7_97_a9_87_09_ad_2b_90_c1_5d_1f_9f_78_17_7f_0a_d6_6d_50_00_97_25_ed_68_64_b3n,\n 0x17_45_3f_d8_ce_97_c6_00_79_f3_d0_0a_a2_9b_e8_b9_b9_0c_bc_c9_a2_16_1b_7c_ef_52_c5_99_c6_28_6c_d2n,\n 0x02_3a_1a_c8_f3_a0_7c_86_e9_31_84_c5_f0_82_be_51_a9_8f_70_6b_6d_14_67_dc_e3_44_bf_e2_66_39_7e_c7n,\n 0x13_b7_bf_d3_ad_51_91_90_d4_9b_eb_27_b0_0d_f3_09_91_fa_d4_0a_69_4e_f0_df_12_e8_9d_61_72_63_eb_98n,\n 0x03_d3_75_46_14_72_28_b5_fa_f9_5b_a0_80_b2_b4_02_26_a5_88_10_46_32_08_b9_b3_95_66_f0_73_16_3d_fdn,\n 0x05_f3_bc_fb_8d_dc_91_78_35_43_0a_22_e5_0c_fb_51_39_6f_15_24_2a_5f_d0_c7_e3_ac_15_38_00_4d_19_een,\n 0x0b_75_55_8f_92_56_7f_c1_ec_54_e9_95_4a_33_ef_af_bf_51_86_6a_58_94_a7_65_52_d1_34_95_23_cf_65_ffn,\n 0x09_41_51_83_df_10_31_da_d2_32_97_c3_34_ef_7a_25_58_19_b7_d7_43_65_be_4f_35_3a_88_b4_27_d9_06_97n,\n 0x2d_c2_c7_f1_9b_50_24_31_5c_f5_b0_c7_65_46_f9_43_2e_06_8e_fb_50_dd_37_c3_95_fb_87_44_77_1c_0e_34n,\n 0x11_5a_5a_c1_48_ff_0c_29_90_12_20_bf_5b_9c_bd_3d_5d_e9_a9_02_c8_c6_ef_d0_2f_7a_92_cb_1d_4e_da_5dn,\n 0x1e_c7_89_42_eb_0f_ed_16_8f_be_55_b7_30_67_5f_3d_df_ca_b6_9c_12_2d_9f_6c_a2_2f_7c_fa_72_28_0b_a2n,\n 0x24_bc_46_0c_69_72_57_bb_30_55_2b_45_ad_37_31_39_87_73_9e_25_07_9c_28_42_dc_df_2f_97_4f_9b_b6_86n,\n 0x27_8a_2b_29_bd_e5_4b_5e_1d_0f_87_21_6d_e4_8f_51_d4_df_a2_84_55_5e_bd_7f_e7_f3_dd_dc_23_4d_1a_5bn,\n 0x10_f5_c4_b0_2a_f5_08_77_7c_4c_d3_cd_0c_6c_11_f4_d6_79_fb_3b_0d_7a_52_69_85_93_bf_50_cf_20_3c_b4n,\n 0x2d_69_53_24_f8_85_44_58_40_f5_26_b7_1e_51_9f_29_5c_fb_0a_6e_4f_24_14_5f_95_2d_8b_af_85_72_f5_73n,\n 0x18_11_35_27_53_64_34_b6_31_fb_37_77_ac_73_3a_b2_50_dd_be_97_1d_a5_0f_13_fa_6c_f2_6c_9e_05_bd_1en,\n 0x04_07_30_e3_68_4e_39_1d_5a_16_6b_54_87_ef_2f_a4_2a_9e_fc_15_46_29_ce_41_3c_98_9e_fe_2c_87_85_92n,\n 0x1e_bb_21_da_e6_af_4d_c7_d8_0b_d2_bb_93_89_82_c2_15_ca_12_4b_15_e0_79_78_83_af_2a_80_ad_ec_4a_12n,\n 0x0c_68_02_2e_b6_3c_b3_a7_38_59_b5_77_b5_9b_17_e6_f8_36_17_6c_59_5c_6a_1f_da_12_4a_05_ec_ef_c1_0en,\n 0x08_8f_4a_9a_f5_d6_68_47_5b_ba_a3_56_10_bf_ac_57_90_e1_03_ef_53_b9_a1_b3_ab_db_be_29_3e_56_f5_aen,\n 0x13_25_e2_e8_4e_28_1c_aa_e8_7f_90_5d_f7_19_eb_66_51_73_fc_82_cf_ce_43_74_3e_b3_f0_d1_fc_cc_98_b4n,\n 0x2f_3e_a3_a2_2a_56_db_97_0c_bb_ed_aa_fe_9d_85_f1_4f_02_45_68_89_b6_4a_b7_12_4b_24_79_97_8e_d3_een,\n 0x05_55_64_b7_83_1a_cf_d8_f4_6d_f9_6e_f8_19_62_2a_44_62_bf_e8_28_1b_05_e9_55_57_59_81_67_ee_9f_30n,\n 0x08_c2_9e_9a_22_ec_7f_02_44_92_73_a3_51_36_94_9b_73_de_66_83_4e_3f_01_5f_46_89_04_3a_ab_34_10_15n,\n 0x21_2a_65_49_2c_6e_29_92_48_41_60_e5_e2_f6_fe_8f_ec_75_81_25_66_13_b0_5b_8c_d4_23_7e_a5_96_dd_a3n,\n 0x20_e6_29_bb_5b_6c_1e_f0_7e_fa_2f_c1_f8_f6_3b_12_aa_92_bf_b4_2e_38_e4_83_35_db_3a_df_26_74_16_fcn,\n 0x04_08_6f_d6_c2_12_8b_11_a5_aa_58_fa_2a_8b_25_ed_5e_57_c5_b6_a3_df_65_34_83_9a_81_72_99_ce_77_13n,\n 0x06_52_45_cf_59_14_8e_f3_cf_92_3d_28_66_e6_f1_f6_1e_a5_4e_6a_0e_65_0b_6a_b8_c9_bf_94_dc_f1_e9_a3n,\n 0x0b_6c_1b_1b_ad_c0_0e_60_dc_7e_28_6b_f1_b7_61_98_e6_1a_06_3c_fd_c2_63_0f_75_65_06_4a_f1_79_fa_54n,\n 0x02_3a_38_29_de_fc_e4_4d_e2_81_9d_be_dd_cd_9b_d1_7c_c1_cc_24_d5_ef_d9_43_45_35_2d_15_3c_89_80_97n,\n 0x1b_51_d5_0b_9f_2a_1c_e0_39_e1_bf_33_a4_39_5f_69_3e_12_cb_a9_aa_5c_ea_f5_fc_0c_62_65_ea_44_6b_dfn,\n 0x0a_da_2b_8b_f0_69_b0_a8_62_2b_e8_5b_ec_5c_c1_50_24_75_bc_c9_95_a5_68_70_23_ea_33_d3_a9_49_38_2dn,\n 0x08_32_62_0a_35_5e_13_1a_47_9d_16_3b_d7_02_e2_e9_6a_ab_36_88_f8_18_b5_4a_d3_78_76_4a_e1_a2_d3_ccn,\n 0x01_dd_7c_f5_11_02_ea_8b_10_48_d3_df_ca_64_93_08_d5_9f_65_f4_f3_70_be_00_72_6c_f5_c8_e3_a7_2f_c5n,\n 0x22_cf_9e_ad_d9_58_09_35_f0_2c_d8_a7_88_97_8c_53_bb_4c_d7_80_b2_62_c7_aa_0b_eb_67_de_f5_d1_97_5en,\n 0x17_e3_b5_60_55_16_db_11_b6_25_12_34_8f_8e_7f_20_6c_2e_71_fd_57_a7_bd_9f_e9_68_32_af_6b_f7_21_5bn,\n 0x1a_ad_1c_bd_d1_85_bc_5a_2b_bd_ce_ef_57_0e_db_98_65_20_eb_92_bc_e2_b2_65_ab_88_64_c5_1a_c4_89_d3n,\n 0x28_d5_ec_ed_9d_9e_55_15_d0_c2_9b_80_0e_33_3b_f6_66_62_a8_b5_b9_83_98_56_e4_09_42_22_df_b4_e3_d3n,\n 0x15_66_0d_8c_93_6e_1e_ee_ed_b1_04_37_c4_ca_e5_44_db_c1_b9_be_0f_dd_63_9f_ef_fd_02_46_a3_13_e8_86n,\n 0x1f_5e_8f_3f_71_5c_ba_0d_ba_6f_12_71_e1_cc_89_40_b3_73_05_24_6f_ea_62_aa_7e_16_c3_01_c8_9f_e3_e6n,\n 0x03_bc_3a_13_1b_ce_a5_b2_f4_dd_b5_cd_58_f7_1a_92_c5_49_73_da_67_f3_b6_ae_eb_9c_2b_2b_1e_d3_26_28n,\n 0x10_98_9c_21_81_5e_81_5e_36_95_b1_e8_6e_ac_0a_d5_e6_84_68_f3_70_66_14_2d_04_2d_95_1a_fa_01_36_09n,\n 0x13_a1_47_96_be_2c_62_bf_ce_f3_89_ac_cb_50_95_2a_46_c7_56_9e_00_92_01_96_5f_13_22_3a_77_fe_ff_88n,\n 0x0f_30_71_48_b7_69_d5_a3_aa_0d_70_b5_45_14_d1_de_50_98_e0_70_da_b9_86_c0_2c_d9_10_05_c3_7a_93_85n,\n 0x1e_72_0c_54_2b_83_1a_97_88_60_ec_a8_80_ad_52_22_10_56_5a_06_58_84_b8_2f_dd_9a_ba_ed_3d_22_4b_99n,\n 0x13_69_81_fc_4f_37_a5_dd_bd_57_a2_84_38_eb_00_3c_a7_ff_01_09_b3_49_c2_b3_11_44_47_bf_e6_42_0d_5fn,\n 0x23_c0_f4_dc_a7_97_a7_ff_ee_d6_18_5b_62_70_04_5a_e9_60_f8_0e_1f_fb_de_d2_34_9f_78_57_de_fc_c5_e6n,\n 0x0c_ad_ec_35_32_ee_f6_e4_35_65_64_36_bd_f7_ec_56_85_3e_df_2e_cc_1d_ca_b3_3e_58_5d_7f_9f_33_f2_15n,\n 0x1d_3f_d0_cd_dc_a9_67_49_c0_e7_6b_10_94_74_7f_66_e8_22_bb_07_a1_a0_11_50_6d_19_8e_b8_0b_83_14_21n,\n 0x0f_a4_bf_57_51_e0_5c_b1_87_9a_7e_9d_1b_e1_8c_0c_fb_07_0a_e2_e5_43_65_03_7b_f1_52_b4_5a_c0_85_efn,\n 0x08_01_c4_50_0a_51_1b_5f_9b_6f_0b_cb_6d_eb_2d_08_98_a3_ee_9d_97_27_cf_02_7b_b1_7b_ce_d7_99_22_63n,\n 0x13_b2_57_c8_b7_19_4f_0c_cf_cd_85_9b_03_f7_45_1c_de_83_14_79_81_15_ac_1d_e5_98_1c_cb_ee_a5_8e_56n,\n 0x0c_8e_8c_b1_35_dd_38_11_20_08_73_76_a0_3c_38_6e_67_87_10_00_da_2b_1b_c0_2b_e9_51_33_0f_7a_56_70n,\n 0x16_57_62_ac_8b_ae_66_f3_f3_80_7d_d9_25_a4_33_4e_87_0a_9b_88_56_28_cb_7b_c0_b8_b7_cb_94_1c_07_0fn,\n 0x04_25_43_55_6c_32_5a_58_e3_ac_75_3f_4a_5a_ec_40_d3_c7_39_26_e9_e3_b0_a6_2b_92_a5_b9_20_c4_7c_c0n,\n 0x10_88_41_37_e8_66_00_bd_f0_6f_81_d7_90_45_ea_c6_c3_4f_58_ad_68_7b_79_9c_84_9d_2d_12_af_b2_b0_05n,\n 0x24_3a_a9_a7_d3_47_8e_b7_3f_c5_c1_10_7b_39_be_cd_98_08_c6_e5_e4_55_33_a3_b2_67_ce_a6_12_a3_bc_10n,\n 0x0d_56_cd_4f_58_2b_57_19_a3_30_1b_e7_87_31_42_cd_bd_ba_c3_90_1c_33_c7_1f_49_0a_29_f1_98_cf_83_7fn,\n 0x01_bf_b7_9e_b3_72_64_d6_7c_12_bc_4b_21_4f_d7_28_d6_ad_f8_4d_02_a0_81_65_ec_c9_82_86_86_12_e5_04n,\n 0x08_2b_38_03_7b_96_a4_7f_54_fe_a5_4f_4f_85_14_30_f7_c7_16_76_6c_b5_8c_14_f3_db_8e_e1_da_a7_07_b3n,\n 0x1d_92_ef_0b_67_d4_6a_99_1d_e6_03_c8_29_17_a3_2b_7b_09_11_40_8f_8c_8a_b2_83_bd_36_fc_1c_62_ba_78n,\n 0x1e_85_bc_c9_19_32_f9_ca_07_b3_59_84_a4_1c_4b_fd_ca_24_3a_15_14_41_e1_b7_58_c5_a4_c0_ae_6b_a1_81n,\n 0x25_e3_0f_6d_84_da_98_9e_0d_4d_0d_b8_4c_f5_77_39_ed_9d_1f_35_4c_8e_3a_af_cc_01_b4_78_02_c5_7a_34n,\n 0x11_ee_0d_d3_08_c6_5e_dc_88_ce_2a_d2_ed_ec_a2_9b_66_00_ff_af_30_9f_c6_c5_e3_a3_d6_31_8c_a9_8c_83n,\n 0x18_f3_ca_75_18_8f_ff_52_74_22_4c_de_36_c2_d8_52_11_b0_94_c2_0f_53_d9_e3_a4_35_18_96_e3_d1_a1_c0n,\n 0x05_b6_b2_1c_1f_70_80_32_91_1b_6e_0d_c4_e5_7d_1e_8e_dc_bd_d1_44_10_2b_28_c8_61_7e_53_b1_1e_4e_7bn,\n 0x00_eb_79_b0_7b_cb_df_2d_22_58_17_7b_fd_15_ba_43_bc_56_d9_36_2e_49_f1_3d_00_23_94_f6_c6_35_f2_0fn,\n 0x1d_96_35_71_ce_73_13_a1_71_10_b1_7d_64_d4_50_01_b3_6d_20_b4_86_9f_fc_ee_44_ee_57_8d_23_d6_48_8dn,\n 0x28_c4_51_44_ea_dc_e3_45_f8_73_78_b4_32_bc_f3_0e_9f_db_40_e2_ff_cf_61_f5_b9_18_e3_ad_42_cc_f1_53n,\n 0x27_76_53_09_93_a1_1f_b7_e5_22_2e_e0_df_50_5b_e5_e5_7c_db_b6_35_2f_f7_85_3e_66_80_07_71_4b_d7_18n,\n 0x21_0a_70_04_45_6a_4c_7e_56_64_2e_79_40_23_08_42_fd_54_b7_fb_db_8c_33_7c_b1_49_35_61_e7_78_fe_8fn,\n 0x0c_c1_cb_51_98_6a_b1_a0_f6_28_c1_2d_7c_66_56_a9_d8_49_5d_b9_1d_90_e5_da_e8_f0_dd_26_4d_9f_19_ban,\n 0x13_d1_e0_cb_d9_e0_f4_21_62_6c_8d_b0_9d_d2_4d_f9_2c_27_06_88_e7_02_49_52_31_d0_57_c7_67_6f_b1_ddn,\n 0x1c_2b_5a_d4_5c_f4_18_16_11_ed_a6_70_60_a0_49_0d_8d_6a_e3_cd_1b_10_a1_57_0b_00_bf_0b_d3_a2_6e_09n,\n 0x25_ed_c1_1d_3b_5e_6e_96_8c_a9_a2_7c_34_0c_f9_35_07_44_d2_89_20_f5_76_26_87_d2_d3_1d_fa_e1_42_35n,\n 0x23_0c_8e_7a_c3_ff_2b_39_da_eb_a2_78_81_19_cd_58_a3_a9_0a_9c_24_c3_ed_82_1e_af_d0_83_83_f3_89_a0n,\n 0x29_37_cb_33_c9_30_ac_4b_e7_87_b6_e8_90_e6_7f_8a_08_cc_92_c1_51_f7_e6_73_ff_bc_c2_7b_25_cd_0b_1fn,\n 0x28_a3_ac_67_7b_6f_19_ac_e6_9e_3d_06_04_95_57_fd_e2_a9_24_76_c1_99_e1_c8_19_c9_07_ce_45_68_12_e5n,\n 0x2d_ec_34_1e_ed_75_24_a2_6b_7b_91_ba_b3_00_32_33_47_03_8c_01_20_6e_0f_78_03_49_e5_c2_ca_24_70_76n,\n 0x0e_83_c9_f6_8c_5f_eb_42_10_d6_33_82_1c_c8_40_bd_1f_bc_be_d8_7e_ff_de_9f_23_d4_40_3d_9b_8b_03_e5n,\n 0x11_2f_b2_11_85_59_8e_78_5b_ff_0f_0f_7e_48_21_28_92_32_40_3f_b2_b3_1b_48_e7_ec_90_22_df_2b_79_71n,\n 0x1f_aa_62_1f_0c_03_9f_dc_80_24_cb_dd_f4_ca_81_75_81_c6_e3_f2_6b_de_27_8b_13_c3_4c_d6_51_bd_87_82n,\n 0x04_e3_d2_6a_df_cb_4e_f7_cc_32_2e_e5_57_87_86_06_ea_5b_53_7f_a1_f8_80_44_5c_64_7e_8d_12_c9_8c_91n,\n 0x1a_70_c2_01_5b_f1_c5_df_a6_37_e8_de_bf_8f_75_9e_30_9f_46_c3_7e_53_5f_0c_64_48_69_95_ea_5b_90_61n,\n 0x22_8f_60_de_5b_5f_3a_e8_a5_2b_ce_de_cf_7b_38_30_d5_b6_87_9f_ed_7e_ed_95_23_1c_67_4c_01_6c_7f_ean,\n 0x0e_4d_dc_51_2f_df_83_9a_c4_8b_7d_db_03_e7_65_e9_cf_5e_32_07_45_57_2a_5d_4f_70_09_7c_10_74_40_6an,\n 0x1f_8e_57_2e_2e_0b_48_f9_b6_bd_c4_74_21_0a_1c_8d_f6_55_ca_5e_19_f7_d1_3b_5a_89_a1_85_f3_a3_ce_a1n,\n 0x03_a1_83_21_31_51_c3_3d_6c_58_b6_63_1c_af_a0_c0_53_00_f7_5d_eb_9f_f9_71_fa_fd_35_44_1f_5c_ac_78n,\n 0x1b_7d_a9_80_82_80_48_a7_49_8c_dd_2b_49_ec_08_be_3b_ad_7d_43_27_c9_75_4b_5e_3f_d6_74_e0_2c_82_86n,\n 0x28_5d_d9_c3_bd_e7_c3_61_a1_6c_bf_14_bf_b0_b5_a7_8d_8f_4c_e4_43_3d_41_f1_3a_37_2e_92_c3_5e_21_b5n,\n 0x06_f9_52_d6_6d_60_cd_18_94_9e_c0_8a_5c_20_37_07_ff_45_2e_3d_f3_2d_50_a4_e2_21_e7_2a_79_3c_ba_06n,\n 0x2f_68_43_da_08_8f_67_5e_a7_73_a0_37_7e_cf_ce_e3_3c_96_01_ad_a5_b8_25_6b_49_f2_c2_25_9a_b8_ab_dfn,\n 0x1b_ee_4d_9e_16_8a_c6_06_a7_3d_79_a9_90_c5_90_90_00_12_aa_ff_03_29_17_47_55_37_81_38_4c_28_d8_00n,\n 0x0c_8c_85_c0_32_0d_69_11_ab_65_a5_0d_eb_2b_28_25_d3_e3_39_21_a4_65_22_e5_4c_cb_6b_80_6e_55_f1_92n,\n 0x11_9f_fc_6e_e4_a0_00_ec_8b_6b_d1_75_bc_99_71_8d_ab_65_08_e9_99_57_8d_85_f5_7f_e2_29_46_12_0d_55n,\n 0x30_0d_0e_86_81_f1_17_fb_49_18_27_fa_12_10_12_06_25_4e_cf_e5_a7_0b_08_71_6d_19_50_b6_63_5c_ff_06n,\n 0x04_f4_24_c2_64_71_90_60_86_da_d2_de_54_52_b3_14_8a_94_80_a6_44_e6_9b_0d_2c_6a_8e_35_72_07_01_81n,\n 0x2a_ee_a0_84_3b_e6_d2_63_70_06_72_c4_26_e9_82_0c_16_f0_96_fd_ea_de_f7_be_b1_c4_23_c0_4e_dd_de_55n,\n 0x27_0a_a0_ae_5c_5a_5d_df_68_5b_c4_32_b4_7c_99_6e_ea_d9_eb_1e_d8_9a_25_be_d2_bb_35_8c_b4_ed_b6_f4n,\n 0x0b_a4_f4_2f_a4_3b_00_5e_31_fe_2f_bf_27_ae_1d_f0_17_ff_6d_11_f2_7c_f9_52_43_63_83_ac_90_1b_d1_7fn,\n 0x18_9a_c9_f5_8d_25_99_1d_10_ca_62_33_b1_ad_8c_c5_83_cc_1c_24_79_96_79_04_a8_01_f9_2c_4d_b0_88_18n,\n 0x0a_c7_c2_03_b5_b0_6e_4b_6f_56_de_45_fb_d9_e5_02_d7_96_62_b3_ef_4c_12_2f_73_f7_a3_38_3f_b5_2a_f5n,\n 0x2e_d4_82_bc_cb_4a_7c_8a_75_df_d3_1a_44_3b_74_d1_e4_ef_52_2a_25_06_60_34_4c_21_a8_32_0a_47_8c_fen,\n 0x0f_4e_ad_ae_92_cc_f0_71_dc_db_7d_67_24_1d_b8_22_86_a0_b5_34_36_22_5d_8d_6d_06_c3_09_4d_03_2b_e8n,\n 0x2f_3e_e4_a7_67_15_b3_bc_3f_eb_74_e5_28_94_8f_f1_52_d0_b6_9c_ae_7a_aa_30_ed_3d_25_4b_a8_93_1a_73n,\n 0x0a_66_6c_cb_fa_6e_d0_9c_57_f5_8e_e2_96_34_07_23_6b_8e_be_19_35_72_9e_81_16_89_b3_98_a9_dd_7b_40n,\n 0x2a_bf_8b_9e_55_33_79_c8_bf_68_fb_c6_7a_67_de_e5_a2_2d_f9_73_93_67_31_45_21_1d_0f_e9_f5_ef_ca_24n,\n 0x1e_0e_4a_52_a2_fe_01_1e_af_aa_ce_83_d5_4b_92_e6_d8_57_63_4b_45_10_10_19_58_e7_d8_06_86_ee_92_74n,\n 0x13_ee_73_f6_52_5a_cc_52_0a_09_87_c1_61_e5_19_57_23_b4_78_5d_7b_a6_a0_31_c8_35_7f_d5_5e_a7_54_0fn,\n 0x09_4f_f2_c2_4c_fd_28_59_ef_66_c4_f6_26_96_fc_dc_7e_db_93_ab_92_12_7c_a6_22_7a_6c_02_9d_e1_9e_11n,\n 0x02_6f_dd_40_92_be_37_09_2f_a1_3e_02_d0_3b_3c_93_da_bb_7f_b7_bb_ac_f3_12_93_44_06_19_09_55_6c_c7n,\n 0x06_0c_b0_eb_f2_09_06_79_00_98_d2_60_ed_00_a7_57_04_e8_8e_33_38_6f_43_e2_72_15_48_88_d5_6f_ef_e6n,\n 0x0a_b0_fa_8c_cd_28_08_04_c5_37_d2_e0_9a_ec_4c_13_06_b1_a7_b4_79_c6_62_3e_91_28_36_4d_92_97_f7_ddn,\n 0x13_dd_22_e6_1f_f5_e9_e3_38_7f_90_48_80_37_e0_6c_48_cf_9e_c7_b8_fc_40_b2_f7_8e_83_1e_97_7f_3d_13n,\n 0x24_c6_2a_f2_1d_61_cc_27_7e_d3_ee_cb_6b_53_da_40_f8_24_a6_bc_86_19_f8_30_a5_a5_bf_86_84_6c_1d_41n,\n 0x2a_02_5c_78_88_cb_0e_c6_a2_33_8a_4b_e5_71_a7_c6_7b_df_7f_7d_cf_5c_07_75_b7_85_a2_c5_ea_3a_0c_60n,\n 0x03_5c_1f_f0_77_b0_16_b8_06_9c_04_4a_2b_f5_cc_09_80_3e_94_ee_01_10_c1_7a_5b_be_59_4c_bb_27_0e_14n,\n 0x2f_29_65_05_bf_13_53_b2_3a_67_27_91_a4_ee_32_5a_28_a9_e1_b2_1d_db_02_27_8e_48_b7_c8_fd_35_4d_18n,\n 0x13_b1_6c_3c_c0_ca_47_0c_75_bc_2a_d7_bf_d6_cb_f0_b6_69_c7_62_bf_04_11_01_00_99_c1_16_2e_26_a9_a7n,\n 0x2d_3c_90_0b_a9_a9_d5_49_4f_ce_d5_d7_0e_8a_40_ac_b6_8f_47_a0_bd_25_21_f3_81_3e_f8_31_f6_90_f5_afn,\n 0x0c_e9_e5_f3_1f_eb_0a_8d_20_eb_1a_ba_89_00_83_cc_30_92_73_8b_fc_19_6e_10_db_8c_c3_4b_31_f1_af_2dn,\n 0x0d_a4_13_bc_6c_64_a5_2d_06_8b_bc_66_aa_25_17_c3_23_ce_2e_00_ec_36_52_35_ca_bb_22_35_c3_2c_93_d1n,\n 0x18_97_ae_1a_23_df_0f_99_f8_c1_cd_4d_48_09_58_b9_59_d3_27_81_6e_6a_79_d8_3f_64_f1_1f_29_f9_a2_6en,\n 0x0d_11_6d_fe_53_62_12_36_84_53_9d_68_41_82_5a_76_4c_05_3d_ee_6d_b6_b2_bb_5d_35_96_67_60_a2_32_d0n,\n 0x21_e2_59_52_e9_8f_96_15_b6_96_b4_cd_c5_40_3c_d7_cc_43_28_35_a8_e7_8a_c7_27_a6_46_74_b3_4e_43_14n,\n 0x1a_3d_ad_57_e7_ae_20_5a_48_f3_a0_24_98_4c_4d_a0_50_1b_54_4a_fc_63_ae_a2_83_02_26_42_d3_b7_45_28n,\n 0x19_bd_3e_fa_0a_60_92_95_1e_e7_1b_31_3c_1b_6c_d2_b0_16_f1_de_cb_5b_51_d8_dc_14_92_7e_c7_70_f1_86n,\n 0x26_6e_fc_42_a3_0c_d0_4d_67_78_f5_0a_3f_bd_5c_51_db_cf_ce_fb_6e_b4_00_f8_5a_7a_27_8a_e1_84_e3_81n,\n 0x1c_8d_90_d8_5e_f6_4b_f4_be_dd_e6_09_95_7f_f4_dd_00_7a_a0_5e_b2_a2_d0_4e_07_b0_30_13_d7_c9_0b_6an,\n 0x02_ac_06_d4_cd_bd_30_84_7a_9f_ce_14_47_2a_e3_20_e1_f3_62_52_68_72_27_e0_82_f2_13_b2_19_e7_27_03n,\n 0x05_22_f2_c9_b0_87_6d_27_38_8b_8b_52_a5_10_02_e5_fe_06_69_f3_3d_a0_70_14_db_b8_c0_a8_e2_9e_85_cfn,\n 0x26_bf_74_46_24_ce_57_54_61_c4_66_27_0c_3c_7c_b0_9e_f5_c0_b8_34_2d_86_59_85_ff_22_d1_7b_47_23_9bn,\n 0x23_75_10_0f_86_8f_06_ec_61_4e_0d_ed_6d_99_f7_14_a1_b3_15_9f_81_04_93_c8_46_ee_c2_5c_c2_df_28_54n,\n 0x0b_f4_61_14_6b_46_b3_e7_3e_0e_dd_49_36_98_9f_40_4c_ea_1f_9d_9a_05_82_97_b9_4c_de_ac_77_58_32_5cn,\n 0x0e_98_37_6e_d6_41_42_5e_27_16_fa_ef_d8_ed_75_44_b1_73_c5_a3_a6_69_36_20_9e_4a_f6_29_ae_67_71_c4n,\n 0x2f_9c_4d_96_05_6a_13_91_d8_9f_28_72_0a_20_d0_a1_e7_cb_59_a5_c9_3a_87_df_e6_06_9b_5f_4e_ca_27_10n,\n 0x19_2f_20_0b_f3_b5_55_bb_ac_79_78_19_bb_21_b9_90_b7_29_d6_5a_4d_28_a2_7d_6d_3f_00_f1_a0_2a_a2_3an,\n 0x2b_f8_98_4b_56_26_ac_cf_10_b7_66_7f_4f_dc_cd_b7_cb_60_5a_0a_e3_4d_6d_20_4a_c1_cb_c8_0c_b4_91_26n,\n 0x0b_ca_21_c1_24_64_24_72_44_b2_a1_9f_d3_0f_ed_65_f8_e3_ab_bf_83_35_b4_92_05_c1_fc_c1_f6_aa_c1_aan,\n 0x14_07_8d_4e_e1_1f_46_34_71_a4_95_16_c3_c8_5f_9a_26_6f_8c_40_f6_d7_b1_f8_6b_1d_19_35_b0_9f_15_f8n,\n 0x0b_b8_a0_4e_cf_9f_98_e1_69_7d_33_0e_92_2d_0c_8a_bd_e0_00_0b_50_b5_aa_57_c5_80_0d_52_df_4d_e0_11n,\n 0x21_52_61_21_c0_5e_09_a0_ab_d2_ca_6e_fe_5b_42_eb_f7_e9_11_53_82_22_1c_aa_ae_62_8a_33_49_17_b0_35n,\n 0x00_f6_a4_43_b0_e7_eb_b0_bf_77_75_11_51_2f_66_c5_e5_bb_e0_44_c9_66_5d_96_10_90_18_d9_72_9c_84_f4n,\n 0x10_09_27_51_e9_4f_b6_b5_e4_9b_ea_15_8a_01_4b_d9_90_78_54_24_58_af_14_ba_4c_bd_92_58_b8_ac_d2_36n,\n 0x02_93_89_90_3d_0d_3c_29_a1_73_dd_f4_52_a6_6b_4a_bd_36_ef_c6_42_cb_0b_57_d8_f1_08_19_d5_c0_f5_f4n,\n 0x2b_6d_20_e6_cc_7c_a9_16_f5_42_66_87_24_17_9d_8d_0f_f0_74_1c_3d_51_f7_45_45_e2_13_91_12_17_73_76n,\n 0x29_00_b4_27_7f_b3_a0_ff_83_b4_c5_8f_ac_79_a8_86_1e_30_5d_5e_b3_13_f2_cf_57_db_b0_59_39_03_65_58n,\n 0x10_af_dc_00_66_dd_a9_b6_4b_dd_43_b8_6d_0e_d6_2b_9b_39_38_00_7c_c5_0f_56_99_25_02_40_cd_2e_e1_a9n,\n 0x30_1e_d1_56_6f_52_20_e1_7f_bd_40_83_a5_7b_f4_2c_12_c1_5a_66_47_ae_81_03_ed_ca_27_2f_bd_5f_8f_11n,\n 0x27_f1_83_32_29_c3_a5_99_86_86_90_3e_82_4b_b3_e3_e1_0b_c9_69_f1_34_2a_b0_d0_2d_e6_35_fd_da_ff_11n,\n 0x0c_4e_f3_5f_f9_f9_06_d0_be_a4_89_d2_01_c2_10_c5_3a_bb_d4_7a_15_1a_9e_4e_fb_db_92_20_29_fb_64_afn,\n 0x0b_a5_ab_92_46_af_72_3b_ff_45_7a_b8_22_8b_e0_64_84_af_3e_35_45_db_b4_c9_32_ca_49_11_5f_95_7d_27n,\n 0x21_c5_72_bd_42_64_d8_21_c5_e2_ae_f9_93_00_64_99_c8_8b_32_45_ce_e9_59_3f_02_c2_50_14_9a_e8_7a_c0n,\n 0x04_d1_cc_47_95_00_87_19_32_6f_81_06_c9_ce_9a_4b_0d_de_4f_4d_e0_1d_24_29_a2_35_11_b1_fd_0f_d1_71n,\n 0x0a_37_9f_7d_6e_ed_ca_7c_4f_07_bb_5d_f2_d8_ea_0d_d8_7f_1e_ef_e2_ac_22_71_37_0a_7f_3b_e2_70_65_cfn,\n 0x28_da_ef_7d_37_a4_3f_2b_a4_40_65_f2_21_39_12_ea_b6_c8_c6_0e_3f_75_60_fc_a9_90_be_0f_f4_63_97_20n,\n 0x29_06_e8_99_64_58_50_4f_2c_04_4f_05_3c_4a_d2_4d_35_b0_e0_ed_37_3b_27_e0_2e_52_35_a3_d3_4f_65_c3n,\n 0x26_07_38_b3_d0_a7_46_fb_06_12_dc_a6_db_53_bb_96_8c_55_22_13_b2_f9_a1_34_df_34_1b_af_3e_13_79_c3n,\n 0x05_f1_77_ae_8c_6e_ec_8b_97_12_cf_a0_42_77_66_90_e9_24_bf_42_24_30_01_1e_f2_7a_f8_2d_f0_ab_b2_37n,\n 0x26_81_10_27_f4_45_e8_6c_19_2e_8a_e3_71_d2_e8_3f_b7_35_61_c8_cf_d1_0b_bf_5b_29_a7_7f_56_b1_d9_5fn,\n 0x12_de_f5_ee_59_c1_b4_a9_6b_50_ab_3d_e3_61_75_64_0c_b7_03_63_fe_f8_99_95_f3_49_26_ee_84_be_51_4fn,\n 0x06_9b_58_a6_aa_41_99_4a_11_cc_7d_d3_a4_28_f6_c4_ce_62_1b_5b_06_79_3f_5e_95_b4_03_4e_2e_f7_e9_bbn,\n 0x0d_bb_16_2f_ce_18_12_bf_2a_16_ae_b6_aa_c7_f1_73_7f_2d_27_66_0c_a4_cd_f6_e7_91_21_fb_fb_b6_c5_e6n,\n 0x28_7b_a8_4a_a5_08_7d_8c_c9_f8_94_50_f1_fe_39_1c_c3_a8_4f_28_a2_4b_26_1c_d1_dc_da_b0_39_a3_09_f8n,\n 0x1e_87_8a_1f_2f_c7_7c_be_23_2a_ea_76_83_d4_6d_89_96_de_bb_9c_b0_6a_f0_03_84_9f_d0_99_e9_c5_04_e9n,\n 0x1c_8d_1e_f2_46_dd_75_f4_2d_e1_3c_5b_fe_06_9c_08_d6_af_99_43_cd_7f_23_36_f3_1c_89_64_56_cb_a2_f1n,\n 0x07_4f_1a_67_8c_b0_29_48_83_56_dc_b4_77_a8_83_03_d0_de_d5_f2_d5_ec_e5_47_69_f1_5a_bc_19_94_53_8cn,\n 0x27_66_e5_58_17_2a_c7_0b_1f_3d_d8_5f_4c_80_51_7b_a6_e1_85_56_bf_51_d2_0f_68_7b_66_9e_78_15_d4_7dn,\n 0x20_63_63_53_e2_9f_ac_eb_ae_e5_f0_4e_de_42_fc_3e_ad_0d_07_72_7e_de_7a_80_af_1c_50_5c_6f_f5_d5_34n,\n 0x11_ed_97_5a_a3_d3_f9_ba_c1_e0_ba_b1_23_04_16_71_f8_db_69_5f_e0_76_01_fe_5a_71_e0_fc_ca_91_6b_46n,\n 0x18_10_01_60_41_8f_d8_58_f3_e4_fe_8d_5d_6b_80_e2_ef_37_66_18_bf_e5_a5_56_f2_4b_c3_24_70_99_c4_41n,\n 0x2a_bc_a1_8d_9b_3f_25_22_e2_1e_e5_7a_1c_66_34_ec_12_77_4d_04_1e_65_ef_84_30_22_4c_f3_1f_96_0f_14n,\n 0x16_62_52_41_53_3c_58_2b_9b_57_f6_e0_96_3d_fb_ba_9a_70_26_13_9d_aa_b3_17_4f_be_71_b0_d9_52_2c_8dn,\n 0x1b_d3_cf_1b_d3_12_4a_ba_a6_27_85_0f_f7_7a_67_78_e8_d8_2d_07_ca_24_65_5d_94_c5_a2_7b_57_c7_80_b7n,\n 0x08_4e_7a_e8_a5_15_bb_e6_fd_83_70_e7_c1_3e_7d_09_83_5c_37_49_ed_21_c2_84_2e_7c_46_b4_bf_ad_4e_38n,\n 0x01_05_b6_4f_db_0f_02_98_87_32_b5_8e_06_db_80_0b_2d_f0_9a_71_a5_b5_a1_65_ad_20_11_eb_f4_8a_64_47n,\n 0x04_3e_d4_36_d6_b9_af_56_7a_ac_7e_24_20_61_37_fa_a0_86_d1_88_e8_44_4c_ab_d5_23_49_83_90_4b_ce_f1n,\n 0x24_51_cb_7a_5d_ec_1f_93_fd_2b_3f_8b_97_c4_b1_dd_2f_ce_7c_87_d0_a9_2c_9f_69_9b_c5_50_03_2a_0a_7bn,\n 0x18_f3_7c_62_4e_96_ef_9c_49_4d_2f_01_6b_b1_ed_95_6e_f9_51_f3_b5_74_20_a4_6c_71_60_bd_fa_a5_76_c1n,\n 0x1b_f8_4d_6d_70_c7_48_cc_d9_81_c2_1b_19_d5_55_ce_7c_38_41_f3_42_20_c1_07_97_af_76_f6_2e_25_89_80n,\n 0x0b_f9_b0_51_f2_02_1f_38_a2_94_ea_df_d0_81_1f_05_c0_88_52_72_0b_dc_74_9e_1f_9a_62_72_0f_62_71_9an,\n 0x19_f1_fd_21_99_e3_aa_c8_8c_7c_cd_7d_d8_58_d1_58_c2_ef_10_e8_23_6d_2c_d6_6a_70_a3_f0_d1_87_98_8an,\n 0x1a_f9_d6_3a_ce_6d_b7_a8_ae_20_a0_4b_77_6f_a3_9d_e3_4b_79_53_94_23_12_14_31_7f_03_6e_59_54_ee_a4n,\n 0x1b_3a_2d_08_d1_c3_76_3b_76_78_b9_d9_de_1f_ee_10_cd_a8_09_37_fd_7d_74_f2_7d_6e_55_03_86_f5_44_3en,\n ],\n // t=11 (10 inputs) - 814 constants\n [\n 0x07_52_af_3c_6f_dc_ca_f3_86_82_76_68_5f_0a_69_b9_74_9e_17_06_a8_29_17_b6_4e_c2_ef_84_7f_80_45_59n,\n 0x06_95_03_d4_17_e2_5f_45_68_c7_85_8b_a8_33_43_01_c0_fa_19_c1_b3_48_bc_7e_18_a4_c1_ac_e1_d1_54_18n,\n 0x25_c1_b1_21_f3_3f_4c_f7_b3_08_ec_46_30_f2_7b_60_3d_22_aa_81_ca_35_95_e8_01_c5_fa_7d_97_70_a0_96n,\n 0x23_d6_b5_51_45_bd_b3_28_27_c1_45_6a_f4_d7_be_4c_2d_21_3e_82_5c_1d_2f_0c_9f_f9_9b_22_73_75_1f_6en,\n 0x1b_35_7b_ce_3e_f3_f2_b7_6a_fc_2b_58_04_80_5a_db_14_cf_6b_f3_7f_e2_35_7c_79_aa_7d_6b_32_ac_ae_can,\n 0x28_ec_5a_c0_88_1c_1e_64_26_ba_49_94_09_89_4a_6f_3c_27_6f_e5_68_9f_2c_35_c9_02_7e_80_94_48_77_d9n,\n 0x2c_98_62_52_4a_c8_a0_7b_47_d2_11_c9_c5_04_c8_b0_bd_39_8d_02_8a_cf_69_0e_4b_8e_d4_00_5d_d0_6e_edn,\n 0x1f_6e_6f_0a_c4_ae_b7_a5_23_43_f3_04_18_07_8b_40_64_4c_d4_3e_29_0d_a0_ba_ee_92_89_1c_4c_06_5a_c8n,\n 0x03_db_35_17_e2_33_f8_a7_6d_21_b2_fb_23_c8_5f_a7_ca_cc_57_77_69_ed_ea_09_aa_e3_94_07_b9_af_2f_ddn,\n 0x0f_c3_33_dc_a4_18_3d_ab_47_9c_59_62_eb_05_ee_4b_79_a8_ac_6e_0c_ce_9e_9b_0a_21_42_24_7b_fd_08_77n,\n 0x1e_ed_28_19_78_a8_39_5c_04_28_9b_86_19_76_73_b0_f2_b6_5e_1a_13_52_64_52_7e_25_0a_5c_df_99_ac_a4n,\n 0x25_68_bd_f6_51_10_34_34_3f_b5_d5_d0_21_e0_52_d3_08_09_54_fe_e3_57_dc_a3_6f_a5_d7_8f_33_b5_be_3fn,\n 0x1d_af_ad_e3_74_e6_32_51_de_ca_97_05_91_da_4a_28_5a_63_d1_1c_fe_64_66_1f_ad_d9_a0_01_df_f8_23_30n,\n 0x0a_f2_5c_78_1a_bf_56_fa_4c_d6_83_35_80_e9_7c_7a_60_ea_a9_7f_1d_c3_2b_62_2e_89_5d_f3_a6_91_5b_39n,\n 0x13_50_14_51_cb_7d_3e_0c_f3_cb_57_74_1f_be_8d_d5_97_57_c9_36_7f_cc_48_fa_11_de_b1_35_42_7c_5c_1cn,\n 0x19_70_45_fc_dc_f1_5b_cd_b2_47_d8_fb_f6_c8_5c_80_f2_d0_65_f9_23_10_85_59_a1_73_0d_71_c7_3e_56_cen,\n 0x1a_39_0d_72_81_37_5f_ac_24_9b_98_55_f8_c6_7a_27_5e_8f_f8_a0_a8_21_d1_b3_05_c4_cd_b1_31_3c_86_61n,\n 0x17_f0_70_6f_7e_12_fb_02_2d_15_f9_42_97_c7_b4_59_47_75_5e_5e_84_c7_b9_95_76_59_be_1d_e6_4b_73_7cn,\n 0x0a_8f_5f_03_f1_9d_49_79_9b_6f_ba_65_0c_06_e4_ae_f2_51_ff_c7_52_43_a8_d7_ae_e8_92_4d_56_3f_7e_49n,\n 0x24_c9_e6_c3_5f_4f_81_9f_5b_c1_ef_26_57_6e_16_d2_c7_c7_20_6a_05_98_04_4a_cf_0c_18_fc_50_42_f0_e2n,\n 0x00_24_05_ca_70_d5_15_50_dc_14_ab_fe_e1_8e_38_23_b9_e9_79_07_23_30_d5_47_13_3a_14_b2_5e_46_1f_d5n,\n 0x1e_ab_4c_d5_6f_14_74_b2_70_d5_02_94_56_21_d9_3e_44_66_3c_af_8f_1d_31_d8_6b_15_6e_10_7f_ef_38_cbn,\n 0x06_6b_97_50_f7_3f_45_61_ed_e5_59_39_40_7e_74_b4_97_d4_de_ef_59_8b_87_3c_4b_4a_1f_32_ae_42_5d_00n,\n 0x1e_e3_df_a5_96_f5_d8_70_30_a6_c9_d2_7d_61_dd_17_5b_27_11_79_40_82_35_f1_3b_b3_f8_4e_a2_8e_7a_42n,\n 0x1e_a9_4b_9a_c6_fc_1b_de_29_d5_89_3f_dc_b6_60_ed_61_ff_7b_2c_65_b6_38_a4_04_6e_ab_21_7c_02_aa_e3n,\n 0x13_13_88_35_1f_07_96_d4_75_3c_e5_64_e7_54_59_1c_b1_ba_e0_2a_2d_d5_48_78_28_1a_c6_e7_a3_c0_69_cdn,\n 0x1a_45_a0_17_fd_be_53_61_9a_29_d8_d3_1f_27_e4_08_f6_4b_e1_0b_f0_5c_e1_6c_90_af_3d_1f_13_88_6a_2dn,\n 0x1b_4a_0d_68_e5_43_12_b9_fa_67_55_0c_5c_0f_f0_d8_8f_e5_78_22_dd_df_9d_58_d9_d2_21_50_57_aa_94_afn,\n 0x1d_45_d3_69_ec_03_99_90_5b_b0_29_dd_9f_e0_b9_7a_5c_ed_1d_29_c7_b5_a3_9d_a3_58_ad_22_66_91_db_b0n,\n 0x26_15_4c_9c_51_df_80_59_74_5b_b2_d9_7d_9a_9b_8c_c8_f3_d3_d8_13_dc_4a_f4_14_ad_ce_1d_69_92_0e_8fn,\n 0x2b_74_8a_d3_da_43_c5_cb_94_12_cc_64_31_3c_8d_47_11_25_1a_70_80_ec_5b_59_20_6e_7a_c8_c7_01_73_0en,\n 0x17_a5_46_8f_db_1e_5f_da_cd_9c_9f_d0_a7_f5_fb_75_6e_05_f2_f2_fb_41_04_b2_cb_48_d8_30_fe_d1_37_58n,\n 0x26_97_a5_e2_25_42_12_3f_09_23_b8_6b_15_29_a5_40_5e_f8_09_de_03_ee_41_29_b2_ba_ee_5c_b3_bd_94_e6n,\n 0x09_b0_7a_d4_33_70_fc_4b_f9_ad_e6_10_e1_ad_dd_38_d9_d9_62_e8_4d_8d_db_10_9e_fd_ba_69_91_6d_d4_89n,\n 0x06_9c_19_4b_5b_9f_23_01_bc_48_d6_36_3c_8e_5a_fa_4a_75_ca_2f_8a_00_9e_15_ad_4c_a1_1a_17_c8_1a_1en,\n 0x1a_19_74_ad_41_8c_b3_72_d5_55_ec_9a_f0_f3_48_b9_72_9c_de_e6_81_eb_0e_44_79_b9_0b_b7_20_f5_42_c9n,\n 0x18_a9_d8_d3_4c_f2_c6_33_13_8a_9e_b9_eb_29_82_0c_85_b7_09_88_95_82_6e_cd_f2_e1_bf_04_0d_cf_02_87n,\n 0x2e_05_54_83_9d_d7_0a_4b_99_98_fd_91_53_27_fa_e1_46_85_ec_a6_23_d6_62_58_51_86_d2_f1_24_ba_8b_b0n,\n 0x1e_6d_02_16_c8_b6_78_bd_9e_89_0c_cd_72_d2_3b_c2_67_94_8a_d8_7f_ab_25_ae_a6_25_7f_8c_b7_01_28_03n,\n 0x09_20_93_2a_6c_40_5b_1e_e8_71_ae_17_39_49_73_1e_61_69_a2_44_42_d8_f8_c9_ed_79_cc_c7_a2_4a_49_5dn,\n 0x14_2c_42_de_6a_bf_ff_58_05_4f_6a_4b_da_8e_ba_5f_7f_10_cf_39_fb_ea_fb_8d_39_ae_f3_0e_88_4f_a3_b8n,\n 0x14_18_ed_d8_8e_64_d3_dd_ad_03_f3_3c_a0_93_61_72_44_4b_b0_71_2d_64_6a_8b_ce_67_b2_e4_51_ee_0d_81n,\n 0x05_c5_dc_f2_bd_5e_04_ea_65_65_4f_b4_73_c4_d4_69_2e_99_58_a5_99_9a_bd_7e_5c_dd_70_6c_b7_e0_82_b1n,\n 0x11_44_64_31_1f_df_a1_1e_ec_16_6d_20_2a_ee_fc_60_1e_4d_16_95_9e_c9_36_a9_e8_f1_b2_f9_7f_d3_5d_dfn,\n 0x21_b7_13_b0_fd_b2_38_f3_b0_53_f6_d5_96_ca_f0_72_23_b2_a9_d1_fc_ca_75_83_21_a1_d9_17_5c_32_7e_f5n,\n 0x15_ef_67_ca_e5_83_8a_50_bc_67_1a_5e_a7_8e_87_b4_8b_c9_8e_3c_d7_bf_76_d5_fa_03_30_93_dd_c9_75_81n,\n 0x0b_f8_89_17_cb_7c_57_0f_68_b3_94_29_d8_fe_e0_fc_fe_58_33_06_a6_ca_69_33_8c_34_90_26_fe_66_bf_e9n,\n 0x18_81_f0_12_9a_64_b7_f8_61_08_5f_6b_36_69_dc_ef_57_e5_68_d6_34_97_98_27_80_77_0b_4b_c3_b4_37_f9n,\n 0x20_55_eb_73_2a_72_d3_7c_ad_a8_3f_04_ef_74_17_85_36_8d_64_8d_09_cb_50_14_25_75_43_0a_11_0e_89_cen,\n 0x19_b8_48_c3_3b_38_76_bb_16_88_46_d1_38_97_cd_e6_b0_b9_e2_b2_99_54_39_5b_39_94_6a_4f_5f_26_d0_03n,\n 0x01_e1_97_97_23_29_64_cd_5f_26_ae_8a_2e_04_bd_7b_3d_c1_bd_a2_5b_54_1f_3d_4a_05_9b_48_fc_95_2d_a6n,\n 0x02_8b_8d_d7_8e_87_12_e1_72_48_6a_4b_27_8a_c8_e1_66_b1_99_65_52_c7_4b_d2_fa_4b_fb_cb_a3_91_34_57n,\n 0x1f_b1_cf_f7_31_96_d1_34_c3_03_59_da_15_a5_30_b1_a5_74_1a_a0_e0_57_88_a9_d4_fb_20_32_af_f0_d5_86n,\n 0x23_bd_33_01_f5_9b_d6_55_22_5f_85_c4_2a_94_66_bc_d7_c6_4a_a9_36_37_ee_27_ae_fe_cd_f2_88_32_60_39n,\n 0x0e_2a_da_eb_2a_c7_d6_94_4e_28_7d_c7_c8_33_01_53_13_d3_f2_be_ab_a2_5e_a4_c1_dc_6f_0e_3f_bc_8e_34n,\n 0x2f_5d_08_54_8e_f7_3d_65_c2_85_31_78_cb_cb_c8_a7_0c_48_00_3c_0d_13_86_db_72_88_26_0d_29_a5_2d_0an,\n 0x2f_55_c0_e9_6d_e7_4a_61_fc_97_4d_f0_da_85_b1_1a_c5_44_b5_c8_54_4a_e5_9a_d7_6c_bc_03_88_9e_79_b4n,\n 0x18_88_5f_73_9a_9c_3d_fe_ed_39_ce_b7_c8_ee_f7_7f_d6_35_ad_52_e3_29_4d_3e_12_6a_92_a6_4c_5a_45_43n,\n 0x12_67_ca_ce_9c_ec_3c_1a_96_fb_da_5f_20_df_30_9d_f8_8f_9e_df_56_84_a0_5b_fc_ac_b1_11_67_98_30_82n,\n 0x2a_45_c0_48_44_48_da_31_b2_53_b6_32_f3_9c_3d_4f_6c_6a_f8_e3_e3_99_dd_d3_93_b8_20_cd_ec_66_f9_02n,\n 0x22_60_27_9c_33_25_83_a3_60_11_97_3a_a7_62_6d_4e_81_d6_38_29_67_86_8a_96_43_a7_6e_53_a2_b2_53_16n,\n 0x28_ec_82_44_6a_e8_bb_21_78_3f_54_cd_4d_af_07_e2_79_bc_0e_ad_04_d7_a3_13_76_9f_66_2c_8e_74_a0_ebn,\n 0x16_e1_35_70_de_ff_b3_be_be_11_89_58_b2_d8_64_70_57_8c_b1_12_96_9b_c6_ee_f3_a1_32_1b_ef_da_c9_b0n,\n 0x22_88_e8_3b_eb_79_45_98_07_cb_77_40_8c_9b_bd_bd_d0_77_e6_20_27_99_86_f4_e2_f0_b3_e5_fa_ca_ab_d5n,\n 0x2d_b5_b0_6f_11_02_b7_2c_e4_99_46_08_4d_75_f2_10_9a_d9_70_78_5a_83_29_de_8e_22_5a_41_0e_24_33_89n,\n 0x2f_ce_39_a1_9e_a1_15_f3_a9_17_04_1f_db_26_7c_1b_51_03_b5_88_7e_5d_63_c4_8e_ed_fd_c5_33_69_97_58n,\n 0x2c_65_ef_05_5b_28_fb_41_70_7c_32_4a_36_a8_94_c6_ad_9f_86_2f_d1_f9_7d_a5_44_59_c5_db_0b_da_55_afn,\n 0x29_e6_3a_24_c9_12_35_dc_00_a6_77_0b_9e_57_23_58_c1_8a_90_63_a3_40_66_f8_b6_f5_66_83_cf_f4_8f_fen,\n 0x05_42_11_c5_6c_f9_cd_ee_64_b7_da_a7_67_7f_e9_f2_35_e2_b5_c9_9c_5d_8b_55_de_20_d9_aa_61_2c_72_c3n,\n 0x10_8e_8e_83_43_3f_7c_b1_72_87_23_83_7e_de_94_d0_73_03_2a_b6_6e_2e_0f_b6_db_97_87_b3_95_59_d7_3bn,\n 0x0f_f9_bf_b4_19_14_e1_99_a5_53_e0_70_ee_d9_43_8f_ff_03_3c_d3_14_76_58_91_49_a9_e6_0d_50_58_11_4en,\n 0x06_91_3b_c2_e3_72_30_d4_b6_f5_6b_44_69_7d_6f_80_41_8d_7c_11_a1_d2_0d_84_84_e9_5b_06_7f_93_5b_f0n,\n 0x30_0d_3b_77_3b_9a_41_ef_81_8f_dd_12_20_2f_49_9d_5d_bd_e3_95_38_8a_81_c5_ce_3b_c3_cc_8b_48_80_99n,\n 0x29_f9_b2_89_72_1f_e3_00_19_37_f6_c4_87_bb_30_e3_42_b3_44_c7_1d_dd_0f_95_7d_02_d9_29_5f_ab_e5_94n,\n 0x14_de_0d_bb_50_a0_aa_ff_fb_39_94_76_2d_14_96_cf_51_44_93_50_b5_df_ce_b0_65_06_67_f7_db_7f_33_fcn,\n 0x04_5c_f1_d3_76_29_de_e9_28_9f_cb_e4_82_35_19_de_b8_57_ef_66_cb_39_cc_66_30_a3_ac_61_57_e9_e0_edn,\n 0x1e_7d_e4_6f_dd_23_c6_ae_b9_4a_dd_f6_cb_99_98_56_32_2d_3a_d6_d5_80_3c_ef_88_b6_69_3e_d1_35_90_a0n,\n 0x2c_03_3f_dc_57_23_2e_68_5a_be_9a_eb_18_a5_95_0e_59_f6_66_59_8a_0a_90_32_af_cf_58_ae_a7_72_93_9bn,\n 0x11_7e_ae_65_ff_e6_63_42_41_26_53_48_d9_84_72_07_4e_89_ca_be_3d_8f_9f_55_cb_c7_4d_db_d9_84_3e_4bn,\n 0x29_88_e8_1a_9b_5d_c2_2c_8b_3c_7a_9d_01_34_44_22_f2_48_33_64_c1_89_99_6b_ca_b0_79_91_2d_25_99_3dn,\n 0x0d_be_a5_91_b6_6a_24_48_fb_fb_88_6d_10_b8_99_d6_56_fd_db_ea_4e_66_6c_0f_14_46_5e_09_cc_ad_df_f5n,\n 0x1e_df_42_4b_b6_ca_08_ac_8c_4c_df_c9_8d_6d_3f_d0_40_00_ec_4c_6a_86_28_d5_e2_b3_b1_26_32_34_75_5dn,\n 0x21_43_06_c0_10_5f_36_3d_52_59_e2_14_1e_97_b7_da_41_b9_d5_11_50_48_d1_ac_84_83_fc_68_8a_70_34_b1n,\n 0x24_2e_00_b6_93_0b_e5_83_5a_a5_02_74_93_d3_b1_1e_31_18_77_26_5a_70_21_0e_01_21_63_28_45_2f_dc_98n,\n 0x29_15_4d_01_28_cc_65_09_89_da_bb_8c_a0_b1_8d_d5_be_b1_eb_ac_0f_63_fa_47_be_96_e3_83_20_12_19_7an,\n 0x25_d2_2d_54_d9_c8_2d_7c_fb_89_c6_1a_a6_2c_a1_50_50_6a_2b_fa_b5_d3_00_db_78_4d_25_d2_60_82_7d_0bn,\n 0x2f_23_f0_ba_29_9f_5c_09_76_c1_6e_b3_b8_83_06_89_26_12_87_39_23_ee_88_ea_a2_db_8c_c1_01_08_f5_c6n,\n 0x0b_74_3a_89_13_bd_8e_7e_70_9e_68_31_1a_35_85_ef_b0_96_70_83_15_a9_81_20_39_f2_15_89_9f_42_94_c0n,\n 0x26_4e_fa_00_92_95_46_cb_4e_c3_0a_62_1c_3c_6f_66_13_25_87_28_64_ff_df_84_d5_ad_b6_1a_f8_db_b3_d0n,\n 0x1c_49_d7_66_63_a3_58_38_77_62_d2_08_dc_85_40_0e_7a_cf_1b_65_fb_b1_3e_db_34_6d_f1_f2_a1_0a_ce_37n,\n 0x2f_40_72_5d_1e_b5_18_ae_45_62_ee_25_ca_08_b3_e5_6d_ac_aa_51_1b_df_82_d0_99_fb_ee_e5_11_0b_68_2dn,\n 0x26_51_bb_f3_92_15_d6_d6_63_2a_65_2a_ce_6f_f5_11_85_55_ac_ff_7d_4c_8b_e7_ee_3e_20_6f_44_ee_7c_00n,\n 0x21_98_f3_b0_a3_fb_d0_bf_ab_07_57_8d_40_d7_fa_03_e5_07_61_ba_8f_1f_2b_01_86_13_d6_5b_09_1f_3e_afn,\n 0x18_d4_c4_69_9f_7d_01_fa_00_ed_ad_c4_3c_8e_1f_10_d9_2a_4f_7d_b9_6c_2d_91_39_bd_d6_fb_11_fe_a4_08n,\n 0x05_9e_db_c5_53_49_1e_c6_b9_42_33_d5_3b_53_28_a5_d2_4b_6e_49_f4_57_19_0b_cf_d0_62_a5_82_29_57_ccn,\n 0x12_9a_61_61_4b_4e_9e_42_1e_66_67_da_a9_b8_5f_e1_4b_ea_a8_22_b3_95_4e_55_12_88_56_4b_d2_b1_45_52n,\n 0x2e_2b_fe_4d_7b_32_34_df_6b_62_68_8b_dc_b2_c8_76_75_97_ea_3f_7b_77_92_fb_44_37_7e_71_e1_ec_9f_16n,\n 0x01_f8_39_7c_fd_8e_ae_eb_a4_79_8e_98_63_73_7e_c5_45_72_f6_a3_55_ee_47_cd_b8_27_a7_f2_0d_c3_89_c9n,\n 0x11_7d_b9_cc_91_40_e4_67_0b_c7_4e_7f_d3_a6_fe_99_b8_7e_17_81_d2_ae_19_1d_01_1c_6d_64_e0_2d_cf_8bn,\n 0x11_e0_cc_e3_5b_68_de_f7_de_d5_52_2f_43_4c_48_6f_28_7d_b0_b6_ba_e3_ca_fb_23_1d_cf_95_15_98_f8_9fn,\n 0x25_bf_4a_e3_0c_44_dd_fc_87_00_e2_36_9a_ed_7f_56_89_80_c6_d4_8e_33_b6_c6_37_37_c8_2f_94_2b_92_30n,\n 0x11_53_f5_c1_6d_56_08_a1_7d_cf_a2_fc_c5_ff_92_d0_a4_1d_0f_d1_38_0b_58_d2_f7_7c_05_83_39_88_6f_6fn,\n 0x04_1b_ed_39_c2_9a_fb_70_04_ce_e9_93_fc_22_26_05_cd_df_e6_41_fa_3a_09_6c_80_13_f3_8b_5c_d8_5b_7fn,\n 0x04_7c_d5_c5_b0_c2_a6_04_ae_99_c8_42_54_0f_a3_7d_44_e6_ab_ec_36_57_69_9a_11_6b_84_fc_42_ad_5d_3dn,\n 0x15_4e_f2_5e_67_14_86_db_8e_88_21_81_a3_31_82_6d_ae_7b_97_39_f2_eb_6c_8f_74_8a_30_64_9a_a4_18_0en,\n 0x1b_48_3e_74_f4_1c_26_58_fa_fd_08_1b_9c_b7_70_9d_f2_88_99_94_54_49_6a_29_a4_92_ee_e7_9e_fb_96_22n,\n 0x12_db_88_34_2d_01_4b_56_fd_bf_93_db_f9_d9_c0_82_19_6c_b3_4e_0c_ed_df_ec_a0_a4_09_04_e2_b8_cb_2dn,\n 0x09_44_26_3f_ca_d7_63_5a_7e_8e_de_76_f4_fe_3a_fb_20_5c_f8_35_f4_2a_95_c0_33_6d_e6_c4_2e_a5_a9_90n,\n 0x2e_7a_c6_fa_9d_ff_af_83_a9_eb_b6_96_6e_f5_46_4e_44_29_b9_8b_78_b8_f1_41_65_c5_01_54_69_70_b7_34n,\n 0x04_bc_a0_7a_15_b5_85_cd_27_79_07_68_ca_a3_82_e9_9d_14_cf_f8_fa_57_e2_fd_aa_11_5a_47_2d_d4_ec_12n,\n 0x0a_23_0a_b4_85_e7_81_46_8f_db_fe_df_32_41_3a_a4_00_c8_39_ea_85_5a_50_f1_91_6b_03_c6_76_1c_03_4bn,\n 0x16_21_dc_3c_8c_3d_b8_6f_a8_30_59_f4_a3_c4_12_98_ae_c8_ed_93_c4_9c_53_bd_d2_58_73_39_b2_16_ec_74n,\n 0x1b_4e_4b_c4_f0_28_fd_ed_0d_aa_5c_1a_09_4f_ec_a0_d0_50_94_fa_fe_bd_66_19_34_8e_1d_d9_fc_e1_68_can,\n 0x1a_73_9e_55_ca_64_4e_9c_a0_ff_28_06_23_20_97_7d_97_38_b3_57_28_7f_e6_d8_72_7e_10_ff_44_52_c7_99n,\n 0x29_28_00_e8_45_2a_56_66_cd_02_b1_75_69_50_f8_04_8c_36_7a_24_39_ad_ea_3d_94_2e_e3_c3_18_5c_fd_92n,\n 0x1f_a3_71_d9_10_6b_81_aa_66_4c_11_f5_0c_d4_1d_24_81_a9_14_39_a3_9c_0f_a1_31_1f_fc_28_c4_48_4d_d8n,\n 0x2a_78_69_41_b8_ab_63_1a_45_5f_1f_0b_db_bd_3e_b9_a1_9c_da_5d_76_c4_63_bf_f4_ef_12_20_0b_d6_cd_f1n,\n 0x15_21_f3_03_fd_41_50_9e_12_2d_6b_76_61_d6_2c_91_1f_ba_ee_ee_82_1f_a2_e1_1e_29_e7_0c_84_3f_c8_59n,\n 0x24_2a_f7_a1_07_cc_7b_d9_c1_c5_b2_53_7e_5e_eb_79_4c_67_78_27_c5_66_34_18_bb_9a_2c_9d_ce_f2_91_57n,\n 0x1c_c3_0d_48_13_bb_ff_4b_91_74_0c_c8_ba_20_bd_06_af_a9_d2_17_ea_01_2c_e1_2d_14_e0_27_13_01_e7_7dn,\n 0x23_bd_29_22_b4_25_af_4d_8b_db_58_7b_1c_c0_8c_cd_ff_01_0a_b0_30_43_16_64_89_9a_4a_32_3b_29_73_5fn,\n 0x15_0f_ab_59_86_ee_f5_bd_1f_ef_a9_2a_ab_50_02_53_0d_9f_54_cb_7e_65_63_3c_d5_c3_10_55_5e_0b_39_0cn,\n 0x18_b4_3c_b0_64_bb_f3_c8_3f_c2_f1_58_ae_78_5a_ab_c7_30_df_7e_5c_6a_e3_bb_ca_ef_61_3b_c0_ae_70_7an,\n 0x13_bb_42_eb_4e_73_78_70_60_88_9b_e1_75_01_8b_8f_2e_5a_28_a1_18_1d_77_7e_2a_ac_1c_99_3a_cd_66_98n,\n 0x1a_b8_9b_56_6d_ff_36_a9_5f_80_50_e8_43_49_47_40_ba_34_cd_3b_35_d0_b7_c9_7b_d2_d7_05_ef_84_2a_bbn,\n 0x2d_5f_d9_0e_71_7d_8a_f8_d5_b1_0f_73_84_4c_6c_a5_0d_00_59_40_af_09_54_6d_e8_e3_4f_f9_91_43_5f_b6n,\n 0x0b_83_6d_0d_58_19_14_21_8d_b0_e9_3c_85_98_b3_88_97_2a_47_9b_35_c9_33_cc_ad_98_4a_0b_6c_e9_4b_c9n,\n 0x02_ec_df_b1_50_fa_2e_ec_f4_c3_4c_76_d5_6e_b2_9a_44_a9_40_03_99_6f_e3_c7_fb_9d_64_d7_2d_35_2e_3an,\n 0x23_57_8d_7d_5e_c8_ed_31_b2_d7_eb_79_45_64_d3_89_02_5f_ef_d0_06_52_19_5d_ad_12_2b_40_0a_51_96_b5n,\n 0x1c_cf_b8_b4_d9_3e_5e_08_c7_c4_c4_f3_06_35_70_6f_c9_df_75_93_75_ff_fa_68_35_a4_c1_c2_7f_22_27_96n,\n 0x1c_0c_b7_35_34_61_64_ba_93_30_88_81_d5_36_f5_88_88_73_d4_44_1e_30_83_75_e8_e6_b7_38_a1_c0_cf_d3n,\n 0x0b_73_e5_b7_8e_0d_23_f7_7b_0f_df_d0_01_73_81_91_c3_30_29_c0_6d_bb_f6_f4_10_77_4f_24_2d_00_23_e3n,\n 0x04_47_15_c0_0e_5f_cb_99_c4_35_18_9c_1e_c2_4b_3c_e9_b8_31_14_21_f5_b1_f3_84_84_ab_76_92_c6_c6_32n,\n 0x1d_3b_36_47_b8_ea_34_5e_92_cc_28_6f_1b_c1_8b_6e_a3_b3_a8_55_1d_0b_f1_a5_b9_52_14_cf_23_10_f7_00n,\n 0x10_44_b9_15_a3_39_a2_58_2a_6e_7f_b6_a6_6f_2b_97_bd_61_82_f9_94_6a_da_1e_5d_3f_76_4c_e1_ab_0c_e0n,\n 0x18_13_db_22_51_e3_d9_04_d0_d3_0b_b8_6b_e2_d7_c5_80_3a_92_b8_73_75_df_d6_8f_97_6f_46_22_a5_15_34n,\n 0x28_08_15_2f_56_85_bf_e5_77_c9_4f_ca_9d_70_96_2e_5a_08_e0_f6_fc_d8_d9_21_82_df_7f_b3_b2_b3_92_4en,\n 0x2d_a9_40_a1_e8_c8_9a_6f_98_3e_3f_98_8a_4e_79_75_9b_5c_69_87_ba_11_f3_f5_1d_9a_53_d3_fd_1d_40_11n,\n 0x20_fb_1d_86_9c_d1_92_c8_7e_34_25_4e_4b_48_f2_22_f9_97_b4_52_6a_3d_3f_9c_9f_ed_f5_1c_d1_67_02_69n,\n 0x1b_d4_9e_ee_aa_c3_92_7d_19_82_82_90_65_a4_db_42_69_8c_0f_5d_5f_eb_cf_d4_8e_c3_bc_10_59_95_9f_1an,\n 0x13_51_12_b3_74_48_06_42_31_1b_6b_14_27_04_f2_16_84_dd_02_4e_0a_d5_5a_e0_27_28_ac_32_26_89_e6_6dn,\n 0x2c_9e_24_5c_71_83_2c_69_0a_7c_a3_db_1c_da_ad_cd_d7_cd_d3_95_70_be_dc_14_a8_7a_ce_5f_72_6f_fe_acn,\n 0x1a_31_9a_5a_b3_b2_a9_e9_5e_b0_c1_1a_5a_12_b7_9e_85_69_29_18_6a_1e_e3_eb_28_72_ad_86_be_73_f5_64n,\n 0x1a_12_3c_31_f9_9d_5e_a5_5b_c4_2e_e3_22_b7_c0_70_f4_cc_c1_fc_26_be_ce_9f_4f_3e_b4_4b_90_51_38_08n,\n 0x0b_23_ff_de_a0_65_c8_e7_5e_a0_d3_bf_d9_66_df_f1_36_d6_60_2a_fa_94_32_84_39_59_0f_f3_e2_00_ef_76n,\n 0x1c_81_f8_e0_14_ab_25_b8_ed_79_c5_e1_bd_bf_86_9f_b1_be_1e_ae_dd_87_5a_75_39_67_80_46_bd_1a_33_14n,\n 0x01_bf_c0_92_f4_70_1d_4c_ae_ff_6e_d3_26_05_cc_0f_35_43_ef_52_38_58_bf_7d_e9_22_36_33_54_ac_33_70n,\n 0x16_06_8f_c8_9b_33_88_fe_5b_d5_41_a7_2e_eb_f2_97_68_9d_1e_6f_97_89_25_de_ed_56_f2_ad_a6_d0_1f_ecn,\n 0x03_bd_9d_c1_21_e7_e9_8b_54_94_41_bc_f0_73_b5_64_d5_a9_d4_0e_30_20_de_4d_1a_71_03_9e_f2_63_03_36n,\n 0x1d_0b_bb_93_d9_c9_27_a6_09_ef_f7_6c_3c_a9_5a_c6_e9_4e_18_93_c8_8e_f2_a5_44_fb_5f_62_95_da_72_c2n,\n 0x20_e9_e2_dc_88_ae_a4_58_83_e1_3d_b2_06_22_2e_4c_21_d4_e8_eb_95_42_02_f2_b9_0c_21_1c_ac_96_c9_c8n,\n 0x0a_69_de_c0_cd_8a_39_9f_ff_11_90_2a_34_af_e9_a1_33_1f_51_ad_13_a7_ee_5a_71_ef_d7_eb_85_94_da_e5n,\n 0x08_67_c9_10_85_0d_2f_23_0f_7e_5a_03_b3_cf_0d_c0_32_64_d5_b6_f2_66_11_05_b6_75_c5_ff_41_57_5c_89n,\n 0x14_56_03_f8_fb_5a_0c_f5_6b_f7_1b_9e_6f_ff_f8_31_27_c2_d0_bb_36_8d_e2_3c_69_fc_7a_94_c8_44_c4_04n,\n 0x2b_8b_b7_6d_ce_af_dd_4a_12_be_1f_c9_43_7b_9d_40_6f_fe_21_44_b7_be_46_d9_a5_6a_41_0d_17_da_75_c4n,\n 0x08_9b_c5_ce_0f_d4_1d_90_b1_aa_65_9d_e7_83_46_e0_5e_ac_7d_05_4f_1f_a5_fa_7d_b9_1c_07_fb_3f_a7_d6n,\n 0x27_ba_d7_8b_8c_fd_e4_7a_26_4c_b6_34_81_b5_a0_38_8f_13_39_cb_21_f2_cc_32_90_5d_82_fe_b4_e9_3f_93n,\n 0x07_04_3e_e7_03_d2_b1_b6_ab_86_41_fc_ff_ae_cd_10_7b_cb_cc_03_4a_bc_fd_46_fe_96_7d_84_17_fd_37_20n,\n 0x04_f5_cc_df_40_36_bb_78_88_93_35_f6_86_33_fe_09_1e_0d_a3_70_d2_f0_7e_6f_85_4f_67_04_9e_54_c0_ccn,\n 0x15_b1_ff_e1_21_47_ee_71_e3_40_1b_33_35_e7_86_81_c5_34_bc_c5_8f_a9_f8_0a_81_30_50_9d_c0_82_02_56n,\n 0x10_9b_05_48_ee_f0_7f_bb_92_30_e9_2b_4c_fb_74_41_87_3a_44_ed_bd_26_5f_c1_52_d6_50_18_78_3c_d5_73n,\n 0x0f_07_c5_8a_a7_25_ae_b7_31_b6_af_08_7e_7c_5c_ce_c5_a3_79_6a_d7_4c_87_2a_74_26_fb_eb_7f_ec_e8_7dn,\n 0x1d_13_42_dd_ce_6e_44_69_f7_0a_94_8c_e1_09_10_8d_3b_1e_75_b3_73_3c_e7_c9_a2_37_a4_c5_e5_27_45_14n,\n 0x06_35_be_9e_7e_84_43_d3_b2_88_6d_15_43_44_d2_43_da_a9_57_8c_82_a3_8e_25_28_85_c4_f3_bb_13_8b_10n,\n 0x1b_d4_92_2a_c7_58_c0_f4_c5_0b_b3_03_5b_7e_d4_b5_61_8a_d0_b7_14_ab_46_8b_5e_ab_98_8c_fd_8c_29_59n,\n 0x2e_1a_0e_6f_84_c9_33_42_b4_d5_29_f8_81_84_55_49_76_e2_1e_c6_18_0c_58_0e_4a_58_63_4a_7b_74_75_9dn,\n 0x2f_15_89_be_5a_12_76_98_a4_78_3b_a4_87_22_e4_c9_a9_08_8c_7c_9e_dd_9a_ad_f9_15_2b_9d_d8_39_f2_b5n,\n 0x27_3d_ba_f6_45_f1_18_54_66_bf_c9_9b_67_6c_61_87_f8_41_5b_9f_a2_e1_dd_6f_c6_43_5f_0a_3e_f3_55_26n,\n 0x1c_11_b7_6d_f0_42_38_5c_eb_6d_0f_e2_69_cf_a1_50_69_59_19_e0_47_b4_80_7b_d6_e9_a3_cd_4b_4e_0a_22n,\n 0x16_a0_98_8d_42_34_ec_b0_90_f0_9d_b6_bd_e7_9a_f3_53_94_c9_b3_cc_fc_6a_0b_b4_44_df_c6_c7_86_73_59n,\n 0x21_5d_02_57_30_ad_a1_78_8e_20_24_cc_e2_7f_2a_53_ce_80_4a_93_a2_fc_60_45_2a_0c_f9_48_fb_03_a8_b3n,\n 0x2c_df_db_08_47_de_80_99_ed_8a_94_18_22_b1_5e_f9_e9_1f_cf_64_32_5a_f2_20_2d_e4_2e_ac_92_bb_df_21n,\n 0x09_46_db_e9_99_8d_ec_54_1d_a3_9a_9d_8e_a5_44_a7_e4_49_e2_6a_4f_9a_a8_7c_28_c7_e2_f1_18_96_13_42n,\n 0x0f_95_89_82_b4_3f_8f_dc_2c_37_85_c4_ac_3e_63_1d_5c_89_fb_94_e0_c7_24_a7_a6_5c_1c_32_18_b6_7e_40n,\n 0x18_50_21_b1_92_27_4b_1b_61_95_2a_d2_19_ca_b6_1a_cc_3b_36_fd_36_18_8a_1b_8c_12_e5_6d_99_8c_5e_84n,\n 0x24_d5_6b_4d_52_b4_7f_9b_c6_dc_b7_ad_35_3e_ec_92_7c_0e_7d_42_12_a2_e6_de_0e_ac_44_a2_10_26_0b_35n,\n 0x10_98_d5_8f_e7_b5_35_23_ee_e8_15_10_b0_83_fd_ad_ca_00_4b_54_94_68_cb_d2_01_b0_a3_1c_8b_7e_1d_17n,\n 0x24_a9_9b_c4_84_81_06_83_90_bc_48_33_0c_11_3b_79_21_cc_ff_02_8a_d5_04_58_39_76_e7_e3_0e_fc_3c_88n,\n 0x12_a7_fd_0a_7a_6e_d9_c0_ea_ca_34_65_ae_55_7c_f3_18_70_51_46_f7_2f_7b_4e_4a_b2_49_34_db_b4_c6_73n,\n 0x0d_42_ad_ee_44_7d_6a_ea_66_36_5b_f0_1e_5b_60_7c_52_84_80_89_a8_45_d1_fc_ff_ae_9f_47_e0_71_6b_16n,\n 0x00_d5_d1_09_de_25_79_f4_e5_ca_27_63_a3_7d_13_10_93_0d_dd_ef_69_c2_02_3b_16_7f_fe_a5_4b_0c_4a_aan,\n 0x2e_fe_7e_74_4a_2f_0e_45_06_93_50_77_31_d9_c0_49_2a_07_7d_19_4a_02_21_00_22_ac_c5_9e_7e_a4_69_d4n,\n 0x1d_c3_76_44_bb_ec_dc_24_f8_5b_71_3f_d1_9a_f5_5b_6f_ca_d3_11_b7_7b_5f_e3_03_0a_96_d5_33_4b_b8_33n,\n 0x24_31_15_56_8d_a3_64_82_d0_04_00_81_76_a7_54_27_fd_a3_66_c9_d0_7b_cf_56_c7_b0_f4_82_1c_26_37_64n,\n 0x2a_c9_10_6e_5d_82_d4_e2_00_b2_57_b0_b2_22_cb_30_95_73_27_be_ae_98_34_fc_42_80_46_a0_f5_92_6e_71n,\n 0x16_b8_52_94_45_70_28_7d_6e_02_c3_5a_63_00_39_26_35_82_0c_e4_88_3f_d0_93_82_60_f8_55_55_c6_c0_b5n,\n 0x29_df_a4_00_16_1b_66_1f_52_64_b4_15_84_60_d4_77_6f_3e_86_2b_7b_82_35_11_94_30_f7_67_8a_2a_2a_74n,\n 0x25_90_8a_5c_fb_1c_21_0f_3a_fc_d6_e8_d6_31_73_a6_d7_9d_ce_75_35_ae_dc_57_aa_ee_99_43_26_c3_86_b3n,\n 0x14_80_f5_6b_3a_68_ef_41_e5_ea_44_df_f2_54_aa_dd_db_f1_9d_50_f0_e9_90_96_5f_cc_89_bd_c3_bf_35_46n,\n 0x2c_14_90_f9_33_5e_14_db_fa_ea_c6_67_55_95_f6_b1_08_07_bc_fa_3e_49_a7_6e_fc_90_32_f5_f5_3a_f5_b8n,\n 0x18_33_f0_ce_5d_c5_29_d3_57_6a_7f_b4_81_d8_f7_0f_a6_e2_17_0d_31_c1_03_1a_25_5c_d8_00_fc_b2_62_b1n,\n 0x26_d3_64_61_a1_c9_f3_a3_65_35_90_e8_27_35_54_f8_1f_d5_1c_c4_30_f2_5b_ee_2c_cc_f5_5e_2e_76_27_33n,\n 0x29_02_7f_0f_b3_81_31_8f_8e_ac_14_af_24_f7_6e_17_07_dc_6b_ed_27_10_36_22_56_f1_6d_bd_a6_9a_90_aen,\n 0x0a_4c_de_8f_3d_42_ed_48_fb_3d_aa_75_89_03_6f_49_94_17_6c_df_07_a2_ec_c3_da_fb_54_f9_d4_5d_9b_03n,\n 0x1f_be_c1_2f_ef_fe_08_89_cc_4a_31_fc_ae_7d_81_9c_ec_48_27_85_e1_90_dd_a2_53_6e_2c_40_11_da_87_04n,\n 0x1b_26_f2_38_c7_bb_86_36_78_2b_c0_ee_48_a9_31_a3_09_27_46_84_01_4c_e7_27_14_00_5d_98_b8_d8_c6_66n,\n 0x08_ff_4d_f0_c0_27_e8_88_07_b8_b6_e5_5e_6b_f7_e6_43_fa_60_c6_6d_74_a3_3d_c8_44_ec_1c_34_59_8e_e9n,\n 0x22_07_c1_31_8e_95_9e_4a_00_2a_d5_01_5d_38_1b_29_91_5d_e2_26_29_a6_12_a1_b6_da_38_9a_b8_6f_bc_24n,\n 0x09_fc_b0_7e_82_19_35_39_b7_1d_0a_05_2d_39_77_99_6a_09_f8_42_16_bc_c1_e4_6f_11_ac_84_d5_d7_5e_f5n,\n 0x19_69_f5_c2_0e_80_f1_0e_71_ff_42_fe_5a_f7_be_c4_7e_e7_53_31_53_67_8d_d2_ef_33_f1_e9_1f_bf_98_cfn,\n 0x07_b6_5d_6a_87_4f_57_06_28_24_79_ce_32_3f_36_bf_23_bd_fb_c3_47_69_e1_1a_c3_4e_f2_49_4f_2b_ff_85n,\n 0x09_e9_ac_4c_51_b6_1c_ea_da_2c_86_1e_27_6a_1c_06_65_f1_b0_69_14_2f_14_4f_80_c4_66_49_a6_5b_c4_25n,\n 0x08_b7_4e_b9_0b_0e_5b_30_13_34_75_15_fb_cf_e9_4d_8f_ea_cf_d5_ae_fb_95_46_e1_e5_ad_f5_9a_b4_ac_f7n,\n 0x19_35_17_14_ce_3d_2e_3e_93_ec_90_15_c0_2e_0f_a0_56_f6_8e_cf_8d_1c_7f_ab_a5_19_de_a1_16_e0_21_7an,\n 0x03_c4_a1_5b_c9_74_88_13_9c_e1_cb_92_8f_47_45_05_ad_5b_c7_89_3a_53_b3_cf_1c_9b_a2_1d_51_b0_04_10n,\n 0x0d_8b_77_73_df_33_5b_6a_9c_f2_98_b0_87_21_d6_40_29_0a_0b_17_d5_06_0f_02_22_f2_63_c7_41_7d_25_ccn,\n 0x1e_14_c2_12_fb_76_79_67_6a_f5_0c_37_11_b1_91_7d_65_99_f6_20_65_2b_8b_df_d2_44_25_16_67_ae_d9_cen,\n 0x21_86_cc_6c_dc_52_71_29_1a_9b_11_1b_98_bd_e5_0c_62_a2_80_43_d9_0a_ef_65_41_71_bb_70_e4_29_fa_den,\n 0x07_68_db_d4_b9_07_4b_43_54_67_92_7d_11_87_37_8c_4b_17_46_85_ae_ec_a3_57_88_de_66_5f_28_12_a1_95n,\n 0x06_3f_5a_88_8b_7b_cd_3f_8a_e4_06_ba_40_e1_12_07_be_01_36_18_ad_5f_81_1c_c3_17_fc_1e_55_8c_79_dan,\n 0x17_80_7c_dc_2e_72_f0_5b_33_71_fc_e9_8f_de_e5_f3_55_3e_b4_ce_92_e9_39_8d_70_2f_93_8c_f9_ee_74_1fn,\n 0x25_f3_dd_0b_e3_bd_f8_e6_32_af_dc_bd_43_1b_e7_ae_66_01_54_93_04_47_5c_a5_80_d1_37_41_e2_a7_fd_92n,\n 0x22_74_a4_5e_2d_69_06_4b_ce_67_e2_eb_66_4d_b4_5a_ef_4f_1d_9d_cc_cd_15_7b_dc_ee_f7_aa_e1_45_f6_d5n,\n 0x08_7e_e7_93_6d_eb_77_a9_7b_8d_74_73_f5_34_36_cf_3f_b1_ce_85_df_07_ab_68_a0_28_b4_6d_ea_84_17_01n,\n 0x0a_ae_c0_f7_5e_53_08_7d_b9_37_a9_74_ed_eb_32_ea_be_b6_33_ec_e1_18_0f_1f_84_37_ab_c9_09_9d_f1_ben,\n 0x10_cd_f0_1e_8c_61_26_3b_44_6c_3f_7a_10_cc_29_fd_01_ed_91_fa_d9_89_1f_9c_6f_cb_7b_5c_e4_38_ba_95n,\n 0x17_66_27_a9_20_72_fa_2b_b6_4d_d5_df_f9_cc_4a_0d_5b_ed_cf_3f_22_c9_1f_e9_91_cc_65_68_a4_fb_54_cen,\n 0x0e_ab_0e_15_8e_2f_67_2c_68_a7_a0_a4_83_28_e2_11_79_a4_17_eb_0c_65_b1_b6_17_64_4e_1c_52_c4_b4_25n,\n 0x2e_df_1e_a1_cd_97_d1_a9_1f_e7_90_1e_64_c0_f2_d1_2f_79_65_74_1d_a5_a7_c7_fa_be_e2_5e_ac_3b_47_een,\n 0x1f_c0_71_37_86_3b_1d_33_7b_b5_da_c1_8a_d9_12_37_73_96_80_a6_9e_ed_5d_a0_bf_35_06_2f_4d_4c_ac_c1n,\n 0x03_7b_df_f6_80_25_bd_dc_be_d5_54_ce_ac_3d_f6_6a_9e_b2_98_96_6d_79_30_8a_e4_14_d3_42_27_aa_f8_62n,\n 0x17_7f_68_95_7b_a0_7d_a6_71_b9_dd_91_9f_24_33_df_e5_f3_63_b7_4a_3c_16_16_94_81_c5_7c_5b_5c_07_a3n,\n 0x06_d4_7b_99_21_e2_50_2c_2a_bb_01_38_d3_b1_02_8b_02_b8_5f_8f_42_36_2c_f4_36_71_b6_0a_69_e9_e6_0an,\n 0x13_1d_58_cb_8a_41_a7_53_e7_67_e1_e9_7c_ef_60_d0_00_3e_49_c8_cd_1f_0f_51_01_c8_61_b1_77_71_5d_a5n,\n 0x23_6c_a7_62_35_d9_e6_94_72_c9_98_5f_84_2e_62_6f_33_b3_fd_4f_d5_f5_43_81_0a_0c_5d_21_43_ed_4c_9cn,\n 0x2f_e7_f8_5a_57_99_16_54_59_07_f2_a0_22_02_b8_36_96_b6_4d_1f_61_e8_13_73_0c_eb_c0_6d_06_85_37_f2n,\n 0x04_95_23_26_bd_26_ef_ed_64_63_7d_4f_c0_f7_a4_bb_52_8e_3a_34_12_60_12_55_88_e7_5a_aa_88_f6_2d_71n,\n 0x00_c2_df_b5_77_b7_8d_ad_18_83_7b_b7_0c_8e_29_90_f3_23_25_bb_41_8f_4f_66_26_3a_2b_63_f3_f9_83_84n,\n 0x12_2c_68_22_93_b4_89_2d_51_25_59_91_f9_cf_af_96_e2_51_40_bd_6b_37_33_7e_a7_df_ad_5e_12_42_32_8an,\n 0x11_dd_c5_40_d4_a1_10_e4_82_a2_45_51_12_ba_67_ff_b3_ca_3e_e5_47_11_49_8d_b1_a3_72_b9_cc_23_d1_45n,\n 0x2f_6b_d7_1f_6b_2f_3a_f3_d4_68_82_0c_80_aa_ad_72_ee_48_a3_37_f1_fe_3d_7c_e0_1b_b8_92_42_10_6a_1bn,\n 0x0d_6a_16_d1_36_ee_77_c3_5f_21_6f_1a_a0_ca_9e_09_bd_c2_59_e7_15_84_8c_e0_47_be_05_6a_4a_09_f7_87n,\n 0x2e_7c_60_13_d1_be_62_a7_8b_4c_00_15_46_5f_b0_b2_93_a0_7d_46_05_dc_a6_42_21_09_09_61_64_b2_2b_2cn,\n 0x0d_6b_bf_18_b7_eb_68_4a_de_c4_12_71_35_70_d3_bf_b3_6f_d0_f5_69_fb_36_47_4f_69_4b_11_b2_94_8b_a5n,\n 0x12_40_3c_f8_87_7a_e5_10_b7_31_4b_7c_75_ab_5b_0f_b7_fc_de_2e_6a_b4_81_21_28_8d_c0_4d_5b_51_e5_94n,\n 0x15_1b_3a_cf_4c_e3_29_7d_86_e8_23_a7_20_67_c7_17_17_38_21_50_c0_80_ca_3f_80_12_bb_0b_a2_fe_d4_7bn,\n 0x2a_13_96_70_20_63_c6_2e_07_c5_12_b9_d4_d1_81_d7_1d_88_b5_68_1a_7e_47_fd_11_4c_fb_68_2f_af_4f_98n,\n 0x25_cc_49_f3_50_8f_ca_18_73_a6_f8_5b_65_50_b6_e1_04_1d_90_ce_53_5c_63_8d_2b_52_3a_61_dd_78_69_c6n,\n 0x1f_d1_83_27_a0_48_2c_39_47_23_b1_52_c9_05_44_72_9c_f4_04_0b_cc_ed_94_e8_a3_7e_1c_9e_30_76_83_e1n,\n 0x0b_27_56_6c_e0_2b_d4_cd_22_73_fd_53_13_36_c0_eb_fe_65_a5_b0_da_12_3c_b3_1b_bc_89_53_3e_51_8b_3bn,\n 0x1a_9e_15_3c_e8_2b_f2_a6_fa_0d_71_d1_88_9c_24_b5_f1_11_d2_62_c8_2c_f3_45_0f_9c_a8_06_08_ec_15_ffn,\n 0x07_ca_79_4d_5a_c4_f4_0f_0f_ec_4d_69_e3_a3_cd_1f_47_2c_74_46_e4_e2_7f_c1_fa_4c_dc_dc_86_05_ac_c7n,\n 0x2f_da_f4_4c_70_7d_82_89_da_93_73_53_6a_6f_61_b6_64_94_fa_9e_9e_78_2e_0e_41_04_05_ef_ba_f5_04_adn,\n 0x15_4d_7c_7e_94_ee_06_a4_36_fd_f5_9b_50_1b_76_3b_e8_dc_7f_12_ae_ec_07_52_b7_91_79_26_7d_64_3a_74n,\n 0x2c_75_3b_77_79_a3_90_9f_a0_cb_06_95_a9_f3_3a_67_35_32_bf_5c_f3_94_f4_0b_b8_db_5e_c5_fb_7a_64_een,\n 0x14_4e_f4_0d_f7_a2_62_ff_41_79_5d_09_59_01_12_d6_3f_ea_e7_5c_35_33_c0_ab_4b_b9_ae_43_d6_12_01_a8n,\n 0x22_c6_8d_6c_d4_bb_18_16_37_91_27_4a_28_ba_33_b0_d1_38_e1_48_d6_d8_0b_46_9d_6e_95_19_7d_16_48_83n,\n 0x27_ca_38_cb_e8_b2_ec_8a_92_7b_6f_a0_11_e9_82_32_3e_56_da_93_2c_24_d7_30_95_17_7f_e7_f8_aa_97_9bn,\n 0x03_69_94_c1_69_73_ea_01_24_41_db_ae_79_2f_b3_d0_6b_13_9a_dd_d7_cc_c0_c0_f3_53_be_33_d8_87_3e_a0n,\n 0x24_2d_7d_1b_b8_ed_36_58_03_50_34_b5_5e_28_b4_31_38_c5_6c_7f_a9_c0_58_69_78_05_6a_a7_7d_ec_fd_3an,\n 0x19_45_76_54_70_27_c4_22_4e_9c_f6_de_76_2a_51_69_ca_5c_18_ac_5d_b9_01_08_bd_76_02_1b_b9_b0_ce_f2n,\n 0x0e_82_3a_a1_16_24_ee_57_1f_23_da_02_1d_4d_79_90_56_3f_c9_89_8a_7d_0c_e6_84_e5_35_fe_c7_9f_cd_d8n,\n 0x08_28_58_a4_db_28_39_19_b5_6c_0b_c0_8b_89_38_67_24_b9_08_68_a4_ba_17_0b_b1_cc_f5_e1_12_20_5c_4cn,\n 0x02_17_82_26_75_af_ac_3d_a4_a9_13_7e_0b_17_25_32_88_4a_a6_70_f1_42_da_68_95_69_db_24_f5_b0_d6_50n,\n 0x27_4c_61_4c_2e_39_2c_ee_89_6b_78_50_aa_7b_6f_e9_52_b7_68_19_59_fb_fd_79_13_b4_3a_f0_f5_85_8b_b6n,\n 0x27_d3_55_72_89_5d_61_ef_77_99_45_92_fc_75_25_1f_44_0e_5d_12_01_33_25_20_49_38_5e_e1_be_25_aa_e3n,\n 0x2b_39_1a_cc_9c_8e_45_2b_35_f3_1c_91_bc_7d_e2_7e_00_d3_e6_25_41_3d_27_f6_d6_0c_39_d0_0c_74_bf_7an,\n 0x1b_63_20_cc_8a_cd_98_c9_2c_a8_49_a5_b3_ae_52_f2_de_36_84_74_dc_e7_27_a0_06_9e_97_cc_0a_54_6b_5cn,\n 0x22_86_07_5e_6a_96_f1_a5_5f_ba_6f_84_b3_ca_49_74_e8_70_16_86_4a_ed_62_73_5f_f0_d4_28_c0_ac_91_f4n,\n 0x18_aa_da_17_18_22_e8_e1_dc_3d_a7_69_17_fe_d1_63_a5_23_bb_f8_21_23_dc_98_f4_c0_97_e1_7e_11_de_aan,\n 0x0f_c3_fa_b4_5d_40_5f_a7_15_ee_3a_c4_a2_79_c7_00_38_85_e5_20_23_e6_e3_6e_5d_71_f0_5c_f5_f3_03_5an,\n 0x1c_e9_95_09_af_24_e0_48_92_5e_aa_d2_6d_29_4c_d5_55_cd_12_e1_d6_58_81_77_7e_cd_a6_94_a5_e5_2a_32n,\n 0x2e_26_c1_7c_92_11_63_b5_bb_3a_ad_23_ff_ad_d4_7d_d0_dc_44_49_b9_4c_90_ea_3e_b4_e4_fe_f1_38_f7_27n,\n 0x15_11_6a_7c_92_e6_d9_d4_6f_b7_fb_51_ad_ee_5a_86_2a_a2_fa_76_2c_69_09_91_80_4a_ea_7d_f5_cf_d3_f5n,\n 0x18_a2_6a_08_00_fc_f2_88_aa_7e_98_f0_47_31_72_10_e6_65_6c_87_be_90_3b_f1_9a_92_e7_c2_a4_99_c3_96n,\n 0x22_d7_a4_0e_7e_4c_1e_76_db_fb_cc_e1_60_1c_22_46_9b_7f_bf_dd_05_5a_3f_95_3c_fc_fe_eb_47_a8_5c_7bn,\n 0x0a_e7_71_48_8e_b4_bf_10_7c_da_30_42_dd_a3_49_58_99_ec_5f_c4_37_92_15_08_fd_29_d5_bf_21_80_7a_fen,\n 0x17_10_4e_04_40_a8_12_a3_3f_82_5f_e5_7d_a9_9d_de_13_c1_bd_3e_10_de_8e_c9_67_a5_de_ee_23_4c_d7_01n,\n 0x26_80_e4_af_c9_3f_bb_eb_97_2d_84_2f_18_fa_3a_35_e1_ce_82_2c_e0_2a_62_9c_36_96_e2_cd_b2_89_4a_5en,\n 0x0d_64_fd_a9_3a_ba_5c_38_4e_b3_9b_fc_14_4b_ea_57_b1_3d_11_b2_7d_89_32_3d_2a_e2_74_8f_d5_4f_16_d9n,\n 0x0a_ea_cc_63_51_39_00_96_46_db_89_41_41_0c_81_9e_08_7a_bc_60_17_09_b1_f9_23_f0_4e_a6_7b_5f_58_f3n,\n 0x0a_8a_2e_d2_b2_15_8f_e6_44_3b_c3_b1_17_54_c1_45_21_db_19_33_35_61_6c_78_5a_07_3f_69_cf_15_bf_38n,\n 0x07_b1_33_a2_01_73_9e_e2_04_c8_1d_f7_8b_20_a1_3e_00_fd_8c_0a_38_69_42_79_4c_29_18_7a_ab_62_73_bcn,\n 0x11_8f_bc_76_b7_f8_61_e0_2e_9a_e5_ba_51_69_60_c9_11_42_ad_7c_4a_f1_15_63_e1_ad_ff_97_f8_63_ce_b5n,\n 0x27_54_b4_ff_47_36_81_f3_06_9e_df_ab_e2_1d_c7_5f_41_23_a0_cc_ad_55_97_d4_27_79_a8_12_0f_54_f0_22n,\n 0x19_03_60_a0_36_66_87_14_83_76_75_f7_e5_9f_df_15_fa_57_63_4f_4d_b0_c2_c2_4a_80_d2_69_51_c1_dd_c2n,\n 0x22_29_22_f3_67_0b_5f_65_cf_34_b2_b2_66_5b_40_a1_87_f3_c3_03_c7_6b_ed_52_01_70_73_a0_a1_8d_bf_53n,\n 0x10_9e_9f_c2_0a_cf_ce_cf_3d_47_c0_4a_fd_fb_a9_26_f3_0e_11_72_a5_d5_06_d1_24_18_18_ae_e9_cc_7c_55n,\n 0x16_21_3b_42_dc_9d_d4_c9_ef_91_50_0a_df_2e_f8_70_88_51_78_73_74_dc_ee_e4_d4_5a_66_45_a3_a6_9b_30n,\n 0x24_02_3e_a6_8a_2a_2b_00_8a_cb_c5_d4_a1_5f_cd_09_42_b6_7c_e9_52_b0_e1_a0_3a_d1_75_06_6f_75_59_20n,\n 0x24_74_04_c4_8f_aa_06_e6_c7_2b_1d_05_0b_90_5f_a3_eb_d7_74_59_6b_4c_fe_6b_b4_d5_7a_c3_80_70_85_9en,\n 0x1d_86_82_31_e2_df_13_3d_c0_21_2c_62_48_17_9c_ea_17_cb_0f_71_c4_cd_82_7f_53_53_80_62_30_d8_91_6bn,\n 0x0c_31_47_49_55_9c_13_48_86_fc_12_ba_13_26_e4_ff_dc_33_02_8d_8e_ac_d3_41_f5_10_f1_de_a2_be_37_aen,\n 0x0c_c1_c3_3b_53_20_c9_11_b4_7e_ee_03_c4_d9_6e_a2_b2_5b_cd_26_e3_71_1d_28_cb_15_2c_bc_5b_87_d2_cen,\n 0x05_f4_c3_60_5e_a0_9d_4b_73_7b_29_fe_e8_7e_1c_2b_a7_4d_33_2b_c1_9e_6d_3e_8b_a9_47_f0_eb_39_99_acn,\n 0x05_bd_7c_e4_41_a3_a7_27_86_31_2e_63_86_6b_b9_86_ad_bc_b8_47_b0_64_76_f9_8c_6b_7f_8b_8f_04_24_57n,\n 0x13_fc_4c_0e_95_02_81_ef_4e_96_ec_a6_03_55_15_2f_7c_0b_33_5e_0f_36_bc_1c_dd_e5_f3_95_2d_ed_c1_32n,\n 0x15_3c_2f_89_d6_68_1e_7f_94_df_51_1b_9f_19_3e_28_76_88_4f_ae_e1_bd_3a_ec_26_bb_93_49_3a_06_4f_03n,\n 0x16_fc_fd_6d_dd_24_2b_e8_cd_49_82_67_8c_ba_ba_f4_01_0b_e4_79_78_76_4e_e4_d1_4e_95_2d_c4_a3_a1_18n,\n 0x15_54_35_d0_2b_33_ce_45_b9_c3_b6_f3_f1_09_09_30_fc_0a_9f_a9_97_88_92_7e_50_47_21_ea_06_68_cf_7cn,\n 0x06_69_fa_7d_44_0e_3a_06_db_6f_b8_0c_87_6a_36_24_5b_b6_93_bb_79_60_64_64_21_62_1f_c2_c3_91_c5_c1n,\n 0x2b_57_df_93_a0_96_e7_8d_7f_14_eb_11_7a_9a_5c_5e_f6_9d_96_cf_45_bc_80_7e_55_d8_9b_f9_80_e8_ac_76n,\n 0x1e_8a_7d_19_a6_76_b3_26_3f_85_a8_48_2d_95_d0_f3_e7_6b_e0_b6_e5_c9_ac_10_7a_12_fb_9e_65_5c_87_13n,\n 0x2a_6d_e0_bd_ed_2b_be_2b_58_66_80_1f_88_0e_47_e6_bf_a6_90_05_a0_c1_85_89_7c_72_ef_b5_6b_d9_8a_87n,\n 0x09_9e_d3_a2_ae_3f_0f_6d_0a_67_a1_f7_9b_55_a1_35_bd_06_6c_c3_2e_59_42_a3_fa_25_72_de_13_48_f8_40n,\n 0x1e_7d_7c_e0_84_65_42_13_56_5d_6e_e2_1b_f1_f2_7b_3d_80_27_a2_fa_a8_10_51_7e_fb_df_dc_a9_97_fb_f7n,\n 0x2e_70_3d_fb_dc_86_f5_58_6e_df_a0_22_1c_81_bb_68_99_14_32_10_bb_d8_c6_68_47_76_4a_a4_f6_3c_65_b9n,\n 0x05_05_b0_c3_df_9f_92_95_9a_41_fb_36_c7_2d_85_bb_82_6d_56_72_79_8f_e7_48_25_72_b5_f4_1f_37_19_4dn,\n 0x26_d1_fc_92_0a_b6_0d_7f_c4_e8_26_05_6f_7d_19_c7_82_75_08_7f_f9_11_6e_35_6f_de_30_28_40_ff_d3_acn,\n 0x2b_34_39_c1_6b_1a_f2_7b_d7_a4_c8_d9_dd_c6_93_4e_7b_9f_5e_10_aa_e7_cc_e4_0c_e6_a9_37_50_6d_51_0an,\n 0x1e_45_d8_6b_c1_84_f0_e0_86_02_0d_ea_e3_4e_53_ab_0e_e7_12_3b_3a_11_90_47_5c_6e_25_e0_6f_83_21_54n,\n 0x23_f3_e2_f4_9c_a1_c9_54_34_b0_34_21_56_17_2e_65_db_c6_c9_f8_32_1c_c7_5e_9f_15_a6_6c_3b_cb_09_c0n,\n 0x1d_8c_2e_51_db_59_d6_e9_6e_e6_9f_68_48_0d_1f_8e_48_c0_3b_c8_76_cd_79_15_d8_88_b5_b0_a1_1a_21_a3n,\n 0x1e_1d_c3_54_6a_86_03_2c_df_8b_8b_f7_f9_4a_44_73_0b_66_2f_8a_56_ad_86_2e_a1_24_7b_a2_ab_0f_3d_2bn,\n 0x11_47_e8_2c_00_df_45_e1_82_d4_16_b8_33_8f_fa_e2_99_17_8d_a5_f9_2d_8f_9f_91_53_c6_95_e7_85_94_47n,\n 0x0b_e9_44_56_b9_a0_3c_6c_bf_ab_9d_8a_34_b4_11_e9_1d_20_cb_11_f5_62_4f_ae_b3_f7_8f_38_24_7e_90_b9n,\n 0x0c_4b_d9_a3_aa_a9_23_f6_49_b9_cd_1c_bd_78_79_57_4b_26_6f_f2_f7_c0_c0_63_b5_c4_4d_6b_48_cc_a3_f7n,\n 0x06_19_8c_1f_e4_12_e2_58_87_11_5b_54_ff_87_eb_4f_1e_28_71_d4_cf_37_79_69_ca_15_1f_ed_5d_7b_4d_een,\n 0x1e_e9_0a_ae_68_a6_bd_a4_2c_34_a7_97_d4_d3_1f_79_67_9c_eb_41_b5_87_f6_19_d6_20_e1_f5_10_8b_83_9dn,\n 0x11_aa_53_60_b5_86_c2_14_47_71_1b_49_72_1e_9f_4f_dd_c6_b6_c9_8b_57_b8_47_72_d6_fc_6b_8b_e0_17_can,\n 0x1a_41_a6_73_90_f9_22_f1_0c_db_aa_a0_ce_5e_ae_f6_1d_66_b6_73_08_25_eb_98_a2_4d_25_98_7e_87_be_58n,\n 0x24_a2_99_7c_83_2f_ba_54_96_18_92_6a_fb_ca_d0_0c_e9_20_78_83_93_df_12_8f_8a_54_16_d2_62_31_61_5cn,\n 0x06_70_36_ca_f8_b5_7d_aa_59_ad_45_14_77_38_98_e1_b2_2f_8e_88_d4_54_bc_1f_8e_f0_c8_2c_c9_3a_27_72n,\n 0x2f_18_e8_53_f9_b7_b7_c4_b1_b4_c3_f0_d1_a2_57_0b_03_5f_d2_b4_23_1a_58_41_39_ad_b7_a1_12_21_bc_33n,\n 0x1b_38_74_14_49_23_94_3b_eb_66_ca_8b_79_8d_0b_b8_f2_be_7f_8d_d9_de_da_c6_d9_1f_c5_b9_e5_31_86_a1n,\n 0x0e_f5_84_9f_f4_58_a1_1d_c4_13_a2_d8_ab_ea_98_88_c6_22_41_c3_c2_85_af_e3_a1_b1_4c_f7_15_74_c3_fen,\n 0x19_6a_36_a2_31_75_3f_fd_0c_09_46_42_e2_7d_80_ba_20_1a_54_9a_f5_84_ff_a9_a7_0a_80_26_81_7c_a6_68n,\n 0x2e_02_fc_22_2d_d5_6f_e6_56_8a_34_5a_dd_3c_1d_57_78_98_a3_61_84_7e_58_b6_75_76_f1_2e_30_34_a8_c6n,\n 0x23_83_bb_ea_fd_39_1d_96_aa_f0_ba_74_81_46_78_67_c6_7a_d3_93_66_ed_8c_43_b4_25_20_c6_29_24_52_c1n,\n 0x20_de_2c_d5_ce_73_3e_a0_0a_7f_16_7f_68_6a_e6_71_92_63_73_21_cc_9f_0f_4a_a7_21_47_90_67_6a_3f_75n,\n 0x1f_1b_ce_33_43_9a_fb_8d_ba_b1_35_4b_46_a5_b9_ce_b1_98_0b_83_51_40_95_d6_5e_51_3b_79_35_1a_99_07n,\n 0x05_7b_8d_e9_d8_ed_59_3b_5d_21_43_02_ce_88_ee_08_f1_81_2e_f5_3c_ec_6e_05_ba_ec_16_0c_05_4d_67_47n,\n 0x26_77_7a_cb_d8_8e_93_2b_25_52_f7_81_3e_62_f3_68_ab_8b_1d_62_6b_68_55_02_25_3a_10_c8_05_0a_4a_55n,\n 0x01_58_9c_93_9e_2e_3e_fe_b8_cb_6c_10_34_76_87_91_01_fe_c7_a5_30_ca_18_fe_4b_d2_f0_96_ff_44_af_40n,\n 0x2a_36_b7_9d_87_c9_63_b1_f4_75_90_ec_c4_cd_69_14_23_46_a5_4a_e4_8b_c3_f5_73_ad_f7_19_b4_e0_97_19n,\n 0x0e_ed_87_70_8b_5b_00_a4_2a_f3_e6_de_58_d4_cd_da_f2_22_78_be_0e_e6_34_4f_2a_77_51_32_fe_10_7a_0dn,\n 0x2b_f8_4f_ed_63_a1_16_95_b6_39_72_7e_18_11_1a_c2_08_3d_93_6c_e6_4b_d5_1a_32_df_a9_f1_b0_e7_13_25n,\n 0x16_4a_60_98_07_59_41_c6_46_73_19_c2_37_24_63_c3_ec_7a_db_a6_f6_db_9a_58_ad_59_a6_78_f8_f1_8a_39n,\n 0x20_50_75_ea_35_58_a1_7b_0c_51_ae_3a_10_7d_89_86_09_e3_cd_5d_82_f8_df_8c_3f_74_b1_b7_3b_08_97_3en,\n 0x1f_1e_3c_76_fc_69_fd_8a_cf_a3_a9_bf_d0_af_69_5c_10_c2_bc_dc_e6_d8_f4_d1_f7_b7_6d_50_41_9b_43_76n,\n 0x00_69_98_2a_9b_25_bd_75_81_43_97_b6_d3_c8_a9_07_81_e1_73_3b_e5_7f_75_73_f2_fe_44_dd_35_61_8c_54n,\n 0x2f_17_58_29_41_48_1b_54_89_21_1b_ef_d4_bc_0d_ca_43_d4_43_2c_e1_11_53_a0_fe_73_5e_55_47_4a_23_93n,\n 0x16_45_31_ea_b3_80_bf_81_f6_31_3f_32_f5_c2_55_a9_ba_db_d4_ed_b7_76_7f_99_0c_46_b0_fd_be_9f_b2_97n,\n 0x03_1f_46_a8_b4_45_5f_f1_21_bc_18_4a_1c_35_51_d4_50_7a_17_c8_88_93_1f_3e_99_d3_56_a9_a0_6e_f8_acn,\n 0x11_33_4d_ba_a6_f7_f4_14_0d_14_93_bd_18_8c_77_62_8d_cc_78_2c_5f_f8_2f_1e_bf_41_ca_09_48_15_74_1an,\n 0x02_18_b1_d3_8a_6f_d1_1d_65_66_a5_2f_e1_36_e2_c8_2d_e2_29_69_8e_54_14_b3_6b_e8_99_7f_06_0e_89_13n,\n 0x2e_ff_ca_36_9c_f3_4f_74_24_8e_37_ae_3b_c7_42_99_18_7e_16_a7_5f_2e_be_40_46_70_60_50_0e_b9_3c_31n,\n 0x07_e5_41_38_f8_28_c2_4b_98_b3_51_13_92_86_1a_e9_c5_87_65_50_ff_0e_e7_76_66_3c_39_97_a8_f1_a1_16n,\n 0x29_7e_1f_b7_da_54_97_d3_db_d0_79_8a_14_6d_2f_ab_9a_c5_b0_e7_90_6d_85_88_23_81_87_b7_95_00_1f_b1n,\n 0x14_90_16_a7_17_fd_85_cc_7d_f7_f0_39_ca_6b_1b_8b_06_a5_bd_bd_a3_65_a3_3b_b0_ae_22_89_00_e5_3b_31n,\n 0x0f_9e_7a_22_12_4b_f5_0d_94_db_92_31_d6_36_85_12_2f_92_db_52_68_ad_21_48_ba_53_4d_c8_53_bf_c5_4fn,\n 0x1a_35_19_a6_2f_a6_92_b3_71_6d_11_b8_8e_9d_62_aa_a0_e4_3b_cf_03_c7_ea_81_97_0b_1d_80_2a_86_7b_88n,\n 0x2b_b6_7c_5d_6c_48_cf_45_8a_29_3d_69_b2_d1_d4_4f_a7_c2_c6_08_8e_7b_7f_9a_de_ce_3f_87_3d_ed_fb_95n,\n 0x1f_a7_13_dd_e3_90_3e_41_e6_8f_09_ac_2f_34_c9_b1_23_7a_44_5d_51_95_c5_e3_61_c5_bc_a3_1e_df_a9_72n,\n 0x20_19_aa_92_ad_f7_b5_e7_95_f0_e5_39_68_2e_4b_39_b4_e3_2b_b6_52_0c_71_11_02_ae_bd_d0_c1_51_68_43n,\n 0x22_53_b9_23_3d_04_7a_fa_01_8c_40_c4_9f_e9_ff_1f_99_94_32_a9_c7_df_06_62_1b_25_04_a4_6f_12_0c_dan,\n 0x1c_ea_08_c4_93_28_f5_f0_53_c6_b4_7c_bb_c9_55_92_24_be_1d_81_35_49_11_a1_89_26_a9_8e_04_7b_da_e1n,\n 0x12_3a_d2_39_66_a4_2c_72_97_13_09_4f_c3_52_e4_66_e2_64_6a_f9_ad_aa_c2_0f_d8_e5_8f_30_8d_27_36_e1n,\n 0x1e_f5_9a_7e_26_64_77_a6_44_52_7e_be_cf_0b_bb_cf_92_ce_5f_80_d2_28_0d_af_82_66_19_b7_eb_df_79_a5n,\n 0x19_ec_1d_74_d7_f3_67_2f_9b_c6_6b_e9_ac_40_f5_be_70_2b_7b_ac_80_b4_e3_3e_ce_b5_92_f8_6d_5d_e3_a1n,\n 0x24_26_46_c4_3d_7f_28_cf_38_c9_ac_af_8c_63_b1_b3_3f_f0_7c_77_8c_2a_e6_8c_55_d4_89_3a_92_7a_3a_45n,\n 0x0e_2c_8a_60_45_53_db_3b_81_98_0f_e4_0d_80_1c_ac_cc_fb_cb_d7_99_92_43_0f_cb_50_b0_4a_42_cb_e9_b3n,\n 0x2e_77_da_32_7c_86_9b_63_fa_df_38_24_d7_18_98_3f_2c_d1_f7_f8_ae_64_c8_8f_5e_8a_50_0a_34_05_6a_een,\n 0x19_1c_a3_be_9e_ac_c6_be_48_08_bc_16_68_d8_14_49_97_42_a1_16_77_92_e3_3d_70_d3_5b_5f_d0_ac_27_36n,\n 0x2a_26_e1_0b_71_4c_8c_92_c4_23_31_36_87_36_01_88_50_b4_8a_0e_5d_e7_93_6b_2c_f2_5e_ee_46_63_19_64n,\n 0x05_aa_6b_2e_25_b7_ce_4c_17_04_27_08_1a_01_19_0f_23_64_87_2d_01_e5_1e_96_9b_14_d9_84_93_0c_10_f0n,\n 0x07_ac_b3_90_4e_2c_cd_87_ac_5d_9d_7b_6b_7b_7b_bc_de_38_50_49_33_71_e1_b1_0b_ce_f4_cf_32_ff_20_85n,\n 0x05_aa_9c_a5_f2_0d_fc_10_4c_85_eb_2b_cd_80_df_e7_bf_e6_9d_42_d1_ba_44_00_bc_f0_d8_ad_53_a1_8c_09n,\n 0x04_11_a0_b6_eb_09_ff_fb_e9_66_87_66_83_e8_6a_b9_65_28_01_86_98_5f_72_fa_c6_da_31_0e_80_17_5d_d9n,\n 0x1e_16_56_82_a5_62_b6_dd_29_ce_f8_50_b2_75_9e_bf_86_2c_af_71_e3_48_b4_20_27_55_3a_b1_e7_f0_cd_1en,\n 0x2b_65_e9_2a_1f_91_e3_8b_2e_7f_19_2e_bf_0b_c6_0c_d2_24_ec_7c_1c_67_b1_0d_1e_5f_63_4f_df_52_6b_74n,\n 0x22_08_ea_7d_1f_c6_37_67_b1_d3_dd_1e_7f_cf_d4_b1_3c_bf_aa_cb_0f_9f_53_1b_36_b0_bc_74_d3_64_81_1fn,\n 0x1a_c7_18_a2_87_10_5f_dd_6d_cb_dd_6e_3a_9f_83_37_91_e7_c3_45_89_1b_6a_b4_76_0e_6e_2b_b6_20_59_b4n,\n 0x09_80_90_f7_23_de_a7_b9_27_ed_c3_6a_8e_ec_f8_46_30_c9_2d_01_38_f9_0d_c5_55_f6_a4_89_71_f5_0e_6bn,\n 0x1d_be_00_fa_a3_34_3a_ff_72_d3_7b_30_22_60_14_3b_fb_5d_4e_5b_fa_4a_0b_3d_0a_62_22_3e_d6_6b_4d_6en,\n 0x06_42_c3_65_18_1c_a2_ec_3e_42_3d_6c_e7_4e_14_50_68_a4_3f_88_ce_05_35_75_a2_eb_ca_f7_18_86_09_98n,\n 0x24_56_11_d0_d8_04_7a_24_db_3d_78_13_1b_de_dc_67_e3_45_ef_be_3e_a7_f6_c7_a4_fc_bd_3c_64_22_46_ebn,\n 0x09_1f_fe_3d_51_95_25_ba_08_0e_1f_ab_54_67_09_b2_dc_62_a1_79_3e_38_11_ec_51_61_c8_00_b4_87_f5_4en,\n 0x2a_61_7e_d5_88_72_2d_3a_cf_49_00_b3_dc_50_15_72_4b_7c_8c_ef_45_8c_f9_db_49_4d_78_6a_26_b6_9e_4en,\n 0x13_02_86_8a_9a_b3_b6_a3_6c_ce_d0_f8_0f_53_f1_a1_3c_a4_36_e2_d7_c0_f9_ad_a9_00_40_af_fb_a0_a8_ccn,\n 0x1d_90_3d_af_43_00_75_5b_e0_ac_aa_f9_eb_b4_41_47_95_bc_3f_b3_77_e5_90_3f_89_ee_9b_3e_fa_c0_52_abn,\n 0x0f_67_17_92_ec_6b_8b_bd_09_36_ab_bc_03_9d_2a_86_8f_52_3a_00_50_dc_01_22_f5_d9_66_9b_26_34_77_70n,\n 0x10_45_a4_24_16_67_a8_cd_38_07_80_67_97_0b_02_dc_e9_c3_50_54_a3_6f_a5_1c_d8_92_d5_d2_13_3c_f2_71n,\n 0x28_d7_38_f7_9c_07_b3_5d_2d_f7_72_d5_62_d5_43_46_dd_7a_41_bd_07_09_6c_36_c2_20_43_20_a6_76_0b_2bn,\n 0x2d_24_5b_5c_1c_1a_73_2f_82_83_44_6e_de_7e_84_6f_35_be_9d_49_cb_4f_3f_3b_b4_e5_e1_fc_d1_78_9d_51n,\n 0x25_a4_99_ca_19_07_63_83_51_ed_bc_83_6c_14_98_ba_7c_8f_2e_14_bf_99_f0_bc_2b_8b_86_bb_89_b4_ee_a1n,\n 0x1b_e3_f4_d7_66_3b_94_94_02_30_7b_82_b8_28_a1_5f_94_23_f9_be_11_5c_a9_ac_45_84_d4_ac_75_29_6b_ddn,\n 0x1b_67_eb_51_fa_ce_f5_81_4a_30_cf_57_94_a9_5d_4a_d1_15_14_69_ad_4d_85_1d_0c_33_66_ed_6b_99_32_0an,\n 0x06_ad_69_20_1f_94_8e_47_49_ef_90_95_70_7f_dc_65_91_02_2c_78_cb_6f_a0_47_f8_25_a4_1d_d3_e4_95_c2n,\n 0x0a_4b_82_88_54_8d_5f_b3_dd_e7_cf_4b_bd_1a_08_81_e5_e6_1d_99_b1_d5_2d_0f_82_e8_37_15_09_65_41_19n,\n 0x0e_b4_a9_34_2e_89_d9_cf_0f_48_2c_41_ce_66_e4_0f_f7_c7_d8_f9_ad_1d_e8_d1_d8_d4_8a_98_b0_05_4c_93n,\n 0x1a_64_5a_22_34_71_e2_cf_77_6b_e1_bf_db_70_60_18_5e_5a_58_a6_b6_51_a1_2a_89_69_ad_5a_0d_fa_d9_7en,\n 0x03_02_c4_49_9d_41_e2_59_ff_76_1d_db_30_5a_36_6f_3e_7c_2b_01_c4_65_77_7b_ce_ae_1a_67_e6_b4_12_c1n,\n 0x2c_17_e0_b7_f9_01_b9_36_30_c9_da_99_ba_ef_3c_5c_2f_5a_64_4d_ce_a6_44_43_57_a1_21_bc_2a_a4_27_4cn,\n 0x0b_0e_36_da_83_35_e2_43_dc_7f_d5_9c_c2_36_59_74_d0_e0_ff_a2_47_c5_4e_f9_61_7a_80_f7_6d_41_95_ccn,\n 0x12_9e_73_3c_1d_da_2e_de_8d_39_6d_85_fd_6b_b8_b6_e6_13_99_f2_31_1c_09_33_1c_7e_f2_f9_be_ab_22_bbn,\n 0x2c_de_a7_eb_18_f6_14_6b_67_c4_37_f3_7c_13_f8_56_ee_d0_1d_5e_46_4e_88_70_44_7c_5c_8b_4b_ef_c4_ffn,\n 0x2a_d4_f0_21_60_33_01_8e_7d_2a_55_0c_2e_08_24_32_61_4f_40_7f_b6_00_97_d4_50_5c_cf_cb_31_d6_77_45n,\n 0x2a_ac_4f_54_25_68_35_ba_d9_6e_ec_25_66_41_a1_0f_c4_4d_0d_63_fd_58_60_fd_47_5c_e8_18_27_66_91_f6n,\n 0x17_e2_51_32_c0_9e_ad_8d_fd_ed_69_1b_90_81_b5_81_f1_f7_6c_4a_86_f2_fd_9c_9c_29_d2_43_3f_4d_22_8bn,\n 0x2e_d9_5e_49_3a_c9_79_a0_91_bb_6d_28_e8_16_72_ec_5e_1f_1e_39_f1_63_e5_f4_b9_94_8d_e5_b4_be_32_96n,\n 0x16_1c_e6_3d_59_6d_e6_94_43_d7_f5_42_ff_f3_6c_d3_c1_10_c3_3c_fb_b4_45_c9_cf_3b_70_d9_08_1e_4f_0an,\n 0x19_3e_fc_77_ea_76_01_05_47_c5_bc_c6_00_a1_1f_1d_5a_80_bd_d7_79_6a_6b_3d_9a_0d_af_66_a0_b8_a4_bbn,\n 0x14_49_a3_8a_93_8c_ee_3b_56_f5_05_f1_ba_23_25_b1_86_e2_ca_22_a8_43_5f_24_1c_fa_44_3c_60_00_f7_e1n,\n 0x20_60_ec_f9_aa_31_db_31_20_20_18_27_fc_df_6b_5e_e7_f1_bb_93_d5_50_18_7c_a2_db_bd_4a_42_05_a7_d2n,\n 0x04_8d_bc_df_e2_fb_6c_50_96_8e_82_5a_95_83_57_64_67_79_54_6c_93_34_07_48_ef_2e_05_79_4b_48_ab_1en,\n 0x03_02_fb_e9_b1_3a_3e_ed_91_a8_23_b0_b4_d3_e3_62_14_13_40_84_97_e6_c3_c2_fa_49_d9_c8_aa_36_f4_08n,\n 0x03_e8_19_25_a3_fd_5f_25_08_15_32_f2_98_65_07_e0_ed_91_27_6c_ba_f4_ce_08_60_81_7a_c7_bb_83_8e_9bn,\n 0x1c_54_98_79_13_8d_43_4c_f3_14_35_17_dd_9b_f2_a3_22_22_4d_76_ba_5b_3e_4d_e3_4b_7e_c4_90_40_74_40n,\n 0x08_12_0c_7e_c3_56_e1_69_45_d9_4e_55_e8_35_ee_7e_2e_91_e4_10_31_5d_cf_34_75_f8_2d_27_0d_16_d0_efn,\n 0x13_06_46_40_06_33_00_51_68_c1_e1_4e_e2_7a_b8_d2_38_d8_ba_75_14_c9_03_aa_a5_91_dc_de_7b_fc_18_63n,\n 0x23_e9_b4_dd_3d_1f_30_c3_7c_fd_fb_3a_83_d4_5e_52_4f_54_ab_a1_c0_67_ac_1e_f1_ac_e0_82_ab_43_47_9cn,\n 0x28_5b_38_aa_ba_20_c3_8b_04_59_f4_a4_88_43_12_2b_64_73_16_29_56_24_78_94_71_1e_c7_67_99_4f_c3_ben,\n 0x25_59_fd_f5_8d_3c_22_00_c8_3e_d1_fb_4f_1e_ed_56_8c_22_48_ca_08_e5_79_48_06_d1_84_1f_3a_08_18_4cn,\n 0x0e_33_c7_36_26_ab_1e_d7_41_e4_7a_c5_2b_e4_e9_f7_f7_91_3b_5d_81_d7_da_1a_af_e2_03_a4_9e_cb_98_3bn,\n 0x05_1d_41_23_63_24_97_aa_32_42_57_ae_52_a5_1e_2f_c1_f9_ba_89_01_a9_25_dc_44_c0_dc_67_79_ff_54_96n,\n 0x1f_ba_be_d2_82_08_17_87_78_24_10_52_b2_36_f0_bc_7a_e9_89_3d_24_7c_a9_cd_05_67_2e_9a_ff_61_31_48n,\n 0x1c_2f_74_13_95_38_bd_25_3c_3d_d4_5a_2f_fb_96_17_35_50_a5_1c_db_fe_2a_76_82_72_37_fb_85_be_ec_7dn,\n 0x15_77_67_e2_a7_fd_f2_5c_18_47_55_b2_f4_73_69_f2_ce_92_4e_5a_da_ee_5a_37_38_d4_f9_42_bb_0b_f9_56n,\n 0x0f_df_1e_7c_86_89_80_44_dd_b3_97_fe_b4_8e_5e_de_9e_3d_24_fb_a5_42_0d_ba_8d_1e_a6_d1_0d_bf_47_f7n,\n 0x07_69_e8_4e_d1_7e_6c_1e_ac_40_b5_e0_0c_cd_2d_82_04_28_10_1b_2c_84_b5_88_ee_40_a4_43_ac_9e_08_b0n,\n 0x2f_2a_0f_50_de_d1_e6_ab_34_f6_0f_8c_56_90_4a_51_6d_af_c8_15_37_21_b4_4f_1b_35_61_89_0c_02_e8_5cn,\n 0x0b_1d_c0_4f_e7_5d_cb_36_de_0b_fe_15_ca_2d_5a_d5_bf_25_38_ae_d1_33_3d_f5_6e_1b_2d_86_19_28_e2_c4n,\n 0x17_ae_d8_d1_17_c2_77_ed_0d_1d_88_8b_35_ec_4b_d3_dc_0b_82_3b_2a_f0_37_d3_62_3e_a1_03_a2_07_8b_24n,\n 0x15_31_40_aa_66_58_6c_ee_23_1a_8f_3f_d8_60_59_76_e6_d3_2d_df_43_1f_f3_3e_e0_5b_9f_42_9c_0c_94_81n,\n 0x2a_e9_22_e1_1e_f4_d4_1b_7b_84_d5_2a_b8_35_f5_bc_80_27_bc_e9_de_25_c1_ce_5b_0b_b8_8b_6a_17_d1_aan,\n 0x0f_81_82_43_cc_3f_ae_cb_7c_73_df_c2_1c_29_68_be_63_b7_e9_39_0b_ac_07_77_47_bb_be_16_7a_05_5b_55n,\n 0x1f_62_83_8a_30_ba_d6_ee_d4_ed_e2_ab_52_86_6d_b5_15_51_37_cc_e3_27_a2_7f_4b_66_e2_20_40_75_00_0en,\n 0x2f_d9_79_57_b9_46_0d_34_14_00_8c_ae_82_5b_b6_10_f0_18_c5_b5_33_09_ff_d2_6f_39_ec_f1_e7_f7_95_b5n,\n 0x26_92_d1_1e_64_69_5e_0d_21_03_74_b4_82_a4_72_67_cc_00_df_2d_1b_90_55_72_27_cd_49_fc_37_ec_2b_51n,\n 0x0f_ca_a7_89_88_a3_52_02_68_7f_f0_dd_a6_91_b0_35_b4_e9_54_0a_53_08_c9_6e_25_82_3d_87_87_a5_a0_40n,\n 0x1a_74_2b_2c_ce_21_c8_3d_79_43_fe_6b_49_2a_9b_88_fa_ff_39_90_e4_88_66_67_0f_52_a1_db_33_d6_91_ccn,\n 0x07_3a_59_e2_c9_c1_ae_b2_a2_bb_89_b1_fb_9b_64_fc_42_a1_bf_ef_f1_d8_5b_6e_7a_16_3b_8c_3b_fa_82_03n,\n 0x04_c6_04_d7_7b_35_6b_48_5d_21_5a_9f_df_7e_5e_c3_f2_96_48_fc_90_a1_86_c9_7e_51_21_40_cf_c5_d9_66n,\n 0x1d_38_0a_ad_63_83_bd_9f_5c_4b_9f_b4_b1_27_e0_75_5d_11_98_ea_3a_96_9e_fe_5e_3b_cf_12_d1_67_88_2an,\n 0x0c_b0_7c_bf_20_19_49_30_88_e1_7d_16_ce_9d_14_fc_42_04_f6_70_d6_b8_e2_b1_b5_01_d1_f1_b3_fd_79_51n,\n 0x16_6e_b6_ad_58_55_df_d3_c4_5e_27_df_91_54_85_3d_4b_08_74_11_2c_44_89_ff_7a_a0_05_0e_41_fb_ba_1bn,\n 0x03_72_a3_be_b9_db_36_03_1b_7f_0c_72_ba_f1_e5_3e_9c_72_20_78_0b_24_7a_ed_82_ee_20_79_ef_ad_ee_dcn,\n 0x05_bd_65_52_04_d5_5c_c6_b6_39_0b_c1_65_03_01_95_7a_67_6f_7d_3d_60_17_c6_49_6a_d0_31_fd_5f_7b_34n,\n 0x14_41_79_19_9d_ba_13_5c_c5_f9_e9_1b_76_88_0f_34_2a_4e_74_b8_ee_66_1c_27_d5_b6_51_f4_56_56_02_1bn,\n 0x0e_6f_e8_c9_6c_e9_8f_3c_c9_7c_11_99_3b_50_87_b5_5f_3d_e7_0b_ed_63_27_30_f9_22_99_b3_c3_2b_a1_can,\n 0x07_a2_eb_58_86_37_55_17_d3_99_bf_ab_e4_c7_ce_5c_03_ed_e8_36_c4_4a_c2_b5_1b_b3_e3_5a_a9_57_6d_4en,\n 0x07_64_ec_89_6b_a7_a3_74_f5_fd_5a_1c_be_d8_a2_be_62_ba_e0_d5_72_63_9e_17_bf_fa_d2_45_90_c3_b8_9fn,\n 0x07_ba_9e_c6_78_1c_b4_74_fa_4d_62_29_08_f0_9a_01_76_7a_07_85_c3_a1_4a_c5_ba_29_32_8c_4d_a5_f4_f2n,\n 0x0c_32_5b_49_89_65_e3_77_02_43_01_2d_af_a0_dd_4f_b0_36_a4_01_3f_2f_67_f3_50_f3_fc_9e_74_04_91_60n,\n 0x21_9d_d3_ca_3c_98_d1_61_33_93_83_8c_73_c8_8a_6c_65_02_ca_23_b3_c8_5b_5b_89_59_a2_96_91_e3_42_71n,\n 0x0e_b2_b4_5f_d5_18_f5_4e_1b_0d_48_25_02_6f_ff_dd_76_48_9f_62_60_38_0a_f4_0d_da_b5_ff_c1_c5_b3_3en,\n 0x23_05_b8_b5_ab_ff_dc_55_2c_d9_69_56_eb_fa_45_6a_36_b3_5d_20_0b_d3_e4_3c_e1_65_eb_38_71_1a_67_ean,\n 0x1a_7c_b1_1e_a9_46_3f_63_90_ab_b7_07_98_76_15_ce_be_59_4c_f2_32_fb_5e_89_14_40_7a_43_ae_57_b9_82n,\n 0x1e_67_ce_05_24_d1_07_92_08_a9_4d_c2_54_83_d9_e6_b7_42_8d_40_c3_63_05_bb_e0_89_3e_19_4a_25_b3_25n,\n 0x00_ff_c5_39_a8_53_77_89_70_43_2d_86_31_bc_0f_db_0c_f6_02_0b_47_24_b4_9e_f0_31_19_0d_c4_bb_11_20n,\n 0x29_94_5c_9c_a4_c3_9d_45_54_0c_03_5c_10_67_8a_3f_2f_51_ca_dc_bf_19_b3_32_f7_5c_e1_f4_6b_59_78_adn,\n 0x19_cb_40_13_23_db_d3_fd_8b_e1_da_95_4c_02_91_d6_71_24_87_c6_87_dd_96_64_a4_b1_67_dc_01_80_44_52n,\n 0x28_5f_d8_6a_db_21_90_8c_c4_44_12_49_fd_00_5c_b1_ad_d0_b2_ab_f7_06_ca_ff_42_19_27_50_66_19_dc_48n,\n 0x2f_aa_bf_d0_9b_63_a8_1c_1c_f4_db_fc_64_32_3d_8c_12_7a_e5_52_d0_03_39_b1_dc_4c_59_b1_cc_7a_b4_een,\n 0x2f_c7_53_9c_40_6b_ce_26_fb_e6_15_17_b9_b8_ef_d3_61_71_10_c8_cd_4b_2b_b3_b4_a2_b3_39_e9_85_7d_4cn,\n 0x12_96_cd_08_9d_47_50_e5_5c_1c_01_d7_68_b5_e8_f2_1d_2b_c1_fa_d7_6b_84_29_40_f2_93_ec_0b_c2_ac_95n,\n 0x21_a0_c3_da_af_57_fd_cf_2e_88_eb_d4_d1_d1_a4_4e_aa_46_5a_40_cf_60_b0_7c_c2_65_49_b5_77_a1_f2_28n,\n 0x1a_cf_97_f4_ca_cc_97_d8_88_e4_e3_b5_ad_02_dd_9a_8e_e5_11_47_5e_21_e9_82_fa_1c_e5_04_67_51_1a_b7n,\n 0x0b_35_56_b9_ee_f6_9e_84_47_d1_86_9d_12_86_e0_d1_54_82_11_2d_23_d0_eb_d7_f8_bb_d6_1c_43_5d_f6_12n,\n 0x0b_82_cf_5e_2d_b8_b8_8b_32_b3_79_78_b1_17_6f_2a_64_da_2b_ea_71_89_40_05_f4_ac_b1_ce_6a_68_4b_70n,\n 0x2c_8a_d1_ac_c7_63_6f_65_a1_2b_f8_3c_e6_8a_c9_2a_bd_e9_f4_51_ec_a1_50_51_41_3f_36_bb_56_5a_e3_e7n,\n 0x2f_dc_c4_64_99_cf_b1_10_2f_55_40_80_79_36_58_22_8c_92_ae_49_ed_7d_81_47_00_ad_1e_13_eb_5b_ef_89n,\n 0x2c_8d_7b_93_23_fe_30_ec_21_eb_7b_8e_0b_88_24_8f_bd_c7_0f_04_7b_5b_91_66_e3_dd_8a_60_bd_2a_8d_0cn,\n 0x0d_1e_bf_97_3c_9d_26_a6_43_62_62_0e_65_b0_ca_9f_59_c9_e9_71_fc_97_50_63_71_af_94_89_de_93_e9_18n,\n 0x1b_dd_92_92_16_a1_05_b1_35_1c_60_47_b4_3c_53_d7_98_66_a0_b6_53_d0_f4_67_02_33_e9_f5_9c_d6_30_dbn,\n 0x16_2a_ba_24_67_50_dc_d8_56_c9_75_a9_a4_73_a7_c9_21_b6_25_69_92_02_93_4b_0a_1d_29_ff_d0_38_fe_97n,\n 0x2e_68_1d_b0_e7_4c_3b_6c_c4_99_a9_af_be_22_29_c8_af_de_29_32_e4_b1_52_28_67_9b_54_0f_f4_5e_2e_aan,\n 0x2f_cc_23_51_34_79_2f_b4_a8_1d_a0_c1_ff_d8_08_4c_b8_cd_80_99_29_3c_3a_12_95_04_80_8d_3e_e3_9b_d1n,\n 0x1e_b6_66_1a_db_bb_0a_17_74_c6_cf_16_37_fa_1e_5e_24_39_9f_66_90_a5_54_16_de_f3_24_1c_ee_ce_74_a0n,\n 0x17_40_45_c7_2f_68_48_83_8b_2a_08_a7_a0_11_75_60_97_b0_f3_ed_25_4c_ff_ab_29_26_ce_15_9e_9f_56_27n,\n 0x02_a0_57_5f_09_f3_28_2f_a0_7e_9b_5c_f5_53_89_93_fc_74_c4_ee_86_21_c9_5f_bb_2c_a2_e5_f2_dc_3a_11n,\n 0x28_2f_62_ae_b1_67_ef_59_63_da_6c_6f_aa_86_71_12_32_25_ad_91_b2_27_b8_86_b6_b9_81_ae_fd_ac_a0_c6n,\n 0x1b_9a_bb_b8_1b_cf_f5_f1_70_46_32_de_f6_d9_89_e5_0c_fd_be_e1_d2_49_80_32_38_ea_c2_44_35_1d_7e_b9n,\n 0x18_f8_a4_66_9f_af_9c_ff_11_dd_19_f3_d7_3c_37_74_8f_b4_62_6d_18_33_9c_07_7a_06_e5_c5_c8_10_ba_dcn,\n 0x21_af_0d_e4_dd_fc_44_93_68_db_59_be_9e_92_41_18_5c_49_c8_49_6e_e8_6d_11_75_bd_b7_a4_31_08_6a_84n,\n 0x0b_9a_1e_c9_fd_21_cb_95_dc_93_c0_ac_19_11_13_5b_3a_68_d3_72_ce_6d_a9_d4_55_d8_0a_78_0b_15_f8_b7n,\n 0x1b_41_3f_70_93_58_00_8f_44_c3_e6_08_77_d8_10_a0_81_d9_08_44_f3_67_e3_dd_0a_7b_b9_cc_11_8d_c5_02n,\n 0x24_b4_ef_b5_02_85_75_88_8f_eb_5b_8b_59_d4_0e_34_98_ff_fc_ea_1f_35_08_26_35_9b_ff_b7_fd_4f_31_d2n,\n 0x2b_11_ed_ef_35_05_a9_da_d6_00_06_07_ff_cb_dd_02_78_8c_7b_58_02_33_9b_e9_cd_74_d2_ba_57_62_01_17n,\n 0x20_22_79_70_60_96_cd_42_f9_06_23_9c_40_c6_71_3e_8b_d8_9e_fd_9f_63_74_12_99_df_f5_37_45_de_e8_den,\n 0x20_7e_d9_f7_ff_57_bb_17_d2_78_f8_33_b6_1c_f6_78_f5_2c_8e_32_1c_c6_bc_e3_af_08_04_a7_c1_59_20_5en,\n 0x05_04_1c_08_8d_4e_63_74_31_b2_a4_9b_aa_37_72_a9_b0_44_3f_31_61_fe_46_51_5a_e8_d3_ac_0b_0e_55_1dn,\n 0x00_1b_7c_7b_c1_56_82_25_9a_d0_88_1d_cc_bc_e0_a6_4a_02_59_c5_9e_a3_c5_e0_12_f9_95_34_fc_02_37_4an,\n 0x1e_c1_97_11_62_3e_bc_49_ef_4d_85_73_25_aa_9d_d7_ef_b5_fa_3c_d7_ad_50_f3_f4_4c_cc_a9_91_28_c8_4en,\n 0x06_cb_1b_e7_51_79_c1_9f_88_99_20_ea_93_18_6d_ff_92_3e_2c_21_4c_50_a1_45_51_88_37_a2_b0_1c_a9_00n,\n 0x27_12_a8_20_39_76_93_17_c2_1b_22_5a_4e_0b_a4_5d_f6_3c_af_b4_82_13_03_66_4d_5b_33_1d_22_21_8d_83n,\n 0x1d_7d_09_68_73_87_34_d0_71_0a_e8_51_37_7e_34_0d_bb_10_14_28_d7_20_0b_73_1a_df_3b_1c_22_0f_3b_02n,\n 0x18_05_02_ba_e2_da_03_9d_85_f5_37_21_2b_ad_e3_ed_b5_6f_b3_b6_a5_56_7f_ab_1e_40_61_b8_6f_a3_e6_6dn,\n 0x1c_3f_1a_32_9f_00_f6_f7_11_5a_5f_ab_bb_73_a6_7b_dd_74_ca_ce_ac_0e_5a_4c_cf_25_ae_03_73_e9_21_3an,\n 0x0b_88_80_38_bf_1e_8a_fa_2e_44_4b_9f_47_ce_bf_28_f4_28_54_d1_a9_16_08_e3_9d_bc_da_87_2b_de_96_0cn,\n 0x2a_03_6e_70_e2_98_7d_85_45_3e_d7_a3_d9_a6_8d_57_4a_df_56_ea_e1_21_4d_c7_74_ba_a1_06_58_96_2c_12n,\n 0x03_f1_1a_bd_55_1e_44_d9_b6_a0_f4_44_0f_47_00_6e_98_cd_90_01_45_9c_96_72_e6_f9_6a_92_e5_02_3d_3cn,\n 0x1f_0f_a0_4b_cd_63_b7_a2_bf_dc_87_0e_fb_b3_69_66_f5_43_e2_35_c9_dd_5b_37_1c_5e_a5_c2_6a_a7_b9_cen,\n 0x01_54_e2_bb_d7_96_69_2b_89_42_dc_37_ab_d9_53_4c_48_6b_a7_0b_c7_7b_e2_1e_74_c4_e1_53_81_e1_cb_4cn,\n 0x0a_05_25_b3_f9_6a_75_07_89_0e_7f_65_e7_b5_93_88_6d_18_cb_14_74_f5_db_86_50_1a_4d_b1_fb_a0_4b_0an,\n 0x04_a4_73_93_2e_52_4f_c0_e6_04_d5_ee_9c_f3_ba_9e_f8_d5_b4_63_a1_37_9f_cd_7d_6a_f1_4d_bd_eb_54_dcn,\n 0x21_15_0d_11_c7_23_2f_61_56_28_e7_39_2f_6a_0c_93_48_c7_01_15_a1_a0_7b_88_73_6d_04_ae_b8_5e_0f_8dn,\n 0x0c_71_b1_2a_8e_8a_7d_8f_d2_b4_ea_9b_58_7f_1c_72_27_be_1c_4e_97_40_db_36_cf_7c_7c_5e_8f_31_30_87n,\n 0x2d_94_cd_be_04_f7_f7_7c_5a_f2_d3_6c_37_bb_b8_17_29_d9_51_ab_fb_d7_91_fe_e0_aa_3a_32_32_1a_c6_61n,\n 0x14_e4_5c_5e_2b_09_d6_d6_31_cc_60_c5_9f_b5_c2_4b_0a_57_04_1a_ac_64_b4_a8_2d_b0_b6_36_00_f5_58_1an,\n 0x0a_bc_5c_5c_84_89_78_02_83_c1_39_c3_6d_dd_fa_39_f8_8e_e0_60_16_36_ed_3d_6e_4c_c1_4b_b3_b1_df_f5n,\n 0x0b_93_7b_a1_51_35_db_ef_73_64_46_fb_49_23_20_6c_84_03_a4_2a_80_0c_26_e6_28_4a_93_bb_23_3d_5c_39n,\n 0x13_86_9a_fc_ef_83_09_bf_d4_37_52_61_00_31_bd_0d_15_5f_0f_8d_11_bf_e9_a7_15_44_52_e2_bf_08_40_57n,\n 0x06_d4_2c_ef_5a_e2_ec_34_e4_97_c5_96_13_9e_f1_d5_04_a0_cd_a2_40_f1_76_23_35_f0_2d_cd_58_c3_83_95n,\n 0x15_54_30_8c_c7_12_4c_cb_dc_04_ff_b1_bb_97_fe_1e_82_77_b3_86_f6_5c_cf_2c_8b_56_14_e3_43_03_1a_31n,\n 0x1e_4f_bc_4c_3e_4f_57_e9_0a_d5_0b_c6_e7_a1_0b_46_8f_cf_9a_0a_87_a2_90_c4_87_38_97_e4_97_91_39_1cn,\n 0x08_d2_ca_5b_cf_00_e9_76_9d_fc_86_8d_1c_86_f2_88_e4_0a_31_ca_83_96_85_2f_39_77_36_9a_f2_4d_70_b7n,\n 0x1f_5b_be_be_4a_18_84_34_ac_69_93_3f_b8_df_50_50_ba_89_07_08_79_97_8f_a4_b7_78_7b_fa_e7_f8_3b_56n,\n 0x11_a2_dc_f4_5d_74_04_45_dd_1e_82_ef_88_82_98_13_55_5a_cf_76_a2_19_02_4c_a7_00_25_01_24_0a_0e_43n,\n 0x2a_8a_12_e6_8b_1f_cb_a1_0e_0a_6d_1a_86_c1_4a_10_d2_6e_3c_74_16_f3_6d_62_ce_62_17_cf_96_7e_1c_67n,\n 0x04_52_84_8d_3c_0c_00_fe_60_d7_21_38_06_50_c8_49_ce_d2_cf_79_d3_04_48_20_81_22_23_e1_46_64_7f_35n,\n 0x2a_47_a5_4f_59_ff_22_74_55_97_ac_f6_00_75_47_59_11_3c_a7_db_af_11_d9_c0_8f_50_7c_46_a9_aa_c9_ben,\n 0x18_5b_f5_74_72_56_2c_ca_45_f8_7a_c1_b1_ae_81_22_ae_c5_8c_ed_b8_31_28_1c_51_f3_79_9f_07_e7_2b_8dn,\n 0x0e_ce_f6_48_9e_70_9a_d5_c5_87_63_6b_3b_dd_9c_7b_6e_85_74_21_75_ff_86_eb_df_c5_3a_b5_88_d6_d8_d6n,\n 0x16_08_b3_e2_62_4f_fc_2c_00_91_e4_7e_90_e5_ac_3c_99_62_71_3c_6a_13_68_3f_d5_53_17_23_cb_b3_88_9an,\n 0x0d_3f_60_74_6b_ca_57_e5_c9_68_37_2e_c0_e9_87_51_0a_64_7f_2e_7d_34_41_5b_a3_79_89_da_fa_94_c6_0an,\n 0x09_8e_cf_04_84_e1_27_aa_67_95_23_ca_d1_48_ea_22_72_37_a8_d9_ff_9d_d8_d8_f3_9f_b5_81_62_c3_bd_61n,\n 0x30_2f_10_e1_1c_13_f3_76_72_23_bc_50_1a_5f_9d_d1_30_fe_51_7b_62_7f_02_48_f7_89_fb_7b_30_ac_10_5dn,\n 0x09_24_71_7f_e7_ba_bf_e9_54_1b_33_86_fa_40_45_5a_01_77_c6_97_31_ba_f2_2c_09_82_cf_76_27_88_99_e2n,\n 0x17_38_29_65_ba_7b_e7_09_d5_4d_70_ca_3e_13_fe_ca_23_b2_2b_9e_6e_5a_91_8a_9f_00_8f_47_cd_bf_a8_85n,\n 0x20_d3_00_10_d9_77_f9_d9_12_be_79_73_77_75_17_8a_a8_41_d9_72_12_8a_aa_95_eb_7b_27_e1_60_c2_d2_b1n,\n 0x05_94_bd_b7_8b_3b_69_99_34_49_60_93_86_a2_51_fa_14_ac_53_6c_37_ed_01_60_84_89_ac_1c_72_1c_07_06n,\n 0x2c_ee_c6_c1_3c_11_bb_d4_76_64_84_43_20_cc_fd_ee_e4_02_e0_af_2e_c8_06_87_96_c7_c3_75_33_30_af_f6n,\n 0x27_9f_ad_a8_3f_83_0d_fd_97_b7_28_8e_67_04_59_dc_07_8c_76_cf_06_37_a8_98_3c_06_17_f2_7b_4b_34_72n,\n 0x02_9d_59_3a_31_12_c3_bf_57_ec_8a_b6_87_d8_39_8f_c2_76_fc_f1_d4_62_a6_82_28_92_73_85_33_fb_45_0en,\n 0x07_17_51_81_f0_55_4d_a6_ff_ea_4a_86_0c_03_12_4b_8d_50_c3_ae_5b_59_a1_67_e5_84_7b_a3_3d_19_c0_50n,\n 0x12_80_cb_7b_de_9b_ac_1c_3d_7f_55_7f_27_a5_ac_ea_d6_e4_a7_7b_e5_dc_3e_82_21_08_7e_4a_6c_e2_3e_adn,\n 0x1a_99_49_58_d4_4c_34_3f_59_48_90_56_b8_cd_72_54_91_ff_55_1c_0f_44_96_97_b5_46_c8_dc_fc_b9_0b_fcn,\n 0x1f_00_40_34_e8_81_0c_1f_1d_e5_07_b7_ee_d8_42_98_34_12_ab_84_73_e2_b0_0f_c7_55_93_eb_4e_3f_55_09n,\n 0x04_05_fc_c7_b7_59_b8_ca_30_e9_27_38_14_ef_b3_50_c1_e5_25_42_d3_38_f2_4c_47_fd_99_a9_42_07_80_0an,\n 0x0b_87_25_45_cb_5c_cc_73_d2_20_bb_be_01_fe_39_94_0e_7a_89_29_b0_84_60_25_41_23_08_07_da_fb_3c_8bn,\n 0x28_19_fa_cc_a2_cd_6c_c1_6a_6a_ea_31_91_f8_33_c2_d3_72_9d_47_7c_73_83_5e_a5_53_be_58_73_ce_27_30n,\n 0x22_e7_25_f6_ce_cf_16_57_54_ce_1a_52_ff_ba_ea_77_4d_8e_48_5d_66_cb_a7_99_72_32_53_b2_6b_68_c5_3fn,\n 0x01_d1_22_e4_65_48_61_c4_b3_f7_6c_3b_c4_95_29_a8_c5_73_c7_b0_d4_d3_e7_9c_48_e3_a4_bf_bd_62_cd_1cn,\n 0x1e_d4_f5_64_d1_47_f3_fa_a3_83_36_a0_98_50_22_d5_37_d3_45_21_b5_11_c9_36_0b_dc_d1_b2_9f_89_a2_f2n,\n 0x2f_ad_99_12_c4_ca_ea_5d_44_05_17_f0_e5_68_86_95_a4_d1_6b_0e_77_b3_dc_3f_d8_7f_86_9c_83_e5_b9_dcn,\n 0x2b_5a_85_61_f0_dc_58_6d_6e_3b_b8_3e_d5_ec_32_48_ed_0c_09_f9_b3_03_52_47_1f_2b_0b_80_32_1d_ea_e1n,\n 0x18_6f_4d_63_b0_14_de_8c_9e_a7_ab_01_a7_9a_be_5b_9b_e3_80_8e_6c_a8_34_41_32_f6_0f_55_95_a3_3d_57n,\n 0x1a_e5_e9_40_fc_5d_12_95_d3_24_57_a8_40_58_1c_3b_8b_bd_a0_11_5b_66_f7_f7_ca_42_98_24_fa_ee_4d_16n,\n 0x14_af_e0_88_0a_d9_2f_81_62_92_a4_52_cd_01_13_84_63_2d_64_ea_18_39_97_9d_3d_67_d4_05_af_32_77_8cn,\n 0x1a_c8_69_e7_54_be_8b_07_1a_3e_e9_c6_4a_f4_90_96_43_9b_98_f4_4b_15_a8_c6_f4_f5_ae_8b_75_a3_84_9dn,\n 0x2d_c2_9a_1a_31_74_99_b4_3a_5a_4b_a1_b3_6c_ac_15_08_f7_95_bc_c4_43_1b_fb_0e_a7_02_8e_f2_fd_32_a9n,\n 0x2e_e8_d0_3a_fe_43_c2_b8_85_99_f0_a3_5b_90_92_6a_e6_51_06_37_e2_73_3a_c0_f6_94_6d_90_8d_e5_13_12n,\n 0x26_6d_80_fb_5c_10_b2_65_5e_14_17_77_09_70_40_47_3c_d5_a4_de_da_92_25_b8_52_5c_94_83_6d_d5_1e_b9n,\n 0x2e_4d_66_f6_55_94_83_f7_6f_1f_55_68_2d_1e_db_56_c8_c3_e1_4d_af_b6_be_b3_a0_23_90_54_4e_52_c2_2dn,\n 0x10_12_3a_ed_51_42_58_0d_c6_74_08_e3_37_d4_c7_73_78_9d_93_e4_79_e4_fb_44_bd_73_21_8c_f3_db_75_00n,\n 0x19_52_6f_25_b7_eb_e2_c4_61_39_5e_66_f8_66_ff_b8_0b_29_92_d5_38_83_10_0f_0d_bf_c6_7f_13_2a_5a_91n,\n 0x2e_77_d9_6a_87_36_e6_c3_8f_b6_7b_93_5a_55_83_2b_51_1a_4a_d8_d8_66_21_f9_bb_31_32_22_dd_37_d6_56n,\n 0x09_f2_c6_c9_69_d4_8e_c2_91_57_6b_bc_d9_17_fd_62_2c_2b_98_ec_21_bb_fa_2d_f5_d5_73_24_ff_bb_4b_18n,\n 0x0d_d3_60_05_81_71_b0_23_26_c9_e4_c4_61_8c_8e_19_49_99_d6_c4_48_00_81_fa_73_88_78_c3_e1_b1_1e_57n,\n 0x19_8a_52_b8_28_2c_ad_7e_ba_3a_38_00_b5_9a_79_4a_2c_70_94_9e_d9_66_c8_6b_a2_9d_9b_cc_37_f2_93_65n,\n 0x17_eb_8c_8e_80_03_d6_b9_37_83_e6_7b_d1_4d_12_a9_45_56_84_cd_ea_4e_c5_8d_76_a8_3a_07_b4_28_dc_47n,\n 0x1f_b9_c1_60_b0_97_97_e9_d4_ee_cc_79_c5_0e_26_58_ec_10_d0_f3_8e_ce_fc_1e_3e_87_86_b9_5f_df_96_26n,\n 0x02_02_c3_b6_49_5a_8a_f8_9d_dc_6e_3f_bf_4d_66_d7_3e_6d_d1_3f_8a_ab_89_31_74_c0_ca_fd_78_c8_a5_10n,\n 0x11_4b_a7_f1_2c_0e_1a_3b_12_c2_b5_29_1b_d8_14_1b_d5_0d_fc_70_00_46_50_84_a7_01_f4_7b_15_76_30_83n,\n 0x01_9a_d3_e8_6a_d8_2a_37_65_aa_64_ea_02_2d_11_17_e1_c2_30_c0_2a_6a_c9_00_37_89_57_28_f8_2b_33_47n,\n 0x25_4f_f8_ec_9e_ca_4d_3f_b2_6c_72_cd_63_a7_d4_e9_89_bb_1b_9e_ba_0d_8b_fc_f7_71_3d_ab_f7_f6_4e_01n,\n 0x0b_e8_c9_b5_ae_e3_7e_fa_93_ee_79_b5_ff_c0_0e_8b_77_27_42_c6_01_bf_8f_23_02_52_92_5a_d2_c9_a7_02n,\n 0x0c_71_77_53_41_a9_8a_c9_09_ba_1f_26_ac_e4_0d_e8_a5_63_30_93_13_36_ab_e7_15_d2_c1_eb_7d_93_1b_a2n,\n 0x0b_83_3e_c8_30_5c_2c_b5_00_2b_59_be_b9_e5_82_16_a2_7a_b6_9b_bc_71_88_e4_30_21_31_e2_0f_ee_9d_een,\n 0x17_4a_ee_31_c3_6b_81_a6_21_2b_9d_44_60_65_af_88_00_a6_0c_ca_5e_aa_1b_16_fe_c8_5c_2e_2f_f9_74_e1n,\n 0x17_83_1d_d4_06_c7_78_5a_53_64_d3_93_92_77_da_9e_b5_b6_df_f1_e5_6f_a3_5f_f1_85_06_c6_4b_2a_8b_95n,\n 0x12_1e_1c_1b_db_7e_4a_35_74_bf_d1_c3_a4_cb_39_94_ac_49_36_ff_54_b0_7c_aa_0a_7c_a5_3c_c0_9d_c4_45n,\n 0x0f_b2_ca_5d_37_06_6f_d7_29_24_78_91_74_98_f8_78_8b_ee_33_d3_ed_49_04_52_5a_41_45_bc_e3_5f_ff_1bn,\n 0x1c_13_1c_f8_a1_d5_44_03_37_fa_13_e5_95_cf_6d_42_c3_01_60_49_ff_ac_09_95_7e_69_d0_b4_50_1e_7f_f4n,\n 0x07_0e_e4_b2_f7_a9_0a_dd_13_55_f9_cd_bc_3a_55_7f_84_aa_cc_64_86_34_b0_ff_48_f8_3d_e4_f7_6a_58_56n,\n 0x0a_c0_5c_9b_13_d1_f2_82_81_05_3b_12_af_19_87_76_f3_c9_13_5d_48_f9_5d_67_c9_31_4b_2c_48_ee_0d_dan,\n 0x0c_95_a1_76_bf_9b_37_e0_ee_f9_24_26_cc_fa_dd_29_69_54_c0_bc_a7_94_92_92_25_cf_dc_42_78_96_15_74n,\n 0x16_63_5a_13_51_28_70_b7_2f_a8_1e_46_48_42_1a_22_10_c0_b2_9b_fa_1a_3c_c9_f4_14_70_a9_18_84_44_5fn,\n 0x0c_dc_33_eb_19_f2_10_17_be_8a_4c_f0_b3_7b_6b_12_f8_01_ea_5c_4c_db_77_a3_4c_f1_76_ad_85_bf_a6_edn,\n 0x0e_87_64_59_77_01_09_bd_31_5f_d9_32_ea_7c_69_c9_6c_f3_14_e3_40_3d_0f_93_fd_b3_af_d6_4a_15_04_72n,\n 0x1f_26_a0_0b_fd_67_7b_fe_57_b8_79_c7_1c_bc_54_ca_91_3a_47_91_d4_b0_4e_30_43_76_70_96_6d_84_00_37n,\n 0x22_9a_17_69_2c_8c_f3_37_72_25_42_6c_e0_cb_a5_d6_1e_d5_f7_db_b5_a3_1d_d6_03_ea_df_a1_65_bc_cf_8dn,\n 0x21_ae_71_40_94_39_5d_f6_52_67_ac_b6_54_9d_58_02_19_c4_49_bf_86_c3_3e_b4_f7_93_e0_74_7a_64_45_fan,\n 0x2a_fb_dd_23_5c_79_56_5b_e2_f6_e2_cd_b1_d5_27_bd_56_9a_df_fe_ce_0c_b3_9f_e0_8b_c9_d0_ec_2e_a2_d6n,\n 0x0a_95_c1_1a_f3_ef_7a_0c_58_5e_bd_20_68_bd_fa_b2_a1_32_98_21_a1_7b_af_65_a6_a0_74_6b_38_a4_ac_56n,\n 0x2e_d8_22_40_1a_48_5a_62_1e_e0_b0_4f_6f_7b_50_ad_f7_96_d2_25_e3_ea_a5_87_bc_bf_87_c4_ec_0a_19_a9n,\n 0x10_f5_22_69_c0_c4_7e_3d_8a_4c_87_8b_a7_7b_09_8d_1a_7e_91_3f_cd_58_f8_a1_bc_d4_af_b5_20_ae_01_b5n,\n 0x0b_ab_49_00_dc_21_9d_1a_73_7b_11_c6_1b_de_5d_a6_af_37_5d_36_40_1c_12_1e_8f_fe_85_35_da_b6_74_82n,\n 0x0f_0f_85_30_f0_31_0c_b2_f6_c9_99_ee_2d_c6_94_32_9a_95_79_46_b2_c7_61_c8_50_5e_ce_cc_b2_ff_22_37n,\n 0x20_15_cb_8f_32_ac_ce_ab_14_4d_96_81_36_e8_7d_67_cc_25_17_52_a9_36_4b_77_59_88_8e_b1_80_0a_25_4an,\n 0x06_60_19_4d_88_2e_37_8a_16_7b_87_0c_e7_09_5e_5a_d1_19_f6_6f_f9_74_65_dc_c9_29_cb_02_ae_b6_02_d6n,\n 0x03_12_ba_d9_27_5a_c6_7f_2b_b3_46_10_bf_df_3c_69_89_e8_9e_f1_8b_fe_b3_a5_af_5a_3d_ea_da_bd_e0_e8n,\n 0x05_cb_c6_8e_5b_05_a1_fc_3e_78_45_69_ef_32_50_11_f8_39_da_d3_80_e8_e0_77_42_dc_0a_f5_14_80_49_38n,\n 0x23_e6_68_8a_d8_46_90_b2_fc_c1_d1_66_fa_67_21_10_5d_36_96_6c_e9_a3_84_a0_f6_59_ab_02_a7_bb_e0_1dn,\n 0x26_20_17_13_07_8d_36_7d_68_a3_3c_e6_eb_b8_2a_b5_5b_6c_11_6e_53_4c_85_04_3f_e4_58_cf_4d_1f_91_20n,\n 0x2a_d1_77_44_e0_79_b7_0e_31_75_ef_0c_c8_6e_bd_72_38_cc_cd_28_11_48_03_84_98_c4_7c_73_3b_ae_f3_f0n,\n 0x00_22_7b_24_56_b2_df_38_01_ed_64_04_74_64_25_0e_81_b3_bc_1d_20_f3_fb_79_fe_f3_4d_38_fa_a3_97_73n,\n 0x19_36_c2_5a_b7_8e_54_a9_47_a7_45_2d_d6_5c_04_73_9f_52_df_32_4c_b4_81_eb_9a_13_06_73_64_a0_fd_d0n,\n 0x2a_a9_d3_53_b8_af_ae_bf_fa_bb_a8_ed_09_22_0a_81_21_ef_8c_d6_1a_d2_c2_0c_ca_4f_e8_d5_d6_57_72_dan,\n 0x2c_37_de_84_45_ce_b0_e6_e1_65_51_a0_82_51_fd_47_7a_57_c3_6d_49_37_08_f8_f1_50_33_46_e2_24_ec_73n,\n 0x0b_60_16_b4_13_06_8f_d8_11_96_03_ac_0a_e0_af_df_94_28_49_16_ab_95_82_73_25_84_85_73_12_fc_62_28n,\n 0x1c_2d_a4_c3_fc_b0_21_5a_ef_82_e7_5f_67_b6_2d_b5_7f_7e_26_17_92_fb_69_19_53_82_b8_ab_56_5b_28_14n,\n 0x0d_90_19_e0_67_b8_a2_dd_48_12_99_ac_90_4a_14_cb_51_6a_c0_dd_aa_17_78_39_58_17_70_a2_76_16_04_1en,\n 0x0a_dd_8f_2e_12_99_96_25_d6_65_e7_ec_80_4c_25_98_62_b9_97_66_99_7a_27_54_49_8f_1c_10_c7_08_f5_16n,\n 0x1b_04_c9_4f_ba_01_60_fa_f1_a6_9a_e2_89_01_f6_e5_8f_26_51_37_c4_e6_ea_ff_00_3d_c3_4c_c0_6a_e9_a2n,\n 0x19_b5_8c_38_a3_68_d1_bf_b4_9d_e8_aa_b1_45_36_81_23_81_7e_15_d0_6b_f1_d8_87_ca_21_fe_ee_48_1b_82n,\n 0x26_85_12_a6_19_15_79_be_4c_51_cc_8b_b8_b9_dc_ac_d4_66_3f_69_e6_0f_29_5e_d7_50_43_0f_6f_7f_d7_d1n,\n 0x13_d2_68_b4_2c_33_85_b6_8c_54_f2_bc_b9_f7_24_57_d7_ed_91_38_fe_df_c8_51_81_a0_48_97_2d_34_e1_b4n,\n 0x2c_b0_a9_94_48_e3_88_e0_4f_5d_e4_c9_cb_a5_2f_97_b9_c4_b7_c7_48_6d_f3_23_6c_8f_92_e1_62_00_94_1fn,\n 0x1f_01_01_32_8d_89_d8_c9_34_d7_2c_a3_6c_83_de_0f_0c_9e_ee_06_ca_36_c5_51_d8_fb_ee_a2_55_cd_18_cen,\n 0x14_26_2f_a1_b3_3f_7a_e3_d7_66_67_19_90_0f_64_a1_38_71_03_ed_4b_3e_1d_99_5f_dc_ed_66_76_07_20_bcn,\n 0x01_36_41_21_b3_d6_d6_4c_4c_cd_b1_05_84_b4_bc_6b_0f_74_7b_bb_66_f3_0d_76_4d_0e_60_a7_96_d3_0a_5en,\n 0x2f_fd_a5_ed_3e_a1_88_47_ec_d8_fb_bb_95_1e_83_62_84_62_e1_5c_24_63_7a_6a_5f_c4_43_cc_64_45_03_2bn,\n 0x1b_6a_9f_9c_7c_09_35_4b_b8_f2_06_f9_fe_4a_9c_a8_e9_5c_6e_41_b2_df_29_45_d2_ef_ed_ed_31_99_ef_c3n,\n 0x29_54_18_27_82_b8_a9_c2_aa_ae_67_5e_5d_8c_81_a3_8d_c9_d2_ea_64_62_f5_e8_6d_08_17_70_be_bf_d2_aan,\n 0x0c_ad_57_ec_1b_88_05_9b_da_6d_41_d9_57_f1_71_78_be_b8_a9_32_a2_9b_61_62_67_5a_6f_ee_7d_ae_15_74n,\n 0x29_d6_f6_06_ca_f5_aa_d7_85_e9_67_7f_ba_a1_f8_71_5b_13_0e_90_8a_a7_a5_d6_d8_8e_08_b3_b8_71_64_92n,\n 0x30_3a_68_7f_55_9e_d6_e7_70_c9_a8_41_15_ae_72_66_43_fa_16_f4_a9_ec_5c_24_0f_89_81_69_9f_2f_8c_7bn,\n 0x23_18_a5_a8_00_de_46_7a_c7_40_68_48_d2_2b_a7_e2_f2_ad_e1_fe_67_df_25_5c_d6_2a_27_cd_ad_18_80_86n,\n 0x22_8e_a9_ef_af_3b_18_70_1d_3a_eb_f0_0c_74_32_d1_3a_67_60_e7_37_67_cb_a6_7d_bf_ea_c4_61_d0_a8_a8n,\n 0x2e_d4_c4_2b_f0_4a_eb_78_73_c2_fa_14_d5_64_65_85_33_55_3d_0c_c8_35_7c_fd_2c_4d_cf_54_3b_22_9b_e4n,\n 0x1d_af_c5_3a_1d_ee_87_dc_06_1e_12_43_5c_93_2a_e1_f4_d4_f6_cc_e5_7d_8e_4f_03_0e_b7_c0_ed_34_7b_86n,\n 0x18_1f_88_09_21_71_1f_61_28_e2_df_ab_54_44_0c_20_87_ad_7d_02_35_be_ca_49_6d_c6_1a_ea_e2_35_db_3an,\n 0x14_3f_ba_cc_8b_94_8f_f5_61_d6_1c_ff_21_0e_8a_f8_2a_0a_50_08_52_d8_4a_e2_9d_84_10_e4_d2_dc_7e_1cn,\n 0x06_c4_e0_67_9e_8b_4d_1b_82_49_e0_9b_ae_22_38_b9_16_16_a4_20_94_c6_9b_e8_39_39_57_0a_47_51_e0_93n,\n 0x14_f7_cd_a8_9b_bb_cd_7c_dd_77_8f_f8_78_c8_df_66_e2_99_7c_ed_3f_ed_30_91_fa_0b_25_9c_74_33_47_cdn,\n 0x21_b4_0b_db_3d_b1_78_af_b9_7e_6c_8f_50_9a_3a_54_e4_97_0c_70_2a_3c_96_e2_a6_80_a3_bd_9c_d1_15_9en,\n 0x02_23_3a_fa_34_56_f4_72_cd_fe_3f_61_0d_06_12_f0_d7_4a_d9_84_2d_0a_d0_8b_82_69_16_d3_a3_b4_3b_acn,\n 0x19_58_38_cd_76_2c_2a_0a_c2_37_c6_bb_11_1d_27_4b_f8_09_00_ff_6b_49_56_68_0b_de_41_ad_fc_90_11_0dn,\n 0x09_82_b8_80_22_16_42_2f_46_f2_9c_09_85_96_71_02_04_8b_43_b5_3e_3c_8d_1e_55_8b_2c_e8_16_27_f0_d2n,\n 0x01_1c_bc_74_1c_1b_f4_8f_70_80_f4_91_c2_6d_11_67_66_a8_bc_51_d9_cf_b6_cd_08_16_3e_56_9e_5f_54_6dn,\n 0x04_c2_67_70_bf_d3_0b_e7_f0_86_c9_c7_07_f2_9e_38_a2_2a_b6_54_1f_dd_5d_94_91_d6_13_d3_fc_36_d6_4an,\n 0x21_da_2b_d8_3e_e8_01_70_d4_cb_12_3e_32_2f_86_c4_aa_2f_2e_bf_85_cb_97_bb_19_e8_d7_34_0c_cf_a5_56n,\n 0x13_80_aa_59_b0_3b_58_c6_8d_37_7f_62_ee_0b_3b_dc_06_c1_b2_df_0c_68_d5_03_f8_b0_a9_5c_17_23_9b_a3n,\n 0x21_30_9c_ec_61_20_b3_20_41_47_5b_a9_ba_cb_7a_a5_07_57_8f_c7_d4_28_bb_01_0f_c0_6f_0e_a3_6d_07_62n,\n 0x08_79_2c_cf_88_cf_6e_45_0d_13_7e_d7_b5_49_62_95_f3_f9_cd_63_76_45_43_46_fa_e4_71_7f_79_80_e5_54n,\n 0x0a_ef_0f_90_86_c9_e9_42_43_22_00_e8_b5_95_55_69_5a_4f_53_1e_31_9f_d0_d5_7f_18_81_a5_5e_3a_03_7en,\n 0x0e_0b_74_8d_58_56_93_6b_3f_d8_f2_eb_1e_b4_c2_cd_2b_8b_8b_e4_d6_31_8a_82_ca_d3_e0_ba_c5_05_76_6fn,\n 0x17_2f_ad_32_59_3c_37_4c_ee_f1_a4_2a_bb_d7_08_56_5d_35_91_e8_03_2c_51_7e_45_95_f3_06_41_55_ae_8en,\n 0x26_f5_f9_ce_4d_72_14_5d_3e_72_c4_2c_97_4f_fd_fc_89_a4_8c_51_1b_d7_60_b3_d9_db_03_b9_b1_05_c4_b8n,\n 0x10_e0_53_33_69_34_90_4f_f6_d7_b6_72_a3_bd_2c_a5_87_28_e5_14_9a_95_82_a7_2c_1c_30_9e_fc_f7_a4_07n,\n 0x1f_01_a9_89_34_dd_de_51_f3_00_d5_42_d1_fa_d8_ff_f4_11_74_71_ca_b0_15_d4_14_6b_05_f1_de_b0_41_16n,\n 0x08_7c_d7_a9_5f_df_5f_b9_d7_f0_43_1a_04_66_62_5c_db_42_dc_62_37_ff_fe_77_f5_ba_14_c6_df_a1_b3_93n,\n 0x1f_9a_e8_ef_71_db_cd_0d_48_a1_24_bd_26_5d_37_cc_0c_10_18_ca_0b_45_e7_b4_37_96_b0_45_f6_5a_7a_55n,\n 0x15_71_a2_b0_a2_51_58_c0_c5_d2_97_a3_97_71_5b_00_bd_1c_54_35_d2_68_6c_31_61_8d_41_28_c5_38_f0_c8n,\n 0x23_22_fd_f2_76_1e_45_f7_cf_26_5e_4d_62_72_51_96_26_de_08_bb_f5_e7_1a_f1_70_69_df_29_49_7a_58_38n,\n 0x2c_a8_98_0f_9f_dc_db_1b_35_02_2e_02_f6_be_62_f1_93_55_ca_4b_9e_ac_9b_2f_dc_c3_7d_f2_ed_02_64_f9n,\n 0x1a_88_81_c3_34_f3_94_20_d4_67_2c_50_50_f4_5d_92_81_42_4e_b6_15_45_78_2a_6c_17_04_0d_c7_d3_80_48n,\n 0x1f_31_9a_0d_c0_f9_b7_42_9e_3e_e9_be_d5_7a_96_a0_f2_f6_7c_b5_fc_d9_2b_1c_9c_dc_97_a1_5f_77_61_bfn,\n 0x24_19_33_6f_26_dc_5d_49_8f_27_9a_f9_5b_4d_7d_12_11_13_7c_60_8e_ed_29_b5_c9_51_06_95_e1_a4_67_c6n,\n 0x1f_51_4d_22_f6_72_cb_b1_63_63_be_fa_56_67_87_78_20_9b_d2_57_ca_11_7b_51_41_b2_9e_06_e4_bd_57_98n,\n 0x28_03_4a_6c_90_1c_ec_4c_56_67_53_11_de_f1_0f_bc_d8_08_8f_2f_68_f7_95_d3_b3_55_19_bb_1f_bf_1a_1dn,\n 0x26_c2_b9_21_18_cd_27_04_06_32_41_fb_91_98_06_a0_fe_f9_81_4c_87_b0_71_d5_a1_1e_fc_2c_b1_10_3c_f2n,\n 0x03_d5_39_ea_2d_dc_b3_58_76_38_61_79_1c_c4_34_d1_ee_fe_73_1a_d3_26_2e_da_85_7c_56_a0_6d_9c_f8_dfn,\n 0x22_06_f4_94_36_40_9e_8b_e8_f5_42_92_6d_9e_29_91_21_b4_32_10_e7_1d_d7_97_0f_b4_28_33_37_d2_41_c7n,\n 0x0d_f2_55_98_60_77_71_03_9f_ef_57_7a_6f_6d_bb_61_0c_ee_af_20_4e_aa_c7_a0_9b_96_ad_22_de_68_34_67n,\n 0x28_3a_89_8d_e5_a2_14_65_cc_a3_21_3a_f5_84_b7_f5_64_13_a9_e8_4b_52_44_31_43_6d_0b_13_66_95_66_4en,\n 0x26_ab_26_4e_89_61_10_39_dc_9c_fd_4b_21_6d_f4_47_09_b5_4f_24_18_df_66_54_5c_30_cb_93_81_4e_44_6an,\n 0x22_10_d7_f2_ef_43_e2_29_c5_63_1d_4e_70_1e_f8_9f_fd_f1_ac_a6_43_51_79_1e_0f_e7_ee_d4_28_49_3c_8en,\n 0x07_da_0a_ff_b4_7d_64_b7_ed_c6_82_da_be_5c_6d_b2_24_74_3b_5a_38_5d_04_a2_47_4d_52_ff_e8_ab_fd_09n,\n 0x02_ad_82_80_ae_5c_f8_29_36_06_9f_72_e4_90_10_f8_d1_64_3c_dc_29_9f_12_ac_09_6f_d4_4c_50_1f_f9_afn,\n 0x26_7b_89_f8_4f_48_45_e3_92_45_65_fc_f1_a5_4e_8a_32_57_fe_8a_ee_f5_15_f8_6c_c1_c0_05_6f_46_f6_aan,\n 0x2d_46_f5_c3_5e_5a_81_cd_90_2f_41_8b_4b_93_f2_5a_bf_80_2d_32_d5_2d_a0_54_a5_ed_ee_e2_76_14_8c_aan,\n 0x20_ae_8e_71_57_0f_8a_e5_e6_55_eb_42_a4_f2_74_65_02_26_af_1f_e1_60_a9_6b_17_78_54_d7_36_f2_bd_2an,\n 0x02_0b_9b_29_a5_64_47_90_a5_a3_1a_a0_a7_24_fb_57_8f_36_50_59_0d_dd_16_4c_e5_af_59_3f_43_c7_98_f4n,\n 0x13_90_c1_d9_59_91_97_2b_3b_8e_fa_1a_36_73_83_ab_97_f4_71_43_96_63_5e_87_91_39_59_37_01_0e_f0_a2n,\n 0x04_97_3b_43_63_f1_f5_5d_a1_2d_4e_ab_98_50_12_d3_2b_d8_0b_c0_ad_b9_02_16_ae_d9_57_4d_a9_e9_7c_58n,\n 0x25_f7_a6_53_fc_5a_ad_c4_af_0f_e5_34_95_3b_c8_83_07_a2_0e_94_1d_7c_68_6b_c5_3b_be_32_4d_18_4c_d3n,\n 0x12_4d_78_10_82_1f_47_78_2f_e6_bf_64_a7_c5_ea_cf_03_d5_59_77_6a_25_e2_f6_9d_e2_83_62_be_18_0b_c9n,\n 0x2f_6f_04_90_9d_c3_60_d1_ad_d5_03_95_3c_11_64_8f_72_6e_b0_f6_12_f7_03_ac_1e_37_86_03_d3_33_09_a8n,\n 0x13_c2_cf_1b_21_b7_86_23_8f_aa_93_bf_bf_f5_c0_92_18_99_ef_1a_b2_95_48_82_8a_37_5e_4b_c0_0a_1b_52n,\n 0x08_4c_20_0f_10_ef_f5_9b_f4_3c_f3_cc_3a_50_6d_e5_00_ed_68_e5_9b_ce_5c_dd_f1_13_7e_c7_d6_1a_4e_a4n,\n 0x05_3b_5a_d5_90_2d_fb_5c_a3_6d_76_b2_f9_80_90_6b_14_eb_dc_47_21_54_6a_1f_5f_1e_97_41_64_4f_29_13n,\n 0x23_bd_44_98_b4_c0_c9_f2_48_82_2f_15_b5_c8_8b_c7_a7_8d_52_8d_3b_d3_e3_d3_b2_7a_f6_03_3a_fe_12_62n,\n 0x2b_5f_f6_1b_0e_1f_e1_8c_d8_4e_35_2c_41_7a_b5_b8_36_68_3f_28_df_1c_16_e2_8c_08_bc_4f_d2_69_a9_9en,\n 0x28_f7_74_b7_93_6b_c5_09_5e_77_eb_65_50_05_ab_87_67_aa_d0_76_c0_98_b8_fb_ba_85_21_f1_8a_24_85_b4n,\n 0x0c_7f_6d_2e_ad_68_37_72_56_59_84_ac_81_9d_c2_c8_32_6c_c4_d3_b1_8f_63_39_12_56_21_26_21_28_c8_45n,\n 0x1e_03_53_2e_35_11_15_65_17_3f_76_b6_7e_e9_c7_13_95_37_57_03_7b_27_2b_36_9b_14_bb_5d_22_ab_64_33n,\n 0x1c_da_e1_68_2f_2c_10_e4_40_de_32_eb_51_72_6d_9d_b7_6d_07_b6_42_96_75_bf_ad_7e_77_8c_c0_be_e0_76n,\n 0x24_de_40_66_6f_59_de_97_de_ef_f6_d3_4c_87_3b_7c_24_98_f0_22_b8_56_c5_51_fb_4b_a6_fe_03_3e_4e_1an,\n 0x0f_dd_01_66_d1_5c_0f_42_66_ed_72_96_db_a4_b6_39_04_0c_ea_a6_91_06_83_ee_44_d3_7b_08_67_9f_48_25n,\n 0x03_18_ee_22_54_c3_88_8c_e4_53_4d_90_90_44_8b_7a_86_2a_fb_df_fb_d4_47_0d_ab_55_c9_fa_24_f5_0a_85n,\n 0x07_a8_d1_9a_19_79_c8_fa_34_01_bf_e9_64_ed_5d_3f_3e_ef_19_d7_e4_d0_ba_00_7f_38_54_b4_90_4c_5f_37n,\n 0x28_46_f1_5a_12_14_56_f0_f7_4b_50_72_11_2a_90_ec_c5_6a_48_d9_8a_7a_07_f3_0e_b5_53_42_4a_00_b2_7an,\n 0x12_95_ad_2d_e6_8e_05_b1_13_03_1d_e8_54_95_9d_98_58_fa_cf_44_8c_a1_01_40_54_07_aa_fc_1f_e5_04_96n,\n 0x27_45_21_0e_cc_25_33_01_7a_43_30_5f_cd_13_07_8d_69_44_3d_0d_da_35_be_2e_a5_0f_c4_85_ff_8f_1c_88n,\n 0x0d_c2_7f_0b_35_fe_c0_e0_ff_8c_be_13_1c_7e_e4_2a_22_8d_88_9c_b8_25_4c_49_00_cb_56_ea_78_49_19_b2n,\n 0x09_78_09_25_cd_b1_42_9c_c1_7c_1e_70_b0_b4_37_55_e2_e7_06_02_99_4e_97_5d_34_c3_fc_31_ca_c1_98_39n,\n 0x2e_f8_9e_ca_e1_00_6a_20_f7_39_aa_4d_a6_98_7b_b8_66_d6_99_3f_a8_9e_4a_2f_bc_cb_b9_ce_28_ed_58_adn,\n 0x0f_6f_ea_b3_21_51_56_ac_3f_87_8c_e6_7c_59_53_db_c4_e5_ab_3d_13_1e_e9_58_27_53_26_ff_94_d2_9a_54n,\n 0x20_49_c1_bc_b0_35_cb_59_a2_35_0b_ce_cc_2a_62_f4_fd_b6_58_10_8f_05_9b_c3_8c_14_09_85_71_a8_7d_22n,\n 0x09_c5_29_8f_66_96_83_6b_2a_65_44_c9_ca_1c_0f_64_48_e0_e6_e4_e0_d4_a8_c3_aa_7e_63_5a_ed_20_da_45n,\n 0x1d_48_ec_8d_78_6b_e2_8f_71_bd_71_99_4d_a0_4f_78_7d_c4_b7_79_2f_e2_58_25_5a_f7_42_b3_48_e4_ea_64n,\n 0x07_66_ba_3f_36_0f_9c_b8_d2_75_93_ce_e1_d8_90_f5_73_50_c2_35_09_6d_9d_05_63_39_92_d4_77_ef_25_67n,\n 0x18_89_39_56_ce_60_07_34_71_4c_cf_eb_c4_4f_67_03_6f_51_c6_52_82_2b_c0_c2_37_97_d7_3a_93_d4_74_93n,\n 0x00_3a_c5_e6_a3_c0_37_3c_58_37_9b_f3_8c_87_16_5d_71_6a_ca_05_e1_4c_e4_72_9e_c9_14_96_dc_74_a1_den,\n 0x17_1f_4b_3d_04_a6_ea_f7_db_0b_86_db_0b_a5_be_7d_44_51_b4_ea_0a_13_33_bf_aa_31_be_8f_50_da_12_aan,\n 0x18_19_55_a3_fe_d4_ff_19_d9_0d_94_7c_2f_15_7f_05_0d_b3_4c_84_7f_59_f5_f6_3a_c6_c0_3b_55_38_3a_a0n,\n 0x15_e5_03_ae_66_cd_37_b3_a5_8a_c6_55_49_aa_1d_e5_92_28_f5_e5_aa_de_a7_03_51_69_b9_80_1e_58_a8_00n,\n 0x0f_ee_b8_ae_c6_c9_63_77_4b_27_f8_6a_55_b4_59_4d_54_b4_b3_09_55_e3_58_49_0e_a1_69_73_8f_9e_61_69n,\n 0x0d_d9_53_1f_7a_34_f1_a0_01_d4_eb_c7_4c_b4_ea_47_72_b9_55_19_32_5d_29_89_fc_93_30_35_c6_8a_d3_7dn,\n 0x21_9f_b5_9a_c2_21_74_79_72_bc_e6_6f_78_ca_33_c9_ba_e3_83_05_e1_1a_b3_48_1a_eb_db_9d_db_4b_2c_b8n,\n 0x1f_d6_0d_c0_c4_76_de_f3_b6_24_c2_19_b3_05_53_73_d7_32_13_dd_92_5e_94_0b_f5_5c_ed_88_23_1c_e0_9fn,\n 0x1f_8d_07_ef_3e_16_cb_eb_a7_89_24_19_56_21_1c_fa_59_54_52_80_1f_08_c8_76_c2_52_5d_c5_04_c5_20_b9n,\n 0x05_15_74_15_48_eb_a3_97_d1_4e_62_69_b3_25_66_61_5d_09_44_71_55_ba_b0_01_ac_6e_e2_05_69_8f_16_ecn,\n 0x25_30_b3_7d_2d_d1_b6_16_60_39_f2_9f_b1_d7_8e_90_e9_03_4c_b6_e9_b6_53_fe_74_28_d7_68_f8_e9_b2_d5n,\n 0x16_02_e8_69_d5_0b_28_09_51_ec_cb_3c_e7_17_15_62_89_80_d6_48_39_0e_89_af_f5_0e_55_a1_bb_ca_d4_b5n,\n 0x23_38_87_21_7a_f6_72_bb_ac_d8_73_f1_28_5a_36_12_79_6b_0c_bf_78_90_46_3e_de_54_88_2f_c7_74_cc_7en,\n 0x18_49_b3_aa_9e_70_53_c8_e9_52_52_85_89_80_ab_e8_f1_64_2e_c6_68_04_75_3f_02_ff_63_f0_ff_21_d6_48n,\n 0x1a_00_49_78_08_85_e0_82_74_47_af_9b_a9_eb_9e_65_8f_fd_62_ac_ba_c9_98_f6_c1_a8_0d_de_5a_ed_c1_a3n,\n 0x1c_a9_cb_fa_80_8c_a9_c8_55_59_42_5a_f3_1c_0a_ec_3e_59_34_b6_ab_51_a2_ea_25_49_fb_c2_e7_56_29_13n,\n 0x28_a2_a0_f0_62_2c_2a_8e_4f_16_f2_e0_36_5b_72_b4_81_31_2d_8d_50_87_e2_e5_8a_e8_9b_34_b8_cc_93_a1n,\n 0x21_d1_be_ed_10_bf_f9_6c_a9_f6_15_bd_ed_99_67_4a_73_31_a5_2f_b3_56_69_53_e6_dd_f9_ec_a2_80_15_3en,\n 0x18_71_14_f2_bb_ba_9a_99_32_97_bd_74_0c_27_35_ef_01_b8_5a_bb_db_5b_47_c4_1c_e6_ec_f2_fc_7e_db_e3n,\n 0x11_d0_a3_86_77_5c_6e_67_0a_36_0a_6f_d9_57_c4_03_b4_34_ba_13_f7_2c_ed_c3_9d_14_08_bf_a7_3f_c0_6cn,\n 0x0f_f4_ef_2f_46_ab_ef_24_ca_15_d8_b3_89_e0_2c_d3_94_4d_12_96_13_1b_6d_2d_ce_95_4d_d1_1d_72_4f_65n,\n 0x20_33_8e_47_b5_20_d2_81_44_8f_3f_8b_f0_08_aa_74_3f_74_c5_b6_3f_98_a6_30_a0_01_08_46_4b_b2_89_25n,\n 0x25_6f_a0_fe_f5_85_3d_c1_0a_ef_a8_65_c5_65_31_69_39_7d_54_5f_07_58_4e_ae_65_e1_b3_e5_0f_b6_a6_16n,\n 0x14_4b_a3_61_9d_5f_c9_d8_4f_06_32_df_29_6e_8d_ea_50_17_32_95_73_66_1b_69_88_0c_38_ca_45_ae_31_89n,\n 0x29_84_98_c8_df_31_dd_31_53_80_b3_65_1f_e9_c7_ed_5a_af_4a_49_50_a6_61_34_bc_8b_60_29_47_2a_35_64n,\n 0x18_ca_f9_e2_64_a3_2d_bc_a2_3d_a5_1a_35_14_fb_a9_2f_b6_2f_78_ec_c2_d8_44_55_73_55_ec_8a_43_b0_c1n,\n 0x19_4c_81_28_28_f1_cd_bf_0c_4f_0b_04_86_af_b4_c5_d9_6c_cc_21_8b_3b_90_d0_4b_c5_f1_c8_66_5f_f6_41n,\n 0x23_f9_3e_1c_44_11_9b_a8_56_a1_03_80_c2_33_31_91_b3_10_5f_50_2a_61_ea_bd_d8_b1_ab_c8_03_c0_4a_e2n,\n 0x25_d2_cc_98_8e_47_ce_70_fa_99_cf_18_10_50_00_d3_04_67_17_d8_39_af_54_7e_dc_3d_e9_31_96_9a_c0_06n,\n 0x1d_10_83_60_00_23_cc_cd_c7_da_ee_be_b1_97_83_aa_cc_6e_94_22_6d_00_c7_ca_44_da_fd_75_56_14_a8_0en,\n 0x19_43_a9_ef_81_1a_bf_e6_57_ff_f9_25_04_f2_a8_91_4f_09_df_dd_5b_97_99_11_04_7b_ee_4b_69_80_04_cfn,\n 0x01_f9_6d_b1_39_2a_3a_e5_cb_fe_e4_c1_86_3f_0b_dd_fd_95_a6_52_99_3c_8f_17_ce_18_86_9c_26_1b_c6_c7n,\n 0x12_d4_81_4e_bb_31_53_31_d4_fb_a9_df_c2_ef_90_9c_d7_7b_1e_71_26_c9_e6_25_8a_3c_98_21_d6_63_d7_78n,\n 0x27_a2_ad_69_b9_eb_56_97_b8_5b_43_1e_ba_85_db_b1_98_43_f3_c7_51_81_21_aa_49_51_5a_65_ee_55_2e_30n,\n 0x06_6f_7f_29_81_ec_c4_c4_41_5d_a6_2e_ab_d3_23_04_24_ab_fe_d3_56_71_21_f6_56_e8_19_1a_78_c5_dd_f0n,\n 0x16_e2_98_f6_0b_26_5f_06_f8_ec_92_27_e5_4e_8b_bc_f2_b4_82_39_21_de_b4_4f_06_3c_92_43_0f_c4_0a_12n,\n 0x1c_10_ab_39_cb_04_ce_02_ba_72_d9_96_04_9a_d6_88_96_1f_60_f8_d9_82_1d_17_16_c5_a6_a2_fe_0a_97_34n,\n 0x2c_d7_c8_a7_8d_d9_9a_ed_c1_8c_8d_47_45_2b_4d_5b_2e_9c_5b_21_28_eb_37_3b_82_0c_a8_be_ec_97_0a_73n,\n 0x23_39_1a_c9_f2_9c_1a_99_ed_6f_bd_9b_bf_be_72_b4_88_56_9b_f9_a2_07_ad_db_d4_e3_0a_3a_8b_97_31_1fn,\n 0x30_41_c5_59_9a_51_ed_a3_3a_63_98_eb_31_23_25_19_79_7b_00_72_67_02_a9_8a_31_9c_7c_cb_a9_fe_d2_f2n,\n 0x04_e6_49_08_d7_9f_35_ed_77_fa_81_96_f0_7a_94_8c_84_85_12_b5_34_d9_bf_4f_30_ef_09_3c_79_74_03_aen,\n 0x19_25_1e_90_7d_7a_90_3b_fa_7b_ed_87_eb_04_bd_92_1d_c1_90_62_e4_ec_3a_bc_9e_82_b7_fa_4e_25_be_6fn,\n 0x1b_39_68_1c_2c_12_5c_ae_8d_38_cc_5e_f6_fa_c2_52_f4_f8_23_74_fd_5b_90_59_61_4e_cc_13_4f_2b_29_d5n,\n 0x21_7a_54_dd_68_dc_d5_3e_33_6c_ea_49_d8_99_25_fd_12_8f_ee_65_bd_ca_13_16_59_d3_24_ae_63_66_96_b0n,\n 0x2c_05_4b_f6_f9_17_76_02_0d_e3_fb_97_05_ba_29_e0_df_17_d7_e1_af_e6_1e_11_ed_a8_ca_f7_87_62_af_3cn,\n 0x1f_88_61_1d_6c_02_87_ce_53_54_3d_87_ed_81_82_ba_47_5f_6e_22_39_89_ed_a3_5d_1a_b7_46_27_5f_a4_e9n,\n 0x20_4d_5a_98_29_d5_70_e2_03_bd_e4_91_b8_62_a9_69_79_d7_1e_48_0e_bf_fb_b1_3c_4c_b3_af_56_63_71_cfn,\n 0x0e_ac_95_c6_88_af_aa_77_3a_ce_48_56_25_27_88_17_0b_ab_a6_9a_61_81_07_1d_1d_1a_4e_0d_d3_20_b4_b5n,\n 0x22_45_a0_96_7d_77_7a_c5_16_00_82_56_3d_58_15_b4_4e_d0_ff_9e_43_05_c6_5c_50_3e_0f_fe_ba_e5_dd_2fn,\n 0x1b_73_29_05_46_6a_d9_21_ab_24_30_cb_df_77_2a_81_6d_1c_ed_4d_ea_68_18_dc_3c_ed_fc_67_ff_e5_ff_ben,\n 0x08_ca_f1_a4_cd_82_6d_19_e1_c2_7f_97_0c_ad_05_b2_d4_99_31_ba_e3_69_b8_2c_30_01_10_41_87_9f_28_94n,\n 0x27_d8_13_44_23_cd_98_7b_24_9f_4b_ed_c7_77_3f_b7_b7_31_4e_8c_83_d9_72_7f_3a_21_d0_f1_62_c5_61_cdn,\n 0x09_a2_ea_37_b3_d7_39_dc_d7_08_62_ce_62_a8_83_7d_d2_67_c2_2a_29_eb_05_0e_f2_46_ed_d8_4f_48_f9_fan,\n 0x1a_dc_fb_43_6b_23_8f_74_61_75_7a_96_65_d2_dc_cf_ea_1c_73_52_c5_9e_5a_ea_a8_ed_24_b8_53_0b_df_b6n,\n 0x2a_23_54_db_53_5f_eb_a0_80_0a_d6_65_97_61_f2_9a_ab_31_c1_42_71_6e_16_77_95_83_c1_7d_3c_bc_d7_00n,\n 0x01_03_1b_87_6f_c7_04_c3_29_6b_b3_81_10_b8_74_76_f8_8f_57_21_a1_13_2b_a7_1b_a0_dc_41_68_71_9a_6dn,\n 0x0b_85_e9_fb_66_4c_c3_b4_ee_53_99_36_f8_85_88_5a_e5_43_c6_06_fd_a0_07_ae_d2_02_57_c8_e4_ee_35_97n,\n 0x18_06_7b_d0_85_c6_0d_a6_30_ab_24_cd_f4_19_af_da_09_77_89_12_d5_c7_6e_bf_d9_df_7e_cf_f6_20_71_86n,\n 0x03_77_1d_be_5c_33_40_fd_28_99_17_d6_fa_c9_a1_54_b6_d5_5d_63_55_7a_f1_3d_9b_ea_71_1a_af_c5_e1_dbn,\n 0x03_a1_20_38_1b_15_96_7c_de_1a_33_93_9f_ca_78_30_ca_a1_af_1f_ba_d6_d6_cb_d4_62_35_92_10_1f_1f_77n,\n 0x04_03_24_fb_ad_73_90_bd_98_c3_55_32_32_ce_a6_81_d4_b1_8b_e8_57_93_12_18_fb_bd_1d_39_4d_67_f7_81n,\n 0x29_4a_93_78_ac_cf_72_3c_26_26_6d_f8_9b_ff_1a_2b_db_71_0f_19_8d_e1_68_89_0d_fd_73_ac_f7_86_cd_98n,\n 0x20_3d_86_40_46_63_32_ce_0c_49_33_96_73_1a_23_b8_5f_77_cd_d9_58_80_c4_57_dd_9c_d4_6e_99_bf_0f_25n,\n 0x0d_33_94_81_cf_52_ab_1f_65_2e_c8_96_7a_89_77_6e_92_b6_aa_12_05_67_94_c9_dc_85_6f_c2_7e_c9_1e_f8n,\n 0x15_8b_e4_21_77_47_07_6a_28_aa_6f_61_7c_7e_cc_60_45_c8_ce_5c_48_4a_ad_a1_97_99_4b_61_8b_37_cb_a0n,\n 0x2d_aa_17_b3_5a_c2_ea_21_ed_a3_6b_b0_6d_b4_0a_7f_a8_1f_e6_0c_da_55_6d_73_12_1d_bf_17_c8_a0_5e_bdn,\n 0x1a_2f_79_03_bd_64_3c_61_cc_5e_b6_84_55_20_2f_66_13_c9_c0_3b_c3_c5_9a_8c_d7_f8_d1_0b_0c_77_92_10n,\n 0x1c_a7_83_5f_4f_1c_5f_35_aa_1e_00_54_af_b1_14_76_9a_82_47_4b_2f_9f_77_12_27_f0_22_fa_76_2b_a5_6an,\n 0x04_3a_b3_c9_5b_64_ce_fa_7f_97_e1_e8_ab_f9_db_25_d6_4c_22_13_bf_44_b0_1b_00_05_fe_e0_67_80_4b_ebn,\n 0x0e_ed_16_94_08_6c_dd_6d_d8_40_02_c6_93_65_12_0c_c2_31_82_83_22_6e_b7_db_d9_c1_15_4e_5b_e7_74_a2n,\n 0x03_1b_72_6a_a5_dd_a4_56_ff_ac_29_cd_38_b6_49_26_be_57_a1_b6_c1_fc_59_3a_50_e7_e9_cd_38_4f_7e_f3n,\n 0x26_52_cf_bf_90_11_0f_77_27_75_0d_68_ee_ab_7a_49_38_58_86_95_3f_75_83_2b_e3_75_c3_7e_a9_ad_67_50n,\n 0x24_a5_8d_08_7a_f3_81_a6_f2_7b_06_55_de_79_5b_6a_7b_e7_34_f0_5a_4f_4e_de_f0_57_22_79_a2_8a_3b_d8n,\n 0x1b_04_d3_e9_2a_33_8f_6b_ee_b8_09_13_82_d9_31_41_b3_bb_3d_03_32_94_41_3a_39_8d_a2_44_64_27_2a_42n,\n 0x29_0b_9e_e0_2a_3a_29_ed_a9_4c_e0_8a_67_52_19_1c_3c_29_6c_c2_c0_44_ed_bb_e0_91_17_23_60_b2_4c_1fn,\n 0x2a_01_2d_2f_44_15_45_c9_14_d2_5d_0c_d2_8f_a8_10_4c_da_2a_08_08_45_c7_9c_c7_d0_f3_91_46_b0_b3_58n,\n 0x01_d4_e5_bc_18_0c_ed_cb_8e_f0_a5_9d_25_49_8a_54_2e_32_4c_f0_f7_12_8f_70_7c_43_3e_ac_1e_de_d4_7fn,\n 0x05_46_59_f0_12_ec_8b_75_7b_1d_2a_17_5a_9f_a6_43_e9_63_23_8c_34_22_64_ae_9f_c3_9a_69_d7_54_62_a8n,\n 0x19_fc_03_05_e1_e5_b2_af_cb_86_a7_42_15_2b_a8_95_ab_02_4a_c5_9c_7b_57_e5_35_22_4f_fb_80_7d_c7_20n,\n 0x21_d1_fd_0c_2a_ff_ce_67_4a_b0_16_66_1a_21_6f_06_15_b5_bb_1f_3f_c3_98_5e_9d_74_dd_71_ea_86_ad_66n,\n 0x26_95_6d_93_f0_17_76_d2_3b_c7_f1_e3_46_49_92_58_1a_dd_db_48_17_6b_cb_b0_3e_fa_85_3a_b0_9c_3b_17n,\n 0x24_03_12_0e_5a_68_78_95_bc_be_57_b5_b1_1f_ba_0d_96_3e_b0_c8_63_d8_aa_b7_41_12_f5_12_ed_8a_d9_e2n,\n 0x26_68_4f_a9_b9_54_8b_08_ac_79_e7_a1_4b_c2_8f_8d_47_65_03_12_f0_62_9a_40_bb_cc_db_59_0a_29_8c_f3n,\n 0x21_69_69_c2_21_bd_c3_da_a1_c2_ad_b9_be_45_6c_a1_9f_cb_94_8d_e9_72_5f_c5_97_ac_62_69_68_71_5c_18n,\n 0x06_d4_e5_43_62_d5_dc_7c_d4_89_ef_46_67_13_c1_b8_a7_03_87_60_62_ed_03_66_a4_75_ae_9a_c0_77_6c_0dn,\n 0x10_c2_1e_bf_64_2d_38_aa_f3_de_15_ac_4a_0d_e3_b7_1a_b9_78_8b_59_04_a7_83_26_ef_09_9a_1e_b9_53_fan,\n 0x0a_4b_8e_91_b0_2d_a9_4a_a6_21_ac_ff_16_bb_dd_44_f0_79_d2_9b_20_34_a9_e1_dd_8b_e2_70_e7_e3_a8_03n,\n 0x2b_1a_5b_52_b5_f1_c7_39_f8_e1_67_a8_56_1b_7c_5a_56_7f_d4_49_b6_1e_4a_aa_29_65_f3_17_7b_ad_f7_bfn,\n 0x1e_85_8a_1e_db_09_7f_16_8f_10_b9_13_0e_51_d5_a4_f3_b5_5d_a7_fa_d6_89_62_98_f1_4b_b7_af_4e_63_56n,\n 0x28_36_2c_3f_f6_ab_e4_fb_01_74_50_c7_dd_34_4b_d4_e0_81_00_af_e5_a0_9c_b0_18_77_26_59_67_aa_fc_d3n,\n 0x20_4e_01_7d_42_e6_b3_2c_ff_20_91_36_8e_34_42_01_44_08_54_76_1a_0c_d4_63_76_60_41_d7_e3_8d_cd_44n,\n 0x18_23_07_aa_6e_06_bf_1b_20_cb_e5_34_91_3a_0b_56_1e_31_03_16_e2_35_40_f3_5f_1b_c9_ee_43_7e_92_aan,\n 0x1e_e4_00_ae_d2_b9_f1_ed_67_a8_11_64_38_cc_b7_bd_b8_d1_79_86_8c_1f_d6_a6_dd_94_97_74_4e_f9_ba_9dn,\n 0x28_85_90_ac_d3_31_f4_49_9e_fc_2e_7e_8a_a2_65_6e_64_cb_f0_a6_8c_7d_92_8c_22_20_db_64_3d_b9_d4_10n,\n 0x00_86_34_f6_49_b3_d2_50_22_a2_12_5f_5f_30_0d_2c_ce_2c_be_12_2d_f4_f1_c5_12_96_e6_b6_5f_ff_17_95n,\n 0x03_c4_62_cf_cb_45_16_9d_9c_ea_d1_d0_71_5c_8c_ec_ff_ec_77_ea_44_9a_20_88_2a_ea_fa_4a_ee_27_4e_6an,\n 0x18_fd_54_d4_98_6a_2e_78_04_cb_cb_77_e6_81_2c_06_e7_b8_e2_8c_a5_1a_e3_23_e5_6d_90_94_78_2a_30_cdn,\n 0x01_b9_ef_e0_4a_80_9a_43_c6_24_c7_26_e9_29_4b_dc_d3_bd_1e_97_cb_de_d7_42_e2_17_3d_3f_e9_e4_29_fen,\n 0x10_9c_a5_91_b9_35_0c_71_a7_f2_88_6c_6e_55_62_8b_38_20_62_23_a5_7c_07_b2_a4_49_07_71_c9_21_e2_ean,\n 0x0f_98_13_4e_90_77_52_97_68_e4_ec_3d_ce_4b_62_ca_6b_af_81_99_d7_8c_7e_35_f4_51_91_2a_80_fb_1b_fan,\n 0x22_05_83_4a_b1_c8_a6_6d_e1_bc_76_6a_de_e1_8e_af_68_9a_52_be_ae_86_59_ad_4d_0b_43_7b_ec_22_95_26n,\n 0x29_2a_6c_ab_a0_71_b9_fd_8f_b5_f0_e4_6d_de_4d_71_1b_b4_a1_18_ad_0c_67_e7_7a_76_37_54_4b_c6_c2_1dn,\n 0x0f_21_8a_c6_3a_89_d9_6e_a3_7d_62_ea_03_87_c1_45_df_2f_14_95_7b_cf_5c_7b_5b_2c_b9_31_7a_87_17_40n,\n 0x21_39_3e_5f_2e_11_21_13_6a_25_f0_71_46_5c_b8_5b_02_b2_fe_12_4a_8e_4e_a8_31_81_89_1a_71_0b_0a_50n,\n 0x06_e2_2d_69_46_48_4d_ad_3f_4a_d0_da_41_be_11_da_2a_a5_45_1f_c7_f4_cf_6c_c5_89_82_78_a6_74_7b_b9n,\n 0x1e_c8_11_7c_55_90_07_4a_29_a0_19_14_0e_fd_1c_62_7b_71_5f_c4_64_f1_d7_ac_9d_47_f0_97_9a_4c_59_c7n,\n 0x0e_6f_5d_2e_f8_29_45_df_b3_92_e4_47_13_8b_c9_4c_32_bd_db_72_48_30_55_a0_56_34_44_a0_e4_f6_dd_70n,\n 0x16_9a_bf_cb_3e_e9_6d_7e_02_f9_71_1e_ad_c0_a9_e2_4a_47_a2_f9_fb_11_21_cf_8c_6d_ac_d9_1a_5b_32_can,\n 0x2d_1d_cd_82_58_d2_c5_59_53_5e_c6_28_61_78_8d_ea_60_dd_42_d7_fe_e0_cc_cd_20_a6_ae_42_14_d2_19_90n,\n 0x1f_8a_46_ce_c4_65_bb_a9_64_49_6d_25_ca_f9_a3_51_be_7d_09_a6_28_ff_97_ea_c4_fc_ee_d7_bf_ed_5c_45n,\n 0x0d_da_e5_75_30_15_e7_c1_f3_b0_7d_ae_4b_e7_74_73_98_c9_b9_86_67_aa_13_f8_0f_76_8a_22_04_62_0b_28n,\n 0x1d_96_12_04_69_72_79_20_3f_47_21_dd_08_58_24_4f_2c_c6_4c_5c_bf_1a_4b_f1_07_7a_04_2e_bf_11_af_81n,\n 0x26_11_bb_f1_9a_dd_b9_7f_4b_76_1a_bc_a4_39_99_a4_b9_8d_75_8b_c7_4e_d3_71_9b_f6_5b_17_26_35_ab_bdn,\n 0x2c_93_c5_c5_b0_57_f5_2c_0b_3d_54_33_86_59_f0_5d_15_66_d0_28_c1_81_6b_fb_fc_f9_00_35_93_b9_81_90n,\n 0x2a_92_6f_d3_e0_66_a9_fb_75_f7_6f_d0_2a_a9_99_69_99_a0_90_45_0d_11_ee_1a_87_a1_e0_e6_5c_d2_87_f8n,\n 0x21_1d_ce_e0_fe_e3_f8_57_1f_d9_6f_2b_5c_55_de_11_39_80_7f_a6_9f_be_79_21_65_63_f6_c5_70_9f_72_e4n,\n 0x2b_7d_dc_28_b2_bc_2d_27_18_e9_d6_b4_c7_90_d5_58_34_b7_79_06_de_2d_4c_e8_b3_01_ac_35_d3_3b_d7_61n,\n 0x17_ba_51_59_32_1a_18_0d_de_fe_96_bc_9d_0f_9a_b7_f4_4b_f2_e5_51_74_b6_a0_90_29_b9_e3_fd_83_e0_dcn,\n 0x25_e1_2b_63_26_21_39_69_5e_50_a1_e9_6b_64_80_35_3a_6d_d6_a1_bb_98_0c_20_f9_1f_d5_9e_51_8a_03_0en,\n 0x09_5e_ca_34_82_e2_80_57_b5_41_18_da_6c_45_a3_f0_f5_ae_53_d6_7b_ec_c4_fb_0c_a2_e9_6e_24_10_16_b0n,\n 0x11_12_ae_b9_62_2b_d2_e0_03_06_df_a7_60_88_ba_87_e8_d9_cf_eb_83_d7_56_b4_0a_cb_44_54_e7_7e_3a_b4n,\n 0x1b_69_50_7d_e8_34_52_ce_39_77_a8_3e_01_64_81_14_af_c0_f4_19_74_a6_ba_96_2f_77_da_7e_e0_3b_23_53n,\n 0x18_c3_6a_22_7f_30_ba_8b_e8_35_02_2c_da_08_91_d5_1b_20_49_dc_ec_b5_26_1c_02_44_33_63_42_68_12_83n,\n 0x03_2d_ff_65_02_ad_bf_3e_ae_1e_db_0a_a2_a1_42_c2_38_72_16_dd_50_1a_ca_a1_8a_35_65_11_2c_3c_ef_30n,\n 0x06_7e_9b_2d_f1_0e_46_3f_f4_e6_5f_a2_1d_18_b8_e7_b5_c5_5d_21_79_41_20_78_50_d9_84_c2_64_ea_64_b9n,\n 0x18_6a_8c_1d_df_d9_fb_67_31_24_3a_6c_19_0d_74_c2_58_07_62_54_fc_4d_85_1b_b6_7c_15_c8_55_da_68_c9n,\n 0x25_f1_2e_09_04_af_73_0e_c6_89_20_12_2e_8d_7e_83_e6_db_7e_0d_38_18_d8_2a_b3_f5_17_96_52_ac_f1_a4n,\n 0x29_2a_05_3b_e9_01_3f_37_41_56_45_47_27_32_9c_a3_0c_50_78_1b_7f_68_37_1e_b0_82_97_49_14_cc_2f_8an,\n 0x12_86_7b_b5_41_ea_17_c5_32_cd_e1_57_eb_e2_ff_6f_0a_3d_3e_83_b9_56_e6_19_95_1c_c9_9a_f2_2e_3d_7bn,\n 0x09_dd_2a_75_72_6a_26_5e_98_ab_42_ca_0d_01_3e_7b_a2_e1_5b_26_10_05_16_e0_ea_b7_37_fb_70_04_9b_56n,\n 0x13_7c_fd_00_54_db_ae_6b_63_5b_4e_4f_9e_61_75_22_6e_5c_95_c4_5e_5b_25_41_33_4f_94_df_d9_3b_22_0fn,\n 0x0d_14_63_6d_7b_7a_fd_11_86_f0_b9_d5_c8_f8_ef_55_1b_ea_c7_bb_2d_36_b2_54_36_f0_4b_f7_dc_b6_0d_e7n,\n 0x1d_bc_81_00_2d_8a_5c_ae_1f_d9_10_53_2f_08_a4_32_3c_35_78_1c_2b_90_1b_d7_22_ba_be_0a_5f_6d_c6_13n,\n 0x24_10_57_b0_d9_97_7e_aa_50_e0_4b_a8_93_70_2b_a1_82_cd_b3_38_8c_c6_32_90_7f_4c_20_81_83_4d_8d_a5n,\n 0x07_ca_75_c9_d5_1c_65_bf_c2_ca_99_c9_c7_73_bc_a2_ba_d7_b4_98_37_0b_5d_50_e2_75_a8_8c_b6_b0_63_39n,\n 0x15_fa_b6_f3_4a_e8_d2_2b_de_dd_76_06_10_dd_46_3d_88_1c_ef_8c_e8_2f_e4_a0_c0_f8_60_50_2f_6d_3c_c5n,\n 0x0c_f8_46_e6_7a_b8_15_b7_bf_b2_55_00_87_33_f8_b4_5d_83_93_8e_6e_b0_db_d1_9e_6d_53_7e_aa_58_1e_00n,\n ],\n // t=12 (11 inputs) - 816 constants\n [\n 0x15_12_df_01_35_b6_69_25_89_f0_71_14_0a_60_74_9c_f7_75_c6_42_b3_00_da_2f_b4_ad_5c_6e_23_ad_4e_5fn,\n 0x2b_10_9a_e0_37_ed_30_36_1c_f6_54_4b_2f_4c_e5_8f_35_65_89_89_6d_6a_88_49_48_2e_d3_f9_b6_6e_11_98n,\n 0x02_58_5b_ec_e0_6e_ff_55_3d_48_54_78_a1_9e_b1_49_e2_11_1a_e4_e1_ec_b1_d6_1f_c1_0c_fe_1c_07_7f_34n,\n 0x01_ff_89_6f_4c_06_62_f4_b2_ad_92_67_41_b4_81_d0_3b_81_3a_8c_c3_43_b9_c2_d2_bc_48_19_c7_0b_2f_3cn,\n 0x1b_0c_af_02_f4_34_fa_3d_4c_d4_fb_b1_3d_31_16_ac_8b_73_86_a5_af_d6_c6_70_76_ec_bc_37_04_aa_45_dcn,\n 0x0f_cb_7c_9f_13_c8_55_17_a7_80_58_94_ac_82_b5_7c_06_f2_f1_53_a6_f5_1f_60_f8_e5_08_68_4d_fe_5b_cdn,\n 0x2d_c2_bd_f7_f4_38_12_e3_9c_ef_21_0e_42_e9_2b_49_68_ad_8b_f5_54_54_11_82_35_45_04_d3_2c_bf_99_54n,\n 0x05_ad_d9_df_20_c1_89_8d_a4_6b_bf_74_59_44_38_be_b0_7c_9a_65_63_5c_90_f4_5c_0a_08_fe_ba_d1_36_64n,\n 0x21_ca_da_66_41_66_4d_aa_99_7f_d5_5a_ce_8b_88_19_1c_dc_41_94_fb_db_b6_ca_58_95_44_7c_8a_58_85_9fn,\n 0x19_62_35_04_58_9a_60_f0_58_b0_44_89_b1_53_32_4d_16_ed_66_66_7a_04_df_57_2b_10_35_90_b8_48_bf_04n,\n 0x17_76_44_2d_85_0a_43_6a_00_5e_02_c6_47_5b_72_fd_2d_5f_84_45_28_90_c4_44_16_28_48_ee_1d_57_de_c2n,\n 0x06_c1_69_1f_d6_d2_ee_98_39_66_10_f3_c8_68_d7_08_74_f2_4e_ff_85_39_38_d8_7f_ac_e8_92_34_a0_9a_98n,\n 0x22_c3_ab_a1_5f_3a_17_0a_1b_d1_17_61_cc_21_79_4a_7a_fb_34_8a_45_d8_5e_30_bc_52_27_88_14_93_f4_5bn,\n 0x1f_77_b1_8f_06_e1_45_88_77_c2_b1_8c_ae_4e_92_c1_96_c0_be_0f_77_9b_9e_63_b0_6c_48_e9_0b_02_74_fan,\n 0x22_6c_3d_fe_7a_6a_67_31_9c_1d_ad_da_1b_4e_f0_4e_45_f6_b8_0a_78_dd_b0_bd_67_e3_63_e6_3b_85_c5_46n,\n 0x05_6e_fb_e3_aa_de_68_e6_88_6a_b9_2e_98_a3_d2_8a_68_ca_89_d2_fb_75_70_6f_69_46_a0_08_1f_01_f6_21n,\n 0x29_64_06_45_1f_20_1c_0d_09_58_7b_7f_4e_00_a7_d0_e1_94_02_60_d4_83_13_de_80_7f_c2_df_0f_75_5d_7fn,\n 0x20_00_e0_b6_01_2b_20_f0_9d_f8_ee_d2_5b_09_5b_f2_2e_75_e2_a9_c8_7e_47_82_87_70_0b_59_33_56_f8_4bn,\n 0x22_7f_37_66_b6_64_2d_44_c6_d8_36_a1_7c_30_ce_cf_f6_54_b5_44_ae_86_36_81_8d_b8_e2_7d_b1_24_ad_31n,\n 0x24_04_64_1b_2f_5d_ad_97_22_54_2b_f1_51_d4_97_e9_19_98_07_24_9b_88_6c_97_5f_26_38_5d_fb_25_4a_74n,\n 0x03_74_93_ac_64_d1_de_b3_4b_9b_83_49_0f_35_17_0c_42_12_d2_c3_09_26_d4_e4_ef_ee_57_ba_a6_52_ba_7fn,\n 0x18_ea_07_48_8f_02_c6_92_5f_4b_01_d0_1b_80_9c_9a_63_25_ec_c7_d9_c7_90_92_2b_68_ce_5e_79_41_59_5dn,\n 0x11_95_2b_fc_ba_06_44_2b_3c_1e_bd_95_9f_1d_4c_51_f9_82_f2_1f_99_4e_10_5c_25_78_fc_4a_ff_f9_1c_91n,\n 0x12_be_2a_32_f2_7a_4e_20_35_17_ab_20_28_e6_5b_94_9f_89_6c_5b_ec_fe_57_e2_4c_0a_f0_4f_ac_72_05_44n,\n 0x23_e8_09_7f_69_bb_e4_5f_02_fa_ec_5e_26_dc_52_3a_02_15_3b_9e_f9_e8_bb_9c_5f_17_9d_fe_30_36_c3_58n,\n 0x07_63_fc_4b_7d_a9_4b_ad_bd_97_ba_93_36_13_c3_53_4e_f2_15_36_ae_70_85_e1_23_c8_d3_e2_32_35_13_6en,\n 0x27_a4_fb_d1_c4_3e_0a_c1_5e_ac_97_4e_0c_e2_e2_53_44_c4_6c_32_32_ee_71_31_41_93_8c_b0_19_b3_f9_07n,\n 0x2d_ee_4a_da_59_3d_75_66_54_de_c1_2b_86_bf_b0_41_ad_78_5a_56_70_76_11_fc_48_45_f4_d8_49_e7_f8_6dn,\n 0x0b_51_51_d0_dd_f6_1b_22_91_77_2e_b9_3a_4e_3e_21_1f_52_12_43_38_cc_70_f3_d1_ed_95_b0_e9_da_33_55n,\n 0x21_16_e2_6c_70_86_e7_0c_80_66_05_a1_67_13_97_d7_c0_73_bd_01_6d_37_0a_b3_cc_e7_c6_95_a7_ee_f9_6bn,\n 0x09_41_84_91_47_ab_2c_d8_d1_89_c4_f8_b1_7b_5a_97_31_e5_5f_2d_14_3f_0a_76_d0_00_23_a3_8e_4e_fe_5en,\n 0x2b_a0_7a_6f_84_d2_d2_dc_2f_1b_17_e2_35_2d_ea_bd_b5_d1_e3_b9_2e_42_4c_d6_59_7c_77_d9_fe_67_2e_91n,\n 0x1a_af_ef_7a_2d_2f_05_16_b4_ef_8c_ee_33_b4_e8_fa_3a_17_76_fd_29_55_a8_78_ef_5d_22_7d_21_5a_80_71n,\n 0x19_43_4c_c8_6e_2f_53_e5_db_3c_eb_fd_2d_b5_2b_40_2f_a2_6e_29_c1_3b_c1_3f_31_57_86_d1_0e_a0_1d_adn,\n 0x07_55_19_c0_bd_7a_6e_6f_e4_bf_bd_f6_1a_dd_de_94_db_84_27_58_01_93_e2_ac_85_17_34_98_05_b6_62_3bn,\n 0x12_16_5d_47_5c_f1_c4_ba_f6_62_bc_6c_d8_74_4f_9a_a4_91_4a_1d_9e_53_47_7b_21_1e_85_3e_ef_bd_e0_2fn,\n 0x0b_af_43_4f_56_cb_6b_bd_08_a0_a5_87_13_b9_49_b5_4c_44_1e_de_53_ee_b0_c4_f9_a6_a4_04_7b_da_e7_c2n,\n 0x2e_29_5b_06_bb_ef_75_a6_d7_6d_d1_0e_db_a1_eb_93_b2_87_26_1b_c8_45_6e_d9_1c_2b_bd_09_98_44_4e_adn,\n 0x14_65_67_92_71_80_ca_c0_a7_71_d5_83_0f_14_31_d1_4c_d2_44_5f_5d_a1_6c_f9_34_44_2e_73_65_84_7e_4fn,\n 0x23_1d_26_e7_d3_ed_94_57_91_a5_20_13_f4_6d_02_f5_f4_e4_6c_17_c3_04_7a_ca_fe_ab_e4_ad_02_cb_c4_4cn,\n 0x01_a2_f5_ce_44_06_24_6f_bd_42_a5_7e_6d_5a_e3_b2_21_92_61_e3_64_cf_c1_f2_a3_92_94_8f_af_ae_1e_76n,\n 0x00_66_1c_c8_a3_9d_60_be_9b_3c_8b_cd_81_d9_1f_a8_eb_f9_ae_bf_98_29_c2_53_38_5c_f9_f0_e3_e7_6b_39n,\n 0x1f_56_5d_a7_0f_04_f9_6f_26_b3_b3_62_65_f9_77_dd_a0_9b_43_bc_c8_98_89_30_db_b2_07_9f_b2_91_fc_b3n,\n 0x12_fd_46_d9_35_d4_5a_5c_84_89_ae_0c_b0_2c_2f_c0_21_4b_40_d2_d0_f3_ce_44_2a_28_d7_64_a9_fb_08_21n,\n 0x29_24_15_3d_cf_47_a1_5b_e1_fa_67_f8_dd_f0_0e_c5_c8_16_86_8c_8e_91_b0_29_f4_af_bd_45_fc_52_ed_0fn,\n 0x1d_4e_61_f8_c6_45_58_09_e1_9b_56_3d_16_8b_4b_bb_87_a9_26_74_34_6f_9f_d6_28_ea_5d_20_eb_a0_ff_4cn,\n 0x2c_4e_7a_ce_ca_ca_8e_2e_a9_fd_84_9b_e5_62_d4_d5_d9_55_86_4d_15_2f_f3_39_f2_b2_c7_cc_cb_4e_c3_ebn,\n 0x08_03_00_84_9f_02_2b_57_2d_62_fa_78_75_83_b6_c9_b1_ea_75_20_f3_cc_42_50_ab_fa_8b_4b_60_0a_c9_86n,\n 0x19_3a_37_fb_fd_36_71_db_fe_75_93_99_d0_18_df_64_cd_e4_5f_75_b1_77_33_29_4e_87_59_6a_30_48_78_cen,\n 0x25_e2_56_36_88_95_7c_f6_11_78_a5_f0_07_3a_b7_dd_28_c6_bc_d1_2e_bb_b9_a3_f0_65_6e_a0_eb_b8_7c_98n,\n 0x1e_0d_91_98_0c_59_a6_52_46_5c_e7_02_e4_e8_de_73_f9_eb_42_17_ea_e2_51_45_66_a3_9d_b4_4a_09_d5_16n,\n 0x13_91_b2_58_da_fe_c5_94_79_9d_fa_81_75_44_e8_a9_07_fa_79_4a_f4_a4_11_f8_9b_f5_75_2f_36_56_1f_b9n,\n 0x12_c3_0d_5f_59_3d_4b_0b_80_fc_8c_96_7c_2a_50_c4_48_28_a4_17_51_95_e4_7a_97_cb_ea_d6_0d_02_69_25n,\n 0x20_9a_c8_a2_ab_b7_0e_b3_3f_20_d5_ee_2b_44_ef_71_f2_fb_31_7a_4c_bf_00_4c_89_e5_5a_9e_37_aa_9a_den,\n 0x0b_c7_ad_09_a9_8b_59_dd_16_77_ab_30_30_2f_df_0c_90_e5_45_06_b5_08_4c_5c_89_69_1a_36_4d_26_8e_a9n,\n 0x1a_74_62_cd_23_53_a3_57_01_59_2a_1c_54_fd_36_37_47_d3_02_2c_d8_54_8a_b8_c8_38_c8_c1_63_40_1a_64n,\n 0x0e_25_1d_c6_fd_d7_6b_db_eb_eb_f7_08_08_d0_52_50_42_04_fa_b5_4c_4e_f6_31_59_d0_64_d6_8e_c5_f3_6dn,\n 0x2a_aa_85_77_1e_83_55_99_b1_3e_6c_43_c0_22_81_67_fc_cc_b3_80_aa_f7_c8_e8_9b_46_10_e5_86_f8_f9_fcn,\n 0x2c_42_9c_35_21_9a_c0_33_ca_9f_f5_43_6f_ff_c4_9c_3b_a0_1a_4e_b2_70_25_9f_6e_9a_3f_1c_3f_b6_14_14n,\n 0x01_1a_5a_9e_38_93_4a_59_12_bb_ee_49_d5_09_56_4c_99_4b_e9_d2_e3_eb_61_54_68_b2_2a_72_fc_32_4d_aan,\n 0x22_a7_24_02_9f_00_9c_75_b8_a4_35_8a_a7_63_6d_13_ea_eb_d3_7c_c7_95_87_49_7b_e8_ff_d5_8b_4b_6c_0en,\n 0x22_92_36_c1_5b_b1_93_27_d2_44_45_7a_31_1d_69_f0_70_27_cd_95_fc_15_2a_84_b6_e0_03_b8_41_c3_37_bfn,\n 0x30_4e_4b_8a_09_50_a3_9a_b2_94_3c_3b_68_eb_6f_16_85_0a_8c_ee_45_82_fe_4a_88_28_29_63_56_81_16_96n,\n 0x08_34_17_8a_75_d0_83_a1_31_ea_d0_94_24_b3_e3_e9_69_de_53_bb_2d_20_f9_40_10_88_3f_83_7c_99_f9_e4n,\n 0x10_5c_c4_05_ec_b4_0a_e3_f7_9c_f5_b9_bd_76_a7_f9_7a_03_f9_a0_76_f8_a1_a2_2c_10_f4_49_20_63_04_9fn,\n 0x2a_37_b4_b6_5f_08_c8_ad_db_53_e8_f0_24_c0_7e_47_b2_88_5a_06_5a_35_2a_46_a3_61_54_9e_1f_8f_a2_88n,\n 0x10_78_c0_ee_08_5d_d1_bd_24_fe_71_fa_e4_26_d7_d6_b9_69_7d_94_e1_7a_72_58_75_79_27_a8_64_cf_c9_ban,\n 0x1b_e4_9b_ba_b7_0e_f6_7a_5d_4e_17_06_62_4a_22_86_0c_da_28_6d_ec_7c_3a_2c_99_c0_b5_f2_35_ed_7e_2dn,\n 0x06_8c_a8_2d_18_b3_e7_db_bc_76_9a_29_55_9b_1d_87_ed_d0_82_23_84_d2_d4_ce_9b_0e_fe_2c_63_31_6f_3fn,\n 0x2d_89_89_37_3a_55_66_39_e3_3f_29_8f_b0_49_82_49_69_a1_a2_84_b6_00_53_ed_b9_72_a0_59_13_6a_d7_1dn,\n 0x0d_3e_41_6c_0a_e1_2a_ff_59_d8_dd_5c_d5_dc_50_9a_dd_d3_f6_39_0d_b2_16_74_2c_51_7f_2d_f7_15_81_dfn,\n 0x14_b2_a6_71_81_fb_d9_c8_13_c7_ba_bc_9d_1f_7a_7f_1f_eb_f9_f5_12_c1_2a_bd_0d_f3_46_6a_29_b4_9b_bdn,\n 0x22_cf_e9_30_48_94_cf_79_a8_4c_bb_1b_6e_0b_57_7d_68_3b_02_4f_0d_5a_85_5d_0c_86_a1_bc_b4_32_bd_8dn,\n 0x1a_df_e9_a6_4e_80_29_33_1e_bd_2f_a3_de_f2_96_1f_5c_95_5f_59_56_d6_1b_34_c0_2d_0b_06_2b_dd_2a_8fn,\n 0x27_51_b2_da_7d_b8_71_ba_5f_db_40_e0_bc_da_7c_ab_5b_15_7b_55_55_16_82_20_cf_3b_79_69_d6_13_cf_76n,\n 0x05_7f_90_a4_c0_81_30_41_82_50_b7_90_23_6f_23_f3_20_9e_88_ff_e2_bd_c6_a2_40_a8_12_f3_b5_71_ab_a1n,\n 0x0a_d7_4e_f0_97_71_09_9c_04_0c_2c_54_67_19_78_3c_39_eb_af_d5_ec_2a_55_fc_83_99_b0_4a_b9_22_83_9en,\n 0x0b_00_c2_fa_76_13_b5_2e_25_e4_a6_cf_63_3a_33_35_5b_ad_ea_43_5c_bb_fe_f6_75_23_e3_b3_b1_b7_3e_f3n,\n 0x27_95_38_1b_e6_94_e0_99_1a_36_9e_8e_6c_e7_5e_7d_f1_8d_38_c4_3a_f1_bc_58_8c_dc_65_ed_8e_87_7b_84n,\n 0x09_17_7d_18_cb_ff_59_ce_67_ee_76_d3_d1_0d_7d_f1_2f_a0_bb_1d_ea_66_0c_3c_eb_00_6a_6a_30_21_de_2bn,\n 0x1b_c7_7e_57_18_82_6e_fc_e5_2a_86_b8_61_0d_94_80_07_46_47_bf_4b_3b_9f_a3_70_7b_68_1c_1a_85_5a_43n,\n 0x2f_2d_12_8b_42_d3_21_02_d0_57_61_24_08_17_ec_bb_ca_a0_3d_2f_a4_5c_5c_b2_f8_2c_1a_0c_04_8c_eb_b1n,\n 0x21_5b_fd_25_8e_bc_79_35_2a_7a_4f_aa_ba_cb_30_84_0f_7e_b3_57_ed_d2_16_99_d5_b3_26_1b_57_62_88_0bn,\n 0x0e_6b_33_2b_4a_e5_b9_5d_51_8e_6a_eb_b7_a0_7f_b4_fc_09_23_5d_37_a4_13_3a_51_be_17_fb_e9_f8_27_4bn,\n 0x27_29_36_77_3f_c1_a3_8a_a8_2f_7d_31_72_a2_47_7b_60_1e_10_15_ac_01_98_dc_28_80_a2_1b_ba_c6_54_20n,\n 0x26_bc_4d_42_a1_7a_0f_fc_93_79_8b_fb_f2_e2_b5_61_c1_5a_74_60_e1_af_d9_c2_3a_f7_ac_2a_6d_e0_34_27n,\n 0x2d_09_36_21_fd_40_ab_76_ef_16_fd_f4_9a_79_23_d2_d1_2c_02_28_f8_ed_b9_b8_69_59_68_46_11_36_7f_fdn,\n 0x02_75_ba_0e_2a_2a_4c_3b_1f_5d_71_8b_5b_8c_b8_dc_c4_bb_fb_a1_b7_06_4b_6b_38_33_0d_95_0c_ba_0e_84n,\n 0x1e_d6_38_4c_a9_de_78_8c_23_5c_7f_bf_0c_31_a5_9b_86_1a_52_bf_f2_84_7a_f2_ab_22_59_24_87_87_9d_aan,\n 0x2c_33_7c_80_8b_fe_0d_2c_ab_54_4b_d9_af_01_f0_8f_91_6d_94_b7_ce_07_29_a0_8c_c4_ef_b9_ee_ef_98_ecn,\n 0x2d_3e_09_34_a4_37_14_84_c9_58_df_1e_97_e7_f0_f3_98_4b_56_67_53_9f_d1_0c_3e_8e_71_24_6a_da_d0_9an,\n 0x05_4e_42_5a_a0_2a_da_cf_eb_72_9c_ae_9d_f1_90_7e_41_61_30_22_89_46_7c_93_27_ed_08_e3_57_55_cc_13n,\n 0x02_49_57_fa_9d_48_f9_42_07_3e_f9_0a_54_cb_06_32_c8_9a_43_3e_cb_23_6d_18_f5_7d_ac_5a_ff_85_ef_96n,\n 0x19_4b_56_1a_91_33_4b_d0_dd_4e_ae_cf_b9_4f_03_eb_ab_92_7f_e5_78_7f_17_23_c2_53_59_44_b2_fe_69_71n,\n 0x1f_5f_3b_b7_7a_48_79_05_e3_d3_9b_26_56_b9_1e_0a_82_23_22_6a_3c_c0_c7_a4_73_cf_c4_a5_2c_74_ac_03n,\n 0x1b_3a_3a_fe_d7_a0_82_1a_68_4f_c0_d0_f9_ad_9d_fa_3b_55_7c_65_42_bf_7b_bc_5c_f0_1b_d3_36_9c_ba_06n,\n 0x2b_96_61_9d_dc_3b_2a_29_2f_ce_b0_7e_2a_a8_0c_86_ad_63_6e_a7_d6_d4_ba_be_8d_29_47_e0_69_39_07_36n,\n 0x0b_a3_1e_2d_1e_80_73_74_a7_10_cd_bf_81_f0_5a_f4_fa_ad_ce_88_ea_d0_a1_65_8b_0b_48_14_06_61_31_77n,\n 0x25_d7_d5_bd_cb_74_b9_2b_74_a6_04_d6_fa_b3_b2_f3_a2_28_ad_23_36_0e_4d_ef_39_19_14_6e_8c_44_fa_52n,\n 0x1c_a9_f9_11_f0_b0_8d_1a_62_05_92_5c_de_7a_a5_fd_38_b0_61_09_56_21_15_2e_8a_bd_01_65_43_80_fa_dbn,\n 0x1a_90_d4_e0_90_aa_ab_f6_52_05_34_35_e3_cd_ea_5d_ea_64_52_7e_5c_84_1e_a9_35_88_25_e2_19_1b_48_b7n,\n 0x0c_aa_f3_b7_69_09_b0_b1_e1_c7_f4_ec_49_3f_27_50_1f_5e_6f_08_36_9e_8a_36_ea_c4_06_f2_9c_78_54_e4n,\n 0x1c_8f_94_28_6e_32_90_69_d1_e8_0b_45_78_7c_b3_08_ce_21_4b_04_99_9b_3b_99_53_1d_10_3f_d2_57_7c_d9n,\n 0x1a_cd_43_27_1d_4b_04_97_6d_b5_ec_42_70_0e_83_fb_15_13_59_f9_f2_60_a5_b9_77_08_73_e3_cb_98_a9_00n,\n 0x04_6c_bd_d4_df_e8_8c_67_79_1b_b0_c5_ac_74_9b_5c_df_44_a3_a8_7e_85_fc_7b_bc_19_b7_83_96_47_a7_04n,\n 0x2b_4b_03_cf_b4_48_7c_1a_19_d7_c0_5c_a1_51_33_be_29_c9_d3_f3_05_1e_4b_01_fa_4d_c5_73_ee_eb_c2_afn,\n 0x1a_9a_01_f0_04_0a_3b_ea_61_24_94_6a_77_e6_7f_d3_aa_4f_c6_ff_21_ff_5f_b4_9c_85_2a_c5_9b_65_e5_c7n,\n 0x09_eb_5e_07_7a_7d_01_10_67_3a_61_7e_59_36_98_30_ac_df_ee_50_de_58_23_ae_06_88_e6_07_14_29_2b_6fn,\n 0x0d_00_6c_e7_c1_87_ec_64_72_56_2d_21_2d_fc_29_f6_15_c5_d1_19_05_7c_e0_c7_21_62_0a_f6_e4_66_6f_a4n,\n 0x05_4b_c8_d6_59_b3_10_01_a2_a5_29_f4_56_40_a9_98_dc_aa_f2_ec_f1_ff_8f_d3_f2_06_fe_34_fa_84_72_2en,\n 0x1c_a1_ff_24_4c_51_06_ea_88_04_51_16_08_1c_20_1c_63_23_69_8c_6b_68_73_81_66_af_8e_7f_3f_8d_d9_bbn,\n 0x04_f2_54_de_80_93_f3_fb_33_30_dd_74_23_d9_d9_e1_73_57_cc_b3_4a_3c_18_e9_40_19_62_76_10_ca_b1_dbn,\n 0x18_fa_6a_f9_34_10_0c_da_01_23_fe_e0_b5_63_6b_69_36_92_d9_1c_c8_32_f8_7c_76_c0_4b_b2_09_50_15_3dn,\n 0x0b_c1_75_cd_6a_0a_d5_46_d3_32_98_d2_7d_2c_e1_8f_fc_69_95_f1_53_f6_bf_05_c5_9c_09_a4_ee_ea_b1_42n,\n 0x2e_2b_79_2a_bb_6b_63_10_e2_cd_5b_18_8f_dc_cf_53_02_8d_6c_a7_06_04_e3_65_68_b1_5f_34_08_ee_a6_18n,\n 0x12_16_fc_0f_6e_7a_c8_f0_ea_59_bf_78_40_fc_72_0b_37_84_8e_6d_cb_0c_77_f2_53_e2_cd_68_33_aa_3a_f6n,\n 0x15_38_12_75_07_41_73_54_2c_d2_50_ba_7c_da_6d_1b_e6_c1_2c_44_af_2a_00_a1_1f_cf_07_87_42_1d_8a_02n,\n 0x25_aa_56_2c_4d_fb_0a_38_dd_92_e0_20_b4_d6_f9_b2_76_93_41_f3_81_de_9c_27_af_0e_da_14_53_18_3b_cfn,\n 0x19_ac_9e_35_49_ff_20_90_94_88_ab_72_8a_6e_88_d1_0a_0f_63_4f_77_17_42_a5_17_e0_0b_c2_cc_7c_be_3cn,\n 0x13_c0_23_39_46_2d_08_2f_13_ec_c8_de_d6_b2_bc_b2_6a_80_05_a9_ab_55_ef_69_a9_1f_84_7e_76_0b_f3_02n,\n 0x1f_ef_0d_cd_8f_58_58_f2_40_c8_98_60_03_e5_77_a2_76_a3_52_6c_6b_45_f7_54_03_e8_14_a0_bc_62_0a_1dn,\n 0x03_1d_9b_e2_12_42_4a_64_3c_6c_9b_f1_44_d8_1a_06_e6_fc_9d_68_63_7a_09_38_89_cf_3c_7f_ee_5e_3e_a6n,\n 0x1a_6c_ca_07_ef_30_d3_43_14_04_72_14_f1_a8_72_97_28_b8_df_e8_c0_e5_5b_ea_35_64_92_8b_07_de_42_f1n,\n 0x2d_3b_9e_da_96_cf_18_6f_8e_0b_5e_14_46_54_32_81_93_1b_26_0a_3f_f0_43_c6_6c_f2_32_f4_90_9c_12_a6n,\n 0x07_da_58_32_59_65_be_c2_4b_4d_12_d6_06_fb_45_63_a2_3a_13_0e_98_ee_e7_f7_76_6a_4a_35_58_b5_d6_afn,\n 0x26_55_57_1c_23_f7_f1_cd_1b_e6_7b_b2_4d_4c_4e_7c_c6_74_b8_84_b9_c5_8e_a8_16_5d_29_34_93_0d_6f_fcn,\n 0x2e_5b_a9_5e_4a_2c_e5_c4_33_f1_5a_b0_a0_26_b1_ab_c2_b2_cb_a2_56_c6_17_06_b6_99_7f_eb_57_7a_42_d2n,\n 0x30_00_c7_95_9d_f3_1e_e4_bf_d1_11_8c_7a_e2_29_06_da_8d_80_2d_9c_47_85_50_50_11_79_26_34_2b_ca_87n,\n 0x10_e1_3d_08_81_d2_7b_08_cf_5b_64_ce_ef_72_c4_28_ef_10_84_67_9b_53_9b_05_8c_81_a1_70_06_ab_e0_53n,\n 0x2b_e2_a9_3b_37_2b_e6_64_ee_bf_80_9d_d8_73_c7_41_22_ac_b3_cf_5a_ba_a6_c2_15_87_16_01_b8_88_f4_89n,\n 0x21_31_02_18_21_7a_72_6c_c8_50_c0_a7_dc_91_9d_29_ff_a8_b6_1f_f6_06_39_0b_2e_b0_ec_a9_5d_44_65_acn,\n 0x14_d9_07_f4_70_70_75_42_20_5b_fd_78_df_27_4b_df_24_d8_97_89_59_b4_4d_be_9d_f7_a7_e5_21_14_a7_e5n,\n 0x05_ac_fa_1e_85_7d_80_01_ce_31_1f_d3_b5_d9_eb_3a_1c_92_fc_6e_5d_ac_24_66_c0_af_0b_27_78_16_a3_den,\n 0x12_3f_fe_61_d1_7c_bd_66_23_ed_48_6a_f0_eb_8e_76_d0_4d_e3_a7_7a_48_3c_66_2b_0b_5c_b9_8c_d4_49_dan,\n 0x26_36_8a_a2_94_74_64_5e_dd_a1_e1_55_a5_cf_0d_f1_ee_c9_5f_4e_89_56_50_81_0a_a7_7f_4b_a7_02_7a_f7n,\n 0x21_05_0e_20_60_dc_ee_b5_63_67_51_2a_f3_fa_11_f3_d2_e6_be_9b_72_73_12_55_b0_5b_e5_fe_e7_93_f8_80n,\n 0x22_ee_0d_90_c7_d7_15_32_6a_03_83_c7_ab_f6_82_4b_9d_93_6a_f2_96_75_61_29_57_4b_c7_9a_f2_fe_f0_a4n,\n 0x0e_45_74_67_ba_e8_c1_32_f6_87_fc_06_23_5f_a9_2a_0b_b2_c3_fd_e1_eb_bb_ee_6e_f8_37_29_f2_5f_3c_2cn,\n 0x1d_fb_9c_b0_00_2a_56_e3_8b_73_91_36_36_fa_56_e2_6a_3b_4d_e7_51_93_9d_5e_b0_9a_34_32_a3_e2_96_38n,\n 0x06_c5_f6_04_80_c0_0c_a6_0c_01_6f_34_a8_ae_16_6b_69_34_31_9b_81_ab_4b_27_be_b4_4a_13_38_39_dc_16n,\n 0x01_28_49_04_15_7c_07_14_8e_61_e5_62_97_ff_04_fd_ad_39_4a_69_90_d4_e4_7a_61_4a_00_99_9e_4b_8e_78n,\n 0x13_d1_03_00_ac_39_1c_78_f9_c2_15_db_c5_d2_d4_61_b6_2c_fa_5a_3a_c7_0a_69_bd_47_0b_e5_d8_2c_f3_2dn,\n 0x06_3d_65_84_4b_88_05_da_a8_fd_77_1b_07_c2_78_40_4c_72_8b_66_5e_b1_72_02_29_72_66_c4_22_a9_61_88n,\n 0x15_e3_bf_17_c5_28_30_ed_32_55_cd_5c_11_49_f3_61_86_41_d6_e7_fe_df_46_8c_30_5d_08_22_0d_bc_8a_38n,\n 0x12_bf_5d_d5_c3_ca_ad_12_e0_87_5e_57_e1_9b_10_75_2d_96_51_e3_a5_dd_a0_5c_0f_66_e5_bf_8f_aa_3d_f0n,\n 0x24_3c_3b_79_7e_83_1a_55_04_6a_e8_91_61_58_fe_53_64_8e_21_e9_39_40_0f_9f_5e_b6_7d_6c_0c_c0_94_c7n,\n 0x00_1e_28_fa_9b_34_c2_c6_15_5b_84_21_ed_d4_de_58_c9_9d_1e_5e_81_e9_23_45_f6_23_19_ab_96_df_03_e5n,\n 0x2a_d1_db_a5_50_6e_e0_64_06_49_63_52_7b_de_cd_82_3c_ce_04_94_a8_6e_a4_52_d9_b4_03_36_23_f3_86_bcn,\n 0x23_13_78_79_a0_24_cb_c1_b4_81_0e_e5_4c_7f_9b_85_04_67_34_14_5f_33_4a_7c_c1_e4_a5_7c_74_0c_8d_82n,\n 0x07_4f_6f_a6_29_72_96_8e_22_18_93_84_56_3d_67_52_e3_02_35_da_22_75_48_1b_c6_c3_b0_56_93_7c_77_3cn,\n 0x22_b1_0a_52_53_71_6d_16_5a_67_07_36_ee_24_3d_e0_62_76_19_37_8e_db_f7_51_b4_6b_da_0b_12_dc_cc_f5n,\n 0x0c_19_00_40_f1_e4_ea_a1_1b_4f_c7_04_69_95_98_96_80_84_91_77_ec_e7_bf_ef_7b_44_65_13_f9_eb_e1_12n,\n 0x30_18_75_85_2c_9a_d2_56_21_1b_7f_9f_31_ce_d8_e2_25_61_88_d3_2c_30_72_c5_19_d7_06_9b_0d_10_db_76n,\n 0x1c_0f_67_d0_5e_bf_d6_50_d2_2d_ea_d7_a1_11_30_32_2b_c1_27_2e_fa_e9_8b_85_c8_15_db_6b_31_8d_da_42n,\n 0x28_6e_9a_17_36_4f_36_94_6a_3d_2c_7b_a0_61_2f_ef_3f_ac_60_b0_da_eb_6e_97_3a_ab_eb_ce_58_7a_78_f9n,\n 0x2b_72_94_68_12_6e_aa_10_1f_42_33_ba_aa_09_9d_02_db_14_fe_35_c4_85_80_eb_31_65_c6_1d_db_ce_b5_2fn,\n 0x1f_30_f7_14_06_a5_da_98_e9_29_06_2c_b4_8e_0a_34_e4_73_e8_32_fc_0c_e8_11_c2_8f_09_a3_1d_54_16_fan,\n 0x25_95_46_f8_41_9f_a1_59_78_ab_36_00_84_fe_0a_13_22_9f_c1_1d_c6_98_db_8b_b8_1c_82_2e_2c_83_21_73n,\n 0x06_e3_61_24_12_1a_fa_ca_19_88_7a_7c_a4_28_e1_2c_0e_c8_fa_aa_f5_d7_33_ec_c6_96_0b_d7_aa_5d_7d_ebn,\n 0x10_f1_ce_0b_f5_7c_07_78_bf_4d_e6_0a_1e_2b_ac_88_92_de_6b_7b_6e_f2_f8_de_91_1f_73_14_94_26_0b_e2n,\n 0x17_7f_c9_51_f6_39_fc_c2_74_b4_ee_28_f3_f7_ff_56_0d_6c_a0_d9_f9_30_f5_3d_3a_bb_55_e6_d7_5a_d1_03n,\n 0x1f_34_03_2a_a4_6c_c0_8d_68_55_5b_bc_24_69_a6_6a_2e_fb_a2_3c_56_ec_3d_dd_c5_83_6e_2e_91_9c_d6_10n,\n 0x26_9c_d0_b7_74_f8_62_5f_5d_e7_51_9b_e6_18_57_cc_9e_be_06_d1_06_10_dc_91_d9_f4_cc_57_11_1e_ab_41n,\n 0x07_4f_43_78_28_14_0f_cf_b1_ae_00_b3_8c_29_a5_08_0f_0d_0f_ee_b9_9d_46_88_ff_88_71_f6_34_9f_3c_66n,\n 0x03_96_f2_fc_e8_cd_5a_b3_d2_60_1d_37_f8_0f_d9_77_5a_a5_e9_f5_6b_40_6f_01_5d_9b_09_5f_e1_90_59_45n,\n 0x2e_03_af_bf_f7_3f_b0_5f_32_f5_02_39_90_7f_48_aa_e1_ab_a8_10_a6_31_24_80_cc_e3_43_ec_66_3f_21_0fn,\n 0x2a_e8_99_45_5a_6a_7c_49_99_7c_82_bb_e3_60_66_ef_1d_6c_22_d8_42_6a_f5_4d_2c_74_97_0b_33_ad_2a_90n,\n 0x2b_fe_de_e3_ea_f7_34_0a_10_fc_09_71_ef_00_03_dc_87_cb_99_7c_d6_87_ef_9f_7f_88_b3_0c_3d_ef_26_90n,\n 0x2b_50_b3_9a_43_cf_9f_1d_9f_ea_f0_4a_1f_10_03_11_e7_89_32_a6_80_51_e7_92_c2_3a_99_ff_95_13_9a_00n,\n 0x24_d1_6e_b1_fc_9e_e3_93_62_dc_66_33_8e_a0_d2_75_14_7f_8a_7a_b4_b6_2c_eb_26_dc_3e_2b_16_c3_bb_ben,\n 0x15_39_d4_f6_17_8d_a1_02_00_46_35_90_c6_ef_b1_ca_73_05_bb_ba_93_5e_5a_7d_ec_94_0e_23_6d_ba_2f_71n,\n 0x09_e8_5d_dc_b0_2b_fe_07_09_02_1d_c9_b9_f4_ef_ba_2c_a7_a0_40_75_a7_8c_1b_fd_29_dd_db_c7_be_75_28n,\n 0x01_fe_7f_77_ba_2c_01_82_82_07_3a_b4_d2_22_95_93_51_f7_cc_16_ca_c7_e1_c6_79_46_11_ee_d0_6a_38_13n,\n 0x1d_32_20_cf_7c_eb_a1_97_89_9e_79_2f_d2_b5_16_58_07_a8_37_82_df_55_43_8c_c8_fc_ee_6a_e7_56_59_f9n,\n 0x13_64_bb_46_fe_7c_79_bc_91_56_a1_3a_8c_86_b7_7d_34_25_39_1f_7e_d1_24_a0_35_b9_41_33_40_45_17_d8n,\n 0x0b_70_ee_a0_fa_95_97_1c_52_b4_c9_1f_d9_cf_6f_fb_5d_e9_7e_63_e3_64_02_8f_0c_0b_19_04_b0_75_b0_6en,\n 0x2a_9a_b9_6b_4d_e3_3f_8c_cf_dc_cd_8e_86_51_0e_8c_c7_31_fe_67_3e_b2_89_d1_5a_37_4e_b0_d0_55_d2_17n,\n 0x2e_c7_ab_4d_43_9e_22_d1_d9_7e_ff_25_01_e9_45_77_69_1d_28_69_84_40_e7_b4_11_90_a8_b8_e0_c9_85_25n,\n 0x1c_1b_59_ff_92_12_22_44_22_96_8e_76_16_ce_ae_71_57_3b_05_c9_9e_4b_cb_26_21_31_26_fe_4d_bb_5d_e4n,\n 0x1f_df_aa_4d_a5_40_e5_0d_2b_cd_1a_2a_09_75_35_0f_96_9e_34_92_58_40_85_f7_dd_3f_ff_9d_88_14_cd_49n,\n 0x0c_c8_ef_6a_3d_c2_50_d7_a4_c9_4b_b8_90_be_79_7b_91_f0_88_69_a9_93_91_ca_f7_0e_2e_ff_df_7f_08_66n,\n 0x09_e5_95_fa_ec_85_06_70_0a_42_a5_a4_11_90_cb_6b_9f_79_fa_e9_b6_01_cc_65_67_56_9e_8e_e9_e2_48_13n,\n 0x06_04_7c_dc_0f_f8_bd_94_c6_ab_60_e3_ff_ea_21_91_2f_01_01_a6_0b_f6_c2_e9_63_71_be_54_e6_3d_73_46n,\n 0x2e_40_28_8a_4a_68_1e_1f_f5_31_8f_bf_b7_96_e8_b7_f0_b2_fa_cf_a5_c9_e6_91_a1_c4_92_4f_ff_ba_49_50n,\n 0x12_61_69_92_bf_6f_af_51_44_c8_ce_58_35_5e_c2_b6_e2_0a_7d_25_c7_df_b1_34_60_b0_72_26_81_59_68_07n,\n 0x0a_78_42_5d_56_37_2a_f9_95_d8_93_0d_48_cd_64_5a_6e_6b_45_48_5b_4c_06_fc_38_e0_52_81_8b_5b_3c_afn,\n 0x0f_e9_c6_0a_64_dc_e8_b4_5b_53_46_2c_a6_e6_8b_e3_25_d8_17_4d_06_74_71_29_5a_98_3c_eb_b1_c9_a0_fan,\n 0x2e_7a_a9_ce_e7_62_4f_71_fa_49_02_97_1d_07_cd_30_33_19_bf_41_00_7b_dc_4e_a0_fe_a4_0e_f9_7c_ba_1dn,\n 0x10_46_90_cf_04_a0_66_6f_49_21_a4_ef_9f_80_8f_b9_a3_be_e6_19_2d_f0_e6_cd_b1_5b_6f_30_2f_47_6c_8dn,\n 0x2e_63_c4_21_2a_40_22_84_de_dd_f9_ef_26_0b_cf_e7_a3_95_00_2e_22_c9_a6_15_59_30_53_3b_29_95_94_71n,\n 0x23_de_0c_95_27_d4_ed_e5_16_b9_56_c9_20_03_15_86_63_78_51_06_15_81_53_51_bc_58_d3_b5_d6_ad_78_26n,\n 0x25_43_9e_d1_73_74_40_d7_9e_4b_e0_09_40_39_49_ec_9d_32_a0_ba_6c_cd_7f_c5_15_8e_c9_7c_9d_32_c4_47n,\n 0x14_e3_50_80_e8_da_90_b1_7e_72_b6_fb_ff_fe_12_6b_09_dd_f0_c0_cb_d0_b2_26_df_54_95_8e_68_0a_fe_90n,\n 0x2e_0e_87_ca_0a_20_90_d9_ae_18_24_ce_c8_a3_89_e0_01_b3_c0_af_f7_3e_81_bd_25_84_7f_f0_a4_5d_1f_a6n,\n 0x13_19_e0_f6_08_a1_2f_a0_1b_77_40_a8_e1_40_66_b8_80_f0_b6_50_83_1d_8f_42_4b_6a_f3_fb_36_1c_6d_ebn,\n 0x26_2b_82_f1_d1_d0_7b_b1_8b_99_20_59_7c_39_25_a4_1c_0a_61_43_6b_71_d2_4e_e7_72_3c_7f_b8_87_5a_f9n,\n 0x27_77_3d_7a_e7_ed_00_82_96_a5_72_ad_b6_4f_4f_b5_c2_29_73_5b_25_9c_03_d4_c4_39_ec_2a_e4_68_b7_7fn,\n 0x05_a6_51_88_ac_6d_64_67_e0_28_db_e4_b9_41_ba_c5_a8_12_40_e8_08_37_a5_19_15_2d_65_42_a5_f4_07_4cn,\n 0x00_a2_a8_b0_77_19_ec_fb_2c_94_e9_0f_8e_04_5b_18_ec_45_5f_67_32_53_24_c4_51_19_c0_32_91_95_ef_cen,\n 0x12_cc_31_6a_66_9c_ed_02_90_be_c9_67_57_6e_8e_2a_9e_9b_60_81_bb_09_bf_da_64_56_dc_d3_fd_80_25_a2n,\n 0x25_a0_5b_a9_a3_f7_dc_c2_9a_43_df_45_ef_c4_04_be_d4_08_74_9b_7d_21_65_03_8d_70_2b_30_3e_bf_10_37n,\n 0x06_bd_45_d9_b1_3a_f2_8e_30_93_48_d1_c0_6c_f1_53_b0_61_e0_db_12_6e_c5_9a_8a_f0_95_a3_10_c2_84_d8n,\n 0x2f_55_fd_da_2d_c8_fa_f2_cf_83_08_67_58_c7_bc_77_a1_a3_82_93_4e_71_68_c3_0a_1e_9d_aa_d2_b9_6f_bbn,\n 0x1a_46_8a_18_b1_85_dc_34_2a_c6_b8_eb_e5_3e_f2_65_c6_91_91_75_9e_55_3e_eb_be_67_4e_e9_76_3b_19_00n,\n 0x03_1b_0f_9b_6f_fc_b4_51_f2_61_7e_e9_15_cd_6d_af_e1_7a_c9_96_89_41_7b_1d_92_69_86_07_ee_00_51_42n,\n 0x28_f9_5d_6e_b7_54_7e_7a_be_25_d2_48_41_93_bb_fa_a3_6c_65_76_b1_9c_36_fb_e0_6b_44_55_ec_d2_0f_37n,\n 0x04_f7_0c_34_0b_16_6e_83_40_80_af_c4_4a_e4_44_ea_1e_f5_6a_a8_d0_84_b2_30_1e_62_f0_8e_07_77_42_0bn,\n 0x0f_d7_21_d1_43_05_b2_fd_9b_20_97_57_75_f5_4e_6c_4e_80_69_e2_c7_1f_d6_63_a9_c9_cd_0d_13_08_61_65n,\n 0x0e_79_eb_51_3e_ab_d8_ca_3f_c6_10_96_50_50_51_08_79_c0_d2_c7_55_b7_e5_9d_a7_72_6d_0d_54_94_37_83n,\n 0x2e_36_36_a0_f8_c3_01_4f_d9_63_ff_1c_fe_fc_c8_44_a1_76_3b_fb_2d_e2_33_52_ea_55_aa_5d_d7_bb_8f_5dn,\n 0x0e_de_af_35_f4_4f_33_9d_af_b5_7e_30_80_c9_9c_74_c1_07_f6_1e_3e_0d_e9_b8_b4_c2_34_a3_21_a7_55_89n,\n 0x20_e4_39_13_50_65_4d_04_63_b6_ea_16_cc_68_d2_c4_11_bf_8c_97_da_f1_da_fc_4a_e6_10_6e_bb_34_76_43n,\n 0x1a_a0_b9_ab_ab_5c_77_25_9b_24_ba_6d_f0_35_bf_86_4c_7e_6d_57_34_80_ab_4b_2d_85_92_6e_95_b0_b9_d6n,\n 0x2b_58_2a_e7_e0_0f_3c_6d_d5_16_3f_3e_44_f8_ae_1f_8e_aa_93_24_e6_34_7a_e9_fc_a7_c2_a3_af_2b_95_afn,\n 0x11_07_e9_12_d2_6d_0c_42_53_49_63_52_f1_4b_26_3a_30_a0_9b_20_ad_b3_1d_bd_4f_cb_fa_c0_e4_ca_93_b5n,\n 0x13_1d_ec_28_ab_b0_eb_a0_e9_82_1f_fc_e7_98_0b_cc_a0_60_46_c1_2f_01_41_3a_d0_0a_19_b8_45_7f_80_4cn,\n 0x30_0e_d8_0f_49_15_fc_b5_dc_8d_42_0a_da_cd_c6_b5_41_7c_8c_e3_5d_90_7d_95_37_67_56_d2_32_36_bb_66n,\n 0x18_8e_21_1e_21_5d_ed_9c_86_1d_3a_21_f4_3f_15_78_97_79_38_a5_33_5b_e7_43_25_e0_66_9e_7e_db_55_1dn,\n 0x17_d3_21_85_5d_1c_a0_30_3d_c7_b0_b2_80_7c_43_de_18_80_bb_66_fd_6b_3a_bf_e5_cc_2c_3a_8e_6a_22_7cn,\n 0x15_28_e0_96_fb_d2_7e_0e_09_00_46_0b_e2_2a_69_b7_f8_2c_a1_aa_08_a6_de_f3_f3_52_56_91_4b_05_02_10n,\n 0x27_16_72_fb_b5_29_a7_df_27_dd_20_e8_88_bf_33_1f_5d_de_f5_c0_7f_f4_e7_20_60_47_54_73_9f_d5_63_81n,\n 0x2d_7d_50_8d_f1_28_fa_96_da_79_11_6c_14_91_d6_d4_d4_d8_7a_8a_ed_f9_7b_24_de_2f_32_e8_68_55_f5_d1n,\n 0x02_c1_2a_e0_64_90_34_4d_65_84_55_33_8a_0b_a5_57_e2_a1_da_db_d8_c9_91_5a_c4_02_f2_37_89_94_b3_een,\n 0x1e_f7_f5_71_d7_da_ac_5a_da_2f_5b_94_de_13_74_02_be_8a_81_f9_c9_fd_ef_94_28_ff_3f_46_be_d8_1b_70n,\n 0x18_62_13_e6_d9_a5_ec_c8_51_92_d7_90_38_8e_af_ed_55_35_dc_36_34_d8_35_9e_73_06_85_a1_d7_eb_86_66n,\n 0x03_70_eb_6d_2e_98_28_2c_e7_ea_bd_8d_fa_db_c4_6b_74_be_ea_0f_05_ab_aa_f6_7a_f1_69_8a_b3_d0_25_e5n,\n 0x10_4f_ff_fb_ff_22_58_b1_d4_a2_c6_61_d2_d0_cb_f7_89_6e_05_39_8e_f3_73_08_8b_c8_63_27_b3_7b_c1_03n,\n 0x20_6d_39_d5_af_5e_1e_50_b4_77_e4_6c_62_53_42_00_bc_04_3c_a9_85_ce_e1_7f_0b_fd_3e_68_bc_89_7a_e4n,\n 0x01_aa_a2_09_31_d5_de_59_31_73_4e_80_54_6c_96_6b_8b_af_8a_d6_c2_79_55_8d_e1_69_6b_2e_8b_29_07_dfn,\n 0x1f_4a_a1_78_4a_24_03_f3_c0_b3_12_e2_0f_ff_c2_9f_77_e4_d0_1e_71_2d_43_a3_5b_9f_54_2d_64_94_88_f9n,\n 0x27_01_a0_b0_9e_78_5a_cd_97_11_e5_e6_ff_62_32_bc_64_97_ea_97_a6_ce_b8_2d_39_47_50_8b_bb_52_02_e6n,\n 0x07_e9_9a_d5_f3_31_7c_1a_ce_19_b4_a7_cb_94_b5_09_00_31_9f_64_5b_2b_95_6a_34_05_63_55_d3_b3_00_47n,\n 0x22_50_45_56_70_de_ae_50_87_5f_75_ae_97_79_a6_00_8c_9f_cf_e5_30_b4_17_de_4d_42_3a_a0_2c_a9_8f_59n,\n 0x26_0d_62_89_3e_25_4a_bd_10_f0_e4_f8_be_37_b5_22_1d_15_29_2f_f0_0a_86_84_f5_e2_8b_5f_24_95_97_9en,\n 0x15_ab_bc_d2_e0_c4_42_44_92_75_ec_a5_e4_91_1d_15_7c_b6_dc_04_5a_59_54_17_83_4b_f3_9c_55_8f_9f_26n,\n 0x09_75_1f_79_32_18_23_f4_bf_b9_38_04_91_9c_64_e5_ca_c1_90_7d_03_10_85_ff_8d_aa_9e_fd_a9_5e_41_9an,\n 0x08_b3_d8_2c_fb_ec_8c_c1_3f_75_f7_7c_3a_61_84_8a_a0_cb_c0_dc_e4_ce_f8_d7_2c_e3_a5_94_07_b2_e2_5an,\n 0x19_76_bc_0d_bb_d8_3a_1a_26_f9_e1_4a_a4_31_e2_4a_72_8a_f4_e8_f5_cd_fd_7d_29_94_3d_fc_29_a7_b2_c5n,\n 0x04_f5_9d_20_1d_bb_26_3d_d0_4d_2c_2f_a3_96_b1_2b_a0_8a_48_98_9d_c2_46_4b_3b_d5_97_65_34_eb_38_e9n,\n 0x2b_b2_32_43_e8_41_c5_64_e7_ad_d2_d7_b5_28_d9_af_03_fe_75_88_0e_9a_b7_6e_b4_d4_6a_02_0c_a6_e3_0dn,\n 0x2f_66_b9_61_44_ef_6c_5c_ae_5b_fd_25_11_dd_24_56_a1_d6_e3_54_85_69_ab_ec_7d_7a_49_e1_e0_47_49_83n,\n 0x29_b5_69_f2_f6_7f_1c_03_63_f6_04_93_6c_d5_9c_32_99_45_3d_82_33_e7_96_a2_50_75_c4_1f_a7_e1_9d_43n,\n 0x1a_ab_61_03_10_4b_d5_0f_3a_65_eb_42_bb_f9_01_79_2e_79_eb_39_d4_47_56_ca_ef_25_92_68_a0_6d_27_4en,\n 0x10_09_55_f3_e5_6b_d1_7a_4e_af_f6_f7_9b_69_77_42_d0_65_53_71_85_9b_c7_04_dc_ea_5e_cf_c8_85_ea_23n,\n 0x27_1b_36_3c_4f_44_f4_fa_af_a0_2d_b2_75_2d_cc_19_2f_4e_df_5c_39_c1_7a_d5_a7_b8_f4_79_05_27_11_ean,\n 0x10_21_ea_a8_fa_20_0b_b0_d3_d7_ef_50_2c_5d_7e_ed_f2_a6_ca_36_e6_3a_37_b5_ce_dd_98_a3_18_a7_fb_76n,\n 0x13_c6_a2_03_32_11_70_c0_46_d7_d4_4e_25_f2_1c_47_08_f5_84_04_df_6c_2b_57_84_62_f4_ac_18_1c_5e_1an,\n 0x06_66_91_a0_27_54_db_d0_2a_da_28_1d_a4_18_93_fe_eb_e6_87_08_3f_4e_c2_99_60_0c_84_65_7e_f2_bc_9fn,\n 0x16_37_9a_f3_7c_27_4e_66_3b_7e_3c_04_ad_06_5e_e3_09_99_c3_0a_05_fb_dd_f1_a4_30_37_a8_db_d4_f1_99n,\n 0x2e_01_cf_98_13_25_2a_51_71_62_4a_49_63_d5_72_e1_b6_e6_5a_2b_93_a9_c9_90_f6_a5_3b_a7_d5_77_56_96n,\n 0x05_a4_ec_77_a2_1c_a1_5f_80_4a_ed_87_b9_8d_c3_d5_fc_92_ae_d7_9c_37_24_b3_e9_cf_cf_5c_8d_35_bf_77n,\n 0x00_32_f3_ba_b0_69_ab_d4_a6_6a_a9_84_5e_84_a3_ea_1d_39_0a_3c_2b_09_41_97_a5_59_1c_6b_0c_29_b4_b2n,\n 0x05_64_16_32_8c_f6_d4_7d_3d_29_1c_d7_25_94_81_44_32_15_b7_d2_90_4c_7c_56_31_bb_4b_72_e8_3d_e7_d9n,\n 0x16_c0_68_9d_48_28_c9_35_ea_fd_aa_fa_c0_8e_4d_90_9d_a7_bc_87_76_c7_6c_5d_cc_6b_4b_d4_9c_72_17_fdn,\n 0x1d_8d_23_ed_1d_d6_a5_3d_2c_18_f9_15_37_56_4e_b7_06_ec_11_39_ba_22_40_b7_33_ad_3a_cb_84_7f_79_92n,\n 0x1a_a1_a2_1e_37_84_b9_78_43_ec_62_0c_a8_96_1e_8c_62_d5_e1_2b_8e_3e_ff_ba_b2_a4_ee_d9_b8_a5_8d_e4n,\n 0x0b_b5_44_39_d4_c6_f8_12_a7_05_81_ab_7c_1d_a5_6d_98_a0_89_16_04_8d_6b_48_f9_54_0b_45_1b_7e_66_dcn,\n 0x24_42_1b_73_ee_af_63_13_4b_46_c2_96_46_c2_b2_4d_d7_ac_b8_60_a1_88_b0_8a_6e_d1_d0_0c_b9_0b_3c_3en,\n 0x30_45_c2_01_2f_74_45_89_0f_79_f1_56_70_60_c3_c9_35_96_5a_cd_0e_a5_51_a6_71_f1_b6_25_e6_84_d7_d4n,\n 0x08_ec_86_39_91_a0_53_fe_ed_aa_52_81_09_8a_fc_03_1b_75_55_10_65_d6_d0_1f_6d_eb_04_c6_31_02_c9_bdn,\n 0x25_0c_b2_ab_9d_55_79_a2_4a_57_fa_aa_87_f7_c8_28_c9_49_52_cf_b2_48_cc_46_d9_2e_e6_0b_8c_4c_95_afn,\n 0x0f_25_b6_3b_5e_eb_c3_19_81_22_c6_06_b0_a5_b2_de_15_e6_f5_fd_2c_d0_f4_93_f9_62_65_36_96_42_f9_3dn,\n 0x2e_f6_ab_c5_ab_02_c8_43_1d_e8_f7_a6_4b_a3_69_9c_79_e1_df_0c_8f_2d_9d_5e_8d_65_b7_92_db_c3_6d_0dn,\n 0x1e_84_89_77_66_aa_9d_e0_56_bb_5d_97_c6_79_7b_de_93_c3_b0_59_25_12_34_02_06_63_53_32_b5_c2_2b_11n,\n 0x08_92_3f_05_b0_50_e6_e0_fe_c0_ef_ef_4d_ea_50_0f_f3_ae_c3_05_4d_4b_2b_0a_1f_ba_eb_35_63_84_d7_0en,\n 0x11_68_7a_c0_5e_24_f5_0d_b0_63_35_e1_87_5d_b7_3d_8f_37_9d_b3_a5_c1_c3_b9_f5_7b_72_5b_1f_d8_43_7an,\n 0x27_55_83_7b_80_54_9a_da_ba_47_e0_98_09_07_59_12_29_f5_a6_97_1e_e0_f3_3a_c9_30_f5_be_13_b1_54_a6n,\n 0x09_f8_0c_82_30_bc_5a_78_13_8f_99_52_ba_6b_64_ce_62_3e_12_da_01_94_60_36_3a_49_f5_e5_ef_c0_76_c5n,\n 0x10_40_09_74_6d_61_c0_bb_66_43_e6_4d_df_ea_a2_d4_f3_08_72_a9_24_16_55_2a_1d_fb_4b_75_d4_09_2d_4bn,\n 0x19_6e_82_1f_65_38_63_b1_4b_72_b1_9a_06_8a_ac_43_4a_60_13_59_8b_f7_3b_28_ee_b3_6c_41_e7_6f_c5_4an,\n 0x2c_8a_8a_85_e2_61_84_52_a8_d0_a9_ea_59_2b_c4_95_a5_06_72_52_25_36_ec_76_63_86_9f_75_8a_c7_20_c7n,\n 0x07_bd_4d_e2_ae_c5_a7_ac_fa_66_67_87_54_ef_95_ee_a8_40_dc_97_fd_16_79_e6_53_d5_fa_32_b8_ad_61_95n,\n 0x24_64_a1_7f_43_53_a7_6d_91_1c_c8_34_9f_5d_d0_2c_bf_2b_2c_58_a1_b7_de_a2_5f_00_0e_b9_ad_ca_39_6fn,\n 0x26_83_12_94_e3_38_f4_44_40_ad_cf_5d_d1_ca_4d_14_12_a5_cc_41_c9_3a_20_37_98_5e_ec_f4_c2_fb_e4_a5n,\n 0x16_d6_9e_e3_ae_6b_20_dd_d6_2d_d1_a1_3d_27_9d_4d_7d_a7_4b_20_7b_c5_7a_15_ac_9a_c9_2c_ae_2e_cf_abn,\n 0x16_b5_5a_79_2f_1b_19_dc_ce_6b_9f_4c_9b_61_be_0e_04_57_a9_98_0e_60_50_da_25_00_a4_09_41_5f_20_7bn,\n 0x0d_49_e3_1e_27_e1_c7_1c_16_d5_24_b2_a8_ad_b0_a6_48_43_ae_a5_da_2f_a4_e6_86_f1_83_be_95_d4_17_0an,\n 0x1a_ff_b8_fd_8b_24_3d_62_d5_d4_a7_b0_7b_62_4f_9a_04_52_79_3d_1d_1a_11_ea_d3_bb_82_84_eb_65_f9_7an,\n 0x27_da_7b_a1_0c_b8_6c_06_75_8c_55_e7_e8_ac_76_dc_9a_ba_2e_86_3c_2d_eb_8f_ae_75_25_e4_2c_96_ce_bbn,\n 0x27_e1_be_0d_b1_fd_d7_36_d2_18_44_3f_56_d0_69_87_44_37_04_d1_8c_42_a9_6f_3f_dc_b7_c4_53_6f_ba_09n,\n 0x2f_b1_dd_1f_74_61_d7_5f_a3_c1_e2_5d_f6_70_c1_44_2b_00_1b_92_75_e6_70_d7_3c_81_eb_61_fe_02_83_22n,\n 0x0f_5f_0c_c9_a3_d4_d3_06_6c_99_19_4f_eb_22_9f_0e_31_83_1d_cf_08_0b_ff_42_ff_1d_14_97_4f_82_ff_e6n,\n 0x2b_cd_23_58_54_01_b0_f7_fe_33_fe_36_6c_e9_2e_3a_cd_88_18_a2_35_50_f3_75_3d_ec_b1_ec_24_40_5f_fen,\n 0x00_5c_55_2a_02_e2_a3_9a_f0_e2_1c_89_44_b9_c4_f5_6e_15_b4_38_cf_34_65_16_ba_21_47_35_69_04_f0_1dn,\n 0x03_62_a8_a2_86_5a_2b_2f_e9_02_83_1c_80_44_c5_4b_0c_a9_4b_95_fc_b7_9b_65_f1_47_53_c5_82_22_b4_acn,\n 0x02_9b_b1_83_a6_a2_91_b9_3f_09_89_74_61_05_e3_3c_c6_69_90_72_50_fd_70_64_86_8f_d3_13_81_0f_aa_29n,\n 0x06_08_f6_22_14_87_15_78_ed_58_a1_2d_cc_4d_1c_15_2a_f9_70_e6_e5_04_5f_79_13_cf_4c_40_ca_6d_f1_8cn,\n 0x1f_8a_4c_f5_32_f5_e8_35_70_4e_d7_ca_83_ef_fb_51_75_79_00_6c_a2_2e_cd_74_22_51_1c_03_91_b5_c4_een,\n 0x21_38_82_bb_31_29_1d_bc_34_6c_ae_58_fb_fd_cf_03_97_81_52_e1_5b_34_48_92_a9_4c_44_e2_f0_b1_b3_38n,\n 0x29_71_25_f6_72_8b_65_f1_89_fa_b6_1c_38_96_01_6b_eb_0a_97_2d_d3_47_64_91_0f_05_95_08_d7_e8_62_2cn,\n 0x0f_76_02_9c_c3_ff_08_61_e0_48_a6_01_eb_52_a1_1c_f1_bf_c6_9f_2d_d6_ee_15_16_a4_6e_48_65_b7_c7_aen,\n 0x05_a5_06_ed_73_82_db_51_85_1c_22_4d_52_13_c7_ce_6a_22_b1_9c_7f_f7_a7_fc_cc_62_37_af_11_42_bb_17n,\n 0x15_7d_db_6f_b6_d4_27_b9_7b_a6_9e_87_98_f3_95_0d_68_88_e4_4c_60_df_ec_0a_98_b7_26_2a_97_77_44_a1n,\n 0x27_7a_a3_99_e5_5c_3e_5c_b4_9c_4b_d8_78_9f_65_51_35_1d_a5_40_ca_e0_37_eb_a3_75_43_b0_45_e9_1e_afn,\n 0x14_99_09_1a_e8_dc_56_7f_8d_05_0a_08_35_ea_ec_f4_b9_95_b5_34_1d_29_c5_48_da_08_39_1e_6f_14_53_a5n,\n 0x20_0b_da_e3_ef_70_a7_5a_12_97_90_41_cd_e3_3a_17_8e_c0_2b_11_0a_bd_37_9c_2d_26_cb_ea_91_67_b6_f8n,\n 0x2e_68_35_de_44_95_71_30_dd_72_4a_0a_c6_33_5b_7c_35_e8_af_ad_6a_cb_ba_6a_ab_16_f4_55_93_9d_c7_7an,\n 0x09_e3_02_22_2c_01_cd_b2_c4_5e_5c_3a_92_0e_dd_82_da_3c_ba_85_5e_15_ff_63_48_93_20_9b_bf_e5_5d_3an,\n 0x0a_5b_41_2c_cc_ce_0a_37_16_17_da_da_26_7b_c7_83_ca_19_ce_c0_68_f1_55_d6_95_4d_27_9f_39_59_cd_99n,\n 0x2f_fb_03_4b_f2_ba_62_9e_ad_6f_8a_60_22_e2_33_97_79_e6_8e_f2_c8_bf_39_ef_da_1a_03_32_e6_3d_eb_c4n,\n 0x1f_3a_b3_fb_f5_fd_24_85_93_80_ab_59_a8_f7_2c_c5_2d_c1_ab_24_79_a1_0f_33_d7_c5_b7_12_1c_58_17_6bn,\n 0x08_30_3d_8e_a6_c4_af_05_0a_90_6a_eb_ae_49_2e_32_01_0e_ce_60_9b_5b_2c_6e_b1_37_ef_5d_c2_76_9b_28n,\n 0x19_f0_94_5d_9f_71_95_0f_6c_2b_29_8a_d3_c6_46_e4_fb_9e_99_93_9d_c1_70_c7_35_f4_07_14_8c_79_25_32n,\n 0x1a_62_1a_5b_24_75_8b_b0_36_34_46_39_e4_27_c0_3f_33_d2_5a_f7_f7_71_1c_3e_d9_99_95_d9_83_c4_c3_a4n,\n 0x21_8a_7b_74_5f_35_f4_97_b4_42_8e_61_c3_b7_95_63_75_2e_a6_f8_c8_76_36_1d_32_73_29_57_93_39_92_8bn,\n 0x16_ec_eb_eb_e5_8d_ff_59_a7_b0_ba_40_69_3a_a4_31_b8_99_ca_77_69_b4_45_a7_38_7d_b1_18_08_89_63_fbn,\n 0x1d_ae_e4_6c_fc_bb_d6_34_35_fa_6f_87_91_b3_6a_4f_c6_59_f5_23_6e_89_6a_4d_44_7a_b3_da_68_28_0f_acn,\n 0x26_08_75_ca_1e_98_e8_95_c6_35_db_3b_ed_50_0d_39_39_40_b5_65_4d_36_9c_61_15_6d_b2_92_7d_e5_ed_18n,\n 0x1c_bf_71_e0_eb_eb_c2_d1_51_96_6a_cc_2b_e1_11_16_78_88_15_61_4b_ec_66_f6_87_35_91_4c_3b_8a_de_35n,\n 0x03_b2_a3_20_ea_dd_f4_8e_a5_70_e6_43_f8_9e_f2_27_2b_be_bd_b1_ca_ef_32_aa_da_db_22_a9_18_a8_a9_9fn,\n 0x07_2f_53_4b_f0_7b_a5_55_42_61_52_c3_7e_21_0c_c1_d3_6d_8b_7c_c4_2e_1d_d6_4a_83_08_13_57_18_9f_6fn,\n 0x17_fe_62_a9_3a_9e_fb_12_36_01_2e_2c_a1_06_4b_1b_93_d8_67_b0_da_a3_0d_d3_34_ee_5c_a0_8d_30_4b_07n,\n 0x2e_d3_b5_db_7a_d2_fc_08_37_34_fb_61_47_16_29_46_3d_46_96_dd_d8_c8_dc_db_1d_2f_dd_46_0a_b4_cd_1dn,\n 0x26_e8_3b_9a_8a_7c_7b_d6_92_9f_22_02_1f_ea_78_08_80_37_c2_5c_72_09_42_5b_a8_3e_99_81_15_33_5c_19n,\n 0x17_58_fd_e5_e2_d8_b8_88_6a_e2_13_49_43_40_7d_8b_ec_eb_a4_be_51_7a_01_e5_1a_51_a9_c1_1c_15_10_abn,\n 0x23_3e_22_ff_85_bf_fc_b5_7c_f3_50_77_fc_6c_81_96_35_90_f6_7e_34_84_a6_7d_84_6b_c1_cf_f2_cb_e1_d5n,\n 0x2b_dd_73_4a_2d_8a_75_f5_e1_cd_a7_11_4a_8c_41_8b_f5_06_43_98_04_5d_c7_a9_a8_f3_16_69_28_2c_e9_2en,\n 0x21_c2_e2_8d_54_73_39_06_bd_13_83_86_d7_f0_5b_1c_c4_2f_66_04_df_89_35_09_a6_29_c3_51_f5_7b_95_d9n,\n 0x03_ec_3d_b4_19_b7_89_b9_a1_38_11_df_a2_c5_18_40_d3_a0_19_61_e5_f8_84_14_8a_b3_f6_af_be_cc_a3_f9n,\n 0x04_45_2c_eb_b0_cd_94_f7_16_32_66_aa_b3_65_b3_66_6d_2a_32_9d_63_4e_c5_3d_b0_09_df_be_33_10_62_fan,\n 0x23_74_e7_cd_34_92_dd_e4_0a_21_a4_11_1b_32_31_3d_f5_a4_d1_d4_83_ff_38_c4_b0_cd_49_21_4b_12_ee_2an,\n 0x18_aa_ce_16_39_9c_7f_d6_e9_d2_19_7c_5d_78_79_59_8d_2b_72_bd_50_8e_05_d6_f8_bc_eb_7f_3f_c6_68_a3n,\n 0x04_1d_46_9f_85_bf_ad_ec_96_c0_7f_77_56_a6_73_5f_41_7b_d7_a8_82_e4_6b_a0_6b_a0_75_73_1f_56_b5_63n,\n 0x10_b3_c1_ce_a3_02_fb_6b_1a_ee_fe_7a_70_18_90_ce_e0_35_8b_b4_5d_fc_d6_db_64_f9_0d_f9_64_cb_92_e5n,\n 0x08_6d_ff_03_9d_22_71_89_5d_0a_8c_df_94_4d_75_ba_54_28_48_97_d1_4b_2e_aa_00_94_00_a8_d7_7a_4b_ebn,\n 0x07_2e_72_d8_67_7f_6a_51_f4_c2_38_6e_2e_83_0d_66_48_c4_53_3a_72_85_1f_db_a3_4a_50_83_f0_08_02_efn,\n 0x13_de_dd_57_45_90_f3_62_b8_35_c0_51_51_d6_d7_c1_a7_21_06_2c_50_f1_44_53_fb_fc_e1_28_12_de_c4_77n,\n 0x0f_7b_73_0b_9f_5a_bc_35_b8_74_b2_24_eb_f1_20_d4_69_bc_b8_83_d4_b4_e7_57_e8_eb_52_bc_26_95_80_84n,\n 0x23_f2_df_d0_24_2e_0d_d9_dd_f7_6b_57_55_63_e6_98_68_e1_3c_2c_f3_98_2c_52_77_7e_6c_53_39_47_20_83n,\n 0x26_40_32_c8_44_da_bc_b0_25_54_53_15_58_8b_45_09_e2_77_17_b8_e9_64_f6_04_04_d2_a9_8e_8c_44_08_edn,\n 0x2a_50_5c_68_3e_d0_09_b8_4e_a0_9e_70_5b_1c_92_56_18_7a_48_ee_96_06_4d_3f_09_4d_15_a9_31_c0_9d_65n,\n 0x12_19_5f_b5_31_4e_5d_ca_6d_bb_53_01_a0_ba_b3_74_15_22_aa_cd_92_62_c5_50_3d_ec_a0_9e_d3_b5_bf_a5n,\n 0x2b_96_74_8c_bb_61_47_ef_48_60_f0_d7_d9_3c_21_e4_2a_84_da_2a_5d_24_c0_7f_2e_69_90_17_5e_36_21_38n,\n 0x16_8d_c4_df_af_6f_ec_d4_88_48_81_fd_5f_0f_eb_27_99_ad_b0_41_c6_e1_67_07_f9_f8_70_1c_a3_53_5b_den,\n 0x29_3f_df_5e_97_41_85_1b_6e_fd_d2_16_41_89_4e_ab_aa_e4_e7_bd_4b_4b_91_d7_27_a8_0c_e8_50_58_54_39n,\n 0x10_8d_41_22_ff_a4_a9_be_d4_86_d8_9b_f9_ce_71_88_e5_3e_01_61_b2_33_7b_c5_bf_bd_81_c6_68_14_4e_60n,\n 0x1d_34_ef_90_f1_f5_eb_9b_e9_a7_18_c2_f5_89_3f_e4_dd_42_22_03_a3_06_f9_61_70_7b_4a_17_9e_8a_80_96n,\n 0x2d_6d_b6_2f_91_94_9f_12_dd_7d_f0_84_6c_7d_73_de_9d_13_f5_71_ed_d3_2a_1a_3b_1e_57_ef_c7_96_70_49n,\n 0x18_ba_73_78_3f_66_e8_f9_66_16_22_1f_49_59_a5_a6_df_06_ce_b5_bd_3d_36_2f_ac_4b_10_61_11_ee_2d_52n,\n 0x0a_17_60_3d_22_99_bb_f9_90_ee_1a_95_b5_ac_c0_89_ae_d1_16_46_ff_e6_96_ee_06_5b_c2_ea_65_0c_f6_e9n,\n 0x0f_c9_ee_6b_51_0c_00_bf_2c_fa_a5_e6_12_2b_6e_68_ca_86_6f_ce_11_df_ad_f4_27_fb_77_0d_8c_25_d2_fcn,\n 0x28_22_2e_08_99_5c_93_e3_8c_83_89_bd_32_f3_9d_bc_c2_03_d0_ef_c4_01_14_47_c5_43_d0_51_65_61_22_ccn,\n 0x07_d2_7a_8b_ba_73_49_dd_71_6d_1c_f2_a9_59_57_40_dd_41_31_3b_93_98_9d_e7_e5_e9_fa_ab_97_ce_9b_46n,\n 0x14_49_8b_47_c4_b8_f2_66_3e_42_2f_71_71_b4_a3_c0_73_d3_aa_17_89_5b_33_1b_cc_d0_9f_18_92_78_8a_8cn,\n 0x0b_d8_e7_76_f3_ba_75_53_93_36_19_f6_07_11_18_4e_85_c1_c6_b5_96_b7_2a_bb_cb_d0_d1_ef_0f_06_7f_cdn,\n 0x20_fa_df_38_54_0e_1e_46_da_22_ae_56_b7_53_24_b4_98_30_31_b9_c8_f5_19_8d_32_c5_0d_5f_25_b0_3a_01n,\n 0x26_99_97_ee_ae_bb_e5_8b_6e_a9_f9_e7_fd_79_d1_85_ba_c7_15_85_07_39_28_a7_4e_a6_f5_94_dd_2e_a0_5cn,\n 0x28_7d_91_c8_eb_0d_2d_08_82_fc_57_64_da_b5_40_4c_8a_8f_ff_16_85_e7_dd_f6_56_de_bc_7b_3b_61_90_d5n,\n 0x08_78_d3_34_4a_7d_14_7f_fb_4c_04_7b_7d_6d_fa_85_a8_64_de_aa_4c_16_a6_75_3c_1e_72_45_4c_2c_63_0an,\n 0x2e_3c_4a_cc_a0_61_11_12_c2_9b_18_e0_f9_b5_93_57_f7_c5_dc_ab_7a_8d_5f_9a_be_92_d7_b2_b2_aa_67_ean,\n 0x1e_28_8d_37_cc_a3_d0_ba_55_8a_de_49_cc_52_20_ef_62_9e_f5_43_67_99_59_4e_dc_ad_60_55_c5_bc_69_43n,\n 0x1a_1d_7f_65_59_84_60_c0_79_f7_5b_a7_24_38_9d_51_18_d1_42_0f_95_8b_e0_34_8f_ed_76_ec_4f_70_57_86n,\n 0x0f_1a_6c_58_7f_15_4c_b9_e0_92_2c_5c_4d_8d_27_7e_66_67_9a_c3_7e_ab_5b_27_dd_ff_66_86_15_cc_ad_88n,\n 0x2d_78_27_92_e3_cf_a8_41_1c_f6_23_3e_5b_e3_0d_ec_0d_f2_2d_36_c9_d2_07_da_85_dd_bc_a5_ec_74_71_97n,\n 0x1b_f4_dc_59_b3_1c_01_ca_9d_d2_d9_a7_05_20_ac_09_d1_b8_63_b4_e7_64_71_da_01_54_4f_06_d7_8a_9b_e0n,\n 0x29_ab_e1_4d_44_a7_72_1f_fe_b5_28_36_06_62_84_21_62_b1_70_81_81_06_e5_44_ef_14_72_91_04_7c_3f_c5n,\n 0x02_f4_b0_20_ed_f6_02_04_c8_dc_75_ab_cf_b0_76_05_17_3c_bc_68_c4_d9_35_d0_f7_e6_54_f1_04_69_6f_a8n,\n 0x1c_69_2a_12_14_bb_6a_e2_c5_b3_48_2b_96_ec_46_78_c2_f7_95_6a_82_81_9e_3a_9c_85_3d_f4_60_6b_9a_9en,\n 0x25_cb_90_34_34_5f_d3_45_c7_98_24_06_9a_5b_9a_05_b7_7b_94_fb_dc_24_eb_57_82_d5_56_22_db_5a_fd_20n,\n 0x15_ba_65_b3_23_65_be_fa_2f_7c_b0_c5_21_0e_b9_01_aa_40_96_89_c9_c7_4b_fd_d2_53_8d_78_02_5a_63_2cn,\n 0x30_1a_02_d4_5f_ab_a3_c1_61_f8_25_0a_2e_7e_28_0d_56_09_0f_4c_ec_02_34_48_ae_11_99_fc_bc_58_aa_88n,\n 0x2e_95_c6_f2_a6_7a_13_6f_51_24_34_5e_3a_43_ef_22_ed_cf_a8_06_ab_d7_31_c9_1a_4c_30_03_fa_20_f3_55n,\n 0x0a_1d_c1_da_90_f1_77_ad_3a_bc_cb_35_13_e1_bb_74_40_d8_e6_95_f2_cf_08_0f_bb_83_e6_1e_d2_85_e8_71n,\n 0x26_fe_b1_05_33_a8_b9_90_dc_ce_9e_c0_2e_87_b7_cd_30_75_37_50_d1_15_6a_52_20_7b_82_ce_63_a9_2c_51n,\n 0x19_0e_af_91_42_32_f9_6c_dd_1d_e4_bb_de_13_7a_2b_8a_a7_ba_81_7d_6d_4b_1d_ce_5d_d3_f0_3a_84_1d_4bn,\n 0x1d_44_1c_3f_c4_7f_e7_7a_18_83_e0_69_66_c8_98_0e_58_46_87_8e_97_07_1e_e0_e9_9e_56_0e_ff_f5_8b_23n,\n 0x27_02_8a_81_96_95_50_8e_70_88_2d_d5_6a_02_2e_91_2e_38_6d_b4_6d_be_0d_80_64_e1_1c_8a_e7_4a_21_22n,\n 0x0a_26_bb_fd_50_a6_8f_f9_f1_62_2e_34_4e_20_bf_89_0c_2a_19_8b_6a_58_bd_82_2c_72_2f_7e_42_ee_2c_53n,\n 0x25_51_e3_51_1c_11_40_35_df_49_8e_07_d8_35_4c_04_2d_f3_1b_0b_d3_ee_50_2c_8c_20_ab_8b_ca_82_6f_d7n,\n 0x17_c6_20_3d_eb_0a_80_32_72_04_3d_5b_a9_27_b5_98_4c_07_8c_00_a2_90_02_e6_55_3a_62_5e_fc_f0_b0_acn,\n 0x0d_ea_4d_4c_52_bd_ec_21_4e_e4_e0_b8_8b_ce_f0_3e_06_2e_e2_dd_da_b6_d0_50_b1_45_0c_0b_95_a5_1c_7en,\n 0x05_e6_60_b1_55_2d_34_ff_3f_62_db_c5_b1_ab_67_e8_e1_15_6d_f5_06_c3_9c_0a_b1_d6_da_b1_f6_f9_a6_2cn,\n 0x0b_98_70_c2_d1_7b_cb_2b_b8_b2_25_9e_cb_2e_54_ee_16_23_62_cf_9b_18_24_3c_88_64_21_a9_0a_64_6c_30n,\n 0x0d_83_ef_93_bf_55_15_50_43_4d_c0_76_3c_fe_b5_c0_ab_61_4d_47_cb_0c_b3_c7_91_80_ce_55_18_49_99_3an,\n 0x2b_d4_48_45_89_8d_89_a0_05_f5_c1_bb_bf_5f_5b_8e_98_5d_48_e9_16_28_5a_64_e6_76_a8_11_d5_73_3b_a0n,\n 0x25_57_21_e1_2f_bc_82_23_5e_64_a1_06_73_1c_12_91_09_20_c7_1b_fe_b3_9b_e6_bc_82_29_1d_32_2e_7f_34n,\n 0x11_b4_19_10_ed_33_ae_01_6c_7d_05_9a_37_36_57_f5_6a_b1_ed_3a_fa_88_4f_6a_ea_ac_3e_86_57_b5_2d_6fn,\n 0x16_34_af_e1_bb_ae_17_66_b7_ff_7b_11_b0_11_ef_9f_88_ff_0d_fd_88_34_fc_b0_85_96_8a_35_87_0c_96_cdn,\n 0x17_e9_92_28_43_59_e9_23_53_6e_ed_41_bd_61_e3_08_28_53_99_a1_2b_6c_1d_f2_2f_65_70_bd_00_e5_a2_37n,\n 0x19_80_8c_7e_54_36_88_ca_24_37_19_df_c2_da_13_01_47_12_7b_0d_44_1d_88_df_f5_34_43_d3_d7_db_9d_90n,\n 0x2a_a1_9c_14_54_8a_4f_ce_e1_70_c0_19_6d_36_3e_88_65_06_4b_fc_98_22_25_d5_94_6c_7e_bf_f7_94_59_79n,\n 0x2e_6a_2b_02_3a_c7_66_e7_48_5b_d8_3c_ba_ba_01_6a_13_0c_00_a7_31_13_4b_f6_66_92_cd_5d_74_60_61_6dn,\n 0x04_e1_32_13_09_7c_b2_4a_2a_8b_38_19_01_9a_0b_67_6b_cb_c8_1d_2f_f4_9a_f4_da_8c_7c_b0_ce_8d_51_25n,\n 0x04_36_db_88_b4_f6_6d_e3_84_ba_ea_73_c5_05_b8_71_c7_9c_23_52_60_0f_58_59_b3_0e_21_8f_07_32_6a_d8n,\n 0x00_c9_7e_95_68_8e_e0_7f_fa_79_05_67_81_6e_31_d6_ab_7b_b0_e6_e8_f9_d3_e9_cd_09_a9_b1_b1_6a_90_94n,\n 0x2f_04_c8_c7_2c_8a_00_18_0a_e6_d0_c2_9f_2d_fa_bd_83_d0_d6_60_eb_eb_5e_7a_f3_c6_02_4d_3e_57_77_47n,\n 0x15_07_0c_dd_99_b9_b5_cd_c0_69_46_85_bd_b0_64_89_c5_6f_2c_99_96_1e_1a_e9_96_60_85_16_cf_d0_87_91n,\n 0x13_4e_38_e1_8c_1f_42_b8_57_ba_21_4b_e7_5c_e4_b5_d3_31_55_ba_10_f9_83_4e_95_f3_a9_6e_25_e2_f7_0en,\n 0x17_11_62_90_53_d5_02_1b_af_a1_11_ac_20_ac_85_16_1c_de_c8_54_fc_17_0a_06_4b_e7_45_47_1a_b5_de_een,\n 0x0d_07_2e_1c_8f_f1_72_13_b2_78_48_55_7a_42_67_01_aa_d8_bf_35_01_c6_a5_5e_f0_1d_d4_b2_1a_cf_01_7en,\n 0x0d_6c_ba_81_8c_c9_b0_f4_e2_32_3a_07_38_69_c4_d4_b4_e5_dd_95_fd_04_61_0f_fe_27_a9_96_87_fa_98_a0n,\n 0x1b_b7_ec_72_01_07_06_5b_5d_75_fc_45_39_b3_b9_1a_f0_d9_5e_ec_0b_51_ce_06_f6_ae_3b_40_f1_0a_54_den,\n 0x0f_4b_19_8a_f2_aa_e4_c1_f1_50_35_af_fb_dd_30_64_7a_d0_48_61_de_3e_65_3a_76_7e_fa_50_36_bc_59_a5n,\n 0x26_bd_5d_4e_6a_15_ed_6e_2a_d4_ca_f8_77_62_a8_e2_53_31_58_c6_89_ed_2e_6b_14_f5_37_f7_f8_af_48_91n,\n 0x1d_b7_62_c3_e1_8b_c6_c0_0d_ae_81_24_eb_13_92_13_57_a9_cd_b2_a7_d8_d5_af_89_9c_e5_c8_a3_04_ef_4bn,\n 0x24_21_f2_e7_88_29_47_e0_68_b5_90_49_3d_f4_53_dd_22_a3_ac_41_f9_a8_1e_04_8f_d5_c8_01_19_ff_62_d8n,\n 0x0b_d9_d7_16_97_d6_c9_2e_37_68_50_49_3b_a6_87_28_3e_84_83_b5_29_a5_7b_d6_b8_f3_24_09_47_31_0c_dcn,\n 0x26_4e_51_0e_5a_7e_b5_8f_e3_7c_89_11_94_e7_22_87_37_e2_c0_ac_2f_d9_e7_ec_41_6e_84_bb_44_83_50_25n,\n 0x1a_28_ef_e1_5e_5b_a6_bc_2e_e6_02_ea_85_88_29_d5_4b_1a_b7_15_4c_f9_4b_b9_48_17_1f_f0_92_f0_84_a5n,\n 0x14_a2_06_64_2f_a9_a6_cb_e7_8d_69_94_d4_47_2a_ec_2d_66_e9_bd_cf_ec_a4_cf_c1_33_85_56_62_a0_ae_15n,\n 0x29_19_5f_6f_5e_b2_96_05_eb_b5_13_48_ad_b7_2b_86_e1_84_d5_af_2a_55_97_9e_85_d8_c3_7d_5f_a3_77_c3n,\n 0x2b_ec_bd_1a_a2_fc_1d_6a_0c_b8_7a_74_32_ba_18_07_0d_4d_8d_87_c7_c5_08_5c_c5_7a_36_87_2c_dc_f4_96n,\n 0x2e_b3_11_c7_d9_6a_f1_bb_be_ed_c8_11_dc_d0_cf_3b_0f_3a_0b_93_2d_aa_b8_05_80_ef_19_f2_ec_a4_dc_7en,\n 0x06_b1_3b_0e_c6_9e_fe_c0_dd_a8_0d_de_05_a2_29_82_e4_50_da_4b_71_9e_ad_c0_2e_8e_6f_0a_e8_a9_c8_ben,\n 0x29_51_56_95_86_c4_52_e5_7a_16_de_ff_ed_66_43_b9_07_32_7a_b8_30_fa_43_c7_61_6c_6b_bd_7b_33_7f_a5n,\n 0x0f_80_91_3d_6a_98_d6_8e_7d_20_31_49_08_34_21_59_87_90_bd_17_fb_71_ab_a3_be_68_23_5d_a3_1f_ae_9an,\n 0x0f_6c_6e_bc_15_2c_71_42_35_5f_36_50_56_10_8c_a2_75_2a_93_93_43_f5_2d_4c_fa_a1_ad_0f_9e_a8_06_27n,\n 0x26_51_a3_54_5d_55_a1_79_b9_5c_1d_5e_c9_f4_79_00_94_cc_ef_e9_91_b4_34_82_d3_ac_cc_1a_5e_6b_c4_1bn,\n 0x19_ff_ed_69_7b_e9_90_bd_22_c3_3a_31_52_f1_b6_1d_92_4a_88_f2_5a_68_2a_60_48_14_ab_0f_83_fd_da_64n,\n 0x05_14_f5_11_12_b2_13_1f_f7_44_6b_dc_8e_60_35_f8_a1_56_33_04_1e_31_ca_cc_da_e5_7a_2c_f2_e6_e3_0fn,\n 0x27_b2_50_ee_de_a1_27_87_b0_e7_4c_67_fd_29_ee_3d_6f_31_03_20_4b_0e_c1_53_bd_e1_b3_10_ad_8a_b9_60n,\n 0x03_4e_3b_09_2a_ee_ec_f9_fc_be_01_22_50_07_1b_7d_86_f5_0d_df_c6_8b_5b_f5_9e_57_c5_f9_3c_71_e1_c9n,\n 0x14_53_aa_bd_4a_b3_09_ce_11_df_06_0b_36_90_6f_22_1e_34_ec_45_7f_3e_11_86_e1_ea_33_69_be_4b_92_3an,\n 0x11_68_0b_19_c0_f6_22_c3_ae_ce_37_01_3d_9d_9c_6b_09_4d_cb_5e_74_c0_8e_22_f1_70_fd_a7_44_ee_17_c6n,\n 0x25_12_1b_a4_a0_ad_e9_a8_b4_dd_ab_dc_33_7b_09_64_5e_e6_c4_2c_3f_bb_6c_30_ba_0f_b4_57_bc_a3_3d_99n,\n 0x30_10_c1_d2_5c_ce_64_f6_dd_36_35_58_91_cf_a6_81_dc_6e_2e_ed_6d_ae_b3_68_f6_67_8c_cb_41_b0_83_50n,\n 0x1d_50_c9_7e_2f_c8_50_17_04_0c_c1_92_d1_99_ce_96_ca_cf_a5_41_89_b6_d6_6a_f5_d7_59_fc_b6_bd_a7_9en,\n 0x15_cd_cb_b1_c5_31_71_92_28_1d_f6_02_67_00_8a_9c_e8_db_86_6f_ef_3e_cd_cc_cc_3c_fa_d2_9e_7a_b2_aan,\n 0x0b_ae_86_29_2d_00_4b_61_de_a9_1d_ab_5a_dd_ec_d8_45_2e_4d_c0_f6_64_cc_60_0d_2c_b6_96_3b_7d_f8_7cn,\n 0x09_66_e0_ae_7b_6e_52_fd_18_18_52_66_c4_49_ac_a1_39_d7_60_48_36_15_92_d3_86_32_a2_0c_8d_02_46_f7n,\n 0x1c_ae_92_fe_86_f9_a7_ef_83_ba_04_19_a2_61_dc_83_aa_12_a1_26_56_25_0b_f6_cd_b9_29_09_a8_51_08_67n,\n 0x00_a2_cb_83_a0_54_98_8c_ee_1a_7a_84_7c_22_8c_80_06_68_6e_a6_2a_6f_13_dd_95_35_db_a2_48_fc_bd_47n,\n 0x14_17_d0_b7_49_fd_a0_5b_c8_a3_6f_41_f3_f7_14_02_5f_2e_4a_cf_02_f6_f6_16_07_14_bb_4d_86_d8_a7_c4n,\n 0x05_2c_5a_70_72_34_42_13_4e_35_32_80_6e_57_d2_83_a1_42_04_6d_2a_83_29_1d_a7_92_cf_a5_4b_23_47_82n,\n 0x22_a8_c9_d3_df_25_90_5c_7b_f9_9c_06_97_e1_39_88_26_09_c0_82_76_a1_71_c8_8d_c0_2e_85_db_49_ae_cdn,\n 0x1c_38_82_61_e0_76_a0_64_3d_54_79_18_7c_b6_ed_24_31_b5_e1_f5_31_f9_1c_db_51_27_ba_f8_9c_83_c7_3cn,\n 0x0a_b2_62_c3_21_5d_90_26_3f_02_d9_cf_1a_23_50_d9_d5_ab_01_14_a1_ac_78_26_46_0f_34_63_5a_55_c7_b1n,\n 0x21_aa_86_5c_d0_24_cd_02_10_4d_a1_76_21_54_44_18_8f_99_2a_ec_9b_53_b6_5b_9c_ff_63_90_b2_8a_c2_ccn,\n 0x0b_04_8e_05_ae_fa_0f_b2_c1_92_ec_55_69_0d_16_ea_6a_96_9d_24_75_76_2b_9d_21_fd_ff_8a_da_4a_0b_cen,\n 0x1c_fb_66_4f_ac_48_b0_13_72_f8_6f_10_78_60_39_8c_01_3c_23_61_dc_56_71_b9_8f_13_85_5c_15_73_2a_e6n,\n 0x1c_63_97_8d_82_98_4a_8f_5b_10_5d_59_7d_65_a4_37_c8_29_8f_b4_07_4e_e1_40_62_2e_9c_bd_f3_9c_b4_79n,\n 0x06_87_27_dd_ec_78_2a_2d_0c_02_02_8f_ca_37_57_fa_85_e6_1f_33_af_cf_5c_d3_59_86_73_22_16_50_9c_77n,\n 0x0d_89_05_82_cc_21_53_40_d3_47_6b_50_bd_8d_22_26_1d_bc_b6_3e_e7_c6_ce_19_a4_11_e8_09_b7_31_a5_63n,\n 0x18_4c_d8_e6_7d_33_46_b0_b1_ed_51_32_25_df_4f_88_11_f2_2b_25_21_9a_c6_ca_dc_08_bd_27_44_4c_59_f5n,\n 0x11_ae_dc_d4_90_fc_77_0a_f4_51_bb_54_a6_98_dd_bd_4a_3c_e2_66_71_5e_a8_5b_99_0f_01_02_79_10_00_0fn,\n 0x29_6d_a6_e5_e3_2c_20_ae_dc_69_a7_43_f6_a4_5e_4b_b8_d5_f6_60_48_97_b1_cc_75_1b_c4_26_ac_e0_de_83n,\n 0x0b_a5_76_97_0d_a3_92_c5_44_77_15_8a_bd_25_96_8b_60_38_71_58_ca_cf_5f_08_28_89_54_e1_11_33_f8_bbn,\n 0x19_7e_9d_51_29_d7_13_e3_82_ae_5c_e6_66_cd_12_76_f8_8d_da_ae_7d_d5_0d_bf_ab_07_01_9b_c4_25_f6_dfn,\n 0x29_85_29_23_0c_8e_fc_a1_26_f2_e5_f1_27_eb_57_7c_1f_8d_fd_e4_f6_13_2e_61_b2_69_33_72_6c_d7_16_2en,\n 0x09_7e_c3_2e_1e_10_cb_01_9f_a5_ba_87_a7_8e_31_b4_f5_63_87_df_2d_cf_21_06_39_c9_d9_62_3e_fb_50_41n,\n 0x0a_69_6a_d1_99_a6_1d_ff_a5_21_0f_5a_67_ef_79_79_51_b2_59_60_ef_dd_13_ae_47_78_52_99_3d_97_43_fbn,\n 0x20_e6_91_10_24_68_61_56_52_03_f2_b3_fe_ff_fe_68_66_78_93_cd_88_1b_bd_0a_db_b0_73_06_bd_df_4e_d6n,\n 0x27_89_0f_32_2b_fd_0f_ab_c9_68_2b_f6_06_20_d1_fc_04_34_47_53_94_ec_12_0d_77_08_80_43_51_3a_10_b0n,\n 0x19_df_61_b7_b8_db_e8_15_2c_57_a8_d9_52_46_09_ad_5f_c5_8b_95_d9_dc_bc_6a_ae_0f_e5_0e_5a_3f_06_71n,\n 0x1f_15_9a_00_92_e8_e1_37_53_d9_a4_70_82_cc_fd_4e_9c_e2_33_88_fa_7f_48_d0_34_1e_18_4b_ee_d4_df_69n,\n 0x03_ef_8a_fb_36_dd_ba_bd_ce_fa_9b_43_d1_e5_55_7e_89_15_95_76_e5_4c_7b_1a_17_7f_ea_5a_09_3b_bf_cbn,\n 0x1c_cd_ff_a3_a8_f9_18_cd_33_8b_85_14_6b_05_7f_87_f8_61_6a_32_15_98_42_f5_57_44_cc_ed_8f_b4_63_b0n,\n 0x10_c6_ce_58_07_70_b4_91_e0_4c_f2_22_21_ce_ce_5e_c7_10_f9_dc_70_48_a9_80_63_fb_ca_9b_0e_9e_e3_a1n,\n 0x15_51_54_34_4c_44_bb_ae_48_88_2a_b6_81_e1_e4_02_f7_26_58_58_a6_a4_99_92_4f_96_1e_42_41_d7_ea_1cn,\n 0x16_8f_28_d2_8a_27_97_94_5e_7b_4e_7b_58_5d_ca_b1_92_b1_fc_07_3f_6b_0e_62_af_a8_cc_91_61_74_8c_0an,\n 0x25_d9_9c_08_0a_83_6e_cf_0a_a7_e1_29_9a_75_7c_f7_c5_d0_a9_6b_58_12_54_79_69_b3_f0_90_73_d3_3a_6dn,\n 0x09_55_ad_1a_b1_07_4d_b1_28_0c_78_75_3e_a4_34_3a_d0_5e_ee_42_d0_ba_fb_f3_21_2c_65_6c_30_5e_c5_5fn,\n 0x08_d4_66_d6_4b_89_49_e4_bd_17_53_92_e4_21_99_22_97_3e_af_cb_fb_d9_65_cb_24_55_ed_3f_21_86_f3_3cn,\n 0x13_49_92_34_26_74_94_33_b7_e0_01_4e_82_7b_35_40_c0_3c_3a_73_23_e7_a2_5a_4f_8a_bf_c1_4d_49_2b_68n,\n 0x15_79_2b_be_2a_6f_84_14_7f_00_8f_84_b5_91_b5_83_e6_46_5c_b6_23_8e_f5_40_18_9f_5e_69_41_2d_d9_c9n,\n 0x06_1a_68_5b_4e_d0_5b_65_84_3a_41_c2_4b_23_6a_2a_7b_72_ff_d0_60_20_30_b6_3b_78_3c_1e_23_92_30_96n,\n 0x25_d7_f0_dc_3e_0a_9e_71_09_0c_72_b4_8b_05_1b_8d_8f_be_da_39_3d_95_bd_8e_9c_fb_ea_a1_9e_fe_b6_42n,\n 0x23_01_c0_c3_19_cf_d5_52_0b_c7_f9_72_b6_64_66_61_13_5b_2a_c6_cd_82_b0_e8_fb_f7_c8_14_a9_f3_8a_f8n,\n 0x2d_69_92_f2_df_7b_56_bc_9f_a1_4e_65_d0_07_07_63_df_a5_c6_d7_0b_f2_fd_88_e4_28_ad_1d_f7_3f_b5_23n,\n 0x01_e6_62_1a_98_c6_5e_f7_eb_eb_27_5f_69_6d_11_11_0d_83_ca_80_31_01_45_76_ba_a1_0e_cf_d8_41_10_24n,\n 0x06_90_e5_8e_da_24_66_57_99_a2_a1_56_69_86_f0_5b_3c_34_23_40_a2_85_5a_e7_46_a9_aa_6d_7d_0b_e2_e8n,\n 0x28_29_24_ad_2a_b4_31_d5_0d_47_9c_2d_43_94_0b_47_13_52_85_0f_32_fc_7b_75_64_7a_53_71_89_e9_81_e7n,\n 0x03_98_3a_fe_de_48_f8_10_7d_3c_43_d8_ef_20_05_00_71_e6_93_e1_4f_75_83_5e_7c_e3_aa_fc_f2_09_9d_72n,\n 0x2d_3e_2c_f3_dd_17_40_5f_aa_9c_ab_da_c5_59_ca_b5_c4_b8_8c_05_3c_cf_88_81_61_a7_02_d9_d0_83_14_d7n,\n 0x0a_41_18_cb_11_e3_5a_f0_9c_80_a7_62_b6_65_cf_d9_15_fb_9c_c1_05_a6_43_98_59_e8_d0_9c_6a_ae_3b_32n,\n 0x1f_4f_2a_cb_f7_86_8a_09_9c_0c_f3_0e_cf_cf_25_42_10_c0_a9_b6_dd_95_20_90_02_7f_65_ae_d8_7c_27_01n,\n 0x12_74_56_c9_cf_4b_04_c6_4e_a3_28_0f_18_b4_ab_9e_1b_96_40_76_27_04_c9_34_3c_5c_93_ca_26_db_fe_2fn,\n 0x22_f6_06_18_7a_de_91_dc_d3_8f_9c_c7_ff_bc_d5_17_53_71_3d_43_1c_32_f2_6b_b5_0f_1a_06_8d_92_b7_0en,\n 0x23_1c_c6_2f_25_f6_16_9d_57_09_76_38_51_32_72_4c_d5_aa_fd_a3_4f_95_5f_2f_b5_57_8c_8e_b6_fa_d2_e9n,\n 0x0f_c9_7d_0e_65_f7_ae_ab_39_7c_af_c3_69_66_ab_de_a9_22_15_7d_67_dc_cd_ea_d1_b2_31_5d_1f_00_8c_b2n,\n 0x2a_07_cc_43_43_ea_1b_38_98_28_20_bc_9f_3d_8d_f0_14_bd_2b_e5_8b_9f_9d_55_6a_a1_b7_55_11_cc_8b_7an,\n 0x20_56_12_cb_c1_25_d0_0b_4a_26_d5_a2_c7_48_cb_7b_67_f7_f7_4e_5c_1a_3a_f9_9d_2b_53_b2_1f_90_45_27n,\n 0x11_3b_94_fa_0b_b3_7a_7c_e2_0e_74_76_94_e1_9c_4e_19_7a_f3_fe_b0_3e_27_e5_5c_e1_b6_da_8c_7f_81_51n,\n 0x13_5f_57_c8_88_90_b1_09_16_4b_1f_19_93_4b_0e_30_77_00_1a_a3_c3_99_b4_6c_be_4b_3d_45_58_4a_ec_b6n,\n 0x12_fe_c5_23_a7_7b_e0_75_ac_0c_47_86_2f_2b_18_cc_5e_5f_5c_aa_1d_be_f3_d9_07_c9_26_25_25_2e_27_02n,\n 0x24_f8_64_be_35_ef_60_57_de_07_8a_85_d1_e9_6a_6b_6d_65_f5_f7_60_42_fe_46_c8_a0_28_01_6c_99_16_3en,\n 0x00_32_a2_88_d2_70_18_5b_c1_67_bb_c2_1b_f4_3b_d6_95_57_8c_fc_4d_ac_4f_59_ad_26_ad_ff_03_b4_1d_f3n,\n 0x01_2a_7a_22_9b_6d_e3_29_cf_40_d6_1d_e1_51_18_d6_05_0b_9b_23_5d_60_74_56_5c_93_93_8c_f9_b5_e5_64n,\n 0x05_8b_63_64_5e_39_63_be_bd_b6_eb_63_91_06_c4_e1_6c_0f_de_f2_be_82_63_e2_3b_86_03_fe_20_04_24_1an,\n 0x19_a5_af_0c_2b_00_b1_da_07_b9_d4_b5_35_bb_bb_dd_f0_52_fd_d0_90_33_54_16_83_fc_54_fa_7c_ec_df_cdn,\n 0x0a_25_12_ff_f9_4e_bd_00_57_1d_05_67_04_d5_cd_4a_3d_8b_02_4c_36_eb_2f_29_a0_3d_0a_6a_69_d4_72_fan,\n 0x17_77_5f_e7_2d_17_85_ab_e1_1b_76_37_9b_db_35_41_c8_8d_fd_6b_be_ca_37_d2_c1_e6_ac_f2_8a_00_e5_a5n,\n 0x14_47_77_35_13_20_b1_36_97_91_7d_bb_a1_c2_52_31_5f_f8_5f_cb_9e_5c_10_f6_42_c4_1f_90_6c_8c_2c_b4n,\n 0x0c_ce_87_08_8d_36_9e_a2_5c_f2_03_15_db_73_23_9b_31_df_89_79_15_b7_0b_38_00_9d_08_31_11_ed_ef_b6n,\n 0x1c_83_60_43_18_f7_8c_18_7a_80_c7_8b_8e_2e_f6_6b_48_88_2a_09_13_80_58_3f_3c_14_a5_79_7c_3e_bf_bdn,\n 0x19_5b_10_51_10_2e_d6_93_e2_62_86_fa_ef_40_74_69_f0_c2_33_ea_68_fb_74_be_5b_8b_80_1d_f4_fe_39_72n,\n 0x24_54_f5_3b_a4_ff_1c_09_b2_a6_50_cd_fc_c3_27_35_10_5c_03_11_6b_25_4c_20_bd_8a_19_62_85_cf_6e_e3n,\n 0x02_d0_fe_15_4a_85_5b_d6_83_d4_67_6c_36_07_77_4c_50_5a_e3_3b_06_56_42_5e_2d_d2_1a_61_04_5c_4a_a9n,\n 0x1a_9c_1a_a6_5d_05_e9_07_63_23_7b_68_6a_59_f2_d7_38_ac_1e_eb_f4_33_99_3e_27_37_6b_cd_c6_da_39_8fn,\n 0x03_80_c6_ff_ec_35_d9_1b_26_80_52_e8_57_50_72_da_51_0b_5f_a9_76_40_02_21_11_3d_f0_ad_c2_28_3e_0an,\n 0x2f_48_35_b7_c8_93_8e_6e_3d_5a_8d_85_3c_da_5e_24_c8_79_a5_e0_e7_a7_9b_63_a8_af_8e_3c_02_35_97_69n,\n 0x12_78_11_1d_bb_aa_46_ab_94_47_94_85_68_3e_47_3e_fd_f4_5b_e2_49_08_3c_3f_65_76_2d_ad_ed_b5_da_b7n,\n 0x2f_6d_0e_20_59_16_91_9c_d7_c5_38_1a_b9_26_3e_9b_fd_97_5a_a7_cf_a4_5c_e9_eb_4b_67_99_ff_90_35_38n,\n 0x09_87_b7_95_61_d0_d2_4c_5f_cd_6c_6b_f1_18_9b_13_f1_3a_a0_aa_fe_fb_98_a6_c1_13_05_e7_06_8f_9a_15n,\n 0x20_a1_f9_4e_a3_9d_96_74_be_b0_e2_37_b7_4d_92_70_6b_8f_1b_ef_f5_8f_42_0f_eb_1a_06_29_93_8e_a4_4an,\n 0x04_66_24_94_4f_67_28_1a_60_82_d3_0e_31_a2_d7_82_25_de_a0_0b_fa_55_ff_2e_bd_6b_4b_6a_4b_bc_fa_0dn,\n 0x0e_c8_6d_f4_e2_40_4b_4d_4c_5c_1c_7f_2b_7c_f4_ff_ca_e2_ba_ae_c9_6f_1c_93_b5_71_8c_46_e3_2f_4b_5en,\n 0x17_a9_88_b6_2f_34_33_1b_c2_3c_5c_66_fe_55_55_dc_2a_f6_80_f9_17_5c_4e_95_26_9f_f2_65_64_1a_7c_28n,\n 0x2f_93_3a_40_09_c3_84_06_c1_03_87_4c_de_91_ec_02_d6_22_06_7c_7c_ac_56_89_04_03_c7_44_08_a1_ef_c3n,\n 0x29_c6_0a_6e_e7_e2_2c_0b_8d_8a_51_cf_87_21_5d_4e_3d_d5_2c_23_c8_c5_13_a8_c8_5c_21_20_5a_da_f4_e2n,\n 0x1e_2e_3c_dd_71_2c_6a_c0_39_ae_b3_d4_dc_a4_e9_2d_e5_12_4a_1a_92_89_3a_8f_1b_8b_6d_d1_7d_d0_20_d5n,\n 0x1c_c0_cf_1b_5a_67_7b_b5_6a_fa_92_8d_70_84_c9_e3_1d_4f_54_69_1a_9b_90_a2_f4_82_20_fb_26_fb_53_4en,\n 0x03_f5_f5_3c_b3_4c_a5_b6_47_6f_61_d4_b4_cc_01_e1_d1_23_b9_0d_ff_98_e0_44_7c_80_10_07_e6_40_48_65n,\n 0x26_4f_52_34_07_a0_76_b0_4f_72_e2_68_34_ce_8b_d4_5b_8c_90_dc_4a_91_5f_a5_51_f3_ae_56_d5_0d_b5_03n,\n 0x17_90_31_97_45_f7_93_2a_fc_82_6f_8c_29_6f_92_b2_c0_f7_f6_b3_cf_db_4b_fd_c7_63_d0_a1_f2_8f_37_0bn,\n 0x03_09_9a_72_a9_c3_53_b3_29_a1_bc_4b_aa_bb_78_45_01_c9_03_7b_a7_36_c4_98_06_f1_da_48_29_10_41_b5n,\n 0x16_04_aa_a4_1b_ce_07_2f_44_b6_ad_bc_c0_75_75_42_e4_ca_ab_ca_f1_09_ea_f7_af_71_8e_ba_cb_09_0f_e5n,\n 0x10_ee_b5_9a_16_fa_13_92_67_e3_c4_5c_ef_01_b5_3c_e7_dc_a8_f8_80_8c_cc_24_8f_db_57_28_a7_99_db_67n,\n 0x12_ea_b8_cf_fc_c0_6c_ef_8d_11_2b_be_5d_fb_a7_e7_55_34_f6_4c_44_61_d1_62_fc_b3_ba_06_71_59_47_e5n,\n 0x0c_58_e0_46_53_d8_8b_ba_71_e9_f5_39_b5_03_0b_93_7d_ad_24_05_d2_25_a3_0b_5a_75_da_8a_e1_9c_23_b0n,\n 0x1b_15_7f_2e_d7_40_cd_bf_79_8a_f0_92_aa_e5_83_3b_f5_2e_39_1b_11_39_85_ca_6a_30_ee_d5_88_cb_a4_f9n,\n 0x0d_08_37_d0_97_ce_e0_02_03_45_d0_38_d3_65_6d_e1_4e_e4_c2_83_3b_b9_cd_0d_a1_af_f2_39_9d_a4_36_e6n,\n 0x0a_42_25_a5_d3_67_e0_ce_78_a1_25_5c_9a_69_aa_62_6e_d2_22_48_76_3d_19_0e_d9_dd_0f_3d_35_93_41_54n,\n 0x1f_6a_28_19_a6_7e_20_1a_25_76_f0_af_fc_b0_94_96_ed_7f_ec_a0_b8_50_58_41_1d_09_a6_e7_56_ff_e8_e4n,\n 0x1c_67_4a_9b_9f_db_49_fc_96_6e_06_4b_a3_da_32_c1_ac_2d_4b_6a_1b_4d_06_b9_6f_75_e3_16_05_c3_8c_b3n,\n 0x20_84_4c_d4_77_a2_92_1e_8e_cb_26_ee_c2_31_d8_c6_d9_b8_46_db_a9_3d_b5_ef_f2_20_0a_cc_e3_dc_53_12n,\n 0x0a_8f_a6_b6_56_ac_79_7b_e7_97_f4_2e_29_4b_3a_c4_d9_ea_7d_3d_52_12_5b_9f_d7_7f_8d_44_cb_72_98_64n,\n 0x26_59_47_fe_08_77_c7_3e_0c_65_af_54_f6_43_b0_f3_84_4a_4b_74_de_70_9f_df_77_15_6f_4c_33_8c_80_07n,\n 0x1f_04_e4_66_3f_2f_99_37_cf_07_d3_c2_fe_5f_06_e8_54_14_b9_60_dc_77_a1_9e_8d_6e_38_c5_bc_ed_7d_48n,\n 0x06_d0_20_f0_3d_9d_d9_18_c9_85_f1_e7_d5_cd_39_fa_d6_3f_64_59_05_5f_85_e1_b8_d6_5c_25_7a_d6_40_46n,\n 0x0f_4f_b8_26_3b_c8_13_19_0c_44_c3_83_d5_48_74_1b_24_4d_21_3d_f4_34_4c_3d_cb_ce_79_79_69_87_39_51n,\n 0x0e_3b_1e_6a_df_a0_54_50_af_ba_7c_fb_e8_e8_a0_8b_bf_f6_bb_ec_09_9c_68_d5_75_5f_09_60_75_c2_10_25n,\n 0x22_fb_7c_00_04_2e_5e_4b_a4_b5_12_ef_b9_00_22_4b_c6_bc_d5_3c_b1_22_4f_3c_cc_d4_25_33_1f_d6_f8_31n,\n 0x19_37_5d_d9_09_e5_ec_26_e7_27_4b_fb_8b_40_2c_5d_58_ca_19_31_75_05_bd_44_6a_e8_0d_da_55_3a_c7_1dn,\n 0x11_d0_95_24_61_ed_b9_d2_4c_6b_b0_8a_fd_36_96_92_17_3a_72_de_c2_87_f6_b1_93_53_c3_bb_54_0d_d3_4en,\n 0x1d_a0_87_2a_cf_3b_35_ed_a0_99_cc_c9_e9_a5_ff_24_77_88_9b_fa_12_2b_5b_c5_4b_4b_e0_5e_89_87_02_a8n,\n 0x1a_74_a3_b2_de_9a_16_c1_4c_02_6b_9c_51_11_52_cc_11_74_0b_9b_9d_99_b6_be_f9_f4_4c_bf_75_7b_73_76n,\n 0x22_1b_34_5b_a4_b4_9d_cb_aa_d4_9f_e5_19_17_d9_28_c5_33_cd_eb_b4_4b_09_50_80_06_4a_93_e6_ce_ec_c3n,\n 0x0d_e5_29_ef_32_40_41_16_fc_0d_d6_04_1c_8a_9d_3f_79_80_96_31_43_c3_e2_75_f2_9e_c6_38_6c_9c_2b_dbn,\n 0x1d_f0_34_17_e7_0b_c8_a5_81_29_a7_3f_2b_fe_d4_75_f5_9c_f6_94_0b_a4_87_57_c8_60_e4_d5_af_e9_12_bcn,\n 0x01_a6_a6_c5_e4_1d_d7_ca_16_23_12_93_5f_fa_4c_aa_6e_16_81_76_9b_10_29_1f_a6_5f_bc_36_2c_57_f7_c4n,\n 0x26_be_4a_b8_55_ef_a2_c3_95_a0_ba_d5_13_38_e2_42_83_88_39_73_d0_df_eb_2d_85_84_bb_39_41_f7_b9_2dn,\n 0x01_f1_c7_d2_27_98_6e_5a_9a_32_9b_ac_19_a2_3f_c7_df_52_60_93_60_d3_66_e0_af_ce_59_13_a8_09_f9_32n,\n 0x07_58_52_ae_08_50_11_a3_42_0e_ef_6f_c4_d5_1c_88_10_d4_0f_57_ce_4c_54_56_9e_03_49_bd_de_64_f2_5fn,\n 0x2e_69_ca_15_51_e4_8a_93_00_93_19_ae_f4_0f_cc_d7_8b_8a_b0_eb_3e_6a_75_aa_3a_7c_dc_2e_a9_51_0e_18n,\n 0x21_d1_d8_18_3e_54_30_ae_b1_be_77_36_20_50_4b_a9_94_c1_df_4e_d5_50_a8_75_05_fd_68_89_bb_c7_09_40n,\n 0x11_86_6d_8b_bb_8c_f8_fe_58_5d_e1_9d_81_6f_44_40_97_b0_d5_eb_88_07_1c_27_85_ac_3a_75_7e_a5_a9_73n,\n 0x18_eb_3f_d0_f6_79_3a_01_b4_e4_a3_50_50_55_5a_79_fd_43_c7_d9_b3_05_f4_2e_9b_67_6e_d7_85_50_86_fen,\n 0x28_74_e1_62_93_58_50_eb_2b_1e_7a_99_84_7d_be_48_b3_97_26_bf_75_a1_8a_99_89_2b_2b_b6_db_b1_41_aen,\n 0x04_31_64_e5_c0_d6_18_af_75_1f_94_58_ad_61_07_cc_2c_18_b4_e2_49_68_61_4d_aa_90_9f_3a_66_4f_c8_98n,\n 0x1c_7f_ad_75_47_6d_79_66_31_4d_aa_92_6e_18_8a_c0_33_bc_3c_0e_9d_75_4d_b7_47_65_9d_98_45_28_5f_15n,\n 0x00_1c_af_a6_09_86_64_59_69_07_3a_d8_c0_e2_9d_8d_46_c4_91_1b_33_36_bd_15_a3_89_5e_10_d0_a3_93_78n,\n 0x05_9b_39_a8_4b_ea_ab_3b_d1_6e_64_91_14_d5_07_ac_a8_b4_97_40_dd_bc_4c_7e_70_9a_f2_51_f7_e5_c0_02n,\n 0x2e_f7_ed_14_75_5d_43_e7_1e_a6_eb_a6_d4_78_e4_19_7c_53_68_cc_9d_7f_f7_c4_27_e3_c9_7a_dc_ea_fa_a5n,\n 0x07_e2_62_f4_39_47_c3_e4_38_0b_ed_59_89_b3_53_68_f6_ee_10_18_5e_91_1e_29_91_84_57_30_df_2a_cd_78n,\n 0x0f_54_ef_80_d9_66_48_76_e7_b9_e9_cf_8c_e3_00_b9_fd_82_92_92_74_f8_ef_4b_a5_03_09_67_52_08_35_17n,\n 0x17_b1_9a_0c_d7_59_7c_0b_95_a9_d1_b1_f3_aa_38_fe_de_05_65_e3_4e_ba_ee_7c_99_57_69_6f_92_a3_fa_e3n,\n 0x23_72_4d_b0_78_fd_41_0f_49_4e_53_81_88_6a_28_48_61_8f_fd_4a_8c_08_8f_d5_11_33_b0_be_78_44_17_dbn,\n 0x08_7f_60_29_15_9c_f7_7c_f2_28_c9_cf_13_7d_25_fa_4d_84_2a_08_4f_ea_42_fc_db_2d_0a_16_dc_4c_b3_a9n,\n 0x2c_91_b4_36_e2_22_03_f5_cd_f3_b1_c2_18_86_26_00_73_12_b7_e8_0f_fc_2c_70_26_4f_f0_65_60_f3_f5_2dn,\n 0x08_b9_79_3c_f2_3f_b5_b0_ee_bd_26_47_d2_bc_7d_4c_c9_01_d7_07_47_15_b4_45_b1_4f_b6_4a_55_e4_3b_cen,\n 0x21_41_43_f8_42_11_74_ad_70_d3_43_1e_fe_9d_40_be_d3_61_82_06_33_e2_7b_91_cf_05_05_a8_95_0b_3b_edn,\n 0x1d_5b_88_56_05_17_17_67_24_a8_53_25_f6_27_9e_bd_91_30_a2_ff_a2_8c_d0_0b_07_28_6f_e3_a9_82_21_4dn,\n 0x14_c9_57_7c_06_3d_4d_fa_ab_c8_ee_d7_c3_2b_99_a1_87_02_8d_86_6e_2b_99_19_74_e6_e6_3b_0f_83_8f_a4n,\n 0x04_62_73_37_5b_f4_35_be_dd_e5_90_cb_2b_ac_88_ef_ee_89_ad_ae_8c_6e_27_b0_1f_77_92_49_30_74_bb_34n,\n 0x1f_d8_9f_06_32_26_99_03_87_b0_17_eb_e9_85_f5_5d_4f_6b_1e_5b_a5_a2_bf_d6_f2_27_3d_2d_6b_b6_a8_1bn,\n 0x05_02_08_1f_3b_12_50_55_5a_ef_58_7c_b5_b4_b3_07_d7_30_c1_bc_d1_51_ad_ec_aa_53_30_2f_c2_ee_7b_fdn,\n 0x10_ba_a6_c3_18_c7_e6_a3_a3_62_87_56_ad_42_ec_a6_6a_92_be_51_f4_75_eb_38_6f_96_c0_26_77_2e_1c_b5n,\n 0x01_df_e4_50_1e_8b_2e_f4_18_4e_1a_4d_0f_0c_9c_c7_6a_89_49_76_66_36_30_8b_02_c6_6a_c9_82_3e_dc_65n,\n 0x1a_72_d3_20_fa_ea_f0_5e_0c_f4_4d_b9_30_bd_bd_8e_ed_25_a0_9b_c1_47_54_66_5e_7f_b5_f2_8e_a3_fc_bdn,\n 0x26_6b_33_34_0a_8b_f6_61_36_e7_99_9b_a4_73_45_5b_d9_0f_8a_a5_3f_45_53_43_33_9e_d5_b5_32_0b_06_91n,\n 0x02_44_8e_52_e0_69_c6_b4_44_02_d5_95_73_82_2c_3b_57_03_09_02_16_d6_07_de_4b_fb_67_8e_13_57_b9_58n,\n 0x2a_a2_5e_45_90_65_53_2b_65_ab_27_80_b6_3c_f6_f0_3d_87_2e_a7_59_66_47_bf_95_17_ac_62_8b_79_a2_26n,\n 0x00_b1_d5_4e_78_98_b6_3a_3a_da_fe_e6_e3_a3_6b_2a_ab_81_e3_9b_f3_a1_5a_9b_1f_47_9b_74_99_b2_ef_d7n,\n 0x24_6f_7f_7d_8e_5e_e8_00_22_d4_53_48_a5_ae_db_a8_61_2c_3c_f4_62_3a_62_60_dd_c9_31_95_25_12_c4_cfn,\n 0x02_79_07_ad_36_9f_c4_b8_37_2c_78_e6_ab_39_d4_a3_fa_a4_45_51_f0_0b_83_d2_4a_9e_33_e0_1d_f0_7b_a0n,\n 0x2b_67_bd_27_7b_dc_4c_08_c7_90_8b_b1_5a_d3_97_25_6e_fc_62_e0_32_53_27_f8_19_0c_7a_d9_b0_9e_a5_e8n,\n 0x08_a5_e9_48_d1_db_14_5e_20_bf_0a_bf_d4_19_e7_07_08_b2_01_7e_8f_8b_11_70_45_9c_2c_76_7a_7e_e3_54n,\n 0x04_91_c9_38_11_38_1b_bf_08_0c_dd_da_20_35_7b_bd_01_75_5d_50_eb_86_9a_c5_0e_bf_b7_75_b4_95_99_fdn,\n 0x0b_be_58_10_c3_39_50_5f_19_16_59_c5_1f_ee_ac_4d_6d_d8_bc_83_96_f3_0c_1e_4b_3d_89_88_40_35_94_6cn,\n 0x03_b0_65_bd_29_1e_28_8a_17_7f_16_1e_35_c3_65_2c_57_ef_70_e4_6e_17_42_ef_75_0c_e6_3d_22_b2_48_10n,\n 0x11_f2_5b_85_db_84_1f_f7_64_8f_f0_e3_5a_c0_b6_c4_63_c7_14_fb_2b_c5_f2_88_97_06_08_ab_35_3a_6a_edn,\n 0x2f_14_f7_51_23_21_0c_f6_9d_38_f2_f3_2b_83_3c_ae_0a_a3_10_e7_63_48_61_26_d0_d3_6c_29_e6_80_14_aen,\n 0x26_71_79_f1_f0_50_aa_24_d1_77_7e_34_8a_99_da_ce_45_aa_db_f1_64_20_d8_28_e9_1f_7d_8b_a5_d6_b6_abn,\n 0x02_d7_60_a9_cc_d9_58_f7_23_e0_82_c8_04_df_c2_90_68_60_76_7c_c3_ab_a8_8b_35_d4_7d_95_55_1a_12_83n,\n 0x04_25_40_13_3f_c2_54_87_69_67_d2_73_9f_10_14_93_46_95_76_1d_a4_64_7d_33_0b_18_07_28_d9_db_97_c1n,\n 0x00_d4_fc_d5_86_13_53_26_97_5e_12_05_7c_de_19_32_44_ca_d1_50_4c_4e_14_71_15_61_0c_3a_ff_b0_65_57n,\n 0x27_a2_35_2f_8c_5f_88_f6_43_d6_de_a7_25_1b_02_7c_d3_aa_04_36_4f_ae_60_e3_e7_14_f6_84_d0_5a_89_66n,\n 0x1c_7e_95_5c_7d_ea_3d_e1_44_99_e1_b0_0c_64_51_2b_1d_0d_f6_03_c5_49_2f_1d_75_74_71_61_c2_11_2e_cfn,\n 0x05_0e_7b_cb_fd_9f_a9_c1_c4_d2_94_15_b0_3c_0d_00_a5_1c_2b_cc_ef_5b_1c_44_1d_83_01_fd_c7_33_59_56n,\n 0x1a_bb_6a_8e_ad_ef_09_40_70_4d_61_15_03_c9_f2_95_71_5c_3c_4e_be_02_3a_bc_60_8a_8f_f3_70_44_13_cbn,\n 0x06_56_20_39_14_99_5f_78_f4_a1_d5_f2_54_63_87_ef_7e_8b_51_49_7f_57_96_52_19_99_bf_0e_0d_1e_80_a4n,\n 0x1a_2a_69_c7_67_3f_07_2a_eb_2e_cc_5e_75_0c_81_bd_0a_f5_65_c7_1c_bd_0d_33_67_ef_a7_77_9e_ad_ec_b5n,\n 0x15_99_62_2b_5b_0b_75_fc_66_cc_d9_ef_20_ec_55_9b_bf_3f_51_a4_a4_ac_e8_56_d8_f6_87_f6_84_5c_89_26n,\n 0x0e_b5_4d_fc_23_71_07_46_af_10_2d_c4_17_a3_64_5f_5b_1b_87_d8_88_bf_8d_b5_c8_cf_b4_b4_5e_b0_3a_22n,\n 0x19_e1_a6_f9_1e_97_de_b1_ad_f0_d2_5c_ba_ab_09_a1_f7_20_06_ee_92_a3_6e_b5_9f_32_cf_30_4d_88_98_64n,\n 0x20_10_81_52_94_13_a6_f1_f4_9f_3d_52_dc_dd_fc_74_ac_f1_46_c6_b3_2f_85_be_b3_51_49_47_9c_89_1d_4an,\n 0x20_c3_93_58_4e_28_57_f5_7c_23_ef_eb_78_20_18_6a_50_44_0c_93_5b_d3_4a_4a_17_f2_a5_bb_ff_28_7f_1bn,\n 0x17_9c_f0_46_1c_98_a9_9f_70_c4_33_f7_4f_60_fb_a5_0e_7c_2f_c9_bf_db_e5_00_a0_a5_12_f6_be_93_69_34n,\n 0x13_8c_b7_6d_37_80_d4_29_42_bf_e0_04_3d_62_5b_dd_4d_6e_91_c8_3b_e4_ce_c3_da_08_5b_f2_50_c1_8d_81n,\n 0x0e_70_44_4a_f0_19_39_c6_2a_8c_a5_ff_3d_dc_e4_6e_29_b1_e4_5a_c6_aa_b7_d3_72_97_de_cf_20_63_fd_cen,\n 0x14_2b_10_f5_82_04_be_f4_cb_15_11_31_36_fe_e5_79_51_3c_12_6a_16_84_88_c3_76_c2_1a_db_62_82_79_61n,\n 0x12_4c_8c_60_76_12_b5_fb_d2_af_84_ac_37_be_e1_03_ee_e1_1a_4e_b7_11_e1_1f_ae_77_00_eb_c6_38_7f_b0n,\n 0x14_3f_de_70_dd_6b_de_8b_26_a0_85_9c_da_51_2d_af_55_7c_45_2f_a5_f7_6b_54_24_26_b9_fb_c9_4f_74_46n,\n 0x24_69_4d_e5_3a_13_9a_64_35_ec_f7_16_b4_13_9e_bd_01_cb_40_3a_2d_38_6d_58_ec_73_37_36_cc_21_69_2cn,\n 0x16_86_18_46_62_11_f0_5e_88_a1_b7_71_ac_89_59_fc_e3_a6_35_2c_b6_47_d4_73_46_01_4b_c4_86_f9_c0_f2n,\n 0x1b_9b_e7_10_52_66_24_5e_70_7a_46_e2_ba_3d_e8_32_2d_4a_8e_7b_dc_a4_34_48_ab_05_a7_27_5e_74_e4_3en,\n 0x0f_c2_c8_e1_f5_4e_16_60_49_d5_ff_37_f6_b5_fa_d7_9a_e7_6d_7f_06_9f_98_f8_fc_f8_f3_67_c0_fb_3b_88n,\n 0x0c_6f_58_33_23_06_40_ce_8e_70_af_4d_ca_67_48_21_ce_e7_20_69_0b_d3_49_e6_45_f0_d8_f5_96_84_ac_48n,\n 0x24_56_0e_4a_f4_9f_f0_8a_22_26_a7_f0_95_e4_48_90_51_9c_9b_99_76_ae_fa_35_14_c0_b0_65_a0_52_e3_40n,\n 0x0d_61_f0_61_76_26_84_23_1c_5f_46_9e_e0_ac_33_f4_1d_31_4a_dd_6a_79_d5_53_c6_42_dc_ee_36_3e_a0_47n,\n 0x1a_df_a5_7f_4e_c4_43_e4_97_de_30_46_f6_4d_18_9a_7c_db_e0_86_d9_8c_94_cb_1d_00_3a_59_26_5d_40_den,\n 0x09_fc_22_88_5a_b0_19_75_ba_9a_a4_c8_69_2a_04_d7_5e_50_97_1f_7d_cb_77_38_62_95_05_53_22_72_65_1an,\n 0x1c_01_bf_8f_85_c8_bc_c0_35_cc_e9_29_ae_ae_20_e5_bc_95_e1_d3_61_60_e2_86_f5_a3_73_03_2c_bb_49_f8n,\n 0x2d_fb_cc_48_d7_24_1a_66_74_80_3a_a6_42_53_bc_b3_21_0d_b3_7a_f2_e9_c0_36_c4_79_78_c9_84_2a_e7_a9n,\n 0x27_b9_45_d4_39_8d_b7_c6_8d_13_57_6a_89_28_aa_c9_9a_ca_88_a1_80_b3_1b_e9_85_b8_5f_a8_9d_0a_bd_49n,\n 0x27_75_72_bf_0b_29_01_06_38_0c_4b_f5_89_59_da_21_7f_9e_68_99_40_d9_db_0f_db_e7_9c_1a_15_4a_7f_89n,\n 0x08_31_d1_b8_8a_f8_56_1c_0e_ee_69_64_bd_72_0c_37_7d_04_36_1f_9a_f6_5c_ed_7f_03_29_e7_de_b7_15_a1n,\n 0x11_94_59_ca_33_9e_5c_8a_1b_36_59_3a_8a_09_1b_be_9d_e7_c8_61_9f_f8_3a_8d_32_a5_66_c2_b1_53_36_a4n,\n 0x27_e8_48_9b_c8_ce_d6_a9_f2_09_bf_e8_3f_6e_66_4f_d2_55_3a_e8_46_32_a8_dd_e8_57_74_f8_6a_71_4f_94n,\n 0x10_fb_6c_8f_ab_6b_13_5d_7a_50_c5_4f_8b_1f_b5_74_eb_05_42_c0_5b_9b_d8_4a_af_4a_e8_93_28_d6_f5_3dn,\n 0x1d_ad_38_64_81_66_66_ca_3a_5d_1f_cb_0d_ff_07_bf_12_d3_52_f0_8a_ad_d1_d4_a1_4b_9f_a9_b2_ac_05_7an,\n 0x24_39_af_d2_54_2a_9c_56_4b_85_fa_68_fe_c6_f9_fd_48_d5_4c_39_8c_df_e1_4e_ec_b7_ed_7d_9e_09_64_2fn,\n 0x2b_ea_40_58_79_4d_8b_d7_25_70_5e_65_08_75_da_21_53_b8_29_dc_24_59_70_08_27_70_a0_35_46_63_6a_4dn,\n 0x29_27_12_ec_d0_8d_34_9b_c0_3f_e6_10_ec_2a_0e_7d_9b_83_83_e3_df_3c_13_af_7e_57_36_5b_48_d9_85_dcn,\n 0x24_1c_1f_77_21_9d_17_8d_4d_61_f5_08_38_a6_9b_6d_70_29_ca_1b_36_d3_eb_34_8a_0b_1a_0b_64_c4_35_30n,\n 0x21_91_91_78_d0_ca_98_74_c9_0f_87_54_07_e6_de_74_2f_d6_47_a7_67_96_89_97_2c_f0_2c_28_63_db_6e_00n,\n 0x30_3d_79_6d_52_86_7e_99_42_21_af_51_b2_12_0f_f3_82_2c_d8_a0_63_7c_90_96_ef_e2_e9_aa_3d_2c_7b_53n,\n 0x1f_0f_30_24_32_12_eb_4b_ec_6b_f9_e8_b7_94_98_9a_ba_dd_af_13_57_f7_d8_1b_79_f2_27_31_4e_9a_a8_43n,\n 0x0c_12_58_1a_ed_96_3a_16_9f_f1_c3_37_16_c8_ba_fc_6b_e9_a8_b6_db_13_a2_58_89_21_82_23_f8_50_de_7an,\n 0x11_45_9d_df_c0_f5_92_b2_64_26_97_06_50_1c_04_ce_7b_d9_98_54_79_79_25_3e_cd_cb_cc_aa_3f_54_00_7cn,\n 0x0f_2b_37_14_6a_0a_04_ac_53_e7_b6_30_87_1d_b2_52_a1_dd_84_33_1a_8d_39_ea_02_96_1f_93_8b_5e_fa_1an,\n 0x21_ef_ca_e6_59_79_06_76_b5_d9_11_4b_81_d6_04_90_eb_55_1d_6b_21_f6_5f_36_2f_08_20_8e_af_be_4d_3dn,\n 0x1e_1b_56_c6_f7_6e_3c_c2_62_84_b0_4a_42_b5_a0_2c_5b_9d_b9_b8_42_27_21_00_24_5d_bb_e7_c8_76_18_4dn,\n 0x10_87_be_4d_0c_47_bc_f2_0a_81_5f_60_ce_80_3d_5f_b9_21_6f_1d_0b_47_4a_78_1c_85_e8_ed_14_78_ec_a6n,\n 0x20_c7_a2_c1_01_e3_42_70_fc_18_b4_f0_5d_2b_2f_5a_5a_12_98_a2_59_2d_bf_3f_9b_69_8e_4a_79_1d_93_11n,\n 0x2d_48_86_f2_00_b9_9c_57_f4_f0_9c_0c_36_2f_d3_53_5a_e9_06_a1_1c_f0_11_e2_61_fa_f4_87_34_a3_b0_7en,\n 0x2d_e6_da_15_51_b5_f1_d1_78_de_4d_d8_89_d0_3a_ee_e4_64_02_4f_c2_93_60_97_21_5c_05_ee_14_92_4f_5cn,\n 0x00_d9_03_48_bd_74_5e_5c_d7_79_a6_a6_b5_c4_b6_25_e1_b8_65_59_d7_1c_55_a1_3b_4a_92_ab_a2_18_7a_a4n,\n 0x14_1c_30_84_04_4d_2b_cf_e9_59_4d_a6_bf_81_75_b9_50_ab_36_b4_43_3a_7e_61_b8_15_b6_10_1a_5b_b7_03n,\n 0x06_7c_32_41_79_9e_3c_89_40_2d_10_48_ba_30_03_02_83_b5_07_55_3a_06_ca_6b_37_a3_87_20_00_41_2e_28n,\n 0x14_8f_39_fd_35_a5_6b_c7_d2_0b_a1_c8_92_2e_4a_d5_c2_15_66_0d_ad_8d_44_6b_0f_59_7e_dc_42_a1_fe_07n,\n 0x1d_d1_fd_60_8b_e4_76_4e_e1_dc_e0_50_67_89_9d_e5_3f_ff_c6_b0_0f_be_47_5a_2e_02_22_a6_3c_68_c5_4fn,\n 0x15_bb_0f_86_dd_0a_37_80_2b_11_5a_81_d4_e3_f6_8f_9a_1d_3f_e5_89_e5_84_8b_bb_c5_f5_a5_d7_7b_ee_f4n,\n 0x26_42_fd_f5_df_1f_af_7a_a6_a2_f3_7b_33_a6_65_f1_63_a7_df_70_c8_6a_da_ad_87_df_ab_06_49_3e_c7_2bn,\n 0x25_c7_26_bb_20_a1_ba_08_c7_38_08_e0_0f_82_9b_d3_fd_95_38_1e_78_c8_8b_b1_d3_f3_47_dc_7d_c5_43_aan,\n 0x1c_a5_80_8c_3d_68_b5_1a_fc_58_6e_d4_4f_44_18_9a_4f_4d_0e_56_cb_49_6c_d1_0f_5d_e3_68_96_6b_86_7bn,\n 0x1c_da_ae_a1_7a_2d_78_38_5a_56_e9_98_49_63_7e_dd_7e_75_d8_55_6b_fd_8f_24_1a_11_fd_90_3a_f4_fa_87n,\n 0x25_5b_06_d4_85_23_f9_7d_2d_30_bd_ca_e9_3c_e9_80_32_56_a0_72_3e_c1_61_b9_87_ce_f0_62_87_79_48_afn,\n 0x1c_b3_ff_20_f7_43_a8_45_c4_35_fd_3e_2d_10_e9_31_2f_61_da_41_37_43_c4_a7_9e_67_ab_6c_32_db_af_c6n,\n 0x04_7a_32_23_85_32_a7_a7_34_dd_ab_b1_50_24_b8_a1_54_45_5f_c2_48_1d_31_c3_54_8d_1e_72_54_88_65_1en,\n 0x09_95_b2_10_13_19_10_f0_1d_f8_97_6a_e7_42_e9_5e_0a_5a_b4_90_a4_ab_eb_30_fc_e3_48_e5_4d_cc_4e_78n,\n 0x1b_f1_6e_e5_30_c9_c9_4a_40_8f_2f_fd_49_ac_e7_dd_e6_35_09_9b_cf_dd_c1_ee_41_de_f1_d8_6a_da_dc_98n,\n 0x13_10_7a_5e_a2_a3_40_6a_cd_b6_56_3a_5e_3f_08_09_a1_c6_b7_ea_9a_04_92_85_33_26_62_75_fa_6f_52_1fn,\n 0x2d_56_2c_c0_65_00_28_df_6e_30_c0_7b_db_ec_07_f7_3e_eb_e7_66_a1_92_d1_30_a6_c7_37_fc_9c_e3_db_39n,\n 0x2e_fd_12_b5_e4_fa_10_2f_bd_60_be_dc_12_0b_1d_c0_22_f8_c4_3a_2f_ce_86_42_89_36_98_df_53_c2_35_29n,\n 0x11_00_98_c9_16_b5_23_21_1e_18_b9_85_f8_fc_c7_e8_a8_04_bc_bc_76_2b_fe_b6_c2_5c_81_0c_ed_55_21_62n,\n 0x20_a9_d5_21_6c_aa_c1_7d_b5_ab_45_fc_b6_b4_5d_fe_cd_60_a7_08_29_1f_5c_86_ab_84_da_22_ca_59_6a_d3n,\n 0x04_8c_82_54_09_09_4d_05_62_59_dd_3c_a7_e1_5a_08_59_4b_e8_2f_48_8d_66_f9_1b_43_af_66_0d_cf_38_b6n,\n 0x19_84_47_9f_fc_a6_b6_4a_3b_95_03_72_74_7c_1b_92_6a_c3_6a_7d_d4_f7_0e_47_e1_88_bf_7b_41_0d_ed_20n,\n 0x20_9c_ec_7e_e3_7d_47_a8_a5_6f_84_84_b9_4f_5d_b2_05_35_b5_52_c1_1d_5f_da_cc_80_30_5f_d8_25_c8_f8n,\n 0x2d_a9_a6_92_b0_89_15_b7_b6_19_30_f0_11_f7_6b_09_be_b7_ed_cf_d6_a1_9c_48_cd_e7_42_e9_9c_d4_93_08n,\n 0x30_2f_50_ec_e4_af_a1_7d_55_23_70_a4_e1_2c_25_a3_b0_15_1a_43_e3_98_2e_f5_e7_1a_38_c7_4c_36_ef_59n,\n 0x1b_46_e0_81_e7_56_c4_2c_78_31_53_f7_3a_64_05_4f_f4_98_50_73_b9_a7_32_15_3a_b6_9c_92_94_70_28_3en,\n 0x15_10_3e_39_88_d0_ba_f6_26_bf_9d_e5_4d_75_b0_30_1a_2d_39_27_c6_5d_70_b7_23_91_b0_62_df_7c_b4_f4n,\n 0x15_64_e7_00_62_ed_6c_3b_3f_f2_72_de_a8_0f_f3_dc_57_ca_1d_e6_88_b1_de_48_1e_7c_07_26_37_6a_ee_d2n,\n 0x1e_54_5f_38_8b_9e_05_a4_6d_ee_51_60_c8_70_6d_a8_0c_f8_07_c6_c1_02_60_c8_5c_e0_4a_c3_d4_1e_fc_5en,\n 0x08_8c_d4_07_f0_65_7f_c8_b6_e8_ac_f3_ee_2b_04_73_e5_0e_72_bf_58_f5_4e_a9_1e_ca_40_df_80_17_3d_c6n,\n 0x08_b8_e4_2f_a1_c4_10_44_67_d6_7c_7a_3e_38_4a_3c_00_43_e1_c1_d5_37_d0_6b_ee_d9_97_e0_b5_2a_bc_c5n,\n 0x14_f1_b3_f9_e7_20_31_ba_74_e2_e0_32_80_4d_a7_86_8d_37_bd_ec_65_c7_b4_c3_31_33_dc_e2_b1_99_08_46n,\n 0x16_19_c0_ec_ca_14_2e_d1_42_f8_8a_2f_e0_b0_38_12_20_b1_0d_3f_f5_c2_0f_b6_7a_66_ba_da_be_ef_01_8an,\n 0x10_f6_20_a8_62_c7_ec_98_6c_3e_e7_e9_2e_e4_31_ca_a4_e8_d3_18_2b_ef_22_17_5d_29_54_27_96_c9_99_25n,\n 0x2f_2f_73_f3_95_3a_f6_ec_ea_86_f5_ef_29_07_5f_c4_e0_1b_dc_08_3c_03_fe_6e_f8_98_42_cb_81_f5_79_36n,\n 0x12_4a_e9_3f_db_1b_32_75_40_36_19_64_28_51_9c_83_50_e6_99_c1_0a_e7_83_b8_ef_ec_04_f6_d0_e4_d4_0fn,\n 0x23_bb_a8_fd_9c_1d_88_8c_c9_f3_26_8f_c5_4e_ef_df_5e_18_d6_0b_41_f5_79_41_17_c8_00_ea_95_64_f5_79n,\n 0x1d_a2_48_f4_d9_0e_00_56_b6_83_e2_a8_92_87_6f_dd_8e_fe_47_4f_b5_11_f4_69_55_ad_31_45_34_1e_0d_33n,\n 0x2f_d8_23_45_11_e5_49_66_d0_0f_3e_a4_a6_5d_fc_f0_a6_aa_07_d0_93_23_f9_94_33_9b_43_bc_d9_8e_e6_70n,\n 0x1c_f8_34_50_d2_3c_5f_d6_4e_a5_ed_60_03_ed_65_03_73_7d_fe_24_9e_fb_ff_2d_05_f6_cc_28_5b_4a_db_bfn,\n 0x07_30_02_87_03_b6_38_80_fa_47_aa_0b_94_8a_2a_95_65_90_f9_d2_de_02_22_98_c0_35_06_36_58_6d_d7_b0n,\n 0x2a_ee_39_a5_16_69_c1_47_63_09_4f_b8_c4_2d_64_90_64_98_5f_f1_e1_75_d8_82_8f_4e_02_52_e9_08_11_0dn,\n 0x23_6a_48_fe_c7_f4_87_1e_2a_0f_c6_30_5b_4e_d3_51_69_b9_42_f9_e8_02_97_34_dc_9a_5f_45_0b_0a_40_bcn,\n 0x26_91_7d_74_db_71_65_80_0e_bb_0b_b0_5a_fd_8c_dc_79_b4_70_c1_d5_4a_5e_b1_de_da_d8_74_a4_a7_7a_cbn,\n 0x21_72_79_c9_d9_ad_56_8b_fd_e1_99_52_27_6e_8a_75_70_21_98_5b_2c_6c_19_67_dc_d8_c3_a4_19_8a_38_aan,\n 0x1f_84_a2_66_02_f8_39_70_a3_8a_fd_fa_33_5e_74_0e_24_b8_fb_97_4d_d9_d8_b0_31_9c_7c_f6_d3_49_1e_12n,\n 0x14_29_fc_9a_53_a6_93_7f_15_15_62_28_33_26_d9_f9_95_4a_2a_d8_24_28_5e_56_3b_67_d2_83_8e_5d_c2_65n,\n 0x25_32_64_e5_b4_72_59_93_80_7f_79_9d_6b_06_6d_38_50_23_2e_cd_10_db_bc_01_e9_a0_d5_2f_81_bb_b7_a3n,\n 0x1f_19_3d_e0_50_e1_e6_fc_55_93_9e_38_c8_69_03_ea_03_25_2b_48_91_20_d0_a7_4e_e2_aa_20_3b_58_7f_23n,\n 0x0b_17_9e_9f_cf_35_98_40_0c_e9_88_27_84_21_f7_a5_eb_6d_5a_dc_36_91_7f_a5_16_49_53_73_96_bd_f9_9an,\n 0x0d_d3_cf_d2_e7_4a_c6_44_3f_10_89_c4_c0_88_4a_89_08_01_c6_08_c1_a5_3b_50_3e_ba_61_53_81_9f_90_16n,\n 0x11_e4_f4_3e_73_c1_8d_f5_06_68_3d_89_a5_11_b4_93_fa_fb_c4_fe_e1_4c_34_a8_34_3e_b0_3d_1c_19_78_cen,\n 0x07_e9_61_3f_5c_f6_55_1a_97_ec_dc_c2_4d_88_10_e3_78_c9_b5_42_bb_59_d7_94_61_a4_c2_54_93_57_1e_ecn,\n 0x08_f2_50_aa_ba_f2_b7_bb_58_a0_9c_6c_d9_58_e1_3c_0b_86_c8_06_c3_3e_60_f4_cd_f0_67_89_cd_02_41_c3n,\n 0x10_76_a7_85_5f_3b_7d_1e_cd_5b_dc_7c_08_60_39_1c_57_ae_1e_ad_35_08_ea_99_4c_31_53_0e_29_c5_a2_42n,\n 0x1b_57_60_6b_fd_71_ab_8e_3b_2e_a9_cd_32_a7_85_69_d0_0e_8a_83_6b_8a_2f_94_e1_65_14_90_05_a2_20_4bn,\n 0x16_a0_fe_c8_e2_bd_75_55_96_39_6f_1d_1c_fb_79_21_07_96_b8_5b_d3_bd_ed_82_bc_c2_b8_e6_d4_a6_1c_5fn,\n 0x2f_a9_39_b7_8f_d3_58_91_60_bb_09_b3_5a_ed_dd_eb_43_c1_0d_d4_0c_2a_c6_47_15_98_c4_ad_13_68_89_acn,\n 0x2f_ec_4a_a7_55_63_f7_b8_ce_36_9a_c2_d2_39_48_6a_7e_2e_59_3c_4c_bf_74_74_fc_20_e5_15_42_27_d9_1en,\n 0x0e_11_58_e6_3c_9b_7d_f3_2d_7c_3f_32_a9_7e_8e_41_53_43_f5_4c_62_97_7e_28_f6_be_30_14_18_d8_c3_den,\n 0x0e_11_89_3c_32_e6_3b_42_a7_4b_ed_81_dd_71_e6_34_8a_9b_cb_55_bf_58_35_33_55_80_be_1e_aa_b2_fe_e4n,\n 0x0f_c0_70_1b_94_35_b3_05_b6_10_c7_fe_0c_66_7b_33_de_7b_bd_33_0c_a9_40_d7_1d_5c_cd_b7_33_24_52_d0n,\n 0x0f_ee_4a_a7_0a_97_58_0a_73_95_d6_7a_37_f5_53_30_b9_08_47_0f_b8_03_fd_00_4d_43_4a_e6_64_76_5f_c4n,\n 0x14_67_42_f4_53_1f_a4_9c_48_48_04_06_49_8c_65_41_60_0d_2a_30_3d_d8_da_c9_71_b7_b9_20_71_4e_e1_31n,\n 0x26_f1_45_dc_52_83_40_cb_93_35_cb_b6_fb_1e_70_d0_c8_71_84_9e_74_75_e7_f9_c0_89_0b_90_7f_9f_6b_d7n,\n 0x0e_30_7a_3d_20_bd_16_38_1e_2c_b9_d0_b8_02_04_6f_3d_33_02_65_35_f1_b2_b7_c0_3a_b0_75_b6_81_cf_b9n,\n 0x03_75_18_e3_a0_fd_47_c9_a1_e3_3a_91_8c_30_fe_9f_dc_e4_dd_04_dc_0e_93_81_62_d2_c3_a5_41_39_4e_5cn,\n 0x05_20_c4_f6_bd_c3_75_ba_8e_f5_e4_f4_d5_5e_e7_39_49_38_6a_81_3c_60_71_8d_b0_8c_a3_e8_aa_e6_80_b7n,\n 0x1a_5e_e0_91_b7_4d_cc_7c_39_62_59_0d_30_42_48_6b_b4_39_91_07_60_0c_5f_66_64_b1_45_b7_eb_8c_9a_2fn,\n 0x19_86_25_64_24_08_4f_b7_97_52_9c_fa_b4_03_b2_cb_f0_b6_62_6d_49_30_ab_ce_17_b1_a6_4d_ae_03_63_14n,\n 0x03_86_7c_71_d3_cf_a8_03_9a_b6_40_7a_b4_60_53_ab_4b_74_05_27_6f_48_3d_c9_83_19_04_7b_95_1a_15_6en,\n 0x06_d5_63_05_0f_50_97_77_4e_45_64_05_b8_c4_0d_1f_65_b8_a0_a9_de_14_e2_b0_52_03_97_00_bd_ba_23_fbn,\n 0x10_76_7e_56_88_2b_e4_80_93_28_a5_8d_74_7c_6d_3f_f8_5d_e6_51_3d_50_d0_9c_2e_33_7d_22_eb_11_c2_0bn,\n 0x10_17_17_66_74_f9_3d_48_20_7e_23_96_74_d9_9e_e3_9b_6c_d8_93_eb_fb_90_3a_2a_41_f2_8f_f0_b5_63_32n,\n 0x0e_e7_e6_ce_35_92_54_24_79_32_f4_e0_3d_31_13_c2_ea_26_e5_1a_83_31_3e_4c_16_49_cc_e2_23_66_b3_cfn,\n 0x26_ff_82_c6_5b_e4_37_4f_cc_d7_5b_32_38_53_4d_fa_54_4c_b0_42_28_b8_b1_7f_de_68_bf_54_a7_91_d6_3dn,\n 0x07_e8_8a_6f_ce_60_1c_48_d5_cd_2e_c5_94_5e_24_08_0f_b8_40_c5_ac_75_08_41_46_d4_ba_1a_6a_6f_d6_17n,\n 0x12_9b_8c_69_e8_51_8b_d1_66_36_ab_0f_1a_3d_7e_39_ad_a2_8a_5d_e7_9e_a5_fb_a1_b6_a7_d1_35_50_b8_5dn,\n 0x0d_79_4f_08_6b_c4_e4_5e_ea_63_37_cd_1e_65_39_10_49_d5_c3_d3_fe_e8_94_70_32_c4_00_69_ae_ef_f6_8an,\n 0x26_22_b4_fa_8f_b0_72_26_53_2b_77_9e_90_4e_ea_44_f6_f9_09_48_8c_f5_16_05_6b_d8_1d_af_cf_d6_0a_07n,\n 0x25_63_0c_8d_10_46_93_e7_a5_fe_41_ae_65_db_35_fd_3f_4c_63_f8_f5_1e_f9_d0_94_8e_a2_59_5f_15_8a_26n,\n 0x29_02_3f_c4_f3_3c_90_28_cd_fa_30_05_00_33_7f_66_8d_e2_a5_43_84_7a_61_9b_6a_6d_cf_7c_64_71_1b_5an,\n 0x2c_05_67_2e_9a_76_3e_a2_09_ba_a0_f7_c3_1e_c5_6e_ba_bb_34_c4_5b_24_b7_09_7c_84_1b_b3_cb_da_b4_6dn,\n 0x1f_50_1c_00_c1_ba_8a_ae_d1_73_52_4b_e2_f2_b2_17_d6_b6_ba_00_ac_26_2e_e5_8f_f6_22_01_67_ba_20_1fn,\n 0x19_ba_08_5b_36_79_5a_55_db_f0_40_e5_4c_35_6e_70_32_1b_81_fa_e2_9b_e0_d7_1d_77_7d_49_c4_f4_bb_8dn,\n 0x19_b5_1d_2f_e7_88_31_42_70_e1_4d_1b_c2_48_c0_90_da_86_05_a4_0f_75_59_21_6f_b8_64_82_fe_69_02_2dn,\n 0x13_55_65_fd_d6_d3_e6_51_19_1d_7e_d1_ab_01_04_33_78_2f_9b_07_a4_1d_be_14_62_9b_ab_71_3c_22_96_35n,\n 0x22_46_1e_d7_ba_44_59_6b_f3_a7_40_2d_ca_ed_5c_24_7b_09_83_5c_53_4a_81_ab_36_51_48_e1_48_fd_13_27n,\n 0x0e_09_c3_99_35_65_07_73_97_5a_41_1b_c0_93_71_8d_ac_77_e8_d7_87_76_66_a8_5a_c3_da_15_80_5c_df_8an,\n 0x08_4a_b8_53_14_40_2a_0b_68_cd_30_21_e1_ae_67_90_b2_76_86_c6_b0_ff_2e_49_48_aa_e4_ee_6c_b5_07_7en,\n 0x14_3b_5d_e8_38_14_81_4b_c1_55_3b_c7_ec_9b_c4_75_6b_bd_db_9d_31_84_3a_9d_af_bc_29_36_fc_8c_bf_69n,\n 0x2a_9b_9c_e2_6f_0b_87_21_be_06_da_85_ee_14_74_72_75_80_b0_23_7c_db_08_13_5b_ae_ee_61_0a_46_05_22n,\n 0x0a_ab_3e_a7_2f_43_d0_06_4b_77_6a_47_46_ea_6e_2b_18_9b_7e_06_fe_8d_49_eb_f4_52_ca_46_27_a3_87_d7n,\n 0x16_56_ff_a3_0c_03_7a_c4_57_3b_8a_07_26_88_8d_99_22_8a_d8_32_45_4a_be_fc_a5_98_c2_31_8a_3e_c6_53n,\n 0x01_4a_2a_a2_a5_98_b2_e2_37_0d_14_21_0d_ab_5c_5e_b7_58_b0_c9_17_8c_eb_7f_f3_fa_68_1d_a5_c9_bc_ddn,\n 0x15_3c_93_de_24_e0_1c_07_cc_d7_52_36_e4_ec_92_9b_6e_fa_0d_a9_6c_68_7b_5d_c1_25_f6_81_85_05_67_ebn,\n 0x14_17_07_bd_c7_69_83_98_e5_9f_4a_d0_4e_c4_4f_ab_8b_7f_4f_7b_20_09_6f_78_02_0e_94_87_78_a9_0f_55n,\n 0x02_13_81_25_9d_9c_d1_8a_83_7d_c3_4f_b9_50_17_a3_f3_27_85_bd_91_cc_91_85_89_da_e4_21_2a_f7_b9_79n,\n 0x1d_5d_10_c1_32_22_b1_71_6d_7a_1d_ef_6b_38_4d_72_79_48_b0_fd_eb_19_e7_23_b2_bf_a1_29_2d_97_54_7fn,\n 0x13_6f_f9_ed_b9_c0_56_8c_d5_85_b2_59_aa_a5_62_ce_3e_24_b3_0a_6c_46_60_ac_c0_b5_29_0d_30_a0_da_80n,\n 0x2f_3a_b4_41_8b_b0_cb_7b_85_96_75_b9_ff_ce_8c_48_8f_16_cd_d8_ce_a4_4c_14_de_04_32_e6_e2_88_14_64n,\n 0x2f_03_72_7d_08_94_a7_4d_c9_7e_60_cb_fe_74_c7_c7_31_1b_05_d0_20_ca_87_87_18_db_f5_61_db_8b_ea_39n,\n 0x04_dd_f8_8b_eb_91_6a_66_28_e6_0a_7d_a9_81_78_1d_fb_0a_5e_10_76_28_5b_24_35_7f_22_91_28_fe_25_adn,\n 0x08_18_51_9e_a2_b7_1f_be_c6_c6_bf_ff_87_c9_78_af_44_27_e7_bc_c5_76_df_a5_c1_5b_c4_fc_9f_ed_26_3bn,\n 0x11_54_d1_aa_34_45_85_c4_ec_f9_ee_93_90_c8_46_68_dc_e9_92_31_c0_f4_27_e8_62_9a_c9_05_23_4e_9e_b5n,\n 0x03_04_29_8c_6b_5e_21_44_ae_9a_50_8c_d4_c9_f4_c8_16_0c_37_af_a4_77_b3_82_9a_fd_49_d6_a4_9f_cb_00n,\n 0x13_65_0a_58_dc_a9_fd_ae_80_6e_76_45_4c_94_a2_19_8b_ed_24_df_36_d6_94_a7_a5_33_14_75_48_ad_02_34n,\n 0x07_cc_f1_9c_8b_87_14_b1_8d_28_0a_4c_0c_a0_e8_cc_68_e2_17_51_6d_1c_54_db_6f_f7_35_82_bf_4d_32_63n,\n 0x1b_28_47_6e_34_df_14_6b_4f_9d_53_0b_6f_59_cd_03_ab_e2_81_be_29_b3_24_6a_50_fe_de_d6_47_08_3d_32n,\n 0x1c_58_34_7a_64_fd_5b_e6_2d_47_8c_a9_d8_fe_38_3a_be_b3_fa_30_d8_76_bd_50_25_ec_f0_70_12_57_b7_3fn,\n 0x1c_c9_00_2d_41_19_59_6a_ff_97_43_10_da_5b_c6_27_21_91_50_92_50_41_26_a6_ff_3b_68_43_83_f9_ea_aen,\n 0x13_d9_9d_e7_48_b4_fe_d4_47_6b_b2_d6_e9_a4_ec_72_b8_b0_48_84_87_d6_58_22_89_5a_52_67_b3_5a_57_72n,\n 0x21_a7_80_ab_b2_ef_af_ce_61_f4_d6_7d_a7_b8_bd_fa_c4_94_83_9e_8c_38_4f_09_06_05_a9_4e_7b_39_6d_a8n,\n 0x0d_9d_c8_8b_f3_86_1f_70_5b_9a_af_1f_82_df_9d_53_87_0a_0d_3f_8d_e4_fd_8b_8c_96_5c_da_f6_57_18_86n,\n 0x07_8f_3a_f2_d1_3e_bf_85_5e_84_0a_8c_85_8a_3f_2f_14_31_6a_e5_20_ab_12_fe_61_38_1c_0d_2d_4a_04_69n,\n 0x06_2f_5b_57_78_04_a4_23_ff_3a_47_39_52_ca_f7_f0_52_f2_2c_8b_43_8f_00_c3_2a_c8_88_d0_0c_99_71_3bn,\n 0x25_a8_c3_3d_7a_db_7d_dd_6a_19_dd_83_07_a9_35_d9_14_8f_2e_96_24_75_f2_41_ed_67_05_1b_ec_38_bc_7bn,\n 0x04_31_65_2b_03_c9_43_33_a0_ed_76_c3_6f_19_68_d5_09_ac_73_b8_91_0d_f4_07_b0_34_3b_9d_d0_3f_b5_6cn,\n 0x22_12_3a_d3_99_10_86_2a_3a_25_39_73_29_e3_dc_14_9b_50_28_9f_90_95_e7_22_4a_81_d5_f2_d3_99_87_c0n,\n 0x2b_43_33_47_43_fc_38_c1_bd_cc_7c_c7_d3_6c_e4_41_ab_3b_e0_16_74_de_44_9b_15_34_9a_75_cb_93_7b_3fn,\n 0x2d_0a_0b_c9_2e_10_9c_5f_d7_0a_fb_db_87_1b_ce_c1_78_a6_9f_d1_e2_44_19_5e_2d_da_ea_ef_5c_a1_0d_d0n,\n 0x29_9d_b5_f9_e4_9f_4a_ce_b7_60_a4_aa_c3_6a_bc_37_af_72_e5_09_ad_6d_21_f6_af_1a_26_7d_2f_ef_c6_b3n,\n 0x0c_81_3f_6d_e0_81_bf_25_80_86_56_d5_88_11_a8_8b_8e_bd_5f_da_5b_13_65_a5_4f_79_3a_c2_bd_4d_c0_f8n,\n 0x0e_32_67_3a_68_ba_96_aa_95_9b_25_e6_55_b9_42_2d_98_71_c6_d5_b6_15_d1_4d_a9_78_d1_04_13_2f_a9_38n,\n 0x1a_9e_9d_c3_de_c2_e7_12_da_95_2f_b4_ce_7f_64_e9_91_cc_59_0a_0a_3f_cf_24_63_dc_ef_92_b5_ed_c3_89n,\n 0x15_9a_e7_2e_80_b1_b6_5f_43_b5_07_4d_dc_66_42_37_9e_09_c4_67_69_d7_02_8b_9d_68_e9_79_ab_f5_94_42n,\n 0x24_79_b2_11_ad_9e_81_f8_18_0f_a2_d4_4d_06_75_f8_de_36_04_6d_f2_16_e2_54_dd_a9_c0_43_b3_4d_07_6bn,\n 0x06_2f_8b_31_2f_39_bb_2e_5f_11_a7_86_ea_6b_b0_51_e5_37_37_63_32_9d_d9_04_c5_19_9e_a1_9e_35_47_ddn,\n 0x22_96_3c_03_65_61_dc_ec_8e_1d_cf_ed_6c_e5_0a_72_70_ac_b2_e4_15_fb_34_3c_dd_cf_cc_b7_79_06_da_55n,\n 0x04_44_0f_b3_23_54_7f_46_c6_73_d0_de_5a_4f_b1_98_cf_c8_b9_4b_64_e0_c7_76_44_2f_b1_f1_89_ad_23_b4n,\n 0x2b_d6_e0_8f_96_c7_80_1d_3e_c7_3c_04_ec_70_6e_3a_56_e1_0e_90_90_4c_29_a5_a0_96_54_d5_6c_c3_9f_88n,\n 0x05_31_d0_d6_dc_a6_2e_d2_cb_47_9c_c2_49_02_08_47_3c_e7_8e_2d_63_a2_c1_d6_de_b6_a1_5f_7e_ef_49_3bn,\n 0x16_11_c3_8d_07_cb_ce_2b_51_57_7b_64_07_33_38_f5_0a_f6_af_8a_7d_4e_99_92_89_42_b6_a6_87_34_0e_dcn,\n 0x14_86_04_fd_23_4d_2f_54_24_77_c7_a0_c7_3a_59_fd_9a_19_c5_52_7e_9f_eb_41_65_e4_f7_11_d0_4d_84_afn,\n 0x0f_fb_01_eb_47_52_74_1b_05_b5_1b_63_31_c2_b1_a0_3b_ca_fa_d4_ad_bf_57_fb_62_1f_8f_fe_3e_ec_8e_02n,\n 0x14_af_64_7e_d3_6b_e4_e1_65_93_f8_a8_13_35_30_04_59_72_1d_7d_c9_eb_ae_b1_c9_de_24_50_bc_7d_21_99n,\n 0x01_1e_2a_2b_f1_6b_4b_70_d9_15_46_fe_3e_97_41_51_8f_14_e2_b6_ee_75_d5_96_40_fd_62_f0_60_6d_6c_98n,\n 0x1f_c2_fd_de_6c_5a_c2_57_f4_05_2f_01_20_33_54_07_e5_33_73_0d_92_78_09_87_9d_e0_d0_23_72_6f_e4_f4n,\n 0x04_9e_89_20_45_b8_d9_24_d7_57_ee_ce_f6_66_02_98_7c_31_7b_a5_5b_79_09_b5_fb_aa_4a_df_56_a9_a0_75n,\n 0x01_8b_84_c5_9e_8b_5b_dc_9e_4c_55_ae_91_45_7b_e4_a6_63_32_b5_86_9a_9b_f4_92_81_24_e1_70_ea_a6_c1n,\n 0x26_3c_7b_e5_64_44_63_e1_2e_fe_71_71_57_99_3f_d5_87_51_cd_75_5a_d3_1a_3a_75_b7_f5_24_20_20_8b_1dn,\n 0x0c_b2_7c_d2_39_ea_5d_6f_98_8a_cf_b4_b7_de_9a_95_b0_ea_ab_0a_d0_ce_c9_6c_9b_ba_0e_6a_2e_45_9a_f7n,\n 0x03_63_48_31_e8_b0_e7_3b_b4_57_87_49_a7_87_5f_57_64_39_14_df_47_8a_ec_0c_45_7f_62_e8_d1_55_00_27n,\n 0x22_1c_a9_a3_1e_8a_11_78_80_17_59_1e_b0_67_b1_f8_7b_c3_5b_36_2e_10_47_38_63_78_d8_5c_24_d2_6a_4bn,\n 0x08_d5_dc_cf_d2_d2_16_4c_00_86_fb_da_b9_16_a7_55_27_15_6b_82_ab_45_36_12_0a_b6_54_8d_c9_9a_de_fan,\n 0x1e_a2_2f_82_64_69_f0_43_4f_9d_fe_67_49_42_7f_d1_57_81_56_43_61_ad_ee_a2_54_85_04_58_ad_48_25_60n,\n 0x16_25_99_79_de_9e_13_b7_9a_aa_c6_ab_8a_02_ec_0e_f2_6b_0b_16_90_e6_82_ec_aa_54_88_67_fd_16_1a_27n,\n 0x25_61_61_33_ee_91_e7_72_b0_20_d4_c4_c5_95_3c_05_a8_ce_a2_08_b0_16_2c_82_b5_7f_9d_07_a5_b6_bc_ddn,\n 0x10_94_51_ff_7e_e8_fb_fd_95_63_b8_c2_e7_df_83_4f_72_42_2c_dd_68_f9_37_27_59_c3_a3_1b_51_4d_87_04n,\n 0x29_e9_eb_61_d0_ce_33_c8_99_54_b0_53_0b_a5_57_71_f3_b6_50_a9_ca_00_d0_b5_2b_61_20_da_4b_d9_78_85n,\n 0x17_6b_23_6b_77_9a_a9_63_de_6e_28_3b_c0_6f_4d_40_b2_11_9f_df_22_6b_bc_c4_d5_6f_93_37_ee_94_0d_f8n,\n 0x16_a0_33_d6_c2_66_09_b0_62_f9_c3_69_b0_6e_be_1e_da_c3_66_e8_53_4a_33_b6_2d_0e_c9_19_85_55_20_c3n,\n 0x27_cd_66_a3_2d_d9_69_ba_9f_db_03_82_01_74_2c_80_62_50_7e_ca_d6_2e_89_47_65_8f_46_6f_2a_cb_bb_c2n,\n 0x0f_90_03_87_79_e7_2e_98_80_33_ff_cb_1f_ec_ab_08_7f_30_2e_f6_17_51_a6_a8_49_46_c9_97_e6_34_37_5dn,\n 0x20_5f_70_b9_6d_6e_7f_ed_74_49_ff_0f_70_be_69_8c_b5_b8_05_c7_57_3d_77_08_e2_c6_8e_4b_dd_e8_51_fcn,\n 0x1b_a8_9c_27_c0_91_cf_85_f9_97_ba_0e_3d_fb_b8_4b_a9_5d_46_3d_1a_58_98_26_f9_93_bf_60_d8_67_00_61n,\n 0x18_2e_a2_d9_05_63_05_67_13_6f_83_ae_67_1a_c6_31_58_db_9e_fa_ae_71_b5_bd_3e_e0_a3_de_9a_9f_9e_ecn,\n 0x06_50_9a_88_5f_e1_16_b9_67_ad_2c_c9_99_9d_44_21_06_b2_f0_96_7b_bf_ff_02_c8_49_c5_27_2a_10_04_81n,\n 0x02_28_3f_7d_31_bc_75_e8_ec_3c_8f_1d_b4_cd_38_3c_04_c0_2d_af_e4_2a_6c_c8_32_05_c0_c1_65_3a_a8_55n,\n 0x17_fa_f2_4d_23_b2_40_bc_3a_43_06_6d_21_8d_b8_a1_d8_92_87_14_64_1e_72_b4_1b_74_fe_bf_f0_37_d4_ecn,\n 0x0a_03_a9_fc_7a_a5_08_da_32_61_42_e6_2c_7d_48_18_f5_93_df_c5_0e_14_b8_b8_34_ab_89_34_31_a2_a6_20n,\n 0x07_1c_da_d0_90_dd_06_ce_a4_50_44_f2_5a_6a_db_52_97_15_94_f3_e1_61_f6_2f_41_29_e0_b7_2a_7a_94_07n,\n 0x11_f1_76_58_9b_82_44_f5_55_60_09_6a_18_42_3e_c4_34_51_d6_e9_9d_e1_65_a2_97_75_f1_e0_56_ba_e3_b4n,\n 0x25_9f_50_c1_3a_17_6f_85_13_da_77_44_fc_31_af_ec_ae_0e_9a_41_02_a6_bb_f8_93_17_8b_ee_26_a5_3d_08n,\n 0x26_80_70_c1_7f_66_e8_2a_12_19_f1_44_e9_7a_c1_a9_f6_f9_26_d8_d6_06_bb_e6_6c_2b_c7_c0_51_ea_53_8an,\n 0x2f_eb_1e_a6_48_0d_6c_aa_ad_0a_25_a3_b6_60_d0_16_3b_70_19_31_b7_f7_37_51_d5_e8_6a_48_f0_ae_f5_6cn,\n 0x26_7a_80_04_c0_a4_a6_5b_4a_c3_3b_86_58_b1_b6_83_57_9e_d7_84_64_7b_37_87_72_b4_b6_6c_c4_c1_89_f9n,\n 0x25_d6_7a_76_0f_2a_17_a9_43_5e_5b_a4_d7_48_6b_ce_7a_00_10_f7_71_e9_09_dc_38_cb_40_11_7e_40_13_08n,\n 0x1e_14_c2_d3_20_9d_43_e7_3f_72_52_4e_fd_a3_96_0e_16_c8_d1_6d_ac_6d_fb_ae_73_c7_e7_51_89_f2_0d_11n,\n 0x1c_12_41_0d_09_b3_36_43_40_ac_57_1b_40_bc_1d_74_a9_b4_2a_b1_00_1f_9e_b8_9c_dc_83_a3_26_56_b4_48n,\n 0x27_97_b7_9c_67_a4_8c_4e_52_10_e9_34_02_f7_f7_39_d1_e4_f4_43_66_4e_69_81_df_1b_42_32_a9_91_6f_55n,\n 0x2f_6f_ee_78_0a_c5_a5_8c_da_fb_65_3f_f2_50_ac_96_e0_2c_67_13_fd_c5_3e_e5_30_11_11_31_af_d2_dc_a3n,\n 0x00_96_d8_75_d7_76_42_57_9c_a9_17_08_c5_bc_ce_f6_1a_cd_69_fc_94_1c_e2_e1_26_c3_ac_39_4c_a5_b1_a3n,\n 0x09_c9_18_b1_f1_28_4e_12_3a_f4_a4_27_95_98_da_e5_c4_4e_5c_20_14_75_ab_08_3d_aa_a2_70_e4_35_99_a0n,\n 0x14_c0_b0_61_96_95_bf_07_5a_23_79_47_bc_42_5a_df_17_c3_5b_e7_5d_44_4e_54_28_8a_3c_dc_85_b8_ed_19n,\n 0x26_d8_f2_9c_c4_1a_ac_3e_0e_39_e3_54_54_7c_53_b3_06_27_ec_26_e4_fb_a3_3b_d8_d6_09_79_be_27_cb_74n,\n 0x09_d9_f0_43_94_b4_b2_f5_ba_5c_2e_4f_83_e4_f0_f6_3e_4c_17_91_ef_01_11_48_cb_21_96_90_1d_ec_70_cfn,\n 0x17_04_c4_08_58_3e_92_de_b6_36_55_c3_6b_90_cb_a6_a9_a2_c4_03_26_1f_a2_20_1b_4f_e6_ba_10_dc_dc_b0n,\n 0x03_07_02_b6_4d_0a_76_cb_0c_9e_65_1e_b5_79_26_37_18_b3_5c_fe_62_e1_36_47_2e_08_61_69_38_ff_0e_c7n,\n 0x19_de_cf_83_de_ce_35_00_53_09_89_7a_3e_b8_1d_5e_25_cb_ce_4e_b5_e2_fe_fe_c5_cf_68_d9_03_83_29_7fn,\n 0x03_8c_62_5f_54_e4_d2_ec_49_c3_81_1c_37_06_3a_1d_10_8c_0d_53_76_cf_97_94_4c_a1_07_49_64_f7_ea_95n,\n 0x0c_d7_26_d0_85_9a_55_c8_06_30_56_d8_35_6a_d2_9b_41_0b_1e_1d_d1_ed_0e_28_2a_e4_84_d6_b9_4c_33_ean,\n 0x0e_9a_0d_b1_4a_18_28_2d_43_99_47_ef_74_12_fe_1e_6a_ee_fc_c9_6b_4a_c5_0e_7f_43_0d_98_0b_47_fb_d2n,\n 0x1d_3b_00_e6_70_12_59_1f_3f_e5_bd_dc_1e_b3_65_74_de_7a_03_57_a1_be_28_35_9c_15_18_d0_7d_5c_f9_85n,\n 0x09_74_5e_c5_d2_4c_f1_83_76_96_f5_a8_67_c3_c6_12_9a_0d_44_c0_37_d9_66_12_e9_9b_82_ee_f3_db_d8_7cn,\n 0x2d_d5_e2_ea_41_58_8d_b7_b0_1c_c6_11_52_88_50_11_4a_df_c8_51_3b_37_b1_7f_b2_a4_6f_2b_09_bf_6b_1bn,\n 0x0b_3d_ad_73_1b_91_ed_4c_2a_ee_b1_04_10_c5_1a_6e_92_53_60_cb_ca_b2_0c_3d_de_cf_83_db_aa_7e_4c_97n,\n 0x04_99_98_b2_94_f8_ae_bb_bf_2f_bb_ec_69_5e_4d_2d_56_a9_90_4e_e0_51_c8_4b_0e_e1_fe_c9_79_8c_fb_42n,\n ],\n // t=13 (12 inputs) - 949 constants\n [\n 0x13_73_c7_71_cd_f1_51_21_a2_24_f3_30_d8_4b_66_88_ef_9f_e0_03_8a_3b_c2_6a_28_e3_19_65_78_a0_00_0dn,\n 0x29_f9_fb_da_3c_99_98_36_01_7f_76_e1_21_af_3a_ca_5c_e7_8b_b4_8f_a8_67_a6_a9_5e_5b_9d_b3_87_53_3an,\n 0x1c_7e_b5_11_6a_20_07_5c_16_9b_78_6d_9d_c8_6a_24_ee_7a_25_25_b5_65_bb_c2_62_20_9a_8c_da_49_05_28n,\n 0x21_a5_49_eb_55_4f_0f_85_9f_61_d6_8f_1b_6b_be_9a_a3_44_9a_62_38_54_6b_bd_f2_a1_c3_08_c9_cc_52_e6n,\n 0x0b_53_ff_f7_01_34_7d_1b_9d_f9_8b_46_17_58_00_e0_d3_25_0a_c6_d4_a1_af_a7_1a_34_9e_d1_95_87_35_08n,\n 0x02_12_9a_c4_74_24_15_c0_20_db_24_73_99_9b_34_df_db_ab_ba_3c_ad_47_13_71_8f_95_e6_34_6e_15_83_b7n,\n 0x01_d2_8f_30_5e_8b_0e_c8_8d_a3_7c_82_51_b0_c8_d2_30_b6_8b_ea_94_01_a1_5f_51_24_d6_4c_54_54_bc_29n,\n 0x1e_d3_01_e0_2e_3f_c9_30_99_9f_ce_6d_37_44_c2_35_96_70_0c_03_72_07_05_93_9d_61_ce_e4_51_fa_ff_93n,\n 0x2e_db_18_32_96_6e_34_ea_ee_e0_90_38_58_af_ed_b1_3d_bb_a9_f7_c8_02_c8_3e_e6_28_53_0d_0e_26_ae_1bn,\n 0x12_3d_aa_dd_c9_30_c6_5f_c6_7b_c7_7c_a8_bf_41_23_fe_81_fb_d0_50_1e_8f_89_ac_31_a6_98_75_6d_87_d9n,\n 0x2b_cc_36_36_2c_90_21_0a_cf_67_d5_fe_21_d5_31_04_e9_d5_47_8d_05_71_41_d3_b1_72_59_fe_d8_e4_a8_fcn,\n 0x1f_a9_28_ca_b5_93_82_07_e8_98_e6_1d_99_c7_d6_16_26_91_44_f7_90_08_15_b1_70_95_f7_ff_76_e3_c9_d5n,\n 0x29_c2_f1_cf_a7_2a_0f_b8_f5_3a_63_1e_84_cf_df_5c_c1_8f_b4_26_c2_54_f5_a9_05_fd_3e_83_1f_c7_c8_37n,\n 0x17_a7_32_ad_13_f1_b6_a1_af_f4_26_64_c3_90_b9_01_7c_41_82_10_27_3c_7d_04_8b_f3_00_aa_7b_e9_c6_5en,\n 0x0c_18_c6_e7_73_ea_7e_b4_3b_98_ca_c6_67_22_de_9d_13_54_84_c6_cf_a0_84_c2_a5_12_ea_19_77_a6_02_68n,\n 0x19_54_c5_c2_38_d8_a3_0c_9f_1b_a4_fb_96_3e_09_1a_ca_cb_c3_ed_7b_49_8d_cf_66_00_f5_30_b6_54_5e_49n,\n 0x25_91_ab_77_81_3f_34_d8_a0_e0_b7_b0_ca_ac_d6_ef_17_9d_d3_14_59_7c_fd_e7_8b_74_86_9d_74_da_d6_00n,\n 0x17_9d_b9_fb_8a_ab_46_19_e6_7a_6a_86_67_c7_b4_b3_2f_40_ed_84_8d_8e_33_b7_56_c9_a7_94_b5_93_2f_ecn,\n 0x30_5d_01_42_14_b4_10_7c_11_fd_83_87_04_58_73_8e_04_fb_8d_c4_e7_47_07_7c_0e_46_2f_51_d1_c5_95_75n,\n 0x29_87_23_d7_06_94_57_8f_e2_91_63_58_98_76_2b_ce_bc_a9_ac_45_63_b1_2b_90_e1_fe_f4_f7_6f_9b_7b_bfn,\n 0x02_b3_36_e9_b3_8b_50_4c_41_2a_68_33_09_ae_80_24_d0_80_2a_45_d0_6e_64_9a_5e_53_71_9a_ab_29_a9_13n,\n 0x08_68_7e_69_9b_52_7b_13_41_f9_ab_7f_17_11_3d_9e_0e_ca_04_43_25_1e_f3_5f_0a_90_57_04_f1_55_d3_39n,\n 0x0a_5f_f9_f7_d4_5b_3c_a9_b7_9b_18_d7_9d_b4_30_7e_e7_c4_ac_4d_de_a9_a8_da_1a_36_ab_3b_e0_57_c9_bdn,\n 0x20_e4_47_47_60_13_19_22_35_35_f4_56_6c_dc_86_ca_54_32_4c_56_57_26_53_53_ad_d7_db_f4_f2_50_46_56n,\n 0x02_54_dc_31_e3_af_d3_04_e8_5c_9e_f8_fa_bc_1a_1c_d1_a4_c7_b9_bc_86_0c_e9_ce_43_6c_33_a2_02_a9_6dn,\n 0x11_cd_64_92_dc_52_0c_57_dc_3e_55_e3_3f_8a_38_7c_bc_1e_da_3a_14_90_b6_a4_bc_eb_d9_4e_07_42_cb_f0n,\n 0x2f_98_b1_02_65_a3_04_75_bb_03_48_d4_a7_87_cf_b6_60_31_19_a1_a4_fe_15_c3_6d_c9_86_cb_4f_8c_7c_f1n,\n 0x15_3d_81_4e_4e_55_ad_78_2b_cc_ef_99_8c_97_42_50_c0_73_46_5e_f7_07_75_50_24_6f_69_c5_8b_a9_89_fan,\n 0x04_db_11_a9_ea_01_4a_ed_2e_d0_8e_46_c0_63_06_e8_71_31_74_4d_65_d2_89_e5_99_64_f9_30_d1_3b_9e_d6n,\n 0x0e_9a_9a_6d_ee_93_39_f5_de_71_35_ca_32_22_fd_22_30_c3_f3_f3_e0_1e_ed_d3_63_3e_60_6a_a0_b1_a1_ddn,\n 0x0e_6d_8e_46_4b_fc_db_8f_9e_e6_0f_b1_f2_f3_30_79_91_1e_7a_07_38_56_fa_ee_78_39_88_11_cb_97_67_57n,\n 0x02_37_fe_21_51_18_64_37_a1_cf_19_01_10_6a_e2_5a_ac_16_e9_84_6f_9d_41_fd_68_79_6d_7a_28_ed_72_8an,\n 0x1e_3d_3d_1e_ea_8b_76_15_a9_89_7e_f8_62_29_77_6c_bd_a1_d8_48_aa_5a_68_09_35_82_5e_73_f1_f5_aa_84n,\n 0x09_72_41_44_c7_a4_ae_c0_dd_cb_ba_9f_9a_9e_9e_c9_bc_df_68_8c_a3_f5_87_0f_1e_e6_e1_74_17_9f_b4_40n,\n 0x11_13_99_87_e1_14_74_67_d9_27_db_25_ee_c8_8f_0c_1e_02_32_e3_48_6c_d9_a0_14_be_3f_c8_cf_06_61_29n,\n 0x15_24_e5_be_ce_f7_2c_26_97_e3_4c_80_55_ec_81_97_4a_f0_49_12_d7_ca_1d_f8_3e_65_a0_80_ea_96_26_9dn,\n 0x06_4d_12_99_b1_1b_1a_6b_b5_0b_3e_5a_c7_59_2a_05_4f_d7_23_80_af_a4_c0_92_ce_28_ec_8c_31_e8_0c_99n,\n 0x12_d9_fb_d2_7b_e2_4e_b6_20_b7_74_3c_fc_52_96_56_7c_b4_80_40_91_a1_80_3d_d9_77_78_8a_9f_58_8e_4cn,\n 0x08_8d_22_6e_69_e1_b2_73_eb_a3_1d_4d_a8_57_60_85_cc_0f_d0_da_ae_15_46_be_f3_00_79_f8_4b_65_1b_c3n,\n 0x15_12_6d_e1_87_21_3e_bb_40_dc_e5_da_1a_b3_ad_c5_8a_31_39_92_0c_19_49_7c_3f_47_11_9b_aa_50_67_0fn,\n 0x11_69_c1_fe_73_9b_c5_28_ea_c1_6a_52_63_d2_2d_ee_4a_66_a9_96_1f_01_ee_f5_16_84_ef_79_21_26_85_9dn,\n 0x2a_70_06_c6_83_09_4f_6f_84_d1_22_ad_57_74_ad_2f_0c_9f_a8_0b_6c_96_3e_2f_a3_a1_ea_d3_d7_4f_3a_aan,\n 0x26_07_c2_2c_a9_ae_fe_8c_de_a3_0f_ff_05_b0_5c_4f_ec_7e_d8_e9_30_2d_0f_95_0c_d9_40_5a_e9_4b_b2_58n,\n 0x24_53_0b_08_6f_44_1e_38_34_f3_6c_2b_11_eb_c0_a8_09_db_df_dd_83_17_a3_84_46_59_31_c1_c5_8c_26_38n,\n 0x06_35_4e_02_d8_c4_de_97_a8_11_48_1e_39_0c_26_e5_c9_3f_c2_9a_2a_1a_84_82_4a_ce_50_46_7c_9a_a6_52n,\n 0x1f_6f_ba_b3_e2_ea_27_91_c9_4f_5f_f4_3c_a1_28_94_36_40_69_21_51_b2_95_dc_f4_2c_ac_0d_8a_b0_75_7bn,\n 0x17_47_ca_45_b7_28_2e_f0_99_28_f7_64_9f_5c_c8_33_75_37_e2_83_4e_6c_89_05_c1_ae_69_00_8d_f7_0b_fdn,\n 0x03_ef_d4_b9_b4_d4_19_74_e3_68_84_e3_b1_05_5a_70_5a_b4_ec_3f_b1_c8_e7_6f_82_e0_35_99_12_00_a6_33n,\n 0x2d_9c_d1_89_d4_7b_0b_1b_32_c9_a2_41_2d_b6_a5_9b_1b_47_5d_c9_1e_bd_2d_68_5c_96_b3_49_c2_20_b4_b6n,\n 0x01_c9_98_26_50_aa_cd_1a_44_9e_d0_46_05_bd_65_fd_75_ce_39_3d_42_4c_97_51_81_4f_d0_35_41_b4_75_6bn,\n 0x24_3f_fe_aa_82_f3_c0_38_48_1e_84_b7_28_b4_59_eb_22_13_59_85_1a_e2_26_c1_c6_d6_a7_ba_1b_1f_fd_b4n,\n 0x06_50_da_af_d0_03_be_d0_be_d2_2b_ad_a3_1b_ea_70_94_91_a8_3b_55_ca_ff_30_03_39_88_54_81_dc_65_e8n,\n 0x16_d2_0c_61_96_74_22_8b_76_7f_c6_25_aa_c6_50_ba_ae_2d_0c_d1_5c_1f_9d_01_64_54_70_82_b3_09_9d_f9n,\n 0x05_ee_8d_5d_66_1d_39_f1_5b_e9_23_fa_29_44_ef_2b_29_da_3f_48_31_eb_1e_4f_2f_1c_12_30_cf_5d_14_9bn,\n 0x23_eb_c8_fc_40_fe_ec_52_40_2e_18_f8_81_ea_ce_bf_e4_41_de_25_62_73_ff_e5_51_ee_e0_ed_7e_4d_ad_73n,\n 0x29_2b_b5_9e_7a_6c_70_11_6a_d7_b7_e1_19_51_c3_b8_b6_b1_b1_30_f3_5b_c6_c4_28_a9_53_3c_00_3a_70_e8n,\n 0x13_3d_42_d9_f8_3d_05_4d_b4_3e_43_54_d1_bd_7e_c3_a8_9b_8c_f9_47_03_fd_c1_29_50_d9_f3_c2_1a_63_ean,\n 0x1f_d6_be_d0_d3_47_a8_8e_46_fc_b4_2f_33_97_ae_b0_cf_07_a8_e7_14_67_e6_11_0b_94_c9_0f_93_23_74_5en,\n 0x02_3b_09_1a_0c_1f_08_22_c8_15_67_47_a9_07_c8_a7_9b_8c_1f_ca_b4_a3_42_06_22_51_1c_86_7f_79_d7_76n,\n 0x07_5f_c7_3b_cb_6e_a2_c1_58_e7_21_a9_aa_6c_3f_1c_4d_13_9b_5c_f1_b7_52_c8_7d_96_f4_44_20_51_2e_efn,\n 0x01_7e_3b_cb_a0_b2_d2_2d_27_cd_ab_bc_b3_60_c8_02_0e_56_c0_1c_07_9c_b5_50_e3_f1_69_fb_2a_9a_45_1bn,\n 0x19_42_99_f0_fb_79_51_a8_0a_ce_99_4a_3e_a3_12_3e_6e_0c_b7_2d_5c_46_fe_e2_96_ea_6f_8e_73_ad_18_82n,\n 0x06_f0_e5_22_92_4a_4c_f2_5d_90_11_d4_77_a2_74_6c_77_e8_cc_77_15_0b_87_b4_2c_8c_11_8f_14_73_b5_14n,\n 0x0c_c9_1c_18_c5_fe_e1_b5_79_da_09_00_f0_4e_5a_6c_36_d6_5f_0f_c9_77_99_32_03_d4_b3_11_cb_f5_d0_efn,\n 0x1a_bd_94_c2_a5_b2_8e_66_13_10_e3_31_5b_67_ad_bf_56_3f_db_06_92_6b_6d_c4_e4_d9_3d_04_16_5e_d3_09n,\n 0x24_14_2c_90_01_a7_bf_ff_36_3f_3f_67_f4_a2_bd_12_8e_fb_72_e8_46_e3_ba_10_34_4f_fa_e6_55_e5_6f_2en,\n 0x19_31_b9_d4_52_3c_b3_f7_8b_fb_cf_6b_1d_de_68_c4_60_12_aa_74_7d_cd_7a_3a_f3_82_ed_78_12_52_e4_78n,\n 0x2c_e3_bd_11_61_a0_12_a5_72_83_6e_97_ea_8f_06_94_f9_3c_95_2d_11_fd_11_a8_e8_f9_a4_9d_ff_9d_f8_5en,\n 0x15_a0_9f_a3_73_04_1c_23_9e_81_49_65_7c_98_b4_f3_aa_30_d1_92_c8_7c_03_cc_e4_7a_2b_24_53_d5_a4_8cn,\n 0x0b_1d_c3_8f_74_a7_1b_7d_90_9e_5c_e7_fe_56_01_76_87_38_41_7a_57_86_89_8d_a3_16_f5_28_99_8a_f6_65n,\n 0x13_ea_22_f9_31_6b_b5_69_4d_69_02_4f_ee_2c_b9_5e_e6_43_c5_45_49_6d_f0_bd_1c_25_49_0e_34_d0_f1_f6n,\n 0x1f_fe_58_bd_14_b1_2b_9f_af_dc_36_5e_70_81_a3_95_a9_61_4e_02_2f_7f_4d_7b_c7_df_c9_74_b0_aa_d7_1dn,\n 0x11_ba_b1_f1_86_cd_a0_3c_01_e8_5d_fe_dd_40_bc_5d_40_6e_24_ca_58_b3_05_a6_25_7b_7c_77_2b_ce_24_47n,\n 0x14_00_7e_b2_d1_44_0b_7b_8e_09_36_c7_96_72_05_1a_e6_f5_ca_9f_d4_05_5b_41_7f_00_c9_63_2a_be_30_ecn,\n 0x10_37_f0_19_3d_40_f6_82_ed_96_23_a7_72_de_67_9f_04_31_87_3e_8e_0b_50_04_a1_f2_42_ac_96_3f_ee_72n,\n 0x20_b1_8b_e7_60_e8_7d_7c_61_49_b8_10_fe_49_6a_bf_77_a0_f8_40_ee_57_eb_cf_e1_cf_77_23_63_38_fa_bdn,\n 0x1d_e8_35_e6_62_3f_42_67_11_27_6d_de_7a_2a_1c_20_a6_1b_91_0b_f6_fd_cd_33_b3_43_68_cf_96_e9_5a_2dn,\n 0x21_1c_38_05_0b_07_c4_a7_47_c5_dc_44_93_9c_e1_f7_6b_08_20_c4_b5_f0_7a_47_e8_b1_0b_05_e7_a9_9d_4fn,\n 0x03_72_fc_2c_d8_32_01_5e_11_9c_2a_12_d3_62_2f_d7_21_2a_48_87_e4_bd_12_75_c2_05_fa_e2_e1_7f_45_2en,\n 0x01_43_8d_ee_77_b0_82_5c_be_f6_b0_f4_12_e9_a7_27_7d_4e_5d_c1_61_ce_98_16_f0_20_ae_4d_14_10_d0_ben,\n 0x07_f2_ec_e1_6c_12_c9_75_7a_aa_60_95_3d_ed_d7_09_c5_13_f6_f8_33_7e_22_96_8a_65_cd_50_b0_d9_92_11n,\n 0x0c_57_a6_9d_09_57_5d_8e_1f_52_5e_01_2d_73_72_9b_c8_96_49_b5_bc_42_60_d7_3e_43_24_84_84_52_51_0fn,\n 0x1c_8d_0a_9d_b7_7f_14_f8_35_30_9f_2d_3c_68_21_b9_92_1a_36_64_68_a0_d1_5e_fb_30_8f_57_ce_65_85_13n,\n 0x16_9d_a0_93_e7_a5_b3_9b_f0_88_27_70_72_d4_fd_58_d8_02_15_b6_9c_a2_62_cc_2d_12_a5_eb_30_c0_0b_8en,\n 0x2f_30_34_ab_20_af_0f_d8_3a_c6_0b_02_36_69_68_66_f8_25_0b_f2_d7_65_b1_0d_6d_a2_e3_ef_1e_2d_78_7bn,\n 0x0e_31_b4_fa_62_7d_d0_e5_f2_da_ca_f1_05_86_5a_77_78_15_43_62_0f_3e_b2_8f_f7_dc_10_26_56_58_30_73n,\n 0x2a_90_07_12_6f_67_e1_63_1d_29_51_2f_43_3a_6a_0b_cb_8c_95_a3_6b_e1_64_be_5f_a8_6b_e9_fe_b8_a5_94n,\n 0x08_0a_f4_02_15_b6_07_8b_e8_4f_b4_7a_cd_79_b5_9e_cc_ef_e8_a9_2b_6a_60_33_e7_72_c2_21_83_bd_c0_d7n,\n 0x0d_e8_a2_34_d2_08_86_1e_bb_05_ab_38_12_e5_c4_fd_d3_9e_7a_da_90_47_c9_26_ef_b8_8e_1c_bf_2e_bb_52n,\n 0x22_aa_f2_4c_0f_1e_3f_94_16_06_a5_27_37_6d_df_f9_1c_c6_b0_ad_c0_62_ef_e6_41_f9_6e_30_05_af_36_59n,\n 0x1f_4f_5b_77_09_cf_58_4b_f0_70_48_61_e9_42_34_cd_89_09_85_1e_3b_21_2c_64_a0_b3_05_1f_fa_a2_eb_66n,\n 0x12_96_d4_64_27_eb_2e_38_81_6a_5e_81_71_33_56_5d_4f_6d_ed_4e_b7_2b_5d_0a_b5_59_bd_57_66_7a_a2_f1n,\n 0x03_fa_86_76_7c_1f_a2_d7_b4_eb_45_b4_a2_55_b1_29_8c_55_d0_45_c6_96_27_f5_d8_ad_eb_96_83_a1_29_ben,\n 0x08_02_28_05_ab_e0_2b_ad_75_30_6d_22_64_78_e4_9d_25_fa_cf_bc_af_f6_49_36_43_52_d4_a8_8d_92_8f_38n,\n 0x1d_58_b3_3a_2a_96_38_ba_18_0c_d3_60_29_30_8a_2e_8b_e7_ed_27_34_41_d5_d2_80_45_6b_2d_3b_8d_8a_0an,\n 0x1f_8c_ae_73_59_c8_00_f3_07_a6_25_b6_6f_f2_15_4c_6c_43_64_e8_5c_a8_e0_19_11_a6_34_aa_4a_d6_57_a7n,\n 0x03_9c_a6_6f_2f_d7_f8_0c_17_17_1a_4e_d8_c8_2a_e3_c3_bf_04_62_d1_45_1a_9f_5a_58_74_89_58_71_7b_f2n,\n 0x07_4f_7e_13_e7_4f_2b_7b_31_6a_38_39_95_6f_4b_f2_54_1e_af_24_97_65_3b_6d_b1_a9_33_5d_a6_c8_82_dcn,\n 0x1f_63_cf_11_48_c0_ef_a6_56_d5_af_85_0c_d0_2a_0d_87_9a_d7_88_6c_fc_af_e1_ec_55_fe_6b_f4_ad_5c_b0n,\n 0x1d_9b_f6_eb_c0_46_4b_9c_b4_75_83_49_4a_27_b4_57_63_d7_a6_22_96_ec_ca_17_ef_be_a9_73_56_a7_3e_23n,\n 0x07_64_92_87_46_03_b0_21_89_2e_5c_2a_03_c7_06_97_9b_e5_57_fd_4e_e2_e0_40_79_2d_a1_6e_28_bc_8a_c6n,\n 0x07_01_23_38_c5_c6_26_e2_67_f7_6d_42_83_88_94_0b_90_0e_00_85_c7_85_16_6d_27_b7_ec_89_60_82_52_38n,\n 0x09_c2_90_59_e2_01_3d_0c_e2_cc_e0_b2_4e_39_46_76_5a_95_f0_40_52_6c_3c_92_24_d2_80_1a_1b_d4_ff_81n,\n 0x1f_2d_e0_35_09_81_ab_37_4c_9b_a7_ea_1a_69_d8_1b_28_7c_2c_9f_ad_90_95_20_5a_b2_15_82_ba_0e_a6_41n,\n 0x0c_52_ba_b8_6e_25_9a_3b_d8_c0_61_19_70_28_87_3b_80_1b_4c_56_ea_80_36_ff_95_a6_7f_43_4f_3b_74_25n,\n 0x2f_26_2e_06_17_86_70_c4_ff_86_1f_67_0c_7b_51_ef_9e_62_92_13_a6_42_20_32_df_cb_26_76_04_26_a3_e5n,\n 0x2a_f6_aa_23_35_40_01_14_45_34_35_e9_70_10_db_e7_07_86_a6_91_a5_d9_72_ea_21_1a_f1_2d_4c_e3_84_c2n,\n 0x18_ca_d6_55_67_f0_32_2f_d6_f0_62_6c_b5_ca_f5_67_a4_6f_aa_12_2d_30_c3_73_80_b5_4b_6b_5d_01_ab_3en,\n 0x14_56_67_e1_90_67_dd_db_d4_26_9d_b6_ca_76_d0_c0_d7_e5_7f_19_45_ee_a2_51_f8_ac_ad_86_e8_49_85_8en,\n 0x2e_ba_a7_e1_01_94_cd_29_57_a1_3d_1a_35_8f_c9_3c_e5_4d_8b_d3_db_ed_06_e2_15_b2_bf_26_23_b2_18_47n,\n 0x28_b8_5b_95_98_2e_bc_76_c4_76_26_54_f9_32_db_03_1f_fd_53_76_a1_29_9b_45_ba_80_5c_4b_4e_07_54_d0n,\n 0x17_cb_0c_47_38_41_ed_2e_b1_f1_a1_dd_f0_21_b7_4f_73_f3_41_72_e0_65_b2_4c_96_84_dd_3c_ff_c3_40_a5n,\n 0x24_f4_6e_cb_85_83_ca_97_c5_b0_18_73_6d_22_7f_de_7c_39_d1_97_8c_a6_3c_97_e3_9e_a0_65_88_db_07_b0n,\n 0x27_4b_5c_40_9e_a9_80_9b_f7_f0_4a_7c_b5_ee_4d_32_2d_1a_95_a8_6c_1d_09_61_b1_5d_4a_24_a7_18_5d_ecn,\n 0x2c_ba_89_60_d5_43_fd_98_46_37_73_48_ea_55_b7_d0_42_b3_34_85_24_d7_61_01_83_66_46_62_7d_ed_44_77n,\n 0x27_f0_2e_41_6d_d7_0b_44_90_7f_97_d7_ec_b9_45_ce_bb_ab_1d_4d_c7_3c_8a_18_c0_0c_fb_1f_b2_46_99_88n,\n 0x2a_b2_18_65_69_12_29_fa_44_0b_65_28_ad_7c_39_c4_16_93_b1_b9_39_ec_09_db_ee_df_26_f3_77_24_a1_51n,\n 0x29_10_da_91_6e_43_8c_04_83_7c_e7_99_b8_1b_0e_97_92_c1_ea_d0_08_d9_2f_cf_9c_a8_67_b1_65_f5_e2_75n,\n 0x0f_03_ce_98_36_61_11_de_12_cc_be_5a_11_21_c9_f8_30_95_19_a7_e5_23_00_e3_97_d9_d9_03_68_20_7a_fan,\n 0x23_6b_03_71_e7_ce_97_21_3d_8a_eb_66_83_f0_2f_44_04_4a_1f_ed_ac_a3_d1_51_ed_d3_12_1a_44_fa_19_e1n,\n 0x2c_50_ca_b6_a8_67_b1_e8_01_a3_6f_fb_ce_e5_21_b8_3a_fb_c5_80_be_18_97_dc_4c_5b_6c_d5_df_3b_35_0fn,\n 0x0c_bf_8c_8d_cc_d8_37_d1_db_ac_09_15_1e_4e_e3_78_f9_3e_85_48_d9_23_d8_a4_9e_6d_f8_1b_9c_3f_27_7cn,\n 0x1d_18_a9_fb_00_12_45_c1_a6_a1_7f_7c_d2_4e_d8_20_b0_db_ed_e9_ef_47_98_30_d0_ae_48_33_46_e5_4b_e4n,\n 0x14_76_bb_1c_30_60_3f_7f_94_49_3d_2e_01_6b_ee_63_28_3b_2a_7e_fd_99_9d_59_09_0c_43_4c_88_83_7e_d3n,\n 0x24_d5_65_fb_57_8d_d2_52_f5_6a_7a_0d_5d_8d_4d_1c_5d_72_7d_52_34_ac_4b_d9_a9_60_04_55_cc_b5_ad_58n,\n 0x0c_68_e7_e9_56_7d_ea_b8_e8_b9_50_51_a7_78_84_43_43_8e_0f_5f_be_0d_7d_e4_36_fa_3c_fa_d5_96_36_9en,\n 0x1c_e5_b2_5a_53_9d_3e_1c_0c_5d_cd_1e_bd_0f_4e_e7_16_84_0d_44_c3_ae_10_9a_66_9e_ac_dd_c4_a3_56_11n,\n 0x2d_32_10_e6_64_07_f6_c3_43_ee_f2_8f_bb_7b_ae_59_f6_26_db_73_be_c5_d9_ff_06_ba_9d_43_ba_84_e2_08n,\n 0x11_8a_b3_42_77_47_ef_1a_45_a6_09_cd_f7_e7_10_2a_fa_e6_d4_11_39_2d_e2_54_d3_b7_2f_1d_45_0a_d2_f9n,\n 0x0b_45_c7_0d_28_56_c7_e5_b3_fd_6f_8f_0f_de_1a_7f_cb_14_a2_ac_ce_4f_dd_df_e5_0b_39_fb_97_42_3b_5dn,\n 0x2c_e7_c2_ba_d5_60_81_53_c5_d1_e4_0e_e1_7c_c3_3e_f1_78_3d_9b_1c_f0_15_3e_4a_29_18_89_4f_aa_46_b3n,\n 0x08_54_bd_46_fe_f6_c2_e6_48_0b_3b_09_98_21_5f_55_f4_e0_90_a3_e9_9e_03_a5_a6_47_42_f9_8d_ce_5a_f8n,\n 0x15_c7_7e_76_00_df_71_1f_58_f2_f0_fa_88_b7_d4_35_77_01_04_a1_96_07_6b_74_e6_f5_d7_a9_6c_8e_69_3dn,\n 0x2a_0a_3e_e3_8e_df_da_07_61_bb_9b_30_17_92_4d_09_30_94_78_b1_67_a6_09_9e_54_d2_f5_a2_21_72_4e_d8n,\n 0x0e_8c_14_fd_43_b9_ac_e2_b7_e9_8e_1a_c6_56_59_cd_37_f8_de_94_19_8a_ee_42_f5_be_66_59_76_5a_4a_d9n,\n 0x16_32_76_e8_36_c4_ee_6a_b9_46_66_13_c6_1f_c6_92_4f_ae_d9_cf_dc_0a_45_8b_c9_5b_59_ff_38_1e_21_e4n,\n 0x23_d1_58_4a_5c_b0_b7_4c_00_07_1c_68_7c_dd_ac_b4_a6_32_b1_04_de_41_59_c0_e0_0c_53_52_d0_78_cc_fdn,\n 0x15_68_5b_c9_03_a1_c4_c0_31_ce_01_6c_09_38_60_a2_ae_2a_ef_ab_fa_47_d1_f2_90_eb_5a_62_85_22_f5_a0n,\n 0x1b_33_f5_0e_90_e9_0b_5d_ca_cb_1a_15_86_41_d6_33_11_97_24_57_ef_d9_48_58_34_b8_3f_0f_a0_42_60_a5n,\n 0x28_38_0c_55_cd_66_78_94_c6_38_64_7e_6a_a1_4b_85_7d_3f_31_c0_31_5a_b3_15_d6_a9_45_73_04_f2_1d_c1n,\n 0x29_d1_08_54_1f_3b_45_19_43_ea_cf_72_3a_cc_68_86_aa_b1_8c_8e_44_85_80_8f_4b_1e_55_a7_3c_da_62_46n,\n 0x1d_4c_2c_ba_59_d5_55_1b_c3_fe_97_6a_e5_ac_09_e5_b7_28_d3_05_bb_da_19_3a_fc_25_9c_99_93_2f_95_f0n,\n 0x16_a8_d6_99_70_56_10_03_65_03_37_aa_be_5e_4e_5d_df_a4_b7_1c_1b_9d_b8_cc_7b_82_78_03_59_c7_0d_33n,\n 0x28_9e_50_c1_f0_b0_bd_de_dc_98_b7_e8_a3_5b_e6_2f_14_f5_6d_d5_d7_34_5b_fa_6a_d0_d2_e4_3b_f9_2e_43n,\n 0x0a_41_76_5a_53_52_ec_be_0b_32_7c_a7_82_7a_9f_c6_49_5e_7b_6c_14_2d_ff_ca_00_3f_58_38_3c_6d_ff_65n,\n 0x24_c0_d4_23_78_a0_c8_a6_13_c0_40_2e_de_6d_e9_bd_35_27_ef_2b_82_ce_ea_60_06_e7_f7_1b_f7_76_66_d4n,\n 0x27_7c_ae_50_57_d5_b5_ac_e7_2c_47_e6_0c_c4_b8_e1_13_ed_70_6b_5d_91_ea_4f_b9_b1_3f_d1_9f_a4_d4_7bn,\n 0x0a_30_35_67_cb_f9_49_68_09_04_38_a2_3e_2f_d2_cc_b8_a7_f7_16_22_bf_fd_c1_c1_68_4e_89_58_c3_76_5dn,\n 0x1f_7e_d8_c2_67_a2_9a_69_d9_45_0d_c7_4a_fa_f7_68_a8_84_e4_2c_37_e0_e6_fb_4d_43_85_cb_02_7a_b9_49n,\n 0x08_6c_4b_83_01_65_6b_6a_cb_8a_73_50_19_55_6a_27_8a_60_31_30_40_f2_36_e8_15_fd_22_e8_47_3b_bc_65n,\n 0x27_b6_3f_bc_29_59_47_60_db_ff_ef_8d_30_fe_f4_9a_fe_fd_df_15_04_bd_48_7f_d6_28_2d_9e_3d_6e_33_37n,\n 0x00_b9_c0_a4_56_21_71_6f_98_49_af_8a_3c_90_75_b7_ab_83_9c_28_28_81_ed_e8_b0_e5_a9_e7_23_76_6d_70n,\n 0x1b_5b_a2_fb_ce_d9_22_c3_79_6d_57_b4_96_2f_d2_53_f5_ab_6e_2b_91_35_5d_2c_0a_8d_22_60_40_65_23_95n,\n 0x2e_1a_d5_7e_bd_f9_32_60_3f_51_bb_1d_da_b2_04_dc_02_6e_13_dc_49_86_79_1f_54_c4_03_0c_ac_6f_19_38n,\n 0x2f_86_5e_1d_f1_16_9a_35_77_1f_61_70_46_48_5f_8f_b1_7a_fd_e3_b2_b9_7d_1e_af_af_bd_18_62_ac_6e_16n,\n 0x00_62_ac_e5_be_38_0c_5e_43_61_b2_09_b8_0b_ef_dc_ad_05_21_46_b8_69_d5_0d_d5_80_85_ea_65_d9_d1_41n,\n 0x2d_bc_bb_1b_4e_a0_8e_37_69_84_4b_ed_52_2b_92_ee_01_fe_cd_5b_3f_23_79_c2_4b_45_d5_98_42_53_63_37n,\n 0x1c_e3_d9_00_34_df_da_11_e9_bf_7d_92_b6_5f_81_04_83_c4_8b_26_cc_a0_92_74_7b_4c_ea_f0_7c_7b_a8_47n,\n 0x08_65_83_a5_94_97_47_4b_0d_1e_b0_c3_ce_c4_f1_df_59_6a_ef_3d_b6_38_fe_e1_89_5d_3f_5a_58_45_25_2cn,\n 0x2b_98_4d_5c_91_b7_b3_20_f7_f2_97_bd_dd_68_78_9e_f6_ca_88_cf_ed_39_57_d2_c5_e8_a6_fc_0e_78_d7_6cn,\n 0x08_ed_ea_f9_dd_cd_25_a7_30_75_1b_32_cd_43_c6_30_da_83_11_01_eb_31_03_99_35_6e_4b_52_df_11_fc_28n,\n 0x28_df_39_cc_7f_96_67_25_69_cf_86_ee_37_36_23_da_9f_1c_58_ff_1f_d6_6d_93_0c_c2_34_a7_e9_59_c4_1fn,\n 0x15_af_6a_84_c6_b1_42_ea_cc_58_13_7f_b3_71_79_9b_f3_af_f1_78_04_55_c3_2d_8d_35_98_cf_b9_1b_24_dfn,\n 0x19_cf_0d_ca_22_78_1a_9b_d5_61_73_49_1e_be_bd_18_ec_84_46_d6_71_75_63_bd_3a_80_cc_52_a1_be_69_61n,\n 0x04_e0_e0_b5_29_23_bf_f8_b6_7b_12_10_f2_3a_11_27_73_37_99_6c_e5_01_80_eb_a9_77_75_61_8b_00_35_58n,\n 0x15_ab_0a_5f_da_2b_51_91_cc_2b_d0_48_5a_30_c2_e7_5b_54_0b_c3_97_c3_43_6d_2e_64_b6_a2_da_9a_c4_9en,\n 0x01_8e_83_f7_a6_bb_f4_57_fd_e7_b8_ba_4f_c5_3a_d4_81_0e_e0_71_94_19_69_f8_7b_62_b6_c6_ea_8f_55_efn,\n 0x17_1b_05_39_cf_1d_6e_85_19_78_9f_be_b3_12_92_b6_be_60_c3_f9_3e_2b_45_30_9a_b5_59_a8_54_e6_33_55n,\n 0x2e_a7_6a_14_e0_d1_77_f3_55_f6_81_c8_22_de_2b_37_14_2a_e6_e9_37_12_49_22_65_d2_99_24_73_da_10_21n,\n 0x14_42_92_62_7b_64_3b_51_80_c7_10_eb_a6_d7_4a_07_6c_da_5d_3f_f8_36_57_6e_98_3d_a9_b7_d9_35_64_b3n,\n 0x07_ad_2b_f3_7c_e1_ef_4a_8f_ac_5b_44_30_5f_1a_5d_21_27_d8_c6_ff_17_3e_c4_2f_0e_42_1e_a5_3f_7c_1cn,\n 0x05_55_14_dc_9b_01_48_0a_e5_7b_a2_4f_d5_dd_12_f2_29_bb_55_97_ed_cf_fc_a1_45_15_6a_f3_32_4b_0d_84n,\n 0x0b_05_a4_5b_b9_37_7e_15_97_50_7f_de_0d_bb_fa_2d_64_2f_6c_35_8e_23_3e_cb_8e_d7_e5_75_ec_6a_34_a5n,\n 0x19_8b_36_9f_02_4a_05_61_af_9a_d7_a0_cf_7a_c1_07_04_2b_42_f9_30_1b_af_e2_e1_b4_c2_ad_9e_46_fa_86n,\n 0x25_3f_82_b2_1a_dd_aa_86_72_46_77_ba_d4_a4_c4_64_ac_5e_c7_5c_78_75_5f_be_c6_f4_6d_9e_f7_3c_2f_04n,\n 0x0e_f2_56_e9_d5_e9_e3_da_1f_56_d7_d2_11_5f_df_10_ed_76_74_e3_ce_cb_cc_9c_db_cb_46_c7_cf_bc_74_29n,\n 0x2d_89_26_57_0b_08_02_60_16_4e_6b_66_af_af_ba_d3_d9_25_a4_64_e9_95_d7_a1_d0_2f_90_c7_26_4f_7b_38n,\n 0x19_ce_4c_36_c5_12_10_78_7f_71_cb_b0_80_cc_34_0f_2f_b7_32_cc_19_16_18_d5_25_40_0b_2f_dc_51_68_96n,\n 0x05_9d_f9_07_c9_fe_52_49_d4_84_18_3f_2e_89_f1_02_e1_f9_97_85_85_c8_8b_57_b9_a8_7e_8d_8c_df_c6_cbn,\n 0x2a_fc_27_a4_18_32_e0_bd_3b_d8_e9_47_28_4d_9a_cd_1a_c7_05_02_95_b3_88_b6_b5_cc_31_79_a8_42_f8_03n,\n 0x06_e9_60_a5_b2_38_54_17_42_9d_fa_89_cd_14_d7_78_7c_07_78_e4_c5_42_1d_ba_2e_ba_69_4b_08_54_a2_1bn,\n 0x1e_8b_79_0c_a2_d0_81_62_44_86_ac_fd_61_32_45_ef_d7_10_e7_a7_a9_08_a2_33_ec_5a_fe_11_48_47_60_98n,\n 0x2f_68_d7_8d_f4_e0_8b_23_c9_6f_a9_59_7a_b7_ba_5a_17_85_32_9a_37_00_53_30_0d_79_2a_04_21_cf_3a_e9n,\n 0x0a_2e_82_f0_c2_f9_e3_45_68_9b_2f_2d_a2_10_8d_01_8c_ce_30_84_ee_85_dc_83_d5_79_37_fa_cf_3e_56_c3n,\n 0x10_8b_2a_f6_5d_8a_2b_8e_f8_14_34_d7_36_46_cf_f6_c2_5f_e8_eb_b8_8b_b7_68_dc_43_5c_aa_19_14_31_11n,\n 0x0c_2f_90_eb_77_fb_28_55_d3_9b_74_5a_85_d3_c9_60_c3_d0_c1_ee_74_0d_87_77_97_1c_93_6d_dc_e2_66_01n,\n 0x03_da_dd_c5_90_3d_e3_d5_30_2c_7a_07_d4_c5_46_03_9f_a8_4c_3d_a6_cf_4e_ac_9c_2b_9c_bc_94_db_00_5cn,\n 0x01_0f_4d_48_18_88_05_d3_12_67_38_d2_49_76_ef_4c_80_59_6b_3c_63_80_ef_fb_23_cb_3b_3e_ac_95_41_34n,\n 0x06_70_13_17_70_86_59_ce_74_51_5f_62_f9_12_8e_a9_a1_cf_f2_79_6e_18_eb_9e_af_e9_c2_ec_4f_9e_42_80n,\n 0x2d_d0_34_9f_0f_0e_f5_2d_77_60_20_37_a2_11_e5_c5_65_e0_09_1e_01_07_2e_f0_86_30_05_6d_90_7f_c6_d9n,\n 0x1b_15_95_7d_8c_87_74_07_6d_f1_6d_49_d7_88_b1_1a_5a_d4_69_0c_bd_80_22_43_7f_40_2a_6b_25_eb_54_36n,\n 0x02_a9_2a_1f_50_c4_65_8b_68_7f_2b_6c_8a_fb_53_23_c9_b8_e3_dd_17_fd_cd_5c_40_e1_7d_b7_38_a2_75_92n,\n 0x0d_4c_b3_16_f0_72_fc_8e_24_63_a4_a4_2d_16_8d_6d_c0_4e_0b_13_7f_a4_b5_72_16_d1_f2_ba_5e_64_ad_56n,\n 0x1c_f0_f9_bf_90_e2_07_f3_a0_aa_5f_c1_08_53_8c_64_1c_40_e0_95_2c_6f_66_e6_02_4f_ad_bd_22_48_e1_6cn,\n 0x0b_81_c0_3e_68_06_a4_9a_8a_5e_df_c3_db_4b_f7_8f_d4_be_b8_06_74_d0_c8_8d_dd_ee_f5_43_d3_60_0a_e8n,\n 0x1d_bd_32_d0_49_76_4d_6a_b6_f6_77_b8_9c_40_8f_9f_4d_3f_29_b5_a1_81_48_cc_8d_57_40_e4_8e_cc_9d_35n,\n 0x16_d5_2b_bf_83_84_48_b0_e4_4c_2b_f0_52_29_c3_f7_41_b9_66_79_04_38_a2_99_7b_e9_cc_66_01_03_ad_90n,\n 0x2c_8e_f8_80_d5_78_8e_53_59_b9_7d_1b_e5_54_30_5e_0c_f5_bd_55_c2_93_99_12_81_bf_e5_40_1b_9e_35_den,\n 0x1f_00_7e_f1_67_c9_b9_9e_94_80_07_dd_80_60_85_71_92_b9_dc_99_21_27_c2_35_ae_c4_6a_2b_32_3f_2f_11n,\n 0x0c_d3_36_83_ec_08_20_7c_56_a8_02_10_d9_92_97_31_d2_03_52_64_39_48_41_b2_b6_f6_5c_61_51_9c_d8_42n,\n 0x0a_f1_b0_f7_0f_93_bb_8f_53_77_db_65_17_c4_48_2a_c9_3d_df_af_60_51_e6_8f_e7_39_f1_61_b4_38_0f_d9n,\n 0x24_d0_3d_52_21_18_e5_44_c0_4d_49_d3_8a_ff_ea_78_9e_49_d2_eb_2f_dd_d1_71_61_3e_69_f4_eb_07_bb_40n,\n 0x2f_1f_0e_4b_f9_ad_cd_2a_4f_1a_ee_5c_ef_4c_2d_3f_27_c9_b4_82_47_96_95_30_25_02_7a_37_94_24_28_ebn,\n 0x24_8a_41_2f_28_7c_d3_b3_44_89_30_a1_03_9a_b3_22_81_95_8f_99_a2_ee_c0_c2_f1_a5_2a_65_b3_e5_89_b6n,\n 0x21_e3_74_b4_5d_a5_5c_1d_3d_89_c6_d2_17_3e_11_46_99_92_b8_1b_eb_2d_3d_4c_d4_d1_60_38_dc_ba_b2_31n,\n 0x1c_2f_85_c4_2f_6a_33_10_92_ca_03_3b_4a_e0_6a_b6_67_cd_8a_be_f2_4b_54_58_eb_10_e5_33_46_69_4a_65n,\n 0x29_eb_55_5d_dd_4c_74_ab_90_31_08_41_27_bf_c2_50_36_f1_77_be_8e_d6_2d_32_ed_35_97_3d_3d_e9_4e_76n,\n 0x07_d3_01_01_df_71_1f_25_36_4a_95_5a_70_02_fe_48_f4_7e_c0_a7_c0_ac_d5_4b_a0_cb_55_1c_91_2e_c6_e3n,\n 0x2a_fa_ed_c7_a6_57_94_1c_9e_77_e7_28_f2_02_d5_68_e4_ad_12_30_f9_1d_36_9a_96_1b_4d_cd_4e_15_a3_6fn,\n 0x2d_af_42_6a_65_d3_7c_c8_11_25_c3_d1_cc_a5_27_cb_29_e9_45_1b_e0_a5_ac_b7_e4_fc_81_b2_af_ae_5a_83n,\n 0x0c_77_4e_81_27_95_20_ee_ca_70_f8_a7_b3_d7_79_9b_de_e8_37_1a_9f_cf_90_2d_43_53_3e_64_9c_7b_f4_8dn,\n 0x03_08_21_2a_0a_56_ca_c9_95_61_51_5c_83_f0_1d_c3_68_4b_e8_a3_7a_25_19_7b_46_7a_cd_d3_67_ee_03_0bn,\n 0x20_fa_94_47_e9_2e_4f_68_02_5e_1b_ec_51_f1_15_fb_65_32_35_ab_a4_84_fa_0d_ab_9c_ac_4a_a7_44_d2_95n,\n 0x2f_4f_64_7e_f4_50_cd_c4_b3_95_4a_d1_4c_7c_b1_c3_e0_8d_14_05_49_bc_36_c8_2f_73_92_93_ce_8b_62_45n,\n 0x25_a6_d0_24_22_b9_e0_0b_1c_a5_e1_15_6b_87_b4_cd_da_56_cb_bb_34_1f_82_b4_a6_3e_cd_41_af_c7_9b_d8n,\n 0x05_65_83_4c_7c_f0_3c_8e_54_2f_1c_32_88_00_6b_a9_f3_5c_56_c9_54_70_bb_86_b9_66_8d_00_63_d0_95_ccn,\n 0x24_a6_f8_8d_5d_70_90_b2_4a_15_1c_68_ae_de_9f_34_7f_ed_ff_aa_58_4a_a4_31_b2_d0_e9_0d_a3_cd_4f_bdn,\n 0x01_4b_0d_44_dd_f5_ce_a5_76_cb_82_d3_99_c8_e4_a5_3e_78_22_5b_64_6d_25_c9_7b_50_4e_63_db_a4_cc_ean,\n 0x25_1d_32_0b_76_03_c1_c8_6b_61_02_49_32_19_cb_1f_73_7e_4f_f9_b8_4c_ef_70_50_e3_74_56_e8_f0_3a_cfn,\n 0x23_8c_2b_ec_6c_fa_d3_88_d4_77_c5_5c_0d_de_ab_2d_32_68_15_5f_33_63_bc_de_fd_3c_d8_ae_5f_63_76_6bn,\n 0x13_37_d7_78_bf_0f_0b_c0_01_ad_9d_bf_99_99_37_9c_c0_8d_e0_ed_56_75_68_44_8c_a3_c0_c3_55_5d_a9_dan,\n 0x26_9a_e3_5f_7e_b3_84_ad_19_65_b8_2f_8c_9e_8b_4f_65_d3_ce_cf_d7_67_ed_44_08_a0_25_ac_7b_a9_74_48n,\n 0x2b_01_d8_79_7c_fb_96_16_e3_47_19_21_b6_10_dc_78_c6_4a_e9_ab_2f_e4_87_01_ba_ee_5e_78_53_ea_18_91n,\n 0x1a_cc_5f_89_df_c2_4a_03_45_81_56_ff_7b_15_6b_22_f4_27_07_46_90_0d_71_36_8b_1e_8a_fe_9a_68_4c_d2n,\n 0x0a_66_d6_f9_19_f7_dc_e7_14_4e_c8_f6_6c_ec_e8_db_ed_c6_23_27_e0_40_7a_bd_c7_bd_71_06_0f_8d_5b_78n,\n 0x17_97_8e_79_a5_5c_c0_77_d4_bc_92_b3_8e_e5_d3_57_ab_4a_6c_62_14_6b_2a_84_ac_d9_af_50_95_4e_8c_a8n,\n 0x11_cb_bb_e6_6b_b4_d9_57_81_34_08_00_98_43_b2_c9_6c_d7_b0_2f_d4_b4_49_db_18_95_c8_33_a6_4a_d0_4fn,\n 0x0b_c7_84_35_29_e1_3d_be_30_42_10_92_2a_e9_51_5a_2f_81_48_ea_f5_e8_3b_d0_68_61_12_dc_64_6f_c9_3an,\n 0x23_d6_44_fa_b0_1d_80_63_61_de_66_5c_8b_c6_e9_72_d9_65_8d_29_a3_5e_96_20_8b_f5_3f_8f_b4_ca_77_0cn,\n 0x04_83_71_c6_20_0b_92_3b_1a_0a_d3_f0_08_31_0d_bc_35_0e_1e_3c_47_0d_24_d3_ad_23_eb_41_e3_d9_3b_3cn,\n 0x21_20_7b_1d_47_a4_ba_c5_2b_a3_ae_90_78_c2_65_e5_cd_3b_11_a1_26_54_7f_21_44_e5_01_c1_8a_65_6f_66n,\n 0x1a_b8_6e_da_61_a6_bc_96_06_e6_5f_45_5c_3c_48_d4_13_6b_03_d8_cd_ce_69_5e_75_0c_25_71_04_56_47_04n,\n 0x04_71_b4_1c_64_18_b6_af_ad_f0_c9_51_73_69_b0_1f_62_ba_78_d5_61_94_1c_4b_ea_a1_de_98_27_67_64_44n,\n 0x1f_67_ab_3d_71_64_6c_03_9c_e0_9e_e7_23_20_b2_ad_75_5f_fb_d7_18_7e_b4_3d_5a_e0_85_0c_92_3c_e6_fcn,\n 0x1d_78_da_55_a4_c0_c3_fd_78_ef_34_b4_31_6e_dd_d7_f3_6d_5d_8d_b6_55_1b_cd_bc_83_6b_a7_19_7d_af_f9n,\n 0x14_b3_72_57_c1_f8_85_2a_ed_44_80_36_af_e5_9b_3a_12_15_9b_89_af_a5_e2_ec_b3_50_63_aa_91_c3_b7_91n,\n 0x00_b9_04_b1_e0_68_cb_77_12_bb_63_b1_72_1d_bf_5a_df_5b_67_17_e6_b0_de_ae_ff_f1_f2_a9_88_b3_a5_a1n,\n 0x2f_c1_00_ec_b7_96_93_ae_a9_1c_61_18_b7_02_09_fb_44_5c_5f_ea_e4_f6_d1_c5_88_60_18_a0_ef_e4_a8_d0n,\n 0x0a_9d_77_bc_8f_43_02_33_b5_9f_67_37_b9_c0_19_7a_ec_e2_93_9a_3b_63_c5_ac_24_ca_d3_1b_cc_70_07_4bn,\n 0x1f_4b_dc_68_58_82_ae_11_49_af_fc_74_fa_1e_4c_a6_14_cd_94_99_d7_50_27_a6_ca_72_00_00_0a_53_9b_9cn,\n 0x0d_d1_1b_1b_ef_e2_93_11_0c_c4_f6_b5_c0_de_6f_ae_3a_67_ed_ac_4e_84_b2_38_fa_cb_8a_44_5f_b7_3f_d3n,\n 0x21_01_28_64_a4_4b_64_79_d4_4b_db_1e_2e_97_76_40_67_df_69_e0_76_d1_e1_c3_10_de_92_9b_cc_1e_bb_b5n,\n 0x14_2c_ea_93_e5_94_9c_06_c3_7d_ac_88_b6_64_ed_36_a8_bf_e1_ab_cc_b4_b3_14_5d_00_87_41_0a_5c_f8_fen,\n 0x25_d0_74_e3_1d_d0_93_d4_3f_a3_a3_a6_b5_c0_44_17_7d_43_ce_77_39_ac_b9_e5_81_8a_e8_33_9e_93_35_e3n,\n 0x15_23_68_e8_dd_72_e9_bd_3f_00_fa_47_ad_01_97_09_65_99_bb_5b_a3_f6_34_01_ae_9b_36_89_f5_af_b9_43n,\n 0x22_44_50_a6_f2_4d_d8_42_7d_8d_6f_9d_d9_85_63_03_13_ec_a5_7d_57_47_9e_c9_8e_d3_ee_be_3a_23_e5_0dn,\n 0x08_ee_8b_ed_1a_53_38_11_33_08_a3_2c_f4_b8_f0_a4_2b_9c_12_2c_b8_ea_93_7c_dc_1e_31_87_85_54_c8_1bn,\n 0x06_84_71_f7_45_75_86_70_ca_da_7f_23_01_40_e0_9a_cb_0a_cf_c2_37_cf_7f_31_e0_63_55_3b_ab_15_6d_d5n,\n 0x17_dc_ee_d9_a8_61_ad_a2_97_03_18_ff_8b_9d_c1_30_74_a1_11_3f_30_76_ed_7d_de_e6_78_45_66_2d_55_94n,\n 0x21_c9_51_b2_84_9f_51_33_6d_a1_2e_19_30_cb_b2_cd_40_7c_5c_a0_bd_f9_cf_6e_2e_e8_8a_8e_6c_f3_6e_1cn,\n 0x0a_eb_15_bd_d3_3d_09_c7_80_eb_1a_b6_84_8d_cb_c1_a1_8a_5c_6a_1f_25_0c_ee_87_cf_50_6d_46_c3_6e_36n,\n 0x03_7e_66_e0_bf_7b_7c_7f_7b_00_bb_5c_06_72_15_56_22_20_04_4c_94_bf_78_8c_40_b4_80_6f_e8_6a_08_ebn,\n 0x27_05_d2_97_db_4a_b6_93_a6_5d_4c_c7_3e_d8_0c_ea_c3_a6_e1_0d_57_12_37_01_a5_27_69_09_56_47_bb_00n,\n 0x0d_f8_21_b1_a3_87_e7_8f_8e_23_88_ca_e0_29_4e_88_d0_c2_df_f8_11_42_5a_94_0a_60_e0_28_5a_71_b3_c3n,\n 0x29_59_ff_ca_94_64_27_66_a4_6c_d8_34_0d_b0_8e_c9_ad_a9_15_d2_35_40_68_8a_d1_f2_5e_34_a9_ae_3a_fen,\n 0x0e_86_b8_65_53_06_bb_de_01_74_81_75_b5_6e_66_ca_36_41_0f_75_8e_1b_c0_24_73_e4_25_5d_88_12_0a_43n,\n 0x08_f9_4d_c1_20_76_e1_bd_39_00_70_5e_88_02_45_a6_14_9e_d3_8f_87_ba_ff_da_0a_6f_4b_14_26_4b_5f_cfn,\n 0x29_68_e4_76_2e_a9_e6_ee_50_13_d9_6b_ab_b2_50_d9_5f_30_0f_d8_0d_86_d2_2c_c0_95_de_95_14_59_05_06n,\n 0x15_56_c2_66_5a_0e_74_cc_05_6f_d4_54_a8_5a_3f_be_cb_57_a2_3a_87_9d_c1_cc_95_b9_8d_9b_c4_97_01_8en,\n 0x0c_e8_6a_48_c0_5d_42_9b_e4_80_b9_cb_cc_22_0f_3a_29_c6_ec_86_5b_ed_10_a0_78_35_c6_fe_6b_ee_34_e1n,\n 0x21_e6_b5_e9_a5_a5_c5_71_56_df_b8_cf_5a_87_85_d2_11_75_99_c2_47_af_6f_eb_57_7b_b4_4e_75_24_53_4en,\n 0x04_44_c6_55_9f_15_a5_d6_f3_78_1b_c3_92_e8_8e_8a_c5_82_e4_87_d6_0d_e1_2c_db_c3_57_c9_62_3e_4a_c4n,\n 0x17_cd_b0_83_db_21_71_c7_62_11_98_f5_1b_7d_18_91_17_ab_80_e4_aa_ab_81_76_56_34_2e_1b_0b_3d_c1_f4n,\n 0x0c_4f_cd_32_fb_bb_cf_b2_7b_e4_1a_94_92_ec_55_42_59_69_c9_14_2f_36_53_51_c7_d2_34_78_fd_68_b3_f4n,\n 0x03_7a_47_a1_8d_ea_6f_c7_65_e6_ce_6c_e7_bd_59_e3_d1_10_3a_b6_9c_bf_92_06_d1_c2_ff_4e_c0_38_95_76n,\n 0x2c_14_ba_b1_7a_78_ba_00_15_37_e3_7a_63_03_57_ab_e0_6e_cb_db_d2_af_74_24_ce_12_25_d4_a4_41_4b_5an,\n 0x10_bd_8c_fb_ac_d5_05_ff_d5_7a_2b_fa_a7_57_ad_3e_45_f6_3e_f3_7e_67_dd_54_1e_f0_7e_95_79_84_e7_f9n,\n 0x0f_2a_0b_6a_66_48_6b_55_fd_82_73_a4_53_ef_62_2f_4c_1d_4e_3d_97_5c_34_d5_38_cb_d8_44_0a_3c_e9_c8n,\n 0x29_7b_4e_b4_84_34_dc_53_42_e4_c9_a2_62_c2_00_33_14_80_a0_21_09_16_38_63_80_5b_b7_0f_c7_a9_26_14n,\n 0x22_cd_3c_c5_52_b8_31_09_54_b6_2b_62_d4_f7_a9_18_64_e6_b6_cf_79_f5_5f_24_4d_38_48_04_94_6a_77_b4n,\n 0x05_cf_49_6e_ad_c8_ea_0c_cb_36_50_2f_44_3c_99_b3_47_bf_70_23_f2_d7_fb_ce_51_2e_1c_58_04_5f_bb_2an,\n 0x1e_0a_e8_b0_82_d3_72_61_90_a6_87_8f_4b_88_89_e0_b6_29_7d_27_de_3f_18_3a_a9_a9_f2_cb_2a_bb_90_d4n,\n 0x2b_28_2f_fe_f8_9e_1c_3a_90_c3_59_bc_7c_80_13_3b_9f_63_42_15_c3_0c_1d_b8_2a_09_50_12_79_3c_7c_1bn,\n 0x13_ba_e7_e8_38_c6_38_a4_1a_99_61_ab_81_52_0f_40_8c_99_21_07_0d_9a_02_a7_fe_5b_fd_1d_a1_da_dc_4cn,\n 0x0c_dc_32_0e_ea_d7_0b_f0_db_57_96_5b_29_f9_cc_a2_88_26_f6_c4_4d_82_4f_7f_12_2e_43_0a_a4_e7_46_cdn,\n 0x1b_94_ed_89_1e_3a_73_e1_bc_d6_b7_a9_fa_33_6b_48_5a_5a_83_e5_2d_5d_b0_8b_70_4a_fd_8d_48_13_66_57n,\n 0x2e_8d_76_5a_70_fd_39_53_3f_1c_45_6d_b1_2b_42_0c_ac_0d_7b_08_6b_f1_95_96_c6_0c_d6_40_6b_07_6c_67n,\n 0x2f_69_22_0f_d9_20_9b_b4_1b_0e_f9_42_bf_eb_31_13_70_88_ff_9a_33_8e_d2_83_de_9e_c3_a8_85_0e_96_ben,\n 0x15_06_e9_fd_ec_14_a9_dc_03_eb_15_9d_01_1f_0b_ab_a6_52_db_36_4b_00_20_f3_48_5d_a4_0e_f8_07_9e_bfn,\n 0x2e_43_09_3a_06_0a_59_5d_c1_32_13_ae_72_11_c0_41_b2_9d_39_40_1d_bb_d4_e7_fc_b0_34_19_14_49_2a_08n,\n 0x17_42_6e_b0_24_15_f1_d6_82_73_53_82_45_0e_fc_76_a0_5c_6a_02_18_67_1e_c4_fa_3e_f2_d0_39_80_db_21n,\n 0x22_a8_a8_f4_75_29_43_3c_b4_71_ac_bb_ce_da_9b_6d_d4_e9_e5_71_21_74_5b_86_57_7d_a8_d1_06_17_1e_3dn,\n 0x10_d0_66_af_04_e7_70_8e_51_2a_38_23_10_bd_9a_10_cb_ad_75_1a_72_1c_66_0e_d0_f8_07_f1_69_3d_68_26n,\n 0x13_22_ca_bd_21_b8_f9_82_6d_a8_48_16_f3_59_9f_20_a3_32_4b_f4_7b_44_ab_ec_a3_d8_e6_a2_6b_f6_4c_8fn,\n 0x0e_90_33_29_8b_7f_ba_81_06_9a_d7_08_a4_01_cc_ac_a7_13_c1_22_a7_90_7b_9d_2e_ec_39_ec_1e_58_34_d3n,\n 0x27_7a_06_9d_3f_c5_70_12_49_01_2a_0f_c2_d9_6d_70_c5_8b_8f_0b_b4_5a_1d_39_32_05_1d_45_41_c9_be_8bn,\n 0x2b_6a_4d_2b_44_64_65_16_e0_51_1d_03_59_5b_94_f5_f3_1b_53_8c_84_45_56_2a_5f_78_7c_b7_91_62_38_den,\n 0x1e_9b_7e_89_7f_63_6c_28_6a_c7_59_21_81_13_5b_30_61_cf_02_de_5e_b4_c3_34_4f_2b_32_46_f1_74_59_d9n,\n 0x08_9d_55_76_bf_06_77_94_0e_c8_53_1e_33_76_16_50_a3_8e_da_e6_69_b7_3e_e5_f7_04_c0_18_31_04_58_bdn,\n 0x11_d9_1c_b6_a7_c9_1f_3a_37_78_a4_57_bf_bc_ba_97_7b_28_eb_08_b8_50_e4_72_60_db_b3_d2_05_ad_a6_3en,\n 0x07_9e_bc_33_4a_a3_77_cd_af_2b_b0_57_01_7b_77_6a_d1_50_ad_eb_27_ad_95_03_1c_1e_6d_6e_45_85_b9_a1n,\n 0x0e_ec_eb_66_fb_af_e2_55_22_12_46_7f_bd_7e_e2_c5_35_24_46_42_c8_7c_54_ef_ae_d4_3b_e1_93_44_ee_fan,\n 0x11_89_bb_18_15_75_91_e5_82_63_72_75_13_9e_ff_1f_f1_80_21_74_39_ba_bf_03_69_a7_d6_af_da_53_af_00n,\n 0x0a_10_4e_1b_c5_ae_f5_ba_33_62_77_3b_15_d1_52_a3_4b_b6_6f_ca_d5_16_90_61_e4_c7_4f_42_f8_08_2e_d4n,\n 0x12_ae_ab_c5_5f_0a_0a_73_94_84_40_72_43_2e_9f_10_95_a7_9e_2a_7b_87_65_c0_e7_f9_37_21_f5_eb_8f_ebn,\n 0x2d_5f_a7_e4_48_eb_a0_f3_f7_5b_82_d1_55_d2_bf_b4_67_c1_13_61_53_6d_61_cf_ac_1e_9e_ae_bf_9f_99_60n,\n 0x11_bc_38_2a_d6_f3_99_8a_e1_27_61_76_4e_27_3e_8e_57_de_52_44_00_89_64_dd_c1_ce_7d_88_7b_3e_a1_5dn,\n 0x2f_9d_e5_2e_11_64_d5_78_24_43_01_dc_0f_52_c0_9d_cf_b7_b1_24_99_ad_76_8a_4c_91_af_37_f1_fe_99_9fn,\n 0x24_a1_60_dd_3b_3f_19_07_1f_23_11_18_42_65_15_e7_f7_5f_d3_fd_4d_98_47_9d_85_5e_88_cc_40_f2_a1_46n,\n 0x25_62_da_b0_19_72_dc_d2_30_74_17_f8_35_6c_b0_96_e5_a5_2b_39_89_8d_77_00_c9_08_2f_e6_61_ab_5a_a7n,\n 0x0c_71_fc_85_44_d8_bf_e1_eb_57_eb_8b_19_34_48_25_f2_80_0e_77_28_87_4c_0d_4a_ee_e0_9d_37_fc_80_18n,\n 0x1c_38_ce_e7_09_ea_57_a5_43_3e_f0_5d_4f_3d_8f_e8_5d_27_59_5a_b5_f3_bd_5b_1e_81_8a_76_b1_7e_dc_8bn,\n 0x16_02_21_38_16_c6_0c_c2_00_e8_b2_ae_e5_09_da_4d_e8_95_2c_a6_f7_75_f6_95_1a_a1_76_a6_cc_78_d1_0an,\n 0x09_a0_46_c6_7b_98_02_55_4d_31_58_21_da_1c_3d_13_38_31_1a_ca_a2_91_82_22_64_55_68_5b_3a_6a_1a_04n,\n 0x0a_2a_c7_3a_3b_40_f2_e8_d9_3b_88_8e_15_ad_96_95_a0_7d_56_f0_2d_17_2f_af_dc_32_6e_99_ed_94_47_5fn,\n 0x26_49_7f_1c_b3_ed_83_f6_1c_32_79_5f_54_60_e2_32_0a_0b_05_61_17_fe_2d_48_68_bf_cb_69_1a_cc_9d_23n,\n 0x1b_1a_88_6b_95_7b_5b_7a_f3_60_83_33_c3_4d_a1_24_c6_8e_13_76_97_ee_08_2e_21_d6_e9_f5_34_ad_da_3en,\n 0x1a_1c_ec_97_b3_e6_37_63_61_0f_3f_ee_9e_5f_88_43_13_d6_6f_3f_da_19_39_85_ff_ff_a2_63_88_a8_b5_36n,\n 0x24_eb_58_65_c2_39_3f_7e_9d_6d_a7_a0_46_0f_9f_e0_a1_11_2c_41_13_70_07_f7_1f_fc_53_e9_0f_d2_cd_5en,\n 0x05_ad_73_9f_4a_e7_38_5d_18_ae_96_19_90_fd_b8_ed_3e_80_8d_e0_10_8c_ae_74_3d_79_95_a2_32_39_bf_edn,\n 0x20_ea_4d_f6_43_c3_1b_3a_ec_0c_8c_2c_b4_44_ff_ec_0f_23_51_84_18_27_a8_21_03_a3_6f_ef_81_c2_b5_a3n,\n 0x07_e4_26_d7_cf_b8_d0_ed_8f_15_0d_76_e1_1c_42_bd_7d_0d_0b_e8_68_f7_cc_80_74_0d_14_d6_b6_d9_85_e3n,\n 0x0c_28_41_70_13_9a_3d_32_fe_b8_93_e2_e3_93_be_22_fc_57_12_b4_b1_34_e1_17_c9_cb_f9_1c_06_c7_a1_56n,\n 0x19_8e_89_2e_0b_6e_96_94_27_79_fc_23_ac_86_ed_3e_af_5c_68_c7_9f_8f_88_13_38_dd_fb_38_1b_ca_b3_ecn,\n 0x04_f7_27_4b_4c_46_0c_c0_d5_d7_8d_63_91_70_0a_b7_06_b1_88_d6_a4_cb_cb_dc_c6_ca_63_1c_61_7a_41_46n,\n 0x25_7a_20_7c_9a_f0_17_f5_0c_24_c8_28_6e_99_a0_06_f5_a9_a0_66_99_7f_ea_4d_63_cb_c4_47_9d_15_3c_fen,\n 0x2f_91_95_e8_77_92_ce_de_31_f8_27_dd_40_81_60_69_7c_17_4a_84_a9_cd_d0_7c_d6_9b_44_43_a4_5f_0c_81n,\n 0x02_c3_24_57_f1_c8_a4_81_08_f1_c1_64_91_e8_da_1e_74_ae_1f_b5_98_64_2a_ce_bb_76_d0_21_0d_0a_f7_dfn,\n 0x0d_16_06_2e_a9_a5_b5_18_4a_e0_22_c5_68_e8_87_e2_fd_31_c2_d2_f1_32_0a_cd_91_5b_84_df_1c_d7_7c_3dn,\n 0x27_38_21_b5_9f_c2_3f_58_5f_42_3e_16_c5_d9_57_1e_78_b4_28_e4_46_ad_aa_e7_89_c1_59_86_6c_15_a9_aan,\n 0x28_d5_81_38_ca_8e_1e_1f_41_01_46_ec_84_01_79_6f_7c_ab_f4_9d_41_e5_9f_4b_8a_e9_42_dc_6f_e0_ac_32n,\n 0x0c_bb_ab_4a_22_96_3e_d5_01_50_ae_37_e8_ae_9c_c1_39_35_5f_83_de_4f_38_f0_11_79_73_56_33_ae_3f_85n,\n 0x2f_29_b8_39_fb_57_59_27_2d_15_19_a1_7d_f0_33_10_eb_9a_fa_b1_25_40_69_3b_78_1c_93_97_c0_da_48_9cn,\n 0x21_25_05_f1_db_73_ad_ad_fd_ea_63_53_b3_8b_85_74_fd_52_de_8a_b3_cb_e3_31_0f_52_62_a9_49_6a_57_5en,\n 0x05_11_71_7e_d1_04_19_8d_0b_67_38_7b_57_6b_02_0b_6b_64_5d_94_f2_05_f7_00_5e_bb_04_16_1e_a0_95_9cn,\n 0x2c_d1_7a_3f_df_f1_b2_ee_15_3b_65_55_4f_c0_6a_4e_da_b7_cb_2d_87_0c_1c_da_c0_e9_65_1c_21_59_3d_80n,\n 0x24_21_ec_ed_65_e4_0f_5b_d7_b7_ce_14_7a_b0_84_58_88_85_3c_e9_d9_e9_02_42_ef_0e_cb_e4_df_94_f4_a9n,\n 0x2b_7b_b1_c1_3a_60_5e_06_22_62_71_b1_56_7d_80_70_57_6b_71_fb_cf_be_0e_8a_0c_e6_ed_9a_60_be_4b_60n,\n 0x20_de_93_b0_9b_10_f6_f4_0d_29_60_f3_ae_7f_70_3d_4a_ff_7d_4e_2a_30_94_81_63_56_93_fc_1e_7b_57_cbn,\n 0x15_f3_9d_a6_94_7d_07_00_03_60_90_11_1b_94_63_cd_32_27_12_f5_fc_0d_b3_8a_80_98_ab_d4_d3_fd_ed_43n,\n 0x05_5a_10_c5_b2_e1_c3_d3_ac_97_85_3d_37_ac_c7_ac_32_01_c3_f6_9b_a7_70_c9_07_36_e5_99_10_29_94_86n,\n 0x0f_86_f8_58_57_f2_f3_bf_a5_fa_40_76_78_35_9c_5e_4b_d7_f6_8e_4f_8e_4a_f2_23_14_df_5e_a1_70_cb_05n,\n 0x2d_57_68_0d_ee_10_4e_b6_88_7c_77_34_5e_ca_7a_8c_13_10_22_a4_47_1f_88_c5_4d_4d_b9_bf_7a_18_f4_75n,\n 0x01_d2_5e_71_70_e6_b9_2b_2b_bc_ef_ed_98_f7_cc_f9_4c_20_b9_7a_54_64_08_d9_62_e4_8f_6a_df_de_ed_55n,\n 0x11_dd_e8_98_03_4d_f5_d0_a5_0a_10_67_fe_3a_5b_6e_9d_54_6b_42_68_04_3f_59_98_be_fc_a9_80_27_1e_07n,\n 0x0d_96_e4_51_da_1d_53_51_d3_84_86_43_cd_82_ac_82_a9_1d_29_7d_ba_61_0e_19_69_92_d0_80_45_ef_c5_65n,\n 0x1e_c5_0e_2f_05_af_8b_d1_69_55_61_2b_7d_d0_a2_2a_e0_46_db_69_2a_34_0f_0b_81_4b_47_2c_eb_ef_c7_f9n,\n 0x12_e7_a5_65_e6_45_e1_85_f7_c9_e0_0f_06_ad_e7_17_36_d9_90_05_2e_72_c9_75_40_d7_93_91_22_4c_82_a5n,\n 0x27_7d_5e_bf_33_d1_47_50_ce_c8_a5_df_48_4f_cd_b3_92_db_79_81_55_9a_a3_50_e2_ba_70_b3_56_56_32_aen,\n 0x22_7a_8c_5c_6b_1f_1a_25_9d_5f_ce_b5_7d_7d_c8_34_25_73_17_a8_c1_b9_42_09_c3_fb_86_fd_94_84_6a_89n,\n 0x2b_cc_41_4a_72_0c_85_a4_2f_6e_d1_4b_f7_d1_e2_ca_7d_3a_a5_f7_d6_1c_4f_f5_d1_bd_1e_ed_ce_c0_9f_7fn,\n 0x1f_78_64_a7_29_e7_0f_77_cc_1b_5c_d8_6c_19_3c_ba_a9_41_00_70_86_3d_5d_a3_77_42_d6_65_e2_de_31_88n,\n 0x2a_dd_53_3a_1c_14_b4_ad_2a_4e_cd_78_03_97_39_1a_c9_d9_ac_80_68_58_4c_3a_e6_9f_56_a9_e4_d7_2e_ben,\n 0x16_19_8d_95_81_40_53_34_a1_3e_10_9b_04_d9_d1_f5_63_8a_7d_f2_78_30_0e_56_05_95_08_f6_ef_65_46_0dn,\n 0x0a_06_0a_25_99_eb_69_6b_43_d2_75_c4_3e_ab_0b_3b_04_b4_61_cc_4c_43_6c_fe_8b_17_48_d6_5d_14_33_79n,\n 0x30_2e_7b_6c_0a_bb_f4_f4_4b_1d_79_97_91_ae_0c_c8_57_00_7b_28_a3_74_87_98_96_5c_b4_b2_81_82_2b_3an,\n 0x2b_89_71_54_7f_f1_72_81_a9_39_43_dd_ec_b4_89_f6_c0_91_e9_6c_e5_05_b7_ba_30_c1_48_e0_36_b3_09_63n,\n 0x21_f6_7c_40_67_80_57_8d_1e_13_c0_01_eb_36_a4_dc_2b_56_24_dc_3f_12_b3_e4_a6_a0_25_70_b3_e8_4c_d8n,\n 0x0c_ae_b5_04_1b_85_32_a7_23_d9_c6_8a_99_0c_08_39_09_ab_94_da_86_5e_67_31_20_f4_88_46_ac_77_bf_b6n,\n 0x0d_57_6a_5d_da_c6_93_99_f0_6f_d5_e2_47_41_7d_db_73_fb_47_b5_33_40_0b_c7_9a_35_e1_8f_0a_51_ad_86n,\n 0x06_dc_c4_d2_0d_a7_20_4e_7e_8a_cb_74_04_b6_b7_19_cd_15_36_af_36_16_e9_94_88_7b_03_31_25_61_4d_53n,\n 0x0d_0a_e8_0d_2c_03_d2_7e_f6_d6_ac_6e_dd_57_fa_af_b8_8a_db_18_cb_43_cb_3a_34_05_2c_92_a8_a0_d6_b5n,\n 0x02_21_7b_24_cd_9e_57_3c_8f_cb_a4_6d_30_46_d8_30_cc_fd_be_8f_69_e4_3e_ee_31_56_64_c4_65_fb_6b_5an,\n 0x1b_03_7d_46_57_b2_b3_c4_13_6f_f8_3f_2d_e7_46_a1_f3_14_dc_a3_3e_e2_b9_2a_80_66_36_e8_50_96_94_cdn,\n 0x2b_e7_d8_52_66_89_2f_a4_d4_97_62_ce_64_ef_84_57_5f_a3_bb_62_12_df_99_4b_a9_fb_d4_e2_c3_59_1f_45n,\n 0x2c_2e_c6_8b_3f_db_e4_b1_0c_a3_4a_d1_f1_c9_ee_52_96_e4_e4_18_13_2b_fd_82_fc_ba_f4_37_21_0d_d4_17n,\n 0x03_56_ae_0e_e7_78_d4_27_d6_a8_45_45_bf_24_1a_68_4f_d5_62_de_a9_2c_d3_0b_0b_75_bd_9a_78_80_fc_f6n,\n 0x0e_a6_7b_cd_02_a9_35_ed_56_31_19_4f_06_96_84_34_fc_98_22_df_79_1f_f6_f6_ad_6c_40_2a_0b_ea_f1_84n,\n 0x18_8b_ba_46_74_c2_e1_a2_b8_d1_f1_db_4c_2b_3d_e7_ac_2f_57_2e_98_48_04_ac_d5_79_f3_c2_2e_0e_4c_e8n,\n 0x0d_82_1e_60_50_46_e0_b7_ef_c6_27_e1_f2_dd_84_17_7a_66_e6_29_74_bb_7b_d3_ca_79_e1_42_f7_07_42_efn,\n 0x19_bb_b4_40_64_da_c9_33_d1_07_4e_be_ab_99_17_90_c6_37_a4_a3_4c_33_d1_c9_ca_0e_cc_95_59_80_86_59n,\n 0x0b_3f_35_1b_3b_cc_d9_6b_bc_a3_45_3b_ab_6d_10_bf_25_23_80_a1_e3_b3_ac_28_67_b2_14_d0_63_b0_2d_4dn,\n 0x1f_65_78_38_a4_dd_f2_b0_63_99_61_c9_26_19_ee_af_65_60_24_3c_01_15_15_25_87_fa_3b_63_3b_c7_b1_4cn,\n 0x17_39_66_b0_32_36_c9_21_b1_b6_e4_e4_e7_7f_ba_43_90_3f_2b_68_bf_83_ff_d2_b0_0b_29_74_cc_4f_4c_24n,\n 0x25_5a_df_cc_f4_da_cf_d9_43_39_3f_d9_08_22_fb_3e_92_29_2b_15_0a_e2_20_5f_9e_e3_b6_83_7c_68_7c_94n,\n 0x2a_d9_b6_47_fa_2c_5d_97_d6_41_1a_56_84_ef_18_31_2c_ed_f6_f6_9f_de_f8_f6_8a_fe_43_44_42_48_7a_2an,\n 0x26_c8_15_af_9b_ae_ad_f0_98_c8_be_65_a9_b6_69_36_d8_8a_90_f4_7c_87_8e_46_d5_5a_a4_1f_b2_3a_00_f8n,\n 0x21_53_00_31_6d_98_fb_3b_c2_20_cd_37_9c_bc_f4_b5_41_33_e6_13_ba_42_fa_8b_48_98_46_67_ef_ae_10_53n,\n 0x05_1a_c2_e0_37_a8_cb_84_44_97_38_04_0c_b5_d9_2b_ec_1e_bf_64_e1_a6_51_38_c7_f2_d8_62_aa_fb_bb_ean,\n 0x1b_0c_fa_4c_9f_7b_4a_ec_9c_6a_70_9a_10_6d_17_7f_ad_8f_fc_6a_c3_64_91_4a_ab_f3_36_27_d1_de_6a_32n,\n 0x00_84_f5_b8_0c_d3_80_6b_fd_40_f7_d1_88_bd_e0_f5_52_6d_ec_4a_77_bc_a0_44_9f_11_01_f0_0a_ad_4a_4dn,\n 0x2f_d6_80_3e_51_6e_87_37_c4_5b_f2_f4_07_36_83_1e_be_d2_b6_e7_e7_e6_43_e0_d4_c6_7b_5e_51_09_9d_17n,\n 0x0b_17_f7_32_c6_d9_38_ac_7e_85_bc_cf_9a_8d_d4_01_27_2d_7d_6d_62_3a_8e_59_ec_3e_a6_7e_2a_aa_52_6cn,\n 0x01_b3_fb_88_f6_ca_b8_0f_3a_f9_74_dd_49_6c_9f_a5_f9_05_da_9a_07_90_17_bc_52_99_08_0e_1d_5d_4f_64n,\n 0x23_19_f5_72_79_98_1d_0a_12_b0_6f_2f_75_41_82_6a_ff_c4_e5_1a_44_e1_99_0f_b3_01_5d_df_9a_18_37_15n,\n 0x2f_4d_c2_89_b5_e7_f2_3a_37_0b_0f_61_05_3b_d8_2f_e4_cb_fc_7d_1d_11_d1_3f_28_9e_fb_a3_a3_c5_41_21n,\n 0x1b_67_9b_73_4e_ab_be_6f_8c_42_ad_18_da_b5_4d_e0_81_c8_9d_68_c7_08_a8_1f_8f_e6_14_38_90_4c_2a_b6n,\n 0x0a_34_53_c0_88_42_ef_30_80_b3_af_74_ee_8e_79_9b_fa_23_67_90_cf_da_00_23_b5_88_ec_a4_66_f1_92_16n,\n 0x11_c8_9d_2f_54_98_a7_88_41_6d_00_42_ce_fa_0d_54_42_db_e5_5f_21_22_60_95_04_51_68_13_93_44_f0_a2n,\n 0x0b_3f_2c_98_ca_30_61_f6_27_21_37_60_50_6f_e7_6f_fd_d8_8e_e7_55_64_37_88_83_7c_18_db_ff_b6_8c_e1n,\n 0x25_75_c7_1f_b8_ac_ab_c5_cb_51_3b_f6_6d_bd_4a_49_46_f4_e2_1a_7b_2f_1a_40_62_97_2a_08_42_5a_03_b4n,\n 0x1d_ec_09_44_df_dd_c9_cf_fb_b5_5c_19_02_f8_45_72_5c_b9_2e_09_54_57_49_de_3f_1a_11_8d_41_80_15_60n,\n 0x25_32_b9_6a_8b_50_82_8c_c6_19_dd_ce_80_a2_e9_93_0d_d8_de_c6_58_8f_52_ed_5c_3e_19_80_ee_03_06_42n,\n 0x00_eb_3e_07_2e_9f_c2_be_a9_ae_a0_3c_f4_5e_b4_81_c4_e6_bd_67_09_1f_59_ff_a1_f4_60_2f_c3_99_f2_1bn,\n 0x28_a6_e7_46_6d_ab_1f_49_3b_fc_a1_99_1b_fb_88_6c_2e_f9_20_77_0a_cc_ab_ec_48_6b_96_42_26_98_61_2cn,\n 0x18_b7_2a_d6_c3_72_bb_8b_3b_52_ce_b5_c6_5e_9d_78_c0_48_14_e3_71_3b_aa_81_32_3f_2a_19_56_95_7b_8fn,\n 0x2f_a9_8e_48_79_4f_dd_4c_db_a8_e1_1d_0c_de_18_ce_5b_2c_c9_d0_db_7f_65_aa_1b_6c_86_09_91_8b_2c_63n,\n 0x02_2d_6d_05_ab_ba_b4_03_b1_32_7e_dc_e3_30_24_fc_91_83_aa_51_4f_69_d1_67_2d_49_dd_bf_c9_e0_63_f7n,\n 0x22_ce_0a_23_87_a2_23_22_8a_0a_86_b9_42_f1_35_a5_9d_6b_be_e9_f1_b9_6d_3f_b3_a1_51_02_3a_67_fb_73n,\n 0x0a_55_9e_75_1d_fe_14_15_e4_0d_02_27_d7_b3_dd_1f_18_8d_99_d9_35_59_6d_3d_ec_2c_03_3d_e5_a2_2d_2fn,\n 0x13_20_23_60_f1_25_ca_22_c2_81_a1_8e_21_a7_ac_10_b1_96_15_32_36_f8_6c_59_68_b3_1a_b5_0c_28_20_56n,\n 0x1e_85_ba_a3_76_98_50_15_ba_63_c3_a3_8e_78_17_ab_0a_39_cd_28_e2_37_23_3f_4c_1b_e3_56_32_fc_72_d4n,\n 0x24_50_b1_98_b0_45_e4_f0_cd_54_0b_0b_74_de_5c_a5_6d_85_da_5f_e5_98_16_af_30_80_6d_d2_e0_36_c5_ccn,\n 0x1b_f0_47_95_a7_97_95_33_88_6f_7f_b4_7d_5a_0b_7e_dd_2e_dc_c1_09_12_55_aa_cb_96_ef_aa_c6_71_2b_6en,\n 0x0f_12_6e_d9_49_0b_69_93_5b_e9_71_10_c4_76_11_8d_00_c8_b0_7c_58_6b_a0_4c_f8_1a_e6_99_60_7e_62_efn,\n 0x08_7e_d4_75_20_46_c2_25_99_47_32_51_c5_3f_69_b8_17_b0_8a_90_f4_31_41_7d_9b_ce_87_ce_4f_d2_bc_0an,\n 0x00_15_18_50_30_c1_2d_8c_ca_42_f2_08_72_de_69_99_89_90_1e_25_56_98_63_a4_b5_b3_fa_26_82_db_f9_ccn,\n 0x1b_42_4b_95_46_d8_7e_e6_ca_28_fb_81_97_a2_18_6b_6e_00_15_56_b0_8e_19_00_22_98_e0_5f_16_64_dc_84n,\n 0x21_4b_a2_3a_67_a2_22_ae_9e_33_b4_61_5a_31_e7_b0_9f_a9_11_e1_88_80_bc_37_9d_fd_20_ed_11_77_eb_2en,\n 0x18_6e_0e_dc_09_6c_62_53_b1_79_10_2a_7c_9e_e1_49_6d_db_60_60_c9_93_fa_9e_83_61_6a_7d_aa_6c_22_43n,\n 0x15_1b_c9_53_4e_c5_f3_6c_ba_cd_d7_bd_f6_17_6a_60_c9_bb_7b_6c_fb_26_85_9c_7b_cc_0d_1f_7b_c4_dd_0fn,\n 0x28_19_2f_62_ad_97_32_3e_6c_ad_fc_bb_9a_99_f5_ba_da_68_ad_dd_ba_c3_a4_dd_c1_8e_69_b9_52_39_b1_66n,\n 0x08_25_b1_23_2e_68_31_67_8f_69_1e_7e_1e_b2_78_88_43_9e_12_e7_ba_ff_84_db_3d_18_b7_bd_45_17_2b_18n,\n 0x09_9e_93_50_0b_62_b1_01_27_60_90_71_e7_5f_4c_54_ca_d7_87_32_b4_85_96_d1_6b_44_ea_e4_59_a5_9f_c7n,\n 0x0d_d5_cd_3a_64_73_1f_80_3d_a7_87_30_57_eb_0a_49_a2_ac_15_bd_70_57_48_5b_43_d4_73_40_a2_02_ab_ban,\n 0x1d_4c_f1_62_65_10_67_f8_2f_c2_12_4f_6d_67_4d_ae_f0_3a_dc_3d_a7_58_22_be_d2_b0_d8_b6_90_b6_a3_4an,\n 0x23_a8_6b_44_0d_5e_fb_b0_a2_6a_76_a9_99_3b_6e_c0_1c_33_b4_69_24_c3_f6_01_ed_79_a8_7f_9c_46_40_68n,\n 0x2c_98_33_02_ac_40_a2_6c_bb_32_3e_ca_86_8e_9a_75_7e_2a_66_05_3b_b0_81_bc_a5_5f_55_63_51_68_88_4en,\n 0x06_e9_8d_3b_af_bd_b4_2d_bd_2e_a2_fc_b9_69_82_73_98_0b_d1_c8_08_f1_f7_de_79_96_32_a9_0f_f0_9b_36n,\n 0x0f_2e_bb_91_19_22_76_ca_75_21_08_4c_ff_7a_02_5f_e5_3e_14_eb_88_49_89_38_1d_79_c0_6f_9f_a9_08_4an,\n 0x0b_67_88_5a_d9_df_da_c5_f5_36_9f_6e_31_81_bc_c7_90_81_98_1e_b6_17_7d_b2_7e_5d_6f_6d_85_1d_50_21n,\n 0x1c_32_e2_10_95_be_b7_91_e1_bc_78_50_43_bb_33_cd_94_78_4b_62_31_ff_8f_85_a9_ed_ff_92_f9_1b_e4_b8n,\n 0x12_18_18_df_a7_6d_98_58_9c_32_74_fe_2d_70_2d_a8_3a_d8_8c_ed_9d_f4_49_62_65_06_be_1e_ee_f8_32_64n,\n 0x28_32_ac_9b_b2_0b_57_ec_c9_69_ba_4f_f5_c7_13_c4_06_22_fa_6b_4e_be_d0_66_c6_55_be_21_da_02_41_0an,\n 0x09_17_18_0f_bd_7a_19_81_6e_8f_c3_a4_5f_d4_3b_43_5b_ac_6b_2d_e1_9f_51_6b_37_64_1a_6b_1c_42_34_34n,\n 0x1b_d8_5f_4c_4b_11_ae_71_5f_45_a1_7b_a2_1d_db_dc_7d_1c_3b_a6_80_fb_97_8a_1b_2a_c3_25_be_d4_11_a7n,\n 0x0d_0f_2a_86_fb_0d_48_de_a8_80_49_d2_bc_b6_67_03_0a_29_d7_21_e4_c1_77_6d_42_d7_83_bb_cf_d2_2a_f1n,\n 0x04_60_af_88_f6_d1_1a_fb_5d_19_1e_48_87_12_fd_79_cb_96_11_68_44_49_1b_42_77_ac_0b_5e_f1_9b_44_32n,\n 0x0b_c1_78_3c_36_ac_ca_dd_4f_ba_3d_63_4e_9f_72_c5_e9_02_5f_77_84_bd_3e_fb_8d_c7_20_96_e2_c5_60_32n,\n 0x0e_ef_b8_78_f6_eb_15_89_d7_a6_87_e9_48_13_d9_d8_42_3f_a5_0d_b3_4d_e8_d5_eb_aa_c1_30_2e_6f_45_d6n,\n 0x01_ac_40_31_96_50_1f_00_54_fa_8d_4b_56_6c_ff_db_7f_81_f4_29_53_8d_b9_b4_08_a3_dc_20_b9_2c_11_d5n,\n 0x1d_5b_dd_e7_d6_4a_63_ba_cc_25_85_b8_a1_40_82_d8_d3_5f_3b_a8_c1_e8_57_df_1f_72_9c_52_e6_a7_e5_dcn,\n 0x07_99_df_af_f2_e7_d6_30_41_4a_7d_db_0f_de_ea_10_3e_1b_c3_ce_af_3c_cc_e0_77_c8_73_38_69_e5_2b_75n,\n 0x0f_e0_f8_16_ef_d7_4a_7e_ba_5c_8d_d5_e7_a8_94_38_89_96_24_92_f1_43_53_e1_af_c7_8e_fa_c5_0e_d9_6en,\n 0x07_25_61_c6_7a_d2_fc_07_93_82_1b_50_51_8d_4b_5d_8a_c3_3a_f2_6d_a6_d2_ce_77_ce_bf_80_29_2b_d2_7en,\n 0x28_91_35_2a_c6_0f_fb_09_e9_c8_86_60_b8_44_9d_ef_99_86_f9_46_3f_5a_81_c6_15_a7_cb_9f_4b_e0_72_4bn,\n 0x20_6e_9e_fc_c4_6c_ae_2c_fc_7e_86_6c_ad_a0_a4_c7_2c_29_f2_35_f0_44_d5_6c_82_44_a9_2e_88_2f_46_4bn,\n 0x2e_7c_44_93_e7_70_05_f4_94_07_f2_d5_cb_46_cd_d6_d0_4f_22_a0_61_ac_8f_ca_e0_4d_2d_93_d7_c8_df_d2n,\n 0x0b_9e_94_4d_5b_ac_d8_89_be_ef_59_09_a1_39_f5_e7_b7_f2_3a_1c_e7_a1_e5_5a_6c_4b_9c_38_2a_51_15_24n,\n 0x26_35_b8_47_11_26_52_34_48_d0_b1_bc_e5_d8_f5_4f_f5_bc_98_8a_0a_6f_e5_3d_ca_72_13_04_f8_f6_22_cbn,\n 0x10_df_73_bf_dd_ab_99_4c_dc_07_92_16_cb_58_5e_a8_53_0c_13_da_58_d6_38_1a_e0_c5_17_f2_dd_c8_8e_02n,\n 0x2d_a5_4f_7a_7b_fd_78_f4_0c_98_e6_ec_ad_b6_65_f2_64_4b_0a_95_39_b2_77_65_df_23_eb_a2_41_ff_fd_7an,\n 0x19_ce_35_c6_a1_04_ee_39_75_d4_a9_49_08_f5_b1_e0_44_4d_77_09_bd_a7_c5_fc_59_a5_27_cb_2c_16_65_09n,\n 0x1a_47_db_bd_e2_d5_00_4a_1b_e0_ed_7c_21_f5_7a_38_8a_1c_86_f8_b4_66_6d_4d_11_8e_e9_9a_bc_11_5a_3dn,\n 0x2f_03_7e_73_c7_88_8c_ef_9d_70_46_e5_8d_99_88_83_7b_e8_fa_ca_34_c5_8b_c5_0f_02_1e_87_34_c5_39_9fn,\n 0x27_ab_72_71_98_d9_b7_a6_2e_0d_99_b2_d1_11_27_10_10_24_64_c3_f5_fa_8d_ef_f2_76_2a_f8_a8_69_9e_7cn,\n 0x30_11_76_35_9b_e9_b6_65_ab_c8_dd_a6_78_3d_3b_d7_73_0c_4b_49_36_a1_bd_83_cc_55_74_c6_94_08_06_68n,\n 0x03_0e_87_20_4c_ce_40_3e_e4_e9_2e_05_07_e8_e9_9c_ae_30_95_99_dc_e1_89_29_a9_43_01_00_fc_5c_08_69n,\n 0x21_8e_86_53_76_16_94_cf_49_a1_f3_e2_75_ec_e2_88_66_a6_e9_96_3c_3e_e6_ee_a4_6c_2b_19_36_88_d3_b1n,\n 0x2b_21_96_87_a4_54_9e_b1_7e_29_db_9f_cc_b5_79_6a_11_dd_b6_fb_27_1b_5a_54_79_46_f0_de_32_69_8a_36n,\n 0x22_1e_78_49_39_d2_9e_b5_44_2f_d1_61_2b_30_a5_8b_9e_55_5a_39_8b_ae_96_d6_a2_d6_d9_a6_16_ec_e0_abn,\n 0x08_0f_bd_b9_bc_4b_4e_8a_83_b2_ad_89_38_3b_25_52_6e_33_06_78_c0_57_f7_c3_49_93_f2_7e_ed_2e_14_c4n,\n 0x16_01_e6_57_a2_2b_8a_28_0d_44_52_d5_27_be_cc_fd_b9_d8_c3_ed_fc_b7_bd_03_72_d0_df_43_e9_3e_91_23n,\n 0x06_52_d1_d8_78_da_d9_d7_f8_54_e4_80_66_53_1f_ff_d4_77_3e_8a_5c_61_30_1f_58_16_51_b5_0e_35_97_51n,\n 0x10_db_88_16_88_e3_db_58_bb_60_8e_c9_93_d3_6e_c8_53_1a_d3_ab_58_0e_65_d5_37_f4_f3_7e_4d_a2_60_27n,\n 0x1d_8a_06_b5_19_27_f0_37_92_50_e7_35_9f_9d_ab_93_aa_9c_cf_af_76_4d_d7_0a_cc_ce_c7_17_7a_4c_70_37n,\n 0x19_cb_c2_ea_50_b7_bf_bf_00_9f_70_9d_15_9a_a9_ef_2a_2c_0f_68_a5_cb_ad_1f_5e_1c_99_ea_2c_a2_62_3fn,\n 0x1a_52_79_e3_88_83_b5_3f_31_3f_86_ae_7e_bb_07_d7_bb_0c_d6_58_be_59_0a_a3_ac_3b_41_34_15_fe_3e_8en,\n 0x1a_f1_36_d5_3c_df_67_6c_28_41_00_70_5d_04_a9_76_64_52_34_f4_39_71_40_fd_85_a2_d8_8a_48_4e_ab_0bn,\n 0x0d_b8_af_76_4e_ef_50_bb_1d_dc_cf_e0_58_3f_f7_30_08_8f_3e_9c_2c_55_52_78_a3_c9_a7_37_6a_89_32_32n,\n 0x16_13_c1_4b_c8_6f_95_e2_5e_05_f8_ec_72_c8_ff_6a_a2_07_bd_ba_a3_3f_91_28_08_ac_69_3f_13_7d_5d_51n,\n 0x0f_c4_7e_f9_2f_10_f7_9d_33_65_50_ab_3e_0a_75_45_c7_4d_2d_3e_2b_9f_97_bc_c4_3e_47_83_d1_d9_8c_f9n,\n 0x0f_2c_bf_40_b3_44_70_7c_ce_10_1e_77_97_d1_37_a9_e8_b0_11_79_7c_66_fe_6f_b0_47_4d_2b_71_12_41_dbn,\n 0x2e_fd_57_77_f8_ca_22_67_88_39_ac_60_c1_a3_08_70_30_94_a9_d2_be_44_13_c8_17_c7_51_dc_f5_6d_8e_1cn,\n 0x2a_b4_e3_41_37_95_ad_9a_69_5b_04_69_5d_b3_1b_6b_0a_d0_be_d9_1b_fc_33_73_92_65_bb_dc_28_05_b1_80n,\n 0x2e_3b_6d_85_84_e4_26_66_82_9c_0e_19_55_71_c5_0d_7f_a7_bf_ac_ec_12_ba_d7_af_a2_42_74_4e_00_c0_39n,\n 0x18_33_f1_51_de_5b_d8_6c_a6_8d_26_4d_5d_e5_d3_53_b8_12_8a_96_e3_81_3e_d2_cd_00_e3_22_dc_91_c8_d6n,\n 0x0e_a8_2c_25_2d_8d_55_49_9a_d6_3c_61_c4_74_19_c8_e8_e4_23_25_77_32_f9_f6_86_f6_b1_06_d7_da_f0_ean,\n 0x09_85_78_74_42_26_93_70_5a_7c_98_06_34_0c_6d_a0_77_7f_45_71_e9_21_74_d5_f8_2c_07_b9_1f_2c_85_ben,\n 0x27_72_ac_79_28_af_0a_79_93_1f_88_a8_7e_63_4d_d6_1f_ac_cc_f6_10_cb_94_77_24_e7_a2_11_0d_50_14_49n,\n 0x2e_62_23_9b_79_05_30_75_6c_a3_29_c6_3e_6f_43_38_e2_63_1e_f4_e2_cc_67_e8_04_6f_e2_e8_86_f6_76_9an,\n 0x02_65_be_f6_b9_2c_d9_62_29_86_21_e2_60_9c_90_16_2d_d5_87_f8_81_39_bc_60_d7_4b_f3_63_c6_71_26_28n,\n 0x24_48_4c_0c_29_13_79_91_7d_2f_d8_b4_84_39_fb_3d_70_b0_5b_15_5e_8b_cf_33_0a_56_b5_02_7c_fd_bc_30n,\n 0x2b_2d_44_9a_3a_b5_5a_b7_ee_77_d3_77_59_db_58_ad_bc_91_d0_d5_09_36_53_8c_fb_01_73_36_0a_2b_d8_cfn,\n 0x23_66_3d_19_56_fc_f1_a7_23_08_58_25_cc_67_ca_c8_2d_3e_bb_fd_01_34_f8_61_ab_55_29_e2_a4_c7_de_57n,\n 0x28_fc_ae_c0_fb_6c_f4_3a_57_32_61_d1_0e_d3_2c_1d_bb_4b_99_75_64_3f_ad_e0_05_32_c1_bd_1e_a0_e4_11n,\n 0x01_45_c6_e2_41_81_85_a9_eb_c7_2c_d8_dd_0f_53_dc_53_78_51_eb_5a_42_ed_dc_04_ca_a5_2c_b3_ae_8a_bdn,\n 0x16_73_76_a0_42_09_9e_fa_e1_cd_89_88_e0_2c_66_e8_cf_da_37_8f_aa_64_e8_56_26_bf_e4_63_6f_3c_58_0an,\n 0x0c_b7_35_de_0e_61_2a_61_57_59_52_8e_b2_78_b1_b3_41_07_c4_a8_df_58_ea_67_4e_e7_fb_71_9d_0d_ab_99n,\n 0x2d_67_ba_c6_61_6c_c0_46_4d_4f_e9_07_e5_f6_8f_0e_ce_d0_70_b8_81_1b_e7_29_05_bf_77_58_f3_eb_e8_84n,\n 0x00_db_d2_a2_f8_d7_fb_f3_ac_40_3b_11_15_52_31_12_b7_f0_10_a0_ad_f6_ca_58_4d_7a_e0_3f_94_7d_21_6bn,\n 0x11_a9_92_d7_e8_20_57_57_ae_36_bb_ab_b5_44_e8_43_b0_10_fd_dc_7b_d5_ab_aa_82_df_dd_ca_b3_f8_5c_7an,\n 0x23_0d_34_34_12_46_fb_71_5b_78_47_97_e9_dd_8b_b7_30_7a_4c_46_e2_f4_47_0d_2c_31_93_40_fd_be_00_25n,\n 0x09_fe_ef_fc_21_8a_af_a6_14_e8_fb_7d_c4_ec_78_6e_d2_51_50_ec_1d_35_07_b3_a7_17_0b_92_66_ff_69_41n,\n 0x12_08_ff_94_f1_22_3b_d2_49_da_a4_e3_a0_26_6e_07_97_31_f7_c3_f9_98_b7_fa_70_7d_d9_fe_53_83_3f_82n,\n 0x26_0c_a3_cc_82_0f_87_39_63_cd_26_df_1b_8f_fe_c4_cf_34_9f_ab_e1_6e_81_f2_f9_73_66_34_66_80_2d_a9n,\n 0x12_65_5e_2c_98_ad_35_ec_44_4a_13_4e_55_cf_68_dc_de_68_f1_4a_7b_73_4b_38_34_72_53_08_60_9b_c8_54n,\n 0x29_00_97_f2_c0_47_a3_dd_66_00_b7_06_37_7d_0e_1c_46_14_5f_3a_9e_9e_0b_a6_d7_cc_da_f7_b7_e0_5e_f9n,\n 0x02_c6_2e_5b_d6_53_81_e0_97_24_14_ce_00_90_a9_6c_22_b0_55_5b_f7_ef_8b_2a_ea_e1_b9_84_80_8d_4f_81n,\n 0x23_3c_64_23_08_db_f7_83_70_14_20_78_8b_19_15_3d_cf_08_8a_63_e8_da_76_5c_51_82_64_94_24_92_6f_bbn,\n 0x2b_73_28_e3_68_ed_4b_7a_62_fe_db_9c_bf_50_10_45_57_b6_c3_d9_be_5d_0c_27_45_bc_c7_64_76_f8_ce_50n,\n 0x17_38_ea_94_cd_43_31_c7_b6_09_f4_2f_27_c4_dd_57_d8_db_78_b7_0a_95_da_0c_23_94_c4_ef_18_99_28_55n,\n 0x2e_90_2d_18_2a_1f_e1_f3_d4_0d_a2_8c_35_8c_7e_89_07_6d_2d_da_de_f8_0e_31_b9_89_5e_ed_02_ca_21_b8n,\n 0x16_83_ff_7e_84_a5_a4_f1_da_cb_20_6f_c4_4f_c9_21_79_e6_66_45_0c_5a_65_f5_43_54_bb_e8_67_6f_58_5dn,\n 0x13_29_58_45_4e_01_c1_fd_2b_c4_3e_02_42_4e_12_96_b5_4b_55_d3_dd_3e_d1_e1_cb_cf_38_27_90_d6_25_4fn,\n 0x0d_eb_48_b7_df_73_79_26_6b_12_3e_0b_6d_83_a1_fe_03_18_07_f1_ee_37_f7_67_37_38_43_8a_ea_64_eb_00n,\n 0x2c_68_34_89_b3_06_5e_4a_e5_d7_10_6e_18_f4_55_37_62_d5_8c_cd_e0_06_ee_96_bd_69_1f_14_0b_15_f3_86n,\n 0x1d_7c_17_b5_21_e1_58_ad_42_0c_9d_69_23_7f_4b_a6_e8_15_25_41_d8_78_e2_48_76_41_55_72_73_4c_cf_32n,\n 0x06_4d_ee_7f_04_cf_56_43_33_fb_dc_61_0a_b8_bf_68_10_63_29_ee_ea_c1_b1_a5_96_14_72_65_61_db_5b_efn,\n 0x21_e9_4e_5d_9a_da_d9_df_fc_c1_86_e0_31_0a_c5_4f_f3_8b_0a_29_d3_84_9f_e3_84_77_7d_00_48_ab_d6_60n,\n 0x16_ee_0a_0b_45_17_0d_89_c5_d9_15_57_ea_d0_b2_53_c3_9a_84_2d_b8_04_19_6b_fa_07_04_4a_e6_e2_b4_dcn,\n 0x0a_70_09_f8_25_b6_fa_18_04_55_fd_e8_a9_01_d4_2a_28_25_0e_99_48_80_7e_24_a6_28_05_38_8c_ee_83_6bn,\n 0x08_d5_a3_48_53_dd_fb_09_9f_b0_fe_1d_f7_46_0c_e4_a8_e4_95_2a_14_8d_a6_41_d0_e1_5f_71_ef_d2_cf_68n,\n 0x0f_b1_98_53_1b_ca_d7_bc_91_48_9a_ba_f1_34_5a_3e_bc_5f_5d_ed_5b_21_c1_d1_72_37_cc_cf_9b_1a_48_12n,\n 0x0a_91_f5_0c_72_a4_22_f3_f0_c0_6c_fb_14_01_dc_ad_e6_cb_99_c2_85_b0_70_55_42_fd_aa_d4_0e_0b_51_24n,\n 0x2d_b3_3b_34_e5_d9_a9_88_af_35_50_1a_f4_e1_37_c4_71_74_81_b6_73_29_22_46_d9_8e_77_28_a1_3b_c9_24n,\n 0x1b_74_5f_f9_c6_e5_3c_27_5d_37_8f_0a_69_d6_c0_d5_5d_59_85_49_ce_fb_c7_66_9b_b6_3a_3d_41_00_ed_4fn,\n 0x11_45_54_e3_af_c9_6d_f3_b6_63_c6_22_43_04_5e_27_f6_a2_4a_5c_26_b8_75_e7_34_40_14_b2_a9_85_83_27n,\n 0x1a_ef_96_8d_b4_76_5b_45_0f_09_8d_4e_1a_62_10_b7_16_5c_53_ef_33_6b_3d_96_f5_5f_ba_c5_8a_54_2b_dcn,\n 0x24_bd_f5_ec_4e_bb_16_db_47_83_71_89_17_2e_8a_55_b3_60_38_c5_0b_f1_f3_8c_f7_90_55_27_92_25_be_52n,\n 0x2a_e7_c4_a1_65_59_75_ac_70_52_d1_01_d1_34_6e_fa_10_fc_a5_b0_f1_3b_ab_dd_d6_2d_fe_fa_98_0f_f7_8fn,\n 0x16_5c_d4_29_a3_96_6d_1b_ce_da_61_4b_06_d4_59_e7_a0_e0_cf_be_46_d6_3f_25_52_1c_9a_f7_40_28_a8_f0n,\n 0x1b_b3_d4_b2_f6_74_40_a5_fb_e4_10_75_69_45_b7_bd_dc_a2_ff_1d_ed_3f_e2_10_8d_12_56_79_09_7b_07_7en,\n 0x18_69_5f_01_85_44_0a_5f_35_ad_74_a5_45_1d_a6_33_7e_da_04_9d_50_b9_a5_d7_bb_28_4d_52_f9_03_3d_2bn,\n 0x02_eb_1b_db_4e_aa_3f_dd_aa_62_53_44_ea_65_0a_fc_46_03_06_e0_e3_d4_bc_61_8f_81_e9_ed_73_b4_3a_0dn,\n 0x1d_e8_74_e7_13_e5_c6_8d_2f_56_d5_18_f8_ea_a2_75_22_9f_d8_fc_8a_7e_11_2d_7d_1a_24_e6_04_d3_ef_83n,\n 0x1e_5a_6f_eb_4d_ce_fc_2b_68_a5_b2_c3_d0_66_4d_aa_bb_1f_07_35_ff_2a_2d_2b_68_43_0f_4d_39_b1_09_f8n,\n 0x27_a4_28_4e_e0_c6_f7_3d_da_d0_2f_9d_49_9b_e9_0f_ed_d3_2e_bd_7a_f8_6f_44_ac_50_e3_54_f7_43_c7_82n,\n 0x00_99_d8_e9_54_6f_d8_91_bb_ab_54_7a_0e_c1_dc_83_8c_f6_21_26_78_8d_85_b2_75_97_74_d9_de_75_e7_77n,\n 0x30_43_a7_ea_89_d1_e4_fe_14_f1_f9_1b_58_4d_00_c3_ba_79_83_1e_d8_d8_64_9b_5b_af_cf_75_a0_0c_f7_59n,\n 0x0e_7a_ae_04_da_bf_a3_48_59_02_4d_07_5a_30_14_e7_8c_90_96_36_36_90_f5_3e_b0_e9_9b_7d_62_88_97_efn,\n 0x10_fe_0a_11_c4_03_0d_ef_72_5c_e7_68_4f_d8_72_4e_06_d6_cf_0d_29_5d_b0_9b_41_99_eb_3b_6a_9f_06_b8n,\n 0x16_8c_df_6b_af_5e_97_0e_1e_6b_d7_80_99_31_d4_87_65_4b_42_e9_ed_5d_8d_92_a4_8f_1d_ae_8d_2b_4c_23n,\n 0x0d_24_1d_33_c5_52_c8_55_56_e6_2a_7a_fe_49_e5_a7_12_8f_e8_aa_21_07_72_bb_ae_59_57_cb_60_a2_39_c5n,\n 0x1e_25_c0_e0_0d_b7_7c_69_b8_7d_5b_cb_95_cb_a9_34_b7_76_ec_23_39_2d_8c_ce_b6_c3_92_af_e5_96_1f_3fn,\n 0x22_b0_e5_2f_76_6a_70_2a_fc_38_c2_c6_01_61_e3_52_d8_80_3f_92_04_31_ac_f9_41_0f_7f_d1_1e_9d_7d_32n,\n 0x12_ec_9b_91_f3_95_f1_66_55_67_31_8b_d3_fc_ed_7a_75_2c_a0_1e_e0_a0_88_13_8c_40_54_9a_31_16_4f_b6n,\n 0x29_9c_8f_dc_a8_91_8c_24_da_f8_76_81_22_58_a7_55_27_f1_b5_d1_74_1a_bd_71_a8_2e_ac_0e_1f_bf_20_d0n,\n 0x0f_42_8b_f9_1d_4d_31_18_4f_35_d7_70_a5_47_5d_eb_f4_35_3c_e7_dc_a9_bc_22_76_3b_69_94_33_44_f2_35n,\n 0x1b_e0_54_9a_54_70_c9_42_9f_0e_1b_6f_94_82_f3_c4_e7_52_e8_9c_20_3c_25_b6_24_81_7f_52_3a_79_e9_e9n,\n 0x0f_dc_c3_ce_02_8e_96_b2_1f_91_bc_87_ad_05_2d_78_e4_4c_a6_c9_61_79_ea_d6_43_78_cd_35_6d_d2_ac_c6n,\n 0x13_6a_6a_98_43_fe_10_48_38_dc_08_59_92_c0_eb_8e_30_9f_d3_d1_69_af_68_af_80_58_dd_8b_60_5e_aa_13n,\n 0x05_84_44_15_81_ce_63_a4_ed_21_74_db_35_36_5b_cb_01_b9_3b_2e_c0_2f_ed_5b_6c_ed_73_14_a1_27_e6_6bn,\n 0x1b_f9_ab_90_b1_f5_cf_6c_a9_f0_19_5b_d4_33_6e_68_13_5a_5a_e2_6b_6b_35_11_cc_90_61_56_b6_21_cc_13n,\n 0x2b_0b_f6_b3_cc_9c_f0_23_ba_13_dc_65_01_f0_0a_74_2d_44_d2_6b_66_e9_bd_7b_dd_96_ab_fb_b3_3c_c7_b8n,\n 0x19_d1_86_19_bb_73_54_85_90_c0_0c_7d_02_ec_94_b5_2b_b8_bb_f1_aa_5c_2e_e0_6e_1f_8e_87_59_91_39_7fn,\n 0x14_90_9f_8c_89_20_f7_9d_46_86_a1_4a_1a_a6_e0_3a_71_b8_4d_3d_91_69_fb_76_73_31_7a_a6_b2_84_33_fan,\n 0x23_97_f3_11_f5_98_d2_49_e6_cc_db_9a_f6_ae_5b_eb_6f_09_7f_5a_35_08_86_cd_af_06_91_d0_a8_ab_d8_f6n,\n 0x0a_c2_f7_a3_c2_e4_a6_fd_58_f9_e5_02_f9_df_cf_c9_04_60_87_63_d6_9b_94_ea_50_28_8d_d7_b6_3b_38_42n,\n 0x0a_be_36_a7_04_8a_34_d9_11_0a_46_3c_ff_2f_a2_3b_5a_a0_96_6a_3c_58_d3_08_6e_ca_fa_11_2f_50_01_d1n,\n 0x24_5a_e4_79_01_07_af_c9_b9_bd_1f_14_c2_0f_10_d8_a7_45_f0_77_eb_15_a9_60_e5_d7_af_37_9a_18_db_dcn,\n 0x14_ae_11_0b_28_29_12_62_50_e1_d6_94_f0_84_36_ee_0c_56_d2_30_b4_89_d0_8d_32_bc_35_03_e7_3b_f4_e0n,\n 0x20_a0_57_6e_bd_ef_08_db_e2_19_16_0f_dd_1a_7e_75_d8_38_77_0c_78_0a_62_8b_1c_c7_20_f0_27_f6_1c_6cn,\n 0x23_a0_5c_a5_b7_21_e4_8d_a5_7d_37_3d_f3_76_c5_25_2f_66_e9_f9_63_c6_97_d7_d8_e4_ec_db_55_ef_83_3an,\n 0x28_13_d8_9a_8a_90_61_c3_00_34_8c_ef_a9_44_7f_1a_96_34_3f_32_9f_65_c4_e1_65_b5_b1_38_7c_4c_64_c7n,\n 0x2b_f7_ee_54_2e_32_e2_80_81_fa_be_dd_92_f4_b1_81_91_bb_ae_48_a4_36_27_3d_c0_49_16_ae_09_a6_45_53n,\n 0x25_c1_48_fb_26_cf_e4_c3_d9_77_b1_7d_a0_68_fd_67_ea_89_cc_51_07_9f_b5_d0_cd_36_54_a9_18_8b_13_85n,\n 0x1d_3d_d2_3e_60_48_86_6f_08_55_74_19_03_76_58_42_75_6a_62_78_97_cf_47_d9_1f_9f_2b_1e_c8_ab_2b_bdn,\n 0x0a_f7_99_6c_fa_4b_51_16_3b_4e_a8_ff_49_ed_2e_bf_8a_5e_56_a4_46_87_a8_de_35_1e_fc_17_2c_9b_df_50n,\n 0x03_70_df_bd_98_a7_3e_24_95_2f_02_08_eb_7e_5b_fa_83_ac_77_61_d8_c0_b4_b5_3e_c6_69_c6_93_69_87_30n,\n 0x13_aa_cd_bf_e0_5a_06_47_fc_15_8a_13_06_80_3c_bd_1e_bf_8d_99_5d_5b_27_bc_5c_3a_92_d0_43_82_40_f8n,\n 0x05_0f_b4_ff_23_f5_67_7d_7f_42_b0_c8_18_4c_22_4b_b6_9d_4f_30_57_9a_6b_8e_9d_a5_d2_2a_4f_7b_fb_26n,\n 0x0c_b2_f5_ce_e8_5c_c6_e0_f9_be_cb_39_1b_7e_dd_42_ca_ff_f7_c3_43_82_aa_9e_19_de_47_3a_2c_67_e3_93n,\n 0x0a_14_64_30_a9_8a_85_f9_06_d3_1e_8c_a7_b2_75_75_70_99_6d_bc_f4_0a_7a_a8_b6_75_06_67_b9_6a_2e_f2n,\n 0x23_1e_fb_23_dd_d7_cc_34_85_b8_bc_a8_12_89_8a_ef_c8_09_50_78_e5_47_15_16_62_ab_ba_0c_ce_1f_62_7dn,\n 0x2e_bc_c0_08_ed_0e_cd_55_18_29_65_6c_73_b6_ba_8d_8b_0e_ef_87_1a_ef_b9_4a_21_a3_eb_ac_83_56_13_50n,\n 0x1d_29_02_e8_b6_27_c0_44_3b_ea_9f_8a_ea_56_01_b2_1d_c0_a4_1d_ff_d9_8a_15_16_76_1d_40_0f_7b_37_9en,\n 0x27_73_58_db_e0_9c_3b_b9_57_08_89_29_3f_79_5c_41_d9_c2_c9_04_25_bd_f1_a2_a5_66_f9_e4_ee_46_81_9an,\n 0x1f_bf_69_2e_87_da_20_0b_c4_ff_d4_89_88_93_ce_fb_65_a4_3f_ca_50_4f_6f_67_51_93_f8_d6_3c_60_39_bbn,\n 0x0f_3b_88_1f_b6_5b_30_fb_2f_84_96_20_e7_4a_0d_bf_59_3a_f3_3b_b8_0a_15_eb_7f_b8_8a_09_d9_7e_0f_aan,\n 0x0a_11_6f_a3_2c_97_61_08_66_b3_a9_3b_e3_91_90_80_21_9b_e6_05_7a_4b_75_bc_a3_a7_bd_7b_ef_88_ba_ean,\n 0x30_38_4a_31_b8_0c_53_2e_cc_a1_2d_2c_61_ce_4e_b9_80_98_a7_54_07_9a_69_b0_e4_4f_aa_0a_3b_ef_f2_3en,\n 0x14_03_e7_29_81_4a_dd_bc_f8_09_e4_9a_54_65_ed_6b_a6_e4_f0_35_4a_98_6c_d2_7e_9d_03_aa_6a_9f_d1_81n,\n 0x11_79_46_27_e6_12_5a_c4_65_ff_2e_d7_1d_95_9c_31_86_0a_a2_d8_ea_c3_fa_41_1b_68_15_2b_c3_81_cd_24n,\n 0x07_03_54_e3_71_38_99_b3_8a_d7_4a_7f_5e_31_54_ec_aa_a2_73_14_b4_7f_85_77_3b_6e_06_6f_d4_e6_3d_ban,\n 0x2d_1e_01_fe_7b_49_66_0e_ce_fd_09_3b_5a_b2_69_ae_20_30_fd_78_27_d6_43_0c_2b_cc_53_d2_80_06_31_b0n,\n 0x11_a0_15_33_e3_71_3e_1f_38_f9_4c_39_06_84_33_23_c0_c8_8b_fa_b8_03_e1_35_04_2b_a1_b8_bc_ee_da_3cn,\n 0x05_8e_4b_cb_4f_74_63_bc_6d_02_d6_c4_0d_7e_85_8b_0e_0a_ac_fc_3a_88_dc_32_01_87_d8_c5_a0_15_d1_59n,\n 0x1b_2a_d3_87_62_c6_91_82_01_e0_93_d2_bc_39_3f_9f_c5_0f_d5_f4_5e_d9_43_a8_f1_1b_26_97_83_33_5e_74n,\n 0x05_ab_9d_39_3a_4b_b7_ee_e0_07_23_e8_de_66_8b_24_04_a1_62_a0_e1_75_77_a6_e5_5b_80_25_b1_81_4b_0an,\n 0x04_05_8a_de_b5_ad_e9_a9_c9_e3_d8_69_ed_b7_03_22_27_8b_09_ce_12_19_ba_45_68_5b_f8_f6_d6_9c_ed_77n,\n 0x21_a1_c7_c6_2c_b8_ec_e8_d3_bd_43_4f_87_93_6c_3a_18_42_43_2f_2f_1a_6c_66_10_1b_1a_c8_d1_1c_9a_19n,\n 0x20_28_ef_b9_d4_4e_5a_f3_8c_0c_1e_d3_5f_9c_b8_43_f3_81_84_ee_0f_b9_f1_c4_21_21_21_05_42_b0_01_00n,\n 0x24_b0_79_2d_69_eb_31_36_4c_dc_8b_74_c1_09_22_3c_1c_2d_24_44_04_c6_4a_41_d5_16_07_6a_b0_24_0c_a0n,\n 0x21_79_ff_52_ea_20_32_ef_d9_5a_c4_e7_a3_7a_9c_0c_e5_03_4d_3c_ad_36_61_05_34_1e_16_ec_74_83_da_19n,\n 0x29_cb_ad_b3_7f_77_3c_6d_c5_80_cc_0c_2e_bf_29_26_d5_98_a1_9f_a4_1f_88_1e_12_cf_4a_5e_df_af_a1_3dn,\n 0x2b_89_2f_09_ea_9f_60_fd_72_04_85_2f_6b_b9_95_e2_0c_35_10_64_8b_dc_40_0b_97_df_b7_cc_4d_7f_bd_f2n,\n 0x13_ba_db_d0_95_3e_09_61_5a_4e_13_d4_b3_40_f4_e1_bf_2a_03_a2_df_5e_6b_8f_af_69_d8_69_79_90_c9_5bn,\n 0x2b_8f_ed_f8_c3_66_2b_0a_10_57_6c_ed_bd_72_0c_ed_69_f8_62_12_4f_eb_62_ee_c8_3c_71_50_d9_93_64_11n,\n 0x02_b3_d6_2d_6e_fe_a0_a2_2e_2d_96_8f_91_9a_8b_ea_56_79_1a_37_b9_f2_1d_03_f9_51_85_d9_92_6c_72_e0n,\n 0x07_03_7b_ac_8b_66_90_79_4d_d0_90_7f_7e_31_5b_aa_52_5e_dc_72_98_33_c8_9c_66_04_06_df_21_bf_b6_52n,\n 0x2c_f9_ea_47_49_3c_b7_86_7b_86_94_2e_35_34_87_cd_4f_4c_b3_cd_33_e3_10_e9_fd_4b_c3_c3_e6_b5_24_2dn,\n 0x30_3f_5a_8f_aa_f2_a6_ae_ad_78_0f_2a_13_93_7d_75_fd_b4_60_5d_8f_5a_65_52_24_26_44_29_06_ed_ac_25n,\n 0x09_1b_62_8b_df_d4_d4_93_33_c2_a9_ed_84_ab_a3_ec_2e_ab_33_6a_8d_91_a6_05_b9_de_e9_af_0a_f4_4f_26n,\n 0x01_f4_68_f6_ef_5c_35_d3_c9_55_92_e2_7b_1d_e7_a2_13_87_8a_65_36_85_ab_fb_0d_29_72_fb_0f_7f_9e_32n,\n 0x1f_59_23_72_5d_99_1b_36_de_85_57_d2_99_cf_e2_7d_8b_07_6c_64_0c_c4_cf_ff_ce_57_e9_c7_47_7b_89_a0n,\n 0x0d_d5_d7_b1_d0_d5_22_66_c3_87_c7_e1_11_fa_b8_ea_c4_40_4b_20_7b_c5_e2_16_ab_64_b7_e1_04_14_a6_bdn,\n 0x26_ea_3d_c5_cb_d0_1b_e1_c0_6c_ec_04_ef_32_8a_7d_26_6a_fe_33_f7_6b_bb_26_da_84_57_e9_66_35_14_44n,\n 0x06_72_31_87_5a_3d_53_6b_45_11_d0_a0_b2_1b_7d_24_95_8a_4b_f1_cd_1e_ec_4c_59_7c_25_e3_a0_0a_cb_36n,\n 0x07_24_bd_4d_52_3a_70_05_4c_99_52_41_b6_7f_4a_ea_4e_66_94_58_ad_d9_a6_77_9d_89_cf_3d_3b_dd_9d_a8n,\n 0x1c_c9_db_f8_aa_d4_5d_67_17_8c_5b_91_a0_aa_44_70_16_28_b2_41_20_99_0f_e6_e2_90_26_a0_b2_1e_9b_a9n,\n 0x2b_58_41_45_3a_66_53_fd_30_c0_5d_25_81_db_fb_fa_c5_ba_89_bd_a7_88_42_20_8e_24_a0_3c_46_fd_32_a1n,\n 0x25_a1_bd_92_c9_ca_10_22_6b_cf_7f_bd_9b_1d_8e_2b_22_7b_c2_dd_4e_3d_46_e1_33_ae_26_81_54_67_4f_8bn,\n 0x01_c3_52_fb_d9_22_72_48_97_ab_79_a6_0e_47_e5_bb_f3_c4_b7_14_a9_07_c6_3f_4e_fc_c5_bd_5c_c6_e8_27n,\n 0x05_e4_48_30_ec_17_0a_4a_5d_fd_9d_e8_46_e7_e4_22_ae_9c_b9_8c_6f_49_9b_b6_76_81_fc_f6_0f_7e_82_b5n,\n 0x07_7c_27_36_ac_2d_0a_07_0a_1a_1c_6e_45_ea_9c_c5_26_20_1d_66_8e_e4_04_09_6b_69_dc_85_08_6e_a9_c2n,\n 0x03_03_f3_4f_6a_a2_29_a5_22_8f_ec_95_95_44_f8_31_ee_71_a1_13_7d_ed_b6_a4_b7_64_43_01_1e_ec_31_49n,\n 0x27_30_11_55_9d_23_91_60_d4_63_a2_b9_89_00_96_ba_45_58_ef_f7_b6_63_72_91_08_2c_5e_aa_9f_fb_15_3en,\n 0x0c_4d_c5_ef_e0_16_49_8e_a8_23_fa_d5_e1_2d_2e_00_3f_2c_b4_ec_aa_a7_f0_e0_29_19_62_6e_58_af_a7_d6n,\n 0x1c_b9_90_d8_09_fc_ea_3d_aa_8d_03_b3_bc_df_14_7a_69_2f_f7_a0_d8_f0_c1_14_f6_a0_80_da_a5_a3_ac_12n,\n 0x1a_0a_3d_38_6c_26_c3_d4_67_f5_0b_a7_33_e6_d7_90_1a_59_b7_45_3a_4a_34_05_6e_92_e7_71_b6_dd_4f_6cn,\n 0x20_d8_16_18_c0_e6_ae_5e_c3_03_cf_de_54_34_62_71_04_16_34_cb_3c_f2_22_19_f9_99_a5_4b_c5_03_3b_7en,\n 0x0a_39_ba_8f_57_c7_93_fe_65_b6_69_07_cc_65_6a_97_ff_52_38_17_cf_ce_cc_bc_2c_2d_e5_bb_b8_de_c0_cbn,\n 0x0d_e0_56_fb_31_95_26_df_ec_15_d5_02_17_34_83_ea_35_e6_05_7e_64_94_9f_b6_e7_69_0d_3c_25_92_3f_6en,\n 0x03_f8_2a_c1_2d_5b_e6_39_97_47_94_fb_3c_23_22_bf_6e_61_a2_62_c7_b4_70_ac_5e_97_d2_0a_4a_4d_8a_ecn,\n 0x08_35_ac_61_00_1e_a7_95_0d_80_e3_2f_cc_20_bc_0c_71_97_d1_2a_bb_0b_5e_d9_93_92_10_13_90_de_2a_46n,\n 0x12_0e_fd_9c_06_63_e0_ef_3b_6c_59_64_14_f0_18_a7_3c_b5_53_26_6f_bc_b1_56_44_52_df_90_16_bb_49_75n,\n 0x05_af_c3_60_2e_02_39_1b_d4_e2_c5_eb_dd_a2_80_08_5e_c2_c1_f3_56_a3_a5_cd_2f_d2_37_2b_e6_f3_f2_59n,\n 0x0f_88_58_29_35_80_24_fc_29_d0_41_eb_29_a4_31_30_ec_40_39_22_c4_47_9c_55_ab_3b_34_65_36_ac_15_9fn,\n 0x09_75_2c_21_e2_a9_c7_d6_d5_b8_96_34_28_8e_11_9a_0c_64_06_ab_e9_e7_7b_4a_d1_b8_f3_6c_9e_cc_8f_1cn,\n 0x1d_6b_b3_2d_41_4b_8f_98_58_38_49_69_4a_d7_ab_57_85_d8_8e_c7_0b_de_4b_cd_75_02_87_01_6a_fc_ee_b1n,\n 0x07_d4_55_cd_69_ad_00_e9_3b_09_ac_44_91_5f_64_a7_d5_ea_3c_4c_1b_3d_17_6b_b5_18_59_63_9f_92_4b_54n,\n 0x11_88_86_89_0f_7d_3d_de_9a_f1_20_4a_95_90_e1_07_50_c9_a6_03_5e_66_b9_8b_ba_d1_fb_62_51_81_ab_abn,\n 0x24_5e_7b_36_43_a7_76_65_66_39_5e_fd_e6_e4_76_01_aa_fe_30_73_78_fd_00_0d_a0_8f_ac_c3_3d_bb_04_3dn,\n 0x2c_eb_61_76_07_3a_98_a6_61_3b_40_f7_68_65_4d_ad_8d_11_9a_e6_4e_dd_6c_c8_4e_4b_34_37_0f_94_09_dan,\n 0x1b_4e_4d_41_06_13_ae_83_7b_7f_6a_7f_52_06_a0_3e_9e_ca_66_92_fa_97_02_87_a5_33_17_99_0c_e8_11_48n,\n 0x08_00_57_b8_e6_64_ad_58_0e_a5_f3_85_10_57_66_fc_0e_3a_22_26_52_0c_f5_23_60_49_73_da_27_4d_10_d8n,\n 0x11_31_ec_38_d8_96_05_67_a7_fa_9b_d9_6d_fa_7f_d5_08_3e_14_f2_84_30_12_ab_36_e9_46_d4_b9_01_b0_abn,\n 0x1d_27_8e_62_c5_8f_3c_17_e1_47_69_fe_3d_bd_6c_6b_9f_af_f1_1d_ef_7d_00_30_66_d8_e6_b0_fe_7f_b1_a4n,\n 0x07_10_43_1f_a8_8e_03_6f_18_0f_0e_4d_46_e8_ed_78_a7_e6_36_1a_23_9a_bd_78_7b_6c_e2_f5_46_15_cc_b1n,\n 0x30_1e_86_b0_69_3c_07_df_60_f8_ac_15_ac_6b_1c_aa_76_f1_3e_f5_17_55_35_d8_f9_76_00_b8_cf_e3_b5_e6n,\n 0x25_87_03_78_c0_b7_06_80_41_b9_2a_7f_44_b4_85_60_54_48_45_8c_4d_2e_7a_87_a2_6c_da_94_ca_40_99_edn,\n 0x11_76_21_8d_48_c3_9c_e7_b6_cf_46_e7_60_d3_48_87_12_66_00_5c_b0_07_4b_98_86_eb_2c_4b_ef_5b_e0_9bn,\n 0x1e_1e_fc_3b_03_fe_fb_1c_97_28_91_40_94_32_c0_2f_b0_f4_e9_b6_f6_e3_2b_3f_c1_09_42_38_7a_9a_81_25n,\n 0x01_92_ce_4f_b9_7e_ec_76_86_07_21_0a_2a_8f_b1_cb_29_82_8d_4b_d8_40_23_6f_14_32_7e_18_6d_39_46_cen,\n 0x09_d9_44_90_34_56_cc_43_a4_3e_98_27_36_87_55_b9_38_a3_1d_42_a4_7c_c6_d9_10_ca_0b_04_ee_10_fd_8fn,\n 0x18_e4_17_93_57_58_8f_23_0a_b8_8e_6f_a6_10_d8_82_44_2a_89_51_9c_a7_1b_f1_0d_8b_a6_4f_b2_aa_bf_34n,\n 0x25_d0_f7_bf_f2_2a_9e_99_77_5d_8f_38_8a_74_d4_ff_d7_0f_9d_f7_1d_97_7a_07_d9_34_37_9f_ee_62_93_78n,\n 0x05_6c_e0_d4_74_18_e2_c1_ed_7e_a6_3d_7b_06_dc_b7_e7_06_8a_bf_79_47_8e_2b_53_f4_02_d5_84_f8_01_4cn,\n 0x20_dd_79_49_30_7b_c2_ce_53_32_30_22_fc_b6_76_53_79_c9_53_e8_55_1f_87_8c_4b_71_20_53_87_a1_7b_41n,\n 0x04_b9_7c_d5_a4_78_74_92_8e_8e_3a_d6_de_64_42_26_49_3c_a3_a8_7a_19_b1_82_ea_e8_98_12_db_3a_a0_60n,\n 0x09_37_4a_10_aa_6c_b0_b2_ca_da_a2_1e_9f_10_45_9f_79_37_6f_8a_d0_fd_07_83_00_45_b6_f1_e9_45_26_00n,\n 0x21_14_b5_f0_38_cd_40_0d_24_95_99_16_f8_3d_0c_c8_27_3f_7f_7a_51_95_5b_db_a5_9d_f3_ee_5e_a4_c9_5bn,\n 0x27_51_d8_12_40_5f_13_d2_1c_4d_59_37_d2_0a_98_1d_b7_cd_59_33_82_21_24_18_96_15_61_1f_f4_ba_2d_91n,\n 0x0c_d9_0a_88_22_76_ea_2b_8a_72_73_ed_a1_55_a6_fd_9d_63_dd_09_4b_96_50_24_41_12_81_ae_2b_ab_bf_77n,\n 0x02_83_bd_ac_c1_47_57_e2_83_98_e6_7d_6e_79_21_52_99_51_ed_af_0c_98_72_19_44_56_19_5e_97_81_58_1en,\n 0x16_f1_79_d4_dc_4f_21_01_ce_a8_d1_27_a6_dc_09_e4_f2_5e_cf_e4_f7_9f_a3_e0_28_51_fc_06_10_8f_d4_98n,\n 0x28_6f_91_d1_b7_9d_9e_68_1d_6c_54_0b_d1_4a_f8_32_99_cf_e5_25_4d_9a_1b_3a_a6_34_e5_45_6a_fb_70_0dn,\n 0x15_cc_df_ad_34_d2_92_26_9d_67_34_c1_73_e2_41_df_98_e2_fd_75_e8_6e_61_c6_13_69_c6_f5_9a_b4_7b_f1n,\n 0x0a_c6_b9_0c_6b_7a_47_a1_ed_a9_d4_a6_d4_66_b2_ad_fe_07_8d_c4_1c_9c_6e_dd_0a_39_03_03_a9_df_21_0bn,\n 0x25_49_7c_a5_15_da_fc_37_c1_25_ef_dc_e7_ee_66_07_2c_8d_4c_15_2a_2a_30_f8_1e_19_5f_db_ec_76_49_82n,\n 0x28_09_48_cf_e3_ec_a1_9e_1c_d0_fb_ba_a5_fd_23_a3_8e_67_28_54_7e_64_8f_e8_0b_a9_47_c4_75_82_7e_2bn,\n 0x0c_db_1b_64_12_b6_db_97_dc_59_2b_c9_66_c6_e1_a6_7f_da_70_23_2e_ad_9a_15_7f_27_f6_01_48_85_47_3dn,\n 0x0c_43_8d_5a_be_f5_04_2a_0a_63_ba_43_18_d7_89_11_fe_c5_37_3f_ba_72_be_c6_fd_2f_52_bc_b3_86_68_2dn,\n 0x21_9e_c5_82_c9_27_8e_78_e4_87_98_02_3c_53_40_d5_22_a0_f7_e6_39_85_8d_e4_ca_01_19_9c_44_52_06_0bn,\n 0x03_a0_92_73_0c_c3_b1_ee_a8_a5_a7_61_25_9d_d2_be_a4_f5_86_eb_09_a7_be_eb_17_c2_9a_62_5b_ba_81_73n,\n 0x10_eb_bf_c3_52_33_d7_cd_63_1b_62_04_cd_c8_9b_a4_fd_93_2a_e0_58_1a_85_6a_39_5a_8a_52_66_23_39_a3n,\n 0x22_ce_08_90_d9_ef_4f_2b_0e_f4_e6_98_27_df_b6_8f_3a_6e_a6_c3_0a_24_a6_75_d5_1b_9e_19_9b_6d_7c_30n,\n 0x18_94_8f_58_03_5b_b1_09_56_bd_f6_d4_66_7c_2e_16_ce_18_44_2a_19_b8_c2_81_d4_9b_2e_26_53_4f_d8_aen,\n 0x26_19_ce_ed_cb_83_4b_a4_00_88_53_ae_b6_a8_d6_14_4e_28_1b_7a_e3_67_8f_1d_52_d3_52_f0_4a_9f_0d_f1n,\n 0x02_44_c7_4d_79_3f_1a_16_f1_97_a2_fb_00_1b_dd_31_e9_86_f0_94_a8_3e_09_d5_8f_2b_c5_ae_d2_c8_be_b9n,\n 0x16_eb_ed_d4_b2_3d_46_8b_9f_36_cb_db_35_e0_01_87_de_bb_15_66_8c_18_0c_8a_b3_39_ee_5b_59_c8_7c_ben,\n 0x2b_c4_1c_9e_ed_9f_63_52_32_45_f4_b4_12_21_67_15_d2_9b_ec_f5_1d_66_0c_86_bd_af_38_80_96_77_ba_d0n,\n 0x00_9e_db_f5_34_74_5f_8c_73_5a_c8_7a_60_2d_80_6b_99_dc_68_01_2e_b7_d6_c2_c1_d4_c3_8a_06_73_ea_23n,\n 0x18_da_cc_8d_13_20_2b_f2_32_61_6f_3a_17_5b_c0_21_18_9a_25_a2_96_ef_c9_97_78_80_78_2b_31_40_79_89n,\n 0x0b_26_00_a0_72_63_e8_3a_c0_76_bb_1c_4b_07_f4_8f_2c_2a_3c_f6_bf_7b_e4_af_77_26_2d_39_17_35_4e_e9n,\n 0x27_f6_d2_0f_ce_0e_74_7c_fe_43_77_43_31_a1_9c_fe_4c_23_4e_99_d1_80_33_28_93_f7_05_84_a1_7f_11_6bn,\n 0x10_50_ba_20_c8_f4_d7_97_a1_ae_ec_9d_e4_6f_c7_f7_94_cb_69_1a_9b_16_86_8a_2d_ef_fe_ed_1b_b3_f6_2an,\n 0x07_dd_d2_11_5a_1e_35_31_1b_05_24_94_b9_c0_5e_d4_7f_f8_fe_2d_41_81_78_ec_60_04_87_ac_8e_65_da_20n,\n 0x15_2a_65_b5_47_8e_0f_92_ec_3f_c3_60_14_3e_6a_1c_b8_3d_6e_99_66_81_68_fe_be_d3_71_60_ad_da_8a_2cn,\n 0x21_de_44_eb_e4_84_52_3c_17_a9_ce_16_2f_42_fc_db_aa_71_ed_44_37_f8_cd_eb_88_5e_3d_4a_20_5c_37_0cn,\n 0x1b_e3_76_44_a1_d3_a3_97_b6_b5_49_81_05_68_ec_76_36_a1_be_4d_7a_64_ae_23_f7_cd_f0_7e_c9_3a_01_11n,\n 0x18_e7_b1_12_69_32_23_26_0a_25_dd_17_c7_1e_43_1b_e5_ed_4a_8a_b7_37_f3_77_5e_f6_14_89_29_8f_87_59n,\n 0x00_23_f7_f7_10_bc_05_77_74_02_a2_1b_ec_43_72_e3_b6_48_47_3f_37_47_f1_eb_28_a7_8c_7e_03_a3_db_d5n,\n 0x24_70_de_23_67_7a_01_6a_00_04_c6_ef_29_20_64_ce_ec_79_cd_12_cb_1f_a4_99_92_a3_b9_bc_d0_a2_5d_e5n,\n 0x1d_1f_bf_8b_2e_41_00_08_03_ef_6a_50_be_40_99_87_c6_f5_2d_8b_53_b6_17_c4_05_5b_d2_4e_7d_27_bf_ecn,\n 0x02_7f_5f_e1_f4_be_db_06_44_73_be_4b_6e_ac_1e_cf_d6_56_ad_20_86_ab_c3_11_b6_7f_3a_c8_b8_c9_f3_67n,\n 0x2d_53_af_01_19_df_a7_7c_28_dd_10_2b_28_28_fe_e8_0a_f9_ae_65_1d_b1_01_4c_3f_39_fa_5b_9b_8f_f8_52n,\n 0x12_f1_99_47_c2_64_5f_44_81_c8_91_13_f4_51_46_41_f4_af_b7_4a_8c_43_e0_36_60_36_e8_05_49_a7_1f_d8n,\n 0x2f_00_73_67_4b_f4_fd_79_d2_49_63_8e_c6_47_86_a9_44_5f_b5_90_f1_08_8e_be_4a_4f_01_fe_5f_4c_25_13n,\n 0x28_ed_45_b4_7e_0c_45_c2_9a_bf_03_b2_65_d9_fb_75_00_03_7a_95_65_4e_ed_4b_6c_f4_a1_85_d1_c9_ae_ban,\n 0x29_21_42_dc_76_70_63_92_f3_00_6b_8f_5b_45_a4_51_f3_c3_7e_cb_ad_9f_69_b2_71_12_11_17_86_83_be_5bn,\n 0x17_ea_a9_ee_f3_dc_9a_70_59_bf_6c_e3_a5_1c_ea_4a_45_ff_03_b7_cc_60_5c_b8_b0_5c_3e_df_2b_9d_67_fdn,\n 0x1a_16_7d_22_4f_70_3b_83_f2_0a_9a_e1_dc_90_be_77_51_6a_97_7e_6f_2e_d0_7d_a8_5b_06_91_0a_65_be_56n,\n 0x08_4e_eb_e7_66_b1_41_d7_a2_ec_fc_ff_08_75_0b_04_bd_6f_ea_80_53_5b_2a_0e_30_ae_89_33_d9_80_26_can,\n 0x2e_c0_f4_02_c6_cb_97_09_e6_e3_81_7e_2b_36_42_85_e1_8c_ab_e2_90_bf_8b_83_87_e9_d1_fe_8d_ed_ca_2dn,\n 0x16_57_e2_6c_61_a0_eb_6f_8b_ca_74_c5_bb_f3_4a_94_77_72_ff_d6_c2_c0_f9_b6_28_36_a1_e8_ff_6f_47_80n,\n 0x1f_88_27_be_b7_da_c8_69_58_ed_dd_ea_38_b2_8f_99_e7_71_80_f3_c3_b9_59_97_93_78_c4_77_76_61_6a_b5n,\n 0x21_7a_07_d6_59_2f_c0_00_1f_c2_40_be_44_f7_1c_01_7f_38_70_06_13_1b_83_f2_37_fa_4c_96_68_ed_4f_d3n,\n 0x05_96_d9_d6_c8_4f_74_54_70_fc_99_97_c5_a1_ce_9d_4e_39_04_e1_7f_16_f1_39_e1_fc_6f_0b_f2_7a_da_4bn,\n 0x0b_d2_f1_e6_1a_7e_d4_77_26_48_2d_e7_6a_e4_b0_d7_b4_17_38_eb_06_c9_e9_8f_f0_27_7f_ea_16_c2_b0_fbn,\n 0x14_e4_f1_4b_2a_7b_bf_9d_d8_c3_a1_b5_26_0c_38_44_51_9c_3b_d5_d1_39_b7_34_46_78_f7_4a_36_f4_e4_aan,\n 0x09_80_b0_b3_d8_07_10_a1_67_df_14_7f_9d_47_5a_28_dc_af_91_8a_6a_a3_c9_67_a5_bb_55_d9_7a_8f_6d_acn,\n 0x25_a6_de_f1_f1_a7_9e_8d_63_56_67_1d_f1_ca_33_50_df_85_50_69_fa_1b_5e_7e_86_f2_7b_af_de_e6_0a_c1n,\n 0x2c_b2_42_a2_97_24_74_0e_63_d8_48_8a_d7_da_d6_c5_d3_7e_9e_5d_09_15_58_2e_7a_71_c5_3e_53_6b_64_e6n,\n 0x06_b3_2d_c0_40_8b_17_82_c0_52_bb_a5_87_c3_79_ce_b3_52_fb_29_57_9b_21_c6_18_0c_d3_fb_39_ab_7a_fan,\n 0x09_f2_0a_13_75_f5_6e_6b_ee_53_26_ac_75_63_70_9b_ff_6e_90_18_2a_c0_92_f1_21_45_ca_08_8f_df_3f_47n,\n 0x30_40_28_1c_47_d3_b6_ed_b8_31_41_82_a5_95_a1_f3_e6_76_4e_66_2c_c0_ec_87_8b_63_88_26_dd_3d_b7_f8n,\n 0x00_72_ed_a1_60_68_3c_3b_a9_ca_0d_cb_b2_7f_00_85_05_e8_3a_85_eb_5a_c7_53_b7_a6_7a_23_d2_45_51_8dn,\n 0x1d_0c_40_6b_d4_0b_b8_fe_80_0c_a7_37_d5_01_e1_9f_15_8f_a2_05_d9_f6_3a_30_b4_87_e6_15_f4_72_14_00n,\n 0x2e_1b_6f_70_1d_fb_e3_84_62_06_1a_91_d5_f6_41_ab_cc_74_06_a5_f4_63_82_2b_71_7d_e7_93_44_c8_a9_dbn,\n 0x29_18_d3_fd_33_23_72_3a_1c_e7_5d_c1_b1_f8_29_48_d2_98_da_14_63_66_cf_01_67_ad_08_2f_5a_fb_2a_abn,\n 0x04_a8_ed_e8_2e_a0_c5_61_44_38_58_fe_08_d2_c9_05_dc_d4_45_f5_1b_11_af_d4_1f_46_76_67_3d_74_af_0an,\n 0x26_2f_76_f5_af_bf_dc_84_c2_40_e6_86_36_2f_25_cd_1f_34_97_d1_95_c7_9a_40_cc_99_72_25_a4_34_92_80n,\n 0x0e_98_3b_d2_02_a4_24_f2_4a_83_f8_17_37_37_da_bf_2c_71_1e_cc_05_20_4e_1d_26_b4_f7_7f_1f_10_75_26n,\n 0x1a_8c_8a_3b_13_83_7a_4a_65_7c_26_d0_f8_04_ca_7e_f8_3a_ac_7e_75_16_18_4b_4c_22_eb_7a_fe_fa_51_69n,\n 0x05_a1_6f_27_f4_60_71_9f_8b_75_c4_9c_1c_da_f3_48_73_9a_b5_a2_16_a7_83_03_9b_c0_55_ec_6f_0a_ef_15n,\n 0x10_9a_4e_20_2a_5d_6e_e9_43_b2_13_8d_c5_e3_c8_68_18_8b_02_ba_57_ab_15_8a_46_e0_33_59_0d_eb_1d_02n,\n 0x11_4b_e6_36_e1_20_60_d3_17_a7_f0_8c_44_b8_56_14_4e_88_3d_c8_a0_7a_f1_f6_2c_af_30_0d_23_41_2d_den,\n 0x1f_ec_ef_ae_86_07_ae_b2_f1_09_23_9e_06_1d_18_39_df_ca_12_63_4a_4b_00_1b_ea_1d_11_90_e4_ec_80_29n,\n 0x1c_fb_50_06_b6_28_11_47_b0_5d_cb_8a_08_aa_54_a7_fc_fe_9b_12_1f_12_bd_36_e9_89_d2_f4_7c_f8_09_cdn,\n 0x2c_2e_31_ca_27_19_75_90_bb_0d_46_68_2a_c1_0d_20_09_ed_b5_7e_0a_88_b4_79_0d_73_1c_b3_4e_92_6d_82n,\n 0x18_f2_a0_b0_0b_54_49_f4_bb_82_65_d9_bc_2b_03_a3_1a_1c_e6_ab_ae_5e_af_d9_ee_c2_f3_74_5b_e5_61_ban,\n 0x04_31_b6_c6_29_ce_bd_ce_44_4b_0a_f7_7d_f0_80_85_06_10_6f_76_57_20_9a_9c_96_c7_3f_6b_44_da_6b_02n,\n 0x0c_f3_3f_c2_fd_e1_e1_71_be_15_1e_e3_44_59_57_05_ee_c9_d0_93_03_41_48_9a_dc_64_33_fd_b9_94_1f_93n,\n 0x0a_07_43_87_7b_28_a2_a6_75_96_6e_6a_d6_e2_ca_f3_2f_78_fb_e8_30_bc_b0_18_7a_ba_4c_21_fe_7d_92_75n,\n 0x19_5b_9d_28_5a_58_de_ae_30_75_8a_17_7e_20_a4_cf_66_35_0c_f4_be_cd_81_26_bb_5b_89_e6_72_d3_9f_can,\n 0x2c_3e_ac_5d_52_fa_f5_b4_6f_ca_54_b5_e7_c1_6c_d9_50_3b_f6_2f_f1_e3_f7_ca_f9_51_49_02_15_44_47_6fn,\n 0x10_00_83_96_ed_7e_26_09_7d_63_84_71_6d_df_29_93_1b_fa_8c_f8_8d_0f_15_40_6b_7d_3e_30_14_6b_cc_2cn,\n 0x09_d6_12_0d_8c_ef_d8_db_99_a2_90_62_68_fc_11_6f_5d_31_33_9c_11_90_82_52_ec_08_fd_39_ae_e6_6c_7bn,\n 0x29_f6_0f_df_be_0d_77_c1_64_18_25_b4_99_e2_45_2f_5f_ca_3d_fb_42_7b_e0_7a_32_20_1b_cb_38_01_91_87n,\n 0x2a_77_d9_88_43_3d_ad_dd_fa_31_7c_f1_a8_6c_25_03_fe_01_94_fc_15_95_e7_f8_42_7c_0b_83_f9_0b_41_80n,\n 0x0c_96_50_f1_49_c9_94_67_0c_bb_96_6f_39_03_e5_2a_63_7e_95_6b_57_92_fb_69_a0_d7_37_6e_73_2e_81_13n,\n 0x0c_bf_a1_7b_23_47_e6_82_1f_78_8e_9a_44_25_5c_13_f5_03_25_98_d1_e2_15_a8_22_e3_e7_ed_9b_75_7c_ban,\n 0x16_7c_4c_99_5f_5a_20_35_74_96_67_8f_c1_ac_33_e0_84_31_12_7a_ef_92_a9_a0_06_44_c6_1e_ff_ad_d0_79n,\n 0x17_b0_93_78_da_9a_d8_fa_77_b5_d1_0d_b6_cc_7b_52_2d_f9_56_66_fb_20_4a_ff_23_c0_b9_a9_eb_a3_79_51n,\n 0x15_44_4b_34_6a_2e_ee_40_22_0d_5a_bb_da_30_32_4f_d4_22_b1_2b_d0_62_50_78_87_a1_74_9c_9d_be_ab_d1n,\n 0x03_d0_8a_26_f8_6c_97_f3_1c_4c_d9_a0_1a_7f_68_fe_c8_c2_08_d4_2e_ca_a7_ed_2c_ff_73_b7_4d_c1_86_56n,\n 0x1c_53_9c_92_41_7e_0e_11_b2_63_d9_9a_0f_ad_8f_c6_1f_d1_c0_65_e7_03_99_af_f5_12_d8_77_7d_7c_f1_b4n,\n 0x19_b9_20_9e_10_55_f4_04_64_7d_2f_0b_d4_81_7e_79_89_72_96_7e_1f_76_88_87_7f_4e_85_74_00_ff_85_26n,\n 0x01_4e_73_25_3e_3b_5d_2c_90_f1_99_95_9e_bf_07_1b_18_93_26_f3_9d_17_72_98_6d_e1_ba_79_db_72_f0_a1n,\n 0x0f_76_aa_8a_09_cd_04_25_59_e2_1e_df_64_49_55_57_e8_06_59_2a_1d_72_df_e8_ca_3d_58_3a_04_fe_bd_06n,\n 0x07_e9_7e_19_77_f8_73_a0_58_1e_da_75_79_55_c9_32_74_a8_74_54_a6_5e_6d_fe_f9_44_0b_be_12_f0_14_89n,\n 0x2f_d5_34_af_9d_f3_11_09_c9_48_d5_a5_d9_33_6b_8d_7b_c5_18_95_c3_4b_fc_de_ac_48_f8_b5_6d_ac_b3_62n,\n 0x1b_79_71_c6_44_b7_fd_51_70_33_b8_df_23_25_df_82_fa_22_a3_b7_9a_9e_e0_03_32_37_bb_43_fd_f8_77_23n,\n 0x0c_83_09_69_ca_91_ef_87_be_10_9a_f4_6d_0a_d6_2c_93_e8_0b_1c_a9_30_7d_72_70_95_08_cb_1f_ea_64_a2n,\n 0x1f_db_86_f3_41_2e_bb_18_75_4a_1f_9c_f4_df_30_96_cb_11_ba_89_e7_98_96_22_95_cc_a2_54_c5_65_f2_e8n,\n 0x2c_9a_5c_82_48_1c_ad_cd_ea_6b_fb_da_30_34_3d_98_15_22_1e_29_ae_61_7a_30_f9_50_d2_98_34_ad_26_54n,\n 0x23_b1_9a_bc_1d_be_34_a9_79_35_37_f1_f3_9a_3d_81_94_4d_1b_8c_fc_4f_26_b0_63_9c_a4_fa_ec_d9_8d_2bn,\n 0x0c_d6_92_2f_33_04_a4_d0_38_83_3c_69_7b_07_74_14_79_72_51_6b_dc_8f_96_56_7b_29_a6_47_69_71_54_83n,\n 0x18_32_12_f2_e4_27_fc_10_80_c2_37_bf_ae_42_03_ef_12_47_2a_06_c8_27_f9_3d_ba_5d_5a_f2_4e_c3_36_a6n,\n 0x04_41_7a_0d_d6_d3_d8_cd_6d_2e_f8_1c_c8_33_33_22_d7_0f_26_4f_51_00_87_4a_4c_16_03_d1_d6_f8_39_d0n,\n 0x1e_e7_fd_86_ae_6b_fe_91_6f_bd_87_cf_0a_72_a4_be_43_3d_4d_3f_5b_3b_96_70_7e_da_0c_47_a4_22_c3_a2n,\n 0x0e_38_6d_dd_d8_70_f8_04_1d_fe_61_9d_4d_d8_ee_f8_51_a6_39_1c_f4_9e_ee_f6_f1_f1_44_3e_ea_17_3d_10n,\n 0x0b_31_a4_9e_95_7a_c3_bc_7f_f0_f6_5e_e6_fd_bb_4c_f4_b1_45_dd_8a_23_4f_0d_7e_6c_06_39_be_a0_07_47n,\n 0x17_be_df_9f_13_ab_9c_e8_a6_e2_81_90_47_99_39_cd_27_86_3b_89_2f_fc_da_e0_54_78_a0_85_9c_7e_ed_c1n,\n 0x1c_28_fb_33_d9_9d_d1_b3_ae_37_f8_84_f3_55_25_46_a4_f5_af_ae_56_2f_48_62_fe_1e_92_e7_02_40_9e_15n,\n 0x15_c6_d0_a3_94_16_69_67_cb_c3_92_80_50_5e_b9_52_8c_da_b0_ea_52_f1_59_5c_5e_78_71_81_5f_fd_02_ccn,\n 0x23_63_03_15_0f_9e_76_50_3c_cf_1b_e5_c9_0c_3a_48_5f_90_f7_c1_ff_ae_bb_1c_4f_cb_aa_82_a0_51_9b_cdn,\n 0x1f_bb_e0_74_7b_d2_bb_c3_cc_bb_75_2c_ed_98_97_73_19_42_f7_9d_9a_76_1d_3a_ba_4a_16_96_81_e3_0f_e0n,\n 0x14_71_46_fa_6f_46_4f_7e_58_a1_30_44_41_d2_b7_f6_43_33_e2_17_79_cd_71_f8_80_96_2a_50_ea_63_85_ban,\n 0x21_7e_02_c9_28_94_15_16_f5_a9_a7_8e_ba_51_46_8d_93_bf_b2_78_d1_c7_90_61_e6_66_df_4a_32_09_2c_03n,\n 0x24_60_13_b4_23_cc_89_3a_16_b6_8c_22_8b_01_b9_38_0b_47_b0_af_be_4d_be_b1_b4_34_0f_58_01_ba_4c_1cn,\n 0x2b_52_25_49_6c_1e_6f_ac_d5_b7_4f_12_70_5c_a0_d4_a7_b7_7c_30_c1_c8_31_1c_3c_81_83_71_67_ab_45_efn,\n 0x0a_95_0f_57_27_49_b6_fa_d6_d6_c3_24_f4_05_68_d7_21_9e_75_a8_84_f9_bb_f9_41_b2_0e_e8_1b_42_c0_22n,\n 0x1a_71_88_8e_66_4d_2b_a9_bb_a5_aa_22_fb_c3_80_f2_98_10_d0_92_7d_28_6a_f5_91_10_76_9f_07_f9_97_6en,\n 0x15_c5_c7_20_ef_6f_a5_b0_29_36_37_6c_29_83_94_bb_ed_ce_59_82_4d_6c_a9_fc_26_0f_5e_dc_8e_a5_fa_bcn,\n 0x1c_84_98_3c_ab_32_fb_96_cc_d0_27_6d_25_fc_b5_a9_78_ed_ee_69_35_20_c0_b1_ca_09_77_92_cb_d1_74_2fn,\n 0x10_75_9b_7a_74_4e_81_32_2f_83_68_ff_fa_68_45_10_28_67_e2_1c_a6_89_3d_97_b4_63_09_4e_c7_2a_1e_24n,\n 0x1a_b4_3f_1a_cf_28_76_37_67_e5_87_54_2a_3f_39_9f_09_98_b4_d2_0f_53_2d_1f_5b_39_35_ef_2c_a3_fc_6an,\n 0x1d_32_f2_e0_c5_64_27_58_0d_e9_62_f1_47_63_38_99_ae_72_37_f4_cc_fc_dd_52_e0_d9_b7_b0_37_ce_20_cfn,\n 0x21_47_50_6e_00_fb_e0_f6_45_81_15_12_6d_f9_ee_b1_ae_4c_33_1a_4a_38_19_15_cc_19_5b_ec_94_88_8d_65n,\n 0x04_e9_5e_d8_d8_a5_54_69_5f_2a_84_41_c1_75_f2_2c_61_ab_04_1a_a4_d2_7e_48_21_06_2b_02_f7_a2_9a_b1n,\n 0x2c_c1_81_f9_4d_e5_71_9f_e2_ce_f2_22_27_77_dd_98_aa_da_9d_4c_bc_d0_76_a2_ce_cb_3e_a7_8f_8b_fe_aen,\n 0x16_15_f6_d5_82_6c_aa_a6_78_c4_e5_c0_1c_ef_49_b4_42_44_81_57_d2_c6_51_e3_b1_c9_9d_32_b2_c5_1c_0bn,\n 0x05_4b_0e_24_91_d3_eb_d1_7f_7f_ee_0b_0d_ce_67_b8_23_46_d2_24_aa_aa_47_7d_5d_98_fd_e2_bf_5d_f5_d3n,\n 0x21_05_2f_e1_7f_3f_83_39_0a_d8_aa_ae_ce_48_b7_92_4e_54_b8_07_0b_63_04_f4_b4_e8_ab_9f_89_49_37_13n,\n 0x1b_1d_8d_90_5c_71_39_58_dd_31_5b_0c_84_a6_5d_47_9f_6f_b8_d8_69_86_30_e7_f0_96_34_2b_e4_f1_29_ben,\n 0x08_76_5d_f9_21_41_cc_7b_51_bd_08_73_fb_52_59_a8_ac_d5_a9_b5_08_28_89_ae_55_0b_f3_ff_1e_8c_fc_39n,\n 0x1d_d1_e2_c0_68_b6_53_20_35_42_fe_a3_74_63_29_ec_a9_54_b9_e2_8f_dc_bd_89_58_70_b3_2f_34_81_10_54n,\n 0x05_05_82_af_fd_fc_4e_5c_3c_e7_3d_74_66_80_b8_30_a8_43_93_95_61_21_67_67_e4_ee_63_42_50_2e_2a_18n,\n 0x15_15_72_a6_d1_f5_7d_e2_fa_9e_4a_aa_54_5f_fb_84_2b_b1_84_ad_3e_0b_0b_de_29_27_1b_55_73_2e_a2_d3n,\n 0x18_d0_aa_38_0c_37_9a_8e_70_00_53_2a_66_d5_61_41_0e_8d_11_8d_2e_af_b6_c0_d6_d3_fa_f2_dc_8e_85_ben,\n 0x24_24_a5_86_bb_57_c0_88_3e_e4_ca_4e_c7_31_96_9c_74_22_50_2c_8a_21_9c_b9_5c_ed_3a_12_09_b0_5f_ddn,\n 0x01_74_d6_64_3c_cb_63_2a_14_b1_11_62_fc_35_70_06_04_c5_93_99_d3_a0_07_f5_f8_91_50_4b_cf_7d_77_cdn,\n 0x18_21_04_c9_41_66_05_2f_dc_74_8d_49_79_90_11_38_79_15_b2_99_e0_4a_80_e3_3e_61_27_40_70_6e_7a_6an,\n 0x0b_70_c1_18_52_30_e2_2d_cb_94_84_28_ce_dd_e9_d7_dc_9c_96_7e_bd_45_af_4d_9c_d6_2d_a0_7b_d5_22_f5n,\n 0x1d_b4_4b_6e_01_42_ba_e1_07_0f_73_45_22_bc_1d_40_b9_9c_fc_51_e6_2f_f6_da_d3_89_fd_e5_dc_68_ec_a0n,\n 0x23_77_95_98_11_9f_af_92_33_36_a2_e9_fe_15_a7_a3_2d_46_00_a8_b1_f7_bb_c7_3c_dd_f1_0f_ca_81_aa_b2n,\n 0x0d_31_0d_08_d4_8c_04_dc_78_bd_a6_87_d4_8a_00_59_8b_b9_63_f0_9b_18_df_3b_8b_8d_31_62_9b_7b_8a_82n,\n 0x2a_8b_f4_e2_d5_24_76_ec_48_82_9a_99_fa_53_b4_7c_b1_04_5b_c3_fc_ce_be_b2_52_21_81_86_16_1c_7b_3cn,\n 0x13_cb_b0_f3_81_a6_e6_60_9c_3f_e4_07_7d_ce_0d_a3_21_38_96_6e_7b_a2_81_28_96_00_18_37_58_5b_2e_acn,\n 0x2a_e4_12_65_2e_44_17_27_33_e1_93_9f_d3_2e_b7_80_46_47_d2_97_68_a7_4b_33_50_36_b2_45_53_57_1b_40n,\n 0x03_f4_26_a5_c7_70_7a_7d_a1_a8_34_8f_9e_6c_0e_6d_5b_2d_50_7b_be_98_a0_06_f7_15_bf_2f_28_c1_43_33n,\n 0x09_2f_d1_fd_3d_9c_5b_fc_cb_d1_58_1b_4a_16_ec_0a_80_91_5e_d2_f5_6a_3d_40_99_b2_39_a9_b4_44_9c_d0n,\n 0x00_b1_e8_16_df_b8_39_a8_b3_1d_dc_e5_19_63_f3_52_11_31_a5_ac_a1_cf_cb_3d_20_49_2f_9f_a4_ff_2b_8an,\n 0x0c_da_a3_a6_37_ae_81_ec_5f_c6_b4_f5_92_b5_e0_4f_7f_d8_f1_f6_7b_91_5d_7f_cb_95_c9_c5_bf_3d_7c_73n,\n 0x11_fe_d5_b9_e7_36_56_29_38_a5_71_aa_d6_c1_bf_98_78_95_bd_25_d5_3e_fb_5e_93_a8_95_89_d6_38_d0_fbn,\n 0x0d_06_b9_03_8f_5d_04_1a_9e_dd_11_4b_3d_63_46_ad_5e_11_d8_81_7d_fa_3e_74_03_4f_b8_2f_cf_bc_86_32n,\n 0x22_f7_9b_3d_9d_f4_25_6f_c8_35_f2_3d_5e_16_c8_f9_63_eb_0f_80_d7_6b_90_c4_7a_f4_63_b7_ee_49_af_2fn,\n 0x2b_b2_ec_d7_4b_e3_c8_47_c7_df_14_a1_c8_39_37_f8_b2_4a_3b_a2_74_49_59_a2_f3_73_3d_d4_cb_77_7e_6bn,\n 0x10_bd_1d_61_17_07_eb_e4_a8_2d_2c_a9_62_e0_05_4b_b2_b7_63_1d_e8_5e_34_68_fa_f0_05_ad_ed_c2_b9_31n,\n 0x2f_40_35_fd_b1_62_2d_23_d1_b9_cb_82_da_64_f9_f7_07_1d_09_73_2c_f1_7a_53_ce_84_2e_aa_42_f3_65_c4n,\n 0x0f_a7_d8_c1_7f_a7_01_8a_d1_4f_08_9e_b8_56_4b_c9_a7_c1_57_70_0b_bd_07_c3_a6_4b_a2_58_b8_e7_92_0dn,\n 0x0b_8c_a9_36_88_bf_b7_c1_ae_36_5a_eb_34_46_30_c1_9d_0f_1e_74_b6_66_de_c2_b0_04_36_f4_96_bc_c5_d6n,\n 0x10_d6_85_61_4a_99_a4_05_41_3e_35_59_d8_26_17_52_05_a0_3f_ff_d9_b0_37_ce_d9_0b_ef_0a_f0_db_1a_72n,\n 0x06_8e_16_2c_6a_02_ca_ee_02_1d_6f_44_61_fb_4e_1c_a1_d6_09_2a_85_d9_00_44_c3_eb_14_e0_7c_4e_4a_83n,\n 0x2f_6d_6a_0c_4e_e2_12_96_49_6f_69_a9_65_cb_8f_e2_39_b9_1e_a8_17_67_cb_82_06_4a_8a_a5_e2_7b_cc_56n,\n 0x0c_6a_43_9a_ed_8e_c8_6b_5b_a5_f2_a4_a0_45_fa_f2_fe_48_bb_44_2d_9f_75_21_be_f4_98_d0_57_c2_13_7cn,\n 0x1e_6b_0d_4b_88_e3_93_a9_d9_15_c0_13_b4_fd_a5_a7_c3_b5_89_87_2c_06_df_dd_a2_07_e1_d6_64_1a_ae_2dn,\n 0x1b_21_16_f8_a7_de_69_81_e9_94_25_44_6c_1b_72_0c_b4_49_55_dd_4b_d4_6f_cc_6c_52_23_60_e1_c6_bd_8bn,\n 0x05_01_3f_00_c8_67_73_de_39_c0_1b_a3_cc_ee_a5_c0_cd_b0_d8_82_f1_99_56_9f_ab_37_c4_40_e2_5a_8e_56n,\n 0x08_3d_43_0c_48_9e_c6_84_c1_64_df_db_fc_5a_05_56_dd_90_ab_bb_11_a8_ba_10_37_b9_2e_7c_3c_e4_2c_d3n,\n 0x1b_0d_fa_5c_2f_0f_a7_39_b0_3b_0b_ff_40_61_6c_9b_5a_b2_46_c2_96_94_47_3d_6e_23_ba_5c_5d_d9_82_86n,\n 0x05_53_fd_ce_a1_49_8f_28_a9_c4_a5_86_d4_7b_02_97_b2_37_e5_9c_2c_0e_70_34_45_9f_79_cb_a4_b2_90_45n,\n 0x16_4c_27_2c_42_e1_f9_07_ba_9f_c7_af_62_e5_a9_dc_83_6e_9e_71_24_ea_cc_6d_bc_5c_fe_ee_3b_74_e5_e1n,\n 0x2e_ee_e9_49_38_2b_74_22_9a_3a_5f_86_42_0c_59_6b_82_24_22_0e_e9_c1_d0_93_cf_96_5c_20_03_c7_73_dbn,\n 0x1a_a7_b8_99_db_42_8b_64_9f_a1_e4_67_25_81_90_9f_15_a0_91_c3_01_c5_27_ec_4a_54_c3_c0_93_ed_60_03n,\n 0x28_44_66_70_92_56_51_57_f2_a8_8a_05_58_45_0a_dc_c3_88_e6_14_8d_24_17_ca_c3_df_f9_5e_bd_70_73_03n,\n 0x24_7c_0d_86_58_c6_a5_7e_c4_82_ad_c5_e9_ee_6b_b6_79_48_d9_6c_78_1a_d9_83_11_e2_79_b8_1f_67_ef_35n,\n 0x21_62_1a_3b_3c_64_89_99_1b_00_0d_1e_fc_dc_69_b0_a5_40_d0_96_80_49_7d_61_e9_62_84_e6_68_c9_ab_adn,\n 0x2d_ae_aa_b1_25_9f_f6_59_6d_09_ee_4b_56_7c_da_64_ab_0f_b8_8a_31_78_32_66_e5_d1_40_48_11_8e_62_f9n,\n 0x19_06_ca_fe_7d_f4_f4_a8_35_9a_48_18_a4_ed_5b_67_69_ca_da_0a_2e_04_6e_2d_61_38_bf_8f_84_40_9f_4dn,\n 0x00_c2_ad_b5_16_00_bb_a9_2f_c5_3d_c2_16_5f_80_f7_05_3a_13_50_be_50_f6_26_8d_be_18_b1_0e_ba_2b_31n,\n 0x26_b2_85_16_92_25_65_8f_8c_cc_30_40_cd_85_c3_ce_1f_44_7e_47_ee_b7_be_8e_3b_6d_f3_8d_f3_d4_4b_cbn,\n 0x1c_2b_7e_2d_b5_64_ee_f0_90_9d_c7_75_36_04_a4_cc_5d_45_d6_43_35_5e_3c_60_32_1d_24_a8_0e_d6_cc_adn,\n 0x2d_da_3e_9f_c0_9d_2c_2e_6d_52_a7_6b_da_84_df_10_6e_d2_36_ff_95_6f_12_7a_80_4f_c7_02_5b_fc_dd_f8n,\n 0x11_91_9b_8f_47_97_e0_ee_89_f0_5e_04_28_f5_78_33_d8_b5_e7_41_04_81_4a_6a_b6_64_de_8a_45_88_7e_f6n,\n 0x12_7b_b2_c1_e8_55_29_40_58_20_3d_e7_a7_3f_05_5c_6f_42_60_1a_24_75_b1_d7_5f_93_95_99_3a_da_7b_1fn,\n 0x2c_59_31_8c_f4_32_b8_e4_99_a9_9a_08_63_c9_14_e8_c7_83_6a_23_b3_1b_c7_58_02_81_82_f8_32_83_f6_1bn,\n 0x13_b2_46_77_e6_8a_df_b8_73_ed_0f_23_b0_02_5b_b5_74_7a_5f_c7_44_35_30_25_d2_12_8d_44_70_17_ac_7en,\n 0x26_28_fe_26_b4_d2_bc_5f_8e_90_67_9f_79_8c_d9_de_5a_47_bd_2f_04_86_51_4b_6d_b4_c7_0c_f3_c2_47_c3n,\n 0x23_7c_d1_60_a1_d6_ae_30_ef_20_c9_34_76_c9_ce_0d_60_66_c0_e7_a5_ab_d2_61_fa_aa_4b_cc_ce_af_ea_bbn,\n 0x1e_1a_d5_84_ab_67_5d_5b_5a_4a_ed_3c_a5_b8_04_d6_2c_29_73_35_74_cb_9c_9a_da_25_77_d8_76_b9_9c_24n,\n 0x0f_be_d7_31_a8_21_74_de_7b_e9_e0_47_98_56_73_58_0a_b6_cc_41_94_89_38_84_c9_f5_1e_a1_1f_fe_8f_58n,\n 0x0b_44_1c_8f_14_23_a2_9a_71_b1_dc_b1_6f_da_d0_31_6d_53_34_a2_98_fd_44_80_12_5e_60_85_dc_ff_10_78n,\n 0x21_4e_57_3a_6c_57_ff_7d_a3_96_c0_aa_15_ef_aa_21_fc_09_30_c5_99_84_cf_9c_8c_74_da_de_3a_f9_61_f5n,\n 0x1b_6e_43_64_57_6e_33_a3_cf_54_bf_21_c1_0a_91_c4_8f_7e_dd_bd_91_06_b5_05_96_4a_e8_e0_b4_8a_5d_ben,\n 0x2c_b6_0d_c3_0a_af_c3_a9_9f_1f_43_9e_b3_4c_38_e8_a7_ab_26_5d_e4_6f_45_00_3c_f2_60_0f_3a_46_19_a5n,\n 0x08_1c_0b_5c_56_71_1e_54_1b_de_ac_15_0b_06_44_a7_ce_e2_55_10_2a_46_22_dd_99_0f_34_10_d1_68_53_c6n,\n 0x19_20_f8_47_ae_83_96_9a_f5_be_39_5a_45_98_38_98_4a_0d_b7_73_10_b2_c8_c5_33_eb_60_29_08_32_14_44n,\n 0x1b_d1_4c_b5_b0_95_0d_3b_47_83_c5_3d_2c_73_3a_2a_e6_e9_14_ec_60_15_51_70_39_12_8b_15_47_46_ae_f7n,\n 0x2c_a1_67_00_e6_71_34_be_0e_ef_32_9f_56_1f_b0_57_86_7a_b0_c6_6a_7f_a1_da_d6_cd_60_eb_3c_0d_32_fan,\n 0x23_a4_bd_6b_ef_7f_4d_21_c2_61_92_47_55_47_24_56_63_fb_dd_3a_25_1a_fc_a2_76_36_ed_1d_ed_e9_53_65n,\n 0x00_90_20_4c_be_55_0a_36_f1_1c_9d_12_b2_a5_6a_6a_e7_39_9c_ff_cb_c1_68_2d_76_49_cd_fa_12_b5_b3_a2n,\n 0x1a_e9_94_56_d0_e8_b2_38_51_6a_52_06_75_59_e5_99_20_7d_a2_85_d0_37_be_d5_c7_48_f3_9a_6f_94_a0_4bn,\n 0x2c_18_b3_a0_fc_4b_f3_5b_eb_9a_40_06_4a_69_c7_d9_76_ef_f4_5b_ae_2c_16_91_00_5c_b8_35_ac_07_f4_4fn,\n 0x2d_ca_94_4b_91_01_1e_a9_f2_24_fe_5e_06_12_ec_20_21_e2_e3_11_df_ad_8d_8d_52_37_6b_60_dd_29_63_afn,\n 0x2e_a9_0c_e7_f3_4c_86_45_96_61_7f_ec_56_2b_4c_d9_fa_0a_cb_71_16_16_55_95_7a_d4_61_5e_bd_f4_64_5an,\n 0x07_d2_a1_6f_ad_79_5f_38_26_79_99_a7_0e_bd_d9_b2_b2_4d_e8_5a_ad_12_ca_be_10_85_5c_2b_d7_1b_da_2fn,\n 0x23_64_41_5f_c8_64_df_4c_34_1a_8e_42_67_a1_f3_e8_32_ea_51_43_a4_e2_68_6e_0d_84_40_c0_44_ff_86_2cn,\n 0x2f_5c_88_b9_6a_ed_85_4c_c0_04_9a_9b_a4_76_a6_ba_61_78_9e_56_92_cf_2d_7d_8d_9a_7c_c7_b9_d0_cb_b1n,\n 0x29_90_2a_ae_bf_3e_38_f0_ef_39_c3_7d_eb_5e_4f_b0_f3_2f_cf_23_b7_45_11_a6_21_46_b3_f7_9c_25_f6_efn,\n 0x0e_19_0e_05_7e_bc_f0_2c_e0_36_0f_76_fd_5b_27_9a_4f_e2_ba_80_64_6e_d6_9c_c7_d5_68_41_1e_81_cb_51n,\n 0x23_09_7b_82_c0_c7_5e_53_cb_80_84_86_9e_51_40_0b_ff_9e_1f_0d_75_b5_25_2e_98_8a_be_35_62_70_2f_7fn,\n 0x30_18_0e_17_53_0b_86_09_01_b1_fd_ca_f2_3b_2e_fb_c1_3e_bd_49_57_4e_69_aa_6d_f1_59_d4_a9_dc_85_53n,\n 0x11_ba_60_59_59_af_b5_de_92_d0_a0_cf_68_94_5b_5e_66_0a_59_e6_c9_dd_2e_e4_83_8a_9e_52_dd_37_a0_9en,\n 0x19_f8_be_eb_36_29_ca_17_72_0e_83_26_9c_01_02_78_23_1a_33_03_19_be_ab_e7_93_e9_af_41_51_8a_34_can,\n 0x27_8f_39_89_7c_c8_36_10_33_0d_b2_65_f6_f9_59_ec_98_3f_a1_38_38_ba_88_f7_6a_ad_03_4c_2f_90_15_1bn,\n 0x23_49_ca_bd_a8_3a_e2_bf_55_84_2e_72_b8_04_b3_64_35_a4_9e_0b_2f_85_01_f0_08_56_60_5e_24_de_c3_82n,\n 0x07_27_9b_75_f7_a7_c1_21_00_5c_3b_62_b7_d1_9d_ac_ab_6e_15_43_f1_2b_d3_66_5c_31_81_8c_5f_2c_7a_a1n,\n 0x00_6a_49_ce_c0_50_0c_05_9b_f6_19_70_d3_a0_3c_4e_ca_07_9f_3b_ea_76_bd_b6_52_c9_c1_3e_b3_a5_7f_26n,\n 0x00_87_7d_c2_9b_50_40_19_64_44_85_57_66_70_f3_8c_a5_31_49_69_5b_5a_ac_c5_c4_d5_01_08_e2_68_31_09n,\n 0x29_49_4a_49_9f_d7_cc_4e_34_73_0c_48_b2_2a_62_9b_24_d7_4a_72_83_00_69_6f_52_3b_ef_ad_8a_32_9f_77n,\n 0x06_20_86_a3_a2_4f_3d_d0_72_19_b3_89_75_c4_51_b4_84_09_e3_43_3e_ca_86_c0_83_20_70_c8_2f_6d_ba_a0n,\n 0x2b_00_d3_9e_ee_2b_41_06_a7_0e_a6_18_4d_95_dc_19_99_1a_0f_c2_1c_47_27_17_74_0c_32_76_a9_a9_05_1cn,\n 0x25_c7_88_de_de_e3_6b_38_19_25_50_3d_c1_bf_c8_1f_09_87_63_64_b7_64_98_9f_86_b9_a9_64_2c_92_ec_ebn,\n 0x0a_33_9d_7c_33_99_eb_00_90_f9_ca_88_71_96_f5_5e_59_27_dd_e8_68_2c_37_fc_9e_85_00_5d_0c_a1_4e_5dn,\n 0x01_0f_dd_d4_d6_28_ee_cc_6b_b5_5e_c4_ed_56_3c_9c_9f_bd_76_ef_45_c5_91_c2_21_e0_8b_66_f4_4c_95_75n,\n 0x08_ca_d7_f0_9f_cd_6d_0a_76_3b_15_3a_6b_a1_3d_09_e4_fb_91_0e_98_a7_45_70_70_95_c4_2a_c3_2f_7c_d5n,\n 0x2b_a8_cf_3a_07_13_8c_08_64_32_63_e2_d4_ed_cf_9a_4a_47_32_8b_fd_a1_37_ed_d4_11_5b_a0_b3_27_4d_78n,\n 0x28_0c_5a_ad_b9_2f_18_63_c0_ab_20_ca_14_b0_1b_00_20_1b_21_df_b7_1c_1e_d3_29_59_b2_12_dd_e8_e8_afn,\n 0x24_3c_43_be_62_58_85_bf_ba_57_54_be_ff_db_8c_4e_27_18_bd_1a_e3_8b_ac_39_b6_68_83_a2_03_24_54_7dn,\n 0x1f_b8_a7_db_96_d8_80_75_b7_ab_36_e7_16_69_56_8b_1a_88_c0_bc_c5_72_ab_1c_78_03_03_c5_69_e4_10_8an,\n 0x0f_7a_df_6a_27_eb_97_9d_0a_14_7b_41_72_55_05_8e_3d_d3_99_f2_54_e1_d1_57_1e_5a_60_25_d8_5d_59_3fn,\n 0x2a_9c_20_bf_b0_23_4d_d2_19_ac_59_33_e7_61_60_40_ff_98_d6_f0_99_b5_3c_e9_db_b7_6b_7a_21_c6_55_e9n,\n 0x2d_b1_1a_75_d8_64_99_2a_6d_f5_6c_bb_1e_b5_69_da_36_92_7f_43_36_2e_98_3d_e1_2b_76_61_aa_91_f4_65n,\n 0x29_cd_63_ef_57_ff_89_7a_c5_b7_df_3b_a8_ed_72_d4_3a_24_ff_18_a0_3c_aa_4d_99_f1_e5_31_90_cd_23_9an,\n 0x14_d0_52_19_32_e8_73_b6_db_85_e6_a3_aa_b0_01_46_9a_16_8e_97_8e_eb_4c_1a_93_86_19_0d_d7_4e_de_71n,\n 0x02_6a_3e_83_40_54_cb_47_36_72_3d_1d_15_a2_41_86_9f_8f_23_47_5d_37_7e_69_e4_a3_73_16_89_cd_ed_16n,\n 0x08_bd_82_77_45_9e_8e_0a_83_59_ee_53_23_54_1b_cc_14_65_b2_7b_96_85_fc_f0_d7_7e_4a_a7_3f_4a_5e_a2n,\n 0x19_f6_a1_b5_a8_02_2b_d1_24_d2_62_a7_74_99_62_11_14_c8_7b_1b_dc_8e_8a_c7_15_f0_d9_06_b5_f5_71_f0n,\n 0x1f_99_47_7d_b5_03_1b_0b_a7_23_b1_c0_c6_d1_56_fe_88_ea_f7_8d_e0_92_41_f1_f5_9e_08_34_f9_1c_08_17n,\n 0x07_a8_7e_da_d5_06_7f_36_1d_f3_b7_64_ef_37_fc_31_17_5e_01_7d_96_35_a6_62_8c_ef_91_58_f6_3d_44_b3n,\n 0x26_4f_e1_61_c9_8a_2c_04_51_4b_92_f2_0b_75_c2_12_23_b2_c2_26_55_e8_fe_2f_76_e4_ce_8d_25_63_91_0dn,\n 0x25_bc_ba_83_91_59_54_bf_c6_a3_fe_5b_cc_f6_ec_56_68_8e_c2_09_cf_1f_97_6a_48_45_4d_c6_de_d0_79_9cn,\n 0x27_42_a8_2c_41_ae_2f_f6_8e_52_48_03_a4_3e_38_7e_42_5e_94_3a_28_47_fd_72_92_27_cd_01_b7_07_dc_ffn,\n 0x0a_4b_ca_22_9e_b9_ce_a9_67_db_5f_86_50_f3_a9_21_3a_7e_ab_a0_66_45_29_ec_48_cb_48_16_a3_2f_3e_40n,\n 0x16_2d_bb_f7_2f_31_e2_af_5a_8c_62_97_5d_6a_dd_0d_d7_47_a8_68_17_be_d0_9d_69_0d_20_95_ac_1f_30_2an,\n 0x1d_90_d3_a9_70_5c_5a_9a_1e_06_c7_77_c9_15_8d_78_60_3a_d4_f9_b1_0c_ef_41_aa_d2_b8_00_8d_86_bf_c5n,\n 0x2e_97_da_10_8e_41_92_0c_71_50_7d_3f_fc_41_98_f4_e4_03_fc_08_0e_31_93_b6_34_71_e8_16_d3_aa_65_5cn,\n 0x2b_ea_7c_fc_ff_46_cb_79_82_8d_1b_d5_bc_4d_18_a3_75_76_5b_d6_92_79_28_bc_ff_be_a2_ae_ee_45_45_19n,\n 0x2e_5e_54_e0_fc_64_2d_8a_0a_21_df_48_31_0f_e8_9d_3e_cb_81_bd_2d_56_4b_2b_12_d3_7e_a4_1c_e6_63_74n,\n 0x2d_f4_a4_4b_e5_ef_c0_c6_1c_49_6a_8c_b7_23_e9_fa_fd_7d_ca_85_ef_9c_5b_a5_2c_71_a7_8f_f2_a5_9d_9an,\n 0x1d_da_9c_60_83_3b_52_67_6c_c9_47_6e_cb_cb_34_ee_7f_5b_75_9f_c0_f8_22_9f_1d_64_5e_38_07_3f_e0_51n,\n 0x2f_91_ee_e0_54_fa_51_43_21_dc_0a_ca_21_ff_25_af_73_81_ca_3f_4e_f0_9a_2f_a2_73_55_c4_fb_d8_86_cbn,\n 0x09_43_27_a7_97_22_ee_11_6a_af_81_96_c4_84_4e_44_2e_7f_36_44_4e_a9_c8_16_94_84_10_ff_11_1e_35_03n,\n 0x0e_0d_e3_29_eb_c0_13_68_46_71_aa_68_f0_f5_c5_6a_65_a3_c7_e3_1b_34_af_28_d4_2e_7d_b6_06_b2_ec_4bn,\n 0x0b_fc_1b_da_ea_39_97_e6_3d_b6_3e_94_d4_30_74_ea_37_9d_5d_5f_96_16_ed_d9_f1_9c_17_87_e4_87_59_37n,\n 0x2d_74_25_6d_47_0e_8f_89_3f_5a_6a_12_72_37_c2_45_02_c9_e1_05_67_b8_92_f7_71_49_83_d1_42_d0_07_b4n,\n 0x10_85_23_06_2a_51_a8_b4_28_ee_c2_a6_62_84_be_bd_07_dc_1e_ee_90_4f_43_47_08_3f_d1_12_06_49_d6_16n,\n 0x0c_5a_80_5d_2e_c7_e6_b3_20_1e_49_54_18_4d_dd_c7_a9_3d_39_fc_22_1f_d8_67_4b_33_b6_8d_65_ca_9e_48n,\n 0x17_2a_06_21_56_73_e0_c0_43_2c_98_ac_ce_1c_42_6c_fe_d6_40_85_01_97_e7_2f_e8_48_b3_3e_fb_c8_80_8an,\n 0x0f_65_d0_3f_cc_c7_53_7e_b1_f4_fd_6c_5c_d0_5f_b0_4b_40_39_6e_99_32_8a_9e_9f_34_4c_5d_bd_2a_2e_9bn,\n 0x20_c3_0a_d3_d6_b5_72_57_7a_87_33_99_60_93_d5_b9_39_fb_80_f2_e7_ca_a5_3f_0c_c9_67_c3_34_dc_d6_fcn,\n 0x03_73_fe_bd_e1_02_60_fe_fc_6c_e9_67_09_14_a9_ce_c5_c2_05_a7_5d_23_de_f6_2e_22_fb_f3_1a_61_de_a3n,\n 0x23_34_ba_c2_9b_92_db_76_9c_06_30_8b_78_79_43_37_5b_a7_e4_56_0f_db_74_1a_a6_56_9d_e8_d1_64_17_dbn,\n 0x0a_3e_20_c8_a6_1c_8b_fa_ec_bd_65_e4_3b_13_a5_93_82_b0_21_35_8c_db_f7_a9_98_05_d6_58_22_f4_37_ban,\n 0x00_ea_78_ba_65_52_8a_c7_03_5e_06_fb_d9_be_63_a5_0e_0c_af_8d_06_28_f3_3c_7b_22_9d_09_31_aa_6f_05n,\n 0x0d_16_82_fa_0a_92_4b_9b_35_11_18_8f_bc_8f_21_df_c6_f9_ef_8e_ea_18_91_60_7f_22_b1_f9_16_72_04_d8n,\n 0x28_44_a8_ef_b8_53_b2_db_63_4a_3c_f3_6c_e7_cf_dc_33_1e_7f_32_b0_03_5d_67_05_de_c1_54_b8_24_b4_cfn,\n 0x2a_2a_57_46_61_f9_39_e6_c6_a4_9f_90_10_7a_2b_54_a0_00_20_22_f9_63_c2_0c_1b_f8_75_3c_82_6b_ad_bfn,\n 0x11_cf_62_ee_06_e4_ab_92_6c_48_2f_35_52_5a_5d_d3_00_a2_59_be_ad_4c_d8_fb_94_96_ca_06_aa_c9_06_5an,\n 0x29_04_5c_7f_a9_c7_3f_c5_b1_e1_34_99_d1_71_a1_6f_37_6b_c8_b8_12_f2_65_49_08_b5_ec_d2_b8_26_17_69n,\n 0x05_7e_44_37_76_42_d4_f3_c7_c1_62_5d_ec_2f_3f_4d_22_e9_15_c7_e9_05_52_87_9a_f0_16_f7_a1_66_5f_21n,\n 0x25_8c_46_40_ac_1d_a9_95_bd_05_25_fa_91_62_d7_cb_3a_5d_9b_26_7d_04_4a_8c_3c_3c_43_10_e6_89_71_fdn,\n 0x09_5e_e6_ff_55_68_fa_53_50_92_d7_4c_16_31_1e_47_7b_7c_62_ba_b5_fd_58_5b_7d_4f_1b_f6_5a_b4_cc_6cn,\n 0x08_06_95_10_88_d6_f8_36_31_a3_71_94_86_26_f6_66_25_80_0d_5b_61_ee_ea_63_d0_d5_3f_1c_46_ae_4e_21n,\n 0x2e_8c_ac_5f_e2_f7_0b_02_6d_84_f3_9f_1b_c8_0f_3e_bf_f2_09_36_25_a1_d4_4d_8c_94_98_a3_17_2e_e2_fcn,\n 0x11_2a_ae_3d_80_32_ae_80_df_e0_27_a7_09_61_c0_4d_17_c9_96_09_a3_8c_2a_6e_6a_60_9e_bd_31_2a_11_4an,\n 0x07_f1_bd_28_9a_ae_e1_f4_c2_83_2b_cd_88_74_63_43_d2_12_8b_98_26_f1_8f_f4_7a_02_c6_04_e0_4b_25_6fn,\n 0x02_0f_b2_51_f2_94_ad_1f_c3_d5_53_cf_9d_c5_32_cf_21_05_d2_8b_41_9c_b3_37_9b_e5_4f_68_38_4d_36_56n,\n 0x0a_76_30_9e_f4_f3_5a_0d_94_2d_2a_db_40_04_21_03_11_7f_8a_92_f8_fa_22_71_3e_5c_8f_46_30_a3_3a_ffn,\n 0x02_e3_38_a6_e2_76_39_4e_62_08_55_13_7d_23_d8_6e_73_b6_a9_c4_47_13_54_3e_6e_f0_ca_37_30_32_b6_62n,\n 0x11_27_7c_02_1f_4b_b0_56_61_12_a6_2d_02_98_9f_30_6b_e3_d6_a6_1a_55_d6_c2_bf_32_b9_b2_d6_eb_48_8en,\n 0x0e_41_6f_59_77_98_c2_42_81_3d_07_f0_2f_a3_f5_af_d3_cd_23_ee_e8_be_c0_5c_cf_32_28_0d_2e_af_0e_85n,\n 0x12_46_e8_0a_1e_90_da_f8_f5_0c_8e_70_a1_97_32_29_c1_c0_47_6a_26_2d_f7_91_36_08_7b_3b_25_23_25_a7n,\n 0x02_e7_f5_6a_c5_30_02_af_ed_dd_2e_cf_49_25_0b_52_34_d4_0e_d2_59_24_ce_04_da_52_fb_13_d8_19_7d_b4n,\n 0x0b_38_3f_46_0b_71_3d_1a_f2_c2_72_1e_f8_6d_db_9e_e9_7b_4d_51_28_19_93_ed_b7_74_72_ac_ee_55_28_22n,\n 0x01_4c_46_b4_a3_f2_5b_85_a2_d1_08_5c_fd_a8_12_c8_ae_55_86_60_0b_47_6a_cf_5e_6b_61_45_ab_44_9c_52n,\n 0x0b_a3_a9_5d_3c_28_b3_92_f3_95_75_69_17_9d_b6_35_59_3a_9f_e5_ea_aa_a6_41_02_59_ca_e7_a6_6a_b6_35n,\n 0x02_bb_d2_ad_31_0b_bb_5d_25_46_32_88_72_c5_4b_64_e2_5a_b0_5e_34_77_e0_4c_e1_f0_30_21_ef_31_b9_0bn,\n 0x1c_f0_63_7f_f2_ab_d7_2a_4c_5d_8b_24_af_99_98_fc_29_d5_f2_fa_62_ab_47_91_4d_f1_4e_89_74_67_d0_a3n,\n 0x26_3a_cd_f4_5d_07_9d_43_b1_43_66_25_d9_c3_22_9e_58_d8_2d_af_3a_40_bf_89_e2_67_2f_f6_78_5b_a5_80n,\n 0x28_11_eb_97_a6_00_f1_39_12_34_8f_4e_9a_f4_7d_30_db_e0_80_50_ea_08_37_01_0e_17_4e_c3_f3_ac_db_84n,\n 0x15_e6_81_96_08_36_85_1b_15_c8_e9_89_6e_91_d6_5f_fb_1b_c2_47_79_4c_59_00_e6_8a_e8_2f_1c_f7_32_adn,\n 0x1a_1b_f5_d7_b7_3d_6c_b3_dd_b0_fc_d1_06_55_06_74_cf_8b_49_2a_86_44_0f_90_99_45_43_47_1d_55_44_05n,\n 0x09_13_7e_87_36_49_2a_fc_6d_71_4d_85_4e_c1_bd_8c_0f_e6_3d_40_29_ae_84_0e_6c_a0_5f_b3_a8_b3_62_43n,\n 0x10_07_5a_02_36_e3_c6_93_8e_8a_cf_35_75_9f_8c_19_c8_63_02_60_bd_8e_58_71_6e_de_a9_70_ec_02_ba_58n,\n 0x12_63_44_b4_1c_b4_cf_dd_9d_78_f9_12_e0_2e_e4_70_59_c0_91_59_f9_7c_42_94_3c_5d_2b_73_5b_67_69_cfn,\n 0x04_72_a9_ac_7f_66_00_88_10_89_a1_75_f3_28_7f_fd_c0_1f_ee_57_80_a3_8e_1e_08_8b_06_f0_47_02_4c_4fn,\n 0x0e_52_b1_a8_dc_66_01_4a_14_af_48_0b_80_c8_b3_fd_99_59_26_33_ee_ed_6c_f9_50_6e_4f_6c_a9_bb_b8_c6n,\n 0x19_0e_30_7e_66_26_ac_79_6e_d7_c9_69_32_80_0d_3f_15_5c_a8_9d_84_c0_39_2b_b4_8a_60_b0_09_86_75_40n,\n 0x19_01_75_29_21_3e_1c_b3_31_a1_d0_76_be_32_54_c8_ee_5d_9e_a4_00_5e_93_95_70_6e_a0_f9_18_49_13_84n,\n 0x18_89_de_cf_ad_56_cb_14_a6_e2_92_80_91_55_0a_45_04_fb_ab_cd_71_a9_f4_e3_89_53_67_ad_cc_fe_c7_67n,\n 0x14_b3_79_8b_b2_77_13_b3_f9_2f_b0_86_49_23_67_33_54_24_c5_6e_0e_7b_d9_ac_39_b5_58_5f_b1_8d_00_67n,\n 0x21_7f_aa_0b_78_66_c6_60_a7_00_fd_af_3e_f0_43_8a_cf_44_fc_73_cb_7e_ab_c5_fc_19_0b_64_ca_97_05_6dn,\n 0x2b_f4_65_cb_52_71_fe_56_31_21_bb_90_87_7a_82_1d_52_9f_c8_15_fc_ee_37_24_74_ec_02_cf_39_8f_9b_b8n,\n 0x06_a8_3b_6f_33_41_59_34_cc_47_c9_52_b7_91_1c_57_40_d8_d5_6d_e6_a3_48_37_dc_f8_29_2b_a8_23_81_1dn,\n 0x26_bc_4b_71_52_ec_95_96_7d_e1_81_62_da_04_00_a2_b3_69_c9_10_88_83_56_59_da_95_7d_1c_e2_b4_9e_7an,\n 0x0d_9b_c3_63_9a_b1_e9_a5_02_34_c1_0d_70_41_ea_22_20_bb_e7_c9_41_63_18_8f_ab_1f_79_e6_56_d1_3b_18n,\n 0x13_15_2f_07_14_ed_e9_7b_ba_ef_3a_29_d4_4f_b4_41_ae_e8_18_da_c0_4f_11_e4_e5_c6_a4_dc_31_c8_cb_3cn,\n 0x1a_fc_12_9a_67_4b_a4_ac_75_52_df_ea_d9_ae_8d_2d_58_4d_c7_e4_a2_ff_2c_ce_5d_3b_6f_13_50_e0_8d_27n,\n 0x28_49_8b_04_5d_d1_b9_b5_6e_55_80_65_e0_d7_10_06_75_fa_16_28_4a_c0_ce_d1_04_8e_07_c2_80_a1_74_5dn,\n 0x13_f8_ba_f6_ef_c9_42_94_c8_28_29_f5_9d_a2_ac_86_19_1b_03_1b_be_2b_2f_e3_32_cd_30_2c_d5_d9_46_c5n,\n 0x2b_03_14_ee_cf_cf_61_ad_7d_4c_6d_8c_7b_95_ec_7f_c9_9e_cf_8a_64_8c_21_e2_3f_c5_f1_94_64_32_f7_90n,\n 0x2b_d0_23_29_f5_73_d0_5b_d1_4e_b5_97_1f_8e_6d_f9_43_8e_8a_b7_8b_2d_37_a6_8d_db_1a_84_5d_4c_dd_adn,\n 0x2f_12_1e_ea_46_2e_2d_be_25_31_84_03_0c_4c_1a_59_fd_50_fa_b1_ac_5c_49_eb_f6_21_f3_23_47_db_c0_can,\n 0x0b_11_ca_16_57_36_db_53_ff_fd_72_e0_d9_39_b1_6f_d5_bd_e0_7a_03_67_8d_bb_6f_e1_30_2d_ff_3a_be_2fn,\n 0x24_4d_9d_9b_9b_db_f0_a6_22_19_3d_f5_b5_3e_53_3a_e1_46_ae_ff_bb_95_81_5c_14_dd_44_34_0e_19_2b_9cn,\n 0x02_df_f8_34_7e_64_c0_96_6c_d3_27_c4_31_d4_2b_bf_a8_e4_3e_d6_5d_58_d4_52_d2_48_6f_2a_ff_b4_fc_fan,\n 0x22_36_29_91_ba_be_d5_9c_5d_e9_d9_fd_96_a3_39_ac_98_81_81_b2_56_bf_1a_ec_52_a3_d0_cb_89_52_f7_17n,\n 0x0b_5d_dc_a0_4c_f6_62_1a_6f_22_b9_4b_90_39_5a_58_fa_8f_1c_f2_96_fe_5b_eb_40_49_c7_56_5f_4f_2a_50n,\n 0x03_b3_ed_c6_b3_74_4c_f0_57_8b_2e_c4_0d_13_a9_9d_eb_db_6e_71_97_3e_0a_40_d2_65_b9_9a_54_d6_31_0en,\n 0x2d_df_d9_a5_dd_6d_aa_90_51_77_91_20_cb_17_ff_90_46_ed_e5_da_a2_4b_5c_33_36_8f_b8_4b_55_be_e3_8dn,\n 0x2e_92_8f_25_85_64_f1_1b_d7_21_56_b6_27_f0_37_4b_f8_a5_57_c4_9f_88_59_8a_c9_40_22_7c_a2_f5_98_33n,\n 0x0f_97_0b_4e_28_4e_95_a9_79_09_45_9a_34_a0_3b_90_dc_97_03_b2_4f_9c_f0_5f_b5_25_0c_1a_24_86_10_71n,\n 0x02_7a_80_2e_af_2f_9d_af_e4_84_5f_9b_30_90_7f_db_39_fd_d9_c4_4c_5d_18_16_10_f5_58_82_b7_b3_81_ddn,\n 0x04_ac_7b_c0_31_82_be_80_29_a8_44_0e_f8_75_a2_48_a4_80_98_5e_69_3f_d4_ea_eb_92_63_7c_73_e8_9e_31n,\n 0x07_5f_31_91_af_bd_21_d5_14_97_a2_6c_52_46_65_de_74_31_57_12_1f_09_3c_12_0d_93_e1_80_58_2e_af_8cn,\n 0x0b_d3_be_92_13_12_1f_77_9c_2b_2b_0a_02_4b_e8_2b_51_8e_1b_bc_13_4a_65_f4_40_c4_47_6a_9e_af_58_5dn,\n 0x0c_9b_ce_95_f2_d5_96_7d_3b_58_f9_3d_7e_03_c9_31_70_91_7e_a5_3b_5f_8b_27_dc_70_a1_fa_ab_47_4c_ddn,\n 0x1e_3b_04_de_e6_ae_66_35_72_2e_35_46_55_f6_03_2d_1a_5c_a2_e6_d7_af_a0_c7_7b_0b_e1_92_f4_f0_c6_f2n,\n 0x0c_1f_c3_3b_93_19_5f_2a_ac_03_fe_6e_ef_3e_41_10_78_4c_7c_48_32_2e_30_ee_51_cb_d7_8f_6c_e9_d9_3bn,\n 0x2a_b6_04_26_7d_ae_12_49_45_50_e1_ef_27_37_08_dd_11_c1_76_66_77_0f_f0_cc_7c_07_7c_93_5b_f2_af_8an,\n 0x1c_69_98_5f_f7_85_59_51_9a_00_52_ea_05_e6_08_e3_5c_ac_e6_2d_b7_ec_cb_bc_ec_55_af_3d_b9_15_64_68n,\n 0x16_33_4f_cd_42_12_56_39_8c_de_ee_08_a9_34_5a_52_7d_ec_b7_1a_01_eb_43_52_4f_8d_3d_db_0d_b2_4d_48n,\n 0x07_ef_8d_d7_66_51_52_f8_5d_00_93_9c_fb_ab_cf_e3_7e_2b_1e_f8_a7_7a_84_56_8a_ef_e0_1f_1e_9b_5e_a9n,\n 0x0d_cc_42_6d_c8_8b_de_c8_c2_84_8f_2d_88_a2_00_57_1b_8a_01_2c_d0_87_0f_c6_ea_0b_98_14_94_f5_82_78n,\n ],\n];\n\n/* =============================================================================\n * CONSTANTS\n * ============================================================================= */\n\n/**\n * Minimum number of inputs supported by the Poseidon hash function.\n * @internal\n */\nconst MIN_INPUTS = 1;\n\n/**\n * Maximum number of inputs supported by the Poseidon hash function.\n *\n * This limit is determined by the Circom Poseidon specification, which defines\n * constants for state sizes t=2 to t=13 (corresponding to 1 to 12 inputs).\n *\n * @remarks\n * The Poseidon permutation uses a state of size `t = inputs.length + 1` where the\n * extra element serves as the capacity element (initialized to 0). With t ranging\n * from 2 to 13, the maximum number of data inputs is 12.\n *\n * For hashing more than 12 elements, use the aggregator which chains two rounds\n * of Poseidon and supports up to {@link MAX_AGGREGATOR_INPUTS} (144) total elements.\n *\n * @example\n * ```typescript\n * import { getPoseidonHasher, MAX_POSEIDON_INPUTS } from '@umbra/sdk';\n *\n * const hasher = getPoseidonHasher();\n *\n * // Hash exactly at the limit\n * const inputs = Array.from({ length: MAX_POSEIDON_INPUTS }, (_, i) => BigInt(i));\n * inputs.forEach(assertBn254FieldElement);\n * const hash = await hasher(inputs);\n * ```\n *\n * @see {@link getPoseidonHasher} for the direct hash function (1–12 inputs)\n * @see {@link getPoseidonAggregator} for hashing more than 12 inputs\n * @see {@link MAX_AGGREGATOR_INPUTS} for the aggregator's limit (144 inputs)\n * @public\n */\nexport const MAX_POSEIDON_INPUTS = 12;\n\n/**\n * Maximum number of seeds supported by the Poseidon PRF.\n *\n * Since the PRF combines seeds with an evaluation point as the last input,\n * and Poseidon supports at most 12 total inputs, the maximum number of\n * seeds is 11.\n *\n * @remarks\n * The PRF computes `Poseidon(seed_0, ..., seed_n, evaluationPoint)` where the\n * evaluation point occupies the last slot. With {@link MAX_POSEIDON_INPUTS} = 12,\n * at most 11 seeds can be used (11 seeds + 1 evaluation point = 12 total inputs).\n *\n * @example\n * ```typescript\n * import { getPoseidonPrf, MAX_PRF_SEEDS } from '@umbra/sdk';\n *\n * const prf = getPoseidonPrf();\n *\n * // Use up to MAX_PRF_SEEDS seeds\n * const seeds = Array.from({ length: MAX_PRF_SEEDS }, (_, i) => BigInt(i + 1));\n * seeds.forEach(assertBn254FieldElement);\n * const output = await prf(seeds, 0n as Bn254FieldElement);\n * ```\n *\n * @see {@link getPoseidonPrf} for the PRF function factory\n * @see {@link MAX_POSEIDON_INPUTS} for the underlying hash input limit\n * @public\n */\nexport const MAX_PRF_SEEDS = 11;\n\n/* =============================================================================\n * MODULE-LEVEL CACHES\n * ============================================================================= */\n\n/**\n * Cached instance of the Poseidon hasher function.\n *\n * This cache ensures that `getPoseidonHasher()` always returns the same\n * function instance, avoiding unnecessary allocations.\n *\n * @internal\n */\nlet cachedHasher: PoseidonHashFunction | null = null;\n\n/**\n * Cached instances of Poseidon PRF functions, keyed by hasher reference.\n *\n * Uses a WeakMap to allow garbage collection of PRF functions when their\n * associated hasher is no longer referenced.\n *\n * @internal\n */\nconst prfCache = new WeakMap<PoseidonHashFunction, PoseidonPrfFunction>();\n\n/**\n * Cached instance of the default Poseidon PRF function.\n *\n * This cache stores the PRF created with the default hasher for quick access.\n *\n * @internal\n */\nlet cachedDefaultPrf: PoseidonPrfFunction | null = null;\n\n/**\n * Cached instances of Poseidon keystream generator functions, keyed by PRF reference.\n *\n * Uses a WeakMap to allow garbage collection of keystream generators when their\n * associated PRF is no longer referenced.\n *\n * @internal\n */\nconst keystreamGeneratorCache = new WeakMap<\n PoseidonPrfFunction,\n PoseidonKeystreamGeneratorFunction\n>();\n\n/**\n * Cached instance of the default Poseidon keystream generator function.\n *\n * This cache stores the keystream generator created with the default PRF for quick access.\n *\n * @internal\n */\nlet cachedDefaultKeystreamGenerator: PoseidonKeystreamGeneratorFunction | null = null;\n\n/**\n * Evaluation point for keystream generation via the Poseidon PRF.\n *\n * This constant is the fixed `x` value passed as the last argument to the PRF\n * when generating keystream values:\n * ```\n * keystream[counter] = PRF([key, counter], KEYSTREAM_EVALUATION_POINT)\n * = Poseidon([key, counter, 2])\n * ```\n *\n * @remarks\n * Using a fixed, non-zero evaluation point distinct from other PRF usages (such as\n * viewing key derivation at point 1, or nullifier generation at the commitment value)\n * provides domain separation. This ensures that keystream outputs cannot be confused\n * with outputs of the same PRF key evaluated at different points, even if an adversary\n * knows some keystream values.\n *\n * The value `2n` is chosen to be simple and memorable while being distinct from `0n`\n * (which is often reserved as a \"default\" or \"no domain\" separator) and `1n` (commonly\n * used for the first alternative domain).\n *\n * @internal\n */\nconst KEYSTREAM_EVALUATION_POINT = 2n;\n\n/* =============================================================================\n * INTERNAL FUNCTIONS\n * ============================================================================= */\n\n/**\n * Retrieves Circom-compatible Poseidon parameters for a given state size.\n *\n * This function looks up the pre-computed constants (MDS matrix and round constants)\n * required for the Poseidon permutation with the specified state size.\n *\n * @param t - The state size (number of field elements in the permutation state).\n * Must be between 2 and 13 inclusive, corresponding to 1-12 inputs.\n * @returns An object containing:\n * - `roundsPartial`: Number of partial rounds for this state size\n * - `mds`: The MDS (Maximum Distance Separable) matrix for mixing\n * - `roundConstants`: The round constants organized by round\n *\n * @throws {Error} If `t` is outside the valid range [2, 13]\n * @throws {Error} If constants are missing for the specified state size\n *\n * @remarks\n * The state size `t` equals `inputs.length + 1` because Poseidon uses an\n * initial state element (set to 0) followed by the input values.\n *\n * ## Circom Compatibility\n *\n * These constants are sourced from circomlibjs v0.1.7 to ensure bit-exact\n * compatibility with Circom's Poseidon implementation.\n *\n * @internal\n */\nfunction getCircomParameters(t: number): {\n roundsPartial: number;\n mds: bigint[][];\n roundConstants: bigint[][];\n} {\n // Validate state size is within supported range\n if (!Number.isInteger(t)) {\n throw new TypeError(`Invalid state size t=${String(t)}. Must be an integer.`);\n }\n\n if (t < 2 || t > 13) {\n throw new Error(\n `Invalid state size t=${String(t)}. Must be between 2 and 13 (inclusive), ` +\n `corresponding to ${String(MIN_INPUTS)} to ${String(MAX_POSEIDON_INPUTS)} inputs.`,\n );\n }\n\n const index = t - 2;\n const roundsPartial = ROUNDS_PARTIAL[index];\n\n \n if (roundsPartial === undefined) {\n throw new Error(\n `Missing roundsPartial constant for state size t=${String(t)}. ` +\n `This indicates corrupted or incomplete constant data.`,\n );\n }\n\n const mds = POSEIDON_M[index];\n const roundConstantsFlattened = POSEIDON_C[index];\n\n \n if (mds === undefined || roundConstantsFlattened === undefined) {\n throw new Error(\n `Missing MDS matrix or round constants for state size t=${String(t)}. ` +\n `This indicates corrupted or incomplete constant data.`,\n );\n }\n\n const roundConstants = splitConstants(roundConstantsFlattened, t);\n\n return { roundsPartial, mds, roundConstants };\n}\n\n/* =============================================================================\n * INTERNAL HASH FUNCTION\n * ============================================================================= */\n\n/**\n * Synchronous internal implementation of the Poseidon hash function.\n *\n * This function performs the actual Poseidon permutation computation using the\n * `@noble/curves` library with Circom-compatible constants. It is the core\n * computation shared by all public-facing hasher functions.\n *\n * @param inputs - A read-only array of 1 to {@link MAX_POSEIDON_INPUTS} (12) BN254 field elements to hash.\n * @returns The first element of the Poseidon permutation output state, typed as `Bn254FieldElement`.\n *\n * @throws {Error} If `inputs` is empty (length 0).\n * @throws {Error} If `inputs.length` exceeds `MAX_POSEIDON_INPUTS` (12).\n * @throws {TypeError} If any input element fails BN254 field validation at the given index.\n * @throws {TypeError} If the `@noble/curves` library returns a non-bigint result (internal error).\n *\n * @remarks\n * ## Permutation Construction\n *\n * For `n` inputs, the state size is `t = n + 1`. The initial state is\n * `[0n, inputs[0], inputs[1], ..., inputs[n-1]]`. After applying the Poseidon\n * permutation, the output hash is `state[0]`.\n *\n * ## Circom Compatibility\n *\n * Constants (`POSEIDON_M` MDS matrices and `POSEIDON_C` round constants) are\n * sourced from circomlibjs v0.1.7 to ensure bit-exact agreement with Circom's\n * `Poseidon` template at any arity from 1 to 12.\n *\n * @privateRemarks\n * This function is synchronous. The async wrapper in `getPoseidonHasher()` exists\n * to satisfy the `PoseidonHashFunction` interface contract and maintain consistency\n * with other async crypto APIs in the SDK.\n *\n * @internal\n */\nfunction poseidonHashInternal(inputs: readonly Bn254FieldElement[]): Bn254FieldElement {\n // Validate input array length\n if (inputs.length === 0) {\n throw new Error(`Poseidon hash requires at least ${String(MIN_INPUTS)} input.`);\n }\n\n if (inputs.length > MAX_POSEIDON_INPUTS) {\n throw new Error(\n `Poseidon hash supports at most ${String(MAX_POSEIDON_INPUTS)} inputs, ` +\n `got ${String(inputs.length)}.`,\n );\n }\n\n // Validate each input element is a valid BN254 field element\n for (const [index, inputElement] of inputs.entries()) {\n const input = inputElement;\n try {\n assertBn254FieldElement(input);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid input at index ${String(index)}: ${error.message}`);\n }\n throw error;\n }\n }\n\n // Compute the state size (inputs + initial state element)\n const t = inputs.length + 1;\n const initState = 0n;\n\n // Retrieve Circom-compatible parameters for this state size\n const { roundsPartial, mds, roundConstants } = getCircomParameters(t);\n\n // Create the Poseidon permutation function with the appropriate parameters\n const poseidonNoble = createPoseidon({\n Fp: Fr,\n t,\n roundsFull: ROUNDS_FULL,\n roundsPartial,\n sboxPower: SBOX_POWER,\n mds,\n roundConstants,\n });\n\n // Execute the Poseidon permutation\n // Note: We cast inputs to bigint[] because the noble library expects plain bigints,\n // but our branded Bn254FieldElement type is structurally compatible.\n const nobleState = poseidonNoble([initState, ...(inputs as readonly bigint[])]);\n const nobleHash = nobleState[0];\n\n // Validate the hash result type\n if (typeof nobleHash !== \"bigint\") {\n throw new TypeError(\n `Unexpected hash result type: expected bigint, got ${typeof nobleHash}. ` +\n `This indicates an internal error in the noble-curves library.`,\n );\n }\n\n // Validate the output is a valid BN254 field element\n assertBn254FieldElement(nobleHash);\n return nobleHash;\n}\n\n/* =============================================================================\n * PUBLIC API\n * ============================================================================= */\n\n/**\n * Returns a cached Poseidon hash function.\n *\n * This function returns a `PoseidonHashFunction` that computes Poseidon hashes\n * compatible with Circom's implementation. The function instance is cached,\n * so repeated calls return the same function.\n *\n * @returns A `PoseidonHashFunction` that hashes arrays of BN254 field elements\n *\n * @remarks\n * ## Caching\n *\n * The returned function is a cached singleton. Calling `getPoseidonHasher()`\n * multiple times returns the exact same function instance.\n *\n * ## Hash Computation\n *\n * The returned hasher:\n * - Accepts 1 to 12 BN254 field elements\n * - Uses an initial state of `0n` followed by the inputs\n * - Returns a single `Bn254FieldElement` hash output\n * - Produces outputs identical to Circom's Poseidon implementation\n *\n * ## Input Validation\n *\n * Each input element is validated using `assertBn254FieldElement` to ensure:\n * - The value is a `bigint`\n * - The value is non-negative\n * - The value is less than the BN254 field prime\n *\n * @example\n * ```typescript\n * import { getPoseidonHasher } from '@umbra/sdk';\n * import { assertBn254FieldElement } from '@umbra/sdk/types';\n *\n * // Get the hasher (cached singleton)\n * const hasher = getPoseidonHasher();\n *\n * // Hash a single value\n * const input = 123n;\n * assertBn254FieldElement(input);\n * const hash1 = await hasher([input]);\n *\n * // Hash multiple values\n * const inputs: Bn254FieldElement[] = [1n, 2n, 3n];\n * inputs.forEach(assertBn254FieldElement);\n * const hash2 = await hasher(inputs);\n *\n * // Use in Merkle tree construction\n * const left = 100n;\n * const right = 200n;\n * assertBn254FieldElement(left);\n * assertBn254FieldElement(right);\n * const merkleNode = await hasher([left, right]);\n * ```\n *\n * @public\n */\nexport function getPoseidonHasher(): PoseidonHashFunction {\n if (cachedHasher !== null) {\n return cachedHasher;\n }\n\n const hasher: PoseidonHashFunction = async (\n dataPoints: readonly Bn254FieldElement[],\n ): Promise<Bn254FieldElement> => {\n return poseidonHashInternal(dataPoints);\n };\n\n cachedHasher = hasher;\n return hasher;\n}\n\n/**\n * Optional dependencies for the Poseidon PRF factory.\n *\n * @remarks\n * This interface enables dependency injection for the Poseidon PRF. By providing\n * a custom hasher, callers can substitute test doubles or alternative hash\n * implementations without changing the PRF logic itself.\n *\n * When no dependencies are supplied, `getPoseidonPrf()` uses the cached default\n * hasher returned by `getPoseidonHasher()`.\n *\n * @example\n * ```typescript\n * import { getPoseidonPrf } from '@umbra/sdk';\n *\n * // Use a mock hasher in tests\n * const mockHasher: PoseidonHashFunction = async (inputs) => 42n as Bn254FieldElement;\n * const prf = getPoseidonPrf({ hasher: mockHasher });\n * ```\n *\n * @see {@link getPoseidonPrf}\n * @public\n */\nexport interface PoseidonPrfDeps {\n /**\n * Optional custom hasher function.\n *\n * @remarks\n * When provided, the PRF uses this hasher instead of the default\n * `getPoseidonHasher()` singleton. The result is cached per hasher\n * reference using a `WeakMap`.\n *\n * If not provided, the PRF is cached as a module-level singleton.\n *\n * @defaultValue The return value of `getPoseidonHasher()`\n */\n readonly hasher?: PoseidonHashFunction;\n}\n\n/**\n * Returns a cached Poseidon PRF (Pseudo-Random Function).\n *\n * This function returns a `PoseidonPrfFunction` that computes pseudo-random outputs\n * from secret seeds and an evaluation point. The PRF is built on top of the\n * Poseidon hash function.\n *\n * @param deps - Optional dependencies including custom hasher function.\n * @returns A `PoseidonPrfFunction` that computes PRF outputs\n *\n * @remarks\n * ## Caching\n *\n * - When called without arguments (using default hasher), returns a cached singleton\n * - When called with a custom hasher, returns a cached function per hasher instance\n * - The cache uses WeakMap for custom hashers to allow garbage collection\n *\n * ## PRF Computation\n *\n * The PRF combines seeds with the evaluation point:\n * ```\n * PRF(seeds, x) = Poseidon(seed_0, seed_1, ..., seed_n, x)\n * ```\n *\n * ## Input Constraints\n *\n * - Seeds: 1 to 11 elements (to leave room for the evaluation point)\n * - Total inputs (seeds.length + 1) must not exceed 12\n *\n * ## Security Properties\n *\n * - **Deterministic**: Same (seeds, evaluationPoint) always produces the same output\n * - **Pseudo-random**: Output is computationally indistinguishable from random if seeds are secret\n * - **Key-dependent**: Different seeds produce completely different outputs\n *\n * ## Use Cases\n *\n * - Key derivation from master secrets\n * - Nullifier generation in ZK protocols\n * - Commitment schemes\n * - Verifiable random functions\n *\n * @example\n * ```typescript\n * import { getPoseidonPrf } from '@umbra/sdk';\n * import { assertBn254FieldElement } from '@umbra/sdk/types';\n *\n * // Get the PRF (cached singleton)\n * const prf = getPoseidonPrf();\n *\n * // Use with a single seed\n * const seed = secretKey;\n * assertBn254FieldElement(seed);\n * const output = await prf([seed], evaluationPoint);\n *\n * // Use with multiple seeds (up to 11)\n * const seeds: Bn254FieldElement[] = [seed1, seed2, seed3];\n * seeds.forEach(assertBn254FieldElement);\n * const output2 = await prf(seeds, evaluationPoint);\n * ```\n *\n * @example\n * ```typescript\n * // Nullifier generation\n * const prf = getPoseidonPrf();\n *\n * const secretKey: Bn254FieldElement = userPrivateKey;\n * const commitment: Bn254FieldElement = noteCommitment;\n *\n * // Generate nullifier: PRF(sk, commitment)\n * const nullifier = await prf([secretKey], commitment);\n * ```\n *\n * @example\n * ```typescript\n * // Using a custom hasher\n * const customHasher: PoseidonHashFunction = myCustomHasher;\n * const prf = getPoseidonPrf(customHasher);\n *\n * const output = await prf([seed], evaluationPoint);\n * ```\n *\n * @public\n */\nexport function getPoseidonPrf(deps?: PoseidonPrfDeps): PoseidonPrfFunction {\n const { hasher } = deps ?? {};\n\n // If no hasher provided, use the default cached hasher\n if (hasher === undefined) {\n if (cachedDefaultPrf !== null) {\n return cachedDefaultPrf;\n }\n\n const defaultHasher = getPoseidonHasher();\n const prf = createPrfFunction(defaultHasher);\n cachedDefaultPrf = prf;\n return prf;\n }\n\n // Check if we have a cached PRF for this hasher\n const cachedPrf = prfCache.get(hasher);\n if (cachedPrf !== undefined) {\n return cachedPrf;\n }\n\n // Create and cache a new PRF for this hasher\n const prf = createPrfFunction(hasher);\n prfCache.set(hasher, prf);\n return prf;\n}\n\n/**\n * Creates a PRF function using the provided hasher.\n *\n * This internal factory function constructs a `PoseidonPrfFunction` that uses the\n * specified hasher for computing pseudo-random outputs. The returned function\n * performs full input validation on seeds and the evaluation point before\n * invoking the hasher.\n *\n * @param hasher - The `PoseidonHashFunction` to use for computing the PRF output.\n * This allows for dependency injection of custom hashers.\n * @returns A `PoseidonPrfFunction` implementation that validates inputs and delegates\n * to the provided hasher.\n *\n * @throws {Error} If the returned PRF function is called with:\n * - An empty seeds array\n * - More than 11 seeds (since total inputs must not exceed 12)\n * - Invalid BN254 field elements in seeds or evaluation point\n *\n * @remarks\n * ## PRF Construction\n *\n * The PRF is constructed by concatenating seeds with the evaluation point\n * and passing them to the Poseidon hash function:\n * ```\n * PRF(seeds, x) = Poseidon(seed_0, seed_1, ..., seed_n, x)\n * ```\n *\n * ## Input Validation\n *\n * The returned function performs the following validations:\n * 1. Seeds array must have 1 to 11 elements\n * 2. Each seed must be a valid BN254 field element\n * 3. The evaluation point must be a valid BN254 field element\n * 4. The output is validated to be a valid BN254 field element\n *\n * ## Why This Factory Pattern\n *\n * This factory function enables:\n * - Separation of PRF logic from hasher implementation\n * - Dependency injection for testing with mock hashers\n * - Caching of PRF functions per hasher instance in `getPoseidonPrf()`\n *\n * @internal\n */\nfunction createPrfFunction(hasher: PoseidonHashFunction): PoseidonPrfFunction {\n return async (\n seeds: readonly Bn254FieldElement[],\n evaluationPoint: Bn254FieldElement,\n ): Promise<Bn254FieldElement> => {\n // Validate seeds array length\n if (seeds.length === 0) {\n throw new Error(`Poseidon PRF requires at least ${String(MIN_INPUTS)} seed.`);\n }\n\n if (seeds.length > MAX_PRF_SEEDS) {\n throw new Error(\n `Poseidon PRF supports at most ${String(MAX_PRF_SEEDS)} seeds, ` +\n `got ${String(seeds.length)}. Total inputs (seeds + evaluation point) ` +\n `must not exceed ${String(MAX_POSEIDON_INPUTS)}.`,\n );\n }\n\n // Validate each seed is a valid BN254 field element\n for (const [index, seedElement] of seeds.entries()) {\n const seed = seedElement;\n try {\n assertBn254FieldElement(seed);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid seed at index ${String(index)}: ${error.message}`);\n }\n throw error;\n }\n }\n\n // Validate evaluation point\n try {\n assertBn254FieldElement(evaluationPoint);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid evaluation point: ${error.message}`);\n }\n throw error;\n }\n\n // Combine seeds with evaluation point and hash\n // PRF(seeds, x) = Poseidon(seed_0, seed_1, ..., seed_n, x)\n const inputs: Bn254FieldElement[] = [...seeds, evaluationPoint];\n const result = await hasher(inputs);\n\n // Validate output\n assertBn254FieldElement(result);\n return result;\n };\n}\n\n/**\n * Optional dependencies for the Poseidon keystream generator factory.\n *\n * @remarks\n * This interface enables dependency injection for the keystream generator.\n * By providing a custom PRF, callers can inject test doubles or alternative\n * PRF implementations without changing the keystream generation logic.\n *\n * When no dependencies are provided, `getPoseidonKeystreamGenerator()` uses\n * the cached default PRF returned by `getPoseidonPrf()`.\n *\n * @example\n * ```typescript\n * import { getPoseidonKeystreamGenerator } from '@umbra/sdk';\n *\n * // Use a mock PRF in tests\n * const mockPrf: PoseidonPrfFunction = async (seeds, point) => 1n as Bn254FieldElement;\n * const gen = getPoseidonKeystreamGenerator({ prf: mockPrf });\n * ```\n *\n * @see {@link getPoseidonKeystreamGenerator}\n * @public\n */\nexport interface PoseidonKeystreamGeneratorDeps {\n /**\n * Optional custom PRF function.\n *\n * @remarks\n * When provided, the keystream generator uses this PRF instead of the default\n * `getPoseidonPrf()` singleton. The result is cached per PRF reference using\n * a `WeakMap`.\n *\n * If not provided, the generator is cached as a module-level singleton.\n *\n * @defaultValue The return value of `getPoseidonPrf()`\n */\n readonly prf?: PoseidonPrfFunction;\n}\n\n/**\n * Returns a cached Poseidon keystream generator function.\n *\n * This function returns a `PoseidonKeystreamGeneratorFunction` that generates keystream\n * values for counter-mode encryption operations. The keystream is computed using\n * the Poseidon PRF with a domain-separated evaluation point.\n *\n * @param deps - Optional dependencies including custom PRF function.\n * @returns A `PoseidonKeystreamGeneratorFunction` that generates keystreams for counters\n *\n * @remarks\n * ## Caching\n *\n * - When called without arguments (using default PRF), returns a cached singleton\n * - When called with a custom PRF, returns a cached function per PRF instance\n * - The cache uses WeakMap for custom PRFs to allow garbage collection\n *\n * ## Keystream Generation Formula\n *\n * For each counter, the keystream is computed as:\n * ```\n * keystream = Poseidon([transactionViewingKey, counter, evaluationPoint])\n * ```\n *\n * Where:\n * - `transactionViewingKey` is the master key\n * - `counter` is the position/index for this keystream\n * - `evaluationPoint` is 2 (domain separation constant)\n *\n * ## Security Properties\n *\n * - **Deterministic**: Same (key, counter) pair always produces the same keystream\n * - **Domain-separated**: The evaluation point (2) ensures this PRF is distinct\n * from other uses of the same key\n * - **Counter-dependent**: Different counters produce completely different keystreams\n *\n * ## Use Cases\n *\n * - Stream cipher encryption in ZK protocols\n * - Generating unique encryption masks for each position\n * - Confidential transaction data encryption\n *\n * @example\n * ```typescript\n * import { getPoseidonKeystreamGenerator } from '@umbra/sdk';\n * import { assertPoseidonKey, assertPoseidonCounter } from '@umbra/sdk/types';\n *\n * // Get the keystream generator (cached singleton)\n * const keystreamGenerator = getPoseidonKeystreamGenerator();\n *\n * // Generate keystreams for positions 0, 1, 2\n * const key: PoseidonKey = transactionViewingKey;\n * assertPoseidonKey(key);\n *\n * const counters: PoseidonCounter[] = [0n, 1n, 2n];\n * counters.forEach(assertPoseidonCounter);\n *\n * const keystreamMap = await keystreamGenerator(counters, key);\n *\n * // Use keystreams for encryption\n * const keystream0 = keystreamMap.get(0n)!;\n * const ciphertext0 = (plaintext0 + keystream0) % BN254_FIELD_PRIME;\n * ```\n *\n * @example\n * ```typescript\n * // Using a custom PRF\n * const customPrf: PoseidonPrfFunction = myCustomPrf;\n * const keystreamGenerator = getPoseidonKeystreamGenerator(customPrf);\n *\n * const keystreamMap = await keystreamGenerator([0n, 1n], key);\n * ```\n *\n * @public\n */\nexport function getPoseidonKeystreamGenerator(\n deps?: PoseidonKeystreamGeneratorDeps,\n): PoseidonKeystreamGeneratorFunction {\n const { prf } = deps ?? {};\n\n // If no PRF provided, use the default cached PRF\n if (prf === undefined) {\n if (cachedDefaultKeystreamGenerator !== null) {\n return cachedDefaultKeystreamGenerator;\n }\n\n const defaultPrf = getPoseidonPrf();\n const generator = createKeystreamGeneratorFunction(defaultPrf);\n cachedDefaultKeystreamGenerator = generator;\n return generator;\n }\n\n // Check if we have a cached keystream generator for this PRF\n const cachedGenerator = keystreamGeneratorCache.get(prf);\n if (cachedGenerator !== undefined) {\n return cachedGenerator;\n }\n\n // Create and cache a new keystream generator for this PRF\n const generator = createKeystreamGeneratorFunction(prf);\n keystreamGeneratorCache.set(prf, generator);\n return generator;\n}\n\n/**\n * Creates a keystream generator function using the provided PRF.\n *\n * This internal factory function constructs a `PoseidonKeystreamGeneratorFunction` that\n * uses the specified PRF for computing keystreams. The returned function performs\n * full input validation on counters and the key before invoking the PRF.\n *\n * @param prf - The `PoseidonPrfFunction` to use for computing keystreams.\n * This allows for dependency injection of custom PRFs.\n * @returns A `PoseidonKeystreamGeneratorFunction` implementation that validates inputs\n * and delegates to the provided PRF.\n *\n * @throws {Error} If the returned generator function is called with:\n * - An empty counters array\n * - Invalid PoseidonCounter values in counters\n * - Invalid PoseidonKey\n *\n * @remarks\n * ## Keystream Generation\n *\n * For each counter in the input array, the keystream is computed as:\n * ```\n * keystream[counter] = PRF([key, counter], KEYSTREAM_EVALUATION_POINT)\n * = Poseidon([key, counter, 2])\n * ```\n *\n * ## Input Validation\n *\n * The returned function performs the following validations:\n * 1. Counters array must have at least 1 element\n * 2. Each counter must be a valid PoseidonCounter (BN254 field element)\n * 3. The key must be a valid PoseidonKey (BN254 field element)\n * 4. Each output keystream is validated to be a valid PoseidonKeystream\n *\n * ## Why This Factory Pattern\n *\n * This factory function enables:\n * - Separation of keystream logic from PRF implementation\n * - Dependency injection for testing with mock PRFs\n * - Caching of generator functions per PRF instance in `getPoseidonKeystreamGenerator()`\n *\n * @internal\n */\nfunction createKeystreamGeneratorFunction(\n prf: PoseidonPrfFunction,\n): PoseidonKeystreamGeneratorFunction {\n return async (\n counters: readonly PoseidonCounter[],\n key: PoseidonKey,\n ): Promise<Map<PoseidonCounter, PoseidonKeystream>> => {\n // Validate counters array is not empty\n if (counters.length === 0) {\n throw new Error(\"Keystream generator requires at least 1 counter.\");\n }\n\n // Validate each counter is a valid PoseidonCounter\n for (const [index, counterElement] of counters.entries()) {\n const counter = counterElement;\n try {\n assertPoseidonCounter(counter);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid counter at index ${String(index)}: ${error.message}`);\n }\n throw error;\n }\n }\n\n // Validate the key is a valid PoseidonKey\n try {\n assertPoseidonKey(key);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid key: ${error.message}`);\n }\n throw error;\n }\n\n // Generate keystreams for each counter\n // keystream = PRF([key, counter], evaluationPoint)\n // = Poseidon([key, counter, evaluationPoint])\n const keystreamMap = new Map<PoseidonCounter, PoseidonKeystream>();\n\n for (const counter of counters) {\n // Compute keystream using PRF with key and counter as seeds\n const keystream = await prf([key, counter], KEYSTREAM_EVALUATION_POINT as Bn254FieldElement);\n\n // Validate output is a valid PoseidonKeystream\n assertPoseidonKeystream(keystream);\n keystreamMap.set(counter, keystream);\n }\n\n return keystreamMap;\n };\n}\n\n// ============================================================================\n// Encryptor/Decryptor Caches\n// ============================================================================\n\n/**\n * Cache for the default encryptor function (using default keystream generator and modAdd).\n * @internal\n */\nlet cachedDefaultEncryptor: PoseidonEncryptorFunction | null = null;\n\n/**\n * Cache for encryptor functions with custom options.\n * Key is a composite of the keystream generator and modAdd function references.\n * @internal\n */\nconst encryptorCache = new WeakMap<\n PoseidonKeystreamGeneratorFunction,\n WeakMap<ModuleAddFunction, PoseidonEncryptorFunction>\n>();\n\n/**\n * Cache for the default decryptor function (using default keystream generator and modSub).\n * @internal\n */\nlet cachedDefaultDecryptor: PoseidonDecryptorFunction | null = null;\n\n/**\n * Cache for decryptor functions with custom options.\n * Key is a composite of the keystream generator and modSub function references.\n * @internal\n */\nconst decryptorCache = new WeakMap<\n PoseidonKeystreamGeneratorFunction,\n WeakMap<ModuleSubFunction, PoseidonDecryptorFunction>\n>();\n\n// ============================================================================\n// Encryptor/Decryptor Options\n// ============================================================================\n\n/**\n * Optional dependencies for the Poseidon encryptor factory.\n *\n * @remarks\n * This interface enables dependency injection for the Poseidon encryptor. By\n * providing custom implementations of the keystream generator and modular addition\n * function, callers can test the encryptor in isolation or substitute alternative\n * field arithmetic implementations.\n *\n * The encryption formula is:\n * ```\n * ciphertext[i] = modAdd(plaintext[i], keystream[i])\n * ```\n *\n * Where `keystream[i] = Poseidon([key, i, 2])`.\n *\n * @example\n * ```typescript\n * import { getPoseidonEncryptor } from '@umbra/sdk';\n *\n * // Use a mock keystream generator in tests\n * const mockGen: PoseidonKeystreamGeneratorFunction = async (counters, key) => {\n * const map = new Map();\n * for (const c of counters) map.set(c, 1n as PoseidonKeystream);\n * return map;\n * };\n * const encryptor = getPoseidonEncryptor({ keystreamGenerator: mockGen });\n * ```\n *\n * @see {@link getPoseidonEncryptor}\n * @public\n */\nexport interface PoseidonEncryptorDeps {\n /**\n * Custom keystream generator function.\n *\n * @remarks\n * When provided, the encryptor derives keystream values using this function\n * instead of the default `getPoseidonKeystreamGenerator()` singleton.\n * The resulting encryptor is cached per generator reference using a `WeakMap`.\n *\n * @defaultValue The return value of `getPoseidonKeystreamGenerator()`\n */\n readonly keystreamGenerator?: PoseidonKeystreamGeneratorFunction;\n\n /**\n * Custom modular addition function for encryption.\n *\n * @remarks\n * The modular addition computes `(plaintext + keystream) mod p` where `p` is\n * the BN254 field prime. The default implementation runs in constant time to\n * prevent timing side-channels.\n *\n * @defaultValue The constant-time `bn254ModuloAdd` function\n */\n readonly modAdd?: ModuleAddFunction;\n}\n\n/**\n * Optional dependencies for the Poseidon decryptor factory.\n *\n * @remarks\n * This interface enables dependency injection for the Poseidon decryptor. By\n * providing custom implementations of the keystream generator and modular subtraction\n * function, callers can test the decryptor in isolation or substitute alternative\n * field arithmetic implementations.\n *\n * The decryption formula is:\n * ```\n * plaintext[i] = modSub(ciphertext[i], keystream[i])\n * ```\n *\n * Where `keystream[i] = Poseidon([key, i, 2])`. The key must match the one used\n * during encryption to recover the original plaintext.\n *\n * @example\n * ```typescript\n * import { getPoseidonDecryptor, getPoseidonEncryptor } from '@umbra/sdk';\n *\n * // Round-trip test with custom modular arithmetic\n * const p = 21888242871839275222246405745257275088548364400416034343698204186575808495617n;\n * const customModSub = (a: bigint, b: bigint): bigint => ((a - b) % p + p) % p;\n *\n * const decryptor = getPoseidonDecryptor({ modSub: customModSub });\n * ```\n *\n * @see {@link getPoseidonDecryptor}\n * @see {@link PoseidonEncryptorDeps} for the symmetric encryption configuration\n * @public\n */\nexport interface PoseidonDecryptorDeps {\n /**\n * Custom keystream generator function.\n *\n * @remarks\n * When provided, the decryptor derives keystream values using this function\n * instead of the default `getPoseidonKeystreamGenerator()` singleton.\n * The resulting decryptor is cached per generator reference using a `WeakMap`.\n *\n * @defaultValue The return value of `getPoseidonKeystreamGenerator()`\n */\n readonly keystreamGenerator?: PoseidonKeystreamGeneratorFunction;\n\n /**\n * Custom modular subtraction function for decryption.\n *\n * @remarks\n * The modular subtraction computes `(ciphertext - keystream) mod p` where `p` is\n * the BN254 field prime. The default implementation runs in constant time to\n * prevent timing side-channels.\n *\n * @defaultValue The constant-time `bn254ModuloSub` function\n */\n readonly modSub?: ModuleSubFunction;\n}\n\n// ============================================================================\n// Encryptor Implementation\n// ============================================================================\n\n/**\n * Creates an encryptor function with the specified dependencies.\n *\n * This internal factory function creates a `PoseidonEncryptorFunction` that encrypts\n * plaintexts using a keystream-based approach. For each plaintext at index `i`,\n * the ciphertext is computed as:\n *\n * ```\n * ciphertext[i] = modAdd(plaintext[i], keystream[i])\n * ```\n *\n * Where `keystream[i]` is generated from the PRF with counter `i`.\n *\n * @param keystreamGenerator - The keystream generator to use\n * @param modAdd - The modular addition function to use\n * @returns A `PoseidonEncryptorFunction` implementation\n *\n * @internal\n */\nfunction createEncryptorFunction(\n keystreamGenerator: PoseidonKeystreamGeneratorFunction,\n moduleAdd: ModuleAddFunction,\n): PoseidonEncryptorFunction {\n return async (\n plaintexts: readonly PoseidonPlaintext[],\n key: PoseidonKey,\n ): Promise<PoseidonCiphertext[]> => {\n // Validate plaintexts array is not empty\n if (plaintexts.length === 0) {\n throw new Error(\"Encryptor requires at least 1 plaintext.\");\n }\n\n // Validate each plaintext\n for (const [index, plaintextElement] of plaintexts.entries()) {\n const plaintext = plaintextElement;\n try {\n assertPoseidonPlaintext(plaintext);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid plaintext at index ${String(index)}: ${error.message}`);\n }\n throw error;\n }\n }\n\n // Validate the key\n try {\n assertPoseidonKey(key);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid key: ${error.message}`);\n }\n throw error;\n }\n\n // Generate counters 0, 1, 2, ..., n-1 for n plaintexts\n const counters: PoseidonCounter[] = [];\n for (let index = 0; index < plaintexts.length; index++) {\n const counter = BigInt(index) as PoseidonCounter;\n assertPoseidonCounter(counter);\n counters.push(counter);\n }\n\n // Generate keystreams for all counters\n const keystreamMap = await keystreamGenerator(counters, key);\n\n // Encrypt each plaintext\n const ciphertexts: PoseidonCiphertext[] = [];\n for (const [index, plaintextElement] of plaintexts.entries()) {\n const plaintext = plaintextElement;\n\n const counter = counters[index];\n const keystream = keystreamMap.get(counter);\n\n if (keystream === undefined) {\n throw new Error(\n `Keystream not found for counter ${String(counter)}. This should not happen.`,\n );\n }\n\n // ciphertext = (plaintext + keystream) mod p\n const ciphertextValue = moduleAdd(plaintext, keystream);\n\n // Validate output\n assertPoseidonCiphertext(ciphertextValue);\n ciphertexts.push(ciphertextValue);\n }\n\n return ciphertexts;\n };\n}\n\n/**\n * Returns a cached Poseidon encryptor function.\n *\n * This function returns a `PoseidonEncryptorFunction` that encrypts plaintexts using\n * a keystream-based approach. For each plaintext at position `i`, the ciphertext\n * is computed as:\n *\n * ```\n * ciphertext[i] = (plaintext[i] + keystream[i]) mod BN254_FIELD_PRIME\n * ```\n *\n * Where `keystream[i] = Poseidon([key, i, 2])`.\n *\n * @param opts - Optional configuration for the encryptor\n * @param opts.keystreamGenerator - Custom keystream generator (default: `getPoseidonKeystreamGenerator()`)\n * @param opts.modAdd - Custom modular addition function (default: `bn254ModuloAdd`)\n * @returns A `PoseidonEncryptorFunction` that encrypts plaintexts\n *\n * @remarks\n * ## Caching\n *\n * - When called without options, returns a cached singleton encryptor\n * - When called with custom options, caches the encryptor per option combination\n * - Uses WeakMap for caching to allow garbage collection\n *\n * ## Encryption Process\n *\n * 1. Validates all plaintexts are valid BN254 field elements\n * 2. Validates the key is a valid PoseidonKey\n * 3. Generates counters 0, 1, 2, ..., n-1 for n plaintexts\n * 4. Generates keystreams for each counter using the keystream generator\n * 5. Computes ciphertext[i] = modAdd(plaintext[i], keystream[i])\n * 6. Validates all outputs are valid PoseidonCiphertexts\n *\n * ## Security Notes\n *\n * - Uses constant-time modular addition by default to prevent timing attacks\n * - Each position gets a unique keystream derived from the key and counter\n * - The same (key, position) pair always produces the same keystream\n *\n * @example\n * ```typescript\n * import { getPoseidonEncryptor } from '@umbra/sdk';\n * import { assertPoseidonPlaintext, assertPoseidonKey } from '@umbra/sdk/types';\n *\n * // Get the encryptor (cached singleton)\n * const encryptor = getPoseidonEncryptor();\n *\n * // Prepare plaintexts\n * const plaintexts: PoseidonPlaintext[] = [100n, 200n, 300n];\n * plaintexts.forEach(assertPoseidonPlaintext);\n *\n * // Encrypt with a key\n * const key: PoseidonKey = transactionViewingKey;\n * assertPoseidonKey(key);\n *\n * const ciphertexts = await encryptor(plaintexts, key);\n * // ciphertexts[0] = (plaintexts[0] + keystream[0]) mod p\n * // ciphertexts[1] = (plaintexts[1] + keystream[1]) mod p\n * // ciphertexts[2] = (plaintexts[2] + keystream[2]) mod p\n * ```\n *\n * @example\n * ```typescript\n * // Using custom modular arithmetic\n * const customModAdd: ModuloAddFunction = (a, b) => (a + b) % BN254_FIELD_PRIME;\n *\n * const encryptor = getPoseidonEncryptor({\n * modAdd: customModAdd\n * });\n *\n * const ciphertexts = await encryptor(plaintexts, key);\n * ```\n *\n * @public\n */\nexport function getPoseidonEncryptor(deps?: PoseidonEncryptorDeps): PoseidonEncryptorFunction {\n // Use defaults if no deps provided\n const keystreamGen = deps?.keystreamGenerator ?? getPoseidonKeystreamGenerator();\n const moduleAddFunction = deps?.modAdd ?? getBn254ModuleAdder();\n\n // If using all defaults, return cached singleton\n if (deps === undefined || (deps.keystreamGenerator === undefined && deps.modAdd === undefined)) {\n if (cachedDefaultEncryptor !== null) {\n return cachedDefaultEncryptor;\n }\n const encryptor = createEncryptorFunction(keystreamGen, moduleAddFunction);\n cachedDefaultEncryptor = encryptor;\n return encryptor;\n }\n\n // Check cache for this combination\n let moduleAddCache = encryptorCache.get(keystreamGen);\n if (moduleAddCache === undefined) {\n moduleAddCache = new WeakMap<ModuleAddFunction, PoseidonEncryptorFunction>();\n encryptorCache.set(keystreamGen, moduleAddCache);\n }\n\n const cachedEncryptor = moduleAddCache.get(moduleAddFunction);\n if (cachedEncryptor !== undefined) {\n return cachedEncryptor;\n }\n\n // Create and cache new encryptor\n const encryptor = createEncryptorFunction(keystreamGen, moduleAddFunction);\n moduleAddCache.set(moduleAddFunction, encryptor);\n return encryptor;\n}\n\n// ============================================================================\n// Decryptor Implementation\n// ============================================================================\n\n/**\n * Creates a decryptor function with the specified dependencies.\n *\n * This internal factory function creates a `PoseidonDecryptorFunction` that decrypts\n * ciphertexts using a keystream-based approach. For each ciphertext at index `i`,\n * the plaintext is computed as:\n *\n * ```\n * plaintext[i] = modSub(ciphertext[i], keystream[i])\n * ```\n *\n * Where `keystream[i]` is generated from the PRF with counter `i`.\n *\n * @param keystreamGenerator - The keystream generator to use\n * @param modSub - The modular subtraction function to use\n * @returns A `PoseidonDecryptorFunction` implementation\n *\n * @internal\n */\nfunction createDecryptorFunction(\n keystreamGenerator: PoseidonKeystreamGeneratorFunction,\n moduleSub: ModuleSubFunction,\n): PoseidonDecryptorFunction {\n return async (\n ciphertexts: readonly PoseidonCiphertext[],\n key: PoseidonKey,\n ): Promise<PoseidonPlaintext[]> => {\n // Validate ciphertexts array is not empty\n if (ciphertexts.length === 0) {\n throw new Error(\"Decryptor requires at least 1 ciphertext.\");\n }\n\n // Validate each ciphertext\n for (const [index, ciphertextElement] of ciphertexts.entries()) {\n const ciphertext = ciphertextElement;\n try {\n assertPoseidonCiphertext(ciphertext);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid ciphertext at index ${String(index)}: ${error.message}`);\n }\n throw error;\n }\n }\n\n // Validate the key\n try {\n assertPoseidonKey(key);\n } catch (error) {\n if (error instanceof Error) {\n throw new TypeError(`Invalid key: ${error.message}`);\n }\n throw error;\n }\n\n // Generate counters 0, 1, 2, ..., n-1 for n ciphertexts\n const counters: PoseidonCounter[] = [];\n for (let index = 0; index < ciphertexts.length; index++) {\n const counter = BigInt(index) as PoseidonCounter;\n assertPoseidonCounter(counter);\n counters.push(counter);\n }\n\n // Generate keystreams for all counters\n const keystreamMap = await keystreamGenerator(counters, key);\n\n // Decrypt each ciphertext\n const plaintexts: PoseidonPlaintext[] = [];\n for (const [index, ciphertextElement] of ciphertexts.entries()) {\n const ciphertext = ciphertextElement;\n\n const counter = counters[index];\n const keystream = keystreamMap.get(counter);\n\n if (keystream === undefined) {\n throw new Error(\n `Keystream not found for counter ${String(counter)}. This should not happen.`,\n );\n }\n\n // plaintext = (ciphertext - keystream) mod p\n const plaintextValue = moduleSub(ciphertext, keystream);\n\n // Validate output\n assertPoseidonPlaintext(plaintextValue);\n plaintexts.push(plaintextValue);\n }\n\n return plaintexts;\n };\n}\n\n/**\n * Returns a cached Poseidon decryptor function.\n *\n * This function returns a `PoseidonDecryptorFunction` that decrypts ciphertexts using\n * a keystream-based approach. For each ciphertext at position `i`, the plaintext\n * is computed as:\n *\n * ```\n * plaintext[i] = (ciphertext[i] - keystream[i]) mod BN254_FIELD_PRIME\n * ```\n *\n * Where `keystream[i] = Poseidon([key, i, 2])`.\n *\n * @param opts - Optional configuration for the decryptor\n * @param opts.keystreamGenerator - Custom keystream generator (default: `getPoseidonKeystreamGenerator()`)\n * @param opts.modSub - Custom modular subtraction function (default: `bn254ModuloSub`)\n * @returns A `PoseidonDecryptorFunction` that decrypts ciphertexts\n *\n * @remarks\n * ## Caching\n *\n * - When called without options, returns a cached singleton decryptor\n * - When called with custom options, caches the decryptor per option combination\n * - Uses WeakMap for caching to allow garbage collection\n *\n * ## Decryption Process\n *\n * 1. Validates all ciphertexts are valid BN254 field elements\n * 2. Validates the key is a valid PoseidonKey\n * 3. Generates counters 0, 1, 2, ..., n-1 for n ciphertexts\n * 4. Generates keystreams for each counter using the keystream generator\n * 5. Computes plaintext[i] = modSub(ciphertext[i], keystream[i])\n * 6. Validates all outputs are valid PoseidonPlaintexts\n *\n * ## Security Notes\n *\n * - Uses constant-time modular subtraction by default to prevent timing attacks\n * - The key must be the same key used during encryption\n * - Using a wrong key will produce incorrect (garbage) plaintext output\n *\n * @example\n * ```typescript\n * import { getPoseidonDecryptor, getPoseidonEncryptor } from '@umbra/sdk';\n * import { assertPoseidonKey } from '@umbra/sdk/types';\n *\n * // Encrypt some data\n * const encryptor = getPoseidonEncryptor();\n * const plaintexts = [100n, 200n, 300n];\n * const key: PoseidonKey = transactionViewingKey;\n * const ciphertexts = await encryptor(plaintexts, key);\n *\n * // Decrypt the data\n * const decryptor = getPoseidonDecryptor();\n * const recovered = await decryptor(ciphertexts, key);\n * // recovered = [100n, 200n, 300n]\n * ```\n *\n * @example\n * ```typescript\n * // Using custom modular arithmetic\n * const customModSub: ModuloSubFunction = (a, b) => {\n * const diff = a - b;\n * return diff < 0n ? diff + BN254_FIELD_PRIME : diff;\n * };\n *\n * const decryptor = getPoseidonDecryptor({\n * modSub: customModSub\n * });\n *\n * const plaintexts = await decryptor(ciphertexts, key);\n * ```\n *\n * @public\n */\nexport function getPoseidonDecryptor(deps?: PoseidonDecryptorDeps): PoseidonDecryptorFunction {\n // Use defaults if no deps provided\n const keystreamGen = deps?.keystreamGenerator ?? getPoseidonKeystreamGenerator();\n const moduleSubFunction = deps?.modSub ?? getBn254ModuleSubtractor();\n\n // If using all defaults, return cached singleton\n if (deps === undefined || (deps.keystreamGenerator === undefined && deps.modSub === undefined)) {\n if (cachedDefaultDecryptor !== null) {\n return cachedDefaultDecryptor;\n }\n const decryptor = createDecryptorFunction(keystreamGen, moduleSubFunction);\n cachedDefaultDecryptor = decryptor;\n return decryptor;\n }\n\n // Check cache for this combination\n let moduleSubCache = decryptorCache.get(keystreamGen);\n if (moduleSubCache === undefined) {\n moduleSubCache = new WeakMap<ModuleSubFunction, PoseidonDecryptorFunction>();\n decryptorCache.set(keystreamGen, moduleSubCache);\n }\n\n const cachedDecryptor = moduleSubCache.get(moduleSubFunction);\n if (cachedDecryptor !== undefined) {\n return cachedDecryptor;\n }\n\n // Create and cache new decryptor\n const decryptor = createDecryptorFunction(keystreamGen, moduleSubFunction);\n moduleSubCache.set(moduleSubFunction, decryptor);\n return decryptor;\n}\n\n// =============================================================================\n// POSEIDON AGGREGATOR\n// =============================================================================\n\n/**\n * Maximum number of inputs the Poseidon aggregator can handle in a single call.\n *\n * @remarks\n * The aggregator uses a two-round approach:\n * - Round 1 splits inputs into chunks of up to {@link MAX_POSEIDON_INPUTS} (12) and hashes each chunk.\n * - Round 2 hashes all Round 1 outputs into a single final hash.\n *\n * Since Round 1 produces at most 12 outputs (each from a 12-element chunk),\n * Round 2 can handle them all in one call. This gives a theoretical maximum of\n * `12 * 12 = 144` inputs total.\n *\n * This limit directly constrains the ZK proof aggregated public input. The 70-element\n * aggregated Poseidon hash used as the single ZK proof public input for Umbra claim\n * operations (aggregating nullifiers, commitments, timestamps, addresses, etc.) fits\n * well within this bound.\n *\n * @example\n * ```typescript\n * import { getPoseidonAggregator, MAX_AGGREGATOR_INPUTS } from '@umbra/sdk';\n *\n * const aggregator = getPoseidonAggregator();\n *\n * // Maximum supported inputs\n * const maxInputs = Array.from({ length: MAX_AGGREGATOR_INPUTS }, (_, i) => BigInt(i));\n * maxInputs.forEach(assertBn254FieldElement);\n * const hash = await aggregator(maxInputs);\n * ```\n *\n * @see {@link getPoseidonAggregator} for the aggregator factory\n * @see {@link MAX_POSEIDON_INPUTS} for the base hash arity limit\n * @public\n */\nexport const MAX_AGGREGATOR_INPUTS = MAX_POSEIDON_INPUTS * MAX_POSEIDON_INPUTS;\n\n/**\n * Asynchronous function type for Poseidon hash aggregation over large input sets.\n *\n * @remarks\n * The aggregator chains two rounds of Poseidon hashing to process input sets\n * larger than the 12-element per-call limit. It always performs two rounds for\n * Circom circuit compatibility, even when the input set would fit in one call.\n *\n * Two-round construction:\n * ```\n * Round 1: hash chunks of up to 12 elements\n * intermediates[i] = Poseidon(inputs[i*12 .. (i+1)*12])\n *\n * Round 2: hash all intermediates\n * result = Poseidon(intermediates)\n * ```\n *\n * In Umbra, this is the function used to produce the single 70-element aggregated\n * Poseidon hash that serves as the sole ZK proof public input for claim operations.\n * The 70 elements aggregate nullifiers, commitments, timestamps, destination addresses,\n * amounts, and other ZK-circuit inputs across up to 10 UTXOs.\n *\n * @param inputs - Array of `Bn254FieldElement` values to hash (1 to {@link MAX_AGGREGATOR_INPUTS} elements)\n * @returns A `Promise` resolving to the aggregated `Bn254FieldElement` hash output\n *\n * @throws {Error} If `inputs` is empty\n * @throws {Error} If `inputs.length` exceeds {@link MAX_AGGREGATOR_INPUTS}\n *\n * @example\n * ```typescript\n * const aggregator: PoseidonAggregatorFunction = getPoseidonAggregator();\n *\n * // 70-element aggregated hash for ZK public input\n * const publicInputs: Bn254FieldElement[] = [...nullifiers, ...commitments, ...rest];\n * const aggregatedHash = await aggregator(publicInputs);\n * ```\n *\n * @see {@link getPoseidonAggregator} for the factory function\n * @see {@link MAX_AGGREGATOR_INPUTS} for the maximum supported input count\n * @public\n */\nexport type PoseidonAggregatorFunction = (\n inputs: readonly Bn254FieldElement[],\n) => Promise<Bn254FieldElement>;\n\n/**\n * Optional dependencies for the Poseidon aggregator factory.\n *\n * @remarks\n * This interface enables dependency injection for the Poseidon aggregator.\n * Providing a custom hasher allows substituting test doubles or verifying\n * the aggregator's two-round structure independently of the hash implementation.\n *\n * When no dependencies are provided, `getPoseidonAggregator()` uses the cached\n * default hasher from `getPoseidonHasher()`.\n *\n * @example\n * ```typescript\n * import { getPoseidonAggregator } from '@umbra/sdk';\n *\n * const calls: Bn254FieldElement[][] = [];\n * const trackingHasher: PoseidonHashFunction = async (inputs) => {\n * calls.push([...inputs]);\n * return getPoseidonHasher()(inputs);\n * };\n * const aggregator = getPoseidonAggregator({ hasher: trackingHasher });\n * // After calling aggregator([a, b, ..., z]), inspect `calls` to verify\n * // Round 1 chunks and the Round 2 combination.\n * ```\n *\n * @see {@link getPoseidonAggregator}\n * @public\n */\nexport interface PoseidonAggregatorDeps {\n /**\n * Optional custom hasher function.\n *\n * @remarks\n * When provided, the aggregator uses this hasher for both rounds of hashing\n * instead of the default `getPoseidonHasher()` singleton. The resulting\n * aggregator is cached per hasher reference using a `WeakMap`.\n *\n * @defaultValue The return value of `getPoseidonHasher()`\n */\n readonly hasher?: PoseidonHashFunction;\n}\n\n/**\n * Cached default aggregator for singleton pattern.\n * @internal\n */\nlet cachedDefaultAggregator: PoseidonAggregatorFunction | null = null;\n\n/**\n * Cache for aggregators with custom hashers.\n * @internal\n */\nconst aggregatorCache = new WeakMap<PoseidonHashFunction, PoseidonAggregatorFunction>();\n\n/**\n * Creates a Poseidon aggregator function with the given hasher.\n *\n * @param hasher - The Poseidon hash function to use for both rounds of aggregation.\n * @returns A {@link PoseidonAggregatorFunction} that chains two rounds of Poseidon hashing.\n *\n * @remarks\n * This internal factory implements the two-round Circom-compatible aggregation:\n *\n * - Round 1: splits `inputs` into consecutive chunks of at most 12 elements and\n * hashes each chunk independently. Produces `ceil(inputs.length / 12)` intermediate\n * hashes.\n * - Round 2: hashes all intermediate outputs from Round 1 into a single final value.\n *\n * Critically, even for inputs that fit in a single 12-element call, the function still\n * performs both rounds (i.e., `Poseidon([Poseidon(inputs)])`), preserving compatibility\n * with the Circom `PoseidonAggregator` circuit which always executes two rounds.\n *\n * @throws {Error} If `inputs` is empty.\n * @throws {Error} If `inputs.length` exceeds `MAX_AGGREGATOR_INPUTS` (144).\n * @throws {TypeError} If any element of `inputs` is not a `bigint`.\n *\n * @privateRemarks\n * The factory pattern here enables caching of the returned closure per hasher instance.\n * `getPoseidonAggregator()` stores the result in a WeakMap keyed by `hasher`, so the\n * closure is created at most once per hasher object.\n *\n * @internal\n */\nfunction createAggregatorFunction(hasher: PoseidonHashFunction): PoseidonAggregatorFunction {\n return async (inputs: readonly Bn254FieldElement[]): Promise<Bn254FieldElement> => {\n // Validate inputs\n if (inputs.length === 0) {\n throw new Error(\n \"Poseidon aggregator requires at least one input. \" +\n \"Provide at least one Bn254FieldElement value in the inputs array.\",\n );\n }\n\n if (inputs.length > MAX_AGGREGATOR_INPUTS) {\n throw new Error(\n `Poseidon aggregator supports at most ${String(MAX_AGGREGATOR_INPUTS)} inputs, got ${String(inputs.length)}. ` +\n `The maximum is ${String(MAX_POSEIDON_INPUTS)}^2 = ${String(MAX_AGGREGATOR_INPUTS)} due to the two-round aggregation approach.`,\n );\n }\n\n // Validate all inputs are bigints\n for (const [index, input] of inputs.entries()) {\n if (typeof input !== \"bigint\") {\n throw new TypeError(\n `Invalid input at index ${String(index)}: expected bigint (Bn254FieldElement), got ${typeof input}. ` +\n \"All inputs must be Bn254FieldElement values.\",\n );\n }\n }\n\n // ================================================================\n // Round 1: Hash input chunks\n // ================================================================\n // NOTE: Unlike a naive implementation, we ALWAYS perform two rounds to match\n // the Circom PoseidonAggregator circuit. Even for ≤12 inputs, the circuit\n // computes poseidon([poseidon(inputs)]), not just poseidon(inputs).\n\n const numberFirstRoundHashes = Math.ceil(inputs.length / MAX_POSEIDON_INPUTS);\n const firstRoundOutputs: Bn254FieldElement[] = [];\n\n let inputOffset = 0;\n\n for (let index = 0; index < numberFirstRoundHashes; index++) {\n const remainingInputs = inputs.length - inputOffset;\n const chunkSize = Math.min(MAX_POSEIDON_INPUTS, remainingInputs);\n const chunk = inputs.slice(inputOffset, inputOffset + chunkSize);\n const chunkHash = await hasher(chunk);\n firstRoundOutputs.push(chunkHash);\n inputOffset += MAX_POSEIDON_INPUTS;\n }\n\n // ================================================================\n // Round 2: Hash all round 1 outputs\n // ================================================================\n // Since we have at most 144 inputs, we have at most 12 outputs from round 1,\n // so this fits in a single Poseidon hash.\n const finalHash = await hasher(firstRoundOutputs);\n\n assertBn254FieldElement(finalHash);\n return finalHash;\n };\n}\n\n/**\n * Returns a cached Poseidon aggregator function.\n *\n * The aggregator chains Poseidon hash calls to process large input sets\n * (up to 144 elements), matching the behavior of the Circom `PoseidonAggregator` circuit.\n *\n * @param deps - Optional dependencies including custom hasher function.\n * @returns A `PoseidonAggregatorFunction` that computes aggregated hashes\n *\n * @remarks\n * ## Caching\n *\n * - When called without arguments (using default hasher), returns a cached singleton\n * - When called with a custom hasher, returns a cached function per hasher instance\n * - The cache uses WeakMap for custom hashers to allow garbage collection\n *\n * ## Two-Round Aggregation\n *\n * The aggregation works as follows:\n * 1. **Round 1**: Split inputs into chunks of up to 12 elements each\n * and hash each chunk with Poseidon\n * 2. **Round 2**: Hash all the outputs from Round 1 together\n *\n * ## Circuit Compatibility\n *\n * Unlike a naive implementation that might skip Round 2 for small inputs,\n * this function ALWAYS performs both rounds. For example, with 5 inputs:\n *\n * ```\n * Naive: Poseidon([a, b, c, d, e])\n * Correct: Poseidon([Poseidon([a, b, c, d, e])])\n * ```\n *\n * This matches the Circom circuit which always computes\n * `Poseidon(numFirstRoundHashes)(firstRoundOutputs)`.\n *\n * ## Input Constraints\n *\n * - Minimum: 1 input\n * - Maximum: 144 inputs (12 * 12)\n *\n * @example\n * ```typescript\n * import { getPoseidonAggregator } from '@umbra-privacy/sdk';\n * import { assertBn254FieldElement } from '@umbra-privacy/sdk/types';\n *\n * // Get the aggregator (cached singleton)\n * const aggregator = getPoseidonAggregator();\n *\n * // Hash 5 field elements\n * const inputs = [1n, 2n, 3n, 4n, 5n].map(x => {\n * assertBn254FieldElement(x);\n * return x;\n * });\n * const hash = await aggregator(inputs);\n *\n * // Hash 100 field elements (across multiple chunks)\n * const largeInputs = Array.from({ length: 100 }, (_, i) => {\n * const val = BigInt(i);\n * assertBn254FieldElement(val);\n * return val;\n * });\n * const largeHash = await aggregator(largeInputs);\n * ```\n *\n * @example\n * ```typescript\n * // Using a custom hasher\n * const customHasher: PoseidonHashFunction = myCustomHasher;\n * const aggregator = getPoseidonAggregator({ hasher: customHasher });\n *\n * const hash = await aggregator(inputs);\n * ```\n *\n * @public\n */\nexport function getPoseidonAggregator(deps?: PoseidonAggregatorDeps): PoseidonAggregatorFunction {\n const { hasher } = deps ?? {};\n\n // If no hasher provided, use the default cached hasher\n if (hasher === undefined) {\n if (cachedDefaultAggregator !== null) {\n return cachedDefaultAggregator;\n }\n\n const defaultHasher = getPoseidonHasher();\n const aggregator = createAggregatorFunction(defaultHasher);\n cachedDefaultAggregator = aggregator;\n return aggregator;\n }\n\n // Check if we have a cached aggregator for this hasher\n const cachedAggregator = aggregatorCache.get(hasher);\n if (cachedAggregator !== undefined) {\n return cachedAggregator;\n }\n\n // Create and cache new aggregator\n const aggregator = createAggregatorFunction(hasher);\n aggregatorCache.set(hasher, aggregator);\n return aggregator;\n}\n\n// ============================================================================\n// H2 Hash Generator\n// ============================================================================\n\nimport type {\n H2CircuitProvableParams,\n H2HashFunction as H2HashFunction,\n H2CircuitProvableHashFunction as H2CircuitProvableHashFunction,\n H2GeneratorFns,\n KeystreamCommitmentFunction as KeystreamCommitmentFunction,\n} from \"./interfaces\";\n\n/**\n * Optional dependencies for the H2 hash generator factory.\n *\n * @remarks\n * The H2 hash is a flat Poseidon(6) commitment used as the leaf in the Umbra mixer's\n * Indexed Merkle Tree (IMT). This interface allows the hasher to be swapped for testing.\n *\n * @see {@link getUtxoCommitmentHashGenerator}\n * @see {@link H2GeneratorFns}\n * @public\n */\nexport interface H2GeneratorDeps {\n /**\n * Optional custom Poseidon hasher function.\n *\n * When provided, both H2 generator functions (`generateCircuitProvableHash`,\n * `generateH2`) will use this hasher. Cached per hasher reference via `WeakMap`.\n *\n * @defaultValue The return value of `getPoseidonHasher()`\n */\n readonly hasher?: PoseidonHashFunction;\n}\n\n/**\n * Cached default H2 generator.\n * @internal\n */\nlet cachedDefaultH2Generator: H2GeneratorFns | null = null;\n\n/**\n * Cache for H2 generators with custom hashers.\n * @internal\n */\nconst h2GeneratorCache = new WeakMap<PoseidonHashFunction, H2GeneratorFns>();\n\n/**\n * Creates H2 hash generator functions bound to the given hasher.\n *\n * @param hasher - The Poseidon hash function to use for H2 computations.\n * @returns An {@link H2GeneratorFns} object with `generateCircuitProvableHash` and `generateH2`.\n *\n * Both compute the same flat Poseidon(6):\n * ```\n * H2 = Poseidon([amount, nullifier, userCommitment, addrLow, addrHigh, h2BlindingFactor])\n * ```\n *\n * @privateRemarks\n * Returned as a plain object (not a class) to enable easy destructuring and mocking.\n * The factory pattern (rather than module-level functions) allows `getUtxoCommitmentHashGenerator()`\n * to cache generators per hasher via WeakMap.\n *\n * @internal\n */\nfunction createH2GeneratorFunctions(hasher: PoseidonHashFunction): H2GeneratorFns {\n /**\n * Flat Poseidon(6) hash over the six core UTXO fields.\n */\n const generateCircuitProvableHash: H2CircuitProvableHashFunction = async (\n params: H2CircuitProvableParams,\n ): Promise<Bn254FieldElement> => {\n const {\n amount,\n nullifier,\n userCommitment,\n finalDestinationAddressLow,\n finalDestinationAddressHigh,\n h2BlindingFactor,\n } = params;\n\n assertBn254FieldElement(amount);\n assertBn254FieldElement(nullifier);\n assertBn254FieldElement(userCommitment);\n assertBn254FieldElement(finalDestinationAddressLow);\n assertBn254FieldElement(finalDestinationAddressHigh);\n assertBn254FieldElement(h2BlindingFactor);\n\n const result = await hasher([\n amount,\n nullifier,\n userCommitment,\n finalDestinationAddressLow,\n finalDestinationAddressHigh,\n h2BlindingFactor,\n ]);\n\n assertBn254FieldElement(result);\n return result;\n };\n\n /**\n * Complete H2 leaf — flat Poseidon(6), identical to generateCircuitProvableHash.\n */\n const generateH2: H2HashFunction = async (\n params: H2CircuitProvableParams,\n ): Promise<Bn254FieldElement> => {\n const {\n amount,\n nullifier,\n userCommitment,\n finalDestinationAddressLow,\n finalDestinationAddressHigh,\n h2BlindingFactor,\n } = params;\n\n assertBn254FieldElement(amount);\n assertBn254FieldElement(nullifier);\n assertBn254FieldElement(userCommitment);\n assertBn254FieldElement(finalDestinationAddressLow);\n assertBn254FieldElement(finalDestinationAddressHigh);\n assertBn254FieldElement(h2BlindingFactor);\n\n const result = await hasher([\n amount,\n nullifier,\n userCommitment,\n finalDestinationAddressLow,\n finalDestinationAddressHigh,\n h2BlindingFactor,\n ]);\n\n assertBn254FieldElement(result);\n return result;\n };\n\n return {\n generateCircuitProvableHash,\n generateH2,\n };\n}\n\n/**\n * Returns a cached H2 hash generator with all H2-related functions.\n *\n * @remarks\n * H2 is computed as a flat Poseidon(6) hash:\n * ```\n * H2 = Poseidon([amount, nullifier, userCommitment, addrLow, addrHigh, h2BlindingFactor])\n * ```\n *\n * Caching: without arguments returns a singleton; with a custom hasher, caches per instance.\n *\n * @param deps - Optional dependencies including custom hasher function.\n * @returns An `H2GeneratorFns` object containing H2-related hash functions.\n *\n * @example\n * ```typescript\n * import { getUtxoCommitmentHashGenerator } from '@umbra-privacy/sdk';\n *\n * const h2Generator = getUtxoCommitmentHashGenerator();\n *\n * const h2Hash = await h2Generator.generateH2({\n * amount: 1000000n as Bn254FieldElement,\n * nullifier: computedNullifier,\n * userCommitment: receiverCommitment,\n * finalDestinationAddressLow: addressLow,\n * finalDestinationAddressHigh: addressHigh,\n * h2BlindingFactor: randomBlinding\n * });\n * ```\n *\n * @public\n */\nexport function getUtxoCommitmentHashGenerator(deps?: H2GeneratorDeps): H2GeneratorFns {\n const { hasher } = deps ?? {};\n\n // If no hasher provided, use the default cached hasher\n if (hasher === undefined) {\n if (cachedDefaultH2Generator !== null) {\n return cachedDefaultH2Generator;\n }\n\n const defaultHasher = getPoseidonHasher();\n const generator = createH2GeneratorFunctions(defaultHasher);\n cachedDefaultH2Generator = generator;\n return generator;\n }\n\n // Check if we have a cached generator for this hasher\n const cachedGenerator = h2GeneratorCache.get(hasher);\n if (cachedGenerator !== undefined) {\n return cachedGenerator;\n }\n\n // Create and cache new generator\n const generator = createH2GeneratorFunctions(hasher);\n h2GeneratorCache.set(hasher, generator);\n return generator;\n}\n\n// ============================================================================\n// Keystream Commitment Generator\n// ============================================================================\n\n/**\n * Optional dependencies for the keystream commitment generator factory.\n *\n * @remarks\n * Keystream commitments are used in the Umbra linker encryption scheme to bind the\n * encryption keystream values to a blinding factor without revealing the keystream\n * itself. The commitment is later used in zero-knowledge proof verification.\n *\n * The commitment formula is:\n * ```\n * commitment = Poseidon([keystream, blindingFactor])\n * ```\n *\n * Providing a custom hasher enables dependency injection for testing or for using\n * an alternative Poseidon implementation.\n *\n * @example\n * ```typescript\n * import { getKeystreamCommitmentGenerator } from '@umbra/sdk';\n *\n * // Substitute a mock hasher in unit tests\n * const mockHasher: PoseidonHashFunction = async ([k, b]) => (k + b) as Bn254FieldElement;\n * const commitmentGen = getKeystreamCommitmentGenerator({ hasher: mockHasher });\n * ```\n *\n * @see {@link getKeystreamCommitmentGenerator}\n * @see {@link KeystreamCommitmentFunction} for the generated function's type\n * @public\n */\nexport interface KeystreamCommitmentDeps {\n /**\n * Optional custom Poseidon hasher function.\n *\n * @remarks\n * When provided, the commitment function uses this hasher instead of the default\n * `getPoseidonHasher()` singleton. The result is cached per hasher reference\n * using a `WeakMap`.\n *\n * @defaultValue The return value of `getPoseidonHasher()`\n */\n readonly hasher?: PoseidonHashFunction;\n}\n\n/**\n * Cached default keystream commitment generator.\n * @internal\n */\nlet cachedDefaultKeystreamCommitmentFunction: KeystreamCommitmentFunction | null = null;\n\n/**\n * Cache for keystream commitment generators with custom hashers.\n * @internal\n */\nconst keystreamCommitmentCache = new WeakMap<PoseidonHashFunction, KeystreamCommitmentFunction>();\n\n/**\n * Creates a keystream commitment function bound to the given hasher.\n *\n * @param hasher - The Poseidon hash function to use for computing commitments.\n * @returns A {@link KeystreamCommitmentFunction} that computes\n * `Poseidon([keystream, blindingFactor])`.\n *\n * @remarks\n * The returned function validates both inputs before hashing:\n * - `keystream` must be a valid BN254 field element\n * - `blindingFactor` must be a valid BN254 field element\n *\n * The commitment hides the keystream while binding it to the blinding factor.\n * A verifier who knows both `keystream` and `blindingFactor` can recompute the\n * commitment and confirm it matches what was published on-chain.\n *\n * @throws {CryptographyAssertionError} If either input is not a valid BN254 field element.\n *\n * @privateRemarks\n * This factory function enables the commitment function to be cached per hasher\n * reference by `getKeystreamCommitmentGenerator()`. The closure captures the\n * `hasher` argument to avoid re-resolving it on every call.\n *\n * @internal\n */\nfunction createKeystreamCommitmentFunction(\n hasher: PoseidonHashFunction,\n): KeystreamCommitmentFunction {\n return async (\n keystream: Bn254FieldElement,\n blindingFactor: Bn254FieldElement,\n ): Promise<Bn254FieldElement> => {\n // Validate inputs\n assertBn254FieldElement(keystream);\n assertBn254FieldElement(blindingFactor);\n\n // commitment = Poseidon([keystream, blindingFactor])\n const result = await hasher([keystream, blindingFactor]);\n\n assertBn254FieldElement(result);\n return result;\n };\n}\n\n/**\n * Returns a cached keystream commitment generator function.\n *\n * @remarks\n * Keystream commitments bind the encryption keystream values without revealing them.\n * Used in the linker encryption scheme for zero-knowledge proof verification.\n *\n * **Formula:**\n * ```\n * commitment = Poseidon([keystream, blindingFactor])\n * ```\n *\n * ## Caching\n *\n * - When called without arguments, returns a cached singleton\n * - When called with a custom hasher, returns a cached function per hasher instance\n *\n * @param deps - Optional dependencies including custom hasher function.\n * @returns A `KeystreamCommitmentFunction` that computes keystream commitments.\n *\n * @example\n * ```typescript\n * import { getKeystreamCommitmentGenerator } from '@umbra-privacy/sdk';\n *\n * const generateCommitment = getKeystreamCommitmentGenerator();\n *\n * const keystream = ... // From Poseidon cipher keystream\n * const blindingFactor = ... // Random blinding factor\n *\n * const commitment = await generateCommitment(keystream, blindingFactor);\n * ```\n *\n * @public\n */\nexport function getKeystreamCommitmentGenerator(\n deps?: KeystreamCommitmentDeps,\n): KeystreamCommitmentFunction {\n const { hasher } = deps ?? {};\n\n // If no hasher provided, use the default cached hasher\n if (hasher === undefined) {\n if (cachedDefaultKeystreamCommitmentFunction !== null) {\n return cachedDefaultKeystreamCommitmentFunction;\n }\n\n const defaultHasher = getPoseidonHasher();\n const commitmentFunction = createKeystreamCommitmentFunction(defaultHasher);\n cachedDefaultKeystreamCommitmentFunction = commitmentFunction;\n return commitmentFunction;\n }\n\n // Check if we have a cached function for this hasher\n const cachedFunction = keystreamCommitmentCache.get(hasher);\n if (cachedFunction !== undefined) {\n return cachedFunction;\n }\n\n // Create and cache new function\n const commitmentFunction = createKeystreamCommitmentFunction(hasher);\n keystreamCommitmentCache.set(hasher, commitmentFunction);\n return commitmentFunction;\n}\n","/**\n * Poseidon Cipher Types\n *\n * This module defines branded primitive types for all values that flow through\n * Poseidon-based cryptographic operations in the Umbra SDK. Every type is a\n * {@link SubSubSubBrandedType} — a four-level phantom brand layered on top of\n * {@link Bn254FieldElement} — giving the TypeScript compiler enough information\n * to reject accidental substitutions (e.g. passing a `PoseidonKey` where a\n * `PoseidonCounter` is expected) while incurring zero runtime overhead.\n *\n * ## Why Poseidon?\n *\n * Poseidon is an algebraic hash function designed specifically for ZK-SNARK and\n * ZK-STARK circuits. Unlike SHA-256, which operates on bits and requires thousands\n * of R1CS constraints per invocation, Poseidon operates natively over prime fields\n * using low-degree polynomial substitution boxes (x^5 over BN254's F_r). This\n * reduces constraint count by 50-100x, making it practical to prove hashes inside\n * Groth16 or PLONK circuits.\n *\n * In Umbra, Poseidon is used for:\n * - UTXO commitment computation — binding amount, nullifier, and user commitment\n * into a single on-chain leaf via `H2 = Poseidon(...)`.\n * - Fiat-Shamir challenge derivation — squeezing a deterministic challenge from\n * the transcript of public inputs to a ZK proof.\n * - User commitment generation — binding a master viewing key (MVK) and a Poseidon\n * key to an on-chain commitment that the circuit can verify.\n * - Keystream generation — acting as a PRF to produce per-counter keystream values\n * for stream-cipher encryption of confidential token account balances.\n *\n * All types in this module are valid BN254 scalar field elements:\n * `0 ≤ value < BN254_FIELD_PRIME`.\n *\n * @see {@link https://eprint.iacr.org/2019/458} Poseidon: A New Hash Function for Zero-Knowledge Proof Systems\n * @see {@link Bn254FieldElement} for the underlying field element type\n * @see {@link BN254_FIELD_PRIME} for the field prime constant\n *\n * @packageDocumentation\n * @module crypto/poseidon/types\n */\n\nimport type { SubSubSubBrandedType, SubSubBrandedType } from \"../../common/branded\";\nimport type { U128 } from \"../../common/types\";\nimport { type Bn254FieldElement, BN254_FIELD_PRIME } from \"../../math/bn254/types\";\nimport { CryptographyAssertionError } from \"../../common/errors\";\n\n/* =============================================================================\n * POSEIDON CIPHER TYPES\n * ============================================================================= */\n\n/**\n * A plaintext field element that is an input to the Poseidon cipher or hash.\n *\n * `PoseidonPlaintext` wraps a {@link Bn254FieldElement} with an additional\n * phantom brand to signal that the value has been validated as a suitable input\n * for a Poseidon operation — i.e. it is a non-negative integer strictly less than\n * the BN254 field prime.\n *\n * @remarks\n * Poseidon operates natively over the BN254 scalar field F_r. Every input to a\n * Poseidon hash or cipher invocation must therefore be a valid field element. This\n * type makes that constraint explicit and compiler-enforced: you cannot pass an\n * arbitrary `bigint` directly without first calling {@link assertPoseidonPlaintext}.\n *\n * In Umbra, plaintext values include:\n * - Token amounts before encryption into confidential token accounts.\n * - Blinding factors before they are committed.\n * - UTXO data fields before being hashed into a commitment leaf.\n *\n * @example\n * ```typescript\n * import { assertPoseidonPlaintext, type PoseidonPlaintext } from \"@umbra/sdk\";\n *\n * const amount = 1_000_000n; // 1 USDC in micro-units\n * assertPoseidonPlaintext(amount);\n * // amount: PoseidonPlaintext — safe to pass to the Poseidon cipher\n *\n * const encryptor = getPoseidonEncryptor();\n * const ciphertexts = await encryptor([amount], transactionViewingKey);\n * ```\n *\n * @see {@link assertPoseidonPlaintext} for the corresponding assertion function\n * @see {@link PoseidonEncryptorFunction} for the function that consumes this type\n * @public\n */\nexport type PoseidonPlaintext = SubSubSubBrandedType<Bn254FieldElement, \"PoseidonPlaintext\">;\n\n/**\n * A hash output produced by the Poseidon hash function.\n *\n * `PoseidonHash` is the branded return type of a Poseidon invocation. It wraps\n * the raw {@link Bn254FieldElement} output to distinguish a computed hash from an\n * arbitrary field element at the type level.\n *\n * @remarks\n * The Poseidon hash function maps N field elements (1 ≤ N ≤ 12 for this\n * implementation) to a single field element. The output is:\n * - Always a valid BN254 field element (in [0, BN254_FIELD_PRIME)).\n * - Deterministic: identical inputs always produce identical output.\n * - Collision-resistant under the algebraic hash security assumptions.\n * - Pseudo-random: the output is computationally indistinguishable from a\n * uniformly random field element when at least one input is unknown.\n *\n * In Umbra, `PoseidonHash` values appear as:\n * - UTXO commitment leaves in the indexed Merkle tree (IMT).\n * - Aggregated public inputs fed to the on-chain Groth16 verifier.\n * - User commitments binding a master viewing key to a Poseidon key.\n *\n * @example\n * ```typescript\n * import { assertPoseidonHash, type PoseidonHash } from \"@umbra/sdk\";\n *\n * // assertPoseidonHash is useful when receiving a bigint from an external\n * // source (e.g. deserialized from JSON) that is claimed to be a hash.\n * const rawHash = 12345678901234567890n;\n * assertPoseidonHash(rawHash);\n * // rawHash: PoseidonHash\n * ```\n *\n * @see {@link assertPoseidonHash} for the corresponding assertion function\n * @see {@link PoseidonAggregatorHashFunction} for the function that returns this type\n * @public\n */\nexport type PoseidonHash = SubSubSubBrandedType<Bn254FieldElement, \"PoseidonHash\">;\n\n/**\n * The user's Poseidon private key — a secret field element derived from the master seed.\n *\n * `PoseidonKey` is NOT a parameter of the Poseidon hash function itself. Rather, it is\n * a user-level cryptographic secret that is:\n * 1. Derived deterministically from the user's master seed via a key-derivation path.\n * 2. Used as a secret input to UTXO commitments, binding the commitment to this specific\n * user without revealing any information about the key to an observer.\n * 3. Used as the master key for Poseidon-based stream cipher operations on confidential\n * token account balances (see {@link PoseidonEncryptorFunction}).\n *\n * @remarks\n * ## Cryptographic Role\n *\n * In Umbra's UTXO scheme, the on-chain commitment to a note is computed as:\n * ```\n * userCommitment = Poseidon([masterViewingKey, poseidonKey])\n * H2 = Poseidon([amount, nullifier, userCommitment, ...])\n * ```\n *\n * The `poseidonKey` is the `PoseidonKey` value. Because it appears inside\n * `userCommitment`, knowledge of the `PoseidonKey` is required to claim a UTXO\n * directed at this user.\n *\n * ## Security Requirements\n *\n * - Must be generated using a cryptographically secure random source (CSPRNG).\n * - Must be kept secret — exposure allows an attacker to claim all UTXOs directed\n * at the user that are encrypted with this key.\n * - Must be in the BN254 field: `0 ≤ poseidonKey < BN254_FIELD_PRIME`.\n * - Should be rotated if compromise is suspected.\n *\n * @example\n * ```typescript\n * import { assertPoseidonKey, type PoseidonKey } from \"@umbra/sdk\";\n *\n * // Derived from master seed in practice — never hardcode secrets.\n * const derivedKey = deriveKeyFromMasterSeed(masterSeed, \"poseidon-key\");\n * assertPoseidonKey(derivedKey);\n * // derivedKey: PoseidonKey — safe to use in encryption operations\n *\n * const encryptor = getPoseidonEncryptor();\n * const ciphertexts = await encryptor([amount], derivedKey);\n * ```\n *\n * @see {@link assertPoseidonKey} for the corresponding assertion function\n * @see {@link PoseidonEncryptorFunction} for encryption using this key\n * @see {@link PoseidonKeystreamGeneratorFunction} for keystream generation\n * @public\n */\nexport type PoseidonKey = SubSubSubBrandedType<Bn254FieldElement, \"PoseidonKey\">;\n\n/**\n * A ciphertext field element produced by Poseidon sponge encryption.\n *\n * `PoseidonCiphertext` is the branded output of encrypting a {@link PoseidonPlaintext}\n * with a {@link PoseidonKey}. It is structurally a BN254 field element but is\n * semantically distinct — it represents encrypted data, not raw plaintext.\n *\n * @remarks\n * ## Encryption Scheme\n *\n * Umbra's Poseidon cipher uses a counter-mode (CTR) construction over the BN254\n * field. For each plaintext at position `i`, the encryption is:\n * ```\n * ciphertext[i] = (plaintext[i] + keystream[i]) mod BN254_FIELD_PRIME\n * ```\n *\n * where `keystream[i] = Poseidon([transactionViewingKey, counter_i, 2n])`.\n *\n * This construction is additively homomorphic within the field: knowing the\n * keystream allows recovery of the plaintext by subtraction modulo the field prime.\n *\n * ## Security Properties\n *\n * Under the PRF security of Poseidon, ciphertext values are computationally\n * indistinguishable from uniformly random field elements. This provides semantic\n * security (IND-CPA) as long as counter values are not reused with the same key.\n *\n * ## Stored On-Chain\n *\n * Ciphertexts are stored in confidential token accounts on Solana. The MXE\n * (Multi-party eXecution Environment) decrypts them using the network's shared key\n * during MPC computation; the account owner decrypts using their `PoseidonKey`.\n *\n * @example\n * ```typescript\n * import { assertPoseidonCiphertext, type PoseidonCiphertext } from \"@umbra/sdk\";\n *\n * // Received from on-chain state — assert before using\n * const rawOnChainCiphertext = 99887766554433221100n;\n * assertPoseidonCiphertext(rawOnChainCiphertext);\n * // rawOnChainCiphertext: PoseidonCiphertext\n *\n * const decryptor = getPoseidonDecryptor();\n * const [plaintext] = await decryptor([rawOnChainCiphertext], myPoseidonKey);\n * ```\n *\n * @see {@link assertPoseidonCiphertext} for the corresponding assertion function\n * @see {@link PoseidonEncryptorFunction} for how ciphertexts are produced\n * @see {@link PoseidonDecryptorFunction} for how ciphertexts are recovered\n * @public\n */\nexport type PoseidonCiphertext = SubSubSubBrandedType<Bn254FieldElement, \"PoseidonCiphertext\">;\n\n/**\n * A counter value (nonce) used to index positions in Poseidon counter-mode encryption.\n *\n * `PoseidonCounter` plays the same role as a nonce in AES-CTR mode, but operates\n * over the BN254 scalar field. Each unique counter value, combined with the same\n * {@link PoseidonKey}, produces a distinct keystream element via the Poseidon PRF.\n *\n * @remarks\n * ## Counter-Mode Construction\n *\n * For a given key `k` and counter `c`, the keystream is:\n * ```\n * keystream(k, c) = Poseidon([k, c, 2n])\n * ```\n *\n * The constant `2n` is a domain separation tag that binds the Poseidon invocation\n * specifically to keystream generation, preventing cross-protocol misuse.\n *\n * ## Security Requirements\n *\n * - **Uniqueness**: Counter values MUST be unique for each distinct plaintext encrypted\n * under the same key. Reusing a `(key, counter)` pair for different plaintexts reveals\n * the XOR of those plaintexts (field difference, mod p).\n * - **Range**: Must satisfy `0 ≤ counter < BN254_FIELD_PRIME`.\n * - **Sequential use**: Counters are typically allocated sequentially starting at `0n`,\n * incrementing by 1 for each plaintext position.\n *\n * @example\n * ```typescript\n * import {\n * assertPoseidonCounter,\n * type PoseidonCounter,\n * BN254_FIELD_PRIME,\n * } from \"@umbra/sdk\";\n *\n * // Allocate counters for encrypting three field elements\n * const counters: PoseidonCounter[] = [0n, 1n, 2n].map((c) => {\n * assertPoseidonCounter(c);\n * return c;\n * });\n *\n * // Increment safely (check upper bound for very long streams)\n * const next = counters[2] + 1n;\n * assertPoseidonCounter(next); // would throw if next >= BN254_FIELD_PRIME\n *\n * assertPoseidonCounter(-1n); // throws: negative value\n * assertPoseidonCounter(BN254_FIELD_PRIME); // throws: exceeds field prime\n * ```\n *\n * @see {@link assertPoseidonCounter} for the corresponding assertion function\n * @see {@link PoseidonKeystreamGeneratorFunction} for how counters are consumed\n * @public\n */\nexport type PoseidonCounter = SubSubSubBrandedType<Bn254FieldElement, \"PoseidonCounter\">;\n\n/**\n * A pseudo-random field element generated by the Poseidon keystream PRF.\n *\n * `PoseidonKeystream` is the output of evaluating the Poseidon PRF at a specific\n * {@link PoseidonCounter}. It is the secret \"one-time pad\" value added to a\n * {@link PoseidonPlaintext} to produce a {@link PoseidonCiphertext}.\n *\n * @remarks\n * ## Generation Formula\n *\n * For a master key `k` and counter `c`, the keystream is:\n * ```\n * keystream = Poseidon([k, c, 2n])\n * ```\n *\n * The domain separation constant `2n` at the third input position ensures this\n * Poseidon invocation is distinguishable from other uses of Poseidon in the\n * protocol (e.g. hashing, commitment generation).\n *\n * ## Stream Cipher Operations\n *\n * ```\n * // Encryption\n * ciphertext = (plaintext + keystream) mod BN254_FIELD_PRIME\n *\n * // Decryption\n * plaintext = (ciphertext - keystream + BN254_FIELD_PRIME) mod BN254_FIELD_PRIME\n * ```\n *\n * ## Security Properties\n *\n * - Keystreamvalues are computationally indistinguishable from uniformly random\n * field elements when the key is unknown (PRF security of Poseidon).\n * - Each `(key, counter)` pair produces exactly one keystream value; counters must\n * not be reused (see {@link PoseidonCounter}).\n * - Keystreamvalues themselves must remain secret; exposing a keystream for a given\n * counter reveals the corresponding plaintext.\n *\n * @example\n * ```typescript\n * import {\n * assertPoseidonKeystream,\n * type PoseidonKeystream,\n * BN254_FIELD_PRIME,\n * } from \"@umbra/sdk\";\n *\n * const keystreamGenerator = getPoseidonKeystreamGenerator();\n * const keystreamMap = await keystreamGenerator([0n, 1n, 2n], masterKey);\n *\n * const keystream0 = keystreamMap.get(0n)!; // PoseidonKeystream for counter 0\n * // Encrypt one field element\n * const ciphertext = (plaintext + keystream0) % BN254_FIELD_PRIME;\n *\n * // Externally supplied keystream must be validated before use\n * const rawKeystream = 111222333n;\n * assertPoseidonKeystream(rawKeystream);\n * // rawKeystream: PoseidonKeystream\n * ```\n *\n * @see {@link assertPoseidonKeystream} for the corresponding assertion function\n * @see {@link PoseidonKeystreamGeneratorFunction} for the function that produces this type\n * @public\n */\nexport type PoseidonKeystream = SubSubSubBrandedType<Bn254FieldElement, \"PoseidonKeystream\">;\n\n/* =============================================================================\n * BASE85 LIMB TYPES\n * ============================================================================= */\n\n/**\n * A single 85-bit limb of a Base85 decomposition of a 256-bit value.\n *\n * Base85 limbs are the canonical way that the Umbra ZK circuits represent\n * 256-bit field elements (e.g., Solana public keys and Ethereum addresses) when\n * those values must be hashed or committed inside a Poseidon-based circuit.\n * Because BN254 field elements are ~254 bits, a full 256-bit value cannot be\n * reduced into a single field element without information loss. Instead, it is\n * split into three 85-bit limbs, each of which is small enough to fit safely\n * within the BN254 field.\n *\n * @remarks\n * ## Why 85 bits?\n *\n * Three 85-bit limbs cover exactly 255 bits, which is sufficient for any value\n * less than 2^255 — a superset of all 256-bit keys used in Umbra (Solana\n * addresses are 32 bytes = 256 bits, but their top bit is effectively always 0\n * for Ed25519 keys).\n *\n * ## Type Hierarchy\n *\n * ```\n * bigint\n * └── UnsignedInteger (brand: \"UnsignedInteger\")\n * └── U128 (brand: \"U128\")\n * └── Base85Limb (brand: \"Base85Limb\")\n * ```\n *\n * `Base85Limb` extends `U128` because the actual limb value fits within 85 bits,\n * which is a strict subset of the 128-bit unsigned range.\n *\n * @example\n * ```typescript\n * import { assertBase85Limb, BASE85_LIMB_MAX, type Base85Limb } from \"@umbra/sdk\";\n *\n * const lowBits = 123456789n;\n * assertBase85Limb(lowBits, \"lowBits\");\n * // lowBits: Base85Limb\n *\n * assertBase85Limb(BASE85_LIMB_MAX + 1n, \"overflow\"); // throws: exceeds max\n * assertBase85Limb(-1n, \"negative\"); // throws: negative value\n * ```\n *\n * @see {@link BASE85_LIMB_MAX} for the maximum valid limb value (2^85 - 1)\n * @see {@link Base85LimbTuple} for the three-limb tuple that represents a full 256-bit value\n * @see {@link assertBase85Limb} for the corresponding assertion function\n * @public\n */\nexport type Base85Limb = SubSubBrandedType<U128, \"Base85Limb\">;\n\n/**\n * The maximum value representable by a single Base85 limb.\n *\n * @remarks\n * Equals `2^85 - 1`. Any `bigint` value greater than this constant is out of range\n * for a `Base85Limb` and will be rejected by {@link assertBase85Limb}.\n *\n * The value in decimal is:\n * `38685626227668133590597631`\n *\n * @example\n * ```typescript\n * import { BASE85_LIMB_MAX } from \"@umbra/sdk\";\n *\n * // Check before asserting\n * if (value <= BASE85_LIMB_MAX) {\n * assertBase85Limb(value, \"value\");\n * }\n * ```\n *\n * @see {@link Base85Limb} for the type this constant bounds\n * @public\n */\nexport const BASE85_LIMB_MAX = (1n << 85n) - 1n;\n\n/**\n * A three-limb representation of a 256-bit value in Base85 encoding.\n *\n * `Base85LimbTuple` decomposes a 256-bit value `V` into three {@link Base85Limb}\n * components according to the bit-slice layout:\n * - `low`: bits [0, 84] — `V mod 2^85`\n * - `middle`: bits [85, 169] — `(V >> 85) mod 2^85`\n * - `high`: bits [170, 255] — `(V >> 170) mod 2^86`\n *\n * All three limbs together reconstruct the original 256-bit value as:\n * ```\n * V = low + (middle * 2^85) + (high * 2^170)\n * ```\n *\n * @remarks\n * ## Use in ZK Circuits\n *\n * Inside a Groth16 or PLONK circuit, a 256-bit value (e.g., a Solana address)\n * cannot be processed as a single field element because the BN254 prime is only\n * ~254 bits. The standard approach is to pass the value as three limbs and let\n * the circuit reconstruct it from the limb witnesses:\n *\n * ```circom\n * signal input addrLow; // bits [0, 84]\n * signal input addrMiddle; // bits [85, 169]\n * signal input addrHigh; // bits [170, 255]\n * ```\n *\n * The Umbra Poseidon aggregator hashes these limbs alongside other UTXO fields\n * to produce the aggregated public input for the Groth16 verifier.\n *\n * ## Readonly Fields\n *\n * All three fields are `readonly` to prevent mutation after construction. Changing\n * a limb without updating the others would produce an inconsistent representation.\n *\n * @example\n * ```typescript\n * import {\n * assertBase85Limb,\n * type Base85LimbTuple,\n * } from \"@umbra/sdk\";\n *\n * function decompose256BitValue(v: bigint): Base85LimbTuple {\n * const mask = (1n << 85n) - 1n;\n * const low = v & mask;\n * const middle = (v >> 85n) & mask;\n * const high = (v >> 170n) & ((1n << 86n) - 1n);\n *\n * assertBase85Limb(low, \"low\");\n * assertBase85Limb(middle, \"middle\");\n * assertBase85Limb(high, \"high\");\n *\n * return { low, middle, high };\n * }\n * ```\n *\n * @see {@link Base85Limb} for the individual limb type\n * @see {@link BASE85_LIMB_MAX} for the per-limb maximum value\n * @public\n */\nexport interface Base85LimbTuple {\n /**\n * The low 85 bits of the 256-bit value (bits 0–84, inclusive).\n *\n * @remarks\n * Computed as `value mod 2^85`. This is the least-significant limb.\n *\n * @readonly\n */\n readonly low: Base85Limb;\n\n /**\n * The middle 85 bits of the 256-bit value (bits 85–169, inclusive).\n *\n * @remarks\n * Computed as `(value >> 85n) mod 2^85`. This limb represents the second\n * 85-bit segment of the original value.\n *\n * @readonly\n */\n readonly middle: Base85Limb;\n\n /**\n * The high bits of the 256-bit value (bits 170–255, inclusive).\n *\n * @remarks\n * Computed as `value >> 170n`. Because a 256-bit value contributes at most\n * 86 bits in this position (256 - 170 = 86), this limb may reach up to\n * 2^86 - 1, which still fits within the `Base85Limb` maximum of 2^85 - 1\n * for values that are actually ≤ 2^255 (i.e., all valid Ed25519 public keys\n * and standard 32-byte Solana addresses).\n *\n * @readonly\n */\n readonly high: Base85Limb;\n}\n\n/* =============================================================================\n * POSEIDON CIPHER ASSERTIONS\n * ============================================================================= */\n\n/**\n * Narrows a `bigint` to {@link PoseidonPlaintext} by asserting it is a valid BN254 field element.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `PoseidonPlaintext`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value < BN254_FIELD_PRIME`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` is out of range (`value >= BN254_FIELD_PRIME`).\n *\n * @remarks\n * Assertion functions are the SDK's pattern for validating untrusted data at the\n * boundary of typed and untyped code (e.g., values deserialized from JSON, received\n * from on-chain accounts, or passed in from user input). After a successful call,\n * the brand is established for the rest of the scope without any runtime cost beyond\n * the validation itself.\n *\n * @example\n * ```typescript\n * import { assertPoseidonPlaintext } from \"@umbra/sdk\";\n *\n * // Good: valid field element\n * const amount = 1_000_000n;\n * assertPoseidonPlaintext(amount);\n * // amount: PoseidonPlaintext ✓\n *\n * // Bad: negative value\n * assertPoseidonPlaintext(-1n); // throws CryptographyAssertionError\n *\n * // Bad: at or above field prime\n * assertPoseidonPlaintext(BN254_FIELD_PRIME); // throws CryptographyAssertionError\n * ```\n *\n * @see {@link PoseidonPlaintext} for the type this function establishes\n * @see {@link BN254_FIELD_PRIME} for the upper bound on valid values\n * @public\n */\nexport function assertPoseidonPlaintext(value: bigint): asserts value is PoseidonPlaintext {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"PoseidonPlaintext\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"PoseidonPlaintext\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds BN254 field prime`, {\n value,\n expectedType: \"PoseidonPlaintext\",\n constraint: `value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Narrows a `bigint` to {@link PoseidonHash} by asserting it is a valid BN254 field element.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `PoseidonHash`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value < BN254_FIELD_PRIME`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` is out of range (`value >= BN254_FIELD_PRIME`).\n *\n * @remarks\n * Use this function when receiving a hash output from an external source (on-chain\n * account data, a network response, or a test fixture) and you need to re-establish\n * the `PoseidonHash` brand before passing the value to hash-typed APIs.\n *\n * Note that the Poseidon hash functions in the SDK return `PoseidonHash` directly,\n * so calling this assertion is only necessary at trust boundaries.\n *\n * @example\n * ```typescript\n * import { assertPoseidonHash } from \"@umbra/sdk\";\n *\n * // Received as raw bigint from deserialized on-chain data\n * const onChainLeaf: bigint = readLeafFromChain();\n * assertPoseidonHash(onChainLeaf);\n * // onChainLeaf: PoseidonHash — safe to compare with locally computed hashes\n *\n * assertPoseidonHash(-5n); // throws: negative\n * assertPoseidonHash(BN254_FIELD_PRIME); // throws: out of range\n * ```\n *\n * @see {@link PoseidonHash} for the type this function establishes\n * @public\n */\nexport function assertPoseidonHash(value: bigint): asserts value is PoseidonHash {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"PoseidonHash\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"PoseidonHash\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds BN254 field prime`, {\n value,\n expectedType: \"PoseidonHash\",\n constraint: `value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Narrows a `bigint` to {@link PoseidonKey} by asserting it is a valid BN254 field element.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `PoseidonKey`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value < BN254_FIELD_PRIME`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` is out of range (`value >= BN254_FIELD_PRIME`).\n *\n * @remarks\n * Call this function after deriving a `PoseidonKey` from a master seed to establish\n * the type brand. Because key derivation functions typically return raw `bigint` or\n * `Uint8Array` values, the assertion is needed at the point where the raw output is\n * interpreted as a Poseidon key.\n *\n * ## Security Warning\n *\n * A `PoseidonKey` is a long-lived secret. Validation does NOT check that the value\n * was generated with sufficient entropy. It is the caller's responsibility to ensure\n * the key was derived from a secure random source.\n *\n * @example\n * ```typescript\n * import { assertPoseidonKey } from \"@umbra/sdk\";\n *\n * const rawDerivedKey: bigint = deriveField(masterSeed, \"poseidon/v1\");\n * assertPoseidonKey(rawDerivedKey);\n * // rawDerivedKey: PoseidonKey — ready to pass to encryption functions\n *\n * assertPoseidonKey(-1n); // throws: negative\n * assertPoseidonKey(BN254_FIELD_PRIME); // throws: out of range\n * ```\n *\n * @see {@link PoseidonKey} for the type this function establishes\n * @see {@link PoseidonEncryptorFunction} for the primary consumer of this type\n * @public\n */\nexport function assertPoseidonKey(value: bigint): asserts value is PoseidonKey {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"PoseidonKey\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"PoseidonKey\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds BN254 field prime`, {\n value,\n expectedType: \"PoseidonKey\",\n constraint: `value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Narrows a `bigint` to {@link PoseidonCiphertext} by asserting it is a valid BN254 field element.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `PoseidonCiphertext`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value < BN254_FIELD_PRIME`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` is out of range (`value >= BN254_FIELD_PRIME`).\n *\n * @remarks\n * Use this function when reading ciphertext values from on-chain account state\n * (e.g., a confidential token account's encrypted balance fields) before passing\n * them to {@link PoseidonDecryptorFunction}.\n *\n * Structurally, ciphertexts are indistinguishable from other BN254 field elements.\n * The brand exists purely to prevent passing a plaintext where ciphertext is\n * expected, or vice versa, at the type level.\n *\n * @example\n * ```typescript\n * import { assertPoseidonCiphertext } from \"@umbra/sdk\";\n *\n * // Reading raw ciphertext from a deserialized Solana account\n * const rawCiphertext: bigint = accountData.encryptedBalance;\n * assertPoseidonCiphertext(rawCiphertext);\n * // rawCiphertext: PoseidonCiphertext — safe to pass to decryptor\n *\n * const [plaintext] = await decryptor([rawCiphertext], myKey);\n * ```\n *\n * @see {@link PoseidonCiphertext} for the type this function establishes\n * @see {@link PoseidonDecryptorFunction} for the function that consumes ciphertexts\n * @public\n */\nexport function assertPoseidonCiphertext(value: bigint): asserts value is PoseidonCiphertext {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"PoseidonCiphertext\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"PoseidonCiphertext\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds BN254 field prime`, {\n value,\n expectedType: \"PoseidonCiphertext\",\n constraint: `value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Narrows a `bigint` to {@link PoseidonCounter} by asserting it is a valid BN254 field element.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `PoseidonCounter`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value < BN254_FIELD_PRIME`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` is out of range (`value >= BN254_FIELD_PRIME`).\n *\n * @remarks\n * Counters are typically constructed from small non-negative integers (0, 1, 2, …)\n * that index into a sequence of plaintext positions. In practice the upper-bound\n * check is almost never triggered for counter values, but it is included for\n * correctness and to guard against edge cases in long-running sessions.\n *\n * @example\n * ```typescript\n * import { assertPoseidonCounter, type PoseidonCounter } from \"@umbra/sdk\";\n *\n * // Typed allocation of sequential counters\n * function makeCounters(n: number): PoseidonCounter[] {\n * return Array.from({ length: n }, (_, i) => {\n * const c = BigInt(i);\n * assertPoseidonCounter(c);\n * return c;\n * });\n * }\n *\n * assertPoseidonCounter(-1n); // throws: negative value\n * assertPoseidonCounter(BN254_FIELD_PRIME); // throws: exceeds field prime\n * ```\n *\n * @see {@link PoseidonCounter} for the type this function establishes\n * @see {@link PoseidonKeystreamGeneratorFunction} for how counters are consumed\n * @public\n */\nexport function assertPoseidonCounter(value: bigint): asserts value is PoseidonCounter {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"PoseidonCounter\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"PoseidonCounter\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds BN254 field prime`, {\n value,\n expectedType: \"PoseidonCounter\",\n constraint: `value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/**\n * Narrows a `bigint` to {@link PoseidonKeystream} by asserting it is a valid BN254 field element.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `PoseidonKeystream`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value < BN254_FIELD_PRIME`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` is out of range (`value >= BN254_FIELD_PRIME`).\n *\n * @remarks\n * Keystreamvalues are outputs of the Poseidon PRF and therefore always valid field\n * elements when produced by the SDK's {@link PoseidonKeystreamGeneratorFunction}.\n * This assertion is primarily useful at trust boundaries where a keystream value\n * arrives from an external or serialized source and must be re-validated.\n *\n * ## Security Note\n *\n * Keystreamvalues are cryptographic secrets. They must not be logged, serialized\n * to persistent storage, or transmitted in any observable channel. Exposing a\n * keystream allows recovery of the corresponding plaintext.\n *\n * @example\n * ```typescript\n * import { assertPoseidonKeystream, BN254_FIELD_PRIME } from \"@umbra/sdk\";\n *\n * // In tests: construct a keystream from a known value for deterministic checks\n * const testKeystream = 999888777666n;\n * assertPoseidonKeystream(testKeystream);\n * // testKeystream: PoseidonKeystream\n *\n * assertPoseidonKeystream(-1n); // throws: negative value\n * assertPoseidonKeystream(BN254_FIELD_PRIME); // throws: exceeds field prime\n * ```\n *\n * @see {@link PoseidonKeystream} for the type this function establishes\n * @see {@link PoseidonKeystreamGeneratorFunction} for the function that produces keystreams\n * @public\n */\nexport function assertPoseidonKeystream(value: bigint): asserts value is PoseidonKeystream {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"PoseidonKeystream\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"PoseidonKeystream\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= BN254_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds BN254 field prime`, {\n value,\n expectedType: \"PoseidonKeystream\",\n constraint: `value < ${String(BN254_FIELD_PRIME)}`,\n });\n }\n}\n\n/* =============================================================================\n * BASE85 LIMB ASSERTIONS\n * ============================================================================= */\n\n/**\n * Narrows a `bigint` to {@link Base85Limb} by asserting it is within the 85-bit range.\n *\n * This is a TypeScript assertion function: if it returns without throwing, the\n * TypeScript compiler refines the type of `value` from `bigint` to `Base85Limb`\n * in the calling scope.\n *\n * @param value - The `bigint` to validate. Must satisfy `0 ≤ value ≤ 2^85 - 1`.\n * @param name - A human-readable name for the variable being asserted, included in\n * error messages to aid debugging when multiple limbs are validated in sequence.\n * @defaultValue `\"value\"`\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value` is negative (`value < 0n`).\n * @throws {CryptographyAssertionError} If `value` exceeds the maximum limb value (`value > BASE85_LIMB_MAX`).\n *\n * @remarks\n * This assertion is distinct from the Poseidon field element assertions: it checks\n * against `BASE85_LIMB_MAX` (2^85 - 1) rather than `BN254_FIELD_PRIME`. Use this\n * when decomposing a 256-bit value into {@link Base85LimbTuple} components.\n *\n * The `name` parameter is optional and defaults to `\"value\"`. Providing descriptive\n * names (`\"low\"`, `\"middle\"`, `\"high\"`) makes errors easier to trace when all three\n * limbs are validated in sequence.\n *\n * @example\n * ```typescript\n * import { assertBase85Limb, BASE85_LIMB_MAX } from \"@umbra/sdk\";\n *\n * const low = 12345n;\n * const middle = 67890n;\n * const high = 111n;\n *\n * assertBase85Limb(low, \"low\");\n * assertBase85Limb(middle, \"middle\");\n * assertBase85Limb(high, \"high\");\n * // All three: Base85Limb\n *\n * // Error messages include the name for easy identification\n * assertBase85Limb(BASE85_LIMB_MAX + 1n, \"low\"); // throws: \"low: Value exceeds Base85 limb maximum\"\n * assertBase85Limb(-1n, \"middle\"); // throws: \"middle: Value -1 is negative\"\n * ```\n *\n * @see {@link Base85Limb} for the type this function establishes\n * @see {@link BASE85_LIMB_MAX} for the maximum allowed value\n * @see {@link Base85LimbTuple} for how three limbs form a 256-bit representation\n * @public\n */\nexport function assertBase85Limb(value: bigint, name = \"value\"): asserts value is Base85Limb {\n const variableName = name;\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`${variableName}: Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"Base85Limb\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`${variableName}: Value ${String(value)} is negative`, {\n value,\n expectedType: \"Base85Limb\",\n constraint: \"value >= 0\",\n });\n }\n if (value > BASE85_LIMB_MAX) {\n throw new CryptographyAssertionError(`${variableName}: Value exceeds Base85 limb maximum`, {\n value,\n expectedType: \"Base85Limb\",\n constraint: `value <= 2^85 - 1`,\n });\n }\n}\n","/**\n * Key Derivation Implementation\n *\n * This module provides the complete implementation of Umbra's KMAC256-based\n * key derivation hierarchy. Every cryptographic key used in the protocol —\n * viewing keys, Poseidon keys, X25519 keypairs, nullifiers, blinding factors,\n * and ephemeral UTXO keys — is derived deterministically from a single 64-byte\n * master seed using KMAC256 with strict domain separation.\n *\n * ## Key Hierarchy\n *\n * All derivations originate from `MasterSeed` (64 bytes). The hierarchy is:\n *\n * - `MasterViewingKey` — 252-bit BN254 field element; root of the viewing key tree\n * - `MintViewingKey` — `Poseidon(MVK, mintLow, mintHigh)`\n * - `YearlyViewingKey` — `Poseidon(MVK_mint, year)`\n * - `MonthlyViewingKey` — `Poseidon(YVK, month)`\n * - `DailyViewingKey` — `Poseidon(MVK_month, day)`\n * - `HourlyViewingKey` — `Poseidon(DVK, hour)`\n * - `MinuteViewingKey` — `Poseidon(HVK, minute)`\n * - `SecondViewingKey` — `Poseidon(MVK_min, second)`\n * - `MasterViewingKeyBlindingFactor` — BN254 field element for MVK commitments\n * - `PoseidonPrivateKey` — BN254 field element; key for Poseidon cipher\n * - `PoseidonBlindingFactor` — BN254 field element for Poseidon commitments\n * - `UserAccountX25519Keypair` — Curve25519 keypair for token-account encryption\n * - `MasterViewingKeyEncryptingX25519Keypair` — keypair encrypting MVK via Rescue\n * - `MintX25519Keypair` — per-mint keypair for re-encryption\n * - `RescueEncryptionCommitmentBlindingFactor` — BN254 element per offset\n * - `RandomFactorForPolynomialCommitment` — Curve25519 element per offset\n * - Ephemeral UTXO keys (all derived via a 16-byte `modifiedGenerationIndex`)\n *\n * ## Algorithm\n *\n * The base pseudorandom function for all non-Poseidon derivations is:\n * ```\n * output = KMAC256(\n * key = UTF8(\"Umbra Privacy - {domainSeparator}\"),\n * msg = masterSeed,\n * dkLen = 64,\n * S = buildPersonalizationString(client) // e.g. \"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|mainnet\"\n * )\n * ```\n *\n * For pure derivations (no client / master-seed access), the personalization\n * constant `PURE_PERSONALIZATION` (`\"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|pure\"`)\n * is used and the `modifiedGenerationIndex` (16 bytes) replaces the master seed\n * as the KMAC message.\n *\n * ## Domain Separation\n *\n * Every derivation uses a unique human-readable domain string so that outputs\n * from different key types are cryptographically independent even when the same\n * master seed is used. The format is:\n * ```\n * \"Umbra Privacy - {KeyType} - {offset}\"\n * ```\n *\n * ## Security Model\n *\n * - Domain separation: `\"Umbra Privacy - {separator}\"` format prevents cross-type\n * key collisions.\n * - KMAC256 with 512-bit output ensures negligible statistical bias before field\n * element sampling.\n * - Constant-time modular reduction via `bn254FieldElementSampler` and\n * `curve25519FieldElementSampler` prevents timing side-channels.\n * - All factory functions follow the `(args, deps?)` dependency injection pattern\n * so that cryptographic primitives can be replaced in tests without touching\n * production code paths.\n *\n * @packageDocumentation\n * @public\n *\n * @module crypto/key-derivation\n */\n\nimport { kmac256 as defaultKmac256 } from \"@noble/hashes/sha3-addons.js\";\nimport { keccak_512 } from \"@noble/hashes/sha3.js\";\nimport { sha512 } from \"@noble/hashes/sha2.js\";\nimport { ed25519 } from \"@noble/curves/ed25519.js\";\nimport type { Address } from \"@solana/kit\";\n\nimport type { IUmbraClient } from \"../../umbra/interfaces\";\nimport type {\n PseudorandomU512DeriverFunction as PseudorandomU512DeriverFunction,\n MasterSeedBasedFieldElementDeriverFunction as MasterSeedBasedFieldElementDeriverFunction,\n EphemeralMasterSeedDeriverFunction as EphemeralMasterSeedDeriverFunction,\n MasterViewingKeyDeriverFunction as MasterViewingKeyDeriverFunction,\n MasterViewingKeyBlindingFactorDeriverFunction as MasterViewingKeyBlindingFactorDeriverFunction,\n PoseidonPrivateKeyDeriverFunction as PoseidonPrivateKeyDeriverFunction,\n PoseidonBlindingFactorDeriverFunction as PoseidonBlindingFactorDeriverFunction,\n MintViewingKeyDeriverFunction as MintViewingKeyDeriverFunction,\n YearlyViewingKeyGeneratorFunction as YearlyViewingKeyGeneratorFunction,\n MonthlyViewingKeyGeneratorFunction,\n DailyViewingKeyGeneratorFunction,\n HourlyViewingKeyGeneratorFunction,\n MinuteViewingKeyGeneratorFunction,\n SecondViewingKeyGeneratorFunction,\n Curve25519KeypairGeneratorFunction,\n MintX25519KeypairDeriverFunction,\n RescueCommitmentBlindingFactorDeriverFunction,\n PolynomialCommitmentFactorDeriverFunction,\n EphemeralUtxoMasterViewingKeyDeriverFunction,\n EphemeralUtxoMasterViewingKeyBlindingFactorDeriverFunction,\n EphemeralUtxoPoseidonPrivateKeyDeriverFunction,\n EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverFunction,\n EphemeralUtxoNullifierDeriverFunction,\n EphemeralUtxoH2RandomSecretDeriverFunction,\n PoseidonKeystreamBlindingFactorDeriverFunction,\n EphemeralRescueCommitmentBlindingFactorDeriverFunction,\n} from \"./interfaces\";\nimport type { Kmac256Function as Kmac256Function } from \"../interfaces\";\nimport type { PoseidonHashFunction } from \"../poseidon/interfaces\";\nimport type { U512BasedBn254FieldElementSamplerFunction } from \"../../math/bn254/interfaces\";\nimport type { U512BasedCurve25519FieldElementSamplerFunction } from \"../../math/curve25519/interfaces\";\nimport type {\n MasterSeed,\n Bn254FieldElement,\n Curve25519FieldElement,\n MasterViewingKey,\n MintViewingKey,\n YearlyViewingKey,\n MonthlyViewingKey,\n DailyViewingKey,\n HourlyViewingKey,\n MinuteViewingKey,\n SecondViewingKey,\n Year,\n Month,\n Day,\n Hour,\n Minute,\n Second,\n} from \"../../types\";\nimport type { U128, U256, U512BeBytes } from \"../../common/types\";\nimport { assertU512BeBytes, U256_BYTE_LENGTH } from \"../../common/types\";\nimport {\n assertMasterSeed,\n assertMasterViewingKey,\n assertMintViewingKey,\n assertYearlyViewingKey,\n assertMonthlyViewingKey,\n assertDailyViewingKey,\n assertHourlyViewingKey,\n assertMinuteViewingKey,\n assertSecondViewingKey,\n assertBn254FieldElement,\n assertX25519PrivateKey,\n CryptographyAssertionError,\n} from \"../../types/cryptography\";\nimport type { Curve25519KeypairResult } from \"./types\";\nimport { assertX25519PublicKey, assertCurve25519KeypairResult } from \"./types\";\nimport { buildPersonalizationString } from \"./personalization\";\nimport { bn254FieldElementSampler } from \"../../math/bn254/field-element-sampler\";\nimport { curve25519FieldElementSampler } from \"../../math/curve25519/field-arithmetic\";\nimport { getPoseidonHasher } from \"../poseidon\";\nimport { splitAddressToLowHigh, type AddressSplitResult } from \"../../common/addresses\";\nimport { createBn254FieldElement } from \"../../common/type-helpers\";\n\n/* =============================================================================\n * CONSTANTS\n * ============================================================================= */\n\n/**\n * The base prefix prepended to every KMAC domain separator string.\n *\n * @remarks\n * All domain-separated keys in Umbra follow the pattern:\n * `\"Umbra Privacy - {KeyType} - {offset}\"`.\n * This shared prefix binds every derivation to the Umbra protocol namespace,\n * providing an additional layer of domain isolation above the KMAC key argument.\n *\n * @internal\n */\nconst DOMAIN_PREFIX = \"Umbra Privacy\";\n\n/**\n * KMAC256 output length in bytes for 512-bit pseudorandom output.\n *\n * @remarks\n * 64 bytes (512 bits) of KMAC256 output is used before field-element sampling.\n * A 512-bit output ensures the statistical distance from uniform after reduction\n * modulo the BN254 or Curve25519 field prime is at most 2^{-128}, which is\n * negligible by standard cryptographic arguments.\n *\n * @defaultValue 64\n * @internal\n */\nconst KMAC_512_OUTPUT_LENGTH = 64;\n\n/**\n * Domain separator prefix for ephemeral master seed derivation.\n *\n * @remarks\n * Used by {@link getEphemeralMasterSeedDeriver} to form:\n * `\"Ephemeral Seed - {offset}\"`. Each U256 offset produces an independent\n * 64-byte ephemeral master seed via the standard U512 KMAC pipeline.\n *\n * @internal\n */\nconst EPHEMERAL_SEED_PREFIX = \"Ephemeral Seed\";\n\n/**\n * Domain separator for master viewing key derivation.\n *\n * @remarks\n * Used by {@link getMasterViewingKeyDeriver} to form:\n * `\"Umbra Privacy - MasterViewingKey - {offset}\"`.\n * The MVK is derived with 256-bit KMAC output, then masked to 252 bits.\n *\n * @internal\n */\nconst MASTER_VIEWING_KEY_DOMAIN = \"MasterViewingKey\";\n\n/**\n * Domain separator prefix for Poseidon private key derivation.\n *\n * @remarks\n * Used by {@link getPoseidonPrivateKeyDeriver} to form:\n * `\"PoseidonPrivateKey - {offset}\"`.\n * The offset is read from `client.offsets.poseidonPrivateKey`.\n *\n * @internal\n */\nconst POSEIDON_PRIVATE_KEY_PREFIX = \"PoseidonPrivateKey\";\n\n/**\n * Domain separator prefix for Poseidon blinding factor derivation.\n *\n * @remarks\n * Used by {@link getPoseidonBlindingFactorDeriver} directly as the domain:\n * `\"PoseidonBlindingFactor\"`. Unlike the private key, the blinding factor\n * does not include an offset in its domain string.\n *\n * @internal\n */\nconst POSEIDON_BLINDING_FACTOR_PREFIX = \"PoseidonBlindingFactor\";\n\n/**\n * Domain separator for user-account X25519 keypair derivation.\n *\n * @remarks\n * Used by {@link getUserAccountX25519KeypairDeriver} to form:\n * `\"UserAccountX25519Keypair - {offset}\"`.\n * The resulting Ed25519 public key is submitted to `registerTokenPublicKey`\n * and converted to X25519 on-chain for confidential balance encryption.\n *\n * @internal\n */\nconst USER_ACCOUNT_X25519_KEYPAIR_DOMAIN = \"UserAccountX25519Keypair\";\n\n/**\n * Domain separator for MVK-encrypting X25519 keypair derivation.\n *\n * @remarks\n * Used by {@link getMasterViewingKeyX25519KeypairDeriver} to form:\n * `\"MasterViewingKeyEncryptingX25519Keypair - {offset}\"`.\n * The X25519 private key encrypts the master viewing key via the Rescue cipher\n * in `registerUserForAnonymousUsageV3`, and the Ed25519 public key is stored\n * on-chain as the proving signer.\n *\n * @internal\n */\nconst MVK_ENCRYPTING_X25519_KEYPAIR_DOMAIN = \"MasterViewingKeyEncryptingX25519Keypair\";\n\n/**\n * Domain separator for per-mint X25519 keypair derivation.\n *\n * @remarks\n * Used by {@link getMintX25519KeypairDeriver} to form:\n * `\"MintX25519Keypair - {mint} - {offset}\"`.\n * Including the mint address in the domain string guarantees that keypairs\n * for different mints are cryptographically independent even at the same offset.\n * Used in `reencrypt_shared` operations.\n *\n * @internal\n */\nconst MINT_X25519_KEYPAIR_DOMAIN = \"MintX25519Keypair\";\n\n/**\n * Domain separator prefix for Rescue encryption commitment blinding factors.\n *\n * @remarks\n * Used by {@link getRescueCommitmentBlindingFactorDeriver} to form:\n * `\"RescueEncryptionCommitmentBlindingFactor - {totalOffset}\"`.\n * The total offset combines `client.offsets.rescueCommitmentBlindingFactor`\n * with the caller-supplied per-operation offset.\n *\n * @internal\n */\nconst RESCUE_ENCRYPTION_COMMITMENT_BLINDING_FACTOR_PREFIX =\n \"RescueEncryptionCommitmentBlindingFactor\";\n\n/**\n * Domain separator prefix for random factors in polynomial commitments.\n *\n * @remarks\n * Used by {@link getPolynomialCommitmentFactorDeriver} to form:\n * `\"RandomFactorForPolynomialCommitment - {totalOffset}\"`.\n * The output is sampled to a Curve25519 (not BN254) field element because\n * polynomial commitments in Umbra operate over the Curve25519 scalar field.\n *\n * @internal\n */\nconst RANDOM_FACTOR_FOR_POLYNOMIAL_COMMITMENT_PREFIX = \"RandomFactorForPolynomialCommitment\";\n\n/**\n * Bit mask constraining a 256-bit value to at most 252 bits.\n *\n * @remarks\n * Equal to `2^252 - 1`. Applied to the raw KMAC256 output when deriving\n * `MasterViewingKey` (and its ephemeral variants) so that the value fits in\n * the BN254 scalar field AND satisfies the additional 252-bit constraint\n * required by ZK circuits that operate on 252-bit inputs.\n *\n * After masking, an explicit `>= 2^252` check is performed to guard against\n * future changes that might remove the mask.\n *\n * @internal\n */\nconst MAX_252_BIT_VALUE = (1n << 252n) - 1n;\n\n/**\n * Fixed personalization bytes used by all pure (stateless) KMAC256 derivations.\n *\n * @remarks\n * Pure derivation functions have no access to an `IUmbraClient` — they operate\n * solely on a 16-byte `modifiedGenerationIndex`. To maintain the KMAC\n * customization-string structure used everywhere else in the system, they use\n * this hard-coded personalization value.\n *\n * The `\"pure\"` token in the network slot signals that network isolation was\n * already baked in at the `deriveModifiedGenerationIndexFor*Claim` step, so\n * no further network disambiguation is needed here.\n *\n * Format: `\"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|pure\"`\n *\n * @see {@link buildPersonalizationString} for the client-aware variant\n * @internal\n */\nconst PURE_PERSONALIZATION = new TextEncoder().encode(\"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|pure\");\n\n/**\n * Function type that splits a Solana base58 address into low/high 128-bit halves.\n *\n * @remarks\n * Solana addresses are 32-byte values. Poseidon hashing requires BN254 field\n * elements. Splitting a 32-byte address into two 128-bit little-endian integers\n * guarantees both halves fit within the BN254 field prime and avoids any\n * reduction loss. This type alias is used for dependency injection so callers\n * can substitute test implementations.\n *\n * @see {@link splitAddressToLowHigh} for the production implementation\n * @public\n */\nexport type SplitAddressFunction = (address: Address) => AddressSplitResult;\n\n/* =============================================================================\n * PSEUDORANDOM U512 GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments for creating a pseudorandom U512 generator.\n *\n * @remarks\n * The client is the sole required input because it provides both the master\n * seed (via `client.masterSeed.getMasterSeed()`) and the version information\n * (via `client.versions`) used to build the KMAC personalization string.\n *\n * @public\n */\nexport interface PseudorandomU512DeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * The master seed is passed as the KMAC256 message; version information is\n * encoded in the personalization string (S parameter per NIST SP 800-185).\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the pseudorandom U512 generator.\n *\n * @remarks\n * All fields are optional. Omitting them selects production-safe defaults.\n * Override them in unit tests to inject deterministic or instrumented\n * implementations without touching any production code paths.\n *\n * @public\n */\nexport interface PseudorandomU512DeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @remarks\n * When omitted, defaults to the `kmac256` export from\n * `@noble/hashes/sha3-addons`, which is a constant-time, audited\n * implementation of KMAC-256 per NIST SP 800-185.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n}\n\n/**\n * Creates the base pseudorandom U512 generator that underpins all KMAC256\n * key derivations in Umbra.\n *\n * @remarks\n * This is the lowest-level keyed derivation primitive. Every higher-level\n * generator (`getMasterSeedBasedFieldElementDeriver`, `getEphemeralMasterSeedDeriver`,\n * all keypair generators, etc.) delegates to this function or calls KMAC256\n * directly using the same structural pattern.\n *\n * ## KMAC256 Call Structure\n *\n * ```\n * output = KMAC256(\n * key = UTF8(\"Umbra Privacy - {domainSeparator}\"),\n * msg = masterSeed, // 64 bytes\n * dkLen = 64, // 512 bits\n * S = buildPersonalizationString(client)\n * // e.g. \"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|mainnet\"\n * )\n * ```\n *\n * ## Domain Separation Invariant\n *\n * Every caller must supply a domain separator that is unique to its key type.\n * Reusing the same separator with the same master seed produces the same output,\n * which would allow cross-type key substitution attacks. Higher-level factories\n * enforce uniqueness via their private module-level constants.\n *\n * ## Personalization String\n *\n * The KMAC S (customization) parameter encodes `protocol/version`,\n * `algorithm/version`, `scheme/version`, and `network` so that a version bump\n * or network change produces a completely independent key space without any\n * code changes in the derivation logic.\n *\n * @param args - Required arguments: the Umbra client\n * @param deps - Optional dependencies for testing; omit in production\n * @returns An async function `(domainSeparator: string) => Promise<U512BeBytes>`\n *\n * @throws `CryptographyAssertionError` if KMAC256 returns fewer than 64 bytes\n * (should never occur with a conformant implementation)\n *\n * @example\n * ```typescript\n * const generator = getPseudorandomU512Deriver({ client });\n *\n * // Derive independent 512-bit values via domain separation\n * const mvkBytes = await generator(\"MasterViewingKey\");\n * const seedBytes = await generator(\"Ephemeral Seed - 0\");\n * const pkBytes = await generator(\"PoseidonPrivateKey - 0\");\n * ```\n *\n * @see {@link getMasterSeedBasedFieldElementDeriver} — wraps this with BN254 sampling\n * @see {@link buildPersonalizationString} — builds the S parameter from the client\n * @public\n */\nexport function getPseudorandomU512Deriver(\n args: PseudorandomU512DeriverArgs,\n deps?: PseudorandomU512DeriverDeps,\n): PseudorandomU512DeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256 } = deps ?? {};\n\n return async (domainSeparator: string): Promise<U512BeBytes> => {\n // Get the master seed from the client\n const masterSeed = await client.masterSeed.getMasterSeed();\n\n // Build personalization string with version information\n const personalization = buildPersonalizationString(client);\n\n // Construct domain-separated key\n const key = `${DOMAIN_PREFIX} - ${domainSeparator}`;\n\n // Compute KMAC256 with 64-byte (512-bit) output using personalization\n const output = kmac256(\n new TextEncoder().encode(key), // key (customization string)\n masterSeed, // message\n {\n dkLen: KMAC_512_OUTPUT_LENGTH, // 64 bytes = 512 bits\n personalization, // version info\n },\n );\n\n // Assert as U512BeBytes\n assertU512BeBytes(output);\n\n return output;\n };\n}\n\n/* =============================================================================\n * FIELD ELEMENT DERIVER\n * ============================================================================= */\n\n/**\n * Required arguments for creating a master-seed-based BN254 field element deriver.\n *\n * @public\n */\nexport interface MasterSeedBasedFieldElementDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * Forwarded verbatim to {@link getPseudorandomU512Deriver} unless a custom\n * `u512Generator` is supplied via `deps`.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the master-seed-based BN254 field element deriver.\n *\n * @remarks\n * Inject custom implementations in tests. Omit all fields in production.\n *\n * @public\n */\nexport interface MasterSeedBasedFieldElementDeriverDeps {\n /**\n * Custom pseudorandom U512 generator.\n *\n * @remarks\n * When omitted, a new generator is created via\n * `getPseudorandomU512Deriver({ client })`. Provide this to avoid\n * constructing a second generator when the caller already holds one.\n *\n * @defaultValue `getPseudorandomU512Deriver({ client })`\n * @readonly\n */\n readonly u512Generator?: PseudorandomU512DeriverFunction;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @remarks\n * Applied after the 512-bit KMAC output to reduce it to a uniformly\n * distributed element in `[0, p-1]` where `p` is the BN254 scalar prime.\n * When omitted, defaults to {@link bn254FieldElementSampler}.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates a master-seed-based BN254 field element deriver.\n *\n * @remarks\n * This factory composes {@link getPseudorandomU512Deriver} (KMAC256, 512-bit\n * output) with a constant-time BN254 field element sampler. The resulting\n * function accepts a domain separator string and returns a uniformly distributed\n * element of the BN254 scalar field.\n *\n * It is the preferred way to derive BN254 field elements for keys that are\n * indexed by a string (e.g. `\"PoseidonBlindingFactor\"`) rather than a numeric\n * offset. For offset-parameterised keys, the caller should construct the domain\n * string before passing it in (e.g. `\"PoseidonPrivateKey - 0\"`).\n *\n * ## Algorithm\n *\n * ```\n * u512 = KMAC256(\n * key = UTF8(\"Umbra Privacy - {domainSeparator}\"),\n * msg = masterSeed,\n * dkLen = 64,\n * S = personalizationString\n * )\n * fieldElement = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator and/or BN254 sampler\n * @returns An async function `(domainSeparator: string) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const deriver = getMasterSeedBasedFieldElementDeriver({ client });\n *\n * // Blinding factor — uses the module-level constant as domain\n * const bf = await deriver(\"UmbraPrivacy - Master Viewing Key Blinding Factor\");\n *\n * // Poseidon private key with offset\n * const pk = await deriver(\"PoseidonPrivateKey - 0\");\n * ```\n *\n * @see {@link getPseudorandomU512Deriver} — base KMAC256 abstraction\n * @public\n */\nexport function getMasterSeedBasedFieldElementDeriver(\n args: MasterSeedBasedFieldElementDeriverArgs,\n deps?: MasterSeedBasedFieldElementDeriverDeps,\n): MasterSeedBasedFieldElementDeriverFunction {\n const { client } = args;\n const {\n u512Generator = getPseudorandomU512Deriver({ client }),\n sampler = bn254FieldElementSampler,\n } = deps ?? {};\n\n return async (domainSeparator: string): Promise<Bn254FieldElement> => {\n // Generate 512-bit pseudorandom value\n const u512Value = await u512Generator(domainSeparator);\n\n // Sample field element using constant-time reduction\n const fieldElement = sampler(u512Value);\n\n return fieldElement as Bn254FieldElement;\n };\n}\n\n/* =============================================================================\n * EPHEMERAL MASTER SEED GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments for creating an ephemeral master seed generator.\n *\n * @public\n */\nexport interface EphemeralMasterSeedDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * Forwarded to {@link getPseudorandomU512Deriver} unless a custom\n * `u512Generator` is supplied via `deps`.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral master seed generator.\n *\n * @remarks\n * Provide a custom `u512Generator` to share an existing generator instance\n * and avoid redundant client lookups; omit for production use.\n *\n * @public\n */\nexport interface EphemeralMasterSeedDeriverDeps {\n /**\n * Custom pseudorandom U512 generator.\n *\n * @remarks\n * When omitted, a new instance is created via\n * `getPseudorandomU512Deriver({ client })`.\n *\n * @defaultValue `getPseudorandomU512Deriver({ client })`\n * @readonly\n */\n readonly u512Generator?: PseudorandomU512DeriverFunction;\n}\n\n/**\n * Creates an ephemeral master seed generator.\n *\n * @remarks\n * An ephemeral master seed is a full 64-byte seed derived from the permanent\n * master seed and a U256 offset. It enables single-operation key sub-hierarchies:\n * the entire permanent key hierarchy can be regenerated from the permanent master\n * seed, while each ephemeral seed's sub-hierarchy is forward-secret relative to\n * a different offset.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Ephemeral Seed - {offset}\")\n * output = KMAC256(\n * key = UTF8(\"Umbra Privacy - {domain}\"),\n * msg = permanentMasterSeed,\n * dkLen = 64,\n * S = personalizationString\n * )\n * // output is asserted as MasterSeed (64-byte branded Uint8Array)\n * ```\n *\n * ## Use Cases\n *\n * - Deriving a one-time key sub-hierarchy for a single UTXO operation so\n * that compromising the ephemeral seed does not reveal the permanent master\n * viewing key.\n * - Providing deterministic replay of ephemeral derivations using the same\n * client and offset (useful for recovery and auditing).\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator\n * @returns An async function `(offset: U256) => Promise<MasterSeed>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralMasterSeedDeriver({ client });\n *\n * // Each offset yields a fully independent ephemeral seed\n * const seed0 = await generator(0n as U256);\n * const seed1 = await generator(1n as U256);\n * ```\n *\n * @see {@link EphemeralMasterSeedDeriverFunction} — the returned function type\n * @public\n */\nexport function getEphemeralMasterSeedDeriver(\n args: EphemeralMasterSeedDeriverArgs,\n deps?: EphemeralMasterSeedDeriverDeps,\n): EphemeralMasterSeedDeriverFunction {\n const { client } = args;\n const { u512Generator = getPseudorandomU512Deriver({ client }) } = deps ?? {};\n\n return async (offset: U256): Promise<MasterSeed> => {\n // Format domain separator with offset as decimal string\n const domainSeparator = `${EPHEMERAL_SEED_PREFIX} - ${offset.toString()}`;\n\n // Generate 512-bit pseudorandom value\n const u512Value = await u512Generator(domainSeparator);\n\n // The U512BeBytes needs to be treated as a MasterSeed\n // MasterSeed is a subbrand of Keccak512Hash which is U512LeBytes\n // We use the raw bytes and assert as MasterSeed\n assertMasterSeed(u512Value);\n\n return u512Value;\n };\n}\n\n/* =============================================================================\n * MASTER VIEWING KEY GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments for creating a master viewing key generator.\n *\n * @public\n */\nexport interface MasterViewingKeyDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * The client's `offsets.masterViewingKey` is included in the domain separator\n * so that the user can rotate the MVK independently of the master seed.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the master viewing key generator.\n *\n * @public\n */\nexport interface MasterViewingKeyDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @remarks\n * The MVK generator calls KMAC256 directly (not via the U512 generator)\n * because it needs a 256-bit output (not 512-bit) before masking to 252 bits.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n}\n\n/**\n * Creates a master viewing key (MVK) generator.\n *\n * @remarks\n * The MVK is the root of the Poseidon-based viewing key tree. It is constrained\n * to 252 bits so it fits in the BN254 scalar field AND satisfies the additional\n * bit-length requirement of the ZK circuits that use it as a public input.\n *\n * ## Algorithm\n *\n * ```\n * key = UTF8(\"Umbra Privacy - MasterViewingKey - {client.offsets.masterViewingKey}\")\n * raw256 = KMAC256(key, masterSeed, dkLen=32, S=personalizationString)\n * value = BigEndianBytesToBigInt(raw256)\n * value = value & ((1n << 252n) - 1n) // clamp to 252 bits\n * assertBn254FieldElement(value)\n * assertMasterViewingKey(value)\n * ```\n *\n * Note that the output length is 32 bytes (256 bits), not 64, because the\n * 252-bit mask removes the top 4 bits before any field-modulus reduction; the\n * resulting value is already less than the BN254 prime.\n *\n * ## Key Rotation\n *\n * `client.offsets.masterViewingKey` is included in the domain string. Advancing\n * this offset produces a completely independent MVK — and therefore an entirely\n * independent viewing-key tree — without changing the master seed.\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 implementation\n * @returns An async zero-argument function `() => Promise<MasterViewingKey>`\n *\n * @throws `CryptographyAssertionError` if the masked value is still `>= 2^252`\n * (indicates a logic error; should never occur after the bitmask)\n * @throws `CryptographyAssertionError` if the result is not a valid BN254 field element\n *\n * @example\n * ```typescript\n * const generator = getMasterViewingKeyDeriver({ client });\n * const mvk = await generator();\n * // mvk < 2n ** 252n — guaranteed by implementation\n * ```\n *\n * @see {@link MasterViewingKeyDeriverFunction} — the returned function type\n * @see {@link getMintViewingKeyDeriver} — derives `Poseidon(MVK, mintLow, mintHigh)`\n * @public\n */\nexport function getMasterViewingKeyDeriver(\n args: MasterViewingKeyDeriverArgs,\n deps?: MasterViewingKeyDeriverDeps,\n): MasterViewingKeyDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256 } = deps ?? {};\n\n return async (): Promise<MasterViewingKey> => {\n // Get the master seed from the client\n const masterSeed = await client.masterSeed.getMasterSeed();\n\n // Get offset from client\n const offset = client.offsets.masterViewingKey;\n\n // Build personalization string with version information\n const personalization = buildPersonalizationString(client);\n\n // Include offset in domain separator\n const key = `${DOMAIN_PREFIX} - ${MASTER_VIEWING_KEY_DOMAIN} - ${offset.toString()}`;\n const hashOutput = kmac256(new TextEncoder().encode(key), masterSeed, {\n dkLen: U256_BYTE_LENGTH,\n personalization,\n });\n\n // Convert to bigint (big-endian interpretation)\n let value = 0n;\n for (const element of hashOutput) {\n value = (value << 8n) | BigInt(element);\n }\n\n // Constrain to 252 bits by masking\n value = value & MAX_252_BIT_VALUE;\n\n // Assert it's less than 2^252 (should always pass after masking)\n if (value >= 1n << 252n) {\n throw new CryptographyAssertionError(`Master viewing key must be < 2^252`, {\n value,\n expectedType: \"MasterViewingKey\",\n constraint: \"value < 2^252\",\n });\n }\n\n // Assert it's a valid BN254 field element\n assertBn254FieldElement(value, \"masterViewingKey\");\n assertMasterViewingKey(value);\n\n return value;\n };\n}\n\n/* =============================================================================\n * BLINDING FACTOR AND PRIVATE KEY GENERATORS\n * ============================================================================= */\n\n/**\n * Required arguments for creating a master viewing key blinding factor generator.\n *\n * @public\n */\nexport interface MasterViewingKeyBlindingFactorDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the master viewing key blinding factor generator.\n *\n * @public\n */\nexport interface MasterViewingKeyBlindingFactorDeriverDeps {\n /**\n * Custom BN254 field element deriver.\n *\n * @remarks\n * When omitted, a new deriver is created via\n * `getMasterSeedBasedFieldElementDeriver({ client })`.\n *\n * @defaultValue `getMasterSeedBasedFieldElementDeriver({ client })`\n * @readonly\n */\n readonly fieldElementDeriver?: MasterSeedBasedFieldElementDeriverFunction;\n}\n\n/**\n * Creates a master viewing key blinding factor generator.\n *\n * @remarks\n * The MVK blinding factor is a BN254 field element derived from the master seed\n * with the fixed domain string `\"UmbraPrivacy - Master Viewing Key Blinding Factor\"`.\n * It is used to form Pedersen-style commitments over the MVK so that verifiers\n * can check knowledge of the MVK without learning its value.\n *\n * ## Domain Separator\n *\n * `\"UmbraPrivacy - Master Viewing Key Blinding Factor\"` (no offset; this value\n * is deterministic per master seed and is never rotated independently).\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom field element deriver\n * @returns An async zero-argument function `() => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getMasterViewingKeyBlindingFactorDeriver({ client });\n * const bf = await generator();\n * // commitment = Poseidon([mvk, bf])\n * ```\n *\n * @see {@link MasterViewingKeyBlindingFactorDeriverFunction}\n * @public\n */\nexport function getMasterViewingKeyBlindingFactorDeriver(\n args: MasterViewingKeyBlindingFactorDeriverArgs,\n deps?: MasterViewingKeyBlindingFactorDeriverDeps,\n): MasterViewingKeyBlindingFactorDeriverFunction {\n const { client } = args;\n const {\n fieldElementDeriver = getMasterSeedBasedFieldElementDeriver({\n client,\n }),\n } = deps ?? {};\n\n return async (): Promise<Bn254FieldElement> => {\n return fieldElementDeriver(\"UmbraPrivacy - Master Viewing Key Blinding Factor\");\n };\n}\n\n/**\n * Required arguments for creating a Poseidon private key generator.\n *\n * @public\n */\nexport interface PoseidonPrivateKeyDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * `client.offsets.poseidonPrivateKey` is appended to the domain separator\n * to support independent rotation of the Poseidon key without changing the\n * master seed.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the Poseidon private key generator.\n *\n * @public\n */\nexport interface PoseidonPrivateKeyDeriverDeps {\n /**\n * Custom BN254 field element deriver.\n *\n * @remarks\n * When omitted, a new deriver is created via\n * `getMasterSeedBasedFieldElementDeriver({ client })`.\n *\n * @defaultValue `getMasterSeedBasedFieldElementDeriver({ client })`\n * @readonly\n */\n readonly fieldElementDeriver?: MasterSeedBasedFieldElementDeriverFunction;\n}\n\n/**\n * Creates a Poseidon private key generator.\n *\n * @remarks\n * The Poseidon private key is a BN254 field element used as the secret key\n * parameter in Poseidon-based symmetric encryption within Umbra's MPC circuit.\n * Each master seed is associated with at most one Poseidon private key per\n * offset; advancing `client.offsets.poseidonPrivateKey` rotates the key.\n *\n * ## Domain Separator\n *\n * `\"PoseidonPrivateKey - {client.offsets.poseidonPrivateKey}\"`\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom field element deriver\n * @returns An async zero-argument function `() => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getPoseidonPrivateKeyDeriver({ client });\n * const pk = await generator();\n * const ciphertext = await poseidonEncrypt(plaintext, pk);\n * ```\n *\n * @see {@link PoseidonPrivateKeyDeriverFunction}\n * @public\n */\nexport function getPoseidonPrivateKeyDeriver(\n args: PoseidonPrivateKeyDeriverArgs,\n deps?: PoseidonPrivateKeyDeriverDeps,\n): PoseidonPrivateKeyDeriverFunction {\n const { client } = args;\n const {\n fieldElementDeriver = getMasterSeedBasedFieldElementDeriver({\n client,\n }),\n } = deps ?? {};\n\n return async (): Promise<Bn254FieldElement> => {\n // Get offset from client\n const offset = client.offsets.poseidonPrivateKey;\n // Include offset in domain separator\n const domain = `${POSEIDON_PRIVATE_KEY_PREFIX} - ${offset.toString()}`;\n return fieldElementDeriver(domain);\n };\n}\n\n/**\n * Required arguments for creating a Poseidon blinding factor generator.\n *\n * @public\n */\nexport interface PoseidonBlindingFactorDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the Poseidon blinding factor generator.\n *\n * @public\n */\nexport interface PoseidonBlindingFactorDeriverDeps {\n /**\n * Custom BN254 field element deriver.\n *\n * @defaultValue `getMasterSeedBasedFieldElementDeriver({ client })`\n * @readonly\n */\n readonly fieldElementDeriver?: MasterSeedBasedFieldElementDeriverFunction;\n}\n\n/**\n * Creates a Poseidon blinding factor generator.\n *\n * @remarks\n * The Poseidon blinding factor is a BN254 field element that adds randomness\n * to Poseidon-based commitments. It is deterministic per master seed (no offset\n * parameter) and is derived with the fixed domain `\"PoseidonBlindingFactor\"`.\n *\n * ## Domain Separator\n *\n * `\"PoseidonBlindingFactor\"` (no offset suffix)\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom field element deriver\n * @returns An async zero-argument function `() => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getPoseidonBlindingFactorDeriver({ client });\n * const bf = await generator();\n * const commitment = await poseidonHash([value, bf]);\n * ```\n *\n * @see {@link PoseidonBlindingFactorDeriverFunction}\n * @public\n */\nexport function getPoseidonBlindingFactorDeriver(\n args: PoseidonBlindingFactorDeriverArgs,\n deps?: PoseidonBlindingFactorDeriverDeps,\n): PoseidonBlindingFactorDeriverFunction {\n const { client } = args;\n const {\n fieldElementDeriver = getMasterSeedBasedFieldElementDeriver({\n client,\n }),\n } = deps ?? {};\n\n return async (): Promise<Bn254FieldElement> => {\n return fieldElementDeriver(POSEIDON_BLINDING_FACTOR_PREFIX);\n };\n}\n\n/* =============================================================================\n * MINT VIEWING KEY GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments for creating a mint viewing key generator.\n *\n * @public\n */\nexport interface MintViewingKeyDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the mint viewing key generator.\n *\n * @public\n */\nexport interface MintViewingKeyDeriverDeps {\n /**\n * Custom Poseidon hash function.\n *\n * @remarks\n * Used to compute `Poseidon(MVK, mintLow, mintHigh)`. When omitted,\n * defaults to the output of `getPoseidonHasher()`.\n *\n * @defaultValue `getPoseidonHasher()`\n * @readonly\n */\n readonly hasher?: PoseidonHashFunction;\n\n /**\n * Custom address-splitting function.\n *\n * @remarks\n * Splits a 32-byte Solana address into two 128-bit little-endian halves.\n * When omitted, defaults to `splitAddressToLowHigh`.\n *\n * @defaultValue `splitAddressToLowHigh`\n * @readonly\n */\n readonly splitAddress?: SplitAddressFunction;\n\n /**\n * Custom KMAC256 function forwarded to the internal MVK generator.\n *\n * @remarks\n * Only needed when overriding the MVK derivation in tests. In production,\n * omit this field.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n}\n\n/**\n * Creates a mint viewing key generator.\n *\n * @remarks\n * A mint viewing key (MVK_mint) grants its holder the ability to decrypt and\n * view all confidential transactions involving a specific token mint without\n * exposing transactions of other mints and without revealing the master viewing\n * key.\n *\n * ## Algorithm\n *\n * ```\n * MVK = getMasterViewingKeyDeriver(client)()\n * [low, high] = splitAddressToLowHigh(mint) // each is a 128-bit LE integer\n * MintVK = Poseidon([MVK, low, high])\n * ```\n *\n * Binding the mint address in the Poseidon hash ensures that a mint viewing key\n * for one token cannot be mistaken for or reused as the mint key of a different\n * token.\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint: Address, options?) => Promise<MintViewingKey>`\n *\n * @example\n * ```typescript\n * import { address } from \"@solana/kit\";\n * const generator = getMintViewingKeyDeriver({ client });\n * const usdcMint = address(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\");\n * const mintVK = await generator(usdcMint);\n * ```\n *\n * @see {@link MintViewingKeyDeriverFunction}\n * @see {@link getYearlyViewingKeyDeriver} — extends MVK_mint with a year component\n * @public\n */\nexport function getMintViewingKeyDeriver(\n args: MintViewingKeyDeriverArgs,\n deps?: MintViewingKeyDeriverDeps,\n): MintViewingKeyDeriverFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<MintViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([\n masterViewingKey,\n createBn254FieldElement(low, \"mintAddressLow\"),\n createBn254FieldElement(high, \"mintAddressHigh\"),\n ]);\n\n assertMintViewingKey(h0);\n return h0;\n };\n}\n\n/* =============================================================================\n * TIME-SCOPED VIEWING KEY GENERATORS\n * ============================================================================= */\n\n/**\n * Required arguments shared by all time-scoped viewing key generators.\n *\n * @remarks\n * All six time-scoped generators (`getYearlyViewingKeyDeriver` through\n * `getSecondViewingKeyDeriver`) use this same args shape.\n *\n * @public\n */\nexport interface TimeViewingKeyDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * Used internally to derive the MVK that anchors the Poseidon hash chain.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies shared by all time-scoped viewing key generators.\n *\n * @remarks\n * Inject custom implementations for unit testing. All fields are optional;\n * omit them all in production.\n *\n * @public\n */\nexport interface TimeViewingKeyDeriverDeps {\n /**\n * Custom Poseidon hash function.\n *\n * @remarks\n * Used for every step in the Poseidon chain (e.g. `Poseidon([h0, year])`).\n *\n * @defaultValue `getPoseidonHasher()`\n * @readonly\n */\n readonly hasher?: PoseidonHashFunction;\n\n /**\n * Custom address-splitting function.\n *\n * @remarks\n * Splits a 32-byte Solana mint address into two 128-bit halves for Poseidon.\n *\n * @defaultValue `splitAddressToLowHigh`\n * @readonly\n */\n readonly splitAddress?: SplitAddressFunction;\n\n /**\n * Custom KMAC256 function forwarded to the internal MVK generator.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n}\n\n/**\n * Creates a yearly viewing key generator.\n *\n * @remarks\n * A yearly viewing key (YVK) grants its holder the ability to decrypt all\n * confidential transactions of a specific token mint within a specific calendar\n * year, without exposing transactions from other years or mints.\n *\n * ## Algorithm\n *\n * ```\n * h0 = Poseidon([MVK, mintAddressLow, mintAddressHigh])\n * YVK = Poseidon([h0, year])\n * ```\n *\n * The chain starts from the mint viewing key intermediate (`h0`) and appends\n * the year as a BN254 field element. Because each Poseidon step is a\n * one-way function, YVK cannot be used to recover MVK or MVK_mint.\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint, year, options?) => Promise<YearlyViewingKey>`\n *\n * @example\n * ```typescript\n * const generator = getYearlyViewingKeyDeriver({ client });\n * const yvk = await generator(usdcMint, 2024n as Year);\n * ```\n *\n * @see {@link YearlyViewingKeyGeneratorFunction}\n * @see {@link getMonthlyViewingKeyDeriver} — extends YVK with a month\n * @public\n */\nexport function getYearlyViewingKeyDeriver(\n args: TimeViewingKeyDeriverArgs,\n deps?: TimeViewingKeyDeriverDeps,\n): YearlyViewingKeyGeneratorFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n year: Year,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<YearlyViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([\n masterViewingKey,\n createBn254FieldElement(low, \"mintAddressLow\"),\n createBn254FieldElement(high, \"mintAddressHigh\"),\n ]);\n\n // h1 = Poseidon(h0, year)\n const h1 = await effectiveHasher([h0, createBn254FieldElement(year, \"year\")]);\n\n assertYearlyViewingKey(h1);\n return h1;\n };\n}\n\n/**\n * Creates a monthly viewing key generator.\n *\n * @remarks\n * A monthly viewing key (MVK_month) grants its holder the ability to decrypt\n * all confidential transactions of a specific token mint within a specific month\n * of a specific year.\n *\n * ## Algorithm\n *\n * ```\n * h0 = Poseidon([MVK, mintAddressLow, mintAddressHigh])\n * h1 = Poseidon([h0, year])\n * MVK_month = Poseidon([h1, month])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint, year, month, options?) => Promise<MonthlyViewingKey>`\n *\n * @example\n * ```typescript\n * const generator = getMonthlyViewingKeyDeriver({ client });\n * const mvk = await generator(usdcMint, 2024n as Year, 6n as Month);\n * ```\n *\n * @see {@link MonthlyViewingKeyGeneratorFunction}\n * @public\n */\nexport function getMonthlyViewingKeyDeriver(\n args: TimeViewingKeyDeriverArgs,\n deps?: TimeViewingKeyDeriverDeps,\n): MonthlyViewingKeyGeneratorFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n year: Year,\n month: Month,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<MonthlyViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([\n masterViewingKey,\n createBn254FieldElement(low, \"mintAddressLow\"),\n createBn254FieldElement(high, \"mintAddressHigh\"),\n ]);\n\n // h1 = Poseidon(h0, year)\n const h1 = await effectiveHasher([h0, createBn254FieldElement(year, \"year\")]);\n\n // h2 = Poseidon(h1, month)\n const h2 = await effectiveHasher([h1, createBn254FieldElement(month, \"month\")]);\n\n assertMonthlyViewingKey(h2);\n return h2;\n };\n}\n\n/**\n * Creates a daily viewing key generator.\n *\n * @remarks\n * A daily viewing key (DVK) grants its holder the ability to decrypt all\n * confidential transactions of a specific token mint within a specific day.\n *\n * ## Algorithm\n *\n * ```\n * h0 = Poseidon([MVK, mintAddressLow, mintAddressHigh])\n * h1 = Poseidon([h0, year])\n * h2 = Poseidon([h1, month])\n * DVK = Poseidon([h2, day])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint, year, month, day, options?) => Promise<DailyViewingKey>`\n *\n * @example\n * ```typescript\n * const generator = getDailyViewingKeyDeriver({ client });\n * const dvk = await generator(usdcMint, 2024n as Year, 6n as Month, 15n as Day);\n * ```\n *\n * @see {@link DailyViewingKeyGeneratorFunction}\n * @public\n */\nexport function getDailyViewingKeyDeriver(\n args: TimeViewingKeyDeriverArgs,\n deps?: TimeViewingKeyDeriverDeps,\n): DailyViewingKeyGeneratorFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n year: Year,\n month: Month,\n day: Day,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<DailyViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([\n masterViewingKey,\n createBn254FieldElement(low, \"mintAddressLow\"),\n createBn254FieldElement(high, \"mintAddressHigh\"),\n ]);\n\n // h1 = Poseidon(h0, year)\n const h1 = await effectiveHasher([h0, createBn254FieldElement(year, \"year\")]);\n\n // h2 = Poseidon(h1, month)\n const h2 = await effectiveHasher([h1, createBn254FieldElement(month, \"month\")]);\n\n // h3 = Poseidon(h2, day)\n const h3 = await effectiveHasher([h2, createBn254FieldElement(day, \"day\")]);\n\n assertDailyViewingKey(h3);\n return h3;\n };\n}\n\n/**\n * Creates an hourly viewing key generator.\n *\n * @remarks\n * An hourly viewing key (HVK) grants its holder the ability to decrypt all\n * confidential transactions of a specific token mint within a specific hour.\n *\n * ## Algorithm\n *\n * ```\n * h0 = Poseidon([MVK, mintAddressLow, mintAddressHigh])\n * h1 = Poseidon([h0, year])\n * h2 = Poseidon([h1, month])\n * h3 = Poseidon([h2, day])\n * HVK = Poseidon([h3, hour])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint, year, month, day, hour, options?) => Promise<HourlyViewingKey>`\n *\n * @example\n * ```typescript\n * const generator = getHourlyViewingKeyDeriver({ client });\n * const hvk = await generator(usdcMint, 2024n as Year, 6n as Month, 15n as Day, 14n as Hour);\n * ```\n *\n * @see {@link HourlyViewingKeyGeneratorFunction}\n * @public\n */\nexport function getHourlyViewingKeyDeriver(\n args: TimeViewingKeyDeriverArgs,\n deps?: TimeViewingKeyDeriverDeps,\n): HourlyViewingKeyGeneratorFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n year: Year,\n month: Month,\n day: Day,\n hour: Hour,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<HourlyViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([\n masterViewingKey,\n createBn254FieldElement(low, \"mintAddressLow\"),\n createBn254FieldElement(high, \"mintAddressHigh\"),\n ]);\n\n // h1 = Poseidon(h0, year)\n const h1 = await effectiveHasher([h0, createBn254FieldElement(year, \"year\")]);\n\n // h2 = Poseidon(h1, month)\n const h2 = await effectiveHasher([h1, createBn254FieldElement(month, \"month\")]);\n\n // h3 = Poseidon(h2, day)\n const h3 = await effectiveHasher([h2, createBn254FieldElement(day, \"day\")]);\n\n // h4 = Poseidon(h3, hour)\n const h4 = await effectiveHasher([h3, createBn254FieldElement(hour, \"hour\")]);\n\n assertHourlyViewingKey(h4);\n return h4;\n };\n}\n\n/**\n * Creates a minute viewing key generator.\n *\n * @remarks\n * A minute viewing key (MinVK) grants its holder the ability to decrypt all\n * confidential transactions of a specific token mint within a specific minute.\n *\n * ## Algorithm\n *\n * ```\n * h0 = Poseidon([MVK, mintAddressLow, mintAddressHigh])\n * h1 = Poseidon([h0, year])\n * h2 = Poseidon([h1, month])\n * h3 = Poseidon([h2, day])\n * h4 = Poseidon([h3, hour])\n * MinVK = Poseidon([h4, minute])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint, year, month, day, hour, minute, options?) => Promise<MinuteViewingKey>`\n *\n * @example\n * ```typescript\n * const generator = getMinuteViewingKeyDeriver({ client });\n * const mvk = await generator(usdcMint, 2024n as Year, 6n as Month, 15n as Day, 14n as Hour, 30n as Minute);\n * ```\n *\n * @see {@link MinuteViewingKeyGeneratorFunction}\n * @public\n */\nexport function getMinuteViewingKeyDeriver(\n args: TimeViewingKeyDeriverArgs,\n deps?: TimeViewingKeyDeriverDeps,\n): MinuteViewingKeyGeneratorFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n year: Year,\n month: Month,\n day: Day,\n hour: Hour,\n minute: Minute,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<MinuteViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([\n masterViewingKey,\n createBn254FieldElement(low, \"mintAddressLow\"),\n createBn254FieldElement(high, \"mintAddressHigh\"),\n ]);\n\n // h1 = Poseidon(h0, year)\n const h1 = await effectiveHasher([h0, createBn254FieldElement(year, \"year\")]);\n\n // h2 = Poseidon(h1, month)\n const h2 = await effectiveHasher([h1, createBn254FieldElement(month, \"month\")]);\n\n // h3 = Poseidon(h2, day)\n const h3 = await effectiveHasher([h2, createBn254FieldElement(day, \"day\")]);\n\n // h4 = Poseidon(h3, hour)\n const h4 = await effectiveHasher([h3, createBn254FieldElement(hour, \"hour\")]);\n\n // h5 = Poseidon(h4, minute)\n const h5 = await effectiveHasher([h4, createBn254FieldElement(minute, \"minute\")]);\n\n assertMinuteViewingKey(h5);\n return h5;\n };\n}\n\n/**\n * Creates a second viewing key generator.\n *\n * @remarks\n * The second viewing key (TVK — transaction viewing key) is the most granular\n * key in the Poseidon viewing-key chain. It allows a key holder to decrypt all\n * confidential transactions of a specific token mint within a specific second.\n * This is the leaf of the time-scoped viewing key tree.\n *\n * ## Algorithm\n *\n * ```\n * h0 = Poseidon([MVK, mintAddressLow, mintAddressHigh])\n * h1 = Poseidon([h0, year])\n * h2 = Poseidon([h1, month])\n * h3 = Poseidon([h2, day])\n * h4 = Poseidon([h3, hour])\n * h5 = Poseidon([h4, minute])\n * TVK = Poseidon([h5, second])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom Poseidon hasher, address splitter, KMAC256\n * @returns An async function `(mint, year, month, day, hour, minute, second, options?) => Promise<SecondViewingKey>`\n *\n * @example\n * ```typescript\n * const generator = getSecondViewingKeyDeriver({ client });\n * const tvk = await generator(\n * usdcMint,\n * 2024n as Year, 6n as Month, 15n as Day,\n * 14n as Hour, 30n as Minute, 45n as Second\n * );\n * ```\n *\n * @see {@link SecondViewingKeyGeneratorFunction}\n * @public\n */\nexport function getSecondViewingKeyDeriver(\n args: TimeViewingKeyDeriverArgs,\n deps?: TimeViewingKeyDeriverDeps,\n): SecondViewingKeyGeneratorFunction {\n const { client } = args;\n const {\n hasher = getPoseidonHasher(),\n splitAddress = splitAddressToLowHigh,\n kmac256,\n } = deps ?? {};\n\n return async (\n mint: Address,\n year: Year,\n month: Month,\n day: Day,\n hour: Hour,\n minute: Minute,\n second: Second,\n generatorOptions?: { readonly hasher?: PoseidonHashFunction },\n ): Promise<SecondViewingKey> => {\n const effectiveHasher = generatorOptions?.hasher ?? hasher;\n\n assertBn254FieldElement(year, \"year\");\n assertBn254FieldElement(month, \"month\");\n assertBn254FieldElement(day, \"day\");\n assertBn254FieldElement(hour, \"hour\");\n assertBn254FieldElement(minute, \"minute\");\n assertBn254FieldElement(second, \"second\");\n\n // Derive master viewing key from the client\n const mvkGenerator = getMasterViewingKeyDeriver(\n { client },\n kmac256 === undefined ? undefined : { kmac256 },\n );\n const masterViewingKey = await mvkGenerator();\n\n // Split the mint address into low and high parts\n const { low, high } = splitAddress(mint);\n\n assertBn254FieldElement(low, \"mintAddressLow\");\n assertBn254FieldElement(high, \"mintAddressHigh\");\n\n // h0 = Poseidon(MVK, mintAddressLow, mintAddressHigh)\n const h0 = await effectiveHasher([masterViewingKey, low, high]);\n\n // h1 = Poseidon(h0, year)\n const h1 = await effectiveHasher([h0, year]);\n\n // h2 = Poseidon(h1, month)\n const h2 = await effectiveHasher([h1, month]);\n\n // h3 = Poseidon(h2, day)\n const h3 = await effectiveHasher([h2, day]);\n\n // h4 = Poseidon(h3, hour)\n const h4 = await effectiveHasher([h3, hour]);\n\n // h5 = Poseidon(h4, minute)\n const h5 = await effectiveHasher([h4, minute]);\n\n // TVK = Poseidon(h5, second)\n const tvk = await effectiveHasher([h5, second]);\n\n assertSecondViewingKey(tvk);\n return tvk;\n };\n}\n\n/* =============================================================================\n * SHARED X25519 KEYPAIR DERIVATION HELPER\n * ============================================================================= */\n\n/**\n * Derives a Curve25519 keypair (Ed25519 + X25519) from a 64-byte pseudorandom value.\n *\n * @remarks\n * This is the shared inner derivation logic used by all three X25519 keypair\n * generators. It is not exported; callers always go through one of the typed\n * factory functions.\n *\n * ## Derivation Pipeline\n *\n * Given `u512Value` (64 bytes from KMAC256):\n *\n * 1. `ed25519Seed = u512Value.slice(0, 32)` — first 32 bytes become the Ed25519 seed\n * 2. `ed25519PublicKey = ed25519.getPublicKey(ed25519Seed)` — standard Ed25519 key generation\n * 3. `h = SHA-512(ed25519Seed)` — expand seed to 64 bytes per RFC 8032\n * 4. `x25519PrivateKey = h.slice(0, 32)` with RFC 8032 §5.1.5 clamping:\n * - `privateKey[0] &= 248` (clear bits 0, 1, 2 — cofactor clamping)\n * - `privateKey[31] &= 127` (clear bit 255)\n * - `privateKey[31] |= 64` (set bit 254)\n * 5. `x25519PublicKey = ed25519.utils.toMontgomery(ed25519PublicKey)` — birational map\n *\n * The birational equivalence between Curve25519 (Montgomery) and Ed25519\n * (twisted Edwards) allows deriving both keypairs from a single seed while\n * keeping them mathematically related.\n *\n * @param u512Value - 64-byte big-endian pseudorandom value from KMAC256\n * @returns A fully validated `Curve25519KeypairResult` containing both Ed25519 and X25519 keys\n *\n * @throws `CryptographyAssertionError` if key assertion fails\n *\n * @privateRemarks\n * The second 32 bytes of `u512Value` are discarded. Using only 32 of 64 bytes is\n * intentional: Ed25519 seed derivation internally does SHA-512 expansion, so the\n * additional entropy provides defense-in-depth without changing the algorithm.\n *\n * @internal\n */\nfunction deriveKeypairFromU512(u512Value: U512BeBytes): Curve25519KeypairResult {\n // Extract the first 32 bytes as the Ed25519 seed\n const ed25519Seed = u512Value.slice(0, 32);\n\n // Derive Ed25519 public key from seed\n const ed25519Pubkey = ed25519.getPublicKey(ed25519Seed);\n\n // Derive X25519 keypair from the same seed\n // SHA-512 hash of the seed\n const hash = sha512(ed25519Seed);\n\n // Clamp first 32 bytes (RFC 8032 §5.1.5)\n const x25519PrivateKeyBytes = hash.slice(0, 32);\n const x25519PrivateKey = new Uint8Array(x25519PrivateKeyBytes);\n x25519PrivateKey[0] &= 248; // Clear bits 0, 1, 2\n x25519PrivateKey[31] &= 127; // Clear bit 255\n x25519PrivateKey[31] |= 64; // Set bit 254\n\n // Derive X25519 public key via birational map (Edwards → Montgomery)\n const x25519Pubkey = ed25519.utils.toMontgomery(ed25519Pubkey);\n\n // Assert the X25519 keys\n assertX25519PrivateKey(x25519PrivateKey);\n assertX25519PublicKey(x25519Pubkey);\n\n const result: Curve25519KeypairResult = {\n ed25519Keypair: {\n seed: ed25519Seed,\n publicKey: ed25519Pubkey,\n },\n x25519Keypair: {\n privateKey: x25519PrivateKey,\n publicKey: x25519Pubkey,\n },\n };\n\n assertCurve25519KeypairResult(result);\n\n return result;\n}\n\n/* =============================================================================\n * USER ACCOUNT X25519 KEYPAIR GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments shared by all X25519 keypair generators.\n *\n * @remarks\n * The three keypair generators (`getUserAccountX25519KeypairDeriver`,\n * `getMasterViewingKeyX25519KeypairDeriver`, `getMintX25519KeypairDeriver`)\n * share this args shape.\n *\n * @public\n */\nexport interface X25519KeypairDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies shared by all X25519 keypair generators.\n *\n * @public\n */\nexport interface X25519KeypairDeriverDeps {\n /**\n * Custom pseudorandom U512 generator.\n *\n * @remarks\n * When omitted, a new instance is created via\n * `getPseudorandomU512Deriver({ client })`.\n *\n * @defaultValue `getPseudorandomU512Deriver({ client })`\n * @readonly\n */\n readonly u512Generator?: PseudorandomU512DeriverFunction;\n}\n\n/**\n * Creates a user-account X25519 keypair generator.\n *\n * @remarks\n * This keypair is submitted to `registerTokenPublicKey`. The Ed25519 public key\n * is stored on-chain and converted to an X25519 public key for use as the\n * token account's confidential balance encryption key.\n *\n * ## Domain Separator\n *\n * `\"Umbra Privacy - UserAccountX25519Keypair - {client.offsets.x25519UserAccountPrivateKey}\"`\n *\n * The offset from `client.offsets.x25519UserAccountPrivateKey` allows the user\n * to rotate the keypair without changing the master seed.\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator\n * @returns An async zero-argument function `() => Promise<Curve25519KeypairResult>`\n *\n * @example\n * ```typescript\n * const generator = getUserAccountX25519KeypairDeriver({ client });\n * const { x25519Keypair, ed25519Keypair } = await generator();\n * // Submit ed25519Keypair.publicKey to registerTokenPublicKey\n * ```\n *\n * @see {@link Curve25519KeypairGeneratorFunction}\n * @see {@link deriveKeypairFromU512} — shared internal derivation logic\n * @public\n */\nexport function getUserAccountX25519KeypairDeriver(\n args: X25519KeypairDeriverArgs,\n deps?: X25519KeypairDeriverDeps,\n): Curve25519KeypairGeneratorFunction {\n const { client } = args;\n const { u512Generator = getPseudorandomU512Deriver({ client }) } = deps ?? {};\n\n return async (): Promise<Curve25519KeypairResult> => {\n const offset = client.offsets.x25519UserAccountPrivateKey;\n const domain = `${USER_ACCOUNT_X25519_KEYPAIR_DOMAIN} - ${offset.toString()}`;\n const u512Value = await u512Generator(domain);\n return deriveKeypairFromU512(u512Value);\n };\n}\n\n/* =============================================================================\n * MASTER VIEWING KEY ENCRYPTING X25519 KEYPAIR GENERATOR\n * ============================================================================= */\n\n/**\n * Creates a master viewing key encrypting X25519 keypair generator.\n *\n * @remarks\n * This keypair is used in `registerUserForAnonymousUsageV3`. The X25519\n * private key encrypts the master viewing key via the Rescue cipher so the\n * on-chain program can store an encrypted MVK. The Ed25519 public key is\n * stored on-chain and used as the proving signer for X25519 public key\n * derivation.\n *\n * ## Domain Separator\n *\n * `\"Umbra Privacy - MasterViewingKeyEncryptingX25519Keypair - {client.offsets.x25519MasterViewingKeyEncryptingPrivateKey}\"`\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator\n * @returns An async zero-argument function `() => Promise<Curve25519KeypairResult>`\n *\n * @example\n * ```typescript\n * const generator = getMasterViewingKeyX25519KeypairDeriver({ client });\n * const { x25519Keypair } = await generator();\n * // x25519Keypair.privateKey encrypts the MVK via Rescue\n * ```\n *\n * @see {@link Curve25519KeypairGeneratorFunction}\n * @public\n */\nexport function getMasterViewingKeyX25519KeypairDeriver(\n args: X25519KeypairDeriverArgs,\n deps?: X25519KeypairDeriverDeps,\n): Curve25519KeypairGeneratorFunction {\n const { client } = args;\n const { u512Generator = getPseudorandomU512Deriver({ client }) } = deps ?? {};\n\n return async (): Promise<Curve25519KeypairResult> => {\n const offset = client.offsets.x25519MasterViewingKeyEncryptingPrivateKey;\n const domain = `${MVK_ENCRYPTING_X25519_KEYPAIR_DOMAIN} - ${offset.toString()}`;\n const u512Value = await u512Generator(domain);\n return deriveKeypairFromU512(u512Value);\n };\n}\n\n/* =============================================================================\n * MINT X25519 KEYPAIR GENERATOR\n * ============================================================================= */\n\n/**\n * Creates a per-mint X25519 keypair generator.\n *\n * @remarks\n * Used during `reencrypt_shared` operations. Each mint produces an independent\n * Curve25519 keypair. The offset is taken from `client.offsets.mintX25519PrivateKey`\n * at construction time, consistent with all other key types.\n *\n * ## Domain Separator\n *\n * `\"Umbra Privacy - MintX25519Keypair - {mint} - {client.offsets.mintX25519PrivateKey}\"`\n *\n * Including the mint address in the domain string ensures that keypairs for\n * different mints cannot be used interchangeably.\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator\n * @returns An async function `(mint: Address) => Promise<Curve25519KeypairResult>`\n *\n * @example\n * ```typescript\n * const generator = getMintX25519KeypairDeriver({ client });\n * const { x25519Keypair } = await generator(usdcMint);\n * ```\n *\n * @see {@link MintX25519KeypairDeriverFunction}\n * @public\n */\nexport function getMintX25519KeypairDeriver(\n args: X25519KeypairDeriverArgs,\n deps?: X25519KeypairDeriverDeps,\n): MintX25519KeypairDeriverFunction {\n const { client } = args;\n const { u512Generator = getPseudorandomU512Deriver({ client }) } = deps ?? {};\n\n return async (mint: Address): Promise<Curve25519KeypairResult> => {\n const offset = client.offsets.mintX25519PrivateKey;\n const domain = `${MINT_X25519_KEYPAIR_DOMAIN} - ${mint} - ${offset.toString()}`;\n const u512Value = await u512Generator(domain);\n return deriveKeypairFromU512(u512Value);\n };\n}\n\n/* =============================================================================\n * RESCUE ENCRYPTION COMMITMENT BLINDING FACTOR GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments for creating a Rescue encryption commitment blinding factor generator.\n *\n * @public\n */\nexport interface RescueCommitmentBlindingFactorDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * `client.offsets.rescueCommitmentBlindingFactor` is added to the caller-supplied\n * offset to form the total offset used in the domain separator.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the Rescue encryption commitment blinding factor generator.\n *\n * @public\n */\nexport interface RescueCommitmentBlindingFactorDeriverDeps {\n /**\n * Custom pseudorandom U512 generator.\n *\n * @defaultValue `getPseudorandomU512Deriver({ client })`\n * @readonly\n */\n readonly u512Generator?: PseudorandomU512DeriverFunction;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates a Rescue encryption commitment blinding factor generator.\n *\n * @remarks\n * Rescue encryption commitments bind ciphertexts, plaintexts, encryption keys,\n * nonces, and public key material together with a BN254 field element blinding\n * factor for zero-knowledge verification. This generator produces that blinding\n * factor deterministically from the master seed.\n *\n * ## Domain Separator\n *\n * `\"RescueEncryptionCommitmentBlindingFactor - {totalOffset}\"`\n *\n * where `totalOffset = client.offsets.rescueCommitmentBlindingFactor + offset`.\n * Using a combined offset lets callers generate per-operation blinding factors\n * (via the `offset` argument) while the client base offset provides an\n * additional rotation axis without changing the master seed.\n *\n * ## Algorithm\n *\n * ```\n * domain = \"RescueEncryptionCommitmentBlindingFactor - {totalOffset}\"\n * u512 = KMAC256(UTF8(\"Umbra Privacy - \" + domain), masterSeed, dkLen=64, S=personalization)\n * blindingFactor = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getRescueCommitmentBlindingFactorDeriver({ client });\n * const bf = await generator(0n as U256);\n * // commitment = generateRescueEncryptionCommitment(ciphertexts, data, keys, bf, nonce, ...)\n * ```\n *\n * @see {@link RescueCommitmentBlindingFactorDeriverFunction}\n * @public\n */\nexport function getRescueCommitmentBlindingFactorDeriver(\n args: RescueCommitmentBlindingFactorDeriverArgs,\n deps?: RescueCommitmentBlindingFactorDeriverDeps,\n): RescueCommitmentBlindingFactorDeriverFunction {\n const { client } = args;\n const {\n u512Generator = getPseudorandomU512Deriver({ client }),\n sampler = bn254FieldElementSampler,\n } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n // Get base offset from client and combine with parameter offset\n const baseOffset = client.offsets.rescueCommitmentBlindingFactor;\n const totalOffset = baseOffset + BigInt(offset);\n\n // Build domain separator with combined offset\n const domainSeparator = `${RESCUE_ENCRYPTION_COMMITMENT_BLINDING_FACTOR_PREFIX} - ${totalOffset.toString()}`;\n\n // Generate 512-bit pseudorandom value\n const u512Value = await u512Generator(domainSeparator);\n\n // Sample BN254 field element using constant-time reduction\n const fieldElement = sampler(u512Value);\n\n assertBn254FieldElement(fieldElement, \"fieldElement\");\n return fieldElement;\n };\n}\n\n/* =============================================================================\n * RANDOM FACTOR FOR POLYNOMIAL COMMITMENT GENERATOR\n * ============================================================================= */\n\n/**\n * Required arguments for creating a random factor for polynomial commitment generator.\n *\n * @public\n */\nexport interface PolynomialCommitmentFactorDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @remarks\n * `client.offsets.randomCommitmentFactor` is added to the caller-supplied\n * offset to form the total offset in the domain separator.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the random factor for polynomial commitment generator.\n *\n * @public\n */\nexport interface PolynomialCommitmentFactorDeriverDeps {\n /**\n * Custom pseudorandom U512 generator.\n *\n * @defaultValue `getPseudorandomU512Deriver({ client })`\n * @readonly\n */\n readonly u512Generator?: PseudorandomU512DeriverFunction;\n\n /**\n * Custom constant-time Curve25519 field element sampler.\n *\n * @remarks\n * Note: This is a Curve25519 (not BN254) sampler because polynomial\n * commitments in Umbra operate over the Curve25519 scalar field.\n *\n * @defaultValue `curve25519FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedCurve25519FieldElementSamplerFunction;\n}\n\n/**\n * Creates a random factor for polynomial commitment generator.\n *\n * @remarks\n * Polynomial commitments in Umbra use Curve25519 scalar field elements as\n * random evaluation points. This generator derives those elements deterministically\n * from the master seed and a per-operation offset.\n *\n * Note the output type: this is a `Curve25519FieldElement`, not a\n * `Bn254FieldElement`. The corresponding sampler (`curve25519FieldElementSampler`)\n * reduces modulo the Curve25519 scalar prime rather than the BN254 prime.\n *\n * ## Domain Separator\n *\n * `\"RandomFactorForPolynomialCommitment - {totalOffset}\"`\n *\n * where `totalOffset = client.offsets.randomCommitmentFactor + offset`.\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom U512 generator and/or Curve25519 sampler\n * @returns An async function `(offset: U256) => Promise<Curve25519FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getPolynomialCommitmentFactorDeriver({ client });\n * const rf = await generator(0n as U256);\n * const commitment = evaluatePolynomial([coeff0, coeff1, rf], challenge);\n * ```\n *\n * @see {@link PolynomialCommitmentFactorDeriverFunction}\n * @public\n */\nexport function getPolynomialCommitmentFactorDeriver(\n args: PolynomialCommitmentFactorDeriverArgs,\n deps?: PolynomialCommitmentFactorDeriverDeps,\n): PolynomialCommitmentFactorDeriverFunction {\n const { client } = args;\n const {\n u512Generator = getPseudorandomU512Deriver({ client }),\n sampler = curve25519FieldElementSampler,\n } = deps ?? {};\n\n return async (offset: U256): Promise<Curve25519FieldElement> => {\n // Get base offset from client and combine with parameter offset\n const baseOffset = client.offsets.randomCommitmentFactor;\n const totalOffset = baseOffset + BigInt(offset);\n\n // Build domain separator with combined offset\n const domainSeparator = `${RANDOM_FACTOR_FOR_POLYNOMIAL_COMMITMENT_PREFIX} - ${totalOffset.toString()}`;\n\n // Generate 512-bit pseudorandom value\n const u512Value = await u512Generator(domainSeparator);\n\n // Sample Curve25519 field element using constant-time reduction\n const fieldElement = sampler(u512Value);\n\n return fieldElement;\n };\n}\n\n/* =============================================================================\n * MODIFIED GENERATION INDEX DERIVATION (KMAC128)\n * ============================================================================= */\n\n/**\n * Domain separator token for deriving a modified generation index in the sender-claim path.\n *\n * @remarks\n * Used by {@link deriveModifiedGenerationIndexForSenderClaim} to form:\n * `\"Umbra Privacy - etaToMixerWithSenderClaim/{generationIndex}\"`.\n * The Greek letter eta (η) is Umbra's notation for the UTXO ephemeral seed.\n *\n * @internal\n */\nconst ETA_TO_MIXER_WITH_SENDER_CLAIM_PREFIX = \"etaToMixerWithSenderClaim\";\n\n/**\n * Domain separator token for deriving a modified generation index in the receiver-claim path.\n *\n * @remarks\n * Used by {@link deriveModifiedGenerationIndexForReceiverClaim} to form:\n * `\"Umbra Privacy - etaToMixerWithReceiverClaim/{generationIndex}\"`.\n * Produces an independent 16-byte value from the same master seed and generation\n * index, enabling separate sender and receiver claiming flows.\n *\n * @internal\n */\nconst ETA_TO_MIXER_WITH_RECEIVER_CLAIM_PREFIX = \"etaToMixerWithReceiverClaim\";\n\n/**\n * Function type for deriving a 128-bit modified generation index from a master seed.\n *\n * @remarks\n * A `modifiedGenerationIndex` is a 16-byte value derived from `masterSeed` and\n * a U256 `generationIndex` via KMAC256 with 16-byte output. Once derived, it\n * serves as the sole input to all \"pure\" derivation functions, which do not\n * need the master seed again.\n *\n * This two-step design means that:\n * - UTXO creation and UTXO claim perform identical derivations given the same\n * `modifiedGenerationIndex`.\n * - The master seed is only touched in the first step; all subsequent circuit\n * inputs are derived without it.\n *\n * @param masterSeed - The 64-byte permanent master seed (KMAC key input)\n * @param generationIndex - The U256 generation counter identifying the UTXO slot\n * @returns A 128-bit (16-byte) modified generation index as a `U128` bigint\n *\n * @public\n */\nexport type ModifiedGenerationIndexDeriverFunction = (\n masterSeed: MasterSeed,\n generationIndex: U256,\n) => U128;\n\n/**\n * Derives a 128-bit modified generation index for the sender-claim path.\n *\n * @remarks\n * The modified generation index (η_modified) is the gateway between the\n * master-seed world and the pure-derivation world. After this function runs,\n * all subsequent UTXO key derivations use the 16-byte output as their sole\n * secret input — no master seed required.\n *\n * This is the sender variant: callers who created the UTXO can re-derive the\n * same value using their own master seed and the UTXO's generation index.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - etaToMixerWithSenderClaim/{generationIndex}\")\n * output = KMAC256(key=domain, msg=masterSeed, dkLen=16, S=PURE_PERSONALIZATION)\n * result = LittleEndianBytesToBigInt(output) // U128\n * ```\n *\n * Note: Although the comment in the code says \"KMAC128\", the implementation\n * calls `kmac256` with `dkLen=16`. KMAC256 with 128-bit output provides\n * equivalent security to KMAC128 with proper parameters.\n *\n * @param masterSeed - The 64-byte permanent master seed (KMAC key input)\n * @param generationIndex - The U256 UTXO generation counter\n * @returns A 128-bit little-endian modified generation index as `U128`\n *\n * @throws `CryptographyAssertionError` if `masterSeed` does not pass `assertMasterSeed`\n *\n * @example\n * ```typescript\n * const modifiedIndex = deriveModifiedGenerationIndexForSenderClaim(\n * masterSeed, generationIndex\n * );\n * const nullifier = deriveNullifierFromModifiedGenerationIndex(\n * new Uint8Array(/* 16 bytes from modifiedIndex *\\/)\n * );\n * ```\n *\n * @see {@link deriveModifiedGenerationIndexForReceiverClaim} — receiver variant\n * @see {@link expandModifiedGenerationIndex} — expands 16 bytes to 32 bytes\n * @public\n */\nexport function deriveModifiedGenerationIndexForSenderClaim(\n masterSeed: MasterSeed,\n generationIndex: U256,\n): U128 {\n assertMasterSeed(masterSeed);\n\n // Build domain separator with generation index\n const domainSeparator = `${DOMAIN_PREFIX} - ${ETA_TO_MIXER_WITH_SENDER_CLAIM_PREFIX}/${generationIndex.toString()}`;\n\n // Use KMAC256 with domain as key, masterSeed as message\n const result = defaultKmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: 16,\n personalization: PURE_PERSONALIZATION,\n });\n\n // Interpret as little-endian U128\n let value = 0n;\n for (let index = 0; index < 16; index++) {\n value |= BigInt(result[index]) << BigInt(index * 8);\n }\n\n return value as U128;\n}\n\n/**\n * Derives a 128-bit modified generation index for the receiver-claim path.\n *\n * @remarks\n * Identical in structure to {@link deriveModifiedGenerationIndexForSenderClaim}\n * but uses the domain token `\"etaToMixerWithReceiverClaim\"` instead of\n * `\"etaToMixerWithSenderClaim\"`. This ensures the receiver's modified index is\n * independent of the sender's, preventing the receiver from computing the\n * sender's nullifier or other sender-specific keys (and vice versa).\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - etaToMixerWithReceiverClaim/{generationIndex}\")\n * output = KMAC256(key=domain, msg=masterSeed, dkLen=16, S=PURE_PERSONALIZATION)\n * result = LittleEndianBytesToBigInt(output) // U128\n * ```\n *\n * @param masterSeed - The 64-byte permanent master seed\n * @param generationIndex - The U256 UTXO generation counter\n * @returns A 128-bit little-endian modified generation index as `U128`\n *\n * @throws `CryptographyAssertionError` if `masterSeed` does not pass `assertMasterSeed`\n *\n * @example\n * ```typescript\n * const modifiedIndex = deriveModifiedGenerationIndexForReceiverClaim(\n * masterSeed, generationIndex\n * );\n * ```\n *\n * @see {@link deriveModifiedGenerationIndexForSenderClaim} — sender variant\n * @public\n */\nexport function deriveModifiedGenerationIndexForReceiverClaim(\n masterSeed: MasterSeed,\n generationIndex: U256,\n): U128 {\n assertMasterSeed(masterSeed);\n\n // Build domain separator with generation index\n const domainSeparator = `${DOMAIN_PREFIX} - ${ETA_TO_MIXER_WITH_RECEIVER_CLAIM_PREFIX}/${generationIndex.toString()}`;\n\n // Use KMAC256 with domain as key, masterSeed as message\n const result = defaultKmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: 16,\n personalization: PURE_PERSONALIZATION,\n });\n\n // Interpret as little-endian U128\n let value = 0n;\n for (let index = 0; index < 16; index++) {\n value |= BigInt(result[index]) << BigInt(index * 8);\n }\n\n return value as U128;\n}\n\n/* =============================================================================\n * KECCAK512-BASED BN254 FIELD ELEMENT DERIVATION\n * ============================================================================= */\n\n/**\n * Function type for deriving a BN254 field element from arbitrary seed bytes via Keccak512.\n *\n * @remarks\n * This function type is used for derivations that originate from an ephemeral\n * seed or an `expandedGenerationIndex` rather than from KMAC256. The caller is\n * responsible for encoding domain separation into the seed bytes before passing\n * them in.\n *\n * @param seed - The input seed bytes; must include any domain separation tokens\n * @returns A uniformly distributed BN254 field element in `[0, p-1]`\n *\n * @see {@link deriveBn254FieldElementFromKeccak512}\n * @see {@link getBn254FieldElementFromKeccak512Deriver}\n * @public\n */\nexport type Keccak512BasedBn254FieldElementDeriverFunction = (\n seed: Uint8Array,\n) => Bn254FieldElement;\n\n/**\n * Optional dependencies for the Keccak512-based BN254 field element deriver.\n *\n * @public\n */\nexport interface Keccak512BasedBn254FieldElementDeriverDeps {\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @remarks\n * Applied after the 64-byte Keccak512 digest to produce a field element\n * uniformly distributed in `[0, p-1]`.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Derives a BN254 field element from arbitrary seed bytes using Keccak512.\n *\n * @remarks\n * This function provides a lightweight alternative to the KMAC256-based pipeline\n * for contexts where the derivation does not require a keyed MAC (e.g. when the\n * secret is already embedded in the seed by the caller). It is used internally by\n * the ephemeral key derivation functions that operate on an `expandedGenerationIndex`.\n *\n * ## Algorithm\n *\n * ```\n * hash = Keccak512(seed) // 64 bytes\n * fieldElement = bn254FieldElementSampler(hash)\n * ```\n *\n * Because Keccak512 is not a MAC, the caller must ensure domain separation is\n * encoded in `seed` before calling this function. The standard pattern is:\n * ```\n * seed = UTF8(\"{DomainToken}/{expandedGenerationIndex}\")\n * ```\n *\n * ## Security Note\n *\n * This function is NOT keyed. If the seed is predictable by an adversary, the\n * output is also predictable. Always include a secret value (e.g.\n * `expandedGenerationIndex` derived from a secret master seed) in the seed.\n *\n * @param seed - Input bytes including domain separation and secret material\n * @param deps - Optional: custom BN254 sampler\n * @returns A BN254 field element uniformly distributed in `[0, p-1]`\n *\n * @example\n * ```typescript\n * // Ephemeral MVK from expanded generation index\n * const seed = new TextEncoder().encode(\n * `EphemeralMasterViewingKey/${expandedIndex.toString()}`\n * );\n * const ephemeralMvk = deriveBn254FieldElementFromKeccak512(seed);\n * ```\n *\n * @see {@link getBn254FieldElementFromKeccak512Deriver} — curried factory variant\n * @public\n */\nexport function deriveBn254FieldElementFromKeccak512(\n seed: Uint8Array,\n deps?: Keccak512BasedBn254FieldElementDeriverDeps,\n): Bn254FieldElement {\n const { sampler = bn254FieldElementSampler } = deps ?? {};\n\n // Hash the seed with Keccak512 to produce 64 bytes\n const hash = keccak_512(seed);\n\n // Assert that the hash is valid U512BeBytes (64 bytes)\n assertU512BeBytes(hash);\n\n // Use the sampler to reduce to BN254 field element\n const fieldElement = sampler(hash);\n\n // Assert and return as Bn254FieldElement\n assertBn254FieldElement(fieldElement);\n return fieldElement;\n}\n\n/**\n * Creates a curried Keccak512-based BN254 field element deriver.\n *\n * @remarks\n * Returns a zero-configuration `(seed: Uint8Array) => Bn254FieldElement` function\n * with a custom sampler bound via closure. Useful when the same deriver is called\n * many times or needs to be passed as a dependency to another factory.\n *\n * @param deps - Optional: custom BN254 sampler\n * @returns A function `(seed: Uint8Array) => Bn254FieldElement`\n *\n * @example\n * ```typescript\n * const deriveField = getBn254FieldElementFromKeccak512Deriver();\n * const element = deriveField(new TextEncoder().encode(\"MyDomain/0\"));\n * ```\n *\n * @see {@link deriveBn254FieldElementFromKeccak512} — one-shot variant\n * @public\n */\nexport function getBn254FieldElementFromKeccak512Deriver(\n deps?: Keccak512BasedBn254FieldElementDeriverDeps,\n): Keccak512BasedBn254FieldElementDeriverFunction {\n const { sampler = bn254FieldElementSampler } = deps ?? {};\n\n return (seed: Uint8Array): Bn254FieldElement => {\n return deriveBn254FieldElementFromKeccak512(seed, { sampler });\n };\n}\n\n/* =============================================================================\n * KEYSTREAM BLINDING FACTOR DERIVATION\n * ============================================================================= */\n\n/**\n * Domain separator token for keystream blinding factor derivation.\n *\n * @remarks\n * Used by {@link deriveKeystreamBlindingFactor} to form the Keccak512 seed:\n * `\"KeystreamBlindingFactor/{offset}\"`. Because this function is not keyed by\n * a master seed, the offset must be kept secret or the blinding factor must be\n * combined with a secret upstream (e.g. through the keystream value itself).\n *\n * @internal\n */\nconst KEYSTREAM_BLINDING_FACTOR_PREFIX = \"KeystreamBlindingFactor\";\n\n/**\n * Derives a keystream commitment blinding factor from a U256 offset.\n *\n * @remarks\n * This function is not keyed; it relies entirely on the offset value for domain\n * separation. It is intended for use in contexts where the keystream value itself\n * already provides the required secrecy (e.g. the blinding factor is only secret\n * if the keystream is secret).\n *\n * ## Algorithm\n *\n * ```\n * seed = UTF8(\"KeystreamBlindingFactor/{offset}\")\n * hash = Keccak512(seed)\n * blindingFactor = bn254FieldElementSampler(hash)\n * ```\n *\n * @param offset - The U256 offset providing per-operation domain separation\n * @returns A BN254 field element uniformly distributed in `[0, p-1]`\n *\n * @example\n * ```typescript\n * const bf = deriveKeystreamBlindingFactor(12345n as U256);\n * // commitment = Poseidon([keystream, bf])\n * ```\n *\n * @public\n */\nexport function deriveKeystreamBlindingFactor(offset: U256): Bn254FieldElement {\n // Build seed with domain separator and offset\n const domainBytes = new TextEncoder().encode(\n `${KEYSTREAM_BLINDING_FACTOR_PREFIX}/${offset.toString()}`,\n );\n\n // Use Keccak512-based derivation\n return deriveBn254FieldElementFromKeccak512(domainBytes);\n}\n\n/* =============================================================================\n * EPHEMERAL RESCUE ENCRYPTION COMMITMENT BLINDING FACTOR GENERATOR\n * ============================================================================= */\n\n/**\n * Domain separator token for ephemeral Rescue encryption commitment blinding factor derivation.\n *\n * @remarks\n * Used by {@link getEphemeralRescueCommitmentBlindingFactorDeriver} to form:\n * `\"Umbra Privacy - Ephemeral RescueEncryptionCommitmentBlindingFactor - {offset}\"`.\n * Unlike the persistent rescue blinding factor generator, this function uses KMAC256\n * with the master seed directly (no intermediate U512 generator).\n *\n * @internal\n */\nconst EPHEMERAL_RESCUE_ENCRYPTION_COMMITMENT_BF_DOMAIN =\n \"Ephemeral RescueEncryptionCommitmentBlindingFactor\";\n\n/**\n * Required arguments for creating an ephemeral Rescue encryption commitment blinding factor generator.\n *\n * @public\n */\nexport interface EphemeralRescueCommitmentBlindingFactorDeriverArgs {\n /**\n * The Umbra client providing access to the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral Rescue encryption commitment blinding factor generator.\n *\n * @public\n */\nexport interface EphemeralRescueCommitmentBlindingFactorDeriverDeps {\n /**\n * Custom KMAC256 implementation for testing.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: typeof defaultKmac256;\n\n /**\n * Custom constant-time BN254 field element sampler for testing.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral Rescue encryption commitment blinding factor generator.\n *\n * @remarks\n * Unlike {@link getRescueCommitmentBlindingFactorDeriver} which adds\n * a client base offset, this generator uses a caller-supplied U256 offset directly\n * (typically the `expandedModifiedGenerationIndex` converted to a bigint). It calls\n * KMAC256 with the master seed directly rather than going through the intermediate\n * U512 generator.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral RescueEncryptionCommitmentBlindingFactor - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * blindingFactor = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralRescueCommitmentBlindingFactorDeriver({ client });\n * const bf = await generator(expandedModifiedGenerationIndexU256);\n * ```\n *\n * @see {@link EphemeralRescueCommitmentBlindingFactorDeriverFunction}\n * @public\n */\nexport function getEphemeralRescueCommitmentBlindingFactorDeriver(\n args: EphemeralRescueCommitmentBlindingFactorDeriverArgs,\n deps?: EphemeralRescueCommitmentBlindingFactorDeriverDeps,\n): EphemeralRescueCommitmentBlindingFactorDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_RESCUE_ENCRYPTION_COMMITMENT_BF_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* =============================================================================\n * EPHEMERAL KEY DERIVATION FUNCTIONS\n * ============================================================================= */\n\n/**\n * Domain separator token for ephemeral master viewing key derivation from an expanded generation index.\n *\n * @remarks\n * Used by {@link deriveEphemeralMasterViewingKey} to form the Keccak512 seed:\n * `\"EphemeralMasterViewingKey/{expandedGenerationIndex}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_MVK_DOMAIN = \"EphemeralMasterViewingKey\";\n\n/**\n * Domain separator token for ephemeral MVK blinding factor derivation from an expanded generation index.\n *\n * @remarks\n * Used by {@link deriveEphemeralMasterViewingKeyBlindingFactor} to form the Keccak512 seed:\n * `\"EphemeralMasterViewingKeyBlindingFactor/{expandedGenerationIndex}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_MVK_BF_DOMAIN = \"EphemeralMasterViewingKeyBlindingFactor\";\n\n/**\n * Domain separator token for ephemeral Poseidon private key derivation from an expanded generation index.\n *\n * @remarks\n * Used by {@link deriveEphemeralPoseidonPrivateKey} to form the Keccak512 seed:\n * `\"EphemeralPoseidonPrivateKey/{expandedGenerationIndex}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_PK_DOMAIN = \"EphemeralPoseidonPrivateKey\";\n\n/**\n * Domain separator token for ephemeral Poseidon blinding factor derivation from an expanded generation index.\n *\n * @remarks\n * Used by {@link deriveEphemeralPoseidonPrivateKeyBlindingFactor} to form the Keccak512 seed:\n * `\"EphemeralPoseidonPrivateKeyBlindingFactor/{expandedGenerationIndex}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_PK_BF_DOMAIN = \"EphemeralPoseidonPrivateKeyBlindingFactor\";\n\n/* =============================================================================\n * PURE DERIVATION DOMAIN CONSTANTS (16-byte modifiedGenerationIndex based)\n * ============================================================================= */\n\n/**\n * KMAC256 key string for expanding a 16-byte `modifiedGenerationIndex` to 32 bytes.\n *\n * @remarks\n * Used by {@link expandModifiedGenerationIndex}. The expanded 32-byte value is\n * interpreted as a `U256` and passed to the ephemeral key derivation functions\n * (`deriveEphemeralMasterViewingKey`, etc.) as their `expandedGenerationIndex`.\n *\n * @internal\n */\nconst PURE_EXPANDED_GEN_INDEX_DOMAIN = \"Umbra Privacy - ExpandedGenerationIndex\";\n\n/**\n * KMAC256 key string for pure nullifier derivation from a 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * Used by {@link deriveNullifierFromModifiedGenerationIndex}.\n * Output is a BN254 field element stored in the on-chain treap to prevent double-spending.\n *\n * @internal\n */\nconst PURE_NULLIFIER_DOMAIN = \"Umbra Privacy - Nullifier\";\n\n/**\n * KMAC256 key string for pure random secret (H2 blinding) derivation from a 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * Used by {@link deriveRandomSecretFromModifiedGenerationIndex}.\n * The random secret is included in the H2 Poseidon hash to randomize the UTXO\n * commitment and prevent commitment linking across transactions.\n *\n * @internal\n */\nconst PURE_RANDOM_SECRET_DOMAIN = \"Umbra Privacy - RandomSecret\";\n\n/**\n * KMAC256 key string for pure proof-account offset derivation from a 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * Used by {@link deriveProofAccountOffsetFromModifiedGenerationIndex}.\n * The 16-byte output is used as a Solana PDA seed for the proof account\n * associated with this UTXO operation.\n *\n * @internal\n */\nconst PURE_PROOF_ACCOUNT_OFFSET_DOMAIN = \"Umbra Privacy - ProofAccountOffset\";\n\n/**\n * KMAC256 key string for pure random factor (polynomial commitment) derivation from a 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * Used by {@link deriveRandomFactorForPolynomialCommitmentFromModifiedGenerationIndex}.\n * Output is a Curve25519 field element (not BN254) used in polynomial commitment evaluation.\n *\n * @internal\n */\nconst PURE_RANDOM_FACTOR_POLY_COMMITMENT_DOMAIN =\n \"Umbra Privacy - RandomFactorForPolynomialCommitment\";\n\n/**\n * KMAC256 key string for pure Rescue encryption commitment blinding factor derivation from a 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * Used by {@link deriveRescueEncryptionCommitmentBlindingFactorFromModifiedGenerationIndex}.\n * Output is a BN254 field element used as the blinding factor in the Rescue\n * encryption commitment.\n *\n * @internal\n */\nconst PURE_RESCUE_ENCRYPTION_BF_DOMAIN = \"Umbra Privacy - RescueEncryptionCommitmentBlindingFactor\";\n\n/**\n * Derives an ephemeral master viewing key from an expanded generation index.\n *\n * @remarks\n * Uses Keccak512-based derivation (not KMAC256) so the derivation depends only\n * on `expandedGenerationIndex` — which was itself derived from the master seed —\n * with no direct access to the master seed at this step.\n *\n * ## Algorithm\n *\n * ```\n * seed = UTF8(\"EphemeralMasterViewingKey/{expandedGenerationIndex}\")\n * ephemeralMVK = deriveBn254FieldElementFromKeccak512(seed)\n * ```\n *\n * @param expandedGenerationIndex - The U256 expanded generation index (32-byte KMAC256 output interpreted as bigint)\n * @returns A BN254 field element to use as the ephemeral master viewing key\n *\n * @example\n * ```typescript\n * const ephemeralMvk = deriveEphemeralMasterViewingKey(expandedModifiedGenerationIndexU256);\n * ```\n *\n * @see {@link expandModifiedGenerationIndex} — produces `expandedGenerationIndex`\n * @public\n */\nexport function deriveEphemeralMasterViewingKey(expandedGenerationIndex: U256): Bn254FieldElement {\n const seed = new TextEncoder().encode(\n `${EPHEMERAL_MVK_DOMAIN}/${expandedGenerationIndex.toString()}`,\n );\n return deriveBn254FieldElementFromKeccak512(seed);\n}\n\n/**\n * Derives an ephemeral master viewing key blinding factor from an expanded generation index.\n *\n * @remarks\n * ## Algorithm\n *\n * ```\n * seed = UTF8(\"EphemeralMasterViewingKeyBlindingFactor/{expandedGenerationIndex}\")\n * ephemeralMVKBlindingFactor = deriveBn254FieldElementFromKeccak512(seed)\n * ```\n *\n * @param expandedGenerationIndex - The U256 expanded generation index\n * @returns A BN254 field element to use as the ephemeral MVK blinding factor\n *\n * @example\n * ```typescript\n * const bf = deriveEphemeralMasterViewingKeyBlindingFactor(expandedModifiedGenerationIndexU256);\n * ```\n *\n * @see {@link expandModifiedGenerationIndex} — produces `expandedGenerationIndex`\n * @public\n */\nexport function deriveEphemeralMasterViewingKeyBlindingFactor(\n expandedGenerationIndex: U256,\n): Bn254FieldElement {\n const seed = new TextEncoder().encode(\n `${EPHEMERAL_MVK_BF_DOMAIN}/${expandedGenerationIndex.toString()}`,\n );\n return deriveBn254FieldElementFromKeccak512(seed);\n}\n\n/**\n * Derives an ephemeral Poseidon private key from an expanded generation index.\n *\n * @remarks\n * ## Algorithm\n *\n * ```\n * seed = UTF8(\"EphemeralPoseidonPrivateKey/{expandedGenerationIndex}\")\n * ephemeralPK = deriveBn254FieldElementFromKeccak512(seed)\n * ```\n *\n * @param expandedGenerationIndex - The U256 expanded generation index\n * @returns A BN254 field element to use as the ephemeral Poseidon private key\n *\n * @example\n * ```typescript\n * const ephemeralPk = deriveEphemeralPoseidonPrivateKey(expandedModifiedGenerationIndexU256);\n * ```\n *\n * @see {@link expandModifiedGenerationIndex} — produces `expandedGenerationIndex`\n * @public\n */\nexport function deriveEphemeralPoseidonPrivateKey(\n expandedGenerationIndex: U256,\n): Bn254FieldElement {\n const seed = new TextEncoder().encode(\n `${EPHEMERAL_PK_DOMAIN}/${expandedGenerationIndex.toString()}`,\n );\n return deriveBn254FieldElementFromKeccak512(seed);\n}\n\n/**\n * Derives an ephemeral Poseidon private key blinding factor from an expanded generation index.\n *\n * @remarks\n * ## Algorithm\n *\n * ```\n * seed = UTF8(\"EphemeralPoseidonPrivateKeyBlindingFactor/{expandedGenerationIndex}\")\n * ephemeralPKBlindingFactor = deriveBn254FieldElementFromKeccak512(seed)\n * ```\n *\n * @param expandedGenerationIndex - The U256 expanded generation index\n * @returns A BN254 field element to use as the ephemeral Poseidon private key blinding factor\n *\n * @example\n * ```typescript\n * const bf = deriveEphemeralPoseidonPrivateKeyBlindingFactor(expandedModifiedGenerationIndexU256);\n * ```\n *\n * @see {@link expandModifiedGenerationIndex} — produces `expandedGenerationIndex`\n * @public\n */\nexport function deriveEphemeralPoseidonPrivateKeyBlindingFactor(\n expandedGenerationIndex: U256,\n): Bn254FieldElement {\n const seed = new TextEncoder().encode(\n `${EPHEMERAL_PK_BF_DOMAIN}/${expandedGenerationIndex.toString()}`,\n );\n return deriveBn254FieldElementFromKeccak512(seed);\n}\n\n/* =============================================================================\n * PURE DERIVATION FUNCTIONS (16-byte modifiedGenerationIndex based)\n * =============================================================================\n *\n * These functions derive values purely from the 16-byte modifiedGenerationIndex\n * using KMAC256 with the modifiedGenerationIndex as the key. This ensures:\n *\n * 1. **No masterSeed dependency**: After the initial modifiedGenerationIndex is\n * derived (which can use masterSeed), all subsequent derivations are purely\n * from this 16-byte value.\n *\n * 2. **Identical derivation in create and claim**: Both UTXO creation and claim\n * operations use the exact same derivation process.\n *\n * 3. **Deterministic**: Same 16-byte input always produces the same outputs.\n *\n * 4. **Domain separated**: Different domain strings ensure independent outputs.\n * ============================================================================= */\n\n/**\n * Expands a 16-byte `modifiedGenerationIndex` to a 32-byte value.\n *\n * @remarks\n * This is the entry point for the pure derivation pipeline. The 32-byte output\n * is interpreted as a `U256` bigint and passed to the Keccak512-based ephemeral\n * key derivation functions (`deriveEphemeralMasterViewingKey`, etc.).\n *\n * The expansion uses KMAC256 with the `modifiedGenerationIndex` as the\n * **message** (not the key). The KMAC key is the fixed domain string\n * `\"Umbra Privacy - ExpandedGenerationIndex\"`. This means knowledge of\n * `modifiedGenerationIndex` (16 bytes) is necessary and sufficient to\n * reproduce the entire expanded UTXO key hierarchy.\n *\n * ## Algorithm\n *\n * ```\n * output = KMAC256(\n * key = UTF8(\"Umbra Privacy - ExpandedGenerationIndex\"),\n * msg = modifiedGenerationIndex, // 16 bytes\n * dkLen = 32,\n * S = PURE_PERSONALIZATION // \"umbra/1.0.0|kmac256/1.0.0|kdf/1.0.0|pure\"\n * )\n * ```\n *\n * @param modifiedGenerationIndex - The 16-byte modified generation index (from\n * `deriveModifiedGenerationIndexForSenderClaim` or `...ForReceiverClaim`)\n * @returns A 32-byte `Uint8Array` (the expanded generation index)\n *\n * @throws `CryptographyAssertionError` if `modifiedGenerationIndex.length !== 16`\n *\n * @example\n * ```typescript\n * // Convert the U128 bigint to a 16-byte LE Uint8Array first\n * const modifiedIndexBytes = le128ToBytes(modifiedGenerationIndex);\n * const expanded = expandModifiedGenerationIndex(modifiedIndexBytes);\n * // expanded is 32 bytes; interpret as U256 for deriveEphemeral* functions\n * ```\n *\n * @see {@link deriveModifiedGenerationIndexForSenderClaim} — produces the 16-byte input\n * @public\n */\nexport function expandModifiedGenerationIndex(modifiedGenerationIndex: Uint8Array): Uint8Array {\n if (modifiedGenerationIndex.length !== 16) {\n throw new CryptographyAssertionError(\n `modifiedGenerationIndex must be 16 bytes, got ${String(modifiedGenerationIndex.length)}`,\n {\n value: modifiedGenerationIndex,\n expectedType: \"Uint8Array(16)\",\n constraint: \"length === 16\",\n },\n );\n }\n\n // Use KMAC256 with domain as key, modifiedGenerationIndex as message\n const expanded = defaultKmac256(\n new TextEncoder().encode(PURE_EXPANDED_GEN_INDEX_DOMAIN), // key (domain separator)\n modifiedGenerationIndex, // message (16 bytes)\n { dkLen: 32, personalization: PURE_PERSONALIZATION }, // 32 bytes output\n );\n\n return expanded;\n}\n\n/**\n * Derives a UTXO nullifier purely from the 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * The nullifier is a BN254 field element stored in the on-chain treap when a\n * UTXO is spent. Its uniqueness prevents double-spending. Because derivation\n * depends only on `modifiedGenerationIndex` (not the master seed directly),\n * both UTXO creation and UTXO claim can reproduce the same nullifier independently.\n *\n * ## Algorithm\n *\n * ```\n * u512 = KMAC256(\n * key = UTF8(\"Umbra Privacy - Nullifier\"),\n * msg = modifiedGenerationIndex, // 16 bytes — acts as the secret\n * dkLen = 64,\n * S = PURE_PERSONALIZATION\n * )\n * nullifier = bn254FieldElementSampler(u512)\n * ```\n *\n * @param modifiedGenerationIndex - The 16-byte modified generation index\n * @returns A BN254 field element to use as the UTXO nullifier\n *\n * @throws `CryptographyAssertionError` if `modifiedGenerationIndex.length !== 16`\n *\n * @example\n * ```typescript\n * const nullifier = deriveNullifierFromModifiedGenerationIndex(modifiedGenIndex);\n * // Store nullifier in the on-chain treap upon UTXO spend\n * ```\n *\n * @see {@link expandModifiedGenerationIndex}\n * @public\n */\nexport function deriveNullifierFromModifiedGenerationIndex(\n modifiedGenerationIndex: Uint8Array,\n): Bn254FieldElement {\n if (modifiedGenerationIndex.length !== 16) {\n throw new CryptographyAssertionError(\n `modifiedGenerationIndex must be 16 bytes, got ${String(modifiedGenerationIndex.length)}`,\n {\n value: modifiedGenerationIndex,\n expectedType: \"Uint8Array(16)\",\n constraint: \"length === 16\",\n },\n );\n }\n\n // Use KMAC256 with domain as key, modifiedGenerationIndex as message\n const u512Bytes = defaultKmac256(\n new TextEncoder().encode(PURE_NULLIFIER_DOMAIN), // key (domain separator)\n modifiedGenerationIndex, // message (16 bytes)\n { dkLen: KMAC_512_OUTPUT_LENGTH, personalization: PURE_PERSONALIZATION }, // 64 bytes for sampling\n );\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = bn254FieldElementSampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n}\n\n/**\n * Derives the H2 random secret purely from the 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * The random secret (also called the H2 blinding factor) is a BN254 field element\n * included in the H2 Poseidon hash. Its purpose is to add entropy to the UTXO\n * commitment so that commitments for identical amounts cannot be linked by an\n * observer.\n *\n * ## Usage in H2 Hash\n *\n * ```\n * H2 = Poseidon([amount, nullifier, userCommitment, destAddrLow, destAddrHigh, randomSecret])\n * ```\n *\n * ## Algorithm\n *\n * ```\n * u512 = KMAC256(\n * key = UTF8(\"Umbra Privacy - RandomSecret\"),\n * msg = modifiedGenerationIndex, // 16 bytes\n * dkLen = 64,\n * S = PURE_PERSONALIZATION\n * )\n * randomSecret = bn254FieldElementSampler(u512)\n * ```\n *\n * @param modifiedGenerationIndex - The 16-byte modified generation index\n * @returns A BN254 field element to use as the H2 random secret\n *\n * @throws `CryptographyAssertionError` if `modifiedGenerationIndex.length !== 16`\n *\n * @example\n * ```typescript\n * const secret = deriveRandomSecretFromModifiedGenerationIndex(modifiedGenIndex);\n * const h2 = await poseidonHash([amount, nullifier, commitment, addrLow, addrHigh, secret]);\n * ```\n *\n * @public\n */\nexport function deriveRandomSecretFromModifiedGenerationIndex(\n modifiedGenerationIndex: Uint8Array,\n): Bn254FieldElement {\n if (modifiedGenerationIndex.length !== 16) {\n throw new CryptographyAssertionError(\n `modifiedGenerationIndex must be 16 bytes, got ${String(modifiedGenerationIndex.length)}`,\n {\n value: modifiedGenerationIndex,\n expectedType: \"Uint8Array(16)\",\n constraint: \"length === 16\",\n },\n );\n }\n\n // Use KMAC256 with domain as key, modifiedGenerationIndex as message\n const u512Bytes = defaultKmac256(\n new TextEncoder().encode(PURE_RANDOM_SECRET_DOMAIN), // key (domain separator)\n modifiedGenerationIndex, // message (16 bytes)\n { dkLen: KMAC_512_OUTPUT_LENGTH, personalization: PURE_PERSONALIZATION }, // 64 bytes for sampling\n );\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = bn254FieldElementSampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n}\n\n/**\n * Derives a Solana proof-account PDA seed purely from the 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * The proof account is a Solana PDA that stores MPC callback data during the\n * two-instruction MPC flow. Its address is derived from this 16-byte offset,\n * ensuring that each UTXO operation uses a unique proof account.\n *\n * ## Algorithm\n *\n * ```\n * proofOffset = KMAC256(\n * key = UTF8(\"Umbra Privacy - ProofAccountOffset\"),\n * msg = modifiedGenerationIndex, // 16 bytes\n * dkLen = 16,\n * S = PURE_PERSONALIZATION\n * )\n * // proofOffset is 16 bytes; convert to U128 for use as Solana PDA seed\n * ```\n *\n * @param modifiedGenerationIndex - The 16-byte modified generation index\n * @returns A 16-byte `Uint8Array` to use as the proof account PDA seed\n *\n * @throws `CryptographyAssertionError` if `modifiedGenerationIndex.length !== 16`\n *\n * @example\n * ```typescript\n * const proofOffset = deriveProofAccountOffsetFromModifiedGenerationIndex(modifiedGenIndex);\n * // Use as little-endian U128 PDA seed in Solana account derivation\n * ```\n *\n * @public\n */\nexport function deriveProofAccountOffsetFromModifiedGenerationIndex(\n modifiedGenerationIndex: Uint8Array,\n): Uint8Array {\n if (modifiedGenerationIndex.length !== 16) {\n throw new CryptographyAssertionError(\n `modifiedGenerationIndex must be 16 bytes, got ${String(modifiedGenerationIndex.length)}`,\n {\n value: modifiedGenerationIndex,\n expectedType: \"Uint8Array(16)\",\n constraint: \"length === 16\",\n },\n );\n }\n\n // Use KMAC256 with domain as key, modifiedGenerationIndex as message\n const proofOffset = defaultKmac256(\n new TextEncoder().encode(PURE_PROOF_ACCOUNT_OFFSET_DOMAIN), // key (domain separator)\n modifiedGenerationIndex, // message (16 bytes)\n { dkLen: 16, personalization: PURE_PERSONALIZATION }, // 16 bytes output\n );\n\n return proofOffset;\n}\n\n/**\n * Derives a polynomial commitment random factor purely from the 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * Unlike most other pure derivation functions which produce BN254 field elements,\n * this function produces a **Curve25519 field element** because polynomial\n * commitments in Umbra operate over the Curve25519 scalar field.\n *\n * ## Algorithm\n *\n * ```\n * u512 = KMAC256(\n * key = UTF8(\"Umbra Privacy - RandomFactorForPolynomialCommitment\"),\n * msg = modifiedGenerationIndex, // 16 bytes\n * dkLen = 64,\n * S = PURE_PERSONALIZATION\n * )\n * randomFactor = curve25519FieldElementSampler(u512) // Curve25519, not BN254\n * ```\n *\n * @param modifiedGenerationIndex - The 16-byte modified generation index\n * @returns A Curve25519 field element for use in polynomial commitment evaluation\n *\n * @throws `CryptographyAssertionError` if `modifiedGenerationIndex.length !== 16`\n *\n * @example\n * ```typescript\n * const rf = deriveRandomFactorForPolynomialCommitmentFromModifiedGenerationIndex(modifiedGenIndex);\n * const commitment = evaluatePolynomial([coeff0, coeff1, rf], challenge);\n * ```\n *\n * @public\n */\nexport function deriveRandomFactorForPolynomialCommitmentFromModifiedGenerationIndex(\n modifiedGenerationIndex: Uint8Array,\n): Curve25519FieldElement {\n if (modifiedGenerationIndex.length !== 16) {\n throw new CryptographyAssertionError(\n `modifiedGenerationIndex must be 16 bytes, got ${String(modifiedGenerationIndex.length)}`,\n {\n value: modifiedGenerationIndex,\n expectedType: \"Uint8Array(16)\",\n constraint: \"length === 16\",\n },\n );\n }\n\n // Use KMAC256 with domain as key, modifiedGenerationIndex as message\n const u512Bytes = defaultKmac256(\n new TextEncoder().encode(PURE_RANDOM_FACTOR_POLY_COMMITMENT_DOMAIN), // key (domain separator)\n modifiedGenerationIndex, // message (16 bytes)\n { dkLen: KMAC_512_OUTPUT_LENGTH, personalization: PURE_PERSONALIZATION }, // 64 bytes for sampling\n );\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = curve25519FieldElementSampler(u512Bytes);\n\n return fieldElement;\n}\n\n/**\n * Derives a Rescue encryption commitment blinding factor purely from the 16-byte `modifiedGenerationIndex`.\n *\n * @remarks\n * This is the pure counterpart to {@link getEphemeralRescueCommitmentBlindingFactorDeriver}.\n * The difference is that this function requires no master seed — it is keyed\n * entirely by `modifiedGenerationIndex` — making it usable in the claim path\n * where only the `modifiedGenerationIndex` is available.\n *\n * ## Algorithm\n *\n * ```\n * u512 = KMAC256(\n * key = UTF8(\"Umbra Privacy - RescueEncryptionCommitmentBlindingFactor\"),\n * msg = modifiedGenerationIndex, // 16 bytes\n * dkLen = 64,\n * S = PURE_PERSONALIZATION\n * )\n * blindingFactor = bn254FieldElementSampler(u512)\n * ```\n *\n * @param modifiedGenerationIndex - The 16-byte modified generation index\n * @returns A BN254 field element to use as the Rescue commitment blinding factor\n *\n * @throws `CryptographyAssertionError` if `modifiedGenerationIndex.length !== 16`\n *\n * @example\n * ```typescript\n * const bf = deriveRescueEncryptionCommitmentBlindingFactorFromModifiedGenerationIndex(modifiedGenIndex);\n * assertBn254FieldElement(bf);\n * ```\n *\n * @public\n */\nexport function deriveRescueEncryptionCommitmentBlindingFactorFromModifiedGenerationIndex(\n modifiedGenerationIndex: Uint8Array,\n): Bn254FieldElement {\n if (modifiedGenerationIndex.length !== 16) {\n throw new CryptographyAssertionError(\n `modifiedGenerationIndex must be 16 bytes, got ${String(modifiedGenerationIndex.length)}`,\n {\n value: modifiedGenerationIndex,\n expectedType: \"Uint8Array(16)\",\n constraint: \"length === 16\",\n },\n );\n }\n\n // Use KMAC256 with domain as key, modifiedGenerationIndex as message\n const u512Bytes = defaultKmac256(\n new TextEncoder().encode(PURE_RESCUE_ENCRYPTION_BF_DOMAIN), // key (domain separator)\n modifiedGenerationIndex, // message (16 bytes)\n { dkLen: KMAC_512_OUTPUT_LENGTH, personalization: PURE_PERSONALIZATION }, // 64 bytes for sampling\n );\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = bn254FieldElementSampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n}\n\n/* =============================================================================\n * EPHEMERAL UTXO KEY GENERATORS (KMAC256-BASED)\n * ============================================================================= */\n\n/**\n * Domain separator token for ephemeral UTXO master viewing key derivation.\n *\n * @remarks\n * Used by {@link getEphemeralUtxoMasterViewingKeyDeriver} to form:\n * `\"Umbra Privacy - Ephemeral UTXO MasterViewingKey - {offset}\"`.\n * The output is constrained to 252 bits via `MAX_252_BIT_VALUE` masking, consistent\n * with the permanent MVK generator.\n *\n * @internal\n */\nconst EPHEMERAL_UTXO_MVK_DOMAIN = \"Ephemeral UTXO MasterViewingKey\";\n\n/**\n * Domain separator token for ephemeral UTXO MVK blinding factor derivation.\n *\n * @remarks\n * Used by {@link getEphemeralUtxoMasterViewingKeyBlindingFactorDeriver} to form:\n * `\"Umbra Privacy - Ephemeral UTXO MasterViewingKeyBlindingFactor - {offset}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_UTXO_MVK_BF_DOMAIN = \"Ephemeral UTXO MasterViewingKeyBlindingFactor\";\n\n/**\n * Domain separator token for ephemeral UTXO Poseidon private key derivation.\n *\n * @remarks\n * Used by {@link getEphemeralUtxoPoseidonPrivateKeyDeriver} to form:\n * `\"Umbra Privacy - Ephemeral UTXO PoseidonPrivateKey - {offset}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_UTXO_PK_DOMAIN = \"Ephemeral UTXO PoseidonPrivateKey\";\n\n/**\n * Domain separator token for ephemeral UTXO Poseidon private key blinding factor derivation.\n *\n * @remarks\n * Used by {@link getEphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriver} to form:\n * `\"Umbra Privacy - Ephemeral UTXO PoseidonPrivateKeyBlindingFactor - {offset}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_UTXO_PK_BF_DOMAIN = \"Ephemeral UTXO PoseidonPrivateKeyBlindingFactor\";\n\n/**\n * Domain separator token for ephemeral UTXO nullifier derivation.\n *\n * @remarks\n * Used by {@link getEphemeralUtxoNullifierDeriver} to form:\n * `\"Umbra Privacy - Ephemeral UTXO Nullifier - {offset}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_UTXO_NULLIFIER_DOMAIN = \"Ephemeral UTXO Nullifier\";\n\n/**\n * Domain separator token for ephemeral UTXO H2 random secret derivation.\n *\n * @remarks\n * Used by {@link getEphemeralUtxoH2RandomSecretDeriver} to form:\n * `\"Umbra Privacy - Ephemeral UTXO H2RandomSecret - {offset}\"`.\n *\n * @internal\n */\nconst EPHEMERAL_UTXO_H2_RANDOM_SECRET_DOMAIN = \"Ephemeral UTXO H2RandomSecret\";\n\n/**\n * Domain separator token for Poseidon keystream blinding factor derivation.\n *\n * @remarks\n * Used by {@link getPoseidonKeystreamBlindingFactorDeriver} to form:\n * `\"Umbra Privacy - PoseidonKeystreamBlindingFactor - {offset}\"`.\n * The message for this generator also includes `masterSeed || keystream || offset`\n * to bind the blinding factor to both the keystream value and the UTXO position.\n *\n * @internal\n */\nconst POSEIDON_KEYSTREAM_BLINDING_FACTOR_DOMAIN = \"PoseidonKeystreamBlindingFactor\";\n\n/* -----------------------------------------------------------------------------\n * Ephemeral UTXO Master Viewing Key Generator\n * ----------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating an ephemeral UTXO master viewing key generator.\n *\n * @public\n */\nexport interface EphemeralUtxoMasterViewingKeyDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral UTXO master viewing key generator.\n *\n * @public\n */\nexport interface EphemeralUtxoMasterViewingKeyDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral UTXO master viewing key generator.\n *\n * @remarks\n * Produces BN254 field elements for use as ephemeral MVKs in UTXO creation.\n * The output is constrained to 252 bits (via bitmask) to match the permanent\n * MVK constraint required by ZK circuits.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral UTXO MasterViewingKey - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * mvk = bn254FieldElementSampler(u512) & MAX_252_BIT_VALUE\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralUtxoMasterViewingKeyDeriver({ client });\n * const ephemeralMvk = await generator(generationIndex);\n * ```\n *\n * @see {@link EphemeralUtxoMasterViewingKeyDeriverFunction}\n * @public\n */\nexport function getEphemeralUtxoMasterViewingKeyDeriver(\n args: EphemeralUtxoMasterViewingKeyDeriverArgs,\n deps?: EphemeralUtxoMasterViewingKeyDeriverDeps,\n): EphemeralUtxoMasterViewingKeyDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_UTXO_MVK_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n let fieldElement = sampler(u512Bytes);\n\n // Constrain to 252 bits by masking (consistent with main MVK generator)\n fieldElement = fieldElement & MAX_252_BIT_VALUE;\n\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Ephemeral UTXO Master Viewing Key Blinding Factor Generator\n * ----------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating an ephemeral UTXO MVK blinding factor generator.\n *\n * @public\n */\nexport interface EphemeralUtxoMasterViewingKeyBlindingFactorDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral UTXO MVK blinding factor generator.\n *\n * @public\n */\nexport interface EphemeralUtxoMasterViewingKeyBlindingFactorDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral UTXO master viewing key blinding factor generator.\n *\n * @remarks\n * Produces BN254 field elements used as blinding factors for ephemeral MVK\n * commitments during UTXO unlocking/claiming.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral UTXO MasterViewingKeyBlindingFactor - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * bf = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralUtxoMasterViewingKeyBlindingFactorDeriver({ client });\n * const bf = await generator(generationIndex);\n * ```\n *\n * @see {@link EphemeralUtxoMasterViewingKeyBlindingFactorDeriverFunction}\n * @public\n */\nexport function getEphemeralUtxoMasterViewingKeyBlindingFactorDeriver(\n args: EphemeralUtxoMasterViewingKeyBlindingFactorDeriverArgs,\n deps?: EphemeralUtxoMasterViewingKeyBlindingFactorDeriverDeps,\n): EphemeralUtxoMasterViewingKeyBlindingFactorDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_UTXO_MVK_BF_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Ephemeral UTXO Poseidon Private Key Generator\n * ----------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating an ephemeral UTXO Poseidon private key generator.\n *\n * @public\n */\nexport interface EphemeralUtxoPoseidonPrivateKeyDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral UTXO Poseidon private key generator.\n *\n * @public\n */\nexport interface EphemeralUtxoPoseidonPrivateKeyDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral UTXO Poseidon private key generator.\n *\n * @remarks\n * Produces BN254 field elements used as ephemeral Poseidon private keys\n * during UTXO creation. The key is used in the MPC Poseidon cipher to encrypt\n * the UTXO's confidential data.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral UTXO PoseidonPrivateKey - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * pk = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralUtxoPoseidonPrivateKeyDeriver({ client });\n * const ephemeralPk = await generator(generationIndex);\n * ```\n *\n * @see {@link EphemeralUtxoPoseidonPrivateKeyDeriverFunction}\n * @public\n */\nexport function getEphemeralUtxoPoseidonPrivateKeyDeriver(\n args: EphemeralUtxoPoseidonPrivateKeyDeriverArgs,\n deps?: EphemeralUtxoPoseidonPrivateKeyDeriverDeps,\n): EphemeralUtxoPoseidonPrivateKeyDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_UTXO_PK_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Ephemeral UTXO Poseidon Private Key Blinding Factor Generator\n * ----------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating an ephemeral UTXO Poseidon PK blinding factor generator.\n *\n * @public\n */\nexport interface EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral UTXO Poseidon PK blinding factor generator.\n *\n * @public\n */\nexport interface EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral UTXO Poseidon private key blinding factor generator.\n *\n * @remarks\n * Produces BN254 field elements used as blinding factors for ephemeral Poseidon\n * private key commitments during UTXO unlocking.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral UTXO PoseidonPrivateKeyBlindingFactor - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * bf = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriver({ client });\n * const bf = await generator(generationIndex);\n * ```\n *\n * @see {@link EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverFunction}\n * @public\n */\nexport function getEphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriver(\n args: EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverArgs,\n deps?: EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverDeps,\n): EphemeralUtxoPoseidonPrivateKeyBlindingFactorDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_UTXO_PK_BF_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Ephemeral UTXO Nullifier Generator\n * ----------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating an ephemeral UTXO nullifier generator.\n *\n * @public\n */\nexport interface EphemeralUtxoNullifierDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral UTXO nullifier generator.\n *\n * @public\n */\nexport interface EphemeralUtxoNullifierDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral UTXO nullifier generator.\n *\n * @remarks\n * Produces BN254 field elements used as nullifiers for ephemeral UTXOs.\n * The nullifier is stored in the on-chain treap when the UTXO is claimed,\n * preventing double-spending.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral UTXO Nullifier - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * nullifier = bn254FieldElementSampler(u512)\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralUtxoNullifierDeriver({ client });\n * const nullifier = await generator(generationIndex);\n * ```\n *\n * @see {@link EphemeralUtxoNullifierDeriverFunction}\n * @public\n */\nexport function getEphemeralUtxoNullifierDeriver(\n args: EphemeralUtxoNullifierDeriverArgs,\n deps?: EphemeralUtxoNullifierDeriverDeps,\n): EphemeralUtxoNullifierDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_UTXO_NULLIFIER_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Ephemeral UTXO H2 Random Secret Generator\n * ----------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating an ephemeral UTXO H2 random secret generator.\n *\n * @public\n */\nexport interface EphemeralUtxoH2RandomSecretDeriverArgs {\n /**\n * The Umbra client used to access the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the ephemeral UTXO H2 random secret generator.\n *\n * @public\n */\nexport interface EphemeralUtxoH2RandomSecretDeriverDeps {\n /**\n * Custom KMAC256 implementation.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: Kmac256Function;\n\n /**\n * Custom constant-time BN254 field element sampler.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates an ephemeral UTXO H2 random secret generator.\n *\n * @remarks\n * Produces BN254 field elements used as the H2 random secret (blinding factor)\n * in the H2 Poseidon hash during UTXO creation. This value randomizes the\n * commitment and prevents linking of UTXOs with identical amounts.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - Ephemeral UTXO H2RandomSecret - {offset}\")\n * u512 = KMAC256(key=domain, msg=masterSeed, dkLen=64, S=personalization)\n * secret = bn254FieldElementSampler(u512)\n * ```\n *\n * ## Usage in H2 Hash\n *\n * ```\n * H2 = Poseidon([amount, nullifier, userCommitment, destAddrLow, destAddrHigh, secret])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getEphemeralUtxoH2RandomSecretDeriver({ client });\n * const secret = await generator(generationIndex);\n * ```\n *\n * @see {@link EphemeralUtxoH2RandomSecretDeriverFunction}\n * @public\n */\nexport function getEphemeralUtxoH2RandomSecretDeriver(\n args: EphemeralUtxoH2RandomSecretDeriverArgs,\n deps?: EphemeralUtxoH2RandomSecretDeriverDeps,\n): EphemeralUtxoH2RandomSecretDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${EPHEMERAL_UTXO_H2_RANDOM_SECRET_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), masterSeed, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n/* -----------------------------------------------------------------------------\n * POSEIDON KEYSTREAM BLINDING FACTOR GENERATOR\n * -------------------------------------------------------------------------- */\n\n/**\n * Required arguments for creating a Poseidon keystream blinding factor generator.\n *\n * @public\n */\nexport interface PoseidonKeystreamBlindingFactorDeriverArgs {\n /**\n * The Umbra client providing access to the master seed and version information.\n *\n * @readonly\n */\n readonly client: IUmbraClient;\n}\n\n/**\n * Optional dependencies for the Poseidon keystream blinding factor generator.\n *\n * @public\n */\nexport interface PoseidonKeystreamBlindingFactorDeriverDeps {\n /**\n * Custom KMAC256 implementation for testing.\n *\n * @defaultValue `import(\"@noble/hashes/sha3-addons\").kmac256`\n * @readonly\n */\n readonly kmac256?: typeof defaultKmac256;\n\n /**\n * Custom constant-time BN254 field element sampler for testing.\n *\n * @defaultValue `bn254FieldElementSampler`\n * @readonly\n */\n readonly sampler?: U512BasedBn254FieldElementSamplerFunction;\n}\n\n/**\n * Creates a Poseidon keystream blinding factor generator.\n *\n * @remarks\n * The keystream blinding factor binds a specific keystream value to an offset\n * so that the commitment `Poseidon([keystream, bf])` cannot be forged or reused\n * across positions. Both the keystream value AND the master seed contribute to\n * the blinding factor, ensuring it is secret even if the keystream is partially\n * known.\n *\n * ## Algorithm\n *\n * ```\n * domain = UTF8(\"Umbra Privacy - PoseidonKeystreamBlindingFactor - {offset}\")\n * message = masterSeed || keystreamLE32 || offsetLE32\n * // 64 + 32 + 32 = 128 bytes\n * u512 = KMAC256(key=domain, msg=message, dkLen=64, S=personalization)\n * bf = bn254FieldElementSampler(u512)\n * ```\n *\n * Note: the KMAC key and message roles are reversed compared to most other\n * generators in this module. Here, `domain` is the KMAC key and `message`\n * contains `masterSeed || keystream || offset`.\n *\n * ## Usage in Keystream Commitments\n *\n * ```\n * commitment = Poseidon([keystream, blindingFactor])\n * ```\n *\n * @param args - Required: the Umbra client\n * @param deps - Optional: custom KMAC256 and/or BN254 sampler\n * @returns An async function `(keystream: Bn254FieldElement, offset: U256) => Promise<Bn254FieldElement>`\n *\n * @example\n * ```typescript\n * const generator = getPoseidonKeystreamBlindingFactorDeriver({ client });\n * const bf0 = await generator(keystream0, 0n as U256);\n * const bf1 = await generator(keystream1, 1n as U256);\n * ```\n *\n * @see {@link PoseidonKeystreamBlindingFactorDeriverFunction}\n * @public\n */\nexport function getPoseidonKeystreamBlindingFactorDeriver(\n args: PoseidonKeystreamBlindingFactorDeriverArgs,\n deps?: PoseidonKeystreamBlindingFactorDeriverDeps,\n): PoseidonKeystreamBlindingFactorDeriverFunction {\n const { client } = args;\n const { kmac256 = defaultKmac256, sampler = bn254FieldElementSampler } = deps ?? {};\n\n return async (keystream: Bn254FieldElement, offset: U256): Promise<Bn254FieldElement> => {\n const masterSeed = await client.masterSeed.getMasterSeed();\n const domainSeparator = `${DOMAIN_PREFIX} - ${POSEIDON_KEYSTREAM_BLINDING_FACTOR_DOMAIN} - ${offset.toString()}`;\n const personalization = buildPersonalizationString(client);\n\n // Concatenate keystream (32 bytes LE) with offset (32 bytes LE)\n const keystreamBytes = new Uint8Array(32);\n let keystreamValue = keystream as bigint;\n for (let index = 0; index < 32; index++) {\n keystreamBytes[index] = Number(keystreamValue & 0xffn);\n keystreamValue >>= 8n;\n }\n\n const offsetBytes = new Uint8Array(32);\n let offsetValue = offset as bigint;\n for (let index = 0; index < 32; index++) {\n offsetBytes[index] = Number(offsetValue & 0xffn);\n offsetValue >>= 8n;\n }\n\n // Concatenate masterSeed (64 bytes) || keystream (32 bytes LE) || offset (32 bytes LE)\n const message = new Uint8Array(masterSeed.length + 64);\n message.set(masterSeed, 0);\n message.set(keystreamBytes, masterSeed.length);\n message.set(offsetBytes, masterSeed.length + 32);\n\n const u512Bytes = kmac256(new TextEncoder().encode(domainSeparator), message, {\n dkLen: KMAC_512_OUTPUT_LENGTH,\n personalization,\n });\n\n assertU512BeBytes(u512Bytes);\n const fieldElement = sampler(u512Bytes);\n assertBn254FieldElement(fieldElement);\n\n return fieldElement;\n };\n}\n\n// Re-export personalization string utilities so consumers can build the KMAC\n// customization (S) parameter without importing from a sub-path.\nexport * from \"./personalization\";\n","/**\n * Rescue Cipher Constants\n *\n * Hardcoded cryptographic parameters for the Rescue-XLIX block cipher and\n * Rescue-Prime hash function over the Curve25519 base field (p = 2^255 - 19).\n *\n * This module is the single source of truth for all numerical constants used\n * in the rescue-cipher implementation. All values are sourced from the C++\n * reference implementation (`arcium-rescue-cpp`) and cross-verified against\n * the `@arcium-hq/client` TypeScript implementation.\n *\n * ## Field\n *\n * All arithmetic operates modulo the Curve25519 base field prime:\n * ```\n * p = 2^255 - 19\n * = 57896044618658097711785492504343953926634992332820282019728792003956564819949\n * ```\n *\n * ## Cipher vs Hash Parameter Sets\n *\n * The Rescue-XLIX construction is instantiated with two different parameter sets\n * in this module:\n *\n * - Cipher mode: state width m=5, 10 rounds, targeting 128-bit security\n * - Hash mode: state width m=12, 8 rounds, targeting 256-bit security with\n * rate=7, capacity=5, digest=5 field elements\n *\n * @packageDocumentation\n * @module crypto/rescue-cipher/constants\n * @internal\n */\n\n/* =============================================================================\n * FIELD CONSTANTS\n * ============================================================================= */\n\n/**\n * The Curve25519 base field prime: p = 2^255 - 19.\n *\n * @remarks\n * This is the characteristic of the finite field GF(p) over which all\n * Rescue-XLIX arithmetic is performed. It was chosen by Bernstein for\n * Curve25519 because it admits fast modular reduction on 64-bit hardware\n * (only a subtraction of a small constant is needed after a shift).\n *\n * All field elements x satisfy: 0 <= x < p.\n *\n * @see {@link ALPHA} — the S-box forward exponent defined relative to this prime\n * @see {@link ALPHA_INVERSE} — the S-box inverse exponent: 5^(-1) mod (p-1)\n *\n * @public\n */\nexport const FIELD_PRIME =\n 57_896_044_618_658_097_711_785_492_504_343_953_926_634_992_332_820_282_019_728_792_003_956_564_819_949n;\n\n/**\n * S-box forward exponent: alpha = 5.\n *\n * @remarks\n * The Rescue-XLIX S-box is the power map `x -> x^alpha mod p`. For the S-box\n * to be a bijection on GF(p), `alpha` must be coprime to `p - 1`.\n *\n * For the Curve25519 field:\n * ```\n * p - 1 = 2^255 - 20 = 2^2 * 3 * 5 * ... (divisible by 2 and 3, but NOT by 5)\n * ```\n * Therefore alpha = 5 is the smallest prime that makes the S-box a permutation.\n *\n * This is the \"forward\" S-box used in odd rounds of the Rescue permutation\n * (or even rounds, depending on the `cipherMode` flag in the permutation).\n *\n * @see {@link ALPHA_INVERSE} — the inverse S-box exponent\n *\n * @public\n */\nexport const ALPHA = 5n;\n\n/**\n * S-box inverse exponent: alpha^(-1) mod (p - 1).\n *\n * @remarks\n * The inverse S-box applies the map `x -> x^ALPHA_INVERSE mod p`, which is\n * the compositional inverse of `x -> x^ALPHA mod p`.\n *\n * The value satisfies:\n * ```\n * ALPHA * ALPHA_INVERSE ≡ 1 (mod p - 1)\n * ```\n *\n * Precomputed from the C++ reference (`fp_impl.hpp`):\n * ```\n * ALPHA_INVERSE = 0x4cccccc...c1\n * = (2*(p-1)/5 + 1) / 5 [via Fermat's little theorem]\n * ```\n *\n * Applying the inverse S-box is significantly more expensive than the forward\n * S-box because the exponent is ~255 bits long, requiring a full modular\n * exponentiation. The cipher is designed so each round contains one application\n * of each S-box to balance security and performance.\n *\n * @see {@link ALPHA} — the forward S-box exponent\n *\n * @public\n */\nexport const ALPHA_INVERSE =\n 0x4c_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_cc_c1n;\n\n/**\n * Fast reduction constant: 2^256 mod p = 38.\n *\n * @remarks\n * When sampling field elements from the 48-byte (384-bit) SHAKE256 output,\n * the raw value is split as:\n * ```\n * raw = low256 + high128 * 2^256\n * ```\n * Since `2^256 mod p = 38`, this reduces to:\n * ```\n * raw mod p = (low256 + high128 * 38) mod p\n * ```\n * The extra 128 bits of SHAKE256 output beyond what is strictly needed ensure\n * that the distribution of sampled field elements is statistically\n * indistinguishable from uniform (statistical distance < 2^(-128)).\n *\n * @see {@link SAMPLE_BUFFER_BYTE_LENGTH} — the 48-byte sample window\n * @see `reduceToFieldElement` in `index.ts` — where this constant is applied\n *\n * @public\n */\nexport const REDUCTION_CONST = 38n;\n\n/* =============================================================================\n * CIPHER PARAMETERS\n * ============================================================================= */\n\n/**\n * Number of field elements per cipher block: m = 5.\n *\n * @remarks\n * The Rescue-XLIX cipher operates on vectors of `BLOCK_SIZE` field elements.\n * In CTR mode, each keystream block encrypts `BLOCK_SIZE` plaintext elements.\n * The cipher key and nonce-based counter are also represented as length-5 vectors.\n *\n * This value must equal the number of rows and columns in the cipher MDS matrix.\n *\n * @see {@link CIPHER_ROUND_COUNT} — rounds parameterized for this state width\n * @see {@link PRECOMPUTED_FIELD_INVERSES} — used to build the 5x5 MDS matrix\n *\n * @public\n */\nexport const BLOCK_SIZE = 5;\n\n/**\n * Nonce size in bytes: 128 bits.\n *\n * @remarks\n * In CTR mode, the nonce is combined with a block counter to form a unique\n * counter block per plaintext block. The 128-bit nonce must be unique for\n * every (key, nonce) pair. Reusing a nonce under the same key breaks\n * confidentiality.\n *\n * The nonce is deserialized as a little-endian bigint and placed as the first\n * element of the 5-element counter block `[nonce, blockIndex, 0, 0, 0]`.\n *\n * @see {@link SECRET_BYTES} — the corresponding shared secret byte length\n *\n * @public\n */\nexport const NONCE_BYTES = 16;\n\n/**\n * Shared secret size in bytes: 256 bits.\n *\n * @remarks\n * The shared secret is typically produced by an X25519 Diffie-Hellman key\n * exchange and is exactly 32 bytes. It is consumed by the key derivation\n * function (KDF) to produce the `BLOCK_SIZE`-element cipher key.\n *\n * The 32-byte secret is interpreted as a single little-endian field element\n * before being passed to the KDF hash function.\n *\n * @see {@link NONCE_BYTES} — nonce byte length for CTR mode\n * @see `deriveRescueCipherKey` in `index.ts` — KDF that consumes this secret\n *\n * @public\n */\nexport const SECRET_BYTES = 32;\n\n/**\n * Number of Rescue rounds for cipher mode: 10 rounds.\n *\n * @remarks\n * The Rescue-XLIX round count for a given state width `m` and S-box exponent\n * `alpha` is chosen to achieve a target security level. For `m = 5`,\n * `alpha = 5`, and 128-bit security, the recommendation from the Rescue\n * paper (Aly et al., 2019) is 10 rounds.\n *\n * Each round consists of two half-rounds:\n * - Half-round 1: forward S-box (x^5), MDS multiply, add round constant\n * - Half-round 2: inverse S-box (x^ALPHA_INVERSE), MDS multiply, add round constant\n *\n * The key schedule produces `2 * CIPHER_ROUND_COUNT + 1 = 21` round constant\n * vectors.\n *\n * @see {@link HASH_ROUND_COUNT} — rounds for hash mode (different state width)\n * @see {@link BLOCK_SIZE} — state width for cipher mode\n *\n * @public\n */\nexport const CIPHER_ROUND_COUNT = 10;\n\n/**\n * Field element byte length: 32 bytes.\n *\n * @remarks\n * Every field element in GF(p) where `p = 2^255 - 19` fits in 255 bits, which\n * requires exactly 32 bytes to store in binary. Elements are serialized in\n * little-endian byte order throughout the implementation.\n *\n * Ciphertext elements are serialized as 32-byte little-endian arrays before\n * being returned from the encrypt method, and deserialized back to bigints\n * in the decrypt method.\n *\n * @public\n */\nexport const FIELD_ELEMENT_BYTE_LENGTH = 32;\n\n/* =============================================================================\n * HASH PARAMETERS\n * ============================================================================= */\n\n/**\n * Sponge absorption rate: 7 field elements per permutation call.\n *\n * @remarks\n * In the sponge construction, the rate `r` determines how many field elements\n * of input are absorbed per permutation application. Larger rate means higher\n * throughput but lower security margin.\n *\n * The Rescue-Prime hash here uses the Merkle-Damgard-like sponge with:\n * ```\n * rate = 7, capacity = 5, state = 12\n * ```\n *\n * During the absorb phase, each message block is length 7, zero-padded to 12\n * before being added (constant-time) to the sponge state.\n *\n * @see {@link HASH_CAPACITY} — the hidden security margin portion of the state\n * @see {@link HASH_STATE_SIZE} — rate + capacity = 12\n *\n * @public\n */\nexport const HASH_RATE = 7;\n\n/**\n * Sponge capacity: 5 field elements.\n *\n * @remarks\n * The capacity `c` is the portion of the sponge state that is never directly\n * exposed to the input or output. It provides the security margin: the hash\n * function is collision-resistant up to roughly `2^(c * log2(p) / 2)` queries.\n *\n * With `c = 5` and `log2(p) ≈ 255`, the theoretical collision resistance is\n * approximately `2^(5 * 127.5) ≈ 2^637`, far exceeding 256-bit security.\n *\n * The practical security is governed instead by the cipher's round count and\n * the algebraic structure of the permutation, targeting 256-bit security.\n *\n * @see {@link HASH_RATE} — the publicly accessible portion of the state\n * @see {@link HASH_DIGEST_LENGTH} — the squeeze output length (= capacity)\n *\n * @public\n */\nexport const HASH_CAPACITY = 5;\n\n/**\n * Total sponge state size: rate + capacity = 12 field elements.\n *\n * @remarks\n * The full state of the Rescue-Prime hash permutation is a vector of\n * `HASH_STATE_SIZE = 12` field elements. The first `HASH_RATE = 7` elements\n * form the \"outer\" (rate) portion used for absorption and squeezing.\n * The last `HASH_CAPACITY = 5` elements form the \"inner\" (capacity) portion\n * which provides the security guarantee.\n *\n * The 12x12 MDS matrix used in hash mode is built from\n * `PRECOMPUTED_FIELD_INVERSES[0..22]` (all 23 precomputed values).\n *\n * @see {@link HASH_RATE} — outer portion of the state\n * @see {@link HASH_CAPACITY} — inner portion of the state\n * @see {@link PRECOMPUTED_FIELD_INVERSES} — used to construct the 12x12 MDS matrix\n *\n * @public\n */\nexport const HASH_STATE_SIZE = 12;\n\n/**\n * Hash digest length: 5 field elements (equals the sponge capacity).\n *\n * @remarks\n * After absorbing all padded message blocks, the squeeze phase extracts the\n * first `HASH_DIGEST_LENGTH = 5` elements of the sponge state as the digest.\n * This equals `HASH_CAPACITY`, which is the maximum number of elements that\n * can be squeezed without compromising the capacity-based security argument.\n *\n * Each field element is ~255 bits, so the total digest is approximately\n * `5 * 255 = 1275 bits`, providing ample collision resistance.\n *\n * @see {@link HASH_CAPACITY} — equals HASH_DIGEST_LENGTH\n *\n * @public\n */\nexport const HASH_DIGEST_LENGTH = 5;\n\n/**\n * Number of Rescue rounds for hash mode: 8 rounds.\n *\n * @remarks\n * For the Rescue-Prime hash with state width `m = 12` and `alpha = 5`,\n * 8 rounds provide 256-bit security per the Rescue paper's round-count formula.\n * This is fewer rounds than cipher mode (`CIPHER_ROUND_COUNT = 10`) because\n * the larger state width provides additional algebraic diffusion.\n *\n * The round constant generator produces `2 * HASH_ROUND_COUNT + 1 = 17`\n * column vectors of length `HASH_STATE_SIZE = 12`, the first being the\n * zero vector (prepended by convention).\n *\n * @see {@link CIPHER_ROUND_COUNT} — round count for cipher mode\n * @see {@link HASH_STATE_SIZE} — state width for hash mode\n *\n * @public\n */\nexport const HASH_ROUND_COUNT = 8;\n\n/* =============================================================================\n * SHAKE256 SEEDS\n * ============================================================================= */\n\n/**\n * SHAKE256 domain-separation seed for cipher round constant generation.\n *\n * @remarks\n * The cipher's round constants are generated by seeding a SHAKE256 XOF\n * (extendable output function) with this ASCII string, then streaming\n * `SAMPLE_BUFFER_BYTE_LENGTH`-byte chunks and reducing each to a field element.\n *\n * The phrase \"encrypt everything, compute anything\" was chosen as the\n * Arcium project motto and serves as the domain separator to ensure that\n * the cipher round constants are independent of those used in hash mode\n * (which uses a dynamically constructed seed string).\n *\n * This value is sourced from the C++ reference implementation and must not\n * be changed without regenerating all dependent test vectors.\n *\n * @see {@link SAMPLE_BUFFER_BYTE_LENGTH} — bytes consumed per field element sample\n * @see `sampleCipherRoundConstantVectors` in `index.ts` — where this seed is used\n *\n * @public\n */\nexport const SHAKE256_CIPHER_SEED = \"encrypt everything, compute anything\";\n\n/**\n * SHAKE256 output buffer size for sampling one field element: 48 bytes.\n *\n * @remarks\n * To sample a uniformly distributed field element from a bitstring:\n * 1. Read `SAMPLE_BUFFER_BYTE_LENGTH = 48` bytes (= 384 bits) from the XOF.\n * 2. Interpret as `low256` (bytes 0-31) and `high128` (bytes 32-47).\n * 3. Reduce: `element = (low256 + high128 * REDUCTION_CONST) mod p`.\n *\n * The formula follows from the fact that `2^256 mod p = 38 = REDUCTION_CONST`.\n * The extra 128 bits beyond the 255-bit field prime ensure the statistical\n * distance from uniform is bounded by `2^(-128)`.\n *\n * ```\n * 48 bytes = ceil(255 / 8) + 16 = 32 + 16\n * ```\n *\n * @see {@link REDUCTION_CONST} — the fast reduction constant `2^256 mod p = 38`\n * @see `reduceToFieldElement` in `index.ts` — the reduction function itself\n *\n * @public\n */\nexport const SAMPLE_BUFFER_BYTE_LENGTH = 48;\n\n/* =============================================================================\n * PRECOMPUTED FIELD INVERSES (mod p)\n *\n * 1/n mod p for n = 2..24, used to construct MDS Cauchy matrices.\n * Values sourced from C++ mds_precomputed.hpp in 4-limb LE format.\n * ============================================================================= */\n\n/**\n * Construct a 255-bit bigint from four little-endian 64-bit limbs.\n *\n * @remarks\n * The C++ reference implementation stores field elements as arrays of four\n * 64-bit unsigned integers in little-endian limb order. This helper converts\n * that representation into a JavaScript bigint:\n * ```\n * value = limb0 + limb1 * 2^64 + limb2 * 2^128 + limb3 * 2^192\n * ```\n *\n * This function is only used at module initialisation time to populate\n * `PRECOMPUTED_FIELD_INVERSES` and does not appear in any hot path.\n *\n * @param limb0 - Least significant 64-bit limb (bits 0-63)\n * @param limb1 - Second 64-bit limb (bits 64-127)\n * @param limb2 - Third 64-bit limb (bits 128-191)\n * @param limb3 - Most significant 64-bit limb (bits 192-255)\n * @returns The reconstructed bigint value\n *\n * @example\n * ```typescript\n * // Reconstruct 1/2 mod p\n * const halfModP = constructBigintFromLittleEndianLimbs(\n * 0xfffffffffffffff7n,\n * 0xffffffffffffffffn,\n * 0xffffffffffffffffn,\n * 0x3fffffffffffffffn,\n * );\n * // halfModP === (FIELD_PRIME + 1n) / 2n\n * ```\n *\n * @internal\n */\nfunction constructBigintFromLittleEndianLimbs(\n limb0: bigint,\n limb1: bigint,\n limb2: bigint,\n limb3: bigint,\n): bigint {\n return limb0 + (limb1 << 64n) + (limb2 << 128n) + (limb3 << 192n);\n}\n\n/**\n * Precomputed modular inverses: `1/n mod p` for n = 2 through 24.\n *\n * @remarks\n * The MDS (Maximum Distance Separable) matrices used in the Rescue permutation\n * are Cauchy matrices of the form:\n * ```\n * M[i][j] = 1 / (x_i + y_j) for distinct x, y sets\n * ```\n *\n * For the specific Cauchy matrices used here:\n * ```\n * M[i][j] = 1 / (i + j + 2) for i, j = 0, 1, ..., m-1\n * ```\n * where `m` is the state size (5 for cipher, 12 for hash). The denominator\n * ranges from 2 (i=j=0) up to `2*(m-1)+2 = 2m` (i=j=m-1).\n *\n * - Cipher MDS (5x5): requires inverses for denominators 2 through 10\n * (indices 0..8 of this array).\n * - Hash MDS (12x12): requires inverses for denominators 2 through 24\n * (indices 0..22, all 23 entries of this array).\n *\n * Array layout:\n * ```\n * index 0 → 1/2 mod p\n * index 1 → 1/3 mod p\n * index 2 → 1/4 mod p\n * ...\n * index 22 → 1/24 mod p\n * ```\n *\n * Values are sourced verbatim from the C++ reference implementation\n * (`mds_precomputed.hpp`) in four-64-bit-limb little-endian format and\n * reconstructed at module load time via `constructBigintFromLittleEndianLimbs`.\n *\n * @see {@link BLOCK_SIZE} — cipher state width (needs indices 0..8)\n * @see {@link HASH_STATE_SIZE} — hash state width (needs all 23 indices)\n * @see `buildCipherMdsMatrix` in `index.ts` — constructs the 5x5 Cauchy MDS matrix\n * @see `buildHashMdsMatrix` in `index.ts` — constructs the 12x12 Cauchy MDS matrix\n *\n * @public\n * @readonly\n */\nexport const PRECOMPUTED_FIELD_INVERSES: readonly bigint[] = [\n // 1/2\n constructBigintFromLittleEndianLimbs(\n 0xff_ff_ff_ff_ff_ff_ff_f7n,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0x3f_ff_ff_ff_ff_ff_ff_ffn,\n ),\n // 1/3\n constructBigintFromLittleEndianLimbs(\n 0x55_55_55_55_55_55_55_49n,\n 0x55_55_55_55_55_55_55_55n,\n 0x55_55_55_55_55_55_55_55n,\n 0x55_55_55_55_55_55_55_55n,\n ),\n // 1/4\n constructBigintFromLittleEndianLimbs(\n 0xff_ff_ff_ff_ff_ff_ff_f2n,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0x5f_ff_ff_ff_ff_ff_ff_ffn,\n ),\n // 1/5\n constructBigintFromLittleEndianLimbs(\n 0x99_99_99_99_99_99_99_96n,\n 0x99_99_99_99_99_99_99_99n,\n 0x99_99_99_99_99_99_99_99n,\n 0x19_99_99_99_99_99_99_99n,\n ),\n // 1/6\n constructBigintFromLittleEndianLimbs(\n 0xaa_aa_aa_aa_aa_aa_aa_9bn,\n 0xaa_aa_aa_aa_aa_aa_aa_aan,\n 0xaa_aa_aa_aa_aa_aa_aa_aan,\n 0x6a_aa_aa_aa_aa_aa_aa_aan,\n ),\n // 1/7\n constructBigintFromLittleEndianLimbs(\n 0x24_92_49_24_92_49_24_8dn,\n 0x92_49_24_92_49_24_92_49n,\n 0x49_24_92_49_24_92_49_24n,\n 0x24_92_49_24_92_49_24_92n,\n ),\n // 1/8\n constructBigintFromLittleEndianLimbs(\n 0xff_ff_ff_ff_ff_ff_ff_f9n,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0x2f_ff_ff_ff_ff_ff_ff_ffn,\n ),\n // 1/9\n constructBigintFromLittleEndianLimbs(\n 0xc7_1c_71_c7_1c_71_c7_12n,\n 0x1c_71_c7_1c_71_c7_1c_71n,\n 0x71_c7_1c_71_c7_1c_71_c7n,\n 0x47_1c_71_c7_1c_71_c7_1cn,\n ),\n // 1/10\n constructBigintFromLittleEndianLimbs(\n 0xcc_cc_cc_cc_cc_cc_cc_cbn,\n 0xcc_cc_cc_cc_cc_cc_cc_ccn,\n 0xcc_cc_cc_cc_cc_cc_cc_ccn,\n 0x0c_cc_cc_cc_cc_cc_cc_ccn,\n ),\n // 1/11\n constructBigintFromLittleEndianLimbs(\n 0xe8_ba_2e_8b_a2_e8_ba_26n,\n 0x2e_8b_a2_e8_ba_2e_8b_a2n,\n 0xa2_e8_ba_2e_8b_a2_e8_ban,\n 0x3a_2e_8b_a2_e8_ba_2e_8bn,\n ),\n // 1/12\n constructBigintFromLittleEndianLimbs(\n 0x55_55_55_55_55_55_55_44n,\n 0x55_55_55_55_55_55_55_55n,\n 0x55_55_55_55_55_55_55_55n,\n 0x75_55_55_55_55_55_55_55n,\n ),\n // 1/13\n constructBigintFromLittleEndianLimbs(\n 0x3b_13_b1_3b_13_b1_3b_0bn,\n 0x13_b1_3b_13_b1_3b_13_b1n,\n 0xb1_3b_13_b1_3b_13_b1_3bn,\n 0x3b_13_b1_3b_13_b1_3b_13n,\n ),\n // 1/14\n constructBigintFromLittleEndianLimbs(\n 0x92_49_24_92_49_24_92_3dn,\n 0x49_24_92_49_24_92_49_24n,\n 0x24_92_49_24_92_49_24_92n,\n 0x52_49_24_92_49_24_92_49n,\n ),\n // 1/15\n constructBigintFromLittleEndianLimbs(\n 0xdd_dd_dd_dd_dd_dd_dd_d0n,\n 0xdd_dd_dd_dd_dd_dd_dd_ddn,\n 0xdd_dd_dd_dd_dd_dd_dd_ddn,\n 0x5d_dd_dd_dd_dd_dd_dd_ddn,\n ),\n // 1/16\n constructBigintFromLittleEndianLimbs(\n 0xff_ff_ff_ff_ff_ff_ff_f3n,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0xff_ff_ff_ff_ff_ff_ff_ffn,\n 0x57_ff_ff_ff_ff_ff_ff_ffn,\n ),\n // 1/17\n constructBigintFromLittleEndianLimbs(\n 0x5a_5a_5a_5a_5a_5a_5a_4dn,\n 0x5a_5a_5a_5a_5a_5a_5a_5an,\n 0x5a_5a_5a_5a_5a_5a_5a_5an,\n 0x5a_5a_5a_5a_5a_5a_5a_5an,\n ),\n // 1/18\n constructBigintFromLittleEndianLimbs(\n 0xe3_8e_38_e3_8e_38_e3_89n,\n 0x8e_38_e3_8e_38_e3_8e_38n,\n 0x38_e3_8e_38_e3_8e_38_e3n,\n 0x23_8e_38_e3_8e_38_e3_8en,\n ),\n // 1/19\n constructBigintFromLittleEndianLimbs(\n 0x86_bc_a1_af_28_6b_ca_14n,\n 0xbc_a1_af_28_6b_ca_1a_f2n,\n 0xa1_af_28_6b_ca_1a_f2_86n,\n 0x2f_28_6b_ca_1a_f2_86_bcn,\n ),\n // 1/20\n constructBigintFromLittleEndianLimbs(\n 0x66_66_66_66_66_66_66_5cn,\n 0x66_66_66_66_66_66_66_66n,\n 0x66_66_66_66_66_66_66_66n,\n 0x46_66_66_66_66_66_66_66n,\n ),\n // 1/21\n constructBigintFromLittleEndianLimbs(\n 0x0c_30_c3_0c_30_c3_0c_2fn,\n 0x30_c3_0c_30_c3_0c_30_c3n,\n 0xc3_0c_30_c3_0c_30_c3_0cn,\n 0x0c_30_c3_0c_30_c3_0c_30n,\n ),\n // 1/22\n constructBigintFromLittleEndianLimbs(\n 0x74_5d_17_45_d1_74_5d_13n,\n 0x17_45_d1_74_5d_17_45_d1n,\n 0xd1_74_5d_17_45_d1_74_5dn,\n 0x1d_17_45_d1_74_5d_17_45n,\n ),\n // 1/23\n constructBigintFromLittleEndianLimbs(\n 0xe9_bd_37_a6_f4_de_9b_c3n,\n 0xa6_f4_de_9b_d3_7a_6f_4dn,\n 0x9b_d3_7a_6f_4d_e9_bd_37n,\n 0x6f_4d_e9_bd_37_a6_f4_den,\n ),\n // 1/24\n constructBigintFromLittleEndianLimbs(\n 0xaa_aa_aa_aa_aa_aa_aa_a2n,\n 0xaa_aa_aa_aa_aa_aa_aa_aan,\n 0xaa_aa_aa_aa_aa_aa_aa_aan,\n 0x3a_aa_aa_aa_aa_aa_aa_aan,\n ),\n];\n","/**\n * Rescue Cipher Implementation\n *\n * A standalone implementation of the Rescue-XLIX block cipher and Rescue-Prime\n * hash function over the Curve25519 base field (p = 2^255 - 19).\n *\n * This module replaces the `@arcium-hq/client` dependency with a focused\n * implementation that uses the SDK's own `math/curve25519` field arithmetic and\n * `@noble/hashes` for SHAKE256 XOF sampling. The public API is compatible with\n * the `RescueCipher` class from `@arcium-hq/client` so callers need not change.\n *\n * ## What is Rescue-XLIX?\n *\n * Rescue-XLIX (Aly et al., 2019) is a family of algebraic block ciphers and\n * sponge hash functions designed for efficiency inside arithmetic circuits\n * (ZK-SNARKs, STARKs, MPC). Unlike AES, which relies on binary operations,\n * Rescue operates purely in a prime field GF(p), making it cheap to prove\n * statements about encryptions inside a Groth16 or Plonk proof.\n *\n * Each round of the permutation alternates between:\n * - A forward power map (S-box): `x -> x^5 mod p`\n * - An inverse power map: `x -> x^ALPHA_INVERSE mod p`\n * - A linear MDS matrix multiply for diffusion\n * - Addition of round constants for key separation\n *\n * ## Module Structure\n *\n * This file is organised into labelled sections in top-down dependency order:\n *\n * - Type-safe access helpers — bounds-checked array/matrix element retrieval\n * - SHAKE256 XOF interface — typed wrapper for the extendable output hash\n * - Serialisation — bigint ↔ little-endian byte array conversion\n * - Field operations — FieldArithmetic adapter + singleton cache\n * - Matrix operations — field-arithmetic matrix multiply, add, exponentiate\n * - Constant-time helpers — bit-array arithmetic for side-channel-resistant CTR\n * - SHAKE256 field element sampling — uniform GF(p) sampling from XOF output\n * - MDS matrix construction — Cauchy MDS for cipher (5x5) and hash (12x12)\n * - Round constant generation — SHAKE256-derived constants with affine recurrence\n * - Rescue permutation — core permutation with intermediate state capture\n * - Rescue-Prime hash (sponge) — absorb/squeeze using the permutation\n * - Key derivation — NIST SP 800-56C Rev 2 KDF using Rescue-Prime hash\n * - CTR mode cipher — encrypt/decrypt field element arrays in counter mode\n * - Public API — `getFieldArithmetic`, `getRescuePrimeHashFunction`, `getRescueCipherInstance`\n *\n * ## Factory Pattern\n *\n * Follows the SDK convention of `create*` (internal, uncached) vs `get*`\n * (public or internal cached) functions with optional `*Deps` dependency\n * injection interfaces.\n *\n * @packageDocumentation\n * @module crypto/rescue-cipher\n * @internal\n */\n\nimport { shake256 } from \"@noble/hashes/sha3.js\";\nimport {\n curve25519ModuloAdd,\n curve25519ModuloSub,\n curve25519ModuloMul,\n curve25519ModuloInv,\n curve25519ModuloPow,\n} from \"../../math/curve25519/field-arithmetic\";\nimport { CURVE25519_FIELD_PRIME } from \"../../math/curve25519/types\";\nimport {\n FIELD_PRIME,\n ALPHA,\n ALPHA_INVERSE,\n REDUCTION_CONST,\n BLOCK_SIZE,\n NONCE_BYTES,\n SECRET_BYTES,\n CIPHER_ROUND_COUNT,\n HASH_ROUND_COUNT,\n FIELD_ELEMENT_BYTE_LENGTH,\n HASH_RATE,\n HASH_STATE_SIZE,\n HASH_DIGEST_LENGTH,\n HASH_CAPACITY,\n SHAKE256_CIPHER_SEED,\n SAMPLE_BUFFER_BYTE_LENGTH,\n PRECOMPUTED_FIELD_INVERSES,\n} from \"./constants\";\nimport type {\n FieldArithmetic,\n RescueCipherInstance,\n RescuePermuteFunction,\n RescuePrimeHashFunction,\n RescueCipherDeps,\n RescuePrimeHashDeps,\n} from \"./interfaces\";\n\nexport type {\n RescueCipherInstance,\n RescueCipherDeps,\n FieldArithmetic,\n RescuePrimeHashFunction,\n RescuePrimeHashDeps,\n} from \"./interfaces\";\n\n/* =============================================================================\n * TYPE-SAFE ACCESS HELPERS\n * ============================================================================= */\n\n/**\n * Type-safe array element access that throws on out-of-bounds indices.\n *\n * @remarks\n * TypeScript's standard array index signature returns `T | undefined`.\n * This helper narrows the return type to `T` by throwing an explicit error\n * when the index is out of range, eliminating the need for non-null assertions\n * (`!`) throughout the implementation.\n *\n * This function appears in every hot path, so its overhead should be considered\n * when evaluating performance-sensitive code paths.\n *\n * @typeParam T - The element type of the array\n * @param array - A readonly array from which to read\n * @param index - Zero-based index to access\n * @returns The element at `array[index]`\n *\n * @throws `Error` if `index` is out of bounds (i.e., `array[index] === undefined`)\n *\n * @example\n * ```typescript\n * const xs = [10n, 20n, 30n] as const;\n * const val = getElement(xs, 1); // 20n — type is bigint, not bigint | undefined\n * getElement(xs, 5); // throws: \"Array index 5 out of bounds (length: 3)\"\n * ```\n *\n * @internal\n */\nfunction getElement<T>(array: readonly T[], index: number): T {\n const element = array[index];\n if (element === undefined) {\n throw new Error(`Array index ${String(index)} out of bounds (length: ${String(array.length)})`);\n }\n return element;\n}\n\n/**\n * Type-safe matrix element access that throws on out-of-bounds row or column.\n *\n * @remarks\n * Delegates to `getElement` twice: once for the row array and once for the\n * column element within that row. Both bounds are checked, so an informative\n * error is thrown if either dimension is out of range.\n *\n * Matrices in this implementation are stored in row-major order as\n * `bigint[][]` where `matrix[rowIndex][colIndex]`.\n *\n * @param matrix - A readonly row-major 2D matrix\n * @param row - Zero-based row index\n * @param col - Zero-based column index\n * @returns The element at `matrix[row][col]`\n *\n * @throws `Error` if `row` or `col` is out of bounds\n *\n * @example\n * ```typescript\n * const m = [[1n, 2n], [3n, 4n]];\n * getMatrixElement(m, 1, 0); // 3n\n * getMatrixElement(m, 2, 0); // throws\n * ```\n *\n * @internal\n */\nfunction getMatrixElement(\n matrix: readonly (readonly bigint[])[],\n row: number,\n col: number,\n): bigint {\n const rowArray = getElement(matrix, row);\n return getElement(rowArray, col);\n}\n\n/* =============================================================================\n * SHAKE256 XOF INTERFACE\n *\n * Typed wrapper for the SHAKE256 XOF functionality from @noble/hashes.\n * The library does not export a public XOF type, so we define one here.\n * ============================================================================= */\n\n/**\n * A minimal interface for SHAKE256 operating in extendable output (XOF) mode.\n *\n * @remarks\n * `@noble/hashes` exposes a `.xof(n)` method at runtime on the SHAKE256 hasher\n * but does not include it in its public TypeScript type declarations. This\n * interface captures the XOF contract so the rest of the implementation can\n * call `.xof()` in a type-safe way after the runtime assertion in\n * `assertXofMode` succeeds.\n *\n * @see `assertXofMode` — the runtime type guard that narrows a hasher to this interface\n *\n * @internal\n */\ninterface Shake256ExtendableOutputHasher {\n /**\n * Feeds additional data into the SHAKE256 state.\n *\n * @param data - Raw bytes to absorb\n * @returns `this` for method chaining\n */\n update: (data: Uint8Array) => Shake256ExtendableOutputHasher;\n\n /**\n * Squeezes exactly `length` bytes from the XOF output stream.\n *\n * @remarks\n * Unlike a fixed-output hash, successive calls to `xof()` on the same\n * hasher advance a read cursor, producing non-overlapping output segments.\n * This property is exploited by `createShake256FieldElementSampler` to\n * stream field elements one at a time without re-seeding.\n *\n * @param length - Number of bytes to squeeze\n * @returns A `Uint8Array` of exactly `length` bytes\n */\n xof: (length: number) => Uint8Array;\n}\n\n/**\n * Runtime type assertion that a `shake256` hasher supports XOF output.\n *\n * @remarks\n * `@noble/hashes` attaches `.xof()` to the SHAKE family at runtime but does not\n * include it in the public TypeScript interface (which only declares `.digest()`).\n * This function performs an `\"xof\" in hasher` check and, if it passes, narrows\n * the type to `Shake256ExtendableOutputHasher` via TypeScript's `asserts` narrowing.\n *\n * If the check fails (e.g., after a library upgrade that changes this behaviour),\n * a descriptive error is thrown early so that callers do not encounter cryptic\n * undefined-property errors at field-sampling time.\n *\n * @param hasher - A freshly created `shake256` hasher instance\n *\n * @throws `Error` if the hasher does not expose a `.xof()` method\n *\n * @example\n * ```typescript\n * const h = shake256.create({ dkLen: 48 });\n * assertXofMode(h);\n * const bytes = h.xof(48); // now type-safe\n * ```\n *\n * @internal\n */\nfunction assertXofMode(\n hasher: ReturnType<typeof shake256.create>,\n): asserts hasher is ReturnType<typeof shake256.create> & Shake256ExtendableOutputHasher {\n if (!(\"xof\" in hasher)) {\n throw new Error(\"shake256 hasher does not support XOF mode\");\n }\n}\n\n/* =============================================================================\n * SERIALIZATION\n * ============================================================================= */\n\n/**\n * Serialises a `bigint` as a fixed-length little-endian byte array.\n *\n * @remarks\n * Iterates from the least significant byte to the most significant byte,\n * masking off one byte at a time with `0xff` and shifting right.\n *\n * If `value` has more significant bits than `lengthInBytes * 8`, the excess\n * high bits are silently truncated. Callers are responsible for ensuring the\n * value fits in the requested byte length.\n *\n * This function is used to serialise ciphertext field elements into 32-byte\n * `number[]` arrays for the `RescueCipherInstance.encrypt` return type, and\n * also to convert the nonce bigint back for key schedule inputs.\n *\n * @param value - The non-negative bigint to serialise\n * @param lengthInBytes - The exact byte length of the output array\n * @returns A `Uint8Array` of `lengthInBytes` bytes in little-endian order\n *\n * @example\n * ```typescript\n * serializeBigintToLittleEndianBytes(256n, 4);\n * // Uint8Array [0, 1, 0, 0] (256 = 0x100 in LE)\n *\n * serializeBigintToLittleEndianBytes(1n, 32);\n * // Uint8Array [1, 0, 0, ..., 0] (32 bytes, first byte = 1)\n * ```\n *\n * @internal\n */\nfunction serializeBigintToLittleEndianBytes(value: bigint, lengthInBytes: number): Uint8Array {\n const result = new Uint8Array(lengthInBytes);\n let remaining = value;\n for (let byteIndex = 0; byteIndex < lengthInBytes; byteIndex++) {\n result[byteIndex] = Number(remaining & 0xffn);\n remaining >>= 8n;\n }\n return result;\n}\n\n/**\n * Deserialises a little-endian byte array into a `bigint`.\n *\n * @remarks\n * Each byte at position `i` contributes `byte * 2^(8*i)` to the result.\n * The function uses JavaScript's built-in `BigInt()` constructor and bitwise\n * OR to accumulate the value without intermediate modular reduction.\n *\n * Used to convert:\n * - 16-byte nonces into bigints for the CTR counter block\n * - 32-byte shared secrets into field elements for the KDF input\n * - 32-byte ciphertext elements back into bigints during decryption\n * - 48-byte SHAKE256 samples into split `low256`/`high128` bigints for\n * field-element reduction\n *\n * @param bytes - A `Uint8Array` of bytes in little-endian order\n * @returns The reconstructed non-negative `bigint`\n *\n * @example\n * ```typescript\n * deserializeLittleEndianBytesToBigint(new Uint8Array([0, 1, 0, 0]));\n * // 256n (0x100)\n *\n * deserializeLittleEndianBytesToBigint(new Uint8Array([255, 255]));\n * // 65535n (0xFFFF)\n * ```\n *\n * @internal\n */\nfunction deserializeLittleEndianBytesToBigint(bytes: Uint8Array): bigint {\n let result = 0n;\n for (const [byteIndex, byte] of bytes.entries()) {\n result |= BigInt(byte) << (BigInt(byteIndex) * 8n);\n }\n return result;\n}\n\n/* =============================================================================\n * FIELD OPERATIONS\n * ============================================================================= */\n\n/**\n * Module-level singleton cache for the default `FieldArithmetic` adapter.\n *\n * @remarks\n * Lazily initialised on the first call to `getFieldArithmetic()`. Storing the\n * adapter as a module-level variable avoids re-creating the object on every\n * cipher or hash instantiation.\n *\n * @internal\n */\nlet cachedFieldArithmetic: FieldArithmetic | null = null;\n\n/**\n * Creates a new `FieldArithmetic` adapter wrapping the SDK's `math/curve25519`\n * module functions.\n *\n * @remarks\n * The adapter maps the generic `FieldArithmetic` interface to the\n * concrete curve25519 field operations exported from\n * `../../math/curve25519/field-arithmetic`. The `create` method performs a\n * double modulo to handle negative inputs correctly:\n * ```\n * create(v) = ((v % p) + p) % p\n * ```\n *\n * @returns A fresh `FieldArithmetic` object; not cached — callers should use\n * `getFieldArithmetic()` instead to get the cached singleton\n *\n * @example\n * ```typescript\n * const F = createFieldArithmeticAdapter();\n * F.add(F.ORDER - 1n, 1n); // 0n (wraps around)\n * F.mul(2n, F.inv(2n)); // 1n\n * ```\n *\n * @internal\n */\nfunction createFieldArithmeticAdapter(): FieldArithmetic {\n return {\n ORDER: CURVE25519_FIELD_PRIME,\n BYTES: 32,\n ZERO: 0n,\n ONE: 1n,\n create: (value: bigint) =>\n ((value % CURVE25519_FIELD_PRIME) + CURVE25519_FIELD_PRIME) % CURVE25519_FIELD_PRIME,\n add: curve25519ModuloAdd,\n sub: curve25519ModuloSub,\n mul: curve25519ModuloMul,\n inv: curve25519ModuloInv,\n pow: curve25519ModuloPow,\n is0: (a: bigint) => a === 0n,\n };\n}\n\n/**\n * Returns the singleton `FieldArithmetic` adapter for the Curve25519 base field.\n *\n * @remarks\n * On the first call, `createFieldArithmeticAdapter()` is invoked and the result\n * is stored in the module-level `cachedFieldArithmetic` variable. Subsequent\n * calls return the cached instance without any allocation.\n *\n * This function is exported so that callers (e.g., the key derivation function\n * injected via `RescueCipherDeps`) can retrieve the same field arithmetic\n * instance that the cipher and hash use internally.\n *\n * @returns The cached `FieldArithmetic` adapter operating over GF(2^255 - 19)\n *\n * @example\n * ```typescript\n * import { getFieldArithmetic } from \"./index\";\n *\n * const F = getFieldArithmetic();\n * const a = F.create(-1n); // FIELD_PRIME - 1n\n * const b = F.add(a, F.ONE); // 0n\n * const c = F.pow(2n, 10n); // 1024n\n * ```\n *\n * @public\n */\nexport function getFieldArithmetic(): FieldArithmetic {\n if (cachedFieldArithmetic !== null) {\n return cachedFieldArithmetic;\n }\n cachedFieldArithmetic = createFieldArithmeticAdapter();\n return cachedFieldArithmetic;\n}\n\n/* =============================================================================\n * MATRIX OPERATIONS\n *\n * Matrices are stored as bigint[][] where data[row][col].\n * Column vectors are data[row][0] (m rows, 1 column).\n * ============================================================================= */\n\n/**\n * Computes the product of two matrices using field arithmetic.\n *\n * @remarks\n * Implements the standard matrix multiplication algorithm:\n * ```\n * result[i][j] = sum_{k} (a[i][k] * b[k][j]) (all arithmetic mod p)\n * ```\n *\n * The caller is responsible for ensuring that the inner dimensions are\n * compatible: `matrixA[0].length === matrixB.length`. No dimension validation\n * is performed; a mismatch will cause `getElement` to throw an out-of-bounds error.\n *\n * This is the most computationally expensive operation in the Rescue permutation:\n * for an `m x m` MDS matrix, each permutation call requires `m^2` field\n * multiplications per half-round.\n *\n * @param fieldArithmetic - Field arithmetic to use for element-wise operations\n * @param matrixA - Left operand, `r x k` matrix stored as `bigint[][]`\n * @param matrixB - Right operand, `k x c` matrix stored as `bigint[][]`\n * @returns A new `r x c` matrix stored as `bigint[][]`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const identity = [[1n, 0n], [0n, 1n]];\n * const m = [[2n, 3n], [4n, 5n]];\n * multiplyMatrices(F, identity, m); // [[2n, 3n], [4n, 5n]]\n * ```\n *\n * @internal\n */\nfunction multiplyMatrices(\n fieldArithmetic: FieldArithmetic,\n matrixA: bigint[][],\n matrixB: bigint[][],\n): bigint[][] {\n const rowCount = matrixA.length;\n const columnCount = getElement(matrixB, 0).length;\n const innerDimension = getElement(matrixA, 0).length;\n const result: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row: bigint[] = [];\n for (let colIndex = 0; colIndex < columnCount; colIndex++) {\n let sum = 0n;\n for (let innerIndex = 0; innerIndex < innerDimension; innerIndex++) {\n sum = fieldArithmetic.add(\n sum,\n fieldArithmetic.mul(\n getMatrixElement(matrixA, rowIndex, innerIndex),\n getMatrixElement(matrixB, innerIndex, colIndex),\n ),\n );\n }\n row.push(sum);\n }\n result.push(row);\n }\n return result;\n}\n\n/**\n * Computes the element-wise sum of two matrices using field arithmetic.\n *\n * @remarks\n * Both matrices must have identical dimensions. Each element of the result\n * satisfies:\n * ```\n * result[i][j] = (a[i][j] + b[i][j]) mod p\n * ```\n *\n * Used during the Rescue permutation to add round constant vectors to the\n * current state (where the state and round constants are both `m x 1` column\n * vectors).\n *\n * @param fieldArithmetic - Field arithmetic for element-wise addition\n * @param matrixA - First operand matrix\n * @param matrixB - Second operand matrix (same dimensions as `matrixA`)\n * @returns A new matrix with each element being the field sum of the inputs\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * addMatrices(F, [[1n], [2n]], [[3n], [4n]]); // [[4n], [6n]]\n * ```\n *\n * @internal\n */\nfunction addMatrices(\n fieldArithmetic: FieldArithmetic,\n matrixA: bigint[][],\n matrixB: bigint[][],\n): bigint[][] {\n return matrixA.map((row, rowIndex) =>\n row.map((value, colIndex) =>\n fieldArithmetic.add(value, getMatrixElement(matrixB, rowIndex, colIndex)),\n ),\n );\n}\n\n/**\n * Element-wise matrix addition using constant-time bigint arithmetic.\n *\n * @remarks\n * Unlike `addMatrices` (which delegates to `fieldArithmetic.add`), this variant\n * performs the modular reduction using the constant-time bit-array helpers\n * (`constantTimeAdd`, `constantTimeLessThan`, `constantTimeSelect`,\n * `constantTimeSubtract`) to resist timing side-channel attacks.\n *\n * The reduction computes:\n * ```\n * s = a + b (constant-time addition, may overflow p)\n * r = s < p ? s : s - p (constant-time conditional subtraction)\n * ```\n *\n * Used during the sponge absorption phase (where the message block is XOR'd\n * into the sponge state before each permutation call) to prevent leaking\n * information about the sponge state through timing differences.\n *\n * @param matrixA - First operand matrix of field elements\n * @param matrixB - Second operand matrix of field elements (same dimensions)\n * @param binarySize - Bit width for the constant-time arithmetic (from `computeBinarySize`)\n * @returns A new matrix with each element being `(a[i][j] + b[i][j]) mod p`,\n * computed in constant time\n *\n * @see `constantTimeAdd` — the underlying constant-time addition primitive\n * @see `computeBinarySize` — computes the required `binarySize` from the field order\n *\n * @internal\n */\nfunction addMatricesConstantTime(\n matrixA: bigint[][],\n matrixB: bigint[][],\n binarySize: bigint,\n): bigint[][] {\n return matrixA.map((row, rowIndex) =>\n row.map((value, colIndex) => {\n const sum = constantTimeAdd(value, getMatrixElement(matrixB, rowIndex, colIndex), binarySize);\n return constantTimeSelect(\n constantTimeLessThan(sum, FIELD_PRIME, binarySize),\n sum,\n constantTimeSubtract(sum, FIELD_PRIME, binarySize),\n binarySize,\n );\n }),\n );\n}\n\n/**\n * Applies element-wise modular exponentiation to every element of a matrix.\n *\n * @remarks\n * Returns a new matrix where each element `e` is replaced with\n * `fieldArithmetic.pow(e, exponent)`. This implements the S-box layer of the\n * Rescue permutation: raising each state element to the power `ALPHA` (forward\n * S-box) or `ALPHA_INVERSE` (inverse S-box).\n *\n * @param fieldArithmetic - Field arithmetic providing the `pow` operation\n * @param matrix - Input matrix of field elements\n * @param exponent - The exponent to raise each element to (e.g., `ALPHA` or `ALPHA_INVERSE`)\n * @returns A new matrix with each element raised to `exponent` mod p\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * // Apply the forward S-box (x^5) to a 1-element matrix\n * exponentiateMatrixElements(F, [[2n]], 5n); // [[32n]] (2^5 = 32)\n * ```\n *\n * @internal\n */\nfunction exponentiateMatrixElements(\n fieldArithmetic: FieldArithmetic,\n matrix: bigint[][],\n exponent: bigint,\n): bigint[][] {\n return matrix.map((row) => row.map((value) => fieldArithmetic.pow(value, exponent)));\n}\n\n/**\n * Converts a flat array of field elements into a column vector (m x 1 matrix).\n *\n * @remarks\n * In this implementation, the Rescue permutation operates on column vectors\n * represented as `bigint[][]` (a matrix with one column). This function wraps\n * a flat `bigint[]` of length `m` into a `m x 1` matrix where each row\n * contains a single element: `[[v0], [v1], ..., [vm-1]]`.\n *\n * This representation is necessary for the matrix multiplication in\n * `multiplyMatrices` to work correctly.\n *\n * @param array - Flat array of field elements to convert\n * @returns A column vector (each row is a length-1 array)\n *\n * @example\n * ```typescript\n * toColumnVector([1n, 2n, 3n]); // [[1n], [2n], [3n]]\n * ```\n *\n * @see `fromColumnVector` — the inverse operation\n *\n * @internal\n */\nfunction toColumnVector(array: bigint[]): bigint[][] {\n return array.map((value) => [value]);\n}\n\n/**\n * Extracts a flat array of field elements from an m x 1 column vector matrix.\n *\n * @remarks\n * This is the inverse of `toColumnVector`. After the Rescue permutation\n * produces its output as a column vector (m x 1 matrix), this function\n * flattens it back to a plain `bigint[]`.\n *\n * @param matrix - A column vector (each row must have exactly one element)\n * @returns Flat array of field elements extracted from column 0 of each row\n *\n * @throws `Error` (via `getElement`) if any row has zero elements\n *\n * @example\n * ```typescript\n * fromColumnVector([[1n], [2n], [3n]]); // [1n, 2n, 3n]\n * ```\n *\n * @see `toColumnVector` — the inverse operation\n *\n * @internal\n */\nfunction fromColumnVector(matrix: bigint[][]): bigint[] {\n return matrix.map((row) => getElement(row, 0));\n}\n\n/**\n * Computes the determinant of a square matrix over the field using Laplace cofactor expansion.\n *\n * @remarks\n * Uses recursive cofactor expansion along the top row. Time complexity is\n * `O(m!)` in the general case, but this function is only called once per\n * cipher instantiation (to verify that the round constant matrix is invertible)\n * and only on small matrices (`m = BLOCK_SIZE = 5`), so the exponential\n * growth is acceptable.\n *\n * The base case for a 1x1 matrix returns the single element. Cofactors for\n * even columns are positive, odd columns are negated via `sub(0, element)`.\n *\n * @param fieldArithmetic - Field arithmetic for all intermediate operations\n * @param matrix - Square matrix of field elements (any dimension ≥ 1)\n * @returns The determinant as a field element in `[0, ORDER)`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * // det([[1,2],[3,4]]) = 1*4 - 2*3 = 4 - 6 = -2 ≡ p-2 (mod p)\n * computeMatrixDeterminant(F, [[1n,2n],[3n,4n]]); // FIELD_PRIME - 2n\n * // det([[0,0],[0,0]]) = 0 → matrix is singular\n * computeMatrixDeterminant(F, [[0n,0n],[0n,0n]]); // 0n\n * ```\n *\n * @internal\n */\nfunction computeMatrixDeterminant(fieldArithmetic: FieldArithmetic, matrix: bigint[][]): bigint {\n const dimension = matrix.length;\n if (dimension === 1) {\n return getMatrixElement(matrix, 0, 0);\n }\n let determinant = 0n;\n for (let colIndex = 0; colIndex < dimension; colIndex++) {\n const minor: bigint[][] = [];\n for (let rowIndex = 1; rowIndex < dimension; rowIndex++) {\n const minorRow: bigint[] = [];\n for (let innerCol = 0; innerCol < dimension; innerCol++) {\n if (innerCol !== colIndex) {\n minorRow.push(getMatrixElement(matrix, rowIndex, innerCol));\n }\n }\n minor.push(minorRow);\n }\n const cofactor =\n colIndex % 2 === 0\n ? getMatrixElement(matrix, 0, colIndex)\n : fieldArithmetic.sub(0n, getMatrixElement(matrix, 0, colIndex));\n determinant = fieldArithmetic.add(\n determinant,\n fieldArithmetic.mul(cofactor, computeMatrixDeterminant(fieldArithmetic, minor)),\n );\n }\n return determinant;\n}\n\n/* =============================================================================\n * CONSTANT-TIME HELPERS\n *\n * 2's complement bit-array arithmetic for side-channel resistance in CTR mode.\n * Ported from @arcium-hq/client's ctAdd/ctSub/ctSelect.\n * ============================================================================= */\n\n/**\n * Converts a bigint to a little-endian boolean bit array of a fixed width.\n *\n * @remarks\n * Bit `i` of the result is `true` if bit `i` of `value` is set. The array has\n * exactly `binarySize` entries. Bits beyond `value`'s significant bits are\n * always `false`.\n *\n * This is the entry point for the constant-time arithmetic pipeline: all\n * subsequent operations consume and produce boolean arrays to avoid leaking\n * timing information through data-dependent branch prediction.\n *\n * @param value - The non-negative bigint to convert\n * @param binarySize - Number of bits in the output (must be ≥ `value.bit_length()`)\n * @returns A boolean array where index `i` corresponds to bit `2^i` of `value`\n *\n * @example\n * ```typescript\n * toBinaryLittleEndian(5n, 4n); // [true, false, true, false] (5 = 0b101)\n * ```\n *\n * @internal\n */\nfunction toBinaryLittleEndian(value: bigint, binarySize: bigint): boolean[] {\n const result: boolean[] = [];\n for (let bitIndex = 0n; bitIndex < binarySize; ++bitIndex) {\n result.push(((value >> bitIndex) & 1n) === 1n);\n }\n return result;\n}\n\n/**\n * Converts a little-endian boolean bit array (in 2's complement) back to a bigint.\n *\n * @remarks\n * Interprets the input as a 2's complement signed integer where the last bit\n * is the sign bit. The conversion is:\n * ```\n * value = (sum of bits[i] * 2^i for i = 0..n-2)\n * - (bits[n-1] * 2^(n-1)) (sign bit negates)\n * ```\n *\n * This 2's complement interpretation is essential for the constant-time\n * subtraction (`constantTimeSubtract`) to correctly represent negative\n * intermediate results, which are then detected by `constantTimeSignBit`.\n *\n * @param binaryBits - Boolean array in little-endian bit order (2's complement)\n * @returns The signed `bigint` value represented by the bits\n *\n * @example\n * ```typescript\n * // Positive: 0b0101 = 5\n * fromBinaryLittleEndian([true, false, true, false]); // 5n\n * // Negative (2's complement): 0b1111 = -1 in 4-bit 2's complement\n * fromBinaryLittleEndian([true, true, true, true]); // -1n\n * ```\n *\n * @internal\n */\nfunction fromBinaryLittleEndian(binaryBits: boolean[]): bigint {\n let result = 0n;\n for (let bitIndex = 0; bitIndex < binaryBits.length - 1; ++bitIndex) {\n result |= BigInt(getElement(binaryBits, bitIndex)) << BigInt(bitIndex);\n }\n return (\n result -\n (BigInt(getElement(binaryBits, binaryBits.length - 1)) << BigInt(binaryBits.length - 1))\n );\n}\n\n/**\n * A constant-time full-adder operating on two boolean bit arrays.\n *\n * @remarks\n * Computes `bitsX + bitsY + carryIn` bit-by-bit using XOR and AND gates that\n * have data-independent control flow. This is the fundamental building block\n * for all constant-time arithmetic in this module.\n *\n * The implementation uses only boolean operations (`!==`, `&&`), which are\n * branch-free on most JavaScript engines when compiled to native code.\n * The carry propagation at each step follows:\n * ```\n * sum[i] = x[i] XOR y[i] XOR carry\n * carry' = (x[i] AND y[i]) OR (carry AND (x[i] XOR y[i]))\n * ```\n *\n * @param bitsX - First operand as a little-endian boolean bit array\n * @param bitsY - Second operand as a little-endian boolean bit array (same length as `bitsX`)\n * @param carryIn - Initial carry bit (true = 1, false = 0)\n * @param binarySize - Number of bits to process (should equal `bitsX.length`)\n * @returns The sum as a little-endian boolean bit array\n *\n * @example\n * ```typescript\n * // 3 (011) + 1 (001) = 4 (100) in 4 bits\n * const bitsA = [true, true, false, false]; // 3 in LE\n * const bitsB = [true, false, false, false]; // 1 in LE\n * binaryAdder(bitsA, bitsB, false, 4n);\n * // [false, false, true, false] → 4\n * ```\n *\n * @internal\n */\nfunction binaryAdder(\n bitsX: boolean[],\n bitsY: boolean[],\n carryIn: boolean,\n binarySize: bigint,\n): boolean[] {\n const result: boolean[] = [];\n let carry = carryIn;\n for (let bitIndex = 0; bitIndex < Number(binarySize); ++bitIndex) {\n const bitY = getElement(bitsY, bitIndex);\n const bitX = getElement(bitsX, bitIndex);\n const yXorCarry = bitY !== carry;\n result.push(bitX !== yXorCarry);\n carry = bitY !== (yXorCarry && bitX !== bitY);\n }\n return result;\n}\n\n/**\n * Adds two field-range bigints using constant-time bit-array arithmetic.\n *\n * @remarks\n * Converts both operands to `binarySize`-wide boolean arrays, feeds them\n * through `binaryAdder`, and converts the result back to a bigint. The\n * returned value may be larger than `FIELD_PRIME` if the sum overflows; the\n * caller is responsible for applying the conditional subtraction via\n * `constantTimeSelect`.\n *\n * @param valueX - First addend; must be a non-negative bigint < 2^(binarySize-1)\n * @param valueY - Second addend; must be a non-negative bigint < 2^(binarySize-1)\n * @param binarySize - Bit width of the arithmetic (from `computeBinarySize`)\n * @returns `valueX + valueY` as a signed 2's complement bigint at `binarySize` bits\n *\n * @example\n * ```typescript\n * const binarySize = computeBinarySize(FIELD_PRIME - 1n);\n * constantTimeAdd(10n, 20n, binarySize); // 30n\n * ```\n *\n * @internal\n */\nfunction constantTimeAdd(valueX: bigint, valueY: bigint, binarySize: bigint): bigint {\n const resultBits = binaryAdder(\n toBinaryLittleEndian(valueX, binarySize),\n toBinaryLittleEndian(valueY, binarySize),\n false,\n binarySize,\n );\n return fromBinaryLittleEndian(resultBits);\n}\n\n/**\n * Subtracts one bigint from another using constant-time bit-array arithmetic.\n *\n * @remarks\n * Implements subtraction via the 2's complement trick:\n * ```\n * x - y = x + (~y) + 1\n * ```\n * where `~y` means bitwise NOT (invert all bits of the boolean array). The\n * carry-in of 1 to `binaryAdder` provides the `+1`.\n *\n * The returned value is the 2's complement representation of `x - y` at\n * `binarySize` bits. If the result is negative (i.e., `x < y`), the sign bit\n * (bit `binarySize`) will be set, which is detected by `constantTimeSignBit`.\n *\n * @param valueX - Minuend; must be a non-negative bigint < 2^(binarySize-1)\n * @param valueY - Subtrahend; must be a non-negative bigint < 2^(binarySize-1)\n * @param binarySize - Bit width of the arithmetic (from `computeBinarySize`)\n * @returns `valueX - valueY` as a signed 2's complement bigint at `binarySize` bits\n *\n * @example\n * ```typescript\n * const binarySize = computeBinarySize(FIELD_PRIME - 1n);\n * constantTimeSubtract(10n, 3n, binarySize); // 7n\n * constantTimeSubtract(3n, 10n, binarySize); // negative (sign bit set)\n * ```\n *\n * @internal\n */\nfunction constantTimeSubtract(valueX: bigint, valueY: bigint, binarySize: bigint): bigint {\n const bitsY = toBinaryLittleEndian(valueY, binarySize);\n const invertedBitsY = bitsY.map((bit) => !bit);\n const resultBits = binaryAdder(\n toBinaryLittleEndian(valueX, binarySize),\n invertedBitsY,\n true,\n binarySize,\n );\n return fromBinaryLittleEndian(resultBits);\n}\n\n/**\n * Extracts the 2's complement sign bit from a constant-time arithmetic result.\n *\n * @remarks\n * In a `binarySize`-bit 2's complement representation, the most significant bit\n * at position `binarySize` (the `(binarySize+1)`-th bit) determines the sign.\n * This function checks whether that bit is set, indicating a negative value\n * (i.e., the result of a constant-time subtraction underflowed).\n *\n * Used by `constantTimeLessThan` to detect `x < y` after computing `x - y`.\n *\n * @param value - A signed 2's complement bigint at `binarySize` bits\n * @param binarySize - The bit width used in the constant-time arithmetic\n * @returns `true` if `value` is negative (sign bit set), `false` otherwise\n *\n * @example\n * ```typescript\n * const binarySize = computeBinarySize(FIELD_PRIME - 1n);\n * const diff = constantTimeSubtract(3n, 10n, binarySize); // negative\n * constantTimeSignBit(diff, binarySize); // true\n * ```\n *\n * @internal\n */\nfunction constantTimeSignBit(value: bigint, binarySize: bigint): boolean {\n return ((value >> binarySize) & 1n) === 1n;\n}\n\n/**\n * Tests whether `valueX < valueY` using constant-time bit-array arithmetic.\n *\n * @remarks\n * Computes `x - y` via `constantTimeSubtract` and then checks the sign bit\n * via `constantTimeSignBit`. If the subtraction underflows (sign bit set),\n * then `x < y`.\n *\n * The entire comparison runs in constant time, independent of the actual\n * values of `x` and `y`. This is important in the CTR encryption loop where\n * the compared values may be sensitive (plaintext-derived).\n *\n * @param valueX - Left operand\n * @param valueY - Right operand\n * @param binarySize - Bit width from `computeBinarySize`\n * @returns `true` if `valueX < valueY`, `false` otherwise\n *\n * @example\n * ```typescript\n * const binarySize = computeBinarySize(FIELD_PRIME - 1n);\n * constantTimeLessThan(3n, 10n, binarySize); // true\n * constantTimeLessThan(10n, 3n, binarySize); // false\n * ```\n *\n * @internal\n */\nfunction constantTimeLessThan(valueX: bigint, valueY: bigint, binarySize: bigint): boolean {\n return constantTimeSignBit(constantTimeSubtract(valueX, valueY, binarySize), binarySize);\n}\n\n/**\n * Selects between two bigints based on a boolean condition, in constant time.\n *\n * @remarks\n * Implements the constant-time conditional move (`cmov`) pattern:\n * ```\n * result = ifFalse + condition * (ifTrue - ifFalse)\n * ```\n * where the multiplication by `BigInt(condition)` (0 or 1) and the addition\n * are both performed via the constant-time bit-array helpers. The result\n * equals `valueIfTrue` when `condition` is `true` and `valueIfFalse`\n * when `condition` is `false`, without any data-dependent branching.\n *\n * @param condition - Boolean selector (true → return `valueIfTrue`)\n * @param valueIfTrue - Value returned when `condition` is `true`\n * @param valueIfFalse - Value returned when `condition` is `false`\n * @param binarySize - Bit width from `computeBinarySize`\n * @returns `valueIfTrue` if `condition`, otherwise `valueIfFalse`\n *\n * @example\n * ```typescript\n * const binarySize = computeBinarySize(FIELD_PRIME - 1n);\n * constantTimeSelect(true, 42n, 99n, binarySize); // 42n\n * constantTimeSelect(false, 42n, 99n, binarySize); // 99n\n * ```\n *\n * @internal\n */\nfunction constantTimeSelect(\n condition: boolean,\n valueIfTrue: bigint,\n valueIfFalse: bigint,\n binarySize: bigint,\n): bigint {\n return constantTimeAdd(\n valueIfFalse,\n BigInt(condition) * constantTimeSubtract(valueIfTrue, valueIfFalse, binarySize),\n binarySize,\n );\n}\n\n/**\n * Computes the required bit width for constant-time arithmetic on values up to `maxValue`.\n *\n * @remarks\n * Adds 3 bits of headroom above `floor(log2(maxValue))` to accommodate:\n * - 1 bit for the 2's complement sign in subtraction results\n * - 2 bits for overflow in intermediate additions (sum of two field elements\n * can be at most `2*p - 2 < 2^256`)\n *\n * For the Curve25519 field where `maxValue = p - 1`:\n * ```\n * binarySize = floor(log2(p-1)) + 3 = 254 + 3 = 257\n * ```\n *\n * @param maxValue - The maximum value that will appear as an operand in\n * constant-time arithmetic (typically `fieldArithmetic.ORDER - 1n`)\n * @returns The bit width to use for all constant-time operations\n *\n * @example\n * ```typescript\n * computeBinarySize(FIELD_PRIME - 1n); // 257n\n * computeBinarySize(255n); // 10n (floor(log2(255)) + 3 = 7 + 3)\n * ```\n *\n * @internal\n */\nfunction computeBinarySize(maxValue: bigint): bigint {\n return BigInt(Math.floor(Math.log2(Number(maxValue)))) + 3n;\n}\n\n/* =============================================================================\n * SHAKE256 FIELD ELEMENT SAMPLING\n * ============================================================================= */\n\n/**\n * Creates a stateful SHAKE256 XOF sampler that yields uniformly distributed\n * field elements on each invocation.\n *\n * @remarks\n * Seeds a SHAKE256 XOF with the provided ASCII `seed` string. Each call to the\n * returned function reads `SAMPLE_BUFFER_BYTE_LENGTH = 48` bytes from the XOF\n * output stream and reduces them to a field element via `reduceToFieldElement`.\n *\n * Because SHAKE256 is an XOF, successive calls to the returned function advance\n * the stream cursor, producing non-overlapping 48-byte windows. This allows\n * arbitrarily many field elements to be sampled from a single seeded instance\n * without re-hashing.\n *\n * The `assertXofMode` guard ensures that the `@noble/hashes` SHAKE256 instance\n * exposes `.xof()` at runtime before sampling begins.\n *\n * @param seed - ASCII domain-separation string used to initialise the XOF\n * @param fieldArithmetic - Field arithmetic for the `reduceToFieldElement` call\n * @returns A zero-argument function that produces one GF(p) element per call\n *\n * @example\n * ```typescript\n * const sample = createShake256FieldElementSampler(\"my-seed\", getFieldArithmetic());\n * const e1 = sample(); // first field element\n * const e2 = sample(); // second (independent) field element\n * ```\n *\n * @see `reduceToFieldElement` — the 48-byte-to-field-element reduction\n * @see {@link SHAKE256_CIPHER_SEED} — the seed used for cipher round constants\n *\n * @internal\n */\nfunction createShake256FieldElementSampler(\n seed: string,\n fieldArithmetic: FieldArithmetic,\n): () => bigint {\n const encoder = new TextEncoder();\n const hasher = shake256.create({ dkLen: SAMPLE_BUFFER_BYTE_LENGTH });\n hasher.update(encoder.encode(seed));\n\n assertXofMode(hasher);\n const xofHasher: Shake256ExtendableOutputHasher = hasher;\n\n return (): bigint => {\n const randomBytes = xofHasher.xof(SAMPLE_BUFFER_BYTE_LENGTH);\n return reduceToFieldElement(randomBytes, fieldArithmetic);\n };\n}\n\n/**\n * Reduces a 48-byte (384-bit) SHAKE256 sample to a field element in GF(p).\n *\n * @remarks\n * The reduction uses the Curve25519 fast-reduction identity `2^256 ≡ 38 (mod p)`:\n *\n * 1. Read `low256` from bytes 0..31 (little-endian bigint, 256 bits).\n * 2. Read `high128` from bytes 32..47 (little-endian bigint, 128 bits).\n * 3. Compute `element = (low256 + high128 * 38) mod p` via `fieldArithmetic.create`.\n *\n * The extra 128 bits (beyond the 255-bit field prime) ensure that the\n * statistical distance of the output distribution from uniform GF(p) is at\n * most `2^(-128)`, which is negligible for 128-bit security targets.\n *\n * @param bytes - A `Uint8Array` of exactly `SAMPLE_BUFFER_BYTE_LENGTH = 48` bytes\n * @param fieldArithmetic - Field arithmetic providing the `create` reduction method\n * @returns A uniformly distributed field element in `[0, ORDER)`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const sample = new Uint8Array(48).fill(0xff);\n * const elem = reduceToFieldElement(sample, F);\n * // elem is a valid field element: 0 <= elem < FIELD_PRIME\n * ```\n *\n * @see {@link REDUCTION_CONST} — the constant `2^256 mod p = 38`\n * @see {@link SAMPLE_BUFFER_BYTE_LENGTH} — the 48-byte sample window size\n *\n * @internal\n */\nfunction reduceToFieldElement(bytes: Uint8Array, fieldArithmetic: FieldArithmetic): bigint {\n const lowBits = deserializeLittleEndianBytesToBigint(bytes.subarray(0, 32));\n const highBits = deserializeLittleEndianBytesToBigint(bytes.subarray(32, 48));\n return fieldArithmetic.create(lowBits + highBits * REDUCTION_CONST);\n}\n\n/* =============================================================================\n * MDS MATRIX CONSTRUCTION\n * ============================================================================= */\n\n/**\n * Module-level cache for the 5x5 cipher MDS matrix.\n *\n * @remarks\n * Lazily populated by `buildCipherMdsMatrix()` on first use. The matrix is\n * independent of any key or message, so it is safe to cache as a module\n * singleton.\n *\n * @internal\n */\nlet cachedCipherMdsMatrix: bigint[][] | null = null;\n\n/**\n * Module-level cache for the 12x12 hash MDS matrix.\n *\n * @remarks\n * Lazily populated by `buildHashMdsMatrix()` on first use.\n *\n * @internal\n */\nlet cachedHashMdsMatrix: bigint[][] | null = null;\n\n/**\n * Builds (and caches) the 5x5 Cauchy MDS matrix for cipher mode.\n *\n * @remarks\n * The Maximum Distance Separable (MDS) matrix is a key component of the\n * Rescue permutation's linear layer. It ensures that any non-zero difference\n * in the input to the linear layer results in at least `m + 1 = 6` non-zero\n * differences in the concatenation of input and output (the branch number).\n *\n * The matrix is defined as a Cauchy matrix:\n * ```\n * M[i][j] = 1 / (i + j + 2) for i, j = 0..4\n * ```\n * This maps to `PRECOMPUTED_FIELD_INVERSES[i + j]` because:\n * ```\n * 1 / (i + j + 2) → PRECOMPUTED_FIELD_INVERSES[(i + j + 2) - 2] = index i + j\n * ```\n *\n * The Cauchy structure guarantees the MDS property as long as all\n * `(i + j + 2)` are distinct and non-zero in GF(p), which holds trivially\n * since 2 through 10 are all much smaller than p.\n *\n * @returns The cached 5x5 MDS matrix as a `bigint[][]`\n *\n * @example\n * ```typescript\n * const mds = buildCipherMdsMatrix();\n * // mds[0][0] = 1/2 mod p, mds[0][1] = 1/3 mod p, ..., mds[4][4] = 1/10 mod p\n * ```\n *\n * @see {@link PRECOMPUTED_FIELD_INVERSES} — the precomputed inverse table\n * @see {@link BLOCK_SIZE} — the cipher state width (5)\n *\n * @internal\n */\nfunction buildCipherMdsMatrix(): bigint[][] {\n if (cachedCipherMdsMatrix !== null) {\n return cachedCipherMdsMatrix;\n }\n\n const dimension = BLOCK_SIZE;\n const matrixData: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n const row: bigint[] = [];\n for (let colIndex = 0; colIndex < dimension; colIndex++) {\n // 1/(i+1+j+1) = 1/(i+j+2), index in PRECOMPUTED_FIELD_INVERSES = (i+j+2) - 2 = i+j\n row.push(getElement(PRECOMPUTED_FIELD_INVERSES, rowIndex + colIndex));\n }\n matrixData.push(row);\n }\n cachedCipherMdsMatrix = matrixData;\n return matrixData;\n}\n\n/**\n * Builds (and caches) the 12x12 Cauchy MDS matrix for hash mode.\n *\n * @remarks\n * Follows the same Cauchy construction as `buildCipherMdsMatrix`, extended\n * to `HASH_STATE_SIZE = 12` dimensions:\n * ```\n * M[i][j] = 1 / (i + j + 2) for i, j = 0..11\n * ```\n * Index into `PRECOMPUTED_FIELD_INVERSES` ranges from 0 (1/2) to 22 (1/24),\n * consuming all 23 precomputed values.\n *\n * The branch number of this 12x12 matrix is 13, providing stronger diffusion\n * than the cipher's 5x5 matrix (branch number 6). This is appropriate given\n * the hash's higher security target (256 bits vs 128 bits for the cipher).\n *\n * @returns The cached 12x12 MDS matrix as a `bigint[][]`\n *\n * @example\n * ```typescript\n * const mds = buildHashMdsMatrix();\n * // mds[0][0] = 1/2, ..., mds[11][11] = 1/24 mod p\n * ```\n *\n * @see {@link PRECOMPUTED_FIELD_INVERSES} — requires all 23 entries (indices 0..22)\n * @see {@link HASH_STATE_SIZE} — the hash state width (12)\n *\n * @internal\n */\nfunction buildHashMdsMatrix(): bigint[][] {\n if (cachedHashMdsMatrix !== null) {\n return cachedHashMdsMatrix;\n }\n\n const dimension = HASH_STATE_SIZE;\n const matrixData: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n const row: bigint[] = [];\n for (let colIndex = 0; colIndex < dimension; colIndex++) {\n row.push(getElement(PRECOMPUTED_FIELD_INVERSES, rowIndex + colIndex));\n }\n matrixData.push(row);\n }\n cachedHashMdsMatrix = matrixData;\n return matrixData;\n}\n\n/* =============================================================================\n * ROUND CONSTANT GENERATION\n * ============================================================================= */\n\n/**\n * Module-level cache for the cipher round constant vectors.\n *\n * @remarks\n * Contains `2 * CIPHER_ROUND_COUNT + 1 = 21` column vectors once populated.\n * Cached as a module singleton because the constants are purely a function of\n * the field and the cipher seed string, both of which are fixed at compile time.\n *\n * @internal\n */\nlet cachedCipherRoundConstantVectors: bigint[][][] | null = null;\n\n/**\n * Module-level cache for the hash round constant vectors.\n *\n * @remarks\n * Contains `2 * HASH_ROUND_COUNT + 1 = 17` column vectors (including the\n * prepended zero vector) once populated.\n *\n * @internal\n */\nlet cachedHashRoundConstantVectors: bigint[][][] | null = null;\n\n/**\n * Samples and caches the cipher round constant vectors using SHAKE256 and an\n * affine recurrence relation.\n *\n * @remarks\n * The cipher round constants are generated following the Rescue-XLIX\n * specification for the cipher instantiation:\n *\n * 1. Sample `m*m + 2*m` field elements from SHAKE256 seeded with\n * `SHAKE256_CIPHER_SEED = \"encrypt everything, compute anything\"`.\n * 2. Form a `m x m` round constant matrix `A` and two length-`m` vectors:\n * the initial vector `c_0` and an affine term `b`.\n * 3. If `det(A) === 0` (singular matrix), resample `A` until it is invertible.\n * 4. Generate `2 * CIPHER_ROUND_COUNT` subsequent vectors via the affine\n * recurrence:\n * ```\n * c_{k+1} = A * c_k + b\n * ```\n * 5. Return all `2 * CIPHER_ROUND_COUNT + 1` vectors `[c_0, c_1, ..., c_{20}]`.\n *\n * The affine recurrence ensures the round constants have good statistical\n * properties (pseudo-randomness, linear independence) while being compactly\n * generated from a small seed.\n *\n * @param fieldArithmetic - Field arithmetic for matrix operations and determinant check\n * @returns An array of `2 * CIPHER_ROUND_COUNT + 1` column vectors, each of\n * length `BLOCK_SIZE = 5`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const constants = sampleCipherRoundConstantVectors(F);\n * // constants.length === 21\n * // constants[0].length === 5 (each is a 5x1 column vector)\n * // constants[0][0].length === 1\n * ```\n *\n * @see {@link SHAKE256_CIPHER_SEED} — the XOF seed string\n * @see `computeMatrixDeterminant` — used to check for matrix singularity\n *\n * @internal\n */\nfunction sampleCipherRoundConstantVectors(fieldArithmetic: FieldArithmetic): bigint[][][] {\n if (cachedCipherRoundConstantVectors !== null) {\n return cachedCipherRoundConstantVectors;\n }\n\n const dimension = BLOCK_SIZE;\n const roundCount = CIPHER_ROUND_COUNT;\n const sampleFieldElement = createShake256FieldElementSampler(\n SHAKE256_CIPHER_SEED,\n fieldArithmetic,\n );\n\n // Sample m*m + 2*m elements\n const sampledElements: bigint[] = [];\n for (let elementIndex = 0; elementIndex < dimension * dimension + 2 * dimension; elementIndex++) {\n sampledElements.push(sampleFieldElement());\n }\n\n // Build round constant matrix (m x m)\n let roundConstantMatrix: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n const row: bigint[] = [];\n for (let colIndex = 0; colIndex < dimension; colIndex++) {\n row.push(getElement(sampledElements, rowIndex * dimension + colIndex));\n }\n roundConstantMatrix.push(row);\n }\n\n // Build initial round constant (m x 1 column vector)\n const initialRoundConstant: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n initialRoundConstant.push([getElement(sampledElements, dimension * dimension + rowIndex)]);\n }\n\n // Build affine term (m x 1 column vector)\n const affineTerm: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n affineTerm.push([getElement(sampledElements, dimension * dimension + dimension + rowIndex)]);\n }\n\n // Resample matrix if singular (determinant = 0)\n while (fieldArithmetic.is0(computeMatrixDeterminant(fieldArithmetic, roundConstantMatrix))) {\n roundConstantMatrix = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n const row: bigint[] = [];\n for (let colIndex = 0; colIndex < dimension; colIndex++) {\n row.push(sampleFieldElement());\n }\n roundConstantMatrix.push(row);\n }\n }\n\n // Generate round constants via affine recurrence\n const roundConstantVectors: bigint[][][] = [initialRoundConstant];\n for (let roundIndex = 0; roundIndex < 2 * roundCount; roundIndex++) {\n const previousVector = getElement(roundConstantVectors, roundConstantVectors.length - 1);\n const nextVector = addMatrices(\n fieldArithmetic,\n multiplyMatrices(fieldArithmetic, roundConstantMatrix, previousVector),\n affineTerm,\n );\n roundConstantVectors.push(nextVector);\n }\n\n cachedCipherRoundConstantVectors = roundConstantVectors;\n return roundConstantVectors;\n}\n\n/**\n * Samples and caches the hash round constant vectors using SHAKE256 with\n * direct (non-recurrent) sampling.\n *\n * @remarks\n * The hash round constants follow the standard Rescue-XLIX hash specification\n * rather than the affine recurrence used for cipher constants. The generation\n * procedure is:\n *\n * 1. Prepend a zero vector of length `HASH_STATE_SIZE = 12` as `c_0`.\n * 2. Build a domain-separation seed string:\n * ```\n * \"Rescue-XLIX(p, 12, 5, 256)\"\n * ```\n * where `p = fieldArithmetic.ORDER` and the parameters are `m=12`,\n * `capacity=5`, security level = 256.\n * 3. Sample `2 * HASH_ROUND_COUNT * HASH_STATE_SIZE = 192` field elements\n * from SHAKE256 seeded with that string.\n * 4. Reshape the flat sample into `2 * HASH_ROUND_COUNT = 16` column vectors\n * of length `HASH_STATE_SIZE = 12` and append to the zero vector.\n *\n * The resulting array `[c_0, c_1, ..., c_{16}]` has 17 vectors in total.\n *\n * @param fieldArithmetic - Field arithmetic providing `ORDER` for the seed string\n * @returns An array of `2 * HASH_ROUND_COUNT + 1 = 17` column vectors, each of\n * length `HASH_STATE_SIZE = 12` (the first is always the zero vector)\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const constants = sampleHashRoundConstantVectors(F);\n * // constants.length === 17\n * // constants[0] is all zeros (prepended zero vector)\n * // constants[1..16] are SHAKE256-sampled field elements\n * ```\n *\n * @see `createShake256FieldElementSampler` — the XOF sampler used for generation\n * @see {@link HASH_CAPACITY} — appears in the domain-separation seed string\n *\n * @internal\n */\nfunction sampleHashRoundConstantVectors(fieldArithmetic: FieldArithmetic): bigint[][][] {\n if (cachedHashRoundConstantVectors !== null) {\n return cachedHashRoundConstantVectors;\n }\n\n const dimension = HASH_STATE_SIZE;\n const roundCount = HASH_ROUND_COUNT;\n\n // Build hash seed string dynamically\n const hashSeed = `Rescue-XLIX(${String(fieldArithmetic.ORDER)},${String(dimension)},${String(HASH_CAPACITY)},256)`;\n const sampleFieldElement = createShake256FieldElementSampler(hashSeed, fieldArithmetic);\n\n // Prepend a zero column vector\n const zeroVector: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n zeroVector.push([0n]);\n }\n const roundConstantVectors: bigint[][][] = [zeroVector];\n\n // Sample 2 * roundCount * m elements\n const sampledElements: bigint[] = [];\n for (let elementIndex = 0; elementIndex < 2 * roundCount * dimension; elementIndex++) {\n sampledElements.push(sampleFieldElement());\n }\n\n // Reshape into column vectors\n for (let vectorIndex = 0; vectorIndex < 2 * roundCount; vectorIndex++) {\n const columnVector: bigint[][] = [];\n for (let rowIndex = 0; rowIndex < dimension; rowIndex++) {\n columnVector.push([getElement(sampledElements, vectorIndex * dimension + rowIndex)]);\n }\n roundConstantVectors.push(columnVector);\n }\n\n cachedHashRoundConstantVectors = roundConstantVectors;\n return roundConstantVectors;\n}\n\n/* =============================================================================\n * RESCUE PERMUTATION\n * ============================================================================= */\n\n/**\n * Runs the Rescue-XLIX permutation and returns ALL intermediate states.\n *\n * @remarks\n * This is the core computational engine of the entire module. It implements\n * the full Rescue-XLIX round function and is used in two contexts:\n *\n * - **Hash mode** (`cipherMode = false`): even half-rounds apply the forward\n * S-box (`x^ALPHA`), odd half-rounds apply the inverse S-box\n * (`x^ALPHA_INVERSE`). Round constants (`subkeys`) are publicly fixed.\n *\n * - **Cipher mode** (`cipherMode = true`): the exponent ordering is swapped —\n * even half-rounds use the inverse S-box and odd half-rounds use the forward\n * S-box. The `subkeys` are derived from the cipher key (the key schedule).\n *\n * ## Round Structure\n *\n * Each full round consists of two half-rounds. Starting from the initial state\n * `s_0 = state + subkeys[0]`, the permutation proceeds:\n * ```\n * for r = 0..nRounds-1:\n * s_{2r+1} = MDS * S_even(s_{2r}) + subkeys[2r+1]\n * s_{2r+2} = MDS * S_odd(s_{2r+1}) + subkeys[2r+2]\n * ```\n * where `S_even` and `S_odd` are element-wise power maps determined by\n * `cipherMode`.\n *\n * ## Intermediate States\n *\n * Unlike a minimal implementation that only returns the final state, this\n * function returns ALL intermediate states `[s_0, s_1, ..., s_{2*nRounds}]`.\n * For hash mode this is wasteful but acceptable (only the final state is used).\n * For the cipher's key schedule, the intermediate states ARE the round keys:\n * the key schedule runs the permutation on the derived key and uses each\n * intermediate state as the subkey for a subsequent CTR encryption.\n *\n * @param fieldArithmetic - Field arithmetic for all operations\n * @param mdsMatrix - The `m x m` MDS matrix (5x5 for cipher, 12x12 for hash)\n * @param subkeys - Array of `2*nRounds + 1` column vectors (each `m x 1`),\n * used as additive round keys / round constants\n * @param state - The initial `m x 1` column vector\n * @param cipherMode - When `true`, uses inverse S-box in even half-rounds and\n * forward S-box in odd half-rounds; when `false`, the order is reversed\n * @returns Array of all `2*nRounds + 1` intermediate states, each an `m x 1`\n * column vector; the last element is the final output state\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const mds = buildCipherMdsMatrix();\n * const constants = sampleCipherRoundConstantVectors(F);\n * const key = toColumnVector([1n, 2n, 3n, 4n, 5n]);\n * const states = computeRescuePermutationWithIntermediateStates(F, mds, constants, key, true);\n * // states.length === 21 (2 * CIPHER_ROUND_COUNT + 1)\n * // fromColumnVector(states[states.length - 1]) is the permuted output\n * ```\n *\n * @internal\n */\nfunction computeRescuePermutationWithIntermediateStates(\n fieldArithmetic: FieldArithmetic,\n mdsMatrix: bigint[][],\n subkeys: bigint[][][],\n state: bigint[][],\n cipherMode: boolean,\n): bigint[][][] {\n const exponentEven = cipherMode ? ALPHA_INVERSE : ALPHA;\n const exponentOdd = cipherMode ? ALPHA : ALPHA_INVERSE;\n\n const intermediateStates: bigint[][][] = [\n addMatrices(fieldArithmetic, state, getElement(subkeys, 0)),\n ];\n\n for (let roundIndex = 0; roundIndex < subkeys.length - 1; roundIndex++) {\n let currentState = getElement(intermediateStates, intermediateStates.length - 1);\n currentState = exponentiateMatrixElements(\n fieldArithmetic,\n currentState,\n roundIndex % 2 === 0 ? exponentEven : exponentOdd,\n );\n intermediateStates.push(\n addMatrices(\n fieldArithmetic,\n multiplyMatrices(fieldArithmetic, mdsMatrix, currentState),\n getElement(subkeys, roundIndex + 1),\n ),\n );\n }\n\n return intermediateStates;\n}\n\n/**\n * Creates an uncached hash-mode Rescue permutation function.\n *\n * @remarks\n * Closes over the 12x12 MDS matrix and the hash round constants, both of which\n * are themselves cached as module singletons. The returned function accepts and\n * returns flat `bigint[]` arrays of length `HASH_STATE_SIZE = 12`.\n *\n * Internally, the flat array is converted to/from a column vector (12x1 matrix)\n * so that `computeRescuePermutationWithIntermediateStates` can use standard\n * matrix arithmetic. Only the last (final) intermediate state is extracted and\n * returned.\n *\n * @param fieldArithmetic - Field arithmetic for the MDS matrix and round constants\n * @returns A `RescuePermuteFunction` that maps a 12-element state to a 12-element\n * permuted state\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const permute = createHashPermutationFunction(F);\n * const zeros = Array(12).fill(0n);\n * const out = permute(zeros); // 12-element permuted state\n * ```\n *\n * @see `getHashPermutationFunction` — the cached accessor for this function\n *\n * @internal\n */\nfunction createHashPermutationFunction(fieldArithmetic: FieldArithmetic): RescuePermuteFunction {\n const mdsMatrix = buildHashMdsMatrix();\n const roundConstants = sampleHashRoundConstantVectors(fieldArithmetic);\n\n return (state: bigint[]): bigint[] => {\n const stateVector = toColumnVector(state);\n const allStates = computeRescuePermutationWithIntermediateStates(\n fieldArithmetic,\n mdsMatrix,\n roundConstants,\n stateVector,\n false,\n );\n return fromColumnVector(getElement(allStates, allStates.length - 1));\n };\n}\n\n/**\n * Module-level singleton cache for the hash permutation function.\n *\n * @remarks\n * Lazily populated by `getHashPermutationFunction()`. Cached to avoid\n * redundant allocation on every sponge hash call.\n *\n * @internal\n */\nlet cachedHashPermutationFunction: RescuePermuteFunction | null = null;\n\n/**\n * Returns the cached hash-mode Rescue permutation function, creating it on\n * first call.\n *\n * @remarks\n * Delegates to `createHashPermutationFunction` the first time it is called\n * with the given `fieldArithmetic`. If `fieldArithmetic` is the default\n * adapter, the result is stored in `cachedHashPermutationFunction`.\n *\n * @param fieldArithmetic - Field arithmetic for the permutation internals\n * @returns The cached (or freshly created) `RescuePermuteFunction` for hash mode\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const p1 = getHashPermutationFunction(F);\n * const p2 = getHashPermutationFunction(F);\n * // p1 === p2 (same cached reference)\n * ```\n *\n * @internal\n */\nfunction getHashPermutationFunction(fieldArithmetic: FieldArithmetic): RescuePermuteFunction {\n if (cachedHashPermutationFunction !== null) {\n return cachedHashPermutationFunction;\n }\n cachedHashPermutationFunction = createHashPermutationFunction(fieldArithmetic);\n return cachedHashPermutationFunction;\n}\n\n/* =============================================================================\n * RESCUE-PRIME HASH (SPONGE)\n * ============================================================================= */\n\n/**\n * Module-level singleton cache for the Rescue-Prime hash function.\n *\n * @remarks\n * Lazily populated by `getRescuePrimeHashFunction()` on first call without\n * custom deps. Cached to avoid redundant construction of the permutation closure\n * on subsequent calls.\n *\n * @internal\n */\nlet cachedRescuePrimeHashFunction: RescuePrimeHashFunction | null = null;\n\n/**\n * Creates an uncached Rescue-Prime sponge hash function.\n *\n * @remarks\n * Implements the Rescue-Prime hash as a sponge construction with\n * `rate = HASH_RATE = 7`, `capacity = HASH_CAPACITY = 5`,\n * `state = HASH_STATE_SIZE = 12`, `digest = HASH_DIGEST_LENGTH = 5`.\n *\n * ## Sponge Construction\n *\n * The sponge operates in two phases:\n *\n * ### Absorb Phase\n *\n * 1. Pad the message with the \"10*\" scheme (append `1n`, then `0n`s until the\n * length is a multiple of `HASH_RATE = 7`).\n * 2. For each 7-element block in the padded message:\n * a. Build a 12-element absorption block: `[block[0..6], 0, 0, 0, 0, 0]`.\n * b. Add the absorption block to the current state element-wise mod p,\n * using constant-time arithmetic to resist side-channel leakage.\n * c. Apply the Rescue-XLIX permutation to the updated state.\n *\n * ### Squeeze Phase\n *\n * Extract the first `HASH_DIGEST_LENGTH = 5` elements of the final state as\n * the digest. No additional permutation is applied (single-call squeezing).\n *\n * ## Security\n *\n * The constant-time addition of the absorption block (via `addMatricesConstantTime`)\n * prevents an attacker from inferring the sponge state from the timing of the\n * absorb operations. The permutation itself is not required to be constant-time\n * because the Rescue round functions are purely algebraic with no secret-dependent\n * branching.\n *\n * @param fieldArithmetic - Field arithmetic for the permutation and constant-time helpers\n * @returns A `RescuePrimeHashFunction` that maps `bigint[]` messages to 5-element digests\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const hash = createRescuePrimeHashFunction(F);\n * const digest = hash([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n]);\n * // digest.length === 5, each element in [0, FIELD_PRIME)\n * ```\n *\n * @see `getRescuePrimeHashFunction` — the public cached accessor\n * @see `getHashPermutationFunction` — the permutation used in the sponge\n *\n * @internal\n */\nfunction createRescuePrimeHashFunction(fieldArithmetic: FieldArithmetic): RescuePrimeHashFunction {\n const permute = getHashPermutationFunction(fieldArithmetic);\n const binarySize = computeBinarySize(fieldArithmetic.ORDER - 1n);\n\n return (message: bigint[]): bigint[] => {\n // Padding: append 1n, then 0n until length is multiple of rate\n const paddedMessage = [...message, 1n];\n while (paddedMessage.length % HASH_RATE !== 0) {\n paddedMessage.push(0n);\n }\n\n // Initialize state to zeros\n let state: bigint[] = Array.from<bigint>({ length: HASH_STATE_SIZE }).fill(0n);\n\n // Absorb phase\n for (let blockIndex = 0; blockIndex < paddedMessage.length / HASH_RATE; blockIndex++) {\n // Build absorption block: rate elements from message + capacity zeros\n const absorptionBlock: bigint[] = [];\n for (let elementIndex = 0; elementIndex < HASH_RATE; elementIndex++) {\n absorptionBlock.push(getElement(paddedMessage, blockIndex * HASH_RATE + elementIndex));\n }\n for (let elementIndex = HASH_RATE; elementIndex < HASH_STATE_SIZE; elementIndex++) {\n absorptionBlock.push(0n);\n }\n\n // Constant-time addition of block to state\n const stateVector = toColumnVector(state);\n const blockVector = toColumnVector(absorptionBlock);\n const addedVector = addMatricesConstantTime(stateVector, blockVector, binarySize);\n state = permute(fromColumnVector(addedVector));\n }\n\n // Squeeze: return first HASH_DIGEST_LENGTH elements\n return state.slice(0, HASH_DIGEST_LENGTH);\n };\n}\n\n/**\n * Returns a (cached) Rescue-Prime hash function using the sponge construction.\n *\n * @remarks\n * This is the main entry point for Rescue-Prime hashing. When called without\n * arguments (or without a custom `getFieldArithmetic`), it returns and caches a\n * singleton. Custom deps bypass the cache and always create a fresh instance,\n * which is useful for testing with alternative field implementations.\n *\n * ## Caching Behaviour\n *\n * - No deps provided: returns `cachedRescuePrimeHashFunction` (created on first call).\n * - Custom `getFieldArithmetic` provided: always creates a fresh instance (no caching).\n *\n * @param deps - Optional dependency injection; see `RescuePrimeHashDeps`\n * @returns A `RescuePrimeHashFunction` that computes Rescue-Prime hash digests\n *\n * @example\n * ```typescript\n * import { getRescuePrimeHashFunction } from \"./index\";\n *\n * // Default usage — cached singleton\n * const hash = getRescuePrimeHashFunction();\n * const digest = hash([1n, 2n, 3n]);\n * // digest.length === 5\n *\n * // Custom field for testing\n * const testHash = getRescuePrimeHashFunction({\n * getFieldArithmetic: () => myTestField,\n * });\n * const testDigest = testHash([0n]);\n * ```\n *\n * @see `createRescuePrimeHashFunction` — the uncached factory this wraps\n * @see `deriveRescueCipherKey` — uses this hash function internally for KDF\n *\n * @public\n */\nexport function getRescuePrimeHashFunction(deps?: RescuePrimeHashDeps): RescuePrimeHashFunction {\n const { getFieldArithmetic: getCustomFieldArithmetic } = deps ?? {};\n\n if (getCustomFieldArithmetic === undefined) {\n if (cachedRescuePrimeHashFunction !== null) {\n return cachedRescuePrimeHashFunction;\n }\n\n const defaultFieldArithmetic = getFieldArithmetic();\n cachedRescuePrimeHashFunction = createRescuePrimeHashFunction(defaultFieldArithmetic);\n return cachedRescuePrimeHashFunction;\n }\n\n return createRescuePrimeHashFunction(getCustomFieldArithmetic());\n}\n\n/* =============================================================================\n * KEY DERIVATION\n * ============================================================================= */\n\n/**\n * Derives a `BLOCK_SIZE`-element Rescue cipher key from a 32-byte shared secret.\n *\n * @remarks\n * Implements a key derivation function (KDF) based on NIST SP 800-56C Rev 2,\n * Section 4, Option 1 (\"one-step KDF using an approved hash function\"). The\n * KDF input is constructed as:\n * ```\n * KDF_input = [counter=1, Z=sharedSecret_as_field_element, FixedInfo=BLOCK_SIZE=5]\n * ```\n * and the output is:\n * ```\n * key = RescuePrimeHash(KDF_input) (5 field elements)\n * ```\n *\n * ## Shared Secret Encoding\n *\n * The 32-byte shared secret is interpreted as a little-endian bigint and treated\n * as a single field element. Since the Curve25519 field prime `p = 2^255 - 19`\n * is slightly less than `2^255`, a 32-byte secret may represent a value larger\n * than `p`. The `getRescuePrimeHashFunction()` sponge accepts arbitrary bigints\n * as input (it absorbs without reducing), so the secret is passed through\n * unchanged.\n *\n * @param fieldArithmetic - Field arithmetic (passed to `getRescuePrimeHashFunction`)\n * @param sharedSecret - Exactly `SECRET_BYTES = 32` bytes of shared secret material\n * (e.g., from X25519 Diffie-Hellman)\n * @returns A `bigint[]` of length `BLOCK_SIZE = 5`, suitable for use as a cipher key\n *\n * @throws `Error` if `sharedSecret.length !== SECRET_BYTES`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const secret = crypto.getRandomValues(new Uint8Array(32));\n * const key = deriveRescueCipherKey(F, secret);\n * // key.length === 5\n * // each element is a valid field element in [0, FIELD_PRIME)\n * ```\n *\n * @see `getRescuePrimeHashFunction` — the hash function used as the KDF core\n * @see {@link SECRET_BYTES} — the required byte length of the shared secret\n *\n * @internal\n */\nfunction deriveRescueCipherKey(\n fieldArithmetic: FieldArithmetic,\n sharedSecret: Uint8Array,\n): bigint[] {\n if (sharedSecret.length !== SECRET_BYTES) {\n throw new Error(\n `Shared secret must be exactly ${String(SECRET_BYTES)} bytes, got ${String(sharedSecret.length)}`,\n );\n }\n\n const hashFunction = getRescuePrimeHashFunction();\n\n // Convert shared secret to a field element (full 32 bytes for base field)\n const secretAsFieldElement = deserializeLittleEndianBytesToBigint(sharedSecret);\n\n // KDF input: [counter=1, Z=secret, FixedInfo=blockSize]\n const kdfInput: bigint[] = [1n, secretAsFieldElement, BigInt(BLOCK_SIZE)];\n\n return hashFunction(kdfInput);\n}\n\n/* =============================================================================\n * CTR MODE CIPHER\n * ============================================================================= */\n\n/**\n * Encrypts an array of field elements in CTR (counter) mode using the\n * Rescue-XLIX permutation as the underlying block cipher.\n *\n * @remarks\n * ## Counter Block Construction\n *\n * For each block of `BLOCK_SIZE = 5` plaintext elements (block index `b`), the\n * counter block is:\n * ```\n * counterBlock = [nonce_as_bigint, b, 0, 0, 0]\n * ```\n * This is permuted by the key-scheduled Rescue cipher to produce a keystream\n * block of 5 field elements.\n *\n * ## XOR in GF(p) — Constant-Time Field Addition\n *\n * The \"XOR\" of CTR mode is replaced by field addition (mod p). The\n * implementation uses constant-time arithmetic (`constantTimeAdd`,\n * `constantTimeLessThan`, `constantTimeSubtract`, `constantTimeSelect`) to\n * ensure that the running time does not depend on the plaintext values.\n *\n * The reduction to `[0, p)` after addition:\n * ```\n * s = plaintext[i] + keystream[i] (constant-time add, may overflow p)\n * c = s < p ? s : s - p (constant-time conditional subtract)\n * ```\n *\n * ## Partial Last Block\n *\n * If `plaintext.length` is not a multiple of `BLOCK_SIZE`, the last keystream\n * block is truncated to the number of remaining plaintext elements. Only the\n * needed keystream elements are computed via the inner loop bound\n * `endIndex - startIndex`.\n *\n * @param fieldArithmetic - Field arithmetic for the binary size computation\n * @param permute - The key-scheduled Rescue permutation (closure over round keys)\n * @param plaintext - Array of field elements to encrypt; length may be any positive integer\n * @param nonce - Exactly `NONCE_BYTES = 16` bytes; deserialized as a LE bigint\n * @returns Array of bigint ciphertext field elements (same length as `plaintext`)\n *\n * @throws `Error` if `nonce.length !== NONCE_BYTES`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const nonce = new Uint8Array(16).fill(0x01);\n * const plain = [1n, 2n, 3n];\n * // (permute is the key-scheduled cipher permutation)\n * const enc = encryptFieldElementsInCtrMode(F, permute, plain, nonce);\n * // enc.length === 3, enc[i] in [0, FIELD_PRIME)\n * ```\n *\n * @see `decryptFieldElementsInCtrMode` — the symmetric decryption function\n *\n * @internal\n */\nfunction encryptFieldElementsInCtrMode(\n fieldArithmetic: FieldArithmetic,\n permute: RescuePermuteFunction,\n plaintext: bigint[],\n nonce: Uint8Array,\n): bigint[] {\n if (nonce.length !== NONCE_BYTES) {\n throw new Error(`Nonce must be exactly ${String(NONCE_BYTES)} bytes`);\n }\n\n const nonceValue = deserializeLittleEndianBytesToBigint(nonce);\n const blockCount = Math.ceil(plaintext.length / BLOCK_SIZE);\n const binarySize = computeBinarySize(fieldArithmetic.ORDER - 1n);\n const ciphertext: bigint[] = [];\n\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n // Build counter block\n const counterBlock: bigint[] = [nonceValue, BigInt(blockIndex), 0n, 0n, 0n];\n\n // Permute the counter\n const keystream = permute(counterBlock);\n\n // XOR (field add) plaintext with keystream\n const startIndex = blockIndex * BLOCK_SIZE;\n const endIndex = Math.min(startIndex + BLOCK_SIZE, plaintext.length);\n for (let elementIndex = 0; elementIndex < endIndex - startIndex; elementIndex++) {\n const sum = constantTimeAdd(\n getElement(plaintext, startIndex + elementIndex),\n getElement(keystream, elementIndex),\n binarySize,\n );\n const reduced = constantTimeSelect(\n constantTimeLessThan(sum, fieldArithmetic.ORDER, binarySize),\n sum,\n constantTimeSubtract(sum, fieldArithmetic.ORDER, binarySize),\n binarySize,\n );\n ciphertext.push(reduced);\n }\n }\n\n return ciphertext;\n}\n\n/**\n * Decrypts an array of field elements in CTR (counter) mode using the\n * Rescue-XLIX permutation.\n *\n * @remarks\n * CTR mode decryption is structurally identical to encryption: the same\n * keystream is generated from the nonce and block index, and each ciphertext\n * element is combined with the keystream by field subtraction (mod p), which\n * is the inverse of the field addition used during encryption.\n *\n * The constant-time subtraction handles the underflow case:\n * ```\n * d = ciphertext[i] - keystream[i] (constant-time subtract, may be negative)\n * p = d < 0 ? d + FIELD_PRIME : d (constant-time conditional add of p)\n * ```\n *\n * The sign bit of the 2's complement result is used by `constantTimeSignBit`\n * to detect the underflow without branching on the data value.\n *\n * @param fieldArithmetic - Field arithmetic for the binary size computation\n * @param permute - The key-scheduled Rescue permutation (same closure as used for encryption)\n * @param ciphertext - Array of bigint ciphertext field elements to decrypt\n * @param nonce - The same `NONCE_BYTES = 16`-byte nonce used during encryption\n * @returns Array of bigint plaintext field elements (same length as `ciphertext`)\n *\n * @throws `Error` if `nonce.length !== NONCE_BYTES`\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const nonce = new Uint8Array(16).fill(0x01);\n * const enc = [someEncryptedValue];\n * const dec = decryptFieldElementsInCtrMode(F, permute, enc, nonce);\n * // dec contains the original plaintext field elements\n * ```\n *\n * @see `encryptFieldElementsInCtrMode` — the symmetric encryption function\n *\n * @internal\n */\nfunction decryptFieldElementsInCtrMode(\n fieldArithmetic: FieldArithmetic,\n permute: RescuePermuteFunction,\n ciphertext: bigint[],\n nonce: Uint8Array,\n): bigint[] {\n if (nonce.length !== NONCE_BYTES) {\n throw new Error(`Nonce must be exactly ${String(NONCE_BYTES)} bytes`);\n }\n\n const nonceValue = deserializeLittleEndianBytesToBigint(nonce);\n const blockCount = Math.ceil(ciphertext.length / BLOCK_SIZE);\n const binarySize = computeBinarySize(fieldArithmetic.ORDER - 1n);\n const plaintext: bigint[] = [];\n\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n const counterBlock: bigint[] = [nonceValue, BigInt(blockIndex), 0n, 0n, 0n];\n const keystream = permute(counterBlock);\n\n const startIndex = blockIndex * BLOCK_SIZE;\n const endIndex = Math.min(startIndex + BLOCK_SIZE, ciphertext.length);\n for (let elementIndex = 0; elementIndex < endIndex - startIndex; elementIndex++) {\n const difference = constantTimeSubtract(\n getElement(ciphertext, startIndex + elementIndex),\n getElement(keystream, elementIndex),\n binarySize,\n );\n const reduced = constantTimeSelect(\n constantTimeSignBit(difference, binarySize),\n constantTimeAdd(difference, fieldArithmetic.ORDER, binarySize),\n difference,\n binarySize,\n );\n plaintext.push(reduced);\n }\n }\n\n return plaintext;\n}\n\n/* =============================================================================\n * PUBLIC API\n * ============================================================================= */\n\n/**\n * Creates an uncached `RescueCipherInstance` from a shared secret.\n *\n * @remarks\n * Performs the full cipher initialisation sequence:\n *\n * 1. **Key derivation**: calls `deriveKey(fieldArithmetic, sharedSecret)` to\n * produce a `BLOCK_SIZE = 5` element key from the raw shared secret.\n *\n * 2. **Key schedule**: runs the Rescue-XLIX permutation on the derived key\n * in cipher mode (`cipherMode = true`), capturing all 21 intermediate states.\n * These intermediate states become the round keys for subsequent CTR-mode\n * encryptions and decryptions. This is the Rescue-XLIX key expansion.\n *\n * 3. **Cipher permutation closure**: wraps a `RescuePermuteFunction` that\n * closes over the 21 round keys and applies them to any input state.\n *\n * 4. **Encrypt/decrypt methods**: builds the `RescueCipherInstance` methods\n * that call `encryptFieldElementsInCtrMode` / `decryptFieldElementsInCtrMode`\n * and handle byte serialisation/deserialisation of field elements.\n *\n * ## Key Schedule Details\n *\n * The Rescue-XLIX cipher's key schedule is non-standard: instead of expanding\n * the key using a separate schedule, it runs the cipher permutation on the key\n * itself and uses each intermediate state as an additive round constant. This\n * is structurally similar to the AES key schedule but built entirely in GF(p).\n *\n * ## Byte Serialisation\n *\n * The `encrypt` method serialises each output field element to a 32-byte\n * little-endian `number[]`. The `decrypt` method deserialises each input\n * element back to a `bigint` before processing.\n *\n * @param sharedSecret - Raw 32-byte shared secret (must be `SECRET_BYTES` bytes)\n * @param fieldArithmetic - Field arithmetic for all operations\n * @param deriveKey - Key derivation function; receives `fieldArithmetic` and `sharedSecret`\n * @returns A fresh `RescueCipherInstance` with `encrypt` and `decrypt` methods\n *\n * @example\n * ```typescript\n * const F = getFieldArithmetic();\n * const secret = crypto.getRandomValues(new Uint8Array(32));\n * const cipher = createRescueCipherInstance(secret, F, deriveRescueCipherKey);\n * const nonce = crypto.getRandomValues(new Uint8Array(16));\n * const enc = cipher.encrypt([1n, 2n, 3n], nonce);\n * const dec = cipher.decrypt(enc, nonce);\n * // dec deepEquals [1n, 2n, 3n]\n * ```\n *\n * @see `getRescueCipherInstance` — the public factory that wraps this function\n * @see `encryptFieldElementsInCtrMode` — the CTR encryption called by `encrypt`\n * @see `decryptFieldElementsInCtrMode` — the CTR decryption called by `decrypt`\n *\n * @internal\n */\nfunction createRescueCipherInstance(\n sharedSecret: Uint8Array,\n fieldArithmetic: FieldArithmetic,\n deriveKey: (fieldArithmetic: FieldArithmetic, sharedSecret: Uint8Array) => bigint[],\n): RescueCipherInstance {\n const cipherKey = deriveKey(fieldArithmetic, sharedSecret);\n\n // Build cipher-mode key schedule\n const mdsMatrix = buildCipherMdsMatrix();\n const roundConstants = sampleCipherRoundConstantVectors(fieldArithmetic);\n\n // Key schedule: run the Rescue permutation on the cipher key using round constants\n const keyVector = toColumnVector(cipherKey);\n const allStates = computeRescuePermutationWithIntermediateStates(\n fieldArithmetic,\n mdsMatrix,\n roundConstants,\n keyVector,\n true,\n );\n\n // The intermediate states become the round keys for encryption\n const roundKeys = allStates;\n\n // Create cipher-mode permutation function using the derived round keys\n const permuteCipher: RescuePermuteFunction = (state: bigint[]): bigint[] => {\n const stateVector = toColumnVector(state);\n const states = computeRescuePermutationWithIntermediateStates(\n fieldArithmetic,\n mdsMatrix,\n roundKeys,\n stateVector,\n true,\n );\n return fromColumnVector(getElement(states, states.length - 1));\n };\n\n return {\n encrypt(plaintext: bigint[], nonce: Uint8Array): number[][] {\n const rawCiphertext = encryptFieldElementsInCtrMode(\n fieldArithmetic,\n permuteCipher,\n plaintext,\n nonce,\n );\n return rawCiphertext.map((element) => [\n ...serializeBigintToLittleEndianBytes(element, FIELD_ELEMENT_BYTE_LENGTH),\n ]);\n },\n\n decrypt(ciphertext: number[][], nonce: Uint8Array): bigint[] {\n const rawCiphertext = ciphertext.map((element) => {\n if (element.length !== FIELD_ELEMENT_BYTE_LENGTH) {\n throw new Error(\n `Each ciphertext element must be ${String(FIELD_ELEMENT_BYTE_LENGTH)} bytes, got ${String(element.length)}`,\n );\n }\n return deserializeLittleEndianBytesToBigint(Uint8Array.from(element));\n });\n return decryptFieldElementsInCtrMode(fieldArithmetic, permuteCipher, rawCiphertext, nonce);\n },\n };\n}\n\n/**\n * Returns a Rescue-XLIX cipher instance initialised from a shared secret.\n *\n * @remarks\n * This is the primary public entry point of the `rescue-cipher` module. It:\n *\n * 1. Resolves field arithmetic from `deps.getFieldArithmetic` or the default\n * SDK adapter (`getFieldArithmetic()`).\n * 2. Resolves the KDF from `deps.deriveKey` or the default NIST SP 800-56C\n * implementation (`deriveRescueCipherKey`).\n * 3. Delegates to `createRescueCipherInstance` with the resolved dependencies.\n *\n * The returned `RescueCipherInstance` is compatible with the `RescueCipher`\n * class from `@arcium-hq/client`, providing the same `encrypt` and `decrypt`\n * method signatures.\n *\n * ## Security\n *\n * Cipher instances are intentionally NOT cached. Each call to this function\n * creates a fresh instance, which limits the lifetime of the derived key\n * material in memory and reduces the risk of key leakage across multiple\n * independent encryption operations.\n *\n * ## Dependency Injection\n *\n * Custom `deps` bypass the module-level caches. This is useful for:\n * - Unit testing with a fixed/known key derivation function\n * - Benchmarking alternative field arithmetic implementations\n * - Future support for hardware-accelerated field operations\n *\n * @param sharedSecret - A `Uint8Array` of exactly `SECRET_BYTES = 32` bytes\n * representing a shared secret (typically from X25519 ECDH)\n * @param deps - Optional dependencies; see `RescueCipherDeps`\n * @returns A `RescueCipherInstance` with `encrypt()` and `decrypt()` methods\n *\n * @throws `Error` (via `deriveRescueCipherKey`) if `sharedSecret.length !== 32`\n *\n * @example\n * ```typescript\n * import { getRescueCipherInstance } from \"@umbra/sdk/crypto/rescue-cipher\";\n *\n * // Typical usage — X25519 shared secret from key exchange\n * const sharedSecret = performX25519KeyExchange(myPrivateKey, theirPublicKey);\n * const nonce = crypto.getRandomValues(new Uint8Array(16));\n * const cipher = getRescueCipherInstance(sharedSecret);\n *\n * // Encrypt a vector of field elements (e.g., confidential token amounts)\n * const plaintext: bigint[] = [1_000_000n, 500_000n];\n * const ciphertext = cipher.encrypt(plaintext, nonce);\n * // ciphertext: number[][], each inner array is 32 bytes\n *\n * // Decrypt on the other side\n * const sameSecret = performX25519KeyExchange(theirPrivateKey, myPublicKey);\n * const cipher2 = getRescueCipherInstance(sameSecret);\n * const recovered = cipher2.decrypt(ciphertext, nonce);\n * // recovered deepEquals plaintext\n *\n * // Testing with injected deps\n * const testCipher = getRescueCipherInstance(sharedSecret, {\n * deriveKey: (_secret) => [1n, 2n, 3n, 4n, 5n],\n * });\n * ```\n *\n * @see `createRescueCipherInstance` — the internal factory this delegates to\n * @see {@link RescueCipherInstance} — the returned interface\n * @see {@link RescueCipherDeps} — the optional dependency injection interface\n * @see {@link SECRET_BYTES} — the required shared secret byte length (32)\n * @see {@link NONCE_BYTES} — the required nonce byte length for encrypt/decrypt (16)\n *\n * @public\n */\nexport function getRescueCipherInstance(\n sharedSecret: Uint8Array,\n deps?: RescueCipherDeps,\n): RescueCipherInstance {\n const { getFieldArithmetic: getCustomFieldArithmetic, deriveKey } = deps ?? {};\n\n const resolvedFieldArithmetic =\n getCustomFieldArithmetic === undefined ? getFieldArithmetic() : getCustomFieldArithmetic();\n\n const resolvedDeriveKey =\n deriveKey === undefined\n ? deriveRescueCipherKey\n : (_fieldArithmetic: FieldArithmetic, secret: Uint8Array) => deriveKey(secret);\n\n return createRescueCipherInstance(sharedSecret, resolvedFieldArithmetic, resolvedDeriveKey);\n}\n","/**\n * Rescue Cipher — High-Level Key Exchange and Encryption\n *\n * This module is the **primary encryption layer** for Umbra's confidential token\n * accounts. It provides a high-level interface over the low-level Rescue-XLIX\n * block cipher (in `../rescue-cipher`), adding X25519 Diffie-Hellman key exchange,\n * counter-mode encryption/decryption, key generation, and Poseidon-based encryption\n * commitments.\n *\n * ## Role in the Umbra Protocol\n *\n * Umbra's confidential token accounts store encrypted balances. Every deposit,\n * transfer, or withdrawal must update one or more confidential balances in a way\n * that:\n * 1. Keeps the value hidden from on-chain observers.\n * 2. Allows the Arcium MPC network (the MXE) to re-encrypt or decrypt values\n * inside a secure multi-party computation.\n * 3. Can be committed to in a ZK proof so the on-chain program can verify\n * correctness without seeing the plaintext.\n *\n * The Rescue cipher satisfies all three requirements because it is an algebraic\n * cipher over a prime field — circuit-friendly, MPC-friendly, and ZK-friendly.\n *\n * ## X25519 Key Exchange Flow\n *\n * ```\n * Sender Arcium MXE (MPC network)\n * ────── ────────────────────────\n * 1. senderPrivKey, mxePubKey\n * 2. sharedSecret = X25519(senderPrivKey, mxePubKey)\n * 3. cipher = RescueCipher(sharedSecret)\n * 4. nonce = random 128-bit value\n * 5. (ciphertext, nonce) = cipher.encrypt(plaintext, nonce)\n * 6. Submit (ciphertext, nonce, commitment) on-chain\n * 7. MXE decrypts inside MPC using\n * its private key + sender's public key\n * ```\n *\n * The Umbra MXE public key (`umbraX25519PublicKey`) is obtained from the network\n * configuration: `getNetworkConfig(network).mxePubkey`.\n *\n * ## No Caching of Key Material\n *\n * This module deliberately does **not** cache cipher instances, shared secrets, or\n * key material. Each factory function call creates fresh cipher instances. This\n * design minimises the window during which sensitive cryptographic material is held\n * in JavaScript heap memory.\n *\n * ## Module Sections\n *\n * - **Types** — `GetRescueCipherFunction`, `GetRescueCipherFromKeyPairFunction`\n * - **Dependency interfaces** — `RescueCipherFromKeyPairDeps`, `RcEncryptorDeps`,\n * `RcEncryptorWithNonceDeps`, `RcDecryptorDeps`, `RcKeyGeneratorDeps`\n * - **Cipher instance management** — `getRescueCipher`, `getRescueCipherFromKeyPair`\n * - **Encryption** — `getRescueEncryptorFromPrivateKey`, `getRescueEncryptorWithNonceFromPrivateKey`\n * - **Decryption** — `getRescueDecryptorFromPrivateKey`\n * - **Key generation** — `getRescueKeyGeneratorFromPrivateKey`\n * - **Commitment** — `getRescueCommitmentGenerator`\n *\n * @packageDocumentation\n * @module implementation/cryptography/rescue-cipher\n * @public\n */\n\nimport { getRescueCipherInstance, type RescueCipherInstance } from \"./engine\";\nimport type {\n RcDecryptorFunction as RcDecryptorFunction,\n RcEncryptorFunction as RcEncryptorFunction,\n RcEncryptorWithNonceFunction as RcEncryptorWithNonceFunction,\n RcKeyGeneratorFunction as RcKeyGeneratorFunction,\n} from \"./interfaces\";\nimport type {\n X25519GetSharedSecretFunction as X25519GetSharedSecretFunction,\n RandomNonceGeneratorFunction as RandomNonceGeneratorFunction,\n} from \"../interfaces\";\nimport {\n assertRcCiphertext,\n assertRcCounter,\n assertRcEncryptionNonce,\n assertRcKey,\n assertRcPlaintext,\n assertSharedSecret,\n assertU256LeBytes,\n assertX25519PrivateKey,\n assertX25519PublicKey,\n assertBn254FieldElement,\n type Bn254FieldElement,\n type Curve25519FieldElement,\n type Nonce,\n type RcCiphertext,\n type RcCounter,\n type RcEncryptionNonce,\n type RcKey,\n type RcPlaintext,\n type SharedSecret,\n type U128,\n type X25519PrivateKey,\n type X25519PublicKey,\n} from \"../../types\";\nimport { x25519 } from \"@noble/curves/ed25519.js\";\nimport { generateRandomNonce as defaultGenerateRandomNonce } from \"../../common/arcium\";\nimport {\n decodeU256LeBytesToU256,\n encodeU128ToU128LeBytes,\n encodeU256ToU256LeBytes,\n} from \"../../utils\";\nimport { createU256, createBn254FieldElement } from \"../../common/type-helpers\";\n\n/* =============================================================================\n * TYPES\n * ============================================================================= */\n\n/**\n * Function type for creating a {@link RescueCipherInstance} from a {@link SharedSecret}.\n *\n * @param sharedSecret - A valid 32-byte X25519 shared secret derived from a\n * DH exchange. Used as the symmetric key for the Rescue-XLIX cipher.\n * @returns A freshly constructed {@link RescueCipherInstance} ready for encryption\n * or decryption operations.\n *\n * @remarks\n * Implementations must not cache the resulting cipher instance; a new instance\n * must be returned on each call to avoid retaining key material in memory.\n *\n * @public\n *\n * @example\n * ```typescript\n * const getCipher: GetRescueCipherFunction = getRescueCipher;\n * const cipher = getCipher(sharedSecret);\n * const ciphertexts = cipher.encrypt(plaintexts, nonceBytes);\n * ```\n */\nexport type GetRescueCipherFunction = (sharedSecret: SharedSecret) => RescueCipherInstance;\n\n/**\n * Function type for creating a {@link RescueCipherInstance} from an X25519 key pair.\n *\n * Performs X25519 ECDH internally and returns a cipher keyed on the resulting\n * shared secret.\n *\n * @param privateKey - The caller's X25519 private key (32 bytes).\n * @param publicKey - The counterparty's X25519 public key (32 bytes).\n * @returns A freshly constructed {@link RescueCipherInstance}.\n *\n * @remarks\n * Implementations must not cache either the shared secret or the cipher\n * instance. The shared secret is a sensitive intermediate value that should\n * live only as long as needed to construct the cipher.\n *\n * @public\n *\n * @example\n * ```typescript\n * const getCipherFromPair: GetRescueCipherFromKeyPairFunction =\n * getRescueCipherFromKeyPair;\n *\n * const cipher = getCipherFromPair(myPrivKey, mxePubKey);\n * ```\n */\nexport type GetRescueCipherFromKeyPairFunction = (\n privateKey: X25519PrivateKey,\n publicKey: X25519PublicKey,\n) => RescueCipherInstance;\n\n/* =============================================================================\n * DEPENDENCY INTERFACES\n * ============================================================================= */\n\n/**\n * Optional dependency injection bag for\n * {@link getRescueCipherFromKeyPair}.\n *\n * Allows substitution of the X25519 shared-secret derivation function and/or\n * the cipher factory, primarily for unit testing (e.g. providing a deterministic\n * `getSharedSecret` to produce predictable test vectors).\n *\n * @public\n *\n * @example\n * ```typescript\n * // Testing: deterministic shared secret\n * const cipher = getRescueCipherFromKeyPair(\n * myPrivKey,\n * theirPubKey,\n * { getSharedSecret: () => fixedSharedSecret },\n * );\n * ```\n */\nexport interface RescueCipherFromKeyPairDeps {\n /**\n * Optional custom X25519 shared-secret derivation function.\n *\n * Signature: `(privateKey, publicKey) => Uint8Array(32)`.\n * If not provided, uses `x25519.getSharedSecret` from `@noble/curves/ed25519`.\n *\n * @defaultValue `x25519.getSharedSecret`\n */\n readonly getSharedSecret?: X25519GetSharedSecretFunction;\n\n /**\n * Optional custom cipher factory function.\n *\n * If not provided, uses {@link getRescueCipher} which delegates to\n * `getRescueCipherInstance` from `../rescue-cipher`.\n *\n * @defaultValue {@link getRescueCipher}\n */\n readonly getCipher?: GetRescueCipherFunction;\n}\n\n/**\n * Required and optional dependencies for\n * {@link getRescueEncryptorFromPrivateKey} (automatic nonce variant).\n *\n * The `umbraX25519PublicKey` field is **required**: it is the Arcium MXE's public\n * key against which the sender performs DH key exchange. It must be obtained from\n * `getNetworkConfig(network).mxePubkey` before calling the factory.\n *\n * @public\n *\n * @example\n * ```typescript\n * const encryptor = getRescueEncryptorFromPrivateKey(myPrivKey, {\n * umbraX25519PublicKey: networkConfig.mxePubkey,\n * });\n * ```\n */\nexport interface RcEncryptorDeps {\n /**\n * Optional custom cipher-from-key-pair factory.\n *\n * If not provided, uses\n * {@link getRescueCipherFromKeyPair}.\n *\n * @defaultValue {@link getRescueCipherFromKeyPair}\n */\n readonly getCipherFromKeyPair?: GetRescueCipherFromKeyPairFunction;\n\n /**\n * Optional custom random nonce generator function.\n *\n * Must return a valid {@link RcEncryptionNonce} (U128 range).\n * If not provided, uses `generateRandomNonce` from `../../common/arcium`.\n *\n * @defaultValue `generateRandomNonce` from `../../common/arcium`\n */\n readonly generateNonce?: RandomNonceGeneratorFunction;\n\n /**\n * The X25519 public key of the Umbra MXE (multi-party execution environment).\n *\n * Obtain via `getNetworkConfig(network).mxePubkey`. This key is the counterparty\n * in the X25519 Diffie-Hellman exchange: the sender uses their private key with\n * this public key to derive a shared secret that the MXE can also derive using\n * its private key and the sender's public key.\n */\n readonly umbraX25519PublicKey: X25519PublicKey;\n}\n\n/**\n * Required and optional dependencies for\n * {@link getRescueEncryptorWithNonceFromPrivateKey} (explicit nonce variant).\n *\n * @remarks\n * This interface is identical to {@link RcEncryptorDeps} minus the `generateNonce`\n * field — because the caller is responsible for providing the nonce explicitly\n * on each encryption call.\n *\n * @public\n */\nexport interface RcEncryptorWithNonceDeps {\n /**\n * Optional custom cipher-from-key-pair factory.\n *\n * @defaultValue {@link getRescueCipherFromKeyPair}\n */\n readonly getCipherFromKeyPair?: GetRescueCipherFromKeyPairFunction;\n\n /**\n * The X25519 public key of the Umbra MXE.\n *\n * Obtain via `getNetworkConfig(network).mxePubkey`.\n */\n readonly umbraX25519PublicKey: X25519PublicKey;\n}\n\n/**\n * Required and optional dependencies for {@link getRescueDecryptorFromPrivateKey}.\n *\n * @public\n */\nexport interface RcDecryptorDeps {\n /**\n * Optional custom cipher-from-key-pair factory.\n *\n * @defaultValue {@link getRescueCipherFromKeyPair}\n */\n readonly getCipherFromKeyPair?: GetRescueCipherFromKeyPairFunction;\n\n /**\n * The X25519 public key of the Umbra MXE.\n *\n * Obtain via `getNetworkConfig(network).mxePubkey`.\n */\n readonly umbraX25519PublicKey: X25519PublicKey;\n}\n\n/**\n * Required and optional dependencies for {@link getRescueKeyGeneratorFromPrivateKey}.\n *\n * @public\n */\nexport interface RcKeyGeneratorDeps {\n /**\n * Optional custom factory that creates an\n * {@link RcEncryptorWithNonceFunction} from a private key.\n *\n * If not provided, uses {@link getRescueEncryptorWithNonceFromPrivateKey}.\n *\n * @defaultValue A closure over {@link getRescueEncryptorWithNonceFromPrivateKey}\n */\n readonly getEncryptorWithNonce?: (privateKey: X25519PrivateKey) => RcEncryptorWithNonceFunction;\n\n /**\n * The X25519 public key of the Umbra MXE.\n *\n * Obtain via `getNetworkConfig(network).mxePubkey`.\n */\n readonly umbraX25519PublicKey: X25519PublicKey;\n}\n\n/* =============================================================================\n * HELPER FUNCTIONS\n * ============================================================================= */\n\n/**\n * Returns the largest value in an array of {@link RcCounter} values.\n *\n * @param counters - The array of counters to search. May be empty.\n * @returns The maximum counter value as a `bigint`, or `0n` if the array is empty.\n *\n * @remarks\n * ## Why Not `Math.max`?\n *\n * JavaScript's `Math.max` converts its arguments to `number`, which is a 64-bit\n * IEEE-754 double. Doubles can only represent integers exactly up to 2^53 - 1\n * (≈ 9 × 10^15). Since {@link RcCounter} values are field elements in GF(p) where\n * p = 2^255 - 19, counters can vastly exceed that range. This function uses\n * native `bigint` comparison (`>`) to avoid any precision loss.\n *\n * @internal\n *\n * @example\n * ```typescript\n * // Internal usage in getRescueKeyGeneratorFromPrivateKey\n * const counters = [0n, 5n, 10n] as RcCounter[];\n * const max = findMaxCounter(counters);\n * // max === 10n\n * ```\n *\n * @example\n * ```typescript\n * // Empty array edge case\n * const max = findMaxCounter([]);\n * // max === 0n\n * ```\n */\nfunction findMaxCounter(counters: readonly RcCounter[]): bigint {\n if (counters.length === 0) {\n return 0n;\n }\n\n let max = counters[0];\n for (let index = 1; index < counters.length; index++) {\n const counter = counters[index];\n if (counter > max) {\n max = counter;\n }\n }\n return max;\n}\n\n/* =============================================================================\n * CIPHER INSTANCE MANAGEMENT\n * ============================================================================= */\n\n/**\n * Creates a fresh {@link RescueCipherInstance} from a {@link SharedSecret}.\n *\n * This is a thin wrapper around `getRescueCipherInstance` from `../rescue-cipher`\n * that validates the shared secret with {@link assertSharedSecret} before passing\n * it to the cipher factory.\n *\n * @param sharedSecret - A 32-byte X25519 shared secret derived from DH key exchange.\n * Must pass {@link assertSharedSecret} validation.\n * @returns A new {@link RescueCipherInstance} keyed on the shared secret.\n *\n * @throws {CryptographyAssertionError} If `sharedSecret` fails {@link assertSharedSecret}.\n *\n * @remarks\n * ## No Caching\n *\n * A fresh `RescueCipherInstance` is created on every call. Neither the instance\n * nor any intermediate key material is stored in a closure or module-level\n * variable. This minimises the window during which the derived key lives in\n * JavaScript heap memory.\n *\n * ## Key Schedule\n *\n * The Rescue-XLIX cipher's key schedule is performed inside `getRescueCipherInstance`.\n * The `sharedSecret` bytes are interpreted as a Curve25519 field element and used\n * as the symmetric key for the cipher. The cipher does not perform KDF; the\n * caller is responsible for ensuring the shared secret has sufficient entropy\n * (which X25519 DH guarantees when keys are properly generated).\n *\n * @public\n *\n * @example\n * ```typescript\n * const sharedSecret: SharedSecret = x25519.getSharedSecret(myPrivKey, theirPubKey);\n * assertSharedSecret(sharedSecret);\n * const cipher = getRescueCipher(sharedSecret);\n *\n * // Each call returns a distinct cipher instance:\n * const anotherCipher = getRescueCipher(sharedSecret);\n * // cipher !== anotherCipher\n * ```\n *\n * @see {@link getRescueCipherFromKeyPair} — higher-level variant\n * @see {@link GetRescueCipherFunction} — the function type this satisfies\n */\nexport function getRescueCipher(sharedSecret: SharedSecret): RescueCipherInstance {\n assertSharedSecret(sharedSecret);\n return getRescueCipherInstance(sharedSecret);\n}\n\n/**\n * Creates a fresh {@link RescueCipherInstance} from an X25519 private/public key pair.\n *\n * Performs X25519 Diffie-Hellman scalar multiplication to derive the shared secret,\n * then constructs a Rescue cipher keyed on that secret. The standard usage is to\n * pass the caller's private key and the Umbra MXE's public key.\n *\n * @param privateKey - The X25519 private key of the local party (32 bytes).\n * Typically the user's ephemeral or long-term X25519 private key.\n * @param publicKey - The X25519 public key of the remote party (32 bytes).\n * Typically the Umbra MXE public key from `getNetworkConfig(network).mxePubkey`.\n * @param deps - Optional dependency injection for testing or custom implementations.\n * @returns A new {@link RescueCipherInstance} keyed on the derived shared secret.\n *\n * @throws {CryptographyAssertionError} If `privateKey` fails {@link assertX25519PrivateKey}.\n * @throws {CryptographyAssertionError} If `publicKey` fails {@link assertX25519PublicKey}.\n * @throws {CryptographyAssertionError} If the derived shared secret fails\n * {@link assertSharedSecret} (should not occur with valid key inputs).\n *\n * @remarks\n * ## Key Exchange Security\n *\n * X25519 is a Diffie-Hellman function on Curve25519 (RFC 7748). The shared secret\n * is the x-coordinate of the scalar product:\n * ```\n * sharedSecret = x25519(privateKey, publicKey) = privateKey · publicKey\n * ```\n * The shared secret is 32 bytes (256 bits) and has approximately 252 bits of\n * entropy due to the Curve25519 cofactor. `@noble/curves/ed25519` implements\n * this correctly, including clamping the private scalar.\n *\n * ## No Caching\n *\n * Neither the shared secret nor the cipher instance is retained after the\n * function returns. The only reference is in the returned `RescueCipherInstance`\n * object itself (which may hold a reference to its key schedule internally).\n * Callers should discard the cipher instance as soon as encryption or decryption\n * is complete.\n *\n * @public\n *\n * @example\n * ```typescript\n * const cipher = getRescueCipherFromKeyPair(\n * myPrivateKey,\n * networkConfig.mxePubkey,\n * );\n * const rawCiphertexts = cipher.encrypt([balance], nonceBytes);\n * ```\n *\n * @example\n * ```typescript\n * // Testing with a fixed shared secret:\n * const cipher = getRescueCipherFromKeyPair(\n * myPrivKey,\n * theirPubKey,\n * { getSharedSecret: () => fixedTestSecret },\n * );\n * ```\n *\n * @see {@link getRescueCipher} — lower-level variant that accepts a pre-derived secret\n * @see {@link GetRescueCipherFromKeyPairFunction} — the function type this satisfies\n * @see {@link RescueCipherFromKeyPairDeps} — dependency injection interface\n */\nexport function getRescueCipherFromKeyPair(\n privateKey: X25519PrivateKey,\n publicKey: X25519PublicKey,\n deps?: RescueCipherFromKeyPairDeps,\n): RescueCipherInstance {\n const { getSharedSecret = x25519.getSharedSecret, getCipher = getRescueCipher } = deps ?? {};\n\n assertX25519PrivateKey(privateKey);\n assertX25519PublicKey(publicKey);\n\n // Compute shared secret\n const sharedSecret = getSharedSecret(privateKey, publicKey);\n assertSharedSecret(sharedSecret);\n\n // Create fresh cipher instance\n return getCipher(sharedSecret);\n}\n\n/* =============================================================================\n * ENCRYPTION FUNCTIONS\n * ============================================================================= */\n\n/**\n * Creates an {@link RcEncryptorFunction} bound to the given private key.\n *\n * The returned async function encrypts an array of {@link RcPlaintext} field\n * elements using the Rescue-XLIX cipher in counter mode. A fresh random\n * 128-bit nonce is generated automatically for each encryption call. The\n * nonce is returned alongside the ciphertexts and **must** be stored for\n * later decryption.\n *\n * @param privateKey - The X25519 private key for DH key exchange (32 bytes).\n * @param deps - Required and optional dependencies. Must include `umbraX25519PublicKey`.\n * @returns An async {@link RcEncryptorFunction} closure.\n *\n * @throws {CryptographyAssertionError} If `privateKey` fails {@link assertX25519PrivateKey}.\n *\n * @remarks\n * ## Counter Mode Encryption\n *\n * The Rescue cipher operates in counter mode (CTR): plaintext element i is\n * combined with the keystream generated at counter position i. The nonce\n * determines the keystream starting point. Encrypting n plaintexts generates\n * n ciphertext field elements, each in GF(p).\n *\n * ## Ciphertext Encoding\n *\n * The raw cipher output is an array of 32-byte little-endian integers (one per\n * plaintext element). These are decoded to `bigint` via `decodeU256LeBytesToU256`\n * and asserted as {@link RcCiphertext} values before being returned.\n *\n * ## Nonce Handling\n *\n * The nonce is encoded as a 16-byte little-endian integer (`encodeU128ToU128LeBytes`)\n * before being passed to `cipher.encrypt`. The raw `RcEncryptionNonce` bigint is\n * also returned to the caller. Store the nonce alongside the ciphertexts on-chain\n * or in your database; it is public and does not need to be kept secret.\n *\n * ## Type Casting Note\n *\n * `cipher.encrypt()` expects `Array<bigint>` while we use `readonly RcPlaintext[]`.\n * The spread `[...plaintexts]` converts the readonly array to a mutable one.\n * `RcPlaintext` is assignable to `bigint` structurally, so this is safe.\n *\n * ## Security\n *\n * A fresh encryptor function and cipher instance is created for each call to this\n * factory. The private key is captured in the closure but is not copied — it is\n * the caller's responsibility to zero the private key bytes after creating the\n * encryptor.\n *\n * @public\n *\n * @example\n * ```typescript\n * const encryptor = getRescueEncryptorFromPrivateKey(myPrivateKey, {\n * umbraX25519PublicKey: networkConfig.mxePubkey,\n * });\n *\n * const plaintexts: RcPlaintext[] = [balance, auxData];\n * const { ciphertexts, nonce } = await encryptor(plaintexts);\n *\n * // Store ciphertexts and nonce on-chain or in your database for later decryption:\n * await storeEncryptedBalance({ ciphertexts, nonce });\n * ```\n *\n * @see {@link getRescueEncryptorWithNonceFromPrivateKey} — variant with explicit nonce parameter\n * @see {@link getRescueDecryptorFromPrivateKey} — paired decryption factory\n * @see {@link RcEncryptorFunction} — the function type returned\n * @see {@link RcEncryptorDeps} — dependency injection interface\n */\nexport function getRescueEncryptorFromPrivateKey(\n privateKey: X25519PrivateKey,\n deps: RcEncryptorDeps,\n): RcEncryptorFunction {\n const {\n getCipherFromKeyPair = getRescueCipherFromKeyPair,\n generateNonce = defaultGenerateRandomNonce,\n umbraX25519PublicKey,\n } = deps;\n\n assertX25519PrivateKey(privateKey);\n\n // Create new encryptor function (no caching for security)\n\n const encryptor: RcEncryptorFunction = async (\n plaintexts: readonly RcPlaintext[],\n ): Promise<{\n ciphertexts: RcCiphertext[];\n nonce: RcEncryptionNonce;\n \n }> => {\n // Validate all plaintext elements\n for (const plaintext of plaintexts) {\n assertRcPlaintext(plaintext);\n }\n\n const cipher = getCipherFromKeyPair(privateKey, umbraX25519PublicKey);\n const nonce = generateNonce();\n\n const rawCiphertexts = cipher.encrypt([...plaintexts], encodeU128ToU128LeBytes(nonce));\n\n const decodedCiphertexts: RcCiphertext[] = [];\n for (const rawCiphertext of rawCiphertexts) {\n const bytes = new Uint8Array(rawCiphertext);\n assertU256LeBytes(bytes);\n const decodedCiphertext = decodeU256LeBytesToU256(bytes);\n assertRcCiphertext(decodedCiphertext);\n decodedCiphertexts.push(decodedCiphertext);\n }\n\n return { ciphertexts: decodedCiphertexts, nonce };\n };\n\n return encryptor;\n}\n\n/**\n * Creates an {@link RcEncryptorWithNonceFunction} bound to the given private key.\n *\n * Like {@link getRescueEncryptorFromPrivateKey}, but the caller provides the nonce\n * explicitly on each encryption call instead of having one generated automatically.\n * This variant is useful for deterministic encryption (e.g. test vectors) or for\n * counter-based schemes where the nonce is managed externally.\n *\n * @param privateKey - The X25519 private key for DH key exchange (32 bytes).\n * @param deps - Required and optional dependencies. Must include `umbraX25519PublicKey`.\n * @returns An async {@link RcEncryptorWithNonceFunction} closure.\n *\n * @throws {CryptographyAssertionError} If `privateKey` fails {@link assertX25519PrivateKey}.\n *\n * @remarks\n * ## Critical Nonce Requirement\n *\n * **NEVER reuse a nonce with the same key.** In CTR mode, if the same (key, nonce)\n * pair is used for two different plaintexts, an attacker who observes both\n * ciphertexts can XOR them to cancel the keystream and recover the XOR of the\n * plaintexts — completely breaking confidentiality. The field-arithmetic version of\n * this attack is: `ct1 XOR ct2 = pt1 XOR pt2` (actually additive, not XOR, but the\n * principle is the same).\n *\n * When in doubt, use {@link getRescueEncryptorFromPrivateKey} instead, which generates\n * a fresh random nonce for every call.\n *\n * ## Ciphertext Encoding\n *\n * Same as {@link getRescueEncryptorFromPrivateKey}: raw cipher output (32-byte LE\n * integers) is decoded to `bigint` via `decodeU256LeBytesToU256` and returned as\n * {@link RcCiphertext} values.\n *\n * @public\n *\n * @example\n * ```typescript\n * const encryptor = getRescueEncryptorWithNonceFromPrivateKey(myPrivateKey, {\n * umbraX25519PublicKey: networkConfig.mxePubkey,\n * });\n *\n * // Caller is responsible for nonce uniqueness:\n * const nonce = generateRandomNonce();\n * const plaintexts: RcPlaintext[] = [balance];\n * const ciphertexts = await encryptor(plaintexts, nonce);\n * ```\n *\n * @example\n * ```typescript\n * // Deterministic test vectors (DO NOT use in production with real keys):\n * const testNonce = 42n as RcEncryptionNonce;\n * const ciphertexts = await encryptor(plaintexts, testNonce);\n * ```\n *\n * @see {@link getRescueEncryptorFromPrivateKey} — preferred variant with automatic nonce\n * @see {@link RcEncryptorWithNonceFunction} — the function type returned\n * @see {@link RcEncryptorWithNonceDeps} — dependency injection interface\n */\nexport function getRescueEncryptorWithNonceFromPrivateKey(\n privateKey: X25519PrivateKey,\n deps: RcEncryptorWithNonceDeps,\n): RcEncryptorWithNonceFunction {\n const {\n getCipherFromKeyPair = getRescueCipherFromKeyPair,\n umbraX25519PublicKey,\n } = deps;\n\n assertX25519PrivateKey(privateKey);\n\n // Create new encryptor function (no caching for security)\n\n const encryptor: RcEncryptorWithNonceFunction = async (\n plaintexts: readonly RcPlaintext[],\n nonce: RcEncryptionNonce,\n \n ): Promise<RcCiphertext[]> => {\n // Validate all plaintext elements\n for (const plaintext of plaintexts) {\n assertRcPlaintext(plaintext);\n }\n assertRcEncryptionNonce(nonce);\n\n const cipher = getCipherFromKeyPair(privateKey, umbraX25519PublicKey);\n\n const rawCiphertexts = cipher.encrypt([...plaintexts], encodeU128ToU128LeBytes(nonce));\n\n const decodedCiphertexts: RcCiphertext[] = [];\n for (const rawCiphertext of rawCiphertexts) {\n const bytes = new Uint8Array(rawCiphertext);\n assertU256LeBytes(bytes);\n const decodedCiphertext = decodeU256LeBytesToU256(bytes);\n assertRcCiphertext(decodedCiphertext);\n decodedCiphertexts.push(decodedCiphertext);\n }\n\n return decodedCiphertexts;\n };\n\n return encryptor;\n}\n\n/* =============================================================================\n * DECRYPTION FUNCTIONS\n * ============================================================================= */\n\n/**\n * Creates an {@link RcDecryptorFunction} bound to the given private key.\n *\n * The returned async function decrypts an array of {@link RcCiphertext} field\n * elements using the Rescue-XLIX cipher in counter mode with the provided nonce.\n * The nonce must be exactly the same value that was used during encryption;\n * any deviation will produce incorrect (garbage) output without raising an error.\n *\n * @param privateKey - The X25519 private key for DH key exchange (32 bytes).\n * @param deps - Required and optional dependencies. Must include `umbraX25519PublicKey`.\n * @returns An async {@link RcDecryptorFunction} closure.\n *\n * @throws {CryptographyAssertionError} If `privateKey` fails {@link assertX25519PrivateKey}.\n *\n * @remarks\n * ## Decryption is Not Authenticated\n *\n * Unlike AES-256-GCM, the Rescue cipher in CTR mode does **not** include an\n * authentication tag. There is no built-in mechanism to detect if the ciphertext\n * has been tampered with or if the wrong nonce was used — the decryptor will\n * silently return garbage plaintexts in those cases.\n *\n * Authentication in the Umbra protocol is provided at a higher level:\n * - On-chain, the Arcium callback verifies the MPC computation's signed output.\n * - For client-side decryption, callers should cross-check the decrypted value\n * against the on-chain state (e.g. verify the balance is non-negative and\n * matches the commitment hash).\n *\n * ## Ciphertext Encoding\n *\n * Each {@link RcCiphertext} bigint is encoded as a 32-byte little-endian array\n * via `encodeU256ToU256LeBytes` before being passed to `cipher.decrypt`. The\n * raw plaintext bigints returned by the cipher are asserted as {@link RcPlaintext}\n * values before being returned.\n *\n * ## Nonce Encoding\n *\n * Same as encryption: the nonce is encoded as a 16-byte LE integer via\n * `encodeU128ToU128LeBytes` before being passed to `cipher.decrypt`.\n *\n * @public\n *\n * @example\n * ```typescript\n * const decryptor = getRescueDecryptorFromPrivateKey(myPrivateKey, {\n * umbraX25519PublicKey: networkConfig.mxePubkey,\n * });\n *\n * // Use the same nonce that was used during encryption:\n * const { ciphertexts, nonce } = loadEncryptedBalance();\n * const plaintexts = await decryptor(ciphertexts, nonce);\n * const [balance] = plaintexts;\n * ```\n *\n * @see {@link getRescueEncryptorFromPrivateKey} — paired encryption factory\n * @see {@link RcDecryptorFunction} — the function type returned\n * @see {@link RcDecryptorDeps} — dependency injection interface\n */\nexport function getRescueDecryptorFromPrivateKey(\n privateKey: X25519PrivateKey,\n deps: RcDecryptorDeps,\n): RcDecryptorFunction {\n const {\n getCipherFromKeyPair = getRescueCipherFromKeyPair,\n umbraX25519PublicKey,\n } = deps;\n\n assertX25519PrivateKey(privateKey);\n\n // Create new decryptor function (no caching for security)\n\n const decryptor: RcDecryptorFunction = async (\n ciphertexts: readonly RcCiphertext[],\n nonce: RcEncryptionNonce,\n \n ): Promise<RcPlaintext[]> => {\n // Validate all ciphertext elements\n for (const ciphertext of ciphertexts) {\n assertRcCiphertext(ciphertext);\n }\n assertRcEncryptionNonce(nonce);\n\n const cipher = getCipherFromKeyPair(privateKey, umbraX25519PublicKey);\n\n const rawCiphertexts = ciphertexts.map((ct) => encodeU256ToU256LeBytes(ct));\n const rawPlaintexts = cipher.decrypt(\n rawCiphertexts.map((c) => [...c]),\n encodeU128ToU128LeBytes(nonce),\n );\n\n const decodedPlaintexts: RcPlaintext[] = [];\n for (const rawPlaintext of rawPlaintexts) {\n assertRcPlaintext(rawPlaintext);\n decodedPlaintexts.push(rawPlaintext);\n }\n\n return decodedPlaintexts;\n };\n\n return decryptor;\n}\n\n/* =============================================================================\n * KEY GENERATION FUNCTIONS\n * ============================================================================= */\n\n/**\n * Creates an {@link RcKeyGeneratorFunction} bound to the given private key.\n *\n * The returned async function generates encryption keys for the specified counter\n * positions by encrypting zero-value plaintexts at each counter. This implements\n * a counter-based key derivation scheme where the key for counter `i` is the\n * ciphertext produced by encrypting `0n` at position `i`.\n *\n * @param privateKey - The X25519 private key for DH key exchange (32 bytes).\n * @param deps - Required and optional dependencies. Must include `umbraX25519PublicKey`.\n * @returns An async {@link RcKeyGeneratorFunction} closure.\n *\n * @throws {CryptographyAssertionError} If `privateKey` fails {@link assertX25519PrivateKey}.\n *\n * @remarks\n * ## Key Generation Algorithm\n *\n * For a set of requested counter positions `{c1, c2, ..., cn}`:\n * 1. Find `maxCounter = max(c1, ..., cn)`.\n * 2. Build a zero-plaintext array of length `maxCounter + 1`:\n * `plaintexts = [0n, 0n, ..., 0n]` (maxCounter+1 elements).\n * 3. Encrypt all plaintexts with the given nonce.\n * 4. Return a `Map<RcCounter, RcKey>` where `map.get(ci) = ciphertexts[ci]`.\n *\n * This approach ensures that all keys are derived from the same (key, nonce)\n * pair, making them deterministic given the same inputs. The caller must use\n * a distinct nonce for each key-generation session (or equivalently, must not\n * reuse the same nonce with the same private key).\n *\n * ## Counter Comparison\n *\n * Counter values are compared using bigint arithmetic (via {@link findMaxCounter})\n * to avoid precision loss for large counter values.\n *\n * ## Memory Consideration\n *\n * If the maximum counter value is very large, this function will allocate a\n * zero-plaintext array of that size and perform that many cipher operations.\n * Callers should avoid passing very sparse counter sets with extremely large\n * maximum values.\n *\n * @public\n *\n * @example\n * ```typescript\n * const keyGen = getRescueKeyGeneratorFromPrivateKey(myPrivateKey, {\n * umbraX25519PublicKey: networkConfig.mxePubkey,\n * });\n *\n * const counters: RcCounter[] = [0n, 3n, 7n];\n * const nonce = generateRandomNonce();\n * const keysMap = await keyGen(counters, nonce);\n *\n * const key0 = keysMap.get(0n); // RcKey for counter 0\n * const key3 = keysMap.get(3n); // RcKey for counter 3\n * const key7 = keysMap.get(7n); // RcKey for counter 7\n * ```\n *\n * @see {@link RcKeyGeneratorFunction} — the function type returned\n * @see {@link RcKeyGeneratorDeps} — dependency injection interface\n */\nexport function getRescueKeyGeneratorFromPrivateKey(\n privateKey: X25519PrivateKey,\n deps: RcKeyGeneratorDeps,\n): RcKeyGeneratorFunction {\n const { umbraX25519PublicKey } = deps;\n const getEncryptorWithNonce =\n deps.getEncryptorWithNonce ??\n ((pk: X25519PrivateKey) =>\n getRescueEncryptorWithNonceFromPrivateKey(pk, {\n umbraX25519PublicKey,\n }));\n\n assertX25519PrivateKey(privateKey);\n\n // Create new key generator function (no caching for security)\n const keyGenerator: RcKeyGeneratorFunction = async (\n counters: readonly RcCounter[],\n nonce: RcEncryptionNonce,\n ): Promise<ReadonlyMap<RcCounter, RcKey>> => {\n // Validate all counter elements\n for (const counter of counters) {\n assertRcCounter(counter);\n }\n assertRcEncryptionNonce(nonce);\n\n const encryptor = getEncryptorWithNonce(privateKey);\n\n // Use proper bigint comparison to find the largest counter\n const largestCounter = findMaxCounter(counters);\n\n // Generate plaintexts (all zeros) for positions 0 to largestCounter\n const plaintexts: RcPlaintext[] = [];\n for (let counter = 0n; counter <= largestCounter; counter++) {\n const plaintext = 0n;\n assertRcPlaintext(plaintext);\n plaintexts.push(plaintext);\n }\n\n // Encrypt to generate keys\n const keys = await encryptor(plaintexts, nonce);\n\n // Map requested counters to their corresponding keys\n const keysMap = new Map<RcCounter, RcKey>();\n for (const counter of counters) {\n const key = keys[Number(counter)];\n \n if (key !== undefined) {\n assertRcKey(key);\n keysMap.set(counter, key);\n }\n }\n\n return keysMap;\n };\n\n return keyGenerator;\n}\n\n/* =============================================================================\n * RESCUE ENCRYPTION COMMITMENT\n * ============================================================================= */\n\nimport type { PoseidonAggregatorFunction as PoseidonAggregatorFunction } from \"../poseidon\";\nimport { getPoseidonAggregator } from \"../poseidon\";\nimport { convertU256ToBase85Limbs } from \"../../common/converters/cryptography\";\nimport type { Base85LimbTuple, U256 } from \"../../types\";\n\n/**\n * Function type for converting {@link U256}-compatible field elements to Base85 limb tuples.\n *\n * Used inside {@link RescueCommitmentGeneratorFunction} to decompose\n * 256-bit ciphertext and plaintext values into three smaller limbs that fit\n * within the BN254 scalar field (used by the Poseidon aggregator).\n *\n * @param value - A {@link U256}-branded bigint value to decompose.\n * @returns A {@link Base85LimbTuple} containing `{ low, middle, high }` limbs.\n *\n * @public\n */\nexport type ConvertU256ToBase85LimbsFunction = (value: U256) => Base85LimbTuple;\n\n/**\n * Default converter that adapts `convertU256ToBase85Limbs` to the\n * {@link ConvertU256ToBase85LimbsFunction} signature.\n *\n * @remarks\n * The underlying `convertU256ToBase85Limbs` function is imported from\n * `../../common/converters/cryptography`. This wrapper exists to match the\n * function signature expected by {@link createCommitmentGeneratorFunction}.\n *\n * @internal\n */\nconst defaultConvertU256ToBase85Limbs: ConvertU256ToBase85LimbsFunction = (value: U256) =>\n convertU256ToBase85Limbs(value);\n\n/**\n * Optional dependency injection bag for\n * {@link getRescueCommitmentGenerator}.\n *\n * @public\n */\nexport interface RescueCommitmentGeneratorDeps {\n /**\n * Optional custom Poseidon aggregator function.\n *\n * If not provided, uses the default from {@link getPoseidonAggregator}.\n * The Poseidon hash is a ZK-friendly sponge hash over the BN254 scalar\n * field, making the commitment efficiently verifiable inside a Groth16 circuit.\n *\n * @defaultValue Return value of `getPoseidonAggregator()`\n */\n readonly poseidonAggregator?: PoseidonAggregatorFunction;\n\n /**\n * Optional custom function to convert {@link U256} values to Base85 limb tuples.\n *\n * If not provided, uses {@link defaultConvertU256ToBase85Limbs}.\n * Base85 decomposition is needed because 256-bit field elements (from\n * Curve25519) do not fit in a single BN254 scalar field element; splitting\n * into three limbs allows the Poseidon hash to process them.\n *\n * @defaultValue `defaultConvertU256ToBase85Limbs`\n */\n readonly convertU256ToBase85Limbs?: ConvertU256ToBase85LimbsFunction;\n}\n\n/**\n * Function type for generating a Poseidon-based commitment over Rescue encryption data.\n *\n * Computes a single BN254 field element that commits to the ciphertexts,\n * plaintexts, keys, blinding factor, nonce, and the Arcis public key, in that\n * order. The commitment is ZK-friendly (efficient to verify inside a Groth16\n * circuit) and binding (cannot be opened to different values under the\n * collision-resistance of Poseidon).\n *\n * @param encryptions - Array of {@link RcCiphertext} values produced by the Rescue cipher.\n * @param data - Array of plaintext {@link Curve25519FieldElement} values that were encrypted.\n * Must have the same length as `encryptions`.\n * @param keys - Array of {@link Curve25519FieldElement} Rescue keys used for encryption.\n * Must have the same length as `encryptions`.\n * @param blindingFactor - A {@link Bn254FieldElement} blinding factor that hides the\n * commitment from an adversary who knows the public inputs.\n * @param nonce - The {@link Nonce} (= {@link RcEncryptionNonce}) used in the encryption.\n * @param arcisPublicKeyLow - Low 128 bits of the Arcis (Arcium) public key as a {@link U128}.\n * @param arcisPublicKeyHigh - High 128 bits of the Arcis public key as a {@link U128}.\n * @returns A promise resolving to a {@link Bn254FieldElement} representing the commitment.\n *\n * @throws {Error} If `encryptions` is empty (at least one encryption is required).\n * @throws {Error} If `encryptions`, `data`, and `keys` do not all have the same length.\n *\n * @public\n */\nexport type RescueCommitmentGeneratorFunction = (\n encryptions: readonly RcCiphertext[],\n data: readonly Curve25519FieldElement[],\n keys: readonly Curve25519FieldElement[],\n blindingFactor: Bn254FieldElement,\n nonce: Nonce,\n arcisPublicKeyLow: U128,\n arcisPublicKeyHigh: U128,\n) => Promise<Bn254FieldElement>;\n\n/**\n * Cached singleton for the default commitment generator.\n *\n * @remarks\n * Lazily initialised on first call to\n * {@link getRescueCommitmentGenerator} without custom deps.\n * Using custom deps bypasses this cache and creates a new generator function.\n *\n * @internal\n */\nlet cachedDefaultCommitmentGenerator: RescueCommitmentGeneratorFunction | null = null;\n\n/**\n * Creates a {@link RescueCommitmentGeneratorFunction} from a Poseidon aggregator\n * and a limb converter.\n *\n * @param poseidonAggregator - The Poseidon hash aggregator to use.\n * @param convertToLimbs - The function to split 256-bit values into Base85 limbs.\n * @returns A new async commitment generator function.\n *\n * @remarks\n * ## Aggregator Input Ordering\n *\n * The Poseidon aggregator is called with inputs in the following canonical order:\n * 1. For each ciphertext: `[low, middle, high]` limbs (3 BN254 elements each).\n * 2. For each plaintext datum: `[low, middle, high]` limbs.\n * 3. For each key: `[low, middle, high]` limbs.\n * 4. The blinding factor (1 BN254 element).\n * 5. The nonce (1 BN254 element, fits because nonce ≤ 2^128 - 1 < BN254 prime).\n * 6. The Arcis public key low part (1 BN254 element).\n * 7. The Arcis public key high part (1 BN254 element).\n *\n * **This ordering must not change.** The corresponding Circom circuit encodes the\n * same ordering; any deviation will produce a commitment that cannot be verified\n * on-chain.\n *\n * ## Base85 Decomposition\n *\n * Curve25519 field elements (256 bits) are larger than the BN254 scalar field\n * prime (≈254 bits). To represent a Curve25519 element in BN254, it is split\n * into three limbs — `low`, `middle`, and `high` — each of which fits in a\n * single BN254 scalar field element. The Poseidon hash then treats these three\n * limbs as three independent field elements.\n *\n * @internal\n *\n * @example\n * ```typescript\n * // Internal usage\n * const gen = createCommitmentGeneratorFunction(\n * getPoseidonAggregator(),\n * defaultConvertU256ToBase85Limbs,\n * );\n * const commitment = await gen(ciphertexts, plaintexts, keys, blinding, nonce, keyLow, keyHigh);\n * ```\n */\nfunction createCommitmentGeneratorFunction(\n poseidonAggregator: PoseidonAggregatorFunction,\n convertToLimbs: ConvertU256ToBase85LimbsFunction,\n): RescueCommitmentGeneratorFunction {\n return async (\n encryptions: readonly RcCiphertext[],\n data: readonly Curve25519FieldElement[],\n keys: readonly Curve25519FieldElement[],\n blindingFactor: Bn254FieldElement,\n nonce: Nonce,\n arcisPublicKeyLow: U128,\n arcisPublicKeyHigh: U128,\n ): Promise<Bn254FieldElement> => {\n // Validate inputs\n if (encryptions.length === 0) {\n throw new Error(\n \"Rescue encryption commitment generator requires at least one encryption. \" +\n \"Provide a non-empty array of ciphertexts.\",\n );\n }\n\n if (encryptions.length !== data.length || encryptions.length !== keys.length) {\n throw new Error(\n \"Rescue encryption commitment generator: encryptions, data, and keys arrays \" +\n `must have the same length. Got ${String(encryptions.length)}, ${String(data.length)}, ${String(keys.length)}.`,\n );\n }\n\n // Collect all inputs for the aggregator\n const aggregatorInputs: Bn254FieldElement[] = [];\n\n // Add ciphertext limbs\n for (const ct of encryptions) {\n assertRcCiphertext(ct);\n const limbs = convertToLimbs(createU256(ct));\n aggregatorInputs.push(\n createBn254FieldElement(limbs.low),\n createBn254FieldElement(limbs.middle),\n createBn254FieldElement(limbs.high),\n );\n }\n\n // Add data limbs\n for (const d of data) {\n const limbs = convertToLimbs(createU256(d));\n aggregatorInputs.push(\n createBn254FieldElement(limbs.low),\n createBn254FieldElement(limbs.middle),\n createBn254FieldElement(limbs.high),\n );\n }\n\n // Add key limbs\n for (const k of keys) {\n const limbs = convertToLimbs(createU256(k));\n aggregatorInputs.push(\n createBn254FieldElement(limbs.low),\n createBn254FieldElement(limbs.middle),\n createBn254FieldElement(limbs.high),\n );\n }\n\n // Add blinding factor (as single field element, not limbs)\n aggregatorInputs.push(blindingFactor);\n\n // Add nonce (as single field element, fits in BN254)\n assertBn254FieldElement(nonce);\n aggregatorInputs.push(nonce);\n\n // Add Arcis public key parts\n assertBn254FieldElement(arcisPublicKeyLow);\n aggregatorInputs.push(arcisPublicKeyLow);\n assertBn254FieldElement(arcisPublicKeyHigh);\n aggregatorInputs.push(arcisPublicKeyHigh);\n\n // Compute the commitment using Poseidon aggregator\n const commitment = await poseidonAggregator(aggregatorInputs);\n\n assertBn254FieldElement(commitment);\n return commitment;\n };\n}\n\n/**\n * Returns a cached Rescue encryption commitment generator function.\n *\n * The commitment binds the ciphertext values, plaintext data, encryption keys,\n * blinding factor, nonce, and Arcis public key into a single BN254 field element\n * via the ZK-friendly Poseidon hash. This commitment can be verified inside a\n * Groth16 circuit without revealing the underlying data.\n *\n * @param deps - Optional dependency injection for custom Poseidon aggregator\n * and limb converter. When omitted, the default cached singleton is returned.\n * @returns A {@link RescueCommitmentGeneratorFunction}.\n *\n * @remarks\n * ## Caching Strategy\n *\n * - **No deps**: a module-level singleton `cachedDefaultCommitmentGenerator` is\n * created on first call and returned on all subsequent no-deps calls.\n * - **Custom deps**: a new generator is created on each call (no caching), because\n * there is no efficient keying strategy for two independent custom dependencies.\n *\n * ## Commitment Structure (input order to Poseidon)\n *\n * The Poseidon aggregator receives inputs in this canonical order, which must\n * match the corresponding Circom circuit:\n * 1. Ciphertext limbs: `[ct[0].low, ct[0].mid, ct[0].high, ct[1].low, ...]`\n * 2. Plaintext data limbs: `[d[0].low, d[0].mid, d[0].high, d[1].low, ...]`\n * 3. Key limbs: `[k[0].low, k[0].mid, k[0].high, k[1].low, ...]`\n * 4. Blinding factor (1 element)\n * 5. Nonce (1 element)\n * 6. Arcis public key low (1 element)\n * 7. Arcis public key high (1 element)\n *\n * ## Security Properties\n *\n * - **Binding**: Under Poseidon's collision-resistance, it is computationally\n * infeasible to find two different sets of inputs that produce the same commitment.\n * - **Hiding**: The blinding factor ensures the commitment does not leak information\n * about the encrypted data to an adversary who knows only the public inputs.\n * - **ZK-friendly**: The Poseidon hash is designed for efficient arithmetic circuit\n * representation, making it cheap to verify the commitment inside a Groth16 proof.\n *\n * @public\n *\n * @example\n * ```typescript\n * // Default cached generator\n * const generateCommitment = getRescueCommitmentGenerator();\n *\n * const commitment = await generateCommitment(\n * ciphertexts, // RcCiphertext[]\n * plaintexts, // Curve25519FieldElement[]\n * keys, // Curve25519FieldElement[]\n * blindingFactor, // Bn254FieldElement\n * nonce, // Nonce (RcEncryptionNonce)\n * arcisKeyLow, // U128\n * arcisKeyHigh, // U128\n * );\n * // commitment: Bn254FieldElement — submit on-chain as proof input\n * ```\n *\n * @example\n * ```typescript\n * // With custom dependencies (e.g. mock Poseidon for testing):\n * const testCommitment = getRescueCommitmentGenerator({\n * poseidonAggregator: myMockAggregator,\n * });\n * ```\n *\n * @see {@link RescueCommitmentGeneratorFunction} — the function type returned\n * @see {@link RescueCommitmentGeneratorDeps} — dependency injection interface\n */\nexport function getRescueCommitmentGenerator(\n deps?: RescueCommitmentGeneratorDeps,\n): RescueCommitmentGeneratorFunction {\n const { poseidonAggregator, convertU256ToBase85Limbs } = deps ?? {};\n\n // If no custom deps provided, use the cached default\n if (poseidonAggregator === undefined && convertU256ToBase85Limbs === undefined) {\n if (cachedDefaultCommitmentGenerator !== null) {\n return cachedDefaultCommitmentGenerator;\n }\n\n const defaultAggregator = getPoseidonAggregator();\n const generator = createCommitmentGeneratorFunction(\n defaultAggregator,\n defaultConvertU256ToBase85Limbs,\n );\n cachedDefaultCommitmentGenerator = generator;\n return generator;\n }\n\n // Custom deps - create a new generator (no caching)\n const resolvedAggregator = poseidonAggregator ?? getPoseidonAggregator();\n const resolvedConverter = convertU256ToBase85Limbs ?? defaultConvertU256ToBase85Limbs;\n\n return createCommitmentGeneratorFunction(resolvedAggregator, resolvedConverter);\n}\n","/**\n * Rescue Cipher Branded Types\n *\n * This module defines branded types for the Rescue-XLIX cipher primitives used in\n * Umbra's confidential token account encryption. These types provide compile-time\n * safety that prevents mixing up semantically different field elements (e.g. a\n * ciphertext cannot be passed where a key is expected, even though both are\n * `bigint` at runtime).\n *\n * ## What is the Rescue Cipher?\n *\n * Rescue-XLIX (Aly et al., 2019) is an algebraic block cipher and sponge hash\n * function designed for efficiency inside ZK-SNARK and MPC circuits. Unlike AES\n * (which uses bitwise operations), Rescue operates purely in a prime field GF(p),\n * making every operation directly expressible as arithmetic constraints in a\n * Groth16 or PLONK circuit.\n *\n * In Umbra, the Rescue cipher is used in counter mode (CTR) to encrypt token\n * balances stored in confidential token accounts. The key is derived via X25519\n * Diffie-Hellman between the user's private key and the Arcium MXE's public key.\n *\n * ## Type Hierarchy\n *\n * All types in this module are sub-sub-sub-brands of {@link Curve25519FieldElement},\n * which is itself a branded `bigint`. The full hierarchy is:\n * ```\n * bigint\n * └── UnsignedInteger (branded: value >= 0)\n * └── U256 (branded: value < 2^256)\n * └── Curve25519FieldElement (branded: value < 2^255 - 19)\n * ├── RcCiphertext (sub-sub-sub-brand)\n * ├── RcPlaintext (sub-sub-sub-brand)\n * ├── RcKey (sub-sub-sub-brand)\n * └── RcCounter (sub-sub-sub-brand)\n * ```\n *\n * The `RcEncryptionNonce` type is a separate branch:\n * ```\n * bigint\n * └── UnsignedInteger\n * └── U128 (branded: value < 2^128)\n * └── RcEncryptionNonce (sub-sub-brand)\n * = Nonce (alias)\n * ```\n *\n * ## Assertion Functions\n *\n * Every type has a corresponding `assert*` function that validates a raw `bigint`\n * and narrows it to the branded type. These are the only sanctioned casting gates.\n * Callers must pass through an assertion before a value can be used as a\n * cipher type.\n *\n * @packageDocumentation\n * @module crypto/rescue/types\n * @public\n */\n\nimport type { SubSubSubBrandedType, SubSubBrandedType } from \"../../common/branded\";\nimport { type U128, U128_MAX } from \"../../common/types\";\nimport { type Curve25519FieldElement, CURVE25519_FIELD_PRIME } from \"../../math/curve25519/types\";\nimport { CryptographyAssertionError } from \"../../common/errors\";\n\n/* =============================================================================\n * RESCUE CIPHER TYPES\n * ============================================================================= */\n\n/**\n * Ciphertext output from Rescue-XLIX cipher encryption.\n *\n * Each ciphertext element is a field element in GF(p = 2^255 - 19), the\n * Curve25519 base field. In Rescue's CTR mode, each plaintext field element\n * is encrypted independently into one ciphertext field element. This one-to-one\n * correspondence means the number of ciphertexts always equals the number of\n * plaintexts.\n *\n * @remarks\n * ## Algebraic Structure\n *\n * Unlike AES ciphertext (which is opaque bytes), a Rescue ciphertext is a\n * field element: a non-negative integer less than p = 2^255 - 19. This makes\n * it directly usable inside arithmetic circuits without any conversion.\n *\n * ## Encoding\n *\n * When transmitted or stored, ciphertext values are encoded as 32-byte\n * little-endian integers (via `encodeU256ToU256LeBytes`). The raw cipher\n * interface (`RescueCipherInstance`) works with 32-byte LE arrays internally;\n * this type represents the decoded `bigint` form.\n *\n * ## Type Hierarchy\n * ```\n * bigint → UnsignedInteger → U256 → Curve25519FieldElement → RcCiphertext\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * // Produced by getRescueEncryptorFromPrivateKey:\n * const { ciphertexts, nonce } = await encryptor([balance]);\n * const ct: RcCiphertext = ciphertexts[0];\n * // ct is in [0, 2^255 - 19)\n * ```\n *\n * @see {@link assertRcCiphertext} — runtime assertion and type narrowing\n * @see {@link RcPlaintext} — the plaintext type that encrypts into this\n */\nexport type RcCiphertext = SubSubSubBrandedType<Curve25519FieldElement, \"RcCiphertext\">;\n\n/**\n * Plaintext input for Rescue-XLIX cipher encryption.\n *\n * Each plaintext element is a field element in GF(p = 2^255 - 19). For Umbra's\n * confidential token accounts, the primary plaintext is the token balance encoded\n * as a field element. The field is large enough (p ≈ 2^255) to accommodate any\n * realistic token amount.\n *\n * @remarks\n * ## Constraints\n *\n * The plaintext value must be in [0, p) where p = 2^255 - 19. Values outside\n * this range cannot be represented as Curve25519 field elements and are rejected\n * by {@link assertRcPlaintext}.\n *\n * ## Encoding\n *\n * Unlike AES where plaintext is arbitrary bytes, Rescue plaintext is a single\n * field element (a `bigint`). To encrypt a byte array (e.g. a 32-byte seed),\n * the caller must first convert it to a field element interpretation or encrypt\n * multiple elements (one per 32-byte chunk, with each chunk treated as a LE\n * integer and reduced modulo p if necessary).\n *\n * ## Type Hierarchy\n * ```\n * bigint → UnsignedInteger → U256 → Curve25519FieldElement → RcPlaintext\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * // Encoding a token balance as a plaintext:\n * const balance: bigint = 1_000_000n; // e.g. 1 USDC in lamports\n * assertRcPlaintext(balance, \"balance\");\n * const { ciphertexts, nonce } = await encryptor([balance]);\n * ```\n *\n * @see {@link assertRcPlaintext} — runtime assertion and type narrowing\n * @see {@link RcCiphertext} — the ciphertext produced by encrypting this\n */\nexport type RcPlaintext = SubSubSubBrandedType<Curve25519FieldElement, \"RcPlaintext\">;\n\n/**\n * Symmetric encryption key for the Rescue-XLIX cipher.\n *\n * In Umbra's protocol, Rescue keys are not used directly by application code;\n * they are derived internally from the X25519 shared secret via the cipher's key\n * schedule. However, the key-generation API ({@link getRescueKeyGeneratorFromPrivateKey})\n * exposes derived keys for counter-based schemes where individual keys need to be\n * extracted.\n *\n * @remarks\n * ## Security Properties\n *\n * - Keys must be treated as secret and never transmitted or logged.\n * - Keys are derived from the X25519 shared secret, which has approximately\n * 252 bits of entropy (Curve25519 cofactor reduces from 256 to 252 bits).\n * - The key is a single field element (one bigint), not a byte array.\n *\n * ## Type Hierarchy\n * ```\n * bigint → UnsignedInteger → U256 → Curve25519FieldElement → RcKey\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * // Keys are generated by the key generator:\n * const keysMap = await keyGenerator([0n, 1n] as RcCounter[], nonce);\n * const key0: RcKey | undefined = keysMap.get(0n);\n * if (key0 !== undefined) {\n * assertRcKey(key0, \"key0\");\n * // key0 is a Curve25519 field element in [0, 2^255 - 19)\n * }\n * ```\n *\n * @see {@link assertRcKey} — runtime assertion and type narrowing\n * @see {@link getRescueKeyGeneratorFromPrivateKey} — the function that generates these keys\n */\nexport type RcKey = SubSubSubBrandedType<Curve25519FieldElement, \"RcKey\">;\n\n/**\n * Counter value for Rescue-XLIX counter mode.\n *\n * In the Rescue CTR mode encryption, each plaintext element at position `i`\n * is encrypted using the keystream generated at counter position `i`. The\n * `RcCounter` type represents one of these positions. It is used primarily\n * in the key-generation API to select which keystream positions to extract.\n *\n * @remarks\n * ## Range\n *\n * A counter value must be a non-negative Curve25519 field element: in [0, p)\n * where p = 2^255 - 19. In practice, counters are small non-negative integers\n * (0, 1, 2, ...) corresponding to array positions.\n *\n * ## Uniqueness Requirement\n *\n * The combination (key, nonce, counter) must be unique for each encrypted\n * field element. Within a single CTR encryption call, each position automatically\n * uses a different counter, so uniqueness is guaranteed by the cipher.\n *\n * ## Type Hierarchy\n * ```\n * bigint → UnsignedInteger → U256 → Curve25519FieldElement → RcCounter\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * // Counters are typically small non-negative integers:\n * const counters: RcCounter[] = [0n, 1n, 5n] as RcCounter[];\n * // Each is asserted before passing to the key generator:\n * for (const c of counters) {\n * assertRcCounter(c);\n * }\n * ```\n *\n * @see {@link assertRcCounter} — runtime assertion and type narrowing\n * @see {@link RcKeyGeneratorFunction} — consumes counters to produce keys\n */\nexport type RcCounter = SubSubSubBrandedType<Curve25519FieldElement, \"RcCounter\">;\n\n/**\n * Encryption nonce for Rescue-XLIX cipher operations.\n *\n * A nonce (number used once) that parameterises the CTR keystream. Two\n * encryptions with the same (key, nonce) pair produce the same keystream;\n * using different nonces produces independent keystreams. The nonce is a\n * 128-bit value (smaller than the Curve25519 field element, unlike the cipher\n * types above) which keeps it compact for on-chain storage.\n *\n * @remarks\n * ## Range\n *\n * A nonce must be a non-negative integer in [0, 2^128 - 1]. This range was\n * chosen to match the on-chain Arcium nonce format (a `u128` in the Rust\n * Anchor program). The nonce is encoded as a 16-byte little-endian integer\n * when passed to the cipher.\n *\n * ## Uniqueness and Security\n *\n * - **NEVER reuse a nonce with the same key.** Nonce reuse in CTR mode allows\n * an attacker to cancel the keystream and recover the XOR of the two\n * plaintexts (or, in field arithmetic, their difference).\n * - With 128-bit random nonces, the collision probability over 2^64 calls is\n * approximately 1/2^64 (birthday bound), which is negligible for any\n * practical application.\n * - Nonces are public and do not need to be kept secret.\n *\n * ## Type Hierarchy\n * ```\n * bigint → UnsignedInteger → U128 → RcEncryptionNonce\n * ```\n *\n * @public\n *\n * @example\n * ```typescript\n * // Generate a random nonce (preferred):\n * const nonce: RcEncryptionNonce = generateRandomNonce();\n *\n * // Or use a counter-based nonce (must be managed externally):\n * let counter = 0n;\n * const counterNonce = counter as RcEncryptionNonce;\n * assertRcEncryptionNonce(counterNonce, \"counterNonce\");\n * counter++;\n * ```\n *\n * @see {@link assertRcEncryptionNonce} — runtime assertion and type narrowing\n * @see {@link Nonce} — alias for this type\n */\nexport type RcEncryptionNonce = SubSubBrandedType<U128, \"RcEncryptionNonce\">;\n\n/**\n * Alias for {@link RcEncryptionNonce}.\n *\n * `Nonce` is a convenience alias used in contexts where the full name\n * `RcEncryptionNonce` is verbose or where the nonce is used generically\n * (e.g. in the Poseidon commitment function which accepts any protocol nonce).\n *\n * @remarks\n * The two types are identical at the structural level. Use whichever name is\n * clearer in context; they are interchangeable everywhere in the SDK.\n *\n * @public\n *\n * @example\n * ```typescript\n * const nonce: Nonce = generateRandomNonce();\n * // Equivalent to:\n * const nonce2: RcEncryptionNonce = generateRandomNonce();\n * ```\n *\n * @see {@link RcEncryptionNonce} — the underlying type\n */\nexport type Nonce = RcEncryptionNonce;\n\n/* =============================================================================\n * RESCUE CIPHER ASSERTIONS\n * ============================================================================= */\n\n/**\n * Asserts that a value is a valid Rescue cipher ciphertext.\n *\n * Validates that the value is a `bigint` in [0, p) where p = 2^255 - 19\n * (the Curve25519 field prime). Narrows the type from `bigint` to {@link RcCiphertext}.\n *\n * @param value - The `bigint` to validate and narrow.\n * @param name - Optional human-readable name for use in error messages.\n * Defaults to `\"value\"`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value < 0n`.\n * @throws {CryptographyAssertionError} If `value >= CURVE25519_FIELD_PRIME` (i.e. >= 2^255 - 19).\n *\n * @remarks\n * This assertion is called by the Rescue encryptor on each raw ciphertext\n * element returned by the cipher before it is branded and returned to the caller.\n * It is also useful for validating ciphertext values loaded from on-chain state\n * or a database.\n *\n * @public\n *\n * @example\n * ```typescript\n * const raw: bigint = decodeCiphertextFromChain();\n * assertRcCiphertext(raw, \"balanceCiphertext\");\n * // raw: RcCiphertext — safe to pass to getRescueDecryptorFromPrivateKey\n * ```\n *\n * @example\n * ```typescript\n * // Out-of-range values throw:\n * assertRcCiphertext(-1n, \"ct\"); // throws: ct is negative\n * assertRcCiphertext(CURVE25519_FIELD_PRIME, \"ct\"); // throws: exceeds field prime\n * ```\n *\n * @see {@link RcCiphertext} — the branded type produced by this assertion\n */\nexport function assertRcCiphertext(value: bigint, name = \"value\"): asserts value is RcCiphertext {\n const variableName = name;\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`${variableName}: Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"RcCiphertext\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`${variableName}: Value ${String(value)} is negative`, {\n value,\n expectedType: \"RcCiphertext\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= CURVE25519_FIELD_PRIME) {\n throw new CryptographyAssertionError(`${variableName}: Value exceeds Curve25519 field prime`, {\n value,\n expectedType: \"RcCiphertext\",\n constraint: \"value < 2^255 - 19\",\n });\n }\n}\n\n/**\n * Asserts that a value is a valid Rescue cipher plaintext.\n *\n * Validates that the value is a `bigint` in [0, p) where p = 2^255 - 19.\n * Narrows the type from `bigint` to {@link RcPlaintext}.\n *\n * @param value - The `bigint` to validate and narrow.\n * @param name - Optional human-readable name for use in error messages.\n * Defaults to `\"value\"`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value < 0n`.\n * @throws {CryptographyAssertionError} If `value >= CURVE25519_FIELD_PRIME`.\n *\n * @remarks\n * This assertion is called by the Rescue encryptor on each input plaintext\n * and by the decryptor on each raw plaintext element returned by the cipher.\n *\n * Token balances are typically small non-negative integers and will easily pass\n * this check. The constraint becomes relevant when working with raw field\n * element data (e.g. hash outputs) where values might exceed the field prime.\n *\n * @public\n *\n * @example\n * ```typescript\n * const balance: bigint = 1_000_000n;\n * assertRcPlaintext(balance, \"balance\");\n * // balance: RcPlaintext — ready to be encrypted\n * ```\n *\n * @example\n * ```typescript\n * // Zero is valid (used in key generation):\n * assertRcPlaintext(0n, \"zeroPt\");\n * // 0n: RcPlaintext\n * ```\n *\n * @see {@link RcPlaintext} — the branded type produced by this assertion\n */\nexport function assertRcPlaintext(value: bigint, name = \"value\"): asserts value is RcPlaintext {\n const variableName = name;\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`${variableName}: Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"RcPlaintext\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`${variableName}: Value ${String(value)} is negative`, {\n value,\n expectedType: \"RcPlaintext\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= CURVE25519_FIELD_PRIME) {\n throw new CryptographyAssertionError(`${variableName}: Value exceeds Curve25519 field prime`, {\n value,\n expectedType: \"RcPlaintext\",\n constraint: \"value < 2^255 - 19\",\n });\n }\n}\n\n/**\n * Asserts that a value is a valid Rescue cipher key.\n *\n * Validates that the value is a `bigint` in [0, p) where p = 2^255 - 19.\n * Narrows the type from `bigint` to {@link RcKey}.\n *\n * @param value - The `bigint` to validate and narrow.\n * @param name - Optional human-readable name for use in error messages.\n * Defaults to `\"value\"`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value < 0n`.\n * @throws {CryptographyAssertionError} If `value >= CURVE25519_FIELD_PRIME`.\n *\n * @remarks\n * This assertion is called by the key generator on each raw ciphertext element\n * before it is rebranded as an {@link RcKey}. The structural requirements are\n * identical to {@link assertRcCiphertext} — they are separate functions only\n * to produce distinct branded types.\n *\n * Keys are sensitive; callers should not log, transmit, or persist them beyond\n * the lifetime of the operation they are used for.\n *\n * @public\n *\n * @example\n * ```typescript\n * const rawKey: bigint = derivedKeyValue;\n * assertRcKey(rawKey, \"encryptionKey\");\n * // rawKey: RcKey — a field element that may be used as a symmetric key\n * ```\n *\n * @see {@link RcKey} — the branded type produced by this assertion\n */\nexport function assertRcKey(value: bigint, name = \"value\"): asserts value is RcKey {\n const variableName = name;\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`${variableName}: Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"RcKey\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`${variableName}: Value ${String(value)} is negative`, {\n value,\n expectedType: \"RcKey\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= CURVE25519_FIELD_PRIME) {\n throw new CryptographyAssertionError(`${variableName}: Value exceeds Curve25519 field prime`, {\n value,\n expectedType: \"RcKey\",\n constraint: \"value < 2^255 - 19\",\n });\n }\n}\n\n/**\n * Asserts that a value is a valid Rescue cipher counter.\n *\n * Validates that the value is a `bigint` in [0, p) where p = 2^255 - 19.\n * Narrows the type from `bigint` to {@link RcCounter}.\n *\n * @param value - The `bigint` to validate and narrow. Note: unlike the other\n * assertions, this one does not accept an optional `name` parameter; the\n * error message always uses a generic description.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value < 0n`.\n * @throws {CryptographyAssertionError} If `value >= CURVE25519_FIELD_PRIME`.\n *\n * @remarks\n * In practice, counter values are small non-negative integers (array positions).\n * The field-element range constraint is a conservative upper bound that ensures\n * compatibility with the cipher's arithmetic.\n *\n * @public\n *\n * @example\n * ```typescript\n * const position = 3n;\n * assertRcCounter(position);\n * // position: RcCounter\n * ```\n *\n * @example\n * ```typescript\n * // Negative counters are invalid:\n * assertRcCounter(-1n); // throws: Value -1 is negative\n * ```\n *\n * @see {@link RcCounter} — the branded type produced by this assertion\n */\nexport function assertRcCounter(value: bigint): asserts value is RcCounter {\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"RcCounter\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`Value ${String(value)} is negative`, {\n value,\n expectedType: \"RcCounter\",\n constraint: \"value >= 0\",\n });\n }\n if (value >= CURVE25519_FIELD_PRIME) {\n throw new CryptographyAssertionError(`Value exceeds Curve25519 field prime`, {\n value,\n expectedType: \"RcCounter\",\n constraint: \"value < 2^255 - 19\",\n });\n }\n}\n\n/**\n * Asserts that a value is a valid Rescue encryption nonce.\n *\n * Validates that the value is a `bigint` in [0, 2^128 - 1] (the U128 range).\n * Narrows the type from `bigint` to {@link RcEncryptionNonce}.\n *\n * @param value - The `bigint` to validate and narrow.\n * @param name - Optional human-readable name for use in error messages.\n * Defaults to `\"value\"`.\n * @throws {CryptographyAssertionError} If `value` is not a `bigint`.\n * @throws {CryptographyAssertionError} If `value < 0n`.\n * @throws {CryptographyAssertionError} If `value > U128_MAX` (i.e. > 2^128 - 1).\n *\n * @remarks\n * ## Why U128 and Not Curve25519 Field Element?\n *\n * The nonce range (U128) is smaller than the Curve25519 field element range\n * (approximately U255). This is intentional: the on-chain Arcium nonce is\n * stored as a Rust `u128`, so the nonce must fit in 128 bits. Using a smaller\n * range also means the nonce is encoded as 16 bytes rather than 32, saving\n * on-chain space.\n *\n * The cipher internally converts the nonce to its 16-byte LE representation\n * via `encodeU128ToU128LeBytes` before use.\n *\n * @public\n *\n * @example\n * ```typescript\n * const nonce = generateRandomNonce(); // already validated by generateRandomNonce\n * assertRcEncryptionNonce(nonce, \"transactionNonce\");\n * // nonce: RcEncryptionNonce\n * ```\n *\n * @example\n * ```typescript\n * // Boundary violations throw:\n * assertRcEncryptionNonce(-1n, \"n\"); // throws: n is negative\n * assertRcEncryptionNonce(2n ** 128n, \"n\"); // throws: n exceeds U128 maximum\n * ```\n *\n * @see {@link RcEncryptionNonce} — the branded type produced by this assertion\n * @see {@link Nonce} — alias for RcEncryptionNonce\n */\nexport function assertRcEncryptionNonce(\n value: bigint,\n name = \"value\",\n): asserts value is RcEncryptionNonce {\n const variableName = name;\n if (typeof value !== \"bigint\") {\n throw new CryptographyAssertionError(`${variableName}: Expected bigint, got ${typeof value}`, {\n value,\n expectedType: \"RcEncryptionNonce\",\n });\n }\n if (value < 0n) {\n throw new CryptographyAssertionError(`${variableName}: Value ${String(value)} is negative`, {\n value,\n expectedType: \"RcEncryptionNonce\",\n constraint: \"value >= 0\",\n });\n }\n if (value > U128_MAX) {\n throw new CryptographyAssertionError(`${variableName}: Value exceeds U128 maximum`, {\n value,\n expectedType: \"RcEncryptionNonce\",\n constraint: \"value <= 2^128 - 1\",\n });\n }\n}\n","/**\n * Fiat-Shamir Challenge Generation\n *\n * This module implements the Fiat-Shamir heuristic for generating cryptographic\n * challenges in zero-knowledge proof systems. The challenges are derived\n * deterministically from a transcript using cryptographic hash functions.\n *\n * ## Fiat-Shamir Heuristic\n *\n * The Fiat-Shamir transform converts an interactive proof system (where a verifier\n * sends random challenges) into a non-interactive proof system by replacing the\n * verifier's random oracle with a hash function applied to the proof transcript.\n * Security relies on the Random Oracle Model (ROM): the hash function is modelled\n * as a truly random function, so an adversary cannot predict its output without\n * evaluating it. This means **transcript element ordering is critical** — changing\n * the order of inputs changes the hash output, and thus changes the challenge.\n *\n * ## Transcript Element Ordering\n *\n * The `FiatShamirChallengeGeneratorFunction` accepts a raw `Uint8Array` transcript.\n * Callers are responsible for serialising all public inputs in the canonical order\n * defined by `rules/fiat-shamir-and-aggregated-hash.md` before passing them in.\n * Deviation from this ordering breaks compatibility with the on-chain Groth16\n * verifier and with the Circom circuit that produced the proof.\n *\n * ## Security Properties\n *\n * The implementation ensures:\n * - Deterministic challenge generation from a given transcript\n * - Uniform distribution over the Curve25519 prime field\n * - Soundness: a different transcript produces a different challenge with overwhelming probability\n *\n * ## Use Cases\n *\n * - Zero-knowledge proof generation (claim instructions)\n * - Interactive-to-non-interactive protocol transformations\n * - Commitment scheme bindings for UTXO transfers\n *\n * @packageDocumentation\n * @module implementation/cryptography/challenges\n * @public\n */\n\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport type {\n ChallengePowersDeps,\n ChallengePowersFunction as ChallengePowersFunction,\n FiatShamirChallengeGeneratorFunction as FiatShamirChallengeGeneratorFunction,\n ModuloPowCurve25519Function,\n PolynomialEvaluatorDeps,\n PolynomialEvaluatorFunction as PolynomialEvaluatorFunction,\n} from \"./interfaces\";\nimport type {\n Curve25519ModuloAddFunction as Curve25519ModuleAddFunction,\n Curve25519ModuloMulFunction as Curve25519ModuleMulFunction,\n} from \"../../math/curve25519/interfaces\";\nimport {\n type Curve25519FieldElement,\n CURVE25519_FIELD_PRIME,\n assertCurve25519FieldElement,\n} from \"../../types\";\nimport {\n getCurve25519ModularAddFunction as getCurve25519ModuleAddFunction,\n getCurve25519ModularMulFunction as getCurve25519ModuleMulFunction,\n curve25519ModuloPow as curve25519ModulePow,\n} from \"../../math/curve25519/field-arithmetic\";\n\n// =============================================================================\n// Constants\n// =============================================================================\n\n/**\n * Maximum number of rejection sampling attempts before aborting.\n *\n * @remarks\n * With a 256-bit hash output and a 255-bit field (Curve25519 prime\n * p = 2^255 - 19), the probability that a single hash output lands outside\n * the field is exactly 19 / 2^255 ≈ 5.3 × 10^-77. The probability that all\n * 64 independent attempts fail is (19/2^255)^64, which is astronomically\n * small — far below any conceivable cryptographic security requirement.\n * If this limit is ever reached it indicates a bug or corrupted input,\n * not a statistical anomaly.\n *\n * @internal\n */\nconst MAX_REJECTION_ATTEMPTS = 64;\n\n/**\n * Byte length for Curve25519 field elements when serialised as little-endian integers.\n *\n * @remarks\n * Curve25519's prime p = 2^255 - 19 fits in 255 bits, which requires exactly\n * 32 bytes to represent. Keccak-256 always outputs 32 bytes, making these\n * sizes naturally aligned.\n *\n * @internal\n */\nconst CURVE25519_BYTE_LENGTH = 32;\n\n// =============================================================================\n// Cached Function Instances\n// =============================================================================\n\n/**\n * Cached singleton instance of the Fiat-Shamir challenge generator.\n *\n * @remarks\n * Lazily initialised on first call to {@link getFiatShamirChallengeGeneratorFunction}.\n * The challenge generator function itself is stateless and safe to reuse.\n *\n * @internal\n */\nlet cachedChallengeGeneratorFunction: FiatShamirChallengeGeneratorFunction | null = null;\n\n/**\n * Cached singleton instance of the default challenge powers function.\n *\n * @remarks\n * Lazily initialised on first call to {@link getChallengePowersFunction} without\n * custom dependencies. Uses the default constant-time modular multiplication.\n *\n * @internal\n */\nlet cachedDefaultChallengePowersFunction: ChallengePowersFunction | null = null;\n\n/**\n * Per-`modMul` cache for challenge powers functions using custom multiplication.\n *\n * @remarks\n * Uses a `WeakMap` so that when a custom `modMul` function is garbage-collected,\n * the corresponding cached `ChallengePowersFunction` is also collected, preventing\n * memory leaks in long-lived processes.\n *\n * @internal\n */\nconst challengePowersFunctionCache = new WeakMap<\n Curve25519ModuleMulFunction,\n ChallengePowersFunction\n>();\n\n/**\n * Cached singleton instance of the default polynomial evaluator function.\n *\n * @remarks\n * Lazily initialised on first call to {@link getPolynomialEvaluatorFunction} without\n * custom dependencies. Uses the default constant-time field arithmetic.\n *\n * @internal\n */\nlet cachedDefaultPolynomialEvaluatorFunction: PolynomialEvaluatorFunction | null = null;\n\n/**\n * Cached singleton instance of the modular exponentiation function.\n *\n * @remarks\n * Lazily initialised on first call to {@link getModuloPowCurve25519Function}.\n * The function itself is stateless (delegates to `curve25519ModuloPow`) so\n * it is safe to cache indefinitely.\n *\n * @internal\n */\nlet cachedModulePowFunction: ModuloPowCurve25519Function | null = null;\n\n// =============================================================================\n// Internal Factory Functions\n// =============================================================================\n\n/**\n * Creates the Fiat-Shamir challenge generator function using Keccak-256 with rejection sampling.\n *\n * @returns A fresh {@link FiatShamirChallengeGeneratorFunction} closure.\n *\n * @remarks\n * ## Algorithm\n *\n * This algorithm exactly mirrors the Rust on-chain implementation so that\n * off-chain TypeScript challenge generation produces the same values as the\n * Solana program's challenge derivation:\n *\n * 1. Compute `h = Keccak256(input)` — produces a 256-bit hash.\n * 2. Clear bit 255 of `h` (i.e. `h[31] &= 0x7F` in little-endian layout)\n * to obtain a 255-bit value. This step guarantees the result is at most\n * 2^255 - 1, so the only values that are still ≥ p are those in the\n * \"gap\" interval [p, 2^255 - 1] = [2^255 - 19, 2^255 - 1], which has\n * size 19.\n * 3. Interpret the 32-byte array as a little-endian 256-bit unsigned integer.\n * 4. If the value is < p (the Curve25519 field prime), return it as a valid\n * {@link Curve25519FieldElement}.\n * 5. Otherwise, re-hash the 32-byte array (`currentInput = h`) and repeat\n * from step 1 — **hash chaining**, not counter appending.\n * 6. Abort after {@link MAX_REJECTION_ATTEMPTS} consecutive failures (this\n * should never occur in practice).\n *\n * ## Security Properties\n *\n * Rejection sampling ensures that the output distribution is statistically\n * indistinguishable from uniform over GF(p). The bias from simply reducing\n * modulo p would be 19/2^255, which is negligible but non-zero; rejection\n * sampling eliminates even that residual bias.\n *\n * @internal\n *\n * @example\n * ```typescript\n * // Internal usage — prefer getFiatShamirChallengeGeneratorFunction()\n * const gen = createChallengeGeneratorFunction();\n * const transcript = new Uint8Array(64); // filled with public inputs\n * const challenge = gen(transcript);\n * ```\n */\nfunction createChallengeGeneratorFunction(): FiatShamirChallengeGeneratorFunction {\n return (input: Uint8Array): Curve25519FieldElement => {\n let currentInput: Uint8Array = input;\n\n for (let attempt = 0; attempt < MAX_REJECTION_ATTEMPTS; attempt++) {\n const hash = keccak_256(currentInput);\n\n // Create mutable copy and clear bit 255 to constrain to 255 bits\n // In little-endian, bit 255 is bit 7 of byte[31]\n // Keccak-256 always produces 32 bytes, so index 31 is safe\n const hashBytes = new Uint8Array(hash);\n hashBytes[31] = hashBytes[31] & 0x7f;\n\n // Interpret as little-endian 256-bit integer\n let value = 0n;\n for (let index = 0; index < CURVE25519_BYTE_LENGTH; index++) {\n value |= BigInt(hashBytes[index]) << BigInt(index * 8);\n }\n\n // Check if the value is within the field (< 2^255 - 19)\n if (value < CURVE25519_FIELD_PRIME) {\n assertCurve25519FieldElement(value, \"fiatShamirChallenge\");\n return value;\n }\n\n // Rejection: re-hash the hash output (hash chaining)\n currentInput = hashBytes;\n }\n\n throw new Error(\n `Fiat-Shamir challenge generation failed after ${String(MAX_REJECTION_ATTEMPTS)} attempts. ` +\n \"This is extremely unlikely and may indicate a bug or corrupted input.\",\n );\n };\n}\n\n/**\n * Creates the challenge powers computation function using a given modular multiplication implementation.\n *\n * @param moduleMul - The modular multiplication function to use for field arithmetic.\n * @returns A {@link ChallengePowersFunction} that iteratively multiplies to produce powers.\n *\n * @remarks\n * ## Algorithm\n *\n * Powers are computed iteratively rather than via repeated squaring or\n * `BigInt ** n`, because in a ZK context we need exactly `[c^0, c^1, ..., c^n]`\n * (all intermediate values), and iterative multiplication produces them in a\n * single pass with exactly `n-1` multiplications:\n *\n * ```\n * powers[0] = 1\n * powers[1] = challenge\n * powers[i] = powers[i-1] * challenge (mod p)\n * ```\n *\n * ## Validation\n *\n * - `maxPower` must be a non-negative integer; a negative value throws immediately.\n * - Each intermediate result is asserted to be a valid {@link Curve25519FieldElement}\n * via {@link assertCurve25519FieldElement}, so overflow or underflow bugs are\n * caught at the source.\n *\n * @internal\n *\n * @example\n * ```typescript\n * // Internal usage\n * const modMul = getCurve25519ModuleMulFunction();\n * const powFn = createChallengePowersFunction(modMul);\n * const powers = powFn(challenge, 3);\n * // powers[0] === 1n, powers[1] === challenge, powers[2] === challenge^2, powers[3] === challenge^3\n * ```\n */\nfunction createChallengePowersFunction(\n moduleMul: Curve25519ModuleMulFunction,\n): ChallengePowersFunction {\n return (challenge: Curve25519FieldElement, maxPower: number): Curve25519FieldElement[] => {\n if (maxPower < 0) {\n throw new Error(\n `maxPower must be non-negative, got ${String(maxPower)}. ` +\n \"Provide a non-negative integer for the maximum power.\",\n );\n }\n\n const powers: Curve25519FieldElement[] = Array.from<Curve25519FieldElement>({\n length: maxPower + 1,\n });\n\n // powers[0] = 1 (challenge^0)\n assertCurve25519FieldElement(1n, \"powers[0]\");\n powers[0] = 1n as Curve25519FieldElement;\n\n if (maxPower === 0) {\n return powers;\n }\n\n // powers[1] = challenge\n powers[1] = challenge;\n\n // Compute remaining powers iteratively\n let current: bigint = challenge;\n for (let index = 2; index <= maxPower; index++) {\n current = moduleMul(current, challenge);\n assertCurve25519FieldElement(current, `powers[${String(index)}]`);\n powers[index] = current;\n }\n\n return powers;\n };\n}\n\n/**\n * Creates a polynomial evaluator using Horner's method with the given field arithmetic.\n *\n * @param moduleAdd - The modular addition function to use for field arithmetic.\n * @param moduleMul - The modular multiplication function to use for field arithmetic.\n * @returns A {@link PolynomialEvaluatorFunction} that evaluates univariate polynomials over GF(p).\n *\n * @remarks\n * ## Horner's Method\n *\n * For a polynomial P(x) = c[0] + c[1]·x + c[2]·x² + ... + c[n]·x^n,\n * Horner's method rewrites it as a nested multiplication:\n * ```\n * P(x) = c[0] + x·(c[1] + x·(c[2] + ... + x·c[n]))\n * ```\n * This requires exactly n multiplications and n additions (versus 2n-1\n * multiplications for the naïve evaluation) and is numerically stable.\n *\n * ## Iteration Direction\n *\n * The implementation iterates from `coefficients[length-1]` (highest degree)\n * down to `coefficients[0]` (constant term), accumulating the result inward.\n *\n * ## Edge Cases\n *\n * - An empty `coefficients` array returns `0n` (the zero polynomial).\n * - A single-element array returns `coefficients[0]` (a constant polynomial,\n * independent of `point`).\n *\n * @internal\n *\n * @example\n * ```typescript\n * // Internal usage — evaluates P(x) = 1 + 2x + 3x^2 at x=2\n * const modAdd = getCurve25519ModuleAddFunction();\n * const modMul = getCurve25519ModuleMulFunction();\n * const evalFn = createPolynomialEvaluatorFunction(modAdd, modMul);\n *\n * const coeffs = [1n, 2n, 3n] as Curve25519FieldElement[];\n * const point = 2n as Curve25519FieldElement;\n * const result = evalFn(coeffs, point);\n * // result === 17n (1 + 4 + 12)\n * ```\n */\nfunction createPolynomialEvaluatorFunction(\n moduleAdd: Curve25519ModuleAddFunction,\n moduleMul: Curve25519ModuleMulFunction,\n): PolynomialEvaluatorFunction {\n return (\n coefficients: Curve25519FieldElement[],\n point: Curve25519FieldElement,\n ): Curve25519FieldElement => {\n if (coefficients.length === 0) {\n assertCurve25519FieldElement(0n, \"emptyPolynomialResult\");\n return 0n as Curve25519FieldElement;\n }\n\n // Horner's method: start from highest degree coefficient\n const lastCoefficient = coefficients.at(-1);\n if (lastCoefficient === undefined) {\n throw new Error(\"Unexpected empty coefficients array after length check\");\n }\n\n let result: bigint = lastCoefficient;\n\n for (let index = coefficients.length - 2; index >= 0; index--) {\n // result = result * point + coefficients[i]\n result = moduleMul(result, point);\n\n const sum = moduleAdd(result, coefficients[index]);\n assertCurve25519FieldElement(sum, \"polynomialIntermediateSum\");\n result = sum;\n }\n\n return result as Curve25519FieldElement;\n };\n}\n\n/**\n * Creates the modular exponentiation function for the Curve25519 field.\n *\n * @returns A {@link ModuloPowCurve25519Function} that wraps {@link curve25519ModuloPow}\n * with validation of its output.\n *\n * @remarks\n * The underlying `curve25519ModuloPow` uses the standard binary\n * square-and-multiply algorithm, which runs in O(log exp) field multiplications.\n * The zero-exponent special case is handled explicitly (returns `1n`) to\n * avoid an unnecessary call into the underlying function.\n *\n * The output is validated via {@link assertCurve25519FieldElement} so any\n * arithmetic overflow in the underlying implementation would be caught\n * immediately rather than silently propagating wrong values.\n *\n * @internal\n *\n * @example\n * ```typescript\n * // Internal usage\n * const powFn = createModulePowFunction();\n * const base = 2n as Curve25519FieldElement;\n * const result = powFn(base, 10n);\n * // result === 1024n\n * ```\n */\nfunction createModulePowFunction(): ModuloPowCurve25519Function {\n return (base: Curve25519FieldElement, exp: bigint): Curve25519FieldElement => {\n if (exp === 0n) {\n assertCurve25519FieldElement(1n, \"modPowZeroExp\");\n return 1n as Curve25519FieldElement;\n }\n\n const result = curve25519ModulePow(base, exp);\n assertCurve25519FieldElement(result, \"modPowResult\");\n return result;\n };\n}\n\n// =============================================================================\n// Public Getter Functions\n// =============================================================================\n\n/**\n * Returns a cached Fiat-Shamir challenge generator.\n *\n * Uses Keccak-256 with rejection sampling to produce a uniformly distributed\n * Curve25519 field element from arbitrary input data. The same instance is\n * returned on every call after the first (singleton pattern).\n *\n * @returns A {@link FiatShamirChallengeGeneratorFunction} for generating challenges.\n *\n * @remarks\n * ## Caching\n *\n * The generator function is stateless (it captures no mutable state), so a\n * singleton is safe. Caching avoids repeated closure allocation on hot paths.\n *\n * ## Algorithm Summary\n *\n * 1. Hash the serialised transcript with Keccak-256 (256-bit output).\n * 2. Clear bit 255 (i.e. mask `bytes[31] &= 0x7F`) to constrain to 255 bits.\n * 3. Interpret the result as a little-endian 256-bit unsigned integer.\n * 4. If the integer is in [0, p), return it as a {@link Curve25519FieldElement}.\n * 5. Otherwise, re-hash the previous hash output and repeat (hash chaining).\n *\n * ## Security Considerations\n *\n * - The output is statistically indistinguishable from uniform over GF(p).\n * - The function is deterministic: the same transcript always produces the same challenge.\n * - Transcript integrity is the caller's responsibility; callers must include all\n * public inputs in the canonical order.\n *\n * @public\n *\n * @example\n * ```typescript\n * const generateChallenge = getFiatShamirChallengeGeneratorFunction();\n *\n * // Build the transcript from all public proof inputs (canonical order matters):\n * const transcript = serializePublicInputs(merkleRoot, nullifiers, commitments);\n * const challenge = generateChallenge(transcript);\n * // challenge is a Curve25519FieldElement in [0, 2^255 - 19)\n * ```\n *\n * @see {@link FiatShamirChallengeGeneratorFunction}\n * @see {@link createChallengeGeneratorFunction}\n */\nexport function getFiatShamirChallengeGeneratorFunction(): FiatShamirChallengeGeneratorFunction {\n if (cachedChallengeGeneratorFunction !== null) {\n return cachedChallengeGeneratorFunction;\n }\n\n cachedChallengeGeneratorFunction = createChallengeGeneratorFunction();\n return cachedChallengeGeneratorFunction;\n}\n\n/**\n * Returns a cached function for computing successive powers of a challenge value.\n *\n * @param deps - Optional dependency injection for custom modular multiplication.\n * When omitted, the default constant-time Curve25519 multiplication is used.\n * @returns A {@link ChallengePowersFunction} that returns `[1, c, c^2, ..., c^maxPower]`.\n *\n * @remarks\n * ## Caching Strategy\n *\n * - **No deps**: a singleton `cachedDefaultChallengePowersFunction` is created on\n * first call and returned on all subsequent calls.\n * - **Custom `modMul`**: a `WeakMap` keyed by `modMul` reference is consulted\n * first; if absent a new function is created and stored in the map. This\n * allows garbage collection of custom functions when their `modMul` key is\n * collected.\n *\n * ## Performance\n *\n * The returned function uses O(maxPower) field multiplications — the minimum\n * possible for generating all powers 1 through maxPower.\n *\n * @public\n *\n * @example\n * ```typescript\n * // Default usage (most common)\n * const computePowers = getChallengePowersFunction();\n * const challenge = getFiatShamirChallengeGeneratorFunction()(transcript);\n * const powers = computePowers(challenge, 9); // [1, c, c^2, ..., c^9]\n * ```\n *\n * @example\n * ```typescript\n * // With a custom modular multiplication function (e.g. for testing)\n * import { getChallengePowersFunction } from './challenges';\n * const powers = getChallengePowersFunction({ modMul: myModMul })(challenge, 5);\n * ```\n *\n * @see {@link ChallengePowersFunction}\n * @see {@link ChallengePowersDeps}\n */\nexport function getChallengePowersFunction(deps?: ChallengePowersDeps): ChallengePowersFunction {\n const { modMul } = deps ?? {};\n\n // If no custom modMul, use default cached version\n if (modMul === undefined) {\n if (cachedDefaultChallengePowersFunction !== null) {\n return cachedDefaultChallengePowersFunction;\n }\n\n const defaultModuleMul = getCurve25519ModuleMulFunction();\n cachedDefaultChallengePowersFunction = createChallengePowersFunction(defaultModuleMul);\n return cachedDefaultChallengePowersFunction;\n }\n\n // Check cache for this modMul\n const cached = challengePowersFunctionCache.get(modMul as Curve25519ModuleMulFunction);\n if (cached !== undefined) {\n return cached;\n }\n\n // Create and cache new function\n const challengePowersFunction = createChallengePowersFunction(\n modMul as Curve25519ModuleMulFunction,\n );\n challengePowersFunctionCache.set(modMul as Curve25519ModuleMulFunction, challengePowersFunction);\n return challengePowersFunction;\n}\n\n/**\n * Returns a cached polynomial evaluator using Horner's method over GF(p).\n *\n * @param deps - Optional dependency injection for custom modular arithmetic.\n * When omitted, the default constant-time Curve25519 operations are used.\n * @returns A {@link PolynomialEvaluatorFunction} that evaluates a polynomial at a field point.\n *\n * @remarks\n * ## Caching Strategy\n *\n * - **No deps**: a singleton `cachedDefaultPolynomialEvaluatorFunction` is created on\n * first call and reused on all subsequent no-deps calls.\n * - **Custom deps**: a new function is created on every call. The WeakMap caching\n * used for `getChallengePowersFunction` is not applied here because two separate\n * dependencies (`modAdd` and `modMul`) would need to be the joint cache key, which\n * `WeakMap` does not support natively.\n *\n * ## Horner's Method (recap)\n *\n * For P(x) = c[0] + c[1]·x + ... + c[n]·x^n the nested form is:\n * ```\n * P(x) = c[0] + x·(c[1] + x·(c[2] + ... + x·c[n]))\n * ```\n * This requires n multiplications and n additions — optimal.\n *\n * ## Edge Cases\n * - Empty coefficient array returns `0n` (zero polynomial).\n * - Single-element array returns `coefficients[0]` (constant polynomial).\n *\n * @public\n *\n * @example\n * ```typescript\n * // Evaluates P(x) = 1 + 2x + 3x^2 at x = 4\n * const evaluate = getPolynomialEvaluatorFunction();\n * const coefficients = [1n, 2n, 3n] as Curve25519FieldElement[];\n * const point = 4n as Curve25519FieldElement;\n * const result = evaluate(coefficients, point);\n * // result === (1 + 8 + 48) mod p === 57n\n * ```\n *\n * @see {@link PolynomialEvaluatorFunction}\n * @see {@link PolynomialEvaluatorDeps}\n */\nexport function getPolynomialEvaluatorFunction(\n deps?: PolynomialEvaluatorDeps,\n): PolynomialEvaluatorFunction {\n const { modAdd, modMul } = deps ?? {};\n\n // If no custom dependencies, use default cached version\n if (modAdd === undefined && modMul === undefined) {\n if (cachedDefaultPolynomialEvaluatorFunction !== null) {\n return cachedDefaultPolynomialEvaluatorFunction;\n }\n\n const defaultModuleAdd = getCurve25519ModuleAddFunction();\n const defaultModuleMul = getCurve25519ModuleMulFunction();\n cachedDefaultPolynomialEvaluatorFunction = createPolynomialEvaluatorFunction(\n defaultModuleAdd,\n defaultModuleMul,\n );\n return cachedDefaultPolynomialEvaluatorFunction;\n }\n\n // Custom dependencies provided - create new function without caching\n const resolvedModuleAdd = modAdd ?? getCurve25519ModuleAddFunction();\n const resolvedModuleMul = modMul ?? getCurve25519ModuleMulFunction();\n return createPolynomialEvaluatorFunction(resolvedModuleAdd, resolvedModuleMul);\n}\n\n/**\n * Returns a cached modular exponentiation function for the Curve25519 field.\n *\n * Computes `base^exp mod p` where `p = 2^255 - 19` is the Curve25519 prime.\n * The same instance is returned on every call after the first.\n *\n * @returns A {@link ModuloPowCurve25519Function} for modular exponentiation.\n *\n * @remarks\n * ## Caching\n *\n * Returns a singleton cached on first call. The function itself is stateless\n * (it delegates to `curve25519ModuloPow`), so caching is safe and avoids\n * repeated closure allocation.\n *\n * ## Algorithm\n *\n * Uses the standard binary square-and-multiply algorithm (right-to-left)\n * running in O(log exp) multiplications. The exponent is an arbitrary `bigint`,\n * not restricted to a machine word, so very large exponents are supported.\n *\n * ## Special Case\n *\n * - `exp === 0n` returns `1n` immediately (by convention, `base^0 = 1` for\n * any base, including `0^0 = 1` in this implementation).\n *\n * @public\n *\n * @example\n * ```typescript\n * const modPow = getModuloPowCurve25519Function();\n * const base = 2n as Curve25519FieldElement;\n * const result = modPow(base, 10n);\n * // result === 1024n (no overflow because 1024 < p)\n * ```\n *\n * @example\n * ```typescript\n * // Large exponent — used in inverse S-box of Rescue cipher\n * const modPow = getModuloPowCurve25519Function();\n * const base = someFieldElement;\n * const alphaInverse = /* Rescue-XLIX inverse exponent *\\/ 0x...n;\n * const result = modPow(base, alphaInverse);\n * ```\n *\n * @see {@link ModuloPowCurve25519Function}\n */\nexport function getModuloPowCurve25519Function(): ModuloPowCurve25519Function {\n if (cachedModulePowFunction !== null) {\n return cachedModulePowFunction;\n }\n\n cachedModulePowFunction = createModulePowFunction();\n return cachedModulePowFunction;\n}\n","/**\n * Commitment Generation\n *\n * This module implements cryptographic commitment generation functions used\n * in the Umbra privacy protocol.\n *\n * ## User Commitment\n *\n * The user commitment is computed as a depth-2 Merkle tree root using Poseidon\n * hashing over the BN254 scalar field:\n *\n * ```\n * left = Poseidon(masterViewingKey, mvkBlindingFactor)\n * right = Poseidon(poseidonPrivateKey, poseidonPrivateKeyBlindingFactor)\n * root = Poseidon(left, right)\n * ```\n *\n * This commitment is stored on-chain inside the `EncryptedUserAccount`\n * and can be opened inside a Groth16 ZK circuit to prove key ownership without\n * revealing the underlying keys.\n *\n * ## Caching Strategy\n *\n * Generator functions are expensive to create because they close over a Poseidon\n * hasher that may require WASM initialisation. To avoid paying that cost on every\n * call, this module maintains two caches:\n *\n * - A module-level singleton for the default (no-deps) case.\n * - A `WeakMap` keyed on the custom hasher instance for the injected-deps case,\n * which allows garbage collection when the hasher is no longer referenced.\n *\n * @packageDocumentation\n * @module implementation/cryptography/commitment\n */\n\nimport type {\n UserCommitmentGeneratorDeps,\n UserCommitmentGeneratorFunction as UserCommitmentGeneratorFunction,\n} from \"./interfaces\";\nimport type { PoseidonHashFunction as PoseidonHashFunction } from \"../poseidon/interfaces\";\nimport type { Bn254FieldElement } from \"../../types\";\nimport { getPoseidonHasher } from \"../poseidon\";\n\n// =============================================================================\n// Cached Function Instances\n// =============================================================================\n\n/**\n * Cached singleton generator for the default (no custom hasher) case.\n *\n * Initialised lazily on the first call to {@link getUserCommitmentGeneratorFunction}\n * without arguments. Subsequent calls without arguments return this same instance\n * without re-creating the closure.\n *\n * @internal\n */\nlet cachedDefaultGenerator: UserCommitmentGeneratorFunction | null = null;\n\n/**\n * Cache mapping custom Poseidon hasher instances to their corresponding\n * generator functions.\n *\n * Using a `WeakMap` ensures that when a caller drops its reference to a custom\n * hasher, both the hasher and the associated generator function can be garbage\n * collected, preventing memory leaks in long-running applications that rotate\n * through hasher instances.\n *\n * @internal\n */\nconst generatorCache = new WeakMap<PoseidonHashFunction, UserCommitmentGeneratorFunction>();\n\n// =============================================================================\n// Internal Factory Functions\n// =============================================================================\n\n/**\n * Constructs a {@link UserCommitmentGeneratorFunction} closed over the given\n * Poseidon hasher.\n *\n * The returned async function executes three sequential Poseidon hashes to\n * build the depth-2 Merkle tree:\n *\n * 1. `leftLeaf = hasher([masterViewingKey, mvkBlindingFactor])`\n * 2. `rightLeaf = hasher([poseidonPrivateKey, poseidonPrivateKeyBlindingFactor])`\n * 3. `root = hasher([leftLeaf, rightLeaf])`\n *\n * Hashes are performed sequentially rather than in parallel because many\n * Poseidon implementations are backed by a shared WASM module that is not\n * thread-safe.\n *\n * @param hasher - The Poseidon hash function to use for all three hash\n * evaluations. Must accept an array of {@link Bn254FieldElement} values and\n * return a promise resolving to a single digest.\n * @returns A {@link UserCommitmentGeneratorFunction} that computes the\n * commitment root when called.\n *\n * @example\n * ```typescript\n * // Internal usage — prefer getUserCommitmentGeneratorFunction() externally\n * const hasher = getPoseidonHasher();\n * const generate = createUserCommitmentGeneratorFunction(hasher);\n * const root = await generate(mvk, mvkBlind, posKey, posKeyBlind);\n * ```\n *\n * @privateRemarks\n * This function is intentionally not exported. All external consumers should\n * go through {@link getUserCommitmentGeneratorFunction}, which applies caching\n * and handles dependency resolution.\n *\n * @internal\n */\nfunction createUserCommitmentGeneratorFunction(\n hasher: PoseidonHashFunction,\n): UserCommitmentGeneratorFunction {\n return async (\n masterViewingKey: Bn254FieldElement,\n mvkBlindingFactor: Bn254FieldElement,\n poseidonPrivateKey: Bn254FieldElement,\n poseidonPrivateKeyBlindingFactor: Bn254FieldElement,\n ): Promise<Bn254FieldElement> => {\n // Compute left leaf: Poseidon(masterViewingKey, mvkBlindingFactor)\n const leftLeaf = await hasher([masterViewingKey, mvkBlindingFactor]);\n\n // Compute right leaf: Poseidon(poseidonPrivateKey, poseidonPrivateKeyBlindingFactor)\n const rightLeaf = await hasher([poseidonPrivateKey, poseidonPrivateKeyBlindingFactor]);\n\n // Compute root: Poseidon(leftLeaf, rightLeaf)\n const root = await hasher([leftLeaf, rightLeaf]);\n\n return root;\n };\n}\n\n// =============================================================================\n// Public Getter Functions\n// =============================================================================\n\n/**\n * Returns a cached {@link UserCommitmentGeneratorFunction} for computing user\n * commitment Merkle roots.\n *\n * This is the primary entry point for commitment generation. The returned\n * function computes a depth-2 Poseidon Merkle tree root over BN254:\n *\n * ```\n * left = Poseidon(masterViewingKey, mvkBlindingFactor)\n * right = Poseidon(poseidonPrivateKey, poseidonPrivateKeyBlindingFactor)\n * root = Poseidon(left, right)\n * ```\n *\n * @param deps - Optional dependency injection bag. Pass `{ hasher }` to\n * substitute the default WASM-backed Poseidon hasher with a custom\n * implementation. If omitted or `undefined`, the factory uses and caches\n * the singleton returned by `getPoseidonHasher()`.\n * @returns A {@link UserCommitmentGeneratorFunction} that, when called with the\n * four key/blinding-factor inputs, asynchronously produces the BN254 field\n * element representing the commitment root.\n *\n * @remarks\n * ## Caching\n *\n * - When called without `deps` (or with `deps.hasher === undefined`), the\n * factory creates and stores a module-level singleton on first call and\n * returns that same instance on every subsequent call. This is safe because\n * the default hasher is itself a singleton.\n * - When called with a custom `hasher`, the factory looks up the generator in a\n * `WeakMap` keyed on the hasher reference. If no entry exists, it creates one\n * and stores it. This ensures that a single custom hasher instance always\n * maps to the same generator function, while allowing garbage collection when\n * the hasher falls out of scope.\n *\n * ## On-Chain Usage\n *\n * The user commitment produced by the returned function is stored in the\n * `EncryptedUserAccount` on Solana. It serves three roles:\n *\n * - Binds the user's identity to their account without exposing key material\n * - Acts as a public input to Groth16 circuits that verify key ownership before\n * allowing fund claims\n * - Prevents impersonation: an adversary cannot open the commitment to a\n * different key pair under the Poseidon collision-resistance assumption\n *\n * ## Security Properties\n *\n * - Hiding: the root reveals nothing about the four input field elements\n * - Binding: collision resistance of Poseidon makes it infeasible to find two\n * distinct input tuples that produce the same root\n * - ZK-friendliness: Poseidon's low multiplicative depth keeps circuit\n * constraint counts small, reducing proof generation time\n *\n * @example\n * ```typescript\n * import { getUserCommitmentGeneratorFunction } from \"@umbra-privacy/sdk\";\n *\n * // Default usage — recommended for production\n * const generateCommitment = getUserCommitmentGeneratorFunction();\n *\n * const commitment = await generateCommitment(\n * masterViewingKey,\n * mvkBlindingFactor,\n * poseidonPrivateKey,\n * poseidonPrivateKeyBlindingFactor,\n * );\n *\n * // Store `commitment` on-chain in the EncryptedUserAccount\n * ```\n *\n * @example\n * ```typescript\n * import { getUserCommitmentGeneratorFunction } from \"@umbra-privacy/sdk\";\n *\n * // Inject a custom hasher for testing with deterministic outputs\n * const generateCommitment = getUserCommitmentGeneratorFunction({\n * hasher: mockPoseidonHasher,\n * });\n *\n * const commitment = await generateCommitment(\n * mvk,\n * mvkBlinding,\n * poseidonKey,\n * poseidonKeyBlinding,\n * );\n * ```\n *\n * @see {@link UserCommitmentGeneratorFunction} for the function type contract\n * @see {@link UserCommitmentGeneratorDeps} for the dependency injection interface\n * @see {@link createUserCommitmentGeneratorFunction} for the internal factory\n * @public\n */\nexport function getUserCommitmentGeneratorFunction(\n deps?: UserCommitmentGeneratorDeps,\n): UserCommitmentGeneratorFunction {\n const { hasher } = deps ?? {};\n\n // If no custom hasher, use default cached version\n if (hasher === undefined) {\n if (cachedDefaultGenerator !== null) {\n return cachedDefaultGenerator;\n }\n\n const defaultHasher = getPoseidonHasher();\n cachedDefaultGenerator = createUserCommitmentGeneratorFunction(defaultHasher);\n return cachedDefaultGenerator;\n }\n\n // Check cache for this hasher\n const cached = generatorCache.get(hasher);\n if (cached !== undefined) {\n return cached;\n }\n\n // Create and cache new function\n const commitmentGeneratorFunction = createUserCommitmentGeneratorFunction(hasher);\n generatorCache.set(hasher, commitmentGeneratorFunction);\n return commitmentGeneratorFunction;\n}\n"]}
|