@aztec/accounts 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/dest/artifacts/EcdsaAccount.json +85 -73
  3. package/dest/artifacts/SchnorrAccount.json +85 -73
  4. package/dest/artifacts/SchnorrSingleKeyAccount.json +74 -58
  5. package/dest/defaults/account_contract.d.ts +2 -1
  6. package/dest/defaults/account_contract.d.ts.map +1 -1
  7. package/dest/defaults/account_contract.js +1 -1
  8. package/dest/defaults/account_entrypoint.d.ts +1 -1
  9. package/dest/defaults/account_entrypoint.d.ts.map +1 -1
  10. package/dest/defaults/account_entrypoint.js +2 -2
  11. package/dest/defaults/account_interface.d.ts +2 -1
  12. package/dest/defaults/account_interface.d.ts.map +1 -1
  13. package/dest/defaults/account_interface.js +1 -1
  14. package/dest/defaults/entrypoint_payload.d.ts +1 -1
  15. package/dest/defaults/entrypoint_payload.d.ts.map +1 -1
  16. package/dest/defaults/entrypoint_payload.js +2 -2
  17. package/dest/ecdsa/account_contract.d.ts +1 -1
  18. package/dest/ecdsa/account_contract.d.ts.map +1 -1
  19. package/dest/ecdsa/account_contract.js +2 -2
  20. package/dest/ecdsa/index.d.ts +1 -1
  21. package/dest/ecdsa/index.d.ts.map +1 -1
  22. package/dest/schnorr/account_contract.d.ts +1 -1
  23. package/dest/schnorr/account_contract.d.ts.map +1 -1
  24. package/dest/schnorr/account_contract.js +2 -2
  25. package/dest/schnorr/index.d.ts +1 -1
  26. package/dest/schnorr/index.d.ts.map +1 -1
  27. package/dest/single_key/account_contract.d.ts +1 -1
  28. package/dest/single_key/account_contract.d.ts.map +1 -1
  29. package/dest/single_key/account_contract.js +2 -2
  30. package/dest/single_key/index.d.ts +1 -1
  31. package/dest/single_key/index.d.ts.map +1 -1
  32. package/dest/testing/configuration.d.ts +28 -0
  33. package/dest/testing/configuration.d.ts.map +1 -0
  34. package/dest/testing/configuration.js +61 -0
  35. package/dest/testing/create_account.d.ts +1 -1
  36. package/dest/testing/create_account.d.ts.map +1 -1
  37. package/dest/testing/create_account.js +4 -1
  38. package/dest/testing/index.d.ts +2 -2
  39. package/dest/testing/index.d.ts.map +1 -1
  40. package/dest/testing/index.js +3 -3
  41. package/package.json +7 -6
  42. package/dest/testing/sandbox.d.ts +0 -22
  43. package/dest/testing/sandbox.d.ts.map +0 -1
  44. package/dest/testing/sandbox.js +0 -48
@@ -57,7 +57,7 @@
57
57
  }
58
58
  }
59
59
  ],
60
- "bytecode": "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",
60
+ "bytecode": "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",
61
61
  "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
62
62
  },
63
63
  {
@@ -81,7 +81,7 @@
81
81
  }
82
82
  ],
83
83
  "returnTypes": [],
84
- "bytecode": "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",
84
+ "bytecode": "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",
85
85
  "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
86
86
  },
87
87
  {
@@ -164,7 +164,7 @@
164
164
  }
165
165
  ],
166
166
  "returnTypes": [],
167
- "bytecode": "H4sIAAAAAAAA/+1dB5gURdNubi+Scw5HzrJz+QT1yAiKKCiIqNwdd4IiGMAcMGECAxjAgAlzAkUwIAYMmHNWzDlgzuJfdVRDM+zHv/tt1Xzdz+w8z/u8e7t9PVXVVT3vzPbOnFpHqfNzVM1WC5AGSAfkqi3v4VZGHE1u8zKgj4wY/eZHiwoKqorzqrx8rzyaV1pRUhgtKKwoKvFKvMKSwil5Jfn5VSUFJcWlFaXF0VKvIL/Kqy4sza+mjjP4bIxK+J0JfWQK+J1pud9Z0EeWgN9ZjH7rvG8lmPdtoI82AnFoIxCHdoJx6AB9dBCIQweBOHQUjENn6KOzQBw6C8Shq2AcukMf3QXi0F3xzovqP/ifrJ09mccr2xirloCNatO8htyauA1xW+J2xO2JOxDnEnck7kTcmbgLcVfibsTdiXsQ9/wfcR9ALxozjEtDiksvC+zqbdjVyLLx6kQ2Rsi+/7SVEUeT2zy5vovLBfuuEOy7UrDvKYJ9Vwn2XS3Xd0mNntRbX+IdiPvpfRDrhM0jzgc8Gdn0Gk+l/DWTQ8CtlvFebXqdZrxXh15HjPfq0ut047169DrDeK8+vc403mtAr7N8n+FWRhxNcot1XhNNcssx4pJt+GPGRbOOS23jPR2XOsZ72ve6xns6LvWM9/T+6hvv6f3peGL/bYzP9WaOpY6JabP+PD2GTxkxfMqM4VNWDJ9Mm/E9HYsy4miSW6YRI64+zXzXWy3f32XG63pGTOry2lJzfl6ft8+amDUUiFl9FX/MGhoxayAQs0a8fdbErIlAzBqp+GPWxIhZY4GYNeXtsyZmzQVi1lTFH7PmRsyaCcSsBW+fUYE+a+xsKWBnG94+S3BsW6n4x7aNMbatBWLWlrfPmpi1Y+4T+2hvxETHT9tex/i8nRGv9szxqmXsU/er/24vt98a/zv8P/53iGFHhwD9N+1L2ZqyNWXr/9bWdv9jW3G/uaz79YpzfPvFbXvHzlzBGGCfHXn7rJnnOxn2a1/1fuoYn5u52InZt1rGPnW/+m/TvpStKVtTtqZsTdmasjVla8rWlK0pW1O2pmxN2Zqy1RVbze9A0wxbmM/ta2xRPltUjLjoLcciWzItsiVikS1ZFtmSbpEt2RbZkmGRLbX+x7aY62KU8Z7+PM14T8+P5vqZzvTaXD/ThV6b62e6Gn7q97rRa3P9THd6ba4x6mG81tyTXptrjHrRa3ONUW96ba4x6kOvzfVEeo1ZA+M9vd6skfGeXnvW2HhPr0Nraryn16Q1M97T69NaGO/l0+uWxnsF9LqV8V4hvW5tvFdEr9sa7xXT6w7Ge3oMzTHXY9jJeE+PYWfjPT2GXYz39Bh2Nd7TY9jNeE+PYXfjPT2G5pjqMexpvKfHsJfxnh7D3sZ7eg1SH+M9Pa59jff0uO5gvKfX4vQz3tNjHTXe02PtGe/pNSl5xnt6/PON9/T4Fxjv6bUZhcZ7OieKjPd0TugxxbEYU2vL5/r/zRrV+zFrtDjG/opi2KVfm3OS/p8y4mhyW82cZO6nzPhb76u2YUOBBbZkWGRLtkW2pFtkS5ZFtkQssiXTIltyLLIlLYYt+by21BxC9PEBNz0P5xt2aJvyDDs85pjU9BHDDs+wQ+8/atjRj9eOml3sEMOOfoYdev87GHb05bWjJvx9YtjR17BD77+PYUdvXjtqUq9XDDt6G3bo/fcy7OjJa0dNCvaIYYepsfX+exh2dOe1o0aSdIthR3fDDr3/boYdXXntqNltlxh2dDXs0PvvYtjRmdeOmrnMPJfCv/V8ofcVMdoMJNGEmtg8DzM1qtb7pr7V5wWmNi6h16auLqXXpibfkV6ber4/vTbPBfR8a55HbO8cxDxX0fqrxHhPH9dKjfe0BtjReE/rJW1TFv0v8xrXPNyXXpert+2df5vrs/T/meeKeq2WudZXYu1qO599+u/2hn36PXNNOfN63hpb6vps0X+3E95vfd9+6we034a+/TYMaL+NffttHNB+W/r229K33/903V3CFuWzRW3HlqYW2dLAIlsaWmRLbYtsybLIlnSLbGltkS1tLLKlhUW2tLTIliYW2VLPIlvqW2RLjkW2ZFpkS8QiW1pZZEszi2yRPp9JxJZGFtnS2CJb6lhkS12LbMm2yJYMi2yp9T+25T+tp9Cfm9/V6mss5hqGDj6f8L1cem2uYdDXx8z7pOjraOa6Bn2d0FzXoK/BNTTe09c2zbUO+vqdudZBX4ttYrynr/2Z6x/0tWNzrYO+bmiuddDxMOOnj53tjff0eYy5rkHnXa7xntYA5vVDfT5mXmfU9WOuddBaxrxGqcfGXOugx8a8vqnHxlzroMfGvDaqx8Zc66DHRscH/Vpm3L9I/7+ZO3o/5vf8vWLsr2cMu/Rrs1b0/5QRR5PbamrF3E+Z8bfel/k9f3cLbMmwyJZsi2ypa5EtdSyypbFFtjSyyJbmFtnSzCJbWllkS8QiWzItsiXHIlvqW2RLPYtsaWKRLS0tsqWFRba0sciW1hbZkm6RLVkW2VLbIlsaWmRLA4tsaWqRLWkB2aLPn3W/PX224H678e63ZmlWV2O/+ry+m+G/3r/5u5ouzHbU8tmRa+xXct0b9tEphv+dDf/1/jsZdnRitgP9b27YUWb8bV5L0rpejw/O8YVpW+xiXidZY5eZfyerbc8tIkabwWlb7CpN2xJDvQbNvG9ye9972L/EvcLa++Kq/9b7Qvv8a9FM+8zfPPnvb2ZeVzT/N+LbR5YSGZ+oOT645aptx8ec5zLV1rWlay5itBlhjOGpkS3/x2z7VmuB01Tsc1bmeq9ZnqprRxn9mzHsaLyONR928rXTMWW00/Pbofefa7zXPoadHQ07Y903kPveqP76qqW2rRH/a+1LZ8Mu5jWy2z2etjX2y7zOPi/RewT2NmzZgdeWfPP3p/HYIvg7CE/gNx419/qNMveJfZgPJdHx07bXMT43f7/C/TuaWsY+db/6b9O+lK38tqItbX12mr/HbmuBffo983fHrX3xw+P3kXLaMD+WNvRf/zC14dzIFruONrRhD19cze+DzVhL/ObF1AJlattjU23DF/N3QMznYVudi+p+bdovc+xrUtTUNz1ixF3vX1pndYhhR65hh96/eW9hZh1Vo0t7x7CjnWGH3r+pGfowxyPHZwdu29MM5m8WmfWLZ94rIx5bTP3CrAs8c/6PxxbzGJYnYIuXgC3m730LBGzJT8AW8zfQRQK2FCZgS5FhS4mALcUJ2KL3j8d2XX/djPd0HXQ03tP5aK7j0nnRxXhPj08n4z3//TzqGPaaa8X0bx7N6zb9fe9h/Ab4fIomt9Ucl/R+dL/67wGGffr3l/3lbCkx+zevUwww9rkTs/+ZRl9cfmCfA5ntxD4GUV/pxnjo/USMz+8yriutoNeYTzvT56VGP2tjfK637dVRmTEmQ3h9rbnWMdTovyzGPvD9Ybz79cz91iLofej3I8brR3VRG+1w0/HVNmP9DI7Rzny9s+9/6hifDxb2eYhhR5nxt94X5skqI6fWGuc6uzDbY/prxqW/ERf9+U5Gu0HGa90214jbYF47SwTyvsb3oUbMdWz1fszce9YYj+eNGh7oixt+/l6Mz/W2vRo38244r681NT7C6L/M2Ie531159+uZ+9U1rveh348Yr981anzXLS83x1fbjDU+LEY78/VA3//UMT4fJuzzcMOOMuNvvS/Mk5eMnHrPqPEyZntMf824DDLioj83rxsMNV7rtrlG3JjnxhKBvK/xfYQRc92v3o+Ze58Z4/GFUcNDfHHDz3+L8bnetlfjZt6N5PW1psZHGf2XGfsw97sb7349c7+6xvU+9PsR4/WvRo3vtuXl5vhqm7HGd43Rznw9xPc/dYzPdxX2eaRhR5nxt94X5snXRk79ZtQ48/HRM/014zLUiIv+3Lw+NcJ4rdvmGnFjnhtLBPK+xvdRRsx1bPV+zNxTxrXaNOP3IcN9ccPPG8X4XG/bq3Ez73bn9bWmxkcb/ZcZ+zD3uwfvfj1zv7rG9T5GG6HVrxvqhQJGO9x0fLXNWOO7xWhnvh7u+586xue7Cfu8u2FHmfG33hfmSYaRU42MdQXc5w6mv2ZcRhhx0Z+b135HGa9121wjbsxzY4lA3tf4PtqIuY6t3o+Ze62N8Whr1PBIX9zw894xPtfb9mrczLsxvL7W1PieRv9lxj7M/e7Fu1/P3K+ucb0P/X7EeN3LqPG9trzcHF9tM9b4HjHama9H+v6njvH5HsI+jzHsKDP+1vvCPOlg5FRvo8a5zx1Mf824jDLioj/vYrQbbbzWbXONuDHPjSUCeV/j+55GzHVs9X7M3CswxqPIqOHdfXHDz4fG+Fxv26txM+/G8vpaU+PjjP7LjH2Y+92bd7+euV9d43of+v2I8XqIUeN7b3m5Ob7aZqzxvWK0M1/v7vufOsbnewn7PNawo8z4W++rZl2nkVNDjRrnPncw/TXjMtqIi/68k9FuT+O1bptrxI15biwRyPsa38cZMdex1fsxc2+0MR5jjBoe44sbfn5gjM/1tr0aN/NuH15fa2p8vNF/mbEPc78TePfrmfvVNa73od+PGK8PMGp8wpaXm+OrbcYa3ztGO/P1GN//1DE+31vY530MO8qMv/W+ME/GGjl1oFHj3OcOpr9mXPY04qI/Ny6HbM59s22uETfmubFEIO9rfB9vxFzHVu/HzL2pxngcbNTwWF/c8PNjY3yut+3VuJl3+/L6WlPjE43+y4x9mPvdj3e/nrlfXeN6H/r9iPH6GKPG99vycnN8tc1Y4xNitDNfj/X9Tx3j8wnCPu9r2FFm/K33hXlyqJFTxxo1zn3uYPprxmWcERf9uXkv4Da+9pjPuh7MtQfcdWkeF3S/+m9zvtbvmec/gr+XqImj+TsF/+8lzN8H9TBs0r8PcnGtpf+1Xl9q/p7AvE4b6/canX3t0D/m3xnlC/yWoGa89fq6dCM2ej8R4/OFRi1fbMz/2mczH5bG+Fxv2zs+mOsfmdf6Rc11z/r4sEOM/XKv6zP3q48Peh/6/Yjx+jrj+GA+50LHV9uMedc3RjvzdUff/9QxPu8r7LP5bIwy429z7fgiI6eWGvNaLrM9pr9mXFobcdGfm78Zkqw3c/+9DTv8zxI1fxNozp/cv58xf1el+9V/9zXs0+/lGvZpP8y5xPxdQEMBWxv4bNV/m/fxlthvhm+/GQHtN8u336yA9pvj229OQPut49tvnYD2G3xeecXYZxPmPnGcGqmtt+0de837UzdmtSXqZast94A7qGrW6Jmzqo6sZdik7dT3fKlt2GWek0eM/0lX2/qWGeO97Bjv1VbbbubzOuoZrxsa/1ffZyfGWN9HwrzXpL5Pl3mvSe2HeV9J7Y9un6W2HSPWg4/e0nx950eLCgqqivOqvHyvPJpXWlFSGC0orCgq8Uq8wpLCKXkl+flVJQUlxaUVpcXRUq8gv8qrLizNr6bO0xjtjPL1ZWqhzYHlsjOPMX46UXVC4AF3o9okmpD7EeNWoLbeajGPZaHinVCzjXwrJD8KDH+KyO9tEl9gzDy+vqKmvfjDBj0hxZqwMgV8Ub79+ONXXwlPJhKDUyzQb4niKw4pv0v4x2iryY97ws9n7KtU8U848UykO6otCsE/Qe1otOsfo10afd6fGIt/gNp64445Zx7v9D+K+c7bifnORrtdthPzXYyYl8Vo59HnZcRo10D6TGJuGaD4D8J35vDOA9x+70Qx5fZ7WY7M/BdhtnMQYywZx9rjjF9QoqwPX19R86xS9zlYbVrtiquqh6lNq+Jw9SWuasLVM7hKC1c/4LfsuJoDvyXFb+PwW1/85gW/HcJvkvBbRPx2Br+VwW+T8Bsv/FYPv/GaBNgfcADgQMBkQDmgAlAJmAKoAlQDDgJMBUwDHAw4BDAdcChgBmAm4DDA4YAjAEcCZgFmA44CHA04BnAs4DjA8YATACcCTlKb7pIxB3AK4FS19ZmpKU5xM8+Yy5jGQEDsRk3bNeOVtyzDN+X7vD75l8FqS0HUPHPX2/aurJhPFElntWXTlRV9VQKurAycPWvq+GmzZlQdudX1Ff/sVytGtMznTZjPYdARTjfeSzM80u/p/8kyWOz0I6K2TWXTMa79DFYyhyPWeHibrr/o7TTi09WW1KtlxAsH8t8YMatlvE6jNmnbaVPrP/Tzn0pRLBm0c+j4r4azGAD/1b8I877NBPlvNUVVNW5R7zTFp09OVzKJm8YcP06fz9iqL2hbnldQVFUYLaoqKS2pKi2uLiyOVpZXV08pjhZUVkQrKgqKovlefnVFcV60Iq8UdltaVVjp1dgVlPY5g6+vrS5IzVWpC1IsgzNXoN8zld0XpNDvM/nHKKatHBPdmQL9nqV4CxOLEPvUUikI9TJEyRwEWPPCp17OJj5HhUy9oOOmesEASKsXM0GSVS9nK77iO0e5oV44fT5XuadezlW8k6Te5qmUemEZnHkC/c5XdqsX9Hs+/xiJqJdzyFbufs9TvIWJRYh9BqlehiqZgwBrXvjUy/nEF6iQqRd03FQvGABp9WImSLLq5XzFV3wXKDfUC6fPFyr31MuFineS1NsClVIvLIOzQKDfhcpu9YJ+L+QfIxH1cgHZyt3vRYq3MLEIsc8g1cswJXMQYM0Ln3q5mPgSFTL1go6b6gUDIK1ezARJVr1crPiK7xLlhnrh9PlS5Z56uVTxTpJ6W6RS6oVlcBYJ9LtY2a1e0O/F/GMkol4uIVu5+71M8RYmFiH2GaR6Ga5kDgKseeFTL5cTX6FCpl7QcVO9YACk1YuZIMmql8sVX/FdodxQL5w+X6ncUy9XKt5JUm9LVEq9sAzOEoF+r1J2qxf0+yr+MRJRL1eQrdz9Xq14CxOLEPsMUr2MUDIHAda88KmXa4ivVSFTL+i4qV4wANLqxUyQZNXLNYqv+K5VbqgXTp+vU+6pl+sU7ySpt6UqpV5YBmepQL/XK7vVC/p9Pf8YiaiXa8lW7n5vULyFiUWIfQapXnZVMgcB1rzwqZcbiW9SIVMv6LipXjAA0urFTJBk1cuNiq/4blJuqBdOn29W7qmXmxXvJKm3W1RKvbAMzi0C/d6q7FYv6Pet/GMkol5uIlu5+71N8RYmFiH2GaR6GalkDgKseeFTL7cT36FCpl7QcVO9YACk1YuZIMmql9sVX/HdodxQL5w+36ncUy93Kt5JUm/LVEq9sAzOMoF+lyu71Qv6vZx/jETUyx1kK3e/dynewsQixD6DVC+jlMxBgDUvfOrlbuIVKmTqBR031QsGQFq9mAmSrHq5W/EV3wrlhnrh9Pke5Z56uUfxTpJ6W6lS6oVlcFYK9LtK2a1e0O9V/GMkol5WkK3c/d6reAsTixD7DFK97KZkDgKseeFTL/cR369Cpl7QcVO9YACk1YuZIMmql/sUX/Hdr9xQL5w+P6DcUy8PKN5JUm+rVUq9sAzOaoF+H1R2qxf0+0H+MRJRL/eTrdz9rlG8hYlFiH0GqV52VzIHAda88KmXh4gfViFTL+i4qV4eVvLqxUyQZNXLQ4qv+B5WbqgXTp8fUe6pl0cU7ySpt0dVSr2wDM6jAv2uVXarF/R7Lf8YiaiXh8lW7n4fU7yFiUWIfQapXkYrmYMAa1741MvjxE+okKkXdNxULxgAafViJkiy6uVxxVd8Tyg31Aunz08q99TLk4p3ktTbOpVSLyyDs06g36eU3eoF/X6Kf4xE1MsTZCt3v08r3sLEIsQ+g1QveyiZgwBrXvjUyzPEz6qQqRd03FQvGABp9WImSLLq5RnFV3zPKjfUC6fPzyn31MtzineS1NvzKqVeWAbneYF+X1B2qxf0+wX+MRJRL8+Srdz9vqh4CxOLEPsMUr2MUTIHAda88KmXl4hfViFTL+i4qV4wANLqxUyQZNXLS4qv+F5WbqgXTp9fUe6pl1cU7ySpt1dVSr2wDM6rAv2+puxWL+j3a/xjJKJeXiZbuft9XfEWJhYh9hmketlTyRwEWPPCp17eIH5ThUy9oOOmesEASKsXM0GSVS9vKL7ie1O5oV44fX5Luade3lK8k6Te3lYp9cIyOG8L9PuOslu9oN/v8I+RiHp5k2zl7vddxVuYWITYZ5DqZS8lcxBgzQufenmPeL0KmXpBx031ggGQVi9mgiSrXt5TfMW3XrmhXjh9fl+5p17eV7yTpN4+UCn1wjI4Hwj0+6GyW72g3x/yj5GIellPtnL3+5HiLUwsQuwzSPUyVskcBFjzwqdePib+RIVMvaDjpnrBAEirFzNBklUvHyu+4vtEuaFeOH3+VLmnXj5VvJOk3j5TKfXCMjifCfT7ubJbvaDfn/OPkYh6+YRs5e73C8VbmFiE2GeQ6mWckjkIsOaFT718SfyVCpl6QcdN9YIBkFYvZoIkq16+VHzF95VyQ71w+vy1ck+9fK14J0m9faNS6oVlcL4R6PdbZbd6Qb+/5R8jEfXyFdnK3e93ircwsQixzyDVy95K5iDAmhc+9bKB+HsVMvWCjpvqBQMgrV7MBElWvWxQfMX3vXJDvXD6/INyT738oHgnSb39qFLqhWVwfhTo9ydlt3pBv3/iHyMR9fI92crd78+KtzCxCLHPINXLPkrmIMCaFz718gsxHshDpV5+UVurF3wtrV7MBElWvfyi+IrvV+WGeuH0+Tflnnr5TfFOknr7XaXUC8vg/C7Q7x/KbvWCfv/BP0Yi6uVXspW73z8Vb2FiEWKfQaqX8UrmIMCaFz718hfx3ypk6gUdN9ULBkBavZgJkqx6+UvxFd/fyg31wunzP8o99fKP4p0k9bZRpdQLy+BsFOj3X2W3ekG//+UfIxH18jfZyt0vdsjl9+ajb61g1csEJXMQYM0Ln3qpRUFIqxUy9YKOm+oFAyCtXswESVa91KrFV3xptWQSl1u9cPocqeWeeokwT5J6S6+VUi8sg4OB5O43gzHppfzOqMU+RiLqJY1s5e43U0C9ZAasXvZVMgcB1rzwqZcsCkJ22NRLlk+9ZAegXswESVa9ZDFOatmOqBdOn3McVC85Quqldkq98AxObQH1Usdy9YJ+13FEvWSTrdz91hVQL3UDVi8TlcxBgDUvfOqlHgWhftjUSz2feqkfgHoxEyRZ9VKPcVKr74h64fS5gYPqpYGQemmYUi88g9NQQL00sly9oN+NHFEv9clW7n4bC6iXxgGrl/2UzEGANS986qUJBaFp2NRLE596aRqAejETJFn10oRxUmvqiHrh9LmZg+qlmZB6aZ5SLzyD01xAvbSwXL2g3y0cUS9NyVbuflsKqJeWAauXSUrmIMCaFz710oqC0Dps6qWVT720DkC9mAmSrHppxTiptXZEvXD63MZB9dJGSL20TakXnsFpK6Be2lmuXtDvdo6ol9ZkK3e/7QXUS/uA1cv+SuYgwJoXPvXSgYKQGzb10sGnXnIDUC9mgiSrXjowTmq5jqgXTp87OqheOgqpl04p9cIzOJ0E1Etny9UL+t3ZEfWSS7Zy99tFQL10CVi9HKBkDgKseeFTL10pCN3Cpl66+tRLtwDUi5kgyaqXroyTWjdH1Aunz90dVC/dhdRLj5R64RmcHgLqpafl6gX97umIeulGtnL320tAvfQKWL0cqGQOAqx54VMvvSkIfcKmXnr71EufANSLmSDJqpfejJNaH0fUC6fPfR1UL32F1MsOKfXCMzg7CKiXfparF/S7nyPqpQ/Zyt1vVEC9RANWL5OVzEGANS986sWjIOSFTb14PvWSF4B6maz41IvHOKnlOaJeOH3Od1C95Aupl4KUeuEZnAIB9VJouXpBvwsdUS95ZCt3v0UC6qUoYPVSrmQOAqx54VMvxRSEkrCpl2KfeikJQL2YCZKseilmnNRKHFEvnD6XOqheSoXUy44p9cIzODsKqJf+lqsX9Lu/I+qlhGzl7neAgHoZELB6qVAyBwHWvPCpl50oCDuHTb3s5FMvOwegXswESVa97MQ4qe3siHrh9HkXB9XLLkLqpSylXpgGR0C9DLRcvaDfAx1RLzuTrdz9DhJQL4MCVi+VSuYgwJoXPvUymIIwJGzqZbBPvQwJQL2YCZKsehnMOKkNcUS9cPo81EH1MlRIvQxLqReewRkmoF6GW65e0O/hjqiXIWQrd78jBNTLiIDVyxQlcxBgzQufetmVgjAybOplV596GRmAejETJFn1sivjpDbSEfXC6fMoB9XLKCH1sltKvfAMzm4C6mV3y9UL+r27I+plJNnK3e9oAfUyOmD1UqVkDgKseeFTL3tQEMaETb3s4VMvYwJQL2aCJKte9mCc1MY4ol44fd7TQfWyp5B62SulXngGZy8B9TLWcvWCfo91RL2MIVu5+x0noF7GBaxeqpXMQYA1L3zqZW8Kwj5hUy97+9TLPgGoFzNBklUvezNOavs4ol44fR7voHoZL6ReJqTUC8/gTBBQL/tarl7Q730dUS/7kK3c/U4UUC8TA1YvBymZgwBrXvjUy34UhElhUy/7+dTLpADUi5kgyaqX/RgntUmOqBdOn/d3UL3sL6ReDkipF57BOUBAvRxouXpBvw90RL1MIlu5+50soF4mB6xepiqZgwBrXvjUSzkFoSJs6qXcp14qAlAvZoIkq17KGSe1CkfUC6fPlQ6ql0oh9TIlpV54BmeKgHqpsly9oN9VjqiXCrKVu99qAfVSHbB6maZkDgKseeFTLwdREKaGTb0c5FMvUwNQL2aCJKteDmKc1KY6ol44fZ7moHqZJqReDk6pF57BOVhAvRxiuXpBvw9xRL1MJVu5+50uoF6mB6xeDlYyBwHWvPCpl0MpCDPCpl4O9amXGQGoFzNBklUvhzJOajMcUS+cPs90UL3MFFIvh6XUC8/gHCagXg63XL2g34c7ol5mkK3c/R4hoF6OCFi9HKJkDgKseeFTL0dSEGaFTb0c6VMvswJQL2aCJKtejmSc1GY5ol44fZ7toHqZLaRejkqpF57BOUpAvRxtuXpBv492RL3MIlu5+z1GQL0cE7B6ma5kDgKseeFTL8dSEI4Lm3o51qdejgtAvZgJkqx6OZZxUjvOEfXC6fPxDqqX44XUywkp9cIzOCcIqJcTLVcv6PeJjqiX48hW7n5PElAvJwWsXg5VMgcB1rzwqZeTKQhzwqZeTvaplzkBqBczQZJVLyczTmpzHFEvnD6f4qB6OUVIvZyaUi88g3OqgHo5zXL1gn6f5oh6mUO2cvd7uoB6OT1g9TJDyRwEWPPCp17OoCDMDZt6OcOnXuYGoF7MBElWvZzBOKnNdUS9cPp8poPq5Uwh9XJWSr3wDM5ZAurlbMvVC/p9tiPqZS7Zyt3vOQLq5ZyA1ctMJXMQYM0Ln3o5l4IwL2zq5VyfepkXgHoxEyRZ9XIu46Q2zxH1wunzfAfVy3wh9XJeSr3wDM55AurlfMvVC/p9viPqZR7Zyt3vBQLq5YKA1cthSuYgwJoXPvVyIQVhQdjUy4U+9bIgAPViJkiy6uVCxkltgSPqhdPnhQ6ql4VC6uWilHrhGZyLBNTLxZarF/T7YkfUywKylbvfSwTUyyUBq5fDlcxBgDUvfOrlUgrCorCpl0t96mVRAOrFTJBk1culjJPaIkfUC6fPix1UL4uF1MtlKfXCMziXCaiXyy1XL+j35Y6ol0VkK3e/VwiolysCVi9HKJmDAGte+NTLlRSEJWFTL1f61MuSANSLmSDJqpcrGSe1JY6oF06fr3JQvVwlpF6uTqkXnsG5WkC9XGO5ekG/r3FEvSwhW7n7vVZAvVwbsHo5UskcBFjzwqderqMgLA2bernOp16WBqBezARJVr1cxzipLXVEvXD6fL2D6uV6IfVyQ0q98AzODQLq5UbL1Qv6faMj6mUp2crd700C6uWmgNXLLCVzEGDNC596uZmCcEvY1MvNPvVySwDqxUyQZNXLzYyT2i2OqBdOn291UL3cKqRebkupF57BuU1AvdxuuXpBv293RL3cQrZy93uHgHq5I2D1MlvJHARY88KnXu6kICwLm3q506delgWgXswESVa93Mk4qS1zRL1w+rzcQfWyXEi93JVSLzyDc5eAernbcvWCft/tiHpZRrZy97tCQL2sCFi9HKVkDgKseeFTL/dQEFaGTb3c41MvKwNQL2aCJKte7mGc1FY6ol44fV7loHpZJaRe7k2pF57BuVdAvdxnuXpBv+9zRL2sJFu5+71fQL3cH7B6OVrJHARY88KnXh6gIKwOm3p5wKdeVgegXswESVa9PMA4qa12RL1w+vygg+rlQSH1sialXngGZ42AennIcvWCfj/kiHpZTbZy9/uwgHp5OGD1coySOQiw5oVPvTxCQXg0bOrlEZ96eTQA9WImSLLq5RHGSe1RR9QLp89rHVQva4XUy2Mp9cIzOI8JqJfHLVcv6PfjjqiXR8lW7n6fEFAvTwSsXo5VMgcB1rzwqZcnKQjrwqZenvSpl3UBqBczQZJVL08yTmrrHFEvnD4/5aB6eUpIvTydUi88g/O0gHp5xnL1gn4/44h6WUe2cvf7rIB6eTZg9XKckjkIsOaFT708R0F4Pmzq5Tmfenk+APViJkiy6uU5xknteUfUC6fPLzioXl4QUi8vptQLz+C8KKBeXrJcvaDfLzmiXp4nW7n7fVlAvbwcsHo5XskcBFjzwqdeXqEgvBo29fKKT728GoB6MRMkWfXyCuOk9qoj6oXT59ccVC+vCamX11PqhWdwXhdQL29Yrl7Q7zccUS+vkq3c/b4poF7eDFi9nKBkDgKseeFTL29REN4Om3p5y6de3g5AvZgJkqx6eYtxUnvbEfXC6fM7DqqXd4TUy7sp9cIzOO8KqJf3LFcv6Pd7jqiXt8lW7n7XC6iX9QGrlxOVzEGANS986uV9CsIHYVMv7/vUywcBqBczQZJVL+8zTmofOKJeOH3+0EH18qGQevkopV54BucjAfXyseXqBf3+2BH18gHZyt3vJwLq5ZOA1ctJSuYgwJoXPvXyKQXhs7Cpl0996uWzANSLmSDJqpdPGSe1zxxRL5w+f+6gevlcSL18kVIvPIPzhYB6+dJy9YJ+f+mIevmMbOXu9ysB9fJVwOrlZCVzEGDNC596+ZqC8E3Y1MvXPvXyTQDqxUyQZNXL14yT2jeOqBdOn791UL18K6RevkupF57B+U5AvWywXL2g3xscUS/fkK3c/X4voF6+D1i9zFEyBwHWvPCplx8oCD+GTb384FMvPwagXuYoPvXyA+Ok9qMj6oXT558cVC8/CamXn1PqhWdwfhZQL79Yrl7Q718cUS8/kq3c/f4qoF5+DVi9nKJkDgKseeFTL79REH4Pm3r5zadefg9AvZgJkqx6+Y1xUvvdEfXC6fMfDqqXP4TUy58p9cIzOH8KqJe/LFcv6PdfjqiX38lW7n7/FlAvfwesXk5VMgcB1rzwqZd/KAgbw6Ze/vGpl40BqBczQZJVL/8wTmobHVEvnD7/66B6+VdIveBApdRLkn3+SzMJd7+10uxWL+h3rTT2MRJRLxvJVu5+09L41Qv2mUOvzULgHr8+jGOWS/1EcEIBZAAyAVmAbPQHUBtQB1AXUA9QH9AA0BDQCNAY0ATQFNAM0BzQAtAS0ArQGtAG0BbQDtAe0AGQC+gI6EQB03FEW7LVlr/TfX9n+P7O9P2d5fs72/d3ju/v2r6/6/j+ruv7u57v7/q+vxv4/m7o+7uR7+/Gvr+b+P5u6vu7me/v5r6/W/j+bun7u5Xv79a+v9v4/m7r+7ud7+/2vr87+P7O9f3d0fd3pzR5IWfWTLJzR4Rxfr87R0bI+eOXrHhNT+PpC8cigzF+K6yPX03XXmbyPueRz14WY/zusTl+BZvt9LKT8zlq+OzlMMZvpa3xy9vKTq/2f+9z1OezV4cxfqssjF9R9TZ2enX/O59LYvjs1WOM3722xa8kpp1e/cR9Lv4PPnsNGON3n03xK/6PdnoNE/M5bzs+e40Y43e/LfEr3q6dXuP4fa78f3z2mjDG7wEb4lf8/9rpNY3P52gcPnvNGOO3+n8dv2hcdnrN/3+fC+P02WvBGL8H/5fxK4jbTq/ldn0uqE7AZ68VY/zW/K/iV5yQnV7r/+xzSYI+e20Y4/fQ/yB+pdUJ2+m1je1z9L/w2WvHGL+Hg45f9L+y02u/rc/ef+mz14Exfo8EGb8p/7WdXu7WPucn4bPXkTF+jwYUv7zqpOz0OqXxXUs0r9kl/QDRgOIXTW7zGK+zefcwxu8xR+LHeJ3IW8UYv8cdiR/jdQ7vPsb4PeFI/BjP070HGOP3pCPxYzzP9B5kjN86R+LHeJ7kPcQYv6cciR+jzvceYYzf047Ej1GnemsZ4/eMI/Fj1Fne44zxe9aR+DHqBO9Jxvg950j8GI9z3lOM8XvekfgxztPeM4zxe8GR+DHOM95zjPF70ZH4MdaJx5gzHmf8cD0bLrzuC9gI2IFY93+62rTO7RziC4gvIb6C+Frim4jvIF5BfD/xw8RPED9L/DLxm8TriT8h/or4e+Jfif8mTqMfVmQT1yduStyaOJe4G3Ef4jziEuKdiYcQjyQeQ7wP8STiCuKpxDOIZxEfRzyHeC7xPOIFxIuIlxAvJb6FeBnxSuLVxI8SryPWDxbWj+jTD7v5gFjfgFXfykzfFET/vFb/UCWX8kCvd9TrIHOJ9bpJvZ5Sr7PU6y/1uky9XlOv49TrO/W6T70eVK8T1etH9bpSvd5Ur0PV61P1ulW9nlWvc9XrX/W6WL1eVq+j1etr9bpbvR5Xr9PV63f1ut7OaWqrjXt9dGfG69tB/VCkteKdh/TWJS31QxGWwcFAcvfblTFRpfzumsY+Rtv9xVmyceCMaTfGL40iakvRmZvNE4mkna0csbOl4p+YkevT6+6QYz0APQG9AL0BfQB9ATsA+gHw978eIA+QDygANKP/1z+XNjd8L90XD3xP/1xY11ym8T9lTD4KHFCiOYbNkRh+p8fwO8PgOsbnyheD+hSHLF6bq8x4K99Y+GOujP1nqi3jwmSLVyMWqa+qGYfPrppdNWZ2xfRplcNmz6icNW3mjMHl06ebyZlhBAe3SIzA+d83B0H/mifDeC/HcFC/p/vKNt4zB1gHphZ3VePM3sYwnqnfaFA3LuiRJjN7MsXD0y/MWBTSH0VpIbtxATq+3nAWA5Dr2yf39ZYeycugzb83KmSUVEVCiZvGHD9On4tj9FURrZxS6FUUTSn2qsoLSyorS/M9L6+8qLyoIq+kuqqi0CspLIE+K8vzSmB3eeWVXlW0vKgqqPPR4jR+2YNbSep8lGdwSgTOR0stPx9Fv0uFzke5bzBQRLZy97vB8gv+2k7OXNqR8Tx8A/MFf0xHtK+jCu62VT3tVn96yzNj0Z/+GBA29YeO/+MzhmsfGMwBApPMgDS7JxnatiqE5O5wUF3dP83++HGrXE6fdzL68kry8/KK87FdyZSoVzClMq8kL29KRUG0MlpemVdVWuCVVhfkFeRXTqmsgD7LvepodXllaXXJJruCUrk7CancnVMql2dwdhZQubtYrnLR710cUbkDyFbufsuYCxPDiX2mqeBUWi8HVdpA+mNQ2FTaQEGVhsEcJFAkgxxRab0YVdrANPvjx63SOH0e7KBKGyyk0oakVBrP4AwRUGlDLVdp6PdQR1TaILKVu99hAiptWMAqrbeDKm04/TEibCptuKBKw2COECiSEY6otN6MKm14mv3x41ZpnD7v6qBK21VIpY1MqTSewRkpoNJGWa7S0O9Rjqi0EWQrd7+7Cai03QJWaf3sVmkx17vtTn+MDptKQ8fN9W4YgFzfPrnVS7/kJ6LN6912Z5zURjuiXjh93iNGX7avd9tDSL2MSakXnsEZI6Be9rRcvaDfezqiXkaTrdz9/uDIejfOXNqLbzLyfhBY74b2dVTBqb+o3epPb1tdoxtLf4wLm/obK3iNDoM5TmCSGefINboo4zW6sWn2x49b5XL6vLeD1+j2FlK5+6RULs/g7COgcsdbrnLR7/GOqNxxZCt3vxMErtFNCPganeegStuX/pgYNpW2r6BKw2BOFCiSiY6oNI9Rpe2bZn/8uFUap8/7OajS9hNSaZNSKo1ncCYJqLT9LVdp6Pf+jqi0iWQrd78HCKi0AwJWaXkOqrQD6Y/JYVNpBwqqNAzmZIEimeyISstjVGkHptkfP26VxulzuYMqrVxIpVWkVBrP4FQIqLRKy1Ua+l3piEqbTLZy9ztFQKVNSdtWOXCNGd6HrptAHKrSZMc/mtxWc6fSKgG/f8qxO+/xjp8Sfv+c44ZwYBwf72fLx7qVUI7/lmN3bRcJ5fjvjuQ44/h4v1s+1i2Fcvwvy2u7QCjH/3YkxxnHx/vb8hwfR2OtePsVsXWiQ7ZODtDWZOsSzZSo938tz/0+QvOcqu3GPMc4Ph63z9xj3VdorCMBjbVF544ep884HjWPUqL+UF/jo8UGEA8iHkEMu1bVNI7ZassN9vvQ532JdyAeTTyOeCLxZOJ84kaAg4x+9UXJnmrT537Gb06mJth+WoLtD06w/SEJtp+eYPtDE2w/I8H2MxNsf1iC7Q9PsP0RCbY/MsH2sxJsPzvB9kcl2P5oo33af2iPnx0TZ7tj42x3XJztjo+z3QlxtjsxznYnxdnu5DjbzYmz3Slxtjs1znanxdnu9DjbnRFnu7lxtjszjnbtAGfF2e7sONudE2e7c+NsNy/OdvPjbHdenO3Oj7PdBXG2uzDOdgvibLcwznYXxdnu4jjbXRJnu0sTmC+x/aIE2y9OsP1lCba/PMH2VyTY/soE2y9JsP1VCba/OsH21yTY/toE21+XYPulCba/PsH2NyTY/kaj/XhqfxDp44K02P/n56nUbhrxwcSHEE8nPpR4BvFM4sOIDyc+gvhI4lnEs4mPIj6a+BjiY4mPIz6e+ATiE4lPIj6ZeA7xKcSnEp9GfDrxGcRzic+MMz5nUbuzic8hPpd4HvF84vOIzye+gPhC4gXEC4kvIr6Y+BLiS4kXES8mvoz4cuIriK8kXkJ8FfHVxNcQX0t8HfFS4uuJbyC+Mc74cHFvwE0x8r872VFNfBNxY8DN+uBAm/6zjDjZc/A2jH3dksZ4Pq9ST/A07Qz7EzzX0utbIcduA9wOuANwJ2AZYDngLsDdgBWAewArAasA9wLuA9wPeACwGvAgYA3gIcDDgEcAjwLWAh4DPA54AvAkYB3gKcDTgGcAzwKeAzwPeAHwIuAlwMuAVwCvAl4DvA54A/Am4C3A24B3AO8C3gOsB7wP+ADwIeAjwMeATwCfAj4DfA74AvAl4CvA14BvAN8CvgNsAHwP+AHwI+AnwM+AXwC/An4D/A74A/An4C/A34B/cI4B/Ju2qdBqAdIAEUA6IAOQCcgCZANyALUBdQB1AfUA9QENAA0BjQCNAU0ATQHNAM0BLQAtAa0ArQFtAG0B7QDtAR0AuYCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gB0A/QD4IEicMPIA+YACQCGgCFAMKAGUAnYE9AcMAOwE2BmwC6AMMBAwCDAYMAQwFDAMMBwwArArYCRgFGA3wO6A0YA9AGMAewL2AowFjAPsDdgHMB4wAbAvYCJgP8AkwP6AAwAHAiYDygEVgErAFADei6cacBBgKmAa4GDAIYDpgEMjqafSmn7b91Taynwz3so3Fv6YKyX/VNom1Fdl+fTpY46YdlT5rCr9TFpzqtUmryWOxAiZ/33nnkd7i+EJU7+BPY/2tjQZLcAUj5j355tBIzszErJflaDj6w1nMQC5vn1GmPdtJkiy9+dD+5Psa/MJwsyIG19Cc/p8WIy+bL8/32GM42Tae3gk9WsLlsHBQHL3ewRj0kv5fUSEfYxEVi/NJFu5+80QWtnBdQDSdnLm0pF8k5GXwbxKBCcxtK+jCu43xbfbrf70ttVvimdRgs0Om/pDx6V+U4zBnC0wycyO2D3J0LZVIST7m+JZEfvjx61yOX0+yujLld8UHyWkco9OqVyewTlaQOUeY7nKRb+PcUTlziZbufs9lrkwsQixT/qqIxCVdoeDKu04yrvjw6bSjhNUaRjM4wWK5HhHVNodjCrtuIj98eNWaZw+n+CgSjtBSKWdmFJpPINzooBKO8lylYZ+n+SISjuebOXu92QBlXZywCrtTgdV2hzKu1PCptLmCKo0DOYpAkVyiiMq7U5GlTYnYn/8uFUap8+nOqjSThVSaaelVBrP4JwmoNJOt1ylod+nO6LSTiFbufs9Q0ClnRGwSrvbbpUWc73bXMq7M8Om0ub61rudGcB6t7uTVy+b17vNZZzUznREvXD6fJaD693OElIvZ6fUC8/gnC2gXs6xXL2g3+c4ol7OJFu5+81yZL0bZy6dy7jeLUtgvdu5Aa93W+HgNbp5lGDzw6b+5gleo8NgzheYZOY7co1uBeM1unkR++PHrXI5fT7PwWt05wmp3PNTKpdncM4XULkXWK5y0e8LHFG588lW7n4vFLhGd2HA1+jucVClLaC8Wxg2lbZAUKVhMBcKFMlCR1TaPYwqbUHE/vhxqzROny9yUKVdJKTSLk6pNJ7BuVhApV1iuUpDvy9xRKUtJFu5+71UQKVdGrBKW+mgSltEebc4bCptkaBKw2AuFiiSxY6otJWMKm1RxP74cas0Tp8vc1ClXSak0i5PqTSewblcQKVdYblKQ7+vcESlLSZbufu9UkClXRmwSjtU6CDAnBdbqbQllHdXhU2lLRFUaRjMqwSK5CpHVNqhDBOuVmlLIvbHj1ulcfp8tYMq7WohlXZNSqXxDM41AirtWstVGvp9rSMq7Sqylbvf6wRU2nWRbZUD15jpOwZzx2FpRHb8o8ltNU9HWCow/jm17c57fMqAhN+1HXkKK+P4eLUtH+tWQjlez/Knz+I9SiX8ru9IjjOOj1ff8rFuKZTjjSyv7XuF5vHGjuQ44/h4jS3P8atoPlO8/YrYOt8hWxc6ZOviAG1Ndg7BWpeYm5pZXqfLhObk5o7MyYzj4zW3fKyXC411q4DG2qLzXK8V82/58LFL+iImngvUPMGU+HjiU4hh1+p6GsdsteWRTVjL+Ply4ruIz6T/m0+8kHgx8Spq1whwg9GvfjxUFbWrJj6IeCrxNOKDiesCbjT6WU793ECf30v7u4/4fuIHiFcTP0i8hvgh4oeJHyF+lHgt8WPEjxM/Qfwk8Trip4ifJn6G+Fni54ifJ36B+EXil4hfJn6F+FXi14hfJ36D+E3it4jfJn6H+F3i94jXE79P/AHxh8QfEX9M/Anxp8SfEX9O/AXxl8RfEX9N/A3xt8TfEW8g/p74B+IfiX8i/pn4F+JfiX8j/p34D+I/if8i/pv4H+KNxP8SK8qjWsRpxBHidOIM4kziLOJs4hxdT8R1dP4S1yOuT9yAuCFxI+LGxE2ImxI3I25O3IK4JXEr4tbEbYjbErcjbk/cgTiXuCNxJ+LOxF2IuxJ3I+5O3IO4J3Ev4t7EfYj7Eu9A3I84SuwR5xHnExcQFxIXERcTlxCXEu9I3J94APFOxDsT70JcRjyQeBDxYOIhxEOJhxEPJx5BvCvxSOJRxLsR7048mngP4jHEexLvRTyWeBzx3sT7EI8nnkC8L/FE4v2IJxHvT3wA8YHEk4nLiSuIK4mnEN9IfAjxdD3egJuM+VlL9Fupvq6ndjfp/AbcTI24NQlex79ZQJPcErFbi+GTnvFp0uzXyhn9jqhgvhhur3i1lN5ui6S+GGYZnNsi/P3eHrH7i2H0+/YI+xiJnuBwxvQOvokksMfHc04kkna2c8TOtop/YkauT6/vhKRYBlgOuAtwN2AF4B7ASsAqwL2A+wD3Ax4ArI6kHrVt96O2o1W2PWq7FfVVNePw2VWzq8bMrpg+rVI/bHtw+fTpZnJmGMHBLRIjcP73nXrgNs7sHQzjmfoN7IHbyyIysydTPGLegPRBGtk1kZAtyEbH1xvOYgByffuMMO97WfIyaPMNSB9klFRrhBI3jTl+nD4/FKMv229A+lCEX/bg9nDqfJRncB4WOB99xPLzUfT7EaHzUe6LUGvIVu5+2zhyA1LOXHqU8Ty8jcANSNG+jiq4n+Mtt1v96W2rn+OtpQR7LGzqDx2X+jkeBvMxgUnmsYjdkwxtWxVCsj/HWxuxP37cKpfT58eNvlz5Od7jQir3iZTK5RmcJwRU7pOWq1z0+0lHVO5jZCt3v+uYCxOLEPtMU8GptLscVGlPUd49HTaV9pSgSsNgPi1QJE87otLuYlRpT0Xsjx+3SuP0+RkHVdozQirt2ZRK4xmcZwVU2nOWqzT0+zlHVNrTZCt3v88LqLTnA1Zpdzuo0l6gvHsxbCrtBUGVhsF8UaBIXnREpd3NqNJeiNgfP26VxunzSw6qtJeEVNrLKZXGMzgvC6i0VyxXaej3K46otBfJVu5+XxVQaa8GrNJWObje7TXKu9fDptJe8613ez2A9W6rGNe7vcY4qb3uiHrh9PkNB9e7vSGkXt5MqReewXlTQL28Zbl6Qb/fckS9vE62cvfbzpH1bpy59Dbjerd2Auvd3g54vdu9Dl6je4cS7N2wqb93BK/RYTDfFZhk3nXkGt29jNfo3onYHz9ulcvp83sOXqN7T0jlrk+pXJ7BWS+gct+3XOWi3+87onLfJVu5+/1A4BrdBwFfo7vPQZX2IeXdR2FTaR8KqjQM5kcCRfKRIyrtPkaV9mHE/vhxqzROnz92UKV9LKTSPkmpNJ7B+URApX1quUpDvz91RKV9RLZy9/uZgEr7LGCVdr+DKu1zyrsvwqbSPhdUaRjMLwSK5AtHVNr9jCrt84j98eNWaZw+f+mgSvtSSKV9lVJpPIPzlYBK+9pylYZ+f+2ISvuCbOXu9xsBlfZNRO5RjngfujsE4vBtRHb8o8ltNXcq/VbA7w6WPwIM7/gp4XeuI4+bYRwfL9fysW4nlOOdLX/MzhqhHO/iSI4zjo/XxfKxbiuU490tr+3VQjnew5EcZxwfr4flOf4ujbXi7VfE1o8csvWLAG3leDyiRL33tjz3VwjNc30cmecYx8frY/lY3yM01v0ceTwi57lJP8HHI6K+xsdSPUb8NPGLxPh4xO9oHM3HI66gz+8hXkn8OvG7xB8Rf0H8ADE+HnGD0a+eunsqepyaj/Gbk+8TbP9Dgu1/TLD9Twm2/znB9r8k2P7XBNv/lmD73xNs/0eC7f9MsP1fCbb/O8H2/yTYfmOC7f812qf9h/Y19ZYeX7tacbZLi7NdJM526XG2y4izXWac7bLibJcdZ7ucONvVjrNdnTjb1Y2zXb0429WPs12DONrhdaeGcbZrFGe7xnG2axJnu6ZxtmsWZ7vmcbZrEWe7lnG2axVnu9ZxtmsTZ7u2cbZrF2e79nG265Ae/3yJ7XMTbN8xwfadEmzfOcH2XRJs3zXB9t0SbN89wfY9EmzfM8H2vRJs3zvB9n0SbN83wfY7JNi+n9F+PLXfQPp4dST2//n5e2r3A/GPxD8R/0z8C/GvxL8R/078B/GfxH8R/038D/FG4n+JUZsg1yJOI44QpxNnEGcSZxFnE+cQ1yauQ1yXuB5xfeIG6fHFpyG1a0TcmLgJcVPiZsTNiVsQtyRuRdyauA1xW+J2xO2JOxDnEnck7kTcmbgLcVfibsTdiXtoP4l7Efcm7kPcl3gH4n5xxoeLewOiMfL/TsqT74ijehwAXvq2qxW5r0N0g87bGP0z9cu5YtHzv2HGI49O1PPTQ7ZiER1fYziLASjzGce1T0wQTBTui1VeQLccSNDOqM9OLy+dz2dznKLJbZ7nyIVdzvgVbKevkuKqiurigvzyaEF1BfRTVF2VX55X6lWX5EP3+QVeRXlVdEpBRXFRQVFJdXFgzxwv4BvzrVYwFqanVjCyDE5hOn+/RYxJL+V3UTr7GIl8I5hPtrL3a+k9b/x2cuZSMeMBKF/gnjdo30AV3O90kjkgV2+9VcYwV0T1llDdlm5H9Q6KETO/6h2k/n/VG6ufwFWvuXOuPjGIJQKTSkk6f1GUGn3qLdlJxrdtVQjJKuYSxgmrVKhAub/S5vR5x3S7aweXLuwoUDu2L6XHs+BbBZZt9GecM/CAgMpfazvsGy9DaUjEReoKwYB0u/MB83WAQB3sxOh3OuWDf+OMq0Rsd0q338adBWys2bgPTt8y/p5uFwcOTp5AURZavqYQk3EXAb+L7LxMu42dZYx5yTjWHmf8hCfzzZf3wjiZl7kymXdg7GsgY9FgQUfUthv3QLVXMgPFbWc7R+xsy2ineeloLb0eBDk2GDAEMBQwDDAcMAKwK2AkYBRgN8DugNGAPQBjAHsC9gKMBYwD7A3YBzAeMAGwL2AiYD/AJMD+gAMABwImA8oBFYBKwBRAFaAacBBgKmAa4GDAIYDpgEMBMwAzAYcBDgccATgSMAswG3AU4GjAMYBjAccBjgecADgRcBLgZMAcwCmAUwGnAU4HnAGYCzgTcBbgbMA5gHMB8wDzAecBzgdcALgQsACwEHAR4GLAJYBLAYsAiwGXAS4HXAG4ErAEcBXgasA1gGsB1wGWAq4H3AC4EXAT4GbALYBbAbcBbgfcAbgTsAywHHAX4G7ACsA9gJWAVYB7AfcB7gc8AFgNeBCwBvAQ4GHAI4BHAWsBjwEeBzwBeBKwDvAU4GnAM4BnAc8Bnge8AHgR8BLgZcArgFcBrwFeB7wBeBPwFuBtwDuAdwHvAdYD3gd8APgQ8BHgY8AngE8BnwE+B3wB+BLwFeBrwDeAbwHfATYAvgf8APgR8BPgZ8AvgF8BvwF+B/wB+BPwF+BvwD+AjYB/AXhtthYgDRABpAOaUU3kxJgr8b10X43nqC2XePVxxBQAZUx1K/BdYTTHsDkSw+/0GH5nGFzH+Fz5YlCf4pDFanNlvhlv5RsLf8yVsf9MtWVceGyJerhQqAn1VVk+ffqYI6YdVT6ratjsGZWzps2cYU612mQ95UZihMz/vhl+/buVDOO9HMM1/Z7uK9t4zxxaHZJa3McovHHHwPQtxjP1Gw3qayY8/nHZHMPcZPuO+WCtDMqGzIyQLa5Cx9cbzmIAcn375P76xUyQZB+shfYn2dfmE4TMDDcWGXH6nBWjL9sfrJWVwS/iccvOSC0yYhkcDCR3vzmMSS/ld04G+xiJLDLKJFu5+y115MFanLlUm28y8koFFhmhfR1VcIuMhtit/vS21c2A61Dd1g2b+kPHpW4GjMGsKzDJ1M2we5KhbatCSPZmwHUy7I8ft8rl9Lme0ZcrNwOuJ6Ry66dULs/g1BdQuQ0sV7nodwNHVG5dspW734bMhYlFiH2mqeBU2lAHVVojyrvGYVNpjQRVGgazsUCRNHZEpQ1lVGmNMuyPH7dK4/S5iYMqrYmQSmuaUmk8g9NUQKU1s1ylod/NHFFpjclW7n6bC6i05gGrtGEOqrQWlHctw6bSWgiqNAxmS4EiaemIShvGqNJaZNgfP26VxulzKwdVWishldY6pdJ4Bqe1gEprY7lKQ7/bOKLSWpKt3P22FVBpbQNWaSMdXO/WjvKufdhUWjvferf2Aax3G8m43q0d46TW3hH1wulzBwfXu3UQUi+5KfXCMzi5Auqlo+XqBf3u6Ih6aU+2cvfb35H1bpy51IlxvVt/gfVunQJe7zbKwWt0naluu4RN/XUWvEaHwewiMMl0ceQa3SjGa3SdM+yPH7fK5fS5q4PX6LoKqdxuKZXLMzjdBFRud8tVLvrd3RGV24Vs5e63h8A1uh4BX6PbzUGV1pPyrlfYVFpPQZWGwewlUCS9HFFpuzGqtJ4Z9sePW6Vx+tzbQZXWW0il9UmpNJ7B6SOg0vpartLQ776OqLReZCt3vzsIqLQdAlZpuzuo0vpR3kXDptL6Cao0DGZUoEiijqi03RlVWr8M++PHrdI4ffYcVGmekErLS6k0nsHJE1Bp+ZarNPQ73xGVFiVbufstEFBpBQGrtHShgwBzXmyl0gop74rCptIKBVUaBrNIoEiKHFFp6QwTrlZphRn2x49bpXH6XOygSisWUmklKZXGMzglAiqt1HKVhn6XOqLSishW7n53FFBpO2Zsqxy4xkzfMZh9fWOG7PhHk9tqno7QX2D8d6ptd97jUwYk/N7ZkadsM46Pt7PlY91OKMcHWv6IJ7xHqYTfgxzJccbx8QZZPtZthXJ8qOW1vYfQPD7MkRxnHB9vmOU5XkTzmeLtV8TWLg7Z2sshW6MB2prsHIK1LjE37Wp5nQ4XmpNHOjInM46PN9LysR4hNNa7BzTWFp3nersz/5YPH7ukL2LiucBGtel24siNiVsSw67VABrHbLXlkU1Yy/j5COJdidvT/3Uh7kUcJR5N7RoBdjL61Y+H+ps+/4d4I/G/xIr6qaXtBuxs9LOc+tmJPt+D/m8M8Z7EexGPJR5HvDfxPsTjiScQ70s8kXg/4knE+xMfQHwg8WTicuIK4kriKcRVxNXEBxFPJZ5GfDDxIcTTiQ8lnkE8k/gw4sOJjyA+kngW8Wzio4iPJj6G+Fji44iPJz6B+ETik4hPJp5DfArxqcSnEZ9OfAbxXOIzic8iPpv4HOJziecRzyc+j/h84guILyReQLyQ+CLii4kvIb6UeBHxYuLLiC8nvoL4SuIlxFcRX018DfG1xNcRLyW+nvgG4huJbyK+mfgW4luJbyO+nfgO4juJlxEvJ76L+G7iFcT3EK8kXkV8L/F9xPcTP0C8mvhB4jXEDxE/TPwI8aPEa4kfI36c+AniJ4nXET9F/DTxM8TPEj9H/DzxC8QvEr9E/DLxK8SvEr9G/DrxG8RvEr9F/DbxO8TvEr9HvJ74feIPiD8k/oj4Y+JPiD8l/oz4c+IviL8k/or4a+JviL8l/o54A/H3xD8Q/0j8E/HPxL8Q/0r8G/HvxH8Q/0n8F/HONN+mEUf0/A/YxZif9Rdlg+j/BlC7XfTxB1CWse2KC2590g06v8XYAVO/nKsuPP8bZjwG0rnOoLCtukDH1xjODjK+SJFKEvaLUwHd3CJBO6M+O72BjF+oDuL7wsvbw5ULzYzxG7ydvkqKqyqqiwvyy6MF1RXQT1F1VX55XqlXXZIP3ecXeBXlVdEpBRXFRQVFJdXF0aBWYQwWWoUxJLUKg2dwhgiswhhq+SoM9HuoI1cKB5Gt3P3uaendlbb5lokxl4YxHoD2FLi7Eto3UAW31jiZA3L11ltlDHNFVO9wqtsR21G9g2LEzK96B6n/X/XG6idw1WvunKtPDOJwgUlluMDSrhFGn3rjXms86L+fZLZRzMMZJ6wRQgXKfamb0+ddM+yuHfxKY1eB2rF9OWDNmXBE4Ks7Rr/xgGB+tYF991RbIBYXgSsEoyzPB8zXUQJ1sBuj3+lqy9dV5sYZV4nY7pZhv427C9hYs3EfnPozHpxGO3BwKhMoyrGWrzXAZBwt4Pc4Oy/Tbns5mTEvGcfa44yf8GS++fJeGCfzPThtdPWo29MBG8ekBmrTL7Jst3HPoORRNLktzwxmsoehvVLa3dvLgel+rCPJmc+ZnONSyemNcyA593YkOb1RjCeW+zAKeEzOTOVecrqgv8Zz6y8XB8oF/TUhjPprX+ZDnIvJua8Dh7iJYdRf+6WS09vPgeSc5Ir+GpDOl5z7W35hv4Pa9G0m9wXu8ZZf2Mcb74wR8HuCIxf2D2DMS8ax9iY4kDd7CuTNgZZ/K49+jxXwe7IDfu8t4He55X7jcUFiFcZ+DtT3PgJ+T3LkuFDBeFxgHGtvkuV5g/UyXuK4YLnf/dNlbmI42ZF6qWSsF8ax9iY7UC8TBOpligPH1YkCflc54PckAb+rHfB7fwG/Ky2v7wFCx4UpjhwXDmI8LjCOtccZv6B+69uJr6+tfus7NfVbX57BmSrwW99plv/WF/2eJvRbX735L2wnGwfOmB7MOMFF1JaiMzebJxJJOzs6Ymeu4p+YkevT60Mgx6YDDgXMAMwEHAY4HHAE4EjALMBswFGAowHHAJrR/+fEyCt8L90XD3xPl7KuOfNbwDImHwUOKNEcw+ZIDL/TY/idYXAd43Pli0F9ikMWr81VZryVbyz8MVfG/jPVlnFhssXD1XatqK+qGYfPrppdNWZ2xfRplcNmz6icNW3mjMHl06ebyZlhBAe3SIzA+d83B0Ev78sw3ssxHNTv6b6yjffMAdaBqcVd1TizdzaMZ+o3GtTdB6ZLfc/MY+fmuxCYsTiWsuG4sN1zCx1fbziLAcj17ZP7V/nTk5dBefpX+ccySqrjhBKXe30Ep8/Hx+irIlo5pdCrKJpS7FWVF5ZUVpbme15eeVF5UUVeSXVVRaFXUlgCfVaW55XA7vLKK72qaHlRVVDno8cz341Cbyekzkd5BucEgfPREy0/H0W/TxQ6H+W+iHcc2crd70GW3ntKb9pOzlw6ifE8/CCBe0+hfR1VcPeeOtRu9ae3rZ5zezLV7ZywqT90XOo5txjMOQKTzJwMuycZ2rYqhGSfc3tyhv3x41a5nD6fYvTlynNuTxFSuaemVC7P4JwqoHJPs1zlot+nOaJy55Ct3P2ezlyYWITYZ5oKTqXNcFClnUF5NzdsKu0MQZWGwZwrUCRzHVFpMxhV2hkZ9sePW6Vx+nymgyrtTCGVdlZKpfEMzlkCKu1sy1Ua+n22IyptLtnK3e85AirtnIBV2kwHVdq5lHfzwqbSzhVUaRjMeQJFMs8RlTaTUaWdm2F//LhVGqfP8x1UafOFVNp5KZXGMzjnCai08y1Xaej3+Y6otHlkK3e/FwiotAsCVmlHOrje7ULKuwVhU2kX+ta7LQhgvduRjOvdLmSc1BY4ol44fV7o4Hq3hULq5aKUeuEZnIsE1MvFlqsX9PtiR9TLArKVu99pjqx348ylSxjXu00TWO92ScDr3WY5eI3uUqrbRWFTf5cKXqPDYC4SmGQWOXKNbhbjNbpLM+yPH7fK5fR5sYPX6BYLqdzLUiqXZ3AuE1C5l1uuctHvyx1RuYvIVu5+rxC4RndFwNfoZjuo0q6kvFsSNpV2paBKw2AuESiSJY6otNmMKu3KDPvjx63SOH2+ykGVdpWQSrs6pdJ4BudqAZV2jeUqDf2+xhGVtoRs5e73WgGVdm3AKu0oB1XadZR3S8Om0q4TVGkYzKUCRbLUEZV2FKNKuy7D/vhxqzROn693UKVdL6TSbkipNJ7BuUFApd1ouUpDv290RKUtJVu5+71JQKXdlLGtcuAaM7wP3cECcbg5Q3b8o8ltNXcqvVnA70Nq2533eMdPCb+n13ZDODCOjzfd8rHuKJTjMy2/Nf5xQjl+mCM5zjg+3mGWj3WuUI4faXltHyOU47McyXHG8fFmWZ7ji2isFW+/IrYuccjWpQHammxdYv1I1PvRluf+YULz3DGOzHOM4+MdY/lYHy401scHNNYWnTt6xzOvvMab5OsLg6ivN6pNN39Enks8jxh2rW6hccxWW26wfxh9fjjxEcQLiBcRLyFeSnw0cSPArUa/+qJkT7Xpcz/jNye3Jdj+9gTb35Fg+zsTbL8swfbLE2x/V4Lt706w/YoE29+TYPuVCbZflWD7exNsf1+C7e9PsP0DRvu0/9AeP1sdZ7sH42y3Js52D8XZ7uE42z0SZ7tH42y3Ns52j8XZ7vE42z0RZ7sn42y3Ls52T8XZ7uk42z0TR7t2gGfjbPdcnO2ej7PdC3G2ezHOdi/F2e7lONu9Eme7V+Ns91qc7V6Ps90bcbZ7M852b8XZ7u04272TwHyJ7d9NsP17CbZfn2D79xNs/0GC7T9MsP1HCbb/OMH2nyTY/tME23+WYPvPE2z/RYLtv0yw/VcJtv/aaD+e2t9K+viYjNj/5+fbqN3txHcQ30m8jHg58V3EdxOvIL6HeCXxKuJ7ie8jvp/4AeLVxA8SryF+iPhh4keIHyVeS/wY8ePETxA/SbyO+Cnip4mfiTM+z1K754ifJ36B+EXil4hfJn6F+FXi14hfJ36D+E3it4jfJn6H+F3i94jXE79P/AHxh8QfEX9M/Anxp8SfEX9O/AXxl8RfEX8dZ3y4uDfgmxj5fwjZcQvxN8SNAd9mbLtakfuay+2wA3y8Mld/d0B/+LhixWsn5wpIz/+GGd/vyPYNGSFbAYmOrzGcxQCU+Yzj2qdOOu6LXydaftFPFwe33yfZ+RzzqM9O77sMPp83MPZ1suW3vqDNY8xvjzFnvJMd+YKBM/++305fJcVVFdXFBfnl0YLqCuinqLoqvzyv1KsuyYfu8wu8ivKq6JSCiuKigqKS6uLAnn1v2hxNcjPt/SEjtZKWZXB+yODv90fGpJfy+0chxch9oN1AtnL3e5qlByC/nZy59BPfZOSdJnDvJbRvoAru92IbkohH9dZbZQxzRc6Wfqa6/WU7Z0uDYsTMf7Y0SP3/Z0ux+gn8bMncOVefGMSfBSaVnzP4i+IXo0+9cavcJJT9NmccPzNOWL8IFSj30gpOn3/NsLt2cAnNrwK1Y/tPOvAKSn+BKyhnOHAFpVJgvOfaeQVlGzt/Y6xHxrH25jqQN1ME8uZ3y+cJ9LtKwO8/HPC7WsDvPxn9RsGMywf1lROsbcwnjO2fxgkxbtzzyF+M84ilVyVF8gp1wV8CefU3Y16lU175N864SsT27wz7bfxHwMaajfsk4GbGk4CNDpwEfCtQlGdbPhlhMm4U8PscR8Twv4x5yTjWHmf8hCfzzV+jhHEy/9eVybwzY1/4ZRxXALGgI2rbjXugOimZgeK2s6MjduYy2mleol+rX0OOpQEigHRABiATkAXIBuQAagPqAOoC6gHqAxoAGgIaARoDmgCaApoBmgNaAFoCWgFaA9oA2gLaAdoDOgByAR0BnQCdAV0AXQHdAN0BPQA9Ab0AvQF9AH0BOwD6AaIAD5AHyAcUAAoBRYBiQAmgFLAjoD9gAGAnwM6AXbC2AAMBgwCDAUMAQwHDAMMBIwC7AkYCRgF2A+wOGA3YAzAGsCdgL8BYwDjA3oB9AOMBEwD7AiYC9gNMAuwPOABwIGAyoBxQAagETAFUAaoBBwGmAqYBDgYcApgOOBQwAzATcBjgcMARgCMBswCzAUcBjgYcAzgWcBzgeMAJgBMBJwFOBswBnAI4FXAa4HTAGYC5gDMBZwHOBpwDOBcwDzAfcB7gfMAFgAsBCwALARcBLgZcArgUsAiwGHAZ4HLAFYArAUsAVwGuBlwDuBZwHWAp4HrADYAbATcBbgbcArgVcBvgdsAdgDsBywDLAXcB7gasANwDWAlYBbgXcB/gfsADgNWABwFrAA8BHgY8AngUsBbQjGoiJ8Zcie+l+2oc39Mn//o4kmn8TxlT3WbyzyvRHMPmSAy/02P4nWFwHeNz5YtBfYpDFqvNlflmvJVvLPwxV8b+M9WWceGxJerhwuAm1Fdl+fTpY46YdlT5rKphs2dUzpo2c4Y51WqT9ZQbiREy//tm+PXvVDOM93IM1/R7uq9s4z1zaHVIanEfo/BGXWbiM/UbDerrfDz+cdkcw9xk+475IM3HKN6PZ4Zs8TM6vt5wFgOQ69sn99fcZoIk+yDNx5Lva/MJwuNCiZvGHD9On5+I0ZftD9J8gnGcTHufzEwt5mQZHAwkd7/rGJNeyu91AkftWLZyTHTrMvn7ne/IgzQ5c+kpvsnImy+wmBPt66iCW8wZsVv96W2rm/8/TXX7TNjUHzoudfN/DOYzApPMM5l2TzK0bVUIyd78/+lM++PHrXI5fX7W6MuVm/8/K6Ryn0upXJ7BeU5A5T5vucpFv593ROU+Q7Zy9/sCc2FiEWKfaSo4lZbuoEp7kfLupbCptBcFVRoG8yWBInnJEZWWzqjSXsy0P37cKo3T55cdVGkvC6m0V1IqjWdwXhFQaa9artLQ71cdUWkvka3c/b4moNJeC1ilZTio0l6nvHsjbCrtdUGVhsF8Q6BI3nBEpWUwqrTXM+2PH7dK4/T5TQdV2ptCKu2tlErjGZy3BFTa25arNPT7bUdU2htkK3e/7wiotHcCVmk5Dq53e5fy7r2wqbR3fevd3gtgvVsO43q3dxkntfccUS+cPq93cL3beiH18n5KvfAMzvsC6uUDy9UL+v2BI+rlPbKVu9/zHVnvxplLHzKudztfYL3bhwGvd6vt4DW6j6huPw6b+vtI8BodBvNjgUnmY0eu0dVmvEb3Uab98eNWuZw+f+LgNbpPhFTupymVyzM4nwqo3M8sV7no92eOqNyPyVbufj8XuEb3ecDX6Oo4qNK+oLz7Mmwq7QtBlYbB/FKgSL50RKXVYVRpX2TaHz9ulcbp81cOqrSvhFTa1ymVxjM4XwuotG8sV2no9zeOqLQvyVbufr8VUGnfBqzS6jqo0r6jvNsQNpX2naBKw2BuECiSDY6otLqMKu27TPvjx63SOH3+3kGV9r2QSvshpdJ4BucHAZX2o+UqDf3+0RGVtoFs5e73JwGV9lPAKm2tgyrtZ8q7X8Km0n4WVGkYzF8EiuQXR1TaWkaV9nOm/fHjVmmcPv/qoEr7VUil/ZZSaTyD85uASvvdcpWGfv/uiEr7hWzl7vcPAZX2R+a2yoFrzPQdg7nj8Gem7PhHk9tqno7wp4DfF9a2O+/xKQMSfi+o7YZwYBwfb4HlY91RKMcvtvwRT48L5fgljuQ44/h4l1g+1rlCOb7Y8tquL5TjlzmS44zj411meY7/QmOtePsVsfVjh2z90iFbNwRoa7JzCNa6xNx0peV1mik0Jy9xZE5mHB9vieVjnSU01tcENNYWned61zD/lg8fu6QvYuK5wEa16XbiyC8Rv0GMjwn9i8YxW215ZFMmfZ5FnE38HvHHxF8SbyCuR9wI8LfRr566H6DPVxM/SLyG+CHih4nrAv4x+llO/fxNn9cnbkDcUO+fuDFxE+KmxM2ImxO3IG5J3Iq4NXEb4rbE7YjbE3cgziXuSNyJuDNxF+KuxN2IuxP3IO5J3Iu4N3Ef4r7EOxD3I44Se8R5xPnEBcSFxEXExcQlxKXEOxL3Jx5AvBPxzsS7EJcRDyQeRDyYeAjxUOJhxMOJRxDvSjySeBTxbsS7E48m3oN4DPGexHsRjyUeR7w38T7E44knEO9LPJF4P+JJxPsTH0B8IPFk4nLiCuJK4inEVcTVxAcRTyWeRnww8SHE04kPJZ5BPJP4MOLDiY8gPpJ4FvFs4qOIjyY+hvhY4uOIjyc+gfhE4pOITyaeQ3wK8anEpxGfTnwG8VziM4nPIj6b+Bzic4nnEc8nPo/4fOILiC8kXkC8kPgi4ouJLyG+lHgR8WLiy4gvJ76C+EriJcRXEV9NfA3xtcTXES8lvp74BuIbiW8ivpn4FuJbiW8jvp34DuI7iZcRLye+i/hu4hXE9xCvJF5FfC/xfcT3E/9D/Ajxo8S9ABszt8zP+ouyWvT5X8QbiRsD/s3cdsUFtxa7HXYwivFR33dAfxXGIx+Z+uVcxeH539hqRQs9grJWVshWcaDjawxnMQBlPuO49qmTjlsUX2f5yYAuDm6/lwZ0k5AE7Yz67PRUFuMXVIx9XW/5TVZo8xjz22PMGe96Ry48cOZf2nb6KimuqqguLsgvjxZUV0A/RdVV+eV5pV51ST50n1/gVZRXRacUVBQXFRSVVBdHg1oNZNocTXIz7Y1kpVYDsQwOBpK733TGpJfyOz2LfYxkVkWQrdz93mzpAchvJ2cuZfBNRt7NAnf5QvsGquDWvNdKIh7VW2+VMcwVOVvKpLrN2s7Z0qAYMfOfLQ1S///ZUqx+Aj9bMnfO1ScGMVNgUsnM4i+KLKNPvXGr3CSU/TZnHJmME1aWUIFyf+XC6XN2lt21g1+tZQvUju3LUvEKykiBKwm3OnAF5QABv2+z8wrKNnbmMNYj41h7tzmQNwcK5E3tLPv9nizgdx0H/C4X8Lsuo98omPFre33lBGsb8wljW9c4IcaNex6pxziPWHpVUiSvUBfUE9Ab9RnzKp3yyr9xxlUitvWz7LexgYCNNRv3SYApYJPtq6EDJwH/ZvIX5Z2WT0aYjA0FJqNljojhRox5yTjWHmf8hCfzzV+jhHEyb8Rpo6tH3Z4O2Ng4NVCbfoFtu41NgpJH0eS2PDOYyR6Gmqa0u9fUgem+mSPJmc+ZnM1Tyek1dyA5WziSnF49xm+XWjIKeEzO2sq95HRBf7Xi1l8uDpQL+qt1GPVXG+ZDnIvJ2caBQ1zbMOqvdqnk9No5kJztXdFffzEmZwfLL+x3Vpu+FeW+wH235Rf2ccF8YwG/VzhyYT+XMS8Zx9pbYXneYL3UFsibVQ7USxMBv+91pF46MtYL41h79zpQL3UE8uYBB+qlmYDfqx2pl06M9cI41t5qB+qlrkDePORAvbQQ8PthR+qlM2O9MI6197AD9SKxWnCtA/XSUsDvxxyply6M9cI41t5jDtRLK4G8edJyv38Turn+OkfqpStjvTCOtbfOgXppLVAvz1ju9+9C9fKsI/XSjbFeGMfae9aBemkrUC8vWO73H0L18qIj9dKdsV4Yx9p70YF6aS9QL6/Y/isvoXp51ZF66cFYL4xj7b3qQL10EKiXNyz3+y+hennTkXrpyVgvjGPtccYvqHvUdePra6t71PVK3aOOZ3B6Cdyjrrfl96hDv3sL3aNOb/6FQsnGgTOmfRgnuIjaUnTmZvNEImlnV0fs7KL4J2bk+vS6L+TYDoB+gCjAA+QB8gEFgEJAEaAYUAIoBewIaEb/nxMjr/C9dF888D19rzpdc5nG/5Qx+ShwQInmGDZHYvidHsPvDIPrGJ8rXwzqUxyyeG2uMuOtfGPhj7ky9p+ptowLky0e3nm/FfVVNePw2VWzq8bMrpg+rXLY7BmVs6bNnDG4fPp0MzkzjODgFokROP/75iDox8RkGO/lGA7q93Rf2cZ75gDrwNTirmqc2bsbxjP1Gw3qrpk7SK3b5bFz890zzVj0pxQfELZnDKDj6w1nMQC5vn1y301yh+RlUJ6+m2R/Rkk1QChx05jjx+nzTjH6qohWTin0KoqmFHtV5YUllZWl+Z6XV15UXlSRV1JdVVHolRSWQJ+V5XklsLu88kqvKlpeVBXU+ehOQvdM3zl1PsozODsLnI/uYvn5KPq9i9D5KPdFvAFkK3e/71j+0A5tJ2culTGeh3PGTx/Q0b6OKrh7pvezW/3pLc+MxUCq20FhU3/o+D8+Y7j2gcEcJDDJDMqye5KhbatC+G99rqKbkw/Msj9+3CqX0+fBRl9eSX5eXnE+tiuZEvUKplTmleTlTakoiFZGyyvzqkoLvNLqgryC/MoplRXQZ7lXHa0uryytLtlkV1Aqd7CQyh2SUrk8gzNEQOUOtVzlot9DHVG5g8hW7n6HMRcmFiH2maaCU2lRB1XacMq7EWFTacMFVRoGc4RAkYxwRKVFGVXa8Cz748et0jh93tVBlbarkEobmVJpPIMzUkCljbJcpaHfoxxRaSPIVu5+dxNQabsFrNI8B1Xa7pR3o8Om0nYXVGkYzNECRTLaEZXmMaq03bPsjx+3SuP0eQ8HVdoeQiptTEql8QzOGAGVtqflKg393tMRlTaabOXudy8BlbZXwCqt0MH1bmMp78aFTaWN9a13GxfAerdCxvVuYxkntXGOqBdOn/d2cL3b3kLqZZ+UeuEZnH0E1Mt4y9UL+j3eEfUyjmzl7vc9R9a7cebSBMb1bu8JrHebEPB6tyIHr9HtS3U7MWzqb1/Ba3QYzIkCk8xER67RFTFeo9s3y/74catcTp/3c/Aa3X5CKndSSuXyDM4kAZW7v+UqF/3e3xGVO5Fs5e73AIFrdAcEfI2u2EGVdiDl3eSwqbQDBVUaBnOyQJFMdkSlFTOqtAOz7I8ft0rj9LncQZVWLqTSKlIqjWdwKgRUWqXlKg39rnREpU0mW7n7nSKg0qYErNJKHFRpVZR31WFTaVWCKg2DWS1QJNWOqLQSRpVWlWV//LhVGqfPBzmo0g4SUmlTUyqNZ3CmCqi0aZarNPR7miMqrZps5e73YAGVdnDWtsqBa8y6Qx99BOJwSJbs+EeT22ruVHqIgN/v17Y77/GOnxJ+f1DbDeHAOD7eB5aPdVehHP/Y8lvjDxDK8U8cyXHG8fE+sXysuwjl+OeW1/aOQjn+hSM5zjg+3heW5/hEGmvF26+IrZMdsrU6QFuTrUusH4l6/9ry3M8Tmue+cWSeYxwf7xvLxzpfaKw3BDTWFp07ehuYV17jTfL1hUHU1xvVpps/Io8gHk0Mu1bTaRyz1ZYb7OfR5/nEBcTjiCcSTyauJi4lbgQ41OhXX5TsqTZ97mf85mRGgu1nJtj+sATbH55g+yMSbH9kgu1nJdh+doLtj0qw/dEJtj8mwfbHJtj+uATbH59g+xMSbH+i0T7tP7THz06Ks93JcbabE2e7U+Jsd2qc7U6Ls93pcbY7I852c+Nsd2ac7c6Ks93ZcbY7J85258bZbl6c7ebH0a4d4Lw4250fZ7sL4mx3YZztFsTZbmGc7S6Ks93Fcba7JM52l8bZblGc7RbH2e6yONtdHme7K+Jsd2UC8yW2X5Jg+6sSbH91gu2vSbD9tQm2vy7B9ksTbH99gu1vSLD9jQm2vynB9jcn2P6WBNvfmmD72xJsf7vRfjy1P5T08Y5Zsf/PzzOo3Uziw4gPJz6C+EjiWcSziY8iPpr4GOJjiY8jPp74BOITiU8iPpl4DvEpxKcSn0Z8OvEZxHOJzyQ+i/hs4nOIzyWeRzw/zvicR+3OJ76A+ELiBcQLiS8ivpj4EuJLiRcRLya+jPhy4iuIryReQnwV8dXE1xBfS3wd8VLi64lvIL6R+Cbim4lvIb6V+Dbi2+OMDxf3BtwRI//7kh3Tie8gbgy4M2vb1Yrc11ymZSiFj1fm6u9g6AsfV6x47eRcAen53zDju4xsX54VshWQ6Pgaw1kMQJnPOK596qTjvvj1g+UX/XRxcPv9o53PMY/67PSWZfH5vJyxr58sv/UFbR5jfnuMOeP95MgXDJz5d9d2+ioprqqoLi7IL48WVFdAP0XVVfnleaVedUk+dJ9f4FWUV0WnFFQUFxUUlVQXB/bse9PmaJKbae/dWamVtCyDc3cWf78rGJNeyu8VQoqR+0C7nGzl7vc3Sw9Afjs5c+kevsnI+03g3kto30AV3O/FlicRj+qtt8oY5oqcLa2kul21nbOlQTFi5j9bGqT+/7OlWP0EfrZk7pyrTwziSoFJZWUWf1GsMvrUG7fKTULZb3PGsZJxwlolVKDcSys4fb43y+7awSU09wrUju0/6cArKL8JXEH5w4ErKF0FxvtPO6+gbGPnfYz1yDjW3p+W5w3Wy+8C9fKPA/XSTaBeNjpSL/cz1gvjWHsbHaiXPwTqpVYd++ulu0C9pNVxo14eYKwXxrH20izPG6yXPwXqJcOBeukhUC+ZjtTLasZ6YRxrjzN+eGEHL6roK/yoQfG4inPF6iylJOP7IGN8Lf32TKQu8fz1QYG6XMN4XpxOeeXfOOMqEds1Wfbb+JCAjTUb98WqQxgvVj3swMWqOwWKMsdykYDJ+LCA37UdEQmPMOYl41h7nPETnsw3f90fxsn8EVcm8+6MfT3KWDRY0BG17cY9UN2UzEBx29nVETu7MNppfpW8ll6vhRx7DPA44AnAk4B1gKcATwOeATwLeA7wPOAFwIuAlwAvA14BvAp4DfA64A3Am4C3AG8D3gG8C3gPsB7wPuADwIeAjwAfAz4BfAr4DPA54AvAl4CvAF8DvgF8C/gOsAHwPeAHwI+AnwA/A34B/Ar4DfA74A/An4C/AH8D/sFF5YB/8WwtG2IASANEAOmADEAmIAuQDcgB1AbUAdQF1APUBzQANAQ0AjQGNAE0BTQDNAe0ALQEtAK0BrQBtAW0A7QHdADkAjoCOgE6A7oAugK6AboDegB6AnoBegP6APoCdgD0A0QBHiAPkA8oABQCigDFgBJAKWBHQH/AAMBOgJ0BuwDKAAMBgwCDAUMAQwHDAMMBIwC7AkYCRgF2A+wOGA3YAzAGsCdgL8BYwDjA3oB9AOMBEwD7AiYC9gNMAuwPOABwIGAyoBxQAagETAFUAaoBBwGmAqYBDgYcApgOOBQwAzATcBjgcMARgCMBswCzAUcBjgYcAzgWcBzgeMAJgBMBJwFOBswBnAI4FXAa4HTAGTiGVBM5MeZKfC/dV+P4nl7yoY8jmcb/lDHVrcDawWiOYXMkht/pMfzOMLiO8bnyxaA+xSGL1ebKfDPeyjcW/pgrY/+Zasu48NgSxfJTTaivyvLp08ccMe2o8llVw2bPqJw1beYMc6rVJuspNxIjZP73zfBn0+sM470cwzX9nu4r23jPHFodklrcxyi8oeSjxlUwpn6jQS07e0xKXPLYGfOBz3NplM/MDtmPdNDx9YazGIBc3z65l2M9lvwVms0PfEb7k+xr8wnCmdkyiZvGHD9On8+K0ZftD3w+i3GcTHvPzk796IBlcDCQ3P2ew5j0Un6fk80+RiI/OjiTbOXut15Al0+j/+Wm7eTMpXP5JiOPM376gI72dVTB/ejgcbvVn962ekjNPKrb+WFTf+i41ENqMJjzBSaZ+dl2TzK0bVUIyT6kZl62/fHjVrmcPp9n9OXKQ2rOE1K556dULs/gnC+gci+wXOWi3xc4onLnk63c/V7IXJhYhNhnmgpOpT3hoEpbQHm3MGwqbYGgSsNgLhQokoWOqLQnGFXagmz748et0jh9vshBlXaRkEq7OKXSeAbnYgGVdonlKg39vsQRlbaQbOXu91IBlXZpwCrtSQdV2iLKu8VhU2mLBFUaBnOxQJEsdkSlPcmo0hZl2x8/bpXG6fNlDqq0y4RU2uUplcYzOJcLqLQrLFdp6PcVjqi0xWQrd79XCqi0KwNWac84uN5tCeXdVWFTaUt8692uCmC92zOM692WME5qVzmiXjh9vtrB9W5XC6mXa1LqhWdwrhFQL9darl7Q72sdUS9Xka3c/TZwZL0bZy5dx7jerYHAerfrAl7v9qyD1+iWUt1eHzb1t1TwGh0G83qBSeZ6R67RPct4jW5ptv3x41a5nD7f4OA1uhuEVO6NKZXLMzg3CqjcmyxXuej3TY6o3OvJVu5+bxa4RndzwNfonnNQpd1CeXdr2FTaLYIqDYN5q0CR3OqISnuOUaXdkm1//LhVGqfPtzmo0m4TUmm3p1Qaz+DcLqDS7rBcpaHfdzii0m4lW7n7vVNApd0ZsEp73kGVtozybnnYVNoyQZWGwVwuUCTLHVFpzzOqtGXZ9sePW6Vx+nyXgyrtLiGVdndKpfEMzt0CKm2F5SoN/V7hiEpbTrZy93uPgEq7J2CVdobQQYA5L7ZSaSsp71aFTaWtFFRpGMxVAkWyyhGVdgbDhKtV2sps++PHrdI4fb7XQZV2r5BKuy+l0ngG5z4BlXa/5SoN/b7fEZW2imzl7vcBAZX2QPa2yoFrzPQdg7njsDpbdvyjyW01T0dYLTD+jerYnff4lAEJvxvXcUM4MI6P19jyse4qlOPNLH/EE96jVMLv5o7kOOP4eM0tH+suQjneyvLaflFoHm/tSI4zjo/X2vIcX0XzmeLtV8TW6x2y9VaHbF0eoK1JP19cycxN7Syv03VCc3J7R+ZkxvHx2ls+1k8JjXXHgMbaovNcryPzb/lwmtQXMfFcYKPadDtx5IXEi4lrAx6kccxWWx7ZhLWMnz9F/DTxVfR/1xPfSryc+AVq1wiwxuhXPx7qRGp3EvHJxHOITyE+lbgu4CGjn+XUzxr6/EXa30vELxO/Qvwq8WvErxO/Qfwm8VvEbxO/Q/wu8XvE64nfJ/6A+EPij4g/Jv6E+FPiz4g/J/6C+Evir4i/Jv6G+Fvi74g3EH9P/APxj8Q/Ef9M/Avxr8S/Ef9O/Afxn8R/Ef9N/A/xRuJ/iRWNQy3iNOIIcTpxBnEmcRZxNnGOzkfiOnr8iesR1yduQNyQuBFxY+ImxE2JmxE3J25B3JK4FXFr4jbEbYnbEbcn7kCcS9yRuBNxZ+IuxF2JuxF3J+5B3JO4F3Fv4j7EfYl3IO5HHCX2iPOI84kLiAuJi4iLiUuIS4l3JO5PPIB4J+KdiXchLiMeSDyIeDDxEOKhxMOIhxOPIN6VeCTxKOLdiHcnHk28B/EY4j2J9yIeSzyOeG/ifYjHE08g3pd4IvF+xJOI9yc+gPhA4snE5cQVxJXEU4iriKuJDyKeSjyN+GDiQ4inEx9KPIN4JvFhxIcTH0F8JPEs4tnERxEfTXwM8bHExxEfT3wC8UPEpxGfrvMV8HD2lvlZf1G2luaHB6ndw7o+AY9kb7vigluLTcuAOYNvTax3MPTXReDJgirG9l/27fnfMOP7aDaNS3bIVnGg42sMZzEAZT7juPapk45bFHe2/GRAFwe3310CuklIgnZGfXZ6j2YzfkHF2FdXy2+yQpvHmN8eY854XR258MCZf49tp6+S4qqK6uKC/PJoQXUF9FNUXZVfnlfqVZfkQ/f5BV5FeVV0SkFFcVFBUUl1cTSo1UCmzdEkN9Pex7NTq4FYBufxbP5+n2BMeim/n8hmHyOZVRFkK3e/PS09APnt5MylJ/kmI6+nwF2+0L6BKrg172uTiEf11ltlDHNFzpbWUd0+tZ2zpUExYuY/Wxqk/v+zpVj9BH62ZO6cq08M4jqBSWVdNn9RPGX0qTdulZuEst/mjGMd44T1lFCBcn/lwunz09l21w5+tfa0QO3YviwVr6DkCFxJ6O3AFZRcAb/72HkFZRs7n2GsR8ax9vpYnjdYL7UF8qafA/XSUcDvqCP18ixjvTCOtRd1oF7qCORNvgP10knA7wJH6uU5xnphHGuvwIF6qSuQN8UO1EtnAb9LHKmX5xnrhXGsPc744YWdhmrLFX7UoHhcxbni+WylJOP7AmN8Lf32TKQu8fz1BYHz4hcZz4vTKa/8G2dcJWL7Yrb9Nr4kYGPNxn2xajXjxaqXHbhY9YhAUfa3fDLCZHxZwO8BjoiEVxjzknGsPc74CU/mm7/uD+Nk/gqnja4edXs6YOOrqYHadKcQ2218LSh5FE1uy+uTxXcYej2l3b3XHZju33AkOfM5k/PNVHJ6bzqQnG9xH+LqOzhQLmiRt1MD5YYWeSeMWuRd5unexeR814Hp/r0wapH1qeT01juQnO9z28htYHe16dsy7gufu1h+wRdvFPqqgN9ljlzw/YDxgi/jWHtllucN1suzAnkz2IF6eU3A7yGO1MuHjPXCONbeEAfq5TmBvBnuQL28IeD3CEfq5SPGemEca2+EA/XyvEDejHKgXt4S8Hs3R+rlY8Z6YRxrbzcH6uVtgbzZw3K/7xN62MEYR+rlE8Z6YRxrb4wD9fKOQL2Mtdzv+4XqZZwj9fIpY70wjrU3zoF6eU+gXsZb7vcDQvUywZF6+YyxXhjH2pvgQL28L1Av+9n+awahepnkSL18zlgvjGPtTbI8b/KhjyLFnzcHWu53qdp0uxxuvyc7Ui9fMNYL41h7ky3Pm95ZMt9XVlruNy4e+EDA7ymO1MuXjPXCONbeFAfqReL7yoMcqJcPBfye6ki9fMVYL4xj7U11oF4kvq88xIF6+UjA7+mO1MvXjPXCONbedAfqReL7ypkO1MvHAn4f5ki9fMNYL4xj7R3mQL3cJ3Cd6EgH6uUTgXqZ5Ui9fMtYL4xj7c1yoF7uF6iXox2ol08F6uUYR+rlO8Z6YRxr7xgH6uUBgXo53oF6+UygXk5wpF42MNYL41h7JzhQL6sF6uVkB+rlc4F6meNIvXzPWC+MY+1JxY97nH/gi1+eaWcac57XYvT5R6FfmnL7nMbo80+O+Bxh9PlnR3xOZ/T5F0d8zmD0+VdHfM5k9Pk3R3zOYvT5d0d8zmb0+Q9HfO7N6POfjvjck9Hnv0Lo898h9PmfEPq80RGfv2C8QfS/jvhcyDjO+IxEF3zmzO1aIfQ5LYQ+R0Loc3oIfc4Ioc+ZIfQ5K4Q+Z4fQ55wQ+lw7hD7XCaHPdUPoc70Q+lw/hD43CKHPDUPoc6MQ+tw4hD43CaHPTUPoc7MQ+tw8hD63CKHPLUPoc6sQ+tw6hD63CaHPbUPoc7sQ+tw+hD53CKHPuSH0uWMIfe4UQp87h9DnLiH0uWsIfe4WQp+7h9DnHiH0uWcIfe4VQp97h9DnPiH0uW8Ifd4hhD73C6HP0RD67IXQ57wQ+pwfQp8LQuhzYQh9Lgqhz8Uh9LkkhD6XhtDnHUPoc/8Q+jwghD7vFEKfdw6hz7uE0OeyEPo8MIQ+Dwqhz4ND6POQEPo8NIQ+Dwuhz8ND6POIEPq8awh9HhlCn0eF0OfdQujz7iH0eXQIfd4jhD6PCaHPe4bQ571C6PPYEPo8LoQ+7x1Cn/cJoc/jQ+jzhBD6vG8IfZ4YQp/3C6HPk0Lo8/4h9PmAEPp8YAh9nhxCn8tD6HNFCH2uDKHPU0Loc1UIfa4Ooc8HhdDnqSH0eVoIfT44hD4fEkKfp4fQ50ND6POMEPo8M4Q+HxZCnw8Poc9HhNDnI0Po86wQ+jw7hD4fFUKfjw6hz8eE0OdjQ+jzcSH0+fgQ+nxCCH0+MYQ+nxRCn08Ooc9zQujzKSH0+dQQ+nxaCH0+PYQ+nxFCn+eG0OczQ+jzWSH0+ewQ+nxOCH0+N4Q+zwuhz/ND6PN5jvj8ZTafz+c74vNXjD5f4IjPXzP6fKEjPn/D6PMCR3z+ltHnhY74/B2jzxc54vMGRp8vdsTn7xl9viSEmuTSEPq8yBGff2DM7cUhHOfLQujz5SH0+YoQ+nxlCH1eEkKfr3LE5xxGn692xOfajD5f44jPdRh9vtYRn+sy+nydIz7XY/R5qSM+12f0+XpHfG7A6PMNjvjckNHnGx3xuRGjzzc54nNjRp9vdsTnJow+3+KIz00Zfb7VEZ+bMfp8myM+N2f0+XZHfG7B6PMdjD63oH5qkc8RQDogA5AJyALA5UuF54V4noTnDaijUVeizkLdgcdhPC7hPI3zFtYx5jWOcwv6DLeWgFaA1oA2gLaAdoD2gA6AXEBHQCdAZ0AXQFdAN0B3QA/Ag9TXj2DUT4CfAb8AfgX8Bvgd8AfgT8BfgL8B/wA2Av4lR2oB0gARQDogA5AJyAJkA3IAtQF1AHUB9QD1AQ0ADQGNAI0BTQBNAc0AzQEtAC0BrQCtAW0AbQHtAO0BHQC5gI6AToDOgC6AroBugO6AHoCegF4AfIY9PtMdn3GOz/zGZ2DjM6HxJB2fGYzP0MVnyuIzVvGZo/gMTnwmJT6jEZ9ZiM/ww2fa4TPe8JlnNc8AA+AzovCZSfgMIXymDj5jBp+5gs8gwWdy4DMq8JkN+AwDvKc/3uMe7/mO90DHe4LjPbLxntF4D2W8pzDeYxfvOYv3YMV7kuI9OvGelXgPR7ynId7jD+95h/eAw3ui4T3C8J5ZeA8pvKcS3mMI77mD96DBe7LgPUrwnh14Dwu8pwPe4wB/84+/gcffhONvpPE3w/gbWvxNKf7GEn9ziL/Bw9+k4W+08DdL+Bse/E0L/sYDf/OAvwHANfG4RhzXTOMaYlxTi2tMcc0lrkHENXm4Rg3XbOEaJlzTg2tccM0HroHANQH4HTl+Z4zfoeJ3ivgdG37nhN/B4HcSeI0er1njNVy8ponX+PCaF14DwmsieI0Az5nxHBLPqfAcAzU3alDUZKhR8JiNxzCc03GOw5rX2/8Bfkd1LHcDCQA=",
167
+ "bytecode": "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",
168
168
  "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
169
169
  },
170
170
  {
@@ -181,7 +181,7 @@
181
181
  }
182
182
  ],
183
183
  "returnTypes": [],
184
- "bytecode": "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",
184
+ "bytecode": "H4sIAAAAAAAA/+2dBZwUx/LH+3ZPgMPdOdxh5/yAJEtwt5AQDwd3cSdO3N3d3V/c3d1e7MVe3F7cnfynli6uaDb3h2zVpPvTM59P0zM9e9X1q5b57tAz+2O+UusUqsyWF6ZEmMIiVaIaymBL6zyV2xYUhDYKstgtS1WWl9dVldYFZcHCVGlNbXVFqryitrI6qA4qqisWl1aXldVVl1dX1dTWVKVqgvKyuqC+oqasXhsu4PMxJaEbQlwooLvQct1FoY0iAd1FjLqx3zch/V79Rf/P1e8uzH5TnzuHaVmYuniaDwtTV91mEJfWOi5dLfCrW5iS2q+/2tI6T+W2BXK2y8oEbZcL2q4QtF0paLtK0Ha1oO2aImKzu8576LynznvpvETnvXXeJ0xPJpfvN1WrjpmmOsGWR8qa6f0EKSvW+0lS1lzv55OyFnq/gJS11PuFpKyV3i8yzsGW1nkqxy0bJ6Ry3JqSuDQhemhcMMe4NCNlGJdiUobam5MyjEsLUob1tSRlWB/GE+x3I+dxo22JMaE+4/n8LJoKsmgqzKKpKIsm6jOUYSzSOk/luBWSGHHZpP0dtzzjOE32W5CYNOf1JcO7LXltZmLWWiBmLdXqx6w1iVkrgZi14bWZiVk7gZi1Uasfs3YkZm0FYtae12YmZh0FYtZerX7MOpKYdRCIWSdemykBmxk/Owv42Y3XZjW0bRe1+m3bjbRtV4GYdee1mYlZD2abYKMniQnGD30vJud7kHj1ZI5XHqkT7eJxT7l6M/p7/T/6e2Xxo1eE+ql/sa+xr7Gv/6yvPf5hX6HeEtZ6g6qmRr2wNXbtLBGMAdjszWszM8/3If6jVqynmJynfbEPs7Y8UifapfdbVJb92NfY19jX2NfY19jX2NfY19jX2NfY19jX2NfYV5t9pf8HmiC+MH+3z/iiDF9Ulrjg1tQiXwot8iVpkS9FFvmSb5EvTSzypcAiX/L+YV/ouhhFyvB8gpTh/EjXz/TV+3T9TD+9T9fP9Cc6sWyA3qfrZwbqfbrGaBDZx3yw3qdrjIbofbrGaKjep2uMhul9up5ouN5vRcpG6P02pGyk3m9LylJ6vz0pw0WUHUhZqd7vRMpwQWRnUoYLGbuQMlyA2JWU4cLB7qQMF/z1ImXYhrTNsQ37kDJsw76kDNuwHynDNuxPyrANB5AybMOBpAzbkLYptuFgUoZtOISUYRsOJWW4BmkYKcN2HU7KsF1HkDJcizOSlGFbp0gZtnVAynBNSikpw/YvI2XY/uWkDNdmVJAy7BOVpAz7BLYptMXsvIbz+Pd0jGI9dIxWZamvMotfuE/nJPybtM5TuW2ZOYnWkybHWFcz4kO5Bb4UWORLE4t8ybfIlyKLfEla5EuhRb40tciXRBZfynh9yVxC8PoAG87DZcQP9KmU+BEwxyRjI4sfAfED608RP0by+pGpYkQWP0YSP7D+EcSP4bx+ZMI/LIsfw4kfWP8w4sdQXj8yXW9IFj+GEj+w/iHEj8G8fmS64KAsflDGxvoHET8G8vqRQZIBWfwYSPzA+gcQP/rz+pGptl8WP/oTP7D+fsSPvrx+ZOYy+l0KjnG+wLqS5DNjNTQBE9PvYZRRkfcp3+L3AsrG+HAP5eoavU+ZfJTepzw/Wu/T7wI439LvEY19B6HfVZC/qkkZXtdqSBkywChShryEPhXpv2Ve41oKdeG6XNwa+/5N12fh39HvirhWi671lVi72sPwz3zGqpiU0TXlzOt5M740N3zB4x7C9bY06m0ZUb2tjXpbR1RvW6PethHV29mot7NR71/dd5fwRRm+qEZ86WaRL10t8qW9Rb60ssiX1hb50swiX4os8iXfIl+6WORLJ4t86WyRL+0s8qWFRb60tMiXphb5UmiRL0mLfOlgkS/S32fWxJc2FvnS1iJfii3ypblFvjSxyJcCi3zJ+4d9+av1FHie/l8t3mOhaxh6GZqgrETv0zUMeH+MvicF76PRdQ14n5Cua8B7cK1JGd7bpGsd8P4dXeuA92LbkTK890fXP+C9Y7rWAe8b0rUOGA8aP7xe9SRlyOt0XQP2uxJShtddev8Qv3fQ+4w4fuhaB+QHeo8S24audcC2ofc3sW3oWgdsG3pvFNuGrnXAtsH4gK6byPuL8O9p38F66P/zD8lS3+AsfuE+HSv4N2mdp3LbMmOF1pMmx1gX/X/+gRb4UmCRL00s8qW5Rb4UW+RLW4t8aWORLx0t8qWDRb4kLfKl0CJfmlrkS0uLfGlhkS/tLPKls0W+dLLIly4W+ZJvkS9FFvnSzCJfWlvkSyuLfGlvkS9dLfKlm0W+JCLyBb8/o93Bhi9Q7wDeejNLs/qTevF7/QCiH+unz9X0Y/Yjz/CjhNRL75H0y+JLH+a2ABu91aox6UNigvdyehM/ejP7ATHpSPxIk2N6zwmvxdhmcD2sTDT4xbx2MuMX7ZP7q1V5IEk+Mz7R4NeoREMMcV0afZdyT6MM7Eu8P6ynEVfzPd/gn7k+jfpHn4My33lG7zXSv00adRQpkfZJ0faBrUSt2j703hx+Fv6OrnUtIZ/BcZckn5lK2vXQZMPfMetZac1wQmVnT+Z1uZllrKhTEfs0rtnmCDpv9jE+hzFl9HOVuQrrLyFlPbP42Zv4me39gtzvUDXHXJ7KPm56ZPG5exZ9dP5nXivf6LV4KKl3GG+9pfQZUhonZfiCG31egPn5iTL6nOrq+DKS+DKC15fMuw5TvDZTAs++rPIMDsYPfS8m5wMSr1LmeOWplZ/BSZNj6l/sK7+v4MtQw0/63PZQC/wzn3sC/7oa8YNr+u5yDFmWjSHN75+UIY9MNvi1N2HIQUZc6f8l01gz80FAWQntmtemZkQL5Srm73ArfY9FuzbVyxz7TPelzDMoS9yxfmn26pXFjxLiB9ZP30vM/GxNZmh3z+IHXfOB9XcnfjDzS9BUrdn7kSm/cDPDmvILfQaUmTUC+i6P1fGFPhfLfY2g7wtZHV/os8LlAr6UrYEv9PnpSgFfKtbAl0riS7WAL1Vr4AvWD9d2HH8DSBmOg96kDPsjXQOG/aIvKcP26UPKzHeBFBN/8fsbzDn4vCS9vzPaKIP4jTE0pXLbMtclrAft4vEY4h8+uzlazpdqap/euxhD6lyLWX8hscWlA2yOZfYTbKyrbWXuDep9rCdJzt9C7jXdpvehP62tz9cQO49mOY9bY+MoTdpkPK/WzP2PCcR+OksdUD6Rt96A1punE9aB5Umy/wgOavI52DC+6DOMn3FZPkf31zb+ppicHyeseTzxI02OsS7oJ3eSPvUo+a6zDrM/VC+Ny2gSFzy/FvncumQfP1tC4jaO189qgX6f0T6BxBxji/XQvvccaY8XyBgea8QNzr+T5TxujY1x2u8m8WrNjPHJxH6a1EHrncJbb0DrxTGOdWB5kuy/Tcb4lIbdFfFFn2GMT8zyObo/1vibYnJ+orDmScSPNDnGuqCfvET61DtkjKeZ/aF6aVzWJXHB8/S+wQSyj58tIXFjnhurBfp9RvtkEnO0i/XQvvcpaY/PyBgeb8QNzv+a5TxujY1x2u+m8mrNjPFpxH6a1EHrnc5bb0DrxTGOdWB5kuz/Qsb49IbdFfFFn2GMT8nyObo/3vibYnJ+irDmqcSPNDnGuqCffEn61K9kjDNfHwOql8ZlAokLnqf3pyaTffxsCYkb89xYLdDvM9qnkZhjbLEe2veS5F5tAXm2ZJIRNzjfPst53Bob47TfzeDVmhnjM4n9NKmD1juLt96A1otjHOvA8iTZb4cLCsjnYMP4os8wxqdn+Rzdn2T8TTE5P11Y8wziR5ocY13QT5qQPtWerDXg/u5A9dK4TCZxwfP03u80so+fLSFxY54bqwX6fUb7TBJzjC3WQ/teD9IevcgYnmrEDc6PyHIet8bGOO13s3m1Zsb4HGI/Teqg9c7lrTeg9eIYxzqwPEn2h5MxPrdhd0V80WcY47OyfI7uTzX+ppicnyWseTbxI02OsS7oJ31InxpBxjj3dweql8ZlGokLnu9LPjeT7ONnS0jcmOfGaoF+n9E+h8QcY4v10L5XRdqjhozhGUbc4PzkLOdxa2yM0343j1drZoyvR+ynSR203vm89Qa0XhzjWAeWJ8n+JDLG5zfsrogv+gxjfG6Wz9H9GcbfFJPzc4U1zyN+pMkx1gX9ZAzpU5PJGOf+7kD10rjMJHHB833I5+aQffxsCYkb89xYLdDvM9rXIzHH2GI9tO/NIe0xj4zh2Ubc4HxtlvO4NTbGab9bn1drZoxvQOynSR203gW89Qa0XhzjWAeWJ8n+QjLGFzTsrogv+gxjfH6Wz9H92cbfFJPz84U1r0/8SJNjrAv6yfqkT9WSMc793YHqpXGZQ+KC58ntkBV9n362hMSNeW6sFuj3Ge0bkJhjbLEe2ve2Je2xPRnD84y4wfmlWc7j1tgYp/1uQ16tmTG+EbGfJnXQejfmrTeg9eIYxzqwPEn29yFjfOOG3RXxRZ9hjC/I8jm6P8/4m2JyfoGw5g2JH2lyjHVBP9mJ9KmlZIxzf3egemlc1iNxwfP0HT3djM9Df8bxQNcecI9Lel1Au3hM52sso99/BJ+hyMSRPruQ7XkQLBtEfMLniFxca2nu4/pSukaN3qfN9gxHf+NzoI/5eaQygTWBmfbG9XX5JDZYT5KcP42M5TPI/I+aaX+4PMt53Bq7PtD1j8xr/TLXB/r8QZrUQevlXtdH68XrA9aB5Umyfxm5PtB12hhf9Bn63fAsn6P7vY2/oeu6hwtrpr+rkSbHWBf0k7NJn7qczGslzP5QvTQuXUlc8Dx9ZkhyvNH66bvthxo+0mcH6fzJ/BskAX3WCu3i8XDiH5aVEP9QB51L6HMBrQV8bWX4isf0XdcS9RYY9RZEVG+RUW9RRPU2NeptGlG9xUa9xRHVG32/CqrAZjtmm9BObdTKW2PXXvo+6basvqSCJqrh/XFb1i2ZueOSul3ziE/oJ767phnxi34nT5K/yVeraivMUtYkS1kztepGf+ujBdlvTf6upeEnxBjfzUHfU4nv+KLvqUQd9J2UqAc/X6RWbSPWiw9uCcN2WaqyvLyuqrQuKAsWpkpraqsrUuUVtZXVQXVQUV2xuLS6rKyuury6qqa2pipVE5SX1QX1FTVl9dp4gtHPXny2KAutCCyXn70Z44cdFTsEfPlYppZ/WYW8p85ho//ZlE1Xrr70U7wTahO18o8tLdMaUE9/rXuVji/QZiV8tlLUX/gyiBNStgmrUECLMuox49dSCU8mEo0zQMDuQMU3OKR0D+Rvo5UmP+4Jvw+jrUGKf8JZnYl0sGogBHOCGkw+NyTL5xL6/BCdw+A338rAHXPOfjzsH4r58EZiPpx8bkQjMR9BYj4yy+dK9PmROge/cDBIzC1DFf9F+Op83nmAW/cwHVNu3dfky8x/SWY/A8ZYMrZ1IBU/cy5L5bZlvhFytUWp4p3LQCvYLFHRgWlnPlsp+s16RYzV8iej4alceCoZnsSFx07hiT14ohKeHIOnTeHJMnjCZx39t2PV8idOxqnlK4ZhZfpEtXxlIaxghZVhsAIJVrrBChJYqQArYuB/muF/NOF/zuF/r+B/2OB/4+B/YuF/uOB/tuB/5OB/DeF/RuF/DTcJ06Zh2ixMm4dpizAtDFNtmBaFaXGY6sJUH6Ytw7RVmLYO0zZh2jZM24Vp+zDtEKYdw7RTmHYO0y5q5W/nFNBho3cN0kxtIAD8Keo75nD3sYhoU8b5llpfAasv5Sl69wK3xu4u0V9kyWf1ZflcgndmwrtLY3dbstUGWy/ZoW7Xle4xmVeAvCzRor/XQX/HAiOcT8oSRBGW4d8UkVzsK1hSrdqVqTCuesqUzCWFNR7B8ntQuO2q8yWqoevh1A4bNOSfWWKWR/YT+jOJRj6T9xd2/mooinUGFAfCfyRiIQDmHdAkc920g/zda3ldPWypYFfFxwVLlEzH5WYhTs27rWQr/OzC0vLKuopUZV11TXVdTVV9RVVq0cL6+sVVqfJFtana2vLKVFlQVl9bVZqqLa0Jq62pq1gUZPyKin1247O10k253VV8U46lcXYXsLuHsvumHOjeg7+NsvrKMdHtIWB3T8U7MGEQgk1EpSjopVzJXARY+4VBL3vpfG/lGb2AcEovEABpeqEdJFd62UvxDb69lRv0wql5H+UeveyjeCdJ3JaqmF5YGmepgN19ld30Arr35W8jEXrZW/vKbXc/xTswYRCCzSjppULJXARY+4VBL/vr/ADlGb2AcEovByh5eqEdJFd62V/xDb4DlBv0wqn5QOUevRyoeCdJ3A5SMb2wNM5BAnYPVnbTC+g+mL+NROjlAO0rt91DFO/AhEEINqOkl0olcxFg7RcGvRyq88OUZ/QCwim9QACk6YV2kFzp5VDFN/gOU27QC6fmw5V79HK44p0kcTtCxfTC0jhHCNg9UtlNL6D7SP42EqGXw7Sv3HaPUrwDEwYh2IySXqqUzEWAtV8Y9HK0zo9RntELCKf0AgGQphfaQXKll6MV3+A7RrlBL5yaj1Xu0cuxineSxO04FdMLS+McJ2D3eGU3vYDu4/nbSIRejtG+cts9QfEOTBiEYDNKeqlWMhcB1n5h0MuJOj9JeUYvIJzSCwRAml5oB8mVXk5UfIPvJOUGvXBqPlm5Ry8nK95JErdTVEwvLI1zioDdU5Xd9AK6T+VvIxF6OUn7ym33NMU7MGEQgs0o6aVGyVwEWPuFQS+n6/wM5Rm9gHBKLxAAaXqhHSRXejld8Q2+M5Qb9MKp+UzlHr2cqXgnSdzOUjG9sDTOWQJ2z1Z20wvoPpu/jUTo5QztK7fdcxTvwIRBCDajpJdRSuYiwNovDHo5V+fnKc/oBYRTeoEASNML7SC50su5im/wnafcoBdOzecr9+jlfMU7SeJ2gYrphaVxLhCwe6Gym15A94X8bSRCL+dpX7ntXqR4ByYMQrAZJb2MVjIXAdZ+YdDLxTq/RHlGLyCc0gsEQJpeaAfJlV4uVnyD7xLlBr1war5UuUcvlyreSRK3y1RMLyyNc5mA3cuV3fQCui/nbyMRerlE+8pt9wrFOzBhEILNKOlljJK5CLD2C4NertT5VcozegHhlF4gANL0QjtIrvRypeIbfFcpN+iFU/PVyj16uVrxTpK4XaNiemFpnGsE7F6r7KYX0H0tfxuJ0MtV2lduu/9SvAMTBiHYjJJe1lIyFwHWfmHQy3U6v155Ri8gnNILBECaXmgHyZVerlN8g+965Qa9cGq+QblHLzco3kkStxtVTC8sjXOjgN2blN30Arpv4m8jEXq5XvvKbfdmxTswYRCCzSjpZW0lcxFg7RcGvdyi81uVZ/QCwim9QACk6YV2kFzp5RbFN/huVW7QC6fm25R79HKb4p0kcbtdxfTC0ji3C9i9Q9lNL6D7Dv42EqGXW7Wv3HbvVLwDEwYh2IySXtZRMhcB1n5h0MtdOr9beUYvIJzSCwRAml5oB8mVXu5SfIPvbuUGvXBqvke5Ry/3KN5JErd7VUwvLI1zr4Dd+5Td9AK67+NvIxF6uVv7ym33fsU7MGEQgs0o6SWtZC4CrP3CoJcHdP6g8oxeQDilFwiANL2kFR+9PKD4Bt+Dyg164dT8kHKPXh5SvJMkbg+rmF5YGudhAbuPKLvpBXQ/wt9GIvTyoPaV2+6jindgwiAEm1HSy1glcxFg7RcGvTym88eVZ/QCwim9QACk6YV2kFzp5THFN/geV27QC6fmJ5R79PKE4p0kcXtSxfTC0jhPCth9StlNL6D7Kf42EqGXx7Wv3HafVrwDEwYh2IySXtZVMhcB1n5h0MszOn9WeUYvIJzSCwRAml5oB8mVXp5RfIPvWeUGvXBqfk65Ry/PKd5JErfnVUwvLI3zvIDdF5Td9AK6X+BvIxF6eVb7ym3334p3YMIgBJtR0ss4JXMRYO0XBr28qPOXlGf0AsIpvUAApOmFdpBc6eVFxTf4XlJu0Aun5peVe/TysuKdJHF7RcX0wtI4rwjYfVXZTS+g+1X+NhKhl5e0r9x2/6N4ByYMQrAZJb2MVzIXAdZ+YdDLazp/XXlGLyCc0gsEQJpeaAfJlV5eU3yD73XlBr1wan5DuUcvbyjeSRK3N1VMLyyN86aA3beU3fQCut/ibyMRenld+8pt97+Kd2DCIASbUdLLBCVzEWDtFwa9vK3zd5Rn9ALCKb28o+TphXaQXOnlbcU3+N5RbtALp+Z3lXv08q7inSRxe0/F9MLSOO8J2H1f2U0voPt9/jYSoZd3tK/cdj9QvAMTBiHYjJJeJiqZiwBrvzDo5UOdf6Q8oxcQTukFAiBNL7SD5EovHyq+wfeRcoNeODV/rNyjl48V7ySJ2ycqpheWxvlEwO6nym56Ad2f8reRCL18pH3ltvs/xTswYRCCzSjpZZKSuQiw9guDXj7T+efKM3oB4ZReIADS9EI7SK708pniG3yfKzfohVPzF8o9evlC8U6SuH2pYnphaZwvBex+peymF9D9FX8bidDL59pXbrtfK96BCYMQbEZJL5OVzEWAtV8Y9PKNzr9VntELCKf0AgGQphfaQXKll28U3+D7VrlBL5yav1Pu0ct3ineSxO17FdMLS+N8L2D3B2U3vYDuH/jbSIRevtW+ctv9UfEOTBiEYDNKepmiZC4CrP3CoJefdP6z8oxeQDilFwiANL3QDpIrvfyk+Abfz8oNeuHU/Ityj15+UbyTJG6/qpheWBrnVwG7vym76QV0/8bfRiL08rP2ldvu74p3YMIgBJtR0stUJXMRYO0XBr38ofNlyjN6AeGUXiAA0vRCO0iu9PKH4ht8y5Qb9MKp+U/lHr38qXgnSepoTC852vxTG+W2m5dnN72A7rw89jYSoZdl2lduu4k8fnoBm1HSyzQlcxFg7RcGvSR1EPLzPKMXEE7pBQIgTS+0g+RKL0nGSS0/T6bjctMLp+aCPPfopYB5ksStMKYXnsYpFKCXIsvpBXQXOUIv+dpXbrtNBOilScT0Ml3JXARY+4VBL011EJr5Ri9NDXppFgG90A6SK700ZZzUmjlCL5yaix2kl2Ihemke0wtP4zQXoJcWltML6G7hCL00075y220pQC8tI6aXGUrmIsDaLwx6aaWD0No3emll0EvrCOiFdpBc6aUV46TW2hF64dTcxkF6aSNEL21jeuFpnLYC9NLOcnoB3e0coZfW2lduu+0F6KV9xPQyU8lcBFj7hUEvHXQQOvpGLx0MeukYAb3QDpIrvXRgnNQ6OkIvnJo7OUgvnYTopXNMLzyN01mAXrpYTi+gu4sj9NJR+8ptt6sAvXSNmF5mKZmLAGu/MOilmw5Cd9/opZtBL90joBfaQXKll26Mk1p3R+iFU3MPB+mlhxC99IzphadxegrQSy/L6QV093KEXrprX7ntlgjQS0nE9DJbyVwEWPuFQS+9dRD6+EYvvQ166RMBvdAOkiu99Gac1Po4Qi+cmvs6SC99heilX0wvPI3TT4Be+ltOL6C7vyP00kf7ym13gAC9DIiYXuYomYsAa78w6GWgDsIg3+hloEEvgyKgF9pBcqWXgYyT2iBH6IVT82AH6WWwEL0MiemFp3GGCNDLUMvpBXQPdYReBmlfue0OE6CXYRHTy1wlcxFg7RcGvQzXQRjhG70MN+hlRAT0QjtIrvQynHFSG+EIvXBqHukgvYwUopdUTC88jZMSoJfAcnoB3YEj9DJC+8ptt1SAXkojppd5SuYiwNovDHop00Eo941eygx6KY+AXmgHyZVeyhgntXJH6IVTc4WD9FIhRC+VMb3wNE6lAL1UWU4voLvKEXop175y260WoJfqiOllPSVzEWDtFwa91OggjPKNXmoMehkVAb3QDpIrvdQwTmqjHKEXTs2jHaSX0UL0MiamF57GGSNAL2tZTi+gey1H6GWU9pXb7toC9LJ2xPQyX8lcBFj7hUEv6+ggpH2jl3UMeklHQC+0g+RKL+swTmppR+iFU/NYB+llrBC9rBvTC0/jrCtAL+MspxfQPc4ReklrX7ntjhegl/ER08v6SuYiwNovDHqZoIMw0Td6mWDQy8QI6IV2kFzpZQLjpDbREXrh1DzJQXqZJEQvk2N64WmcyQL0MsVyegHdUxyhl4naV267UwXoZWrE9LKBkrkIsPYLg16m6SBM941ephn0Mj0CeqEdJFd6mcY4qU13hF44Nc9wkF5mCNHLzJheeBpnpgC9zLKcXkD3LEfoZbr2ldvubAF6mR0xvSxQMhcB1n5h0MscHYS5vtHLHINe5kZAL7SD5EovcxgntbmO0Aun5nkO0ss8IXpZL6YXnsZZT4Be5ltOL6B7viP0Mlf7ym13fQF6WT9ietlQyVwEWPuFQS8b6CAs8I1eNjDoZUEE9EI7SK70sgHjpLbAEXrh1Lyhg/SyoRC9bBTTC0/jbCRALxtbTi+ge2NH6GWB9pXb7iYC9LJJxPSykZK5CLD2C4NeNtVB2Mw3etnUoJfNIqAX2kFypZdNGSe1zRyhF07NmztIL5sL0csWMb3wNM4WAvSy0HJ6Ad0LHaGXzbSv3HZrBeilNmJ62VjJXARY+4VBL4t0EBb7Ri+LDHpZHAG90A6SK70sYpzUFjtCL5ya6xyklzoheqmP6YWnceoF6GVLy+kFdG/pCL0s1r5y291KgF62ipheNlEyFwHWfmHQy9Y6CNv4Ri9bG/SyTQT0QjtIrvSyNeOkto0j9MKpeVsH6WVbIXrZLqYXnsbZToBetrecXkD39o7QyzbaV267OwjQyw4R08umSuYiwNovDHrZUQdhJ9/oZUeDXnaKgF5oB8mVXnZknNR2coReODXv7CC97CxEL7vE9MLTOLsI0MuultML6N7VEXrZSfvKbXeJAL0siZheNlMyFwHWfmHQy246CLv7Ri+7GfSyewT0QjtIrvSyG+Oktrsj9MKpeQ8H6WUPIXrZM6YXnsbZU4Be9rKcXkD3Xo7Qy+7aV267ewvQy94R08vmSuYiwNovDHrZRwdhqW/0so9BL0sjoBfaQXKll30YJ7WljtALp+Z9HaSXfYXoZb+YXngaZz8BetnfcnoB3fs7Qi9Lta/cdg8QoJcDIqaXLZTMRYC1Xxj0cqAOwkG+0cuBBr0cFAG9bKH46OVAxkntIEfohVPzwQ7Sy8FC9HJITC88jXOIAL0cajm9gO5DHaGXg7Sv3HYPE6CXwyKml4VK5iLA2i8MejlcB+EI3+jlcINejoiAXmgHyZVeDmec1I5whF44NR/pIL0cKUQvR8X0wtM4RwnQy9GW0wvoPtoRejlC+8pt9xgBejkmYnqpVTIXAdZ+YdDLsToIx/lGL8ca9HJcBPRCO0iu9HIs46R2nCP0wqn5eAfp5XghejkhpheexjlBgF5OtJxeQPeJjtDLcdpXbrsnCdDLSRHTyyIlcxFg7RcGvZysg3CKb/RyskEvp0RAL7SD5EovJzNOaqc4Qi+cmk91kF5OFaKX02J64Wmc0wTo5XTL6QV0n+4IvZyifeW2e4YAvZwRMb0sVjIXAdZ+YdDLmToIZ/lGL2ca9HJWBPRCO0iu9HIm46R2liP0wqn5bAfp5WwhejknpheexjlHgF7OtZxeQPe5jtDLWdpXbrvnCdDLeRHTS52SuQiw9guDXs7XQbjAN3o536CXCyKgF9pBcqWX8xkntQscoRdOzRc6SC8XCtHLRTG98DTORQL0crHl9AK6L3aEXi7QvnLbvUSAXi6JmF7qlcxFgLVfGPRyqQ7CZb7Ry6UGvVwWAb3QDpIrvVzKOKld5gi9cGq+3EF6uVyIXq6I6YWnca4QoJcrLacX0H2lI/RymfaV2+5VAvRyVcT0sqWSuQiw9guDXq7WQbjGN3q52qCXayKgF9pBcqWXqxkntWscoRdOzdc6SC/XCtHLv2J64WmcfwnQy3WW0wvovs4RerlG+8pt93oBerk+YnrZSslcBFj7hUEvN+gg3Ogbvdxg0MuNEdAL7SC50ssNjJPajY7QC6fmmxykl5uE6OXmmF54GudmAXq5xXJ6Ad23OEIvN2pfue3eKkAvt0ZML1srmYsAa78w6OU2HYTbfaOX2wx6uT0CeqEdJFd6uY1xUrvdEXrh1HyHg/RyhxC93BnTC0/j3ClAL3dZTi+g+y5H6OV27Su33bsF6OXuiOllGyVzEWDtFwa93KODcK9v9HKPQS/3RkAvtIPkSi/3ME5q9zpCL5ya73OQXu4Topf7Y3rhaZz7BejlAcvpBXQ/4Ai93Kt95bb7oAC9PBgxvWyrZC4CrP3CoJeHdBAe9o1eHjLo5eEI6IV2kFzp5SHGSe1hR+iFU/MjDtLLI0L08mhMLzyN86gAvTxmOb2A7sccoZeHta/cdh8XoJfHI6aX7ZTMRYC1Xxj08oQOwpO+0csTBr08GQG90A6SK708wTipPekIvXBqfspBenlKiF6ejumFp3GeFqCXZyynF9D9jCP08qT2ldvuswL08mzE9LK9krkIsPYLg16e00F43jd6ec6gl+cjoBfaQXKll+cYJ7XnHaEXTs0vOEgvLwjRy79jeuFpnH8L0MuLltML6H7REXp5XvvKbfclAXp5KWJ62UHJXARY+4VBLy/rILziG728bNDLKxHQC+0gudLLy4yT2iuO0Aun5lcdpJdXhejlPzG98DTOfwTo5TXL6QV0v+YIvbyifeW2+7oAvbweMb3sqGQuAqz9wqCXN3QQ3vSNXt4w6OXNCOiFdpBc6eUNxkntTUfohVPzWw7Sy1tC9PLfmF54Gue/AvTytuX0ArrfdoRe3tS+ctt9R4Be3omYXnZSMhcB1n5h0Mu7Ogjv+UYv7xr08l4E9EI7SK708i7jpPaeI/TCqfl9B+nlfSF6+SCmF57G+UCAXj60nF5A94eO0Mt72lduux8J0MtHEdPLzkrmIsDaLwx6+VgH4RPf6OVjg14+iYBeaAfJlV4+ZpzUPnGEXjg1f+ogvXwqRC//i+mFp3H+J0Avn1lOL6D7M0fo5RPtK7fdzwXo5fOI6WUXJXMRYO0XBr18oYPwpW/08oVBL19GQC+0g+RKL18wTmpfOkIvnJq/cpBevhKil69jeuFpnK8F6OUby+kFdH/jCL18qX3ltvutAL18q+nFJBfu9uvM2GYl2s53oZPfh+kHuMiG6acw/RymX8L0a5h+C9PvYfojTMvC9KcWnRemRJiSYcoPU0GYCsNUFKYmYWoapmZhKg5T8zC1CFPLMLUKU+swtQlT28TyIGEcv9MXdjz+3jj+wTj+0Tj+yTj+2Tj+xTj+1Tj+zTj+3Tj+wzheZhz/aRzDP/Q4zzhOGMdJ4zjfOC4wjguN4yLjuIlx3NQ4bmYcFxvHzY3jFsZxS+O4lXHc2jhuYxy3TciDHB0zuc4d3zHO79fly4CcGb9c4fX7PB5b0BY/MMbveuvjlzEd/Ji75lKtOfiJMX432By/8hV+Bj/npjlFNAe/MMbvRlvjV7qSn8Gvf19zytAc/MYYv5ssjF9l/Sp+Br//Pc3VWTQHfzDG72bb4led1c9g2ZprrvoLzcGfjPG7xab4Vf2lnwGA0hrYKm1Ec5CX4IvfrbbEr6pRP4PE6mte9P9oDpKM8bvNhvhV/b9+Bvmrpzm1GpqDAsb43f5Pxy+1Wn4Ghf+/5orV1BwUMcbvjn8yfuWr7WfQpFHN5fVroDloyhi/O/+p+FWtkZ9Bs7/WXL2GmoNixvjd9Q/Er6Z+jf0MmmfXnPobmoMWjPG7O+r4pf6Wn0HLVTUHf1Nz0IoxfvdEGb/Ff9vPoPXKmsty0By0YYzfvRHFr7Q+Jz+Dtgm+e4n0nl3OP2IRUfxSuW0B43224AbG+N3vSPwY7xMFNzHG7wFH4sd4nyO4hTF+DzoSP8bv6cFtjPF7yJH4MX7PDO5gjN/DjsSP8XtScBdj/B5xJH6MnB/cwxi/Rx2JHyOnBvcxxu8xR+LHyFnBA4zxe9yR+DFyQvAQY/yecCR+jNe54BHG+D3pSPwY5+ngMcb4PeVI/BjnmeAJxvg97Uj8GMdJwNhnAs74wXo2WHjdPUzLwtRD52h/iVq+zm1vnR+g88N0fozOT9L5GTo/T+eX6PwqnV+v81t1frfOH9T54zp/Vucv6fx1nb+j8490/rnOv9X5zzpfpvN8va6xmc5b67yjzrvrvI/OB+l8hM7LdT5K52mdT9T5dJ3P1fkCnW+m88U630bnO+l8d50v1flBOj9C58fp/BSdn6XzC3R+mc6v0fmNOr9d5/jDwvgTffhjN/jaeHwBK77KDF8Kgo/X4oMqJbof4HpHXAeJ6yNx3SSup8R1lrj+Etdl4npNXMeJ6ztx3SeuB8V1orh+FNeVrlhvqnOlc1y3iutZcZ0rrn/FdbG4XhbX0eL6Wlx3i+txcZ0urt/Fdb3tEmqlLU/naZ2nctuCdoz3t5Nq1bWpdOPyWc52WZmg7XJB2xWCtisFbVcJ2q4WtF1TRGy212O0g8476ryTzjvrvIvOu4b5kxoa4BkIc8w0VQ1PDuaRsmZ6P0HKivV+kpQ11/v5pKyF3i8gZS31fiEpa6X3i4xzsKV1nspxE3jgKkWfJWlC9NC4YI5xaUbKMC7FpAy1NydlGJcWpAzra0nKsD6MJ9jvRs7jRtsSY0J9xvP5WTQVZNFUmEVTURZN1Gcow1ikdZ7KcSskMeKySfs7bnnGcZrstyAxac7rS1CoGtqbyWYmZq0FYtZSrX7MWpOYtRKIWRtem5mYtROIWRu1+jFrR2LWViBm7XltZmLWUSBm7dXqx6wjiVkHgZh14rWZErCZ8bOzgJ/deG1WQ9t2Uavftt1I23YViFl3XpuZmPVgtgk2epKYYPzQ92JyvgeJV0/meOWROtEuHveUqzejv9f/o79XFj96Raif+hf7Gvsa+/rP+trjH/YV6i1hrTeoamrUC1tj184SwRiAzd68NjPzfB/iP2rFeorJedoX+zBryyN1ol08pv7Fvsa+xr7Gvsa+xr7Gvsa+xr7Gvsa+xr7Gvsa+uuIr/T/QBPGF+bt9xhdl+KKyxAW3phb5UmiRL0mLfCmyyJd8i3xpYpEvBRb5kvcP+0LXxShShucTpAznR7p+pq/ep+tn+ul9un6mP9GJZQP0Pl0/M1Dv0zVGg8g+5oP1Pl1jNETv0zVGQ/U+XWM0TO/T9UTD9X4rUjZC77chZSP1fltShovV25MyXETZgZSV6v1OpAwXRHYmZbiQsQspwwWIXUkZLhzsTspwwV8vUoZtSNsc27APKcM27EvKsA37kTJsw/6kDNtwACnDNhxIyrANaZtiGw4mZdiGQ0gZtuFQUoZrkIaRMmzX4aQM23UEKcO1OCNJGbZ1ipRhWwekDNeklJIybP8yUobtX07KcG1GBSnDPlFJyrBPYJtCW8zOaziPf0/HKNZDx2hVlvoqs/iF+3ROwr9J6zyV25aZk2g9aXKMdTUjPpRb4EuBRb40sciXfIt8KbLIl6RFvhRa5EtTi3xJZPGljNeXzCUErw+w4TxcRvxAn0qJHwFzTDI2svgRED+w/hTxYySvH5kqRmTxYyTxA+sfQfwYzutHJvzDsvgxnPiB9Q8jfgzl9SPT9YZk8WMo8QPrH0L8GMzrR6YLDsriB2VsrH8Q8WMgrx8ZJBmQxY+BxA+sfwDxoz+vH5lq+2Xxoz/xA+vvR/zoy+tHZi6j36XgGOcLrCtJPjNWQxMwMf0eRhkVeZ/yLX4voGyMD/dQrq7R+5TJR+l9yvOj9T79LoDzLf0e0dh3EPpdBfmrmpThda2GlCEDjCJlyEvoU5FqeC4WtrTOU7ltpVAXrsvFrbHv33R9Fv4d/a6Ia7XoWl+Jtas9DP/wuCfxD8vomnLm9bwZX5obvuBxD+F6Wxr1toyo3tZGva0jqretUW/biOrtbNTb2aj3r+67S/iiDF9UI750s8iXrhb50t4iX1pZ5Etri3xpZpEvRRb5km+RL10s8qWTRb50tsiXdhb50sIiX1pa5EtTi3wptMiXpEW+dLDIF+nvM2viSxuLfGlrkS/FFvnS3CJfmljkS4FFvuT9w7781XoKPE//rxbvsdA1DL0MTVBWovfpGga8P0bfk4L30ei6BrxPSNc14D241qQM723StQ54/46udcB7se1IGd77o+sf8N4xXeuA9w3pWgeMB40fXq96kjLkdbquAftdCSnD6y69f4jfO+h9Rhw/dK0D8gO9R4ltQ9c6YNvQ+5vYNnStA7YNvTeKbUPXOmDbYHxA103k/UX497TvYD30//mHZKlvcBa/cJ+OFfybtM5TuW2ZsULrSZNjrIv+P/9AC3wpsMiXJhb50twiX4ot8qWtRb60sciXjhb50sEiX5IW+VJokS9NLfKlpUW+tLDIl3YW+dLZIl86WeRLF4t8ybfIlyKLfGlmkS+tLfKllUW+tLfIl64W+dLNIl8SEfmC35/R7mDDF6h3AG+9maVZ/Um9+L1+ANGP9dPnavox+5Fn+FFC6qX3SPpl8aUPc1uAjd5q1Zj0ITHBezm9iR+9mf2AmHQkfqTJMb3nhNdibDO4HlYmGvxiXjuZ8Yv2yf3VqjyQJJ8Zn2jwa1SiIYa4Lo2+S7mnUQb2Jd4f1tOIKx5jXeCfuT6N+kefgzLfeUbvNdK/TRp1FCmR9knR9oGtRK3aPvTeHH4W/o6udS0hn8FxlySfmUra9dBkw98x61lpzXBCZWdP5nW5mWWsqFMR+zSu2eYIOm/2MT6HMWX0c5W5CusvIWU9s/jZm/iZ7f2C3O9QNcdcnso+bnpk8bl7Fn10/mdeK9/otXgoqXcYb72l9BlSGidl+IIbfV6A+fmJMvqc6ur4MpL4MoLXl8y7DlO8NlMCz76s8gwOxg99LybnAxKvUuZ45amVn8FJk2PqX+wrv6/gy1DDT/rc9lAL/DOfewL/uhrxg2v67nIMWZaNIc3vn5Qhj0w2+LU3YchBRlzp/yXTWDPzQUBZCe2a16ZmRAvlKubvcCt9j0W7NtXLHPtM96XMMyhL3LF+afbqlcWPEuIH1k/fS8z8bE1maHfP4gdd84H1dyd+MPNL0FSt2fuRKb9wM8Oa8gt9BpSZNQL6Lo/V8YU+F8t9jaDvC1kdX+izwuUCvpStgS/0+elKAV8q1sCXSuJLtYAvVWvgC9YP13YcfwNIGY6D3qQM+yNdA4b9oi8pw/bpQ8rMd4EUE3/x+xvMOfi8JL2/M9oog/iNMTSlctsy1yWsB+3i8RjiHz67OVrOl2pqn967GEPqXItZfyGxxaUDbI5l9hNsrKttZe4N6n2sJ0nO30LuNd2m96E/ra3P1xA7j2Y5j1tj4yhN2mQ8r9bM/Y8JxH46Sx1QPpG33oDWm6cT1oHlSbL/CA5q8jnYML7oM4yfcVk+R/fXNv6mmJwfJ6x5PPEjTY6xLugnd5I+9Sj5rrMOsz9UL43LaBIXPL8W+dy6ZB8/W0LiNo7Xz2qBfp/RPoHEHGOL9dC+9xxpjxfIGB5rxA3Ov5PlPG6NjXHa7ybxas2M8cnEfprUQeudwltvQOvFMY51YHmS7L9NxviUht0V8UWfYYxPzPI5uj/W+Jticn6isOZJxI80Oca6oJ+8RPrUO2SMp5n9oXppXNYlccHz9L7BBLKPny0hcWOeG6sF+n1G+2QSc7SL9dC+9ylpj8/IGB5vxA3O/5rlPG6NjXHa76byas2M8WnEfprUQeudzltvQOvFMY51YHmS7P9Cxvj0ht0V8UWfYYxPyfI5uj/e+Jticn6KsOapxI80Oca6oJ98SfrUr2SMM18fA6qXxmUCiQuep/enJpN9/GwJiRvz3Fgt0O8z2qeRmGNssR7a95LkXm0BebZkkhE3ON8+y3ncGhvjtN/N4NWaGeMzif00qYPWO4u33oDWi2Mc68DyJNlvhwsKyOdgw/iizzDGp2f5HN2fZPxNMTk/XVjzDOJHmhxjXdBPmpA+1Z6sNeD+7kD10rhMJnHB8/Te7zSyj58tIXFjnhurBfp9RvtMEnOMLdZD+14P0h69yBieasQNzo/Ich63xsY47XezebVmxvgcYj9N6qD1zuWtN6D14hjHOrA8SfaHkzE+t2F3RXzRZxjjs7J8ju5PNf6mmJyfJax5NvEjTY6xLugnfUifGkHGOPd3B6qXxmUaiQue70s+N5Ps42dLSNyY58ZqgX6f0T6HxBxji/XQvldF2qOGjOEZRtzg/OQs53FrbIzTfjePV2tmjK9H7KdJHbTe+bz1BrReHONYB5Ynyf4kMsbnN+yuiC/6DGN8bpbP0f0Zxt8Uk/NzhTXPI36kyTHWBf1kDOlTk8kY5/7uQPXSuMwkccHzfcjn5pB9/GwJiRvz3Fgt0O8z2tcjMcfYYj20780h7TGPjOHZRtzgfG2W87g1NsZpv1ufV2tmjG9A7KdJHbTeBbz1BrReHONYB5Ynyf5CMsYXNOyuiC/6DGN8fpbP0f3Zxt8Uk/PzhTWvT/xIk2OsC/rJ+qRP1ZIxzv3dgeqlcZlD4oLnye2QFX2ffraExI15bqwW6PcZ7RuQmGNssR7a97Yl7bE9GcPzjLjB+aVZzuPW2Bin/W5DXq2ZMb4RsZ8mddB6N+atN6D14hjHOrA8Sfb3IWN844bdFfFFn2GML8jyObo/z/ibYnJ+gbDmDYkfaXKMdUE/2Yn0qaVkjHN/d6B6aVzWI3HB8/QdPd2Mz0N/xvFA1x5wj0t6XUC7eEznayyj338En6HIxJE+u5DteRAsG0R8wueIXFxrae7j+lK6Ro3ep832DEd/43Ogj/l5pDKBNYGZ9sb1dfkkNlhPkpw/jYzlM8j8j5ppf7g8y3ncGrs+0PWPzGv9MtcH+vxBmtRB6+Ve10frxesD1oHlSbJ/Gbk+0HXaGF/0Gfrd8Cyfo/u9jb+h67qHC2umv6uRJsdYF/STs0mfupzMayXM/lC9NC5dSVzwPH1mSHK80frpu+2HGj7SZwfp/Mn8GyQBfdYK7eLxcOIflpUQ/1AHnUvocwGtBXxtZfiKx/Rd1xL1Fhj1FkRUb5FRb1FE9TY16m0aUb3FRr3FEdUbfb8KqsBmO2ab0E5t1MpbY9de+j7ptqy+pIImquH9cVvWLZm545K6XfOIT+gnvrumGfGLfidPkr/JV6tqK8xS1iRLWTO16kZ/66MF2W9N/q6l4SfEGN/NQd9Tie/4ou+pRB30nZSoBz9fpFZtI9aLD24Jw3ZZqrK8vK6qtC4oCxamSmtqqytS5RW1ldVBdVBRXbG4tLqsrK66vLqqpramKlUTlJfVBfUVNWX12niC0c9OCT7oo5rzmOPZJcEXP+yo2CHah7aXQcfQeUedw9Yt0dCxsR37qeXnu5HPdU8st7dKhxKIRWfGNqP+9kg0DPRsE0GhgBZl1GPGr6USHqQSjdMjwW+3J+MAkNLdM8HeRitNKtwTaVfGmPZK8JLR6k5QJY1MUCXkc72zfC6hP9dbfy7zP/505AvEnLMf9/2HYt6vkZj3I5/r30jM+5OYD8jyuc76/ACdg18D9UmJuaVPljkr1/b5LJ93HuDWDf1noIDuz5l145Zk9nMQ4/hhbOtAKn7mXJbKbQtKGdtiMPNcBlrBZomKEEz5bKXoN1a0OSTUMzRMw8I0PEwjwjQyTPCNKAhTaZjKwlQeporE8v8pqQpTdZhqEsvfdDY6TGPCtFaY1g7TOhD3MI0N07phGpdY/na0CWGaGKZJYZocpimJ5W/Xmham6WGaEaaZYZoVptlhmhOmuWGaF6b1wjQ/TOuHaYMwLQjThmHaKEwbh2mTMG0aps3CtHmYtgjTwjDVhmlRmBaHqS5M9WHaMkxbhWnrxMrfehNGW9Jv41xtIAD8Keo75nBXr4hoU8b5llpfAasv5Sl6V0CR/qayxFKplX/pJJ/Vl+V3bfCOR3jXZuxuS7baYOslO9TtutK9G/MKkJclWvR3MOjvQ2CE80lZgijCMvybIpKLfQVLqlW7MhXGVc+QhMwlhTUewfJ7O7htow+2TTR0PZzaYYOG/DNLzPLIfkJ/JtHIZ/L+ws5fDUWxzoDiQPiPRCwEwLyzmGSum3aQv3str6uHLRVsw2ALuWBboY7LzUKcmrdbyVb42YWl5ZV1FanKuuqa6rqaqvqKqtSihfX1i6tS5YtqU7W15ZWpsqCsvraqNFVbWhNWW1NXsSjI+BUV+2zH2E7U3+0T8U05lsaBQHLb3YGx00vp3iHB3kZZfeWY6HZI8NvdkXlgQjjBJqJSFPQy1EF62Ukf7Owbvexk0MvOEdDLUEZ62YlxUtvZEXrh1LyLg/SyixC97BrTC0/j7CpAL0sspxfQvcQRetlZ+8ptdzcBetktYnoZ5iC94ILKPXyjl90NetkjAnoZxkgvuzNOans4Qi+cmvd0kF72FKKXvWJ64WmcvQToZW/L6QV07+0IveyhfeW2u48AvewTMb0Md5BeluqDfX2jl6UGvewbAb0MZ6SXpYyT2r6O0Aun5v0cpJf9hOhl/5heeBpnfwF6OcByegHdBzhCL/tqX7ntHihALwdGTC8jHKSXg/TBwb7Ry0EGvRwcAb2MYKSXgxgntYMdoRdOzYc4SC+HCNHLoTG98DTOoQL0cpjl9AK6D3OEXg7WvnLbPVyAXg6PmF5GOkgvR+iDI32jlyMMejkyAnoZyUgvRzBOakc6Qi+cmo9ykF6OEqKXo2N64WmcowXo5RjL6QV0H+MIvRypfeW2e6wAvRwbMb2kHKSX4/TB8b7Ry3EGvRwfAb2kGOnlOMZJ7XhH6IVT8wkO0ssJQvRyYkwvPI1zogC9nGQ5vYDukxyhl+O1r9x2Txagl5MjppfAQXo5RR+c6hu9gHBKLxAAaXqhHSRXejklwTf4Tk24QS+cmk9LuEcvpyV4J0ncTk/E9MLSOBBIbrtnMHZ6Kd1nJNjbSIReTtW+cts9k3lgQjjBZpT0Uip0EWDtFwa9nKUPzk54Ri9nGfRydgT0UspIL2cxTmpnO0IvnJrPcZBezhGil3NjeuFpnHMF6OU8y+kFdJ/nCL2crX3ltnu+AL2cHzG9lDlILxfogwt9o5cLDHq5MAJ6KWOklwsYJ7ULHaEXTs0XOUgvFwnRy8UxvfA0zsUC9HKJ5fQCui9xhF4u1L5y271UgF4ujZheyh2kl8v0weW+0ctlBr1cHgG9lDPSy2WMk9rljtALp+YrHKSXK4To5cqYXnga50oBernKcnoB3Vc5Qi+Xa1+57V4tQC9XR0wvFQ7SyzX64Frf6OUag16ujYBeKhjp5RrGSe1aR+iFU/O/HKSXfwnRy3UxvfA0znUC9HK95fQCuq93hF6u1b5y271BgF5uiJheKh2klxv1wU2+0cuNBr3cFAG9VDLSy42Mk9pNjtALp+abHaSXm4Xo5ZaYXnga5xYBernVcnoB3bc6Qi83aV+57d4mQC+3RUwvVQ7Sy+364A7f6OV2g17uiIBeqhjp5XbGSe0OR+iFU/OdDtLLnUL0cldMLzyNc5cAvdxtOb2A7rsdoZc7tK/cdu8RoJd7IqaXagfp5V59cJ9v9HKvQS/3RUAv1Yz0ci/jpHafI/TCqfl+B+nlfiF6eSCmF57GeUCAXh60nF5A94OO0Mt92lduuw8J0MtDEdNLjYP08rA+eMQ3ennYoJdHIqCXGkZ6eZhxUnvEEXrh1Pyog/TyqBC9PBbTC0/jPCZAL49bTi+g+3FH6OUR7Su33ScE6OWJiOlllIP08qQ+eMo3ennSoJenIqCXUYz08iTjpPaUI/TCqflpB+nlaSF6eSamF57GeUaAXp61nF5A97OO0MtT2lduu88J0MtzEdPLaAfp5Xl98IJv9PK8QS8vREAvoxnp5XnGSe0FR+iFU/O/HaSXfwvRy4sxvfA0zosC9PKS5fQCul9yhF5e0L5y231ZgF5ejphexjhIL6/og1d9o5dXDHp5NQJ6GcNIL68wTmqvOkIvnJr/4yC9/EeIXl6L6YWncV4ToJfXLacX0P26I/TyqvaV2+4bAvTyRsT0spaD9PKmPnjLN3p506CXtyKgl7UY6eVNxkntLUfohVPzfx2kl/8K0cvbMb3wNM7bAvTyjuX0ArrfcYRe3tK+ctt9V4Be3o2YXtZ2kF7e0wfv+0Yv7xn08n4E9LI2I728xzipve8IvXBq/sBBevlAiF4+jOmFp3E+FKCXjyynF9D9kSP08r72ldvuxwL08nHE9LKOg/TyiT741Dd6+cSgl08joJd1GOnlE8ZJ7VNH6IVT8/8cpJf/CdHLZzG98DTOZwL08rnl9AK6P3eEXj7VvnLb/UKAXr6ImF7SDtLLl/rgK9/o5UuDXr6KgF7SjPTyJeOk9pUj9MKp+WsH6eVrIXr5JqYXnsb5RoBevrWcXkD3t47Qy1faV2673wnQy3cR08tYB+nle33wg2/08r1BLz9EQC9jGenle8ZJ7QdH6IVT848O0suPQvTyU0wvPI3zkwC9/Gw5vYDunx2hlx+0r9x2fxGgl18ippd1HaSXX/XBb77Ry68GvfwWAb2sy0gvvzJOar85Qi+cmn93kF5+F6KXP2J64WmcPwToZZnl9AK6lzlCL79pX7nt/ilAL39GTC/jHKQXnKHykp7RCwin9AIBkKaXcYz0As7lagsHX17SDXrh1JxIukcviSTvJLminydjemFpHAgkt918xk4vpTs/yd5GIvSSp33ltlvAPDBhEILNKOllvIP0Uqj7XZFv9FJo0EtRBPQynpFeChkntSJH6IVTcxMH6aWJEL00jemFp3GaCtBLM8vpBXQ3c4ReirSv3HaLBeilOGJ6meAgvTTX/a6Fb/TS3KCXFhHQywRGemnOOKm1cIReODW3dJBeWgrRS6uYXngap5UAvbS2nF5Ad2tH6KWF9pXbbhsBemkTMb1MdJBe2up+1843emlr0Eu7COhlIiO9tGWc1No5Qi+cmts7SC/theilQ0wvPI3TQYBeOlpOL6C7oyP00k77ym23kwC9dIqYXiY5SC+ddb/r4hu9dDbopUsE9DKJkV46M05qXRyhF07NXR2kl65C9NItpheexukmQC/dLacX0N3dEXrpon3ltttDgF56REwvkx2kl5663/XyjV56GvTSKwJ6mcxILz0ZJ7VejtALp+YSB+mlRIheesf0wtM4vQXopY/l9AK6+zhCL720r9x2+wrQS9+I6WWKg/TST/e7/r7RSz+DXvpHQC9TGOmlH+Ok1t8ReuHUPMBBehkgRC8DY3rhaZyBAvQyyHJ6Ad2DHKGX/tpXbruDBehlcMT0MtVBehmi+91Q3+hliEEvQyOgl6mM9DKEcVIb6gi9cGoe5iC9DBOil+ExvfA0znABehlhOb2A7hGO0MtQ7Su33ZEC9DIyYnqZ5iC9pHS/C3yjl5RBL0EE9DKNkV5SjJNa4Ai9cGoudZBeSoXopSymF57GKROgl3LL6QV0lztCL4H2ldtuhQC9VERML9MdpJdK3e+qfKOXSoNeqiKgl+mM9FLJOKlVOUIvnJqrHaSXaiF6qYnphadxagToZZTl9AK6RzlCL1XaV267owXoZXTE9DLDQXoZo/vdWr7RyxiDXtaKgF5mMNLLGMZJbS1H6IVT89oO0svaQvSyTkwvPI2zjgC9pC2nl0yndIRe1tK+ctsdK0AvYyOml5kO0su6ut+N841e1jXoZVwE9DKTkV7WZZzUxjlCL5yaxztIL+OF6GVCTC88jTNBgF4mWk4voHuiI/QyTvvKbXeSAL1MipheZjlIL5N1v5viG71MNuhlSgT0MouRXiYzTmpTHKEXTs1THaSXqUL0Mi2mF57GmSZAL9MtpxfQPd0RepmifeW2O0OAXmZETC+zHaSXmbrfzfKNXmYa9DIrAnqZzUgvMxkntVmO0Aun5tkO0stsIXqZE9MLT+PMEaCXuZbTC+ie6wi9zNK+ctudJ0Av8yKmlzkO0st6ut/N941e1jPoZX4E9DKHkV7WY5zU5jtCL5ya13eQXtYXopcNYnrhaZwNBOhlgeX0AroXOEIv87Wv3HY3FKCXDSOml7kO0stGut9t7Bu9bGTQy8YR0MtcRnrZiHFS29gReuHUvImD9LKJEL1sGtMLT+NsKkAvm1lOL6B7M0foZWPtK7fdzQXoZfOI6WWeg/Syhe53C32jly0MelkYAb3MY6SXLRgntYWO0Aun5loH6aVWiF4WxfTC0ziLBOhlseX0AroXO0IvC7Wv3HbrBOilLmJ6Wc9BeqnX/W5L3+il3qCXLSOgl/UY6aWecVLb0hF64dS8lYP0spUQvWwd0wtP42wtQC/bWE4voHsbR+hlS+0rt91tBehl24jpZb6D9LKd7nfb+0Yv2xn0sn0E9DKfkV62Y5zUtneEXjg17+AgvewgRC87xvTC0zg7CtDLTpbTC+jeyRF62V77ym13ZwF62TlielnfQXrZRfe7XX2jl10Metk1AnpZn5FedmGc1HZ1hF44NS9xkF6WCNHLbjG98DTObgL0srvl9AK6d3eEXnbVvnLb3UOAXvaImF42cJBe9tT9bi/f6GVPg172ioBeNmCklz0ZJ7W9HKEXTs17O0gvewvRyz4xvfA0zj4C9LLUcnoB3UsdoZe9tK/cdvcVoJd9I6aXBQ7Sy3663+3vG73sZ9DL/hHQywJGetmPcVLb3xF64dR8gIP0coAQvRwY0wtP4xwoQC8HWU4voPsgR+hlf+0rt92DBejl4IjpZUMH6eUQ3e8O9Y1eDjHo5dAI6GVDRno5hHFSO9QReuHUfJiD9HKYEL0cHtMLT+McLkAvR1hOL6D7CEfo5VDtK7fdIwXo5ciI6WUjB+nlKN3vjvaNXo4y6OXoCOhlI0Z6OYpxUjvaEXrh1HyMg/RyjBC9HBvTC0/jHCtAL8dZTi+g+zhH6OVo7Su33eMF6OX4iOllYwfp5QTd7070jV5OMOjlxAjoZWNGejmBcVI70RF64dR8koP0cpIQvZwc0wtP45wsQC+nWE4voPsUR+jlRO0rt91TBejl1IjpZRMH6eU03e9O941eTjPo5fQI6GUTRno5jXFSO90ReuHUfIaD9HKGEL2cGdMLT+OcKUAvZ1lOL6D7LEfo5XTtK7fdswXo5eyI6WVTB+nlHN3vzvWNXs4x6OXcCOhlU0Z6OYdxUjvXEXrh1Hyeg/RynhC9nB/TC0/jnC9ALxdYTi+g+wJH6OVc7Su33QsF6OXCiOllMwfp5SLd7y72jV4uMujl4gjoZTNGermIcVK72BF64dR8iYP0cokQvVwa0wtP41wqQC+XWU4voPsyR+jlYu0rt93LBejl8ojpZXMH6eUK3e+u9I1erjDo5coI6GVzRnq5gnFSu9IReuHUfJWD9HKVEL1cHdMLT+NcLUAv11hOL6D7Gkfo5UrtK7fdawXo5dqI6WULB+nlX7rfXecbvfzLoJfrIqCXLRjp5V+Mk9p1jtALp+brHaSX64Xo5YaYXnga5wYBernRcnoB3Tc6Qi/XaV+57d4kQC83RUwvCx2kl5t1v7vFN3q52aCXWyKgl4WM9HIz46R2iyP0wqn5Vgfp5VYherktpheexrlNgF5ut5xeQPftjtDLLdpXbrt3CNDLHRHTS62D9HKn7nd3+UYvdxr0clcE9FLLSC93Mk5qdzlCL5ya73aQXu4Wopd7YnrhaZx7BOjlXsvpBXTf6wi93KV95bZ7nwC93BcxvSxykF7u1/3uAd/o5X6DXh6IgF4WMdLL/YyT2gOO0Aun5gcdpJcHhejloZheeBrnIQF6edhyegHdDztCLw9oX7ntPiJAL49ETC+LHaSXR3W/e8w3ennUoJfHIqCXxYz08ijjpPaYI/TCqflxB+nlcSF6eSKmF57GeUKAXp60nF5A95OO0Mtj2lduu08J0MtTEdNLnYP08rTud8/4Ri9PG/TyTAT0UsdIL08zTmrPOEIvnJqfdZBenhWil+dieuFpnOcE6OV5y+kFdD/vCL08o33ltvuCAL28EDG91DtIL//W/e5F3+jl3wa9vBgBvdQz0su/GSe1Fx2hF07NLzlILy8J0cvLMb3wNM7LAvTyiuX0ArpfcYReXtS+ctt9VYBeXo2YXrZ0kF7+o/vda77Ry38MenktAnrZkpFe/sM4qb3mCL1wan7dQXp5XYhe3ojphadx3hCglzctpxfQ/aYj9PKa9pXb7lsC9PJWxPSylYP08l/d7972jV7+a9DL2xHQy1aM9PJfxkntbUfohVPzOw7SyztC9PJuTC88jfOuAL28Zzm9gO73HKGXt7Wv3HbfF6CX9yOml60dpJcPdL/70Dd6+cCglw8joJetGenlA8ZJ7UNH6IVT80cO0stHQvTycUwvPI3zsQC9fGI5vYDuTxyhlw+1r9x2PxWgl081vcAxDMD2YeGyMO+gc6xv28TyC9fOOt9D5/vq/GCdH6nz43V+qs7P1vmFOr9c59fq/Cad36Hz+3T+iM6f0vkLOn9V52/p/H2df6rzr3T+g85/03mevgAX6byFztvpvIvOe+m8v86H6jzQeZXO19L5OJ1P0fksnc/X+cY6X6jzLXW+vc531fleOt9f54fq/Gidn6hz/Lln/OFE/AkifJk/vhYXXzCHr2rBh57x8SFciItLWvA/h/A2CwJLie4HbXUc2+i8tc5b6bylzlvovLnOi3XeTOdNdd5E50U6L9R5gc7zdZ7UeQLbUedK53/mLc+X6fwPnf+u8990/qvOf9H5zzr/Sec/6vwHnX+v8+90/j8yBynFP8/9j3ke/is/c7X9GcNcVFddubC2vL5eIo59Qhv9BXR/lS977UnltgWDQhuBgO6v82XgPcns5+d818iAsa2Dry3vN13DebR7gr/ffGe57l6h5kECur93ZLx8wTheGNs6kIpfgrn/5DG2xZeO3CBJMGr+yhHNSUbNXzuiOZ9R8zeOaC5g1PytI5oLGTV/54jmIkbN3zuiuQmj5h8c0dyNUfOPjmj+jPEewk+OaO7C2M4/e6j5Fw81/+qI5s8Zx/NvHl6rfndE8xeM7fyHI5pLGdt5mYdz2J8ealaO3Bvi1JznoeaEh5qTHmrO91BzgYeaCz3UXOSh5iYeam7qoeZmHmou9lBzcw81t/BQc0sPNbfyUHNrDzW38VBzWw81t/NQc3sPNXfwUHNHDzV38lBzZw81d/FQc1cPNXfzUHN3DzX38FBzTw819/JQc4mHmnt7qLmPh5r7eqi5n4ea+3uoeYCHmgd6qHmQh5oHe6h5iIeah3qoeZiHmod7qHmEh5pHeqg55aHmwEPNpR5qLvNQc7mHmis81FzpoeYqDzVXe6i5xkPNozzUPNpDzWM81LyWh5rX9lDzOh5qTnuoeayHmtf1UPM4DzWP91DzBA81T/RQ8yQPNU/2UPMUDzVP9VDzNA81T/dQ8wwPNc/0UPMsDzXP9lDzHA81z/VQ8zwPNa/noeb5Hmpe30PNG3ioeYGHmjf0UPNGHmre2EPNm3ioeVMPNW/moebNPdS8hYeaF3qoudZDzYs81LzYQ811Hmqu91Dzlh5q3spDzVt7qHkbDzVv66Hm7TzUvL2HmnfwUPOOHmreyUPNO3uoeRcPNe/qoeYlHmrezUPNu3uoeQ8PNe/poea9PNS8t4ea9/FQ81IPNe/roeb9PNS8v4eaD/BQ84Eeaj7IQ80He6j5EA81H+qh5sM81Hy4h5qP8FDzkR5qPspDzUd7qPkYDzUf66Hm4zzUfLyHmk/wUPOJHmo+yUPNJ3uo+RRHNA9O8Gk+1cN2Ps1Dzad7qPkMDzWf6aHmszzUfLYjmpsyaj7HEc3NGDWf64jmYkbN5zmiuTmj5vMd0dyCUfMFjmhuyaj5Qkc0t2LUfJEjmlszar7YEc1tGDVf4ojmtoyaL3VEcztGzZc5ork9o+bLHdHcgVHzFY5o7sio+UpHNHdi1HwVo+bO2k6e1pwMU2heFYSpMExFYWoSJvheCN+T4HsDcDRwJXAWcAdch+G6BPM0zFswjqFfQzuD7s4krvfo/Muwoq/C9HWYvgnTt2H6Lkzfh+mHMP0Ypp/C9HOYfgnTr2H6LUy/h+mPMC0L05/a2bwwJcKUDFN+mArCVBimojA1CVPTMDULU3GYmoepRZhahqlVmFqHqU2Y2oapXZjah6lDmDqGqVOYOoepS5i6hqlbmLqHqUeYeoapV5hKwtQ7TH3C1DdM/cLUP0wDwgS/QQ+/yQ6/UQ6/2Q2/YQ2/6Qy/cQy/+Qu/gQu/CQu/kQq/GQq/oQm/KQm/sQi/OQi/wQe/SQe/0Qa/WQa/4QW/aQW/8QS/eZT5DaAwwW/EwG+mwG+IwG9qwG9MwG8uwG8QwDv54R318M52eIc5vNMb3nEN73yGdyDDO4HhHbnwzlh4hyq8UxTesQnvnIR3MMI7CeEdffDOOniHG7zTDN7xBe+8gndAwTuR4B1B8M4ceIcMvFMF3jEC79yAd1DAOxngHQXwzD48ww7PdMMzzvDMLzwDC8+EwjOS8MwgPEMHz5TBM1bwzBE8gwPPpMAzGvDMAqzhhzXtsMYb1jzDGmBYEwtrRGHNJKwhhDV1sMYM1lzBGiRYkwNrVGDNBqxhgP/Th//jhv/zhf8Dhf8ThP8jg/8zgv9Dgf9TgHvscM8Z7sHCPUm4Rwf3rOAeDtzTgO/48J0XvgPCdyL4jgDMDAwJTAWMAddcuAbBnAxzFIzZBBkHPXXeXecLlyyp236nJSVLdixZuHhxyR5bL9mqZMfd63ap327HPeD8T4nV//z/AVzD4X9eswYA",
185
185
  "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
186
186
  },
187
187
  {
@@ -291,7 +291,9 @@
291
291
  {
292
292
  "name": "start_side_effect_counter",
293
293
  "type": {
294
- "kind": "field"
294
+ "kind": "integer",
295
+ "sign": "unsigned",
296
+ "width": 32
295
297
  }
296
298
  }
297
299
  ]
@@ -397,7 +399,9 @@
397
399
  {
398
400
  "name": "counter",
399
401
  "type": {
400
- "kind": "field"
402
+ "kind": "integer",
403
+ "sign": "unsigned",
404
+ "width": 32
401
405
  }
402
406
  }
403
407
  ]
@@ -428,7 +432,9 @@
428
432
  {
429
433
  "name": "counter",
430
434
  "type": {
431
- "kind": "field"
435
+ "kind": "integer",
436
+ "sign": "unsigned",
437
+ "width": 32
432
438
  }
433
439
  }
434
440
  ]
@@ -530,7 +536,7 @@
530
536
  ]
531
537
  }
532
538
  ],
533
- "bytecode": "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",
539
+ "bytecode": "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",
534
540
  "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
535
541
  },
536
542
  {
@@ -647,7 +653,9 @@
647
653
  {
648
654
  "name": "start_side_effect_counter",
649
655
  "type": {
650
- "kind": "field"
656
+ "kind": "integer",
657
+ "sign": "unsigned",
658
+ "width": 32
651
659
  }
652
660
  }
653
661
  ]
@@ -753,7 +761,9 @@
753
761
  {
754
762
  "name": "counter",
755
763
  "type": {
756
- "kind": "field"
764
+ "kind": "integer",
765
+ "sign": "unsigned",
766
+ "width": 32
757
767
  }
758
768
  }
759
769
  ]
@@ -784,7 +794,9 @@
784
794
  {
785
795
  "name": "counter",
786
796
  "type": {
787
- "kind": "field"
797
+ "kind": "integer",
798
+ "sign": "unsigned",
799
+ "width": 32
788
800
  }
789
801
  }
790
802
  ]
@@ -886,23 +898,23 @@
886
898
  ]
887
899
  }
888
900
  ],
889
- "bytecode": "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",
901
+ "bytecode": "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",
890
902
  "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
891
903
  }
892
904
  ],
893
905
  "events": [],
894
906
  "debug": {
895
907
  "debugSymbols": [
896
- "eJzt3d3O29h1h/F78fGg4PrenFspehC0KRAgmBRNzoK59yjoSHYw26ZdLYnPS/Iog0Ay1160/lyb1k/8+6c//+U///C3P/3ll79++vnvn5Z/k/j087///dNf/+cPv/zz//jr3/7wv3/79PPy06c//vJft//99adP//2nP//x08+62K8//e51mlb222tv/z3q8fr0ycul6v7i5Ys/un79j5/+WUpySilOKYNTyoopRRdOKcIpRTmlGKcU55TCSVvlpK1y0lY5aauctDVO2honbY2TtsZJW+OkrXHS1jhpa5y0NU7aGidtnZO2zklb56Stc9LWOWnrnLR1Tto6J22dk7bOSdvgpG1w0jY4aRuctA1O2gYnbYOTtsFJ2+CkbXDSNjlpm5y0TU7aJidtk5O2yUnb5KRtctI2OWmbnLQtTtoWJ22Lk7bFSdvipG1x0rY4aVuctC1O2hYnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbVdO2q6ctF05abty0nblpO3KSduVk7YrJ21XTtqunLSVhRO3snDyVhZO4MrCSVxZOJErCydzZeGEriyc1JWFE7uygHJXQLkroNwVUO4KKHcFlLskW0bCZSRdRuJlIF8mIGAmIGEmIGImIGMmIGQmIGUmIGYmIGcmIGgmIGkmIGomIGsmIGwmIG0mIG4mIG8mIHAmIHEmIHImIHMmIHQmIHUmIHYmIHcmIHgmIHkmIHomIHsmIHwmIH0mIH4mIH8mIIAmIIEmIIImIIMmIIQmIIUmIIYmIIcmIIgmIIkmIIomIIsmIIwmII0mII4mII8mIJAmIJEmIJImIJMmIJQmIJUmIJYmIJcmIJgmIJkmIJomIJsmIJwmIJ0mIJ4mIJ8mIKAmIKEmIKImIKMmIKQmIKUmIKYmIKcmIKgmIKkmIKomIKsmIKwmIK0mIK4mIK+mIK+mIK+mIK+mIK+mCyd3FeTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVDOTVDOTVDOTVDOTVbOHkroG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moO8moO8moO8moO8mi+c3HWQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQVwuQVwuQVwuQVwuQV4uFk7sB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moJ8moJ8moJ8moJ8mq5cHI3QV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV6tQF6tQF6tQF6tQF6tFk7uFsirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirDZBXGyCvNkBebYC82lg4uTtAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QVxsgrzZAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QVxsgrzZAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QVxsgrzZAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QV1tBXm0FebUV5NVWkFdbF07uriCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2PuvVXJZHLa7+XC1P5m5rLU/mbmstT+Zuay1P5m5rLU/mbmstT+Zuay1P5m5nLc96tdZanszd1lpAufusV2utBZS7z3q11lpAufusV2utBZS7z3q1zlqe9WqttYBy91mv1loLKHef9WqttYBy91mv1loLKHef9WqttYBy91mv1loLKHef9WqttYBy91mv1loLKHef9WqttYBy91mv1loLJ3dleRas9RbDSd5bMZzovRXDyd5bMZzwvRXDSd9bMZz4vRXDyd9bMZwAvhVDSuBn6VpvMaQEfhav9RZDSuBn+VpvMaQEfhaw9RZDSuBnCVtvMaQEfhax9RZDSuBnGVtvMaQEfhay9RZDSuBnKVtvMaQEfhaz9RZDSuBnOVtvMaQEfha09RZDSuBnSVtvMaQEfha19RZDSuBnWVtvMaQEfha29RZDSuBnaVtvMaQEfha39RZDSuBneVtvMaQEfha49RZDSuBniVtvMaQEfha59RZDSuBnmVtvMaQEfha69RZDSuBnqVtvMaQEfha79RZDSmAQd7sVQ0pgEHi7FUNKYBB5uxVDSmAQersVQ0pgEHu7FUNKYBB8uxVDSmAQfbsVQ0pgEH67FUNKYBB/uxVDSmAQgLsVQ0pgEIG7FUNKYBCCuxVDSmAQg7sVQ0pgEIS7FUNKYBCFuxVDSmAQhrsVQ0pgEIe7FUNKYBCIuxVDSmAQibsVA0pgIZk4IZk4IZk4IZk4WUAJLCQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTpyQTpyQTpyQTpyQTpwsogZVk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4oxk4oxk4oxk4oxk4mwBJbCRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyTTJyTTJyTTJyTTJwvoAR2kolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkokLkokLkokLkokLkomLBZTAQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxSTJxSTJxSTJxSTJxuYASOEkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmrkgmrkgmrkgmrkgmrhZQAhfJxBXJxBXJxBXJxBXJxBXJ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Pb5oGp97s8bsbuRyf2nE50c9r/roC3yjsltf4PuO3foC30bs1ZeWB5sfsS/wIX+3vsBn9t36Ah/Bd+sLfKLerS/wAXm3vlzz7rwv17w778s17877cs27077UNe/O+3LNu/O+XPPuvC/XvDvvyzXvzvtyzbvzvlzz7rwv17w778s17877cs27076Ma96d9+Wad+d9uebdeV+ueXfel2venfflmnfnfbnm3Xlfrnl33pdr3p335Zp3p31Zr3l33pdr3p335Zp353255t15X655d96Xa96d9+Wad+d9uebdeV+ueXfel2venfVFlmvenfflmnfnfbnm3Xlfrnl33pdr3p335Zp353255t15X655d96Xa96d9+Wad6d9oT8kfre+XPPuvC/XvDvvyzXvzvtyzbvzvlzz7rwv17w778s17877cs27875c8+60L/RnG+/Wl7POu6veX7rIrC9nnXe3+nLWeXerLyedd3O5l5yis76cdN7d7MtJ593Nvpx03s28/7lZNevLSefdzb6cdN7d6gv96aGv6kvJ8ttLK/6lL79/6RiPX6Nc9HMvRGZ/7nf8xqTQHx56yJ6fdE7ftecn3QPs2vOT7i927flJ9y679vyk+6Jde37SPdeuPT/pfm7Xnp90r7hnz+nPDD1kz6996Pt7fu1D39/zax/6/p5f+9D39/zah76/59c+9P09v/ah7+/5tQ99f8+vfejbe05/auvLel73no9l+bLn976cda+41Zez7ue2+nKoPVfd+1LyL325L/ZQm52txR5ql7G12EON91uLPdRcvbXYQw20W4s91CS5sdhjPWJza7GHmsu2FnuoYWtrsWeaoI712MqtxZ5pgjrWAya3FnumCepYj4LcWuyZJqhjPbRxa7FnmqCO9XjFrcWeaYI61oMQtxZ7pgnqWI8s3FrsmSaoYz1ccGuxZ5qgjvUYwK3FnmmCOtYD+7YWe6YJ6liP1tta7JkmqGM9BG9rsWeaoI71uLqtxZ5pgjrWg+W2FnumCepYj4DbWuyZJqhjPaxta7FnmqCO9Vi1rcWeaYI61gPQthZ7oglKj/Wosq3FnmiC0mM9VGxrsSeaoG5vOtNiTzRB6bEe1LW12BNNUHqsR2ptLfZME9SxHn61tdgzTVDHekzV1mLPNEEd64FSW4s90wR1rEc/bS32TBPUsR7StLXYM01Qx3qc0tZizzRBHevBR1uLPdMEdahHFK2+3l+8LPXlamd1xL3m5fNvw0g9GnOkaau1MUeazFobc6QprrUxR5r4WhtzpOnw6435bbWHevrQ9mqPNB/K4vpYbvpsuUeaEL9juUeaEb9juUeaEmXRZWO5R5r9vmO5R5rovmO5R5rT5Hb5ub9adLbDO9RDRb5juUeaqbaXe6hHachSY2O5x5qqNpd7rKlqc7nwqcr1/moJ33z19g8QK/3BCf0Lhk9W/QuGz1b9C4ZPV/0Lhs9X/QuGT1jtC6b/THz/guFTVv+C4XNW/4LPNmnRf7W9f8Fnm7Tov97ev+CzTVr0X3HvX/DZJi36r7n3L/hskxb9V93bF9zyOy6W939tNhf59oJl8UdJ9nhp3h/Woy2/tdJaUMdnoLWgjr+jrQV1TOutBXVM0z9UkD0e/eZjVlDHtNtaUMc0+kMFfb4V/8Wz8b4oqGNabC2oY5prLejtSf3tgqzlNx1aC3p7Um8V9Pak3iro7Um9VdDbk3qroLcn9VZBsKS2Fk/fWhAsqa3FpXcW1GLHWwuiJXWLwW4tiJbULZa5tSBaUreY4NaCaEndYmtbC6IldYtRbS2IltQt1rO1IFpSt5jJ1oJoSd1iBFsLoiX1HENZ3u8+u3y+r71+ftc0LDbfNf1Eb75r+rHbfNf0s7H1rq98i/nx2PlYPvfw8XVR+8qXgbfeNc+3rXfNQ2jrXfOk2HrX/OO89a75Z27rXfMPhtzhYnzxTyZT4+gPO+Tx+TNxO8v3A8xHksYDzEeMvgN85etfP3CAuOeG55gdYP73uPEA87/yHQf49dd/APkiwdw=",
897
- "eJzllt1qAkEMhd9lrkWSTDKZ+CrFC2ktFIqW6p3su9etO7OLDQ6tYCu9UuFLPJz8TA7hdfu42r9sN7uwOAQOi4dD2L2tNv2v3X71vg8LmIX15un42c3C88vrOiwIYjf7whGADCgBaaWjeXDkVGDu0w2weTAiGA40IopM8eUsyH3KTreTzbnkJWG4TrZ6sjFpLjEqqSEeTbWKj+Mf9NK+wNniwFqaoG7ehvR8v9LteukEVpuXmC9LVyqsKlU0eQ0jVXjCMat6WYkrS0IyEcw/8ATh75qSqJqieNmUSDagcZK1//p9R/DGjmQtrHGcOtKLoV8Uk8/FxBuLQVAbK5UvdwsZ1rkwhtZcqNXUuTlFAiW1yOTFok9X3Bf/P7iiWF5EFZ264rRVLlscgayyx/H7yYS6x8q/cFyL4xngvA/dW+hOXclxvMyAG3RMBWYZ2ZhP23zury2xcoMkHOUIlCB3qltBbmNylro8xtZXPa3UuXsLxlTqwJjOCx3n7hHWiHGvn0aMfx20gtwH9GJQmqNrA6fS72z5vLLHINeHVpBrhNQipckBYdwtu+4DSiYHaw==",
898
- "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",
899
- "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",
900
- "eJzVnd2uI8mVnd+lrxsGI/Zv6FUMXwj2GBhgoDEs3Ql690kZPKfa6KSyVjMzudZVFw4Y2TsqDvfOWszv499/+Y///J9//tu//+df/vrLn/7+y+O/1eOXP/33v//y1//z57/88wd//duf/+/ffvnT49df/u0v/2v77z9+/eV///t//Nsvf5oP+8f/+PWfCwa6YKILDF3g6IJAF+TPL/j1d68blfl86ajl36+29bx6XXr1vvTq68qrN/Db+QeuDvwq/4GrA7/3f+DqwJvkD1wdeEf9gasDb78/cPVL36t96Xu1L32v9qXv1XXpe3Vd+l5dl75X16Xv1XXpe3Vd+l5db71X5+MRz5fOx6zfXn2vFI/vUjy/X7y+SnnrjX1uKW91gXNLeatlnFrKeLzVYE6u5a12dHItbzWvk2t5q9WdXMtbjfHkWt5qoyfXwtN0x4On644HT9sdD6K+O4j67iDqu4Oo7w6ivjuI+u4g6ruDqO8Oor47iPruIOq7k6jvTqK+O4n67iTqu5Oo706ivjuJ+u4k6ruTqO9Oor5rRH3XiPquEfVdI+q7RtR3jajvGlHfNaK+a0R914j6rhP1XSfqu07Ud52o7zpR33WivutEfdeJ+q4T9V0n6rtB1HeDqO8GUd8Nor4bRH03iPpuEPXdIOq7QdR3g6jvJlHfTaK+m0R9N4n6bhL13STqu0nUd5Oo7yZR302ivosgD5fXQtR3EVDj8lqI+u57eAZYy5pftfSwnVrufE8f1PIePgHVMv37jLY/7pzRe7DFybXc97t7XMt99wzHtdx3z3Bcy333DP3or+tuf5w/asmvWu7rL8e13Ndfpn/XMsMfvz0j6MXPwu+7wTi38PewmesKH+Oxxlf/HyNip/Q7B8DJpd85L04uHYVXB0LZPFcALem5AmgczxXAO/b/rZgIAPJcgcLKE4EpnitQXHk+gKH8XIGe+UQe8n+uQM98Ig/MP1fAZ448fP5cAZ858iD3cwV85shD0c8V8JkjDxg/V8Bnjjys+1wBnzny4OtzBXzmyEOkzxXwmSMPZD5XwGeOPNz4XAGfOfKg4HMFfObIQ3fPFfCZIw+wPVfAZ448DPZcAZ858mDVcwV85shDSs8V8JkjD/w8V8Bnjjw881wBnznyIMpzBXzmyEMdzxXwmSMPSDxXwGeOPGzwXAGfOfLB/XMFfObIh+DPFfCZIx8oP1fAZ458OPtcAZ858kHncwV85siHhs8V8JkjH8A9V8BnjnyY9VwBnznywdBzBXzmsFdqwmKpCZulJqyWmrBbasJyqYnYpZ4r4DNHPjh4roDPHLE1PVfAZ44E/c8V8JkjoflzBXzmSAD9XAGfORLmPlfAZ47El88V8JkjYd1zBXzmiEXnuQI+cziHm3AON+EcbsI5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5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P77T38QU+xWNmV/XHmb225p+/2ILe77Wlv9oM4/v8s++V7i5/LPvFG4u/+z7hJvLP/su4ebyz75HuLn8s+8Qbi7/7LF/c/lnz/Kbyz97QN9b/gvnl0z52lP3he9LpnztqfvC9SVTvvbUfeH5kilfe+q+cHzJlK89dV/4vWTK1566L9xeMuVrT90XXi+Z8rWn7gunl0z52lP3hc9LpnztqfvC5SVTvvbUfeHxkilfe+q+cHjJlK89dV/4u2TK1566L9xdMuVrT90X3i6Z8rWn7gtnl0z52lP3ha9LpnztqfvC1SVTvvbUfeHpkilfe+q+cHTJlK89dV/4uWTK1566L9xcMuVrT90XXi6Z8rWn7gsnl0z52lP3hY9LpnztqfvCxSVTvvbUfeHhkilfe+q+cHDJlK89dV/4t2TK1566L9xbMuVrT90X3i2Z8rWn7gvnlkz52lP3hW9LpnztqfvCtSVTvvLUtcfpnq2by1eeulv5ylN3K1956m7lK0/drXzlqbuVrzx1t/KVp+5WvvLU3crXnrqnO7VuLl976p7u07q5fO2pe7pL6+bytafu6R6tm8vXnrqnG69uLl976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK5976vrj8Xytj/Xb8neuW19FjK4fV+3vnXIP6DN3yj3Lz9wp99j/YztdsbdT7juEE3d6unplxsFOO9fzxWs8flS0+5cyHuvr2+7HGPHj0mt9b+Dso7p9A2ffzt2+gbNv6G7ewDhdwXL7Bs6+qbt9A2ff1t2+gbNv7G7fwNn3a7dv4OzbsNs3ID6Jx+lClts3ID6Jx+lSlrs3cLqW5fYNqE/i09Ust2/g9km8Or5qevj81zvo8O/NjqO/GPvaa2//XvvNPwi/dnr7yP7YTm+f7R/b6e03AR/b6e13Cx/b6e23FR/bqfRHO0NbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08zyPU0h+VrT11ykcxh+dpTl1z5cli+9tRt7am7tKfu0p66S3vqLu2pu7Sn7tKeuqf7u24uX3vqnu7uurl86ak7T/d23Vy+9NSdpzu7bi5feurOh/TUnafbum4uX3rqztNNXTeXLz115+mWrnvLP93RdXP52lP3dD/XzeVrT93TlVs3l689dU+XY91cvvbUPV1jdXP52lNX2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1URu6m8sfj+Vof67fl71y3vooYXT+u2t875R7QZ+6Ue5afuVPusf/Hdrpib6fcdwgn7nRfvfJ1+cfBHmPV85U5frw2vvvdvhnltKvv3giddvXd+5TTrr57G3Ha1Xen/GlX3x3CZ11932lx2tV359JpV9+dBadd/dL36r5P4bSrX/pe3bcRnHb1S9+r+yz/aVe/9L26T8KfdvVL36v7HPlpV7/0vbpPYZ929Uvfq/sM82lXv/S9uk8An3b1S9+r+/zsaVe/8L3q472/mfl4xNed+GP++JeNrb0b5vb1/a+g+HHptb6Kee8v8uxi3vp7P7uYt1rq2cW81YHPLuathg0W0z/+yTd8r5i3+vvZxbw1Ds4u5q3pcXYxbw2bs4u5swMfFbMPpV5TzLLxXUztvbX3EdNPFXNfn5mPMb5fPOZeMff1mZ8o5r4+8xPF3NdnfqKY+/rMTxRzX585LmYfw/tUMff1mZ8o5r47vZ8o5r47vZ8ohqkD78NonyqGqQPvg2KfKoapA+9DXB8qZh/J+lQxTB14H5f6VDFMHXgfZfpUMUwdeB8z+lQxTB14HwH6VDFMHXgfz/lUMUwdeB+d+VQxTB14H2v5VDFMHXgfOflUMUwdeB8H+VQxTB14H9X4VDFMHXgfo/hUMUwdeB9x+FQxTB14Hz/4VDFMHXgfDfhUMUQd+MVXSn+qGKIO/OLrnj9VDFEHfvFVzJ8qhqgDv/ia5E8VQ9SBX3yF8aeKYerA+18v/KlimDrw/lf/fqoYpg78HnxydjFMHfg9tOXsYpg68HvgzNnFMHXg97Ccs4th6sDvQT9nF8PUgd9Dis4uhqkDvwcsnV0MUwd+D4c6uximDvwebHV2MUwd+D2U6+ximDrwe6DY2cUwdeD3MLSzi2HqwO9BbmcXw9SBbyS/fqIYpg58I/n1E8UwdeAbya+fKIapA99Ifv1EMUwd+Eby6yeKYerAN5JfP1EMUwfe/6rATxXD1IGZmLgXX8r3qWKYOjATE/fi6+8+VQxTB2Zi4l580dynimHqwExM3IuvdPtUMUwdmImJe/HlaZ8qhqkDMzFxL76m7FPFMHVgJibuxReCfaoYpg7MxMS9+OqtTxXD1IGZmLgXX3L1oWKYmLgXX0D1qWKYOjATE/fiq54+VQxTB2Zi4l58qdKnimHqwExM3IuvL/pUMUwdmImJe/FFQZ8qhqkDMzFxL75V5aJisr5f3Ov3xbz4jpRPFXPjL/AM/3rxjNgr5sZf4ONibvwFPi7mxluI42JuvIU4Lua+W4h+9Nd1tz/+ps/kdzH39ZnjYu5Eiszz68X+z8v9OKbfv3iMx/rq12OM3VO9k0A6vfYbb1BOr/3GcXB67TdOj9Nrv3HYvK79q5gb+/txMTf+E/G4mBvvIw+LuRNYOi6GomF/FUPRgb+KubGlun+/2D33irmxRx4Xc2PTOy7mxjvs42Ju7MDHxdzYgY+LubEDHxZzJ7B0XMyNHfi4mBs78HExTB34TmDpuBimDnwnsHRcDFMHvhNYOi6GqQPfCSwdF8PUge8Elo6LYerAdwJLx8UwdeA7gaXjYpg68J3A0nExTB34TmDpuBimDnwnsHRcDFMHvhNYOi7mxj4z5tfXKM79HPhOLOe4mBv7zGExd2I5x8Xc2GeOi7mxzxwXc2Of+f+K2Xu44U4s57iYG+/0jou58U7vuJhPdeDdYu7swP3j4YaxN5vuxHIOi7kTPjku5s4+c1jMnX3msJg7+8xhMXf2mcNibn1u6bvPzNoblHfCJ8fF3NhnDou5Ez45LubGO73jYm7swMfF3Prk6FExN3bg42JufXL0qJhbnxw9KoapA98JnxwXw9SB74RPjoth6sB3wieHjz7fCZ8cF3NrBz4qhunZ/Tu/kOm4GKZn9+/8QqbjYm7twP+6GL+TETou5tYOfFQMUQd2JnrKH0Qd2JnoKWeip5yJnvI7v5DpuBimDnwnPXVcDFMHvpNvOi6GqQPfSSAdF8PUge/8QqbjYpg68J1803ExTB34Tr7puBimDnwnUnRcDFPT2wdn5uPbguD+Y9Xje9Xue/Bw1e6b5WjVPjNyuGr31+9w1e6kfr3qH//4L/k7cVA=",
901
- "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h2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhGuZwDXO4hjlcwxyuYQ7XMIdrmMM1zOEa5nANc7iGOVzDHK5hDtcwh2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhxgsGcdsR9K5vR9Dbvh1B7/t2BL3x2xH0zm9H0Fu/HUHv/XYEvfnbEfzuw0huO4LffRjKbUfwuw9jue0IfvdhMLcdwe8+jOa2I/jdh+HcdgS/+zCe247gdx8GdNsR/O7DiG47gt99GNJtR/C7D2O67Qh+92FQtx3B7z6M6rYj+N2HYd12BL/7MK7bjuB3HwZ22xH87sPIbjuC330Y2m1H8LsPY7vtCH73YXC3HcHvPozutiP43Yfh3XYEv/swvtuO4HcfBnjbEfzuwwhvO4LffRjibUfwuw9jvO0IfvdhkLcdwe8+jPK2I/jdh2HedgS/+zDO247gdx8GetsR/O7DSG87gt99GOptR/C7D2O97Qh+92Gwtx3B7z6M9rYj+N2H4d52BL/7MN7bjuB3HwZ82xH87sOIbzuC330Y8m1H8LsPY77tCH73YdC3HcHvPoz6tiPw3R846xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xsI6/vDv3zczFnz/bHb/+78/vj0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"
908
+ "eJzt3d+O7MZxx/F3OddCwPrf1KsEuTASBzBgyEHkO0Pv7hGimV1DfcRzMj3b3yX7KkYwI1YVNT8WR/sZ/uPLX//2n3/6+1/+9tPPX378x5ft3yS+/Pjv//jy8//86adf/x8///1P//v3Lz9uP3z580//dfu/v/zw5b//8tc/f/lRt/2XH373Os1W8dtrb/+77Y/XZ3ZeLlX3F2/v/tH1y3/88GspySmlOKU0Tik7phTdOKUIpxTllGKcUpxTCidtlZO2yklb5aStctLWOGlrnLQ1TtoaJ22Nk7bGSVvjpK1x0tY4aWuctHVO2jonbZ2Tts5JW+ekrXPS1jlp65y0dU7aOidtg5O2wUnb4KRtcNI2OGkbnLQNTtoGJ22Dk7bBSdvkpG1y0jY5aZuctE1O2iYnbZOTtslJ2+SkbXLStjhpW5y0LU7aFidti5O2xUnb4qRtcdK2OGlbnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLTdOWm7c9J256TtzknbnZO2Oydtd07a7py03Tlpu3PSVjZO3MrGyVvZOIErGydxZeNErmyczJWNE7qycVJXNk7sygbKXQHlroByV0C5K6DcFVDukmwZCZeRdBmJl4F8mYCAmYCEmYCImYCMmYCQmYCUmYCYmYCcmYCgmYCkmYComYCsmYCwmYC0mYC4mYC8mYDAmYDEmYDImYDMmYDQmYDUmYDYmYDcmYDgmYDkmYDomYDsmYDwmYD0mYD4mYD8mYAAmoAEmoAImoAMmoAQmoAUmoAYmoAcmoAgmoAkmoAomoAsmoAwmoA0moA4moA8moBAmoBEmoBImoBMmoBQmoBUmoBYmoBcmoBgmoBkmoBomoBsmoBwmoB0moB4moB8moCAmoCEmoCImoCMmoCQmoCUmoCYmoCcmoCgmoCkmoComoCsmoCwmoC0moC4moC8moK8moK8moK8moK8mm6c3FWQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQVzOQVzOQVzOQVzOQV7ONk7sG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moO8moO8moO8moO8mq+cXLXQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV4tQF4tQF4tQF4tQF4tNk7uBsirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcir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ycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQpycQpycQpycQpycTpBkpgJZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4I5k4I5k4I5k4I5k420AJbCQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQT5yQT5yQT5yQT5yQT5xsogZ1k4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4oJk4oJk4oJk4oJk4mIDJXCQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFySTFySTFySTFySTFxuoAROkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkokrkokrkokrkokrkomrDZTARTJxRTJxRTJx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",
909
+ "eJzVlk1uAjEMhe+SNUK2E8cxV6m6QP2RkBCtCjvE3ctQkkynFlHpFDErhPQcffNi+2Xv1m9Py93qbbN1i71jt3jYu+37ctP92+6WHzu3gJl72Twffw8z97pav7gFgR5mP3QEwGcpAUlRB7DEPoQsDoBFjBAMNYJKPhsRvH7TP85cnCq43A48SMpi9umv4MkCx5hKkUTfwEcVKfieKz4a4qT+rNXYk17FrhNmR/g7PEGofZMa8II+96Mg176J8YSD94VDY+BozDjUXdJFHMpaESpSsaSseJZGrKd2Vcasam9W67mE1mS3e8bfryuRiiuCl13xpGep75963RiFG1uSJGs1+L4lHYyZuzeCSUMYM0v/EUa5wKg2mkW8L90ScTj8ZphOgnyENP0VOYJoGQ9Ml9lJsWwjDdLaRgkyB6bm7mLI489cv1C/ZnSEnJ6mK4Il41j6rhg9mKQg++oG0lVJQaO8LiZpuWTLE8CgEWmUR869uBKoPLYQG2of8ycGrszHvjlF6Nx+WLDmloxYrWTKRWb0torMiAzlBph7C/gLL83NPPAx30PAONw4aW5u4kaNuacaNfY7vlVkNuKlIsK5HYsh5n4/vjUHN9sVmT60ikwjuFxS7D3b9Bh8h8MnMqnIkw==",
910
+ "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oUjacSiSdhyKpB2HImnHoUjacSiSdhyIpPztG45D0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkZS/Mc5xSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJLyt646Dkk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkNylL/P33FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgkvL3TT0OSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORFL+PtTHIWnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUhmOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORXO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkMyDXYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByI52nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciGSy41Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgQyWzHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSxY5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCSrHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSE52HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciOdtxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIjkYsehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJKrHYciacehSNpxKJJ2HIqkHYciacehSNpx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tONAJOWvmX8cknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciKT8PUiOQ9KOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOA5GUv+/RcUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCS8vdPOw5JOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5EUv5+lMchacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacdhSCb5+/seh6QdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByIpf7/045C041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040Akkx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUhmOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORXO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkMyD3YciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByI52nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciGSy41Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgQyWzHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSxY5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCSrHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSE52HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciOdtxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIjkYsehSNpx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Ow5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjMCTrYMehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJKjHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSCY7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORzHYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByJZ7DgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORLLacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyI5GTHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSsx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUgudhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB0HIrnacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyG5DTYcSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyI5GjHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSyY5DkbTjUCTlHSdNdSOZp1mXpLzjHIakvOMchqS84xyGpLzjHIakvOMchqS84xyGpLzjHIVklnecw5CUd5zDkLTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORXO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkNyHuw4FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRytONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMlkx6FI2nEoknYciqQd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435p/eFt4/nug+HaJ9Y17pfG890H05NPrGvcL43nuw/G455Y17hfGs93H8w/xesaz3cfTOU8sa5xvzSe76bG893UeL6bGs93U+P5bmo8302N57up8Xw3NZ7vpsbz3dR4vpsaz3dT4/luajzfTY3nu6nxfDc1nu+mxvPd1Hi++2DM6ol1jful8Xw3NZ7vpsbz3dR4vpsaz3dT4/luajzfTY3nu6nxfDc1nu+mxvPd1Hi+mxrPd1Pj+W5qPN9Njee7qfF8NzWe76bG893UeL6bGs93U+P5bmo8302N57up8Xw3NZ7vpsbz3dR4vpsaz3fTM+e78966J/bL7ron9svuuif2y+66J/bL7ron9svuuif2y866/Mz57u66J/bL7ron9svuurb9kp85391d17Zf8jPnu7vr2vZLfuZ8d3dd43555nx3d13jfnnmfHd3XeN+eeZ8d3dd43555nx3d128X9bpdt39NP40XS4LMM3X25ym61PEW+tvP0W8C//uUzxxwPx3n+KJM7Rfn+Ky7tW/4WXdq3+Yy7pXaX+te+IMbX9d/J7fXxe/5/fXxe/5/XXxe35/Xfye31/XuF+eOEPbX9e4X544Q9td98QZ2v66xv3yxBna/rrG/bJ/hpY+XPtrXSrL9Vo687qt27/uXrxu/xJ28br9q8HF6/YvrBav279GWbhu/wztiXX7V86K1+1fqihet3+BoHhd437ZP0N7Yl3jftk/Q3tiXeN+2T9Di9ftn6E9sa5xv+yfoT2xrnG/7J+hPbGucb/sn6E9sa5xv+yfoT2xrnG/7J+hPbGucb/sn6E9sa5xv+yfoT2xrnG/7J+hPbGucb/sn6E9sa5xv+yfoT2xrnG/7J+hPbGucb88uO99vK5xvzy4x3u8rnG/PLifebyubb+UB/epjte17Zfy4H7C8bq2/VL2z9CeWNe2X8qDG6/G69r2S3lwO9B4XeN+eXCTynhd4355cOvEeF3jfnlwQ794XeN+eXCbuXhd4355cPOzeF3jfnlwS654XeN+eXCjqHhd4355cPuieF3jfnlwU514XeN+eXCrl3hd4355cAOSeF3jfnlwW4x4XeN+eXCzhnhd4355cAuBeF3jfnlwYft4XeN+eXC59Xhd4355cBHweF3jftk/331iXeN+2T/ffWJd437ZP999Yl3jftk/331iXeN+2T/ffWJd435p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",
911
+ "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QKexycrJYpPqzmKTCkxikw3oNCY9S7FPNqDTmPQsxT7ZgE5jWpVMNqDTmFYlkw3oNCZVyTHZgE5jUpUckw3oNCZVybFJVXJMdn7TmFQlx2R/No1JVXJMdlGz2GRjNI1pVTLZvkxjWpVMNhnTmFYlk63ANKZVyWTDLo1pVTLZVktjWpVMNr/SmFYlky2qNKZVyWQjKY1pVTL5Gb40plXJZHMpjWlVMvkZvjSmVclk0ymNaVUy2R5KY1qVTDZy0phWJZPdmTSmVclkdyaNaVUy2W9JY1qVTPZE0phWJZN9izSmVclkbyGNaVUy4f9pTKuSCf9PY1qVTPh/GtOqZML/05hWJRP+n8a0Kpnw/zSmVcmE/6cxrUom/D+NaVUy4f9pTKsSzT05NPfk0NyTQ3NPDs09OWYcPYtpVTLj0VlMq5IZ101iM/aaxbQqmbHXLKZVyYy9ZjGtSjT2emjs9dDY66Gx10Njr4fGXg+NvR4aez009npo7PXQ2OuhsddDY6+Hxl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl6HBlGHBlHHCYcJfV93HyccJZSNcIIqnoxwgiqejPD5w0WSEU44QsjK3XWwegQjnHB0QimPEXowwuePFclG+PyhIt8/FGCccHRQNsKPPv5hnHBsUDbCjz7+YZxwZFA2wglr+vsjnHBcUDbCCWs6GeGENZ2M8MPX9AnHBGUj/PA1fcIRQdkIP3xNT/Yszhzhh6/pM444Skb44Wt6sr9y5gg/fE3/8GOaxg8/pmn88GOaxg8/pmn88GOaxtPHND09wtMnOj0/wg9f00+fE/X8CD98TU/22M4c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",
912
+ "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AfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdw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8p/b6uVvBz621QdusDe2up5tdeb8ri7Mfs30zw+2+Ko5bP38t7J+xj/8TcO18Q9/x3Bt/MPfLlwb//D3CtfGP/yNwrXxD3+XcG38w2/+a+MffptfG//wG/rS+A88YDLxtW/dBw4wmfjat+4D/5dMfO1b94H7Sya+9q37wPslE1/71n3g/JKJr33rPvB9ycTXvnUfuL5k4mvfug88XzLxtW/dB44vmfjat+4Dv5dMfO1b94HbSya+9q37wOslE1/71n3g9JKJr33rPvB5ycTXvnUfuLxk4mvfug88XjLxtW/dBw4vmfjat+4Df5dMfO1b94G7Sya+9q37wNslE1/71n3g7JKJr33rPvB1ycTXvnUfuLpk4mvfug88XTLxtW/dB44umfjat+4DP5dMfO1b94GbSya+9q37wMslE1/71n3g5JKJr33rPvBxycTXvnUfuLhk4mvfug88XDLxtW/dBw4umfjat+4D/5ZMfOVb127Hu7euja98627xlW/dLb7yrbvFV751t/jKt+4WX/nW3eIr37pbfOVbd4uvfeseb9e6Nr72rXu8V+va+Nq37vFGrWvja9+6x7u0ro2vfese77y6Nr72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLT73reu3r++N97F+jb/zvNVfT9v1/dC4fe+U+4I+cqfcd/mRO+W+9n/fTlfs7ZT7HcKRO+V+M3HgTo+3tMwnO13zK/yqn4912wu/xft65jFuv/5LvPn3Dg4/q8t3cPh7v4t3MI7XtVy+g8PfAV6+g8PfBF6+g8PfB16+g8Pf312+g8Pft12+g8Pfj12+A/U7eRyvcbl8B/J38vEyl8t3IH8nH690uXwH8nfy8WKXZzvY/s/rZyr/13voHF/bHf3kidu+Htv+87E+v7d6+eX9ua1efst/bquXvx343FYvf9/wua1e/gbjY1vVFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDHLBzdP42rcuuYrmaXztW5dcGvM0vvat29q37tK+dZf2rbu0b92lfesu7Vt3ad+6S/vWPV7rdW187Vv3eKHXlfHn8Tava+NL37rzeI/XtfGlb915k7515/H6rmvjS9+683hx17XxpW/debyy69L4x/u6ro2vfeseb+q6Nr72rXu8o+va+Nq37vEurWvja9+6xzuvro2vfetqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtpvKtN1URu6m8tvt/lgf69f4O89b/fW0Xd8Pjdv3Trkv6CN3yn2XH7lT7mv/9+10xd5Oud8hHLlT7jcTB+5039Ly9fS3J3uMVfdH5vj52Pie7PsSlcOeffc902HPvvuW5rBn333HcdSz7ws8Dnv23fv6sGffvSMPe/bde+mwZ9+9Cw579lNfq/vqhcOe/dTX6r644LBnP/W1uo/9H/bsp75W96H5w5791NfqPnJ+2LOf+lrdB7YPe/ZTX6v7uPNhz37qa3UfFj7s2U99re6jtoc9+4mvVR/vZZ+32/c78dv8+d9wftt7w9z+lWX7x/75tv3m32ne2uvhad6aY4eneWvuHZ7mrTl5eJq35iqYpvP7v/vG3E3z1hw+PM1bc/voNPt46sfSvHUvHJ7myln8PM2Fs3jN9Z0md1/h+2jnx9JcN2+2B39XY7dfrvBf01w3b15Jc928eSHNPpj3sTTXzZtX0lw3b15Jc928eSXNdfPmlTTXvfd7Jc117/1eSUM1i/eBsI+loZrF+7jWx9JQzeJ9mOpjaahm8T7q9LE0VLN4H0T6WBqqWbyPCX0sDdUs3od4PpaGahbvIzYfS0M1i/cBmI+loZrF+3jKx9JQzeJ9eORjaahm8T7a8bE0VLN4H7z4WBqqWbyPRXwsDdUs3ocWPpaGahbvIwUfS8M0ix98GfXH0jDN4gdfFf2xNEyz+MEXOX8sDdMsfvA1yx9LwzSLH3wJ8sfSUM3i/a8o/lgaqlm8/wXCH0tDNYv3v973Y2moZvF73Mjhaahm8XtcyuFpqGbxe9zL4WmoZvF7XM3haahm8XvczuFpqGbxe1zQ4WmoZvF73NHhaahm8Xtc0+FpqGbxe9zU4WmoZvF7XNbhaahm8Xvc1+FpqGbxe1zZ4WmoZvF73Nrhaahm8YVs2StpqGbxhWzZK2moZvGFbNkraahm8YVs2StpqGbxhWzZK2moZvGFbNkraahm8YVs2StpqGbx/pf6fSwN1Sym4u4efIPep9JQcXcPvt/uY2moZjEVd/fgy+Q+loZqFlNxdw++ue1jaahmMRV39+Br0j6WhmoWU3F3D76T7GNpqGYxFXf34AvAPpaGahZTcXcPvm3rU2mouLsH34X1sTRUs5iKu3vwxVMfS0M1i6m4uwff8vSxNFSzmIq7e/CVSh9LQzWLqbi7B99f9LE0VLOYirt78GVBH0tDNYupuLsH35hyUpr8+eBfvurj1zRXvsKfp7nwt3jG19dTbP9ou2ku/C1+Ic2Fv8UvpLnwHcXzNFcSSy+kue4dRY/4mjc9cnw/ePV3mOvGzQthLpw25v71YL+Nfzinf370uK36eu4xbr9+uc0v53rh+48T0l/4fuWE9BfeDCekv/AmOSH9hTfPv0h/T3MlEfVCmgv/6/GFNBe+t3whDce0/0rDMb2/0nBM4680F05Xd/tO476b5sJp+UKaC6ffC2kufN/9PM2VRNQLaS6cxS+kuXAWv5Dmwln8QpoLZ/ELaS6cxS+koZrFVxJRL6ShmsVXElHP01xJRL2QhmoWX0lEvZCGahZfSUS9kIZqFl9JRL2QhmoWX0lEvZCGahZfSUS9kIZqFl9JRL2QhmoWX0lEvZCGahZfSUS9kIZqFl9J/Yz59a2Qc+z//etK6ueFNBfOmxfSXDhvXkhz4bx5Ic2F8+aFNBfOm39Is/vJiCupnxfSXPje74U0F773e57mSurnhTRXzuL++cmIsXtPXUn9vJDmynnzPM2V8+Z5mivnzfM0V86b52munDdP01xJtsz4njezdm/NK8mWF9JcOG9eSHPhe78X0lz43u+FNBfO4hfSXPo51KdpLv0c6tM0l34O9WmaSz+H+izNlWTLC2moZvGVZMsLaahm8ZVkywtpLp3Fzz5NfSXZ8kIaKibgSrLlhTRMTIBf+Y1SL6S5dBY/TXPpLH6a5tJZ/DTNpbP4aRqmWexUfJZT8VlOxWc5FZ/lVHyWX/mNUi+koZrFVxJaL6ShmsVXElQvpKGaxVcSTi+koZrFV36j1PM0V/JTL6ShmsVX8lMvpKGaxVfyUy+koZp+VxJLz9PsUznz9t37/PIhojW/V+2+Ep+u2n3FPF21+5v9dNXub+DTVbu39uNVf/vb/wPc5T9G",
913
+ "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"
902
914
  ],
903
915
  "fileMap": {
904
916
  "15": {
905
- "source": "impl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n \n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(_self: Self, _bit_size: u32) -> [u1] {}\n \n #[builtin(to_be_bits)]\n fn __to_be_bits(_self: Self, _bit_size: u32) -> [u1] {}\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n \n #[builtin(to_be_radix)]\n fn __to_be_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> Field {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n",
917
+ "source": "impl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n \n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(_self: Self, _bit_size: u32) -> [u1] {}\n \n #[builtin(to_be_bits)]\n fn __to_be_bits(_self: Self, _bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(_self: Self, _bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n \n #[builtin(to_be_radix)]\n fn __to_be_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> Field {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n",
906
918
  "path": "std/field.nr"
907
919
  },
908
920
  "16": {
@@ -917,160 +929,160 @@
917
929
  "source": "struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n",
918
930
  "path": "std/option.nr"
919
931
  },
920
- "38": {
932
+ "39": {
921
933
  "source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{\n address::AztecAddress,\n grumpkin_point::GrumpkinPoint,\n};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(contract_address, storage_slot, encryption_pub_key, log);\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n\n// TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n// --> might be a better approach to force devs to make a public function call that emits the log if needed then\n// it would be less easy to accidentally leak information.\n// If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n",
922
934
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/log.nr"
923
935
  },
924
- "39": {
936
+ "40": {
925
937
  "source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::hash_args,\n};\n\n// docs:start:private-global-variables\nstruct PrivateGlobalVariables {\n chain_id: Field,\n version: Field,\n}\n// docs:end:private-global-variables\n\nimpl PrivateGlobalVariables {\n fn serialize(self) -> [Field; 2] {\n [self.chain_id, self.version]\n }\n}\n\n// docs:start:public-global-variables\nstruct PublicGlobalVariables {\n chain_id: Field,\n version: Field,\n block_number: Field,\n timestamp: Field,\n}\n// docs:end:public-global-variables\n\nimpl PublicGlobalVariables {\n fn serialize(self) -> [Field; 4] {\n [self.chain_id, self.version, self.block_number, self.timestamp]\n }\n}\n\n// PrivateContextInputs are expected to be provided to each private function\n// docs:start:private-context-inputs\nstruct PrivateContextInputs {\n call_context : CallContext,\n block_header: BlockHeader,\n contract_deployment_data: ContractDeploymentData,\n private_global_variables: PrivateGlobalVariables,\n}\n// docs:end:private-context-inputs\n\n// PublicContextInputs are expected to be provided to each public function\n// docs:start:public-context-inputs\nstruct PublicContextInputs {\n call_context: CallContext,\n block_header: BlockHeader,\n\n public_global_variables: PublicGlobalVariables,\n}\n// docs:end:public-context-inputs\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hasher {\n pub fn new()-> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n\n pub fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n",
926
938
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/abi.nr"
927
939
  },
928
- "40": {
940
+ "41": {
929
941
  "source": "use dep::std::option::Option;\nuse dep::protocol_types::{\n address::AztecAddress,\n};\n\nuse crate::context::{PrivateContext, Context};\nuse crate::note::{\n lifecycle::create_note,\n note_getter::{get_note, view_notes},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::singleton::compute_singleton_initialization_nullifier;\n\n// docs:start:struct\nstruct ImmutableSingleton<Note, N> {\n context: Option<&mut PrivateContext>,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n compute_initialization_nullifier: fn (Field, Option<AztecAddress>) -> Field,\n}\n// docs:end:struct\n\nimpl<Note, N> ImmutableSingleton<Note, N> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n ImmutableSingleton {\n context: context.private,\n storage_slot,\n note_interface,\n compute_initialization_nullifier: compute_singleton_initialization_nullifier,\n }\n }\n // docs:end:new\n\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self, owner: Option<AztecAddress>) -> bool {\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note, \n owner: Option<AztecAddress>,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n\n // Nullify the storage slot.\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n context.push_new_nullifier(nullifier, 0);\n\n create_note(\n context,\n self.storage_slot,\n note,\n self.note_interface,\n broadcast,\n );\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note {\n let context = self.context.unwrap();\n let storage_slot = self.storage_slot;\n get_note(context, storage_slot, self.note_interface)\n }\n // docs:end:get_note\n\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note {\n let options = NoteViewerOptions::new().set_limit(1);\n view_notes(self.storage_slot, self.note_interface, options)[0].unwrap()\n }\n // docs:end:view_note\n}\n",
930
942
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr"
931
943
  },
932
- "41": {
944
+ "42": {
933
945
  "source": "use crate::context::{Context};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse crate::types::type_serialization::TypeSerializationInterface;\nuse dep::std::option::Option;\n\n// docs:start:public_state_struct\nstruct PublicState<T, T_SERIALIZED_LEN> {\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n}\n// docs:end:public_state_struct\n\nimpl<T, T_SERIALIZED_LEN> PublicState<T, T_SERIALIZED_LEN> {\n // docs:start:public_state_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicState {\n context,\n storage_slot,\n serialization_methods,\n }\n }\n // docs:end:public_state_struct_new\n\n // docs:start:public_state_struct_read\n pub fn read(self) -> T {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n storage_read(self.storage_slot, self.serialization_methods.deserialize)\n }\n // docs:end:public_state_struct_read\n\n // docs:start:public_state_struct_write\n pub fn write(self, value: T) {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n let serialize = self.serialization_methods.serialize;\n let fields = serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_state_struct_write\n}\n",
934
946
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/public_state.nr"
935
947
  },
936
- "42": {
937
- "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::hash::pedersen_hash;\n\n// docs:start:map\nstruct Map<V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<V> Map<V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Map<V> {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map {\n context,\n storage_slot,\n state_var_constructor,\n }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: Field) -> V {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key],0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n",
948
+ "43": {
949
+ "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::{\n hash::pedersen_hash,\n traits::{ToField}\n};\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map {\n context,\n storage_slot,\n state_var_constructor,\n }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()],0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n",
938
950
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/map.nr"
939
951
  },
940
- "43": {
952
+ "44": {
941
953
  "source": "use dep::std::option::Option;\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n },\n hash::pedersen_hash,\n};\n\nuse crate::context::{PrivateContext, PublicContext, Context};\nuse crate::note::{\n lifecycle::{create_note, destroy_note},\n note_getter::{get_note, view_notes},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::{\n get_secret_key::get_secret_key,\n notes::check_nullifier_exists,\n};\n\npub fn compute_singleton_initialization_nullifier(storage_slot: Field, owner: Option<AztecAddress>) -> Field {\n if owner.is_some() {\n let secret = get_secret_key(owner.unwrap_unchecked());\n pedersen_hash(\n [storage_slot, secret.low, secret.high],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n } else {\n pedersen_hash([storage_slot], GENERATOR_INDEX__INITIALIZATION_NULLIFIER)\n }\n}\n\n// docs:start:struct\nstruct Singleton<Note, N> {\n context: Option<&mut PrivateContext>,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n compute_initialization_nullifier: fn (Field, Option<AztecAddress>) -> Field,\n}\n// docs:end:struct\n\nimpl<Note, N> Singleton<Note, N> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Singleton {\n context: context.private,\n storage_slot,\n note_interface,\n compute_initialization_nullifier: compute_singleton_initialization_nullifier,\n }\n }\n // docs:end:new\n\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self, owner: Option<AztecAddress>) -> bool {\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note,\n owner: Option<AztecAddress>,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n\n // Nullify the storage slot.\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n context.push_new_nullifier(nullifier, 0);\n\n create_note(context, self.storage_slot, note, self.note_interface, broadcast);\n }\n // docs:end:initialize\n\n // docs:start:replace\n pub fn replace(\n self,\n new_note: &mut Note,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n let prev_note = get_note(context, self.storage_slot, self.note_interface);\n\n // Nullify previous note.\n destroy_note(context, prev_note, self.note_interface);\n\n // Add replacement note.\n create_note(context, self.storage_slot, new_note, self.note_interface, broadcast);\n }\n // docs:end:replace\n\n // docs:start:get_note\n pub fn get_note(self, broadcast: bool) -> Note {\n let context = self.context.unwrap();\n let mut note = get_note(context, self.storage_slot, self.note_interface);\n\n // Nullify current note to make sure it's reading the latest note.\n destroy_note(context, note, self.note_interface);\n\n // Add the same note again.\n // Because a nonce is added to every note in the kernel, its nullifier will be different.\n create_note(context, self.storage_slot, &mut note, self.note_interface, broadcast);\n\n note\n }\n // docs:end:get_note\n\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note {\n let options = NoteViewerOptions::new().set_limit(1);\n view_notes(self.storage_slot, self.note_interface, options)[0].unwrap()\n }\n // docs:end:view_note\n}\n",
942
954
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr"
943
955
  },
944
- "48": {
956
+ "50": {
945
957
  "source": "use crate::types::type_serialization::TypeSerializationInterface;\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\n\nfn deserializeBool(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n}\n\nfn serializeBool(value: bool) -> [Field; BOOL_SERIALIZED_LEN] {\n [value as Field]\n}\n\nglobal BoolSerializationMethods = TypeSerializationInterface {\n deserialize: deserializeBool,\n serialize: serializeBool,\n};\n",
946
958
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/type_serialization/bool_serialization.nr"
947
959
  },
948
- "50": {
960
+ "52": {
949
961
  "source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: Field,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new(initial_value: T) -> Self {\n BoundedVec { storage: [initial_value; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: Field) -> T {\n assert(index as u64 < self.len as u64);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: Field) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len as u64 < MaxLen as u64);\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn push_array<Len>(&mut self, array: [T; Len]) {\n let newLen = self.len + array.len();\n assert(newLen as u64 <= MaxLen as u64);\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = newLen;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n\n let elem = self.storage[self.len - 1];\n self.len -= 1;\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if (!exceeded_len) {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\n#[test]\nfn test_vec_push_pop() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n assert(vec.len == 0);\n vec.push(2);\n assert(vec.len == 1);\n vec.push(4);\n assert(vec.len == 2);\n vec.push(6);\n assert(vec.len == 3);\n let x = vec.pop();\n assert(x == 6);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test]\nfn test_vec_push_array() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test(should_fail)]\nfn test_vec_get_out_of_bound() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n let _x = vec.get(2);\n}\n\n#[test(should_fail)]\nfn test_vec_get_not_declared() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2]);\n let _x = vec.get(1);\n}\n\n#[test(should_fail)]\nfn test_vec_get_uninitialized() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n let _x = vec.get(0);\n}\n\n#[test(should_fail)]\nfn test_vec_push_overflow() {\n let mut vec: BoundedVec<Field, 1> = BoundedVec::new(0);\n vec.push(1);\n vec.push(2);\n}\n\n#[test]\nfn test_vec_any() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4, 6]);\n assert(vec.any(|v| v == 2) == true);\n assert(vec.any(|v| v == 4) == true);\n assert(vec.any(|v| v == 6) == true);\n assert(vec.any(|v| v == 3) == false);\n}\n\n#[test]\nfn test_vec_any_not_default() {\n let default_value = 1;\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(default_value);\n vec.push_array([2, 4]);\n assert(vec.any(|v| v == default_value) == false);\n}\n",
950
962
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/vec.nr"
951
963
  },
952
- "62": {
964
+ "64": {
953
965
  "source": "pub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: Field) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n\n// TODO(#3470): Copied over from https://github.com/AztecProtocol/aztec-packages/blob/a07c4bd47313be6aa604a63f37857eb0136b41ba/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr#L599\n// move to a shared place?\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n dep::std::eddsa::lt_bytes32(lhs, rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n dep::std::eddsa::lt_bytes32(rhs, lhs)\n}\n\nstruct Reader<N> {\n data: [Field; N],\n offset: Field,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n } \n}\n",
954
966
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/utils.nr"
955
967
  },
956
- "64": {
957
- "source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\nuse crate::abi::{\n PrivateContextInputs,\n PublicContextInputs,\n};\n\n// l1 to l2 messaging\nuse crate::messaging::process_l1_to_l2_message;\n\nuse crate::types::{\n vec::BoundedVec,\n};\n\nuse crate::utils::Reader;\n\nuse crate::oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n};\n\nuse dep::std::option::Option;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: Field,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n block_header: BlockHeader,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n // starts at 1 because all private calls have txhash nullifier as 0th nullifier\n // and therefore 0th sideeffect. increment this for each side effect in this context\n side_effect_counter: 1,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n read_requests: self.read_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version,\n };\n priv_circuit_pub_inputs\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter,\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) \n // docs:end:context_message_portal\n {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read(),\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read(),\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\n \n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n assert(item.is_execution_request == false);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address, \n function_selector, \n args_hash\n );\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(fields[0]),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(fields[1]),\n is_internal: fields[2] as bool,\n is_private: fields[3] as bool,\n is_constructor: fields[4] as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(fields[5]),\n storage_contract_address : AztecAddress::from_field(fields[6]),\n portal_contract_address : EthAddress::from_field(fields[7]),\n function_selector: FunctionSelector::from_field(fields[8]), // practically same as fields[1]\n is_delegate_call : fields[9] as bool,\n is_static_call : fields[10] as bool,\n is_contract_deployment: fields[11] as bool,\n start_side_effect_counter: fields[12],\n },\n args_hash: fields[13],\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n block_header: BlockHeader::empty(),\n prover_address: AztecAddress::zero(),\n },\n is_execution_request: true,\n };\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n \n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: Field,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: 0, // no initial nullifier in new public context. increment on every side effect\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
968
+ "66": {
969
+ "source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\nuse crate::abi::{\n PrivateContextInputs,\n PublicContextInputs,\n};\n\n// l1 to l2 messaging\nuse crate::messaging::process_l1_to_l2_message;\n\nuse crate::types::{\n vec::BoundedVec,\n};\n\nuse crate::utils::Reader;\n\nuse crate::oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n};\n\nuse dep::std::option::Option;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n block_header: BlockHeader,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n read_requests: self.read_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version,\n };\n priv_circuit_pub_inputs\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter,\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) \n // docs:end:context_message_portal\n {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n self.side_effect_counter,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n \n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n assert(item.is_execution_request == false);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address, \n function_selector, \n args_hash,\n self.side_effect_counter\n );\n\n let mut reader = Reader::new(fields);\n\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n block_header: BlockHeader::empty(),\n prover_address: AztecAddress::zero(),\n },\n is_execution_request: true,\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n \n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
958
970
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/context.nr"
959
971
  },
960
- "69": {
972
+ "71": {
961
973
  "source": "use crate::abi::PublicContextInputs;\nuse crate::context::{\n PrivateContext,\n PublicContext,\n};\nuse crate::note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_inner_note_hash,\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, N>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n note_interface: NoteInterface<Note, N>,\n broadcast: bool\n) {\n let contract_address = (*context).this_address();\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true };\n let set_header = note_interface.set_header;\n set_header(note, header);\n let inner_note_hash = compute_inner_note_hash(note_interface, *note);\n\n let serialize = note_interface.serialize;\n let serialized_note = serialize(*note);\n assert(notify_created_note(storage_slot, serialized_note, inner_note_hash) == 0);\n\n context.push_new_note_hash(inner_note_hash);\n\n if broadcast {\n let broadcast = note_interface.broadcast;\n broadcast(context, storage_slot, *note);\n }\n}\n\npub fn create_note_hash_from_public<Note, N>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n note_interface: NoteInterface<Note, N>\n) {\n let contract_address = (*context).this_address();\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true };\n let set_header = note_interface.set_header;\n set_header(note, header);\n let inner_note_hash = compute_inner_note_hash(note_interface, *note);\n\n context.push_new_note_hash(inner_note_hash);\n}\n\npub fn destroy_note<Note, N>(\n context: &mut PrivateContext,\n note: Note,\n note_interface: NoteInterface<Note, N>\n) {\n let mut nullifier = 0;\n let mut nullified_commitment: Field = 0;\n let compute_nullifier = note_interface.compute_nullifier;\n nullifier = compute_nullifier(note);\n\n // We also need the note commitment corresponding to the \"nullifier\"\n let get_header = note_interface.get_header;\n let header = get_header(note);\n // `nullified_commitment` is used to inform the kernel which pending commitment\n // the nullifier corresponds to so they can be matched and both squashed/deleted.\n // nonzero nonce implies \"persistable\" nullifier (nullifies a persistent/in-tree\n // commitment) in which case `nullified_commitment` is not used since the kernel\n // just siloes and forwards the nullifier to its output.\n if (header.is_transient) {\n // TODO(1718): Can we reuse the note commitment computed in `compute_nullifier`?\n nullified_commitment = compute_inner_note_hash(note_interface, note);\n }\n assert(notify_nullified_note(nullifier, nullified_commitment) == 0);\n\n context.push_new_nullifier(nullifier, nullified_commitment)\n}\n",
962
974
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr"
963
975
  },
964
- "70": {
976
+ "72": {
965
977
  "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__OUTER_NULLIFIER,\n hash::pedersen_hash,\n};\nuse crate::{\n note::{\n note_hash::{compute_inner_hash, compute_siloed_hash, compute_unique_hash},\n note_header::NoteHeader,\n note_interface::NoteInterface,\n },\n utils::arr_copy_slice,\n};\n\npub fn compute_inner_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note);\n\n let compute_note_hash = note_interface.compute_note_hash;\n let note_hash = compute_note_hash(note);\n\n compute_inner_hash(header.storage_slot, note_hash)\n}\n\npub fn compute_siloed_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let inner_note_hash = compute_inner_note_hash(note_interface, note_with_header);\n\n compute_siloed_hash(header.contract_address, inner_note_hash)\n}\n\npub fn compute_unique_siloed_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let siloed_note_hash = compute_siloed_note_hash(note_interface, note_with_header);\n\n compute_unique_hash(header.nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_nullifier<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let compute_nullifier = note_interface.compute_nullifier;\n let inner_nullifier = compute_nullifier(note_with_header);\n\n let input = [header.contract_address.to_field(), inner_nullifier];\n pedersen_hash(input, GENERATOR_INDEX__OUTER_NULLIFIER)\n}\n\npub fn compute_note_hash_for_read_or_nullify<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n if (header.is_transient) {\n // If a note is transient, we just read the inner_note_hash (kernel will silo by contract address).\n compute_inner_note_hash(note_interface, note_with_header)\n } else if (header.nonce == 0) {\n // If not transient and nonce is zero, that means we are reading a public note.\n compute_siloed_note_hash(note_interface, note_with_header)\n } else {\n // When nonce is nonzero, that means we are reading a settled note (from tree) created in a\n // previous TX. So we need the unique_siloed_note_hash which has already been hashed with\n // contract address and then nonce. This hash will match the existing leaf in the private\n // data tree, so the kernel can just perform a membership check directly on this hash/leaf.\n compute_unique_siloed_note_hash(note_interface, note_with_header)\n }\n}\n\npub fn compute_note_hash_and_nullifier<Note, N, S>(\n note_interface: NoteInterface<Note, N>,\n note_header: NoteHeader,\n serialized_note: [Field; S]\n) -> [Field; 4] {\n let deserialize = note_interface.deserialize;\n let set_header = note_interface.set_header;\n let mut note = deserialize(arr_copy_slice(serialized_note, [0; N], 0));\n set_header(&mut note, note_header);\n\n let compute_note_hash = note_interface.compute_note_hash;\n let note_hash = compute_note_hash(note);\n let inner_note_hash = compute_inner_hash(note_header.storage_slot, note_hash);\n\n let siloed_note_hash = compute_siloed_hash(note_header.contract_address, inner_note_hash);\n\n let unique_siloed_note_hash = compute_unique_hash(note_header.nonce, siloed_note_hash);\n\n let compute_nullifier = note_interface.compute_nullifier;\n let inner_nullifier = compute_nullifier(note);\n\n [inner_note_hash, siloed_note_hash, unique_siloed_note_hash, inner_nullifier]\n}\n",
966
978
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/utils.nr"
967
979
  },
968
- "72": {
980
+ "74": {
969
981
  "source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n },\n hash::pedersen_hash,\n};\n\npub fn compute_inner_hash(storage_slot: Field, note_hash: Field) -> Field {\n // TODO(#1205) Do we need a generator index here?\n pedersen_hash([storage_slot, note_hash], 0)\n}\n\npub fn compute_siloed_hash(contract_address: AztecAddress, inner_note_hash: Field) -> Field {\n let inputs = [contract_address.to_field(), inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__SILOED_COMMITMENT)\n}\n\npub fn compute_unique_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_COMMITMENT)\n}\n",
970
982
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/note_hash.nr"
971
983
  },
972
- "75": {
984
+ "77": {
973
985
  "source": "use dep::std::option::Option;\nuse dep::protocol_types::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n GET_NOTE_ORACLE_RETURN_LENGTH,\n GET_NOTES_ORACLE_RETURN_LENGTH,\n MAX_NOTES_PER_PAGE,\n VIEW_NOTE_ORACLE_RETURN_LENGTH,\n};\nuse crate::context::PrivateContext;\nuse crate::note::{\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_or_nullify,\n};\nuse crate::oracle;\nuse crate::types::vec::BoundedVec;\n\nfn check_note_header<Note, N>(\n context: PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n note: Note\n) {\n let get_header = note_interface.get_header;\n let header = get_header(note);\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address));\n assert(header.storage_slot == storage_slot);\n}\n\nfn check_note_fields<N>(fields: [Field; N], selects: BoundedVec<Option<Select>, N>) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n assert(fields[select.field_index] == select.value, \"Mismatch return note field.\");\n }\n}\n\nfn check_notes_order<N>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let eq = fields_0[sort.field_index] == fields_1[sort.field_index];\n let lt = fields_0[sort.field_index] as u120 < fields_1[sort.field_index] as u120;\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, N>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>\n) -> Note {\n let note = get_note_internal(storage_slot, note_interface);\n\n check_note_header(*context, storage_slot, note_interface, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note);\n\n context.push_read_request(note_hash_for_read_request);\n note\n}\n\npub fn get_notes<Note, N, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteGetterOptions<Note, N, FILTER_ARGS>\n) -> [Option<Note>; MAX_READ_REQUESTS_PER_CALL] {\n let opt_notes = get_notes_internal(storage_slot, note_interface, options);\n let mut num_notes = 0;\n let mut prev_fields = [0; N];\n for i in 0..opt_notes.len() {\n let opt_note = opt_notes[i];\n if opt_note.is_some() {\n let note = opt_note.unwrap_unchecked();\n let serialize = note_interface.serialize;\n let fields = serialize(note);\n check_note_header(*context, storage_slot, note_interface, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_read_request(note_hash_for_read_request);\n\n num_notes += 1;\n };\n }\n if options.limit != 0 {\n assert(num_notes <= options.limit, \"Invalid number of return notes.\");\n }\n opt_notes\n}\n\nunconstrained fn get_note_internal<Note, N>(storage_slot: Field, note_interface: NoteInterface<Note, N>) -> Note {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n oracle::notes::get_notes(\n storage_slot,\n note_interface,\n 0,\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n placeholder_note,\n placeholder_fields\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, N, FILTER_ARGS>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteGetterOptions<Note, N, FILTER_ARGS>\n) -> [Option<Note>; MAX_READ_REQUESTS_PER_CALL] {\n let (num_selects, select_by, select_values, sort_by, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n note_interface,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n options.limit,\n options.offset,\n placeholder_opt_notes,\n placeholder_fields\n );\n\n let filter = options.filter;\n let filter_args = options.filter_args;\n filter(opt_notes, filter_args)\n}\n\nunconstrained pub fn view_notes<Note, N>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteViewerOptions<Note, N>\n) -> [Option<Note>; MAX_NOTES_PER_PAGE] {\n let (num_selects, select_by, select_values, sort_by, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n oracle::notes::get_notes(\n storage_slot,\n note_interface,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n options.limit,\n options.offset,\n placeholder_opt_notes,\n placeholder_fields\n )\n}\n\nunconstrained fn flatten_options<Note, N>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [Field; N], [u8; N], [u2; N]) {\n let mut num_selects = 0;\n let mut select_by = [0; N];\n let mut select_values = [0; N];\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by[num_selects] = select.unwrap_unchecked().field_index;\n select_values[num_selects] = select.unwrap_unchecked().value;\n num_selects += 1;\n };\n }\n\n let mut sort_by = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by[i] = sort.unwrap_unchecked().field_index;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (num_selects, select_by, select_values, sort_by, sort_order)\n}\n",
974
986
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/note_getter.nr"
975
987
  },
976
- "77": {
988
+ "79": {
977
989
  "source": "use dep::std::option::Option;\nuse crate::note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n};\nuse crate::utils::arr_copy_slice;\n\nuse dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyCreatedNote)]\nfn notify_created_note_oracle<N>(_storage_slot: Field, _serialized_note: [Field; N], _inner_note_hash: Field) -> Field {}\n\nunconstrained pub fn notify_created_note<N>(storage_slot: Field, serialized_note: [Field; N], inner_note_hash: Field) -> Field {\n notify_created_note_oracle(storage_slot, serialized_note, inner_note_hash)\n}\n\n#[oracle(notifyNullifiedNote)]\nfn notify_nullified_note_oracle<N>(_nullifier: Field, _inner_note_hash: Field) -> Field {}\n\nunconstrained pub fn notify_nullified_note<N>(nullifier: Field, inner_note_hash: Field) -> Field {\n notify_nullified_note_oracle(nullifier, inner_note_hash)\n}\n\n#[oracle(getNotes)]\nfn get_notes_oracle<N, S>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by: [u8; N],\n _select_values: [Field; N],\n _sort_by: [u8; N],\n _sort_order: [u2; N],\n _limit: u32,\n _offset: u32,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<N, S>(\n storage_slot: Field,\n num_selects: u8,\n select_by: [u8; N],\n select_values: [Field; N],\n sort_by: [u8; N],\n sort_order: [u2; N],\n limit: u32,\n offset: u32,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n limit,\n offset,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, N, M, S, NS>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n num_selects: u8,\n select_by: [u8; M],\n select_values: [Field; M],\n sort_by: [u8; M],\n sort_order: [u2; M],\n limit: u32,\n offset: u32,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS] // TODO: Remove it and use `limit` to initialize the note array.\n) -> [Option<Note>; S] {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n limit,\n offset,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n let deserialize = note_interface.deserialize;\n let set_header = note_interface.set_header;\n for i in 0..placeholder_opt_notes.len() {\n if i as u32 < num_notes {\n // lengths named as per typescript.\n let return_header_length: Field = 2; // num_notes & contract_address.\n let extra_preimage_length: Field = 2; // nonce & is_transient.\n let read_offset: Field = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let is_transient = fields[read_offset + 1] as bool;\n let header = NoteHeader { contract_address, nonce, storage_slot, is_transient };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = deserialize(serialized_note);\n set_header(&mut note, header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n#[oracle(checkNullifierExists)]\nfn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n",
978
990
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/notes.nr"
979
991
  },
980
- "78": {
981
- "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n};\n\n// contract_address + \n// args_hash +\n// crate::abi::FUNCTION_DATA_SIZE +\n// crate::abi::CALL_CONTEXT_SIZE + side_effect_counter\n// = 2 + 4 + 7 + 1\nglobal ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 14;\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {\n enqueue_public_function_call_oracle(contract_address, function_selector, args_hash)\n}\n",
992
+ "80": {
993
+ "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n};\n\n// contract_address + \n// args_hash +\n// crate::abi::FUNCTION_DATA_SIZE +\n// crate::abi::CALL_CONTEXT_SIZE\n// = 2 + 4 + 8\nglobal ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 14;\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter\n )\n}\n",
982
994
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"
983
995
  },
984
- "83": {
985
- "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::CALL_PRIVATE_FUNCTION_RETURN_SIZE,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {\n call_private_function_oracle(contract_address, function_selector, args_hash)\n}\n",
996
+ "85": {
997
+ "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::CALL_PRIVATE_FUNCTION_RETURN_SIZE,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {\n call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter\n )\n}\n",
986
998
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/call_private_function.nr"
987
999
  },
988
- "90": {
1000
+ "92": {
989
1001
  "source": "#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<T, N>(storage_slot: Field, deserialize: fn([Field; N]) -> T) -> T {\n let fields = storage_read_oracle_wrapper(storage_slot);\n deserialize(fields)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\n// TODO: Remove return value.\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n",
990
1002
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/storage.nr"
991
1003
  },
992
- "92": {
1004
+ "94": {
993
1005
  "source": "use dep::protocol_types::{\n address::{\n AztecAddress,\n PartialAddress,\n },\n grumpkin_point::GrumpkinPoint,\n};\n\n#[oracle(getPublicKeyAndPartialAddress)]\nfn get_public_key_and_partial_address_oracle(_address: AztecAddress) -> [Field; 3] {}\n\nunconstrained fn get_public_key_and_partial_address_internal(address: AztecAddress) -> [Field; 3] {\n get_public_key_and_partial_address_oracle(address)\n}\n\npub fn get_public_key(address: AztecAddress) -> GrumpkinPoint {\n let result = get_public_key_and_partial_address_internal(address);\n let pub_key = GrumpkinPoint::new(result[0], result[1]);\n let partial_address = PartialAddress::from_field(result[2]);\n\n let calculated_address = AztecAddress::compute(pub_key, partial_address);\n assert(calculated_address.eq(address));\n\n pub_key\n}\n",
994
1006
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/get_public_key.nr"
995
1007
  },
996
- "94": {
1008
+ "96": {
997
1009
  "source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::NUM_FIELDS_PER_SHA256,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [emit_encrypted_log_oracle(contract_address, storage_slot, encryption_pub_key, preimage), 0]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(_contract_address: AztecAddress, _event_selector: Field, _message: T) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n",
998
1010
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/logs.nr"
999
1011
  },
1000
- "95": {
1012
+ "97": {
1001
1013
  "source": "use crate::oracle::get_public_key::get_public_key;\nuse dep::protocol_types::{\n address::AztecAddress,\n grumpkin_point::GrumpkinPoint,\n};\n\n#[oracle(getSecretKey)]\nfn get_secret_key_oracle(_owner: GrumpkinPoint) -> [Field; dep::std::grumpkin_scalar::GRUMPKIN_SCALAR_SERIALIZED_LEN] {}\n\nunconstrained fn get_secret_key_internal(owner_public_key: GrumpkinPoint) -> dep::std::grumpkin_scalar::GrumpkinScalar {\n dep::std::grumpkin_scalar::deserialize_grumpkin_scalar(get_secret_key_oracle(owner_public_key))\n}\n\npub fn get_secret_key(owner: AztecAddress) -> dep::std::grumpkin_scalar::GrumpkinScalar {\n let owner_public_key = get_public_key(owner);\n let secret = get_secret_key_internal(owner_public_key);\n\n // Constrain the owner - Nullifier secret key is currently just the encryption private key so we can constrain\n // the owner by deriving the public key from the secret key and checking the result.\n let computed_public_key = dep::std::grumpkin_scalar_mul::grumpkin_fixed_base(secret);\n assert(owner_public_key.x == computed_public_key[0]);\n assert(owner_public_key.y == computed_public_key[1]);\n\n secret\n}\n",
1002
1014
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/get_secret_key.nr"
1003
1015
  },
1004
- "96": {
1005
- "source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 16;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue bellow is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal BLOCK_HEADER_LENGTH: Field = 7;\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we\n// should change this constant as well as the offsets in private_call_stack_item.nr\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195;\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87;\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
1016
+ "98": {
1017
+ "source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 16;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue bellow is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal BLOCK_HEADER_LENGTH: Field = 7;\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we\n// should change this constant as well as the offsets in private_call_stack_item.nr\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195;\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87;\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
1006
1018
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr"
1007
1019
  },
1008
- "99": {
1009
- "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint128::U128;\nuse crate::utils::uint256::U256;\nuse crate::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS,\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n function_tree_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, function_tree_root };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256 : Field = 2;\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_field(previous_log_hash[0]),\n U128::from_field(previous_log_hash[1]),\n U128::from_field(current_log_hash[0]),\n U128::from_field(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
1020
+ "104": {
1021
+ "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS,\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n function_tree_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, function_tree_root };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
1010
1022
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr"
1011
1023
  },
1012
- "115": {
1013
- "source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n },\n hash::pedersen_hash,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Empty;\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(pub_key: GrumpkinPoint, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_key.x, pub_key.y, partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n \n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl EthAddress{\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn to_field(self) -> Field{\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl PartialAddress {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(contract_address_salt : Field, function_tree_root : Field, constructor_hash : Field) -> Self {\n PartialAddress::from_field(\n pedersen_hash([\n // TODO why the zeroes?\n 0,\n 0,\n contract_address_salt,\n function_tree_root,\n constructor_hash\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
1024
+ "120": {
1025
+ "source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n },\n hash::pedersen_hash,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, ToField};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(pub_key: GrumpkinPoint, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_key.x, pub_key.y, partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n \n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl EthAddress{\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(contract_address_salt : Field, function_tree_root : Field, constructor_hash : Field) -> Self {\n PartialAddress::from_field(\n pedersen_hash([\n // TODO why the zeroes?\n 0,\n 0,\n contract_address_salt,\n function_tree_root,\n constructor_hash\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
1014
1026
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/address.nr"
1015
1027
  },
1016
- "120": {
1028
+ "125": {
1017
1029
  "source": "use crate::address::EthAddress;\nuse crate::constants::{\n CONTRACT_DEPLOYMENT_DATA_LENGTH,\n GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA,\n};\nuse crate::hash::pedersen_hash;\nuse crate::grumpkin_point::GrumpkinPoint;\nuse crate::traits::Hash;\n\n// docs:start:contract-deployment-data\nstruct ContractDeploymentData {\n deployer_public_key : GrumpkinPoint,\n constructor_vk_hash : Field,\n function_tree_root : Field,\n contract_address_salt : Field,\n portal_contract_address : EthAddress,\n}\n// docs:end:contract-deployment-data\n\nimpl Hash for ContractDeploymentData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA)\n }\n}\n\nimpl ContractDeploymentData {\n fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] {\n [\n self.deployer_public_key.x,\n self.deployer_public_key.y,\n self.constructor_vk_hash,\n self.function_tree_root,\n self.contract_address_salt,\n self.portal_contract_address.to_field(),\n ]\n }\n\n fn assert_is_zero(self) {\n self.deployer_public_key.assert_is_zero();\n assert(self.constructor_vk_hash == 0);\n assert(self.function_tree_root == 0);\n assert(self.contract_address_salt == 0);\n self.portal_contract_address.assert_is_zero();\n }\n\n}\n",
1018
1030
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/deployment_data.nr"
1019
1031
  },
1020
- "121": {
1032
+ "126": {
1021
1033
  "source": "use crate::{\n constants::{\n CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Hash, Empty};\n\nstruct StorageUpdateRequest{\n storage_slot : Field,\n old_value : Field,\n new_value : Field,\n}\n\nimpl Eq for StorageUpdateRequest {\n fn eq(self, request: Self) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n (request.storage_slot == self.storage_slot)\n & (request.old_value == self.old_value)\n & (request.new_value == self.new_value)\n }\n}\n\nimpl Empty for StorageUpdateRequest {\n fn empty() -> Self {\n StorageUpdateRequest {\n storage_slot: 0,\n old_value: 0,\n new_value: 0,\n }\n }\n}\n\nimpl Hash for StorageUpdateRequest {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST)\n }\n}\n\nimpl StorageUpdateRequest {\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH] {\n [self.storage_slot, self.old_value, self.new_value]\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
1022
1034
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_update_request.nr"
1023
1035
  },
1024
- "122": {
1036
+ "127": {
1025
1037
  "source": "use crate::{\n constants::{\n CONTRACT_STORAGE_READ_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_READ,\n },\n hash::pedersen_hash,\n};\nuse crate::traits::Empty;\n\nstruct StorageRead {\n storage_slot: Field,\n current_value: Field,\n}\n\nimpl Empty for StorageRead { \n fn empty() -> Self {\n Self {\n storage_slot: 0,\n current_value: 0,\n }\n }\n}\n\nimpl StorageRead {\n\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_READ_LENGTH] {\n [self.storage_slot, self.current_value]\n }\n\n pub fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_READ)\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
1026
1038
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_read.nr"
1027
1039
  },
1028
- "131": {
1040
+ "135": {
1029
1041
  "source": "use crate::abis::{\n function_data::FunctionData,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{\n GENERATOR_INDEX__CALL_STACK_ITEM,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n public_inputs: PrivateCircuitPublicInputs,\n function_data: FunctionData,\n // Not really needed for PrivateCallStackItem.\n is_execution_request: bool,\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.contract_address.to_field(),\n self.function_data.hash(),\n self.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs,\n };\n call_stack_item\n }\n}\n",
1030
1042
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr"
1031
1043
  },
1032
- "136": {
1033
- "source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash};\n\nstruct SideEffect{\n value: Field,\n counter: Field,\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffect {\n pub fn serialize(self) -> [Field; 2] {\n [self.value, self.counter]\n }\n\n pub fn deserialise(values: [Field; 2]) -> Self {\n Self {\n value: values[0],\n counter: values[1],\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.counter == 0)\n }\n}\n\nstruct SideEffectLinkedToNoteHash{\n value: Field,\n note_hash: Field,\n counter: Field,\n}\n\nimpl Eq for SideEffectLinkedToNoteHash {\n fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool {\n (self.value == side_effect.value)\n & (self.note_hash == side_effect.note_hash) \n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffectLinkedToNoteHash {\n fn empty() -> Self {\n SideEffectLinkedToNoteHash {\n value: 0,\n note_hash: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffectLinkedToNoteHash {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffectLinkedToNoteHash{\n pub fn serialize(self) -> [Field; 3] {\n [self.value, self.note_hash, self.counter]\n }\n\n pub fn deserialise(values: [Field; 3]) -> Self {\n Self {\n value: values[0],\n note_hash: values[1],\n counter: values[2],\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.note_hash == 0)\n & (self.counter == 0)\n }\n}\n\n",
1044
+ "140": {
1045
+ "source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash};\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\nstruct SideEffect{\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffect {\n pub fn serialize(self) -> [Field; 2] {\n [self.value, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 2]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.counter == 0)\n }\n}\n\nstruct SideEffectLinkedToNoteHash{\n value: Field,\n note_hash: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffectLinkedToNoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffectLinkedToNoteHash {\n fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool {\n (self.value == side_effect.value)\n & (self.note_hash == side_effect.note_hash) \n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffectLinkedToNoteHash {\n fn empty() -> Self {\n SideEffectLinkedToNoteHash {\n value: 0,\n note_hash: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffectLinkedToNoteHash {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffectLinkedToNoteHash{\n pub fn serialize(self) -> [Field; 3] {\n [self.value, self.note_hash, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 3]) -> Self {\n Self {\n value: values[0],\n note_hash: values[1],\n counter: values[2] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.note_hash == 0)\n & (self.counter == 0)\n }\n}\n\n",
1034
1046
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr"
1035
1047
  },
1036
- "139": {
1037
- "source": "use crate::constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n};\nuse crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n block_header::BlockHeader,\n },\n address::AztecAddress,\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::{NUM_FIELDS_PER_SHA256},\n utils::bounded_vec::BoundedVec,\n};\n\nstruct PublicCircuitPublicInputs{\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n prover_address: AztecAddress,\n}\n\nimpl PublicCircuitPublicInputs{\n fn hash(self) -> Field { \n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595) have mercy por favor \n let mut inputs: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0);\n inputs.push(self.call_context.hash());\n inputs.push(self.args_hash);\n inputs.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n inputs.push(self.contract_storage_update_requests[i].hash());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n inputs.push(self.contract_storage_reads[i].hash());\n }\n inputs.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n inputs.push(self.new_commitments[i].hash());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n inputs.push(self.new_nullifiers[i].hash());\n }\n inputs.push_array(self.new_l2_to_l1_msgs);\n inputs.push_array(self.unencrypted_logs_hash);\n inputs.push(self.unencrypted_log_preimages_length);\n inputs.push_array(self.block_header.serialize());\n inputs.push(self.prover_address.to_field());\n\n assert_eq(inputs.len(), PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PublicCircuitPublicInputs\");\n\n dep::std::hash::pedersen_hash_with_separator(inputs.storage, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n\n pub fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize()); \n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.push_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.push_array(self.contract_storage_reads[i].serialize());\n }\n fields.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.prover_address.to_field());\n fields.storage\n }\n}\n",
1048
+ "143": {
1049
+ "source": "use crate::constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n};\nuse crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n block_header::BlockHeader,\n },\n address::AztecAddress,\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n utils::bounded_vec::BoundedVec,\n};\n\nstruct PublicCircuitPublicInputs{\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n prover_address: AztecAddress,\n}\n\nimpl PublicCircuitPublicInputs{\n fn hash(self) -> Field { \n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595) have mercy por favor \n let mut inputs: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0);\n inputs.push(self.call_context.hash());\n inputs.push(self.args_hash);\n inputs.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n inputs.push(self.contract_storage_update_requests[i].hash());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n inputs.push(self.contract_storage_reads[i].hash());\n }\n inputs.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n inputs.push(self.new_commitments[i].hash());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n inputs.push(self.new_nullifiers[i].hash());\n }\n inputs.push_array(self.new_l2_to_l1_msgs);\n inputs.push_array(self.unencrypted_logs_hash);\n inputs.push(self.unencrypted_log_preimages_length);\n inputs.push_array(self.block_header.serialize());\n inputs.push(self.prover_address.to_field());\n\n assert_eq(inputs.len(), PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PublicCircuitPublicInputs\");\n\n dep::std::hash::pedersen_hash_with_separator(inputs.storage, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n\n pub fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize()); \n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.push_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.push_array(self.contract_storage_reads[i].serialize());\n }\n fields.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.prover_address.to_field());\n fields.storage\n }\n}\n",
1038
1050
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr"
1039
1051
  },
1040
- "141": {
1041
- "source": "use crate::{\n abis::{\n call_context::CallContext,\n block_header::BlockHeader,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::{\n NUM_FIELDS_PER_SHA256,\n pedersen_hash,\n },\n utils::bounded_vec::BoundedVec,\n};\nuse crate::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n RETURN_VALUES_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n \n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL],\n\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n end_side_effect_counter : Field,\n\n encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n contract_deployment_data: ContractDeploymentData,\n\n chain_id: Field,\n version: Field,\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0); \n fields.push(self.call_context.hash());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.contract_deployment_data.hash());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PrivateCircuitPublicInputs\");\n\n pedersen_hash(fields.storage, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push_array(self.contract_deployment_data.serialize());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\n#[test]\nfn serialization_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _serialized = pcpi.serialize();\n}\n\n#[test]\nfn hash_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _hashed = pcpi.hash();\n}\n",
1052
+ "145": {
1053
+ "source": "use crate::{\n abis::{\n call_context::CallContext,\n block_header::BlockHeader,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::{\n pedersen_hash,\n },\n utils::bounded_vec::BoundedVec,\n};\nuse crate::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n \n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL],\n\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n end_side_effect_counter : u32,\n\n encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n contract_deployment_data: ContractDeploymentData,\n\n chain_id: Field,\n version: Field,\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0); \n fields.push(self.call_context.hash());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.contract_deployment_data.hash());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PrivateCircuitPublicInputs\");\n\n pedersen_hash(fields.storage, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push_array(self.contract_deployment_data.serialize());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\n#[test]\nfn serialization_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _serialized = pcpi.serialize();\n}\n\n#[test]\nfn hash_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _hashed = pcpi.hash();\n}\n",
1042
1054
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr"
1043
1055
  },
1044
- "144": {
1056
+ "148": {
1045
1057
  "source": "use crate::abis::function_selector::FunctionSelector;\nuse crate::constants::GENERATOR_INDEX__FUNCTION_DATA;\n\nstruct FunctionData {\n // First four bytes of the abi encoding \n // of a function. \n selector : FunctionSelector,\n is_internal : bool,\n is_private : bool,\n is_constructor : bool,\n}\n\nimpl FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.selector.to_field(),\n self.is_internal as Field,\n self.is_private as Field,\n self.is_constructor as Field,\n ], GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n",
1046
1058
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_data.nr"
1047
1059
  },
1048
- "147": {
1049
- "source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Hash;\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter : Field,\n}\n// docs:end:call-context\n\nimpl Eq for CallContext {\n fn eq(self, call_context: CallContext) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n call_context.msg_sender.eq(self.msg_sender)\n & call_context.storage_contract_address.eq(self.storage_contract_address)\n & call_context.portal_contract_address.eq(self.portal_contract_address)\n & call_context.function_selector.eq(self.function_selector)\n & (call_context.is_delegate_call == self.is_delegate_call)\n & (call_context.is_static_call == self.is_static_call)\n & (call_context.is_contract_deployment == self.is_contract_deployment)\n & (call_context.start_side_effect_counter == self.start_side_effect_counter)\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n [\n self.msg_sender.to_field(),\n self.storage_contract_address.to_field(),\n self.portal_contract_address.to_field(),\n self.function_selector.to_field(),\n self.is_delegate_call as Field,\n self.is_static_call as Field,\n self.is_contract_deployment as Field,\n self.start_side_effect_counter,\n ]\n }\n\n fn assert_is_zero(self) {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n assert(self.msg_sender.to_field() == 0);\n assert(self.storage_contract_address.to_field() == 0);\n assert(self.portal_contract_address.to_field() == 0);\n assert(self.function_selector.to_field() == 0);\n assert(self.is_delegate_call == false);\n assert(self.is_static_call == false);\n assert(self.is_contract_deployment == false);\n assert(self.start_side_effect_counter == 0);\n }\n}\n",
1060
+ "153": {
1061
+ "source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Hash;\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl Eq for CallContext {\n fn eq(self, call_context: CallContext) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n call_context.msg_sender.eq(self.msg_sender)\n & call_context.storage_contract_address.eq(self.storage_contract_address)\n & call_context.portal_contract_address.eq(self.portal_contract_address)\n & call_context.function_selector.eq(self.function_selector)\n & (call_context.is_delegate_call == self.is_delegate_call)\n & (call_context.is_static_call == self.is_static_call)\n & (call_context.is_contract_deployment == self.is_contract_deployment)\n & (call_context.start_side_effect_counter == self.start_side_effect_counter)\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n [\n self.msg_sender.to_field(),\n self.storage_contract_address.to_field(),\n self.portal_contract_address.to_field(),\n self.function_selector.to_field(),\n self.is_delegate_call as Field,\n self.is_static_call as Field,\n self.is_contract_deployment as Field,\n self.start_side_effect_counter as Field,\n ]\n }\n\n fn assert_is_zero(self) {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n assert(self.msg_sender.to_field() == 0);\n assert(self.storage_contract_address.to_field() == 0);\n assert(self.portal_contract_address.to_field() == 0);\n assert(self.function_selector.to_field() == 0);\n assert(self.is_delegate_call == false);\n assert(self.is_static_call == false);\n assert(self.is_contract_deployment == false);\n assert(self.start_side_effect_counter == 0);\n }\n}\n",
1050
1062
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr"
1051
1063
  },
1052
- "153": {
1064
+ "159": {
1053
1065
  "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_u32(value: u32) -> Self {\n Self {\n inner : value,\n }\n }\n\n pub fn from_field(value : Field) -> Self {\n Self {\n inner : value as u32,\n }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n",
1054
1066
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_selector.nr"
1055
1067
  },
1056
- "181": {
1057
- "source": "use dep::aztec::abi;\nuse dep::aztec::types::vec::BoundedVec;\nuse dep::aztec::context::PrivateContext;\nuse dep::protocol_types::{\n abis::{\n call_stack_item::{\n PrivateCallStackItem,\n PublicCallStackItem,\n },\n function_selector::FunctionSelector,\n },\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.push_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
1068
+ "187": {
1069
+ "source": "use dep::aztec::abi;\nuse dep::aztec::types::vec::BoundedVec;\nuse dep::aztec::context::PrivateContext;\nuse dep::aztec::protocol_types::{\n abis::{\n call_stack_item::{\n PrivateCallStackItem,\n PublicCallStackItem,\n },\n function_selector::FunctionSelector,\n },\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.push_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
1058
1070
  "path": "/usr/src/yarn-project/aztec-nr/authwit/src/entrypoint.nr"
1059
1071
  },
1060
- "182": {
1061
- "source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
1072
+ "188": {
1073
+ "source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<Field, PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
1062
1074
  "path": "/usr/src/yarn-project/aztec-nr/authwit/src/account.nr"
1063
1075
  },
1064
- "185": {
1076
+ "191": {
1065
1077
  "source": "#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle<N>(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness<N>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n",
1066
1078
  "path": "/usr/src/yarn-project/aztec-nr/authwit/src/auth_witness.nr"
1067
1079
  },
1068
- "203": {
1069
- "source": "mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n use dep::std::option::Option;\n\n use dep::protocol_types::address::AztecAddress;\n\n use dep::aztec::{\n context::{PrivateContext, Context},\n note::{ note_header::NoteHeader, utils as note_utils },\n oracle::get_public_key::get_public_key,\n state_vars::immutable_singleton::ImmutableSingleton,\n };\n use dep::authwit:: {\n entrypoint::{ EntrypointPayload, ENTRYPOINT_PAYLOAD_SIZE },\n account::AccountActions,\n auth_witness::get_auth_witness,\n };\n\n use crate::public_key_note::{PublicKeyNote, PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN};\n\n struct Storage {\n // docs:start:storage\n signing_public_key: ImmutableSingleton<PublicKeyNote, PUBLIC_KEY_NOTE_LEN>,\n // docs:end:storage\n }\n\n impl Storage {\n fn init(context: Context) -> Self {\n Storage {\n // docs:start:storage_init\n signing_public_key: ImmutableSingleton::new(context, 1, PublicKeyNoteMethods),\n // docs:end:storage_init\n }\n }\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Constructs the contract\n #[aztec(private)]\n fn constructor(signing_pub_key_x: pub Field, signing_pub_key_y: pub Field) {\n let this = context.this_address();\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.signing_public_key.initialize(&mut pub_key_note, Option::none(), true);\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(Context::private(context));\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n let verification = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n // Computes notes hash and nullifier.\n // Note 1: Needs to be defined by every contract producing logs.\n // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes.\n unconstrained fn compute_note_hash_and_nullifier(\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]\n ) -> pub [Field; 4] {\n assert(storage_slot == 1);\n let note_header = NoteHeader::new(contract_address, nonce, storage_slot);\n note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, serialized_note)\n }\n}\n",
1080
+ "209": {
1081
+ "source": "mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n use dep::std::option::Option;\n\n use dep::aztec::protocol_types::address::AztecAddress;\n\n use dep::aztec::{\n context::{PrivateContext, Context},\n note::{ note_header::NoteHeader, utils as note_utils },\n oracle::get_public_key::get_public_key,\n state_vars::immutable_singleton::ImmutableSingleton,\n };\n use dep::authwit:: {\n entrypoint::{ EntrypointPayload, ENTRYPOINT_PAYLOAD_SIZE },\n account::AccountActions,\n auth_witness::get_auth_witness,\n };\n\n use crate::public_key_note::{PublicKeyNote, PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN};\n\n struct Storage {\n // docs:start:storage\n signing_public_key: ImmutableSingleton<PublicKeyNote, PUBLIC_KEY_NOTE_LEN>,\n // docs:end:storage\n }\n\n impl Storage {\n fn init(context: Context) -> Self {\n Storage {\n // docs:start:storage_init\n signing_public_key: ImmutableSingleton::new(context, 1, PublicKeyNoteMethods),\n // docs:end:storage_init\n }\n }\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Constructs the contract\n #[aztec(private)]\n fn constructor(signing_pub_key_x: pub Field, signing_pub_key_y: pub Field) {\n let this = context.this_address();\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.signing_public_key.initialize(&mut pub_key_note, Option::none(), true);\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(Context::private(context));\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n let verification = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n // Computes notes hash and nullifier.\n // Note 1: Needs to be defined by every contract producing logs.\n // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes.\n unconstrained fn compute_note_hash_and_nullifier(\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]\n ) -> pub [Field; 4] {\n assert(storage_slot == 1);\n let note_header = NoteHeader::new(contract_address, nonce, storage_slot);\n note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, serialized_note)\n }\n}\n",
1070
1082
  "path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/main.nr"
1071
1083
  },
1072
- "204": {
1073
- "source": "use dep::aztec::{\n note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_unique_siloed_note_hash,\n },\n hash::pedersen_hash,\n oracle::{\n get_secret_key::get_secret_key,\n get_public_key::get_public_key,\n },\n log::emit_encrypted_log,\n context::PrivateContext,\n};\nuse dep::protocol_types::address::AztecAddress;\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n owner: AztecAddress, // We store the owner address only to get the secret key to compute the nullifier and to broadcast\n header: NoteHeader,\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote {\n x,\n y,\n owner,\n header: NoteHeader::empty(),\n }\n }\n\n // serialize the note as 3 fields\n pub fn serialize(self) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n [self.x, self.y, self.owner.to_field()]\n }\n\n pub fn compute_nullifier(self) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = get_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n // Broadcasts the note as an encrypted log on L1.\n pub fn broadcast(self, context: &mut PrivateContext, slot: Field) {\n let encryption_pub_key = get_public_key(self.owner);\n emit_encrypted_log(\n context,\n (*context).this_address(),\n slot,\n encryption_pub_key,\n self.serialize(),\n );\n }\n}\n\nfn deserialize(serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]) -> PublicKeyNote {\n PublicKeyNote {\n x: serialized_note[0],\n y: serialized_note[1],\n owner: AztecAddress::from_field(serialized_note[2]),\n header: NoteHeader::empty()\n }\n}\n\nfn serialize(note: PublicKeyNote) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n note.serialize()\n}\n\nfn compute_note_hash(note: PublicKeyNote) -> Field {\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash(note.serialize(), 0)\n}\n\nfn compute_nullifier(note: PublicKeyNote) -> Field {\n note.compute_nullifier()\n}\n\nfn get_header(note: PublicKeyNote) -> NoteHeader {\n note.header\n}\n\nfn set_header(note: &mut PublicKeyNote, header: NoteHeader) {\n note.set_header(header);\n}\n\n// Broadcasts the note as an encrypted log on L1.\nfn broadcast(context: &mut PrivateContext, slot: Field, note: PublicKeyNote) {\n note.broadcast(context, slot);\n}\n\nglobal PublicKeyNoteMethods = NoteInterface {\n deserialize,\n serialize,\n compute_note_hash,\n compute_nullifier,\n get_header,\n set_header,\n broadcast,\n};\n",
1084
+ "210": {
1085
+ "source": "use dep::aztec::{\n note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_unique_siloed_note_hash,\n },\n hash::pedersen_hash,\n oracle::{\n get_secret_key::get_secret_key,\n get_public_key::get_public_key,\n },\n log::emit_encrypted_log,\n context::PrivateContext,\n};\nuse dep::aztec::protocol_types::address::AztecAddress;\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n owner: AztecAddress, // We store the owner address only to get the secret key to compute the nullifier and to broadcast\n header: NoteHeader,\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote {\n x,\n y,\n owner,\n header: NoteHeader::empty(),\n }\n }\n\n // serialize the note as 3 fields\n pub fn serialize(self) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n [self.x, self.y, self.owner.to_field()]\n }\n\n pub fn compute_nullifier(self) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = get_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n // Broadcasts the note as an encrypted log on L1.\n pub fn broadcast(self, context: &mut PrivateContext, slot: Field) {\n let encryption_pub_key = get_public_key(self.owner);\n emit_encrypted_log(\n context,\n (*context).this_address(),\n slot,\n encryption_pub_key,\n self.serialize(),\n );\n }\n}\n\nfn deserialize(serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]) -> PublicKeyNote {\n PublicKeyNote {\n x: serialized_note[0],\n y: serialized_note[1],\n owner: AztecAddress::from_field(serialized_note[2]),\n header: NoteHeader::empty()\n }\n}\n\nfn serialize(note: PublicKeyNote) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n note.serialize()\n}\n\nfn compute_note_hash(note: PublicKeyNote) -> Field {\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash(note.serialize(), 0)\n}\n\nfn compute_nullifier(note: PublicKeyNote) -> Field {\n note.compute_nullifier()\n}\n\nfn get_header(note: PublicKeyNote) -> NoteHeader {\n note.header\n}\n\nfn set_header(note: &mut PublicKeyNote, header: NoteHeader) {\n note.set_header(header);\n}\n\n// Broadcasts the note as an encrypted log on L1.\nfn broadcast(context: &mut PrivateContext, slot: Field, note: PublicKeyNote) {\n note.broadcast(context, slot);\n}\n\nglobal PublicKeyNoteMethods = NoteInterface {\n deserialize,\n serialize,\n compute_note_hash,\n compute_nullifier,\n get_header,\n set_header,\n broadcast,\n};\n",
1074
1086
  "path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr"
1075
1087
  }
1076
1088
  }