From b1518fe1c19e790c4884c79514dbef324781186f Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 16 Jul 2024 14:31:13 +0000 Subject: [PATCH 01/47] enabled poseidon gates in ultra --- barretenberg/barretenberg.code-workspace | 4 + .../arithmetization/mega_arithmetization.hpp | 9 +- .../arithmetization/ultra_arithmetization.hpp | 21 ++- .../mega_circuit_builder.cpp | 98 ----------- .../mega_circuit_builder.hpp | 3 - .../stdlib_circuit_builders/mega_flavor.hpp | 2 +- .../mega_recursive_flavor.hpp | 2 +- .../ultra_circuit_builder.cpp | 153 ++++++++++++++++++ .../ultra_circuit_builder.hpp | 3 + .../stdlib_circuit_builders/ultra_flavor.hpp | 91 +++++++---- .../ultra_recursive_flavor.hpp | 50 +----- .../ultra_honk/mega_composer.test.cpp | 14 +- .../ultra_honk/ultra_honk.test.cpp | 1 - 13 files changed, 256 insertions(+), 195 deletions(-) diff --git a/barretenberg/barretenberg.code-workspace b/barretenberg/barretenberg.code-workspace index cd08c7a3166..873d82c3685 100644 --- a/barretenberg/barretenberg.code-workspace +++ b/barretenberg/barretenberg.code-workspace @@ -147,4 +147,8 @@ "console": "internalConsole", } }, + "launch": { + "version": "0.2.0", + "configurations": [] + }, } \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp index 6ee5f10f25c..491923e878f 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp @@ -140,8 +140,8 @@ template class MegaArith { void pad_additional() { q_busread().emplace_back(0); - q_poseidon2_external().emplace_back(0); - q_poseidon2_internal().emplace_back(0); + // q_poseidon2_external().emplace_back(0); + // q_poseidon2_internal().emplace_back(0); }; /** @@ -153,8 +153,9 @@ template class MegaArith { void resize_additional(size_t new_size) { q_busread().resize(new_size); - q_poseidon2_external().resize(new_size); - q_poseidon2_internal().resize(new_size); + // WORKTODO: with this in ultra prolly we can delete these + // q_poseidon2_external().resize(new_size); + // q_poseidon2_internal().resize(new_size); }; }; diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp index 402ce07f9e0..e73574b40f6 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp @@ -21,8 +21,14 @@ template class UltraArith { T elliptic; T aux; T lookup; + T poseidon_external; + T poseidon_internal; - auto get() { return RefArray{ pub_inputs, arithmetic, delta_range, elliptic, aux, lookup }; } + auto get() + { + return RefArray{ pub_inputs, arithmetic, delta_range, elliptic, + aux, lookup, poseidon_external, poseidon_internal }; + } bool operator==(const UltraTraceBlocks& other) const = default; }; @@ -38,12 +44,14 @@ template class UltraArith { this->elliptic = FIXED_SIZE; this->aux = FIXED_SIZE; this->lookup = FIXED_SIZE; + this->poseidon_external = FIXED_SIZE; + this->poseidon_internal = FIXED_SIZE; } }; public: static constexpr size_t NUM_WIRES = 4; - static constexpr size_t NUM_SELECTORS = 11; + static constexpr size_t NUM_SELECTORS = 13; using FF = FF_; class UltraTraceBlock : public ExecutionTraceBlock { @@ -75,6 +83,8 @@ template class UltraArith { auto& q_elliptic() { return this->selectors[8]; }; auto& q_aux() { return this->selectors[9]; }; auto& q_lookup_type() { return this->selectors[10]; }; + auto& q_poseidon2_external() { return this->selectors[11]; }; + auto& q_poseidon2_internal() { return this->selectors[12]; }; }; struct TraceBlocks : public UltraTraceBlocks { @@ -107,8 +117,8 @@ template class UltraArith { auto get() { - return RefArray{ this->pub_inputs, this->arithmetic, this->delta_range, - this->elliptic, this->aux, this->lookup }; + return RefArray{ this->pub_inputs, this->arithmetic, this->delta_range, this->elliptic, + this->aux, this->lookup, this->poseidon_external, this->poseidon_internal }; } void summarize() const @@ -120,6 +130,9 @@ template class UltraArith { info("elliptic :\t", this->elliptic.size()); info("auxiliary :\t", this->aux.size()); info("lookups :\t", this->lookup.size()); + info("poseidon ext :\t", this->poseidon_external.size(), "/", this->poseidon_external.get_fixed_size()); + info("poseidon int :\t", this->poseidon_internal.size(), "/", this->poseidon_internal.get_fixed_size()); + info(""); } size_t get_total_structured_size() diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.cpp index c25dc3ac939..9ffffa60cc2 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.cpp @@ -46,52 +46,6 @@ template void MegaCircuitBuilder_::add_gates_to_ensure_all_pol read_idx = this->add_variable(raw_read_idx); read_return_data(read_idx); - // mock a poseidon external gate, with all zeros as input - this->blocks.poseidon_external.populate_wires(this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); - this->blocks.poseidon_external.q_m().emplace_back(0); - this->blocks.poseidon_external.q_1().emplace_back(0); - this->blocks.poseidon_external.q_2().emplace_back(0); - this->blocks.poseidon_external.q_3().emplace_back(0); - this->blocks.poseidon_external.q_c().emplace_back(0); - this->blocks.poseidon_external.q_arith().emplace_back(0); - this->blocks.poseidon_external.q_4().emplace_back(0); - this->blocks.poseidon_external.q_delta_range().emplace_back(0); - this->blocks.poseidon_external.q_lookup_type().emplace_back(0); - this->blocks.poseidon_external.q_elliptic().emplace_back(0); - this->blocks.poseidon_external.q_aux().emplace_back(0); - this->blocks.poseidon_external.q_busread().emplace_back(0); - this->blocks.poseidon_external.q_poseidon2_external().emplace_back(1); - this->blocks.poseidon_external.q_poseidon2_internal().emplace_back(0); - this->check_selector_length_consistency(); - ++this->num_gates; - - // dummy gate to be read into by previous poseidon external gate via shifts - this->create_dummy_gate( - this->blocks.poseidon_external, this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); - - // mock a poseidon internal gate, with all zeros as input - this->blocks.poseidon_internal.populate_wires(this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); - this->blocks.poseidon_internal.q_m().emplace_back(0); - this->blocks.poseidon_internal.q_1().emplace_back(0); - this->blocks.poseidon_internal.q_2().emplace_back(0); - this->blocks.poseidon_internal.q_3().emplace_back(0); - this->blocks.poseidon_internal.q_c().emplace_back(0); - this->blocks.poseidon_internal.q_arith().emplace_back(0); - this->blocks.poseidon_internal.q_4().emplace_back(0); - this->blocks.poseidon_internal.q_delta_range().emplace_back(0); - this->blocks.poseidon_internal.q_lookup_type().emplace_back(0); - this->blocks.poseidon_internal.q_elliptic().emplace_back(0); - this->blocks.poseidon_internal.q_aux().emplace_back(0); - this->blocks.poseidon_internal.q_busread().emplace_back(0); - this->blocks.poseidon_internal.q_poseidon2_external().emplace_back(0); - this->blocks.poseidon_internal.q_poseidon2_internal().emplace_back(1); - this->check_selector_length_consistency(); - ++this->num_gates; - - // dummy gate to be read into by previous poseidon internal gate via shifts - this->create_dummy_gate( - this->blocks.poseidon_internal, this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); - // add dummy mul accum op and an equality op this->queue_ecc_mul_accum(bb::g1::affine_element::one(), 2); this->queue_ecc_eq(); @@ -260,57 +214,5 @@ template void MegaCircuitBuilder_::apply_databus_selectors(con block.q_poseidon2_internal().emplace_back(0); } -/** - * @brief Poseidon2 external round gate, activates the q_poseidon2_external selector and relation - */ -template -void MegaCircuitBuilder_::create_poseidon2_external_gate(const poseidon2_external_gate_& in) -{ - auto& block = this->blocks.poseidon_external; - block.populate_wires(in.a, in.b, in.c, in.d); - block.q_m().emplace_back(0); - block.q_1().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); - block.q_2().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][1]); - block.q_3().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][2]); - block.q_c().emplace_back(0); - block.q_arith().emplace_back(0); - block.q_4().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][3]); - block.q_delta_range().emplace_back(0); - block.q_lookup_type().emplace_back(0); - block.q_elliptic().emplace_back(0); - block.q_aux().emplace_back(0); - block.q_busread().emplace_back(0); - block.q_poseidon2_external().emplace_back(1); - block.q_poseidon2_internal().emplace_back(0); - this->check_selector_length_consistency(); - ++this->num_gates; -} - -/** - * @brief Poseidon2 internal round gate, activates the q_poseidon2_internal selector and relation - */ -template -void MegaCircuitBuilder_::create_poseidon2_internal_gate(const poseidon2_internal_gate_& in) -{ - auto& block = this->blocks.poseidon_internal; - block.populate_wires(in.a, in.b, in.c, in.d); - block.q_m().emplace_back(0); - block.q_1().emplace_back(Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); - block.q_2().emplace_back(0); - block.q_3().emplace_back(0); - block.q_c().emplace_back(0); - block.q_arith().emplace_back(0); - block.q_4().emplace_back(0); - block.q_delta_range().emplace_back(0); - block.q_lookup_type().emplace_back(0); - block.q_elliptic().emplace_back(0); - block.q_aux().emplace_back(0); - block.q_busread().emplace_back(0); - block.q_poseidon2_external().emplace_back(0); - block.q_poseidon2_internal().emplace_back(1); - this->check_selector_length_consistency(); - ++this->num_gates; -} - template class MegaCircuitBuilder_; } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp index 1c4f87862f5..8678b75d819 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp @@ -208,9 +208,6 @@ template class MegaCircuitBuilder_ : public UltraCircuitBuilder_(BusId::CALLDATA)]; } const BusVector& get_return_data() { return databus[static_cast(BusId::RETURNDATA)]; } - - void create_poseidon2_external_gate(const poseidon2_external_gate_& in); - void create_poseidon2_internal_gate(const poseidon2_internal_gate_& in); }; using MegaCircuitBuilder = MegaCircuitBuilder_; } // namespace bb diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp index 3bfcd5f376e..4670e2803d2 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp @@ -67,7 +67,7 @@ class MegaFlavor { static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); - + static_assert(MAX_TOTAL_RELATION_LENGTH == 11); // BATCHED_RELATION_PARTIAL_LENGTH = algebraic degree of sumcheck relation *after* multiplying by the `pow_zeta` // random polynomial e.g. For \sum(x) [A(x) * B(x) + C(x)] * PowZeta(X), relation length = 2 and random relation // length = 3 diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp index 8fb2b70c659..d16402ee4a8 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp @@ -195,7 +195,7 @@ template class MegaRecursiveFlavor_ { using CommitmentLabels = MegaFlavor::CommitmentLabels; // Reuse the VerifierCommitments from Mega using VerifierCommitments = MegaFlavor::VerifierCommitments_; - // Reuse the transcript from Mega + using Transcript = bb::BaseTranscript>; }; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp index 2797c1b8fcf..9ecf0266909 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp @@ -6,6 +6,7 @@ * */ #include "ultra_circuit_builder.hpp" +#include "barretenberg/crypto/poseidon2/poseidon2_params.hpp" #include #include #include @@ -75,6 +76,8 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -94,6 +97,9 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no blocks.delta_range.q_lookup_type().emplace_back(0); blocks.delta_range.q_elliptic().emplace_back(0); blocks.delta_range.q_aux().emplace_back(0); + blocks.delta_range.q_poseidon2_external().emplace_back(0); + blocks.delta_range.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { blocks.delta_range.pad_additional(); } @@ -114,6 +120,9 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no blocks.elliptic.q_lookup_type().emplace_back(0); blocks.elliptic.q_elliptic().emplace_back(1); blocks.elliptic.q_aux().emplace_back(0); + blocks.elliptic.q_poseidon2_external().emplace_back(0); + blocks.elliptic.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { blocks.elliptic.pad_additional(); } @@ -134,6 +143,9 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no blocks.aux.q_lookup_type().emplace_back(0); blocks.aux.q_elliptic().emplace_back(0); blocks.aux.q_aux().emplace_back(1); + blocks.aux.q_poseidon2_external().emplace_back(0); + blocks.aux.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { blocks.aux.pad_additional(); } @@ -164,6 +176,54 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no plookup::MultiTableId::HONK_DUMMY_MULTI, left_witness_value, right_witness_value, true); create_gates_from_plookup_accumulators( plookup::MultiTableId::HONK_DUMMY_MULTI, dummy_accumulators, left_witness_index, right_witness_index); + + // mock a poseidon external gate, with all zeros as input + blocks.poseidon_external.populate_wires(this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); + blocks.poseidon_external.q_m().emplace_back(0); + blocks.poseidon_external.q_1().emplace_back(0); + blocks.poseidon_external.q_2().emplace_back(0); + blocks.poseidon_external.q_3().emplace_back(0); + blocks.poseidon_external.q_c().emplace_back(0); + blocks.poseidon_external.q_arith().emplace_back(0); + blocks.poseidon_external.q_4().emplace_back(0); + blocks.poseidon_external.q_delta_range().emplace_back(0); + blocks.poseidon_external.q_lookup_type().emplace_back(0); + blocks.poseidon_external.q_elliptic().emplace_back(0); + blocks.poseidon_external.q_aux().emplace_back(0); + blocks.poseidon_external.q_poseidon2_external().emplace_back(1); + blocks.poseidon_external.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { + blocks.poseidon_external.pad_additional(); + } + check_selector_length_consistency(); + ++this->num_gates; + + // dummy gate to be read into by previous poseidon external gate via shifts + this->create_dummy_gate(blocks.poseidon_external, this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); + + // mock a poseidon internal gate, with all zeros as input + blocks.poseidon_internal.populate_wires(this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); + blocks.poseidon_internal.q_m().emplace_back(0); + blocks.poseidon_internal.q_1().emplace_back(0); + blocks.poseidon_internal.q_2().emplace_back(0); + blocks.poseidon_internal.q_3().emplace_back(0); + blocks.poseidon_internal.q_c().emplace_back(0); + blocks.poseidon_internal.q_arith().emplace_back(0); + blocks.poseidon_internal.q_4().emplace_back(0); + blocks.poseidon_internal.q_delta_range().emplace_back(0); + blocks.poseidon_internal.q_lookup_type().emplace_back(0); + blocks.poseidon_internal.q_elliptic().emplace_back(0); + blocks.poseidon_internal.q_aux().emplace_back(0); + blocks.poseidon_internal.q_poseidon2_external().emplace_back(0); + blocks.poseidon_internal.q_poseidon2_internal().emplace_back(1); + if constexpr (HasAdditionalSelectors) { + blocks.poseidon_internal.pad_additional(); + } + check_selector_length_consistency(); + ++this->num_gates; + + // dummy gate to be read into by previous poseidon internal gate via shifts + create_dummy_gate(blocks.poseidon_internal, this->zero_idx, this->zero_idx, this->zero_idx, this->zero_idx); } /** @@ -191,6 +251,8 @@ void UltraCircuitBuilder_::create_add_gate(const add_triple_) { blocks.arithmetic.pad_additional(); } @@ -223,6 +285,8 @@ void UltraCircuitBuilder_::create_big_add_gate(const add_quad_< blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -317,6 +381,8 @@ void UltraCircuitBuilder_::create_big_mul_gate(const mul_quad_< blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -343,6 +409,8 @@ void UltraCircuitBuilder_::create_balanced_add_gate(const add_q blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -385,6 +453,8 @@ void UltraCircuitBuilder_::create_mul_gate(const mul_triple_) { blocks.arithmetic.pad_additional(); } @@ -414,6 +484,8 @@ void UltraCircuitBuilder_::create_bool_gate(const uint32_t vari blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -445,6 +517,8 @@ void UltraCircuitBuilder_::create_poly_gate(const poly_triple_< blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -504,6 +578,8 @@ void UltraCircuitBuilder_::create_ecc_add_gate(const ecc_add_ga block.q_lookup_type().emplace_back(0); block.q_elliptic().emplace_back(1); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -557,6 +633,8 @@ void UltraCircuitBuilder_::create_ecc_dbl_gate(const ecc_dbl_ga block.q_delta_range().emplace_back(0); block.q_lookup_type().emplace_back(0); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -589,6 +667,8 @@ void UltraCircuitBuilder_::fix_witness(const uint32_t witness_i blocks.arithmetic.q_lookup_type().emplace_back(0); blocks.arithmetic.q_elliptic().emplace_back(0); blocks.arithmetic.q_aux().emplace_back(0); + blocks.arithmetic.q_poseidon2_external().emplace_back(0); + blocks.arithmetic.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { blocks.arithmetic.pad_additional(); } @@ -673,6 +753,9 @@ plookup::ReadData UltraCircuitBuilder_::create_gates_ blocks.lookup.q_delta_range().emplace_back(0); blocks.lookup.q_elliptic().emplace_back(0); blocks.lookup.q_aux().emplace_back(0); + blocks.lookup.q_poseidon2_external().emplace_back(0); + blocks.lookup.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { blocks.lookup.pad_additional(); } @@ -983,6 +1066,9 @@ void UltraCircuitBuilder_::create_sort_constraint(const std::ve blocks.delta_range.q_elliptic().emplace_back(0); blocks.delta_range.q_lookup_type().emplace_back(0); blocks.delta_range.q_aux().emplace_back(0); + blocks.delta_range.q_poseidon2_external().emplace_back(0); + blocks.delta_range.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { blocks.delta_range.pad_additional(); } @@ -1017,6 +1103,9 @@ void UltraCircuitBuilder_::create_dummy_gate( block.q_elliptic().emplace_back(0); block.q_lookup_type().emplace_back(0); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -1075,6 +1164,8 @@ void UltraCircuitBuilder_::create_sort_constraint_with_edges( block.q_elliptic().emplace_back(0); block.q_lookup_type().emplace_back(0); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -1098,6 +1189,8 @@ void UltraCircuitBuilder_::create_sort_constraint_with_edges( block.q_elliptic().emplace_back(0); block.q_lookup_type().emplace_back(0); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -1215,9 +1308,12 @@ void UltraCircuitBuilder_::apply_aux_selectors(const AUX_SELECT { auto& block = blocks.aux; block.q_aux().emplace_back(type == AUX_SELECTORS::NONE ? 0 : 1); + // Set to zero the selectors that are not enabled for this gate block.q_delta_range().emplace_back(0); block.q_lookup_type().emplace_back(0); block.q_elliptic().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); switch (type) { case AUX_SELECTORS::LIMB_ACCUMULATE_1: { block.q_1().emplace_back(0); @@ -1636,6 +1732,9 @@ std::array UltraCircuitBuilder_::evaluate_non_nati blocks.aux.q_lookup_type().emplace_back(0); blocks.aux.q_elliptic().emplace_back(0); blocks.aux.q_aux().emplace_back(0); + blocks.aux.q_poseidon2_external().emplace_back(0); + blocks.aux.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { blocks.aux.pad_additional(); } @@ -1920,6 +2019,8 @@ std::array UltraCircuitBuilder_::evaluate_non_nati block.q_lookup_type().emplace_back(0); block.q_elliptic().emplace_back(0); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -2040,6 +2141,8 @@ std::array UltraCircuitBuilder_::evaluate_non_nati block.q_lookup_type().emplace_back(0); block.q_elliptic().emplace_back(0); block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(0); if constexpr (HasAdditionalSelectors) { block.pad_additional(); } @@ -2695,6 +2798,56 @@ template void UltraCircuitBuilder_:: } } +/** + * @brief Poseidon2 external round gate, activates the q_poseidon2_external selector and relation + */ +template +void UltraCircuitBuilder_::create_poseidon2_external_gate(const poseidon2_external_gate_& in) +{ + auto& block = this->blocks.poseidon_external; + block.populate_wires(in.a, in.b, in.c, in.d); + block.q_m().emplace_back(0); + block.q_1().emplace_back(crypto::Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); + block.q_2().emplace_back(crypto::Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][1]); + block.q_3().emplace_back(crypto::Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][2]); + block.q_c().emplace_back(0); + block.q_arith().emplace_back(0); + block.q_4().emplace_back(crypto::Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][3]); + block.q_delta_range().emplace_back(0); + block.q_lookup_type().emplace_back(0); + block.q_elliptic().emplace_back(0); + block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(1); + block.q_poseidon2_internal().emplace_back(0); + this->check_selector_length_consistency(); + ++this->num_gates; +} + +/** + * @brief Poseidon2 internal round gate, activates the q_poseidon2_internal selector and relation + */ +template +void UltraCircuitBuilder_::create_poseidon2_internal_gate(const poseidon2_internal_gate_& in) +{ + auto& block = this->blocks.poseidon_internal; + block.populate_wires(in.a, in.b, in.c, in.d); + block.q_m().emplace_back(0); + block.q_1().emplace_back(crypto::Poseidon2Bn254ScalarFieldParams::round_constants[in.round_idx][0]); + block.q_2().emplace_back(0); + block.q_3().emplace_back(0); + block.q_c().emplace_back(0); + block.q_arith().emplace_back(0); + block.q_4().emplace_back(0); + block.q_delta_range().emplace_back(0); + block.q_lookup_type().emplace_back(0); + block.q_elliptic().emplace_back(0); + block.q_aux().emplace_back(0); + block.q_poseidon2_external().emplace_back(0); + block.q_poseidon2_internal().emplace_back(1); + this->check_selector_length_consistency(); + ++this->num_gates; +} + template uint256_t UltraCircuitBuilder_::hash_circuit() { finalize_circuit(); diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp index 46657b10a09..a1e60614c69 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp @@ -814,6 +814,9 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase& in); + void create_poseidon2_internal_gate(const poseidon2_internal_gate_& in); + uint256_t hash_circuit(); msgpack::sbuffer export_circuit() override; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp index d9b010c320d..cf074a92496 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp @@ -14,6 +14,8 @@ #include "barretenberg/relations/elliptic_relation.hpp" #include "barretenberg/relations/logderiv_lookup_relation.hpp" #include "barretenberg/relations/permutation_relation.hpp" +#include "barretenberg/relations/poseidon2_external_relation.hpp" +#include "barretenberg/relations/poseidon2_internal_relation.hpp" #include "barretenberg/relations/relation_parameters.hpp" #include "barretenberg/relations/ultra_arithmetic_relation.hpp" #include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp" @@ -36,10 +38,10 @@ class UltraFlavor { static constexpr size_t NUM_WIRES = CircuitBuilder::NUM_WIRES; // The number of multivariate polynomials on which a sumcheck prover sumcheck operates (including shifts). We often // need containers of this size to hold related data, so we choose a name more agnostic than `NUM_POLYNOMIALS`. - static constexpr size_t NUM_ALL_ENTITIES = 42; + static constexpr size_t NUM_ALL_ENTITIES = 44; // The number of polynomials precomputed to describe a circuit and to aid a prover in constructing a satisfying // assignment of witnesses. We again choose a neutral name. - static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 25; + static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 27; // The total number of witness entities not including shifts. static constexpr size_t NUM_WITNESS_ENTITIES = 8; // Total number of folded polynomials, which is just all polynomials except the shifts @@ -54,11 +56,14 @@ class UltraFlavor { bb::LogDerivLookupRelation, bb::DeltaRangeConstraintRelation, bb::EllipticRelation, - bb::AuxiliaryRelation>; + bb::AuxiliaryRelation, + bb::Poseidon2ExternalRelation, + bb::Poseidon2InternalRelation>; + using Relations = Relations_; static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); - static_assert(MAX_PARTIAL_RELATION_LENGTH == 6); + static_assert(MAX_PARTIAL_RELATION_LENGTH == 7); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); static_assert(MAX_TOTAL_RELATION_LENGTH == 11); static constexpr size_t NUM_SUBRELATIONS = compute_number_of_subrelations(); @@ -98,37 +103,51 @@ class UltraFlavor { public: using DataType = DataType_; DEFINE_FLAVOR_MEMBERS(DataType, - q_m, // column 0 - q_c, // column 1 - q_l, // column 2 - q_r, // column 3 - q_o, // column 4 - q_4, // column 5 - q_arith, // column 6 - q_delta_range, // column 7 - q_elliptic, // column 8 - q_aux, // column 9 - q_lookup, // column 10 - sigma_1, // column 11 - sigma_2, // column 12 - sigma_3, // column 13 - sigma_4, // column 14 - id_1, // column 15 - id_2, // column 16 - id_3, // column 17 - id_4, // column 18 - table_1, // column 19 - table_2, // column 20 - table_3, // column 21 - table_4, // column 22 - lagrange_first, // column 23 - lagrange_last) // column 24 + q_m, // column 0 + q_c, // column 1 + q_l, // column 2 + q_r, // column 3 + q_o, // column 4 + q_4, // column 5 + q_arith, // column 6 + q_delta_range, // column 7 + q_elliptic, // column 8 + q_aux, // column 9 + q_lookup, // column 10 + q_poseidon2_external, // column 11 + q_poseidon2_internal, // column 12 + sigma_1, // column 13 + sigma_2, // column 14 + sigma_3, // column 15 + sigma_4, // column 16 + id_1, // column 17 + id_2, // column 18 + id_3, // column 19 + id_4, // column 20 + table_1, // column 21 + table_2, // column 22 + table_3, // column 23 + table_4, // column 24 + lagrange_first, // column 25 + lagrange_last) // column 26 static constexpr CircuitType CIRCUIT_TYPE = CircuitBuilder::CIRCUIT_TYPE; auto get_selectors() { - return RefArray{ q_m, q_c, q_l, q_r, q_o, q_4, q_arith, q_delta_range, q_elliptic, q_aux, q_lookup }; + return RefArray{ q_m, + q_c, + q_l, + q_r, + q_o, + q_4, + q_arith, + q_delta_range, + q_elliptic, + q_aux, + q_lookup, + q_poseidon2_external, + q_poseidon2_internal }; }; auto get_sigma_polynomials() { return RefArray{ sigma_1, sigma_2, sigma_3, sigma_4 }; }; auto get_id_polynomials() { return RefArray{ id_1, id_2, id_3, id_4 }; }; @@ -392,6 +411,8 @@ class UltraFlavor { const Commitment& q_elliptic, const Commitment& q_aux, const Commitment& q_lookup, + const Commitment& q_poseidon2_external, + const Commitment& q_poseidon2_internal, const Commitment& sigma_1, const Commitment& sigma_2, const Commitment& sigma_3, @@ -422,6 +443,8 @@ class UltraFlavor { this->q_elliptic = q_elliptic; this->q_aux = q_aux; this->q_lookup = q_lookup; + this->q_poseidon2_external = q_poseidon2_external; + this->q_poseidon2_internal = q_poseidon2_internal; this->sigma_1 = sigma_1; this->sigma_2 = sigma_2; this->sigma_3 = sigma_3; @@ -454,6 +477,8 @@ class UltraFlavor { q_elliptic, q_aux, q_lookup, + q_poseidon2_external, + q_poseidon2_internal, sigma_1, sigma_2, sigma_3, @@ -539,6 +564,8 @@ class UltraFlavor { q_elliptic = "Q_ELLIPTIC"; q_aux = "Q_AUX"; q_lookup = "Q_LOOKUP"; + q_poseidon2_external = "Q_POSEIDON2_EXTERNAL"; + q_poseidon2_internal = "Q_POSEIDON2_INTERNAL"; sigma_1 = "SIGMA_1"; sigma_2 = "SIGMA_2"; sigma_3 = "SIGMA_3"; @@ -565,7 +592,7 @@ class UltraFlavor { class VerifierCommitments_ : public AllEntities { public: VerifierCommitments_(const std::shared_ptr& verification_key, - const std::optional& witness_commitments = std::nullopt) + const std::optional>& witness_commitments = std::nullopt) { this->q_m = verification_key->q_m; this->q_c = verification_key->q_c; @@ -578,6 +605,8 @@ class UltraFlavor { this->q_elliptic = verification_key->q_elliptic; this->q_aux = verification_key->q_aux; this->q_lookup = verification_key->q_lookup; + this->q_poseidon2_external = verification_key->q_poseidon2_external; + this->q_poseidon2_internal = verification_key->q_poseidon2_internal; this->sigma_1 = verification_key->sigma_1; this->sigma_2 = verification_key->sigma_2; this->sigma_3 = verification_key->sigma_3; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp index 195097c2c7f..71048e41efb 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp @@ -73,7 +73,7 @@ template class UltraRecursiveFlavor_ { using Relations = UltraFlavor::Relations_; static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); - static_assert(MAX_PARTIAL_RELATION_LENGTH == 6); + static_assert(MAX_PARTIAL_RELATION_LENGTH == 7); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); static_assert(MAX_TOTAL_RELATION_LENGTH == 11); @@ -136,6 +136,8 @@ template class UltraRecursiveFlavor_ { this->q_elliptic = Commitment::from_witness(builder, native_key->q_elliptic); this->q_aux = Commitment::from_witness(builder, native_key->q_aux); this->q_lookup = Commitment::from_witness(builder, native_key->q_lookup); + this->q_poseidon2_external = Commitment::from_witness(builder, native_key->q_poseidon2_external); + this->q_poseidon2_internal = Commitment::from_witness(builder, native_key->q_poseidon2_internal); this->sigma_1 = Commitment::from_witness(builder, native_key->sigma_1); this->sigma_2 = Commitment::from_witness(builder, native_key->sigma_2); this->sigma_3 = Commitment::from_witness(builder, native_key->sigma_3); @@ -201,50 +203,8 @@ template class UltraRecursiveFlavor_ { using WitnessCommitments = UltraFlavor::WitnessEntities; - class VerifierCommitments : public UltraFlavor::AllEntities { - public: - VerifierCommitments(const std::shared_ptr& verification_key, - const std::optional& witness_commitments = std::nullopt) - { - this->q_m = verification_key->q_m; - this->q_l = verification_key->q_l; - this->q_r = verification_key->q_r; - this->q_o = verification_key->q_o; - this->q_4 = verification_key->q_4; - this->q_c = verification_key->q_c; - this->q_arith = verification_key->q_arith; - this->q_delta_range = verification_key->q_delta_range; - this->q_elliptic = verification_key->q_elliptic; - this->q_aux = verification_key->q_aux; - this->q_lookup = verification_key->q_lookup; - this->sigma_1 = verification_key->sigma_1; - this->sigma_2 = verification_key->sigma_2; - this->sigma_3 = verification_key->sigma_3; - this->sigma_4 = verification_key->sigma_4; - this->id_1 = verification_key->id_1; - this->id_2 = verification_key->id_2; - this->id_3 = verification_key->id_3; - this->id_4 = verification_key->id_4; - this->table_1 = verification_key->table_1; - this->table_2 = verification_key->table_2; - this->table_3 = verification_key->table_3; - this->table_4 = verification_key->table_4; - this->lagrange_first = verification_key->lagrange_first; - this->lagrange_last = verification_key->lagrange_last; - - if (witness_commitments.has_value()) { - auto commitments = witness_commitments.value(); - this->w_l = commitments.w_l; - this->w_r = commitments.w_r; - this->w_o = commitments.w_o; - this->lookup_inverses = commitments.lookup_inverses; - this->lookup_read_counts = commitments.lookup_read_counts; - this->lookup_read_tags = commitments.lookup_read_tags; - this->w_4 = commitments.w_4; - this->z_perm = commitments.z_perm; - } - } - }; + // Reuse the VerifierCommitments from Ultra + using VerifierCommitments = UltraFlavor::VerifierCommitments_; using Transcript = bb::BaseTranscript>; }; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/mega_composer.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/mega_composer.test.cpp index dcc4caef74c..360dd3f4f28 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/mega_composer.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/mega_composer.test.cpp @@ -16,7 +16,7 @@ using namespace bb; namespace { auto& engine = numeric::get_debug_randomness(); -class MegaHonkComposerTests : public ::testing::Test { +class MegaHonkTests : public ::testing::Test { protected: static void SetUpTestSuite() { bb::srs::init_crs_factory("../srs_db/ignition"); } @@ -64,7 +64,7 @@ class MegaHonkComposerTests : public ::testing::Test { * gates * */ -TEST_F(MegaHonkComposerTests, Basic) +TEST_F(MegaHonkTests, Basic) { MegaCircuitBuilder builder; @@ -79,7 +79,7 @@ TEST_F(MegaHonkComposerTests, Basic) * @brief Test proof construction/verification for a structured execution trace * */ -TEST_F(MegaHonkComposerTests, BasicStructured) +TEST_F(MegaHonkTests, BasicStructured) { MegaCircuitBuilder builder; @@ -102,7 +102,7 @@ TEST_F(MegaHonkComposerTests, BasicStructured) * with non-empty 'previous' data. This avoid complications with zero-commitments etc. * */ -TEST_F(MegaHonkComposerTests, SingleCircuit) +TEST_F(MegaHonkTests, SingleCircuit) { auto op_queue = std::make_shared(); @@ -125,7 +125,7 @@ TEST_F(MegaHonkComposerTests, SingleCircuit) * basic arithmetic gates * */ -TEST_F(MegaHonkComposerTests, MultipleCircuitsMergeOnly) +TEST_F(MegaHonkTests, MultipleCircuitsMergeOnly) { // Instantiate EccOpQueue. This will be shared across all circuits in the series auto op_queue = std::make_shared(); @@ -150,7 +150,7 @@ TEST_F(MegaHonkComposerTests, MultipleCircuitsMergeOnly) * basic arithmetic gates * */ -TEST_F(MegaHonkComposerTests, MultipleCircuitsHonkOnly) +TEST_F(MegaHonkTests, MultipleCircuitsHonkOnly) { // Instantiate EccOpQueue. This will be shared across all circuits in the series auto op_queue = std::make_shared(); @@ -175,7 +175,7 @@ TEST_F(MegaHonkComposerTests, MultipleCircuitsHonkOnly) * and basic arithmetic gates * */ -TEST_F(MegaHonkComposerTests, MultipleCircuitsHonkAndMerge) +TEST_F(MegaHonkTests, MultipleCircuitsHonkAndMerge) { // Instantiate EccOpQueue. This will be shared across all circuits in the series auto op_queue = std::make_shared(); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index 68b3bb7c484..f1ec1533430 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -97,7 +97,6 @@ TEST_F(UltraHonkTests, StructuredTrace) // Construct an instance with a structured execution trace TraceStructure trace_structure = TraceStructure::SMALL_TEST; auto instance = std::make_shared(builder, trace_structure); - info(instance->proving_key.circuit_size); UltraProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); UltraVerifier verifier(verification_key); From 49eca12b2a5d466a9e7c411510f692698bf80e51 Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 16 Jul 2024 16:12:09 +0000 Subject: [PATCH 02/47] add missing padding --- .../src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp | 1 + .../barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp | 2 +- .../stdlib_circuit_builders/ultra_circuit_builder.cpp | 6 ++++++ .../cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp index aa44a3def25..87f73763812 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp @@ -40,5 +40,6 @@ template field_t poseidon2::hash_buffer(C& builder, const std return hash(builder, elements); } template class poseidon2; +template class poseidon2; } // namespace bb::stdlib diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp index a388d58c5f6..9e93d84ac67 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp @@ -147,7 +147,7 @@ template class StdlibPoseidon2 : public testing::Test { } }; -using CircuitTypes = testing::Types; +using CircuitTypes = testing::Types; TYPED_TEST_SUITE(StdlibPoseidon2, CircuitTypes); diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp index 9ecf0266909..b6110bef917 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp @@ -2819,6 +2819,9 @@ void UltraCircuitBuilder_::create_poseidon2_external_gate(const poseidon2_ex block.q_aux().emplace_back(0); block.q_poseidon2_external().emplace_back(1); block.q_poseidon2_internal().emplace_back(0); + if constexpr (HasAdditionalSelectors) { + block.pad_additional(); + } this->check_selector_length_consistency(); ++this->num_gates; } @@ -2844,6 +2847,9 @@ void UltraCircuitBuilder_::create_poseidon2_internal_gate(const poseidon2_in block.q_aux().emplace_back(0); block.q_poseidon2_external().emplace_back(0); block.q_poseidon2_internal().emplace_back(1); + if constexpr (HasAdditionalSelectors) { + block.pad_additional(); + } this->check_selector_length_consistency(); ++this->num_gates; } diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index f1ec1533430..5dc4bfc2029 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -937,3 +937,5 @@ TEST_F(UltraHonkTests, range_constraint_small_variable) prove_and_verify(circuit_builder, /*expected_result=*/true); } + +// WORKTODO add tests with poseidon gate \ No newline at end of file From a5ccefadace85d42e71987bbb6923a4705431350 Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 16 Jul 2024 16:35:46 +0000 Subject: [PATCH 03/47] transcript produces constraints --- .../stdlib/honk_recursion/transcript/transcript.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp index 5aeeaf8a6c6..9e0f61dafd4 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp @@ -16,6 +16,10 @@ template struct StdlibTranscriptParams { ASSERT(!data.empty() && data[0].get_context() != nullptr); Builder* builder = data[0].get_context(); return stdlib::poseidon2::hash(*builder, data); + } else if constexpr (std::is_same_v) { + ASSERT(!data.empty() && data[0].get_context() != nullptr); + Builder* builder = data[0].get_context(); + return stdlib::poseidon2::hash(*builder, data); } else { // TODO(https://github.com/AztecProtocol/barretenberg/issues/1035): Add constraints for hashing in Ultra using NativeFr = bb::fr; From 1d863419c039c162d00324e924141a2221017750 Mon Sep 17 00:00:00 2001 From: maramihali Date: Wed, 17 Jul 2024 10:50:47 +0000 Subject: [PATCH 04/47] move print statement for number of gates post finalisation for client IVC rec vec --- barretenberg/cpp/src/barretenberg/bb/main.cpp | 3 +- .../CMakeLists.txt | 2 +- .../stdlib/hash/poseidon2/poseidon2.cpp | 1 + .../hash/poseidon2/poseidon2_permutation.cpp | 1 + .../honk_recursion/transcript/transcript.hpp | 48 ++++++++++--------- .../client_ivc_recursive_verifier.test.cpp | 4 +- .../ultra_circuit_builder.hpp | 2 + 7 files changed, 34 insertions(+), 27 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 0f7c839efd7..5deb680e329 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -576,10 +576,11 @@ void prove_tube(const std::string& output_path) ClientIVC verifier{ builder, input }; verifier.verify(proof); - info("num gates in tube circuit: ", builder->get_num_gates()); using Prover = UltraProver_; using Verifier = UltraVerifier_; Prover tube_prover{ *builder }; + // Print the number of gates post finalisation for a precise result + info("num gates in tube circuit: ", builder->get_num_gates()); auto tube_proof = tube_prover.construct_proof(); std::string tubeProofPath = output_path + "/proof"; write_file(tubeProofPath, to_buffer(tube_proof)); diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes_recursion/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/commitment_schemes_recursion/CMakeLists.txt index 71ce791bd34..c5ad5e22c36 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes_recursion/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes_recursion/CMakeLists.txt @@ -1 +1 @@ -barretenberg_module(commitment_schemes_recursion commitment_schemes stdlib_primitives) \ No newline at end of file +barretenberg_module(commitment_schemes_recursion commitment_schemes stdlib_poseidon2) \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp index 87f73763812..82aa0ffc054 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.cpp @@ -41,5 +41,6 @@ template field_t poseidon2::hash_buffer(C& builder, const std } template class poseidon2; template class poseidon2; +template class poseidon2; } // namespace bb::stdlib diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp index f3abe50a9d9..37cbd1d016a 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp @@ -312,5 +312,6 @@ void Poseidon2Permutation::matrix_multiplication_external( template class Poseidon2Permutation; template class Poseidon2Permutation; +template class Poseidon2Permutation; } // namespace bb::stdlib \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp index 9e0f61dafd4..26764d60af8 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp @@ -10,49 +10,51 @@ namespace bb::stdlib::recursion::honk { template struct StdlibTranscriptParams { using Fr = stdlib::field_t; using Proof = std::vector; + static inline Fr hash(const std::vector& data) { - if constexpr (std::is_same_v) { - ASSERT(!data.empty() && data[0].get_context() != nullptr); - Builder* builder = data[0].get_context(); - return stdlib::poseidon2::hash(*builder, data); - } else if constexpr (std::is_same_v) { - ASSERT(!data.empty() && data[0].get_context() != nullptr); - Builder* builder = data[0].get_context(); - return stdlib::poseidon2::hash(*builder, data); - } else { - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1035): Add constraints for hashing in Ultra - using NativeFr = bb::fr; - ASSERT(!data.empty() && data[0].get_context() != nullptr); - Builder* builder = data[0].get_context(); - // call the native hash on the data - std::vector native_data; - native_data.reserve(data.size()); - for (const auto& fr : data) { - native_data.push_back(fr.get_value()); - } - NativeFr hash_value = crypto::Poseidon2::hash(native_data); + ASSERT(!data.empty() && data[0].get_context() != nullptr); + + Builder* builder = data[0].get_context(); + return stdlib::poseidon2::hash(*builder, data); + // } else { + // // TODO(https://github.com/AztecProtocol/barretenberg/issues/1035): Add constraints for hashing in Ultra + // using NativeFr = bb::fr; + // ASSERT(!data.empty() && data[0].get_context() != nullptr); + // Builder* builder = data[0].get_context(); - Fr hash_field_ct = Fr::from_witness(builder, hash_value); - return hash_field_ct; - } + // // call the native hash on the data + // std::vector native_data; + // native_data.reserve(data.size()); + // for (const auto& fr : data) { + // native_data.push_back(fr.get_value()); + // } + // NativeFr hash_value = crypto::Poseidon2::hash(native_data); + + // Fr hash_field_ct = Fr::from_witness(builder, hash_value); + // return hash_field_ct; + // } } + template static inline T convert_challenge(const Fr& challenge) { Builder* builder = challenge.get_context(); return bb::stdlib::field_conversion::convert_challenge(*builder, challenge); } + template static constexpr size_t calc_num_bn254_frs() { return bb::stdlib::field_conversion::calc_num_bn254_frs(); } + template static inline T convert_from_bn254_frs(std::span frs) { ASSERT(!frs.empty() && frs[0].get_context() != nullptr); Builder* builder = frs[0].get_context(); return bb::stdlib::field_conversion::convert_from_bn254_frs(*builder, frs); } + template static inline std::vector convert_to_bn254_frs(const T& element) { Builder* builder = element.get_context(); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp index 4be2ca25960..224ad8e15d6 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp @@ -88,11 +88,11 @@ TEST_F(ClientIVCRecursionTests, Basic) // Generate the recursive verification circuit verifier.verify(proof); - info("Recursive Verifier: num gates = ", builder->num_gates); - EXPECT_EQ(builder->failed(), false) << builder->err(); EXPECT_TRUE(CircuitChecker::check(*builder)); + + info("Recursive Verifier: num gates = ", builder->num_gates); } } // namespace bb::stdlib::recursion::honk \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp index a1e60614c69..d7d4c6e5015 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp @@ -587,6 +587,8 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase Date: Thu, 18 Jul 2024 10:23:20 +0000 Subject: [PATCH 05/47] stuff.. --- barretenberg/cpp/CMakePresets.json | 2 +- .../cpp/src/barretenberg/execution_trace/execution_trace.cpp | 3 ++- .../cpp/src/barretenberg/plonk/composer/composer_lib.hpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/barretenberg/cpp/CMakePresets.json b/barretenberg/cpp/CMakePresets.json index b18d0604fd6..be1486c3cf7 100644 --- a/barretenberg/cpp/CMakePresets.json +++ b/barretenberg/cpp/CMakePresets.json @@ -71,7 +71,7 @@ "displayName": "Debugging build with Clang-16", "description": "Build with globally installed Clang-16 in debug mode", "inherits": "clang16", - "binaryDir": "build-debug", + "binaryDir": "build", "environment": { "CMAKE_BUILD_TYPE": "Debug", "CFLAGS": "-gdwarf-4", diff --git a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp index da72fd56703..7191be2a020 100644 --- a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp @@ -41,11 +41,12 @@ void ExecutionTrace_::add_wires_and_selectors_to_proving_key(TraceData& } proving_key.pub_inputs_offset = trace_data.pub_inputs_offset; } else if constexpr (IsPlonkFlavor) { + // Maybe, ignore the last two selectors here, would this work :-? for (size_t idx = 0; idx < trace_data.wires.size(); ++idx) { std::string wire_tag = "w_" + std::to_string(idx + 1) + "_lagrange"; proving_key.polynomial_store.put(wire_tag, std::move(trace_data.wires[idx])); } - for (size_t idx = 0; idx < trace_data.selectors.size(); ++idx) { + for (size_t idx = 0; idx < builder.selector_names.size(); ++idx) { proving_key.polynomial_store.put(builder.selector_names[idx] + "_lagrange", std::move(trace_data.selectors[idx])); } diff --git a/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp index 88c518cb4b3..e56ecead059 100644 --- a/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp @@ -19,7 +19,7 @@ struct SelectorProperties { */ void enforce_nonzero_selector_polynomials(const auto& circuit_constructor, auto* proving_key) { - for (size_t idx = 0; idx < circuit_constructor.num_selectors; ++idx) { + for (size_t idx = 0; idx < circuit_constructor.selector_names.size(); ++idx) { auto current_selector = proving_key->polynomial_store.get(circuit_constructor.selector_names[idx] + "_lagrange"); current_selector[current_selector.size() - 1] = idx + 1; From 269da29d314cfd95a07f47d4f8a794202fb50bd6 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 18 Jul 2024 14:42:24 +0000 Subject: [PATCH 06/47] fixing tests, fishing for remaiining bug --- .../examples/join_split/join_split.test.cpp | 2 +- .../execution_trace/execution_trace.cpp | 2 +- .../plonk/composer/composer_lib.hpp | 2 +- .../arithmetization/arithmetization.hpp | 6 -- .../arithmetization/ultra_arithmetization.hpp | 20 ++++-- .../protogalaxy/combiner.test.cpp | 26 +++---- .../protogalaxy/combiner_example_gen.py | 68 ++++++++++--------- .../honk_recursion/verifier/verifier.test.cpp | 11 ++- .../translator_circuit_builder.hpp | 4 +- 9 files changed, 79 insertions(+), 62 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp b/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp index 773c69d8941..7d7626a58ce 100644 --- a/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp +++ b/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp @@ -701,7 +701,7 @@ TEST_F(join_split_tests, test_0_input_notes_and_detect_circuit_change) // The below part detects any changes in the join-split circuit constexpr size_t DYADIC_CIRCUIT_SIZE = 1 << 16; - constexpr uint256_t CIRCUIT_HASH("0x470358e4d91c4c5296ef788b1165b2c439cd498f49c3f99386b002753ca3d0ee"); + constexpr uint256_t CIRCUIT_HASH("0x9170317e02f4131b84f6b4efdd3ac23e5f392d815df37750c8f05a94c64797b2"); const uint256_t circuit_hash = circuit.hash_circuit(); // circuit is finalized now diff --git a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp index 7191be2a020..949039ad318 100644 --- a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp @@ -46,7 +46,7 @@ void ExecutionTrace_::add_wires_and_selectors_to_proving_key(TraceData& std::string wire_tag = "w_" + std::to_string(idx + 1) + "_lagrange"; proving_key.polynomial_store.put(wire_tag, std::move(trace_data.wires[idx])); } - for (size_t idx = 0; idx < builder.selector_names.size(); ++idx) { + for (size_t idx = 0; idx < trace_data.selectors.size(); ++idx) { proving_key.polynomial_store.put(builder.selector_names[idx] + "_lagrange", std::move(trace_data.selectors[idx])); } diff --git a/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp index e56ecead059..88c518cb4b3 100644 --- a/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp @@ -19,7 +19,7 @@ struct SelectorProperties { */ void enforce_nonzero_selector_polynomials(const auto& circuit_constructor, auto* proving_key) { - for (size_t idx = 0; idx < circuit_constructor.selector_names.size(); ++idx) { + for (size_t idx = 0; idx < circuit_constructor.num_selectors; ++idx) { auto current_selector = proving_key->polynomial_store.get(circuit_constructor.selector_names[idx] + "_lagrange"); current_selector[current_selector.size() - 1] = idx + 1; diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/arithmetization.hpp index a32d7d83f09..86f0af86799 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/arithmetization.hpp @@ -77,10 +77,4 @@ template class ExecutionTr void set_fixed_size(uint32_t size_in) { fixed_size = size_in; } }; -class TranslatorArith { - public: - static constexpr size_t NUM_WIRES = 81; - static constexpr size_t NUM_SELECTORS = 0; -}; - } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp index e73574b40f6..a9c8c744ea2 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp @@ -130,8 +130,8 @@ template class UltraArith { info("elliptic :\t", this->elliptic.size()); info("auxiliary :\t", this->aux.size()); info("lookups :\t", this->lookup.size()); - info("poseidon ext :\t", this->poseidon_external.size(), "/", this->poseidon_external.get_fixed_size()); - info("poseidon int :\t", this->poseidon_internal.size(), "/", this->poseidon_internal.get_fixed_size()); + info("poseidon ext :\t", this->poseidon_external.size()); + info("poseidon int :\t", this->poseidon_internal.size()); info(""); } @@ -164,9 +164,19 @@ template class UltraArith { }; // Note: These are needed for Plonk only (for poly storage in a std::map). Must be in same order as above struct. - inline static const std::vector selector_names = { "q_m", "q_c", "q_1", "q_2", - "q_3", "q_4", "q_arith", "q_sort", - "q_elliptic", "q_aux", "table_type" }; + inline static const std::vector selector_names = { "q_m", + "q_c", + "q_1", + "q_2", + "q_3", + "q_4", + "q_arith", + "q_sort", + "q_elliptic", + "q_aux", + "table_type", + "q_poseidon2_external", + "q_poseidon2_internal" }; }; } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/protogalaxy/combiner.test.cpp b/barretenberg/cpp/src/barretenberg/protogalaxy/combiner.test.cpp index 4c47ac5086b..670511a9c67 100644 --- a/barretenberg/cpp/src/barretenberg/protogalaxy/combiner.test.cpp +++ b/barretenberg/cpp/src/barretenberg/protogalaxy/combiner.test.cpp @@ -29,6 +29,8 @@ TEST(Protogalaxy, CombinerOn2Instances) std::fill(polys.q_aux.begin(), polys.q_aux.end(), 0); std::fill(polys.q_lookup.begin(), polys.q_lookup.end(), 0); std::fill(polys.q_4.begin(), polys.q_4.end(), 0); + std::fill(polys.q_poseidon2_external.begin(), polys.q_poseidon2_external.end(), 0); + std::fill(polys.q_poseidon2_internal.begin(), polys.q_poseidon2_internal.end(), 0); std::fill(polys.w_4.begin(), polys.w_4.end(), 0); std::fill(polys.w_4_shift.begin(), polys.w_4_shift.end(), 0); }; @@ -55,18 +57,18 @@ TEST(Protogalaxy, CombinerOn2Instances) auto pow_polynomial = PowPolynomial(std::vector{ 2 }); auto result = prover.compute_combiner(instances, pow_polynomial); // The expected_result values are computed by running the python script combiner_example_gen.py - auto expected_result = Univariate(std::array{ 8600UL, - 12679448UL, - 73617560UL, - 220571672UL, - 491290520UL, - 923522840UL, - 1555017368UL, - 2423522840UL, - 3566787992UL, - 5022561560UL, - 6828592280UL, - 9022628888UL }); + auto expected_result = Univariate(std::array{ 9704UL, + 13245288UL, + 75534568UL, + 224626280UL, + 498269160UL, + 934211944UL, + 1570203368UL, + 2443992168UL, + 3593327080UL, + 5055956840UL, + 6869630184UL, + 9072095848UL }); EXPECT_EQ(result, expected_result); } else { std::vector> instance_data(NUM_INSTANCES); diff --git a/barretenberg/cpp/src/barretenberg/protogalaxy/combiner_example_gen.py b/barretenberg/cpp/src/barretenberg/protogalaxy/combiner_example_gen.py index bc0fb19128b..dee82425aa6 100644 --- a/barretenberg/cpp/src/barretenberg/protogalaxy/combiner_example_gen.py +++ b/barretenberg/cpp/src/barretenberg/protogalaxy/combiner_example_gen.py @@ -3,7 +3,7 @@ # np.set_printoptions(formatter={'int': hex}) -EXTENDED_RELATION_LENGTH = 13 +EXTENDED_RELATION_LENGTH = 12 class Row: # Construct a set of 'all' polynomials with a very simple structure @@ -20,38 +20,40 @@ def __init__(self, base_poly): self.q_elliptic = base_poly + 2 * 8 self.q_aux = base_poly + 2 * 9 self.q_lookup = base_poly + 2 * 10 - self.sigma_1 = base_poly + 2 * 11 - self.sigma_2 = base_poly + 2 * 12 - self.sigma_3 = base_poly + 2 * 13 - self.sigma_4 = base_poly + 2 * 14 - self.id_1 = base_poly + 2 * 15 - self.id_2 = base_poly + 2 * 16 - self.id_3 = base_poly + 2 * 17 - self.id_4 = base_poly + 2 * 18 - self.table_1 = base_poly + 2 * 19 - self.table_2 = base_poly + 2 * 20 - self.table_3 = base_poly + 2 * 21 - self.table_4 = base_poly + 2 * 22 - self.lagrange_first = base_poly + 2 * 23 - self.lagrange_last = base_poly + 2 * 24 - self.w_l = base_poly + 2 * 25 - self.w_r = base_poly + 2 * 26 - self.w_o = base_poly + 2 * 27 - self.w_4 = base_poly + 2 * 28 - self.sorted_accum = base_poly + 2 * 29 - self.z_perm = base_poly + 2 * 30 - self.z_lookup = base_poly + 2 * 31 - self.table_1_shift = base_poly + 2 * 32 - self.table_2_shift = base_poly + 2 * 33 - self.table_3_shift = base_poly + 2 * 34 - self.table_4_shift = base_poly + 2 * 35 - self.w_l_shift = base_poly + 2 * 36 - self.w_r_shift = base_poly + 2 * 37 - self.w_o_shift = base_poly + 2 * 38 - self.w_4_shift = base_poly + 2 * 39 - self.sorted_accum_shift = base_poly + 2 * 40 - self.z_perm_shift = base_poly + 2 * 41 - self.z_lookup_shift = base_poly + 2 * 42 + self.q_poseidon2_external_1 = base_poly + 2 * 11 + self.q_poseidon2_external_2 = base_poly + 2 * 12 + self.sigma_1 = base_poly + 2 * 13 + self.sigma_2 = base_poly + 2 * 14 + self.sigma_3 = base_poly + 2 * 15 + self.sigma_4 = base_poly + 2 * 16 + self.id_1 = base_poly + 2 * 17 + self.id_2 = base_poly + 2 * 18 + self.id_3 = base_poly + 2 * 19 + self.id_4 = base_poly + 2 * 20 + self.table_1 = base_poly + 2 * 21 + self.table_2 = base_poly + 2 * 22 + self.table_3 = base_poly + 2 * 23 + self.table_4 = base_poly + 2 * 24 + self.lagrange_first = base_poly + 2 * 25 + self.lagrange_last = base_poly + 2 * 26 + self.w_l = base_poly + 2 * 27 + self.w_r = base_poly + 2 * 28 + self.w_o = base_poly + 2 * 29 + self.w_4 = base_poly + 2 * 30 + self.sorted_accum = base_poly + 2 * 31 + self.z_perm = base_poly + 2 * 32 + self.z_lookup = base_poly + 2 * 33 + self.table_1_shift = base_poly + 2 * 34 + self.table_2_shift = base_poly + 2 * 35 + self.table_3_shift = base_poly + 2 * 36 + self.table_4_shift = base_poly + 2 * 37 + self.w_l_shift = base_poly + 2 * 38 + self.w_r_shift = base_poly + 2 * 39 + self.w_o_shift = base_poly + 2 * 40 + self.w_4_shift = base_poly + 2 * 41 + self.sorted_accum_shift = base_poly + 2 * 42 + self.z_perm_shift = base_poly + 2 * 43 + self.z_lookup_shift = base_poly + 2 * 44 def arith_relation(self): return self.q_m * self.w_l * self.w_r + self.q_l * self.w_l + self.q_r * self.w_r + self.q_o * self.w_o + self.q_c diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp index c1d2acecf79..e8f53f5366f 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp @@ -91,7 +91,7 @@ template class RecursiveVerifierTest : public testing /** * @brief Instantiate a recursive verification key from the native verification key produced by the inner cicuit - * builder. Check consistency beteen the native and stdlib types. + * builder. Check consistency between the native and stdlib types. * */ static void test_recursive_verification_key_creation() @@ -116,8 +116,15 @@ template class RecursiveVerifierTest : public testing } } + /** + * @brief Ensures that the recursive verifier circuit for two inner circuits of different size is the same as the + * proofs are currently constant. This is done by taking each trace block in part and checking all it's selector + * values. + * + */ static void test_independent_vk_hash() { + // Retrieves the trace blocks (each consisting of a specific gate) from the recursive verifier circuit auto get_blocks = [](size_t inner_size) { // Create an arbitrary inner circuit auto inner_circuit = create_inner_circuit(inner_size); @@ -139,6 +146,7 @@ template class RecursiveVerifierTest : public testing auto check_eq = [&broke](auto& p1, auto& p2) { for (size_t idx = 0; idx < p1.size(); idx++) { if (p1[idx] != p2[idx]) { + info("bad values p1: ", p1[idx], "p2: ", p2[idx]); broke = true; info("discrepancy at value index: ", idx); break; @@ -153,6 +161,7 @@ template class RecursiveVerifierTest : public testing info("block index: ", block_idx); size_t sel_idx = 0; for (auto [p_10, p_11] : zip_view(b_10.selectors, b_11.selectors)) { + info("sel index: ", sel_idx); check_eq(p_10, p_11); sel_idx++; diff --git a/barretenberg/cpp/src/barretenberg/translator_vm/translator_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/translator_vm/translator_circuit_builder.hpp index d72cb072bf3..2cc0dfd1c28 100644 --- a/barretenberg/cpp/src/barretenberg/translator_vm/translator_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/translator_vm/translator_circuit_builder.hpp @@ -73,10 +73,10 @@ class TranslatorCircuitBuilder : public CircuitBuilderBase { // We don't need templating for Goblin using Fr = bb::fr; using Fq = bb::fq; - using Arithmetization = TranslatorArith; public: - static constexpr size_t NUM_WIRES = Arithmetization::NUM_WIRES; + static constexpr size_t NUM_WIRES = 81; + static constexpr size_t NUM_SELECTORS = 0; /** * We won't need these standard gates that are defined as virtual in circuit builder base From f1edf5fb91f881675499680488d7d29f84eaad0b Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 18 Jul 2024 16:06:09 +0000 Subject: [PATCH 07/47] fix test + cleanups --- barretenberg/barretenberg.code-workspace | 4 ---- .../execution_trace/execution_trace.cpp | 1 - .../arithmetization/mega_arithmetization.hpp | 15 ++------------- .../arithmetization/ultra_arithmetization.hpp | 1 - .../stdlib/hash/poseidon2/poseidon2.test.cpp | 2 +- .../honk_recursion/transcript/transcript.hpp | 17 ----------------- .../client_ivc_recursive_verifier.test.cpp | 1 + .../verifier/ultra_recursive_verifier.cpp | 10 +++------- .../honk_recursion/verifier/verifier.test.cpp | 4 ++-- .../ultra_circuit_builder.cpp | 5 ----- .../barretenberg/ultra_honk/ultra_honk.test.cpp | 4 +--- 11 files changed, 10 insertions(+), 54 deletions(-) diff --git a/barretenberg/barretenberg.code-workspace b/barretenberg/barretenberg.code-workspace index 873d82c3685..cd08c7a3166 100644 --- a/barretenberg/barretenberg.code-workspace +++ b/barretenberg/barretenberg.code-workspace @@ -147,8 +147,4 @@ "console": "internalConsole", } }, - "launch": { - "version": "0.2.0", - "configurations": [] - }, } \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp index 949039ad318..da72fd56703 100644 --- a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp @@ -41,7 +41,6 @@ void ExecutionTrace_::add_wires_and_selectors_to_proving_key(TraceData& } proving_key.pub_inputs_offset = trace_data.pub_inputs_offset; } else if constexpr (IsPlonkFlavor) { - // Maybe, ignore the last two selectors here, would this work :-? for (size_t idx = 0; idx < trace_data.wires.size(); ++idx) { std::string wire_tag = "w_" + std::to_string(idx + 1) + "_lagrange"; proving_key.polynomial_store.put(wire_tag, std::move(trace_data.wires[idx])); diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp index 491923e878f..206b66e8322 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/mega_arithmetization.hpp @@ -137,12 +137,7 @@ template class MegaArith { * conventional Ultra arithmetization * */ - void pad_additional() - { - q_busread().emplace_back(0); - // q_poseidon2_external().emplace_back(0); - // q_poseidon2_internal().emplace_back(0); - }; + void pad_additional() { q_busread().emplace_back(0); }; /** * @brief Resizes all selectors which are not part of the conventional Ultra arithmetization @@ -150,13 +145,7 @@ template class MegaArith { * conventional Ultra arithmetization * @param new_size */ - void resize_additional(size_t new_size) - { - q_busread().resize(new_size); - // WORKTODO: with this in ultra prolly we can delete these - // q_poseidon2_external().resize(new_size); - // q_poseidon2_internal().resize(new_size); - }; + void resize_additional(size_t new_size) { q_busread().resize(new_size); }; }; struct TraceBlocks : public MegaTraceBlocks { diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp index a9c8c744ea2..bd07a5519df 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp @@ -132,7 +132,6 @@ template class UltraArith { info("lookups :\t", this->lookup.size()); info("poseidon ext :\t", this->poseidon_external.size()); info("poseidon int :\t", this->poseidon_internal.size()); - info(""); } size_t get_total_structured_size() diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp index 9e93d84ac67..a22998a2668 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp @@ -147,7 +147,7 @@ template class StdlibPoseidon2 : public testing::Test { } }; -using CircuitTypes = testing::Types; +using CircuitTypes = testing::Types; TYPED_TEST_SUITE(StdlibPoseidon2, CircuitTypes); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp index 26764d60af8..3bc2e70d156 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.hpp @@ -18,23 +18,6 @@ template struct StdlibTranscriptParams { Builder* builder = data[0].get_context(); return stdlib::poseidon2::hash(*builder, data); - // } else { - // // TODO(https://github.com/AztecProtocol/barretenberg/issues/1035): Add constraints for hashing in Ultra - // using NativeFr = bb::fr; - // ASSERT(!data.empty() && data[0].get_context() != nullptr); - // Builder* builder = data[0].get_context(); - - // // call the native hash on the data - // std::vector native_data; - // native_data.reserve(data.size()); - // for (const auto& fr : data) { - // native_data.push_back(fr.get_value()); - // } - // NativeFr hash_value = crypto::Poseidon2::hash(native_data); - - // Fr hash_field_ct = Fr::from_witness(builder, hash_value); - // return hash_field_ct; - // } } template static inline T convert_challenge(const Fr& challenge) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp index 224ad8e15d6..1885860414d 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp @@ -92,6 +92,7 @@ TEST_F(ClientIVCRecursionTests, Basic) EXPECT_TRUE(CircuitChecker::check(*builder)); + // Print the number of gates post finalisation info("Recursive Verifier: num gates = ", builder->num_gates); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp index b54f21f0705..36cedbe21d4 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp @@ -126,18 +126,14 @@ std::array UltraRecursiveVerifier_::ve // Execute Sumcheck Verifier and extract multivariate opening point u = (u_0, ..., u_{d-1}) and purported // multivariate evaluations at u - const size_t log_circuit_size = numeric::get_msb(static_cast(key->circuit_size)); - auto sumcheck = Sumcheck(log_circuit_size, transcript); + auto sumcheck = Sumcheck(CONST_PROOF_SIZE_LOG_N, transcript); RelationSeparator alpha; for (size_t idx = 0; idx < alpha.size(); idx++) { alpha[idx] = transcript->template get_challenge("alpha_" + std::to_string(idx)); } - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1041): Once hashing produces constraints for Ultra in - // the transcript, a fixed number of gate_challenges must be generated by the prover/verifier in order to achieve a - // verification circuit that is independent of proof size. - auto gate_challenges = std::vector(log_circuit_size); - for (size_t idx = 0; idx < log_circuit_size; idx++) { + auto gate_challenges = std::vector(CONST_PROOF_SIZE_LOG_N); + for (size_t idx = 0; idx < CONST_PROOF_SIZE_LOG_N; idx++) { gate_challenges[idx] = transcript->template get_challenge("Sumcheck:gate_challenge_" + std::to_string(idx)); } auto [multivariate_challenge, claimed_evaluations, sumcheck_verified] = diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp index e8f53f5366f..70951e30224 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp @@ -144,11 +144,10 @@ template class RecursiveVerifierTest : public testing bool broke(false); auto check_eq = [&broke](auto& p1, auto& p2) { + EXPECT_TRUE(p1.size() == p2.size()); for (size_t idx = 0; idx < p1.size(); idx++) { if (p1[idx] != p2[idx]) { - info("bad values p1: ", p1[idx], "p2: ", p2[idx]); broke = true; - info("discrepancy at value index: ", idx); break; } } @@ -168,6 +167,7 @@ template class RecursiveVerifierTest : public testing } block_idx++; } + EXPECT_FALSE(broke); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp index b6110bef917..a1c3d6205ac 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp @@ -122,7 +122,6 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no blocks.elliptic.q_aux().emplace_back(0); blocks.elliptic.q_poseidon2_external().emplace_back(0); blocks.elliptic.q_poseidon2_internal().emplace_back(0); - if constexpr (HasAdditionalSelectors) { blocks.elliptic.pad_additional(); } @@ -145,7 +144,6 @@ void UltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_no blocks.aux.q_aux().emplace_back(1); blocks.aux.q_poseidon2_external().emplace_back(0); blocks.aux.q_poseidon2_internal().emplace_back(0); - if constexpr (HasAdditionalSelectors) { blocks.aux.pad_additional(); } @@ -755,7 +753,6 @@ plookup::ReadData UltraCircuitBuilder_::create_gates_ blocks.lookup.q_aux().emplace_back(0); blocks.lookup.q_poseidon2_external().emplace_back(0); blocks.lookup.q_poseidon2_internal().emplace_back(0); - if constexpr (HasAdditionalSelectors) { blocks.lookup.pad_additional(); } @@ -1068,7 +1065,6 @@ void UltraCircuitBuilder_::create_sort_constraint(const std::ve blocks.delta_range.q_aux().emplace_back(0); blocks.delta_range.q_poseidon2_external().emplace_back(0); blocks.delta_range.q_poseidon2_internal().emplace_back(0); - if constexpr (HasAdditionalSelectors) { blocks.delta_range.pad_additional(); } @@ -1734,7 +1730,6 @@ std::array UltraCircuitBuilder_::evaluate_non_nati blocks.aux.q_aux().emplace_back(0); blocks.aux.q_poseidon2_external().emplace_back(0); blocks.aux.q_poseidon2_internal().emplace_back(0); - if constexpr (HasAdditionalSelectors) { blocks.aux.pad_additional(); } diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index 5dc4bfc2029..de79a7dbd84 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -936,6 +936,4 @@ TEST_F(UltraHonkTests, range_constraint_small_variable) circuit_builder.assert_equal(a_idx, c_idx); prove_and_verify(circuit_builder, /*expected_result=*/true); -} - -// WORKTODO add tests with poseidon gate \ No newline at end of file +} \ No newline at end of file From 5058fa024bc28970336f26fe80f1fe3497aeb6a5 Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 19 Jul 2024 11:07:17 +0000 Subject: [PATCH 08/47] preset cleanup --- barretenberg/cpp/CMakePresets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/CMakePresets.json b/barretenberg/cpp/CMakePresets.json index be1486c3cf7..b18d0604fd6 100644 --- a/barretenberg/cpp/CMakePresets.json +++ b/barretenberg/cpp/CMakePresets.json @@ -71,7 +71,7 @@ "displayName": "Debugging build with Clang-16", "description": "Build with globally installed Clang-16 in debug mode", "inherits": "clang16", - "binaryDir": "build", + "binaryDir": "build-debug", "environment": { "CMAKE_BUILD_TYPE": "Debug", "CFLAGS": "-gdwarf-4", From bf37f09e9c41b5a64a7ac78d5a54afd668f918dc Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 19 Jul 2024 11:33:23 +0000 Subject: [PATCH 09/47] fixing tests --- .../stdlib/honk_recursion/verifier/verifier.test.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp index 70951e30224..35bfa138ff1 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp @@ -203,15 +203,7 @@ template class RecursiveVerifierTest : public testing pairing_points[1].get_value()); EXPECT_EQ(recursive_result, native_result); - // Check 2: Ensure that the underlying native and recursive verification algorithms agree by ensuring - // the manifests produced by each agree. - auto recursive_manifest = verifier.transcript->get_manifest(); - auto native_manifest = native_verifier.transcript->get_manifest(); - for (size_t i = 0; i < recursive_manifest.size(); ++i) { - EXPECT_EQ(recursive_manifest[i], native_manifest[i]); - } - - // Check 3: Construct and verify a proof of the recursive verifier circuit + // Check 2: Construct and verify a proof of the recursive verifier circuit if constexpr (!IsSimulator) { auto instance = std::make_shared(outer_circuit); OuterProver prover(instance); From e6884220cf91af1592614dd32d33c63b0b4af87b Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 22 Jul 2024 16:15:47 +0000 Subject: [PATCH 10/47] fix stuff --- .../goblin/goblin_recursion.test.cpp | 2 ++ .../verifier/ultra_recursive_verifier.cpp | 4 +++- .../honk_recursion/verifier/verifier.test.cpp | 16 +++++++++++++++- .../src/barretenberg/ultra_honk/ultra_prover.cpp | 2 +- .../barretenberg/ultra_honk/ultra_verifier.cpp | 6 +++--- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/goblin/goblin_recursion.test.cpp b/barretenberg/cpp/src/barretenberg/goblin/goblin_recursion.test.cpp index 760575a687c..ee7de1e128e 100644 --- a/barretenberg/cpp/src/barretenberg/goblin/goblin_recursion.test.cpp +++ b/barretenberg/cpp/src/barretenberg/goblin/goblin_recursion.test.cpp @@ -73,6 +73,8 @@ TEST_F(GoblinRecursionTests, Vanilla) auto translator_vkey = std::make_shared(goblin.get_translator_proving_key()); GoblinVerifier goblin_verifier{ eccvm_vkey, translator_vkey }; bool verified = goblin_verifier.verify(proof); + info(ultra_verified); + info(verified); EXPECT_TRUE(ultra_verified && verified); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp index 36cedbe21d4..4cd5acb23cc 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/ultra_recursive_verifier.cpp @@ -126,7 +126,9 @@ std::array UltraRecursiveVerifier_::ve // Execute Sumcheck Verifier and extract multivariate opening point u = (u_0, ..., u_{d-1}) and purported // multivariate evaluations at u - auto sumcheck = Sumcheck(CONST_PROOF_SIZE_LOG_N, transcript); + const size_t log_circuit_size = numeric::get_msb(static_cast(key->circuit_size)); + auto sumcheck = Sumcheck(log_circuit_size, transcript); + RelationSeparator alpha; for (size_t idx = 0; idx < alpha.size(); idx++) { alpha[idx] = transcript->template get_challenge("alpha_" + std::to_string(idx)); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp index 35bfa138ff1..a3f6fba8620 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp @@ -203,7 +203,21 @@ template class RecursiveVerifierTest : public testing pairing_points[1].get_value()); EXPECT_EQ(recursive_result, native_result); - // Check 2: Construct and verify a proof of the recursive verifier circuit + // Check 2: Ensure that the underlying native and recursive verification algorithms agree by ensuring + // the manifests produced by each agree. + auto recursive_manifest = verifier.transcript->get_manifest(); + recursive_manifest.print(); + auto native_manifest = native_verifier.transcript->get_manifest(); + native_manifest.print(); + for (size_t i = 0; i < recursive_manifest.size(); ++i) { + + EXPECT_EQ(recursive_manifest[i], native_manifest[i]); + if (recursive_manifest[i] != native_manifest[i]) { + info(i); + } + } + + // Check 3: Construct and verify a proof of the recursive verifier circuit if constexpr (!IsSimulator) { auto instance = std::make_shared(outer_circuit); OuterProver prover(instance); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp index 562562de67b..ef606a64e0d 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp @@ -39,7 +39,7 @@ template HonkProof UltraProver_::export_proof() } template void UltraProver_::generate_gate_challenges() { - std::vector gate_challenges(numeric::get_msb(instance->proving_key.circuit_size)); + std::vector gate_challenges(CONST_PROOF_SIZE_LOG_N); for (size_t idx = 0; idx < gate_challenges.size(); idx++) { gate_challenges[idx] = transcript->template get_challenge("Sumcheck:gate_challenge_" + std::to_string(idx)); } diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index 6804be61836..edd23f2dd8a 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -61,8 +61,8 @@ template bool UltraVerifier_::verify_proof(const HonkP const size_t log_circuit_size = static_cast(numeric::get_msb(key->circuit_size)); auto sumcheck = SumcheckVerifier(log_circuit_size, transcript); - auto gate_challenges = std::vector(log_circuit_size); - for (size_t idx = 0; idx < log_circuit_size; idx++) { + auto gate_challenges = std::vector(CONST_PROOF_SIZE_LOG_N); + for (size_t idx = 0; idx < CONST_PROOF_SIZE_LOG_N; idx++) { gate_challenges[idx] = transcript->template get_challenge("Sumcheck:gate_challenge_" + std::to_string(idx)); } auto [multivariate_challenge, claimed_evaluations, sumcheck_verified] = @@ -71,7 +71,7 @@ template bool UltraVerifier_::verify_proof(const HonkP // If Sumcheck did not verify, return false if (sumcheck_verified.has_value() && !sumcheck_verified.value()) { info("Sumcheck verification failed."); - return false; + // return false; } // Execute ZeroMorph rounds to produce an opening claim and verify it with a univariate PCS. See From 83ecd92f6dd735f3c0078ecd9c5ba744b005b6c8 Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 22 Jul 2024 16:32:30 +0000 Subject: [PATCH 11/47] remove prints --- .../stdlib/honk_recursion/verifier/verifier.test.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp index a3f6fba8620..70951e30224 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp @@ -206,15 +206,9 @@ template class RecursiveVerifierTest : public testing // Check 2: Ensure that the underlying native and recursive verification algorithms agree by ensuring // the manifests produced by each agree. auto recursive_manifest = verifier.transcript->get_manifest(); - recursive_manifest.print(); auto native_manifest = native_verifier.transcript->get_manifest(); - native_manifest.print(); for (size_t i = 0; i < recursive_manifest.size(); ++i) { - EXPECT_EQ(recursive_manifest[i], native_manifest[i]); - if (recursive_manifest[i] != native_manifest[i]) { - info(i); - } } // Check 3: Construct and verify a proof of the recursive verifier circuit From 42bae7de4d62346acf4b9476f9d444bc29e9946b Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 23 Jul 2024 09:48:39 +0000 Subject: [PATCH 12/47] uncomment line --- barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index 59771f01e50..1d1e6b0d05d 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -71,7 +71,7 @@ template bool UltraVerifier_::verify_proof(const HonkP // If Sumcheck did not verify, return false if (sumcheck_verified.has_value() && !sumcheck_verified.value()) { info("Sumcheck verification failed."); - // return false; + return false; } // Execute ZeroMorph rounds to produce an opening claim and verify it with a univariate PCS. See From 191b587d87d9093b835e3404cb56793af8ce23d7 Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 29 Jul 2024 05:56:29 +0000 Subject: [PATCH 13/47] added permutation that was missing and corrected check_circuit, something is still not working --- .../circuit_checker/ultra_circuit_checker.cpp | 22 +++++---- .../eccvm_recursive_verifier.test.cpp | 8 ++++ .../relations/logderiv_lookup_relation.hpp | 2 +- .../relations/ultra_arithmetic_relation.hpp | 4 +- .../hash/poseidon2/poseidon2_permutation.cpp | 12 ++--- .../hash/poseidon2/poseidon2_permutation.hpp | 12 ++--- .../circuit_simulator.hpp | 4 ++ .../stdlib_circuit_builders/ultra_flavor.hpp | 6 +-- .../stdlib_circuit_builders/ultra_keccak.hpp | 4 +- .../ultra_recursive_flavor.hpp | 4 +- .../src/barretenberg/sumcheck/sumcheck.hpp | 15 ++++++ .../barretenberg/sumcheck/sumcheck_round.hpp | 47 ++++++++----------- .../ultra_honk/ultra_verifier.cpp | 2 +- 13 files changed, 82 insertions(+), 60 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp b/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp index 23d9e745c52..02086ea84b2 100644 --- a/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp +++ b/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp @@ -105,15 +105,17 @@ bool UltraCircuitChecker::check_block(Builder& builder, if (!result) { return report_fail("Failed Lookup check relation at row idx = ", idx); } + result = result && check_relation(values, params); + if (!result) { + return report_fail("Failed PoseidonInternal relation at row idx = ", idx); + } + result = result && check_relation(values, params); + if (!result) { + return report_fail("Failed PoseidonExternal relation at row idx = ", idx); + } + if constexpr (IsMegaBuilder) { - result = result && check_relation(values, params); - if (!result) { - return report_fail("Failed PoseidonInternal relation at row idx = ", idx); - } - result = result && check_relation(values, params); - if (!result) { - return report_fail("Failed PoseidonExternal relation at row idx = ", idx); - } + result = result && check_databus_read(values, builder); if (!result) { return report_fail("Failed databus read at row idx = ", idx); @@ -289,10 +291,10 @@ void UltraCircuitChecker::populate_values( values.q_elliptic = block.q_elliptic()[idx]; values.q_aux = block.q_aux()[idx]; values.q_lookup = block.q_lookup_type()[idx]; + values.q_poseidon2_internal = block.q_poseidon2_internal()[idx]; + values.q_poseidon2_external = block.q_poseidon2_external()[idx]; if constexpr (IsMegaBuilder) { values.q_busread = block.q_busread()[idx]; - values.q_poseidon2_internal = block.q_poseidon2_internal()[idx]; - values.q_poseidon2_external = block.q_poseidon2_external()[idx]; } } diff --git a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp index 2d2c1fe93bf..27e5fceb9b6 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp @@ -1,4 +1,5 @@ #include "barretenberg/eccvm_recursion/eccvm_recursive_verifier.hpp" +#include "barretenberg/circuit_checker/circuit_checker.hpp" #include "barretenberg/eccvm/eccvm_prover.hpp" #include "barretenberg/eccvm/eccvm_verifier.hpp" #include "barretenberg/ultra_honk/ultra_prover.hpp" @@ -79,6 +80,7 @@ template class ECCVMRecursiveTests : public ::testing auto proof = prover.construct_proof(); auto verification_key = std::make_shared(prover.key); + info("ECCVM Recursive Verifier"); OuterBuilder outer_circuit; RecursiveVerifier verifier{ &outer_circuit, verification_key }; verifier.verify_proof(proof); @@ -87,6 +89,11 @@ template class ECCVMRecursiveTests : public ::testing // Check for a failure flag in the recursive verifier circuit EXPECT_EQ(outer_circuit.failed(), false) << outer_circuit.err(); + bool result = CircuitChecker::check(outer_circuit); + EXPECT_TRUE(result); + info("Result of circuit checker:", result); + + info("ECCVM Native Verifier"); InnerVerifier native_verifier(prover.key); bool native_result = native_verifier.verify_proof(proof); EXPECT_TRUE(native_result); @@ -108,6 +115,7 @@ template class ECCVMRecursiveTests : public ::testing // Construct a full proof from the recursive verifier circuit { + info("Ultra"); auto instance = std::make_shared(outer_circuit); OuterProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); diff --git a/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp b/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp index 7e39ebc7df8..d260c944a64 100644 --- a/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp +++ b/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp @@ -16,7 +16,7 @@ template class LogDerivLookupRelationImpl { static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; // 1 + polynomial degree of this relation - static constexpr size_t LENGTH = 5; // both subrelations are degree 4 + static constexpr size_t LENGTH = 6; // both subrelations are degree 4 static constexpr std::array SUBRELATION_PARTIAL_LENGTHS{ LENGTH, // inverse construction sub-relation diff --git a/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp b/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp index 69dfd2b9d11..c7b3e468454 100644 --- a/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp +++ b/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp @@ -8,8 +8,8 @@ template class UltraArithmeticRelationImpl { using FF = FF_; static constexpr std::array SUBRELATION_PARTIAL_LENGTHS{ - 6, // primary arithmetic sub-relation - 5 // secondary arithmetic sub-relation + 7, // primary arithmetic sub-relation + 6 // secondary arithmetic sub-relation }; /** diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp index 37cbd1d016a..ef7e26d5d69 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp @@ -17,7 +17,7 @@ namespace bb::stdlib { template typename Poseidon2Permutation::State Poseidon2Permutation::permutation( Builder* builder, const typename Poseidon2Permutation::State& input) - requires IsMegaBuilder + requires(!IsSimulator) { // deep copy State current_state(input); @@ -120,7 +120,7 @@ typename Poseidon2Permutation::State Poseidon2Permutation typename Poseidon2Permutation::State Poseidon2Permutation::permutation( Builder* builder, const typename Poseidon2Permutation::State& input) - requires IsNotMegaBuilder + requires IsSimulator { // deep copy State current_state(input); @@ -156,7 +156,7 @@ typename Poseidon2Permutation::State Poseidon2Permutation void Poseidon2Permutation::add_round_constants( State& input, const typename Poseidon2Permutation::RoundConstants& rc) - requires IsNotMegaBuilder + requires IsSimulator { for (size_t i = 0; i < t; ++i) { @@ -166,7 +166,7 @@ void Poseidon2Permutation::add_round_constants( template void Poseidon2Permutation::apply_sbox(State& input) - requires IsNotMegaBuilder + requires IsSimulator { for (auto& in : input) { apply_single_sbox(in); @@ -175,7 +175,7 @@ void Poseidon2Permutation::apply_sbox(State& input) template void Poseidon2Permutation::apply_single_sbox(field_t& input) - requires IsNotMegaBuilder + requires IsSimulator { // hardcoded assumption that d = 5. should fix this or not make d configurable auto xx = input.sqr(); @@ -185,7 +185,7 @@ void Poseidon2Permutation::apply_single_sbox(field_t& template void Poseidon2Permutation::matrix_multiplication_internal(State& input) - requires IsNotMegaBuilder + requires IsSimulator { // for t = 4 auto sum = input[0]; diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.hpp index 1b03a236893..da060206935 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.hpp @@ -45,18 +45,18 @@ template class Poseidon2Permutation { * @return State */ static State permutation(Builder* builder, const State& input) - requires IsMegaBuilder; + requires(!IsSimulator); static State permutation(Builder* builder, const State& input) - requires IsNotMegaBuilder; + requires IsSimulator; static void add_round_constants(State& input, const RoundConstants& rc) - requires IsNotMegaBuilder; + requires IsSimulator; static void apply_sbox(State& input) - requires IsNotMegaBuilder; + requires IsSimulator; static void apply_single_sbox(field_t& input) - requires IsNotMegaBuilder; + requires IsSimulator; static void matrix_multiplication_internal(State& input) - requires IsNotMegaBuilder; + requires IsSimulator; /** * @brief Separate function to do just the first linear layer (equivalent to external matrix mul). diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp index 184ff7ea554..959dd0def4d 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp @@ -1,5 +1,6 @@ #pragma once #include "barretenberg/ecc/curves/bn254/fr.hpp" + #include "barretenberg/plonk_honk_shared/arithmetization/gate_data.hpp" #include "barretenberg/plonk_honk_shared/types/circuit_type.hpp" #include "barretenberg/plonk_honk_shared/types/merkle_hash_type.hpp" @@ -88,6 +89,9 @@ class CircuitSimulatorBN254 { void create_fixed_group_add_gate_final([[maybe_unused]] const add_quad_& in){}; void create_ecc_add_gate([[maybe_unused]] const ecc_add_gate_& in){}; + void create_poseidon2_internal_gate(const poseidon2_internal_gate_& in); + void create_poseidon2_external_gate(const poseidon2_external_gate_& in); + plookup::ReadData create_gates_from_plookup_accumulators( [[maybe_unused]] const plookup::MultiTableId& id, [[maybe_unused]] const plookup::ReadData& read_values, diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp index 6ea946c0cbf..4ab87fe1022 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp @@ -53,19 +53,19 @@ class UltraFlavor { template using Relations_ = std::tuple, bb::UltraPermutationRelation, - bb::LogDerivLookupRelation, bb::DeltaRangeConstraintRelation, bb::EllipticRelation, bb::AuxiliaryRelation, + bb::LogDerivLookupRelation, bb::Poseidon2ExternalRelation, bb::Poseidon2InternalRelation>; using Relations = Relations_; static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); - static_assert(MAX_PARTIAL_RELATION_LENGTH == 7); + // static_assert(MAX_PARTIAL_RELATION_LENGTH == 7); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); - static_assert(MAX_TOTAL_RELATION_LENGTH == 11); + // static_assert(MAX_TOTAL_RELATION_LENGTH == 11); static constexpr size_t NUM_SUBRELATIONS = compute_number_of_subrelations(); // For instances of this flavour, used in folding, we need a unique sumcheck batching challenge for each // subrelation. This is because using powers of alpha would increase the degree of Protogalaxy polynomial $G$ (the diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp index 9b8d8dd6070..0b27e8c3b78 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp @@ -59,9 +59,9 @@ class UltraKeccakFlavor { using Relations = Relations_; static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); - static_assert(MAX_PARTIAL_RELATION_LENGTH == 6); + // static_assert(MAX_PARTIAL_RELATION_LENGTH == 6); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); - static_assert(MAX_TOTAL_RELATION_LENGTH == 11); + // static_assert(MAX_TOTAL_RELATION_LENGTH == 11); static constexpr size_t NUM_SUBRELATIONS = compute_number_of_subrelations(); // For instances of this flavour, used in folding, we need a unique sumcheck batching challenge for each // subrelation. This is because using powers of alpha would increase the degree of Protogalaxy polynomial $G$ (the diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp index 71048e41efb..90210ef1bc4 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp @@ -73,9 +73,9 @@ template class UltraRecursiveFlavor_ { using Relations = UltraFlavor::Relations_; static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); - static_assert(MAX_PARTIAL_RELATION_LENGTH == 7); + // static_assert(MAX_PARTIAL_RELATION_LENGTH == 7); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); - static_assert(MAX_TOTAL_RELATION_LENGTH == 11); + // static_assert(MAX_TOTAL_RELATION_LENGTH == 11); // BATCHED_RELATION_PARTIAL_LENGTH = algebraic degree of sumcheck relation *after* multiplying by the `pow_zeta` // random polynomial e.g. For \sum(x) [A(x) * B(x) + C(x)] * PowZeta(X), relation length = 2 and random relation diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp index d5f71eec3c1..7b764bc34fa 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp @@ -392,12 +392,14 @@ template class SumcheckVerifier { std::vector multivariate_challenge; multivariate_challenge.reserve(multivariate_d); for (size_t round_idx = 0; round_idx < CONST_PROOF_SIZE_LOG_N; round_idx++) { + info("Round number: ", round_idx); // Obtain the round univariate from the transcript std::string round_univariate_label = "Sumcheck:univariate_" + std::to_string(round_idx); auto round_univariate = transcript->template receive_from_prover>( round_univariate_label); FF round_challenge = transcript->template get_challenge("Sumcheck:u_" + std::to_string(round_idx)); + info("u challenge is: ", round_challenge, " at round i ", round_idx); if constexpr (IsRecursiveFlavor) { typename Flavor::CircuitBuilder* builder = round_challenge.get_context(); @@ -441,11 +443,24 @@ template class SumcheckVerifier { bool checked = false; //! [Final Verification Step] if constexpr (IsRecursiveFlavor) { + // constrain this + + if constexpr (IsECCVMRecursiveFlavor) { + full_honk_relation_purported_value.self_reduce(); + round.target_total_sum.self_reduce(); + } checked = (full_honk_relation_purported_value.get_value() == round.target_total_sum.get_value()); + info("full honk value: ", full_honk_relation_purported_value.get_value()); + info("final target total sum", round.target_total_sum.get_value()); + } else { checked = (full_honk_relation_purported_value == round.target_total_sum); + info("full honk value: ", full_honk_relation_purported_value); + info("final target total sum ", round.target_total_sum); + info("value of checked: ", checked); } verified = verified && checked; + info("verified result at the end of sumcheck verification ", verified); //! [Final Verification Step] return SumcheckOutput{ multivariate_challenge, purported_evaluations, verified }; }; diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp index 6b014b66378..593ba47d5dd 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp @@ -376,19 +376,11 @@ template class SumcheckVerifierRound { // TODO(#673): Conditionals like this can go away once native verification is is just recursive verification // with a simulated builder. bool sumcheck_round_failed(false); - if constexpr (IsRecursiveFlavor) { - if constexpr (IsECCVMRecursiveFlavor) { - // https://github.com/AztecProtocol/barretenberg/issues/998): Avoids the scenario where the assert_equal - // below fails because we are comparing a constant against a non-constant value and the non-constant - // value is in relaxed form. This happens at the first round when target_total_sum is initially set to - // 0. - total_sum.self_reduce(); - } - target_total_sum.assert_equal(total_sum); - sumcheck_round_failed = (target_total_sum.get_value() != total_sum.get_value()); - } else { - sumcheck_round_failed = (target_total_sum != total_sum); - } + + sumcheck_round_failed = (target_total_sum != total_sum); + info("TARGET TOTAL SUM ", target_total_sum); + info("total sum ", total_sum); + info(sumcheck_round_failed); round_failed = round_failed || sumcheck_round_failed; return !sumcheck_round_failed; @@ -410,21 +402,22 @@ template class SumcheckVerifierRound { // TODO(#673): Conditionals like this can go away once native verification is is just recursive verification // with a simulated builder. bool sumcheck_round_failed(false); - if constexpr (IsRecursiveFlavor) { - if constexpr (IsECCVMRecursiveFlavor) { - // https://github.com/AztecProtocol/barretenberg/issues/998): Avoids the scenario where the assert_equal - // below fails because we are comparing a constant against a non-constant value and the non-constant - // value is in relaxed form. This happens at the first round when target_total_sum is initially set to - // 0. - total_sum.self_reduce(); - } - target_total_sum.assert_equal(total_sum); - if (!dummy_round.get_value()) { - sumcheck_round_failed = (target_total_sum.get_value() != total_sum.get_value()); - } - } else { - sumcheck_round_failed = (target_total_sum != total_sum); + + if constexpr (IsECCVMRecursiveFlavor) { + // https://github.com/AztecProtocol/barretenberg/issues/998): Avoids the scenario where the assert_equal + // below fails because we are comparing a constant against a non-constant value and the non-constant + // value is in relaxed form. This happens at the first round when target_total_sum is initially set to + // 0. + total_sum.self_reduce(); } + target_total_sum.assert_equal(total_sum); + if (!dummy_round.get_value()) { + sumcheck_round_failed = (target_total_sum.get_value() != total_sum.get_value()); + } + + info("target total sum", target_total_sum.get_value()); + info("total sum", total_sum.get_value()); + info("sumcheck round failed: ", sumcheck_round_failed); round_failed = round_failed || sumcheck_round_failed; return !sumcheck_round_failed; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index 1d1e6b0d05d..48db992edd7 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -70,7 +70,7 @@ template bool UltraVerifier_::verify_proof(const HonkP // If Sumcheck did not verify, return false if (sumcheck_verified.has_value() && !sumcheck_verified.value()) { - info("Sumcheck verification failed."); + info("Ultra Verifier: Sumcheck verification failed."); return false; } From c7b0005ee1b889c06a494e4304f34a5632384313 Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 29 Jul 2024 06:36:45 +0000 Subject: [PATCH 14/47] undo relation length modifications as they don't fix problems --- .../src/barretenberg/relations/logderiv_lookup_relation.hpp | 2 +- .../src/barretenberg/relations/ultra_arithmetic_relation.hpp | 4 ++-- .../cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.hpp | 2 -- .../src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp | 1 + barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp | 3 +++ .../cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp b/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp index d260c944a64..7e39ebc7df8 100644 --- a/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp +++ b/barretenberg/cpp/src/barretenberg/relations/logderiv_lookup_relation.hpp @@ -16,7 +16,7 @@ template class LogDerivLookupRelationImpl { static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; // 1 + polynomial degree of this relation - static constexpr size_t LENGTH = 6; // both subrelations are degree 4 + static constexpr size_t LENGTH = 5; // both subrelations are degree 4 static constexpr std::array SUBRELATION_PARTIAL_LENGTHS{ LENGTH, // inverse construction sub-relation diff --git a/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp b/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp index c7b3e468454..69dfd2b9d11 100644 --- a/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp +++ b/barretenberg/cpp/src/barretenberg/relations/ultra_arithmetic_relation.hpp @@ -8,8 +8,8 @@ template class UltraArithmeticRelationImpl { using FF = FF_; static constexpr std::array SUBRELATION_PARTIAL_LENGTHS{ - 7, // primary arithmetic sub-relation - 6 // secondary arithmetic sub-relation + 6, // primary arithmetic sub-relation + 5 // secondary arithmetic sub-relation }; /** diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.hpp index 403d5f39f58..bb4145bed9f 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.hpp @@ -29,6 +29,4 @@ template class poseidon2 { static field_ct hash_buffer(Builder& builder, const stdlib::byte_array& input); }; -extern template class poseidon2; - } // namespace bb::stdlib diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp index 4ab87fe1022..2b1c5fdfc93 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp @@ -51,6 +51,7 @@ class UltraFlavor { // define the tuple of Relations that comprise the Sumcheck relation // Note: made generic for use in MegaRecursive. template + using Relations_ = std::tuple, bb::UltraPermutationRelation, bb::DeltaRangeConstraintRelation, diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp index 7b764bc34fa..a106aaaac5d 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp @@ -196,6 +196,7 @@ template class SumcheckProver { auto round_univariate = round.compute_univariate(full_polynomials, relation_parameters, pow_univariate, alpha); transcript->send_to_verifier("Sumcheck:univariate_0", round_univariate); FF round_challenge = transcript->template get_challenge("Sumcheck:u_0"); + info("Prover challenge at round 0 ", round_challenge); multivariate_challenge.emplace_back(round_challenge); partially_evaluate(full_polynomials, multivariate_n, round_challenge); pow_univariate.partially_evaluate(round_challenge); @@ -208,6 +209,8 @@ template class SumcheckProver { round.compute_univariate(partially_evaluated_polynomials, relation_parameters, pow_univariate, alpha); transcript->send_to_verifier("Sumcheck:univariate_" + std::to_string(round_idx), round_univariate); FF round_challenge = transcript->template get_challenge("Sumcheck:u_" + std::to_string(round_idx)); + info("Prover challenge at ", round_idx, " round ", round_challenge); + multivariate_challenge.emplace_back(round_challenge); partially_evaluate(partially_evaluated_polynomials, round.round_size, round_challenge); pow_univariate.partially_evaluate(round_challenge); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index 48db992edd7..239f2bc66dd 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -62,7 +62,7 @@ template bool UltraVerifier_::verify_proof(const HonkP auto sumcheck = SumcheckVerifier(log_circuit_size, transcript); auto gate_challenges = std::vector(CONST_PROOF_SIZE_LOG_N); - for (size_t idx = 0; idx < CONST_PROOF_SIZE_LOG_N; idx++) { + for (size_t idx = 0; idx < gate_challenges.size(); idx++) { gate_challenges[idx] = transcript->template get_challenge("Sumcheck:gate_challenge_" + std::to_string(idx)); } auto [multivariate_challenge, claimed_evaluations, sumcheck_verified] = From 376a7362326c2b85f77240d62d619a7fe0fcd25d Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 29 Jul 2024 11:40:14 +0400 Subject: [PATCH 15/47] Update Earthfile --- barretenberg/cpp/Earthfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/barretenberg/cpp/Earthfile b/barretenberg/cpp/Earthfile index f340432b505..c606626ece1 100644 --- a/barretenberg/cpp/Earthfile +++ b/barretenberg/cpp/Earthfile @@ -7,7 +7,7 @@ wasmtime: SAVE ARTIFACT /root/.wasmtime/bin/wasmtime source: - FROM ../../build-images+from-registry + FROM ../../build-images+build WORKDIR /usr/src/barretenberg # cpp source COPY --dir src/barretenberg src/CMakeLists.txt src @@ -65,11 +65,11 @@ preset-msan-check: COPY --dir cmake CMakeLists.txt CMakePresets.json . # We never fail this as test-listing targets can timeout. Just pragmatically go on to see if the binary exists. - RUN cmake --preset msan -Bbuild && cmake --build build --target client_ivc_tests || true + RUN cmake --preset msan -Bbuild && cmake --build build --target eccvm_recursion_tests || true # install SRS needed for proving COPY --dir ./srs_db/+build/. srs_db - RUN echo "Warning: If ./bin/client_ivc_tests is not found, there may be build failures above." - RUN cd build && ./bin/client_ivc_tests --gtest_also_run_disabled_tests + RUN echo "Warning: If ./bin/eccvm_recursion_tests is not found, there may be build failures above." + RUN cd build && ./bin/eccvm_recursion_tests --gtest_also_run_disabled_tests preset-wasm: ARG TARGETARCH @@ -266,4 +266,4 @@ vm-full-test: build: BUILD +preset-wasm BUILD +preset-wasm-threads - BUILD +preset-release \ No newline at end of file + BUILD +preset-release From 798cf19ebe8772bec1957b3e6abf98400996370f Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 29 Jul 2024 11:41:26 +0400 Subject: [PATCH 16/47] Update Earthfile --- barretenberg/cpp/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/Earthfile b/barretenberg/cpp/Earthfile index c606626ece1..02a8bbe56f4 100644 --- a/barretenberg/cpp/Earthfile +++ b/barretenberg/cpp/Earthfile @@ -7,7 +7,7 @@ wasmtime: SAVE ARTIFACT /root/.wasmtime/bin/wasmtime source: - FROM ../../build-images+build + FROM ../../build-images+from-registry WORKDIR /usr/src/barretenberg # cpp source COPY --dir src/barretenberg src/CMakeLists.txt src From 148b8fc7361b6d5ea239ff531e8c18f6bea298cf Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 29 Jul 2024 11:24:35 +0000 Subject: [PATCH 17/47] nothing really --- .../src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp | 2 +- barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp | 4 +++- barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp index c8ecaafceef..a747bf61165 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp @@ -67,7 +67,7 @@ class MegaFlavor { static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length(); - static_assert(MAX_TOTAL_RELATION_LENGTH == 11); + // static_assert(MAX_TOTAL_RELATION_LENGTH == 11); // BATCHED_RELATION_PARTIAL_LENGTH = algebraic degree of sumcheck relation *after* multiplying by the `pow_zeta` // random polynomial e.g. For \sum(x) [A(x) * B(x) + C(x)] * PowZeta(X), relation length = 2 and random relation // length = 3 diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp index a106aaaac5d..da79c65b9a1 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp @@ -194,6 +194,7 @@ template class SumcheckProver { // In the first round, we compute the first univariate polynomial and populate the book-keeping table of // #partially_evaluated_polynomials, which has \f$ n/2 \f$ rows and \f$ N \f$ columns. auto round_univariate = round.compute_univariate(full_polynomials, relation_parameters, pow_univariate, alpha); + info("round univariate in prover length ", round_univariate.size()); transcript->send_to_verifier("Sumcheck:univariate_0", round_univariate); FF round_challenge = transcript->template get_challenge("Sumcheck:u_0"); info("Prover challenge at round 0 ", round_challenge); @@ -210,7 +211,7 @@ template class SumcheckProver { transcript->send_to_verifier("Sumcheck:univariate_" + std::to_string(round_idx), round_univariate); FF round_challenge = transcript->template get_challenge("Sumcheck:u_" + std::to_string(round_idx)); info("Prover challenge at ", round_idx, " round ", round_challenge); - + info("round univariate in prover length ", round_univariate.size()); multivariate_challenge.emplace_back(round_challenge); partially_evaluate(partially_evaluated_polynomials, round.round_size, round_challenge); pow_univariate.partially_evaluate(round_challenge); @@ -401,6 +402,7 @@ template class SumcheckVerifier { auto round_univariate = transcript->template receive_from_prover>( round_univariate_label); + info("round univariate in prover length ", round_univariate.size()); FF round_challenge = transcript->template get_challenge("Sumcheck:u_" + std::to_string(round_idx)); info("u challenge is: ", round_challenge, " at round i ", round_idx); diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp index 593ba47d5dd..337915684cc 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp @@ -373,6 +373,8 @@ template class SumcheckVerifierRound { bool check_sum(bb::Univariate& univariate) { FF total_sum = univariate.value_at(0) + univariate.value_at(1); + info("univariate value: ", univariate.value_at(0)); + info("univariate value: ", univariate.value_at(1)); // TODO(#673): Conditionals like this can go away once native verification is is just recursive verification // with a simulated builder. bool sumcheck_round_failed(false); @@ -399,6 +401,8 @@ template class SumcheckVerifierRound { { FF total_sum = FF::conditional_assign(dummy_round, target_total_sum, univariate.value_at(0) + univariate.value_at(1)); + info("univariate value: ", univariate.value_at(0)); + info("univariate value: ", univariate.value_at(1)); // TODO(#673): Conditionals like this can go away once native verification is is just recursive verification // with a simulated builder. bool sumcheck_round_failed(false); From e91dfd87aa7a12ecfc524d64cd311f9b7ad0b31d Mon Sep 17 00:00:00 2001 From: maramihali Date: Wed, 31 Jul 2024 07:05:22 +0000 Subject: [PATCH 18/47] test stuff part 2 --- .../ecc/fields/field_conversion.hpp | 2 + .../ecc/groups/affine_element_impl.hpp | 1 - .../src/barretenberg/eccvm/eccvm_prover.cpp | 7 +- .../src/barretenberg/eccvm/eccvm_verifier.cpp | 2 + .../eccvm_recursive_verifier.cpp | 5 +- .../eccvm_recursive_verifier.test.cpp | 38 ++--- .../stdlib/hash/poseidon2/poseidon2.test.cpp | 2 +- .../transcript/transcript.test.cpp | 161 ++++++++++++++++++ .../primitives/field/field_conversion.hpp | 11 +- 9 files changed, 199 insertions(+), 30 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp index e19c535da31..f801b2c9f16 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp @@ -60,7 +60,9 @@ template T convert_from_bn254_frs(std::span fr_vec) ASSERT(fr_vec.size() == 2 * BASE_FIELD_SCALAR_SIZE); T val; val.x = convert_from_bn254_frs(fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); + info("native x: ", val.x); val.y = convert_from_bn254_frs(fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); + info("native y: ", val.y); return val; } else { // Array or Univariate diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp index c1906e40374..6ca7c5674f6 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp @@ -103,7 +103,6 @@ template constexpr void affine_element: x.data[1] = Fq::modulus.data[1]; x.data[2] = Fq::modulus.data[2]; x.data[3] = Fq::modulus.data[3]; - } else { x.self_set_msb(); } diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_prover.cpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_prover.cpp index 830eb760683..16d889e9983 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_prover.cpp @@ -45,7 +45,12 @@ void ECCVMProver::execute_wire_commitments_round() auto wire_polys = key->polynomials.get_wires(); auto labels = commitment_labels.get_wires(); for (size_t idx = 0; idx < wire_polys.size(); ++idx) { - transcript->send_to_verifier(labels[idx], commitment_key->commit(wire_polys[idx])); + auto comm = commitment_key->commit(wire_polys[idx]); + if (comm.y.is_zero()) { + comm.self_set_infinity(); + info("Prover comm ", comm); + } + transcript->send_to_verifier(labels[idx], comm); } } diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_verifier.cpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_verifier.cpp index 26bd5ac6ce6..0dd00114809 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_verifier.cpp @@ -22,8 +22,10 @@ bool ECCVMVerifier::verify_proof(const HonkProof& proof) const auto circuit_size = transcript->template receive_from_prover("circuit_size"); ASSERT(circuit_size == key->circuit_size); + info("Printing wire comms in native verifier"); for (auto [comm, label] : zip_view(commitments.get_wires(), commitment_labels.get_wires())) { comm = transcript->template receive_from_prover(label); + info(label, " ", comm, " is infinity flag ", comm.is_point_at_infinity()); } // Get challenge for sorted list batching and wire four memory records diff --git a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp index e2821b7789b..509fbe93fb7 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp @@ -36,14 +36,13 @@ template void ECCVMRecursiveVerifier_::verify_proof(co const BF circuit_size_bf = transcript->template receive_from_prover("circuit_size"); const FF circuit_size{ static_cast(static_cast(circuit_size_bf.get_value())) }; + info("wire comms in recursive verifier"); for (auto [comm, label] : zip_view(commitments.get_wires(), commitment_labels.get_wires())) { comm = transcript->template receive_from_prover(label); // TODO(https://github.com/AztecProtocol/barretenberg/issues/1017): This is a hack to ensure zero commitments // are still on curve as the transcript doesn't currently support a point at infinity representation for // cycle_group - if (!comm.get_value().on_curve()) { - comm.set_point_at_infinity(true); - } + info(label, " ", comm, " is infinity flag ", comm.is_point_at_infinity()); } // Get challenge for sorted list batching and wire four memory records diff --git a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp index 27e5fceb9b6..7dfc0279621 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp @@ -93,25 +93,25 @@ template class ECCVMRecursiveTests : public ::testing EXPECT_TRUE(result); info("Result of circuit checker:", result); - info("ECCVM Native Verifier"); - InnerVerifier native_verifier(prover.key); - bool native_result = native_verifier.verify_proof(proof); - EXPECT_TRUE(native_result); - - auto recursive_manifest = verifier.transcript->get_manifest(); - auto native_manifest = native_verifier.transcript->get_manifest(); - for (size_t i = 0; i < recursive_manifest.size(); ++i) { - EXPECT_EQ(recursive_manifest[i], native_manifest[i]) - << "Recursive Verifier/Verifier manifest discrepency in round " << i; - } - - // Ensure verification key is the same - EXPECT_EQ(verifier.key->circuit_size, verification_key->circuit_size); - EXPECT_EQ(verifier.key->log_circuit_size, verification_key->log_circuit_size); - EXPECT_EQ(verifier.key->num_public_inputs, verification_key->num_public_inputs); - for (auto [vk_poly, native_vk_poly] : zip_view(verifier.key->get_all(), verification_key->get_all())) { - EXPECT_EQ(vk_poly.get_value(), native_vk_poly); - } + // info("ECCVM Native Verifier"); + // InnerVerifier native_verifier(prover.key); + // bool native_result = native_verifier.verify_proof(proof); + // EXPECT_TRUE(native_result); + + // auto recursive_manifest = verifier.transcript->get_manifest(); + // auto native_manifest = native_verifier.transcript->get_manifest(); + // for (size_t i = 0; i < recursive_manifest.size(); ++i) { + // EXPECT_EQ(recursive_manifest[i], native_manifest[i]) + // << "Recursive Verifier/Verifier manifest discrepency in round " << i; + // } + + // // Ensure verification key is the same + // EXPECT_EQ(verifier.key->circuit_size, verification_key->circuit_size); + // EXPECT_EQ(verifier.key->log_circuit_size, verification_key->log_circuit_size); + // EXPECT_EQ(verifier.key->num_public_inputs, verification_key->num_public_inputs); + // for (auto [vk_poly, native_vk_poly] : zip_view(verifier.key->get_all(), verification_key->get_all())) { + // EXPECT_EQ(vk_poly.get_value(), native_vk_poly); + // } // Construct a full proof from the recursive verifier circuit { diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp index a22998a2668..efd6b068c52 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp @@ -153,7 +153,7 @@ TYPED_TEST_SUITE(StdlibPoseidon2, CircuitTypes); TYPED_TEST(StdlibPoseidon2, TestHashZeros) { - TestFixture::test_hash_zeros(8); + TestFixture::test_hash_zeros(1); }; TYPED_TEST(StdlibPoseidon2, TestHashSmall) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp index 3f4b4d68886..9d0fdaeb379 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp @@ -6,7 +6,10 @@ #include "barretenberg/polynomials/univariate.hpp" #include "barretenberg/stdlib_circuit_builders/ultra_flavor.hpp" #include "barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp" +#include "barretenberg/sumcheck/instance/prover_instance.hpp" #include "barretenberg/transcript/transcript.hpp" +#include "barretenberg/ultra_honk/ultra_prover.hpp" +#include "barretenberg/ultra_honk/ultra_verifier.hpp" namespace bb::stdlib::recursion::honk { @@ -120,6 +123,164 @@ TEST(RecursiveHonkTranscript, InterfacesMatch) EXPECT_TRUE(CircuitChecker::check(builder)); } +TEST(RecursiveHonkTranscript, Infinity) +{ + using NativeGroup = typename grumpkin::g1; + using NativeCommitment = typename NativeGroup::affine_element; + + // using Group = cycle_group; + // // using ElemLent = Group; + // using Commitment = Group; + + NativeCommitment infinity1 = NativeCommitment::infinity(); + info(infinity1); + NativeCommitment infinity2 = NativeCommitment::infinity(); + info(infinity2); + EXPECT_EQ(infinity1, infinity2); +} + +TEST(RecursiveHonkTranscript, TwoHashes) +{ + using NativeGroup = typename grumpkin::g1; + using NativeCommitment = typename NativeGroup::affine_element; + using NativeFF = fr; + + NativeTranscript transcript1; + NativeCommitment infinity = NativeCommitment::infinity(); + transcript1.send_to_verifier("infinity", infinity); + auto challenge1 = transcript1.get_challenge("challenge"); + info(challenge1); + auto proof_data = transcript1.proof_data; + + NativeTranscript transcript2(proof_data); + transcript2.receive_from_prover("infinity"); + auto challenge2 = transcript2.get_challenge("challenge"); + info(challenge2); + EXPECT_EQ(challenge1, challenge2); +} + +TEST(RecursiveHonkTranscript, ProblematicTest) +{ + srs::init_grumpkin_crs_factory("../srs_db/grumpkin"); + bb::srs::init_crs_factory("../srs_db/ignition"); + + using NativeTranscript = NativeTranscript; + using StdlibTranscript = BaseTranscript>; + using NativeFF = fr; + // using NativeBF = fq; + using NativeGroup = typename grumpkin::g1; + // using NativeElement = typename NativeGroup::element; + using NativeCommitment = typename NativeGroup::affine_element; + + using FF = field_t; + // using BF = bigfield; + using Group = cycle_group; + // using ElemLent = Group; + using Commitment = Group; + + using Instance = ProverInstance_; + using Prover = UltraProver_; + using Verifier = UltraVerifier_; + g Builder builder; + // auto bf_element = NativeBF::random_element(); + // auto dummy = NativeCommitment::one() * NativeBF::random_element(); + NativeCommitment expected_issue = NativeCommitment::infinity(); + info(expected_issue); + + NativeTranscript prover_transcript; + prover_transcript.send_to_verifier("infinity", expected_issue); + auto native_challenge = prover_transcript.get_challenge("challenge"); + static_cast(native_challenge); + auto proof_data = prover_transcript.proof_data; + + info("stdlib transcript"); + StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); + StdlibTranscript stdlib_transcript{ stdlib_proof }; + auto comm = stdlib_transcript.receive_from_prover("infinity"); + auto challenge = stdlib_transcript.get_challenge("challenge"); + info(comm); + info("recursive challenge ", challenge); + + info("native verifier transcript"); + NativeTranscript native_verifier_transcript(proof_data); + native_verifier_transcript.receive_from_prover("infinity"); + auto native_verifier_challenge = native_verifier_transcript.get_challenge("challenge"); + info("native challenge ", native_verifier_challenge); + + // EXPECT_EQ(native_challenge, challenge.get_value()); + bool result = CircuitChecker::check(builder); + info("Result of circuit checker ", result); + ASSERT(result == 1); + + { + info("Ultra"); + auto instance = std::make_shared(builder); + Prover prover(instance); + auto verification_key = std::make_shared(instance->proving_key); + Verifier verifier(verification_key); + auto proof = prover.construct_proof(); + bool verified = verifier.verify_proof(proof); + + ASSERT(verified); + } +} + +// TEST(RecursiveHonkTranscript, NonProblematicTest) +// { +// srs::init_grumpkin_crs_factory("../srs_db/grumpkin"); +// bb::srs::init_crs_factory("../srs_db/ignition"); + +// using NativeFF = fr; +// using NativeBF = fq; +// using NativeGroup = typename grumpkin::g1; +// // using NativeElement = typename NativeGroup::element; +// using NativeCommitment = typename NativeGroup::affine_element; + +// using FF = field_t; +// // using BF = bigfield; +// using Group = cycle_group; +// // using Element = Group; +// using Commitment = Group; + +// using Instance = ProverInstance_; +// using Prover = UltraProver_; +// using Verifier = UltraVerifier_; + +// Builder builder; +// // auto bf_element = NativeBF::random_element(); +// auto dummy = NativeCommitment::one() * NativeBF::random_element(); +// // NativeCommitment expected_issue = NativeGroup::point_at_infinity; +// // ASSERT(expected_issue.is_point_at_infinity()); + +// NativeTranscript prover_transcript; +// prover_transcript.send_to_verifier("nice commitment", dummy); +// auto native_challenge = prover_transcript.get_challenge("challenge"); +// auto proof_data = prover_transcript.proof_data; + +// StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); +// StdlibTranscript stdlib_transcript{ stdlib_proof }; +// stdlib_transcript.receive_from_prover("nice commitment"); + +// auto challenge = stdlib_transcript.get_challenge("challenge"); + +// EXPECT_EQ(native_challenge, challenge.get_value()); +// bool result = CircuitChecker::check(builder); +// info("Result of circuit checker ", result); +// ASSERT(result == 1); + +// { +// info("Ultra"); +// auto instance = std::make_shared(builder); +// Prover prover(instance); +// auto verification_key = std::make_shared(instance->proving_key); +// Verifier verifier(verification_key); +// auto proof = prover.construct_proof(); +// bool verified = verifier.verify_proof(proof); + +// ASSERT(verified); +// } +// } + /** * @brief Check that native and stdlib verifier transcript functions produce equivalent outputs * diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp index 0cc9f98ba58..7f34371b907 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp @@ -93,11 +93,12 @@ template T convert_from_bn254_frs(Builder& builde using BaseField = fr; constexpr size_t BASE_FIELD_SCALAR_SIZE = calc_num_bn254_frs(); ASSERT(fr_vec.size() == 2 * BASE_FIELD_SCALAR_SIZE); - grumpkin_element result( - convert_from_bn254_frs>(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)), - convert_from_bn254_frs>( - builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)), - false); + auto x = convert_from_bn254_frs>(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); + auto y = convert_from_bn254_frs>( + builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); + auto is_infinity = x.get_value().is_msb_set(); + + grumpkin_element result(x, y, is_infinity); return result; } else { // Array or Univariate From 42f472e1b07651e64d3000260e31d3cf1950847f Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 06:36:42 +0000 Subject: [PATCH 19/47] handle point at infinity consistently --- .../cpp/Testing/Temporary/CTestCostData.txt | 1 + .../cpp/Testing/Temporary/LastTest.log | 3 + barretenberg/cpp/html/bc_s.png | Bin 0 -> 676 bytes barretenberg/cpp/html/bc_sd.png | Bin 0 -> 635 bytes barretenberg/cpp/html/closed.png | Bin 0 -> 132 bytes barretenberg/cpp/html/doc.svg | 12 + barretenberg/cpp/html/docd.svg | 12 + barretenberg/cpp/html/doxygen.css | 2045 +++++++++++++ barretenberg/cpp/html/doxygen.svg | 28 + barretenberg/cpp/html/dynsections.js | 192 ++ barretenberg/cpp/html/folderclosed.svg | 11 + barretenberg/cpp/html/folderclosedd.svg | 11 + barretenberg/cpp/html/folderopen.svg | 17 + barretenberg/cpp/html/folderopend.svg | 12 + barretenberg/cpp/html/graph_legend.dot | 24 + barretenberg/cpp/html/graph_legend.html | 141 + barretenberg/cpp/html/index.html | 81 + barretenberg/cpp/html/jquery.js | 34 + barretenberg/cpp/html/menu.js | 136 + barretenberg/cpp/html/menudata.js | 26 + barretenberg/cpp/html/minus.svg | 8 + barretenberg/cpp/html/minusd.svg | 8 + barretenberg/cpp/html/nav_f.png | Bin 0 -> 153 bytes barretenberg/cpp/html/nav_fd.png | Bin 0 -> 169 bytes barretenberg/cpp/html/nav_g.png | Bin 0 -> 95 bytes barretenberg/cpp/html/nav_h.png | Bin 0 -> 98 bytes barretenberg/cpp/html/nav_hd.png | Bin 0 -> 114 bytes barretenberg/cpp/html/open.png | Bin 0 -> 123 bytes barretenberg/cpp/html/plus.svg | 9 + barretenberg/cpp/html/plusd.svg | 9 + barretenberg/cpp/html/search/close.svg | 18 + barretenberg/cpp/html/search/mag.svg | 24 + barretenberg/cpp/html/search/mag_d.svg | 24 + barretenberg/cpp/html/search/mag_sel.svg | 31 + barretenberg/cpp/html/search/mag_seld.svg | 31 + barretenberg/cpp/html/search/search.css | 291 ++ barretenberg/cpp/html/search/search.js | 840 ++++++ barretenberg/cpp/html/search/searchdata.js | 12 + barretenberg/cpp/html/splitbar.png | Bin 0 -> 314 bytes barretenberg/cpp/html/splitbard.png | Bin 0 -> 282 bytes barretenberg/cpp/html/sync_off.png | Bin 0 -> 853 bytes barretenberg/cpp/html/sync_on.png | Bin 0 -> 845 bytes barretenberg/cpp/html/tab_a.png | Bin 0 -> 142 bytes barretenberg/cpp/html/tab_ad.png | Bin 0 -> 135 bytes barretenberg/cpp/html/tab_b.png | Bin 0 -> 169 bytes barretenberg/cpp/html/tab_bd.png | Bin 0 -> 173 bytes barretenberg/cpp/html/tab_h.png | Bin 0 -> 177 bytes barretenberg/cpp/html/tab_hd.png | Bin 0 -> 180 bytes barretenberg/cpp/html/tab_s.png | Bin 0 -> 184 bytes barretenberg/cpp/html/tab_sd.png | Bin 0 -> 188 bytes barretenberg/cpp/html/tabs.css | 1 + barretenberg/cpp/latex/Makefile | 27 + barretenberg/cpp/latex/doxygen.sty | 694 +++++ barretenberg/cpp/latex/etoc_doxygen.sty | 2178 ++++++++++++++ barretenberg/cpp/latex/longtable_doxygen.sty | 456 +++ barretenberg/cpp/latex/refman.tex | 218 ++ barretenberg/cpp/latex/tabu_doxygen.sty | 2557 +++++++++++++++++ .../ecc/fields/field_conversion.hpp | 18 +- .../ecc/groups/affine_element.test.cpp | 22 +- .../ecc/groups/affine_element_impl.hpp | 4 +- .../barretenberg/ecc/groups/element_impl.hpp | 2 + .../eccvm/eccvm_transcript.test.cpp | 3 +- .../transcript/transcript.test.cpp | 32 + .../primitives/field/field_conversion.hpp | 11 +- 64 files changed, 10300 insertions(+), 14 deletions(-) create mode 100644 barretenberg/cpp/Testing/Temporary/CTestCostData.txt create mode 100644 barretenberg/cpp/Testing/Temporary/LastTest.log create mode 100644 barretenberg/cpp/html/bc_s.png create mode 100644 barretenberg/cpp/html/bc_sd.png create mode 100644 barretenberg/cpp/html/closed.png create mode 100644 barretenberg/cpp/html/doc.svg create mode 100644 barretenberg/cpp/html/docd.svg create mode 100644 barretenberg/cpp/html/doxygen.css create mode 100644 barretenberg/cpp/html/doxygen.svg create mode 100644 barretenberg/cpp/html/dynsections.js create mode 100644 barretenberg/cpp/html/folderclosed.svg create mode 100644 barretenberg/cpp/html/folderclosedd.svg create mode 100644 barretenberg/cpp/html/folderopen.svg create mode 100644 barretenberg/cpp/html/folderopend.svg create mode 100644 barretenberg/cpp/html/graph_legend.dot create mode 100644 barretenberg/cpp/html/graph_legend.html create mode 100644 barretenberg/cpp/html/index.html create mode 100644 barretenberg/cpp/html/jquery.js create mode 100644 barretenberg/cpp/html/menu.js create mode 100644 barretenberg/cpp/html/menudata.js create mode 100644 barretenberg/cpp/html/minus.svg create mode 100644 barretenberg/cpp/html/minusd.svg create mode 100644 barretenberg/cpp/html/nav_f.png create mode 100644 barretenberg/cpp/html/nav_fd.png create mode 100644 barretenberg/cpp/html/nav_g.png create mode 100644 barretenberg/cpp/html/nav_h.png create mode 100644 barretenberg/cpp/html/nav_hd.png create mode 100644 barretenberg/cpp/html/open.png create mode 100644 barretenberg/cpp/html/plus.svg create mode 100644 barretenberg/cpp/html/plusd.svg create mode 100644 barretenberg/cpp/html/search/close.svg create mode 100644 barretenberg/cpp/html/search/mag.svg create mode 100644 barretenberg/cpp/html/search/mag_d.svg create mode 100644 barretenberg/cpp/html/search/mag_sel.svg create mode 100644 barretenberg/cpp/html/search/mag_seld.svg create mode 100644 barretenberg/cpp/html/search/search.css create mode 100644 barretenberg/cpp/html/search/search.js create mode 100644 barretenberg/cpp/html/search/searchdata.js create mode 100644 barretenberg/cpp/html/splitbar.png create mode 100644 barretenberg/cpp/html/splitbard.png create mode 100644 barretenberg/cpp/html/sync_off.png create mode 100644 barretenberg/cpp/html/sync_on.png create mode 100644 barretenberg/cpp/html/tab_a.png create mode 100644 barretenberg/cpp/html/tab_ad.png create mode 100644 barretenberg/cpp/html/tab_b.png create mode 100644 barretenberg/cpp/html/tab_bd.png create mode 100644 barretenberg/cpp/html/tab_h.png create mode 100644 barretenberg/cpp/html/tab_hd.png create mode 100644 barretenberg/cpp/html/tab_s.png create mode 100644 barretenberg/cpp/html/tab_sd.png create mode 100644 barretenberg/cpp/html/tabs.css create mode 100644 barretenberg/cpp/latex/Makefile create mode 100644 barretenberg/cpp/latex/doxygen.sty create mode 100644 barretenberg/cpp/latex/etoc_doxygen.sty create mode 100644 barretenberg/cpp/latex/longtable_doxygen.sty create mode 100644 barretenberg/cpp/latex/refman.tex create mode 100644 barretenberg/cpp/latex/tabu_doxygen.sty diff --git a/barretenberg/cpp/Testing/Temporary/CTestCostData.txt b/barretenberg/cpp/Testing/Temporary/CTestCostData.txt new file mode 100644 index 00000000000..ed97d539c09 --- /dev/null +++ b/barretenberg/cpp/Testing/Temporary/CTestCostData.txt @@ -0,0 +1 @@ +--- diff --git a/barretenberg/cpp/Testing/Temporary/LastTest.log b/barretenberg/cpp/Testing/Temporary/LastTest.log new file mode 100644 index 00000000000..fcd4f2b12a9 --- /dev/null +++ b/barretenberg/cpp/Testing/Temporary/LastTest.log @@ -0,0 +1,3 @@ +Start testing: Jul 25 08:10 UTC +---------------------------------------------------------- +End testing: Jul 25 08:10 UTC diff --git a/barretenberg/cpp/html/bc_s.png b/barretenberg/cpp/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/bc_sd.png b/barretenberg/cpp/html/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/closed.png b/barretenberg/cpp/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/doc.svg b/barretenberg/cpp/html/doc.svg new file mode 100644 index 00000000000..0b928a53171 --- /dev/null +++ b/barretenberg/cpp/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/barretenberg/cpp/html/docd.svg b/barretenberg/cpp/html/docd.svg new file mode 100644 index 00000000000..ac18b275522 --- /dev/null +++ b/barretenberg/cpp/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/barretenberg/cpp/html/doxygen.css b/barretenberg/cpp/html/doxygen.css new file mode 100644 index 00000000000..009a9b5546a --- /dev/null +++ b/barretenberg/cpp/html/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/barretenberg/cpp/html/doxygen.svg b/barretenberg/cpp/html/doxygen.svg new file mode 100644 index 00000000000..79a76354078 --- /dev/null +++ b/barretenberg/cpp/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/barretenberg/cpp/html/dynsections.js b/barretenberg/cpp/html/dynsections.js new file mode 100644 index 00000000000..b73c8288947 --- /dev/null +++ b/barretenberg/cpp/html/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/barretenberg/cpp/html/folderclosed.svg b/barretenberg/cpp/html/folderclosed.svg new file mode 100644 index 00000000000..b04bed2e723 --- /dev/null +++ b/barretenberg/cpp/html/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/barretenberg/cpp/html/folderclosedd.svg b/barretenberg/cpp/html/folderclosedd.svg new file mode 100644 index 00000000000..52f0166a23e --- /dev/null +++ b/barretenberg/cpp/html/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/barretenberg/cpp/html/folderopen.svg b/barretenberg/cpp/html/folderopen.svg new file mode 100644 index 00000000000..f6896dd254b --- /dev/null +++ b/barretenberg/cpp/html/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/barretenberg/cpp/html/folderopend.svg b/barretenberg/cpp/html/folderopend.svg new file mode 100644 index 00000000000..2d1f06e7bc6 --- /dev/null +++ b/barretenberg/cpp/html/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/barretenberg/cpp/html/graph_legend.dot b/barretenberg/cpp/html/graph_legend.dot new file mode 100644 index 00000000000..97a6d6109d4 --- /dev/null +++ b/barretenberg/cpp/html/graph_legend.dot @@ -0,0 +1,24 @@ +digraph "Graph Legend" +{ + // LATEX_PDF_SIZE + bgcolor="transparent"; + edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; + node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; + Node9 [id="Node000009",label="Inherited",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "]; + Node10 -> Node9 [dir="back",color="steelblue1",style="solid" tooltip=" "]; + Node10 [id="Node000010",label="PublicBase",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",tooltip=" "]; + Node11 -> Node10 [dir="back",color="steelblue1",style="solid" tooltip=" "]; + Node11 [id="Node000011",label="Truncated",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",tooltip=" "]; + Node13 -> Node9 [dir="back",color="darkgreen",style="solid" tooltip=" "]; + Node13 [label="ProtectedBase",color="gray40",fillcolor="white",style="filled" tooltip=" "]; + Node14 -> Node9 [dir="back",color="firebrick4",style="solid" tooltip=" "]; + Node14 [label="PrivateBase",color="gray40",fillcolor="white",style="filled" tooltip=" "]; + Node15 -> Node9 [dir="back",color="steelblue1",style="solid" tooltip=" "]; + Node15 [id="Node000015",label="Undocumented",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "]; + Node16 -> Node9 [dir="back",color="steelblue1",style="solid" tooltip=" "]; + Node16 [label="Templ\< int \>",color="gray40",fillcolor="white",style="filled" tooltip=" "]; + Node17 -> Node16 [dir="back",color="orange",style="dashed",label="< int >",fontcolor="grey" tooltip=" "]; + Node17 [label="Templ\< T \>",color="gray40",fillcolor="white",style="filled" tooltip=" "]; + Node18 -> Node9 [dir="back",color="darkorchid3",style="dashed",label="m_usedClass",fontcolor="grey" tooltip=" "]; + Node18 [label="Used",color="gray40",fillcolor="white",style="filled" tooltip=" "]; +} diff --git a/barretenberg/cpp/html/graph_legend.html b/barretenberg/cpp/html/graph_legend.html new file mode 100644 index 00000000000..ecc9d7bca1f --- /dev/null +++ b/barretenberg/cpp/html/graph_legend.html @@ -0,0 +1,141 @@ + + + + + + + +My Project: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/barretenberg/cpp/html/index.html b/barretenberg/cpp/html/index.html new file mode 100644 index 00000000000..a6ec34d7d24 --- /dev/null +++ b/barretenberg/cpp/html/index.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: Main Page + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
My Project Documentation
+
+
+
+ + + + diff --git a/barretenberg/cpp/html/jquery.js b/barretenberg/cpp/html/jquery.js new file mode 100644 index 00000000000..1dffb65b58c --- /dev/null +++ b/barretenberg/cpp/html/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/barretenberg/cpp/html/menu.js b/barretenberg/cpp/html/menu.js new file mode 100644 index 00000000000..b0b26936a0d --- /dev/null +++ b/barretenberg/cpp/html/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/barretenberg/cpp/html/menudata.js b/barretenberg/cpp/html/menudata.js new file mode 100644 index 00000000000..d1ece13274a --- /dev/null +++ b/barretenberg/cpp/html/menudata.js @@ -0,0 +1,26 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}]} diff --git a/barretenberg/cpp/html/minus.svg b/barretenberg/cpp/html/minus.svg new file mode 100644 index 00000000000..f70d0c1a183 --- /dev/null +++ b/barretenberg/cpp/html/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/barretenberg/cpp/html/minusd.svg b/barretenberg/cpp/html/minusd.svg new file mode 100644 index 00000000000..5f8e879628d --- /dev/null +++ b/barretenberg/cpp/html/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/barretenberg/cpp/html/nav_f.png b/barretenberg/cpp/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/nav_fd.png b/barretenberg/cpp/html/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/nav_g.png b/barretenberg/cpp/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/open.png b/barretenberg/cpp/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/barretenberg/cpp/html/plusd.svg b/barretenberg/cpp/html/plusd.svg new file mode 100644 index 00000000000..0c65bfe946d --- /dev/null +++ b/barretenberg/cpp/html/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/barretenberg/cpp/html/search/close.svg b/barretenberg/cpp/html/search/close.svg new file mode 100644 index 00000000000..337d6cc1329 --- /dev/null +++ b/barretenberg/cpp/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/barretenberg/cpp/html/search/mag.svg b/barretenberg/cpp/html/search/mag.svg new file mode 100644 index 00000000000..ffb6cf0d025 --- /dev/null +++ b/barretenberg/cpp/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/barretenberg/cpp/html/search/mag_d.svg b/barretenberg/cpp/html/search/mag_d.svg new file mode 100644 index 00000000000..4122773f92c --- /dev/null +++ b/barretenberg/cpp/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/barretenberg/cpp/html/search/mag_sel.svg b/barretenberg/cpp/html/search/mag_sel.svg new file mode 100644 index 00000000000..553dba87732 --- /dev/null +++ b/barretenberg/cpp/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/barretenberg/cpp/html/search/mag_seld.svg b/barretenberg/cpp/html/search/mag_seld.svg new file mode 100644 index 00000000000..c906f84c83a --- /dev/null +++ b/barretenberg/cpp/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/barretenberg/cpp/html/search/search.css b/barretenberg/cpp/html/search/search.css new file mode 100644 index 00000000000..19f76f9d5b9 --- /dev/null +++ b/barretenberg/cpp/html/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/barretenberg/cpp/html/search/search.js b/barretenberg/cpp/html/search/search.js new file mode 100644 index 00000000000..6fd40c67701 --- /dev/null +++ b/barretenberg/cpp/html/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/splitbard.png b/barretenberg/cpp/html/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/sync_off.png b/barretenberg/cpp/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/sync_on.png b/barretenberg/cpp/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/tab_a.png b/barretenberg/cpp/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/tab_ad.png b/barretenberg/cpp/html/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/tab_s.png b/barretenberg/cpp/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/tab_sd.png b/barretenberg/cpp/html/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/barretenberg/cpp/html/tabs.css b/barretenberg/cpp/html/tabs.css new file mode 100644 index 00000000000..df7944b79b6 --- /dev/null +++ b/barretenberg/cpp/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/barretenberg/cpp/latex/Makefile b/barretenberg/cpp/latex/Makefile new file mode 100644 index 00000000000..7f82972108f --- /dev/null +++ b/barretenberg/cpp/latex/Makefile @@ -0,0 +1,27 @@ +LATEX_CMD?=pdflatex +MKIDX_CMD?=makeindex +BIBTEX_CMD?=bibtex +LATEX_COUNT?=8 +MANUAL_FILE?=refman + +all: $(MANUAL_FILE).pdf + +pdf: $(MANUAL_FILE).pdf + +$(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex + $(LATEX_CMD) $(MANUAL_FILE) + $(MKIDX_CMD) $(MANUAL_FILE).idx + $(LATEX_CMD) $(MANUAL_FILE) + latex_count=$(LATEX_COUNT) ; \ + while grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + $(LATEX_CMD) $(MANUAL_FILE) ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + $(MKIDX_CMD) $(MANUAL_FILE).idx + $(LATEX_CMD) $(MANUAL_FILE) + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf diff --git a/barretenberg/cpp/latex/doxygen.sty b/barretenberg/cpp/latex/doxygen.sty new file mode 100644 index 00000000000..4bfc17fa9d0 --- /dev/null +++ b/barretenberg/cpp/latex/doxygen.sty @@ -0,0 +1,694 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{calc} +\RequirePackage{float} +%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable_doxygen} +\RequirePackage{tabu_doxygen} +\RequirePackage{fancyvrb} +\RequirePackage{tabularx} +\RequirePackage{multicol} +\RequirePackage{multirow} +\RequirePackage{hanging} +\RequirePackage{ifpdf} +\RequirePackage{adjustbox} +\RequirePackage{amssymb} +\RequirePackage{stackengine} +\RequirePackage{enumitem} +\RequirePackage{alphalph} +\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyHorRuler}[1]{% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{#1=0}% + {% + \hrule% + }% + {% + \hrulefilll% + }% +} +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + %\setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
     ... 
    +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} +% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. +\newlength{\CodeWidthChar} +\newlength{\CodeHeightChar} +\settowidth{\CodeWidthChar}{?} +\settoheight{\CodeHeightChar}{?} +% Necessary for hanging indent +\newlength{\DoxyCodeWidth} + +\newcommand\DoxyCodeLine[1]{ + \ifthenelse{\equal{\detokenize{#1}}{}} + { + \vspace*{\baselineskip} + } + { + \hangpara{\DoxyCodeWidth}{1}{#1}\par + } +} + +\newcommand\NiceSpace{% + \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}[1]{% + \par% + \scriptsize% + \normalfont\ttfamily% + \rightskip0pt plus 1fil% + \settowidth{\DoxyCodeWidth}{000000}% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{\equal{#1}{0}} + { + {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% + } + { + {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% + } + +}{% + \normalfont% + \normalsize% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% +} + +% Redefining not defined characters, i.e. "Replacement Character" in tex output. +\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% + \textcolor{white}{\sffamily\bfseries\small ?}}{% + \rotatebox{45}{$\blacksquare$}}}} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}[1]{% + \DoxyCode{#1}% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \par% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
      ...
    ) +\setlistdepth{12} +\newlist{DoxyEnumerate}{enumerate}{12} +\setlist[DoxyEnumerate,1]{label=\arabic*.} +\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,3]{label=\roman*.} +\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.} +\setlist[DoxyEnumerate,5]{label=\arabic*.} +\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,7]{label=\roman*.} +\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.} +\setlist[DoxyEnumerate,9]{label=\arabic*.} +\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,11]{label=\roman*.} +\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.} + +% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) +\setlistdepth{12} +\newlist{DoxyItemize}{itemize}{12} +\setlist[DoxyItemize]{label=\textperiodcentered} + +\setlist[DoxyItemize,1]{label=\textbullet} +\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash} +\setlist[DoxyItemize,3]{label=\textasteriskcentered} +\setlist[DoxyItemize,4]{label=\textperiodcentered} + +% Used by description lists (using
    ...
    ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \centering% +}{% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @image +% (only if inline is specified) +\newenvironment{DoxyInlineImage}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu*}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned on +\newcommand{\doxylink}[2]{% + \mbox{\hyperlink{#1}{#2}}% +} + +% Used when hyperlinks are turned on +% Third argument is the SectionType, see the doxygen internal +% documentation for the values (relevant: Page ... Subsubsection). +\newcommand{\doxysectlink}[3]{% + \mbox{\hyperlink{#1}{#2}}% +} +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used when hyperlinks are turned off +% Fourth argument is the SectionType, see the doxygen internal +% documentation for the values (relevant: Page ... Subsubsection). +\newcommand{\doxysectref}[4]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{xmlcdata}{rgb}{0.0,0.0,0.0} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% possibility to have sections etc. be within the margins +% unfortunately had to copy part of book.cls and add \raggedright +\makeatletter +\newcounter{subsubsubsection}[subsubsection] +\newcounter{subsubsubsubsection}[subsubsubsection] +\newcounter{subsubsubsubsubsection}[subsubsubsubsection] +\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection] +\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}} +\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}} +\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}} +\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}} +\newcommand{\subsubsubsectionmark}[1]{} +\newcommand{\subsubsubsubsectionmark}[1]{} +\newcommand{\subsubsubsubsubsectionmark}[1]{} +\newcommand{\subsubsubsubsubsubsectionmark}[1]{} +\def\toclevel@subsubsubsection{4} +\def\toclevel@subsubsubsubsection{5} +\def\toclevel@subsubsubsubsubsection{6} +\def\toclevel@subsubsubsubsubsubsection{7} +\def\toclevel@paragraph{8} +\def\toclevel@subparagraph{9} + +\newcommand\doxysection{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedright\normalfont\Large\bfseries}} +\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\large\bfseries}} +\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} + +\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}} +\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}} +\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}} +\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}} +\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}} +\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}} +\makeatother +% the sectsty doesn't look to be maintained but gives, in our case, some warning like: +% LaTeX Warning: Command \underline has changed. +% Check if current package is valid. +% unfortunately had to copy the relevant part +\newcommand*{\doxypartfont} [1] + {\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1} + \gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}} +\newcommand*{\doxychapterfont} [1] + {\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1} + \gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}} +\newcommand*{\doxysectionfont} [1] + {\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxysubsectionfont} [1] + {\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxysubsubsectionfont} [1] + {\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxyparagraphfont} [1] + {\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxysubparagraphfont} [1] + {\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxyminisecfont} [1] + {\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}} +\newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}% + \doxychapterfont{#1}% + \doxysectionfont{#1}% + \doxysubsectionfont{#1}% + \doxysubsubsectionfont{#1}% + \doxyparagraphfont{#1}% + \doxysubparagraphfont{#1}% + \doxyminisecfont{#1}}% +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\H@refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother + +% Define alpha enumarative names for counters > 26 +\makeatletter +\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname} +\def\@enumalphalphcnt#1{\alphalph{#1}} +\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname} +\def\@enumAlphAlphcnt#1{\AlphAlph{#1}} +\makeatother +\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa} +\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA} diff --git a/barretenberg/cpp/latex/etoc_doxygen.sty b/barretenberg/cpp/latex/etoc_doxygen.sty new file mode 100644 index 00000000000..5f7e1274609 --- /dev/null +++ b/barretenberg/cpp/latex/etoc_doxygen.sty @@ -0,0 +1,2178 @@ +%% +%% This is file etoc_doxygen.sty +%% +%% Apart from this header notice and the renaming from etoc to +%% etoc_doxygen (also in \ProvidesPackage) it is an identical +%% copy of +%% +%% etoc.sty +%% +%% at version 1.2b of 2023/07/01. +%% +%% This file has been provided to Doxygen team courtesy of the +%% author for benefit of users having a LaTeX installation not +%% yet providing version 1.2a or later of etoc, whose +%% deeplevels feature is required. +%% +%% The original source etoc.dtx (only of the latest version at +%% any given time) is available at +%% +%% https://ctan.org/pkg/etoc +%% +%% and contains the terms for copying and modification as well +%% as author contact information. +%% +%% In brief any modified versions of this file must be renamed +%% with new filenames distinct from etoc.sty. +%% +%% Package: etoc +%% Version: 1.2b +%% License: LPPL 1.3c +%% Copyright (C) 2012-2023 Jean-Francois B. +\NeedsTeXFormat{LaTeX2e}[2003/12/01] +\ProvidesPackage{etoc_doxygen}[2023/07/01 v1.2b Completely customisable TOCs (JFB)] +\newif\ifEtoc@oldLaTeX +\@ifl@t@r\fmtversion{2020/10/01} + {} + {\Etoc@oldLaTeXtrue + \PackageInfo{etoc}{Old LaTeX (\fmtversion) detected!\MessageBreak + Since 1.1a (2023/01/14), etoc prefers LaTeX at least\MessageBreak + as recent as 2020-10-01, for reasons of the .toc file,\MessageBreak + and used to require it (from 1.1a to 1.2).\MessageBreak + This etoc (1.2b) does not *require* it, but has not been\MessageBreak + tested thoroughly on old LaTeX (especially if document\MessageBreak + does not use hyperref) and retrofitting was done only\MessageBreak + on basis of author partial remembrances of old context.\MessageBreak + Reported}} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=Etoc@} +\newif\ifEtoc@lof +\DeclareVoidOption{lof}{\Etoc@loftrue + \PackageInfo{etoc}{Experimental support for \string\locallistoffigures.\MessageBreak + Barely tested, use at own risk}% +} +\newif\ifEtoc@lot +\DeclareVoidOption{lot}{\Etoc@lottrue + \PackageInfo{etoc}{Experimental support for \string\locallistoftables.\MessageBreak + Barely tested, use at own risk}% +} +\@ifclassloaded{memoir}{ +\PackageInfo{etoc} + {As this is with memoir class, all `...totoc' options\MessageBreak + are set true by default. Reported} +\DeclareBoolOption[true]{maintoctotoc} +\DeclareBoolOption[true]{localtoctotoc} +\DeclareBoolOption[true]{localloftotoc} +\DeclareBoolOption[true]{locallottotoc} +}{ +\DeclareBoolOption[false]{maintoctotoc} +\DeclareBoolOption[false]{localtoctotoc} +\DeclareBoolOption[false]{localloftotoc} +\DeclareBoolOption[false]{locallottotoc} +} +\DeclareBoolOption[true]{ouroboros} +\DeclareBoolOption[false]{deeplevels} +\DeclareDefaultOption{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} +\ProcessKeyvalOptions* +\DisableKeyvalOption[action=error,package=etoc]{etoc}{lof} +\DisableKeyvalOption[action=error,package=etoc]{etoc}{lot} +\DisableKeyvalOption[action=error,package=etoc]{etoc}{deeplevels} +\def\etocsetup#1{\setkeys{etoc}{#1}} +\def\etocifmaintoctotoc{\ifEtoc@maintoctotoc + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\def\etociflocaltoctotoc{\ifEtoc@localtoctotoc + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\def\etociflocalloftotoc{\ifEtoc@localloftotoc + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\def\etociflocallottotoc{\ifEtoc@locallottotoc + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\RequirePackage{multicol} +\def\etoc@{\etoc@} +\long\def\Etoc@gobtoetoc@ #1\etoc@{} +\newtoks\Etoc@toctoks +\def\Etoc@par{\par} +\def\etocinline{\def\Etoc@par{}} +\let\etocnopar\etocinline +\def\etocdisplay{\def\Etoc@par{\par}} +\let\Etoc@global\@empty +\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global} +\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty} +\newif\ifEtoc@numbered +\newif\ifEtoc@hyperref +\newif\ifEtoc@parskip +\newif\ifEtoc@tocwithid +\newif\ifEtoc@standardlines +\newif\ifEtoc@etocstyle +\newif\ifEtoc@classstyle +\newif\ifEtoc@keeporiginaltoc +\newif\ifEtoc@skipprefix +\newif\ifEtoc@isfirst +\newif\ifEtoc@localtoc +\newif\ifEtoc@skipthisone +\newif\ifEtoc@stoptoc +\newif\ifEtoc@notactive +\newif\ifEtoc@mustclosegroup +\newif\ifEtoc@isemptytoc +\newif\ifEtoc@checksemptiness +\def\etocchecksemptiness {\Etoc@checksemptinesstrue } +\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse } +\newif\ifEtoc@notocifnotoc +\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue } +\newcounter{etoc@tocid} +\def\Etoc@tocext{toc} +\def\Etoc@lofext{lof} +\def\Etoc@lotext{lot} +\let\Etoc@currext\Etoc@tocext +\def\etocifislocal{\ifEtoc@localtoc\expandafter\@firstoftwo\else + \expandafter\@secondoftwo\fi + } +\def\etocifislocaltoc{\etocifislocal{\ifx\Etoc@currext\Etoc@tocext + \expandafter\@firstoftwo\else + \expandafter\@secondoftwo\fi}% + {\@secondoftwo}% + } +\def\etocifislocallof{\etocifislocal{\ifx\Etoc@currext\Etoc@lofext + \expandafter\@firstoftwo\else + \expandafter\@secondoftwo\fi}% + {\@secondoftwo}% + } +\def\etocifislocallot{\etocifislocal{\ifx\Etoc@currext\Etoc@lotext + \expandafter\@firstoftwo\else + \expandafter\@secondoftwo\fi}% + {\@secondoftwo}% + } +\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@} +\expandafter\def\csname Etoc@-2@@\endcsname {-\tw@} +\expandafter\let\csname Etoc@-1@@\endcsname \m@ne +\expandafter\let\csname Etoc@0@@\endcsname \z@ +\expandafter\let\csname Etoc@1@@\endcsname \@ne +\expandafter\let\csname Etoc@2@@\endcsname \tw@ +\expandafter\let\csname Etoc@3@@\endcsname \thr@@ +\expandafter\chardef\csname Etoc@4@@\endcsname 4 +\expandafter\chardef\csname Etoc@5@@\endcsname 5 +\expandafter\chardef\csname Etoc@6@@\endcsname 6 +\ifEtoc@deeplevels + \expandafter\chardef\csname Etoc@7@@\endcsname 7 + \expandafter\chardef\csname Etoc@8@@\endcsname 8 + \expandafter\chardef\csname Etoc@9@@\endcsname 9 + \expandafter\chardef\csname Etoc@10@@\endcsname 10 + \expandafter\chardef\csname Etoc@11@@\endcsname 11 + \expandafter\chardef\csname Etoc@12@@\endcsname 12 +\fi +\expandafter\let\expandafter\Etoc@maxlevel + \csname Etoc@\ifEtoc@deeplevels12\else6\fi @@\endcsname +\edef\etocthemaxlevel{\number\Etoc@maxlevel} +\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}} +\let\Etoc@none@@ \Etoc@minf +\expandafter\let\expandafter\Etoc@all@@ + \csname Etoc@\ifEtoc@deeplevels11\else5\fi @@\endcsname +\let\Etoc@dolevels\@empty +\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@dolevels\expandafter + {\Etoc@dolevels\Etoc@do{#1}}} +\ifdefined\expanded + \def\etocsetlevel#1#2{\expanded{\noexpand\etoc@setlevel{#1}{#2}}}% +\else + \def\etocsetlevel#1#2{{\edef\Etoc@tmp{\noexpand\etoc@setlevel{#1}{#2}}\expandafter}\Etoc@tmp}% +\fi +\def\etoc@setlevel#1#2{% + \edef\Etoc@tmp{\the\numexpr#2}% + \if1\ifnum\Etoc@tmp>\Etoc@maxlevel0\fi\unless\ifnum\Etoc@minf<\Etoc@tmp;\fi1% + \ifEtoc@deeplevels + \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,% + .7,.8,.9,.10,.11,.12,}% + \else + \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,}% + \fi + \ifin@\else\if\@car#1\@nil @\in@true\fi\fi + \ifin@ + \PackageWarning{etoc} + {Sorry, but `#1' is forbidden as level name.\MessageBreak + \if\@car#1\@nil @% + (because of the @ as first character)\MessageBreak\fi + Reported}% + \else + \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}% + \expandafter\let\csname Etoc@#1@@\expandafter\endcsname + \csname Etoc@\Etoc@tmp @@\endcsname + \expandafter\edef\csname Etoc@@#1@@\endcsname + {\expandafter\noexpand\csname Etoc@#1@@\endcsname}% + \expandafter\edef\csname toclevel@@#1\endcsname + {\expandafter\noexpand\csname toclevel@#1\endcsname}% + \fi + \else + \PackageWarning{etoc} + {Argument `\detokenize{#2}' of \string\etocsetlevel\space should + represent one of\MessageBreak + \ifnum\Etoc@minf=-\thr@@-2, \fi-1, 0, 1, 2, \ifEtoc@deeplevels ...\else3, 4\fi, + \the\numexpr\Etoc@maxlevel-1, or \number\Etoc@maxlevel\space + but evaluates to \Etoc@tmp.\MessageBreak + The level of `#1' will be set to \number\Etoc@maxlevel.\MessageBreak + Tables of contents will ignore `#1' as long\MessageBreak + as its level is \number\Etoc@maxlevel\space (=\string\etocthemaxlevel).% + \MessageBreak + Reported}% + \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}% + \expandafter\let\csname Etoc@#1@@\endcsname\Etoc@maxlevel + \fi +} +\def\etoclevel#1{\csname Etoc@#1@@\endcsname} +\def\etocthelevel#1{\number\csname Etoc@#1@@\endcsname} +\def\etocifunknownlevelTF#1{\@ifundefined{Etoc@#1@@}} +\@ifclassloaded{memoir}{\etocsetlevel{book}{-2}}{} +\etocsetlevel{part}{-1} +\etocsetlevel{chapter}{0} +\etocsetlevel{section}{1} +\etocsetlevel{subsection}{2} +\etocsetlevel{subsubsection}{3} +\etocsetlevel{paragraph}{4} +\etocsetlevel{subparagraph}{5} +\ifdefined\c@chapter + \etocsetlevel{appendix}{0} +\else + \etocsetlevel{appendix}{1} +\fi +\def\Etoc@do#1{\@namedef{l@@#1}{\csname l@#1\endcsname}} +\Etoc@dolevels +\let\Etoc@figure@@\Etoc@maxlevel +\let\Etoc@table@@ \Etoc@maxlevel +\let\Etoc@gobblethreeorfour\@gobblefour +\ifdefined\@gobblethree + \let\Etoc@gobblethree\@gobblethree +\else + \long\def\Etoc@gobblethree#1#2#3{}% +\fi +\AtBeginDocument{% +\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}% +\@ifpackageloaded{hyperref} + {\Etoc@hyperreftrue} + {\ifEtoc@oldLaTeX + \let\Etoc@gobblethreeorfour\Etoc@gobblethree + \let\Etoc@etoccontentsline@fourargs\Etoc@etoccontentsline@ + \long\def\Etoc@etoccontentsline@#1#2#3{% + \Etoc@etoccontentsline@fourargs{#1}{#2}{#3}{}% + }% + \fi + }% +} +\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue } +\def\Etoc@updatestackofends#1\etoc@{\gdef\Etoc@stackofends{#1}} +\def\Etoc@stackofends{{-3}{}} +\def\Etoc@doendsandbegin{% + \expandafter\Etoc@traversestackofends\Etoc@stackofends\etoc@ +} +\def\Etoc@traversestackofends#1{% + \ifnum#1>\Etoc@level + \csname Etoc@end@#1\endcsname + \expandafter\Etoc@traversestackofends + \else + \Etoc@traversestackofends@done{#1}% + \fi +} +\def\Etoc@traversestackofends@done#1#2{#2% + \ifnum#1<\Etoc@level + \csname Etoc@begin@\the\numexpr\Etoc@level\endcsname + \Etoc@global\Etoc@isfirsttrue + \edef\Etoc@tmp{{\the\numexpr\Etoc@level}}% + \else + \Etoc@global\Etoc@isfirstfalse + \let\Etoc@tmp\@empty + \fi + \expandafter\Etoc@updatestackofends\Etoc@tmp{#1}% +} +\def\Etoc@etoccontentsline #1{% + \let\Etoc@next\Etoc@gobblethreeorfour + \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel + \else + \Etoc@skipthisonefalse + \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname + \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi + \ifEtoc@localtoc + \ifEtoc@stoptoc + \Etoc@skipthisonetrue + \else + \ifEtoc@notactive + \Etoc@skipthisonetrue + \else + \unless\ifnum\Etoc@level>\etoclocaltop + \Etoc@skipthisonetrue + \global\Etoc@stoptoctrue + \fi + \fi + \fi + \fi + \ifEtoc@skipthisone + \else + \unless\ifnum\Etoc@level>\c@tocdepth + \ifEtoc@standardlines + \let\Etoc@next\Etoc@savedcontentsline + \else + \let\Etoc@next\Etoc@etoccontentsline@ + \fi + \fi + \fi + \fi + \Etoc@next{#1}% +} +\def\Etoc@etoccontentsline@ #1#2#3#4{% + \Etoc@doendsandbegin + \Etoc@global\edef\Etoc@prefix {\expandafter\noexpand + \csname Etoc@prefix@\the\numexpr\Etoc@level\endcsname }% + \Etoc@global\edef\Etoc@contents{\expandafter\noexpand + \csname Etoc@contents@\the\numexpr\Etoc@level\endcsname }% + \ifEtoc@skipprefix \Etoc@global\def\Etoc@prefix{\@empty}\fi + \global\Etoc@skipprefixfalse + \Etoc@lxyz{#2}{#3}{#4}% + \Etoc@prefix + \Etoc@contents +} +\def\Etoc@lxyz #1#2#3{% + \ifEtoc@hyperref + \Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}% + \else + \Etoc@global\let\etocthelink\@firstofone + \fi + \Etoc@global\def\etocthepage {#2}% + \ifEtoc@hyperref + \ifx\etocthepage\@empty + \Etoc@global\let\etocthelinkedpage\@empty + \else + \Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}% + \fi + \else + \Etoc@global\let\etocthelinkedpage\etocthepage + \fi + \Etoc@global\def\etocthename{#1}% + \futurelet\Etoc@getnb@token\Etoc@@getnb #1\hspace\etoc@ + \ifEtoc@hyperref + \def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}% + \expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname + \ifEtoc@numbered + \expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber + \else + \Etoc@global\let\etocthelinkednumber\@empty + \fi + \else + \Etoc@global\let\etocthelinkedname \etocthename + \Etoc@global\let\etocthelinkednumber\etocthenumber + \fi + \Etoc@global\expandafter\let\csname etoclink \endcsname \etocthelink + \Etoc@global\expandafter\let\csname etocname \endcsname \etocthename + \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber + \Etoc@global\expandafter\let\csname etocpage \endcsname \etocthepage + \ifEtoc@hyperref + \Etoc@lxyz@linktoc + \fi +} +\def\Etoc@lxyz@linktoc{% + \ifcase\Hy@linktoc + \or + \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname + \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber + \or % page + \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage + \else % all + \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname + \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber + \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage + \fi +} +\def\Etoc@@getnb {% + \let\Etoc@next\Etoc@getnb + \ifx\Etoc@getnb@token\@sptoken\let\Etoc@next\Etoc@getnb@nonbr\fi + \ifx\Etoc@getnb@token\bgroup \let\Etoc@next\Etoc@getnb@nonbr\fi + \Etoc@next +} +\def\Etoc@getnb #1{% + \in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}% + \ifin@ + \let\Etoc@next\Etoc@getnb@nmbrd + \else + \ifnum\Etoc@level=\m@ne + \let\Etoc@next\Etoc@@getit + \else + \let\Etoc@next\Etoc@getnb@nonbr + \fi + \in@{#1}{\nonumberline}% + \ifin@ + \let\Etoc@next\Etoc@getnb@nonumberline + \fi + \fi + \Etoc@next #1% +} +\def\Etoc@getnb@nmbrd #1#2{% + \Etoc@global\Etoc@numberedtrue + \Etoc@global\def\etocthenumber {#2}% + \Etoc@getnb@nmbrd@getname\@empty +}% +\def\Etoc@getnb@nmbrd@getname #1\hspace\etoc@ {% + \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}% +} +\def\Etoc@getnb@nonbr #1\etoc@ {% + \Etoc@global\Etoc@numberedfalse + \Etoc@global\let\etocthenumber \@empty +} +\def\Etoc@getnb@nonumberline #1\hspace\etoc@ {% + \Etoc@global\Etoc@numberedfalse + \Etoc@global\let\etocthenumber \@empty + \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{\@gobble#1}% +} +\def\Etoc@@getit #1\hspace#2{% + \ifx\etoc@#2% + \Etoc@global\Etoc@numberedfalse + \Etoc@global\let\etocthenumber \@empty + \else + \Etoc@global\Etoc@numberedtrue + \Etoc@global\def\etocthenumber {#1}% + \expandafter\Etoc@getit@getname \expandafter\@empty + \fi +} +\def\Etoc@getit@getname #1\hspace\etoc@ {% + \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}% +} +\let\etocthename \@empty +\let\etocthenumber \@empty +\let\etocthepage \@empty +\let\etocthelinkedname \@empty +\let\etocthelinkednumber \@empty +\let\etocthelinkedpage \@empty +\let\etocthelink \@firstofone +\DeclareRobustCommand*{\etocname} {} +\DeclareRobustCommand*{\etocnumber}{} +\DeclareRobustCommand*{\etocpage} {} +\DeclareRobustCommand*{\etoclink} {\@firstofone} +\DeclareRobustCommand*{\etocifnumbered} + {\ifEtoc@numbered\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} +\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname +\DeclareRobustCommand*{\etociffirst} + {\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} +\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname +\def\Etoc@readtoc {% + \ifeof \Etoc@tf + \else + \read \Etoc@tf to \Etoc@buffer + \Etoc@toctoks=\expandafter\expandafter\expandafter + {\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}% + \expandafter\Etoc@readtoc + \fi +} +\Etoc@toctoks {}% (superfluous, but for clarity) +\AtBeginDocument{\IfFileExists{\jobname.toc} + {{\endlinechar=\m@ne + \makeatletter + \newread\Etoc@tf + \openin\Etoc@tf\@filef@und + \Etoc@readtoc + \global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}% + \closein\Etoc@tf}} + {\typeout{No file \jobname.toc.}}} +\def\Etoc@openouttoc{% + \ifEtoc@hyperref + \ifx\hyper@last\@undefined + \IfFileExists{\jobname .toc} + {\Hy@WarningNoLine + {old toc file detected; run LaTeX again (cheers from `etoc')}% + \global\Etoc@toctoks={}% + } + {}% + \fi + \fi + \if@filesw + \newwrite \tf@toc + \immediate \openout \tf@toc \jobname .toc\relax + \fi + \global\let\Etoc@openouttoc\empty +} +\def\Etoc@toctoc{% + \gdef\Etoc@stackofends{{-3}{}}% + \global\let\Etoc@level\Etoc@minf + \global\let\Etoc@virtualtop\Etoc@minf + \the\Etoc@toctoks + \ifEtoc@notactive + \else + \gdef\Etoc@level{-\thr@@}% + \Etoc@doendsandbegin + \fi +} +\def\Etoc@@startlocaltoc#1#2{% + \ifEtoc@localtoc + \ifnum #1=#2\relax + \global\let\etoclocaltop\Etoc@virtualtop + \Etoc@@startlocaltochook + \etoclocaltableofcontentshook + \ifEtoc@etocstyle + \etocetoclocaltocmaketitle + \fi + \ifx\Etoc@aftertitlehook\@empty + \else + \ifEtoc@localtoctotoc + \ifEtoc@ouroboros + \else + \let\Etoc@tmp\contentsline + \def\contentsline{\let\contentsline\Etoc@tmp\Etoc@gobblethreeorfour}% + \fi + \fi + \fi + \global\Etoc@notactivefalse + \fi + \fi +} +\let\etoc@startlocaltoc\@gobble +\let\Etoc@@startlocaltoc@toc\Etoc@@startlocaltoc +\let\Etoc@@startlocaltochook\@empty +\unless\ifEtoc@deeplevels + \def\etocdivisionnameatlevel#1{% + \ifcase\numexpr#1\relax + \ifdefined\c@chapter chapter\else section\fi% + \or section% + \or subsection% + \or subsubsection% + \or paragraph% + \or subparagraph% + \or empty% + \else\ifnum\numexpr#1<\m@ne + book% + \else + part% + \fi + \fi + } +\else + \def\etocdivisionnameatlevel#1{% + \ifcase\numexpr#1\relax + \ifdefined\c@chapter chapter\else section\fi% + \or section% + \or subsection% + \or subsubsection% + \or subsubsubsection% + \or subsubsubsubsection% + \or subsubsubsubsubsection% + \or subsubsubsubsubsubsection% + \or paragraph% + \or subparagraph% + \else\ifnum\numexpr#1>\z@ + empty% + \else\ifnum\numexpr#1=\m@ne + part% + \else + book% + \fi\fi + \fi + } +\fi +\def\etoclocalheadtotoc#1#2{\addcontentsline{toc}{@#1}{#2}} +\def\etocglobalheadtotoc{\addcontentsline{toc}} +\providecommand*\UseName{\@nameuse} +\def\etocetoclocaltocmaketitle{% + \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\localcontentsname}% + \if@noskipsec\leavevmode\par\fi + \etociflocaltoctotoc + {\etocifisstarred + {}% star variant, do not add to toc + {\etoclocalheadtotoc + {\etocdivisionnameatlevel{\etoclocaltop+1}}% + {\localcontentsname}% + }% + }% + {}% +}% +\def\localcontentsname {\contentsname}% +\let\etoclocaltableofcontentshook\@empty +\if1\ifEtoc@lof0\fi\ifEtoc@lot0\fi1% +\else +\AtBeginDocument{% + \let\Etoc@originaladdcontentsline\addcontentsline + \def\addcontentsline{\Etoc@hackedaddcontentsline}% +}% +\fi +\ifEtoc@lof + \ifEtoc@lot + \def\Etoc@hackedaddcontentsline#1{% + \expanded{\noexpand\in@{.#1,}}{.lof,.lot,}% + \ifin@\expandafter\Etoc@hackedaddcontentsline@i + \else\expandafter\Etoc@originaladdcontentsline + \fi {#1}} + \else + \def\Etoc@hackedaddcontentsline#1{% + \expanded{\noexpand\in@{.#1,}}{.lof,}% + \ifin@\expandafter\Etoc@hackedaddcontentsline@i + \else\expandafter\Etoc@originaladdcontentsline + \fi {#1}} + \fi +\else + \def\Etoc@hackedaddcontentsline#1{% + \expanded{\noexpand\in@{.#1,}}{.lot,}% + \ifin@\expandafter\Etoc@hackedaddcontentsline@i + \else\expandafter\Etoc@originaladdcontentsline + \fi {#1}} +\fi +\def\Etoc@hackedaddcontentsline@i#1#2#3{% + \expanded{\noexpand\in@{.#1;#2,}}{.lof;figure,.lot;table,}% + \ifin@ + \addtocontents {toc}{% + \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% + \ifdefined\protected@file@percent\protected@file@percent\fi + }% + \fi + \Etoc@originaladdcontentsline{#1}{#2}{#3}% +} +\unless\ifdefined\expanded + \def\Etoc@hackedaddcontentsline#1{% + {\edef\Etoc@tmp{\noexpand\in@{.#1,}{\ifEtoc@lof.lof,\fi\ifEtoc@lot.lot,\fi}}\expandafter}% + \Etoc@tmp + \ifin@\expandafter\Etoc@hackedaddcontentsline@i + \else\expandafter\Etoc@originaladdcontentsline + \fi {#1}% + } + \def\Etoc@hackedaddcontentsline@i#1#2#3{% + {\edef\Etoc@tmp{\noexpand\in@{.#1;#2,}}\expandafter}% + \Etoc@tmp{.lof;figure,.lot;table,}% + \ifin@ + \addtocontents {toc}{% + \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% + \ifdefined\protected@file@percent\protected@file@percent\fi + }% + \fi + \Etoc@originaladdcontentsline{#1}{#2}{#3}% + } +\fi +\def\Etoc@@startlocallistof#1#2#3{% + \ifEtoc@localtoc + \ifnum #2=#3\relax + \global\let\etoclocaltop\Etoc@virtualtop + \global\Etoc@notactivefalse + \Etoc@@startlocaltochook + \csname etoclocallistof#1shook\endcsname + \ifEtoc@etocstyle + \csname etocetoclistof#1smaketitle\endcsname + \fi + \fi + \fi +} +\def\Etoc@@startlocallistof@setlevels#1{% + \ifnum\etoclocaltop<\z@ + \expandafter\let\csname Etoc@#1@@\endcsname\@ne + \else + \expandafter\let\csname Etoc@#1@@\expandafter\endcsname + \csname Etoc@\the\numexpr\etoclocaltop+\@ne @@\endcsname + \fi + \def\Etoc@do##1{% + \ifnum\etoclevel{##1}>\etoclocaltop + \expandafter\let\csname Etoc@##1@@\endcsname\Etoc@maxlevel + \fi}% + \Etoc@dolevels +} +\def\etoclocallistoffigureshook{\etocstandardlines} +\def\etoclocallistoftableshook {\etocstandardlines} +\def\locallistfigurename{\listfigurename} +\def\locallisttablename {\listtablename} +\def\etocetoclistoffiguresmaketitle{% + \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallistfigurename}% + \ifnum\etoclocaltop>\tw@\mbox{}\par\fi + \etociflocalloftotoc + {\etocifisstarred + {}% star variant, do not add to toc + {\etoclocalheadtotoc + {\etocdivisionnameatlevel{\etoclocaltop+1}}% + {\locallistfigurename}% + }% + }% + {}% +}% +\def\etocetoclistoftablesmaketitle{% + \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallisttablename}% + \ifnum\etoclocaltop>\tw@\mbox{}\par\fi + \etociflocallottotoc + {\etocifisstarred + {}% star variant, do not add to toc + {\etoclocalheadtotoc + {\etocdivisionnameatlevel{\etoclocaltop+1}}% + {\locallisttablename}% + }% + }% + {}% +}% +\let\Etoc@listofreset\@empty +\ifEtoc@lof + \def\locallistoffigures{% + \def\Etoc@listofreset{% + \let\Etoc@currext\Etoc@tocext + \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc + \let\Etoc@@startlocaltochook\@empty + \let\Etoc@listofreset\@empty + \let\Etoc@listofhook\@empty + }% + \let\Etoc@currext\Etoc@lofext + \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{figure}}% + \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{figure}}% + \def\Etoc@listofhook{% + \def\Etoc@do####1{% + \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel + }% + \Etoc@dolevels + }% + \localtableofcontents + } +\else + \def\locallistoffigures{% + \PackageError{etoc}{% + \string\locallistoffigures \on@line\space but\MessageBreak + package was loaded without `lof' option}% + {Try again with \string\usepackage[lof]{etoc}}% + } +\fi +\ifEtoc@lot + \def\locallistoftables{% + \def\Etoc@listofreset{% + \let\Etoc@currext\Etoc@tocext + \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc + \let\Etoc@@startlocaltochook\@empty + \let\Etoc@listofreset\@empty + \let\Etoc@listofhook\@empty + }% + \let\Etoc@currext\Etoc@lotext + \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{table}}% + \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{table}}% + \def\Etoc@listofhook{% + \def\Etoc@do####1{% + \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel + }% + \Etoc@dolevels + }% + \localtableofcontents + } +\else + \def\locallistoftables{% + \PackageError{etoc}{% + \string\locallistoftable \on@line\space but\MessageBreak + package was loaded without `lot' option}% + {Try again with \string\usepackage[lot]{etoc}}% + } +\fi +\def\Etoc@checkifempty {% + \global\Etoc@isemptytoctrue + \global\Etoc@stoptocfalse + \global\let\Etoc@level\Etoc@minf + \global\let\Etoc@virtualtop\Etoc@minf + \gdef\Etoc@stackofends{{-3}{}}% + \begingroup + \ifEtoc@localtoc + \def\etoc@startlocaltoc##1{% + \ifnum##1=\Etoc@tocid\relax + \global\let\etoclocaltop\Etoc@virtualtop + \Etoc@@startlocaltochook + \global\Etoc@notactivefalse + \fi + }% + \let\contentsline\Etoc@testingcontentslinelocal + \else + \let\contentsline\Etoc@testingcontentsline + \fi + \Etoc@storetocdepth + \let\Etoc@setlocaltop@doendsandbegin\@empty + \the\Etoc@toctoks + \Etoc@restoretocdepth + \endgroup +} +\DeclareRobustCommand*\etocifwasempty + {\ifEtoc@isemptytoc\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } +\expandafter\let\expandafter\etocxifwasempty\csname etocifwasempty \endcsname +\def\Etoc@testingcontentslinelocal #1{% + \ifEtoc@stoptoc + \else + \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel + \else + \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname + \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi + \ifEtoc@notactive + \else + \ifnum\Etoc@level>\etoclocaltop + \unless\ifnum\Etoc@level>\c@tocdepth + \global\Etoc@isemptytocfalse + \global\Etoc@stoptoctrue + \fi + \else + \global\Etoc@stoptoctrue + \fi + \fi + \fi + \fi + \Etoc@gobblethreeorfour{}% +} +\def\Etoc@testingcontentsline #1{% + \ifEtoc@stoptoc + \else + \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel + \else + \unless\ifnum\csname Etoc@#1@@\endcsname>\c@tocdepth + \global\Etoc@isemptytocfalse + \global\Etoc@stoptoctrue + \fi + \fi + \fi + \Etoc@gobblethreeorfour{}% +} +\def\Etoc@localtableofcontents#1{% + \gdef\etoclocaltop{-\@m}% + \Etoc@localtoctrue + \global\Etoc@isemptytocfalse + \edef\Etoc@tocid{#1}% + \ifnum\Etoc@tocid<\@ne + \setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. \space Rerun LaTeX}}% + \global\Etoc@stoptoctrue + \gdef\etoclocaltop{-\thr@@}% + \Etoc@tableofcontents + \expandafter\Etoc@gobtoetoc@ + \fi + \global\Etoc@notactivetrue + \ifEtoc@checksemptiness + \Etoc@checkifempty + \fi + \ifEtoc@isemptytoc + \ifEtoc@notactive + \setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. \space Rerun LaTeX}}% + \global\Etoc@isemptytocfalse + \global\Etoc@stoptoctrue + \gdef\etoclocaltop{-\thr@@}% + \Etoc@tableofcontents + \expandafter\expandafter\expandafter\Etoc@gobtoetoc@ + \fi + \else + \global\Etoc@stoptocfalse + \global\Etoc@notactivetrue + \edef\etoc@startlocaltoc##1% + {\noexpand\Etoc@@startlocaltoc{##1}{\Etoc@tocid}}% + \Etoc@tableofcontents + \fi + \@gobble\etoc@ + \endgroup\ifEtoc@mustclosegroup\endgroup\fi + \Etoc@tocdepthreset + \Etoc@listofreset + \etocaftertochook +}% \Etoc@localtableofcontents +\def\Etoc@getref #1{% + \@ifundefined{r@#1} + {0} + {\expandafter\Etoc@getref@i\romannumeral-`0% + \expandafter\expandafter\expandafter + \@car\csname r@#1\endcsname0\@nil\@etoc + }% +} +\def\Etoc@getref@i#1#2\@etoc{\ifnum9<1\string#1 #1#2\else 0\fi} +\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}} +\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} +\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} +\def\Etoc@dothis #1#2\etoc@ {\fi #1} +\def\Etoc@t@bleofcontents{% + \gdef\etoclocaltop{-\@M}% + \ifx\Etoc@nexttoken\label\Etoc@dothis{\expandafter\Etoc@label\@gobble}\fi + \ifx\Etoc@nexttoken\@sptoken\Etoc@dothis{\Etoc@again}\fi + \ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi + \ifEtoc@tocwithid\Etoc@dothis{\Etoc@localtableofcontents{\c@etoc@tocid}}\fi + \global\Etoc@isemptytocfalse + \ifEtoc@checksemptiness\Etoc@checkifempty\fi + \ifEtoc@isemptytoc + \ifEtoc@notocifnotoc + \expandafter\expandafter\expandafter\@gobble + \fi + \fi + \Etoc@tableofcontents + \endgroup + \ifEtoc@mustclosegroup\endgroup\fi + \Etoc@tocdepthreset + \Etoc@listofreset + \etocaftertochook + \@gobble\etoc@ + }% \Etoc@t@bleofcontents +\def\Etoc@table@fcontents{% + \refstepcounter{etoc@tocid}% + \Etoc@tocwithidfalse + \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents +} +\def\Etoc@localtable@fcontents{% + \refstepcounter{etoc@tocid}% + \addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}% + \Etoc@tocwithidtrue + \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents +} +\def\etoctableofcontents{% + \Etoc@openouttoc + \Etoc@tocdepthset + \begingroup + \@ifstar + {\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents} + {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}% +}% \etoctableofcontents +\def\etocifisstarred{\ifx\Etoc@aftertitlehook\@empty + \expandafter\@firstoftwo\else + \expandafter\@secondoftwo + \fi} +\let\etocoriginaltableofcontents\tableofcontents +\let\tableofcontents\etoctableofcontents +\let\Etoc@listofhook\@empty +\newcommand*\localtableofcontents{% + \Etoc@openouttoc + \Etoc@tocdepthset + \begingroup + \Etoc@listofhook + \@ifstar + {\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents} + {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}% +}% \localtableofcontents +\newcommand*\localtableofcontentswithrelativedepth[1]{% + \def\Etoc@@startlocaltochook{% + \global\c@tocdepth\numexpr\etoclocaltop+#1\relax + }% + \def\Etoc@listofreset{\let\Etoc@@startlocaltochook\@empty + \let\Etoc@listofreset\@empty}% + \localtableofcontents +}% \localtableofcontentswithrelativedepth +\newcommand\etocsettocstyle[2]{% + \Etoc@etocstylefalse + \Etoc@classstylefalse + \def\Etoc@tableofcontents@user@before{#1}% + \def\Etoc@tableofcontents@user@after {#2}% +}% +\def\etocstoretocstyleinto#1{% +%% \@ifdefinable#1{% + \edef#1{\noexpand\Etoc@etocstylefalse\noexpand\Etoc@classstylefalse + \def\noexpand\Etoc@tableofcontents@user@before{% + \unexpanded\expandafter{\Etoc@tableofcontents@user@before}% + }% + \def\noexpand\Etoc@tableofcontents@user@after{% + \unexpanded\expandafter{\Etoc@tableofcontents@user@after}% + }% + }% +%% }% +}% +\def\Etoc@tableofcontents {% + \Etoc@tableofcontents@etoc@before + \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi + \Etoc@tableofcontents@user@before + \Etoc@tableofcontents@contents + \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi + \Etoc@tableofcontents@user@after + \Etoc@tableofcontents@etoc@after + \@gobble\etoc@ +} +\def\Etoc@tableofcontents@etoc@before{% + \ifnum\c@tocdepth>\Etoc@minf + \else + \expandafter\Etoc@gobtoetoc@ + \fi + \Etoc@par + \Etoc@beforetitlehook + \etocbeforetitlehook + \Etoc@storetocdepth + \let\Etoc@savedcontentsline\contentsline + \let\contentsline\Etoc@etoccontentsline + \ifEtoc@standardlines + \else + \def\Etoc@do##1{% + \expandafter\def\csname etocsaved##1tocline\endcsname + {\PackageError{etoc}{% + \expandafter\string\csname etocsaved##1tocline\endcsname\space + has been deprecated\MessageBreak + at 1.1a and is removed at 1.2.\MessageBreak + Use \expandafter\string\csname l@##1\endcsname\space directly.\MessageBreak + Reported \on@line}% + {I will use \expandafter\string + \csname l@##1\endcsname\space myself for this time.% + }% + \csname l@##1\endcsname + }% + }% + \Etoc@dolevels + \fi +}% +\def\Etoc@tableofcontents@contents{% + \Etoc@tocdepthset + \ifEtoc@parskip\parskip\z@skip\fi + \Etoc@aftertitlehook + \gdef\etoclocaltop{-\thr@@}% + \Etoc@toctoc + \etocaftercontentshook +}% +\def\Etoc@tableofcontents@etoc@after{% + \@nobreakfalse + \Etoc@restoretocdepth + \ifx\Etoc@global\global + \@ifundefined{tof@finish} + {} + {\ifx\tof@finish\@empty + \else + \global\let\contentsline\Etoc@savedcontentsline + \fi + }% + \fi +} +\def\etocsetstyle#1{\ifcsname Etoc@#1@@\endcsname + \expandafter\Etoc@setstyle@a + \else + \expandafter\Etoc@setstyle@error + \fi {#1}% +} +\def\Etoc@setstyle@error #1{% + \PackageWarning{etoc}{`#1' is unknown to etoc. \space Did you\MessageBreak + forget some \string\etocsetlevel{#1}{}?\MessageBreak + Reported}% + \@gobblefour +} +\def\Etoc@setstyle@a #1{% + \edef\Etoc@tmp{\the\numexpr\csname Etoc@#1@@\endcsname}% + \if1\unless\ifnum\Etoc@tmp<\Etoc@maxlevel 0\fi + \unless\ifnum\Etoc@tmp>\Etoc@minf 0\fi1% + \Etoc@standardlinesfalse + \expandafter\Etoc@setstyle@b\expandafter\Etoc@tmp + \else + \ifnum\Etoc@tmp=\Etoc@maxlevel + \in@{.#1,}{.figure,.table,}% + \ifin@ + \PackageWarning{etoc} + {You can not use \string\etocsetstyle\space with `#1'.\MessageBreak + Check the package documentation (in particular about\MessageBreak + \string\etoclocallistoffigureshook/\string\etoclocallistoftableshook)% + \MessageBreak on how to customize + figure and table entries in local\MessageBreak lists. Reported}% + \else + \PackageInfo{etoc} + {Attempt to set the style of `#1',\MessageBreak + whose level is currently the maximal one \etocthemaxlevel,\MessageBreak + which is never displayed. \space This will be ignored\MessageBreak + but note that we do quit compatibility mode.\MessageBreak + Reported}% + \Etoc@standardlinesfalse + \fi + \else + \PackageWarning{etoc}{This should not happen. Reported}% + \fi + \expandafter\@gobblefour + \fi +} +\long\def\Etoc@setstyle@b#1#2#3#4#5{% + \expandafter\def\csname Etoc@begin@#1\endcsname {#2}% + \expandafter\def\csname Etoc@prefix@#1\endcsname {#3}% + \expandafter\def\csname Etoc@contents@#1\endcsname {#4}% + \expandafter\def\csname Etoc@end@#1\endcsname {#5}% +} +\def\Etoc@setstyle@e#1{% + \expandafter\let\csname Etoc@begin@#1\endcsname \@empty + \expandafter\let\csname Etoc@prefix@#1\endcsname \@empty + \expandafter\let\csname Etoc@contents@#1\endcsname \@empty + \expandafter\let\csname Etoc@end@#1\endcsname \@empty +} +\def\Etoc@storelines@a#1{% + \noexpand\Etoc@setstyle@b{#1}% + {\expandafter\Etoc@expandonce\csname Etoc@begin@#1\endcsname}% + {\expandafter\Etoc@expandonce\csname Etoc@prefix@#1\endcsname}% + {\expandafter\Etoc@expandonce\csname Etoc@contents@#1\endcsname}% + {\expandafter\Etoc@expandonce\csname Etoc@end@#1\endcsname}% +} +\def\Etoc@expandonce#1{\unexpanded\expandafter{#1}} +\def\etocstorelinestylesinto#1{% + \edef#1{\Etoc@storelines@a{-2}\Etoc@storelines@a{-1}\Etoc@storelines@a{0}% + \Etoc@storelines@a {1}\Etoc@storelines@a {2}\Etoc@storelines@a{3}% + \Etoc@storelines@a {4}\Etoc@storelines@a {5}% + \ifEtoc@deeplevels + \Etoc@storelines@a{6}\Etoc@storelines@a{7}\Etoc@storelines@a{8}% + \Etoc@storelines@a{9}\Etoc@storelines@a{10}\Etoc@storelines@a{11}% + \fi + }% +} +\def\etocstorethislinestyleinto#1#2{% + \edef#2{\expandafter\Etoc@storelines@a\expandafter{\number\etoclevel{#1}}}% +}% +\def\etocfontminustwo {\normalfont \LARGE \bfseries} +\def\etocfontminusone {\normalfont \large \bfseries} +\def\etocfontzero {\normalfont \large \bfseries} +\def\etocfontone {\normalfont \normalsize \bfseries} +\def\etocfonttwo {\normalfont \normalsize} +\def\etocfontthree {\normalfont \footnotesize} +\def\etocsepminustwo {4ex \@plus .5ex \@minus .5ex} +\def\etocsepminusone {4ex \@plus .5ex \@minus .5ex} +\def\etocsepzero {2.5ex \@plus .4ex \@minus .4ex} +\def\etocsepone {1.5ex \@plus .3ex \@minus .3ex} +\def\etocseptwo {.5ex \@plus .1ex \@minus .1ex} +\def\etocsepthree {.25ex \@plus .05ex \@minus .05ex} +\def\etocbaselinespreadminustwo {1} +\def\etocbaselinespreadminusone {1} +\def\etocbaselinespreadzero {1} +\def\etocbaselinespreadone {1} +\def\etocbaselinespreadtwo {1} +\def\etocbaselinespreadthree {.9} +\def\etocminustwoleftmargin {1.5em plus 0.5fil} +\def\etocminustworightmargin {1.5em plus -0.5fil} +\def\etocminusoneleftmargin {1em} +\def\etocminusonerightmargin {1em} +\def\etoctoclineleaders + {\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}} +\def\etocabbrevpagename {p.~} +\def\etocpartname {Part} +\def\etocbookname {Book} +\def\etocdefaultlines{% + \Etoc@standardlinesfalse + \etocdefaultlines@setbook + \etocdefaultlines@setpart + \etocdefaultlines@setchapter + \etocdefaultlines@setsection + \etocdefaultlines@setsubsection + \etocdefaultlines@setsubsubsection + \etocdefaultlines@setdeeperones +} +\def\etocnoprotrusion{\leavevmode\kern-\p@\kern\p@} +\@ifclassloaded{memoir}{% + \def\etocdefaultlines@setbook{% + \Etoc@setstyle@b + {-2}% + {\addpenalty\@M\etocskipfirstprefix} + {\addpenalty\@secpenalty} + {\begingroup + \etocfontminustwo + \addvspace{\etocsepminustwo}% + \parindent \z@ + \leftskip \etocminustwoleftmargin + \rightskip \etocminustworightmargin + \parfillskip \@flushglue + \vbox{\etocifnumbered{\etoclink{\etocbookname\enspace\etocthenumber:\quad}}{}% + \etocname + \baselineskip\etocbaselinespreadminustwo\baselineskip + \par}% + \addpenalty\@M\addvspace{\etocsepminusone}% + \endgroup} + {}% + } + }{\let\etocdefaultlines@setbook\@empty} +\def\etocdefaultlines@setpart{% +\Etoc@setstyle@b + {-1}% + {\addpenalty\@M\etocskipfirstprefix} + {\addpenalty\@secpenalty} + {\begingroup + \etocfontminusone + \addvspace{\etocsepminusone}% + \parindent \z@ + \leftskip \etocminusoneleftmargin + \rightskip \etocminusonerightmargin + \parfillskip \@flushglue + \vbox{\etocifnumbered{\etoclink{\etocpartname\enspace\etocthenumber.\quad}}{}% + \etocname + \baselineskip\etocbaselinespreadminusone\baselineskip + \par}% + \addpenalty\@M\addvspace{\etocsepzero}% + \endgroup} + {}% +} +\def\etocdefaultlines@setchapter{% +\Etoc@setstyle@b + {0}% + {\addpenalty\@M\etocskipfirstprefix} + {\addpenalty\@itempenalty} + {\begingroup + \etocfontzero + \addvspace{\etocsepzero}% + \parindent \z@ \parfillskip \@flushglue + \vbox{\etocifnumbered{\etocnumber.\enspace}{}\etocname + \baselineskip\etocbaselinespreadzero\baselineskip + \par}% + \endgroup} + {\addpenalty{-\@highpenalty}\addvspace{\etocsepminusone}}% +} +\def\etocdefaultlines@setsection{% +\Etoc@setstyle@b + {1}% + {\addpenalty\@M\etocskipfirstprefix} + {\addpenalty\@itempenalty} + {\begingroup + \etocfontone + \addvspace{\etocsepone}% + \parindent \z@ \parfillskip \z@ + \setbox\z@\vbox{\parfillskip\@flushglue + \etocname\par + \setbox\tw@\lastbox + \global\setbox\@ne\hbox{\unhbox\tw@\ }}% + \dimen\z@=\wd\@ne + \setbox\z@=\etoctoclineleaders + \advance\dimen\z@\wd\z@ + \etocifnumbered + {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}} + {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}% + \advance\dimen\z@\wd\tw@ + \ifdim\dimen\z@ < \linewidth + \vbox{\etocname~% + \leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadone\baselineskip + \par}% + \else + \vbox{\etocname~% + \leaders\copy\z@\hfil\break + \hbox{}\leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadone\baselineskip + \par}% + \fi + \endgroup} + {\addpenalty\@secpenalty\addvspace{\etocsepzero}}% +} +\def\etocdefaultlines@setsubsection{% +\Etoc@setstyle@b + {2}% + {\addpenalty\@medpenalty\etocskipfirstprefix} + {\addpenalty\@itempenalty} + {\begingroup + \etocfonttwo + \addvspace{\etocseptwo}% + \parindent \z@ \parfillskip \z@ + \setbox\z@\vbox{\parfillskip\@flushglue + \etocname\par\setbox\tw@\lastbox + \global\setbox\@ne\hbox{\unhbox\tw@}}% + \dimen\z@=\wd\@ne + \setbox\z@=\etoctoclineleaders + \advance\dimen\z@\wd\z@ + \etocifnumbered + {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}} + {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}% + \advance\dimen\z@\wd\tw@ + \ifdim\dimen\z@ < \linewidth + \vbox{\etocname~% + \leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadtwo\baselineskip + \par}% + \else + \vbox{\etocname~% + \leaders\copy\z@\hfil\break + \hbox{}\leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadtwo\baselineskip + \par}% + \fi + \endgroup} + {\addpenalty\@secpenalty\addvspace{\etocsepone}}% +} +\def\etocdefaultlines@setsubsubsection{% +\Etoc@setstyle@b + {3}% + {\addpenalty\@M + \etocfontthree + \vspace{\etocsepthree}% + \noindent + \etocskipfirstprefix} + {\allowbreak\,--\,} + {\etocname} + {.\hfil + \begingroup + \baselineskip\etocbaselinespreadthree\baselineskip + \par + \endgroup + \addpenalty{-\@highpenalty}} +} +\def\etocdefaultlines@setdeeperones{% +\Etoc@setstyle@e{4}% +\Etoc@setstyle@e{5}% +\ifEtoc@deeplevels + \Etoc@setstyle@e{6}% + \Etoc@setstyle@e{7}% + \Etoc@setstyle@e{8}% + \Etoc@setstyle@e{9}% + \Etoc@setstyle@e{10}% + \Etoc@setstyle@e{11}% +\fi +} +\def\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex} +\def\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex} +\def\etoccolumnsep{2em} +\def\etocmulticolsep{0ex} +\def\etocmulticolpretolerance{-1} +\def\etocmulticoltolerance{200} +\def\etocdefaultnbcol{2} +\def\etocinnertopsep{2ex} +\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{% +\etocsettocstyle + {\let\etocoldpar\par + \addvspace{\etocabovetocskip}% + \ifnum #1>\@ne + \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}[#2\etocoldpar\addvspace{\etocinnertopsep}]} + {#2\ifvmode\else\begingroup\interlinepenalty\@M\parskip\z@skip + \@@par\endgroup + \fi + \nobreak\addvspace{\etocinnertopsep}% + \pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}% + }% + {\ifnum #1>\@ne + \expandafter\@firstofone + \else \expandafter\@gobble + \fi + {\end{multicols}}% + \addvspace{\etocbelowtocskip}}% +} +\def\etocinnerbottomsep{3.5ex} +\def\etocinnerleftsep{2em} +\def\etocinnerrightsep{2em} +\def\etoctoprule{\hrule} +\def\etocleftrule{\vrule} +\def\etocrightrule{\vrule} +\def\etocbottomrule{\hrule} +\def\etoctoprulecolorcmd{\relax} +\def\etocbottomrulecolorcmd{\relax} +\def\etocleftrulecolorcmd{\relax} +\def\etocrightrulecolorcmd{\relax} +\def\etoc@ruledheading #1{% + \hb@xt@\linewidth{\color@begingroup + \hss #1\hss\hskip-\linewidth + \etoctoprulecolorcmd\leaders\etoctoprule\hss + \phantom{#1}% + \leaders\etoctoprule\hss\color@endgroup}% + \nointerlineskip\nobreak\vskip\etocinnertopsep} +\newcommand*\etocruledstyle[2][\etocdefaultnbcol]{% +\etocsettocstyle + {\addvspace{\etocabovetocskip}% + \ifnum #1>\@ne + \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}[\etoc@ruledheading{#2}]} + {\etoc@ruledheading{#2}% + \pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\expandafter\@firstofone + \else \expandafter\@gobble + \fi + {\end{multicols}}% + \addvspace{\etocbelowtocskip}}} +\def\etocframedmphook{\relax} +\long\def\etocbkgcolorcmd{\relax} +\long\def\Etoc@relax{\relax} +\newbox\etoc@framed@titlebox +\newbox\etoc@framed@contentsbox +\newcommand*\etocframedstyle[2][\etocdefaultnbcol]{% +\etocsettocstyle{% + \addvspace{\etocabovetocskip}% + \sbox\z@{#2}% + \dimen\z@\dp\z@ + \ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi + \setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup + \hss + \ifx\etocbkgcolorcmd\Etoc@relax + \else + \sbox\tw@{\color{white}% + \vrule\@width\wd\z@\@height\ht\z@\@depth\dimen\z@}% + \ifdim\wd\z@<\linewidth \dp\tw@\z@\fi + \box\tw@ + \hskip-\wd\z@ + \fi + \copy\z@ + \hss + \hskip-\linewidth + \etoctoprulecolorcmd\leaders\etoctoprule\hss + \hskip\wd\z@ + \etoctoprulecolorcmd\leaders\etoctoprule\hss\color@endgroup}% + \setbox\z@\hbox{\etocleftrule\etocrightrule}% + \dimen\tw@\linewidth\advance\dimen\tw@-\wd\z@ + \advance\dimen\tw@-\etocinnerleftsep + \advance\dimen\tw@-\etocinnerrightsep + \setbox\etoc@framed@contentsbox=\vbox\bgroup + \hsize\dimen\tw@ + \kern\dimen\z@ + \vskip\etocinnertopsep + \hbox\bgroup + \begin{minipage}{\hsize}% + \etocframedmphook + \ifnum #1>\@ne + \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}} + {\pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\expandafter\@firstofone + \else \expandafter\@gobble + \fi + {\end{multicols}\unskip }% + \end{minipage}% + \egroup + \vskip\etocinnerbottomsep + \egroup + \vbox{\hsize\linewidth + \ifx\etocbkgcolorcmd\Etoc@relax + \else + \kern\ht\etoc@framed@titlebox + \kern\dp\etoc@framed@titlebox + \hb@xt@\linewidth{\color@begingroup + \etocleftrulecolorcmd\etocleftrule + \etocbkgcolorcmd + \leaders\vrule + \@height\ht\etoc@framed@contentsbox + \@depth\dp\etoc@framed@contentsbox + \hss + \etocrightrulecolorcmd\etocrightrule + \color@endgroup}\nointerlineskip + \vskip-\dp\etoc@framed@contentsbox + \vskip-\ht\etoc@framed@contentsbox + \vskip-\dp\etoc@framed@titlebox + \vskip-\ht\etoc@framed@titlebox + \fi + \box\etoc@framed@titlebox\nointerlineskip + \hb@xt@\linewidth{\color@begingroup + {\etocleftrulecolorcmd\etocleftrule}% + \hss\box\etoc@framed@contentsbox\hss + \etocrightrulecolorcmd\etocrightrule\color@endgroup} + \nointerlineskip + \vskip\ht\etoc@framed@contentsbox + \vskip\dp\etoc@framed@contentsbox + \hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd + \leaders\etocbottomrule\hss\color@endgroup}} + \addvspace{\etocbelowtocskip}}} +\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{% + \etocmulticolstyle[#1]{#2}% + \tableofcontents} +\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{% + \etocmulticolstyle[#1]{#2}% + \tableofcontents*} +\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{% + \etocmulticolstyle[#1]{#2}% + \localtableofcontents} +\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{% + \etocmulticolstyle[#1]{#2}% + \localtableofcontents*} +\newcommand*\etoc@ruledtoc[2][\etocdefaultnbcol]{% + \etocruledstyle[#1]{#2}% + \tableofcontents} +\newcommand*\etoc@ruledtoci[2][\etocdefaultnbcol]{% + \etocruledstyle[#1]{#2}% + \tableofcontents*} +\newcommand*\etoc@local@ruledtoc[2][\etocdefaultnbcol]{% + \etocruledstyle[#1]{#2}% + \localtableofcontents} +\newcommand*\etoc@local@ruledtoci[2][\etocdefaultnbcol]{% + \etocruledstyle[#1]{#2}% + \localtableofcontents*} +\newcommand*\etoc@framedtoc[2][\etocdefaultnbcol]{% + \etocframedstyle[#1]{#2}% + \tableofcontents} +\newcommand*\etoc@framedtoci[2][\etocdefaultnbcol]{% + \etocframedstyle[#1]{#2}% + \tableofcontents*} +\newcommand*\etoc@local@framedtoc[2][\etocdefaultnbcol]{% + \etocframedstyle[#1]{#2}% + \localtableofcontents} +\newcommand*\etoc@local@framedtoci[2][\etocdefaultnbcol]{% + \etocframedstyle[#1]{#2}% + \localtableofcontents*} +\def\etocmulticol{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@multicoltoci} + {\etoc@multicoltoc}} +\def\etocruled{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@ruledtoci} + {\etoc@ruledtoc}} +\def\etocframed{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@framedtoci} + {\etoc@framedtoc}} +\def\etoclocalmulticol{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@local@multicoltoci} + {\etoc@local@multicoltoc}} +\def\etoclocalruled{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@local@ruledtoci} + {\etoc@local@ruledtoc}} +\def\etoclocalframed{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@local@framedtoci} + {\etoc@local@framedtoc}} +\def\etocmemoirtoctotocfmt #1#2{% + \PackageWarning{etoc} + {\string\etocmemoirtoctotocfmt\space is deprecated.\MessageBreak + Use in its place \string\etocsettoclineforclasstoc,\MessageBreak + and \string\etocsettoclineforclasslistof{toc} (or {lof}, {lot}). + I will do this now.\MessageBreak + Reported}% + \etocsettoclineforclasstoc{#1}{#2}% + \etocsettoclineforclasslistof{toc}{#1}{#2}% +} +\def\etocsettoclineforclasstoc #1#2{% + \def\etocclassmaintocaddtotoc{\etocglobalheadtotoc{#1}{#2}}% +} +\def\etocsettoclineforclasslistof #1#2#3{% + \@namedef{etocclasslocal#1addtotoc}{\etoclocalheadtotoc{#2}{#3}}% +} +\let\etocclasslocaltocaddtotoc\@empty +\let\etocclasslocallofaddtotoc\@empty +\let\etocclasslocallotaddtotoc\@empty +\ifdefined\c@chapter + \def\etocclasslocaltocmaketitle{\section*{\localcontentsname}} + \def\etocclasslocallofmaketitle{\section*{\locallistfigurename}} + \def\etocclasslocallotmaketitle{\section*{\locallisttablename}} + \etocsettoclineforclasstoc {chapter}{\contentsname} + \etocsettoclineforclasslistof{toc}{section}{\localcontentsname} + \etocsettoclineforclasslistof{lof}{section}{\locallistfigurename} + \etocsettoclineforclasslistof{lot}{section}{\locallisttablename} +\else + \def\etocclasslocaltocmaketitle{\subsection*{\localcontentsname}}% + \def\etocclasslocallofmaketitle{\subsection*{\locallistfigurename}}% + \def\etocclasslocallotmaketitle{\subsection*{\locallisttablename}}% + \etocsettoclineforclasstoc {section}{\contentsname} + \etocsettoclineforclasslistof{toc}{subsection}{\localcontentsname} + \etocsettoclineforclasslistof{lof}{subsection}{\locallistfigurename} + \etocsettoclineforclasslistof{lot}{subsection}{\locallisttablename} +\fi +\def\etocclasslocalperhapsaddtotoc #1{% + \etocifisstarred + {} + {\csname ifEtoc@local#1totoc\endcsname + \csname etocclasslocal#1addtotoc\endcsname + \fi + }% +} +\def\etocarticlestyle{% + \etocsettocstyle + {\ifEtoc@localtoc + \@nameuse{etocclasslocal\Etoc@currext maketitle}% + \etocclasslocalperhapsaddtotoc\Etoc@currext + \else + \section *{\contentsname + \@mkboth {\MakeUppercase \contentsname} + {\MakeUppercase \contentsname}}% + \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% + \fi + } + {}% +} +\def\etocarticlestylenomarks{% + \etocsettocstyle + {\ifEtoc@localtoc + \@nameuse{etocclasslocal\Etoc@currext maketitle}% + \etocclasslocalperhapsaddtotoc\Etoc@currext + \else + \section *{\contentsname}% + \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% + \fi + } + {}% +} +\def\etocbookstyle{% + \etocsettocstyle + {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi + \ifEtoc@localtoc + \@nameuse{etocclasslocal\Etoc@currext maketitle}% + \etocclasslocalperhapsaddtotoc\Etoc@currext + \else + \chapter *{\contentsname + \@mkboth {\MakeUppercase \contentsname} + {\MakeUppercase \contentsname}}% + \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% + \fi + }% + {\if@restonecol \twocolumn \fi}% +} +\def\etocbookstylenomarks{% + \etocsettocstyle + {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi + \ifEtoc@localtoc + \@nameuse{etocclasslocal\Etoc@currext maketitle}% + \etocclasslocalperhapsaddtotoc\Etoc@currext + \else + \chapter *{\contentsname}% + \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% + \fi + }% + {\if@restonecol \twocolumn \fi}% +} +\let\etocreportstyle\etocbookstyle +\let\etocreportstylenomarks\etocbookstylenomarks +\def\etocmemoirstyle{% + \etocsettocstyle + {\ensureonecol \par \begingroup \phantomsection + \ifx\Etoc@aftertitlehook\@empty + \else + \ifmem@em@starred@listof + \else + \ifEtoc@localtoc + \etocclasslocalperhapsaddtotoc\Etoc@currext + \else + \ifEtoc@maintoctotoc + \etocclassmaintocaddtotoc + \fi + \fi + \fi + \fi + \ifEtoc@localtoc + \@namedef{@\Etoc@currext maketitle}{% + \@nameuse{etocclasslocal\Etoc@currext maketitle}% + }% + \fi + \@nameuse {@\Etoc@currext maketitle} %<< space token here from memoir code + \ifx\Etoc@aftertitlehook\@empty + \else + \Etoc@aftertitlehook \let \Etoc@aftertitlehook \relax + \fi + \parskip \cftparskip \@nameuse {cft\Etoc@currext beforelisthook}% + }% + {\@nameuse {cft\Etoc@currext afterlisthook}% + \endgroup\restorefromonecol + }% +} +\let\Etoc@beforetitlehook\@empty +\if1\@ifclassloaded{scrartcl}0{\@ifclassloaded{scrbook}0{\@ifclassloaded{scrreprt}01}}% +\expandafter\@gobble +\else + \ifdefined\setuptoc + \def\Etoc@beforetitlehook{% + \ifEtoc@localtoc + \etocclasslocalperhapsaddtotoc\Etoc@currext + \setuptoc{\Etoc@currext}{leveldown}% + \else + \etocifisstarred{}{\etocifmaintoctotoc{\setuptoc{toc}{totoc}}}% + \fi + }% + \fi +\expandafter\@firstofone +\fi +{\def\etocclasslocalperhapsaddtotoc #1{% + \etocifisstarred + {}% + {\csname ifEtoc@local#1totoc\endcsname + \setuptoc{\Etoc@currext}{totoc}% + \fi + }% + }% +} +\ifdefined\Iftocfeature + \def\etoc@Iftocfeature{\Iftocfeature}% +\else + \def\etoc@Iftocfeature{\iftocfeature}% +\fi +\def\etocscrartclstyle{% + \etocsettocstyle + {\ifx\Etoc@currext\Etoc@tocext + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {\let\if@dynlist\if@tocleft}% + \edef\@currext{\Etoc@currext}% + \@ifundefined{listof\@currext name}% + {\def\list@fname{\listofname~\@currext}}% + {\expandafter\let\expandafter\list@fname + \csname listof\@currext name\endcsname}% + \etoc@Iftocfeature {\@currext}{onecolumn} + {\etoc@Iftocfeature {\@currext}{leveldown} + {} + {\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }} + {}% + \etoc@Iftocfeature {\@currext}{numberline}% + {\def \nonumberline {\numberline {}}}{}% + \expandafter\tocbasic@listhead\expandafter {\list@fname}% + \begingroup \expandafter \expandafter \expandafter + \endgroup \expandafter + \ifx + \csname microtypesetup\endcsname \relax + \else + \etoc@Iftocfeature {\@currext}{noprotrusion}{} + {\microtypesetup {protrusion=false}% + \PackageInfo {tocbasic}% + {character protrusion at \@currext\space deactivated}}% + \fi + \etoc@Iftocfeature{\@currext}{noparskipfake}{}{% + \ifvmode \@tempskipa\lastskip \vskip-\lastskip + \addtolength{\@tempskipa}{\parskip}\vskip\@tempskipa\fi + }% + \setlength {\parskip }{\z@ }% + \setlength {\parindent }{\z@ }% + \setlength {\parfillskip }{\z@ \@plus 1fil}% + \csname tocbasic@@before@hook\endcsname + \csname tb@\@currext @before@hook\endcsname + }% end of before_toc + {% start of after_toc + \providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file + \edef\@currext{\Etoc@currext}% + \csname tb@\@currext @after@hook\endcsname + \csname tocbasic@@after@hook\endcsname + }% end of after_toc +} +\let\etocscrbookstyle\etocscrartclstyle +\let\etocscrreprtstyle\etocscrartclstyle +\def\etocclasstocstyle{\etocarticlestyle} +\newcommand*\etocmarkboth[1]{% + \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} +\newcommand*\etocmarkbothnouc[1]{\@mkboth{#1}{#1}} +\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]% + {\csname #1\endcsname *{#3}}} +\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]% + {\csname #1\endcsname *{#3\etocmarkboth{#4}}}} +\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]% + {\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}} +\def\Etoc@redefetocstylesforchapters{% + \renewcommand\etoctocstylewithmarks[4][chapter]{% + \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkboth{##4}}}% + } + \renewcommand\etoctocstylewithmarksnouc[4][chapter]{% + \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}% + } + \renewcommand\etoctocstyle[3][chapter]{% + \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}} + } +} +\@ifclassloaded{scrartcl} + {\renewcommand*\etocclasstocstyle{\etocscrartclstyle}}{} +\@ifclassloaded{book} + {\renewcommand*\etocfontone{\normalfont\normalsize} + \renewcommand*\etocclasstocstyle{\etocbookstyle} + \Etoc@redefetocstylesforchapters}{} +\@ifclassloaded{report} + {\renewcommand*\etocfontone{\normalfont\normalsize} + \renewcommand*\etocclasstocstyle{\etocreportstyle} + \Etoc@redefetocstylesforchapters}{} +\@ifclassloaded{scrbook} + {\renewcommand*\etocfontone{\normalfont\normalsize} + \renewcommand*\etocclasstocstyle{\etocscrbookstyle} + \Etoc@redefetocstylesforchapters}{} +\@ifclassloaded{scrreprt} + {\renewcommand*\etocfontone{\normalfont\normalsize} + \renewcommand*\etocclasstocstyle{\etocscrreprtstyle} + \Etoc@redefetocstylesforchapters}{} +\@ifclassloaded{memoir} + {\renewcommand*\etocfontone{\normalfont\normalsize} + \renewcommand*\etocclasstocstyle{\etocmemoirstyle} + \Etoc@redefetocstylesforchapters}{} +\def\etoctocloftstyle {% + \etocsettocstyle{% + \@cfttocstart + \par + \begingroup + \parindent\z@ \parskip\cftparskip + \@nameuse{@cftmake\Etoc@currext title}% + \ifEtoc@localtoc + \etoctocloftlocalperhapsaddtotoc\Etoc@currext + \else + \etocifisstarred {}{\ifEtoc@maintoctotoc\@cftdobibtoc\fi}% + \fi + }% + {% + \endgroup + \@cfttocfinish + }% +} +\def\etoctocloftlocalperhapsaddtotoc#1{% + \etocifisstarred + {}% + {\csname ifEtoc@local#1totoc\endcsname + \ifdefined\c@chapter\def\@tocextra{@section}\else\def\@tocextra{@subsection}\fi + \csname @cftdobib#1\endcsname + \fi + }% +} +\def\etoctocbibindstyle {% + \etocsettocstyle {% + \toc@start + \ifEtoc@localtoc + \@nameuse{etocclasslocal\Etoc@currext maketitle}% + \etocclasslocalperhapsaddtotoc\Etoc@currext + \else + \etoc@tocbibind@dotoctitle + \fi + }% + {\toc@finish}% +} +\def\etoc@tocbibind@dotoctitle {% + \if@bibchapter + \etocifisstarred + {\chapter*{\contentsname}\prw@mkboth{\contentsname} % id. + }% + {\ifEtoc@maintoctotoc + \toc@chapter{\contentsname} %<-space from original + \else + \chapter*{\contentsname}\prw@mkboth{\contentsname} % id. + \fi + }% + \else + \etocifisstarred + {\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} %<-space + } + {\ifEtoc@maintoctotoc + \toc@section{\@tocextra}{\contentsname} %<-space from original + \else + \@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} % id. + \fi + }% + \fi +}% +\@ifclassloaded{memoir} +{} +{% memoir not loaded + \@ifpackageloaded{tocloft} + {\if@cftnctoc\else + \ifEtoc@keeporiginaltoc + \else + \AtBeginDocument{\let\tableofcontents\etoctableofcontents}% + \fi + \fi } + {\AtBeginDocument + {\@ifpackageloaded{tocloft} + {\if@cftnctoc\else + \PackageWarningNoLine {etoc} + {Package `tocloft' was loaded after `etoc'.\MessageBreak + To prevent it from overwriting \protect\tableofcontents, it will\MessageBreak + be tricked into believing to have been loaded with its\MessageBreak + option `titles'. \space But this will cause the `tocloft'\MessageBreak + customization of the titles of the main list of figures\MessageBreak + and list of tables to not apply either.\MessageBreak + You should load `tocloft' before `etoc'.}% + \AtEndDocument{\PackageWarning{etoc} + {Please load `tocloft' before `etoc'!\@gobbletwo}}% + \fi + \@cftnctoctrue }% + {}% + }% + }% +} +\@ifclassloaded{memoir} +{} +{% memoir not loaded + \AtBeginDocument{% + \@ifpackageloaded{tocloft} + {% + \def\etocclasstocstyle{% + \etoctocloftstyle + \Etoc@classstyletrue + }% + \ifEtoc@etocstyle + \ifEtoc@classstyle + \etocclasstocstyle + \Etoc@etocstyletrue + \fi + \else + \ifEtoc@classstyle + \etocclasstocstyle + \fi + \fi + }% + {% no tocloft + \@ifpackageloaded {tocbibind} + {\if@dotoctoc + \def\etocclasstocstyle{% + \etoctocbibindstyle + \Etoc@classstyletrue + }% + \ifEtoc@etocstyle + \ifEtoc@classstyle + \etocclasstocstyle + \Etoc@etocstyletrue + \fi + \else + \ifEtoc@classstyle + \etocclasstocstyle + \fi + \fi + \ifEtoc@keeporiginaltoc + \else + \let\tableofcontents\etoctableofcontents + \fi + }% + {}% + }% + \@ifpackageloaded{tocbibind} + {% tocbibind, perhaps with tocloft + \if@dotoctoc + \ifEtoc@keeporiginaltoc + \else + \let\tableofcontents\etoctableofcontents + \fi + \etocsetup{maintoctotoc,localtoctotoc}% + \PackageInfo{etoc}{% + Setting (or re-setting) the options `maintoctotoc' and\MessageBreak + `localtoctotoc' to true as tocbibind was detected and\MessageBreak + found to be configured for `TOC to toc'.\MessageBreak + Reported at begin document}% + \fi + \if@dotoclof + \ifEtoc@lof + \etocsetup{localloftotoc}% + \PackageInfo{etoc}{% + Setting (or re-setting) `localloftotoc=true' as the\MessageBreak + package tocbibind was detected and is configured for\MessageBreak + `LOF to toc'. Reported at begin document}% + \fi + \fi + \if@dotoclot + \ifEtoc@lot + \etocsetup{locallottotoc}% + \PackageInfo{etoc}{% + Setting (or re-setting) `locallottotoc=true' as the\MessageBreak + package tocbibind was detected and is configured for\MessageBreak + `LOT to toc'. Reported at begin document}% + \fi + \fi + }% end of tocbibind branch + {}% + }% end of at begin document +}% end of not with memoir branch +\def\Etoc@addtocontents #1#2{% + \addtocontents {toc}{% + \protect\contentsline{#1}{#2}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% + \ifdefined\protected@file@percent\protected@file@percent\fi + }% +} +\def\Etoc@addcontentsline@ #1#2#3{% + \@namedef{toclevel@#1}{#3}\addcontentsline {toc}{#1}{#2}% +} +\DeclareRobustCommand*{\etoctoccontentsline} + {\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}} +\def\Etoc@addtocontents@immediately#1#2{% + \begingroup + \let\Etoc@originalwrite\write + \def\write{\immediate\Etoc@originalwrite}% + \Etoc@addtocontents{#1}{#2}% + \endgroup +} +\def\Etoc@addcontentsline@@immediately#1#2#3{% + \begingroup + \let\Etoc@originalwrite\write + \def\write{\immediate\Etoc@originalwrite}% + \Etoc@addcontentsline@{#1}{#2}{#3}% + \endgoroup +} +\DeclareRobustCommand*{\etocimmediatetoccontentsline} + {\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}} +\def\Etoc@storetocdepth {\xdef\Etoc@savedtocdepth{\number\c@tocdepth}} +\def\Etoc@restoretocdepth {\global\c@tocdepth\Etoc@savedtocdepth\relax} +\def\etocobeytoctocdepth {\def\etoc@settocdepth + {\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}} +\def\Etoc@@nottoodeep {\ifnum\Etoc@savedtocdepth<\c@tocdepth + \global\c@tocdepth\Etoc@savedtocdepth\relax\fi } +\def\etocignoretoctocdepth {\let\etoc@settocdepth\@gobble } +\def\etocsettocdepth {\futurelet\Etoc@nexttoken\Etoc@set@tocdepth } +\def\Etoc@set@tocdepth {\ifx\Etoc@nexttoken\bgroup + \expandafter\Etoc@set@tocdepth@ + \else\expandafter\Etoc@set@toctocdepth + \fi } +\def\Etoc@set@tocdepth@ #1{\@ifundefined {Etoc@#1@@} + {\PackageWarning{etoc} + {Unknown sectioning unit #1, \protect\etocsettocdepth\space ignored}} + {\global\c@tocdepth\csname Etoc@#1@@\endcsname}% +} +\def\Etoc@set@toctocdepth #1#{\Etoc@set@toctocdepth@ } +\def\Etoc@set@toctocdepth@ #1{% + \@ifundefined{Etoc@#1@@}% + {\PackageWarning{etoc} + {Unknown sectioning depth #1, \protect\etocsettocdepth.toc ignored}}% + {\addtocontents {toc} + {\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}% +} +\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately} +\def\Etoc@set@toctocdepth@immediately #1{% + \@ifundefined{Etoc@#1@@}% + {\PackageWarning{etoc} + {Unknown sectioning depth #1, \protect\etocimmediatesettocdepth.toc ignored}}% + {\begingroup + \let\Etoc@originalwrite\write + \def\write{\immediate\Etoc@originalwrite}% + \addtocontents {toc} + {\protect\etoc@settocdepth\expandafter\protect + \csname Etoc@#1@@\endcsname}% + \endgroup + }% +} +\def\etocdepthtag #1#{\Etoc@depthtag } +\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}} +\def\etocimmediatedepthtag #1#{\Etoc@depthtag@immediately } +\def\Etoc@depthtag@immediately #1{% + \begingroup + \let\Etoc@originalwrite\write + \def\write{\immediate\Etoc@originalwrite}% + \addtocontents {toc}{\protect\etoc@depthtag {#1}}% + \endgroup +} +\def\etocignoredepthtags {\let\etoc@depthtag \@gobble } +\def\etocobeydepthtags {\let\etoc@depthtag \Etoc@depthtag@ } +\def\Etoc@depthtag@ #1{\@ifundefined{Etoc@depthof@#1}% + {}% ignore in silence if tag has no associated depth + {\afterassignment\Etoc@@nottoodeep + \global\c@tocdepth\csname Etoc@depthof@#1\endcsname}% +} +\def\etocsettagdepth #1#2{\@ifundefined{Etoc@#2@@}% + {\PackageWarning{etoc} + {Unknown sectioning depth #2, \protect\etocsettagdepth\space ignored}}% + {\@namedef{Etoc@depthof@#1}{\@nameuse{Etoc@#2@@}}}% +} +\def\Etoc@tocvsec@err #1{\PackageError {etoc} + {The command \protect#1\space is incompatible with `etoc'} + {Use \protect\etocsettocdepth.toc as replacement}% +}% +\AtBeginDocument {% + \@ifclassloaded{memoir} + {\PackageInfo {etoc} + {Regarding `memoir' class command \protect\settocdepth, consider\MessageBreak + \protect\etocsettocdepth.toc as a drop-in replacement with more\MessageBreak + capabilities (see `etoc' manual). \space + Also, \protect\etocsettocdepth\MessageBreak + and \protect\etocsetnexttocdepth\space should be used in place of\MessageBreak + `memoir' command \protect\maxtocdepth\@gobble}% + }% + {\@ifpackageloaded {tocvsec2}{% + \def\maxtocdepth #1{\Etoc@tocvsec@err \maxtocdepth }% + \def\settocdepth #1{\Etoc@tocvsec@err \settocdepth }% + \def\resettocdepth {\@ifstar {\Etoc@tocvsec@err \resettocdepth }% + {\Etoc@tocvsec@err \resettocdepth }% + }% + \def\save@tocdepth #1#2#3{}% + \let\reset@tocdepth\relax + \let\remax@tocdepth\relax + \let\tableofcontents\etoctableofcontents + \PackageWarningNoLine {etoc} + {Package `tocvsec2' detected and its modification of\MessageBreak + \protect\tableofcontents\space reverted. \space Use + \protect\etocsettocdepth.toc\MessageBreak as a replacement + for `tocvsec2' toc-related commands}% + }% tocvsec2 loaded + {}% tocvsec2 not loaded + }% +}% +\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }% +\def\invisiblelocaltableofcontents + {\etocsetnexttocdepth {-3}\localtableofcontents }% +\def\etocsetnexttocdepth #1{% + \@ifundefined{Etoc@#1@@} + {\PackageWarning{etoc} + {Unknown sectioning unit #1, \protect\etocsetnextocdepth\space ignored}} + {\Etoc@setnexttocdepth{\csname Etoc@#1@@\endcsname}}% +}% +\def\Etoc@setnexttocdepth#1{% + \def\Etoc@tocdepthset{% + \Etoc@tocdepthreset + \edef\Etoc@tocdepthreset {% + \global\c@tocdepth\the\c@tocdepth\space + \global\let\noexpand\Etoc@tocdepthreset\noexpand\@empty + }% + \global\c@tocdepth#1% + \global\let\Etoc@tocdepthset\@empty + }% +}% +\let\Etoc@tocdepthreset\@empty +\let\Etoc@tocdepthset \@empty +\def\etocsetlocaltop #1#{\Etoc@set@localtop}% +\def\Etoc@set@localtop #1{% + \@ifundefined{Etoc@#1@@}% + {\PackageWarning{etoc} + {Unknown sectioning depth #1, \protect\etocsetlocaltop.toc ignored}}% + {\addtocontents {toc} + {\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}% +}% +\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}% +\def\Etoc@set@localtop@immediately #1{% + \@ifundefined{Etoc@#1@@}% + {\PackageWarning{etoc} + {Unknown sectioning depth #1, \protect\etocimmediatesetlocaltop.toc ignored}}% + {\begingroup + \let\Etoc@originalwrite\write + \def\write{\immediate\Etoc@originalwrite}% + \addtocontents {toc} + {\protect\etoc@setlocaltop\expandafter\protect + \csname Etoc@#1@@\endcsname}% + \endgroup + }% +}% +\def\etoc@setlocaltop #1{% + \ifnum#1=\Etoc@maxlevel + \Etoc@skipthisonetrue + \else + \Etoc@skipthisonefalse + \global\let\Etoc@level #1% + \global\let\Etoc@virtualtop #1% + \ifEtoc@localtoc + \ifEtoc@stoptoc + \Etoc@skipthisonetrue + \else + \ifEtoc@notactive + \Etoc@skipthisonetrue + \else + \unless\ifnum\Etoc@level>\etoclocaltop + \Etoc@skipthisonetrue + \global\Etoc@stoptoctrue + \fi + \fi + \fi + \fi + \fi + \let\Etoc@next\@empty + \ifEtoc@skipthisone + \else + \ifnum\Etoc@level>\c@tocdepth + \else + \ifEtoc@standardlines + \else + \let\Etoc@next\Etoc@setlocaltop@doendsandbegin + \fi + \fi + \fi + \Etoc@next +}% +\def\Etoc@setlocaltop@doendsandbegin{% + \Etoc@doendsandbegin + \global\Etoc@skipprefixfalse +} +\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}% + {\let\protect\etoc@startlocaltoc\protect\@gobble + \let\protect\etoc@settocdepth\protect\@gobble + \let\protect\etoc@depthtag\protect\@gobble + \let\protect\etoc@setlocaltop\protect\@gobble}{}}% +\def\etocstandardlines {\Etoc@standardlinestrue} +\def\etoctoclines {\Etoc@standardlinesfalse} +\etocdefaultlines +\etocstandardlines +\def\etocstandarddisplaystyle{% + \PackageWarningNoLine{etoc}{% + \string\etocstandarddisplaystyle \on@line\MessageBreak + is deprecated. \space Please use \string\etocclasstocstyle}% +} +\expandafter\def\expandafter\etocclasstocstyle\expandafter{% + \etocclasstocstyle + \Etoc@classstyletrue +} +\def\etocetoclocaltocstyle{\Etoc@etocstyletrue} +\def\etocusertocstyle{\Etoc@etocstylefalse} +\etocclasstocstyle +\etocetoclocaltocstyle +\etocobeytoctocdepth +\etocobeydepthtags +\let\etocbeforetitlehook \@empty +\let\etocaftertitlehook \@empty +\let\etocaftercontentshook \@empty +\let\etocaftertochook \@empty +\def\etockeeporiginaltableofcontents + {\Etoc@keeporiginaltoctrue\let\tableofcontents\etocoriginaltableofcontents}% +\endinput +%% +%% End of file `etoc.sty'. diff --git a/barretenberg/cpp/latex/longtable_doxygen.sty b/barretenberg/cpp/latex/longtable_doxygen.sty new file mode 100644 index 00000000000..e94b78b6ceb --- /dev/null +++ b/barretenberg/cpp/latex/longtable_doxygen.sty @@ -0,0 +1,456 @@ +%% +%% This is file `longtable.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% longtable.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at http://latex-project.org/bugs.html +%% (but please observe conditions on bug reports sent to that address!) +%% +%% Copyright 1993-2016 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{longtable_doxygen} + [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] +\def\LT@err{\PackageError{longtable}} +\def\LT@warn{\PackageWarning{longtable}} +\def\LT@final@warn{% + \AtEndDocument{% + \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% + \global\let\LT@final@warn\relax} +\DeclareOption{errorshow}{% + \def\LT@warn{\PackageInfo{longtable}}} +\DeclareOption{pausing}{% + \def\LT@warn#1{% + \LT@err{#1}{This is not really an error}}} +\DeclareOption{set}{} +\DeclareOption{final}{} +\ProcessOptions +\newskip\LTleft \LTleft=\fill +\newskip\LTright \LTright=\fill +\newskip\LTpre \LTpre=\bigskipamount +\newskip\LTpost \LTpost=\bigskipamount +\newcount\LTchunksize \LTchunksize=20 +\let\c@LTchunksize\LTchunksize +\newdimen\LTcapwidth \LTcapwidth=4in +\newbox\LT@head +\newbox\LT@firsthead +\newbox\LT@foot +\newbox\LT@lastfoot +\newcount\LT@cols +\newcount\LT@rows +\newcounter{LT@tables} +\newcounter{LT@chunks}[LT@tables] +\ifx\c@table\undefined + \newcounter{table} + \def\fnum@table{\tablename~\thetable} +\fi +\ifx\tablename\undefined + \def\tablename{Table} +\fi +\newtoks\LT@p@ftn +\mathchardef\LT@end@pen=30000 +\def\longtable{% + \par + \ifx\multicols\@undefined + \else + \ifnum\col@number>\@ne + \@twocolumntrue + \fi + \fi + \if@twocolumn + \LT@err{longtable not in 1-column mode}\@ehc + \fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}} +\def\LT@array[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} +\def\LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \output{\LT@output}} +\def\endlongtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\LT@nofcols#1&{% + \futurelet\@let@token\LT@n@fcols} +\def\LT@n@fcols{% + \advance\LT@cols\@ne + \ifx\@let@token\LT@nofcols + \expandafter\@gobble + \else + \expandafter\LT@nofcols + \fi} +\def\LT@tabularcr{% + \relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar + {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr + \LT@t@bularcr}% + {\LT@t@bularcr}} +\let\LT@crcr\crcr +\let\LT@setprevdepth\relax +\def\LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \gdef\LT@setprevdepth{% + \prevdepth\z@\global + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} +\def\LT@xtabularcr{% + \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} +\def\LT@ntabularcr{% + \ifnum0=`{}\fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@argtabularcr[#1]{% + \ifnum0=`{}\fi + \ifdim #1>\z@ + \unskip\@xargarraycr{#1}% + \else + \@yargarraycr{#1}% + \fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@echunk{% + \crcr\LT@save@row\cr\egroup + \global\setbox\@ne\lastbox + \unskip + \egroup} +\def\LT@entry#1#2{% + \ifhmode\@firstofone{&}\fi\omit + \ifnum#1=\c@LT@chunks + \else + \kern#2\relax + \fi} +\def\LT@entry@chop#1#2{% + \noexpand\LT@entry + {\ifnum#1>\c@LT@chunks + 1}{0pt% + \else + #1}{#2% + \fi}} +\def\LT@entry@write{% + \noexpand\LT@entry^^J% + \@spaces} +\def\LT@kill{% + \LT@echunk + \LT@get@widths + \expandafter\LT@rebox\LT@bchunk} +\def\LT@rebox#1\bgroup{% + #1\bgroup + \unvbox\z@ + \unskip + \setbox\z@\lastbox} +\def\LT@blank@row{% + \xdef\LT@save@row{\expandafter\LT@build@blank + \romannumeral\number\LT@cols 001 }} +\def\LT@build@blank#1{% + \if#1m% + \noexpand\LT@entry{1}{0pt}% + \expandafter\LT@build@blank + \fi} +\def\LT@make@row{% + \global\expandafter\let\expandafter\LT@save@row + \csname LT@\romannumeral\c@LT@tables\endcsname + \ifx\LT@save@row\relax + \LT@blank@row + \else + {\let\LT@entry\or + \if!% + \ifcase\expandafter\expandafter\expandafter\LT@cols + \expandafter\@gobble\LT@save@row + \or + \else + \relax + \fi + !% + \else + \aftergroup\LT@blank@row + \fi}% + \fi} +\let\setlongtables\relax +\def\LT@get@widths{% + \setbox\tw@\hbox{% + \unhbox\@ne + \let\LT@old@row\LT@save@row + \global\let\LT@save@row\@empty + \count@\LT@cols + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \LT@def@row + \advance\count@\m@ne + \repeat}% + \ifx\LT@@save@row\@undefined + \let\LT@@save@row\LT@save@row + \fi} +\def\LT@def@row{% + \let\LT@entry\or + \edef\@tempa{% + \ifcase\expandafter\count@\LT@old@row + \else + {1}{0pt}% + \fi}% + \let\LT@entry\relax + \xdef\LT@save@row{% + \LT@entry + \expandafter\LT@max@sel\@tempa + \LT@save@row}} +\def\LT@max@sel#1#2{% + {\ifdim#2=\wd\tw@ + #1% + \else + \number\c@LT@chunks + \fi}% + {\the\wd\tw@}} +\def\LT@hline{% + \noalign{\ifnum0=`}\fi + \penalty\@M + \futurelet\@let@token\LT@@hline} +\def\LT@@hline{% + \ifx\@let@token\hline + \global\let\@gtempa\@gobble + \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% + \else + \global\let\@gtempa\@empty + \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\LT@sep}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\penalty\@M}% + \@gtempa} +\def\LT@caption{% + \noalign\bgroup + \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} +\def\LT@c@ption#1[#2]#3{% + \LT@makecaption#1\fnum@table{#3}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else + {\let\\\space + \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% + \fi} +\def\LT@capti@n{% + \@ifstar + {\egroup\LT@c@ption\@gobble[]}% + {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} +\def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \sbox\@tempboxa{#1{#2: }#3}% + \ifdim\wd\@tempboxa>\hsize + #1{#2: }#3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\def\LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\LT@end@hd@ft#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} +\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} +\def\endhead{\LT@end@hd@ft\LT@head} +\def\endfoot{\LT@end@hd@ft\LT@foot} +\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} +\def\LT@startpbox#1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \vrule \@height \ht\@arstrutbox \@width \z@} +\def\LT@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LT@p@ftn + \global\LT@p@ftn{}% + \hfil} +%% added \long to prevent: +% LaTeX Warning: Command \LT@p@ftntext has changed. +% +% from the original repository (https://github.com/latex3/latex2e/blob/develop/required/tools/longtable.dtx): +% \changes{v4.15}{2021/03/28} +% {make long for gh/364} +% Inside the `p' column, just save up the footnote text in a token +% register. +\long\def\LT@p@ftntext#1{% + \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% + \global\LT@p@ftn\expandafter{\@tempa{#1}}}% + +\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} +\endinput +%% +%% End of file `longtable.sty'. diff --git a/barretenberg/cpp/latex/refman.tex b/barretenberg/cpp/latex/refman.tex new file mode 100644 index 00000000000..8bda38595f7 --- /dev/null +++ b/barretenberg/cpp/latex/refman.tex @@ -0,0 +1,218 @@ + % Handle batch mode + % to overcome problems with too many open files + \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage} + \pdfminorversion=7 + % Set document class depending on configuration + \documentclass[twoside]{book} + %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package + \usepackage{ifthen} + \ifx\requestedLaTeXdate\undefined + \usepackage{array} + \else + \usepackage{array}[=2016-10-06] + \fi + %% + % Packages required by doxygen + \makeatletter + \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} + % suppress package identification of infwarerr as it contains the word "warning" + \let\@@protected@wlog\protected@wlog + \def\protected@wlog#1{\wlog{package info suppressed}} + \RequirePackage{infwarerr} + \let\protected@wlog\@@protected@wlog + \makeatother + \IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript + \IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{} + \usepackage{doxygen} + \usepackage{graphicx} + \usepackage[utf8]{inputenc} + \usepackage{makeidx} + \PassOptionsToPackage{warn}{textcomp} + \usepackage{textcomp} + \usepackage[nointegrals]{wasysym} + \usepackage{ifxetex} + % NLS support packages + % Define default fonts + % Font selection + \usepackage[T1]{fontenc} + % set main and monospaced font + \usepackage[scaled=.90]{helvet} +\usepackage{courier} +\renewcommand{\familydefault}{\sfdefault} + \doxyallsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% + } + \renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% + } + \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + % Arguments of doxygenemoji: + % 1) '::' form of the emoji, already LaTeX-escaped + % 2) file with the name of the emoji without the .png extension + % in case image exist use this otherwise use the '::' form + \newcommand{\doxygenemoji}[2]{% + \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% + } + % Page & text layout + \usepackage{geometry} + \geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% + } + \usepackage{changepage} + % Allow a bit of overflow to go unnoticed by other means + \tolerance=750 + \hfuzz=15pt + \hbadness=750 + \setlength{\emergencystretch}{15pt} + \setlength{\parindent}{0cm} + \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} + \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} + \doxynormalparskip + % Redefine paragraph/subparagraph environments, using sectsty fonts + \makeatletter + \renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% + } + \renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% + } + \makeatother + \makeatletter + \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} + \makeatother + % Headers & footers + \usepackage{fancyhdr} + \pagestyle{fancyplain} + \renewcommand{\footrulewidth}{0.4pt} + \fancypagestyle{fancyplain}{ + \fancyhf{} + \fancyhead[LE, RO]{\bfseries\thepage} + \fancyhead[LO]{\bfseries\rightmark} + \fancyhead[RE]{\bfseries\leftmark} + \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } + } + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } + \renewcommand{\headrulewidth}{0pt} + } + \pagestyle{fancyplain} + \renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% + } + \renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% + } + % ToC, LoF, LoT, bibliography, and index + % Indices & bibliography + \usepackage{natbib} + \usepackage[titles]{tocloft} + \setcounter{tocdepth}{3} + \setcounter{secnumdepth}{5} + % creating indexes + \makeindex + \usepackage{newunicodechar} + \makeatletter + \def\doxynewunicodechar#1#2{% + \@tempswafalse + \edef\nuc@tempa{\detokenize{#1}}% + \if\relax\nuc@tempa\relax + \nuc@emptyargerr + \else + \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% + \nuc@check + \if@tempswa + \@namedef{u8:\nuc@tempa}{#2}% + \fi + \fi + } + \makeatother + \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus + \doxynewunicodechar{²}{${}^{2}$}% Superscript two + \doxynewunicodechar{³}{${}^{3}$}% Superscript three + % Hyperlinks + % Hyperlinks (required, but should be loaded last) + \ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} + \else + \ifxetex + \usepackage[pagebackref=true]{hyperref} + \else + \usepackage[ps2pdf,pagebackref=true]{hyperref} + \fi + \fi + \hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode,% + pdftitle={My Project},% + pdfsubject={}% + } + % Custom commands used by the header + % Custom commands + \newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% + } + % caption style definition + \usepackage{caption} + \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + % in page table of contents + \IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}} + \etocsettocstyle{\doxytocparskip}{\doxynormalparskip} + \etocsetlevel{subsubsubsection}{4} + \etocsetlevel{subsubsubsubsection}{5} + \etocsetlevel{subsubsubsubsubsection}{6} + \etocsetlevel{subsubsubsubsubsubsection}{7} + \etocsetlevel{paragraph}{8} + \etocsetlevel{subparagraph}{9} + % prevent numbers overlap the titles in toc + \renewcommand{\numberline}[1]{#1~} +% End of preamble, now comes the document contents +%===== C O N T E N T S ===== +\begin{document} + \raggedbottom + % Titlepage & ToC + % To avoid duplicate page anchors due to reuse of same numbers for + % the index (be it as roman numbers) + \hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } + \pagenumbering{alph} + \begin{titlepage} + \vspace*{7cm} + \begin{center}% + {\Large My Project}\\ + \vspace*{1cm} + {\large Generated by Doxygen 1.9.8}\\ + \end{center} + \end{titlepage} + \clearemptydoublepage + \pagenumbering{roman} + \tableofcontents + \clearemptydoublepage + \pagenumbering{arabic} + % re-enable anchors again + \hypersetup{pageanchor=true} +%--- Begin generated contents --- +%--- End generated contents --- +% Index + \backmatter + \newpage + \phantomsection + \clearemptydoublepage + \addcontentsline{toc}{chapter}{\indexname} + \printindex +% Required for some languages (in combination with latexdocumentpre from the header) +\end{document} diff --git a/barretenberg/cpp/latex/tabu_doxygen.sty b/barretenberg/cpp/latex/tabu_doxygen.sty new file mode 100644 index 00000000000..3f17d1d0280 --- /dev/null +++ b/barretenberg/cpp/latex/tabu_doxygen.sty @@ -0,0 +1,2557 @@ +%% +%% This is file `tabu.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabu.dtx (with options: `package') +%% +%% This is a generated file. +%% Copyright (FC) 2010-2011 - lppl +%% +%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars +%% +%% ********************************************************************************************** +%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal +%% \begin{tabu} to { preamble } => target specified +%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' +%% +%% tabu works in text and in math modes. +%% +%% X columns: automatic width adjustment + horizontal and vertical alignment +%% \begin{tabu} { X[4c] X[1c] X[-2ml] } +%% +%% Horizontal lines and / or leaders: +%% \hline\hline => double horizontal line +%% \firsthline\hline => for nested tabulars +%% \lasthline\hline => for nested tabulars +%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) +%% Automatic lines / leaders : +%% \everyrow{\hline\hline} +%% +%% Vertical lines and / or leaders: +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } +%% +%% Fixed vertical spacing adjustment: +%% \extrarowheight= \extrarowdepth= +%% or: \extrarowsep= => may be prefixed by \global +%% +%% Dynamic vertical spacing adjustment: +%% \abovetabulinesep= \belowtabulinesep= +%% or: \tabulinesep= => may be prefixed by \global +%% +%% delarray.sty shortcuts: in math and text modes +%% \begin{tabu} .... \({ preamble }\) +%% +%% Algorithms reports: +%% \tracingtabu=1 \tracingtabu=2 +%% +%% ********************************************************************************************** +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work consists of the main source file tabu.dtx +%% and the derived files +%% tabu.sty, tabu.pdf, tabu.ins +%% +%% tabu : Flexible LaTeX tabulars +%% lppl copyright 2010-2011 by FC +%% + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] +\RequirePackage{array}[2008/09/09] +\RequirePackage{varwidth}[2009/03/30] +\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} +\let\tabu@AtEnd\@empty +\def\TMP@EnsureCode#1={% + \edef\tabu@AtEnd{\tabu@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : (for siunitx) +\TMP@EnsureCode124 = 12 % | +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +%% Constants -------------------------------------------------------- +\newcount \c@taburow \def\thetaburow {\number\c@taburow} +\newcount \tabu@nbcols +\newcount \tabu@cnt +\newcount \tabu@Xcol +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcount \tabu@alloc \tabu@alloc=\m@ne +\newcount \tabu@nested +\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} +\newdimen \tabu@target +\newdimen \tabu@spreadtarget +\newdimen \tabu@naturalX +\newdimen \tabucolX +\let\tabu@DELTA \@tempdimc +\let\tabu@thick \@tempdima +\let\tabu@on \@tempdimb +\let\tabu@off \@tempdimc +\newdimen \tabu@Xsum +\newdimen \extrarowdepth +\newdimen \abovetabulinesep +\newdimen \belowtabulinesep +\newdimen \tabustrutrule \tabustrutrule \z@ +\newtoks \tabu@thebody +\newtoks \tabu@footnotes +\newsavebox \tabu@box +\newsavebox \tabu@arstrutbox +\newsavebox \tabu@hleads +\newsavebox \tabu@vleads +\newif \iftabu@colortbl +\newif \iftabu@siunitx +\newif \iftabu@measuring +\newif \iftabu@spread +\newif \iftabu@negcoef +\newif \iftabu@everyrow +\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} +\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} +\newif \iftabu@long +\newif \iftabuscantokens +\def\tabu@rescan {\tabu@verbatim \scantokens } +%% Utilities (for internal usage) ----------------------------------- +\def\tabu@gobblespace #1 {#1} +\def\tabu@gobbletoken #1#2{#1} +\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} +\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble + \else\ifx \@sptoken\@let@token + \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX + \fi\fi +}% \tabu@gobblex +\def\tabu@X{^^J} +{\obeyspaces +\global\let\tabu@spxiii= % saves an active space (for \ifx) +\gdef\tabu@@spxiii{ }} +\def\tabu@ifenvir {% only for \multicolumn + \expandafter\tabu@if@nvir\csname\@currenvir\endcsname +}% \tabu@ifenvir +\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else + \ifx\longtabu#1first\else + second\fi\fi oftwo\endcsname +}% \tabu@ifenvir +\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} +{\catcode`\&=3 +\gdef\tabu@strtrim #1{% #1 = control sequence to trim + \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi + \let\tabu@c@l@r \@empty \let#1\@empty + \else \expandafter \tabu@trimspaces #1\@nnil + \fi +}% \tabu@strtrim +\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% +\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} +\gdef\tabu@lastspace #1{\def #3{#1}% + \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi + \tabu@trimspaces #1\@nnil} +}% \catcode +\def\tabu@sanitizearg #1#2{{% + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% + \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% +}% \tabu@sanitizearg +\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% + \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! +}% \tabu@textbar +\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} +\def\tabu@everyrow@egroup{% + \iftabu@everyrow \expandafter \endgroup \the\toks@ + \else \ifnum0=`{\fi}% + \fi +}% \tabu@everyrow@egroup +\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \z@}% +}% \tabu@arstrut +\def\tabu@rearstrut {% + \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax + \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax + \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima + \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi + \tabu@mkarstrut + \fi +}% \tabu@rearstrut +\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} +\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox + \hbox to\z@{\hbox to\z@{\hss + {\tabu@DBG{cyan}\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \z@ + width \tabustrutrule}\kern-\tabustrutrule + {\tabu@DBG{pink}\vrule + height \z@ + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \tabustrutrule}}}% +}% \tabu@DBG@arstrut +\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ + \@nextchar}}% +\def\tabu@savedecl{\ifcat$\d@llarend\else + \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode +}% \tabu@savedecl +\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} +\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } +\let\tabu@trialh@@k \@empty +\def\tabu@nowrite #1#{{\afterassignment}\toks@} +\let\tabu@write\write +\let\tabu@immediate\immediate +\def\tabu@WRITE{\begingroup + \def\immediate\write{\aftergroup\endgroup + \tabu@immediate\tabu@write}% +}% \tabu@WRITE +\expandafter\def\expandafter\tabu@GenericError\expandafter{% + \expandafter\tabu@WRITE\GenericError} +\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} +\def\tabu@noxfootnote [#1]{\@gobble} +\def\tabu@nocolor #1#{\@gobble} +\newcommand*\tabu@norowcolor[2][]{} +\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% + \futurelet\@let@token \tabu@m@ybesiunitx} +\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% + \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi + \tabu@temp}% \tabu@m@ybesiunitx +}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname +\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% +%% Fixed vertical spacing adjustment: \extrarowsep ------------------ +\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% + \iftabu@everyrow \aftergroup\tabu@Gextra + \else \aftergroup\tabu@n@Gextra + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra +}% \extrarowsep +\def\tabu@extra {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setextrasep \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extra +\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} +\def\tabu@extr@ #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extr@ +\def\tabu@setextrasep {\extrarowheight=\extrarowdepth + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth +}% \tabu@setextrasep +\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} +\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} +\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} +\let\tabu@C@extra \z@ +\let\tabu@G@extra \@empty +%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- +\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% + \iftabu@everyrow \aftergroup\tabu@Glinesep + \else \aftergroup\tabu@n@Glinesep + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep +}% \tabulinesep +\def\tabu@linesep {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setlinesep \abovetabulinesep + \fi \tabu@temp}% +}% \tabu@linesep +\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} +\def\tabu@sets@p #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep + \fi \tabu@temp}% +}% \tabu@sets@p +\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep +}% \tabu@setlinesep +\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} +\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} +\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} +\let\tabu@C@linesep \z@ +\let\tabu@G@linesep \@empty +%% \global\extrarowsep and \global\tabulinesep ------------------- +\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% + \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% +}% \tabu@Gsave +\def\tabu@Grestore#1#2{% + \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax + \ifcat$\the\toks\currentgrouplevel$\else + \global\let#1\@empty \global\let#2\z@ + \the\toks\currentgrouplevel + \fi +}% \tabu@Grestore +%% Setting code for every row --------------------------------------- +\newcommand*\everyrow{\tabu@everyrow@bgroup + \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop +}% \everyrow +\def\tabu@evrstartstop {\@ifnextchar^% + {\afterassignment \tabu@evrstartstop \tabu@stop=}% + {\ifx ^\@let@token + \afterassignment\tabu@evrstartstop \tabu@start=% + \else \afterassignment\tabu@everyr@w \toks@ + \fi}% +}% \tabu@evrstartstop +\def\tabu@everyr@w {% + \xdef\tabu@everyrow{% + \noexpand\tabu@everyrowfalse + \let\noalign \relax + \noexpand\tabu@rowfontreset + \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors + \let\noexpand\tabu@docline \noexpand\tabu@docline@evr + \the\toks@ + \noexpand\tabu@evrh@@k + \noexpand\tabu@rearstrut + \global\advance\c@taburow \@ne}% + \iftabu@everyrow \toks@\expandafter + {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% + \else \xdef\tabu@evr@G{\the\toks@}% + \fi + \tabu@everyrow@egroup +}% \tabu@everyr@w +\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only +\tabu@evr{} +%% line style and leaders ------------------------------------------- +\newcommand*\newtabulinestyle [1]{% + {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% +}% \newtabulinestyle +\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% + \tabu@sanitizearg {#1}\@tempa + \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi + \global\expandafter\let + \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi +}% \tabu@newlinestyle +\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% + \iftabu@everyrow + \toks@\expandafter{\expandafter \def \expandafter + \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% + \gdef\tabu@ls@{\tabu@ls@L}% + \else + \global\let\tabu@ls@G \tabu@thestyle + \gdef\tabu@ls@{\tabu@ls@G}% + \fi + \tabu@everyrow@egroup +}% \tabulinestyle +\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} +\def\tabu@rulecolor #1{\toks@{}% + \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% + \tabu@temp + \tabu@rulearc +}% \tabu@rulecolor +\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp + \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% + \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% + \fi + \tabu@temp +}% \tabu@ruledrsc@ +\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} +\def\tabu@rule@drsc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% + \else \toks@{\def\CT@drsc@{\color #1{#2}}}% + \fi + \else + \ifx \\#1#2\\\global\let\CT@drsc@ \relax + \else \gdef\CT@drsc@{\color #1{#2}}% + \fi + \fi + \tabu@rulearc +}% \tabu@rule@drsc@ +\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} +\def\tabu@rule@arc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% + \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% + \fi + \toks@\expandafter{\the\toks@ + \let\tabu@arc@L \CT@arc@ + \let\tabu@drsc@L \CT@drsc@ + \ignorespaces}% + \else + \ifx \\#1#2\\\gdef\CT@arc@{}% + \else \gdef\CT@arc@{\color #1{#2}}% + \fi + \global\let\tabu@arc@G \CT@arc@ + \global\let\tabu@drsc@G \CT@drsc@ + \fi + \tabu@everyrow@egroup +}% \tabu@rule@arc@ +\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} +\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} +\def\tabu@rowc@lors #1#2#3{% + \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil + \@defaultunits \tabu@start =\number0#1\relax \@nnil + \ifnum \count@<\tw@ \count@=\tw@ \fi + \advance\tabu@start \m@ne + \ifnum \tabu@start<\z@ \tabu@start \z@ \fi + \tabu@rowcolorseries #3\in@..\in@ \@nnil +}% \tabu@rowcolors +\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% + \ifx \in@#1\relax + \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% + \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ + \fi + \else + \ifx \\#2\\\tabu@rowcolorserieserror \fi + \tabu@sanitizearg{#1}\tabu@temp + \tabu@sanitizearg{#2}\@tempa + \advance\count@ \m@ne + \iftabu@everyrow + \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% + \ifnum ##2=\c@taburow + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi + \ifnum \c@taburow<##2 \else + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}\fi}% + }\edef\x{\noexpand\tabu@rc@ {\the\count@} + {\the\tabu@start} + {\tabu@temp} + {\@tempa}% + }\x + \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% + \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% + \else % inside \noalign + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% + \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% + \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}}% + }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x + \global\let\tabu@rc@G \tabu@rc@ + \fi + \fi + \tabu@everyrow@egroup +}% \tabu@rowcolorseries +\tabuDisableCommands {\let\tabu@rc@ \@empty } +\def\tabu@rowcolorserieserror {\PackageError{tabu} + {Invalid syntax for \string\taburowcolors + \MessageBreak Please look at the documentation!}\@ehd +}% \tabu@rowcolorserieserror +\newcommand*\tabureset {% + \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ + \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% +}% \tabureset +%% Parsing the line styles ------------------------------------------ +\def\tabu@getline #1{\begingroup + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa + \let\tabu@thestyle \relax + \ifcsname tabu@linestyle@\@tempa \endcsname + \edef\tabu@thestyle{\endgroup + \def\tabu@thestyle{\expandafter\noexpand + \csname tabu@linestyle@\@tempa\endcsname}% + }\tabu@thestyle + \else \expandafter\tabu@definestyle \tabu@temp \@nil + \fi +}% \tabu@getline +\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter + \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen + \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined + \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs + \def\tabu@temp{\tabu@getparam{thick}}% + \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% + \fi + {% + \let\tabu@ \relax + \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) + \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% + \expandafter}\expandafter + \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) + \def\;{\def\:}% + \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) + \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) + \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi + \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi + \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi + \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen + \tabu@on \tabulineon \fi\fi + \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen + \tabu@off \tabulineoff \fi\fi + \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi + \in@true % + \else \in@false % + \fi + \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% + \else \edef\tabu@thick{\the\tabu@thick}% + \fi + \edef \tabu@thestyle ##1##2{\endgroup + \def\tabu@thestyle{% + \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} + {\the\tabu@on}{##1} + {\the\tabu@off}{##2}% + \else \noexpand\tabu@rulesstyle + {##1\vrule width \tabu@thick}% + {##1\leaders \hrule height \tabu@thick \hfil}% + \fi}% + }\expandafter \expandafter + \expandafter \tabu@thestyle \expandafter + \expandafter \expandafter + {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% +}% \tabu@definestyle +{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active + \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} + \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} +}% \catcode +\def\tabu@oxiii #1{% + \ifcase \ifx n#1\z@ \else + \ifx f#1\@ne\else + \tw@ \fi\fi + \expandafter\tabu@onxiii + \or \expandafter\tabu@ofxiii + \else o% + \fi#1}% +\def\tabu@onxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx \tabu@spxiii#2\@ne\else + \tw@ \fi\fi\fi + \tabu@getparam{on}#2\expandafter\@gobble + \or \expandafter\tabu@onxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}}% +\def\tabu@ofxiii #1#2{% + \ifx #2f\expandafter\tabu@offxiii + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@offxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx\tabu@spxiii#2\@ne \else + \tw@ \fi\fi\fi + \tabu@getparam{off}#2\expandafter\@gobble + \or \expandafter\tabu@offxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} +\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef + \ifx \tabu@#1\else % no more spec + \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi +}% \tabu@getcolor +\def\tabu@getc@l@r #1\tabu@ {% + \def\tabu@temp{#1}\tabu@strtrim \tabu@temp + \ifx \tabu@temp\@empty + \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists + \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r + \else \let\tabu@c@lon \tabu@c@l@r + \fi + %\else \tabu@warncolour{\tabu@temp}% + \fi%\fi + \tabu@ % next spec +}% \tabu@getc@l@r +\def\tabu@warncolour #1{\PackageWarning{tabu} + {Color #1 is not defined. Default color used}% +}% \tabu@warncolour +\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% + \ifx \tabu@leaders\tabu@leaders@G \else + \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi +}% \tabu@leadersstyle +\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined + \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% +}% \tabu@rulesstyle +%% The leaders boxes ------------------------------------------------ +\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color + {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor + {% % but the leaders boxes should have colors ! + \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% + \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% + \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thehleaders \tabu@theleaders + }% + {% + \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% + \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% + \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thevleaders \tabu@theleaders + }% + \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% + }% +}% \tabu@LEADERS +\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} +\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color + \global\setbox \tabu@leads=\@box{% + {#3\tabu@therule{#1}{#2}}% + \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi + {#3\tabu@therule{#1}{#2}}}% + \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss + {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% + \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% + {##1\tabu@therule{#1}{#2}}% + \xleaders \copy\tabu@leads \@ss + \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% + }\tabu@theleaders{#3}% +}% \tabu@l@@d@rs +%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- +\newcommand*\tabu {\tabu@longfalse + \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% + \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endtabu*\endcsname{\endtabu}% + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {tabu} +\let\tabu@tabular \tabular % +\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} +\newcommand*\longtabu {\tabu@longtrue + \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi + \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% + \LTchunksize=\@M + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% + \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {longtabu} +\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} +\def\tabu@nolongtabu{\PackageError{tabu} + {longtabu requires the longtable package}\@ehd} +%% Read the target and then : \tabular or \@array ------------------ +\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } +\def\tabu@sett@rget {\tabu@target \z@ + \ifcase \ifx \bgroup\@let@token \z@ \else + \ifx \@sptoken\@let@token \@ne \else + \if t\@let@token \tw@ \else + \if s\@let@token \thr@@\else + \z@\fi\fi\fi\fi + \expandafter\tabu@begin + \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget + \or \expandafter\tabu@to + \or \expandafter\tabu@spread + \fi +}% \tabu@sett@rget +\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} +\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} +\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } +\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } +\def\tabu@linegoalt@rget {% + \ifx \tabu@temp\LNGL@setlinegoal + \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal + \tabu@begin +}% \tabu@linegoalt@rget +\def\tabu@begin #1#{% + \iftabu@measuring \expandafter\tabu@nestedmeasure \fi + \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty + \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% + \fi + \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil +}% \tabu@begin +\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup + \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% + \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% +}% \tabu@tabu@ +\def\tabu@nestedmeasure {% + \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax + \tabu@spreadtrue + \else \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}% + \expandafter\tabu@collectbody\expandafter\tabu@quickrule + \expandafter\endgroup + \fi +}% \tabu@nestedmeasure +\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} +%% \tabu@setup \tabu@init \tabu@indent +\def\tabu@setup{\tabu@alloc@ + \ifcase \tabu@nested + \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ + \let\tabu@afterendpar \par + \fi\fi\fi + \def\tabu@aligndefault{c}\tabu@init \tabu@indent + \else % + \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth + \fi + \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined + \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% + \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... + \let\@endpbox \tabu@endpbox % idem " " " " " " + \let\@tabarray \tabu@tabarray % idem " " " " " " + \tabu@setcleanup \tabu@setreset +}% \tabu@setup +\def\tabu@init{\tabu@starttimer \tabu@measuringfalse + \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% + \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline + \let\firstline \tabu@firstline \let\lastline \tabu@lastline + \let\hline \tabu@hline \let\@xhline \tabu@xhline + \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox + \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi + \tabu@trivlist % + \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext + \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering + \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft + \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering + \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft + \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont + \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x + \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar + \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok + \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn + \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! + \let\tabu@endpbox \@endpbox % idem " " " " " " " + \let\tabu@tabarray \@tabarray % idem " " " " " " " + \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) + \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi +}% \tabu@init +\def\tabu@indent{% correction for indentation + \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget + \everypar\expandafter{% + \the\everypar\everypar\expandafter{\the\everypar}% + \setbox\z@=\lastbox + \ifdim\wd\z@>\z@ \edef\tabu@thetarget + {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi + \box\z@}% + \fi\fi +}% \tabu@indent +\def\tabu@setcleanup {% saves last global assignments + \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax + \def\tabu@aftergroupcleanup{% + \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% + \else + \def\tabu@aftergroupcleanup{% + \aftergroup\aftergroup\aftergroup\tabu@cleanup + \let\tabu@aftergroupcleanup \relax}% + \fi + \let\tabu@arc@Gsave \tabu@arc@G + \let\tabu@arc@G \tabu@arc@L % + \let\tabu@drsc@Gsave \tabu@drsc@G + \let\tabu@drsc@G \tabu@drsc@L % + \let\tabu@ls@Gsave \tabu@ls@G + \let\tabu@ls@G \tabu@ls@L % + \let\tabu@rc@Gsave \tabu@rc@G + \let\tabu@rc@G \tabu@rc@L % + \let\tabu@evr@Gsave \tabu@evr@G + \let\tabu@evr@G \tabu@evr@L % + \let\tabu@celllalign@save \tabu@celllalign + \let\tabu@cellralign@save \tabu@cellralign + \let\tabu@cellleft@save \tabu@cellleft + \let\tabu@cellright@save \tabu@cellright + \let\tabu@@celllalign@save \tabu@@celllalign + \let\tabu@@cellralign@save \tabu@@cellralign + \let\tabu@@cellleft@save \tabu@@cellleft + \let\tabu@@cellright@save \tabu@@cellright + \let\tabu@rowfontreset@save \tabu@rowfontreset + \let\tabu@@rowfontreset@save\tabu@@rowfontreset + \let\tabu@rowfontreset \@empty + \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset + \edef\c@taburow@save {\the\c@taburow}% + \edef\tabu@naturalX@save {\the\tabu@naturalX}% + \let\tabu@naturalXmin@save \tabu@naturalXmin + \let\tabu@naturalXmax@save \tabu@naturalXmax + \let\tabu@mkarstrut@save \tabu@mkarstrut + \edef\tabu@clarstrut{% + \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax + \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax + \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% +}% \tabu@setcleanup +\def\tabu@cleanup {\begingroup + \globaldefs\@ne \tabu@everyrowtrue + \let\tabu@arc@G \tabu@arc@Gsave + \let\CT@arc@ \tabu@arc@G + \let\tabu@drsc@G \tabu@drsc@Gsave + \let\CT@drsc@ \tabu@drsc@G + \let\tabu@ls@G \tabu@ls@Gsave + \let\tabu@ls@ \tabu@ls@G + \let\tabu@rc@G \tabu@rc@Gsave + \let\tabu@rc@ \tabu@rc@G + \let\CT@do@color \relax + \let\tabu@evr@G \tabu@evr@Gsave + \let\tabu@celllalign \tabu@celllalign@save + \let\tabu@cellralign \tabu@cellralign@save + \let\tabu@cellleft \tabu@cellleft@save + \let\tabu@cellright \tabu@cellright@save + \let\tabu@@celllalign \tabu@@celllalign@save + \let\tabu@@cellralign \tabu@@cellralign@save + \let\tabu@@cellleft \tabu@@cellleft@save + \let\tabu@@cellright \tabu@@cellright@save + \let\tabu@rowfontreset \tabu@rowfontreset@save + \let\tabu@@rowfontreset \tabu@@rowfontreset@save + \tabu@naturalX =\tabu@naturalX@save + \let\tabu@naturalXmax \tabu@naturalXmax@save + \let\tabu@naturalXmin \tabu@naturalXmin@save + \let\tabu@mkarstrut \tabu@mkarstrut@save + \c@taburow =\c@taburow@save + \ifcase \tabu@nested \tabu@alloc \m@ne\fi + \endgroup % + \ifcase \tabu@nested + \the\tabu@footnotes \global\tabu@footnotes{}% + \tabu@afterendpar \tabu@elapsedtime + \fi + \tabu@clarstrut + \everyrow\expandafter {\tabu@evr@G}% +}% \tabu@cleanup +\let\tabu@afterendpar \relax +\def\tabu@setreset {% + \edef\tabu@savedparams {% \relax for \tabu@message@save + \ifmmode \col@sep \the\arraycolsep + \else \col@sep \the\tabcolsep \fi \relax + \arrayrulewidth \the\arrayrulewidth \relax + \doublerulesep \the\doublerulesep \relax + \extratabsurround \the\extratabsurround \relax + \extrarowheight \the\extrarowheight \relax + \extrarowdepth \the\extrarowdepth \relax + \abovetabulinesep \the\abovetabulinesep \relax + \belowtabulinesep \the\belowtabulinesep \relax + \def\noexpand\arraystretch{\arraystretch}% + \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% + \begingroup + \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu + \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi + \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi + \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L + \expandafter \endgroup \expandafter + \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena + \let\tabu@arc@G \tabu@arc@L + \let\tabu@drsc@G \tabu@drsc@L + \let\tabu@ls@G \tabu@ls@L + \let\tabu@rc@G \tabu@rc@L + \let\tabu@evr@G \tabu@evr@L}% + \def\tabu@reset{\tabu@savedparams + \tabu@everyrowtrue \c@taburow \z@ + \let\CT@arc@ \tabu@arc@L + \let\CT@drsc@ \tabu@drsc@L + \let\tabu@ls@ \tabu@ls@L + \let\tabu@rc@ \tabu@rc@L + \global\tabu@alloc \tabu@alloc@save + \everyrow\expandafter{\tabu@evr@L}}% +}% \tabu@reset +\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} +\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} +%% The Rewriting Process ------------------------------------------- +\def\tabu@newcolumntype #1{% + \expandafter\tabu@new@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@newcolumntype +\def\tabu@new@columntype #1#2#3{% + \def#1##1#3{\NC@{##1}}% + \let#2\relax \newcommand*#2% +}% \tabu@new@columntype +\def\tabu@privatecolumntype #1{% + \expandafter\tabu@private@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\expandafter\endcsname + \csname tabu@NC@find@\string#1\expandafter\endcsname + \csname tabu@NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@privatecolumntype +\def\tabu@private@columntype#1#2#3#4{% + \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% + \tabu@new@columntype#3#4% +}% \tabu@private@columntype +\let\tabu@privatecolumns \@empty +\newcommand*\tabucolumn [1]{\expandafter \def \expandafter + \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns + \NC@do #1}}% +\let\tabu@highprioritycolumns \@empty +%% The | ``column'' : rewriting process -------------------------- +\tabu@privatecolumntype |{\tabu@rewritevline} +\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% + \expandafter \NC@find \tabu@rewritten} +\def\tabu@lines #1{% + \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi + \NC@list\expandafter{\the\NC@list \NC@do #1}% +}% \tabu@lines@ +\def\tabu@vlinearg #1{% + \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% + \else\tabu@getline {#1}% + \fi + \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% + }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% + \expandafter \tabu@keepls \tabu@thestyle \@nil +}% \tabu@vlinearg +\def\tabu@keepls #1\@nil{% + \ifcat $\@cdr #1\@nil $% + \ifx \relax#1\else + \ifx \tabu@ls@#1\else + \let#1\relax + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@savels\noexpand#1}\fi\fi\fi +}% \tabu@keepls +\def\tabu@thevline {\begingroup + \ifdefined\tabu@leaders + \setbox\@tempboxa=\vtop to\dimexpr + \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% + \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox + \box\@tempboxa + \else + \tabu@thevrule + \fi \endgroup +}% \tabu@thevline +\def\tabu@savels #1{% + \expandafter\let\csname\string#1\endcsname #1% + \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset + \tabu@resetls#1}}% +\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% +%% \multicolumn inside tabu environment ----------------------------- +\tabu@newcolumntype \tabu@rewritemulticolumn{% + \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \tabu@savedecl + \tabu@privatecolumns + \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% + \let\tabu@savels \relax + \NC@find +}% \tabu@rewritemulticolumn +\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} +\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} +\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup + \tabu@everyrowtrue + \NC@list{\NC@do \tabu@rewritemulticolumn}% + \expandafter\@gobbletwo % gobbles \multispan{#1} + \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% + {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi + {#3}}% +}% \tabu@multic@lumn +%% The X column(s): rewriting process ----------------------------- +\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} +\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } +\def\tabu@siunitx #1{\@ifnextchar \bgroup + {\tabu@rewriteX@Ss{#1}} + {\tabu@nosiunitx{#1}}} +\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% + \@defaultunits \let\tabu@temp =#2\relax\@nnil + \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi + \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% + }\expandafter\NC@find \the\@temptokena \relax + }\expandafter\NC@rewrite@S \@gobble #2\relax + \else \tabu@siunitxerror + \fi + \expandafter \NC@find \tabu@rewritten +}% \tabu@rewriteX@Ss +\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! + \MessageBreak X column can only embed siunitx S or s columns}\@ehd +}% \tabu@siunitxerror +\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% + \iftabu@measuring + \else \tabu@measuringtrue % first X column found in the preamble + \let\@halignto \relax \let\tabu@halignto \relax + \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ + \else \tabu@spreadtarget \z@ \fi + \ifdim \tabu@target=\z@ + \setlength\tabu@target \tabu@thetarget + \tabu@message{\tabu@message@defaulttarget}% + \else \tabu@message{\tabu@message@target}\fi + \fi +}% \tabu@rewriteX +\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax + \def\tabu@rewritten{l}} +\def\tabu@Xarg #1#2#3{% + \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty + \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty + \ifx\\#1\\% + \def\tabu@rewritten{p}\tabucolX \p@ % + \else + \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ + \tabu@Xparse {}#1\relax + \fi + \tabu@Xrewritten{#2}{#3}% +}% \tabu@Xarg +\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} +\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} +\def\tabu@Xtest{% + \ifcase \ifx \relax\@let@token \z@ \else + \if ,\@let@token \m@ne\else + \if p\@let@token 1\else + \if m\@let@token 2\else + \if b\@let@token 3\else + \if l\@let@token 4\else + \if c\@let@token 5\else + \if r\@let@token 6\else + \if j\@let@token 7\else + \if L\@let@token 8\else + \if C\@let@token 9\else + \if R\@let@token 10\else + \if J\@let@token 11\else + \ifx \@sptoken\@let@token 12\else + \if .\@let@token 13\else + \if -\@let@token 13\else + \ifcat $\@let@token 14\else + 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \or \tabu@Xtype {p}% + \or \tabu@Xtype {m}% + \or \tabu@Xtype {b}% + \or \tabu@Xalign \raggedright\relax + \or \tabu@Xalign \centering\relax + \or \tabu@Xalign \raggedleft\relax + \or \tabu@Xalign \tabu@justify\relax + \or \tabu@Xalign \RaggedRight\raggedright + \or \tabu@Xalign \Centering\centering + \or \tabu@Xalign \RaggedLeft\raggedleft + \or \tabu@Xalign \justifying\tabu@justify + \or \expandafter \tabu@Xparsespace + \or \expandafter \tabu@Xcoef + \or \expandafter \tabu@Xm@th + \or \tabu@Xcoef{}% + \else\expandafter \tabu@Xparse + \fi +}% \tabu@Xtest +\def\tabu@Xalign #1#2{% + \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} + {Duplicate horizontal alignment specification}\fi + \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax + \else \def\tabu@Xlcr{#2}\let#2\relax\fi + \expandafter\tabu@Xparse +}% \tabu@Xalign +\def\tabu@Xtype #1{% + \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} + {Duplicate vertical alignment specification}\fi + \def\tabu@rewritten{#1}\expandafter\tabu@Xparse +}% \tabu@Xtype +\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% + \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi +}% \tabu@Xcoef +\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ + \tabu@Xparse{}% +}% \tabu@Xc@ef +\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} +\def\tabu@Xd@sp{\let\tabu@Xmath=$% + \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% + \expandafter\tabu@Xparse + \else \expandafter\tabu@Xparse\expandafter{\expandafter}% + \fi +}% \tabu@Xd@sp +\def\tabu@Xrewritten {% + \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi + \ifdim \tabucolX<\z@ \tabu@negcoeftrue + \else\ifdim \tabucolX=\z@ \tabucolX \p@ + \fi\fi + \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% + \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% + \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% + >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% + \tabu@rewritten {\tabu@hsize \tabu@temp}% + <{##2\ifx$\tabu@Xmath$\fi}}% + }\tabu@rewritten +}% \tabu@Xrewritten +\def\tabu@hsize #1#2{% + \ifdim #2\p@<\z@ + \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else + \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi + \fi + \else #2\tabucolX + \fi +}% \tabu@hsize +%% \usetabu and \preamble: rewriting process --------------------- +\tabu@privatecolumntype \usetabu [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\let\tabu@rewriteX \tabu@rewriteXrestore + \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% + \fi +}% \NC@rewrite@\usetabu +\tabu@privatecolumntype \preamble [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% + \fi +}% \NC@rewrite@\preamble +%% Controlling the rewriting process ------------------------------- +\tabu@newcolumntype \tabu@rewritefirst{% + \iftabu@long \aftergroup \tabu@longpream % + \else \aftergroup \tabu@pream + \fi + \let\tabu@ \relax \let\tabu@hsize \relax + \let\tabu@Xcoefs \@empty \let\tabu@savels \relax + \tabu@Xcol \z@ \tabu@cnt \tw@ + \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse + \global\setbox\@arstrutbox \box\@arstrutbox + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \NC@list\expandafter{\the\NC@list \NC@do X}% + \iftabu@siunitx % + \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi + \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% + \expandafter\def\expandafter\tabu@NC@list\expandafter{% + \the\expandafter\NC@list \tabu@NC@list}% % * | X S + \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu + \expandafter \NC@do \expandafter\preamble + \the\NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \tabu@savedecl + \tabu@privatecolumns + \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle +}% NC@rewrite@\tabu@rewritefirst +\tabu@newcolumntype \tabu@rewritemiddle{% + \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast +}% \NC@rewrite@\tabu@rewritemiddle +\tabu@newcolumntype \tabu@rewritelast{% + \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne + \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \else \let\tabu@prev\tabu@temp + \fi + \ifcase \tabu@cnt \expandafter\tabu@endrewrite + \else \expandafter\NC@find \expandafter\tabu@rewritemiddle + \fi +}% \NC@rewrite@\tabu@rewritelast +%% Choosing the strategy -------------------------------------------- +\def\tabu@endrewrite {% + \let\tabu@temp \NC@find + \ifx \@arrayright\relax \let\@arrayright \@empty \fi + \count@=% + \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print + \iftabu@measuring + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@target \csname tabu@\the\tabu@nested.T\endcsname + \tabucolX \csname tabu@\the\tabu@nested.X\endcsname + \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% + \fi + \else\iftabu@measuring 4 % X columns + \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer + \tabu@target \the\tabu@target + \tabu@spreadtarget \the\tabu@spreadtarget}% + \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% + \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% + \let\tabu@Xcoefs \relax + \else\ifcase\tabu@nested \thr@@ % outer, no X + \global\let\tabu@afterendpar \relax + \else \@ne % inner, no X, outer in mode 1 or 2 + \fi + \ifdefined\tabu@usetabu + \else \ifdim\tabu@target=\z@ + \else \let\tabu@temp \tabu@extracolsep + \fi\fi + \fi + \fi + \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% + \tabu@temp +}% \tabu@endrewrite +\def\tabu@extracolsep{\@defaultunits \expandafter\let + \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil + \ifx \tabu@temp\@sptoken + \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep + \else + \edef\tabu@temp{\noexpand\NC@find + \if |\noexpand\tabu@temp @% + \else\if !\noexpand\tabu@temp @% + \else !% + \fi\fi + {\noexpand\extracolsep\noexpand\@flushglue}}% + \fi + \tabu@temp +}% \tabu@extrac@lsep +%% Implementing the strategy ---------------------------------------- +\long\def\tabu@pream #1\@preamble {% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\tabu@aftergroupcleanup}% + \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody + \@preamble}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@pream +\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@longpream +\def\tabu@select {% + \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi + \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi + \ifcase \count@ + \global\let\tabu@elapsedtime \relax + \tabu@seteverycr + \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) + \or % exit in vertical measure + struts per cell because no X and outer in mode 3 + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \tabu@seteverycr + \expandafter \tabuthepreamble + \or % exit without measure because no X and outer in mode 4 + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@seteverycr + \expandafter \tabuthepreamble + \else % needs trials + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@savecounters + \expandafter \tabu@setstrategy + \fi +}% \tabu@select +\def\tabu@@ {\gdef\tabu@mkpreambuffer} +%% Protections to set up before trials ------------------------------ +\def\tabu@setstrategy {\begingroup % + \tabu@trialh@@k \tabu@cnt \z@ % number of trials + \hbadness \@M \let\hbadness \@tempcnta + \hfuzz \maxdimen \let\hfuzz \@tempdima + \let\write \tabu@nowrite\let\GenericError \tabu@GenericError + \let\savetabu \@gobble \let\tabudefaulttarget \linewidth + \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote + \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor + \let\tabu@aftergroupcleanup \relax % only after the last trial + \tabu@mkpreambuffer + \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init + \def\tabu@lasttry{\m@ne\p@}\fi + \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % + \tabu@collectbody \tabu@strategy % +}% \tabu@setstrategy +\def\tabu@savecounters{% + \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax +}% \tabu@savecounters +\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) + \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs + \ifdim \dimen@>\z@ + \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \fi +}% \tabucolX@init +\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum + \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ + \else -#2\p@ \tabu@negcoeftrue + \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \tabu@wddef{#1}{0pt}% + \fi +}% \tabu@Xinit +%% Collecting the environment body ---------------------------------- +\long\def\tabu@collectbody #1#2\end #3{% + \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% + \ifx \tabu@stack\@empty + \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% + \def\tabu@end@envir{\end{#3}}% + \iftabuscantokens + \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% + \else \def\tabu@endenvir {\let\endarray \@empty + \end{#3}\tabu@gobbleX}% + \fi + \else \def\tabu@endenvir {\end{#3}}\fi}% + \let\tabu@collectbody \tabu@endofcollect + \else\def\tabu@temp{#3}% + \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% + \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% + \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% + \else \toks@\expandafter{\the\toks@ #2\end{#3}}% + \fi\fi\fi + \fi + \tabu@collectbody{#1}% +}% \tabu@collectbody +\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% +\def\tabu@endofcollect #1{\ifnum0=`{}\fi + \expandafter\endgroup \the\toks@ #1% +}% \tabu@endofcollect +%% The trials: switching between strategies ------------------------- +\def\tabu@strategy {\relax % stops \count@ assignment ! + \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) + \expandafter \tabu@endoftrials + \or % case 1 = exit in vertical measure (outer in mode 3) + \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% + \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% + \expandafter \tabu@endoftrials + \or % case 2 = exit with a rule replacing the table (outer in mode 4) + \expandafter \tabu@quickend + \or % case 3 = outer is in mode 3 because of no X + \begingroup + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \expandafter \tabu@measuring + \else % case 4 = horizontal measure + \begingroup + \global\let\tabu@elapsedtime \tabu@message@etime + \long\def\multicolumn##1##2##3{\multispan{##1}}% + \let\tabu@startpboxORI \@startpbox + \iftabu@spread + \def\tabu@naturalXmax {\z@}% + \let\tabu@naturalXmin \tabu@naturalXmax + \tabu@evr{\global\tabu@naturalX \z@}% + \let\@startpbox \tabu@startpboxmeasure + \else\iftabu@negcoef + \let\@startpbox \tabu@startpboxmeasure + \else \let\@startpbox \tabu@startpboxquick + \fi\fi + \expandafter \tabu@measuring + \fi +}% \tabu@strategy +\def\tabu@measuring{\expandafter \tabu@trial \expandafter + \count@ \the\count@ \tabu@endtrial +}% \tabu@measuring +\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} +\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \csname tabu@adl@endtrial\endcsname + \endarray}$\egroup % got \tabu@box +}% \tabu@shorttrial +\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \tabuendlongtrial}\egroup % got \tabu@box +}% \tabu@longtrial +\def\tabuendlongtrial{% no @ allowed for \scantokens + \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne + \LT@get@widths +}% \tabuendlongtrial +\def\tabu@adl@endtrial{% + \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! +\def\tabu@seteverycr {\tabu@reset + \everycr \expandafter{\the\everycr \tabu@everycr}% + \let\everycr \tabu@noeverycr % +}% \tabu@seteverycr +\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} +\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} +\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} +\def\tabu@endoftrials {% + \iftabuscantokens \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\expandafter \tabu@closetrialsgroup \expandafter + \tabu@rescan \expandafter{% + \expandafter\tabuthepreamble + \the\expandafter\tabu@thebody + \iftabu@long \else \endarray \fi}} + {\expandafter\tabu@closetrialsgroup \expandafter + \tabuthepreamble + \the\tabu@thebody}% + \tabu@endenvir % Finish ! +}% \tabu@endoftrials +\def\tabu@closetrialsgroup {% + \toks@\expandafter{\tabu@endenvir}% + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target + \tabu@cnt \the\tabu@cnt + \def\noexpand\tabu@endenvir{\the\toks@}% + %Quid de \@halignto = \tabu@halignto ?? + }% \tabu@bufferX + \tabu@bufferX + \ifcase\tabu@nested % print out (outer in mode 0) + \global\tabu@cnt \tabu@cnt + \tabu@evr{\tabu@verticaldynamicadjustment}% + \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty + \let\@finalstrut \tabu@finalstrut + \else % vertical measure of nested tabu + \tabu@evr{\tabu@verticalinit}% + \tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \fi + \tabu@clckpt \let\@halignto \tabu@halignto + \let\@halignto \@empty + \tabu@seteverycr + \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ + \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) + \fi\fi +}% \tabu@closetrialsgroup +\def\tabu@quickend {\expandafter \endgroup \expandafter + \tabu@target \the\tabu@target \tabu@quickrule + \let\endarray \relax \tabu@endenvir +}% \tabu@quickend +\def\tabu@endtrial {\relax % stops \count@ assignment ! + \ifcase \count@ \tabu@err % case 0 = impossible here + \or \tabu@err % case 1 = impossible here + \or \tabu@err % case 2 = impossible here + \or % case 3 = outer goes into mode 0 + \def\tabu@bufferX{\endgroup}\count@ \z@ + \else % case 4 = outer goes into mode 3 + \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) + \else \tabu@arith % or 2 (outer in mode 4) + \fi + \count@=% + \ifcase\tabu@nested \thr@@ % outer goes into mode 3 + \else\iftabu@measuring \tw@ % outer is in mode 4 + \else \@ne % outer is in mode 3 + \fi\fi + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% + \fi + \expandafter \tabu@bufferX \expandafter + \count@ \the\count@ \tabu@strategy +}% \tabu@endtrial +\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} +%% The algorithms: compute the widths / stop or go on --------------- +\def\tabu@arithnegcoef {% + \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs +}% \tabu@arithnegcoef +\def\tabu@arith@negcoef #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition + \advance\@tempdima #2\tabucolX + \else + \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated + \advance\dimen@ -#2\p@ + \advance\@tempdima -#2\tabucolX + \else + \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised + \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised + \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) + \fi + \fi + \fi +}% \tabu@arith@negcoef +\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ + \ifdim \@tempdima=\z@ + \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% + \else + \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} + *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% + \fi +}% \tabu@givespace +\def\tabu@arith {\advance\tabu@cnt \@ne + \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi + \tabu@arithnegcoef + \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % + \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax + \tabu@message{\tabu@message@arith}% + \ifdim \tabu@DELTA <\tabu@hfuzz + \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? + \let\tabu@ \tabu@givespace \tabu@Xcoefs + \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message + \else % already converged: nothing to do but nearly impossible... + \fi + \tabucolX \maxdimen + \tabu@measuringfalse + \else % need for narrower X columns + \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax + \tabu@measuringtrue + \@whilesw \iftabu@measuring\fi {% + \advance\tabu@cnt \@ne + \tabu@arithnegcoef + \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here + \tabu@message{\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else + \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ + \fi}% + \ifdim -\tabu@DELTA<\tabu@hfuzz + \advance\@tempdima \@tempdimb % for message + \tabu@measuringfalse + \else + \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax + \fi + }% + \fi + \tabu@message{\tabu@message@reached}% + \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% +}% \tabu@arith +\def\tabu@spreadarith {% + \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs + \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% + \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax + \iftabu@measuring + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% + \else + \tabu@message{\tabu@message@spreadarith}% + \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target + \tabu@message{(tabu) spread + \ifdim \@tempdimc>\tabu@target useless here: default target used% + \else too large: reduced to fit default target\fi.}% + \else + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% + \fi + \begingroup \let\tabu@wddef \@gobbletwo + \@tempdimb \@tempdima + \tabucolX@init + \tabu@arithnegcoef + \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax + \expandafter\endgroup \expandafter\tabucolX \the\tabucolX + \tabu@arith + \fi +}% \tabu@spreadarith +\def\tabu@spread@arith #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ + \else \advance\@tempdima \tabu@wd{#1}\relax + \fi +}% \tabu@spread@arith +%% Reporting in the .log file --------------------------------------- +\def\tabu@message@defaulttarget{% + \ifnum\tabu@nested=\z@^^J(tabu) Default target: + \ifx\tabudefaulttarget\linewidth \string\linewidth + \ifdim \tabu@thetarget=\linewidth \else + -\the\dimexpr\linewidth-\tabu@thetarget\fi = + \else\ifx\tabudefaulttarget\linegoal\string\linegoal= + \fi\fi + \else (tabu) Default target (nested): \fi + \the\tabu@target \on@line + \ifnum\tabu@nested=\z@ , page \the\c@page\fi} +\def\tabu@message@target {^^J(tabu) Target specified: + \the\tabu@target \on@line, page \the\c@page} +\def\tabu@message@arith {\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else + \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ + \fi +}% \tabu@message@arith +\def\tabu@message@spreadarith {\tabu@spreadheader + \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ + \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ + \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ + \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target + \else \@tempdimc+\tabu@spreadtarget \fi + {}{}{}{}{}\@@} +\def\tabu@message@negcoef #1#2{ + \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: + \space width = \tabu@wd {#1} + \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname + \ifdim -\tabu@pt#2\tabucolX<\tabu@target + < \number-\rem@pt#2 X + = \the\dimexpr -\tabu@pt#2\tabucolX \relax + \else + <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} +\def\tabu@message@reached{\tabu@header + ******* Reached Target: + hfuzz = \tabu@hfuzz\on@line\space *******} +\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% + \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: + \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec + \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) + -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax + *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space + cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} +\def\tabu@message@verticalsp {% + \ifdim \@tempdima>\tabu@ht + \ifdim \@tempdimb>\tabu@dp + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% + \else + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% + \fi + \else\ifdim \@tempdimb>\tabu@dp + \tabu@spaces\tabu@spaces\tabu@spaces + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi + \fi +}% \tabu@message@verticalsp +\edef\tabu@spaces{\@spaces} +\def\tabu@strippt{\expandafter\tabu@pt\the} +{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} +\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} +\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} +\def\do #1{% + \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% + \ifnum##1<10 #1 #1\else + \ifnum##1<100 #1 \else + \ifnum##1<\@m #1\fi\fi\fi + ##1.##2##3##4##5##6##7##8#1}% + \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% + \def\tabu@titles{\ifnum \tabu@nested=\z@ + (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target + #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% + \def\tabu@spreadheader{% + (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. + #1 New Target^^J% + (tabu) sprd} + \def\tabu@message@save {\begingroup + \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} + \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt + \dimexpr####1\p@{ }{ }}}% + \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% + \let\CT@arc@ \relax \let\@preamble \@gobble + \let\tabu@savedpream \@firstofone + \let\tabu@savedparams \@firstofone + \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% + \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% + \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% + \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% + \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% + \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% + \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% + \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% + \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% + \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% + \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% + \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% + \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% + \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% + \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% + \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% + \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% + \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% + \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% + \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% + \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo + \tabu@message{% + (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% + \tabu@usetabu \@nil^^J}% + \endgroup} +}\do{ } +%% Measuring the natural width (varwidth) - store the results ------- +\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop + \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% + \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? + \iftabu@spread \else % if spread -> measure + \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure + \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) + \tabu@measuringtrue % for the quick option... + \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi + \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target + \tabu@target=\tabu@temp\tabucolX \fi\fi + \setbox\tabu@box \hbox \bgroup + \begin{varwidth}\tabu@target + \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... + \narrowragged \arraybackslash \parfillskip \@flushglue + \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi + \bgroup \aftergroup\tabu@endpboxmeasure + \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi + \else \expandafter\@gobble + \tabu@startpboxquick{#1}% \@gobble \bgroup + \fi +}% \tabu@startpboxmeasure +\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty + \bgroup\color@begingroup} +\def\tabu@endpboxmeasure {% + \@finalstrut \@arstrutbox + \end{varwidth}\egroup % + \ifdim \tabu@temp\p@ <\z@ % neg coef + \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box + \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% + \tabu@debug{\tabu@message@endpboxmeasure}% + \fi + \else % spread coef>0 + \global\advance \tabu@naturalX \wd\tabu@box + \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax + \ifdim \tabu@naturalXmax <\tabu@naturalX + \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi + \ifdim \tabu@naturalXmin <\@tempdima + \xdef\tabu@naturalXmin {\the\@tempdima}\fi + \fi + \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target +}% \tabu@endpboxmeasure +\def\tabu@wddef #1{\expandafter\xdef + \csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd + \the\tabu@Xcol. X[\tabu@temp]: + target = \the\tabucolX \space + \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol + =\tabu@wd\tabu@Xcol +}% \tabu@message@endpboxmeasure +\def\tabu@startpboxquick {\bgroup + \let\@startpbox \tabu@startpboxORI % restore immediately + \let\tabu \tabu@quick % \begin is expanded before... + \expandafter\@gobble \@startpbox % gobbles \bgroup +}% \tabu@startpboxquick +\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick +}% \tabu@quick +\def\tabu@endquick {% + \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else + \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax + \endgroup + \else \let\endtabu \relax + \tabu@end@envir + \fi +}% \tabu@quick +\def\tabu@endtabu {\end{tabu}} +\def\tabu@endtabus {\end{tabu*}} +%% Measuring the heights and depths - store the results ------------- +\def\tabu@verticalmeasure{\everypar{}% + \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group + \setbox\tabu@box =\hbox\bgroup + \let\tabu@verticalspacing \tabu@verticalsp@lcr + \d@llarbegin % after \hbox ... + \else + \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop + \else\ifnum\currentgrouptype=12\vcenter + \else\vbox\fi\fi}% + \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup + \let\tabu@verticalspacing \tabu@verticalsp@pmb + \fi +}% \tabu@verticalmeasure +\def\tabu@verticalsp@lcr{% + \d@llarend \egroup % + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \noindent\vrule height\@tempdima depth\@tempdimb +}% \tabu@verticalsp@lcr +\def\tabu@verticalsp@pmb{% inserts struts as needed + \par \expandafter\egroup + \expandafter$\expandafter + \egroup \expandafter + \@tempdimc \the\prevdepth + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \let\@finalstrut \@gobble + \hrule height\@tempdima depth\@tempdimb width\hsize +%% \box\tabu@box +}% \tabu@verticalsp@pmb + +\def\tabu@verticalinit{% + \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! + \advance\c@taburow \@ne + \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% + \advance\c@taburow \m@ne +}% \tabu@verticalinit +\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@verticaldynamicadjustment {% + \advance\c@taburow \@ne + \extrarowheight \dimexpr\tabu@ht - \ht\strutbox + \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox + \let\arraystretch \@empty + \advance\c@taburow \m@ne +}% \tabu@verticaldynamicadjustment +\def\tabuphantomline{\crcr \noalign{% + {\globaldefs \@ne + \setbox\@arstrutbox \box\voidb@x + \let\tabu@@celllalign \tabu@celllalign + \let\tabu@@cellralign \tabu@cellralign + \let\tabu@@cellleft \tabu@cellleft + \let\tabu@@cellright \tabu@cellright + \let\tabu@@thevline \tabu@thevline + \let\tabu@celllalign \@empty + \let\tabu@cellralign \@empty + \let\tabu@cellright \@empty + \let\tabu@cellleft \@empty + \let\tabu@thevline \relax}% + \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% + \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr + \noalign{\tabu@rearstrut + {\globaldefs\@ne + \let\tabu@celllalign \tabu@@celllalign + \let\tabu@cellralign \tabu@@cellralign + \let\tabu@cellleft \tabu@@cellleft + \let\tabu@cellright \tabu@@cellright + \let\tabu@thevline \tabu@@thevline}}}% + \expandafter}\the\toks@ +}% \tabuphantomline +%% \firsthline and \lasthline corrections --------------------------- +\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} +\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} +\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} +\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} +\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) + \noalign{\ifnum0=`}\fi + {\CT@arc@\hrule height\arrayrulewidth}% + \futurelet \tabu@temp \tabu@xhline +}% \tabu@hline +\def\tabu@xhline{% + \ifx \tabu@temp \hline + {\ifx \CT@drsc@\relax \vskip + \else\ifx \CT@drsc@\@empty \vskip + \else \CT@drsc@\hrule height + \fi\fi + \doublerulesep}% + \fi + \ifnum0=`{\fi}% +}% \tabu@xhline +\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ + \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% + \tabu@hlineAZsurround +}% \tabu@hlineAZ +\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% + \extratabsurround #1\let\tabucline \tabucline@scan + \let\hline \tabu@hlinescan \let\firsthline \hline + \let\cline \tabu@clinescan \let\lasthline \hline + \expandafter \futurelet \expandafter \tabu@temp + \expandafter \tabu@nexthlineAZ \tabu@temp +}% \tabu@hlineAZsurround +\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} +\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} +\def\tabucline@scan{\@testopt \tabucline@sc@n {}} +\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} +\def\tabu@nexthlineAZ{% + \ifx \tabu@temp\hline \else + \ifx \tabu@temp\cline \else + \ifx \tabu@temp\tabucline \else + \tabu@hlinecorrection + \fi\fi\fi +}% \tabu@nexthlineAZ +\def\tabu@xhlineAZ #1{% + \toks@\expandafter{\the\toks@ #1}% + \@tempdimc \tabu@thick % The last line width + \ifcase\count@ \@tempdimb \tabu@thick % The first line width + \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax + \fi + \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ +}% \tabu@xhlineAZ +\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 + \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ + \edef\firsthline{% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + height \the\dimexpr\@tempdima+\extratabsurround + depth \dp\@arstrutbox + width \tabustrutrule}\hss}\cr + \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb + +\dp\@arstrutbox \relax}% + \the\toks@ + }\ifnum0=`{\fi + \expandafter}\firsthline % we are then ! +}% \tabu@firsthlinecorrection +\def\tabu@lasthlinecorrection{% + \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc + \edef\lasthline{% + \the\toks@ + \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ + +\extratabsurround-\@tempdimc + height \z@ + width \tabustrutrule}\hss}\cr + }\ifnum0=`{\fi + \expandafter}\lasthline % we are then ! +}% \tabu@lasthlinecorrection +\def\tabu@LT@@hline{% + \ifx\LT@next\hline + \global\let\LT@next \@gobble + \ifx \CT@drsc@\relax + \gdef\CT@LT@sep{% + \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% + \else + \gdef\CT@LT@sep{% + \multispan\LT@cols{% + \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% + \fi + \else + \global\let\LT@next\empty + \gdef\CT@LT@sep{% + \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \CT@LT@sep + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \noalign{\penalty\@M}% + \LT@next +}% \tabu@LT@@hline +%% Horizontal lines : \tabucline ------------------------------------ +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} +\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% + \ifnum \tabu@stop<\z@ \toks@{}% + \else \tabu@clinearg{#1}\tabu@thestyle + \edef\tabucline{\toks@{% + \ifnum \tabu@start>\z@ \omit + \tabu@multispan\tabu@start {\span\omit}&\fi + \omit \tabu@multispan\tabu@stop {\span\omit}% + \tabu@thehline\cr + }}\tabucline + \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% + \fi + \futurelet \tabu@temp \tabu@xcline +}% \tabu@cline +\def\tabu@clinearg #1{% + \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ + \else \@defaultunits \expandafter\let\expandafter\@tempa + \romannumeral-`\0#1\relax \@nnil + \ifx \hbox\@tempa \tabu@clinebox{#1}% + \else\ifx \box\@tempa \tabu@clinebox{#1}% + \else\ifx \vbox\@tempa \tabu@clinebox{#1}% + \else\ifx \vtop\@tempa \tabu@clinebox{#1}% + \else\ifx \copy\@tempa \tabu@clinebox{#1}% + \else\ifx \leaders\@tempa \tabu@clineleads{#1}% + \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% + \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% + \else\tabu@getline {#1}% + \fi\fi\fi\fi\fi\fi\fi\fi + \fi +}% \tabu@clinearg +\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} +\def\tabu@clineleads #1{% + \let\tabu@thestyle \relax \let\tabu@leaders \@undefined + \gdef\tabu@thehrule{#1}} +\def\tabu@thehline{\begingroup + \ifdefined\tabu@leaders + \noexpand\tabu@thehleaders + \else \noexpand\tabu@thehrule + \fi \endgroup +}% \tabu@thehline +\def\tabu@xcline{% + \ifx \tabu@temp\tabucline + \toks@\expandafter{\the\toks@ \noalign + {\ifx\CT@drsc@\relax \vskip + \else \CT@drsc@\hrule height + \fi + \doublerulesep}}% + \fi + \tabu@docline +}% \tabu@xcline +\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} +\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% + \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} +\def\tabu@multispan #1#2{% + \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan + \else \expandafter\@gobbletwo + \fi {#1-1}{#2}% +}% \tabu@multispan +\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} +\def\tabu@start@stop #1-#2\@nnil{% + \@defaultunits \tabu@start\number 0#1\relax \@nnil + \@defaultunits \tabu@stop \number 0#2\relax \@nnil + \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne + \else\ifnum \tabu@stop=\z@ \tabu@nbcols + \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols + \else \tabu@stop + \fi\fi\fi + \advance\tabu@start \m@ne + \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi +}% \tabu@start@stop +%% Numbers: siunitx S columns (and \tabudecimal) ------------------- +\def\tabu@tabudecimal #1{% + \def\tabu@decimal{#1}\@temptokena{}% + \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces + \tabu@scandecimal +}% \tabu@tabudecimal +\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} +\def\tabu@skipdecimal#1{#1\tabu@scandecimal} +\def\tabu@getdecimal@ignorespaces{% + \ifcase 0\ifx\tabu@temp\ignorespaces\else + \ifx\tabu@temp\@sptoken1\else + 2\fi\fi\relax + \let\tabu@getdecimal@ \tabu@getdecimal + \expandafter\tabu@skipdecimal + \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal + \else \expandafter\tabu@skipdecimal + \fi +}% \tabu@getdecimal@ignorespaces +\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% + \tabu@scandecimal} +\def\do#1{% + \def\tabu@get@decimalspace#1{% + \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% +}\do{ } +\let\tabu@@tabudecimal \tabu@tabudecimal +\def\tabu@getdecimal{% + \ifcase 0\ifx 0\tabu@temp\else + \ifx 1\tabu@temp\else + \ifx 2\tabu@temp\else + \ifx 3\tabu@temp\else + \ifx 4\tabu@temp\else + \ifx 5\tabu@temp\else + \ifx 6\tabu@temp\else + \ifx 7\tabu@temp\else + \ifx 8\tabu@temp\else + \ifx 9\tabu@temp\else + \ifx .\tabu@temp\else + \ifx ,\tabu@temp\else + \ifx -\tabu@temp\else + \ifx +\tabu@temp\else + \ifx e\tabu@temp\else + \ifx E\tabu@temp\else + \ifx\tabu@cellleft\tabu@temp1\else + \ifx\ignorespaces\tabu@temp1\else + \ifx\@sptoken\tabu@temp2\else + 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \expandafter\tabu@get@decimal + \or \expandafter\tabu@skipdecimal + \or \expandafter\tabu@get@decimalspace + \else\expandafter\tabu@printdecimal + \fi +}% \tabu@getdecimal +\def\tabu@printdecimal{% + \edef\tabu@temp{\the\@temptokena}% + \ifx\tabu@temp\@empty\else + \ifx\tabu@temp\space\else + \expandafter\tabu@decimal\expandafter{\the\@temptokena}% + \fi\fi +}% \tabu@printdecimal +%% Verbatim inside X columns ---------------------------------------- +\def\tabu@verbatim{% + \let\verb \tabu@verb + \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd +}% \tabu@verbatim +\let\tabu@ltx@verb \verb +\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} +\def\tabu@fancyvrb {% + \def\tabu@FV@DefineCheckEnd ##1{% + \def\tabu@FV@DefineCheckEnd{% + ##1% + \let\FV@CheckEnd \tabu@FV@CheckEnd + \let\FV@@CheckEnd \tabu@FV@@CheckEnd + \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd + \edef\FV@EndScanning{% + \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% + \global\let\noexpand\FV@EnvironName\relax + \noexpand\next}% + \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% + }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} +}% \tabu@fancyvrb +\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} +\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} +\begingroup +\catcode`\[1 \catcode`\]2 +\@makeother\{ \@makeother\} + \edef\x[\endgroup + \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% + ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} +\def\tabu@FV@ListProcessLine #1{% + \hbox {%to \hsize{% + \kern\leftmargin + \hbox {%to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +%% \savetabu -------------------------------------------------------- +\newcommand*\savetabu[1]{\noalign{% + \tabu@sanitizearg{#1}\tabu@temp + \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else + \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% + \ifdefined\tabu@restored \expandafter\let + \csname tabu@saved@\tabu@temp \endcsname \tabu@restored + \else {\tabu@save}% + \fi + \fi}% +}% \savetabu +\def\tabu@save {% + \toks0\expandafter{\tabu@saved@}% + \iftabu@negcoef + \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% + \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi + \toks1\expandafter{\tabu@savedpream}% + \toks2\expandafter{\tabu@savedpreamble}% + \let\@preamble \relax + \let\tabu@savedpream \relax \let\tabu@savedparams \relax + \edef\tabu@preamble{% + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \edef\tabu@usetabu{% + \def\@preamble {\noexpand\the\toks2}% + \tabu@target \the\tabu@target \relax + \tabucolX \the\tabucolX \relax + \tabu@nbcols \the\tabu@nbcols \relax + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \let\tabu@aligndefault \relax \let\@sharp \relax + \edef\@tempa{\noexpand\tabu@s@ved + {\tabu@usetabu} + {\tabu@preamble} + {\the\toks1}}\@tempa + \tabu@message@save +}% \tabu@save +\long\def\tabu@s@ved #1#2#3{% + \def\tabu@usetabu{#1}% + \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% + \ifodd ##1% \usetabu + \tabu@measuringfalse \tabu@spreadfalse % Just in case... + \gdef\tabu@usetabu {% + \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi + \global\let\tabu@usetabu \@undefined + \def\@halignto {to\tabu@target}% + #1% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \else % \preamble + \gdef\tabu@preamble {% + \global\let\tabu@preamble \@undefined + #2% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \fi + #3}% +}% \tabu@s@ved +\def\tabu@aligndefault@text {\tabu@aligndefault}% +\def\tabu@warn@usetabu {\PackageWarning{tabu} + {Specifying a target with \string\usetabu\space is useless + \MessageBreak The target cannot be changed!}} +\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} +\def\tabu@savewarn#1#2{\PackageInfo{tabu} + {User-name `#1' already used for \string\savetabu + \MessageBreak #2}}% +\def\tabu@saveerr#1{\PackageError{tabu} + {User-name `#1' is unknown for \string\usetabu + \MessageBreak I cannot restore an unknown preamble!}\@ehd} +%% \rowfont --------------------------------------------------------- +\newskip \tabu@cellskip +\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi + {\ifnum0=`}\fi \tabu@row@font} +\newcommand*\tabu@row@font[2][]{% + \ifnum7=\currentgrouptype + \global\let\tabu@@cellleft \tabu@cellleft + \global\let\tabu@@cellright \tabu@cellright + \global\let\tabu@@celllalign \tabu@celllalign + \global\let\tabu@@cellralign \tabu@cellralign + \global\let\tabu@@rowfontreset\tabu@rowfontreset + \fi + \global\let\tabu@rowfontreset \tabu@rowfont@reset + \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% + \ifcsname tabu@cell@#1\endcsname % row alignment + \csname tabu@cell@#1\endcsname \fi + \ifnum0=`{\fi}% end of group / noalign group +}% \rowfont +\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% +\def\tabu@rowfont@reset{% + \global\let\tabu@rowfontreset \tabu@@rowfontreset + \global\let\tabu@cellleft \tabu@@cellleft + \global\let\tabu@cellright \tabu@@cellright + \global\let\tabu@cellfont \@empty + \global\let\tabu@celllalign \tabu@@celllalign + \global\let\tabu@cellralign \tabu@@cellralign +}% \tabu@@rowfontreset +\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl +%% \tabu@prepnext@tok ----------------------------------------------- +\newif \iftabu@cellright +\def\tabu@prepnext@tok{% + \ifnum \count@<\z@ % + \@tempcnta \@M % + \tabu@nbcols\z@ + \let\tabu@fornoopORI \@fornoop + \tabu@cellrightfalse + \else + \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left + \advance \tabu@nbcols \@ne + \iftabu@cellright % before-previous token is right and is finished + \tabu@cellrightfalse % + \tabu@righttok + \fi + \tabu@lefttok + \or % (case 1) previous token is right + \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop + \else % special column: do not change the token + \iftabu@cellright % before-previous token is right + \tabu@cellrightfalse + \tabu@righttok + \fi + \fi % \ifcase + \fi + \tabu@prepnext@tokORI +}% \tabu@prepnext@tok +\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} +\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% + \ifx \in@#2\else + \let\@fornoop \tabu@fornoopORI + \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% + \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% + \expandafter\prepnext@tok + \fi +}% \tabu@lastnoop +\def\tabu@righttok{% + \advance \count@ \m@ne + \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% + \advance \count@ \@ne +}% \tabu@righttok +\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign + \the\toks\count@ \tabu@cellleft}% after because of $ +}% \tabu@lefttok +%% Neutralisation of glues ------------------------------------------ +\let\tabu@cellleft \@empty +\let\tabu@cellright \@empty +\tabu@celllalign@def{\tabu@cellleft}% +\let\tabu@cellralign \@empty +\def\tabu@cell@align #1#2#3{% + \let\tabu@maybesiunitx \toks@ \tabu@celllalign + \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% + \toks@\expandafter{\tabu@cellralign #2}% + \xdef\tabu@cellralign{\the\toks@}% + \toks@\expandafter{\tabu@cellleft #3}% + \xdef\tabu@cellleft{\the\toks@}% +}% \tabu@cell@align +\def\tabu@cell@l{% force alignment to left + \tabu@cell@align + {\tabu@removehfil \raggedright \tabu@cellleft}% left + {\tabu@flush1\tabu@ignorehfil}% right + \raggedright +}% \tabu@cell@l +\def\tabu@cell@c{% force alignment to center + \tabu@cell@align + {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \centering +}% \tabu@cell@c +\def\tabu@cell@r{% force alignment to right + \tabu@cell@align + {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} + \tabu@ignorehfil + \raggedleft +}% \tabu@cell@r +\def\tabu@cell@j{% force justification (for p, m, b columns) + \tabu@cell@align + {\tabu@justify\tabu@cellleft} + {} + \tabu@justify +}% \tabu@cell@j +\def\tabu@justify{% + \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip + \parfillskip\@flushglue +}% \tabu@justify +%% ragged2e settings +\def\tabu@cell@L{% force alignment to left (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedRight \tabu@cellleft} + {\tabu@flush 1\tabu@ignorehfil} + \RaggedRight +}% \tabu@cell@L +\def\tabu@cell@C{% force alignment to center (ragged2e) + \tabu@cell@align + {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \Centering +}% \tabu@cell@C +\def\tabu@cell@R{% force alignment to right (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} + \tabu@ignorehfil + \RaggedLeft +}% \tabu@cell@R +\def\tabu@cell@J{% force justification (ragged2e) + \tabu@cell@align + {\justifying \tabu@cellleft} + {} + \justifying +}% \tabu@cell@J +\def\tabu@flush#1{% + \iftabu@colortbl % colortbl uses \hfill rather than \hfil + \hskip \ifnum13<\currentgrouptype \stretch{#1}% + \else \ifdim#1pt<\p@ \tabu@cellskip + \else \stretch{#1} + \fi\fi \relax + \else % array.sty + \ifnum 13<\currentgrouptype + \hfil \hskip1sp \relax \fi + \fi +}% \tabu@flush +\let\tabu@hfil \hfil +\let\tabu@hfill \hfill +\let\tabu@hskip \hskip +\def\tabu@removehfil{% + \iftabu@colortbl + \unkern \tabu@cellskip =\lastskip + \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip + \else \tabu@cellskip \z@skip + \fi + \else + \ifdim\lastskip=1sp\unskip\fi + \ifnum\gluestretchorder\lastskip =\@ne + \hfilneg % \hfilneg for array.sty but not for colortbl... + \fi + \fi +}% \tabu@removehfil +\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} +\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil + \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group +}% \tabu@nohfil +\def\tabu@colortblalignments {% if colortbl + \def\tabu@nohfil{% + \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group + \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... + \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local +}% \tabu@colortblalignments +%% Taking care of footnotes and hyperfootnotes ---------------------- +\long\def\tabu@footnotetext #1{% + \edef\@tempa{\the\tabu@footnotes + \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% + \global\tabu@footnotes\expandafter{\@tempa {#1}}}% +\long\def\tabu@xfootnotetext [#1]#2{% + \global\tabu@footnotes\expandafter{\the\tabu@footnotes + \footnotetext [{#1}]{#2}}} +\let\tabu@xfootnote \@xfootnote +\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} +\long\def\tabu@Hy@xfootnote [#1]{% + \begingroup + \value\@mpfn #1\relax + \protected@xdef \@thefnmark {\thempfn}% + \endgroup + \@footnotemark \tabu@Hy@ftntxt {#1}% +}% \tabu@Hy@xfootnote +\long\def\tabu@Hy@ftntxt #1#2{% + \edef\@tempa{% + \the\tabu@footnotes + \begingroup + \value\@mpfn #1\relax + \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% + \expandafter \noexpand \expandafter + \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% + }% + \global\tabu@footnotes\expandafter{\@tempa {#2}% + \endgroup}% +}% \tabu@Hy@ftntxt +\long\def\tabu@Hy@footnotetext #1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor {#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor {#1}{\relax}% + }% + \def\@currentHref {#1}% + \let\@currentlabelname \@empty + #2% + \fi + }% +}% \tabu@Hy@footnotetext +%% No need for \arraybackslash ! ------------------------------------ +\def\tabu@latextwoe {% +\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@centering \centering \arraybackslash +\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash +\tabu@temp \tabu@raggedright \raggedright \arraybackslash +}% \tabu@latextwoe +\def\tabu@raggedtwoe {% +\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@Centering \Centering \arraybackslash +\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash +\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash +\tabu@temp \tabu@justifying \justifying \arraybackslash +}% \tabu@raggedtwoe +\def\tabu@normalcrbackslash{\let\\\@normalcr} +\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% + \expandafter\tabu@normalcrbackslash \@trivlist}} +%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- +\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} +\def\tabu@beginfbox {\bgroup \kern\fboxsep + \bgroup\aftergroup\tabu@endfbox} +\def\tabu@endfbox {\kern\fboxsep\egroup\egroup + \@frameb@x\relax} +\def\tabu@color@b@x #1#2{\leavevmode \bgroup + \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% + \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox +}% \tabu@color@b@x +\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup + \aftergroup\tabu@endcolor@b@x \set@color} +\def\tabu@endcolor@b@x {\kern\fboxsep \egroup + \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ + \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ + \tabu@docolor@b@x \egroup +}% \tabu@endcolor@b@x +%% Corrections (arydshln, delarray, colortbl) ----------------------- +\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray + \iftabu@colortbl + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \def\tabu@endarray{% + \crcr \egroup \egroup % + \@arrayright % + \gdef\@preamble{}\CT@end}% + \fi + \else + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \PackageWarning{tabu} + {\string\@arrayright\space is missing from the + \MessageBreak definition of \string\endarray. + \MessageBreak Compatibility with delarray.sty is broken.}% + \fi\fi +}% \tabu@fix@arrayright +\def\tabu@adl@xarraydashrule #1#2#3{% + \ifnum\@lastchclass=\adl@class@start\else + \ifnum\@lastchclass=\@ne\else + \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) + \adl@leftrulefalse \fi\fi % must be treated the same + \fi + \ifadl@zwvrule\else \ifadl@inactive\else + \@addtopreamble{\vrule\@width\arrayrulewidth + \@height\z@ \@depth\z@}\fi \fi + \ifadl@leftrule + \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% + {\number#1}#3}% + \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% + {\number#2}#3} + \fi +}% \tabu@adl@xarraydashrule +\def\tabu@adl@act@endpbox {% + \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox + \egroup \egroup + \adl@colhtdp \box\adl@box \hfil +}% \tabu@adl@act@endpbox +\def\tabu@adl@fix {% + \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln + \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln + \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln + \let\@preamerror \@preamerr % arydshln +}% \tabu@adl@fix +%% Correction for longtable' \@startbox definition ------------------ +%% => \everypar is ``missing'' : TeX should be in vertical mode +\def\tabu@LT@startpbox #1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% +}% \tabu@LT@startpbox +%% \tracingtabu and the package options ------------------ +\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} +\DeclareOption{linegoal}{% + \AtEndOfPackage{% + \RequirePackage{linegoal}[2010/12/07]% + \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX +}} +\DeclareOption{scantokens}{\tabuscantokenstrue} +\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} +\def\tracingtabu {\begingroup\@ifnextchar=% + {\afterassignment\tabu@tracing\count@} + {\afterassignment\tabu@tracing\count@1\relax}} +\def\tabu@tracing{\expandafter\endgroup + \expandafter\tabu@tr@cing \the\count@ \relax +}% \tabu@tracing +\def\tabu@tr@cing #1\relax {% + \ifnum#1>\thr@@ \let\tabu@tracinglines\message + \else \let\tabu@tracinglines\@gobble + \fi + \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG + \def\tabu@mkarstrut {\tabu@DBG@arstrut}% + \tabustrutrule 1.5\p@ + \else \let\tabu@DBG \@gobble + \def\tabu@mkarstrut {\tabu@arstrut}% + \tabustrutrule \z@ + \fi + \ifnum#1>\@ne \let\tabu@debug \message + \else \let\tabu@debug \@gobble + \fi + \ifnum#1>\z@ + \let\tabu@message \message + \let\tabu@tracing@save \tabu@message@save + \let\tabu@starttimer \tabu@pdftimer + \else + \let\tabu@message \@gobble + \let\tabu@tracing@save \@gobble + \let\tabu@starttimer \relax + \fi +}% \tabu@tr@cing +%% Setup \AtBeginDocument +\AtBeginDocument{\tabu@AtBeginDocument} +\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined + \ifdefined\arrayrulecolor \tabu@colortbltrue % + \tabu@colortblalignments % different glues are used + \else \tabu@colortblfalse \fi + \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi + \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi + \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ + \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % + \expandafter\ifx + \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax + \tabu@siunitxtrue + \else \let\tabu@maybesiunitx \@firstofone % + \let\tabu@siunitx \tabu@nosiunitx + \tabu@siunitxfalse + \fi + \ifdefined\adl@array % + \else \let\tabu@adl@fix \relax + \let\tabu@adl@endtrial \@empty \fi + \ifdefined\longtable % + \else \let\longtabu \tabu@nolongtabu \fi + \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi + \csname\ifcsname ifHy@hyperfootnotes\endcsname % + ifHy@hyperfootnotes\else iffalse\fi\endcsname + \let\tabu@footnotetext \tabu@Hy@ftntext + \let\tabu@xfootnote \tabu@Hy@xfootnote \fi + \ifdefined\FV@DefineCheckEnd% + \tabu@fancyvrb \fi + \ifdefined\color % + \let\tabu@color \color + \def\tabu@leavevmodecolor ##1{% + \def\tabu@leavevmodecolor {\leavevmode ##1}% + }\expandafter\tabu@leavevmodecolor\expandafter{\color}% + \else + \let\tabu@color \tabu@nocolor + \let\tabu@leavevmodecolor \@firstofone \fi + \tabu@latextwoe + \ifdefined\@raggedtwoe@everyselectfont % + \tabu@raggedtwoe + \else + \let\tabu@cell@L \tabu@cell@l + \let\tabu@cell@R \tabu@cell@r + \let\tabu@cell@C \tabu@cell@c + \let\tabu@cell@J \tabu@cell@j \fi + \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% + \ifin@ \let\tabu@endarray \endarray + \else \tabu@fix@arrayright \fi% + \everyrow{}% +}% \tabu@AtBeginDocument +\def\tabu@warn@cellspace{% + \PackageWarning{tabu}{% + Package cellspace has some limitations + \MessageBreak And redefines some macros of array.sty. + \MessageBreak Please use \string\tabulinesep\space to control + \MessageBreak vertical spacing of lines inside tabu environment}% +}% \tabu@warn@cellspace +%% tabu Package initialisation +\tabuscantokensfalse +\let\tabu@arc@G \relax +\let\tabu@drsc@G \relax +\let\tabu@evr@G \@empty +\let\tabu@rc@G \@empty +\def\tabu@ls@G {\tabu@linestyle@}% +\let\tabu@@rowfontreset \@empty % +\let\tabu@@celllalign \@empty +\let\tabu@@cellralign \@empty +\let\tabu@@cellleft \@empty +\let\tabu@@cellright \@empty +\def\tabu@naturalXmin {\z@} +\def\tabu@naturalXmax {\z@} +\let\tabu@rowfontreset \@empty +\def\tabulineon {4pt}\let\tabulineoff \tabulineon +\tabu@everyrowtrue +\ifdefined\pdfelapsedtime % + \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% +\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax +\fi +\tracingtabu=\z@ +\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ +\tabulinestyle{} +\taburowcolors{} +\let\tabudefaulttarget \linewidth +\ProcessOptions* % \ProcessOptions* is quicker ! +\endinput +%% +%% End of file `tabu.sty'. diff --git a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp index f801b2c9f16..b727ddb7bb2 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp @@ -60,9 +60,10 @@ template T convert_from_bn254_frs(std::span fr_vec) ASSERT(fr_vec.size() == 2 * BASE_FIELD_SCALAR_SIZE); T val; val.x = convert_from_bn254_frs(fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); - info("native x: ", val.x); val.y = convert_from_bn254_frs(fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); - info("native y: ", val.y); + if (val.x == BaseField::zero() && val.y == BaseField::zero()) { + val.self_set_infinity(); + } return val; } else { // Array or Univariate @@ -97,8 +98,17 @@ template std::vector convert_to_bn254_frs(const T& val) } else if constexpr (IsAnyOf) { return convert_grumpkin_fr_to_bn254_frs(val); } else if constexpr (IsAnyOf) { - auto fr_vec_x = convert_to_bn254_frs(val.x); - auto fr_vec_y = convert_to_bn254_frs(val.y); + using BaseField = typename T::Fq; + + std::vector fr_vec_x; + std::vector fr_vec_y; + if (val.is_point_at_infinity()) { + fr_vec_x = convert_to_bn254_frs(BaseField::zero()); + fr_vec_y = convert_to_bn254_frs(BaseField::zero()); + } else { + fr_vec_x = convert_to_bn254_frs(val.x); + fr_vec_y = convert_to_bn254_frs(val.y); + } std::vector fr_vec(fr_vec_x.begin(), fr_vec_x.end()); fr_vec.insert(fr_vec.end(), fr_vec_y.begin(), fr_vec_y.end()); return fr_vec; diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp index f1c29250aaf..9e60c134f91 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp @@ -149,10 +149,19 @@ template class TestAffineElement : public testing::Test { EXPECT_EQ(affine_points[i], -result[i]); } } + + static void test_fixed_point_at_infinity() + { + using Fq = affine_element::Fq; + affine_element P = affine_element::infinity(); + affine_element Q(Fq::zero(), Fq::zero()); + Q.x.self_set_msb(); + EXPECT_EQ(P, Q); + } }; -using TestTypes = testing::Types; -// using TestTypes = testing::Types; +// using TestTypes = testing::Types; +using TestTypes = testing::Types; } // namespace TYPED_TEST_SUITE(TestAffineElement, TestTypes); @@ -176,6 +185,15 @@ TYPED_TEST(TestAffineElement, PointCompression) } } +TYPED_TEST(TestAffineElement, FixedInfinityPoint) +{ + if constexpr (TypeParam::Fq::modulus.data[3] >= 0x4000000000000000ULL) { + GTEST_SKIP(); + } else { + TestFixture::test_fixed_point_at_infinity(); + } +} + TYPED_TEST(TestAffineElement, PointCompressionUnsafe) { if constexpr (TypeParam::Fq::modulus.data[3] >= 0x4000000000000000ULL) { diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp index 6ca7c5674f6..542ea181633 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp @@ -82,7 +82,7 @@ constexpr uint256_t affine_element::compress() const noexcept template affine_element affine_element::infinity() { - affine_element e; + affine_element e{}; e.self_set_infinity(); return e; } @@ -104,6 +104,8 @@ template constexpr void affine_element: x.data[2] = Fq::modulus.data[2]; x.data[3] = Fq::modulus.data[3]; } else { + (*this).x = Fq::zero(); + (*this).y = Fq::zero(); x.self_set_msb(); } } diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp index 5cc22a57dba..1a4f6a4f567 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp @@ -515,6 +515,8 @@ template constexpr void element::self_s x.data[2] = Fq::modulus.data[2]; x.data[3] = Fq::modulus.data[3]; } else { + (*this).x = Fq::zero(); + (*this).y = Fq::zero(); x.self_set_msb(); } } diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp index 2f8999ada5d..889418a3cb2 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp @@ -26,11 +26,10 @@ class ECCVMTranscriptTests : public ::testing::Test { * * @return TranscriptManifest */ - TranscriptManifest construct_eccvm_honk_manifest(size_t circuit_size, size_t log_ipa_poly_degree) + TranscriptManifest construct_eccvm_honk_manifest(size_t circuit_size, [[maybe_unused]] size_t log_ipa_poly_degree) { TranscriptManifest manifest_expected; auto log_n = numeric::get_msb(circuit_size); - ASSERT(log_n == log_ipa_poly_degree); size_t MAX_PARTIAL_RELATION_LENGTH = Flavor::BATCHED_RELATION_PARTIAL_LENGTH; // Size of types is number of bb::frs needed to represent the type diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp index 9d0fdaeb379..41415680712 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp @@ -340,4 +340,36 @@ TEST(RecursiveHonkTranscript, ReturnValuesMatch) EXPECT_EQ(static_cast(native_alpha), stdlib_alpha.get_value()); EXPECT_EQ(static_cast(native_beta), stdlib_beta.get_value()); } + +TEST(RecursiveTranscript, PointAtInfinityConsistency) +{ + using NativeCurve = curve::Grumpkin; + using NativeCommitment = typename NativeCurve::AffineElement; + using NativeFF = NativeCurve::ScalarField; + + using FF = bigfield; + using Commitment = cycle_group; + + Builder builder; + + NativeCommitment infinity = NativeCommitment::infinity(); + + NativeTranscript prover_transcript; + prover_transcript.send_to_verifier("infinity", infinity); + NativeFF challenge = prover_transcript.get_challenge("challenge"); + auto proof_data = prover_transcript.proof_data; + info(challenge); + + NativeTranscript verifier_transcript(proof_data); + verifier_transcript.receive_from_prover("infinity"); + auto verifier_challenge = verifier_transcript.get_challenge("challenge"); + info(verifier_challenge); + + StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); + StdlibTranscript stdlib_transcript{ stdlib_proof }; + stdlib_transcript.receive_from_prover("infinity"); + auto stdlib_challenge = stdlib_transcript.get_challenge("challenge"); + // info(stdlib_challenge.get_value()); + EXPECT_EQ(verifier_challenge, NativeFF(stdlib_challenge.get_value() % FF::modulus)); +} } // namespace bb::stdlib::recursion::honk \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp index 7f34371b907..c969c01d9c6 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp @@ -88,17 +88,18 @@ template T convert_from_bn254_frs(Builder& builde result.x = convert_from_bn254_frs(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); result.y = convert_from_bn254_frs( builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); + // WORKTODO make an is_zero() function -_- + // bool_t is_infinity = result.x.is_zero() && result.y.is_zero(); return result; } else if constexpr (IsAnyOf>) { using BaseField = fr; constexpr size_t BASE_FIELD_SCALAR_SIZE = calc_num_bn254_frs(); ASSERT(fr_vec.size() == 2 * BASE_FIELD_SCALAR_SIZE); - auto x = convert_from_bn254_frs>(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); - auto y = convert_from_bn254_frs>( + fr x = + convert_from_bn254_frs>(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); + fr y = convert_from_bn254_frs>( builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); - auto is_infinity = x.get_value().is_msb_set(); - - grumpkin_element result(x, y, is_infinity); + grumpkin_element result(x, y, x.is_zero() && y.is_zero()); return result; } else { // Array or Univariate From e21b3e46aa818d1b16ad26c1e295fcb8c3b15007 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 06:55:42 +0000 Subject: [PATCH 20/47] let's gooo --- .../stdlib/honk_recursion/transcript/transcript.test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp index 41415680712..5d4e5f14710 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp @@ -181,7 +181,7 @@ TEST(RecursiveHonkTranscript, ProblematicTest) using Instance = ProverInstance_; using Prover = UltraProver_; using Verifier = UltraVerifier_; - g Builder builder; + Builder builder; // auto bf_element = NativeBF::random_element(); // auto dummy = NativeCommitment::one() * NativeBF::random_element(); NativeCommitment expected_issue = NativeCommitment::infinity(); From 0a16e60014aa5f8665e45dd987a8120a2abbfe82 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 06:36:42 +0000 Subject: [PATCH 21/47] handle point at infinity consistently --- .../ecc/fields/field_conversion.hpp | 16 ++++- .../ecc/groups/affine_element.test.cpp | 22 ++++++- .../ecc/groups/affine_element_impl.hpp | 4 +- .../barretenberg/ecc/groups/element_impl.hpp | 2 + .../eccvm/eccvm_transcript.test.cpp | 3 +- .../eccvm_recursive_verifier.cpp | 6 -- .../transcript/transcript.test.cpp | 63 +++++++++++++++++++ .../primitives/field/field_conversion.hpp | 16 +++-- 8 files changed, 113 insertions(+), 19 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp index e19c535da31..b727ddb7bb2 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp @@ -61,6 +61,9 @@ template T convert_from_bn254_frs(std::span fr_vec) T val; val.x = convert_from_bn254_frs(fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); val.y = convert_from_bn254_frs(fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); + if (val.x == BaseField::zero() && val.y == BaseField::zero()) { + val.self_set_infinity(); + } return val; } else { // Array or Univariate @@ -95,8 +98,17 @@ template std::vector convert_to_bn254_frs(const T& val) } else if constexpr (IsAnyOf) { return convert_grumpkin_fr_to_bn254_frs(val); } else if constexpr (IsAnyOf) { - auto fr_vec_x = convert_to_bn254_frs(val.x); - auto fr_vec_y = convert_to_bn254_frs(val.y); + using BaseField = typename T::Fq; + + std::vector fr_vec_x; + std::vector fr_vec_y; + if (val.is_point_at_infinity()) { + fr_vec_x = convert_to_bn254_frs(BaseField::zero()); + fr_vec_y = convert_to_bn254_frs(BaseField::zero()); + } else { + fr_vec_x = convert_to_bn254_frs(val.x); + fr_vec_y = convert_to_bn254_frs(val.y); + } std::vector fr_vec(fr_vec_x.begin(), fr_vec_x.end()); fr_vec.insert(fr_vec.end(), fr_vec_y.begin(), fr_vec_y.end()); return fr_vec; diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp index f1c29250aaf..9e60c134f91 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp @@ -149,10 +149,19 @@ template class TestAffineElement : public testing::Test { EXPECT_EQ(affine_points[i], -result[i]); } } + + static void test_fixed_point_at_infinity() + { + using Fq = affine_element::Fq; + affine_element P = affine_element::infinity(); + affine_element Q(Fq::zero(), Fq::zero()); + Q.x.self_set_msb(); + EXPECT_EQ(P, Q); + } }; -using TestTypes = testing::Types; -// using TestTypes = testing::Types; +// using TestTypes = testing::Types; +using TestTypes = testing::Types; } // namespace TYPED_TEST_SUITE(TestAffineElement, TestTypes); @@ -176,6 +185,15 @@ TYPED_TEST(TestAffineElement, PointCompression) } } +TYPED_TEST(TestAffineElement, FixedInfinityPoint) +{ + if constexpr (TypeParam::Fq::modulus.data[3] >= 0x4000000000000000ULL) { + GTEST_SKIP(); + } else { + TestFixture::test_fixed_point_at_infinity(); + } +} + TYPED_TEST(TestAffineElement, PointCompressionUnsafe) { if constexpr (TypeParam::Fq::modulus.data[3] >= 0x4000000000000000ULL) { diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp index c1906e40374..f58e6f5b7bd 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp @@ -82,7 +82,7 @@ constexpr uint256_t affine_element::compress() const noexcept template affine_element affine_element::infinity() { - affine_element e; + affine_element e{}; e.self_set_infinity(); return e; } @@ -105,6 +105,8 @@ template constexpr void affine_element: x.data[3] = Fq::modulus.data[3]; } else { + (*this).x = Fq::zero(); + (*this).y = Fq::zero(); x.self_set_msb(); } } diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp index 5cc22a57dba..1a4f6a4f567 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp @@ -515,6 +515,8 @@ template constexpr void element::self_s x.data[2] = Fq::modulus.data[2]; x.data[3] = Fq::modulus.data[3]; } else { + (*this).x = Fq::zero(); + (*this).y = Fq::zero(); x.self_set_msb(); } } diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp index 2f8999ada5d..889418a3cb2 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp @@ -26,11 +26,10 @@ class ECCVMTranscriptTests : public ::testing::Test { * * @return TranscriptManifest */ - TranscriptManifest construct_eccvm_honk_manifest(size_t circuit_size, size_t log_ipa_poly_degree) + TranscriptManifest construct_eccvm_honk_manifest(size_t circuit_size, [[maybe_unused]] size_t log_ipa_poly_degree) { TranscriptManifest manifest_expected; auto log_n = numeric::get_msb(circuit_size); - ASSERT(log_n == log_ipa_poly_degree); size_t MAX_PARTIAL_RELATION_LENGTH = Flavor::BATCHED_RELATION_PARTIAL_LENGTH; // Size of types is number of bb::frs needed to represent the type diff --git a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp index e2821b7789b..fe47fd9469d 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.cpp @@ -38,12 +38,6 @@ template void ECCVMRecursiveVerifier_::verify_proof(co for (auto [comm, label] : zip_view(commitments.get_wires(), commitment_labels.get_wires())) { comm = transcript->template receive_from_prover(label); - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1017): This is a hack to ensure zero commitments - // are still on curve as the transcript doesn't currently support a point at infinity representation for - // cycle_group - if (!comm.get_value().on_curve()) { - comm.set_point_at_infinity(true); - } } // Get challenge for sorted list batching and wire four memory records diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp index 3f4b4d68886..f04edb5a8c9 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp @@ -179,4 +179,67 @@ TEST(RecursiveHonkTranscript, ReturnValuesMatch) EXPECT_EQ(static_cast(native_alpha), stdlib_alpha.get_value()); EXPECT_EQ(static_cast(native_beta), stdlib_beta.get_value()); } + +TEST(RecursiveTranscript, InfinityConsistencyGrumpkin) +{ + using NativeCurve = curve::Grumpkin; + using NativeCommitment = typename NativeCurve::AffineElement; + using NativeFF = NativeCurve::ScalarField; + + using FF = bigfield; + using Commitment = cycle_group; + + Builder builder; + + NativeCommitment infinity = NativeCommitment::infinity(); + + NativeTranscript prover_transcript; + prover_transcript.send_to_verifier("infinity", infinity); + NativeFF challenge = prover_transcript.get_challenge("challenge"); + auto proof_data = prover_transcript.proof_data; + + NativeTranscript verifier_transcript(proof_data); + verifier_transcript.receive_from_prover("infinity"); + auto verifier_challenge = verifier_transcript.get_challenge("challenge"); + + StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); + StdlibTranscript stdlib_transcript{ stdlib_proof }; + stdlib_transcript.receive_from_prover("infinity"); + auto stdlib_challenge = stdlib_transcript.get_challenge("challenge"); + + EXPECT_EQ(challenge, verifier_challenge); + EXPECT_EQ(verifier_challenge, NativeFF(stdlib_challenge.get_value() % FF::modulus)); +} + +TEST(RecursiveTranscript, InfinityConsistencyBN254) +{ + using NativeCurve = curve::BN254; + using NativeCommitment = typename NativeCurve::AffineElement; + using NativeFF = NativeCurve::ScalarField; + + using FF = field_t; + using BF = bigfield; + using Commitment = element; + + Builder builder; + + NativeCommitment infinity = NativeCommitment::infinity(); + + NativeTranscript prover_transcript; + prover_transcript.send_to_verifier("infinity", infinity); + NativeFF challenge = prover_transcript.get_challenge("challenge"); + auto proof_data = prover_transcript.proof_data; + + NativeTranscript verifier_transcript(proof_data); + verifier_transcript.receive_from_prover("infinity"); + auto verifier_challenge = verifier_transcript.get_challenge("challenge"); + + StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); + StdlibTranscript stdlib_transcript{ stdlib_proof }; + stdlib_transcript.receive_from_prover("infinity"); + auto stdlib_challenge = stdlib_transcript.get_challenge("challenge"); + + EXPECT_EQ(challenge, verifier_challenge); + EXPECT_EQ(verifier_challenge, stdlib_challenge.get_value()); +} } // namespace bb::stdlib::recursion::honk \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp index 0cc9f98ba58..aa9ffe26fc1 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp @@ -78,7 +78,7 @@ template T convert_from_bn254_frs(Builder& builde return fr_vec[0]; } else if constexpr (IsAnyOf>) { ASSERT(fr_vec.size() == 2); - fq result(fr_vec[0], fr_vec[1], 0, 0); + fq result(fr_vec[0], fr_vec[1]); return result; } else if constexpr (IsAnyOf>) { using BaseField = fq; @@ -88,16 +88,20 @@ template T convert_from_bn254_frs(Builder& builde result.x = convert_from_bn254_frs(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); result.y = convert_from_bn254_frs( builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); + + result.set_point_at_infinity(fr_vec[0].is_zero() && fr_vec[1].is_zero() && fr_vec[2].is_zero() && + fr_vec[3].is_zero()); + return result; } else if constexpr (IsAnyOf>) { using BaseField = fr; constexpr size_t BASE_FIELD_SCALAR_SIZE = calc_num_bn254_frs(); ASSERT(fr_vec.size() == 2 * BASE_FIELD_SCALAR_SIZE); - grumpkin_element result( - convert_from_bn254_frs>(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)), - convert_from_bn254_frs>( - builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)), - false); + fr x = + convert_from_bn254_frs>(builder, fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE)); + fr y = convert_from_bn254_frs>( + builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); + grumpkin_element result(x, y, x.is_zero() && y.is_zero()); return result; } else { // Array or Univariate From 714455297e41e362ab6b4803a6bbf9d73f5608bf Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 07:40:51 +0000 Subject: [PATCH 22/47] handle biggroup and add test for bn254 --- .../transcript/transcript.test.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp index f04edb5a8c9..9b532748a7e 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/transcript/transcript.test.cpp @@ -180,6 +180,11 @@ TEST(RecursiveHonkTranscript, ReturnValuesMatch) EXPECT_EQ(static_cast(native_beta), stdlib_beta.get_value()); } +/** + * @brief Ensure that when encountering an infinity commitment results stay consistent in the recursive and native case + * for Grumpkin and the native and stdlib transcripts produce the same challenge. + * @todo(https://github.com/AztecProtocol/barretenberg/issues/1064) Add more transcript tests for both curves + */ TEST(RecursiveTranscript, InfinityConsistencyGrumpkin) { using NativeCurve = curve::Grumpkin; @@ -204,13 +209,19 @@ TEST(RecursiveTranscript, InfinityConsistencyGrumpkin) StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); StdlibTranscript stdlib_transcript{ stdlib_proof }; - stdlib_transcript.receive_from_prover("infinity"); + auto stdlib_infinity = stdlib_transcript.receive_from_prover("infinity"); + EXPECT_TRUE(stdlib_infinity.is_point_at_infinity().get_value()); auto stdlib_challenge = stdlib_transcript.get_challenge("challenge"); EXPECT_EQ(challenge, verifier_challenge); EXPECT_EQ(verifier_challenge, NativeFF(stdlib_challenge.get_value() % FF::modulus)); } +/** + * @brief Ensure that when encountering an infinity commitment results stay consistent in the recursive and native case + * for BN254 and the native and stdlib transcripts produce the same challenge. + * @todo(https://github.com/AztecProtocol/barretenberg/issues/1064) Add more transcript tests for both curves + */ TEST(RecursiveTranscript, InfinityConsistencyBN254) { using NativeCurve = curve::BN254; @@ -236,7 +247,8 @@ TEST(RecursiveTranscript, InfinityConsistencyBN254) StdlibProof stdlib_proof = bb::convert_proof_to_witness(&builder, proof_data); StdlibTranscript stdlib_transcript{ stdlib_proof }; - stdlib_transcript.receive_from_prover("infinity"); + auto stdlib_commitment = stdlib_transcript.receive_from_prover("infinity"); + EXPECT_TRUE(stdlib_commitment.is_point_at_infinity().get_value()); auto stdlib_challenge = stdlib_transcript.get_challenge("challenge"); EXPECT_EQ(challenge, verifier_challenge); From 65e96133d49fb92798a6b5db4599065e6063eef5 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 07:50:42 +0000 Subject: [PATCH 23/47] cleanup --- .../cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp index 889418a3cb2..3f06d27aed1 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_transcript.test.cpp @@ -26,11 +26,10 @@ class ECCVMTranscriptTests : public ::testing::Test { * * @return TranscriptManifest */ - TranscriptManifest construct_eccvm_honk_manifest(size_t circuit_size, [[maybe_unused]] size_t log_ipa_poly_degree) + TranscriptManifest construct_eccvm_honk_manifest(size_t circuit_size) { TranscriptManifest manifest_expected; auto log_n = numeric::get_msb(circuit_size); - size_t MAX_PARTIAL_RELATION_LENGTH = Flavor::BATCHED_RELATION_PARTIAL_LENGTH; // Size of types is number of bb::frs needed to represent the type size_t frs_per_Fr = bb::field_conversion::calc_num_bn254_frs(); @@ -251,8 +250,7 @@ TEST_F(ECCVMTranscriptTests, ProverManifestConsistency) auto proof = prover.construct_proof(); // Check that the prover generated manifest agrees with the manifest hard coded in this suite - auto manifest_expected = - this->construct_eccvm_honk_manifest(prover.key->circuit_size, prover.sumcheck_output.challenge.size()); + auto manifest_expected = this->construct_eccvm_honk_manifest(prover.key->circuit_size); auto prover_manifest = prover.transcript->get_manifest(); // Note: a manifest can be printed using manifest.print() for (size_t round = 0; round < manifest_expected.size(); ++round) { From 71ecc377038e7f6ddead288b5fd0b0f820a6e9c8 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 08:08:22 +0000 Subject: [PATCH 24/47] remove Testing file added by mistake --- barretenberg/cpp/Testing/Temporary/CTestCostData.txt | 1 - barretenberg/cpp/Testing/Temporary/LastTest.log | 3 --- 2 files changed, 4 deletions(-) delete mode 100644 barretenberg/cpp/Testing/Temporary/CTestCostData.txt delete mode 100644 barretenberg/cpp/Testing/Temporary/LastTest.log diff --git a/barretenberg/cpp/Testing/Temporary/CTestCostData.txt b/barretenberg/cpp/Testing/Temporary/CTestCostData.txt deleted file mode 100644 index ed97d539c09..00000000000 --- a/barretenberg/cpp/Testing/Temporary/CTestCostData.txt +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/barretenberg/cpp/Testing/Temporary/LastTest.log b/barretenberg/cpp/Testing/Temporary/LastTest.log deleted file mode 100644 index fcd4f2b12a9..00000000000 --- a/barretenberg/cpp/Testing/Temporary/LastTest.log +++ /dev/null @@ -1,3 +0,0 @@ -Start testing: Jul 25 08:10 UTC ----------------------------------------------------------- -End testing: Jul 25 08:10 UTC From b3edc4b15a929349039eba2fc07d4ed09fe7a9d0 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 08:11:29 +0000 Subject: [PATCH 25/47] remove unwanted stuff --- barretenberg/cpp/html/bc_s.png | Bin 676 -> 0 bytes barretenberg/cpp/html/bc_sd.png | Bin 635 -> 0 bytes barretenberg/cpp/html/closed.png | Bin 132 -> 0 bytes barretenberg/cpp/html/doc.svg | 12 - barretenberg/cpp/html/docd.svg | 12 - barretenberg/cpp/html/doxygen.css | 2045 -------------- barretenberg/cpp/html/doxygen.svg | 28 - barretenberg/cpp/html/dynsections.js | 192 -- barretenberg/cpp/html/folderclosed.svg | 11 - barretenberg/cpp/html/folderclosedd.svg | 11 - barretenberg/cpp/html/folderopen.svg | 17 - barretenberg/cpp/html/folderopend.svg | 12 - barretenberg/cpp/html/graph_legend.dot | 24 - barretenberg/cpp/html/graph_legend.html | 141 - barretenberg/cpp/html/index.html | 81 - barretenberg/cpp/html/jquery.js | 34 - barretenberg/cpp/html/menu.js | 136 - barretenberg/cpp/html/menudata.js | 26 - barretenberg/cpp/html/minus.svg | 8 - barretenberg/cpp/html/minusd.svg | 8 - barretenberg/cpp/html/nav_f.png | Bin 153 -> 0 bytes barretenberg/cpp/html/nav_fd.png | Bin 169 -> 0 bytes barretenberg/cpp/html/nav_g.png | Bin 95 -> 0 bytes barretenberg/cpp/html/nav_h.png | Bin 98 -> 0 bytes barretenberg/cpp/html/nav_hd.png | Bin 114 -> 0 bytes barretenberg/cpp/html/open.png | Bin 123 -> 0 bytes barretenberg/cpp/html/plus.svg | 9 - barretenberg/cpp/html/plusd.svg | 9 - barretenberg/cpp/html/search/close.svg | 18 - barretenberg/cpp/html/search/mag.svg | 24 - barretenberg/cpp/html/search/mag_d.svg | 24 - barretenberg/cpp/html/search/mag_sel.svg | 31 - barretenberg/cpp/html/search/mag_seld.svg | 31 - barretenberg/cpp/html/search/search.css | 291 -- barretenberg/cpp/html/search/search.js | 840 ------ barretenberg/cpp/html/search/searchdata.js | 12 - barretenberg/cpp/html/splitbar.png | Bin 314 -> 0 bytes barretenberg/cpp/html/splitbard.png | Bin 282 -> 0 bytes barretenberg/cpp/html/sync_off.png | Bin 853 -> 0 bytes barretenberg/cpp/html/sync_on.png | Bin 845 -> 0 bytes barretenberg/cpp/html/tab_a.png | Bin 142 -> 0 bytes barretenberg/cpp/html/tab_ad.png | Bin 135 -> 0 bytes barretenberg/cpp/html/tab_b.png | Bin 169 -> 0 bytes barretenberg/cpp/html/tab_bd.png | Bin 173 -> 0 bytes barretenberg/cpp/html/tab_h.png | Bin 177 -> 0 bytes barretenberg/cpp/html/tab_hd.png | Bin 180 -> 0 bytes barretenberg/cpp/html/tab_s.png | Bin 184 -> 0 bytes barretenberg/cpp/html/tab_sd.png | Bin 188 -> 0 bytes barretenberg/cpp/html/tabs.css | 1 - barretenberg/cpp/latex/Makefile | 27 - barretenberg/cpp/latex/doxygen.sty | 694 ----- barretenberg/cpp/latex/etoc_doxygen.sty | 2178 --------------- barretenberg/cpp/latex/longtable_doxygen.sty | 456 ---- barretenberg/cpp/latex/refman.tex | 218 -- barretenberg/cpp/latex/tabu_doxygen.sty | 2557 ------------------ 55 files changed, 10218 deletions(-) delete mode 100644 barretenberg/cpp/html/bc_s.png delete mode 100644 barretenberg/cpp/html/bc_sd.png delete mode 100644 barretenberg/cpp/html/closed.png delete mode 100644 barretenberg/cpp/html/doc.svg delete mode 100644 barretenberg/cpp/html/docd.svg delete mode 100644 barretenberg/cpp/html/doxygen.css delete mode 100644 barretenberg/cpp/html/doxygen.svg delete mode 100644 barretenberg/cpp/html/dynsections.js delete mode 100644 barretenberg/cpp/html/folderclosed.svg delete mode 100644 barretenberg/cpp/html/folderclosedd.svg delete mode 100644 barretenberg/cpp/html/folderopen.svg delete mode 100644 barretenberg/cpp/html/folderopend.svg delete mode 100644 barretenberg/cpp/html/graph_legend.dot delete mode 100644 barretenberg/cpp/html/graph_legend.html delete mode 100644 barretenberg/cpp/html/index.html delete mode 100644 barretenberg/cpp/html/jquery.js delete mode 100644 barretenberg/cpp/html/menu.js delete mode 100644 barretenberg/cpp/html/menudata.js delete mode 100644 barretenberg/cpp/html/minus.svg delete mode 100644 barretenberg/cpp/html/minusd.svg delete mode 100644 barretenberg/cpp/html/nav_f.png delete mode 100644 barretenberg/cpp/html/nav_fd.png delete mode 100644 barretenberg/cpp/html/nav_g.png delete mode 100644 barretenberg/cpp/html/nav_h.png delete mode 100644 barretenberg/cpp/html/nav_hd.png delete mode 100644 barretenberg/cpp/html/open.png delete mode 100644 barretenberg/cpp/html/plus.svg delete mode 100644 barretenberg/cpp/html/plusd.svg delete mode 100644 barretenberg/cpp/html/search/close.svg delete mode 100644 barretenberg/cpp/html/search/mag.svg delete mode 100644 barretenberg/cpp/html/search/mag_d.svg delete mode 100644 barretenberg/cpp/html/search/mag_sel.svg delete mode 100644 barretenberg/cpp/html/search/mag_seld.svg delete mode 100644 barretenberg/cpp/html/search/search.css delete mode 100644 barretenberg/cpp/html/search/search.js delete mode 100644 barretenberg/cpp/html/search/searchdata.js delete mode 100644 barretenberg/cpp/html/splitbar.png delete mode 100644 barretenberg/cpp/html/splitbard.png delete mode 100644 barretenberg/cpp/html/sync_off.png delete mode 100644 barretenberg/cpp/html/sync_on.png delete mode 100644 barretenberg/cpp/html/tab_a.png delete mode 100644 barretenberg/cpp/html/tab_ad.png delete mode 100644 barretenberg/cpp/html/tab_b.png delete mode 100644 barretenberg/cpp/html/tab_bd.png delete mode 100644 barretenberg/cpp/html/tab_h.png delete mode 100644 barretenberg/cpp/html/tab_hd.png delete mode 100644 barretenberg/cpp/html/tab_s.png delete mode 100644 barretenberg/cpp/html/tab_sd.png delete mode 100644 barretenberg/cpp/html/tabs.css delete mode 100644 barretenberg/cpp/latex/Makefile delete mode 100644 barretenberg/cpp/latex/doxygen.sty delete mode 100644 barretenberg/cpp/latex/etoc_doxygen.sty delete mode 100644 barretenberg/cpp/latex/longtable_doxygen.sty delete mode 100644 barretenberg/cpp/latex/refman.tex delete mode 100644 barretenberg/cpp/latex/tabu_doxygen.sty diff --git a/barretenberg/cpp/html/bc_s.png b/barretenberg/cpp/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/barretenberg/cpp/html/bc_sd.png b/barretenberg/cpp/html/bc_sd.png deleted file mode 100644 index 31ca888dc71049713b35c351933a8d0f36180bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ diff --git a/barretenberg/cpp/html/closed.png b/barretenberg/cpp/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/barretenberg/cpp/html/doc.svg b/barretenberg/cpp/html/doc.svg deleted file mode 100644 index 0b928a53171..00000000000 --- a/barretenberg/cpp/html/doc.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/barretenberg/cpp/html/docd.svg b/barretenberg/cpp/html/docd.svg deleted file mode 100644 index ac18b275522..00000000000 --- a/barretenberg/cpp/html/docd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/barretenberg/cpp/html/doxygen.css b/barretenberg/cpp/html/doxygen.css deleted file mode 100644 index 009a9b5546a..00000000000 --- a/barretenberg/cpp/html/doxygen.css +++ /dev/null @@ -1,2045 +0,0 @@ -/* The standard CSS for doxygen 1.9.8*/ - -html { -/* page base colors */ ---page-background-color: white; ---page-foreground-color: black; ---page-link-color: #3D578C; ---page-visited-link-color: #4665A2; - -/* index */ ---index-odd-item-bg-color: #F8F9FC; ---index-even-item-bg-color: white; ---index-header-color: black; ---index-separator-color: #A0A0A0; - -/* header */ ---header-background-color: #F9FAFC; ---header-separator-color: #C4CFE5; ---header-gradient-image: url('nav_h.png'); ---group-header-separator-color: #879ECB; ---group-header-color: #354C7B; ---inherit-header-color: gray; - ---footer-foreground-color: #2A3D61; ---footer-logo-width: 104px; ---citation-label-color: #334975; ---glow-color: cyan; - ---title-background-color: white; ---title-separator-color: #5373B4; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; - ---blockquote-background-color: #F7F8FB; ---blockquote-border-color: #9CAFD4; - ---scrollbar-thumb-color: #9CAFD4; ---scrollbar-background-color: #F9FAFC; - ---icon-background-color: #728DC1; ---icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; ---memdecl-foreground-color: #555; ---memdecl-template-color: #4665A2; - -/* detailed member list */ ---memdef-border-color: #A8B8D9; ---memdef-title-background-color: #E2E8F2; ---memdef-title-gradient-image: url('nav_f.png'); ---memdef-proto-background-color: #DFE5F1; ---memdef-proto-text-color: #253555; ---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---memdef-doc-background-color: white; ---memdef-param-name-color: #602020; ---memdef-template-color: #4665A2; - -/* tables */ ---table-cell-border-color: #2D4068; ---table-header-background-color: #374F7F; ---table-header-foreground-color: #FFFFFF; - -/* labels */ ---label-background-color: #728DC1; ---label-left-top-border-color: #5373B4; ---label-right-bottom-border-color: #C4CFE5; ---label-foreground-color: white; - -/** navigation bar/tree/menu */ ---nav-background-color: #F9FAFC; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_b.png'); ---nav-gradient-hover-image: url('tab_h.png'); ---nav-gradient-active-image: url('tab_a.png'); ---nav-gradient-active-image-parent: url("../tab_a.png"); ---nav-separator-image: url('tab_s.png'); ---nav-breadcrumb-image: url('bc_s.png'); ---nav-breadcrumb-border-color: #C2CDE4; ---nav-splitbar-image: url('splitbar.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; ---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #364D7C; ---nav-menu-background-color: white; ---nav-menu-foreground-color: #555555; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #9CAFD4; ---nav-arrow-selected-color: #9CAFD4; - -/* table of contents */ ---toc-background-color: #F4F6FA; ---toc-border-color: #D8DFEE; ---toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: white; ---search-foreground-color: #909090; ---search-magnification-image: url('mag.svg'); ---search-magnification-select-image: url('mag_sel.svg'); ---search-active-color: black; ---search-filter-background-color: #F9FAFC; ---search-filter-foreground-color: black; ---search-filter-border-color: #90A5CE; ---search-filter-highlight-text-color: white; ---search-filter-highlight-bg-color: #3D578C; ---search-results-foreground-color: #425E97; ---search-results-background-color: #EEF1F7; ---search-results-border-color: black; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #555; - -/** code fragments */ ---code-keyword-color: #008000; ---code-type-keyword-color: #604020; ---code-flow-keyword-color: #E08000; ---code-comment-color: #800000; ---code-preprocessor-color: #806020; ---code-string-literal-color: #002080; ---code-char-literal-color: #008080; ---code-xml-cdata-color: black; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; ---fragment-foreground-color: black; ---fragment-background-color: #FBFCFD; ---fragment-border-color: #C4CFE5; ---fragment-lineno-border-color: #00FF00; ---fragment-lineno-background-color: #E8E8E8; ---fragment-lineno-foreground-color: black; ---fragment-lineno-link-fg-color: #4665A2; ---fragment-lineno-link-bg-color: #D8D8D8; ---fragment-lineno-link-hover-fg-color: #4665A2; ---fragment-lineno-link-hover-bg-color: #C8C8C8; ---tooltip-foreground-color: black; ---tooltip-background-color: white; ---tooltip-border-color: gray; ---tooltip-doc-color: grey; ---tooltip-declaration-color: #006318; ---tooltip-link-color: #4665A2; ---tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -} - -@media (prefers-color-scheme: dark) { - html:not(.dark-mode) { - color-scheme: dark; - -/* page base colors */ ---page-background-color: black; ---page-foreground-color: #C9D1D9; ---page-link-color: #90A5CE; ---page-visited-link-color: #A3B4D7; - -/* index */ ---index-odd-item-bg-color: #0B101A; ---index-even-item-bg-color: black; ---index-header-color: #C4CFE5; ---index-separator-color: #334975; - -/* header */ ---header-background-color: #070B11; ---header-separator-color: #141C2E; ---header-gradient-image: url('nav_hd.png'); ---group-header-separator-color: #283A5D; ---group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; - ---footer-foreground-color: #5B7AB7; ---footer-logo-width: 60px; ---citation-label-color: #90A5CE; ---glow-color: cyan; - ---title-background-color: #090D16; ---title-separator-color: #354C79; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; - ---blockquote-background-color: #101826; ---blockquote-border-color: #283A5D; - ---scrollbar-thumb-color: #283A5D; ---scrollbar-background-color: #070B11; - ---icon-background-color: #334975; ---icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; ---memdecl-foreground-color: #BBB; ---memdecl-template-color: #7C95C6; - -/* detailed member list */ ---memdef-border-color: #233250; ---memdef-title-background-color: #1B2840; ---memdef-title-gradient-image: url('nav_fd.png'); ---memdef-proto-background-color: #19243A; ---memdef-proto-text-color: #9DB0D4; ---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); ---memdef-doc-background-color: black; ---memdef-param-name-color: #D28757; ---memdef-template-color: #7C95C6; - -/* tables */ ---table-cell-border-color: #283A5D; ---table-header-background-color: #283A5D; ---table-header-foreground-color: #C4CFE5; - -/* labels */ ---label-background-color: #354C7B; ---label-left-top-border-color: #4665A2; ---label-right-bottom-border-color: #283A5D; ---label-foreground-color: #CCCCCC; - -/** navigation bar/tree/menu */ ---nav-background-color: #101826; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_bd.png'); ---nav-gradient-hover-image: url('tab_hd.png'); ---nav-gradient-active-image: url('tab_ad.png'); ---nav-gradient-active-image-parent: url("../tab_ad.png"); ---nav-separator-image: url('tab_sd.png'); ---nav-breadcrumb-image: url('bc_sd.png'); ---nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-image: url('splitbard.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; ---nav-text-normal-shadow: 0px 1px 1px black; ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #B6C4DF; ---nav-menu-background-color: #05070C; ---nav-menu-foreground-color: #BBBBBB; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #334975; ---nav-arrow-selected-color: #90A5CE; - -/* table of contents */ ---toc-background-color: #151E30; ---toc-border-color: #202E4A; ---toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: black; ---search-foreground-color: #C5C5C5; ---search-magnification-image: url('mag_d.svg'); ---search-magnification-select-image: url('mag_seld.svg'); ---search-active-color: #C5C5C5; ---search-filter-background-color: #101826; ---search-filter-foreground-color: #90A5CE; ---search-filter-border-color: #7C95C6; ---search-filter-highlight-text-color: #BCC9E2; ---search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: #101826; ---search-results-foreground-color: #90A5CE; ---search-results-border-color: #7C95C6; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; - -/** code fragments */ ---code-keyword-color: #CC99CD; ---code-type-keyword-color: #AB99CD; ---code-flow-keyword-color: #E08000; ---code-comment-color: #717790; ---code-preprocessor-color: #65CABE; ---code-string-literal-color: #7EC699; ---code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; ---fragment-foreground-color: #C9D1D9; ---fragment-background-color: black; ---fragment-border-color: #30363D; ---fragment-lineno-border-color: #30363D; ---fragment-lineno-background-color: black; ---fragment-lineno-foreground-color: #6E7681; ---fragment-lineno-link-fg-color: #6E7681; ---fragment-lineno-link-bg-color: #303030; ---fragment-lineno-link-hover-fg-color: #8E96A1; ---fragment-lineno-link-hover-bg-color: #505050; ---tooltip-foreground-color: #C9D1D9; ---tooltip-background-color: #202020; ---tooltip-border-color: #C9D1D9; ---tooltip-doc-color: #D9E1E9; ---tooltip-declaration-color: #20C348; ---tooltip-link-color: #79C0FF; ---tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -}} -body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); -} - -body, table, div, p, dl { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 22px; -} - -/* @group Heading Levels */ - -.title { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 28px; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h1.groupheader { - font-size: 150%; -} - -h2.groupheader { - border-bottom: 1px solid var(--group-header-separator-color); - color: var(--group-header-color); - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px var(--glow-color); -} - -dt { - font-weight: bold; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.navtab { - padding-right: 15px; - text-align: right; - line-height: 110%; -} - -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL { - background-image: var(--nav-gradient-active-image); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: var(--index-separator-color); -} - -#main-menu a:focus { - outline: auto; - z-index: 10; - position: relative; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: var(--index-header-color); -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.even { - background-color: var(--index-even-item-bg-color); -} - -.classindex dl.odd { - background-color: var(--index-odd-item-bg-color); -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - -/* @group Link Styling */ - -a { - color: var(--page-link-color); - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: var(--page-visited-link-color); -} - -a:hover { - text-decoration: underline; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: var(--code-link-color); -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--code-external-link-color); -} - -a.code.hl_class { /* style for links to class names in code snippets */ } -a.code.hl_struct { /* style for links to struct names in code snippets */ } -a.code.hl_union { /* style for links to union names in code snippets */ } -a.code.hl_interface { /* style for links to interface names in code snippets */ } -a.code.hl_protocol { /* style for links to protocol names in code snippets */ } -a.code.hl_category { /* style for links to category names in code snippets */ } -a.code.hl_exception { /* style for links to exception names in code snippets */ } -a.code.hl_service { /* style for links to service names in code snippets */ } -a.code.hl_singleton { /* style for links to singleton names in code snippets */ } -a.code.hl_concept { /* style for links to concept names in code snippets */ } -a.code.hl_namespace { /* style for links to namespace names in code snippets */ } -a.code.hl_package { /* style for links to package names in code snippets */ } -a.code.hl_define { /* style for links to macro names in code snippets */ } -a.code.hl_function { /* style for links to function names in code snippets */ } -a.code.hl_variable { /* style for links to variable names in code snippets */ } -a.code.hl_typedef { /* style for links to typedef names in code snippets */ } -a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } -a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } -a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } -a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } -a.code.hl_friend { /* style for links to friend names in code snippets */ } -a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } -a.code.hl_property { /* style for links to property names in code snippets */ } -a.code.hl_event { /* style for links to event names in code snippets */ } -a.code.hl_sequence { /* style for links to sequence names in code snippets */ } -a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: visible; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; - list-style-type: none; -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: var(--font-family-monospace); - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); -} - -div.line { - font-family: var(--font-family-monospace); - font-size: 13px; - min-height: 13px; - line-height: 1.2; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: var(--glow-color); - box-shadow: 0 0 10px var(--glow-color); -} - -span.fold { - margin-left: 5px; - margin-right: 1px; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; - display: inline-block; - width: 12px; - height: 12px; - background-repeat:no-repeat; - background-position:center; -} - -span.lineno { - padding-right: 4px; - margin-right: 9px; - text-align: right; - border-right: 2px solid var(--fragment-lineno-border-color); - color: var(--fragment-lineno-foreground-color); - background-color: var(--fragment-lineno-background-color); - white-space: pre; -} -span.lineno a, span.lineno a:visited { - color: var(--fragment-lineno-link-fg-color); - background-color: var(--fragment-lineno-link-bg-color); -} - -span.lineno a:hover { - color: var(--fragment-lineno-link-hover-fg-color); - background-color: var(--fragment-lineno-link-hover-bg-color); -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - color: var(--page-foreground-color); - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -p.formulaDsp { - text-align: center; -} - -img.dark-mode-visible { - display: none; -} -img.light-mode-visible { - display: none; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; - width: var(--footer-logo-width); -} - -.compoundTemplParams { - color: var(--memdecl-template-color); - font-size: 80%; - line-height: 120%; -} - -/* @group Code Colorization */ - -span.keyword { - color: var(--code-keyword-color); -} - -span.keywordtype { - color: var(--code-type-keyword-color); -} - -span.keywordflow { - color: var(--code-flow-keyword-color); -} - -span.comment { - color: var(--code-comment-color); -} - -span.preprocessor { - color: var(--code-preprocessor-color); -} - -span.stringliteral { - color: var(--code-string-literal-color); -} - -span.charliteral { - color: var(--code-char-literal-color); -} - -span.xmlcdata { - color: var(--code-xml-cdata-color); -} - -span.vhdldigit { - color: var(--code-vhdl-digit-color); -} - -span.vhdlchar { - color: var(--code-vhdl-char-color); -} - -span.vhdlkeyword { - color: var(--code-vhdl-keyword-color); -} - -span.vhdllogic { - color: var(--code-vhdl-logic-color); -} - -blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid var(--table-cell-border-color); -} - -th.dirtab { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid var(--separator-color); -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: var(--glow-color); - box-shadow: 0 0 15px var(--glow-color); -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: var(--memdecl-background-color); - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: var(--memdecl-foreground-color); -} - -.memSeparator { - border-bottom: 1px solid var(--memdecl-separator-color); - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: var(--memdecl-template-color); - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: var(--memdef-title-gradient-image); - background-repeat: repeat-x; - background-color: var(--memdef-title-background-color); - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: var(--memdef-template-color); - font-weight: normal; - margin-left: 9px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px var(--glow-color); -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); - font-weight: bold; - text-shadow: var(--memdef-proto-text-shadow); - background-color: var(--memdef-proto-background-color); - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; -} - -.overload { - font-family: var(--font-family-monospace); - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 10px 2px 10px; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: var(--memdef-doc-background-color); - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: var(--memdef-param-name-color); - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); - text-shadow: none; - color: var(--label-foreground-color); - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid var(--directory-separator-color); - border-bottom: 1px solid var(--directory-separator-color); - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.odd { - padding-left: 6px; - background-color: var(--index-odd-item-bg-color); -} - -.directory tr.even { - padding-left: 6px; - background-color: var(--index-even-item-bg-color); -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: var(--page-link-color); -} - -.arrow { - color: var(--nav-arrow-color); - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: var(--font-family-icon); - line-height: normal; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-open-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-doc-image); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: var(--footer-foreground-color); -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); - border-spacing: 0px; - border-radius: 4px; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image: var(--memdef-title-gradient-image); - background-repeat:repeat-x; - background-color: var(--memdef-title-background-color); - font-size: 90%; - color: var(--memdef-proto-text-color); - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: var(--nav-gradient-image); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image: var(--nav-gradient-image); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:var(--nav-text-normal-color); - border:solid 1px var(--nav-breadcrumb-border-color); - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:var(--nav-breadcrumb-image); - background-repeat:no-repeat; - background-position:right; - color: var(--nav-foreground-color); -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: var(--nav-text-normal-color); - font-family: var(--font-family-nav); - text-shadow: var(--nav-text-normal-shadow); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color: var(--footer-foreground-color); - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image: var(--header-gradient-image); - background-repeat:repeat-x; - background-color: var(--header-background-color); - margin: 0px; - border-bottom: 1px solid var(--header-separator-color); -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectrow -{ - height: 56px; -} - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; - padding-left: 0.5em; -} - -#projectname -{ - font-size: 200%; - font-family: var(--font-family-title); - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font-size: 90%; - font-family: var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font-size: 50%; - font-family: 50% var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid var(--title-separator-color); - background-color: var(--title-background-color); -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:var(--citation-label-color); - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; -} - -dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); - color: var(--toc-header-color); - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 15px; -} - -div.toc li.level4 { - margin-left: 15px; -} - -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -span.obfuscator { - display: none; -} - -.inherit_header { - font-weight: bold; - color: var(--inherit-header-color); - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - /*white-space: nowrap;*/ - color: var(--tooltip-foreground-color); - background-color: var(--tooltip-background-color); - border: 1px solid var(--tooltip-border-color); - border-radius: 4px 4px 4px 4px; - box-shadow: var(--tooltip-shadow); - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: var(--tooltip-doc-color); - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip a { - color: var(--tooltip-link-color); -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: var(--tooltip-declaration-color); -} - -#powerTip div { - margin: 0px; - padding: 0px; - font-size: 12px; - font-family: var(--font-family-tooltip); - line-height: 16px; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { - border-top-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -tt, code, kbd, samp -{ - display: inline-block; -} -/* @end */ - -u { - text-decoration: underline; -} - -details>summary { - list-style-type: none; -} - -details > summary::-webkit-details-marker { - display: none; -} - -details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; -} - -details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; -} - -body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); -} - -::-webkit-scrollbar { - background-color: var(--scrollbar-background-color); - height: 12px; - width: 12px; -} -::-webkit-scrollbar-thumb { - border-radius: 6px; - box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); - border: solid 2px transparent; -} -::-webkit-scrollbar-corner { - background-color: var(--scrollbar-background-color); -} - diff --git a/barretenberg/cpp/html/doxygen.svg b/barretenberg/cpp/html/doxygen.svg deleted file mode 100644 index 79a76354078..00000000000 --- a/barretenberg/cpp/html/doxygen.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barretenberg/cpp/html/dynsections.js b/barretenberg/cpp/html/dynsections.js deleted file mode 100644 index b73c8288947..00000000000 --- a/barretenberg/cpp/html/dynsections.js +++ /dev/null @@ -1,192 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - var id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - var start = $(this).attr('data-start'); - var end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - var line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); -} - -/* @license-end */ diff --git a/barretenberg/cpp/html/folderclosed.svg b/barretenberg/cpp/html/folderclosed.svg deleted file mode 100644 index b04bed2e723..00000000000 --- a/barretenberg/cpp/html/folderclosed.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/barretenberg/cpp/html/folderclosedd.svg b/barretenberg/cpp/html/folderclosedd.svg deleted file mode 100644 index 52f0166a23e..00000000000 --- a/barretenberg/cpp/html/folderclosedd.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/barretenberg/cpp/html/folderopen.svg b/barretenberg/cpp/html/folderopen.svg deleted file mode 100644 index f6896dd254b..00000000000 --- a/barretenberg/cpp/html/folderopen.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/barretenberg/cpp/html/folderopend.svg b/barretenberg/cpp/html/folderopend.svg deleted file mode 100644 index 2d1f06e7bc6..00000000000 --- a/barretenberg/cpp/html/folderopend.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/barretenberg/cpp/html/graph_legend.dot b/barretenberg/cpp/html/graph_legend.dot deleted file mode 100644 index 97a6d6109d4..00000000000 --- a/barretenberg/cpp/html/graph_legend.dot +++ /dev/null @@ -1,24 +0,0 @@ -digraph "Graph Legend" -{ - // LATEX_PDF_SIZE - bgcolor="transparent"; - edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; - node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; - Node9 [id="Node000009",label="Inherited",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "]; - Node10 -> Node9 [dir="back",color="steelblue1",style="solid" tooltip=" "]; - Node10 [id="Node000010",label="PublicBase",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",tooltip=" "]; - Node11 -> Node10 [dir="back",color="steelblue1",style="solid" tooltip=" "]; - Node11 [id="Node000011",label="Truncated",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",tooltip=" "]; - Node13 -> Node9 [dir="back",color="darkgreen",style="solid" tooltip=" "]; - Node13 [label="ProtectedBase",color="gray40",fillcolor="white",style="filled" tooltip=" "]; - Node14 -> Node9 [dir="back",color="firebrick4",style="solid" tooltip=" "]; - Node14 [label="PrivateBase",color="gray40",fillcolor="white",style="filled" tooltip=" "]; - Node15 -> Node9 [dir="back",color="steelblue1",style="solid" tooltip=" "]; - Node15 [id="Node000015",label="Undocumented",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "]; - Node16 -> Node9 [dir="back",color="steelblue1",style="solid" tooltip=" "]; - Node16 [label="Templ\< int \>",color="gray40",fillcolor="white",style="filled" tooltip=" "]; - Node17 -> Node16 [dir="back",color="orange",style="dashed",label="< int >",fontcolor="grey" tooltip=" "]; - Node17 [label="Templ\< T \>",color="gray40",fillcolor="white",style="filled" tooltip=" "]; - Node18 -> Node9 [dir="back",color="darkorchid3",style="dashed",label="m_usedClass",fontcolor="grey" tooltip=" "]; - Node18 [label="Used",color="gray40",fillcolor="white",style="filled" tooltip=" "]; -} diff --git a/barretenberg/cpp/html/graph_legend.html b/barretenberg/cpp/html/graph_legend.html deleted file mode 100644 index ecc9d7bca1f..00000000000 --- a/barretenberg/cpp/html/graph_legend.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -My Project: Graph Legend - - - - - - - - - -
    -
    - - - - - - -
    -
    My Project -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Graph Legend
    -
    -
    -

    This page explains how to interpret the graphs that are generated by doxygen.

    -

    Consider the following example:

    /*! Invisible class because of truncation */
    -
    class Invisible { };
    -
    -
    /*! Truncated class, inheritance relation is hidden */
    -
    class Truncated : public Invisible { };
    -
    -
    /* Class not documented with doxygen comments */
    -
    class Undocumented { };
    -
    -
    /*! Class that is inherited using public inheritance */
    -
    class PublicBase : public Truncated { };
    -
    -
    /*! A template class */
    -
    template<class T> class Templ { };
    -
    -
    /*! Class that is inherited using protected inheritance */
    -
    class ProtectedBase { };
    -
    -
    /*! Class that is inherited using private inheritance */
    -
    class PrivateBase { };
    -
    -
    /*! Class that is used by the Inherited class */
    -
    class Used { };
    -
    -
    /*! Super class that inherits a number of other classes */
    -
    class Inherited : public PublicBase,
    -
    protected ProtectedBase,
    -
    private PrivateBase,
    -
    public Undocumented,
    -
    public Templ<int>
    -
    {
    -
    private:
    -
    Used *m_usedClass;
    -
    };
    -

    This will result in the following graph:

    -

    The boxes in the above graph have the following meaning:

    -
      -
    • -A filled gray box represents the struct or class for which the graph is generated.
    • -
    • -A box with a black border denotes a documented struct or class.
    • -
    • -A box with a gray border denotes an undocumented struct or class.
    • -
    • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
    • -
    -

    The arrows have the following meaning:

    -
      -
    • -A blue arrow is used to visualize a public inheritance relation between two classes.
    • -
    • -A dark green arrow is used for protected inheritance.
    • -
    • -A dark red arrow is used for private inheritance.
    • -
    • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
    • -
    • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    • -
    -
    - - - - diff --git a/barretenberg/cpp/html/index.html b/barretenberg/cpp/html/index.html deleted file mode 100644 index a6ec34d7d24..00000000000 --- a/barretenberg/cpp/html/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -My Project: Main Page - - - - - - - - - -
    -
    - - - - - - -
    -
    My Project -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    My Project Documentation
    -
    -
    -
    - - - - diff --git a/barretenberg/cpp/html/jquery.js b/barretenberg/cpp/html/jquery.js deleted file mode 100644 index 1dffb65b58c..00000000000 --- a/barretenberg/cpp/html/jquery.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/barretenberg/cpp/html/menu.js b/barretenberg/cpp/html/menu.js deleted file mode 100644 index b0b26936a0d..00000000000 --- a/barretenberg/cpp/html/menu.js +++ /dev/null @@ -1,136 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+='
      '; - for (var i in data.children) { - var url; - var link; - link = data.children[i].url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - } else { - url = relPath+link; - } - result+='
    • '+ - data.children[i].text+''+ - makeTree(data.children[i],relPath)+'
    • '; - } - result+='
    '; - } - return result; - } - var searchBoxHtml; - if (searchEnabled) { - if (serverSide) { - searchBoxHtml='
    '+ - '
    '+ - '
     '+ - ''+ - '
    '+ - '
    '+ - '
    '+ - '
    '; - } else { - searchBoxHtml='
    '+ - ''+ - ' '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
    '; - } - } - - $('#main-nav').before('
    '+ - ''+ - ''+ - '
    '); - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchBoxHtml) { - $('#main-menu').append('
  • '); - } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; - if ($mainMenuState.length) { - function initResizableIfExists() { - if (typeof initResizable==='function') initResizable(); - } - // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; - if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; - $menu.hide().slideDown(options); - } else { - options['complete'] = function() { $menu.css('display', 'none') }; - $menu.show().slideUp(options); - } - }); - // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBoxHtml); - $('#searchBoxPos2').hide(); - } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBoxHtml); - $('#searchBoxPos2').show(); - } - if (typeof searchBox!=='undefined') { - searchBox.CloseResultsWindow(); - } - prevWidth = newWidth; - } - } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/barretenberg/cpp/html/menudata.js b/barretenberg/cpp/html/menudata.js deleted file mode 100644 index d1ece13274a..00000000000 --- a/barretenberg/cpp/html/menudata.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}]} diff --git a/barretenberg/cpp/html/minus.svg b/barretenberg/cpp/html/minus.svg deleted file mode 100644 index f70d0c1a183..00000000000 --- a/barretenberg/cpp/html/minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/barretenberg/cpp/html/minusd.svg b/barretenberg/cpp/html/minusd.svg deleted file mode 100644 index 5f8e879628d..00000000000 --- a/barretenberg/cpp/html/minusd.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/barretenberg/cpp/html/nav_f.png b/barretenberg/cpp/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/barretenberg/cpp/html/nav_fd.png b/barretenberg/cpp/html/nav_fd.png deleted file mode 100644 index 032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S diff --git a/barretenberg/cpp/html/nav_g.png b/barretenberg/cpp/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} diff --git a/barretenberg/cpp/html/open.png b/barretenberg/cpp/html/open.png deleted file mode 100644 index 30f75c7efe2dd0c9e956e35b69777a02751f048b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - - - diff --git a/barretenberg/cpp/html/plusd.svg b/barretenberg/cpp/html/plusd.svg deleted file mode 100644 index 0c65bfe946d..00000000000 --- a/barretenberg/cpp/html/plusd.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/barretenberg/cpp/html/search/close.svg b/barretenberg/cpp/html/search/close.svg deleted file mode 100644 index 337d6cc1329..00000000000 --- a/barretenberg/cpp/html/search/close.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/barretenberg/cpp/html/search/mag.svg b/barretenberg/cpp/html/search/mag.svg deleted file mode 100644 index ffb6cf0d025..00000000000 --- a/barretenberg/cpp/html/search/mag.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/barretenberg/cpp/html/search/mag_d.svg b/barretenberg/cpp/html/search/mag_d.svg deleted file mode 100644 index 4122773f92c..00000000000 --- a/barretenberg/cpp/html/search/mag_d.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/barretenberg/cpp/html/search/mag_sel.svg b/barretenberg/cpp/html/search/mag_sel.svg deleted file mode 100644 index 553dba87732..00000000000 --- a/barretenberg/cpp/html/search/mag_sel.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/barretenberg/cpp/html/search/mag_seld.svg b/barretenberg/cpp/html/search/mag_seld.svg deleted file mode 100644 index c906f84c83a..00000000000 --- a/barretenberg/cpp/html/search/mag_seld.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/barretenberg/cpp/html/search/search.css b/barretenberg/cpp/html/search/search.css deleted file mode 100644 index 19f76f9d5b9..00000000000 --- a/barretenberg/cpp/html/search/search.css +++ /dev/null @@ -1,291 +0,0 @@ -/*---------------- Search Box positioning */ - -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - -/*---------------- Search box styling */ - -.SRPage * { - font-weight: normal; - line-height: normal; -} - -dark-mode-toggle { - margin-left: 5px; - display: flex; - float: right; -} - -#MSearchBox { - display: inline-block; - white-space : nowrap; - background: var(--search-background-color); - border-radius: 0.65em; - box-shadow: var(--search-box-shadow); - z-index: 102; -} - -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; -} - -#MSearchSelect { - display: inline-block; - vertical-align: middle; - width: 20px; - height: 19px; - background-image: var(--search-magnification-select-image); - margin: 0 0 0 0.3em; - padding: 0; -} - -#MSearchSelectExt { - display: inline-block; - vertical-align: middle; - width: 10px; - height: 19px; - background-image: var(--search-magnification-image); - margin: 0 0 0 0.5em; - padding: 0; -} - - -#MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 19px; - margin: 0 0.15em; - padding: 0; - line-height: 1em; - border:none; - color: var(--search-foreground-color); - outline: none; - font-family: var(--font-family-search); - -webkit-border-radius: 0px; - border-radius: 0px; - background: none; -} - -@media(hover: none) { - /* to avoid zooming on iOS */ - #MSearchField { - font-size: 16px; - } -} - -#MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; -} - -#MSearchClose { - display: none; - font-size: inherit; - background : none; - border: none; - margin: 0; - padding: 0; - outline: none; - -} - -#MSearchCloseImg { - padding: 0.3em; - margin: 0; -} - -.MSearchBoxActive #MSearchField { - color: var(--search-active-color); -} - - - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt var(--font-family-search); - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: var(--font-family-monospace); - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: var(--search-filter-foreground-color); - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: var(--search-filter-foreground-color); - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - /*width: 60ex;*/ - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); - z-index:10000; - width: 300px; - height: 400px; - overflow: auto; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -div.SRPage { - margin: 5px 2px; - background-color: var(--search-results-background-color); -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - font-size: 8pt; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; - font-family: var(--font-family-search); -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; - font-family: var(--font-family-search); -} - -.SRResult { - display: none; -} - -div.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/barretenberg/cpp/html/search/search.js b/barretenberg/cpp/html/search/search.js deleted file mode 100644 index 6fd40c67701..00000000000 --- a/barretenberg/cpp/html/search/search.js +++ /dev/null @@ -1,840 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - e.stopPropagation(); - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var jsFile; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; - } - - var loadJS = function(url, impl, loc){ - var scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = impl; - scriptTag.onreadystatechange = impl; - loc.appendChild(scriptTag); - } - - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - var domSearchBox = this.DOMSearchBox(); - var domPopupSearchResults = this.DOMPopupSearchResults(); - var domSearchClose = this.DOMSearchClose(); - var resultsPath = this.resultsPath; - - var handleResults = function() { - document.getElementById("Loading").style.display="none"; - if (typeof searchData !== 'undefined') { - createResults(resultsPath); - document.getElementById("NoMatches").style.display="none"; - } - - if (idx!=-1) { - searchResults.Search(searchValue); - } else { // no file with search results => force empty search results - searchResults.Search('===='); - } - - if (domPopupSearchResultsWindow.style.display!='block') - { - domSearchClose.style.display = 'inline-block'; - var left = getXPos(domSearchBox) + 150; - var top = getYPos(domSearchBox) + 20; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var maxHeight = document.body.clientHeight; - var width = 300; - if (left<10) left=10; - if (width+left+8>maxWidth) width=maxWidth-left-8; - var height = 400; - if (height+top+8>maxHeight) height=maxHeight-top-8; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResultsWindow.style.height = height + 'px'; - } - } - - if (jsFile) { - loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); - } else { - handleResults(); - } - - this.lastSearchValue = searchValue; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - this.searchActive = true; - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - this.DOMSearchField().value = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults(resultsPath) -{ - var results = document.getElementById("SRResults"); - results.innerHTML = ''; - for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/barretenberg/cpp/html/splitbard.png b/barretenberg/cpp/html/splitbard.png deleted file mode 100644 index 8367416d757fd7b6dc4272b6432dc75a75abd068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? diff --git a/barretenberg/cpp/html/sync_off.png b/barretenberg/cpp/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/barretenberg/cpp/html/sync_on.png b/barretenberg/cpp/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/barretenberg/cpp/html/tab_a.png b/barretenberg/cpp/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/barretenberg/cpp/html/tab_ad.png b/barretenberg/cpp/html/tab_ad.png deleted file mode 100644 index e34850acfc24be58da6d2fd1ccc6b29cc84fe34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( diff --git a/barretenberg/cpp/html/tab_s.png b/barretenberg/cpp/html/tab_s.png deleted file mode 100644 index ab478c95b67371d700a20869f7de1ddd73522d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/barretenberg/cpp/html/tab_sd.png b/barretenberg/cpp/html/tab_sd.png deleted file mode 100644 index 757a565ced4730f85c833fb2547d8e199ae68f19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% diff --git a/barretenberg/cpp/html/tabs.css b/barretenberg/cpp/html/tabs.css deleted file mode 100644 index df7944b79b6..00000000000 --- a/barretenberg/cpp/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/barretenberg/cpp/latex/Makefile b/barretenberg/cpp/latex/Makefile deleted file mode 100644 index 7f82972108f..00000000000 --- a/barretenberg/cpp/latex/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -LATEX_CMD?=pdflatex -MKIDX_CMD?=makeindex -BIBTEX_CMD?=bibtex -LATEX_COUNT?=8 -MANUAL_FILE?=refman - -all: $(MANUAL_FILE).pdf - -pdf: $(MANUAL_FILE).pdf - -$(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex - $(LATEX_CMD) $(MANUAL_FILE) - $(MKIDX_CMD) $(MANUAL_FILE).idx - $(LATEX_CMD) $(MANUAL_FILE) - latex_count=$(LATEX_COUNT) ; \ - while grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - $(LATEX_CMD) $(MANUAL_FILE) ;\ - latex_count=`expr $$latex_count - 1` ;\ - done - $(MKIDX_CMD) $(MANUAL_FILE).idx - $(LATEX_CMD) $(MANUAL_FILE) - - -clean: - rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf diff --git a/barretenberg/cpp/latex/doxygen.sty b/barretenberg/cpp/latex/doxygen.sty deleted file mode 100644 index 4bfc17fa9d0..00000000000 --- a/barretenberg/cpp/latex/doxygen.sty +++ /dev/null @@ -1,694 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} - -% Packages used by this style file -\RequirePackage{alltt} -%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package -\RequirePackage{calc} -\RequirePackage{float} -%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package -\RequirePackage{verbatim} -\RequirePackage[table]{xcolor} -\RequirePackage{longtable_doxygen} -\RequirePackage{tabu_doxygen} -\RequirePackage{fancyvrb} -\RequirePackage{tabularx} -\RequirePackage{multicol} -\RequirePackage{multirow} -\RequirePackage{hanging} -\RequirePackage{ifpdf} -\RequirePackage{adjustbox} -\RequirePackage{amssymb} -\RequirePackage{stackengine} -\RequirePackage{enumitem} -\RequirePackage{alphalph} -\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis - -%---------- Internal commands used in this style file ---------------- - -\newcommand{\ensurespace}[1]{% - \begingroup% - \setlength{\dimen@}{#1}% - \vskip\z@\@plus\dimen@% - \penalty -100\vskip\z@\@plus -\dimen@% - \vskip\dimen@% - \penalty 9999% - \vskip -\dimen@% - \vskip\z@skip% hide the previous |\vskip| from |\addvspace| - \endgroup% -} - -\newcommand{\DoxyHorRuler}[1]{% - \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{#1=0}% - {% - \hrule% - }% - {% - \hrulefilll% - }% -} -\newcommand{\DoxyLabelFont}{} -\newcommand{\entrylabel}[1]{% - {% - \parbox[b]{\labelwidth-4pt}{% - \makebox[0pt][l]{\DoxyLabelFont#1}% - \vspace{1.5\baselineskip}% - }% - }% -} - -\newenvironment{DoxyDesc}[1]{% - \ensurespace{4\baselineskip}% - \begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - %\setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -\newsavebox{\xrefbox} -\newlength{\xreflength} -\newcommand{\xreflabel}[1]{% - \sbox{\xrefbox}{#1}% - \setlength{\xreflength}{\wd\xrefbox}% - \ifthenelse{\xreflength>\labelwidth}{% - \begin{minipage}{\textwidth}% - \setlength{\parindent}{0pt}% - \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% - \end{minipage}% - }{% - \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% - }% -} - -%---------- Commands used by doxygen LaTeX output generator ---------- - -% Used by
     ... 
    -\newenvironment{DoxyPre}{% - \small% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} -% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. -\newlength{\CodeWidthChar} -\newlength{\CodeHeightChar} -\settowidth{\CodeWidthChar}{?} -\settoheight{\CodeHeightChar}{?} -% Necessary for hanging indent -\newlength{\DoxyCodeWidth} - -\newcommand\DoxyCodeLine[1]{ - \ifthenelse{\equal{\detokenize{#1}}{}} - { - \vspace*{\baselineskip} - } - { - \hangpara{\DoxyCodeWidth}{1}{#1}\par - } -} - -\newcommand\NiceSpace{% - \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% -} - -% Used by @code ... @endcode -\newenvironment{DoxyCode}[1]{% - \par% - \scriptsize% - \normalfont\ttfamily% - \rightskip0pt plus 1fil% - \settowidth{\DoxyCodeWidth}{000000}% - \settowidth{\CodeWidthChar}{?}% - \settoheight{\CodeHeightChar}{?}% - \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{\equal{#1}{0}} - { - {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% - } - { - {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% - } - -}{% - \normalfont% - \normalsize% - \settowidth{\CodeWidthChar}{?}% - \settoheight{\CodeHeightChar}{?}% -} - -% Redefining not defined characters, i.e. "Replacement Character" in tex output. -\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% - \textcolor{white}{\sffamily\bfseries\small ?}}{% - \rotatebox{45}{$\blacksquare$}}}} - -% Used by @example, @include, @includelineno and @dontinclude -\newenvironment{DoxyCodeInclude}[1]{% - \DoxyCode{#1}% -}{% - \endDoxyCode% -} - -% Used by @verbatim ... @endverbatim -\newenvironment{DoxyVerb}{% - \par% - \footnotesize% - \verbatim% -}{% - \endverbatim% - \normalsize% -} - -% Used by @verbinclude -\newenvironment{DoxyVerbInclude}{% - \DoxyVerb% -}{% - \endDoxyVerb% -} - -% Used by numbered lists (using '-#' or
      ...
    ) -\setlistdepth{12} -\newlist{DoxyEnumerate}{enumerate}{12} -\setlist[DoxyEnumerate,1]{label=\arabic*.} -\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)} -\setlist[DoxyEnumerate,3]{label=\roman*.} -\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.} -\setlist[DoxyEnumerate,5]{label=\arabic*.} -\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)} -\setlist[DoxyEnumerate,7]{label=\roman*.} -\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.} -\setlist[DoxyEnumerate,9]{label=\arabic*.} -\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)} -\setlist[DoxyEnumerate,11]{label=\roman*.} -\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.} - -% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) -\setlistdepth{12} -\newlist{DoxyItemize}{itemize}{12} -\setlist[DoxyItemize]{label=\textperiodcentered} - -\setlist[DoxyItemize,1]{label=\textbullet} -\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash} -\setlist[DoxyItemize,3]{label=\textasteriskcentered} -\setlist[DoxyItemize,4]{label=\textperiodcentered} - -% Used by description lists (using
    ...
    ) -\newenvironment{DoxyDescription}{% - \description% -}{% - \enddescription% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if caption is specified) -\newenvironment{DoxyImage}{% - \begin{figure}[H]% - \centering% -}{% - \end{figure}% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if no caption is specified) -\newenvironment{DoxyImageNoCaption}{% - \begin{center}% -}{% - \end{center}% -} - -% Used by @image -% (only if inline is specified) -\newenvironment{DoxyInlineImage}{% -}{% -} - -% Used by @attention -\newenvironment{DoxyAttention}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @author and @authors -\newenvironment{DoxyAuthor}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @date -\newenvironment{DoxyDate}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @invariant -\newenvironment{DoxyInvariant}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @note -\newenvironment{DoxyNote}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @post -\newenvironment{DoxyPostcond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @pre -\newenvironment{DoxyPrecond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @copyright -\newenvironment{DoxyCopyright}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @remark -\newenvironment{DoxyRemark}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @return and @returns -\newenvironment{DoxyReturn}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @since -\newenvironment{DoxySince}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @see -\newenvironment{DoxySeeAlso}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @version -\newenvironment{DoxyVersion}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @warning -\newenvironment{DoxyWarning}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @par and @paragraph -\newenvironment{DoxyParagraph}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by parameter lists -\newenvironment{DoxyParams}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description - {\ifthenelse{\equal{#1}{1}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc - } - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for fields of simple structs -\newenvironment{DoxyFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for fields simple class style enums -\newenvironment{DoxyEnumFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for parameters within a detailed function description -\newenvironment{DoxyParamCaption}{% - \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% -}{% -} - -% Used by return value lists -\newenvironment{DoxyRetVals}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used by exception lists -\newenvironment{DoxyExceptions}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used by template parameter lists -\newenvironment{DoxyTemplParams}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for member lists -\newenvironment{DoxyCompactItemize}{% - \begin{itemize}% - \setlength{\itemsep}{-3pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \setlength{\partopsep}{0pt}% -}{% - \end{itemize}% -} - -% Used for member descriptions -\newenvironment{DoxyCompactList}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - \setlength{\itemsep}{0pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \renewcommand{\makelabel}{\hfill}% - }% -}{% - \end{list}% -} - -% Used for reference lists (@bug, @deprecated, @todo, etc.) -\newenvironment{DoxyRefList}{% - \begin{list}{}{% - \setlength{\labelwidth}{10pt}% - \setlength{\leftmargin}{\labelwidth}% - \addtolength{\leftmargin}{\labelsep}% - \renewcommand{\makelabel}{\xreflabel}% - }% -}{% - \end{list}% -} - -% Used by @bug, @deprecated, @todo, etc. -\newenvironment{DoxyRefDesc}[1]{% - \begin{list}{}{% - \renewcommand\makelabel[1]{\textbf{##1}}% - \settowidth\labelwidth{\makelabel{#1}}% - \setlength\leftmargin{\labelwidth+\labelsep}% - }% -}{% - \end{list}% -} - -% Used by parameter lists and simple sections -\newenvironment{Desc} -{\begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - } -}{% - \end{list}% -} - -% Used by tables -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% -\newenvironment{TabularC}[1]% -{\tabulinesep=1mm -\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% -{\end{longtabu*}\par}% - -\newenvironment{TabularNC}[1]% -{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% -{\end{tabu}\par}% - -% Used for member group headers -\newenvironment{Indent}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - }% - \item[]\ignorespaces% -}{% - \unskip% - \end{list}% -} - -% Used when hyperlinks are turned on -\newcommand{\doxylink}[2]{% - \mbox{\hyperlink{#1}{#2}}% -} - -% Used when hyperlinks are turned on -% Third argument is the SectionType, see the doxygen internal -% documentation for the values (relevant: Page ... Subsubsection). -\newcommand{\doxysectlink}[3]{% - \mbox{\hyperlink{#1}{#2}}% -} -% Used when hyperlinks are turned off -\newcommand{\doxyref}[3]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used when hyperlinks are turned off -% Fourth argument is the SectionType, see the doxygen internal -% documentation for the values (relevant: Page ... Subsubsection). -\newcommand{\doxysectref}[4]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used to link to a table when hyperlinks are turned on -\newcommand{\doxytablelink}[2]{% - \ref{#1}% -} - -% Used to link to a table when hyperlinks are turned off -\newcommand{\doxytableref}[3]{% - \ref{#3}% -} - -% Used by @addindex -\newcommand{\lcurly}{\{} -\newcommand{\rcurly}{\}} - -% Colors used for syntax highlighting -\definecolor{comment}{rgb}{0.5,0.0,0.0} -\definecolor{keyword}{rgb}{0.0,0.5,0.0} -\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} -\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} -\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} -\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} -\definecolor{charliteral}{rgb}{0.0,0.5,0.5} -\definecolor{xmlcdata}{rgb}{0.0,0.0,0.0} -\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} -\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} -\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} -\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} - -% Color used for table heading -\newcommand{\tableheadbgcolor}{lightgray}% - -% Version of hypertarget with correct landing location -\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} - -% possibility to have sections etc. be within the margins -% unfortunately had to copy part of book.cls and add \raggedright -\makeatletter -\newcounter{subsubsubsection}[subsubsection] -\newcounter{subsubsubsubsection}[subsubsubsection] -\newcounter{subsubsubsubsubsection}[subsubsubsubsection] -\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection] -\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}} -\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}} -\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}} -\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}} -\newcommand{\subsubsubsectionmark}[1]{} -\newcommand{\subsubsubsubsectionmark}[1]{} -\newcommand{\subsubsubsubsubsectionmark}[1]{} -\newcommand{\subsubsubsubsubsubsectionmark}[1]{} -\def\toclevel@subsubsubsection{4} -\def\toclevel@subsubsubsubsection{5} -\def\toclevel@subsubsubsubsubsection{6} -\def\toclevel@subsubsubsubsubsubsection{7} -\def\toclevel@paragraph{8} -\def\toclevel@subparagraph{9} - -\newcommand\doxysection{\@startsection {section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\raggedright\normalfont\Large\bfseries}} -\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\large\bfseries}} -\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} - -\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}} -\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}} -\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}} -\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}} -\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}} -\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}} -\makeatother -% the sectsty doesn't look to be maintained but gives, in our case, some warning like: -% LaTeX Warning: Command \underline has changed. -% Check if current package is valid. -% unfortunately had to copy the relevant part -\newcommand*{\doxypartfont} [1] - {\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1} - \gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}} -\newcommand*{\doxychapterfont} [1] - {\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1} - \gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}} -\newcommand*{\doxysectionfont} [1] - {\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxysubsectionfont} [1] - {\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxysubsubsectionfont} [1] - {\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxyparagraphfont} [1] - {\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxysubparagraphfont} [1] - {\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxyminisecfont} [1] - {\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}} -\newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}% - \doxychapterfont{#1}% - \doxysectionfont{#1}% - \doxysubsectionfont{#1}% - \doxysubsubsectionfont{#1}% - \doxyparagraphfont{#1}% - \doxysubparagraphfont{#1}% - \doxyminisecfont{#1}}% -% Define caption that is also suitable in a table -\makeatletter -\def\doxyfigcaption{% -\H@refstepcounter{figure}% -\@dblarg{\@caption{figure}}} -\makeatother - -% Define alpha enumarative names for counters > 26 -\makeatletter -\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname} -\def\@enumalphalphcnt#1{\alphalph{#1}} -\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname} -\def\@enumAlphAlphcnt#1{\AlphAlph{#1}} -\makeatother -\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa} -\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA} diff --git a/barretenberg/cpp/latex/etoc_doxygen.sty b/barretenberg/cpp/latex/etoc_doxygen.sty deleted file mode 100644 index 5f7e1274609..00000000000 --- a/barretenberg/cpp/latex/etoc_doxygen.sty +++ /dev/null @@ -1,2178 +0,0 @@ -%% -%% This is file etoc_doxygen.sty -%% -%% Apart from this header notice and the renaming from etoc to -%% etoc_doxygen (also in \ProvidesPackage) it is an identical -%% copy of -%% -%% etoc.sty -%% -%% at version 1.2b of 2023/07/01. -%% -%% This file has been provided to Doxygen team courtesy of the -%% author for benefit of users having a LaTeX installation not -%% yet providing version 1.2a or later of etoc, whose -%% deeplevels feature is required. -%% -%% The original source etoc.dtx (only of the latest version at -%% any given time) is available at -%% -%% https://ctan.org/pkg/etoc -%% -%% and contains the terms for copying and modification as well -%% as author contact information. -%% -%% In brief any modified versions of this file must be renamed -%% with new filenames distinct from etoc.sty. -%% -%% Package: etoc -%% Version: 1.2b -%% License: LPPL 1.3c -%% Copyright (C) 2012-2023 Jean-Francois B. -\NeedsTeXFormat{LaTeX2e}[2003/12/01] -\ProvidesPackage{etoc_doxygen}[2023/07/01 v1.2b Completely customisable TOCs (JFB)] -\newif\ifEtoc@oldLaTeX -\@ifl@t@r\fmtversion{2020/10/01} - {} - {\Etoc@oldLaTeXtrue - \PackageInfo{etoc}{Old LaTeX (\fmtversion) detected!\MessageBreak - Since 1.1a (2023/01/14), etoc prefers LaTeX at least\MessageBreak - as recent as 2020-10-01, for reasons of the .toc file,\MessageBreak - and used to require it (from 1.1a to 1.2).\MessageBreak - This etoc (1.2b) does not *require* it, but has not been\MessageBreak - tested thoroughly on old LaTeX (especially if document\MessageBreak - does not use hyperref) and retrofitting was done only\MessageBreak - on basis of author partial remembrances of old context.\MessageBreak - Reported}} -\RequirePackage{kvoptions} -\SetupKeyvalOptions{prefix=Etoc@} -\newif\ifEtoc@lof -\DeclareVoidOption{lof}{\Etoc@loftrue - \PackageInfo{etoc}{Experimental support for \string\locallistoffigures.\MessageBreak - Barely tested, use at own risk}% -} -\newif\ifEtoc@lot -\DeclareVoidOption{lot}{\Etoc@lottrue - \PackageInfo{etoc}{Experimental support for \string\locallistoftables.\MessageBreak - Barely tested, use at own risk}% -} -\@ifclassloaded{memoir}{ -\PackageInfo{etoc} - {As this is with memoir class, all `...totoc' options\MessageBreak - are set true by default. Reported} -\DeclareBoolOption[true]{maintoctotoc} -\DeclareBoolOption[true]{localtoctotoc} -\DeclareBoolOption[true]{localloftotoc} -\DeclareBoolOption[true]{locallottotoc} -}{ -\DeclareBoolOption[false]{maintoctotoc} -\DeclareBoolOption[false]{localtoctotoc} -\DeclareBoolOption[false]{localloftotoc} -\DeclareBoolOption[false]{locallottotoc} -} -\DeclareBoolOption[true]{ouroboros} -\DeclareBoolOption[false]{deeplevels} -\DeclareDefaultOption{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} -\ProcessKeyvalOptions* -\DisableKeyvalOption[action=error,package=etoc]{etoc}{lof} -\DisableKeyvalOption[action=error,package=etoc]{etoc}{lot} -\DisableKeyvalOption[action=error,package=etoc]{etoc}{deeplevels} -\def\etocsetup#1{\setkeys{etoc}{#1}} -\def\etocifmaintoctotoc{\ifEtoc@maintoctotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\def\etociflocaltoctotoc{\ifEtoc@localtoctotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\def\etociflocalloftotoc{\ifEtoc@localloftotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\def\etociflocallottotoc{\ifEtoc@locallottotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\RequirePackage{multicol} -\def\etoc@{\etoc@} -\long\def\Etoc@gobtoetoc@ #1\etoc@{} -\newtoks\Etoc@toctoks -\def\Etoc@par{\par} -\def\etocinline{\def\Etoc@par{}} -\let\etocnopar\etocinline -\def\etocdisplay{\def\Etoc@par{\par}} -\let\Etoc@global\@empty -\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global} -\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty} -\newif\ifEtoc@numbered -\newif\ifEtoc@hyperref -\newif\ifEtoc@parskip -\newif\ifEtoc@tocwithid -\newif\ifEtoc@standardlines -\newif\ifEtoc@etocstyle -\newif\ifEtoc@classstyle -\newif\ifEtoc@keeporiginaltoc -\newif\ifEtoc@skipprefix -\newif\ifEtoc@isfirst -\newif\ifEtoc@localtoc -\newif\ifEtoc@skipthisone -\newif\ifEtoc@stoptoc -\newif\ifEtoc@notactive -\newif\ifEtoc@mustclosegroup -\newif\ifEtoc@isemptytoc -\newif\ifEtoc@checksemptiness -\def\etocchecksemptiness {\Etoc@checksemptinesstrue } -\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse } -\newif\ifEtoc@notocifnotoc -\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue } -\newcounter{etoc@tocid} -\def\Etoc@tocext{toc} -\def\Etoc@lofext{lof} -\def\Etoc@lotext{lot} -\let\Etoc@currext\Etoc@tocext -\def\etocifislocal{\ifEtoc@localtoc\expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi - } -\def\etocifislocaltoc{\etocifislocal{\ifx\Etoc@currext\Etoc@tocext - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% - {\@secondoftwo}% - } -\def\etocifislocallof{\etocifislocal{\ifx\Etoc@currext\Etoc@lofext - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% - {\@secondoftwo}% - } -\def\etocifislocallot{\etocifislocal{\ifx\Etoc@currext\Etoc@lotext - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% - {\@secondoftwo}% - } -\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@} -\expandafter\def\csname Etoc@-2@@\endcsname {-\tw@} -\expandafter\let\csname Etoc@-1@@\endcsname \m@ne -\expandafter\let\csname Etoc@0@@\endcsname \z@ -\expandafter\let\csname Etoc@1@@\endcsname \@ne -\expandafter\let\csname Etoc@2@@\endcsname \tw@ -\expandafter\let\csname Etoc@3@@\endcsname \thr@@ -\expandafter\chardef\csname Etoc@4@@\endcsname 4 -\expandafter\chardef\csname Etoc@5@@\endcsname 5 -\expandafter\chardef\csname Etoc@6@@\endcsname 6 -\ifEtoc@deeplevels - \expandafter\chardef\csname Etoc@7@@\endcsname 7 - \expandafter\chardef\csname Etoc@8@@\endcsname 8 - \expandafter\chardef\csname Etoc@9@@\endcsname 9 - \expandafter\chardef\csname Etoc@10@@\endcsname 10 - \expandafter\chardef\csname Etoc@11@@\endcsname 11 - \expandafter\chardef\csname Etoc@12@@\endcsname 12 -\fi -\expandafter\let\expandafter\Etoc@maxlevel - \csname Etoc@\ifEtoc@deeplevels12\else6\fi @@\endcsname -\edef\etocthemaxlevel{\number\Etoc@maxlevel} -\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}} -\let\Etoc@none@@ \Etoc@minf -\expandafter\let\expandafter\Etoc@all@@ - \csname Etoc@\ifEtoc@deeplevels11\else5\fi @@\endcsname -\let\Etoc@dolevels\@empty -\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@dolevels\expandafter - {\Etoc@dolevels\Etoc@do{#1}}} -\ifdefined\expanded - \def\etocsetlevel#1#2{\expanded{\noexpand\etoc@setlevel{#1}{#2}}}% -\else - \def\etocsetlevel#1#2{{\edef\Etoc@tmp{\noexpand\etoc@setlevel{#1}{#2}}\expandafter}\Etoc@tmp}% -\fi -\def\etoc@setlevel#1#2{% - \edef\Etoc@tmp{\the\numexpr#2}% - \if1\ifnum\Etoc@tmp>\Etoc@maxlevel0\fi\unless\ifnum\Etoc@minf<\Etoc@tmp;\fi1% - \ifEtoc@deeplevels - \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,% - .7,.8,.9,.10,.11,.12,}% - \else - \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,}% - \fi - \ifin@\else\if\@car#1\@nil @\in@true\fi\fi - \ifin@ - \PackageWarning{etoc} - {Sorry, but `#1' is forbidden as level name.\MessageBreak - \if\@car#1\@nil @% - (because of the @ as first character)\MessageBreak\fi - Reported}% - \else - \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}% - \expandafter\let\csname Etoc@#1@@\expandafter\endcsname - \csname Etoc@\Etoc@tmp @@\endcsname - \expandafter\edef\csname Etoc@@#1@@\endcsname - {\expandafter\noexpand\csname Etoc@#1@@\endcsname}% - \expandafter\edef\csname toclevel@@#1\endcsname - {\expandafter\noexpand\csname toclevel@#1\endcsname}% - \fi - \else - \PackageWarning{etoc} - {Argument `\detokenize{#2}' of \string\etocsetlevel\space should - represent one of\MessageBreak - \ifnum\Etoc@minf=-\thr@@-2, \fi-1, 0, 1, 2, \ifEtoc@deeplevels ...\else3, 4\fi, - \the\numexpr\Etoc@maxlevel-1, or \number\Etoc@maxlevel\space - but evaluates to \Etoc@tmp.\MessageBreak - The level of `#1' will be set to \number\Etoc@maxlevel.\MessageBreak - Tables of contents will ignore `#1' as long\MessageBreak - as its level is \number\Etoc@maxlevel\space (=\string\etocthemaxlevel).% - \MessageBreak - Reported}% - \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}% - \expandafter\let\csname Etoc@#1@@\endcsname\Etoc@maxlevel - \fi -} -\def\etoclevel#1{\csname Etoc@#1@@\endcsname} -\def\etocthelevel#1{\number\csname Etoc@#1@@\endcsname} -\def\etocifunknownlevelTF#1{\@ifundefined{Etoc@#1@@}} -\@ifclassloaded{memoir}{\etocsetlevel{book}{-2}}{} -\etocsetlevel{part}{-1} -\etocsetlevel{chapter}{0} -\etocsetlevel{section}{1} -\etocsetlevel{subsection}{2} -\etocsetlevel{subsubsection}{3} -\etocsetlevel{paragraph}{4} -\etocsetlevel{subparagraph}{5} -\ifdefined\c@chapter - \etocsetlevel{appendix}{0} -\else - \etocsetlevel{appendix}{1} -\fi -\def\Etoc@do#1{\@namedef{l@@#1}{\csname l@#1\endcsname}} -\Etoc@dolevels -\let\Etoc@figure@@\Etoc@maxlevel -\let\Etoc@table@@ \Etoc@maxlevel -\let\Etoc@gobblethreeorfour\@gobblefour -\ifdefined\@gobblethree - \let\Etoc@gobblethree\@gobblethree -\else - \long\def\Etoc@gobblethree#1#2#3{}% -\fi -\AtBeginDocument{% -\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}% -\@ifpackageloaded{hyperref} - {\Etoc@hyperreftrue} - {\ifEtoc@oldLaTeX - \let\Etoc@gobblethreeorfour\Etoc@gobblethree - \let\Etoc@etoccontentsline@fourargs\Etoc@etoccontentsline@ - \long\def\Etoc@etoccontentsline@#1#2#3{% - \Etoc@etoccontentsline@fourargs{#1}{#2}{#3}{}% - }% - \fi - }% -} -\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue } -\def\Etoc@updatestackofends#1\etoc@{\gdef\Etoc@stackofends{#1}} -\def\Etoc@stackofends{{-3}{}} -\def\Etoc@doendsandbegin{% - \expandafter\Etoc@traversestackofends\Etoc@stackofends\etoc@ -} -\def\Etoc@traversestackofends#1{% - \ifnum#1>\Etoc@level - \csname Etoc@end@#1\endcsname - \expandafter\Etoc@traversestackofends - \else - \Etoc@traversestackofends@done{#1}% - \fi -} -\def\Etoc@traversestackofends@done#1#2{#2% - \ifnum#1<\Etoc@level - \csname Etoc@begin@\the\numexpr\Etoc@level\endcsname - \Etoc@global\Etoc@isfirsttrue - \edef\Etoc@tmp{{\the\numexpr\Etoc@level}}% - \else - \Etoc@global\Etoc@isfirstfalse - \let\Etoc@tmp\@empty - \fi - \expandafter\Etoc@updatestackofends\Etoc@tmp{#1}% -} -\def\Etoc@etoccontentsline #1{% - \let\Etoc@next\Etoc@gobblethreeorfour - \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel - \else - \Etoc@skipthisonefalse - \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname - \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi - \ifEtoc@localtoc - \ifEtoc@stoptoc - \Etoc@skipthisonetrue - \else - \ifEtoc@notactive - \Etoc@skipthisonetrue - \else - \unless\ifnum\Etoc@level>\etoclocaltop - \Etoc@skipthisonetrue - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \fi - \ifEtoc@skipthisone - \else - \unless\ifnum\Etoc@level>\c@tocdepth - \ifEtoc@standardlines - \let\Etoc@next\Etoc@savedcontentsline - \else - \let\Etoc@next\Etoc@etoccontentsline@ - \fi - \fi - \fi - \fi - \Etoc@next{#1}% -} -\def\Etoc@etoccontentsline@ #1#2#3#4{% - \Etoc@doendsandbegin - \Etoc@global\edef\Etoc@prefix {\expandafter\noexpand - \csname Etoc@prefix@\the\numexpr\Etoc@level\endcsname }% - \Etoc@global\edef\Etoc@contents{\expandafter\noexpand - \csname Etoc@contents@\the\numexpr\Etoc@level\endcsname }% - \ifEtoc@skipprefix \Etoc@global\def\Etoc@prefix{\@empty}\fi - \global\Etoc@skipprefixfalse - \Etoc@lxyz{#2}{#3}{#4}% - \Etoc@prefix - \Etoc@contents -} -\def\Etoc@lxyz #1#2#3{% - \ifEtoc@hyperref - \Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}% - \else - \Etoc@global\let\etocthelink\@firstofone - \fi - \Etoc@global\def\etocthepage {#2}% - \ifEtoc@hyperref - \ifx\etocthepage\@empty - \Etoc@global\let\etocthelinkedpage\@empty - \else - \Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}% - \fi - \else - \Etoc@global\let\etocthelinkedpage\etocthepage - \fi - \Etoc@global\def\etocthename{#1}% - \futurelet\Etoc@getnb@token\Etoc@@getnb #1\hspace\etoc@ - \ifEtoc@hyperref - \def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}% - \expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname - \ifEtoc@numbered - \expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber - \else - \Etoc@global\let\etocthelinkednumber\@empty - \fi - \else - \Etoc@global\let\etocthelinkedname \etocthename - \Etoc@global\let\etocthelinkednumber\etocthenumber - \fi - \Etoc@global\expandafter\let\csname etoclink \endcsname \etocthelink - \Etoc@global\expandafter\let\csname etocname \endcsname \etocthename - \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber - \Etoc@global\expandafter\let\csname etocpage \endcsname \etocthepage - \ifEtoc@hyperref - \Etoc@lxyz@linktoc - \fi -} -\def\Etoc@lxyz@linktoc{% - \ifcase\Hy@linktoc - \or - \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname - \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber - \or % page - \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage - \else % all - \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname - \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber - \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage - \fi -} -\def\Etoc@@getnb {% - \let\Etoc@next\Etoc@getnb - \ifx\Etoc@getnb@token\@sptoken\let\Etoc@next\Etoc@getnb@nonbr\fi - \ifx\Etoc@getnb@token\bgroup \let\Etoc@next\Etoc@getnb@nonbr\fi - \Etoc@next -} -\def\Etoc@getnb #1{% - \in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}% - \ifin@ - \let\Etoc@next\Etoc@getnb@nmbrd - \else - \ifnum\Etoc@level=\m@ne - \let\Etoc@next\Etoc@@getit - \else - \let\Etoc@next\Etoc@getnb@nonbr - \fi - \in@{#1}{\nonumberline}% - \ifin@ - \let\Etoc@next\Etoc@getnb@nonumberline - \fi - \fi - \Etoc@next #1% -} -\def\Etoc@getnb@nmbrd #1#2{% - \Etoc@global\Etoc@numberedtrue - \Etoc@global\def\etocthenumber {#2}% - \Etoc@getnb@nmbrd@getname\@empty -}% -\def\Etoc@getnb@nmbrd@getname #1\hspace\etoc@ {% - \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}% -} -\def\Etoc@getnb@nonbr #1\etoc@ {% - \Etoc@global\Etoc@numberedfalse - \Etoc@global\let\etocthenumber \@empty -} -\def\Etoc@getnb@nonumberline #1\hspace\etoc@ {% - \Etoc@global\Etoc@numberedfalse - \Etoc@global\let\etocthenumber \@empty - \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{\@gobble#1}% -} -\def\Etoc@@getit #1\hspace#2{% - \ifx\etoc@#2% - \Etoc@global\Etoc@numberedfalse - \Etoc@global\let\etocthenumber \@empty - \else - \Etoc@global\Etoc@numberedtrue - \Etoc@global\def\etocthenumber {#1}% - \expandafter\Etoc@getit@getname \expandafter\@empty - \fi -} -\def\Etoc@getit@getname #1\hspace\etoc@ {% - \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}% -} -\let\etocthename \@empty -\let\etocthenumber \@empty -\let\etocthepage \@empty -\let\etocthelinkedname \@empty -\let\etocthelinkednumber \@empty -\let\etocthelinkedpage \@empty -\let\etocthelink \@firstofone -\DeclareRobustCommand*{\etocname} {} -\DeclareRobustCommand*{\etocnumber}{} -\DeclareRobustCommand*{\etocpage} {} -\DeclareRobustCommand*{\etoclink} {\@firstofone} -\DeclareRobustCommand*{\etocifnumbered} - {\ifEtoc@numbered\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} -\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname -\DeclareRobustCommand*{\etociffirst} - {\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} -\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname -\def\Etoc@readtoc {% - \ifeof \Etoc@tf - \else - \read \Etoc@tf to \Etoc@buffer - \Etoc@toctoks=\expandafter\expandafter\expandafter - {\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}% - \expandafter\Etoc@readtoc - \fi -} -\Etoc@toctoks {}% (superfluous, but for clarity) -\AtBeginDocument{\IfFileExists{\jobname.toc} - {{\endlinechar=\m@ne - \makeatletter - \newread\Etoc@tf - \openin\Etoc@tf\@filef@und - \Etoc@readtoc - \global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}% - \closein\Etoc@tf}} - {\typeout{No file \jobname.toc.}}} -\def\Etoc@openouttoc{% - \ifEtoc@hyperref - \ifx\hyper@last\@undefined - \IfFileExists{\jobname .toc} - {\Hy@WarningNoLine - {old toc file detected; run LaTeX again (cheers from `etoc')}% - \global\Etoc@toctoks={}% - } - {}% - \fi - \fi - \if@filesw - \newwrite \tf@toc - \immediate \openout \tf@toc \jobname .toc\relax - \fi - \global\let\Etoc@openouttoc\empty -} -\def\Etoc@toctoc{% - \gdef\Etoc@stackofends{{-3}{}}% - \global\let\Etoc@level\Etoc@minf - \global\let\Etoc@virtualtop\Etoc@minf - \the\Etoc@toctoks - \ifEtoc@notactive - \else - \gdef\Etoc@level{-\thr@@}% - \Etoc@doendsandbegin - \fi -} -\def\Etoc@@startlocaltoc#1#2{% - \ifEtoc@localtoc - \ifnum #1=#2\relax - \global\let\etoclocaltop\Etoc@virtualtop - \Etoc@@startlocaltochook - \etoclocaltableofcontentshook - \ifEtoc@etocstyle - \etocetoclocaltocmaketitle - \fi - \ifx\Etoc@aftertitlehook\@empty - \else - \ifEtoc@localtoctotoc - \ifEtoc@ouroboros - \else - \let\Etoc@tmp\contentsline - \def\contentsline{\let\contentsline\Etoc@tmp\Etoc@gobblethreeorfour}% - \fi - \fi - \fi - \global\Etoc@notactivefalse - \fi - \fi -} -\let\etoc@startlocaltoc\@gobble -\let\Etoc@@startlocaltoc@toc\Etoc@@startlocaltoc -\let\Etoc@@startlocaltochook\@empty -\unless\ifEtoc@deeplevels - \def\etocdivisionnameatlevel#1{% - \ifcase\numexpr#1\relax - \ifdefined\c@chapter chapter\else section\fi% - \or section% - \or subsection% - \or subsubsection% - \or paragraph% - \or subparagraph% - \or empty% - \else\ifnum\numexpr#1<\m@ne - book% - \else - part% - \fi - \fi - } -\else - \def\etocdivisionnameatlevel#1{% - \ifcase\numexpr#1\relax - \ifdefined\c@chapter chapter\else section\fi% - \or section% - \or subsection% - \or subsubsection% - \or subsubsubsection% - \or subsubsubsubsection% - \or subsubsubsubsubsection% - \or subsubsubsubsubsubsection% - \or paragraph% - \or subparagraph% - \else\ifnum\numexpr#1>\z@ - empty% - \else\ifnum\numexpr#1=\m@ne - part% - \else - book% - \fi\fi - \fi - } -\fi -\def\etoclocalheadtotoc#1#2{\addcontentsline{toc}{@#1}{#2}} -\def\etocglobalheadtotoc{\addcontentsline{toc}} -\providecommand*\UseName{\@nameuse} -\def\etocetoclocaltocmaketitle{% - \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\localcontentsname}% - \if@noskipsec\leavevmode\par\fi - \etociflocaltoctotoc - {\etocifisstarred - {}% star variant, do not add to toc - {\etoclocalheadtotoc - {\etocdivisionnameatlevel{\etoclocaltop+1}}% - {\localcontentsname}% - }% - }% - {}% -}% -\def\localcontentsname {\contentsname}% -\let\etoclocaltableofcontentshook\@empty -\if1\ifEtoc@lof0\fi\ifEtoc@lot0\fi1% -\else -\AtBeginDocument{% - \let\Etoc@originaladdcontentsline\addcontentsline - \def\addcontentsline{\Etoc@hackedaddcontentsline}% -}% -\fi -\ifEtoc@lof - \ifEtoc@lot - \def\Etoc@hackedaddcontentsline#1{% - \expanded{\noexpand\in@{.#1,}}{.lof,.lot,}% - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}} - \else - \def\Etoc@hackedaddcontentsline#1{% - \expanded{\noexpand\in@{.#1,}}{.lof,}% - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}} - \fi -\else - \def\Etoc@hackedaddcontentsline#1{% - \expanded{\noexpand\in@{.#1,}}{.lot,}% - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}} -\fi -\def\Etoc@hackedaddcontentsline@i#1#2#3{% - \expanded{\noexpand\in@{.#1;#2,}}{.lof;figure,.lot;table,}% - \ifin@ - \addtocontents {toc}{% - \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% - \ifdefined\protected@file@percent\protected@file@percent\fi - }% - \fi - \Etoc@originaladdcontentsline{#1}{#2}{#3}% -} -\unless\ifdefined\expanded - \def\Etoc@hackedaddcontentsline#1{% - {\edef\Etoc@tmp{\noexpand\in@{.#1,}{\ifEtoc@lof.lof,\fi\ifEtoc@lot.lot,\fi}}\expandafter}% - \Etoc@tmp - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}% - } - \def\Etoc@hackedaddcontentsline@i#1#2#3{% - {\edef\Etoc@tmp{\noexpand\in@{.#1;#2,}}\expandafter}% - \Etoc@tmp{.lof;figure,.lot;table,}% - \ifin@ - \addtocontents {toc}{% - \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% - \ifdefined\protected@file@percent\protected@file@percent\fi - }% - \fi - \Etoc@originaladdcontentsline{#1}{#2}{#3}% - } -\fi -\def\Etoc@@startlocallistof#1#2#3{% - \ifEtoc@localtoc - \ifnum #2=#3\relax - \global\let\etoclocaltop\Etoc@virtualtop - \global\Etoc@notactivefalse - \Etoc@@startlocaltochook - \csname etoclocallistof#1shook\endcsname - \ifEtoc@etocstyle - \csname etocetoclistof#1smaketitle\endcsname - \fi - \fi - \fi -} -\def\Etoc@@startlocallistof@setlevels#1{% - \ifnum\etoclocaltop<\z@ - \expandafter\let\csname Etoc@#1@@\endcsname\@ne - \else - \expandafter\let\csname Etoc@#1@@\expandafter\endcsname - \csname Etoc@\the\numexpr\etoclocaltop+\@ne @@\endcsname - \fi - \def\Etoc@do##1{% - \ifnum\etoclevel{##1}>\etoclocaltop - \expandafter\let\csname Etoc@##1@@\endcsname\Etoc@maxlevel - \fi}% - \Etoc@dolevels -} -\def\etoclocallistoffigureshook{\etocstandardlines} -\def\etoclocallistoftableshook {\etocstandardlines} -\def\locallistfigurename{\listfigurename} -\def\locallisttablename {\listtablename} -\def\etocetoclistoffiguresmaketitle{% - \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallistfigurename}% - \ifnum\etoclocaltop>\tw@\mbox{}\par\fi - \etociflocalloftotoc - {\etocifisstarred - {}% star variant, do not add to toc - {\etoclocalheadtotoc - {\etocdivisionnameatlevel{\etoclocaltop+1}}% - {\locallistfigurename}% - }% - }% - {}% -}% -\def\etocetoclistoftablesmaketitle{% - \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallisttablename}% - \ifnum\etoclocaltop>\tw@\mbox{}\par\fi - \etociflocallottotoc - {\etocifisstarred - {}% star variant, do not add to toc - {\etoclocalheadtotoc - {\etocdivisionnameatlevel{\etoclocaltop+1}}% - {\locallisttablename}% - }% - }% - {}% -}% -\let\Etoc@listofreset\@empty -\ifEtoc@lof - \def\locallistoffigures{% - \def\Etoc@listofreset{% - \let\Etoc@currext\Etoc@tocext - \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc - \let\Etoc@@startlocaltochook\@empty - \let\Etoc@listofreset\@empty - \let\Etoc@listofhook\@empty - }% - \let\Etoc@currext\Etoc@lofext - \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{figure}}% - \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{figure}}% - \def\Etoc@listofhook{% - \def\Etoc@do####1{% - \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel - }% - \Etoc@dolevels - }% - \localtableofcontents - } -\else - \def\locallistoffigures{% - \PackageError{etoc}{% - \string\locallistoffigures \on@line\space but\MessageBreak - package was loaded without `lof' option}% - {Try again with \string\usepackage[lof]{etoc}}% - } -\fi -\ifEtoc@lot - \def\locallistoftables{% - \def\Etoc@listofreset{% - \let\Etoc@currext\Etoc@tocext - \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc - \let\Etoc@@startlocaltochook\@empty - \let\Etoc@listofreset\@empty - \let\Etoc@listofhook\@empty - }% - \let\Etoc@currext\Etoc@lotext - \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{table}}% - \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{table}}% - \def\Etoc@listofhook{% - \def\Etoc@do####1{% - \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel - }% - \Etoc@dolevels - }% - \localtableofcontents - } -\else - \def\locallistoftables{% - \PackageError{etoc}{% - \string\locallistoftable \on@line\space but\MessageBreak - package was loaded without `lot' option}% - {Try again with \string\usepackage[lot]{etoc}}% - } -\fi -\def\Etoc@checkifempty {% - \global\Etoc@isemptytoctrue - \global\Etoc@stoptocfalse - \global\let\Etoc@level\Etoc@minf - \global\let\Etoc@virtualtop\Etoc@minf - \gdef\Etoc@stackofends{{-3}{}}% - \begingroup - \ifEtoc@localtoc - \def\etoc@startlocaltoc##1{% - \ifnum##1=\Etoc@tocid\relax - \global\let\etoclocaltop\Etoc@virtualtop - \Etoc@@startlocaltochook - \global\Etoc@notactivefalse - \fi - }% - \let\contentsline\Etoc@testingcontentslinelocal - \else - \let\contentsline\Etoc@testingcontentsline - \fi - \Etoc@storetocdepth - \let\Etoc@setlocaltop@doendsandbegin\@empty - \the\Etoc@toctoks - \Etoc@restoretocdepth - \endgroup -} -\DeclareRobustCommand*\etocifwasempty - {\ifEtoc@isemptytoc\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } -\expandafter\let\expandafter\etocxifwasempty\csname etocifwasempty \endcsname -\def\Etoc@testingcontentslinelocal #1{% - \ifEtoc@stoptoc - \else - \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel - \else - \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname - \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi - \ifEtoc@notactive - \else - \ifnum\Etoc@level>\etoclocaltop - \unless\ifnum\Etoc@level>\c@tocdepth - \global\Etoc@isemptytocfalse - \global\Etoc@stoptoctrue - \fi - \else - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \fi - \Etoc@gobblethreeorfour{}% -} -\def\Etoc@testingcontentsline #1{% - \ifEtoc@stoptoc - \else - \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel - \else - \unless\ifnum\csname Etoc@#1@@\endcsname>\c@tocdepth - \global\Etoc@isemptytocfalse - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \Etoc@gobblethreeorfour{}% -} -\def\Etoc@localtableofcontents#1{% - \gdef\etoclocaltop{-\@m}% - \Etoc@localtoctrue - \global\Etoc@isemptytocfalse - \edef\Etoc@tocid{#1}% - \ifnum\Etoc@tocid<\@ne - \setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. \space Rerun LaTeX}}% - \global\Etoc@stoptoctrue - \gdef\etoclocaltop{-\thr@@}% - \Etoc@tableofcontents - \expandafter\Etoc@gobtoetoc@ - \fi - \global\Etoc@notactivetrue - \ifEtoc@checksemptiness - \Etoc@checkifempty - \fi - \ifEtoc@isemptytoc - \ifEtoc@notactive - \setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. \space Rerun LaTeX}}% - \global\Etoc@isemptytocfalse - \global\Etoc@stoptoctrue - \gdef\etoclocaltop{-\thr@@}% - \Etoc@tableofcontents - \expandafter\expandafter\expandafter\Etoc@gobtoetoc@ - \fi - \else - \global\Etoc@stoptocfalse - \global\Etoc@notactivetrue - \edef\etoc@startlocaltoc##1% - {\noexpand\Etoc@@startlocaltoc{##1}{\Etoc@tocid}}% - \Etoc@tableofcontents - \fi - \@gobble\etoc@ - \endgroup\ifEtoc@mustclosegroup\endgroup\fi - \Etoc@tocdepthreset - \Etoc@listofreset - \etocaftertochook -}% \Etoc@localtableofcontents -\def\Etoc@getref #1{% - \@ifundefined{r@#1} - {0} - {\expandafter\Etoc@getref@i\romannumeral-`0% - \expandafter\expandafter\expandafter - \@car\csname r@#1\endcsname0\@nil\@etoc - }% -} -\def\Etoc@getref@i#1#2\@etoc{\ifnum9<1\string#1 #1#2\else 0\fi} -\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}} -\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} -\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} -\def\Etoc@dothis #1#2\etoc@ {\fi #1} -\def\Etoc@t@bleofcontents{% - \gdef\etoclocaltop{-\@M}% - \ifx\Etoc@nexttoken\label\Etoc@dothis{\expandafter\Etoc@label\@gobble}\fi - \ifx\Etoc@nexttoken\@sptoken\Etoc@dothis{\Etoc@again}\fi - \ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi - \ifEtoc@tocwithid\Etoc@dothis{\Etoc@localtableofcontents{\c@etoc@tocid}}\fi - \global\Etoc@isemptytocfalse - \ifEtoc@checksemptiness\Etoc@checkifempty\fi - \ifEtoc@isemptytoc - \ifEtoc@notocifnotoc - \expandafter\expandafter\expandafter\@gobble - \fi - \fi - \Etoc@tableofcontents - \endgroup - \ifEtoc@mustclosegroup\endgroup\fi - \Etoc@tocdepthreset - \Etoc@listofreset - \etocaftertochook - \@gobble\etoc@ - }% \Etoc@t@bleofcontents -\def\Etoc@table@fcontents{% - \refstepcounter{etoc@tocid}% - \Etoc@tocwithidfalse - \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents -} -\def\Etoc@localtable@fcontents{% - \refstepcounter{etoc@tocid}% - \addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}% - \Etoc@tocwithidtrue - \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents -} -\def\etoctableofcontents{% - \Etoc@openouttoc - \Etoc@tocdepthset - \begingroup - \@ifstar - {\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents} - {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}% -}% \etoctableofcontents -\def\etocifisstarred{\ifx\Etoc@aftertitlehook\@empty - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo - \fi} -\let\etocoriginaltableofcontents\tableofcontents -\let\tableofcontents\etoctableofcontents -\let\Etoc@listofhook\@empty -\newcommand*\localtableofcontents{% - \Etoc@openouttoc - \Etoc@tocdepthset - \begingroup - \Etoc@listofhook - \@ifstar - {\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents} - {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}% -}% \localtableofcontents -\newcommand*\localtableofcontentswithrelativedepth[1]{% - \def\Etoc@@startlocaltochook{% - \global\c@tocdepth\numexpr\etoclocaltop+#1\relax - }% - \def\Etoc@listofreset{\let\Etoc@@startlocaltochook\@empty - \let\Etoc@listofreset\@empty}% - \localtableofcontents -}% \localtableofcontentswithrelativedepth -\newcommand\etocsettocstyle[2]{% - \Etoc@etocstylefalse - \Etoc@classstylefalse - \def\Etoc@tableofcontents@user@before{#1}% - \def\Etoc@tableofcontents@user@after {#2}% -}% -\def\etocstoretocstyleinto#1{% -%% \@ifdefinable#1{% - \edef#1{\noexpand\Etoc@etocstylefalse\noexpand\Etoc@classstylefalse - \def\noexpand\Etoc@tableofcontents@user@before{% - \unexpanded\expandafter{\Etoc@tableofcontents@user@before}% - }% - \def\noexpand\Etoc@tableofcontents@user@after{% - \unexpanded\expandafter{\Etoc@tableofcontents@user@after}% - }% - }% -%% }% -}% -\def\Etoc@tableofcontents {% - \Etoc@tableofcontents@etoc@before - \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi - \Etoc@tableofcontents@user@before - \Etoc@tableofcontents@contents - \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi - \Etoc@tableofcontents@user@after - \Etoc@tableofcontents@etoc@after - \@gobble\etoc@ -} -\def\Etoc@tableofcontents@etoc@before{% - \ifnum\c@tocdepth>\Etoc@minf - \else - \expandafter\Etoc@gobtoetoc@ - \fi - \Etoc@par - \Etoc@beforetitlehook - \etocbeforetitlehook - \Etoc@storetocdepth - \let\Etoc@savedcontentsline\contentsline - \let\contentsline\Etoc@etoccontentsline - \ifEtoc@standardlines - \else - \def\Etoc@do##1{% - \expandafter\def\csname etocsaved##1tocline\endcsname - {\PackageError{etoc}{% - \expandafter\string\csname etocsaved##1tocline\endcsname\space - has been deprecated\MessageBreak - at 1.1a and is removed at 1.2.\MessageBreak - Use \expandafter\string\csname l@##1\endcsname\space directly.\MessageBreak - Reported \on@line}% - {I will use \expandafter\string - \csname l@##1\endcsname\space myself for this time.% - }% - \csname l@##1\endcsname - }% - }% - \Etoc@dolevels - \fi -}% -\def\Etoc@tableofcontents@contents{% - \Etoc@tocdepthset - \ifEtoc@parskip\parskip\z@skip\fi - \Etoc@aftertitlehook - \gdef\etoclocaltop{-\thr@@}% - \Etoc@toctoc - \etocaftercontentshook -}% -\def\Etoc@tableofcontents@etoc@after{% - \@nobreakfalse - \Etoc@restoretocdepth - \ifx\Etoc@global\global - \@ifundefined{tof@finish} - {} - {\ifx\tof@finish\@empty - \else - \global\let\contentsline\Etoc@savedcontentsline - \fi - }% - \fi -} -\def\etocsetstyle#1{\ifcsname Etoc@#1@@\endcsname - \expandafter\Etoc@setstyle@a - \else - \expandafter\Etoc@setstyle@error - \fi {#1}% -} -\def\Etoc@setstyle@error #1{% - \PackageWarning{etoc}{`#1' is unknown to etoc. \space Did you\MessageBreak - forget some \string\etocsetlevel{#1}{}?\MessageBreak - Reported}% - \@gobblefour -} -\def\Etoc@setstyle@a #1{% - \edef\Etoc@tmp{\the\numexpr\csname Etoc@#1@@\endcsname}% - \if1\unless\ifnum\Etoc@tmp<\Etoc@maxlevel 0\fi - \unless\ifnum\Etoc@tmp>\Etoc@minf 0\fi1% - \Etoc@standardlinesfalse - \expandafter\Etoc@setstyle@b\expandafter\Etoc@tmp - \else - \ifnum\Etoc@tmp=\Etoc@maxlevel - \in@{.#1,}{.figure,.table,}% - \ifin@ - \PackageWarning{etoc} - {You can not use \string\etocsetstyle\space with `#1'.\MessageBreak - Check the package documentation (in particular about\MessageBreak - \string\etoclocallistoffigureshook/\string\etoclocallistoftableshook)% - \MessageBreak on how to customize - figure and table entries in local\MessageBreak lists. Reported}% - \else - \PackageInfo{etoc} - {Attempt to set the style of `#1',\MessageBreak - whose level is currently the maximal one \etocthemaxlevel,\MessageBreak - which is never displayed. \space This will be ignored\MessageBreak - but note that we do quit compatibility mode.\MessageBreak - Reported}% - \Etoc@standardlinesfalse - \fi - \else - \PackageWarning{etoc}{This should not happen. Reported}% - \fi - \expandafter\@gobblefour - \fi -} -\long\def\Etoc@setstyle@b#1#2#3#4#5{% - \expandafter\def\csname Etoc@begin@#1\endcsname {#2}% - \expandafter\def\csname Etoc@prefix@#1\endcsname {#3}% - \expandafter\def\csname Etoc@contents@#1\endcsname {#4}% - \expandafter\def\csname Etoc@end@#1\endcsname {#5}% -} -\def\Etoc@setstyle@e#1{% - \expandafter\let\csname Etoc@begin@#1\endcsname \@empty - \expandafter\let\csname Etoc@prefix@#1\endcsname \@empty - \expandafter\let\csname Etoc@contents@#1\endcsname \@empty - \expandafter\let\csname Etoc@end@#1\endcsname \@empty -} -\def\Etoc@storelines@a#1{% - \noexpand\Etoc@setstyle@b{#1}% - {\expandafter\Etoc@expandonce\csname Etoc@begin@#1\endcsname}% - {\expandafter\Etoc@expandonce\csname Etoc@prefix@#1\endcsname}% - {\expandafter\Etoc@expandonce\csname Etoc@contents@#1\endcsname}% - {\expandafter\Etoc@expandonce\csname Etoc@end@#1\endcsname}% -} -\def\Etoc@expandonce#1{\unexpanded\expandafter{#1}} -\def\etocstorelinestylesinto#1{% - \edef#1{\Etoc@storelines@a{-2}\Etoc@storelines@a{-1}\Etoc@storelines@a{0}% - \Etoc@storelines@a {1}\Etoc@storelines@a {2}\Etoc@storelines@a{3}% - \Etoc@storelines@a {4}\Etoc@storelines@a {5}% - \ifEtoc@deeplevels - \Etoc@storelines@a{6}\Etoc@storelines@a{7}\Etoc@storelines@a{8}% - \Etoc@storelines@a{9}\Etoc@storelines@a{10}\Etoc@storelines@a{11}% - \fi - }% -} -\def\etocstorethislinestyleinto#1#2{% - \edef#2{\expandafter\Etoc@storelines@a\expandafter{\number\etoclevel{#1}}}% -}% -\def\etocfontminustwo {\normalfont \LARGE \bfseries} -\def\etocfontminusone {\normalfont \large \bfseries} -\def\etocfontzero {\normalfont \large \bfseries} -\def\etocfontone {\normalfont \normalsize \bfseries} -\def\etocfonttwo {\normalfont \normalsize} -\def\etocfontthree {\normalfont \footnotesize} -\def\etocsepminustwo {4ex \@plus .5ex \@minus .5ex} -\def\etocsepminusone {4ex \@plus .5ex \@minus .5ex} -\def\etocsepzero {2.5ex \@plus .4ex \@minus .4ex} -\def\etocsepone {1.5ex \@plus .3ex \@minus .3ex} -\def\etocseptwo {.5ex \@plus .1ex \@minus .1ex} -\def\etocsepthree {.25ex \@plus .05ex \@minus .05ex} -\def\etocbaselinespreadminustwo {1} -\def\etocbaselinespreadminusone {1} -\def\etocbaselinespreadzero {1} -\def\etocbaselinespreadone {1} -\def\etocbaselinespreadtwo {1} -\def\etocbaselinespreadthree {.9} -\def\etocminustwoleftmargin {1.5em plus 0.5fil} -\def\etocminustworightmargin {1.5em plus -0.5fil} -\def\etocminusoneleftmargin {1em} -\def\etocminusonerightmargin {1em} -\def\etoctoclineleaders - {\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}} -\def\etocabbrevpagename {p.~} -\def\etocpartname {Part} -\def\etocbookname {Book} -\def\etocdefaultlines{% - \Etoc@standardlinesfalse - \etocdefaultlines@setbook - \etocdefaultlines@setpart - \etocdefaultlines@setchapter - \etocdefaultlines@setsection - \etocdefaultlines@setsubsection - \etocdefaultlines@setsubsubsection - \etocdefaultlines@setdeeperones -} -\def\etocnoprotrusion{\leavevmode\kern-\p@\kern\p@} -\@ifclassloaded{memoir}{% - \def\etocdefaultlines@setbook{% - \Etoc@setstyle@b - {-2}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@secpenalty} - {\begingroup - \etocfontminustwo - \addvspace{\etocsepminustwo}% - \parindent \z@ - \leftskip \etocminustwoleftmargin - \rightskip \etocminustworightmargin - \parfillskip \@flushglue - \vbox{\etocifnumbered{\etoclink{\etocbookname\enspace\etocthenumber:\quad}}{}% - \etocname - \baselineskip\etocbaselinespreadminustwo\baselineskip - \par}% - \addpenalty\@M\addvspace{\etocsepminusone}% - \endgroup} - {}% - } - }{\let\etocdefaultlines@setbook\@empty} -\def\etocdefaultlines@setpart{% -\Etoc@setstyle@b - {-1}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@secpenalty} - {\begingroup - \etocfontminusone - \addvspace{\etocsepminusone}% - \parindent \z@ - \leftskip \etocminusoneleftmargin - \rightskip \etocminusonerightmargin - \parfillskip \@flushglue - \vbox{\etocifnumbered{\etoclink{\etocpartname\enspace\etocthenumber.\quad}}{}% - \etocname - \baselineskip\etocbaselinespreadminusone\baselineskip - \par}% - \addpenalty\@M\addvspace{\etocsepzero}% - \endgroup} - {}% -} -\def\etocdefaultlines@setchapter{% -\Etoc@setstyle@b - {0}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@itempenalty} - {\begingroup - \etocfontzero - \addvspace{\etocsepzero}% - \parindent \z@ \parfillskip \@flushglue - \vbox{\etocifnumbered{\etocnumber.\enspace}{}\etocname - \baselineskip\etocbaselinespreadzero\baselineskip - \par}% - \endgroup} - {\addpenalty{-\@highpenalty}\addvspace{\etocsepminusone}}% -} -\def\etocdefaultlines@setsection{% -\Etoc@setstyle@b - {1}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@itempenalty} - {\begingroup - \etocfontone - \addvspace{\etocsepone}% - \parindent \z@ \parfillskip \z@ - \setbox\z@\vbox{\parfillskip\@flushglue - \etocname\par - \setbox\tw@\lastbox - \global\setbox\@ne\hbox{\unhbox\tw@\ }}% - \dimen\z@=\wd\@ne - \setbox\z@=\etoctoclineleaders - \advance\dimen\z@\wd\z@ - \etocifnumbered - {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}} - {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}% - \advance\dimen\z@\wd\tw@ - \ifdim\dimen\z@ < \linewidth - \vbox{\etocname~% - \leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadone\baselineskip - \par}% - \else - \vbox{\etocname~% - \leaders\copy\z@\hfil\break - \hbox{}\leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadone\baselineskip - \par}% - \fi - \endgroup} - {\addpenalty\@secpenalty\addvspace{\etocsepzero}}% -} -\def\etocdefaultlines@setsubsection{% -\Etoc@setstyle@b - {2}% - {\addpenalty\@medpenalty\etocskipfirstprefix} - {\addpenalty\@itempenalty} - {\begingroup - \etocfonttwo - \addvspace{\etocseptwo}% - \parindent \z@ \parfillskip \z@ - \setbox\z@\vbox{\parfillskip\@flushglue - \etocname\par\setbox\tw@\lastbox - \global\setbox\@ne\hbox{\unhbox\tw@}}% - \dimen\z@=\wd\@ne - \setbox\z@=\etoctoclineleaders - \advance\dimen\z@\wd\z@ - \etocifnumbered - {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}} - {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}% - \advance\dimen\z@\wd\tw@ - \ifdim\dimen\z@ < \linewidth - \vbox{\etocname~% - \leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadtwo\baselineskip - \par}% - \else - \vbox{\etocname~% - \leaders\copy\z@\hfil\break - \hbox{}\leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadtwo\baselineskip - \par}% - \fi - \endgroup} - {\addpenalty\@secpenalty\addvspace{\etocsepone}}% -} -\def\etocdefaultlines@setsubsubsection{% -\Etoc@setstyle@b - {3}% - {\addpenalty\@M - \etocfontthree - \vspace{\etocsepthree}% - \noindent - \etocskipfirstprefix} - {\allowbreak\,--\,} - {\etocname} - {.\hfil - \begingroup - \baselineskip\etocbaselinespreadthree\baselineskip - \par - \endgroup - \addpenalty{-\@highpenalty}} -} -\def\etocdefaultlines@setdeeperones{% -\Etoc@setstyle@e{4}% -\Etoc@setstyle@e{5}% -\ifEtoc@deeplevels - \Etoc@setstyle@e{6}% - \Etoc@setstyle@e{7}% - \Etoc@setstyle@e{8}% - \Etoc@setstyle@e{9}% - \Etoc@setstyle@e{10}% - \Etoc@setstyle@e{11}% -\fi -} -\def\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex} -\def\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex} -\def\etoccolumnsep{2em} -\def\etocmulticolsep{0ex} -\def\etocmulticolpretolerance{-1} -\def\etocmulticoltolerance{200} -\def\etocdefaultnbcol{2} -\def\etocinnertopsep{2ex} -\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{% -\etocsettocstyle - {\let\etocoldpar\par - \addvspace{\etocabovetocskip}% - \ifnum #1>\@ne - \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\multicolpretolerance\etocmulticolpretolerance - \multicoltolerance\etocmulticoltolerance - \setlength{\columnsep}{\etoccolumnsep}% - \setlength{\multicolsep}{\etocmulticolsep}% - \begin{multicols}{#1}[#2\etocoldpar\addvspace{\etocinnertopsep}]} - {#2\ifvmode\else\begingroup\interlinepenalty\@M\parskip\z@skip - \@@par\endgroup - \fi - \nobreak\addvspace{\etocinnertopsep}% - \pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}% - }% - {\ifnum #1>\@ne - \expandafter\@firstofone - \else \expandafter\@gobble - \fi - {\end{multicols}}% - \addvspace{\etocbelowtocskip}}% -} -\def\etocinnerbottomsep{3.5ex} -\def\etocinnerleftsep{2em} -\def\etocinnerrightsep{2em} -\def\etoctoprule{\hrule} -\def\etocleftrule{\vrule} -\def\etocrightrule{\vrule} -\def\etocbottomrule{\hrule} -\def\etoctoprulecolorcmd{\relax} -\def\etocbottomrulecolorcmd{\relax} -\def\etocleftrulecolorcmd{\relax} -\def\etocrightrulecolorcmd{\relax} -\def\etoc@ruledheading #1{% - \hb@xt@\linewidth{\color@begingroup - \hss #1\hss\hskip-\linewidth - \etoctoprulecolorcmd\leaders\etoctoprule\hss - \phantom{#1}% - \leaders\etoctoprule\hss\color@endgroup}% - \nointerlineskip\nobreak\vskip\etocinnertopsep} -\newcommand*\etocruledstyle[2][\etocdefaultnbcol]{% -\etocsettocstyle - {\addvspace{\etocabovetocskip}% - \ifnum #1>\@ne - \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\multicolpretolerance\etocmulticolpretolerance - \multicoltolerance\etocmulticoltolerance - \setlength{\columnsep}{\etoccolumnsep}% - \setlength{\multicolsep}{\etocmulticolsep}% - \begin{multicols}{#1}[\etoc@ruledheading{#2}]} - {\etoc@ruledheading{#2}% - \pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}} - {\ifnum #1>\@ne\expandafter\@firstofone - \else \expandafter\@gobble - \fi - {\end{multicols}}% - \addvspace{\etocbelowtocskip}}} -\def\etocframedmphook{\relax} -\long\def\etocbkgcolorcmd{\relax} -\long\def\Etoc@relax{\relax} -\newbox\etoc@framed@titlebox -\newbox\etoc@framed@contentsbox -\newcommand*\etocframedstyle[2][\etocdefaultnbcol]{% -\etocsettocstyle{% - \addvspace{\etocabovetocskip}% - \sbox\z@{#2}% - \dimen\z@\dp\z@ - \ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi - \setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup - \hss - \ifx\etocbkgcolorcmd\Etoc@relax - \else - \sbox\tw@{\color{white}% - \vrule\@width\wd\z@\@height\ht\z@\@depth\dimen\z@}% - \ifdim\wd\z@<\linewidth \dp\tw@\z@\fi - \box\tw@ - \hskip-\wd\z@ - \fi - \copy\z@ - \hss - \hskip-\linewidth - \etoctoprulecolorcmd\leaders\etoctoprule\hss - \hskip\wd\z@ - \etoctoprulecolorcmd\leaders\etoctoprule\hss\color@endgroup}% - \setbox\z@\hbox{\etocleftrule\etocrightrule}% - \dimen\tw@\linewidth\advance\dimen\tw@-\wd\z@ - \advance\dimen\tw@-\etocinnerleftsep - \advance\dimen\tw@-\etocinnerrightsep - \setbox\etoc@framed@contentsbox=\vbox\bgroup - \hsize\dimen\tw@ - \kern\dimen\z@ - \vskip\etocinnertopsep - \hbox\bgroup - \begin{minipage}{\hsize}% - \etocframedmphook - \ifnum #1>\@ne - \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\multicolpretolerance\etocmulticolpretolerance - \multicoltolerance\etocmulticoltolerance - \setlength{\columnsep}{\etoccolumnsep}% - \setlength{\multicolsep}{\etocmulticolsep}% - \begin{multicols}{#1}} - {\pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}} - {\ifnum #1>\@ne\expandafter\@firstofone - \else \expandafter\@gobble - \fi - {\end{multicols}\unskip }% - \end{minipage}% - \egroup - \vskip\etocinnerbottomsep - \egroup - \vbox{\hsize\linewidth - \ifx\etocbkgcolorcmd\Etoc@relax - \else - \kern\ht\etoc@framed@titlebox - \kern\dp\etoc@framed@titlebox - \hb@xt@\linewidth{\color@begingroup - \etocleftrulecolorcmd\etocleftrule - \etocbkgcolorcmd - \leaders\vrule - \@height\ht\etoc@framed@contentsbox - \@depth\dp\etoc@framed@contentsbox - \hss - \etocrightrulecolorcmd\etocrightrule - \color@endgroup}\nointerlineskip - \vskip-\dp\etoc@framed@contentsbox - \vskip-\ht\etoc@framed@contentsbox - \vskip-\dp\etoc@framed@titlebox - \vskip-\ht\etoc@framed@titlebox - \fi - \box\etoc@framed@titlebox\nointerlineskip - \hb@xt@\linewidth{\color@begingroup - {\etocleftrulecolorcmd\etocleftrule}% - \hss\box\etoc@framed@contentsbox\hss - \etocrightrulecolorcmd\etocrightrule\color@endgroup} - \nointerlineskip - \vskip\ht\etoc@framed@contentsbox - \vskip\dp\etoc@framed@contentsbox - \hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd - \leaders\etocbottomrule\hss\color@endgroup}} - \addvspace{\etocbelowtocskip}}} -\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \tableofcontents} -\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \tableofcontents*} -\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \localtableofcontents} -\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \localtableofcontents*} -\newcommand*\etoc@ruledtoc[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \tableofcontents} -\newcommand*\etoc@ruledtoci[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \tableofcontents*} -\newcommand*\etoc@local@ruledtoc[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \localtableofcontents} -\newcommand*\etoc@local@ruledtoci[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \localtableofcontents*} -\newcommand*\etoc@framedtoc[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \tableofcontents} -\newcommand*\etoc@framedtoci[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \tableofcontents*} -\newcommand*\etoc@local@framedtoc[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \localtableofcontents} -\newcommand*\etoc@local@framedtoci[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \localtableofcontents*} -\def\etocmulticol{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@multicoltoci} - {\etoc@multicoltoc}} -\def\etocruled{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@ruledtoci} - {\etoc@ruledtoc}} -\def\etocframed{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@framedtoci} - {\etoc@framedtoc}} -\def\etoclocalmulticol{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@local@multicoltoci} - {\etoc@local@multicoltoc}} -\def\etoclocalruled{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@local@ruledtoci} - {\etoc@local@ruledtoc}} -\def\etoclocalframed{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@local@framedtoci} - {\etoc@local@framedtoc}} -\def\etocmemoirtoctotocfmt #1#2{% - \PackageWarning{etoc} - {\string\etocmemoirtoctotocfmt\space is deprecated.\MessageBreak - Use in its place \string\etocsettoclineforclasstoc,\MessageBreak - and \string\etocsettoclineforclasslistof{toc} (or {lof}, {lot}). - I will do this now.\MessageBreak - Reported}% - \etocsettoclineforclasstoc{#1}{#2}% - \etocsettoclineforclasslistof{toc}{#1}{#2}% -} -\def\etocsettoclineforclasstoc #1#2{% - \def\etocclassmaintocaddtotoc{\etocglobalheadtotoc{#1}{#2}}% -} -\def\etocsettoclineforclasslistof #1#2#3{% - \@namedef{etocclasslocal#1addtotoc}{\etoclocalheadtotoc{#2}{#3}}% -} -\let\etocclasslocaltocaddtotoc\@empty -\let\etocclasslocallofaddtotoc\@empty -\let\etocclasslocallotaddtotoc\@empty -\ifdefined\c@chapter - \def\etocclasslocaltocmaketitle{\section*{\localcontentsname}} - \def\etocclasslocallofmaketitle{\section*{\locallistfigurename}} - \def\etocclasslocallotmaketitle{\section*{\locallisttablename}} - \etocsettoclineforclasstoc {chapter}{\contentsname} - \etocsettoclineforclasslistof{toc}{section}{\localcontentsname} - \etocsettoclineforclasslistof{lof}{section}{\locallistfigurename} - \etocsettoclineforclasslistof{lot}{section}{\locallisttablename} -\else - \def\etocclasslocaltocmaketitle{\subsection*{\localcontentsname}}% - \def\etocclasslocallofmaketitle{\subsection*{\locallistfigurename}}% - \def\etocclasslocallotmaketitle{\subsection*{\locallisttablename}}% - \etocsettoclineforclasstoc {section}{\contentsname} - \etocsettoclineforclasslistof{toc}{subsection}{\localcontentsname} - \etocsettoclineforclasslistof{lof}{subsection}{\locallistfigurename} - \etocsettoclineforclasslistof{lot}{subsection}{\locallisttablename} -\fi -\def\etocclasslocalperhapsaddtotoc #1{% - \etocifisstarred - {} - {\csname ifEtoc@local#1totoc\endcsname - \csname etocclasslocal#1addtotoc\endcsname - \fi - }% -} -\def\etocarticlestyle{% - \etocsettocstyle - {\ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \section *{\contentsname - \@mkboth {\MakeUppercase \contentsname} - {\MakeUppercase \contentsname}}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - } - {}% -} -\def\etocarticlestylenomarks{% - \etocsettocstyle - {\ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \section *{\contentsname}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - } - {}% -} -\def\etocbookstyle{% - \etocsettocstyle - {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi - \ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \chapter *{\contentsname - \@mkboth {\MakeUppercase \contentsname} - {\MakeUppercase \contentsname}}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - }% - {\if@restonecol \twocolumn \fi}% -} -\def\etocbookstylenomarks{% - \etocsettocstyle - {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi - \ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \chapter *{\contentsname}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - }% - {\if@restonecol \twocolumn \fi}% -} -\let\etocreportstyle\etocbookstyle -\let\etocreportstylenomarks\etocbookstylenomarks -\def\etocmemoirstyle{% - \etocsettocstyle - {\ensureonecol \par \begingroup \phantomsection - \ifx\Etoc@aftertitlehook\@empty - \else - \ifmem@em@starred@listof - \else - \ifEtoc@localtoc - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \ifEtoc@maintoctotoc - \etocclassmaintocaddtotoc - \fi - \fi - \fi - \fi - \ifEtoc@localtoc - \@namedef{@\Etoc@currext maketitle}{% - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - }% - \fi - \@nameuse {@\Etoc@currext maketitle} %<< space token here from memoir code - \ifx\Etoc@aftertitlehook\@empty - \else - \Etoc@aftertitlehook \let \Etoc@aftertitlehook \relax - \fi - \parskip \cftparskip \@nameuse {cft\Etoc@currext beforelisthook}% - }% - {\@nameuse {cft\Etoc@currext afterlisthook}% - \endgroup\restorefromonecol - }% -} -\let\Etoc@beforetitlehook\@empty -\if1\@ifclassloaded{scrartcl}0{\@ifclassloaded{scrbook}0{\@ifclassloaded{scrreprt}01}}% -\expandafter\@gobble -\else - \ifdefined\setuptoc - \def\Etoc@beforetitlehook{% - \ifEtoc@localtoc - \etocclasslocalperhapsaddtotoc\Etoc@currext - \setuptoc{\Etoc@currext}{leveldown}% - \else - \etocifisstarred{}{\etocifmaintoctotoc{\setuptoc{toc}{totoc}}}% - \fi - }% - \fi -\expandafter\@firstofone -\fi -{\def\etocclasslocalperhapsaddtotoc #1{% - \etocifisstarred - {}% - {\csname ifEtoc@local#1totoc\endcsname - \setuptoc{\Etoc@currext}{totoc}% - \fi - }% - }% -} -\ifdefined\Iftocfeature - \def\etoc@Iftocfeature{\Iftocfeature}% -\else - \def\etoc@Iftocfeature{\iftocfeature}% -\fi -\def\etocscrartclstyle{% - \etocsettocstyle - {\ifx\Etoc@currext\Etoc@tocext - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - {\let\if@dynlist\if@tocleft}% - \edef\@currext{\Etoc@currext}% - \@ifundefined{listof\@currext name}% - {\def\list@fname{\listofname~\@currext}}% - {\expandafter\let\expandafter\list@fname - \csname listof\@currext name\endcsname}% - \etoc@Iftocfeature {\@currext}{onecolumn} - {\etoc@Iftocfeature {\@currext}{leveldown} - {} - {\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }} - {}% - \etoc@Iftocfeature {\@currext}{numberline}% - {\def \nonumberline {\numberline {}}}{}% - \expandafter\tocbasic@listhead\expandafter {\list@fname}% - \begingroup \expandafter \expandafter \expandafter - \endgroup \expandafter - \ifx - \csname microtypesetup\endcsname \relax - \else - \etoc@Iftocfeature {\@currext}{noprotrusion}{} - {\microtypesetup {protrusion=false}% - \PackageInfo {tocbasic}% - {character protrusion at \@currext\space deactivated}}% - \fi - \etoc@Iftocfeature{\@currext}{noparskipfake}{}{% - \ifvmode \@tempskipa\lastskip \vskip-\lastskip - \addtolength{\@tempskipa}{\parskip}\vskip\@tempskipa\fi - }% - \setlength {\parskip }{\z@ }% - \setlength {\parindent }{\z@ }% - \setlength {\parfillskip }{\z@ \@plus 1fil}% - \csname tocbasic@@before@hook\endcsname - \csname tb@\@currext @before@hook\endcsname - }% end of before_toc - {% start of after_toc - \providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file - \edef\@currext{\Etoc@currext}% - \csname tb@\@currext @after@hook\endcsname - \csname tocbasic@@after@hook\endcsname - }% end of after_toc -} -\let\etocscrbookstyle\etocscrartclstyle -\let\etocscrreprtstyle\etocscrartclstyle -\def\etocclasstocstyle{\etocarticlestyle} -\newcommand*\etocmarkboth[1]{% - \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} -\newcommand*\etocmarkbothnouc[1]{\@mkboth{#1}{#1}} -\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]% - {\csname #1\endcsname *{#3}}} -\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]% - {\csname #1\endcsname *{#3\etocmarkboth{#4}}}} -\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]% - {\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}} -\def\Etoc@redefetocstylesforchapters{% - \renewcommand\etoctocstylewithmarks[4][chapter]{% - \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkboth{##4}}}% - } - \renewcommand\etoctocstylewithmarksnouc[4][chapter]{% - \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}% - } - \renewcommand\etoctocstyle[3][chapter]{% - \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}} - } -} -\@ifclassloaded{scrartcl} - {\renewcommand*\etocclasstocstyle{\etocscrartclstyle}}{} -\@ifclassloaded{book} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocbookstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{report} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocreportstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{scrbook} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocscrbookstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{scrreprt} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocscrreprtstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{memoir} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocmemoirstyle} - \Etoc@redefetocstylesforchapters}{} -\def\etoctocloftstyle {% - \etocsettocstyle{% - \@cfttocstart - \par - \begingroup - \parindent\z@ \parskip\cftparskip - \@nameuse{@cftmake\Etoc@currext title}% - \ifEtoc@localtoc - \etoctocloftlocalperhapsaddtotoc\Etoc@currext - \else - \etocifisstarred {}{\ifEtoc@maintoctotoc\@cftdobibtoc\fi}% - \fi - }% - {% - \endgroup - \@cfttocfinish - }% -} -\def\etoctocloftlocalperhapsaddtotoc#1{% - \etocifisstarred - {}% - {\csname ifEtoc@local#1totoc\endcsname - \ifdefined\c@chapter\def\@tocextra{@section}\else\def\@tocextra{@subsection}\fi - \csname @cftdobib#1\endcsname - \fi - }% -} -\def\etoctocbibindstyle {% - \etocsettocstyle {% - \toc@start - \ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \etoc@tocbibind@dotoctitle - \fi - }% - {\toc@finish}% -} -\def\etoc@tocbibind@dotoctitle {% - \if@bibchapter - \etocifisstarred - {\chapter*{\contentsname}\prw@mkboth{\contentsname} % id. - }% - {\ifEtoc@maintoctotoc - \toc@chapter{\contentsname} %<-space from original - \else - \chapter*{\contentsname}\prw@mkboth{\contentsname} % id. - \fi - }% - \else - \etocifisstarred - {\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} %<-space - } - {\ifEtoc@maintoctotoc - \toc@section{\@tocextra}{\contentsname} %<-space from original - \else - \@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} % id. - \fi - }% - \fi -}% -\@ifclassloaded{memoir} -{} -{% memoir not loaded - \@ifpackageloaded{tocloft} - {\if@cftnctoc\else - \ifEtoc@keeporiginaltoc - \else - \AtBeginDocument{\let\tableofcontents\etoctableofcontents}% - \fi - \fi } - {\AtBeginDocument - {\@ifpackageloaded{tocloft} - {\if@cftnctoc\else - \PackageWarningNoLine {etoc} - {Package `tocloft' was loaded after `etoc'.\MessageBreak - To prevent it from overwriting \protect\tableofcontents, it will\MessageBreak - be tricked into believing to have been loaded with its\MessageBreak - option `titles'. \space But this will cause the `tocloft'\MessageBreak - customization of the titles of the main list of figures\MessageBreak - and list of tables to not apply either.\MessageBreak - You should load `tocloft' before `etoc'.}% - \AtEndDocument{\PackageWarning{etoc} - {Please load `tocloft' before `etoc'!\@gobbletwo}}% - \fi - \@cftnctoctrue }% - {}% - }% - }% -} -\@ifclassloaded{memoir} -{} -{% memoir not loaded - \AtBeginDocument{% - \@ifpackageloaded{tocloft} - {% - \def\etocclasstocstyle{% - \etoctocloftstyle - \Etoc@classstyletrue - }% - \ifEtoc@etocstyle - \ifEtoc@classstyle - \etocclasstocstyle - \Etoc@etocstyletrue - \fi - \else - \ifEtoc@classstyle - \etocclasstocstyle - \fi - \fi - }% - {% no tocloft - \@ifpackageloaded {tocbibind} - {\if@dotoctoc - \def\etocclasstocstyle{% - \etoctocbibindstyle - \Etoc@classstyletrue - }% - \ifEtoc@etocstyle - \ifEtoc@classstyle - \etocclasstocstyle - \Etoc@etocstyletrue - \fi - \else - \ifEtoc@classstyle - \etocclasstocstyle - \fi - \fi - \ifEtoc@keeporiginaltoc - \else - \let\tableofcontents\etoctableofcontents - \fi - }% - {}% - }% - \@ifpackageloaded{tocbibind} - {% tocbibind, perhaps with tocloft - \if@dotoctoc - \ifEtoc@keeporiginaltoc - \else - \let\tableofcontents\etoctableofcontents - \fi - \etocsetup{maintoctotoc,localtoctotoc}% - \PackageInfo{etoc}{% - Setting (or re-setting) the options `maintoctotoc' and\MessageBreak - `localtoctotoc' to true as tocbibind was detected and\MessageBreak - found to be configured for `TOC to toc'.\MessageBreak - Reported at begin document}% - \fi - \if@dotoclof - \ifEtoc@lof - \etocsetup{localloftotoc}% - \PackageInfo{etoc}{% - Setting (or re-setting) `localloftotoc=true' as the\MessageBreak - package tocbibind was detected and is configured for\MessageBreak - `LOF to toc'. Reported at begin document}% - \fi - \fi - \if@dotoclot - \ifEtoc@lot - \etocsetup{locallottotoc}% - \PackageInfo{etoc}{% - Setting (or re-setting) `locallottotoc=true' as the\MessageBreak - package tocbibind was detected and is configured for\MessageBreak - `LOT to toc'. Reported at begin document}% - \fi - \fi - }% end of tocbibind branch - {}% - }% end of at begin document -}% end of not with memoir branch -\def\Etoc@addtocontents #1#2{% - \addtocontents {toc}{% - \protect\contentsline{#1}{#2}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% - \ifdefined\protected@file@percent\protected@file@percent\fi - }% -} -\def\Etoc@addcontentsline@ #1#2#3{% - \@namedef{toclevel@#1}{#3}\addcontentsline {toc}{#1}{#2}% -} -\DeclareRobustCommand*{\etoctoccontentsline} - {\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}} -\def\Etoc@addtocontents@immediately#1#2{% - \begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \Etoc@addtocontents{#1}{#2}% - \endgroup -} -\def\Etoc@addcontentsline@@immediately#1#2#3{% - \begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \Etoc@addcontentsline@{#1}{#2}{#3}% - \endgoroup -} -\DeclareRobustCommand*{\etocimmediatetoccontentsline} - {\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}} -\def\Etoc@storetocdepth {\xdef\Etoc@savedtocdepth{\number\c@tocdepth}} -\def\Etoc@restoretocdepth {\global\c@tocdepth\Etoc@savedtocdepth\relax} -\def\etocobeytoctocdepth {\def\etoc@settocdepth - {\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}} -\def\Etoc@@nottoodeep {\ifnum\Etoc@savedtocdepth<\c@tocdepth - \global\c@tocdepth\Etoc@savedtocdepth\relax\fi } -\def\etocignoretoctocdepth {\let\etoc@settocdepth\@gobble } -\def\etocsettocdepth {\futurelet\Etoc@nexttoken\Etoc@set@tocdepth } -\def\Etoc@set@tocdepth {\ifx\Etoc@nexttoken\bgroup - \expandafter\Etoc@set@tocdepth@ - \else\expandafter\Etoc@set@toctocdepth - \fi } -\def\Etoc@set@tocdepth@ #1{\@ifundefined {Etoc@#1@@} - {\PackageWarning{etoc} - {Unknown sectioning unit #1, \protect\etocsettocdepth\space ignored}} - {\global\c@tocdepth\csname Etoc@#1@@\endcsname}% -} -\def\Etoc@set@toctocdepth #1#{\Etoc@set@toctocdepth@ } -\def\Etoc@set@toctocdepth@ #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocsettocdepth.toc ignored}}% - {\addtocontents {toc} - {\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}% -} -\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately} -\def\Etoc@set@toctocdepth@immediately #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocimmediatesettocdepth.toc ignored}}% - {\begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \addtocontents {toc} - {\protect\etoc@settocdepth\expandafter\protect - \csname Etoc@#1@@\endcsname}% - \endgroup - }% -} -\def\etocdepthtag #1#{\Etoc@depthtag } -\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}} -\def\etocimmediatedepthtag #1#{\Etoc@depthtag@immediately } -\def\Etoc@depthtag@immediately #1{% - \begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \addtocontents {toc}{\protect\etoc@depthtag {#1}}% - \endgroup -} -\def\etocignoredepthtags {\let\etoc@depthtag \@gobble } -\def\etocobeydepthtags {\let\etoc@depthtag \Etoc@depthtag@ } -\def\Etoc@depthtag@ #1{\@ifundefined{Etoc@depthof@#1}% - {}% ignore in silence if tag has no associated depth - {\afterassignment\Etoc@@nottoodeep - \global\c@tocdepth\csname Etoc@depthof@#1\endcsname}% -} -\def\etocsettagdepth #1#2{\@ifundefined{Etoc@#2@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #2, \protect\etocsettagdepth\space ignored}}% - {\@namedef{Etoc@depthof@#1}{\@nameuse{Etoc@#2@@}}}% -} -\def\Etoc@tocvsec@err #1{\PackageError {etoc} - {The command \protect#1\space is incompatible with `etoc'} - {Use \protect\etocsettocdepth.toc as replacement}% -}% -\AtBeginDocument {% - \@ifclassloaded{memoir} - {\PackageInfo {etoc} - {Regarding `memoir' class command \protect\settocdepth, consider\MessageBreak - \protect\etocsettocdepth.toc as a drop-in replacement with more\MessageBreak - capabilities (see `etoc' manual). \space - Also, \protect\etocsettocdepth\MessageBreak - and \protect\etocsetnexttocdepth\space should be used in place of\MessageBreak - `memoir' command \protect\maxtocdepth\@gobble}% - }% - {\@ifpackageloaded {tocvsec2}{% - \def\maxtocdepth #1{\Etoc@tocvsec@err \maxtocdepth }% - \def\settocdepth #1{\Etoc@tocvsec@err \settocdepth }% - \def\resettocdepth {\@ifstar {\Etoc@tocvsec@err \resettocdepth }% - {\Etoc@tocvsec@err \resettocdepth }% - }% - \def\save@tocdepth #1#2#3{}% - \let\reset@tocdepth\relax - \let\remax@tocdepth\relax - \let\tableofcontents\etoctableofcontents - \PackageWarningNoLine {etoc} - {Package `tocvsec2' detected and its modification of\MessageBreak - \protect\tableofcontents\space reverted. \space Use - \protect\etocsettocdepth.toc\MessageBreak as a replacement - for `tocvsec2' toc-related commands}% - }% tocvsec2 loaded - {}% tocvsec2 not loaded - }% -}% -\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }% -\def\invisiblelocaltableofcontents - {\etocsetnexttocdepth {-3}\localtableofcontents }% -\def\etocsetnexttocdepth #1{% - \@ifundefined{Etoc@#1@@} - {\PackageWarning{etoc} - {Unknown sectioning unit #1, \protect\etocsetnextocdepth\space ignored}} - {\Etoc@setnexttocdepth{\csname Etoc@#1@@\endcsname}}% -}% -\def\Etoc@setnexttocdepth#1{% - \def\Etoc@tocdepthset{% - \Etoc@tocdepthreset - \edef\Etoc@tocdepthreset {% - \global\c@tocdepth\the\c@tocdepth\space - \global\let\noexpand\Etoc@tocdepthreset\noexpand\@empty - }% - \global\c@tocdepth#1% - \global\let\Etoc@tocdepthset\@empty - }% -}% -\let\Etoc@tocdepthreset\@empty -\let\Etoc@tocdepthset \@empty -\def\etocsetlocaltop #1#{\Etoc@set@localtop}% -\def\Etoc@set@localtop #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocsetlocaltop.toc ignored}}% - {\addtocontents {toc} - {\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}% -}% -\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}% -\def\Etoc@set@localtop@immediately #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocimmediatesetlocaltop.toc ignored}}% - {\begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \addtocontents {toc} - {\protect\etoc@setlocaltop\expandafter\protect - \csname Etoc@#1@@\endcsname}% - \endgroup - }% -}% -\def\etoc@setlocaltop #1{% - \ifnum#1=\Etoc@maxlevel - \Etoc@skipthisonetrue - \else - \Etoc@skipthisonefalse - \global\let\Etoc@level #1% - \global\let\Etoc@virtualtop #1% - \ifEtoc@localtoc - \ifEtoc@stoptoc - \Etoc@skipthisonetrue - \else - \ifEtoc@notactive - \Etoc@skipthisonetrue - \else - \unless\ifnum\Etoc@level>\etoclocaltop - \Etoc@skipthisonetrue - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \fi - \fi - \let\Etoc@next\@empty - \ifEtoc@skipthisone - \else - \ifnum\Etoc@level>\c@tocdepth - \else - \ifEtoc@standardlines - \else - \let\Etoc@next\Etoc@setlocaltop@doendsandbegin - \fi - \fi - \fi - \Etoc@next -}% -\def\Etoc@setlocaltop@doendsandbegin{% - \Etoc@doendsandbegin - \global\Etoc@skipprefixfalse -} -\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}% - {\let\protect\etoc@startlocaltoc\protect\@gobble - \let\protect\etoc@settocdepth\protect\@gobble - \let\protect\etoc@depthtag\protect\@gobble - \let\protect\etoc@setlocaltop\protect\@gobble}{}}% -\def\etocstandardlines {\Etoc@standardlinestrue} -\def\etoctoclines {\Etoc@standardlinesfalse} -\etocdefaultlines -\etocstandardlines -\def\etocstandarddisplaystyle{% - \PackageWarningNoLine{etoc}{% - \string\etocstandarddisplaystyle \on@line\MessageBreak - is deprecated. \space Please use \string\etocclasstocstyle}% -} -\expandafter\def\expandafter\etocclasstocstyle\expandafter{% - \etocclasstocstyle - \Etoc@classstyletrue -} -\def\etocetoclocaltocstyle{\Etoc@etocstyletrue} -\def\etocusertocstyle{\Etoc@etocstylefalse} -\etocclasstocstyle -\etocetoclocaltocstyle -\etocobeytoctocdepth -\etocobeydepthtags -\let\etocbeforetitlehook \@empty -\let\etocaftertitlehook \@empty -\let\etocaftercontentshook \@empty -\let\etocaftertochook \@empty -\def\etockeeporiginaltableofcontents - {\Etoc@keeporiginaltoctrue\let\tableofcontents\etocoriginaltableofcontents}% -\endinput -%% -%% End of file `etoc.sty'. diff --git a/barretenberg/cpp/latex/longtable_doxygen.sty b/barretenberg/cpp/latex/longtable_doxygen.sty deleted file mode 100644 index e94b78b6ceb..00000000000 --- a/barretenberg/cpp/latex/longtable_doxygen.sty +++ /dev/null @@ -1,456 +0,0 @@ -%% -%% This is file `longtable.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% longtable.dtx (with options: `package') -%% -%% This is a generated file. -%% -%% The source is maintained by the LaTeX Project team and bug -%% reports for it can be opened at http://latex-project.org/bugs.html -%% (but please observe conditions on bug reports sent to that address!) -%% -%% Copyright 1993-2016 -%% The LaTeX3 Project and any individual authors listed elsewhere -%% in this file. -%% -%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. -%% -------------------------------------------------------------------------- -%% -%% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file may only be distributed together with a copy of the LaTeX -%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' -%% without such generated files. -%% -%% The list of all files belonging to the LaTeX `Tools Bundle' is -%% given in the file `manifest.txt'. -%% -%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle -\NeedsTeXFormat{LaTeX2e}[1995/06/01] -\ProvidesPackage{longtable_doxygen} - [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] -\def\LT@err{\PackageError{longtable}} -\def\LT@warn{\PackageWarning{longtable}} -\def\LT@final@warn{% - \AtEndDocument{% - \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% - \global\let\LT@final@warn\relax} -\DeclareOption{errorshow}{% - \def\LT@warn{\PackageInfo{longtable}}} -\DeclareOption{pausing}{% - \def\LT@warn#1{% - \LT@err{#1}{This is not really an error}}} -\DeclareOption{set}{} -\DeclareOption{final}{} -\ProcessOptions -\newskip\LTleft \LTleft=\fill -\newskip\LTright \LTright=\fill -\newskip\LTpre \LTpre=\bigskipamount -\newskip\LTpost \LTpost=\bigskipamount -\newcount\LTchunksize \LTchunksize=20 -\let\c@LTchunksize\LTchunksize -\newdimen\LTcapwidth \LTcapwidth=4in -\newbox\LT@head -\newbox\LT@firsthead -\newbox\LT@foot -\newbox\LT@lastfoot -\newcount\LT@cols -\newcount\LT@rows -\newcounter{LT@tables} -\newcounter{LT@chunks}[LT@tables] -\ifx\c@table\undefined - \newcounter{table} - \def\fnum@table{\tablename~\thetable} -\fi -\ifx\tablename\undefined - \def\tablename{Table} -\fi -\newtoks\LT@p@ftn -\mathchardef\LT@end@pen=30000 -\def\longtable{% - \par - \ifx\multicols\@undefined - \else - \ifnum\col@number>\@ne - \@twocolumntrue - \fi - \fi - \if@twocolumn - \LT@err{longtable not in 1-column mode}\@ehc - \fi - \begingroup - \@ifnextchar[\LT@array{\LT@array[x]}} -\def\LT@array[#1]#2{% - \refstepcounter{table}\stepcounter{LT@tables}% - \if l#1% - \LTleft\z@ \LTright\fill - \else\if r#1% - \LTleft\fill \LTright\z@ - \else\if c#1% - \LTleft\fill \LTright\fill - \fi\fi\fi - \let\LT@mcol\multicolumn - \let\LT@@tabarray\@tabarray - \let\LT@@hl\hline - \def\@tabarray{% - \let\hline\LT@@hl - \LT@@tabarray}% - \let\\\LT@tabularcr\let\tabularnewline\\% - \def\newpage{\noalign{\break}}% - \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% - \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% - \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption - \@tempdima\ht\strutbox - \let\@endpbox\LT@endpbox - \ifx\extrarowheight\@undefined - \let\@acol\@tabacol - \let\@classz\@tabclassz \let\@classiv\@tabclassiv - \def\@startpbox{\vtop\LT@startpbox}% - \let\@@startpbox\@startpbox - \let\@@endpbox\@endpbox - \let\LT@LL@FM@cr\@tabularcr - \else - \advance\@tempdima\extrarowheight - \col@sep\tabcolsep - \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr - \fi - \setbox\@arstrutbox\hbox{\vrule - \@height \arraystretch \@tempdima - \@depth \arraystretch \dp \strutbox - \@width \z@}% - \let\@sharp##\let\protect\relax - \begingroup - \@mkpream{#2}% - \xdef\LT@bchunk{% - \global\advance\c@LT@chunks\@ne - \global\LT@rows\z@\setbox\z@\vbox\bgroup - \LT@setprevdepth - \tabskip\LTleft \noexpand\halign to\hsize\bgroup - \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% - \endgroup - \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols - \LT@make@row - \m@th\let\par\@empty - \everycr{}\lineskip\z@\baselineskip\z@ - \LT@bchunk} -\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} -\def\LT@start{% - \let\LT@start\endgraf - \endgraf\penalty\z@\vskip\LTpre - \dimen@\pagetotal - \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi - \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi - \advance\dimen@ \ht\LT@foot - \dimen@ii\vfuzz - \vfuzz\maxdimen - \setbox\tw@\copy\z@ - \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox - \setbox\tw@\vbox{\unvbox\tw@}% - \vfuzz\dimen@ii - \advance\dimen@ \ht - \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi - \advance\dimen@\dp - \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi - \advance\dimen@ -\pagegoal - \ifdim \dimen@>\z@\vfil\break\fi - \global\@colroom\@colht - \ifvoid\LT@foot\else - \advance\vsize-\ht\LT@foot - \global\advance\@colroom-\ht\LT@foot - \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ - \maxdepth\z@ - \fi - \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak - \output{\LT@output}} -\def\endlongtable{% - \crcr - \noalign{% - \let\LT@entry\LT@entry@chop - \xdef\LT@save@row{\LT@save@row}}% - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \if@filesw - {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% - \gdef\expandafter\noexpand - \csname LT@\romannumeral\c@LT@tables\endcsname - {\LT@save@row}}}% - \fi - \ifx\LT@save@row\LT@@save@row - \else - \LT@warn{Column \@width s have changed\MessageBreak - in table \thetable}% - \LT@final@warn - \fi - \endgraf\penalty -\LT@end@pen - \endgroup - \global\@mparbottom\z@ - \pagegoal\vsize - \endgraf\penalty\z@\addvspace\LTpost - \ifvoid\footins\else\insert\footins{}\fi} -\def\LT@nofcols#1&{% - \futurelet\@let@token\LT@n@fcols} -\def\LT@n@fcols{% - \advance\LT@cols\@ne - \ifx\@let@token\LT@nofcols - \expandafter\@gobble - \else - \expandafter\LT@nofcols - \fi} -\def\LT@tabularcr{% - \relax\iffalse{\fi\ifnum0=`}\fi - \@ifstar - {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr - \LT@t@bularcr}% - {\LT@t@bularcr}} -\let\LT@crcr\crcr -\let\LT@setprevdepth\relax -\def\LT@t@bularcr{% - \global\advance\LT@rows\@ne - \ifnum\LT@rows=\LTchunksize - \gdef\LT@setprevdepth{% - \prevdepth\z@\global - \global\let\LT@setprevdepth\relax}% - \expandafter\LT@xtabularcr - \else - \ifnum0=`{}\fi - \expandafter\LT@LL@FM@cr - \fi} -\def\LT@xtabularcr{% - \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} -\def\LT@ntabularcr{% - \ifnum0=`{}\fi - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \LT@bchunk} -\def\LT@argtabularcr[#1]{% - \ifnum0=`{}\fi - \ifdim #1>\z@ - \unskip\@xargarraycr{#1}% - \else - \@yargarraycr{#1}% - \fi - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \LT@bchunk} -\def\LT@echunk{% - \crcr\LT@save@row\cr\egroup - \global\setbox\@ne\lastbox - \unskip - \egroup} -\def\LT@entry#1#2{% - \ifhmode\@firstofone{&}\fi\omit - \ifnum#1=\c@LT@chunks - \else - \kern#2\relax - \fi} -\def\LT@entry@chop#1#2{% - \noexpand\LT@entry - {\ifnum#1>\c@LT@chunks - 1}{0pt% - \else - #1}{#2% - \fi}} -\def\LT@entry@write{% - \noexpand\LT@entry^^J% - \@spaces} -\def\LT@kill{% - \LT@echunk - \LT@get@widths - \expandafter\LT@rebox\LT@bchunk} -\def\LT@rebox#1\bgroup{% - #1\bgroup - \unvbox\z@ - \unskip - \setbox\z@\lastbox} -\def\LT@blank@row{% - \xdef\LT@save@row{\expandafter\LT@build@blank - \romannumeral\number\LT@cols 001 }} -\def\LT@build@blank#1{% - \if#1m% - \noexpand\LT@entry{1}{0pt}% - \expandafter\LT@build@blank - \fi} -\def\LT@make@row{% - \global\expandafter\let\expandafter\LT@save@row - \csname LT@\romannumeral\c@LT@tables\endcsname - \ifx\LT@save@row\relax - \LT@blank@row - \else - {\let\LT@entry\or - \if!% - \ifcase\expandafter\expandafter\expandafter\LT@cols - \expandafter\@gobble\LT@save@row - \or - \else - \relax - \fi - !% - \else - \aftergroup\LT@blank@row - \fi}% - \fi} -\let\setlongtables\relax -\def\LT@get@widths{% - \setbox\tw@\hbox{% - \unhbox\@ne - \let\LT@old@row\LT@save@row - \global\let\LT@save@row\@empty - \count@\LT@cols - \loop - \unskip - \setbox\tw@\lastbox - \ifhbox\tw@ - \LT@def@row - \advance\count@\m@ne - \repeat}% - \ifx\LT@@save@row\@undefined - \let\LT@@save@row\LT@save@row - \fi} -\def\LT@def@row{% - \let\LT@entry\or - \edef\@tempa{% - \ifcase\expandafter\count@\LT@old@row - \else - {1}{0pt}% - \fi}% - \let\LT@entry\relax - \xdef\LT@save@row{% - \LT@entry - \expandafter\LT@max@sel\@tempa - \LT@save@row}} -\def\LT@max@sel#1#2{% - {\ifdim#2=\wd\tw@ - #1% - \else - \number\c@LT@chunks - \fi}% - {\the\wd\tw@}} -\def\LT@hline{% - \noalign{\ifnum0=`}\fi - \penalty\@M - \futurelet\@let@token\LT@@hline} -\def\LT@@hline{% - \ifx\@let@token\hline - \global\let\@gtempa\@gobble - \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% - \else - \global\let\@gtempa\@empty - \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% - \fi - \ifnum0=`{\fi}% - \multispan\LT@cols - \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr - \noalign{\LT@sep}% - \multispan\LT@cols - \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr - \noalign{\penalty\@M}% - \@gtempa} -\def\LT@caption{% - \noalign\bgroup - \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} -\def\LT@c@ption#1[#2]#3{% - \LT@makecaption#1\fnum@table{#3}% - \def\@tempa{#2}% - \ifx\@tempa\@empty\else - {\let\\\space - \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% - \fi} -\def\LT@capti@n{% - \@ifstar - {\egroup\LT@c@ption\@gobble[]}% - {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} -\def\LT@makecaption#1#2#3{% - \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% - \sbox\@tempboxa{#1{#2: }#3}% - \ifdim\wd\@tempboxa>\hsize - #1{#2: }#3% - \else - \hbox to\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \endgraf\vskip\baselineskip}% - \hss}}} -\def\LT@output{% - \ifnum\outputpenalty <-\@Mi - \ifnum\outputpenalty > -\LT@end@pen - \LT@err{floats and marginpars not allowed in a longtable}\@ehc - \else - \setbox\z@\vbox{\unvbox\@cclv}% - \ifdim \ht\LT@lastfoot>\ht\LT@foot - \dimen@\pagegoal - \advance\dimen@-\ht\LT@lastfoot - \ifdim\dimen@<\ht\z@ - \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% - \@makecol - \@outputpage - \setbox\z@\vbox{\box\LT@head}% - \fi - \fi - \global\@colroom\@colht - \global\vsize\@colht - \vbox - {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% - \fi - \else - \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% - \@makecol - \@outputpage - \global\vsize\@colroom - \copy\LT@head\nobreak - \fi} -\def\LT@end@hd@ft#1{% - \LT@echunk - \ifx\LT@start\endgraf - \LT@err - {Longtable head or foot not at start of table}% - {Increase LTchunksize}% - \fi - \setbox#1\box\z@ - \LT@get@widths - \LT@bchunk} -\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} -\def\endhead{\LT@end@hd@ft\LT@head} -\def\endfoot{\LT@end@hd@ft\LT@foot} -\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} -\def\LT@startpbox#1{% - \bgroup - \let\@footnotetext\LT@p@ftntext - \setlength\hsize{#1}% - \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} -\def\LT@endpbox{% - \@finalstrut\@arstrutbox - \egroup - \the\LT@p@ftn - \global\LT@p@ftn{}% - \hfil} -%% added \long to prevent: -% LaTeX Warning: Command \LT@p@ftntext has changed. -% -% from the original repository (https://github.com/latex3/latex2e/blob/develop/required/tools/longtable.dtx): -% \changes{v4.15}{2021/03/28} -% {make long for gh/364} -% Inside the `p' column, just save up the footnote text in a token -% register. -\long\def\LT@p@ftntext#1{% - \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% - \global\LT@p@ftn\expandafter{\@tempa{#1}}}% - -\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} -\endinput -%% -%% End of file `longtable.sty'. diff --git a/barretenberg/cpp/latex/refman.tex b/barretenberg/cpp/latex/refman.tex deleted file mode 100644 index 8bda38595f7..00000000000 --- a/barretenberg/cpp/latex/refman.tex +++ /dev/null @@ -1,218 +0,0 @@ - % Handle batch mode - % to overcome problems with too many open files - \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage} - \pdfminorversion=7 - % Set document class depending on configuration - \documentclass[twoside]{book} - %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package - \usepackage{ifthen} - \ifx\requestedLaTeXdate\undefined - \usepackage{array} - \else - \usepackage{array}[=2016-10-06] - \fi - %% - % Packages required by doxygen - \makeatletter - \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} - % suppress package identification of infwarerr as it contains the word "warning" - \let\@@protected@wlog\protected@wlog - \def\protected@wlog#1{\wlog{package info suppressed}} - \RequirePackage{infwarerr} - \let\protected@wlog\@@protected@wlog - \makeatother - \IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript - \IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{} - \usepackage{doxygen} - \usepackage{graphicx} - \usepackage[utf8]{inputenc} - \usepackage{makeidx} - \PassOptionsToPackage{warn}{textcomp} - \usepackage{textcomp} - \usepackage[nointegrals]{wasysym} - \usepackage{ifxetex} - % NLS support packages - % Define default fonts - % Font selection - \usepackage[T1]{fontenc} - % set main and monospaced font - \usepackage[scaled=.90]{helvet} -\usepackage{courier} -\renewcommand{\familydefault}{\sfdefault} - \doxyallsectionsfont{% - \fontseries{bc}\selectfont% - \color{darkgray}% - } - \renewcommand{\DoxyLabelFont}{% - \fontseries{bc}\selectfont% - \color{darkgray}% - } - \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} - % Arguments of doxygenemoji: - % 1) '::' form of the emoji, already LaTeX-escaped - % 2) file with the name of the emoji without the .png extension - % in case image exist use this otherwise use the '::' form - \newcommand{\doxygenemoji}[2]{% - \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% - } - % Page & text layout - \usepackage{geometry} - \geometry{% - a4paper,% - top=2.5cm,% - bottom=2.5cm,% - left=2.5cm,% - right=2.5cm% - } - \usepackage{changepage} - % Allow a bit of overflow to go unnoticed by other means - \tolerance=750 - \hfuzz=15pt - \hbadness=750 - \setlength{\emergencystretch}{15pt} - \setlength{\parindent}{0cm} - \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} - \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} - \doxynormalparskip - % Redefine paragraph/subparagraph environments, using sectsty fonts - \makeatletter - \renewcommand{\paragraph}{% - \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@parafont% - }% - } - \renewcommand{\subparagraph}{% - \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@subparafont% - }% - } - \makeatother - \makeatletter - \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} - \makeatother - % Headers & footers - \usepackage{fancyhdr} - \pagestyle{fancyplain} - \renewcommand{\footrulewidth}{0.4pt} - \fancypagestyle{fancyplain}{ - \fancyhf{} - \fancyhead[LE, RO]{\bfseries\thepage} - \fancyhead[LO]{\bfseries\rightmark} - \fancyhead[RE]{\bfseries\leftmark} - \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } - } - \fancypagestyle{plain}{ - \fancyhf{} - \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } - \renewcommand{\headrulewidth}{0pt} - } - \pagestyle{fancyplain} - \renewcommand{\chaptermark}[1]{% - \markboth{#1}{}% - } - \renewcommand{\sectionmark}[1]{% - \markright{\thesection\ #1}% - } - % ToC, LoF, LoT, bibliography, and index - % Indices & bibliography - \usepackage{natbib} - \usepackage[titles]{tocloft} - \setcounter{tocdepth}{3} - \setcounter{secnumdepth}{5} - % creating indexes - \makeindex - \usepackage{newunicodechar} - \makeatletter - \def\doxynewunicodechar#1#2{% - \@tempswafalse - \edef\nuc@tempa{\detokenize{#1}}% - \if\relax\nuc@tempa\relax - \nuc@emptyargerr - \else - \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% - \nuc@check - \if@tempswa - \@namedef{u8:\nuc@tempa}{#2}% - \fi - \fi - } - \makeatother - \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus - \doxynewunicodechar{²}{${}^{2}$}% Superscript two - \doxynewunicodechar{³}{${}^{3}$}% Superscript three - % Hyperlinks - % Hyperlinks (required, but should be loaded last) - \ifpdf - \usepackage[pdftex,pagebackref=true]{hyperref} - \else - \ifxetex - \usepackage[pagebackref=true]{hyperref} - \else - \usepackage[ps2pdf,pagebackref=true]{hyperref} - \fi - \fi - \hypersetup{% - colorlinks=true,% - linkcolor=blue,% - citecolor=blue,% - unicode,% - pdftitle={My Project},% - pdfsubject={}% - } - % Custom commands used by the header - % Custom commands - \newcommand{\clearemptydoublepage}{% - \newpage{\pagestyle{empty}\cleardoublepage}% - } - % caption style definition - \usepackage{caption} - \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} - % in page table of contents - \IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}} - \etocsettocstyle{\doxytocparskip}{\doxynormalparskip} - \etocsetlevel{subsubsubsection}{4} - \etocsetlevel{subsubsubsubsection}{5} - \etocsetlevel{subsubsubsubsubsection}{6} - \etocsetlevel{subsubsubsubsubsubsection}{7} - \etocsetlevel{paragraph}{8} - \etocsetlevel{subparagraph}{9} - % prevent numbers overlap the titles in toc - \renewcommand{\numberline}[1]{#1~} -% End of preamble, now comes the document contents -%===== C O N T E N T S ===== -\begin{document} - \raggedbottom - % Titlepage & ToC - % To avoid duplicate page anchors due to reuse of same numbers for - % the index (be it as roman numbers) - \hypersetup{pageanchor=false, - bookmarksnumbered=true, - pdfencoding=unicode - } - \pagenumbering{alph} - \begin{titlepage} - \vspace*{7cm} - \begin{center}% - {\Large My Project}\\ - \vspace*{1cm} - {\large Generated by Doxygen 1.9.8}\\ - \end{center} - \end{titlepage} - \clearemptydoublepage - \pagenumbering{roman} - \tableofcontents - \clearemptydoublepage - \pagenumbering{arabic} - % re-enable anchors again - \hypersetup{pageanchor=true} -%--- Begin generated contents --- -%--- End generated contents --- -% Index - \backmatter - \newpage - \phantomsection - \clearemptydoublepage - \addcontentsline{toc}{chapter}{\indexname} - \printindex -% Required for some languages (in combination with latexdocumentpre from the header) -\end{document} diff --git a/barretenberg/cpp/latex/tabu_doxygen.sty b/barretenberg/cpp/latex/tabu_doxygen.sty deleted file mode 100644 index 3f17d1d0280..00000000000 --- a/barretenberg/cpp/latex/tabu_doxygen.sty +++ /dev/null @@ -1,2557 +0,0 @@ -%% -%% This is file `tabu.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% tabu.dtx (with options: `package') -%% -%% This is a generated file. -%% Copyright (FC) 2010-2011 - lppl -%% -%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars -%% -%% ********************************************************************************************** -%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal -%% \begin{tabu} to { preamble } => target specified -%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' -%% -%% tabu works in text and in math modes. -%% -%% X columns: automatic width adjustment + horizontal and vertical alignment -%% \begin{tabu} { X[4c] X[1c] X[-2ml] } -%% -%% Horizontal lines and / or leaders: -%% \hline\hline => double horizontal line -%% \firsthline\hline => for nested tabulars -%% \lasthline\hline => for nested tabulars -%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) -%% Automatic lines / leaders : -%% \everyrow{\hline\hline} -%% -%% Vertical lines and / or leaders: -%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } -%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } -%% -%% Fixed vertical spacing adjustment: -%% \extrarowheight= \extrarowdepth= -%% or: \extrarowsep= => may be prefixed by \global -%% -%% Dynamic vertical spacing adjustment: -%% \abovetabulinesep= \belowtabulinesep= -%% or: \tabulinesep= => may be prefixed by \global -%% -%% delarray.sty shortcuts: in math and text modes -%% \begin{tabu} .... \({ preamble }\) -%% -%% Algorithms reports: -%% \tracingtabu=1 \tracingtabu=2 -%% -%% ********************************************************************************************** -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any later -%% version. The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% -%% This work consists of the main source file tabu.dtx -%% and the derived files -%% tabu.sty, tabu.pdf, tabu.ins -%% -%% tabu : Flexible LaTeX tabulars -%% lppl copyright 2010-2011 by FC -%% - -\NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] -\RequirePackage{array}[2008/09/09] -\RequirePackage{varwidth}[2009/03/30] -\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} -\let\tabu@AtEnd\@empty -\def\TMP@EnsureCode#1={% - \edef\tabu@AtEnd{\tabu@AtEnd - \catcode#1 \the\catcode#1}% - \catcode#1=% -}% \TMP@EnsureCode -\TMP@EnsureCode 33 = 12 % ! -\TMP@EnsureCode 58 = 12 % : (for siunitx) -\TMP@EnsureCode124 = 12 % | -\TMP@EnsureCode 36 = 3 % $ = math shift -\TMP@EnsureCode 38 = 4 % & = tab alignment character -\TMP@EnsureCode 32 = 10 % space -\TMP@EnsureCode 94 = 7 % ^ -\TMP@EnsureCode 95 = 8 % _ -%% Constants -------------------------------------------------------- -\newcount \c@taburow \def\thetaburow {\number\c@taburow} -\newcount \tabu@nbcols -\newcount \tabu@cnt -\newcount \tabu@Xcol -\let\tabu@start \@tempcnta -\let\tabu@stop \@tempcntb -\newcount \tabu@alloc \tabu@alloc=\m@ne -\newcount \tabu@nested -\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} -\newdimen \tabu@target -\newdimen \tabu@spreadtarget -\newdimen \tabu@naturalX -\newdimen \tabucolX -\let\tabu@DELTA \@tempdimc -\let\tabu@thick \@tempdima -\let\tabu@on \@tempdimb -\let\tabu@off \@tempdimc -\newdimen \tabu@Xsum -\newdimen \extrarowdepth -\newdimen \abovetabulinesep -\newdimen \belowtabulinesep -\newdimen \tabustrutrule \tabustrutrule \z@ -\newtoks \tabu@thebody -\newtoks \tabu@footnotes -\newsavebox \tabu@box -\newsavebox \tabu@arstrutbox -\newsavebox \tabu@hleads -\newsavebox \tabu@vleads -\newif \iftabu@colortbl -\newif \iftabu@siunitx -\newif \iftabu@measuring -\newif \iftabu@spread -\newif \iftabu@negcoef -\newif \iftabu@everyrow -\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} -\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} -\newif \iftabu@long -\newif \iftabuscantokens -\def\tabu@rescan {\tabu@verbatim \scantokens } -%% Utilities (for internal usage) ----------------------------------- -\def\tabu@gobblespace #1 {#1} -\def\tabu@gobbletoken #1#2{#1} -\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} -\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble - \else\ifx \@sptoken\@let@token - \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX - \fi\fi -}% \tabu@gobblex -\def\tabu@X{^^J} -{\obeyspaces -\global\let\tabu@spxiii= % saves an active space (for \ifx) -\gdef\tabu@@spxiii{ }} -\def\tabu@ifenvir {% only for \multicolumn - \expandafter\tabu@if@nvir\csname\@currenvir\endcsname -}% \tabu@ifenvir -\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else - \ifx\longtabu#1first\else - second\fi\fi oftwo\endcsname -}% \tabu@ifenvir -\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} -{\catcode`\&=3 -\gdef\tabu@strtrim #1{% #1 = control sequence to trim - \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi - \let\tabu@c@l@r \@empty \let#1\@empty - \else \expandafter \tabu@trimspaces #1\@nnil - \fi -}% \tabu@strtrim -\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% -\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} -\gdef\tabu@lastspace #1{\def #3{#1}% - \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi - \tabu@trimspaces #1\@nnil} -}% \catcode -\def\tabu@sanitizearg #1#2{{% - \csname \ifcsname if@safe@actives\endcsname % - @safe@activestrue\else - relax\fi \endcsname - \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% - \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% -}% \tabu@sanitizearg -\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% - \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! -}% \tabu@textbar -\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} -\def\tabu@everyrow@egroup{% - \iftabu@everyrow \expandafter \endgroup \the\toks@ - \else \ifnum0=`{\fi}% - \fi -}% \tabu@everyrow@egroup -\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule - height \arraystretch \dimexpr\ht\strutbox+\extrarowheight - depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth - width \z@}% -}% \tabu@arstrut -\def\tabu@rearstrut {% - \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax - \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax - \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima - \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi - \tabu@mkarstrut - \fi -}% \tabu@rearstrut -\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} -\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox - \hbox to\z@{\hbox to\z@{\hss - {\tabu@DBG{cyan}\vrule - height \arraystretch \dimexpr\ht\strutbox+\extrarowheight - depth \z@ - width \tabustrutrule}\kern-\tabustrutrule - {\tabu@DBG{pink}\vrule - height \z@ - depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth - width \tabustrutrule}}}% -}% \tabu@DBG@arstrut -\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ - \@nextchar}}% -\def\tabu@savedecl{\ifcat$\d@llarend\else - \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode -}% \tabu@savedecl -\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} -\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } -\let\tabu@trialh@@k \@empty -\def\tabu@nowrite #1#{{\afterassignment}\toks@} -\let\tabu@write\write -\let\tabu@immediate\immediate -\def\tabu@WRITE{\begingroup - \def\immediate\write{\aftergroup\endgroup - \tabu@immediate\tabu@write}% -}% \tabu@WRITE -\expandafter\def\expandafter\tabu@GenericError\expandafter{% - \expandafter\tabu@WRITE\GenericError} -\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} -\def\tabu@noxfootnote [#1]{\@gobble} -\def\tabu@nocolor #1#{\@gobble} -\newcommand*\tabu@norowcolor[2][]{} -\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% - \futurelet\@let@token \tabu@m@ybesiunitx} -\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% - \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi - \tabu@temp}% \tabu@m@ybesiunitx -}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname -\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% -%% Fixed vertical spacing adjustment: \extrarowsep ------------------ -\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% - \iftabu@everyrow \aftergroup\tabu@Gextra - \else \aftergroup\tabu@n@Gextra - \fi - \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra -}% \extrarowsep -\def\tabu@extra {\@ifnextchar_% - {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} - {\ifx ^\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% - \else \let\tabu@temp \@empty - \afterassignment \tabu@setextrasep \extrarowdepth - \fi \tabu@temp}% -}% \tabu@extra -\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} -\def\tabu@extr@ #1#2{\@ifnextchar^% - {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} - {\ifx _\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% - \else \let\tabu@temp \@empty - \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth - \fi \tabu@temp}% -}% \tabu@extr@ -\def\tabu@setextrasep {\extrarowheight=\extrarowdepth - \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth -}% \tabu@setextrasep -\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} -\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} -\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} -\let\tabu@C@extra \z@ -\let\tabu@G@extra \@empty -%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- -\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% - \iftabu@everyrow \aftergroup\tabu@Glinesep - \else \aftergroup\tabu@n@Glinesep - \fi - \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep -}% \tabulinesep -\def\tabu@linesep {\@ifnextchar_% - {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} - {\ifx ^\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% - \else \let\tabu@temp \@empty - \afterassignment \tabu@setlinesep \abovetabulinesep - \fi \tabu@temp}% -}% \tabu@linesep -\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} -\def\tabu@sets@p #1#2{\@ifnextchar^% - {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} - {\ifx _\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% - \else \let\tabu@temp \@empty - \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep - \fi \tabu@temp}% -}% \tabu@sets@p -\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep - \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep -}% \tabu@setlinesep -\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} -\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} -\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} -\let\tabu@C@linesep \z@ -\let\tabu@G@linesep \@empty -%% \global\extrarowsep and \global\tabulinesep ------------------- -\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% - \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% -}% \tabu@Gsave -\def\tabu@Grestore#1#2{% - \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax - \ifcat$\the\toks\currentgrouplevel$\else - \global\let#1\@empty \global\let#2\z@ - \the\toks\currentgrouplevel - \fi -}% \tabu@Grestore -%% Setting code for every row --------------------------------------- -\newcommand*\everyrow{\tabu@everyrow@bgroup - \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop -}% \everyrow -\def\tabu@evrstartstop {\@ifnextchar^% - {\afterassignment \tabu@evrstartstop \tabu@stop=}% - {\ifx ^\@let@token - \afterassignment\tabu@evrstartstop \tabu@start=% - \else \afterassignment\tabu@everyr@w \toks@ - \fi}% -}% \tabu@evrstartstop -\def\tabu@everyr@w {% - \xdef\tabu@everyrow{% - \noexpand\tabu@everyrowfalse - \let\noalign \relax - \noexpand\tabu@rowfontreset - \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors - \let\noexpand\tabu@docline \noexpand\tabu@docline@evr - \the\toks@ - \noexpand\tabu@evrh@@k - \noexpand\tabu@rearstrut - \global\advance\c@taburow \@ne}% - \iftabu@everyrow \toks@\expandafter - {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% - \else \xdef\tabu@evr@G{\the\toks@}% - \fi - \tabu@everyrow@egroup -}% \tabu@everyr@w -\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only -\tabu@evr{} -%% line style and leaders ------------------------------------------- -\newcommand*\newtabulinestyle [1]{% - {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% -}% \newtabulinestyle -\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% - \tabu@sanitizearg {#1}\@tempa - \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi - \global\expandafter\let - \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi -}% \tabu@newlinestyle -\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% - \iftabu@everyrow - \toks@\expandafter{\expandafter \def \expandafter - \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% - \gdef\tabu@ls@{\tabu@ls@L}% - \else - \global\let\tabu@ls@G \tabu@thestyle - \gdef\tabu@ls@{\tabu@ls@G}% - \fi - \tabu@everyrow@egroup -}% \tabulinestyle -\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} -\def\tabu@rulecolor #1{\toks@{}% - \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% - \tabu@temp - \tabu@rulearc -}% \tabu@rulecolor -\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp - \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% - \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% - \fi - \tabu@temp -}% \tabu@ruledrsc@ -\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} -\def\tabu@rule@drsc@ #1#2{% - \iftabu@everyrow - \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% - \else \toks@{\def\CT@drsc@{\color #1{#2}}}% - \fi - \else - \ifx \\#1#2\\\global\let\CT@drsc@ \relax - \else \gdef\CT@drsc@{\color #1{#2}}% - \fi - \fi - \tabu@rulearc -}% \tabu@rule@drsc@ -\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} -\def\tabu@rule@arc@ #1#2{% - \iftabu@everyrow - \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% - \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% - \fi - \toks@\expandafter{\the\toks@ - \let\tabu@arc@L \CT@arc@ - \let\tabu@drsc@L \CT@drsc@ - \ignorespaces}% - \else - \ifx \\#1#2\\\gdef\CT@arc@{}% - \else \gdef\CT@arc@{\color #1{#2}}% - \fi - \global\let\tabu@arc@G \CT@arc@ - \global\let\tabu@drsc@G \CT@drsc@ - \fi - \tabu@everyrow@egroup -}% \tabu@rule@arc@ -\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} -\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} -\def\tabu@rowc@lors #1#2#3{% - \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil - \@defaultunits \tabu@start =\number0#1\relax \@nnil - \ifnum \count@<\tw@ \count@=\tw@ \fi - \advance\tabu@start \m@ne - \ifnum \tabu@start<\z@ \tabu@start \z@ \fi - \tabu@rowcolorseries #3\in@..\in@ \@nnil -}% \tabu@rowcolors -\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% - \ifx \in@#1\relax - \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% - \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ - \fi - \else - \ifx \\#2\\\tabu@rowcolorserieserror \fi - \tabu@sanitizearg{#1}\tabu@temp - \tabu@sanitizearg{#2}\@tempa - \advance\count@ \m@ne - \iftabu@everyrow - \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% - \ifnum ##2=\c@taburow - \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi - \ifnum \c@taburow<##2 \else - \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ - \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \rowcolor{tabu@rc@\the\tabu@nested}\fi}% - }\edef\x{\noexpand\tabu@rc@ {\the\count@} - {\the\tabu@start} - {\tabu@temp} - {\@tempa}% - }\x - \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% - \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% - \else % inside \noalign - \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% - \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% - \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% - \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne - \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \rowcolor{tabu@rc@\the\tabu@nested}}% - }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x - \global\let\tabu@rc@G \tabu@rc@ - \fi - \fi - \tabu@everyrow@egroup -}% \tabu@rowcolorseries -\tabuDisableCommands {\let\tabu@rc@ \@empty } -\def\tabu@rowcolorserieserror {\PackageError{tabu} - {Invalid syntax for \string\taburowcolors - \MessageBreak Please look at the documentation!}\@ehd -}% \tabu@rowcolorserieserror -\newcommand*\tabureset {% - \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ - \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% -}% \tabureset -%% Parsing the line styles ------------------------------------------ -\def\tabu@getline #1{\begingroup - \csname \ifcsname if@safe@actives\endcsname % - @safe@activestrue\else - relax\fi \endcsname - \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa - \let\tabu@thestyle \relax - \ifcsname tabu@linestyle@\@tempa \endcsname - \edef\tabu@thestyle{\endgroup - \def\tabu@thestyle{\expandafter\noexpand - \csname tabu@linestyle@\@tempa\endcsname}% - }\tabu@thestyle - \else \expandafter\tabu@definestyle \tabu@temp \@nil - \fi -}% \tabu@getline -\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter - \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen - \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined - \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs - \def\tabu@temp{\tabu@getparam{thick}}% - \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% - \fi - {% - \let\tabu@ \relax - \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) - \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% - \expandafter}\expandafter - \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) - \def\;{\def\:}% - \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) - \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) - \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi - \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi - \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi - \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen - \tabu@on \tabulineon \fi\fi - \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen - \tabu@off \tabulineoff \fi\fi - \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi - \in@true % - \else \in@false % - \fi - \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% - \else \edef\tabu@thick{\the\tabu@thick}% - \fi - \edef \tabu@thestyle ##1##2{\endgroup - \def\tabu@thestyle{% - \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} - {\the\tabu@on}{##1} - {\the\tabu@off}{##2}% - \else \noexpand\tabu@rulesstyle - {##1\vrule width \tabu@thick}% - {##1\leaders \hrule height \tabu@thick \hfil}% - \fi}% - }\expandafter \expandafter - \expandafter \tabu@thestyle \expandafter - \expandafter \expandafter - {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% -}% \tabu@definestyle -{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active - \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} - \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} -}% \catcode -\def\tabu@oxiii #1{% - \ifcase \ifx n#1\z@ \else - \ifx f#1\@ne\else - \tw@ \fi\fi - \expandafter\tabu@onxiii - \or \expandafter\tabu@ofxiii - \else o% - \fi#1}% -\def\tabu@onxiii #1#2{% - \ifcase \ifx !#2\tw@ \else - \ifcat.\noexpand#2\z@ \else - \ifx \tabu@spxiii#2\@ne\else - \tw@ \fi\fi\fi - \tabu@getparam{on}#2\expandafter\@gobble - \or \expandafter\tabu@onxiii % (space is active) - \else o\expandafter\@firstofone - \fi{#1#2}}% -\def\tabu@ofxiii #1#2{% - \ifx #2f\expandafter\tabu@offxiii - \else o\expandafter\@firstofone - \fi{#1#2}} -\def\tabu@offxiii #1#2{% - \ifcase \ifx !#2\tw@ \else - \ifcat.\noexpand#2\z@ \else - \ifx\tabu@spxiii#2\@ne \else - \tw@ \fi\fi\fi - \tabu@getparam{off}#2\expandafter\@gobble - \or \expandafter\tabu@offxiii % (space is active) - \else o\expandafter\@firstofone - \fi{#1#2}} -\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} -\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef - \ifx \tabu@#1\else % no more spec - \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi -}% \tabu@getcolor -\def\tabu@getc@l@r #1\tabu@ {% - \def\tabu@temp{#1}\tabu@strtrim \tabu@temp - \ifx \tabu@temp\@empty - \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists - \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r - \else \let\tabu@c@lon \tabu@c@l@r - \fi - %\else \tabu@warncolour{\tabu@temp}% - \fi%\fi - \tabu@ % next spec -}% \tabu@getc@l@r -\def\tabu@warncolour #1{\PackageWarning{tabu} - {Color #1 is not defined. Default color used}% -}% \tabu@warncolour -\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% - \ifx \tabu@leaders\tabu@leaders@G \else - \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi -}% \tabu@leadersstyle -\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined - \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% -}% \tabu@rulesstyle -%% The leaders boxes ------------------------------------------------ -\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color - {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor - {% % but the leaders boxes should have colors ! - \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% - \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% - \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% - \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% - \global\let\tabu@thehleaders \tabu@theleaders - }% - {% - \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% - \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% - \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% - \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% - \global\let\tabu@thevleaders \tabu@theleaders - }% - \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% - }% -}% \tabu@LEADERS -\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} -\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color - \global\setbox \tabu@leads=\@box{% - {#3\tabu@therule{#1}{#2}}% - \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi - {#3\tabu@therule{#1}{#2}}}% - \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss - {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% - \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% - {##1\tabu@therule{#1}{#2}}% - \xleaders \copy\tabu@leads \@ss - \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% - }\tabu@theleaders{#3}% -}% \tabu@l@@d@rs -%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- -\newcommand*\tabu {\tabu@longfalse - \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% - \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi - \expandafter\let\csname tabu*\endcsname \tabu - \expandafter\def\csname endtabu*\endcsname{\endtabu}% - \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget -}% {tabu} -\let\tabu@tabular \tabular % -\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} -\newcommand*\longtabu {\tabu@longtrue - \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi - \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% - \LTchunksize=\@M - \expandafter\let\csname tabu*\endcsname \tabu - \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% - \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } - \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget -}% {longtabu} -\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} -\def\tabu@nolongtabu{\PackageError{tabu} - {longtabu requires the longtable package}\@ehd} -%% Read the target and then : \tabular or \@array ------------------ -\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } -\def\tabu@sett@rget {\tabu@target \z@ - \ifcase \ifx \bgroup\@let@token \z@ \else - \ifx \@sptoken\@let@token \@ne \else - \if t\@let@token \tw@ \else - \if s\@let@token \thr@@\else - \z@\fi\fi\fi\fi - \expandafter\tabu@begin - \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget - \or \expandafter\tabu@to - \or \expandafter\tabu@spread - \fi -}% \tabu@sett@rget -\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} -\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} -\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } -\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } -\def\tabu@linegoalt@rget {% - \ifx \tabu@temp\LNGL@setlinegoal - \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal - \tabu@begin -}% \tabu@linegoalt@rget -\def\tabu@begin #1#{% - \iftabu@measuring \expandafter\tabu@nestedmeasure \fi - \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty - \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% - \fi - \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil -}% \tabu@begin -\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup - \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% - \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% -}% \tabu@tabu@ -\def\tabu@nestedmeasure {% - \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax - \tabu@spreadtrue - \else \begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}% - \expandafter\tabu@collectbody\expandafter\tabu@quickrule - \expandafter\endgroup - \fi -}% \tabu@nestedmeasure -\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} -%% \tabu@setup \tabu@init \tabu@indent -\def\tabu@setup{\tabu@alloc@ - \ifcase \tabu@nested - \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ - \let\tabu@afterendpar \par - \fi\fi\fi - \def\tabu@aligndefault{c}\tabu@init \tabu@indent - \else % - \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth - \fi - \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined - \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% - \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... - \let\@endpbox \tabu@endpbox % idem " " " " " " - \let\@tabarray \tabu@tabarray % idem " " " " " " - \tabu@setcleanup \tabu@setreset -}% \tabu@setup -\def\tabu@init{\tabu@starttimer \tabu@measuringfalse - \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% - \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline - \let\firstline \tabu@firstline \let\lastline \tabu@lastline - \let\hline \tabu@hline \let\@xhline \tabu@xhline - \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox - \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi - \tabu@trivlist % - \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext - \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering - \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft - \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering - \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft - \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont - \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x - \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar - \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok - \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn - \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! - \let\tabu@endpbox \@endpbox % idem " " " " " " " - \let\tabu@tabarray \@tabarray % idem " " " " " " " - \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) - \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi -}% \tabu@init -\def\tabu@indent{% correction for indentation - \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget - \everypar\expandafter{% - \the\everypar\everypar\expandafter{\the\everypar}% - \setbox\z@=\lastbox - \ifdim\wd\z@>\z@ \edef\tabu@thetarget - {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi - \box\z@}% - \fi\fi -}% \tabu@indent -\def\tabu@setcleanup {% saves last global assignments - \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax - \def\tabu@aftergroupcleanup{% - \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% - \else - \def\tabu@aftergroupcleanup{% - \aftergroup\aftergroup\aftergroup\tabu@cleanup - \let\tabu@aftergroupcleanup \relax}% - \fi - \let\tabu@arc@Gsave \tabu@arc@G - \let\tabu@arc@G \tabu@arc@L % - \let\tabu@drsc@Gsave \tabu@drsc@G - \let\tabu@drsc@G \tabu@drsc@L % - \let\tabu@ls@Gsave \tabu@ls@G - \let\tabu@ls@G \tabu@ls@L % - \let\tabu@rc@Gsave \tabu@rc@G - \let\tabu@rc@G \tabu@rc@L % - \let\tabu@evr@Gsave \tabu@evr@G - \let\tabu@evr@G \tabu@evr@L % - \let\tabu@celllalign@save \tabu@celllalign - \let\tabu@cellralign@save \tabu@cellralign - \let\tabu@cellleft@save \tabu@cellleft - \let\tabu@cellright@save \tabu@cellright - \let\tabu@@celllalign@save \tabu@@celllalign - \let\tabu@@cellralign@save \tabu@@cellralign - \let\tabu@@cellleft@save \tabu@@cellleft - \let\tabu@@cellright@save \tabu@@cellright - \let\tabu@rowfontreset@save \tabu@rowfontreset - \let\tabu@@rowfontreset@save\tabu@@rowfontreset - \let\tabu@rowfontreset \@empty - \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset - \edef\c@taburow@save {\the\c@taburow}% - \edef\tabu@naturalX@save {\the\tabu@naturalX}% - \let\tabu@naturalXmin@save \tabu@naturalXmin - \let\tabu@naturalXmax@save \tabu@naturalXmax - \let\tabu@mkarstrut@save \tabu@mkarstrut - \edef\tabu@clarstrut{% - \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax - \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax - \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% -}% \tabu@setcleanup -\def\tabu@cleanup {\begingroup - \globaldefs\@ne \tabu@everyrowtrue - \let\tabu@arc@G \tabu@arc@Gsave - \let\CT@arc@ \tabu@arc@G - \let\tabu@drsc@G \tabu@drsc@Gsave - \let\CT@drsc@ \tabu@drsc@G - \let\tabu@ls@G \tabu@ls@Gsave - \let\tabu@ls@ \tabu@ls@G - \let\tabu@rc@G \tabu@rc@Gsave - \let\tabu@rc@ \tabu@rc@G - \let\CT@do@color \relax - \let\tabu@evr@G \tabu@evr@Gsave - \let\tabu@celllalign \tabu@celllalign@save - \let\tabu@cellralign \tabu@cellralign@save - \let\tabu@cellleft \tabu@cellleft@save - \let\tabu@cellright \tabu@cellright@save - \let\tabu@@celllalign \tabu@@celllalign@save - \let\tabu@@cellralign \tabu@@cellralign@save - \let\tabu@@cellleft \tabu@@cellleft@save - \let\tabu@@cellright \tabu@@cellright@save - \let\tabu@rowfontreset \tabu@rowfontreset@save - \let\tabu@@rowfontreset \tabu@@rowfontreset@save - \tabu@naturalX =\tabu@naturalX@save - \let\tabu@naturalXmax \tabu@naturalXmax@save - \let\tabu@naturalXmin \tabu@naturalXmin@save - \let\tabu@mkarstrut \tabu@mkarstrut@save - \c@taburow =\c@taburow@save - \ifcase \tabu@nested \tabu@alloc \m@ne\fi - \endgroup % - \ifcase \tabu@nested - \the\tabu@footnotes \global\tabu@footnotes{}% - \tabu@afterendpar \tabu@elapsedtime - \fi - \tabu@clarstrut - \everyrow\expandafter {\tabu@evr@G}% -}% \tabu@cleanup -\let\tabu@afterendpar \relax -\def\tabu@setreset {% - \edef\tabu@savedparams {% \relax for \tabu@message@save - \ifmmode \col@sep \the\arraycolsep - \else \col@sep \the\tabcolsep \fi \relax - \arrayrulewidth \the\arrayrulewidth \relax - \doublerulesep \the\doublerulesep \relax - \extratabsurround \the\extratabsurround \relax - \extrarowheight \the\extrarowheight \relax - \extrarowdepth \the\extrarowdepth \relax - \abovetabulinesep \the\abovetabulinesep \relax - \belowtabulinesep \the\belowtabulinesep \relax - \def\noexpand\arraystretch{\arraystretch}% - \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% - \begingroup - \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu - \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi - \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi - \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L - \expandafter \endgroup \expandafter - \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena - \let\tabu@arc@G \tabu@arc@L - \let\tabu@drsc@G \tabu@drsc@L - \let\tabu@ls@G \tabu@ls@L - \let\tabu@rc@G \tabu@rc@L - \let\tabu@evr@G \tabu@evr@L}% - \def\tabu@reset{\tabu@savedparams - \tabu@everyrowtrue \c@taburow \z@ - \let\CT@arc@ \tabu@arc@L - \let\CT@drsc@ \tabu@drsc@L - \let\tabu@ls@ \tabu@ls@L - \let\tabu@rc@ \tabu@rc@L - \global\tabu@alloc \tabu@alloc@save - \everyrow\expandafter{\tabu@evr@L}}% -}% \tabu@reset -\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} -\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} -%% The Rewriting Process ------------------------------------------- -\def\tabu@newcolumntype #1{% - \expandafter\tabu@new@columntype - \csname NC@find@\string#1\expandafter\endcsname - \csname NC@rewrite@\string#1\endcsname - {#1}% -}% \tabu@newcolumntype -\def\tabu@new@columntype #1#2#3{% - \def#1##1#3{\NC@{##1}}% - \let#2\relax \newcommand*#2% -}% \tabu@new@columntype -\def\tabu@privatecolumntype #1{% - \expandafter\tabu@private@columntype - \csname NC@find@\string#1\expandafter\endcsname - \csname NC@rewrite@\string#1\expandafter\endcsname - \csname tabu@NC@find@\string#1\expandafter\endcsname - \csname tabu@NC@rewrite@\string#1\endcsname - {#1}% -}% \tabu@privatecolumntype -\def\tabu@private@columntype#1#2#3#4{% - \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% - \tabu@new@columntype#3#4% -}% \tabu@private@columntype -\let\tabu@privatecolumns \@empty -\newcommand*\tabucolumn [1]{\expandafter \def \expandafter - \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns - \NC@do #1}}% -\let\tabu@highprioritycolumns \@empty -%% The | ``column'' : rewriting process -------------------------- -\tabu@privatecolumntype |{\tabu@rewritevline} -\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% - \expandafter \NC@find \tabu@rewritten} -\def\tabu@lines #1{% - \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi - \NC@list\expandafter{\the\NC@list \NC@do #1}% -}% \tabu@lines@ -\def\tabu@vlinearg #1{% - \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% - \else\tabu@getline {#1}% - \fi - \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% - }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% - \expandafter \tabu@keepls \tabu@thestyle \@nil -}% \tabu@vlinearg -\def\tabu@keepls #1\@nil{% - \ifcat $\@cdr #1\@nil $% - \ifx \relax#1\else - \ifx \tabu@ls@#1\else - \let#1\relax - \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer - \tabu@savels\noexpand#1}\fi\fi\fi -}% \tabu@keepls -\def\tabu@thevline {\begingroup - \ifdefined\tabu@leaders - \setbox\@tempboxa=\vtop to\dimexpr - \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% - \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox - \box\@tempboxa - \else - \tabu@thevrule - \fi \endgroup -}% \tabu@thevline -\def\tabu@savels #1{% - \expandafter\let\csname\string#1\endcsname #1% - \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset - \tabu@resetls#1}}% -\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% -%% \multicolumn inside tabu environment ----------------------------- -\tabu@newcolumntype \tabu@rewritemulticolumn{% - \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group - \NC@list{\NC@do *}\tabu@textbar \tabu@lines - \tabu@savedecl - \tabu@privatecolumns - \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% - \let\tabu@savels \relax - \NC@find -}% \tabu@rewritemulticolumn -\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} -\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} -\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup - \tabu@everyrowtrue - \NC@list{\NC@do \tabu@rewritemulticolumn}% - \expandafter\@gobbletwo % gobbles \multispan{#1} - \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% - {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi - {#3}}% -}% \tabu@multic@lumn -%% The X column(s): rewriting process ----------------------------- -\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} -\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } -\def\tabu@siunitx #1{\@ifnextchar \bgroup - {\tabu@rewriteX@Ss{#1}} - {\tabu@nosiunitx{#1}}} -\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% - \@defaultunits \let\tabu@temp =#2\relax\@nnil - \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi - \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% - }\expandafter\NC@find \the\@temptokena \relax - }\expandafter\NC@rewrite@S \@gobble #2\relax - \else \tabu@siunitxerror - \fi - \expandafter \NC@find \tabu@rewritten -}% \tabu@rewriteX@Ss -\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! - \MessageBreak X column can only embed siunitx S or s columns}\@ehd -}% \tabu@siunitxerror -\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% - \iftabu@measuring - \else \tabu@measuringtrue % first X column found in the preamble - \let\@halignto \relax \let\tabu@halignto \relax - \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ - \else \tabu@spreadtarget \z@ \fi - \ifdim \tabu@target=\z@ - \setlength\tabu@target \tabu@thetarget - \tabu@message{\tabu@message@defaulttarget}% - \else \tabu@message{\tabu@message@target}\fi - \fi -}% \tabu@rewriteX -\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax - \def\tabu@rewritten{l}} -\def\tabu@Xarg #1#2#3{% - \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty - \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty - \ifx\\#1\\% - \def\tabu@rewritten{p}\tabucolX \p@ % - \else - \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ - \tabu@Xparse {}#1\relax - \fi - \tabu@Xrewritten{#2}{#3}% -}% \tabu@Xarg -\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} -\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} -\def\tabu@Xtest{% - \ifcase \ifx \relax\@let@token \z@ \else - \if ,\@let@token \m@ne\else - \if p\@let@token 1\else - \if m\@let@token 2\else - \if b\@let@token 3\else - \if l\@let@token 4\else - \if c\@let@token 5\else - \if r\@let@token 6\else - \if j\@let@token 7\else - \if L\@let@token 8\else - \if C\@let@token 9\else - \if R\@let@token 10\else - \if J\@let@token 11\else - \ifx \@sptoken\@let@token 12\else - \if .\@let@token 13\else - \if -\@let@token 13\else - \ifcat $\@let@token 14\else - 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax - \or \tabu@Xtype {p}% - \or \tabu@Xtype {m}% - \or \tabu@Xtype {b}% - \or \tabu@Xalign \raggedright\relax - \or \tabu@Xalign \centering\relax - \or \tabu@Xalign \raggedleft\relax - \or \tabu@Xalign \tabu@justify\relax - \or \tabu@Xalign \RaggedRight\raggedright - \or \tabu@Xalign \Centering\centering - \or \tabu@Xalign \RaggedLeft\raggedleft - \or \tabu@Xalign \justifying\tabu@justify - \or \expandafter \tabu@Xparsespace - \or \expandafter \tabu@Xcoef - \or \expandafter \tabu@Xm@th - \or \tabu@Xcoef{}% - \else\expandafter \tabu@Xparse - \fi -}% \tabu@Xtest -\def\tabu@Xalign #1#2{% - \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} - {Duplicate horizontal alignment specification}\fi - \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax - \else \def\tabu@Xlcr{#2}\let#2\relax\fi - \expandafter\tabu@Xparse -}% \tabu@Xalign -\def\tabu@Xtype #1{% - \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} - {Duplicate vertical alignment specification}\fi - \def\tabu@rewritten{#1}\expandafter\tabu@Xparse -}% \tabu@Xtype -\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% - \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi -}% \tabu@Xcoef -\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ - \tabu@Xparse{}% -}% \tabu@Xc@ef -\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} -\def\tabu@Xd@sp{\let\tabu@Xmath=$% - \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% - \expandafter\tabu@Xparse - \else \expandafter\tabu@Xparse\expandafter{\expandafter}% - \fi -}% \tabu@Xd@sp -\def\tabu@Xrewritten {% - \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi - \ifdim \tabucolX<\z@ \tabu@negcoeftrue - \else\ifdim \tabucolX=\z@ \tabucolX \p@ - \fi\fi - \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% - \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% - \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% - >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% - \tabu@rewritten {\tabu@hsize \tabu@temp}% - <{##2\ifx$\tabu@Xmath$\fi}}% - }\tabu@rewritten -}% \tabu@Xrewritten -\def\tabu@hsize #1#2{% - \ifdim #2\p@<\z@ - \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else - \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi - \fi - \else #2\tabucolX - \fi -}% \tabu@hsize -%% \usetabu and \preamble: rewriting process --------------------- -\tabu@privatecolumntype \usetabu [1]{% - \ifx\\#1\\\tabu@saveerr{}\else - \@ifundefined{tabu@saved@\string#1} - {\tabu@saveerr{#1}} - {\let\tabu@rewriteX \tabu@rewriteXrestore - \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% - \fi -}% \NC@rewrite@\usetabu -\tabu@privatecolumntype \preamble [1]{% - \ifx\\#1\\\tabu@saveerr{}\else - \@ifundefined{tabu@saved@\string#1} - {\tabu@saveerr{#1}} - {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% - \fi -}% \NC@rewrite@\preamble -%% Controlling the rewriting process ------------------------------- -\tabu@newcolumntype \tabu@rewritefirst{% - \iftabu@long \aftergroup \tabu@longpream % - \else \aftergroup \tabu@pream - \fi - \let\tabu@ \relax \let\tabu@hsize \relax - \let\tabu@Xcoefs \@empty \let\tabu@savels \relax - \tabu@Xcol \z@ \tabu@cnt \tw@ - \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse - \global\setbox\@arstrutbox \box\@arstrutbox - \NC@list{\NC@do *}\tabu@textbar \tabu@lines - \NC@list\expandafter{\the\NC@list \NC@do X}% - \iftabu@siunitx % - \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi - \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% - \expandafter\def\expandafter\tabu@NC@list\expandafter{% - \the\expandafter\NC@list \tabu@NC@list}% % * | X S - \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu - \expandafter \NC@do \expandafter\preamble - \the\NC@list \NC@do \tabu@rewritemiddle - \NC@do \tabu@rewritelast}% - \tabu@savedecl - \tabu@privatecolumns - \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle -}% NC@rewrite@\tabu@rewritefirst -\tabu@newcolumntype \tabu@rewritemiddle{% - \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast -}% \NC@rewrite@\tabu@rewritemiddle -\tabu@newcolumntype \tabu@rewritelast{% - \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne - \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle - \NC@do \tabu@rewritelast}% - \else \let\tabu@prev\tabu@temp - \fi - \ifcase \tabu@cnt \expandafter\tabu@endrewrite - \else \expandafter\NC@find \expandafter\tabu@rewritemiddle - \fi -}% \NC@rewrite@\tabu@rewritelast -%% Choosing the strategy -------------------------------------------- -\def\tabu@endrewrite {% - \let\tabu@temp \NC@find - \ifx \@arrayright\relax \let\@arrayright \@empty \fi - \count@=% - \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print - \iftabu@measuring - \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer - \tabu@target \csname tabu@\the\tabu@nested.T\endcsname - \tabucolX \csname tabu@\the\tabu@nested.X\endcsname - \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% - \fi - \else\iftabu@measuring 4 % X columns - \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer - \tabu@target \the\tabu@target - \tabu@spreadtarget \the\tabu@spreadtarget}% - \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% - \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% - \let\tabu@Xcoefs \relax - \else\ifcase\tabu@nested \thr@@ % outer, no X - \global\let\tabu@afterendpar \relax - \else \@ne % inner, no X, outer in mode 1 or 2 - \fi - \ifdefined\tabu@usetabu - \else \ifdim\tabu@target=\z@ - \else \let\tabu@temp \tabu@extracolsep - \fi\fi - \fi - \fi - \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% - \tabu@temp -}% \tabu@endrewrite -\def\tabu@extracolsep{\@defaultunits \expandafter\let - \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil - \ifx \tabu@temp\@sptoken - \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep - \else - \edef\tabu@temp{\noexpand\NC@find - \if |\noexpand\tabu@temp @% - \else\if !\noexpand\tabu@temp @% - \else !% - \fi\fi - {\noexpand\extracolsep\noexpand\@flushglue}}% - \fi - \tabu@temp -}% \tabu@extrac@lsep -%% Implementing the strategy ---------------------------------------- -\long\def\tabu@pream #1\@preamble {% - \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup - \NC@list\expandafter {\tabu@NC@list}% in case of nesting... - \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi - \let\tabu@savedpreamble \@preamble - \global\let\tabu@elapsedtime \relax - \tabu@thebody ={#1\tabu@aftergroupcleanup}% - \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody - \@preamble}% - \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) - \tabu@select -}% \tabu@pream -\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% - \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup - \NC@list\expandafter {\tabu@NC@list}% in case of nesting... - \let\tabu@savedpreamble \@preamble - \global\let\tabu@elapsedtime \relax - \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% - \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) - \tabu@select -}% \tabu@longpream -\def\tabu@select {% - \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi - \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi - \ifcase \count@ - \global\let\tabu@elapsedtime \relax - \tabu@seteverycr - \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) - \or % exit in vertical measure + struts per cell because no X and outer in mode 3 - \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \tabu@seteverycr - \expandafter \tabuthepreamble - \or % exit without measure because no X and outer in mode 4 - \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty - \tabu@seteverycr - \expandafter \tabuthepreamble - \else % needs trials - \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty - \tabu@savecounters - \expandafter \tabu@setstrategy - \fi -}% \tabu@select -\def\tabu@@ {\gdef\tabu@mkpreambuffer} -%% Protections to set up before trials ------------------------------ -\def\tabu@setstrategy {\begingroup % - \tabu@trialh@@k \tabu@cnt \z@ % number of trials - \hbadness \@M \let\hbadness \@tempcnta - \hfuzz \maxdimen \let\hfuzz \@tempdima - \let\write \tabu@nowrite\let\GenericError \tabu@GenericError - \let\savetabu \@gobble \let\tabudefaulttarget \linewidth - \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote - \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor - \let\tabu@aftergroupcleanup \relax % only after the last trial - \tabu@mkpreambuffer - \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init - \def\tabu@lasttry{\m@ne\p@}\fi - \begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % - \tabu@collectbody \tabu@strategy % -}% \tabu@setstrategy -\def\tabu@savecounters{% - \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% - \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax -}% \tabu@savecounters -\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) - \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs - \ifdim \dimen@>\z@ - \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax - \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi - \fi -}% \tabucolX@init -\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum - \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ - \else -#2\p@ \tabu@negcoeftrue - \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax - \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi - \tabu@wddef{#1}{0pt}% - \fi -}% \tabu@Xinit -%% Collecting the environment body ---------------------------------- -\long\def\tabu@collectbody #1#2\end #3{% - \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% - \ifx \tabu@stack\@empty - \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% - \def\tabu@end@envir{\end{#3}}% - \iftabuscantokens - \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% - \else \def\tabu@endenvir {\let\endarray \@empty - \end{#3}\tabu@gobbleX}% - \fi - \else \def\tabu@endenvir {\end{#3}}\fi}% - \let\tabu@collectbody \tabu@endofcollect - \else\def\tabu@temp{#3}% - \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% - \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% - \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% - \else \toks@\expandafter{\the\toks@ #2\end{#3}}% - \fi\fi\fi - \fi - \tabu@collectbody{#1}% -}% \tabu@collectbody -\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% -\def\tabu@endofcollect #1{\ifnum0=`{}\fi - \expandafter\endgroup \the\toks@ #1% -}% \tabu@endofcollect -%% The trials: switching between strategies ------------------------- -\def\tabu@strategy {\relax % stops \count@ assignment ! - \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) - \expandafter \tabu@endoftrials - \or % case 1 = exit in vertical measure (outer in mode 3) - \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% - \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% - \expandafter \tabu@endoftrials - \or % case 2 = exit with a rule replacing the table (outer in mode 4) - \expandafter \tabu@quickend - \or % case 3 = outer is in mode 3 because of no X - \begingroup - \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \expandafter \tabu@measuring - \else % case 4 = horizontal measure - \begingroup - \global\let\tabu@elapsedtime \tabu@message@etime - \long\def\multicolumn##1##2##3{\multispan{##1}}% - \let\tabu@startpboxORI \@startpbox - \iftabu@spread - \def\tabu@naturalXmax {\z@}% - \let\tabu@naturalXmin \tabu@naturalXmax - \tabu@evr{\global\tabu@naturalX \z@}% - \let\@startpbox \tabu@startpboxmeasure - \else\iftabu@negcoef - \let\@startpbox \tabu@startpboxmeasure - \else \let\@startpbox \tabu@startpboxquick - \fi\fi - \expandafter \tabu@measuring - \fi -}% \tabu@strategy -\def\tabu@measuring{\expandafter \tabu@trial \expandafter - \count@ \the\count@ \tabu@endtrial -}% \tabu@measuring -\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} -\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr - \ifx \tabu@savecounters\relax \else - \let\tabu@savecounters \relax \tabu@clckpt \fi - $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi - \expandafter{\expandafter \tabuthepreamble - \the\tabu@thebody - \csname tabu@adl@endtrial\endcsname - \endarray}$\egroup % got \tabu@box -}% \tabu@shorttrial -\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr - \ifx \tabu@savecounters\relax \else - \let\tabu@savecounters \relax \tabu@clckpt \fi - \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi - \expandafter{\expandafter \tabuthepreamble - \the\tabu@thebody - \tabuendlongtrial}\egroup % got \tabu@box -}% \tabu@longtrial -\def\tabuendlongtrial{% no @ allowed for \scantokens - \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne - \LT@get@widths -}% \tabuendlongtrial -\def\tabu@adl@endtrial{% - \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! -\def\tabu@seteverycr {\tabu@reset - \everycr \expandafter{\the\everycr \tabu@everycr}% - \let\everycr \tabu@noeverycr % -}% \tabu@seteverycr -\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} -\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} -\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} -\def\tabu@endoftrials {% - \iftabuscantokens \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\expandafter \tabu@closetrialsgroup \expandafter - \tabu@rescan \expandafter{% - \expandafter\tabuthepreamble - \the\expandafter\tabu@thebody - \iftabu@long \else \endarray \fi}} - {\expandafter\tabu@closetrialsgroup \expandafter - \tabuthepreamble - \the\tabu@thebody}% - \tabu@endenvir % Finish ! -}% \tabu@endoftrials -\def\tabu@closetrialsgroup {% - \toks@\expandafter{\tabu@endenvir}% - \edef\tabu@bufferX{\endgroup - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target - \tabu@cnt \the\tabu@cnt - \def\noexpand\tabu@endenvir{\the\toks@}% - %Quid de \@halignto = \tabu@halignto ?? - }% \tabu@bufferX - \tabu@bufferX - \ifcase\tabu@nested % print out (outer in mode 0) - \global\tabu@cnt \tabu@cnt - \tabu@evr{\tabu@verticaldynamicadjustment}% - \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty - \let\@finalstrut \tabu@finalstrut - \else % vertical measure of nested tabu - \tabu@evr{\tabu@verticalinit}% - \tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \fi - \tabu@clckpt \let\@halignto \tabu@halignto - \let\@halignto \@empty - \tabu@seteverycr - \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ - \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) - \fi\fi -}% \tabu@closetrialsgroup -\def\tabu@quickend {\expandafter \endgroup \expandafter - \tabu@target \the\tabu@target \tabu@quickrule - \let\endarray \relax \tabu@endenvir -}% \tabu@quickend -\def\tabu@endtrial {\relax % stops \count@ assignment ! - \ifcase \count@ \tabu@err % case 0 = impossible here - \or \tabu@err % case 1 = impossible here - \or \tabu@err % case 2 = impossible here - \or % case 3 = outer goes into mode 0 - \def\tabu@bufferX{\endgroup}\count@ \z@ - \else % case 4 = outer goes into mode 3 - \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) - \else \tabu@arith % or 2 (outer in mode 4) - \fi - \count@=% - \ifcase\tabu@nested \thr@@ % outer goes into mode 3 - \else\iftabu@measuring \tw@ % outer is in mode 4 - \else \@ne % outer is in mode 3 - \fi\fi - \edef\tabu@bufferX{\endgroup - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target}% - \fi - \expandafter \tabu@bufferX \expandafter - \count@ \the\count@ \tabu@strategy -}% \tabu@endtrial -\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} -%% The algorithms: compute the widths / stop or go on --------------- -\def\tabu@arithnegcoef {% - \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs -}% \tabu@arithnegcoef -\def\tabu@arith@negcoef #1#2{% - \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition - \advance\@tempdima #2\tabucolX - \else - \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated - \advance\dimen@ -#2\p@ - \advance\@tempdima -#2\tabucolX - \else - \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised - \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised - \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) - \fi - \fi - \fi -}% \tabu@arith@negcoef -\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ - \ifdim \@tempdima=\z@ - \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% - \else - \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} - *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% - \fi -}% \tabu@givespace -\def\tabu@arith {\advance\tabu@cnt \@ne - \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi - \tabu@arithnegcoef - \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % - \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax - \tabu@message{\tabu@message@arith}% - \ifdim \tabu@DELTA <\tabu@hfuzz - \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? - \let\tabu@ \tabu@givespace \tabu@Xcoefs - \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message - \else % already converged: nothing to do but nearly impossible... - \fi - \tabucolX \maxdimen - \tabu@measuringfalse - \else % need for narrower X columns - \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax - \tabu@measuringtrue - \@whilesw \iftabu@measuring\fi {% - \advance\tabu@cnt \@ne - \tabu@arithnegcoef - \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here - \tabu@message{\tabu@header - \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ - \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ - \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ - \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ - \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else - \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ - \fi}% - \ifdim -\tabu@DELTA<\tabu@hfuzz - \advance\@tempdima \@tempdimb % for message - \tabu@measuringfalse - \else - \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax - \fi - }% - \fi - \tabu@message{\tabu@message@reached}% - \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target}% -}% \tabu@arith -\def\tabu@spreadarith {% - \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs - \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% - \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax - \iftabu@measuring - \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax - \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% - \else - \tabu@message{\tabu@message@spreadarith}% - \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target - \tabu@message{(tabu) spread - \ifdim \@tempdimc>\tabu@target useless here: default target used% - \else too large: reduced to fit default target\fi.}% - \else - \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax - \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% - \fi - \begingroup \let\tabu@wddef \@gobbletwo - \@tempdimb \@tempdima - \tabucolX@init - \tabu@arithnegcoef - \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax - \expandafter\endgroup \expandafter\tabucolX \the\tabucolX - \tabu@arith - \fi -}% \tabu@spreadarith -\def\tabu@spread@arith #1#2{% - \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ - \else \advance\@tempdima \tabu@wd{#1}\relax - \fi -}% \tabu@spread@arith -%% Reporting in the .log file --------------------------------------- -\def\tabu@message@defaulttarget{% - \ifnum\tabu@nested=\z@^^J(tabu) Default target: - \ifx\tabudefaulttarget\linewidth \string\linewidth - \ifdim \tabu@thetarget=\linewidth \else - -\the\dimexpr\linewidth-\tabu@thetarget\fi = - \else\ifx\tabudefaulttarget\linegoal\string\linegoal= - \fi\fi - \else (tabu) Default target (nested): \fi - \the\tabu@target \on@line - \ifnum\tabu@nested=\z@ , page \the\c@page\fi} -\def\tabu@message@target {^^J(tabu) Target specified: - \the\tabu@target \on@line, page \the\c@page} -\def\tabu@message@arith {\tabu@header - \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ - \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ - \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ - \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ - \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else - \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ - \fi -}% \tabu@message@arith -\def\tabu@message@spreadarith {\tabu@spreadheader - \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ - \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ - \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ - \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ - \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target - \else \@tempdimc+\tabu@spreadtarget \fi - {}{}{}{}{}\@@} -\def\tabu@message@negcoef #1#2{ - \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: - \space width = \tabu@wd {#1} - \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname - \ifdim -\tabu@pt#2\tabucolX<\tabu@target - < \number-\rem@pt#2 X - = \the\dimexpr -\tabu@pt#2\tabucolX \relax - \else - <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} -\def\tabu@message@reached{\tabu@header - ******* Reached Target: - hfuzz = \tabu@hfuzz\on@line\space *******} -\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% - \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: - \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec - \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) - -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax - *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space - cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} -\def\tabu@message@verticalsp {% - \ifdim \@tempdima>\tabu@ht - \ifdim \@tempdimb>\tabu@dp - \expandafter\expandafter\expandafter\string\tabu@ht = - \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ - \expandafter\expandafter\expandafter\string\tabu@dp = - \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% - \else - \expandafter\expandafter\expandafter\string\tabu@ht = - \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% - \fi - \else\ifdim \@tempdimb>\tabu@dp - \tabu@spaces\tabu@spaces\tabu@spaces - \expandafter\expandafter\expandafter\string\tabu@dp = - \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi - \fi -}% \tabu@message@verticalsp -\edef\tabu@spaces{\@spaces} -\def\tabu@strippt{\expandafter\tabu@pt\the} -{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} -\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} -\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} -\def\do #1{% - \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% - \ifnum##1<10 #1 #1\else - \ifnum##1<100 #1 \else - \ifnum##1<\@m #1\fi\fi\fi - ##1.##2##3##4##5##6##7##8#1}% - \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% - \def\tabu@titles{\ifnum \tabu@nested=\z@ - (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target - #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% - \def\tabu@spreadheader{% - (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. - #1 New Target^^J% - (tabu) sprd} - \def\tabu@message@save {\begingroup - \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} - \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt - \dimexpr####1\p@{ }{ }}}% - \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% - \let\CT@arc@ \relax \let\@preamble \@gobble - \let\tabu@savedpream \@firstofone - \let\tabu@savedparams \@firstofone - \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% - \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% - \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% - \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% - \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% - \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% - \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% - \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% - \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% - \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% - \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% - \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% - \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% - \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% - \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% - \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% - \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% - \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% - \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% - \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% - \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo - \tabu@message{% - (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% - \tabu@usetabu \@nil^^J}% - \endgroup} -}\do{ } -%% Measuring the natural width (varwidth) - store the results ------- -\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop - \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% - \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? - \iftabu@spread \else % if spread -> measure - \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure - \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) - \tabu@measuringtrue % for the quick option... - \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi - \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target - \tabu@target=\tabu@temp\tabucolX \fi\fi - \setbox\tabu@box \hbox \bgroup - \begin{varwidth}\tabu@target - \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... - \narrowragged \arraybackslash \parfillskip \@flushglue - \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi - \bgroup \aftergroup\tabu@endpboxmeasure - \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi - \else \expandafter\@gobble - \tabu@startpboxquick{#1}% \@gobble \bgroup - \fi -}% \tabu@startpboxmeasure -\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty - \bgroup\color@begingroup} -\def\tabu@endpboxmeasure {% - \@finalstrut \@arstrutbox - \end{varwidth}\egroup % - \ifdim \tabu@temp\p@ <\z@ % neg coef - \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box - \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% - \tabu@debug{\tabu@message@endpboxmeasure}% - \fi - \else % spread coef>0 - \global\advance \tabu@naturalX \wd\tabu@box - \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax - \ifdim \tabu@naturalXmax <\tabu@naturalX - \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi - \ifdim \tabu@naturalXmin <\@tempdima - \xdef\tabu@naturalXmin {\the\@tempdima}\fi - \fi - \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target -}% \tabu@endpboxmeasure -\def\tabu@wddef #1{\expandafter\xdef - \csname tabu@\the\tabu@nested.W\number#1\endcsname} -\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} -\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd - \the\tabu@Xcol. X[\tabu@temp]: - target = \the\tabucolX \space - \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol - =\tabu@wd\tabu@Xcol -}% \tabu@message@endpboxmeasure -\def\tabu@startpboxquick {\bgroup - \let\@startpbox \tabu@startpboxORI % restore immediately - \let\tabu \tabu@quick % \begin is expanded before... - \expandafter\@gobble \@startpbox % gobbles \bgroup -}% \tabu@startpboxquick -\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick -}% \tabu@quick -\def\tabu@endquick {% - \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else - \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax - \endgroup - \else \let\endtabu \relax - \tabu@end@envir - \fi -}% \tabu@quick -\def\tabu@endtabu {\end{tabu}} -\def\tabu@endtabus {\end{tabu*}} -%% Measuring the heights and depths - store the results ------------- -\def\tabu@verticalmeasure{\everypar{}% - \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group - \setbox\tabu@box =\hbox\bgroup - \let\tabu@verticalspacing \tabu@verticalsp@lcr - \d@llarbegin % after \hbox ... - \else - \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop - \else\ifnum\currentgrouptype=12\vcenter - \else\vbox\fi\fi}% - \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup - \let\tabu@verticalspacing \tabu@verticalsp@pmb - \fi -}% \tabu@verticalmeasure -\def\tabu@verticalsp@lcr{% - \d@llarend \egroup % - \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep - \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax - \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi - \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi - \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi - \noindent\vrule height\@tempdima depth\@tempdimb -}% \tabu@verticalsp@lcr -\def\tabu@verticalsp@pmb{% inserts struts as needed - \par \expandafter\egroup - \expandafter$\expandafter - \egroup \expandafter - \@tempdimc \the\prevdepth - \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep - \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax - \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi - \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi - \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi - \let\@finalstrut \@gobble - \hrule height\@tempdima depth\@tempdimb width\hsize -%% \box\tabu@box -}% \tabu@verticalsp@pmb - -\def\tabu@verticalinit{% - \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! - \advance\c@taburow \@ne - \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% - \advance\c@taburow \m@ne -}% \tabu@verticalinit -\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} -\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} -\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} -\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} -\def\tabu@verticaldynamicadjustment {% - \advance\c@taburow \@ne - \extrarowheight \dimexpr\tabu@ht - \ht\strutbox - \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox - \let\arraystretch \@empty - \advance\c@taburow \m@ne -}% \tabu@verticaldynamicadjustment -\def\tabuphantomline{\crcr \noalign{% - {\globaldefs \@ne - \setbox\@arstrutbox \box\voidb@x - \let\tabu@@celllalign \tabu@celllalign - \let\tabu@@cellralign \tabu@cellralign - \let\tabu@@cellleft \tabu@cellleft - \let\tabu@@cellright \tabu@cellright - \let\tabu@@thevline \tabu@thevline - \let\tabu@celllalign \@empty - \let\tabu@cellralign \@empty - \let\tabu@cellright \@empty - \let\tabu@cellleft \@empty - \let\tabu@thevline \relax}% - \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% - \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr - \noalign{\tabu@rearstrut - {\globaldefs\@ne - \let\tabu@celllalign \tabu@@celllalign - \let\tabu@cellralign \tabu@@cellralign - \let\tabu@cellleft \tabu@@cellleft - \let\tabu@cellright \tabu@@cellright - \let\tabu@thevline \tabu@@thevline}}}% - \expandafter}\the\toks@ -}% \tabuphantomline -%% \firsthline and \lasthline corrections --------------------------- -\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} -\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} -\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} -\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} -\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) - \noalign{\ifnum0=`}\fi - {\CT@arc@\hrule height\arrayrulewidth}% - \futurelet \tabu@temp \tabu@xhline -}% \tabu@hline -\def\tabu@xhline{% - \ifx \tabu@temp \hline - {\ifx \CT@drsc@\relax \vskip - \else\ifx \CT@drsc@\@empty \vskip - \else \CT@drsc@\hrule height - \fi\fi - \doublerulesep}% - \fi - \ifnum0=`{\fi}% -}% \tabu@xhline -\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ - \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% - \tabu@hlineAZsurround -}% \tabu@hlineAZ -\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% - \extratabsurround #1\let\tabucline \tabucline@scan - \let\hline \tabu@hlinescan \let\firsthline \hline - \let\cline \tabu@clinescan \let\lasthline \hline - \expandafter \futurelet \expandafter \tabu@temp - \expandafter \tabu@nexthlineAZ \tabu@temp -}% \tabu@hlineAZsurround -\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} -\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} -\def\tabucline@scan{\@testopt \tabucline@sc@n {}} -\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} -\def\tabu@nexthlineAZ{% - \ifx \tabu@temp\hline \else - \ifx \tabu@temp\cline \else - \ifx \tabu@temp\tabucline \else - \tabu@hlinecorrection - \fi\fi\fi -}% \tabu@nexthlineAZ -\def\tabu@xhlineAZ #1{% - \toks@\expandafter{\the\toks@ #1}% - \@tempdimc \tabu@thick % The last line width - \ifcase\count@ \@tempdimb \tabu@thick % The first line width - \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax - \fi - \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ -}% \tabu@xhlineAZ -\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 - \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ - \edef\firsthline{% - \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule - height \the\dimexpr\@tempdima+\extratabsurround - depth \dp\@arstrutbox - width \tabustrutrule}\hss}\cr - \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb - +\dp\@arstrutbox \relax}% - \the\toks@ - }\ifnum0=`{\fi - \expandafter}\firsthline % we are then ! -}% \tabu@firsthlinecorrection -\def\tabu@lasthlinecorrection{% - \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc - \edef\lasthline{% - \the\toks@ - \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% - \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule - depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ - +\extratabsurround-\@tempdimc - height \z@ - width \tabustrutrule}\hss}\cr - }\ifnum0=`{\fi - \expandafter}\lasthline % we are then ! -}% \tabu@lasthlinecorrection -\def\tabu@LT@@hline{% - \ifx\LT@next\hline - \global\let\LT@next \@gobble - \ifx \CT@drsc@\relax - \gdef\CT@LT@sep{% - \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% - \else - \gdef\CT@LT@sep{% - \multispan\LT@cols{% - \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% - \fi - \else - \global\let\LT@next\empty - \gdef\CT@LT@sep{% - \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% - \fi - \ifnum0=`{\fi}% - \multispan\LT@cols - {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr - \CT@LT@sep - \multispan\LT@cols - {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr - \noalign{\penalty\@M}% - \LT@next -}% \tabu@LT@@hline -%% Horizontal lines : \tabucline ------------------------------------ -\let\tabu@start \@tempcnta -\let\tabu@stop \@tempcntb -\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} -\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% - \ifnum \tabu@stop<\z@ \toks@{}% - \else \tabu@clinearg{#1}\tabu@thestyle - \edef\tabucline{\toks@{% - \ifnum \tabu@start>\z@ \omit - \tabu@multispan\tabu@start {\span\omit}&\fi - \omit \tabu@multispan\tabu@stop {\span\omit}% - \tabu@thehline\cr - }}\tabucline - \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% - \fi - \futurelet \tabu@temp \tabu@xcline -}% \tabu@cline -\def\tabu@clinearg #1{% - \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ - \else \@defaultunits \expandafter\let\expandafter\@tempa - \romannumeral-`\0#1\relax \@nnil - \ifx \hbox\@tempa \tabu@clinebox{#1}% - \else\ifx \box\@tempa \tabu@clinebox{#1}% - \else\ifx \vbox\@tempa \tabu@clinebox{#1}% - \else\ifx \vtop\@tempa \tabu@clinebox{#1}% - \else\ifx \copy\@tempa \tabu@clinebox{#1}% - \else\ifx \leaders\@tempa \tabu@clineleads{#1}% - \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% - \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% - \else\tabu@getline {#1}% - \fi\fi\fi\fi\fi\fi\fi\fi - \fi -}% \tabu@clinearg -\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} -\def\tabu@clineleads #1{% - \let\tabu@thestyle \relax \let\tabu@leaders \@undefined - \gdef\tabu@thehrule{#1}} -\def\tabu@thehline{\begingroup - \ifdefined\tabu@leaders - \noexpand\tabu@thehleaders - \else \noexpand\tabu@thehrule - \fi \endgroup -}% \tabu@thehline -\def\tabu@xcline{% - \ifx \tabu@temp\tabucline - \toks@\expandafter{\the\toks@ \noalign - {\ifx\CT@drsc@\relax \vskip - \else \CT@drsc@\hrule height - \fi - \doublerulesep}}% - \fi - \tabu@docline -}% \tabu@xcline -\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} -\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% - \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} -\def\tabu@multispan #1#2{% - \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan - \else \expandafter\@gobbletwo - \fi {#1-1}{#2}% -}% \tabu@multispan -\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} -\def\tabu@start@stop #1-#2\@nnil{% - \@defaultunits \tabu@start\number 0#1\relax \@nnil - \@defaultunits \tabu@stop \number 0#2\relax \@nnil - \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne - \else\ifnum \tabu@stop=\z@ \tabu@nbcols - \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols - \else \tabu@stop - \fi\fi\fi - \advance\tabu@start \m@ne - \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi -}% \tabu@start@stop -%% Numbers: siunitx S columns (and \tabudecimal) ------------------- -\def\tabu@tabudecimal #1{% - \def\tabu@decimal{#1}\@temptokena{}% - \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces - \tabu@scandecimal -}% \tabu@tabudecimal -\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} -\def\tabu@skipdecimal#1{#1\tabu@scandecimal} -\def\tabu@getdecimal@ignorespaces{% - \ifcase 0\ifx\tabu@temp\ignorespaces\else - \ifx\tabu@temp\@sptoken1\else - 2\fi\fi\relax - \let\tabu@getdecimal@ \tabu@getdecimal - \expandafter\tabu@skipdecimal - \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal - \else \expandafter\tabu@skipdecimal - \fi -}% \tabu@getdecimal@ignorespaces -\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% - \tabu@scandecimal} -\def\do#1{% - \def\tabu@get@decimalspace#1{% - \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% -}\do{ } -\let\tabu@@tabudecimal \tabu@tabudecimal -\def\tabu@getdecimal{% - \ifcase 0\ifx 0\tabu@temp\else - \ifx 1\tabu@temp\else - \ifx 2\tabu@temp\else - \ifx 3\tabu@temp\else - \ifx 4\tabu@temp\else - \ifx 5\tabu@temp\else - \ifx 6\tabu@temp\else - \ifx 7\tabu@temp\else - \ifx 8\tabu@temp\else - \ifx 9\tabu@temp\else - \ifx .\tabu@temp\else - \ifx ,\tabu@temp\else - \ifx -\tabu@temp\else - \ifx +\tabu@temp\else - \ifx e\tabu@temp\else - \ifx E\tabu@temp\else - \ifx\tabu@cellleft\tabu@temp1\else - \ifx\ignorespaces\tabu@temp1\else - \ifx\@sptoken\tabu@temp2\else - 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax - \expandafter\tabu@get@decimal - \or \expandafter\tabu@skipdecimal - \or \expandafter\tabu@get@decimalspace - \else\expandafter\tabu@printdecimal - \fi -}% \tabu@getdecimal -\def\tabu@printdecimal{% - \edef\tabu@temp{\the\@temptokena}% - \ifx\tabu@temp\@empty\else - \ifx\tabu@temp\space\else - \expandafter\tabu@decimal\expandafter{\the\@temptokena}% - \fi\fi -}% \tabu@printdecimal -%% Verbatim inside X columns ---------------------------------------- -\def\tabu@verbatim{% - \let\verb \tabu@verb - \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd -}% \tabu@verbatim -\let\tabu@ltx@verb \verb -\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} -\def\tabu@fancyvrb {% - \def\tabu@FV@DefineCheckEnd ##1{% - \def\tabu@FV@DefineCheckEnd{% - ##1% - \let\FV@CheckEnd \tabu@FV@CheckEnd - \let\FV@@CheckEnd \tabu@FV@@CheckEnd - \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd - \edef\FV@EndScanning{% - \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% - \global\let\noexpand\FV@EnvironName\relax - \noexpand\next}% - \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% - }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} -}% \tabu@fancyvrb -\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} -\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} -\begingroup -\catcode`\[1 \catcode`\]2 -\@makeother\{ \@makeother\} - \edef\x[\endgroup - \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% - ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} -\def\tabu@FV@ListProcessLine #1{% - \hbox {%to \hsize{% - \kern\leftmargin - \hbox {%to \linewidth{% - \FV@LeftListNumber - \FV@LeftListFrame - \FancyVerbFormatLine{#1}\hss -%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) -%% \FV@RightListFrame}% - \FV@RightListFrame - \FV@RightListNumber}% -%% DG/SR modification end - \hss}} -%% \savetabu -------------------------------------------------------- -\newcommand*\savetabu[1]{\noalign{% - \tabu@sanitizearg{#1}\tabu@temp - \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else - \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% - \ifdefined\tabu@restored \expandafter\let - \csname tabu@saved@\tabu@temp \endcsname \tabu@restored - \else {\tabu@save}% - \fi - \fi}% -}% \savetabu -\def\tabu@save {% - \toks0\expandafter{\tabu@saved@}% - \iftabu@negcoef - \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% - \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi - \toks1\expandafter{\tabu@savedpream}% - \toks2\expandafter{\tabu@savedpreamble}% - \let\@preamble \relax - \let\tabu@savedpream \relax \let\tabu@savedparams \relax - \edef\tabu@preamble{% - \def\noexpand\tabu@aligndefault{\tabu@align}% - \def\tabu@savedparams {\noexpand\the\toks0}% - \def\tabu@savedpream {\noexpand\the\toks1}}% - \edef\tabu@usetabu{% - \def\@preamble {\noexpand\the\toks2}% - \tabu@target \the\tabu@target \relax - \tabucolX \the\tabucolX \relax - \tabu@nbcols \the\tabu@nbcols \relax - \def\noexpand\tabu@aligndefault{\tabu@align}% - \def\tabu@savedparams {\noexpand\the\toks0}% - \def\tabu@savedpream {\noexpand\the\toks1}}% - \let\tabu@aligndefault \relax \let\@sharp \relax - \edef\@tempa{\noexpand\tabu@s@ved - {\tabu@usetabu} - {\tabu@preamble} - {\the\toks1}}\@tempa - \tabu@message@save -}% \tabu@save -\long\def\tabu@s@ved #1#2#3{% - \def\tabu@usetabu{#1}% - \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% - \ifodd ##1% \usetabu - \tabu@measuringfalse \tabu@spreadfalse % Just in case... - \gdef\tabu@usetabu {% - \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi - \global\let\tabu@usetabu \@undefined - \def\@halignto {to\tabu@target}% - #1% - \ifx \tabu@align\tabu@aligndefault@text - \ifnum \tabu@nested=\z@ - \let\tabu@align \tabu@aligndefault \fi\fi}% - \else % \preamble - \gdef\tabu@preamble {% - \global\let\tabu@preamble \@undefined - #2% - \ifx \tabu@align\tabu@aligndefault@text - \ifnum \tabu@nested=\z@ - \let\tabu@align \tabu@aligndefault \fi\fi}% - \fi - #3}% -}% \tabu@s@ved -\def\tabu@aligndefault@text {\tabu@aligndefault}% -\def\tabu@warn@usetabu {\PackageWarning{tabu} - {Specifying a target with \string\usetabu\space is useless - \MessageBreak The target cannot be changed!}} -\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} -\def\tabu@savewarn#1#2{\PackageInfo{tabu} - {User-name `#1' already used for \string\savetabu - \MessageBreak #2}}% -\def\tabu@saveerr#1{\PackageError{tabu} - {User-name `#1' is unknown for \string\usetabu - \MessageBreak I cannot restore an unknown preamble!}\@ehd} -%% \rowfont --------------------------------------------------------- -\newskip \tabu@cellskip -\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi - {\ifnum0=`}\fi \tabu@row@font} -\newcommand*\tabu@row@font[2][]{% - \ifnum7=\currentgrouptype - \global\let\tabu@@cellleft \tabu@cellleft - \global\let\tabu@@cellright \tabu@cellright - \global\let\tabu@@celllalign \tabu@celllalign - \global\let\tabu@@cellralign \tabu@cellralign - \global\let\tabu@@rowfontreset\tabu@rowfontreset - \fi - \global\let\tabu@rowfontreset \tabu@rowfont@reset - \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% - \ifcsname tabu@cell@#1\endcsname % row alignment - \csname tabu@cell@#1\endcsname \fi - \ifnum0=`{\fi}% end of group / noalign group -}% \rowfont -\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% -\def\tabu@rowfont@reset{% - \global\let\tabu@rowfontreset \tabu@@rowfontreset - \global\let\tabu@cellleft \tabu@@cellleft - \global\let\tabu@cellright \tabu@@cellright - \global\let\tabu@cellfont \@empty - \global\let\tabu@celllalign \tabu@@celllalign - \global\let\tabu@cellralign \tabu@@cellralign -}% \tabu@@rowfontreset -\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl -%% \tabu@prepnext@tok ----------------------------------------------- -\newif \iftabu@cellright -\def\tabu@prepnext@tok{% - \ifnum \count@<\z@ % - \@tempcnta \@M % - \tabu@nbcols\z@ - \let\tabu@fornoopORI \@fornoop - \tabu@cellrightfalse - \else - \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left - \advance \tabu@nbcols \@ne - \iftabu@cellright % before-previous token is right and is finished - \tabu@cellrightfalse % - \tabu@righttok - \fi - \tabu@lefttok - \or % (case 1) previous token is right - \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop - \else % special column: do not change the token - \iftabu@cellright % before-previous token is right - \tabu@cellrightfalse - \tabu@righttok - \fi - \fi % \ifcase - \fi - \tabu@prepnext@tokORI -}% \tabu@prepnext@tok -\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} -\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% - \ifx \in@#2\else - \let\@fornoop \tabu@fornoopORI - \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% - \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% - \expandafter\prepnext@tok - \fi -}% \tabu@lastnoop -\def\tabu@righttok{% - \advance \count@ \m@ne - \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% - \advance \count@ \@ne -}% \tabu@righttok -\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign - \the\toks\count@ \tabu@cellleft}% after because of $ -}% \tabu@lefttok -%% Neutralisation of glues ------------------------------------------ -\let\tabu@cellleft \@empty -\let\tabu@cellright \@empty -\tabu@celllalign@def{\tabu@cellleft}% -\let\tabu@cellralign \@empty -\def\tabu@cell@align #1#2#3{% - \let\tabu@maybesiunitx \toks@ \tabu@celllalign - \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% - \toks@\expandafter{\tabu@cellralign #2}% - \xdef\tabu@cellralign{\the\toks@}% - \toks@\expandafter{\tabu@cellleft #3}% - \xdef\tabu@cellleft{\the\toks@}% -}% \tabu@cell@align -\def\tabu@cell@l{% force alignment to left - \tabu@cell@align - {\tabu@removehfil \raggedright \tabu@cellleft}% left - {\tabu@flush1\tabu@ignorehfil}% right - \raggedright -}% \tabu@cell@l -\def\tabu@cell@c{% force alignment to center - \tabu@cell@align - {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} - {\tabu@flush{.5}\tabu@ignorehfil} - \centering -}% \tabu@cell@c -\def\tabu@cell@r{% force alignment to right - \tabu@cell@align - {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} - \tabu@ignorehfil - \raggedleft -}% \tabu@cell@r -\def\tabu@cell@j{% force justification (for p, m, b columns) - \tabu@cell@align - {\tabu@justify\tabu@cellleft} - {} - \tabu@justify -}% \tabu@cell@j -\def\tabu@justify{% - \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip - \parfillskip\@flushglue -}% \tabu@justify -%% ragged2e settings -\def\tabu@cell@L{% force alignment to left (ragged2e) - \tabu@cell@align - {\tabu@removehfil \RaggedRight \tabu@cellleft} - {\tabu@flush 1\tabu@ignorehfil} - \RaggedRight -}% \tabu@cell@L -\def\tabu@cell@C{% force alignment to center (ragged2e) - \tabu@cell@align - {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} - {\tabu@flush{.5}\tabu@ignorehfil} - \Centering -}% \tabu@cell@C -\def\tabu@cell@R{% force alignment to right (ragged2e) - \tabu@cell@align - {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} - \tabu@ignorehfil - \RaggedLeft -}% \tabu@cell@R -\def\tabu@cell@J{% force justification (ragged2e) - \tabu@cell@align - {\justifying \tabu@cellleft} - {} - \justifying -}% \tabu@cell@J -\def\tabu@flush#1{% - \iftabu@colortbl % colortbl uses \hfill rather than \hfil - \hskip \ifnum13<\currentgrouptype \stretch{#1}% - \else \ifdim#1pt<\p@ \tabu@cellskip - \else \stretch{#1} - \fi\fi \relax - \else % array.sty - \ifnum 13<\currentgrouptype - \hfil \hskip1sp \relax \fi - \fi -}% \tabu@flush -\let\tabu@hfil \hfil -\let\tabu@hfill \hfill -\let\tabu@hskip \hskip -\def\tabu@removehfil{% - \iftabu@colortbl - \unkern \tabu@cellskip =\lastskip - \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip - \else \tabu@cellskip \z@skip - \fi - \else - \ifdim\lastskip=1sp\unskip\fi - \ifnum\gluestretchorder\lastskip =\@ne - \hfilneg % \hfilneg for array.sty but not for colortbl... - \fi - \fi -}% \tabu@removehfil -\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} -\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil - \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group -}% \tabu@nohfil -\def\tabu@colortblalignments {% if colortbl - \def\tabu@nohfil{% - \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group - \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... - \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local -}% \tabu@colortblalignments -%% Taking care of footnotes and hyperfootnotes ---------------------- -\long\def\tabu@footnotetext #1{% - \edef\@tempa{\the\tabu@footnotes - \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% - \global\tabu@footnotes\expandafter{\@tempa {#1}}}% -\long\def\tabu@xfootnotetext [#1]#2{% - \global\tabu@footnotes\expandafter{\the\tabu@footnotes - \footnotetext [{#1}]{#2}}} -\let\tabu@xfootnote \@xfootnote -\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} -\long\def\tabu@Hy@xfootnote [#1]{% - \begingroup - \value\@mpfn #1\relax - \protected@xdef \@thefnmark {\thempfn}% - \endgroup - \@footnotemark \tabu@Hy@ftntxt {#1}% -}% \tabu@Hy@xfootnote -\long\def\tabu@Hy@ftntxt #1#2{% - \edef\@tempa{% - \the\tabu@footnotes - \begingroup - \value\@mpfn #1\relax - \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% - \expandafter \noexpand \expandafter - \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% - }% - \global\tabu@footnotes\expandafter{\@tempa {#2}% - \endgroup}% -}% \tabu@Hy@ftntxt -\long\def\tabu@Hy@footnotetext #1#2{% - \H@@footnotetext{% - \ifHy@nesting - \hyper@@anchor {#1}{#2}% - \else - \Hy@raisedlink{% - \hyper@@anchor {#1}{\relax}% - }% - \def\@currentHref {#1}% - \let\@currentlabelname \@empty - #2% - \fi - }% -}% \tabu@Hy@footnotetext -%% No need for \arraybackslash ! ------------------------------------ -\def\tabu@latextwoe {% -\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} -\tabu@temp \tabu@centering \centering \arraybackslash -\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash -\tabu@temp \tabu@raggedright \raggedright \arraybackslash -}% \tabu@latextwoe -\def\tabu@raggedtwoe {% -\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} -\tabu@temp \tabu@Centering \Centering \arraybackslash -\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash -\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash -\tabu@temp \tabu@justifying \justifying \arraybackslash -}% \tabu@raggedtwoe -\def\tabu@normalcrbackslash{\let\\\@normalcr} -\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% - \expandafter\tabu@normalcrbackslash \@trivlist}} -%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- -\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} -\def\tabu@beginfbox {\bgroup \kern\fboxsep - \bgroup\aftergroup\tabu@endfbox} -\def\tabu@endfbox {\kern\fboxsep\egroup\egroup - \@frameb@x\relax} -\def\tabu@color@b@x #1#2{\leavevmode \bgroup - \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% - \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox -}% \tabu@color@b@x -\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup - \aftergroup\tabu@endcolor@b@x \set@color} -\def\tabu@endcolor@b@x {\kern\fboxsep \egroup - \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ - \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ - \tabu@docolor@b@x \egroup -}% \tabu@endcolor@b@x -%% Corrections (arydshln, delarray, colortbl) ----------------------- -\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray - \iftabu@colortbl - \ifdefined\adl@array % - \def\tabu@endarray{% - \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % - \@arrayright % - \gdef\@preamble{}}% - \else % - \def\tabu@endarray{% - \crcr \egroup \egroup % - \@arrayright % - \gdef\@preamble{}\CT@end}% - \fi - \else - \ifdefined\adl@array % - \def\tabu@endarray{% - \adl@endarray \egroup \adl@arrayrestore \egroup % - \@arrayright % - \gdef\@preamble{}}% - \else % - \PackageWarning{tabu} - {\string\@arrayright\space is missing from the - \MessageBreak definition of \string\endarray. - \MessageBreak Compatibility with delarray.sty is broken.}% - \fi\fi -}% \tabu@fix@arrayright -\def\tabu@adl@xarraydashrule #1#2#3{% - \ifnum\@lastchclass=\adl@class@start\else - \ifnum\@lastchclass=\@ne\else - \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) - \adl@leftrulefalse \fi\fi % must be treated the same - \fi - \ifadl@zwvrule\else \ifadl@inactive\else - \@addtopreamble{\vrule\@width\arrayrulewidth - \@height\z@ \@depth\z@}\fi \fi - \ifadl@leftrule - \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% - {\number#1}#3}% - \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% - {\number#2}#3} - \fi -}% \tabu@adl@xarraydashrule -\def\tabu@adl@act@endpbox {% - \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox - \egroup \egroup - \adl@colhtdp \box\adl@box \hfil -}% \tabu@adl@act@endpbox -\def\tabu@adl@fix {% - \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln - \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln - \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln - \let\@preamerror \@preamerr % arydshln -}% \tabu@adl@fix -%% Correction for longtable' \@startbox definition ------------------ -%% => \everypar is ``missing'' : TeX should be in vertical mode -\def\tabu@LT@startpbox #1{% - \bgroup - \let\@footnotetext\LT@p@ftntext - \setlength\hsize{#1}% - \@arrayparboxrestore - \everypar{% - \vrule \@height \ht\@arstrutbox \@width \z@ - \everypar{}}% -}% \tabu@LT@startpbox -%% \tracingtabu and the package options ------------------ -\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} -\DeclareOption{linegoal}{% - \AtEndOfPackage{% - \RequirePackage{linegoal}[2010/12/07]% - \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX -}} -\DeclareOption{scantokens}{\tabuscantokenstrue} -\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} -\def\tracingtabu {\begingroup\@ifnextchar=% - {\afterassignment\tabu@tracing\count@} - {\afterassignment\tabu@tracing\count@1\relax}} -\def\tabu@tracing{\expandafter\endgroup - \expandafter\tabu@tr@cing \the\count@ \relax -}% \tabu@tracing -\def\tabu@tr@cing #1\relax {% - \ifnum#1>\thr@@ \let\tabu@tracinglines\message - \else \let\tabu@tracinglines\@gobble - \fi - \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG - \def\tabu@mkarstrut {\tabu@DBG@arstrut}% - \tabustrutrule 1.5\p@ - \else \let\tabu@DBG \@gobble - \def\tabu@mkarstrut {\tabu@arstrut}% - \tabustrutrule \z@ - \fi - \ifnum#1>\@ne \let\tabu@debug \message - \else \let\tabu@debug \@gobble - \fi - \ifnum#1>\z@ - \let\tabu@message \message - \let\tabu@tracing@save \tabu@message@save - \let\tabu@starttimer \tabu@pdftimer - \else - \let\tabu@message \@gobble - \let\tabu@tracing@save \@gobble - \let\tabu@starttimer \relax - \fi -}% \tabu@tr@cing -%% Setup \AtBeginDocument -\AtBeginDocument{\tabu@AtBeginDocument} -\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined - \ifdefined\arrayrulecolor \tabu@colortbltrue % - \tabu@colortblalignments % different glues are used - \else \tabu@colortblfalse \fi - \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi - \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi - \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ - \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % - \expandafter\ifx - \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax - \tabu@siunitxtrue - \else \let\tabu@maybesiunitx \@firstofone % - \let\tabu@siunitx \tabu@nosiunitx - \tabu@siunitxfalse - \fi - \ifdefined\adl@array % - \else \let\tabu@adl@fix \relax - \let\tabu@adl@endtrial \@empty \fi - \ifdefined\longtable % - \else \let\longtabu \tabu@nolongtabu \fi - \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi - \csname\ifcsname ifHy@hyperfootnotes\endcsname % - ifHy@hyperfootnotes\else iffalse\fi\endcsname - \let\tabu@footnotetext \tabu@Hy@ftntext - \let\tabu@xfootnote \tabu@Hy@xfootnote \fi - \ifdefined\FV@DefineCheckEnd% - \tabu@fancyvrb \fi - \ifdefined\color % - \let\tabu@color \color - \def\tabu@leavevmodecolor ##1{% - \def\tabu@leavevmodecolor {\leavevmode ##1}% - }\expandafter\tabu@leavevmodecolor\expandafter{\color}% - \else - \let\tabu@color \tabu@nocolor - \let\tabu@leavevmodecolor \@firstofone \fi - \tabu@latextwoe - \ifdefined\@raggedtwoe@everyselectfont % - \tabu@raggedtwoe - \else - \let\tabu@cell@L \tabu@cell@l - \let\tabu@cell@R \tabu@cell@r - \let\tabu@cell@C \tabu@cell@c - \let\tabu@cell@J \tabu@cell@j \fi - \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% - \ifin@ \let\tabu@endarray \endarray - \else \tabu@fix@arrayright \fi% - \everyrow{}% -}% \tabu@AtBeginDocument -\def\tabu@warn@cellspace{% - \PackageWarning{tabu}{% - Package cellspace has some limitations - \MessageBreak And redefines some macros of array.sty. - \MessageBreak Please use \string\tabulinesep\space to control - \MessageBreak vertical spacing of lines inside tabu environment}% -}% \tabu@warn@cellspace -%% tabu Package initialisation -\tabuscantokensfalse -\let\tabu@arc@G \relax -\let\tabu@drsc@G \relax -\let\tabu@evr@G \@empty -\let\tabu@rc@G \@empty -\def\tabu@ls@G {\tabu@linestyle@}% -\let\tabu@@rowfontreset \@empty % -\let\tabu@@celllalign \@empty -\let\tabu@@cellralign \@empty -\let\tabu@@cellleft \@empty -\let\tabu@@cellright \@empty -\def\tabu@naturalXmin {\z@} -\def\tabu@naturalXmax {\z@} -\let\tabu@rowfontreset \@empty -\def\tabulineon {4pt}\let\tabulineoff \tabulineon -\tabu@everyrowtrue -\ifdefined\pdfelapsedtime % - \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% -\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax -\fi -\tracingtabu=\z@ -\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ -\tabulinestyle{} -\taburowcolors{} -\let\tabudefaulttarget \linewidth -\ProcessOptions* % \ProcessOptions* is quicker ! -\endinput -%% -%% End of file `tabu.sty'. From ed7a9eb108e92262dbde22bec6434aae48409289 Mon Sep 17 00:00:00 2001 From: ludamad Date: Thu, 1 Aug 2024 13:33:30 +0400 Subject: [PATCH 26/47] Update ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 85b0786b0ed..6325dc1f33a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -294,7 +294,7 @@ jobs: working-directory: ./barretenberg/cpp/ timeout-minutes: 40 # limit our parallelism to half our cores - run: earthly-ci --no-output +test --hardware_concurrency=64 + run: earthly-ci --exec-stats --no-output +test --hardware_concurrency=64 bb-js-test: needs: [build-images, changes] From d01ff27cae3a4b7d3860b6b932e063e57054ce25 Mon Sep 17 00:00:00 2001 From: ludamad Date: Thu, 1 Aug 2024 13:57:30 +0400 Subject: [PATCH 27/47] Update earthly-ci --- scripts/earthly-ci | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/earthly-ci b/scripts/earthly-ci index 0e7224077f5..10ae6242ec7 100755 --- a/scripts/earthly-ci +++ b/scripts/earthly-ci @@ -70,7 +70,8 @@ while [ $ATTEMPT_COUNT -lt $MAX_ATTEMPTS ]; do elif grep 'status 125: docker: Error response from daemon: layer does not exist.' $OUTPUT_FILE >/dev/null \ || grep 'could not determine buildkit address - is Docker or Podman running?' $OUTPUT_FILE >/dev/null \ || grep 'please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host' $OUTPUT_FILE >/dev/null \ - || grep 'docker: failed to register layer' $OUTPUT_FILE >/dev/null ; then + || grep 'docker: failed to register layer' $OUTPUT_FILE >/dev/null + || grep 'docker: unexpected EOF' $OUTPUT_FILE >/dev/null ; then wipe_non_cache_docker_state # wait for other docker restarts sleep 20 From aae0648e18002b78e8bae8b2c9656f836a9224de Mon Sep 17 00:00:00 2001 From: ludamad Date: Thu, 1 Aug 2024 13:57:56 +0400 Subject: [PATCH 28/47] Update earthly-ci --- scripts/earthly-ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/earthly-ci b/scripts/earthly-ci index 10ae6242ec7..1b60fee7bde 100755 --- a/scripts/earthly-ci +++ b/scripts/earthly-ci @@ -70,7 +70,7 @@ while [ $ATTEMPT_COUNT -lt $MAX_ATTEMPTS ]; do elif grep 'status 125: docker: Error response from daemon: layer does not exist.' $OUTPUT_FILE >/dev/null \ || grep 'could not determine buildkit address - is Docker or Podman running?' $OUTPUT_FILE >/dev/null \ || grep 'please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host' $OUTPUT_FILE >/dev/null \ - || grep 'docker: failed to register layer' $OUTPUT_FILE >/dev/null + || grep 'docker: failed to register layer' $OUTPUT_FILE >/dev/null \ || grep 'docker: unexpected EOF' $OUTPUT_FILE >/dev/null ; then wipe_non_cache_docker_state # wait for other docker restarts From b6e27b98c11170e4ca3c868ca20afd0b1edaac90 Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 11:11:42 +0000 Subject: [PATCH 29/47] resolve review comments --- .../cpp/src/barretenberg/ecc/fields/field_conversion.hpp | 3 +++ .../cpp/src/barretenberg/ecc/groups/affine_element.test.cpp | 6 ++++++ .../cpp/src/barretenberg/ecc/groups/element_impl.hpp | 1 + .../stdlib/primitives/field/field_conversion.hpp | 3 ++- .../barretenberg/stdlib/primitives/group/cycle_group.cpp | 1 + 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp index b727ddb7bb2..fa3dfe2864a 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/fields/field_conversion.hpp @@ -64,6 +64,7 @@ template T convert_from_bn254_frs(std::span fr_vec) if (val.x == BaseField::zero() && val.y == BaseField::zero()) { val.self_set_infinity(); } + ASSERT(val.on_curve()); return val; } else { // Array or Univariate @@ -102,6 +103,8 @@ template std::vector convert_to_bn254_frs(const T& val) std::vector fr_vec_x; std::vector fr_vec_y; + // When encountering a point at infinity we pass a zero point in the proof to ensure that on the receiving size + // there are no inconsistencies whenre constructing and hashing. if (val.is_point_at_infinity()) { fr_vec_x = convert_to_bn254_frs(BaseField::zero()); fr_vec_y = convert_to_bn254_frs(BaseField::zero()); diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp index 9e60c134f91..4a0b2f7bf74 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp @@ -150,13 +150,19 @@ template class TestAffineElement : public testing::Test { } } + /** + * @brief Ensure that the point at inifinity has a fixed value. + * + */ static void test_fixed_point_at_infinity() { using Fq = affine_element::Fq; affine_element P = affine_element::infinity(); affine_element Q(Fq::zero(), Fq::zero()); Q.x.self_set_msb(); + affine_element R = affine_element(element::random_element()); EXPECT_EQ(P, Q); + EXPECT_NE(P, R); } }; diff --git a/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp index 1a4f6a4f567..19bc945e476 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp @@ -517,6 +517,7 @@ template constexpr void element::self_s } else { (*this).x = Fq::zero(); (*this).y = Fq::zero(); + (*this).z = Fq::zero(); x.self_set_msb(); } } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp index aa9ffe26fc1..014851a611f 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp @@ -91,7 +91,7 @@ template T convert_from_bn254_frs(Builder& builde result.set_point_at_infinity(fr_vec[0].is_zero() && fr_vec[1].is_zero() && fr_vec[2].is_zero() && fr_vec[3].is_zero()); - + result.validate_on_curve(); return result; } else if constexpr (IsAnyOf>) { using BaseField = fr; @@ -102,6 +102,7 @@ template T convert_from_bn254_frs(Builder& builde fr y = convert_from_bn254_frs>( builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); grumpkin_element result(x, y, x.is_zero() && y.is_zero()); + result.validate_is_on_curve(); return result; } else { // Array or Univariate diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp index db0cca7c0db..56428340f73 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp @@ -38,6 +38,7 @@ cycle_group::cycle_group(field_t _x, field_t _y, bool_t is_infinity) } else { context = is_infinity.get_context(); } + ASSERT(get_value().on_curve()); } /** From dc486a06ae58e1e54a52f9267874b83a7c1fe9dc Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 12:06:28 +0000 Subject: [PATCH 30/47] bump circuit size --- .../cpp/src/barretenberg/client_ivc/client_ivc.test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp b/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp index 5a977dd75bf..ae656e6f699 100644 --- a/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp +++ b/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp @@ -50,7 +50,7 @@ class ClientIVCTests : public ::testing::Test { * polynomials will bump size to next power of 2) * */ - static Builder create_mock_circuit(ClientIVC& ivc, size_t log2_num_gates = 15) + static Builder create_mock_circuit(ClientIVC& ivc, size_t log2_num_gates = 16) { Builder circuit{ ivc.goblin.op_queue }; MockCircuits::construct_arithmetic_circuit(circuit, log2_num_gates); From b56cb858feb61ea4a138126ad204928d0610e6ba Mon Sep 17 00:00:00 2001 From: maramihali Date: Thu, 1 Aug 2024 12:36:05 +0000 Subject: [PATCH 31/47] add issue to optimise validate on curve --- .../cpp/src/barretenberg/client_ivc/client_ivc.test.cpp | 2 +- .../barretenberg/stdlib/primitives/field/field_conversion.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp b/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp index ae656e6f699..5a977dd75bf 100644 --- a/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp +++ b/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp @@ -50,7 +50,7 @@ class ClientIVCTests : public ::testing::Test { * polynomials will bump size to next power of 2) * */ - static Builder create_mock_circuit(ClientIVC& ivc, size_t log2_num_gates = 16) + static Builder create_mock_circuit(ClientIVC& ivc, size_t log2_num_gates = 15) { Builder circuit{ ivc.goblin.op_queue }; MockCircuits::construct_arithmetic_circuit(circuit, log2_num_gates); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp index 014851a611f..a1ca8703c6b 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_conversion.hpp @@ -70,6 +70,8 @@ template constexpr size_t calc_num_bn254_frs() * @param builder * @param fr_vec * @return T + * @todo https://github.com/AztecProtocol/barretenberg/issues/1065 optimise validate_on_curve and check points + * reconstructed from the transcript */ template T convert_from_bn254_frs(Builder& builder, std::span> fr_vec) { @@ -91,7 +93,6 @@ template T convert_from_bn254_frs(Builder& builde result.set_point_at_infinity(fr_vec[0].is_zero() && fr_vec[1].is_zero() && fr_vec[2].is_zero() && fr_vec[3].is_zero()); - result.validate_on_curve(); return result; } else if constexpr (IsAnyOf>) { using BaseField = fr; @@ -102,7 +103,6 @@ template T convert_from_bn254_frs(Builder& builde fr y = convert_from_bn254_frs>( builder, fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE)); grumpkin_element result(x, y, x.is_zero() && y.is_zero()); - result.validate_is_on_curve(); return result; } else { // Array or Univariate From 21cfb25b433d8e703ffd53a78c17de659648b713 Mon Sep 17 00:00:00 2001 From: ludamad Date: Thu, 1 Aug 2024 17:11:21 +0400 Subject: [PATCH 32/47] Update Earthfile --- barretenberg/cpp/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/Earthfile b/barretenberg/cpp/Earthfile index 02a8bbe56f4..01eda7d85c0 100644 --- a/barretenberg/cpp/Earthfile +++ b/barretenberg/cpp/Earthfile @@ -245,7 +245,7 @@ test: IF [ "$HARDWARE_CONCURRENCY" != "" ] ENV HARDWARE_CONCURRENCY=$hardware_concurrency END - RUN cd build && GTEST_COLOR=1 ctest -j$(nproc) --output-on-failure + RUN cd build && GTEST_COLOR=1 ctest -j$(($(nproc)/2)) --output-on-failure vm-full-test: ARG hardware_concurrency="" From 05b3061fbb9e24f1d4d776e19ef077519bd7aee5 Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 2 Aug 2024 05:39:22 +0000 Subject: [PATCH 33/47] fix manifest tests --- .../src/barretenberg/ultra_honk/mega_transcript.test.cpp | 8 +++----- .../src/barretenberg/ultra_honk/ultra_transcript.test.cpp | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/mega_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/mega_transcript.test.cpp index 21de98a3584..928c749ac4d 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/mega_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/mega_transcript.test.cpp @@ -31,12 +31,10 @@ class MegaTranscriptTests : public ::testing::Test { * * @return TranscriptManifest */ - static TranscriptManifest construct_mega_honk_manifest(size_t circuit_size) + static TranscriptManifest construct_mega_honk_manifest() { TranscriptManifest manifest_expected; - auto log_n = numeric::get_msb(circuit_size); - size_t MAX_PARTIAL_RELATION_LENGTH = Flavor::BATCHED_RELATION_PARTIAL_LENGTH; size_t NUM_SUBRELATIONS = Flavor::NUM_SUBRELATIONS; @@ -88,7 +86,7 @@ class MegaTranscriptTests : public ::testing::Test { round++; } - for (size_t i = 0; i < log_n; i++) { + for (size_t i = 0; i < CONST_PROOF_SIZE_LOG_N; i++) { std::string label = "Sumcheck:gate_challenge_" + std::to_string(i); manifest_expected.add_challenge(round, label); round++; @@ -163,7 +161,7 @@ TEST_F(MegaTranscriptTests, ProverManifestConsistency) auto proof = prover.construct_proof(); // Check that the prover generated manifest agrees with the manifest hard coded in this suite - auto manifest_expected = construct_mega_honk_manifest(instance->proving_key.circuit_size); + auto manifest_expected = construct_mega_honk_manifest(); auto prover_manifest = prover.transcript->get_manifest(); // Note: a manifest can be printed using manifest.print() for (size_t round = 0; round < manifest_expected.size(); ++round) { diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp index 5124a0f64eb..887c3b55897 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp @@ -32,12 +32,10 @@ class UltraTranscriptTests : public ::testing::Test { * * @return TranscriptManifest */ - TranscriptManifest construct_ultra_honk_manifest(size_t circuit_size) + TranscriptManifest construct_ultra_honk_manifest() { TranscriptManifest manifest_expected; - auto log_n = numeric::get_msb(circuit_size); - size_t MAX_PARTIAL_RELATION_LENGTH = Flavor::BATCHED_RELATION_PARTIAL_LENGTH; size_t NUM_SUBRELATIONS = Flavor::NUM_SUBRELATIONS; // Size of types is number of bb::frs needed to represent the types @@ -73,7 +71,7 @@ class UltraTranscriptTests : public ::testing::Test { round++; } - for (size_t i = 0; i < log_n; i++) { + for (size_t i = 0; i < CONST_PROOF_SIZE_LOG_N; i++) { std::string label = "Sumcheck:gate_challenge_" + std::to_string(i); manifest_expected.add_challenge(round, label); round++; @@ -141,7 +139,7 @@ TEST_F(UltraTranscriptTests, ProverManifestConsistency) auto proof = prover.construct_proof(); // Check that the prover generated manifest agrees with the manifest hard coded in this suite - auto manifest_expected = construct_ultra_honk_manifest(instance->proving_key.circuit_size); + auto manifest_expected = construct_ultra_honk_manifest(); auto prover_manifest = prover.transcript->get_manifest(); // Note: a manifest can be printed using manifest.print() for (size_t round = 0; round < manifest_expected.size(); ++round) { From 11592c9b0592feac83edf4b1b42e791abb54faf7 Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 2 Aug 2024 07:00:32 +0000 Subject: [PATCH 34/47] fix issue in schnorr --- .../cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp index e65224b429c..351c1835e13 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp @@ -92,7 +92,9 @@ template void create_schnorr_verify_constraints(Builder& buil fr pubkey_value_x = builder.get_variable(input.public_key_x); fr pubkey_value_y = builder.get_variable(input.public_key_y); - cycle_group_ct pub_key{ witness_ct(&builder, pubkey_value_x), witness_ct(&builder, pubkey_value_y), false }; + cycle_group_ct pub_key{ witness_ct(&builder, pubkey_value_x), + witness_ct(&builder, pubkey_value_y), + pubkey_value_x.is_zero() && pubkey_value_y.is_zero() }; schnorr_signature_bits_ct sig = schnorr_convert_signature(&builder, new_sig); From c60ac06d8d0267aff4e06f8e8bee2c77e705c75a Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 2 Aug 2024 08:13:17 +0000 Subject: [PATCH 35/47] add issue to investigate bad schnorr input and enable assert --- .../cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp | 4 +--- .../barretenberg/stdlib/primitives/group/cycle_group.cpp | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp index 351c1835e13..e65224b429c 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp @@ -92,9 +92,7 @@ template void create_schnorr_verify_constraints(Builder& buil fr pubkey_value_x = builder.get_variable(input.public_key_x); fr pubkey_value_y = builder.get_variable(input.public_key_y); - cycle_group_ct pub_key{ witness_ct(&builder, pubkey_value_x), - witness_ct(&builder, pubkey_value_y), - pubkey_value_x.is_zero() && pubkey_value_y.is_zero() }; + cycle_group_ct pub_key{ witness_ct(&builder, pubkey_value_x), witness_ct(&builder, pubkey_value_y), false }; schnorr_signature_bits_ct sig = schnorr_convert_signature(&builder, new_sig); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp index 56428340f73..993d67b31ea 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.cpp @@ -38,7 +38,11 @@ cycle_group::cycle_group(field_t _x, field_t _y, bool_t is_infinity) } else { context = is_infinity.get_context(); } - ASSERT(get_value().on_curve()); + + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1067): This ASSERT is missing in the constructor but + // causes schnorr acir test to fail due to a bad input (a public key that has x and y coordinate set to 0). + // Investigate this to be able to enable the test. + // ASSERT(get_value().on_curve()); } /** From 2ad9fd32c7fba68eb0c549ca5bd9f1efe60e1078 Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 13 Aug 2024 14:02:29 +0000 Subject: [PATCH 36/47] try remove the prefetches --- .../scalar_multiplication.cpp | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp index 22e2c72f405..0f579e3f161 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp @@ -18,22 +18,22 @@ // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays, google-readability-casting) #define BBERG_SCALAR_MULTIPLICATION_FETCH_BLOCK \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 16] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 17] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 18] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 19] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 20] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 21] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 22] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 23] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 24] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 25] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 26] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 27] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 28] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 29] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 30] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 31] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 16] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 17] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 18] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 19] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 20] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 21] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 22] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 23] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 24] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 25] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 26] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 27] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 28] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 29] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 30] >> 32ULL)); \ + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 31] >> 32ULL)); \ \ uint64_t schedule_a = state.point_schedule[schedule_it]; \ uint64_t schedule_b = state.point_schedule[schedule_it + 1]; \ @@ -333,10 +333,10 @@ void add_affine_points(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - __builtin_prefetch(points + i - 2); - __builtin_prefetch(points + i - 1); - __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + // __builtin_prefetch(points + i - 2); + // __builtin_prefetch(points + i - 1); + // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); points[i + 1].y *= batch_inversion_accumulator; // update accumulator batch_inversion_accumulator *= points[i + 1].x; @@ -390,10 +390,10 @@ void add_affine_points_with_edge_cases(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - __builtin_prefetch(points + i - 2); - __builtin_prefetch(points + i - 1); - __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + // __builtin_prefetch(points + i - 2); + // __builtin_prefetch(points + i - 1); + // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); if (points[i].is_point_at_infinity()) { points[(i + num_points) >> 1] = points[i + 1]; @@ -659,10 +659,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 4: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; const uint64_t schedule_c = state.point_schedule[schedule_it + 2]; @@ -685,10 +685,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 2: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; @@ -703,10 +703,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 1: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; Group::conditional_negate_affine(state.points + (schedule_a >> 32ULL), @@ -722,7 +722,7 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b default: { for (size_t k = 0; k < k_end; ++k) { uint64_t schedule = state.point_schedule[schedule_it]; - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); const uint64_t predicate = (schedule >> 31UL) & 1UL; From 524f88be23b28139ee02bbad049f89eb2e9bfd20 Mon Sep 17 00:00:00 2001 From: maramihali Date: Wed, 14 Aug 2024 10:59:58 +0000 Subject: [PATCH 37/47] Attempt to fix memory issues, not clean, seeing if CI is ok now --- .../benchmark/ultra_bench/mock_circuits.hpp | 2 +- barretenberg/cpp/src/barretenberg/common/mem.hpp | 1 + .../scalar_multiplication.cpp | 16 ---------------- .../cpp/src/barretenberg/polynomials/pow.hpp | 3 ++- .../stdlib_circuit_builders/ultra_flavor.hpp | 1 + .../cpp/src/barretenberg/sumcheck/sumcheck.hpp | 15 +++++++++++++-- 6 files changed, 18 insertions(+), 20 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/ultra_bench/mock_circuits.hpp b/barretenberg/cpp/src/barretenberg/benchmark/ultra_bench/mock_circuits.hpp index 86abd9a5aea..9fa489bb83f 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/ultra_bench/mock_circuits.hpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/ultra_bench/mock_circuits.hpp @@ -23,7 +23,7 @@ template void generate_basic_arithmetic_circuit(Builder& buil stdlib::field_t a(stdlib::witness_t(&builder, fr::random_element())); stdlib::field_t b(stdlib::witness_t(&builder, fr::random_element())); stdlib::field_t c(&builder); - size_t passes = (1UL << log2_num_gates) / 4 - 4; + size_t passes = (1UL << log2_num_gates) / 4 - 8; if (static_cast(passes) <= 0) { throw_or_abort("too few gates"); } diff --git a/barretenberg/cpp/src/barretenberg/common/mem.hpp b/barretenberg/cpp/src/barretenberg/common/mem.hpp index d07b85d5da9..7654b2b0d34 100644 --- a/barretenberg/cpp/src/barretenberg/common/mem.hpp +++ b/barretenberg/cpp/src/barretenberg/common/mem.hpp @@ -47,6 +47,7 @@ inline void* protected_aligned_alloc(size_t alignment, size_t size) // NOLINTNEXTLINE(cppcoreguidelines-owning-memory) t = aligned_alloc(alignment, size); if (t == nullptr) { + info("allingment ", alignment); info("bad alloc of size: ", size); std::abort(); } diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp index 0f579e3f161..6e0496cbbef 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp @@ -18,22 +18,6 @@ // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays, google-readability-casting) #define BBERG_SCALAR_MULTIPLICATION_FETCH_BLOCK \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 16] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 17] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 18] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 19] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 20] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 21] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 22] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 23] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 24] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 25] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 26] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 27] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 28] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 29] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 30] >> 32ULL)); \ - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 31] >> 32ULL)); \ \ uint64_t schedule_a = state.point_schedule[schedule_it]; \ uint64_t schedule_b = state.point_schedule[schedule_it + 1]; \ diff --git a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp index 7dda9aaa485..6851f79b1d1 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp @@ -9,7 +9,6 @@ namespace bb { template struct PowPolynomial { - /** * @brief The challenges \f$(\beta_0,\ldots, \beta_{d-1}) \f$ * @@ -44,6 +43,7 @@ template struct PowPolynomial { explicit PowPolynomial(const std::vector& betas) : betas(betas) + {} /** * @brief Retruns the element in #pow_betas at place #idx. @@ -117,6 +117,7 @@ template struct PowPolynomial { BB_PROFILE void compute_values() { size_t pow_size = 1 << betas.size(); + info("size of pow", pow_size); pow_betas = std::vector(pow_size); // Determine number of threads for multithreading. diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp index 2fde0f013bb..e54f549122e 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp @@ -296,6 +296,7 @@ class UltraFlavor { ProverPolynomials(size_t circuit_size) { // Initialize all unshifted polynomials to the zero polynomial and initialize the // shifted polys + info(circuit_size); ZoneScopedN("creating empty prover polys"); for (auto& poly : get_unshifted()) { poly = Polynomial{ circuit_size }; diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp index da79c65b9a1..5fb71170a4f 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp @@ -184,8 +184,15 @@ template class SumcheckProver { const RelationSeparator alpha, const std::vector& gate_challenges) { + info(multivariate_n); + info(gate_challenges.size()); - bb::PowPolynomial pow_univariate(gate_challenges); + std::vector gate_challenges_subspan; + for (size_t i = 0; i < multivariate_d; i++) { + gate_challenges_subspan.emplace_back(gate_challenges[i]); + } + + bb::PowPolynomial pow_univariate(gate_challenges_subspan); pow_univariate.compute_values(); std::vector multivariate_challenge; @@ -385,7 +392,11 @@ template class SumcheckVerifier { { bool verified(true); - bb::PowPolynomial pow_univariate(gate_challenges); + std::vector gate_challenges_subspan; + for (size_t i = 0; i < multivariate_d; i++) { + gate_challenges_subspan.emplace_back(gate_challenges[i]); + } + bb::PowPolynomial pow_univariate(gate_challenges_subspan); // All but final round. // target_total_sum is initialized to zero then mutated in place. From edefb2e695573aee3e1f5f63d6b9c6e1f798e153 Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 16 Aug 2024 13:16:07 +0000 Subject: [PATCH 38/47] fix issue that was causing the circuit description to differ and update constants, proof, verifcation key for acir tests and friends --- barretenberg/acir_tests/sol-test/yarn.lock | 34 +- barretenberg/cpp/src/barretenberg/bb/main.cpp | 12 + .../dsl/acir_format/acir_integration.test.cpp | 24 + .../acir_format/honk_recursion_constraint.cpp | 10 + .../execution_trace/execution_trace.cpp | 2 + .../cpp/src/barretenberg/polynomials/pow.hpp | 35 +- .../honk_recursion/verifier/verifier.test.cpp | 34 +- .../src/barretenberg/sumcheck/sumcheck.hpp | 15 +- .../ultra_honk/ultra_honk.test.cpp | 19 +- .../ultra/keys/Add2UltraVerificationKey.sol | 4 +- .../ultra/keys/BlakeUltraVerificationKey.sol | 4 +- .../ultra/keys/EcdsaUltraVerificationKey.sol | 4 +- .../src/core/libraries/ConstantsGen.sol | 8 +- .../crates/types/src/constants.nr | 6 +- .../verify_honk_proof/Prover.toml | 535 +----------------- .../verify_honk_proof/src/main.nr | 4 +- noir/verify_honk_proof/src/main.nr | 9 +- yarn-project/circuits.js/src/constants.gen.ts | 8 +- 18 files changed, 149 insertions(+), 618 deletions(-) diff --git a/barretenberg/acir_tests/sol-test/yarn.lock b/barretenberg/acir_tests/sol-test/yarn.lock index af80282ea95..9afd4540c9f 100644 --- a/barretenberg/acir_tests/sol-test/yarn.lock +++ b/barretenberg/acir_tests/sol-test/yarn.lock @@ -4,44 +4,44 @@ "@adraffy/ens-normalize@1.10.0": version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== "@noble/curves@1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== dependencies: "@noble/hashes" "1.3.2" "@noble/hashes@1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== "@types/node@18.15.13": version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + resolved "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz" integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== aes-js@4.0.0-beta.5: version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== command-exists@^1.2.8: version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== commander@^8.1.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== ethers@^6.8.1: version "6.8.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.8.1.tgz#ee2a1a39b5f62a13678f90ccd879175391d0a2b4" + resolved "https://registry.npmjs.org/ethers/-/ethers-6.8.1.tgz" integrity sha512-iEKm6zox5h1lDn6scuRWdIdFJUCGg3+/aQWu0F4K0GVyEZiktFkqrJbRjTn1FlYEPz7RKA707D6g5Kdk6j7Ljg== dependencies: "@adraffy/ens-normalize" "1.10.0" @@ -54,32 +54,32 @@ ethers@^6.8.1: follow-redirects@^1.12.1: version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== js-sha3@0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== semver@^5.5.0: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== solc@^0.8.22: version "0.8.22" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.22.tgz#6df0bb688b9a58bbf10932730301374a6ccfb862" + resolved "https://registry.npmjs.org/solc/-/solc-0.8.22.tgz" integrity sha512-bA2tMZXx93R8L5LUH7TlB/f+QhkVyxrrY6LmgJnFFZlRknrhYVlBK1e3uHIdKybwoFabOFSzeaZjPeL/GIpFGQ== dependencies: command-exists "^1.2.8" @@ -92,17 +92,17 @@ solc@^0.8.22: tmp@0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tslib@2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== ws@8.5.0: version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 8fe76c8e7ac..9ca094bae79 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -196,7 +196,14 @@ bool proveAndVerifyHonkAcirFormat(acir_format::AcirFormat constraint_system, aci auto proof = prover.construct_proof(); // Verify Honk proof + info("Printing VK from actual instance"); + auto verification_key = std::make_shared(prover.instance->proving_key); + typename Flavor::CommitmentLabels commitment_labels; + info("PRINTING THE VKEY IN PROVE AND VERIFY FLOW"); + for (auto [label, key] : zip_view(commitment_labels.get_precomputed(), verification_key->get_all())) { + info("label: ", label, " value: ", key); + } Verifier verifier{ verification_key }; return verifier.verify_proof(proof); @@ -1093,6 +1100,11 @@ template bool verify_honk(const std::string& proof_path, auto vk = std::make_shared(from_buffer(read_file(vk_path))); vk->pcs_verification_key = std::make_shared(); Verifier verifier{ vk }; + typename Flavor::CommitmentLabels commitment_labels; + info("PRINTING THE VKEY IN VERIFY ULTRA HONK FLOW"); + for (auto [label, key] : zip_view(commitment_labels.get_precomputed(), vk->get_all())) { + info("label: ", label, " value: ", key); + } bool verified = verifier.verify_proof(proof); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp index 387c11e7609..4bec617ffc7 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp @@ -367,6 +367,7 @@ INSTANTIATE_TEST_SUITE_P(AcirTests, "unconstrained_empty", "unit_value", "unsafe_range_constraint", + "verify_honk_proof", "witness_compression", "xor")); @@ -453,6 +454,29 @@ TEST_F(AcirIntegrationTest, DISABLED_Databus) EXPECT_TRUE(prove_and_verify_honk(builder)); } +/** + * @brief A basic test of a circuit generated in noir that makes use of the databus + * + */ +TEST_F(AcirIntegrationTest, DISABLED_Honk_Constraint) +{ + using Flavor = UltraFlavor; + using Builder = Flavor::CircuitBuilder; + + std::string test_name = "verify_honk_proof"; + info("Test: ", test_name); + acir_format::AcirProgram acir_program = get_program_data_from_test_file(test_name, true); + + // Construct a bberg circuit from the acir representation + Builder builder = acir_format::create_circuit(acir_program.constraints, 0, acir_program.witness); + + // This prints a summary of the types of gates in the circuit + builder.blocks.summarize(); + + // Construct and verify Honk proof + EXPECT_TRUE(prove_and_verify_honk(builder)); +} + /** * @brief Test a program that uses two databus calldata columns * @details In addition to checking that a proof of the resulting circuit verfies, check that the specific structure of diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp index da877ebb2d2..6ff16c61754 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp @@ -36,6 +36,12 @@ void create_dummy_vkey_and_proof(Builder& builder, // Set vkey->circuit_size correctly based on the proof size size_t num_frs_comm = bb::field_conversion::calc_num_bn254_frs(); size_t num_frs_fr = bb::field_conversion::calc_num_bn254_frs(); + info("is the first assert true: ", + (input.proof.size() - HonkRecursionConstraint::inner_public_input_offset - + UltraFlavor::NUM_WITNESS_ENTITIES * num_frs_comm - UltraFlavor::NUM_ALL_ENTITIES * num_frs_fr - + 2 * num_frs_comm) % + (num_frs_comm + num_frs_fr * UltraFlavor::BATCHED_RELATION_PARTIAL_LENGTH) == + 0); assert((input.proof.size() - HonkRecursionConstraint::inner_public_input_offset - UltraFlavor::NUM_WITNESS_ENTITIES * num_frs_comm - UltraFlavor::NUM_ALL_ENTITIES * num_frs_fr - 2 * num_frs_comm) % @@ -102,6 +108,7 @@ void create_dummy_vkey_and_proof(Builder& builder, offset += 4; } + info("here ", Flavor::BATCHED_RELATION_PARTIAL_LENGTH); // now the univariates, which can just be 0s (7*CONST_PROOF_SIZE_LOG_N Frs) for (size_t i = 0; i < CONST_PROOF_SIZE_LOG_N * Flavor::BATCHED_RELATION_PARTIAL_LENGTH; i++) { builder.assert_equal(builder.add_variable(fr::random_element()), proof_fields[offset].witness_index); @@ -135,6 +142,7 @@ void create_dummy_vkey_and_proof(Builder& builder, builder.assert_equal(builder.add_variable(frs[3]), proof_fields[offset + 3].witness_index); offset += 4; } + info("is the last assert true: ", offset == input.proof.size() + input.public_inputs.size()); ASSERT(offset == input.proof.size() + input.public_inputs.size()); } @@ -191,8 +199,10 @@ AggregationObjectIndices create_honk_recursion_constraints(Builder& builder, if (!has_valid_witness_assignments) { create_dummy_vkey_and_proof(builder, input, key_fields, proof_fields); } + // Recursively verify the proof auto vkey = std::make_shared(builder, key_fields); + Flavor::CommitmentLabels commitment_labels; RecursiveVerifier verifier(&builder, vkey); aggregation_state_ct input_agg_obj = bb::stdlib::recursion::convert_witness_indices_to_agg_obj( builder, input_aggregation_object_indices); diff --git a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp index d0f1b37e1c1..c59d07cbd01 100644 --- a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp @@ -60,6 +60,8 @@ typename ExecutionTrace_::TraceData ExecutionTrace_::construct_t for (auto& block : builder.blocks.get()) { auto block_size = static_cast(block.size()); + // + // Update wire polynomials and copy cycles // NB: The order of row/column loops is arbitrary but needs to be row/column to match old copy_cycle code for (uint32_t block_row_idx = 0; block_row_idx < block_size; ++block_row_idx) { diff --git a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp index 6851f79b1d1..9719c95b8d3 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp @@ -64,20 +64,20 @@ template struct PowPolynomial { */ FF univariate_eval(FF challenge) const { return (FF(1) + (challenge * (betas[current_element_idx] - FF(1)))); }; - /** - * @brief Evaluate \f$ ((1−X_{i}) + X_{i}\cdot \beta_{i})\f$ at the challenge point \f$ X_{i}=u_{i} \f$. - */ - template FF univariate_eval(const FF& challenge, const Bool& dummy_round) const - { - FF beta_or_dummy; - if (!dummy_round.get_value()) { - beta_or_dummy = betas[current_element_idx]; - } else { - beta_or_dummy = FF::from_witness(challenge.get_context(), 1); - } - FF beta_val = FF::conditional_assign(dummy_round, FF::from_witness(challenge.get_context(), 1), beta_or_dummy); - return (FF(1) + (challenge * (beta_val - FF(1)))); - } + // /** + // * @brief Evaluate \f$ ((1−X_{i}) + X_{i}\cdot \beta_{i})\f$ at the challenge point \f$ X_{i}=u_{i} \f$. + // */ + // template FF univariate_eval(const FF& challenge, const Bool& dummy_round) const + // { + // FF beta_or_dummy; + // if (!dummy_round.get_value()) { + // beta_or_dummy = betas[current_element_idx]; + // } else { + // beta_or_dummy = FF::from_witness(challenge.get_context(), 1); + // } + // FF beta_val = FF::conditional_assign(dummy_round, FF::from_witness(challenge.get_context(), 1), + // beta_or_dummy); return (FF(1) + (challenge * (beta_val - FF(1)))); + // } /** * @brief Partially evaluate the \f$pow_{\beta} \f$-polynomial at the new challenge and update \f$ c_i \f$ @@ -101,7 +101,7 @@ template struct PowPolynomial { */ template void partially_evaluate(const FF& challenge, const stdlib::bool_t& dummy) { - FF current_univariate_eval = univariate_eval(challenge, dummy); + FF current_univariate_eval = univariate_eval(challenge); // If dummy round, make no update to the partial_evaluation_result partial_evaluation_result = FF::conditional_assign( dummy, partial_evaluation_result, partial_evaluation_result * current_univariate_eval); @@ -114,9 +114,10 @@ template struct PowPolynomial { * \ell)\f$ for \f$ \ell =0,\ldots,2^{d}-1\f$. * */ - BB_PROFILE void compute_values() + BB_PROFILE void compute_values(std::optional subspan = std::nullopt) { - size_t pow_size = 1 << betas.size(); + + size_t pow_size = subspan.has_value() ? 1 << subspan.value() : 1 << betas.size(); info("size of pow", pow_size); pow_betas = std::vector(pow_size); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp index e37cc162898..cd101e5ffe7 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp @@ -126,7 +126,9 @@ template class RecursiveVerifierTest : public testing static void test_independent_vk_hash() { // Retrieves the trace blocks (each consisting of a specific gate) from the recursive verifier circuit - auto get_blocks = [](size_t inner_size) { // Create an arbitrary inner circuit + auto get_blocks = [](size_t inner_size) + -> std::tuple> { + // Create an arbitrary inner circuit auto inner_circuit = create_inner_circuit(inner_size); // Generate a proof over the inner circuit @@ -142,7 +144,12 @@ template class RecursiveVerifierTest : public testing [[maybe_unused]] auto pairing_points = verifier.verify_proof( inner_proof, init_default_aggregation_state(outer_circuit)); - return outer_circuit.blocks; + + auto outer_instance = std::make_shared(outer_circuit); + auto outer_verification_key = + std::make_shared(outer_instance->proving_key); + + return { outer_circuit.blocks, outer_verification_key }; }; bool broke(false); @@ -156,12 +163,15 @@ template class RecursiveVerifierTest : public testing } }; - auto blocks_10 = get_blocks(10); - auto blocks_11 = get_blocks(11); + auto [blocks_10, verification_key_10] = get_blocks(10); + auto [blocks_11, verification_key_11] = get_blocks(11); + size_t block_idx = 0; for (auto [b_10, b_11] : zip_view(blocks_10.get(), blocks_11.get())) { info("block index: ", block_idx); size_t sel_idx = 0; + EXPECT_TRUE(b_10.selectors.size() == 13); + EXPECT_TRUE(b_11.selectors.size() == 13); for (auto [p_10, p_11] : zip_view(b_10.selectors, b_11.selectors)) { info("sel index: ", sel_idx); @@ -171,6 +181,18 @@ template class RecursiveVerifierTest : public testing block_idx++; } + typename OuterFlavor::CommitmentLabels labels; + for (auto [vk_10, vk_11, label] : + zip_view(verification_key_10->get_all(), verification_key_11->get_all(), labels.get_precomputed())) { + if (vk_10 != vk_11) { + broke = true; + info("Mismatch verification key label: ", label, " left: ", vk_10, " right: ", vk_11); + } + } + + EXPECT_TRUE(verification_key_10->circuit_size == verification_key_11->circuit_size); + EXPECT_TRUE(verification_key_10->num_public_inputs == verification_key_11->num_public_inputs); + EXPECT_FALSE(broke); } @@ -192,6 +214,10 @@ template class RecursiveVerifierTest : public testing // Create a recursive verification circuit for the proof of the inner circuit OuterBuilder outer_circuit; RecursiveVerifier verifier{ &outer_circuit, verification_key }; + typename RecursiveFlavor::CommitmentLabels commitment_labels; + for (auto [label, key] : zip_view(commitment_labels.get_precomputed(), verifier.key->get_all())) { + info("label: ", label, " value: ", key.get_value()); + } aggregation_state agg_obj = init_default_aggregation_state(outer_circuit); auto pairing_points = verifier.verify_proof(inner_proof, agg_obj); diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp index 5fb71170a4f..31560aa24ed 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp @@ -187,13 +187,8 @@ template class SumcheckProver { info(multivariate_n); info(gate_challenges.size()); - std::vector gate_challenges_subspan; - for (size_t i = 0; i < multivariate_d; i++) { - gate_challenges_subspan.emplace_back(gate_challenges[i]); - } - - bb::PowPolynomial pow_univariate(gate_challenges_subspan); - pow_univariate.compute_values(); + bb::PowPolynomial pow_univariate(gate_challenges); + pow_univariate.compute_values(multivariate_d); std::vector multivariate_challenge; multivariate_challenge.reserve(multivariate_d); @@ -392,11 +387,7 @@ template class SumcheckVerifier { { bool verified(true); - std::vector gate_challenges_subspan; - for (size_t i = 0; i < multivariate_d; i++) { - gate_challenges_subspan.emplace_back(gate_challenges[i]); - } - bb::PowPolynomial pow_univariate(gate_challenges_subspan); + bb::PowPolynomial pow_univariate(gate_challenges); // All but final round. // target_total_sum is initialized to zero then mutated in place. diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index de79a7dbd84..74af801bc63 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -8,6 +8,7 @@ #include "barretenberg/stdlib_circuit_builders/plookup_tables/fixed_base/fixed_base.hpp" #include "barretenberg/stdlib_circuit_builders/plookup_tables/types.hpp" #include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp" +#include "barretenberg/stdlib_circuit_builders/ultra_keccak.hpp" #include "barretenberg/sumcheck/sumcheck_round.hpp" #include "barretenberg/ultra_honk/ultra_prover.hpp" #include "barretenberg/ultra_honk/ultra_verifier.hpp" @@ -16,8 +17,8 @@ using namespace bb; -using ProverInstance = ProverInstance_; -using VerificationKey = UltraFlavor::VerificationKey; +using ProverInstance = ProverInstance_; +using VerificationKey = UltraKeccakFlavor::VerificationKey; std::vector add_variables(auto& circuit_builder, std::vector variables) { @@ -31,9 +32,9 @@ std::vector add_variables(auto& circuit_builder, std::vector v void prove_and_verify(auto& circuit_builder, bool expected_result) { auto instance = std::make_shared(circuit_builder); - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraVerifier verifier(verification_key); + UltraKeccakVerifier verifier(verification_key); auto proof = prover.construct_proof(); bool verified = verifier.verify_proof(proof); EXPECT_EQ(verified, expected_result); @@ -65,7 +66,7 @@ TEST_F(UltraHonkTests, ANonZeroPolynomialIsAGoodPolynomial) auto circuit_builder = UltraCircuitBuilder(); auto instance = std::make_shared(circuit_builder); - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto proof = prover.construct_proof(); auto& polynomials = instance->proving_key.polynomials; @@ -97,9 +98,9 @@ TEST_F(UltraHonkTests, StructuredTrace) // Construct an instance with a structured execution trace TraceStructure trace_structure = TraceStructure::SMALL_TEST; auto instance = std::make_shared(builder, trace_structure); - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraVerifier verifier(verification_key); + UltraKeccakVerifier verifier(verification_key); auto proof = prover.construct_proof(); EXPECT_TRUE(verifier.verify_proof(proof)); } @@ -223,9 +224,9 @@ TEST_F(UltraHonkTests, LookupFailure) }; auto prove_and_verify = [](auto& instance) { - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraVerifier verifier(verification_key); + UltraKeccakVerifier verifier(verification_key); auto proof = prover.construct_proof(); return verifier.verify_proof(proof); }; diff --git a/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol index 27f1983ed5f..7dd4f3538c0 100644 --- a/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol +++ b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol @@ -1,11 +1,11 @@ -// Verification Key Hash: f7bbd1b4758c8616f966f56728b3d7127a0d1ca6763cbaf70b4719914be476bd +// Verification Key Hash: 588e04b60b4f877a26815bd230e7bc0f2b6e38aaa2c517c889a380e0203d228c // SPDX-License-Identifier: Apache-2.0 // Copyright 2022 Aztec pragma solidity >=0.8.4; library Add2UltraVerificationKey { function verificationKeyHash() internal pure returns (bytes32) { - return 0xf7bbd1b4758c8616f966f56728b3d7127a0d1ca6763cbaf70b4719914be476bd; + return 0x588e04b60b4f877a26815bd230e7bc0f2b6e38aaa2c517c889a380e0203d228c; } function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { diff --git a/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol index b8a1d2efd68..93086663550 100644 --- a/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol +++ b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol @@ -1,11 +1,11 @@ -// Verification Key Hash: 7370a14d9a35deb926608bdc13693b06292d2f66052be3dd6d13d35441270318 +// Verification Key Hash: 5218464f67341f763fdbf1a989bbbb0f6533c7e2919c58921d52c378610838fc // SPDX-License-Identifier: Apache-2.0 // Copyright 2022 Aztec pragma solidity >=0.8.4; library BlakeUltraVerificationKey { function verificationKeyHash() internal pure returns (bytes32) { - return 0x7370a14d9a35deb926608bdc13693b06292d2f66052be3dd6d13d35441270318; + return 0x5218464f67341f763fdbf1a989bbbb0f6533c7e2919c58921d52c378610838fc; } function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { diff --git a/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol index 82e67a786f6..61598654904 100644 --- a/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol +++ b/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol @@ -1,11 +1,11 @@ -// Verification Key Hash: 3b1c156f02c5934c94573e30a9d55a6398e8d1f616136797c008194d26892a55 +// Verification Key Hash: 83001df02de0e49c3cde502f6162d6bfccb87978b28be03b851cc00a7bfa38d9 // SPDX-License-Identifier: Apache-2.0 // Copyright 2022 Aztec pragma solidity >=0.8.4; library EcdsaUltraVerificationKey { function verificationKeyHash() internal pure returns (bytes32) { - return 0x3b1c156f02c5934c94573e30a9d55a6398e8d1f616136797c008194d26892a55; + return 0x83001df02de0e49c3cde502f6162d6bfccb87978b28be03b851cc00a7bfa38d9; } function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index a0863663b58..7d3ed2cf788 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -207,10 +207,10 @@ library Constants { uint256 internal constant LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 64; uint256 internal constant NUM_MSGS_PER_BASE_PARITY = 4; uint256 internal constant NUM_BASE_PARITY_PER_ROOT_PARITY = 4; - uint256 internal constant RECURSIVE_PROOF_LENGTH = 409; - uint256 internal constant NESTED_RECURSIVE_PROOF_LENGTH = 409; - uint256 internal constant TUBE_PROOF_LENGTH = 409; - uint256 internal constant VERIFICATION_KEY_LENGTH_IN_FIELDS = 120; + uint256 internal constant RECURSIVE_PROOF_LENGTH = 439; + uint256 internal constant NESTED_RECURSIVE_PROOF_LENGTH = 439; + uint256 internal constant TUBE_PROOF_LENGTH = 439; + uint256 internal constant VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; uint256 internal constant SENDER_SELECTOR = 0; uint256 internal constant ADDRESS_SELECTOR = 1; uint256 internal constant STORAGE_ADDRESS_SELECTOR = 1; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index e0c3aa6de23..e09cdd6ce4a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -270,11 +270,11 @@ global NUM_MSGS_PER_BASE_PARITY: u32 = 4; global NUM_BASE_PARITY_PER_ROOT_PARITY: u32 = 4; // Lengths of the different types of proofs in fields -global RECURSIVE_PROOF_LENGTH = 409; -global NESTED_RECURSIVE_PROOF_LENGTH = 409; +global RECURSIVE_PROOF_LENGTH = 439; +global NESTED_RECURSIVE_PROOF_LENGTH = 439; global TUBE_PROOF_LENGTH = RECURSIVE_PROOF_LENGTH; // in the future these can differ -global VERIFICATION_KEY_LENGTH_IN_FIELDS = 120; +global VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; /** * Enumerate the hash_indices which are used for pedersen hashing. diff --git a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml index f2e6bbed8ef..2827d61eb31 100644 --- a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml +++ b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml @@ -1,537 +1,6 @@ key_hash = "0x096129b1c6e108252fc5c829c4cc9b7e8f0d1fd9f29c2532b563d6396645e08f" -proof = [ - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000011", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf", - "0x00000000000000000000000000000000000000000000000b75c020998797da78", - "0x0000000000000000000000000000000000000000000000005a107acb64952eca", - "0x000000000000000000000000000000000000000000000000000031e97a575e9d", - "0x00000000000000000000000000000000000000000000000b5666547acf8bd5a4", - "0x00000000000000000000000000000000000000000000000c410db10a01750aeb", - "0x00000000000000000000000000000000000000000000000d722669117f9758a4", - "0x000000000000000000000000000000000000000000000000000178cbf4206471", - "0x000000000000000000000000000000000000000000000000e91b8a11e7842c38", - "0x000000000000000000000000000000000000000000000007fd51009034b3357f", - "0x000000000000000000000000000000000000000000000009889939f81e9c7402", - "0x0000000000000000000000000000000000000000000000000000f94656a2ca48", - "0x000000000000000000000000000000000000000000000006fb128b46c1ddb67f", - "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", - "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", - "0x0000000000000000000000000000000000000000000000000001b52c2020d746", - "0x0000000000000000000000000000005a9bae947e1e91af9e4033d8d6aa6ed632", - "0x000000000000000000000000000000000025e485e013446d4ac7981c88ba6ecc", - "0x000000000000000000000000000000ff1e0496e30ab24a63b32b2d1120b76e62", - "0x00000000000000000000000000000000001afe0a8a685d7cd85d1010e55d9d7c", - "0x000000000000000000000000000000b0804efd6573805f991458295f510a2004", - "0x00000000000000000000000000000000000c81a178016e2fe18605022d5a8b0e", - "0x000000000000000000000000000000eba51e76eb1cfff60a53a0092a3c3dea47", - "0x000000000000000000000000000000000022e7466247b533282f5936ac4e6c15", - "0x00000000000000000000000000000071b1d76edf770edff98f00ff4deec264cd", - "0x00000000000000000000000000000000001e48128e68794d8861fcbb2986a383", - "0x000000000000000000000000000000d3a2af4915ae6d86b097adc377fafda2d4", - "0x000000000000000000000000000000000006359de9ca452dab3a4f1f8d9c9d98", - "0x0000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f", - "0x00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa49", - "0x0000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e157", - "0x00000000000000000000000000000000000ff3e0896bdea021253b3d360fa678", - "0x0000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f", - "0x00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa49", - "0x0000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e157", - "0x00000000000000000000000000000000000ff3e0896bdea021253b3d360fa678", - "0x000000000000000000000000000000f968b227a358a305607f3efc933823d288", - "0x00000000000000000000000000000000000eaf8adb390375a76d95e918b65e08", - "0x000000000000000000000000000000bb34b4b447aae56f5e24f81c3acd6d547f", - "0x00000000000000000000000000000000002175d012746260ebcfe339a91a81e1", - "0x0000000000000000000000000000005b739ed2075f2b046062b8fc6a2d1e9863", - "0x00000000000000000000000000000000001285cd1030d338c0e1603b4da2c838", - "0x00000000000000000000000000000027447d6c281eb38b2b937af4a516d60c04", - "0x000000000000000000000000000000000019bc3d980465fbb4a656a74296fc58", - "0x000000000000000000000000000000b484788ace8f7df86dd5e325d2e9b12599", - "0x00000000000000000000000000000000000a2ca0d10eb7b767114ae230b728d3", - "0x000000000000000000000000000000c6dfc7092f16f95795e437664498b88d53", - "0x0000000000000000000000000000000000131067b4e4d95a4f6f8cf5c9b5450a", - "0x0f413f22eec51f2a02800e0cafaeec1d92d744fbbaef213c687b9edabd6985f5", - "0x21230f4ff26c80ffb5d037a9d1d26c3f955ca34cbeca4f54db6656b932967a0c", - "0x0521f877fe35535767f99597cc50effbd283dcae6812ee0a7620d796ccbfd642", - "0x202b01350a9cc5c20ec0f3eaada338c0a3b793811bd539418ffa3cc4302615e2", - "0x2d1214d9b0d41058ad4a172d9c0aecc5bdabe95e687c3465050c6b5396509be4", - "0x1113b344a151b0af091cb28d728b752ebb4865da6cd7ee68471b961ca5cf69b9", - "0x2aa66d0954bb83e17bd5c9928d3aa7a7df75d741d409f7c15ba596804ba643fb", - "0x2e26bc7a530771ef7a95d5360d537e41cf94d8a0942764ff09881c107f91a106", - "0x0f14f32b921bb63ad1df00adab7c82af58ea8aa7f353f14b281208d8c5fab504", - "0x13429515c0c53b6502bbcdf545defb3cb69a986c9263e070fcbb397391aae1a3", - "0x1f21cac5e2f262afc1006a21454cc6bcb018c44e53ad8ab61cebbac99e539176", - "0x2a9886a6ddc8a61b097c668cd362fc8acdee8dde74f7b1af192c3e060bb2948f", - "0x2d718181e408ead2e9bcd30a84ad1fccbaf8d48ab6d1820bad4933d284b503c4", - "0x2634c1aafc902f14508f34d3d7e9d485f42d1a4c95b5a1ef73711ed0d3c68d77", - "0x092ede9777e6472ce5ffd8c963d466006189e960e2c591d338dc8d4af1a057fb", - "0x1cba45b17fd24f1cb1b4ab7b83eee741f6c77ba70a497dc4de259eceb7d5ea26", - "0x246e887c7bf2e17f919b2393b6e9b00b33e8822d862544a775aac05cb7bff710", - "0x04c3f539fe8689971948afcb437f1ecbd444a5bddaca1c8a450348dcd8480047", - "0x20c6a423ae4fd58e8951aa378d02d77baf90508ceb48856db2319d70938b186e", - "0x1bcf8786b554b3316d8ebdbc9d006a4e5d4865aad512ffd404b7f83550d3d030", - "0x09ab038260518f0970564afcd6bf22e2abf6b1fa5e12a327bbf195b6ca5edd78", - "0x1024e32554746f89c195286ba6ccfc9765e5d14bbe8064bc6fdf22d16ec6b495", - "0x17706656f8dbd7e47bb257a6428f0cb7278ea02fa9e6ce431d7bcc9133fba9c7", - "0x25a3e8a33c15ef2a4dd16313a6049bf1d468b4cdc141f238f2d51a1e8e1c22b3", - "0x1198863f08006edb27aee23164fb117a4ddec1bf1ed89807aa907e5cd24bf068", - "0x1862b4856b5b4d4a064f873e221703e4e2cd1ebfca1337dedca56485c38ed5a0", - "0x062214af1ea6dd6bf8895b92d394571c43970b6f967e1c794624d96071b25ad3", - "0x1e5be9428ddcf1f9b0cbafc28101e792ec5cf73852b0cd0b84fbff71b4490e09", - "0x2d4189bea5b1e30f63c64bd26df82f18bcaf885ec8887b54634b2557869ce87f", - "0x0f2e5d9a908850e9d44925e17d8b12d1adb1ed029799c9b5858598504242bbc0", - "0x3050dc85746a57931d99f3f35e77c2ba561fba0baa018b79ff1fd544026833ae", - "0x2a591a32437e5e0b875a137fd868bd1b6dbc003ff1b661f26e00627cc7c5cf47", - "0x27946841e1670ad9c65717016d0cedf524724217236e81b9fd0a264a36ebfb0e", - "0x0fc396e9d19d6e68e289602e292ee345542d0d28bf6de34fa62cc577cbdfb1df", - "0x08e7433a07a44c0c9c4dd4b273a2685bbd1a91fd5cf2b43409458fab42a23e1b", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x12bd9bfb029c3503a5c6deea87b0a0f11bb9f7ea584af2d48f3e48d7e09247ae", - "0x2ccc4810748c0a82dfc0f063d0b8c7999ffe9474653080e6ef92b3cb7a428784", - "0x08eb574d7fecadadb508c8bd35fdad06b99110609d679763c2e3645229b1b95a", - "0x0f1a65e747c8021ed7c454a4be1e89b1bce66ead9ed980fa98a7a050eafe98a1", - "0x1c8ff9e36684ec71614dee4c17859b06c742089f6029d3694a16e00dac9b57f1", - "0x0303101a8ba712aeca4da85b767ab8d3ecf489ec7d746f8ee20041717cc000e9", - "0x0aaf64c65e7088e5596108c9601467911fea809ca6540d79af77e6e66e36cd99", - "0x17caf164ce74ea7edfb1390e07763d2197797ec26661b92cde18a98d61d2fddc", - "0x18cb055c7ad6d01437725bb457681d81f3ecadc4f35d838a3c13daf25a44456a", - "0x2d78602b8bbcd32b36a99a6e2d248e7fe044ef1b50813133370412f9ef5299f0", - "0x2b139276ea86d426a115479e4154f72a6bd83a6253bf13e9670dc6b4664378f0", - "0x127c7837b384902c39a104036c09546728571c46c8166b1b9b13b3a615ebb781", - "0x05faa4816f83cf0189a482ad943c94b9ec6474002f2b327f8698763ad0ea0985", - "0x2f90359cc30ee693fb3aced96523cf7aebd152c22329eee56a398d9a4ac0628e", - "0x0a71beaf17a59c5a238f04c1f203848d87502c5057a78c13f0cfb0f9876e7714", - "0x2696c1e6d089556adaeb95c8a5e3065b00a393a38c2d69e9bd6ce8cdc49d87da", - "0x1f3d165a7dc6564a036e451eb9cb7f1e1cb1e6d29daa75e3f135ea3e58a79ccd", - "0x1473a660819bdd838d56122b72b32b267211e9f1103239480ec50fa85c9e1035", - "0x0a8ccaeb22451f391b3fc3467c8e6e900270a7afb7b510e8acf5a4f06f1c0888", - "0x03b3080afc0658cc87e307758cebc171921f43eca159b9dedf7f72aa8dd926bd", - "0x2dd7d6663fa0e1755dfafac352c361fcd64c7f4d53627e3646870ac169cc4a07", - "0x1ec54b883f5f35ccad0e75695af20790d9860104095bab34c9bf01628dd40cb9", - "0x193dff50f83c241f7a9e087a29ce72ecf3f6d8563593f786dcd04c32bcfd4ced", - "0x135122c0dae26cda8ca1c09de8225064ad86d10423ab0aaa53b481aa4626e1d6", - "0x08d5a56cbfab5aeed56d3cdd7fb6b30fc26b0c1a5b63fccd7fa44c53ba6fd35a", - "0x0d12f126dfa2daad3726d00ca339284cc22e36c6d81bb7a4b95c6f9598b60e7c", - "0x2e8b24bbdf2fd839d3c7cae1f0eeb96bfcfaeef30b27476f2fafcb17da78cd5e", - "0x2364acfe0cea39b7f749c5f303b99504977357925f810f684c60f35d16315211", - "0x06ca062eb70b8c51cfac35345e7b6b51f33a8ec9ebe204fb9b4911200bf508b7", - "0x266c0aa1ccb97186815bf69084f600d06ddd934e59a38dfe602ee5d6b9487f22", - "0x1d817537a49c6d0e3b4b65c6665334b91d7593142e60065048be9e55ceb5e7ab", - "0x05e9b7256a368df053c691952b59e9327a7c12ed322bbd6f72c669b9b9c26d49", - "0x05e9b7256a368df053c691952b59e9327a7c12ed322bbd6f72c669b9b9c26d49", - "0x25b77026673a1e613e50df0e88fb510973739d5f9064bd364079a9f884209632", - "0x25c9bc7a3f6aae3d43ff68b5614b34b5eaceff37157b37347995d231784ac1fd", - "0x085f69baef22680ae15f4801ef4361ebe9c7fc24a94b5bc2527dce8fb705439e", - "0x0d7c6b9ce31bfc32238a205455baf5ffe99cd30eb0f7bb5b504e1d4501e01382", - "0x1001a8cc4bc1221c814fba0eddcf3c40619b133373640c600de5bed0a0a05b10", - "0x20f5894be90e52977cb70f4f4cbd5101693db0360848939750db7e91109d54b6", - "0x22c09cb26db43f0599408b4daed0f4f496c66424e6affa41c14387d8e0af851b", - "0x24e5f41357798432426a9549d71e8cc681eaebacbe87f6e3bf38e85de5aa2f3d", - "0x06eb90100c736fbf2b87432d7821ecdc0b365024739bc36363d48b905973f5b9", - "0x000000000000000000000000000000ece6d09ed58e9f5661c01140b10558a8c2", - "0x000000000000000000000000000000000012b6e4f37adcb34b8e88ff8b6eebce", - "0x000000000000000000000000000000b226a2bb93593fa1fab19a44767828a3f5", - "0x00000000000000000000000000000000002b5b518342030543092e1428a7e33c", - "0x00000000000000000000000000000022ba33857034a0574c216eb3c1ddff3025", - "0x00000000000000000000000000000000001918e58df857985a7cf9eae7802165", - "0x00000000000000000000000000000045c2d840b96fb6106cc14dcad89dd5f675", - "0x00000000000000000000000000000000000afdfac1e3a1febdd0208867d44f98", - "0x00000000000000000000000000000042ebed6c5ec45d794f119aef24c192af0f", - "0x00000000000000000000000000000000002d05ef250900bbcc5751bbeb210d6a", - "0x00000000000000000000000000000060d604bdda48eecc90ed065bd9770e1323", - "0x00000000000000000000000000000000001fed91c63d0041660c1cbc84c2ffbb", - "0x00000000000000000000000000000054196b549cde36092e8184c7f4f7d878de", - "0x00000000000000000000000000000000000153f26a01294329922b492485cc31", - "0x00000000000000000000000000000056ebea579d10dbb440f0222931df2c0059", - "0x00000000000000000000000000000000000d2cbc61ce5b7cdd7fce398da4637b", - "0x000000000000000000000000000000e2b9512360b9797d96675d8a2fd2f7aa5d", - "0x000000000000000000000000000000000025742905f105ff895f74e7c3daa34a", - "0x000000000000000000000000000000a2dd7df55db59bd41b83518d4403fbc382", - "0x00000000000000000000000000000000002c1d9c3cbb9371d4cc4e9f900b9a46", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000bcf12ae40c9425c3e67654b84181f90502", - "0x00000000000000000000000000000000000b6d3faa8a71ff6ef1aa887b7307cf", - "0x0000000000000000000000000000001f6f719acc23b8f84808c0275d61cfb456", - "0x0000000000000000000000000000000000296030933ed0c134457ae71c393dfe", - "0x000000000000000000000000000000ebe1a57cdd7d3d763289b40ef5ed9a7ae0", - "0x000000000000000000000000000000000010f30483e7df51fca2316d3367603c", - "0x0000000000000000000000000000000149b7b283ab18060618c8e051864c03cd", - "0x00000000000000000000000000000000001ef7763235a3a25e241a5f06704dc3", -] +proof = ["0x0000000000000000000000000000000000000000000000000000000000000040","0x0000000000000000000000000000000000000000000000000000000000000011","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf","0x00000000000000000000000000000000000000000000000b75c020998797da78","0x0000000000000000000000000000000000000000000000005a107acb64952eca","0x000000000000000000000000000000000000000000000000000031e97a575e9d","0x00000000000000000000000000000000000000000000000b5666547acf8bd5a4","0x00000000000000000000000000000000000000000000000c410db10a01750aeb","0x00000000000000000000000000000000000000000000000d722669117f9758a4","0x000000000000000000000000000000000000000000000000000178cbf4206471","0x000000000000000000000000000000000000000000000000e91b8a11e7842c38","0x000000000000000000000000000000000000000000000007fd51009034b3357f","0x000000000000000000000000000000000000000000000009889939f81e9c7402","0x0000000000000000000000000000000000000000000000000000f94656a2ca48","0x000000000000000000000000000000000000000000000006fb128b46c1ddb67f","0x0000000000000000000000000000000000000000000000093fe27776f50224bd","0x000000000000000000000000000000000000000000000004a0c80c0da527a081","0x0000000000000000000000000000000000000000000000000001b52c2020d746","0x0000000000000000000000000000005a9bae947e1e91af9e4033d8d6aa6ed632","0x000000000000000000000000000000000025e485e013446d4ac7981c88ba6ecc","0x000000000000000000000000000000ff1e0496e30ab24a63b32b2d1120b76e62","0x00000000000000000000000000000000001afe0a8a685d7cd85d1010e55d9d7c","0x000000000000000000000000000000b0804efd6573805f991458295f510a2004","0x00000000000000000000000000000000000c81a178016e2fe18605022d5a8b0e","0x000000000000000000000000000000eba51e76eb1cfff60a53a0092a3c3dea47","0x000000000000000000000000000000000022e7466247b533282f5936ac4e6c15","0x00000000000000000000000000000071b1d76edf770edff98f00ff4deec264cd","0x00000000000000000000000000000000001e48128e68794d8861fcbb2986a383","0x000000000000000000000000000000d3a2af4915ae6d86b097adc377fafda2d4","0x000000000000000000000000000000000006359de9ca452dab3a4f1f8d9c9d98","0x0000000000000000000000000000006cf7dd96d7636fda5953191b1ad776d491","0x00000000000000000000000000000000001633d881a08d136e834cb13a28fcc6","0x00000000000000000000000000000001254956cff6908b069fca0e6cf1c47eb1","0x000000000000000000000000000000000006f4d4dd3890e997e75e75886bf8f7","0x0000000000000000000000000000006cf7dd96d7636fda5953191b1ad776d491","0x00000000000000000000000000000000001633d881a08d136e834cb13a28fcc6","0x00000000000000000000000000000001254956cff6908b069fca0e6cf1c47eb1","0x000000000000000000000000000000000006f4d4dd3890e997e75e75886bf8f7","0x000000000000000000000000000000f968b227a358a305607f3efc933823d288","0x00000000000000000000000000000000000eaf8adb390375a76d95e918b65e08","0x000000000000000000000000000000bb34b4b447aae56f5e24f81c3acd6d547f","0x00000000000000000000000000000000002175d012746260ebcfe339a91a81e1","0x000000000000000000000000000000286fcda0e28617c86e195005b9f2efc555","0x00000000000000000000000000000000000dc409eb684b23f6a97175bcb9b486","0x000000000000000000000000000000e8de6a193cd36414f598bc7c48d67c3b59","0x00000000000000000000000000000000002a8a791544cad8c712de871e3de50a","0x000000000000000000000000000000d6f1e64b562df0f17ecc6aa46392f8d5a3","0x00000000000000000000000000000000000aac977763f33fd6a360ccc50a827a","0x000000000000000000000000000000899fa957f5597c6419e3ead9843d21d917","0x000000000000000000000000000000000016c4611846952bd6833c35fb11c0da","0x013dbfbfbfb2ae7d524edb15343e551d9510b3116223baaa67312d17652f2fb1","0x2f268eb3217ef1ac66016aa14d43033f932335371795b5e6dcb0c87c8ad0d050","0x2d5dbd52e00ae837e9868289fbe9057f16ea5b76c7e362603e8883f0de4b3e94","0x0e357b6a266c20d5e546c2931475eb044d7e75e08ec31b5e8623aec30f964323","0x0a9ace4dea44d0a2e8d12d495a683f508714356656aea3882436b729ead24165","0x0c17102a98ccb76faf0f78d669ee9cfb694849896787c985225d92e1af3cab35","0x09cc7cb719deb139c84fd9fa273e862a1b5d1cec2501c6cd8ba3c37ca06ac07f","0x15a0369f3f95d53687dfe79483baf75597d8b281fe0595caf1f7c9ccf99d985e","0x17fb53a42b3d1fa5d26ab19dfcc0d74d1781cee0be98dcc492c22e8f3442c4db","0x291d6810fc6afc5c2254fd283843a74c85a77275eee3049ea8ed9c88e02a99b8","0x0ad40d1627c31247dfb894584a71f8599cfcb85afe84b20186fc07fccae1aa4a","0x251cd908fb4e9fe88660f2303f8d7e4d7886da32fddc0319a842b99543659c0b","0x1885bdea3dd82085ca67502ebec8ad87213493e18a06cfa27e2c69810481b4a7","0x239ab5ba86866bc6705091f82a6a29444dc76b0e7d94cede7eb745cce36ab2cf","0x088d29a03baa491845d152124189dfb8bf70ba9bf1fb00c379199dbb0195c663","0x18c9fbe3227988d2da599eba82d60f4de25b442b663585fdc611e37305fa77fc","0x010242ae641a8cc4d06b5d24e38d9fa6254f981e28f238ccf6aad580f780d3f5","0x00128d34b122e84d7e23276b1f13f5789a562e82c727e9ffcfd7bbaccbe69e04","0x0776defaf478bfea4db2698542314e27213f63c96e41f98d4d82a47ed6fab55d","0x273014a360eaaa493e398df82f18d9cae37f4b6c0ead20100cad3f5491805298","0x2b13528eb9ab6fa705f2b48c9ec6ce054ac984e3adf17d4d73431e8456bf4a3c","0x22dafe1d63e39cd2effb236da2e131ee1c8cf4049ce504431dcaf98f75c47ad8","0x1afb5bc7eb8d30d807101357bb290f9c3113523f4aacc1154a27b075e46a4fa4","0x0782dd7df679163e5f0c126abc901d00f3d7d0856b4c02a199ab691ecd7566e6","0x2e556c722c99a84a09ffdcc719178277f8e6c9e31a4769270e3b522b944b8ea2","0x1be933a48dca8ef26202d3f135998ac8bed6947020b7447ffb6033b0e37f2065","0x2d8ebae210848de2464f5435f1fd4b5467ee938910d7779002614943060bbb32","0x2da854bbee38a94a6a9c2c85dd05bb4c879173720b67f93f78b9de93cdb427b0","0x0fa2649472af2e79489c466b58002f8f284f953085ac0a98dfabee85b78f63cf","0x304a09437636026ef0746c4b8ac1ca0ff250c5630fb5bd03ddafddd7cbde850e","0x0c83bb3c6ee0faa1646ee4d8dd83f67ec98e5d63ac802f7bdebfcdf21dee62f1","0x229d7e4524b30c18a6b94f0054e6d2ea8eb2396f58f9c808d2c9f991e2be2399","0x1265bf5e1aaddeae09242b1435e2f8f9e7487bf76a0461752777f6ea1ff75ad6","0x2f32f53281b7a363d6bec84ca21c71c3206d906b036e8b36b0702780e3b1b870","0x017fb18c9aef4d6d2bc99f5d7f9a002c8921fcd7c7ba69bf05930b55c2829cb7","0x2ec761c02ef6f2eefb7c9b2d6df71795d0ce0820f86797e2e11415cb5b122f22","0x2b1722960f42a1b40ffae3e4b9419fc8ff5cb8139a2c7e89af332ba2e95c1b5f","0x2dafa15594da2318245475c77eae3712429226b3005852e70f567efff0a7d79a","0x2ed44d7e3d5f44ac8f7c144ee0ba9d369c82428827c19b010384708bbc52a3f9","0x2777eedda697c7f90aee44fa97cfe62596d16c43fa3545b48d622023ca7a446a","0x1a47a5c1b0f41905aa0bad6248be8c7887ddea3ad9dfc8462b23a95b073c8a49","0x093656d571e84ac676a265dd509c98513039552b7a24e001b003ca618cc4ea5c","0x15c901e8a7ff0f1ae1989b5cfb687975c16716a8014a4052d527d4db4ecbaeb4","0x08bfa20e83096b0be58e4c96232510c8ef9824c0a62b91ffcc4592b217753a72","0x021913efbdfbc73aa5f4a97c79f352ac61f71248947f5eb5713c1b107c632703","0x00df89625aef270fab2a8c33ba742e1375423f4cfb3f63514ae748e004bb8cf4","0x2455f76c8ee59e93cbe7fe192cf0f766e1399617cabfa230cf27ca2a18cd58d5","0x150c3e56ea4f6442ed6b11030c98682a8f5e3c9cd6fd18949254a7c79b3cb5b6","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x01e89c6fe644aea7f63301278dbdb4ea29cf4d33f8b0cdcd79cb106e0bf0a753","0x2d49d23421e253903b8a5d0911642b9ce218cef4e350cf8689704eb1f3ae38d4","0x072956ca447343d788791fee1ef222f280048ad4aefb6cb7bc96b538f482f525","0x168176bf15c8ca63457acf05efbe54af452ea41f935ab82c2a96fedde10ba52f","0x20a13690f13491f7f3b756a1dc3b69a3f96d78355c70289583032a593bfc87bc","0x273e0a32ab3ef0d3f179b62520b31015ccfc8b53c76a1bb323b41e40ff954596","0x28019d4b05546b44e35d5dc74375b75dabb6fae49a07381605c60423c6163d26","0x10beda0b8dd484c63f0937820e2c7e9be832a0031efe3557631608895255ca5f","0x095a8f04a901526e4d70b1560bfff29b5a3c30347725d1e420c1b30ee2bf8a1c","0x1fb742e863a5c76262ffec93b3351405b0840b326fa5fffd73f40abcd5f05f05","0x11fa63cfcb2e603fe4e4668d75f05a2cf22650b84a91d1753e83f0e7ae83b4ad","0x2872e3d3c431a8b7ee4cec1c2a999a42c40ae33382fbba80a6d4c1a39b2d57a3","0x17e8c2a5f809f9935d7c6d7cb2f8859a513864b53f53de3d2a14c74cd690bd1a","0x20a552298d691393ae401382b3015689231ad988d3eb0521d414dcd2e8781053","0x183eb6bca59a141b4e8136179a258272ec9c25ec80bdb0458b6880c711707a28","0x03cd147a2a4c8dc272f3e240b8b0090d45e994e5fd40e07a54f6765795cd5ef8","0x082b135b3a20da4c766242b4258e27dbc050e4b8958bb15431626f2eeed9bd2b","0x28c894a6a719a32fe8d78ded46bc685ba035e5579c88fbc5bcbc0f09d8c5268b","0x06418cceff50837f923e63a37c2c534d13d9f59793c3aa6274813baa64d1899e","0x2b4a27b672f85c4fc697605da213de8b950a629602c5b8c6403e6c1c1065388a","0x0e2b817c6a79d6d1027f0376fb26ec81a140a4402e2dcdff6152cf01f2f4dbf9","0x2ae0fbce87dc53f0ff5473117e1c49a8197a14f8eaaec00cb5b10f94e844111f","0x2368004a1dee06f505e75ada3e9f8cc4c801f6a2068620da51ba11f537453835","0x2009df8e6f49f67dcaecb93e4a9ef81aaff096136d26f0fe691e14cd580c47da","0x2e512617136e8da2817856e57f13087a75fcc512faefc6d4b2eedd73c58a9b35","0x2848fcd535bd7c8017ca331a14919aa492ed05b04e9d0745480d291205eac8dc","0x19bb0990cb37f3a8f6c3db78219b07d6accd08e889586660e92dd6000755f09a","0x15520c8158b2e36c40c5fa46d5281c45d3df2c7f5d974a1f9549bfca6cbceaea","0x0e285f4df658d99922c286c5a253d6f6f37aa6c52d7a0fc1a20f3e6da9df23e1","0x0f9cd4667f4c1e86f83eda9e752a05c0cc630b0827a93a68322fa258dffb0f24","0x12d8b0dbbea3dccfe5d2dd090daf8ab4d2fac74fada9c49875b0c9122663a8ad","0x2e8c814d93f027ecff08c4e58555aadfc0f9ec3889eff2150f2b5bb6c557add0","0x013516a1456c5831aba87e4057878f6f3f18471e0674fd1e89be3e18351ec394","0x14418aa79dc84fd791d5638bdc103786ef8181a714ee8e022d3a1e792cbc7959","0x14418aa79dc84fd791d5638bdc103786ef8181a714ee8e022d3a1e792cbc7959","0x25c5e6c96a39bb36e19106d4049b675f0279084cc757c4e2acf6e497c61056a2","0x231aaafcf2a4c6fd8da18ce5ae5b33790f2c306a2692c6383c9a0787c50ac269","0x0a5f7665f0997081f9b38ec64e9a18542ac3a9648060f8cc720fc04669224730","0x0f1c9d9d1ac6f62825c6038117ed30540be434e8fd2d88150dcd4fece39b335a","0x1308871c8fcb09f07e5257f5cc5678d98842a8d18b2af09b5132d9af3cb1893e","0x28801985290dac4eba72ed01ee06fe88f6fc533dc1a46bd86e2d35be8021b042","0x14407f38cfba3cc61fca173b41133ab05a1c176caf8bb597588b01817e9eeaa3","0x0ea1a9f6f95f6193e512a7bd3db0c147f66687662934aed53cb657935b1e4eb9","0x1bc4ab6eacd61b5fd9e414b0186ef5deaadaf59aa9e53cb8d8812255baa28109","0x00000000000000000000000000000093a4da68a2fac0ee94841efdfc57eb748c","0x00000000000000000000000000000000001c22f1f5f927bee6adb649cc132391","0x0000000000000000000000000000003d0c2acea76c551f58876b3c35f19f345a","0x00000000000000000000000000000000002e94fded0a0b7f4fd1c882fd2a4e52","0x00000000000000000000000000000022e23b6fa0f72844bf8f60ea140cca5663","0x000000000000000000000000000000000013380f284bf3cb98b9a7cbae7d702b","0x000000000000000000000000000000942a13cf93056815c3f7439c9eed0a103e","0x00000000000000000000000000000000002be14bec02c6dae4625d32866de4fc","0x000000000000000000000000000000e2a2c75dc664c12695b4f7795c61f92669","0x000000000000000000000000000000000000725da448f376bde6cf63bcf79463","0x000000000000000000000000000000f54eee585f8ab367dc66a587e1d4cdbd8c","0x0000000000000000000000000000000000071106624ae5623a070f0addc18433","0x000000000000000000000000000000d60352bea3b2adb311b1a3beb25acb8aed","0x00000000000000000000000000000000001965b7c781e33f94e90c743c7881ed","0x0000000000000000000000000000006458a2aa57539e2b192f9c3ed69f9fb674","0x00000000000000000000000000000000001fc9c667723a4e66d752c6b426d444","0x0000000000000000000000000000008d1ff1c5d59a463c5b46bcf52f41ad3c63","0x00000000000000000000000000000000001b3e73df070a35c49a03fab1c76e9b","0x0000000000000000000000000000001c17a62b6c0a7ab14de83391e06f780adb","0x000000000000000000000000000000000012c7fbe2591b9ae72dd526e4ed1d7f","0x000000000000000000000000000000a758fa0c72d6a93155cb18b3fcc7defd34","0x00000000000000000000000000000000000cea12961770ce7cb6f2a4aed009fe","0x000000000000000000000000000000ef6e9647803aac315fa6d287e0e66f4767","0x0000000000000000000000000000000000259a82b8d6c6015cc51d2681f26ad4","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000008152b373c87004bef7d2c55ec8c540b67f","0x00000000000000000000000000000000000a55be5fdcb0a0dce4976d7bb78b0c","0x000000000000000000000000000000f749ea03f04ac964706139b9d1db595ecb","0x000000000000000000000000000000000013218e14dae80c066b4e46e9309fb2","0x0000000000000000000000000000004bbd7f950c36ce69db39e2b234a9e3f9b0","0x00000000000000000000000000000000002a0c3994d892ca5ea26984abbb30fb","0x0000000000000000000000000000006c1b39306846620bd546ac2c897834f259","0x000000000000000000000000000000000020350b9f507d6e25961a11be3e494b"] public_inputs = [ "0x0000000000000000000000000000000000000000000000000000000000000003", ] -verification_key = [ - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000011", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x0000000000000000000000000000000000000000000000000000000000000004", - "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x0000000000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000007", - "0x0000000000000000000000000000000000000000000000000000000000000008", - "0x0000000000000000000000000000000000000000000000000000000000000009", - "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000b", - "0x000000000000000000000000000000000000000000000000000000000000000c", - "0x000000000000000000000000000000000000000000000000000000000000000d", - "0x000000000000000000000000000000000000000000000000000000000000000e", - "0x000000000000000000000000000000000000000000000000000000000000000f", - "0x0000000000000000000000000000000000000000000000000000000000000010", - "0x00000000000000000000000000000060e430ad1c23bfcf3514323aae3f206e84", - "0x00000000000000000000000000000000001b5c3ff4c2458d8f481b1c068f27ae", - "0x000000000000000000000000000000bb510ab2112def34980e4fc6998ad9dd16", - "0x00000000000000000000000000000000000576e7c105b43e061e13cb877fefe1", - "0x000000000000000000000000000000ced074785d11857b065d8199e6669a601c", - "0x00000000000000000000000000000000000053b48a4098c1c0ae268f273952f7", - "0x000000000000000000000000000000d1d4b26e941db8168cee8f6de548ae0fd8", - "0x00000000000000000000000000000000001a9adf5a6dadc3d948bb61dfd63f4c", - "0x0000000000000000000000000000009ce1faac6f8de6ebb18f1db17372c82ad5", - "0x00000000000000000000000000000000002002681bb417184b2df070a16a3858", - "0x000000000000000000000000000000161baa651a8092e0e84725594de5aba511", - "0x00000000000000000000000000000000000be0064399c2a1efff9eb0cdcb2223", - "0x0000000000000000000000000000008673be6fd1bdbe980a29d8c1ded54381e7", - "0x000000000000000000000000000000000008a5158a7d9648cf1d234524c9fa0c", - "0x0000000000000000000000000000002b4fce6e4b1c72062b296d49bca2aa4130", - "0x00000000000000000000000000000000002e45a9eff4b6769e55fb710cded44f", - "0x00000000000000000000000000000072b85bf733758b76bcf97333efb85a23e3", - "0x000000000000000000000000000000000017da0ea508994fc82862715e4b5592", - "0x00000000000000000000000000000094fa74695cf058dba8ff35aec95456c6c3", - "0x0000000000000000000000000000000000211acddb851061c24b8f159e832bd1", - "0x000000000000000000000000000000303b5e5c531384b9a792e11702ad3bcab0", - "0x00000000000000000000000000000000000d336dff51a60b8833d5d7f6d4314c", - "0x0000000000000000000000000000009f825dde88092070747180d581c342444a", - "0x0000000000000000000000000000000000237fbd6511a03cca8cac01b555fe01", - "0x0000000000000000000000000000007c313205159495df6d8de292079a4844ff", - "0x000000000000000000000000000000000018facdfc468530dd45e8f7a1d38ce9", - "0x0000000000000000000000000000000d1ce33446fc3dc4ab40ca38d92dac74e1", - "0x00000000000000000000000000000000000852d8e3e0e8f4435af3e94222688b", - "0x0000000000000000000000000000006c04ee19ec1dfec87ed47d6d04aa158de2", - "0x000000000000000000000000000000000013240f97a584b45184c8ec31319b5f", - "0x000000000000000000000000000000cefb5d240b07ceb4be26ea429b6dc9d9e0", - "0x00000000000000000000000000000000002dad22022121d689f57fb38ca21349", - "0x000000000000000000000000000000c9f189f2a91aeb664ce376d8b157ba98f8", - "0x00000000000000000000000000000000002531a51ad54f124d58094b219818d2", - "0x000000000000000000000000000000ef1e6db71809307f677677e62b4163f556", - "0x0000000000000000000000000000000000272da4396fb2a7ee0638b9140e523d", - "0x0000000000000000000000000000002e54c0244a7732c87bc4712a76dd8c83fb", - "0x000000000000000000000000000000000007db77b3e04b7eba9643da57cbbe4d", - "0x000000000000000000000000000000e0dfe1ddd7f74ae0d636c910c3e85830d8", - "0x00000000000000000000000000000000000466fa9b57ec4664abd1505b490862", - "0x0000000000000000000000000000009ee55ae8a32fe5384c79907067cc27192e", - "0x00000000000000000000000000000000000799d0e465cec07ecb5238c854e830", - "0x0000000000000000000000000000001d5910ad361e76e1c241247a823733c39f", - "0x00000000000000000000000000000000002b03f2ccf7507564da2e6678bef8fe", - "0x000000000000000000000000000000231147211b3c75e1f47d150e4bbd2fb22e", - "0x00000000000000000000000000000000000d19ee104a10d3c701cfd87473cbbe", - "0x0000000000000000000000000000006705f3f382637d00f698e2c5c94ed05ae9", - "0x00000000000000000000000000000000000b9c792da28bb60601dd7ce4b74e68", - "0x000000000000000000000000000000ac5acc8cc21e4ddb225c510670f80c80b3", - "0x00000000000000000000000000000000002da9d3fa57343e6998aba19429b9fa", - "0x0000000000000000000000000000004bacbf54b7c17a560df0af18b6d0d527be", - "0x00000000000000000000000000000000000faea33aeca2025b22c288964b21eb", - "0x000000000000000000000000000000492e756298d68d6e95de096055cc0336c3", - "0x00000000000000000000000000000000001a12a12f004859e5a3675c7315121b", - "0x000000000000000000000000000000893d521d512f30e6d32afbbc0cecd8ee00", - "0x00000000000000000000000000000000001674b3c1ef12c6da690631e0d86c04", - "0x000000000000000000000000000000aa6cb02a52e7a613873d4ac9b411349945", - "0x00000000000000000000000000000000001ecb1fe9c493add46751f9940f73e1", - "0x00000000000000000000000000000045b3d362ca82cba69fb2b9c733a5b8c351", - "0x000000000000000000000000000000000019a683586af466e331945b732d2f8c", - "0x000000000000000000000000000000fc79b052dfdfe67c0ecfc06b4267ffd694", - "0x00000000000000000000000000000000001336a70c396393038d5e9913744ac2", - "0x0000000000000000000000000000005450d29af1e9438e91cd33ddeb2548226e", - "0x000000000000000000000000000000000000993a602891cfd0e6f6ecf7404933", - "0x000000000000000000000000000000498efddab90a32e9b2db729ed6e9b40192", - "0x00000000000000000000000000000000002425efebe9628c63ca6fc28bdb5901", - "0x000000000000000000000000000000d8488157f875a21ab5f93f1c2b641f3de9", - "0x0000000000000000000000000000000000290f95ada3936604dc4b14df7504e3", - "0x0000000000000000000000000000005d6902187f3ed60dcce06fca211b40329a", - "0x00000000000000000000000000000000002b5870a6ba0b20aaa0178e5adfbc36", - "0x000000000000000000000000000000e5c2519171fa0e548fc3c4966ffc1ce570", - "0x00000000000000000000000000000000001cb8d8f4793b7debbdc429389dbf2d", - "0x000000000000000000000000000000a3ee22dd60456277b86c32a18982dcb185", - "0x00000000000000000000000000000000002493c99a3d068b03f8f2b8d28b57ce", - "0x000000000000000000000000000000f6c3731486320082c20ec71bbdc92196c1", - "0x00000000000000000000000000000000001ded39c4c8366469843cd63f09ecac", - "0x000000000000000000000000000000494997477ab161763e46601d95844837ef", - "0x00000000000000000000000000000000002e0cddbc5712d79b59cb3b41ebbcdd", - "0x000000000000000000000000000000426db4c64531d350750df62dbbc41a1bd9", - "0x0000000000000000000000000000000000303126892f664d8d505964d14315ec", - "0x00000000000000000000000000000076a6b2c6040c0c62bd59acfe3e3e125672", - "0x000000000000000000000000000000000000874a5ad262eecc6b565e0b085074", - "0x000000000000000000000000000000ef082fb517183c9c6841c2b8ef2ca1df04", - "0x0000000000000000000000000000000000127b2a745a1b74968c3edc18982b9b", - "0x000000000000000000000000000000c9efd4f8c3d56e1eb23d789a8f710d5be6", - "0x000000000000000000000000000000000015a18748490ff4c2b1871081954e86", - "0x000000000000000000000000000000a0011ef987dc016ab110eacd554a1d8bbf", - "0x00000000000000000000000000000000002097c84955059442a95df075833071", - "0x000000000000000000000000000000d38e9426ad3085b68b00a93c17897c2877", - "0x00000000000000000000000000000000002aecd48089890ea0798eb952c66824", - "0x00000000000000000000000000000078d8a9ce405ce559f441f2e71477ff3ddb", - "0x00000000000000000000000000000000001216bdb2f0d961bb8a7a23331d2150", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000ee40d90bea71fba7a412dd61fcf34e8ceb", - "0x0000000000000000000000000000000000140b0936c323fd2471155617b6af56", - "0x0000000000000000000000000000002b90071823185c5ff8e440fd3d73b6fefc", - "0x00000000000000000000000000000000002b6c10790a5f6631c87d652e059df4", -] +verification_key =["0x0000000000000000000000000000000000000000000000000000000000000040","0x0000000000000000000000000000000000000000000000000000000000000011","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000003","0x0000000000000000000000000000000000000000000000000000000000000004","0x0000000000000000000000000000000000000000000000000000000000000005","0x0000000000000000000000000000000000000000000000000000000000000006","0x0000000000000000000000000000000000000000000000000000000000000007","0x0000000000000000000000000000000000000000000000000000000000000008","0x0000000000000000000000000000000000000000000000000000000000000009","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000000000000000000000000000000000000000000b","0x000000000000000000000000000000000000000000000000000000000000000c","0x000000000000000000000000000000000000000000000000000000000000000d","0x000000000000000000000000000000000000000000000000000000000000000e","0x000000000000000000000000000000000000000000000000000000000000000f","0x0000000000000000000000000000000000000000000000000000000000000010","0x00000000000000000000000000000060e430ad1c23bfcf3514323aae3f206e84","0x00000000000000000000000000000000001b5c3ff4c2458d8f481b1c068f27ae","0x000000000000000000000000000000bb510ab2112def34980e4fc6998ad9dd16","0x00000000000000000000000000000000000576e7c105b43e061e13cb877fefe1","0x000000000000000000000000000000ced074785d11857b065d8199e6669a601c","0x00000000000000000000000000000000000053b48a4098c1c0ae268f273952f7","0x000000000000000000000000000000d1d4b26e941db8168cee8f6de548ae0fd8","0x00000000000000000000000000000000001a9adf5a6dadc3d948bb61dfd63f4c","0x0000000000000000000000000000009ce1faac6f8de6ebb18f1db17372c82ad5","0x00000000000000000000000000000000002002681bb417184b2df070a16a3858","0x000000000000000000000000000000161baa651a8092e0e84725594de5aba511","0x00000000000000000000000000000000000be0064399c2a1efff9eb0cdcb2223","0x0000000000000000000000000000008673be6fd1bdbe980a29d8c1ded54381e7","0x000000000000000000000000000000000008a5158a7d9648cf1d234524c9fa0c","0x0000000000000000000000000000002b4fce6e4b1c72062b296d49bca2aa4130","0x00000000000000000000000000000000002e45a9eff4b6769e55fb710cded44f","0x00000000000000000000000000000072b85bf733758b76bcf97333efb85a23e3","0x000000000000000000000000000000000017da0ea508994fc82862715e4b5592","0x00000000000000000000000000000094fa74695cf058dba8ff35aec95456c6c3","0x0000000000000000000000000000000000211acddb851061c24b8f159e832bd1","0x000000000000000000000000000000303b5e5c531384b9a792e11702ad3bcab0","0x00000000000000000000000000000000000d336dff51a60b8833d5d7f6d4314c","0x0000000000000000000000000000009f825dde88092070747180d581c342444a","0x0000000000000000000000000000000000237fbd6511a03cca8cac01b555fe01","0x0000000000000000000000000000007c313205159495df6d8de292079a4844ff","0x000000000000000000000000000000000018facdfc468530dd45e8f7a1d38ce9","0x0000000000000000000000000000000d1ce33446fc3dc4ab40ca38d92dac74e1","0x00000000000000000000000000000000000852d8e3e0e8f4435af3e94222688b","0x0000000000000000000000000000006c04ee19ec1dfec87ed47d6d04aa158de2","0x000000000000000000000000000000000013240f97a584b45184c8ec31319b5f","0x000000000000000000000000000000cefb5d240b07ceb4be26ea429b6dc9d9e0","0x00000000000000000000000000000000002dad22022121d689f57fb38ca21349","0x000000000000000000000000000000c9f189f2a91aeb664ce376d8b157ba98f8","0x00000000000000000000000000000000002531a51ad54f124d58094b219818d2","0x000000000000000000000000000000ef1e6db71809307f677677e62b4163f556","0x0000000000000000000000000000000000272da4396fb2a7ee0638b9140e523d","0x0000000000000000000000000000002e54c0244a7732c87bc4712a76dd8c83fb","0x000000000000000000000000000000000007db77b3e04b7eba9643da57cbbe4d","0x000000000000000000000000000000e0dfe1ddd7f74ae0d636c910c3e85830d8","0x00000000000000000000000000000000000466fa9b57ec4664abd1505b490862","0x0000000000000000000000000000009ee55ae8a32fe5384c79907067cc27192e","0x00000000000000000000000000000000000799d0e465cec07ecb5238c854e830","0x0000000000000000000000000000001d5910ad361e76e1c241247a823733c39f","0x00000000000000000000000000000000002b03f2ccf7507564da2e6678bef8fe","0x000000000000000000000000000000ee40d90bea71fba7a412dd61fcf34e8ceb","0x0000000000000000000000000000000000140b0936c323fd2471155617b6af56","0x0000000000000000000000000000002b90071823185c5ff8e440fd3d73b6fefc","0x00000000000000000000000000000000002b6c10790a5f6631c87d652e059df4","0x00000000000000000000000000000029a17181c7934fc3fdbd352eac5cb521b9","0x00000000000000000000000000000000001f497cbf5284ff29a2d336e5991999","0x000000000000000000000000000000072bd9c0c6beda1fdee6d4ff0432ba9e1b","0x000000000000000000000000000000000013ea38a0bd2aa751a490a724fac818","0x000000000000000000000000000000c599f63dcd3edd49f08ae5c3141c1e3493","0x00000000000000000000000000000000002bdb36be0bea09950dd32a8ccf6fbc","0x00000000000000000000000000000047f27f29724e7f19eba0340256a0bd4b7d","0x00000000000000000000000000000000001c1c5ccf87a962129ca785f8f35120","0x000000000000000000000000000000c5c71efdae00679bbe4a95096e012b1817","0x000000000000000000000000000000000017a365de041e317817d0135f2b48e0","0x0000000000000000000000000000008ae711ac402f7848d719c93a89ba8d39f1","0x00000000000000000000000000000000002b6fb40ed8a1935226f4f9786a0499","0x0000000000000000000000000000002f03a71501d83de1da5715a4e9462d6198","0x00000000000000000000000000000000001644064443b8546f48eae693af47b8","0x00000000000000000000000000000083763ab1b6e8fe269b2fe4c7b9c448c08d","0x000000000000000000000000000000000021d7cc18c59676a8eeb47c0111c251","0x000000000000000000000000000000b5f937153073e03ea7d51a996e0ebc2e6b","0x000000000000000000000000000000000011ddd0e26457373eb06e0493177672","0x000000000000000000000000000000c5f6eb9f6fc8fa99811a4a88c74a6d018b","0x000000000000000000000000000000000025bcd07a0732c123567834f5109558","0x000000000000000000000000000000aeb08a0b1a4442189448b4e97490568146","0x000000000000000000000000000000000002a1744e4771705536a88f07e0f90f","0x000000000000000000000000000000b938568293bd0724b0ea76c2ec34c4a829","0x0000000000000000000000000000000000053296e8f3b9ad3af877dfa9c7c2a7","0x000000000000000000000000000000f0ca1db6323996eba26bdc86dafef9d10b","0x00000000000000000000000000000000001441a46c58af03d5645d52721d956a","0x0000000000000000000000000000008bbf8f884013c66c28ba09c2fbd573b656","0x0000000000000000000000000000000000206c391ca06fac27d1908e94570243","0x0000000000000000000000000000002d4f5aaed88ba4f79612d53b804ca8f194","0x00000000000000000000000000000000001674011c96392df08970fa6b7b4cb8","0x0000000000000000000000000000009f88297c1729d76c4d9306853598c91325","0x0000000000000000000000000000000000256f51adfcacc3c1e340be4d32d3e9","0x0000000000000000000000000000000ab9955eec0d74eb799afed2a802b24d75","0x00000000000000000000000000000000001fcbe43ea105b30d36ed0b21b03411","0x000000000000000000000000000000d66b1d5433f1aa5305cd1edce7c22de466","0x00000000000000000000000000000000002331546a256b8a3b751956806680d4","0x000000000000000000000000000000e97954ad6cd6f45fb15c91434121db4304","0x00000000000000000000000000000000002e20a97e09d50f227ced47e7a98250","0x0000000000000000000000000000001ebbc27eb9ebededefba79522eb58ae89b","0x0000000000000000000000000000000000090efa4974e566e81d1177b85a30be","0x0000000000000000000000000000005eafa070b9c9632404052642e3bc14f9fd","0x00000000000000000000000000000000001489068864102daca6a6b8bc4d448b","0x0000000000000000000000000000009ebc91aaaac036a6477cadbe54e8556dfd","0x00000000000000000000000000000000000ef6d835e2ed3343b95c82c8c54037","0x00000000000000000000000000000033b28b529dff46e93af4e7422530478e4a","0x000000000000000000000000000000000020a86c2f8591bf190bcddcc03c42fb","0x000000000000000000000000000000a9679d0acc088f7dc27bf6d866bcd2dda2","0x00000000000000000000000000000000002fb9d0d2d4099402bed74f738f64cc","0x00000000000000000000000000000023b09f876a29a061582848a8b9a5870c12","0x00000000000000000000000000000000001d5bb906f03f0d49e9c4791bc43af9","0x00000000000000000000000000000017aac9854ea240d8ec97bf760c4d4ba870","0x00000000000000000000000000000000000b227a556c414ada0dc75bb303e30e","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000009b624fa65d1a24b7f14a8f25f3789622af","0x000000000000000000000000000000000013d47bff8c630e847b70e2732fd3f0","0x00000000000000000000000000000061d21663e93132f32921075f4c936a84df","0x00000000000000000000000000000000001a74ca4e118fb480b9b999902989a3"] \ No newline at end of file diff --git a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr index 17adc68c056..42e6b501d0b 100644 --- a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr +++ b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr @@ -1,8 +1,8 @@ // This circuit aggregates a single Honk proof from `assert_statement_recursive`. -global SIZE_OF_PROOF_IF_LOGN_IS_28 : u32 = 409; +global SIZE_OF_PROOF_IF_LOGN_IS_28 : u32 = 439; fn main( - verification_key: [Field; 120], + verification_key: [Field; 128], // This is the proof without public inputs attached. // // This means: the size of this does not change with the number of public inputs. diff --git a/noir/verify_honk_proof/src/main.nr b/noir/verify_honk_proof/src/main.nr index 10ea4577750..a8fb9ab53f9 100644 --- a/noir/verify_honk_proof/src/main.nr +++ b/noir/verify_honk_proof/src/main.nr @@ -2,7 +2,7 @@ // This circuit aggregates a single Honk proof from `assert_statement_recursive`. global SIZE_OF_PROOF_IF_LOGN_IS_28 : u32 = 409; fn main( - verification_key: [Field; 120], + verification_key: [Field; 128], // This is the proof without public inputs attached. // // This means: the size of this does not change with the number of public inputs. @@ -12,10 +12,5 @@ fn main( // I believe we want to eventually make it public too though. key_hash: Field ) { - std::verify_proof( - verification_key, - proof, - public_inputs, - key_hash - ); + std::verify_proof(verification_key, proof, public_inputs, key_hash); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 693fbb373b0..870d74ccf67 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -191,10 +191,10 @@ export const L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP = 256; export const LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 64; export const NUM_MSGS_PER_BASE_PARITY = 4; export const NUM_BASE_PARITY_PER_ROOT_PARITY = 4; -export const RECURSIVE_PROOF_LENGTH = 409; -export const NESTED_RECURSIVE_PROOF_LENGTH = 409; -export const TUBE_PROOF_LENGTH = 409; -export const VERIFICATION_KEY_LENGTH_IN_FIELDS = 120; +export const RECURSIVE_PROOF_LENGTH = 439; +export const NESTED_RECURSIVE_PROOF_LENGTH = 439; +export const TUBE_PROOF_LENGTH = 439; +export const VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; export const SENDER_SELECTOR = 0; export const ADDRESS_SELECTOR = 1; export const STORAGE_ADDRESS_SELECTOR = 1; From 3630ef21527601032aa7b4ac4a05dcd3f27206ec Mon Sep 17 00:00:00 2001 From: maramihali Date: Fri, 16 Aug 2024 14:03:44 +0000 Subject: [PATCH 39/47] remove accidentally added lock files and output --- barretenberg/acir_tests/1 | 0 barretenberg/acir_tests/bb-debug | 1 - barretenberg/acir_tests/output | 113 -- .../acir_tests/sol-test/package-lock.json | 198 ---- barretenberg/acir_tests/sol-test/yarn.lock | 34 +- .../cpp/Testing/Temporary/CTestCostData.txt | 1 - .../cpp/Testing/Temporary/LastTest.log | 3 - barretenberg/output | 1019 ----------------- barretenberg/package-lock.json | 6 - .../ultra/keys/Add2UltraVerificationKey.sol | 4 +- .../ultra/keys/BlakeUltraVerificationKey.sol | 4 +- .../ultra/keys/EcdsaUltraVerificationKey.sol | 4 +- .../accounts/src/artifacts/EcdsaAccount.json | 1 - .../src/artifacts/SchnorrAccount.json | 1 - .../artifacts/SchnorrSingleKeyAccount.json | 1 - .../artifacts/ContractClassRegisterer.json | 1 - .../artifacts/ContractInstanceDeployer.json | 1 - .../src/artifacts/GasToken.json | 1 - .../src/artifacts/KeyRegistry.json | 1 - .../src/artifacts/MultiCallEntrypoint.json | 1 - 20 files changed, 23 insertions(+), 1372 deletions(-) delete mode 100644 barretenberg/acir_tests/1 delete mode 100755 barretenberg/acir_tests/bb-debug delete mode 100644 barretenberg/acir_tests/output delete mode 100644 barretenberg/acir_tests/sol-test/package-lock.json delete mode 100644 barretenberg/cpp/Testing/Temporary/CTestCostData.txt delete mode 100644 barretenberg/cpp/Testing/Temporary/LastTest.log delete mode 100644 barretenberg/output delete mode 100644 barretenberg/package-lock.json delete mode 100644 yarn-project/accounts/src/artifacts/EcdsaAccount.json delete mode 100644 yarn-project/accounts/src/artifacts/SchnorrAccount.json delete mode 100644 yarn-project/accounts/src/artifacts/SchnorrSingleKeyAccount.json delete mode 100644 yarn-project/protocol-contracts/src/artifacts/ContractClassRegisterer.json delete mode 100644 yarn-project/protocol-contracts/src/artifacts/ContractInstanceDeployer.json delete mode 100644 yarn-project/protocol-contracts/src/artifacts/GasToken.json delete mode 100644 yarn-project/protocol-contracts/src/artifacts/KeyRegistry.json delete mode 100644 yarn-project/protocol-contracts/src/artifacts/MultiCallEntrypoint.json diff --git a/barretenberg/acir_tests/1 b/barretenberg/acir_tests/1 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/barretenberg/acir_tests/bb-debug b/barretenberg/acir_tests/bb-debug deleted file mode 100755 index 13598c34b0c..00000000000 --- a/barretenberg/acir_tests/bb-debug +++ /dev/null @@ -1 +0,0 @@ -lldb-16 -o run ~/aztec-packages/barretenberg/cpp/build-debug/bin/bb -- $@ diff --git a/barretenberg/acir_tests/output b/barretenberg/acir_tests/output deleted file mode 100644 index 90c9b51027b..00000000000 --- a/barretenberg/acir_tests/output +++ /dev/null @@ -1,113 +0,0 @@ -Testing assert_statement... 32 -28 -size of pow32 -round univariate in prover length 8 -Prover challenge at round 0 0x20c5e643d341b90ef6e46ac2fdc8fe6efdc1eae38f941d64a21ff5a8ec62b5d8 -Prover challenge at 1 round 0x200e069080bb98abd24f7fc89511c5f0846ab2c868a527b555632b3527433685 -round univariate in prover length 8 -Prover challenge at 2 round 0x057e8258309d3e037027d3aef1f56b8412f6fb216307e225bda9bf2b8871c2c6 -round univariate in prover length 8 -Prover challenge at 3 round 0x058fb98a771002dcde8a6779aa44e034f6ca8118a69da23ce5f02c94c92331f6 -round univariate in prover length 8 -Prover challenge at 4 round 0x028f56498d54aafa129815645246de4bcdb7160284e232e6fc3d59e8249fb3c4 -round univariate in prover length 8 -32 -assert_statement failed -Error: execution reverted (unknown custom error) (action="call", data="0xfa066593", reason=null, transaction={ "data": "0xfb0d143e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000031800000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000706ee0cf1e14e0a97d3f667c366903f5f40000000000000000000000000000000000074f6f705fda2649b93638fe7616081e90c07b0028ec46d31825e9b13a86edb91f870172c3ac9c2546b15b2736ab4211d38df7e108b3e2e5381fccd046d16f6f14614706f5c3f51e9b4438c8c954bf29f4ab265fba2bfd3e93315719dc7429fcadcac1ec8db9f0a6b7e6867c69d6eb28b2d023cb24ae80599655fd4dd52b6fa65bc5f4c736e284b0ebeeb8e1e382c6032aba7a7c295afe24767906511f13ddab62d35211c4fbab1490379811e2bfa316b6953392f44ab4dfef2b6b011b3350a2648cee66d90a5b44cf7e70cec6bf1c2479368dd7681d1fc175ec157690bed2c803a2114e8137c3aa5d6906293bfa430288a549a9e45184754f11ad6ed03b7445a28b9fca7531028227b118f39a564f0612c21779447599e8b54a35bf7e47bc82b03bfea510dfe1e17860c94117bd83169c32ae732f52411c3ef68cb3b85a4cf63a5103039d6d7eb5654eab66d1c9701ebb05320a70df535b78d1afdb363bf0dc996f61fcbb4d39b2df7847d63403f804f25dcc3c07d0e9137ec96b587d2bbbd7940bc9dec71e13dc425d646e8929fd18ba62ff2655e5ab5864c009c7de4401fa50cabfcee31aef1e5cf8cb976d96cf0c7bc6e438a83477f0a0e30f0707a01e5a4fc37298226cd2296c95f2e3b380002148c945e733ee5d95e21eb8ed82981d895fd255784518bc5d9a249fe4eaa0422dee3bcd1a8df0413e6db5b1c9787be44a0091656807a90e4ecd2f9af128c4ee026ac26aa78751cb8c8290986717a4766d3413c21e851982b64872090ca8192306a007bf9ba605babede16353370619ecebe93d9a399b117af144be1df06928b220afe05700edb72e251086265573248a2c5be9e40ed4d2bb80e7fa703659fff22b5359c774323689cee8dd1ac07c42d8da2a25c4c32da51889ab61df0c84ed3023449bac42a8ca782cf680eee37f781da792ea16230df36f8bfd61d68456b250e7e43cd1af7c9b78bf2cbed0e04b30b2fb6329c32076ba72bedc8c23bcaf5d21be1507246f0ef50f016c03cbf5519f58f453eee3497751a84efe8c069b7c6991eaa19298e0b137fd950e2daae2456741193171ca6a16c66b2f0cf6975636f41015d2c837e57f6b8e1705ec731838d77b74afc4c8fdea4fc0da2a8b18f4b84a1250b1b35c82b55454e2c970f6b0f3e970677032922d2af7cb1b4f28e89b1488b2d1af8134944e0744e810aae51b93f56af53f1851fb8c52da4515a0256f3792a1229ff4b4a5ffd9423c22c774f092645258238f396202620bb643ab516b784862b61f4239c5ae6fb187638a78672dfb3189e4306ef871bc0e69cc9a2619e424711bdea990c2eb444f26a51184cc661c7714a6bb3acbc58f315756b1a00d9efa90c77a6c262979f2dc780e4a96ae157f0b1c9d546f73069e3c9c0ffd789cc297d068aea2c1b44a27870c19445fd1d8c76199e7b4bf7a333e8356df2bb96f93e7d1cb240e3ca98d7923a7e27b1b3c449389849544f80e132aae970075712cb3c9b29865b68afaba4e9b521d84c146819dc136aae62a92b706cb607510434994cf82e7eee54e8cc1ca506e8868a0bbfc0ca74f004b77cc068bfb4dd610d7c33bd2803894798d33264c361b20d5e3686a8ed816f74a8aaee540550d699b4704845f422e3d5f452c5a630924e83dce658118bb04693fcc60a43bd7922b4d0ea918dbe15e26cfd92cd4183ce5d88a841fb453e935e3a8791d1d3675ab99f8ccbfce4d4022e50e6f557f842c9f4209b4779ec840e438088df5df0e9ecb90afb996a521e24b0ba8791d5c92725c92f6c80249588c7a57116603a2254f51c3f3b339a5cfe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016c3b80bbaad8469859314921ec6a9a740243f3013f04d975e2116a0a148671409daf56609d078d7965f4158f10e6b8bb032c666b1e4460dd6c7fe418d0c29fc08711a4b8fbf4a4541d06a13b8501397e4be7bed2252cc403f9e6060eec4ce160e44be52f2f0643095962d101d113fc2069e38e2f0784cb9a2d0431a7a48532010fd1db03cc3beeba771a1d5b567a4ce185e9fd89f90dbf5005b8052e5b70910147208666374f644c504809d598226f68eb9f6ef6117e66dbd9e27376931a2721e0ec49b8b4fae0ce2d1844f4bbe5899b8a83ae9629c60c09ae3edc14cb539e416c84d64791b69f1b133f60d07a64fe37b4e4af2d0c2d0bc598752db1bb6fe92100fe98598bc4bdd8d82c12ca5c7ca42255c50cf14ee3c4509b1c3fd403ace2e124d66c3badb81cee21ef17f51c5a8a9b38825c01690ee6603e5ab5ecd6dd8f905e62a24c573d8179ba73df4347f577d49987243cd6520adf8b4ce8cd24287dd13fbfebee0798b6557a7012ef3762030ed1f946d5075c83d18bf47a217d2851f21b4742b6a1f553c0abdc3e08ea7e92db416f57b91a92a34fefeb494496bc99b0d886f6ced91b9e67433a37586118f1949e62becf1e0e396cb470941d93d18a025e0195d66ecfca58b37283578712cad0cb9ec5afbf6edc1b31b9615acc8c13c0663176fd7ab3a5b8b9602a0396af85f6b4a77b8a5ea028720972056d9c8dc3e220523c4dcd890ea1a0c5405dfe95485ed49f8d5932083f34ad87663865cfe9508891e40063cd1213367e035c4b854cd0d42810ce2b99d4e42e02fd7d97aabc11f51527f8fb3d773ec525d53b0e31a1897ed1ade637dd6154d4c2bb2069f20421d0c3f212c53f3f8c2998da118b7a061d2d342515d27aad3dcea83adc40a968e0abdf3e6a032285598b634486051bd50436904c589287378275c759a2fc4fa46102a631ce4923c1b081cee07a620a16216df3cf670b68d61253a130fa603bbce1329ab078fc37f6268f559d2b5e4a0b58767e754f307719536222c4f176fb1281a849f086b2b0374b2c7e509b10d9ee511517a4c69f822d74b94c484d55e34ee032f1dae8d9d58302b564d567dac44662a89e655c1ba3d57ce2060af437b6e971e01c6d8e46b10b604d1b175e1deffa18b027fe7bf5d20d235b47f7844506d8a156ae92071de6d49ab8e599c6481c31c95776193fe128729c6f18eb7c4c0995e0aed5375f00c9e9e6a9f2aba8ab0b1f53ba65251a5a8f8c6c2d59dacb77618622aaa3f0f769bebd301574e6db48a7f8a203957dced335b9b154d98dbd1b80a3a22625bdacf0081142a5f39fe23c07603a8600acbaea45217c66398ce0137c0fb2d3b7f34037a0f87f3ea43bb74881ab6171c625b192f416728a4c6a2a8dd939e0b8c362a54bad75237865f79523d3939bd0d453fd920bf7ee69ed9f55560c52414f626dd22d2f01df840a15eba4c0238508092f1fa81060e6a6a07c9ea7ecfe104473f5551d51ed178919701696ade0dde94b3137b814bd6b033d6e086f45c9604473f5551d51ed178919701696ade0dde94b3137b814bd6b033d6e086f45c961ac58f79d0ab7dda7fef19d7892f85fbe11dbe246cbb6748faf4919daf8ab3ca2a6f3c06aa2f64347af19541462666164badb0d46545dc1fd88e27d45e4b4d241e1eef1f532cc1e246cdae606ad169a74b8e8ad1d965e8fc28ac92a9752d6f7c0d04d935dce73c98051b76d59f94f4980663be89bacfeb6c34530fb430ee98721ec26c1fd48176ee0342467fa1e1cea2f305b33b21cf596fbcb0f04290a846a829c547fcad43b96939a3d854776f9bf8bc9e05c481d9097d86ecd071ebd8311b113f0cda9863903ca7a454d90b0c72bef47fe731b3a904f2b86403d5db284f3802e3c5275a1ca106f29297a18ccdd5752837f05cf164fa2045231e428bdb206b21f42c3db1cc286e26373d6f25d10a245374abe260ef8bf0fa87d985397e51be000000000000000000000000000000ce62e704edd83e46fc1e6880ddaf4ee564000000000000000000000000000000000025e27f266dd3651611bc07caf2c9d0000000000000000000000000000000a592be1c54e9facf7f175d039a5f1c5cb600000000000000000000000000000000000f138468dc1e46ea0afd5edc90d3f100000000000000000000000000000016f22908ca55d981abd890caa24ca9e10c00000000000000000000000000000000002525c353aa10d4318c72655c11188f000000000000000000000000000000e3b45f51cdb04ed0585c233c1b686f7b1400000000000000000000000000000000001dc0266b4ac7fde47a2a04889aadad0000000000000000000000000000008bdaa8546b01e8ff1644ef15462da09df30000000000000000000000000000000000187e1e080e9dc8b9a24cdffa28dd70000000000000000000000000000000499d1b873490aadb19022695a14c5e86230000000000000000000000000000000000023dd2b5b93f62fe9ee24488b1390f00000000000000000000000000000010c439bd253ac2a7afe6d075010b73dfdf00000000000000000000000000000000002015fcc1f6eb9fde25514a8e1bd7f50000000000000000000000000000000555599a190152e3b25f5dffd26d6a360c00000000000000000000000000000000000d07316f6c33154b1dc616e2886cec00000000000000000000000000000020f9dbc573c2413d65c4a6d620e58c336400000000000000000000000000000000002778c9d57ce41c692919fc8d3b0a780000000000000000000000000000003f2710b5e29cf373eb8033b572c1005d7900000000000000000000000000000000001b84ef3ecae7cd174012440fdb73760000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022580a55f4ef443faab6de8689e62e676500000000000000000000000000000000001aa278837112d8726d1993f1026976000000000000000000000000000000da850ed8778e7e7c50f6498a82357ed492000000000000000000000000000000000024b702a7393b4d0da63b43ef8591e900000000000000000000000000000072848160e542582ffe2571e37baef74dce0000000000000000000000000000000000195ab2603763d041d1b13e04985abe00000000000000000000000000000064dfb678f575b8b9ee207589cb9202da43000000000000000000000000000000000028a24229933a79e44b1c3ca503fd03000000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000079ea57b3d7247e1b84fc1ab449de746345000000000000000000000000000000000023fb17d477c91e0fb057233a66ef2a000000000000000000000000000000146353d3faf24455819947aa0a2586817400000000000000000000000000000000000093b1c637419c9f016bb0261cdfc6000000000000000000000000000000325b128a84544d31fa1c577232c742b57400000000000000000000000000000000002b3db93a2fca4c31308471d4f55fa200000000000000000000000000000054d9d87932eee6280c37d802ec8d47ca02000000000000000000000000000000000000397167bb1e36d061487e93e4d97e000000000000000000000000000000143b0960a1b9f19a44ad1cf2b7059832d60000000000000000000000000000000000158446576b2d43f78b48799ff7e760000000000000000000000000000000cf640bad8ccc1890d738ab917d6caa957e00000000000000000000000000000000001d6fd185d8771b864545438c6a1d680000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa490000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e15700000000000000000000000000000000000ff3e0896bdea021253b3d360fa6780000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa490000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e15700000000000000000000000000000000000ff3e0896bdea021253b3d360fa678000000000000000000000000000000160d90f214f524875c01cb9cf0f2d272b9000000000000000000000000000000000015d5f906c4fe06017b0f9824434d090000000000000000000000000000007fc2db3cfe49b7666aeafd8cf6973c9fed00000000000000000000000000000000000c7fc1e545a8ee19a7bc6ad6f2ea47000000000000000000000000000000a066a680a36c7bc98b6d82e11bd933412100000000000000000000000000000000001e96b5c204f7fc30395a7fdb1bf4170000000000000000000000000000001650f7eb5c46b540bee7dc50e2cde2a75f000000000000000000000000000000000013ce164a88f98d98bed898e1c2a373000000000000000000000000000000a8a229ca83fc5ed9584a63f780b0fb11300000000000000000000000000000000000250a4412445720683c5c667ac5c44b", "to": "0x5FbDB2315678afecb367f032d93F642f64180aa3" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.8.1) - at makeError (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/utils/errors.js:124:21) - at getBuiltinCallException (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/abi/abi-coder.js:101:12) - at AbiCoder.getBuiltinCallException (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/abi/abi-coder.js:198:16) - at Interface.makeError (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/abi/interface.js:779:32) - at staticCallResult (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/contract/contract.js:244:42) - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - at async staticCall (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/contract/contract.js:214:24) - at async Proxy.test (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/contract/contract.js:254:20) - at async file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/src/index.js:235:18 { - code: 'CALL_EXCEPTION', - action: 'call', - data: '0xfa066593', - reason: null, - transaction: { - to: '0x5FbDB2315678afecb367f032d93F642f64180aa3', - data: '0xfb0d143e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000031800000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000706ee0cf1e14e0a97d3f667c366903f5f40000000000000000000000000000000000074f6f705fda2649b93638fe7616081e90c07b0028ec46d31825e9b13a86edb91f870172c3ac9c2546b15b2736ab4211d38df7e108b3e2e5381fccd046d16f6f14614706f5c3f51e9b4438c8c954bf29f4ab265fba2bfd3e93315719dc7429fcadcac1ec8db9f0a6b7e6867c69d6eb28b2d023cb24ae80599655fd4dd52b6fa65bc5f4c736e284b0ebeeb8e1e382c6032aba7a7c295afe24767906511f13ddab62d35211c4fbab1490379811e2bfa316b6953392f44ab4dfef2b6b011b3350a2648cee66d90a5b44cf7e70cec6bf1c2479368dd7681d1fc175ec157690bed2c803a2114e8137c3aa5d6906293bfa430288a549a9e45184754f11ad6ed03b7445a28b9fca7531028227b118f39a564f0612c21779447599e8b54a35bf7e47bc82b03bfea510dfe1e17860c94117bd83169c32ae732f52411c3ef68cb3b85a4cf63a5103039d6d7eb5654eab66d1c9701ebb05320a70df535b78d1afdb363bf0dc996f61fcbb4d39b2df7847d63403f804f25dcc3c07d0e9137ec96b587d2bbbd7940bc9dec71e13dc425d646e8929fd18ba62ff2655e5ab5864c009c7de4401fa50cabfcee31aef1e5cf8cb976d96cf0c7bc6e438a83477f0a0e30f0707a01e5a4fc37298226cd2296c95f2e3b380002148c945e733ee5d95e21eb8ed82981d895fd255784518bc5d9a249fe4eaa0422dee3bcd1a8df0413e6db5b1c9787be44a0091656807a90e4ecd2f9af128c4ee026ac26aa78751cb8c8290986717a4766d3413c21e851982b64872090ca8192306a007bf9ba605babede16353370619ecebe93d9a399b117af144be1df06928b220afe05700edb72e251086265573248a2c5be9e40ed4d2bb80e7fa703659fff22b5359c774323689cee8dd1ac07c42d8da2a25c4c32da51889ab61df0c84ed3023449bac42a8ca782cf680eee37f781da792ea16230df36f8bfd61d68456b250e7e43cd1af7c9b78bf2cbed0e04b30b2fb6329c32076ba72bedc8c23bcaf5d21be1507246f0ef50f016c03cbf5519f58f453eee3497751a84efe8c069b7c6991eaa19298e0b137fd950e2daae2456741193171ca6a16c66b2f0cf6975636f41015d2c837e57f6b8e1705ec731838d77b74afc4c8fdea4fc0da2a8b18f4b84a1250b1b35c82b55454e2c970f6b0f3e970677032922d2af7cb1b4f28e89b1488b2d1af8134944e0744e810aae51b93f56af53f1851fb8c52da4515a0256f3792a1229ff4b4a5ffd9423c22c774f092645258238f396202620bb643ab516b784862b61f4239c5ae6fb187638a78672dfb3189e4306ef871bc0e69cc9a2619e424711bdea990c2eb444f26a51184cc661c7714a6bb3acbc58f315756b1a00d9efa90c77a6c262979f2dc780e4a96ae157f0b1c9d546f73069e3c9c0ffd789cc297d068aea2c1b44a27870c19445fd1d8c76199e7b4bf7a333e8356df2bb96f93e7d1cb240e3ca98d7923a7e27b1b3c449389849544f80e132aae970075712cb3c9b29865b68afaba4e9b521d84c146819dc136aae62a92b706cb607510434994cf82e7eee54e8cc1ca506e8868a0bbfc0ca74f004b77cc068bfb4dd610d7c33bd2803894798d33264c361b20d5e3686a8ed816f74a8aaee540550d699b4704845f422e3d5f452c5a630924e83dce658118bb04693fcc60a43bd7922b4d0ea918dbe15e26cfd92cd4183ce5d88a841fb453e935e3a8791d1d3675ab99f8ccbfce4d4022e50e6f557f842c9f4209b4779ec840e438088df5df0e9ecb90afb996a521e24b0ba8791d5c92725c92f6c80249588c7a57116603a2254f51c3f3b339a5cfe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'... 17402 more characters - }, - invocation: { - method: 'test', - signature: 'test(bytes,bytes32[])', - args: Result(2) [ - '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000706ee0cf1e14e0a97d3f667c366903f5f40000000000000000000000000000000000074f6f705fda2649b93638fe7616081e90c07b0028ec46d31825e9b13a86edb91f870172c3ac9c2546b15b2736ab4211d38df7e108b3e2e5381fccd046d16f6f14614706f5c3f51e9b4438c8c954bf29f4ab265fba2bfd3e93315719dc7429fcadcac1ec8db9f0a6b7e6867c69d6eb28b2d023cb24ae80599655fd4dd52b6fa65bc5f4c736e284b0ebeeb8e1e382c6032aba7a7c295afe24767906511f13ddab62d35211c4fbab1490379811e2bfa316b6953392f44ab4dfef2b6b011b3350a2648cee66d90a5b44cf7e70cec6bf1c2479368dd7681d1fc175ec157690bed2c803a2114e8137c3aa5d6906293bfa430288a549a9e45184754f11ad6ed03b7445a28b9fca7531028227b118f39a564f0612c21779447599e8b54a35bf7e47bc82b03bfea510dfe1e17860c94117bd83169c32ae732f52411c3ef68cb3b85a4cf63a5103039d6d7eb5654eab66d1c9701ebb05320a70df535b78d1afdb363bf0dc996f61fcbb4d39b2df7847d63403f804f25dcc3c07d0e9137ec96b587d2bbbd7940bc9dec71e13dc425d646e8929fd18ba62ff2655e5ab5864c009c7de4401fa50cabfcee31aef1e5cf8cb976d96cf0c7bc6e438a83477f0a0e30f0707a01e5a4fc37298226cd2296c95f2e3b380002148c945e733ee5d95e21eb8ed82981d895fd255784518bc5d9a249fe4eaa0422dee3bcd1a8df0413e6db5b1c9787be44a0091656807a90e4ecd2f9af128c4ee026ac26aa78751cb8c8290986717a4766d3413c21e851982b64872090ca8192306a007bf9ba605babede16353370619ecebe93d9a399b117af144be1df06928b220afe05700edb72e251086265573248a2c5be9e40ed4d2bb80e7fa703659fff22b5359c774323689cee8dd1ac07c42d8da2a25c4c32da51889ab61df0c84ed3023449bac42a8ca782cf680eee37f781da792ea16230df36f8bfd61d68456b250e7e43cd1af7c9b78bf2cbed0e04b30b2fb6329c32076ba72bedc8c23bcaf5d21be1507246f0ef50f016c03cbf5519f58f453eee3497751a84efe8c069b7c6991eaa19298e0b137fd950e2daae2456741193171ca6a16c66b2f0cf6975636f41015d2c837e57f6b8e1705ec731838d77b74afc4c8fdea4fc0da2a8b18f4b84a1250b1b35c82b55454e2c970f6b0f3e970677032922d2af7cb1b4f28e89b1488b2d1af8134944e0744e810aae51b93f56af53f1851fb8c52da4515a0256f3792a1229ff4b4a5ffd9423c22c774f092645258238f396202620bb643ab516b784862b61f4239c5ae6fb187638a78672dfb3189e4306ef871bc0e69cc9a2619e424711bdea990c2eb444f26a51184cc661c7714a6bb3acbc58f315756b1a00d9efa90c77a6c262979f2dc780e4a96ae157f0b1c9d546f73069e3c9c0ffd789cc297d068aea2c1b44a27870c19445fd1d8c76199e7b4bf7a333e8356df2bb96f93e7d1cb240e3ca98d7923a7e27b1b3c449389849544f80e132aae970075712cb3c9b29865b68afaba4e9b521d84c146819dc136aae62a92b706cb607510434994cf82e7eee54e8cc1ca506e8868a0bbfc0ca74f004b77cc068bfb4dd610d7c33bd2803894798d33264c361b20d5e3686a8ed816f74a8aaee540550d699b4704845f422e3d5f452c5a630924e83dce658118bb04693fcc60a43bd7922b4d0ea918dbe15e26cfd92cd4183ce5d88a841fb453e935e3a8791d1d3675ab99f8ccbfce4d4022e50e6f557f842c9f4209b4779ec840e438088df5df0e9ecb90afb996a521e24b0ba8791d5c92725c92f6c80249588c7a57116603a2254f51c3f3b339a5cfe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'... 15154 more characters, - [Result] - ] - }, - revert: null, - shortMessage: 'execution reverted (unknown custom error)' -} -assert_statement complete -node:internal/process/esm_loader:40 - internalBinding('errors').triggerUncaughtException( - ^ - -Error: execution reverted (unknown custom error) (action="call", data="0xfa066593", reason=null, transaction={ "data": "0xfb0d143e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000031800000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000706ee0cf1e14e0a97d3f667c366903f5f40000000000000000000000000000000000074f6f705fda2649b93638fe7616081e90c07b0028ec46d31825e9b13a86edb91f870172c3ac9c2546b15b2736ab4211d38df7e108b3e2e5381fccd046d16f6f14614706f5c3f51e9b4438c8c954bf29f4ab265fba2bfd3e93315719dc7429fcadcac1ec8db9f0a6b7e6867c69d6eb28b2d023cb24ae80599655fd4dd52b6fa65bc5f4c736e284b0ebeeb8e1e382c6032aba7a7c295afe24767906511f13ddab62d35211c4fbab1490379811e2bfa316b6953392f44ab4dfef2b6b011b3350a2648cee66d90a5b44cf7e70cec6bf1c2479368dd7681d1fc175ec157690bed2c803a2114e8137c3aa5d6906293bfa430288a549a9e45184754f11ad6ed03b7445a28b9fca7531028227b118f39a564f0612c21779447599e8b54a35bf7e47bc82b03bfea510dfe1e17860c94117bd83169c32ae732f52411c3ef68cb3b85a4cf63a5103039d6d7eb5654eab66d1c9701ebb05320a70df535b78d1afdb363bf0dc996f61fcbb4d39b2df7847d63403f804f25dcc3c07d0e9137ec96b587d2bbbd7940bc9dec71e13dc425d646e8929fd18ba62ff2655e5ab5864c009c7de4401fa50cabfcee31aef1e5cf8cb976d96cf0c7bc6e438a83477f0a0e30f0707a01e5a4fc37298226cd2296c95f2e3b380002148c945e733ee5d95e21eb8ed82981d895fd255784518bc5d9a249fe4eaa0422dee3bcd1a8df0413e6db5b1c9787be44a0091656807a90e4ecd2f9af128c4ee026ac26aa78751cb8c8290986717a4766d3413c21e851982b64872090ca8192306a007bf9ba605babede16353370619ecebe93d9a399b117af144be1df06928b220afe05700edb72e251086265573248a2c5be9e40ed4d2bb80e7fa703659fff22b5359c774323689cee8dd1ac07c42d8da2a25c4c32da51889ab61df0c84ed3023449bac42a8ca782cf680eee37f781da792ea16230df36f8bfd61d68456b250e7e43cd1af7c9b78bf2cbed0e04b30b2fb6329c32076ba72bedc8c23bcaf5d21be1507246f0ef50f016c03cbf5519f58f453eee3497751a84efe8c069b7c6991eaa19298e0b137fd950e2daae2456741193171ca6a16c66b2f0cf6975636f41015d2c837e57f6b8e1705ec731838d77b74afc4c8fdea4fc0da2a8b18f4b84a1250b1b35c82b55454e2c970f6b0f3e970677032922d2af7cb1b4f28e89b1488b2d1af8134944e0744e810aae51b93f56af53f1851fb8c52da4515a0256f3792a1229ff4b4a5ffd9423c22c774f092645258238f396202620bb643ab516b784862b61f4239c5ae6fb187638a78672dfb3189e4306ef871bc0e69cc9a2619e424711bdea990c2eb444f26a51184cc661c7714a6bb3acbc58f315756b1a00d9efa90c77a6c262979f2dc780e4a96ae157f0b1c9d546f73069e3c9c0ffd789cc297d068aea2c1b44a27870c19445fd1d8c76199e7b4bf7a333e8356df2bb96f93e7d1cb240e3ca98d7923a7e27b1b3c449389849544f80e132aae970075712cb3c9b29865b68afaba4e9b521d84c146819dc136aae62a92b706cb607510434994cf82e7eee54e8cc1ca506e8868a0bbfc0ca74f004b77cc068bfb4dd610d7c33bd2803894798d33264c361b20d5e3686a8ed816f74a8aaee540550d699b4704845f422e3d5f452c5a630924e83dce658118bb04693fcc60a43bd7922b4d0ea918dbe15e26cfd92cd4183ce5d88a841fb453e935e3a8791d1d3675ab99f8ccbfce4d4022e50e6f557f842c9f4209b4779ec840e438088df5df0e9ecb90afb996a521e24b0ba8791d5c92725c92f6c80249588c7a57116603a2254f51c3f3b339a5cfe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016c3b80bbaad8469859314921ec6a9a740243f3013f04d975e2116a0a148671409daf56609d078d7965f4158f10e6b8bb032c666b1e4460dd6c7fe418d0c29fc08711a4b8fbf4a4541d06a13b8501397e4be7bed2252cc403f9e6060eec4ce160e44be52f2f0643095962d101d113fc2069e38e2f0784cb9a2d0431a7a48532010fd1db03cc3beeba771a1d5b567a4ce185e9fd89f90dbf5005b8052e5b70910147208666374f644c504809d598226f68eb9f6ef6117e66dbd9e27376931a2721e0ec49b8b4fae0ce2d1844f4bbe5899b8a83ae9629c60c09ae3edc14cb539e416c84d64791b69f1b133f60d07a64fe37b4e4af2d0c2d0bc598752db1bb6fe92100fe98598bc4bdd8d82c12ca5c7ca42255c50cf14ee3c4509b1c3fd403ace2e124d66c3badb81cee21ef17f51c5a8a9b38825c01690ee6603e5ab5ecd6dd8f905e62a24c573d8179ba73df4347f577d49987243cd6520adf8b4ce8cd24287dd13fbfebee0798b6557a7012ef3762030ed1f946d5075c83d18bf47a217d2851f21b4742b6a1f553c0abdc3e08ea7e92db416f57b91a92a34fefeb494496bc99b0d886f6ced91b9e67433a37586118f1949e62becf1e0e396cb470941d93d18a025e0195d66ecfca58b37283578712cad0cb9ec5afbf6edc1b31b9615acc8c13c0663176fd7ab3a5b8b9602a0396af85f6b4a77b8a5ea028720972056d9c8dc3e220523c4dcd890ea1a0c5405dfe95485ed49f8d5932083f34ad87663865cfe9508891e40063cd1213367e035c4b854cd0d42810ce2b99d4e42e02fd7d97aabc11f51527f8fb3d773ec525d53b0e31a1897ed1ade637dd6154d4c2bb2069f20421d0c3f212c53f3f8c2998da118b7a061d2d342515d27aad3dcea83adc40a968e0abdf3e6a032285598b634486051bd50436904c589287378275c759a2fc4fa46102a631ce4923c1b081cee07a620a16216df3cf670b68d61253a130fa603bbce1329ab078fc37f6268f559d2b5e4a0b58767e754f307719536222c4f176fb1281a849f086b2b0374b2c7e509b10d9ee511517a4c69f822d74b94c484d55e34ee032f1dae8d9d58302b564d567dac44662a89e655c1ba3d57ce2060af437b6e971e01c6d8e46b10b604d1b175e1deffa18b027fe7bf5d20d235b47f7844506d8a156ae92071de6d49ab8e599c6481c31c95776193fe128729c6f18eb7c4c0995e0aed5375f00c9e9e6a9f2aba8ab0b1f53ba65251a5a8f8c6c2d59dacb77618622aaa3f0f769bebd301574e6db48a7f8a203957dced335b9b154d98dbd1b80a3a22625bdacf0081142a5f39fe23c07603a8600acbaea45217c66398ce0137c0fb2d3b7f34037a0f87f3ea43bb74881ab6171c625b192f416728a4c6a2a8dd939e0b8c362a54bad75237865f79523d3939bd0d453fd920bf7ee69ed9f55560c52414f626dd22d2f01df840a15eba4c0238508092f1fa81060e6a6a07c9ea7ecfe104473f5551d51ed178919701696ade0dde94b3137b814bd6b033d6e086f45c9604473f5551d51ed178919701696ade0dde94b3137b814bd6b033d6e086f45c961ac58f79d0ab7dda7fef19d7892f85fbe11dbe246cbb6748faf4919daf8ab3ca2a6f3c06aa2f64347af19541462666164badb0d46545dc1fd88e27d45e4b4d241e1eef1f532cc1e246cdae606ad169a74b8e8ad1d965e8fc28ac92a9752d6f7c0d04d935dce73c98051b76d59f94f4980663be89bacfeb6c34530fb430ee98721ec26c1fd48176ee0342467fa1e1cea2f305b33b21cf596fbcb0f04290a846a829c547fcad43b96939a3d854776f9bf8bc9e05c481d9097d86ecd071ebd8311b113f0cda9863903ca7a454d90b0c72bef47fe731b3a904f2b86403d5db284f3802e3c5275a1ca106f29297a18ccdd5752837f05cf164fa2045231e428bdb206b21f42c3db1cc286e26373d6f25d10a245374abe260ef8bf0fa87d985397e51be000000000000000000000000000000ce62e704edd83e46fc1e6880ddaf4ee564000000000000000000000000000000000025e27f266dd3651611bc07caf2c9d0000000000000000000000000000000a592be1c54e9facf7f175d039a5f1c5cb600000000000000000000000000000000000f138468dc1e46ea0afd5edc90d3f100000000000000000000000000000016f22908ca55d981abd890caa24ca9e10c00000000000000000000000000000000002525c353aa10d4318c72655c11188f000000000000000000000000000000e3b45f51cdb04ed0585c233c1b686f7b1400000000000000000000000000000000001dc0266b4ac7fde47a2a04889aadad0000000000000000000000000000008bdaa8546b01e8ff1644ef15462da09df30000000000000000000000000000000000187e1e080e9dc8b9a24cdffa28dd70000000000000000000000000000000499d1b873490aadb19022695a14c5e86230000000000000000000000000000000000023dd2b5b93f62fe9ee24488b1390f00000000000000000000000000000010c439bd253ac2a7afe6d075010b73dfdf00000000000000000000000000000000002015fcc1f6eb9fde25514a8e1bd7f50000000000000000000000000000000555599a190152e3b25f5dffd26d6a360c00000000000000000000000000000000000d07316f6c33154b1dc616e2886cec00000000000000000000000000000020f9dbc573c2413d65c4a6d620e58c336400000000000000000000000000000000002778c9d57ce41c692919fc8d3b0a780000000000000000000000000000003f2710b5e29cf373eb8033b572c1005d7900000000000000000000000000000000001b84ef3ecae7cd174012440fdb73760000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022580a55f4ef443faab6de8689e62e676500000000000000000000000000000000001aa278837112d8726d1993f1026976000000000000000000000000000000da850ed8778e7e7c50f6498a82357ed492000000000000000000000000000000000024b702a7393b4d0da63b43ef8591e900000000000000000000000000000072848160e542582ffe2571e37baef74dce0000000000000000000000000000000000195ab2603763d041d1b13e04985abe00000000000000000000000000000064dfb678f575b8b9ee207589cb9202da43000000000000000000000000000000000028a24229933a79e44b1c3ca503fd03000000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000079ea57b3d7247e1b84fc1ab449de746345000000000000000000000000000000000023fb17d477c91e0fb057233a66ef2a000000000000000000000000000000146353d3faf24455819947aa0a2586817400000000000000000000000000000000000093b1c637419c9f016bb0261cdfc6000000000000000000000000000000325b128a84544d31fa1c577232c742b57400000000000000000000000000000000002b3db93a2fca4c31308471d4f55fa200000000000000000000000000000054d9d87932eee6280c37d802ec8d47ca02000000000000000000000000000000000000397167bb1e36d061487e93e4d97e000000000000000000000000000000143b0960a1b9f19a44ad1cf2b7059832d60000000000000000000000000000000000158446576b2d43f78b48799ff7e760000000000000000000000000000000cf640bad8ccc1890d738ab917d6caa957e00000000000000000000000000000000001d6fd185d8771b864545438c6a1d680000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa490000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e15700000000000000000000000000000000000ff3e0896bdea021253b3d360fa6780000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa490000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e15700000000000000000000000000000000000ff3e0896bdea021253b3d360fa678000000000000000000000000000000160d90f214f524875c01cb9cf0f2d272b9000000000000000000000000000000000015d5f906c4fe06017b0f9824434d090000000000000000000000000000007fc2db3cfe49b7666aeafd8cf6973c9fed00000000000000000000000000000000000c7fc1e545a8ee19a7bc6ad6f2ea47000000000000000000000000000000a066a680a36c7bc98b6d82e11bd933412100000000000000000000000000000000001e96b5c204f7fc30395a7fdb1bf4170000000000000000000000000000001650f7eb5c46b540bee7dc50e2cde2a75f000000000000000000000000000000000013ce164a88f98d98bed898e1c2a373000000000000000000000000000000a8a229ca83fc5ed9584a63f780b0fb11300000000000000000000000000000000000250a4412445720683c5c667ac5c44b", "to": "0x5FbDB2315678afecb367f032d93F642f64180aa3" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.8.1) - at makeError (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/utils/errors.js:124:21) - at getBuiltinCallException (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/abi/abi-coder.js:101:12) - at AbiCoder.getBuiltinCallException (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/abi/abi-coder.js:198:16) - at Interface.makeError (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/abi/interface.js:779:32) - at staticCallResult (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/contract/contract.js:244:42) - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - at async staticCall (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/contract/contract.js:214:24) - at async Proxy.test (file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/node_modules/ethers/lib.esm/contract/contract.js:254:20) - at async file:///mnt/user-data/mara/aztec-packages/barretenberg/acir_tests/sol-test/src/index.js:235:18 { - code: 'CALL_EXCEPTION', - action: 'call', - data: '0xfa066593', - reason: null, - transaction: { - to: '0x5FbDB2315678afecb367f032d93F642f64180aa3', - data: '0xfb0d143e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000031800000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000706ee0cf1e14e0a97d3f667c366903f5f40000000000000000000000000000000000074f6f705fda2649b93638fe7616081e90c07b0028ec46d31825e9b13a86edb91f870172c3ac9c2546b15b2736ab4211d38df7e108b3e2e5381fccd046d16f6f14614706f5c3f51e9b4438c8c954bf29f4ab265fba2bfd3e93315719dc7429fcadcac1ec8db9f0a6b7e6867c69d6eb28b2d023cb24ae80599655fd4dd52b6fa65bc5f4c736e284b0ebeeb8e1e382c6032aba7a7c295afe24767906511f13ddab62d35211c4fbab1490379811e2bfa316b6953392f44ab4dfef2b6b011b3350a2648cee66d90a5b44cf7e70cec6bf1c2479368dd7681d1fc175ec157690bed2c803a2114e8137c3aa5d6906293bfa430288a549a9e45184754f11ad6ed03b7445a28b9fca7531028227b118f39a564f0612c21779447599e8b54a35bf7e47bc82b03bfea510dfe1e17860c94117bd83169c32ae732f52411c3ef68cb3b85a4cf63a5103039d6d7eb5654eab66d1c9701ebb05320a70df535b78d1afdb363bf0dc996f61fcbb4d39b2df7847d63403f804f25dcc3c07d0e9137ec96b587d2bbbd7940bc9dec71e13dc425d646e8929fd18ba62ff2655e5ab5864c009c7de4401fa50cabfcee31aef1e5cf8cb976d96cf0c7bc6e438a83477f0a0e30f0707a01e5a4fc37298226cd2296c95f2e3b380002148c945e733ee5d95e21eb8ed82981d895fd255784518bc5d9a249fe4eaa0422dee3bcd1a8df0413e6db5b1c9787be44a0091656807a90e4ecd2f9af128c4ee026ac26aa78751cb8c8290986717a4766d3413c21e851982b64872090ca8192306a007bf9ba605babede16353370619ecebe93d9a399b117af144be1df06928b220afe05700edb72e251086265573248a2c5be9e40ed4d2bb80e7fa703659fff22b5359c774323689cee8dd1ac07c42d8da2a25c4c32da51889ab61df0c84ed3023449bac42a8ca782cf680eee37f781da792ea16230df36f8bfd61d68456b250e7e43cd1af7c9b78bf2cbed0e04b30b2fb6329c32076ba72bedc8c23bcaf5d21be1507246f0ef50f016c03cbf5519f58f453eee3497751a84efe8c069b7c6991eaa19298e0b137fd950e2daae2456741193171ca6a16c66b2f0cf6975636f41015d2c837e57f6b8e1705ec731838d77b74afc4c8fdea4fc0da2a8b18f4b84a1250b1b35c82b55454e2c970f6b0f3e970677032922d2af7cb1b4f28e89b1488b2d1af8134944e0744e810aae51b93f56af53f1851fb8c52da4515a0256f3792a1229ff4b4a5ffd9423c22c774f092645258238f396202620bb643ab516b784862b61f4239c5ae6fb187638a78672dfb3189e4306ef871bc0e69cc9a2619e424711bdea990c2eb444f26a51184cc661c7714a6bb3acbc58f315756b1a00d9efa90c77a6c262979f2dc780e4a96ae157f0b1c9d546f73069e3c9c0ffd789cc297d068aea2c1b44a27870c19445fd1d8c76199e7b4bf7a333e8356df2bb96f93e7d1cb240e3ca98d7923a7e27b1b3c449389849544f80e132aae970075712cb3c9b29865b68afaba4e9b521d84c146819dc136aae62a92b706cb607510434994cf82e7eee54e8cc1ca506e8868a0bbfc0ca74f004b77cc068bfb4dd610d7c33bd2803894798d33264c361b20d5e3686a8ed816f74a8aaee540550d699b4704845f422e3d5f452c5a630924e83dce658118bb04693fcc60a43bd7922b4d0ea918dbe15e26cfd92cd4183ce5d88a841fb453e935e3a8791d1d3675ab99f8ccbfce4d4022e50e6f557f842c9f4209b4779ec840e438088df5df0e9ecb90afb996a521e24b0ba8791d5c92725c92f6c80249588c7a57116603a2254f51c3f3b339a5cfe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'... 17402 more characters - }, - invocation: { - method: 'test', - signature: 'test(bytes,bytes32[])', - args: Result(2) [ - '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000706ee0cf1e14e0a97d3f667c366903f5f40000000000000000000000000000000000074f6f705fda2649b93638fe7616081e90c07b0028ec46d31825e9b13a86edb91f870172c3ac9c2546b15b2736ab4211d38df7e108b3e2e5381fccd046d16f6f14614706f5c3f51e9b4438c8c954bf29f4ab265fba2bfd3e93315719dc7429fcadcac1ec8db9f0a6b7e6867c69d6eb28b2d023cb24ae80599655fd4dd52b6fa65bc5f4c736e284b0ebeeb8e1e382c6032aba7a7c295afe24767906511f13ddab62d35211c4fbab1490379811e2bfa316b6953392f44ab4dfef2b6b011b3350a2648cee66d90a5b44cf7e70cec6bf1c2479368dd7681d1fc175ec157690bed2c803a2114e8137c3aa5d6906293bfa430288a549a9e45184754f11ad6ed03b7445a28b9fca7531028227b118f39a564f0612c21779447599e8b54a35bf7e47bc82b03bfea510dfe1e17860c94117bd83169c32ae732f52411c3ef68cb3b85a4cf63a5103039d6d7eb5654eab66d1c9701ebb05320a70df535b78d1afdb363bf0dc996f61fcbb4d39b2df7847d63403f804f25dcc3c07d0e9137ec96b587d2bbbd7940bc9dec71e13dc425d646e8929fd18ba62ff2655e5ab5864c009c7de4401fa50cabfcee31aef1e5cf8cb976d96cf0c7bc6e438a83477f0a0e30f0707a01e5a4fc37298226cd2296c95f2e3b380002148c945e733ee5d95e21eb8ed82981d895fd255784518bc5d9a249fe4eaa0422dee3bcd1a8df0413e6db5b1c9787be44a0091656807a90e4ecd2f9af128c4ee026ac26aa78751cb8c8290986717a4766d3413c21e851982b64872090ca8192306a007bf9ba605babede16353370619ecebe93d9a399b117af144be1df06928b220afe05700edb72e251086265573248a2c5be9e40ed4d2bb80e7fa703659fff22b5359c774323689cee8dd1ac07c42d8da2a25c4c32da51889ab61df0c84ed3023449bac42a8ca782cf680eee37f781da792ea16230df36f8bfd61d68456b250e7e43cd1af7c9b78bf2cbed0e04b30b2fb6329c32076ba72bedc8c23bcaf5d21be1507246f0ef50f016c03cbf5519f58f453eee3497751a84efe8c069b7c6991eaa19298e0b137fd950e2daae2456741193171ca6a16c66b2f0cf6975636f41015d2c837e57f6b8e1705ec731838d77b74afc4c8fdea4fc0da2a8b18f4b84a1250b1b35c82b55454e2c970f6b0f3e970677032922d2af7cb1b4f28e89b1488b2d1af8134944e0744e810aae51b93f56af53f1851fb8c52da4515a0256f3792a1229ff4b4a5ffd9423c22c774f092645258238f396202620bb643ab516b784862b61f4239c5ae6fb187638a78672dfb3189e4306ef871bc0e69cc9a2619e424711bdea990c2eb444f26a51184cc661c7714a6bb3acbc58f315756b1a00d9efa90c77a6c262979f2dc780e4a96ae157f0b1c9d546f73069e3c9c0ffd789cc297d068aea2c1b44a27870c19445fd1d8c76199e7b4bf7a333e8356df2bb96f93e7d1cb240e3ca98d7923a7e27b1b3c449389849544f80e132aae970075712cb3c9b29865b68afaba4e9b521d84c146819dc136aae62a92b706cb607510434994cf82e7eee54e8cc1ca506e8868a0bbfc0ca74f004b77cc068bfb4dd610d7c33bd2803894798d33264c361b20d5e3686a8ed816f74a8aaee540550d699b4704845f422e3d5f452c5a630924e83dce658118bb04693fcc60a43bd7922b4d0ea918dbe15e26cfd92cd4183ce5d88a841fb453e935e3a8791d1d3675ab99f8ccbfce4d4022e50e6f557f842c9f4209b4779ec840e438088df5df0e9ecb90afb996a521e24b0ba8791d5c92725c92f6c80249588c7a57116603a2254f51c3f3b339a5cfe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'... 15154 more characters, - Result(31) [ - '0x0000000000000000000000000000000000000000000000000000000000000003', - '0x00000000000000000000000000000079ea57b3d7247e1b84fc1ab449de746345', - '0x000000000000000000000000000000000023fb17d477c91e0fb057233a66ef2a', - '0x000000000000000000000000000000146353d3faf24455819947aa0a25868174', - '0x00000000000000000000000000000000000093b1c637419c9f016bb0261cdfc6', - '0x000000000000000000000000000000325b128a84544d31fa1c577232c742b574', - '0x00000000000000000000000000000000002b3db93a2fca4c31308471d4f55fa2', - '0x00000000000000000000000000000054d9d87932eee6280c37d802ec8d47ca02', - '0x000000000000000000000000000000000000397167bb1e36d061487e93e4d97e', - '0x000000000000000000000000000000143b0960a1b9f19a44ad1cf2b7059832d6', - '0x0000000000000000000000000000000000158446576b2d43f78b48799ff7e760', - '0x000000000000000000000000000000cf640bad8ccc1890d738ab917d6caa957e', - '0x00000000000000000000000000000000001d6fd185d8771b864545438c6a1d68', - '0x0000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f', - '0x00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa49', - '0x0000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e157', - '0x00000000000000000000000000000000000ff3e0896bdea021253b3d360fa678', - '0x0000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f', - '0x00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa49', - '0x0000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e157', - '0x00000000000000000000000000000000000ff3e0896bdea021253b3d360fa678', - '0x000000000000000000000000000000160d90f214f524875c01cb9cf0f2d272b9', - '0x000000000000000000000000000000000015d5f906c4fe06017b0f9824434d09', - '0x0000000000000000000000000000007fc2db3cfe49b7666aeafd8cf6973c9fed', - '0x00000000000000000000000000000000000c7fc1e545a8ee19a7bc6ad6f2ea47', - '0x000000000000000000000000000000a066a680a36c7bc98b6d82e11bd9334121', - '0x00000000000000000000000000000000001e96b5c204f7fc30395a7fdb1bf417', - '0x0000000000000000000000000000001650f7eb5c46b540bee7dc50e2cde2a75f', - '0x000000000000000000000000000000000013ce164a88f98d98bed898e1c2a373', - '0x000000000000000000000000000000a8a229ca83fc5ed9584a63f780b0fb1130', - '0x0000000000000000000000000000000000250a4412445720683c5c667ac5c44b' - ] - ] - }, - revert: null, - shortMessage: 'execution reverted (unknown custom error)' -} - -Node.js v18.19.1 -FAILED diff --git a/barretenberg/acir_tests/sol-test/package-lock.json b/barretenberg/acir_tests/sol-test/package-lock.json deleted file mode 100644 index 5190cef410c..00000000000 --- a/barretenberg/acir_tests/sol-test/package-lock.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "name": "headless-test", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "headless-test", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "ethers": "^6.8.1", - "solc": "^0.8.22" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==" - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/ethers": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.8.1.tgz", - "integrity": "sha512-iEKm6zox5h1lDn6scuRWdIdFJUCGg3+/aQWu0F4K0GVyEZiktFkqrJbRjTn1FlYEPz7RKA707D6g5Kdk6j7Ljg==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", - "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", - "ws": "8.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/solc": { - "version": "0.8.22", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.22.tgz", - "integrity": "sha512-bA2tMZXx93R8L5LUH7TlB/f+QhkVyxrrY6LmgJnFFZlRknrhYVlBK1e3uHIdKybwoFabOFSzeaZjPeL/GIpFGQ==", - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - } -} diff --git a/barretenberg/acir_tests/sol-test/yarn.lock b/barretenberg/acir_tests/sol-test/yarn.lock index 9afd4540c9f..af80282ea95 100644 --- a/barretenberg/acir_tests/sol-test/yarn.lock +++ b/barretenberg/acir_tests/sol-test/yarn.lock @@ -4,44 +4,44 @@ "@adraffy/ens-normalize@1.10.0": version "1.10.0" - resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== "@noble/curves@1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== dependencies: "@noble/hashes" "1.3.2" "@noble/hashes@1.3.2": version "1.3.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== "@types/node@18.15.13": version "18.15.13" - resolved "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== aes-js@4.0.0-beta.5: version "4.0.0-beta.5" - resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== command-exists@^1.2.8: version "1.2.9" - resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== commander@^8.1.0: version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== ethers@^6.8.1: version "6.8.1" - resolved "https://registry.npmjs.org/ethers/-/ethers-6.8.1.tgz" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.8.1.tgz#ee2a1a39b5f62a13678f90ccd879175391d0a2b4" integrity sha512-iEKm6zox5h1lDn6scuRWdIdFJUCGg3+/aQWu0F4K0GVyEZiktFkqrJbRjTn1FlYEPz7RKA707D6g5Kdk6j7Ljg== dependencies: "@adraffy/ens-normalize" "1.10.0" @@ -54,32 +54,32 @@ ethers@^6.8.1: follow-redirects@^1.12.1: version "1.15.3" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== js-sha3@0.8.0: version "0.8.0" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== semver@^5.5.0: version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== solc@^0.8.22: version "0.8.22" - resolved "https://registry.npmjs.org/solc/-/solc-0.8.22.tgz" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.22.tgz#6df0bb688b9a58bbf10932730301374a6ccfb862" integrity sha512-bA2tMZXx93R8L5LUH7TlB/f+QhkVyxrrY6LmgJnFFZlRknrhYVlBK1e3uHIdKybwoFabOFSzeaZjPeL/GIpFGQ== dependencies: command-exists "^1.2.8" @@ -92,17 +92,17 @@ solc@^0.8.22: tmp@0.0.33: version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tslib@2.4.0: version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== ws@8.5.0: version "8.5.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== diff --git a/barretenberg/cpp/Testing/Temporary/CTestCostData.txt b/barretenberg/cpp/Testing/Temporary/CTestCostData.txt deleted file mode 100644 index ed97d539c09..00000000000 --- a/barretenberg/cpp/Testing/Temporary/CTestCostData.txt +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/barretenberg/cpp/Testing/Temporary/LastTest.log b/barretenberg/cpp/Testing/Temporary/LastTest.log deleted file mode 100644 index 29d49fd2009..00000000000 --- a/barretenberg/cpp/Testing/Temporary/LastTest.log +++ /dev/null @@ -1,3 +0,0 @@ -Start testing: Aug 01 08:21 UTC ----------------------------------------------------------- -End testing: Aug 01 08:21 UTC diff --git a/barretenberg/output b/barretenberg/output deleted file mode 100644 index 1b02243d6e9..00000000000 --- a/barretenberg/output +++ /dev/null @@ -1,1019 +0,0 @@ -Running main() from /mnt/user-data/mara/aztec-packages/barretenberg/cpp/build-assert/_deps/gtest-src/googletest/src/gtest_main.cc -Note: Google Test filter = *Single* -[==========] Running 2 tests from 1 test suite. -[----------] Global test environment set-up. -[----------] 2 tests from ECCVMRecursiveTests/0, where TypeParam = bb::ECCVMRecursiveFlavor_ > > > -[ RUN ] ECCVMRecursiveTests/0.SingleRecursiveVerification -In eccvm prover -TRANSCRIPT_ADD { 0x111a92b8cdafd31e51d6d45826e518a892ad269e68ac5378249821b71edffaaa, 0x00443713c30fe23e4eb654e7aadce6468a247d28a559593bb7232e2ca4ddd966 } is infinity flag 0 -TRANSCRIPT_MUL { 0x1c1664d51c129964f9ff57446e31be8c77989a5f09e6b14f16f8736f4e8a0150, 0x0deff67cf33aad03be8beb860ffe5614f3f457cd53078f8a5ec12e815c60b380 } is infinity flag 0 -TRANSCRIPT_EQ { 0x18ad387ca1c6836f5615652d4e790be59af7ffd13a2f13a15c2df31919a3b523, 0x2b0187f3ccca8cc4cafaeacc4b713731567f623cf463ec31853ea233fa2403b8 } is infinity flag 0 -TRANSCRIPT_MSM_TRANSITION { 0x2d1dbc98052506bdfb23bf9006c719008e4e5c4307b9cbe4f72f45584e647fa4, 0x14efefb6652ade27469daf5d4b950d4c12636c8dda94b12b9d84bc2897488851 } is infinity flag 0 -TRANSCRIPT_PC { 0x0da4ffd2aadb52884c2f6a89f3cacafd6ded01814e3bdf47881925e657829b42, 0x2ee665c1b334e9f83e28318049aaddd4d0399e82596d3220972393a2f0c45ce8 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT { 0x15460df8353c38fd9ab0579d497464fdbde58f1f5c0affefcfed9cdb10569ea6, 0x072397dde30b9f8d9a29d258a73a6ff98baed96b091130f86636e51403a5e6d8 } is infinity flag 0 -TRANSCRIPT_PX { 0x263ee9cd6be55cf75840775d6dd286aed648e6172420cb0ec2ea5dfe7335d4e6, 0x02121644c5ccd713c0179b37a42ea8bbf94f57326834498c900c241beab52246 } is infinity flag 0 -TRANSCRIPT_PY { 0x2d85ddaa5c8ac2e0e8d848068c557583df265c0ec0d4efc9b25c732a7ebfb29a, 0x11041b3cab323f2873e7a9f4f5edbd180e030ac3d47d47e823bcfc46d0092928 } is infinity flag 0 -TRANSCRIPT_Z1 { 0x1009c8ac65b66832f0188a44bc93a0d89449db69f996e0930ea94cea3545f2ca, 0x033dda788f828866bc0aaaaea6b77bce6340a882d745b3717e5d4044c27088c4 } is infinity flag 0 -TRANSCRIPT_Z2 { 0x18408d71e9ec02f1a38c2eda9d1d4dfd26fb6c4dee58e9cdcf6b6e6d74a13fd2, 0x29bc5c6b1ff1e270b37800cf2aa9a40559547d547ffb7a580b38f6833e0ef631 } is infinity flag 0 -TRANSCRIPT_Z1ZERO { 0x2fef15b4b0f6245eabcb080a19af16f8848dea1d12f1864fae7eb8ca43f7e9da, 0x2a0bf1f5972a94fd35c215cb60057c4e110b4e40302b4b18c8f8bdce0672b15e } is infinity flag 0 -TRANSCRIPT_Z2ZERO { 0x2fef15b4b0f6245eabcb080a19af16f8848dea1d12f1864fae7eb8ca43f7e9da, 0x2a0bf1f5972a94fd35c215cb60057c4e110b4e40302b4b18c8f8bdce0672b15e } is infinity flag 0 -TRANSCRIPT_OP { 0x166de12120e1d42c3dbefe52168f6a60e43dde49039979bfb7928a2dff19c786, 0x063ae8c76be6bd61226006594c74e9b1a1aca2d13b6f83a7dc6d1e1a7597d849 } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_X { 0x1fba3fe7bed5a5bb0dde188ab3599804e23e3e2bacd764828f8986a36f4fc8b5, 0x3010d9275d9af73a0444ac87fa238da5d8f4507c3f58b8fa4a11b4f0bca3da3d } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_Y { 0x0271578e36725c454e40ab82591a7b64d9a00952c6b7c8569034b59f1a08a913, 0x251352153501609e17b2959093d279a5a3e95fa81b67cfabedc472bacedf8ff4 } is infinity flag 0 -TRANSCRIPT_MSM_X { 0x2737e0de4bf614244259280302e089a353546894042ebcd89d7c862523ef939b, 0x2f38de37b8ea4fe0fa85472f916b7a7a3718a724e369f2036679a70303d78bc9 } is infinity flag 0 -TRANSCRIPT_MSM_Y { 0x2462eb4b6c38bb77a4ab1eba1e2264f7503cd6a072d1185688d11e59efabbce8, 0x2419a6bb3a72e648f79af4014980b812fc2aeaa8de0f83a1c3da15af3687d2e4 } is infinity flag 0 -PRECOMPUTE_PC { 0x2d98b6aeb89622957543d07d11f10903388d7e378935f0584cdafdb99b9c300a, 0x2b5fddb07420d29015319a9e9428f931cbbcee1a7196e8cc56d3e679f5fe3dc7 } is infinity flag 0 -PRECOMPUTE_POINT_TRANSITION { 0x07dede40eb03e36cb74604290ab11da530439dae328253ac21dd1a32d808b5d0, 0x246ddd165cb43f761b5eb8d23a2ee03673dc565f22857bec3eb0a37e6ff52296 } is infinity flag 0 -PRECOMPUTE_ROUND { 0x253b625e918bd7adf25f0751b24cf2a47550d2751c7d7a3ef5d08e83ab77219d, 0x25622be957bfd899f355711ae3f58a1dbb6cd78515446d50a0900c97953a9715 } is infinity flag 0 -PRECOMPUTE_SCALAR_SUM { 0x2cef686409d1840db3d996107e16d18fcd33bbf252cea36368add68508c80cde, 0x0778a4308d44d2abd007abdd013e517696ce35ef08e84e8d93d4a4b478d7418c } is infinity flag 0 -PRECOMPUTE_S1HI { 0x13f276cb34d8d9434119fd1d90dd03f88be25affdb7b224b42b288e373996b79, 0x16b3b625c6f25e5fec09729dfb6af0d126a7fe0baa19fba066f3cff27f01e9f5 } is infinity flag 0 -PRECOMPUTE_S1LO { 0x076b60f159142c44eb6dc7af281b8a62b50217be85a896f98ca93f817009e8d2, 0x0d7e5943eda06a77112c1127125a6b4cc5d9e8c7b5ce8116b6366c40cea8c385 } is infinity flag 0 -PRECOMPUTE_S2HI { 0x1336ee1347e531ab003223a19c4a65331dfb258635d09c147f14d61be4ecfeb7, 0x0ff738c743129ecf78d5a7c3bb43e17d09c88c04d78e6d57db91133d2389ee54 } is infinity flag 0 -PRECOMPUTE_S2LO { 0x189ef24f0e737df55223ea35d0e66a6b96f3b89e8668d0a150a560a02d646bdf, 0x2b5ba3b864b7bfc6b9bd2118343b18d60fc3c320a1ae862f77d24b403d054d13 } is infinity flag 0 -PRECOMPUTE_S3HI { 0x0c35afff614d57ee6bda6a61d7d306b747436c470c189d74d652f618ef340a97, 0x0c76c6c4304e6589b38cb2ac0cd552109b26d32b131b4229f2df477a6ea3620e } is infinity flag 0 -PRECOMPUTE_S3LO { 0x00236574920ee249026c299b47ced35a4c6d292580849d4d669718e8d39ba6a5, 0x160428de747241bc746072817db330dc1228f321f23628973361d3f55803d905 } is infinity flag 0 -PRECOMPUTE_S4HI { 0x28518717aaab442b18251b6f707771b374cc5de672cf2deec4637c81701963b7, 0x23fbe90ed23f3da9c5acd90308ad6e36169fffed79623a56afc94521c93fa00b } is infinity flag 0 -PRECOMPUTE_S4LO { 0x2ebe0fc589313a0e6b754218e5c4c09ea594f2580544873955c03a1e12419977, 0x2fe971fb3e353c1170d9217f44c11dfd0684b4818b91e8b7ea00259c1b3a48a5 } is infinity flag 0 -PRECOMPUTE_SKEW { 0x1b791ac16ea1a66678d72f69494ddf13b45533d3ccc8a2f0b9c3aed9b94329e0, 0x225fd477eb7c4579bef0c317fdfa2ca361c611175c014e1a9c185eb4b2929122 } is infinity flag 0 -PRECOMPUTE_DX { 0x086a1e921528547e8eb2a3ae867cf0889bd0c3632768d7b35f33fb108e911531, 0x073fe2f0e8bc716a182ccf298e07e4a9bfa7bf4f100c2da5eefd92b40c2c8316 } is infinity flag 0 -PRECOMPUTE_DY { 0x0fbfdaa65270404af36bb50fcfb1a8c442e11de490cbbccce061c851f9297070, 0x224a288ea8a6f70d42255f0691ea42f4d575bb419830c9109f7846d2bbc498e9 } is infinity flag 0 -PRECOMPUTE_TX { 0x03ac06666304d2f2f233204dacb7452e4eafb6b809546b501dd9f5056953ce41, 0x03cb442ae482879ef63dae2fae756914e1b176ed5c7958726b83046f8d146406 } is infinity flag 0 -PRECOMPUTE_TY { 0x2e1da6e936112a07b16cedc785b52109c826fb49e3477fe0ebddc3c43a359edc, 0x15e7d0461c78bd3f94ba7e02b4eec473bf75ec6b458c07dd76ff7e874c239d2d } is infinity flag 0 -MSM_TRANSITION { 0x2cdaf62cf5866213a553a9b3ad020b49521843220773a3e48a70a08681463e26, 0x203c0f35789cc8c04a74260997cd639f75bb05157a301275affcac2ef57fedcb } is infinity flag 0 -MSM_ADD { 0x24d8a35a474fd31bd0be9fafe21e948fbb5a0a29b9f547d9aad195cbd0b8ac62, 0x0f7becd341929fcaa24b6b2a9e91e1e764df77226eccca74bb9193788aa777aa } is infinity flag 0 -MSM_DOUBLE { 0x2c532eed29ed5287f695ab58e5adcaad05904302f57f2d71c01b480e991bea88, 0x0f98414bcdca252ced97549d00fef4ccff17d9d8ae2c44324b08109084698f42 } is infinity flag 0 -MSM_SKEW { 0x1bca926f749977066df1c36fd9c3bb9673bf0f647e6b6989bc234cabf3de9c25, 0x1f61ec4540aee072d138e5a92200a3e09d5a3a9c13977cc150b8fa36a093bb22 } is infinity flag 0 -MSM_ACCUMULATOR_X { 0x00e8832ca5c207e04c393ee198ffe5cd7696dfd623511da068e6f5c153dd395a, 0x1a3b14f179938928deb721f14f1fcaef4278f99ac69d86b0f94608777e3f3135 } is infinity flag 0 -MSM_ACCUMULATOR_Y { 0x14f22fdcdf5e4aab7dc5e1dffbec0d71c60900baa64495d646401ac12fafa327, 0x0a5b910216005a4fa136339d9dfc7695fb0669b36790a70ca9a417c0f2b8deb6 } is infinity flag 0 -MSM_PC { 0x286f9eea215549edceae2729b22571e34f4602ea6d6afac17f21b21c0e8f8e03, 0x17b793d2c36d937ca430fb98be25996764702784b60f3f5417add601c466c4da } is infinity flag 0 -MSM_SIZE_OF_MSM { 0x18ba9dd7cd8e09cf6140d8cbd438306302edd9bd698f72310499f5e3983286cd, 0x2453aecf59a285eccdd397c910b815312502ce223e9276e1d05936cdd8b35120 } is infinity flag 0 -MSM_COUNT { 0x0672cc8e9e10134056a0d68646a4796e61daa75f9de4d446fdad76ae398f6031, 0x076a8a028528f780a7fb1f35bda5a21627195cc91eddab39adfa68f74cd48bb5 } is infinity flag 0 -MSM_ROUND { 0x2a19ceed5d87c1e1d06de02f698f46c5f28c8fcc27a0ce57e98f1654c90b9e01, 0x02c54298f8039ded87ecf984dc9f80e1c8c22b05fa5175c2e60aa72ab8e921e5 } is infinity flag 0 -MSM_ADD1 { 0x0f868385c1fcd6132ac44f487dc8fa3a068bb593ab0495cebba095c9194aff54, 0x2c0fc583ff5db33c4105838be2c0f7d41b16607c100ff9770716082534b80ec4 } is infinity flag 0 -MSM_ADD2 { 0x0f868385c1fcd6132ac44f487dc8fa3a068bb593ab0495cebba095c9194aff54, 0x2c0fc583ff5db33c4105838be2c0f7d41b16607c100ff9770716082534b80ec4 } is infinity flag 0 -MSM_ADD3 { 0x137056168848302dd3c5f84db4c784e581734a52d57fcf06f372e36fef8a7f9c, 0x04ec4e1d7078a35295cee19f5a70ec6ef09855de33aa3fe68d6a45378b35ad26 } is infinity flag 0 -MSM_ADD4 { 0x137056168848302dd3c5f84db4c784e581734a52d57fcf06f372e36fef8a7f9c, 0x04ec4e1d7078a35295cee19f5a70ec6ef09855de33aa3fe68d6a45378b35ad26 } is infinity flag 0 -MSM_X1 { 0x1617d7320d771b09a8ce66d2dfca3581151332f8d3569bd53f4a28e08dfe1448, 0x0b8d1ed56c44687ea1aec923da67aa088e0dcec015553b44e1e718e9a8c1f8b3 } is infinity flag 0 -MSM_Y1 { 0x2829fa452bf16b7acaec486288d6007cb84cff775f7af921483b9e3a53ccd8f6, 0x1a7d638da1be62019c7f544fdbccda5355473e0bb415227292720b6c5930368b } is infinity flag 0 -MSM_X2 { 0x0f3dbf650151b4e4b5b15edd6193e0a2ae95b61a415f696e624320d3ea674ef1, 0x18210fbcb0d6bf260b3839a26d4e16f068a0988f7459ceaee65d08a77b231f8a } is infinity flag 0 -MSM_Y2 { 0x0bc46c3c9c89e4f0fcf09bd6ba065645840f14758faed6f1785fb179a15059de, 0x0c7855297dc0c539a883594db3440aa13769561b6f311dc3f3ae8dc4270ae911 } is infinity flag 0 -MSM_X3 { 0x1a0c7b6d3d650ca568e1bd252dc3c2b37819deee9b8aed787d44518068cdaddb, 0x12e8ecd06d99a717c8ce8a44cec4526f9499153936798f25c5d5e8572fcfe35b } is infinity flag 0 -MSM_Y3 { 0x060e770be985e54ebc46ac40e1cb4371e3a2cae4e2120d1c0da3f1f4bc0fdb8f, 0x187b4b639f3c5c058d6991e1305ebad339c54d3cec3c674f9a23eb42c8a9f7b2 } is infinity flag 0 -MSM_X4 { 0x047eb92799c1c4794c4c50f5e04fe58c01eb04de8ce418e9872bb97dbb4879df, 0x0bd8231ac511108dbb0d01f8027c5e6dfe82025c636f0e4e8f4d24b9a83721cb } is infinity flag 0 -MSM_Y4 { 0x27ee2db24b71ff63c06834a50385567c10a68bcbc4f119a137e48ddb48292ebb, 0x1f381811ca0caf04cddb4303fb2385132ff086b3793a334c05f7b206c7e95948 } is infinity flag 0 -MSM_COLLISION_X1 { 0x092c99a71b977c0edd0354570a91d5604f4ad8c79e3b936883c59543ceab32ec, 0x0f17295c36dd7c51be87a973db386e004e3335be0d200e73b56bcd8874876b98 } is infinity flag 0 -MSM_COLLISION_X2 { 0x09b46b8cc976af042b1e451ef1088d1c4a8bbfff4fc364fc3c207f0133783c92, 0x21a8a7baa23bd4e6cd30fcf0232b0cb5a155705f3ad75a888904ddda97e305dc } is infinity flag 0 -MSM_COLLISION_X3 { 0x05dadbc713dc9b3a794d89a9e16a985f0ef11674d4716998ac2464e06011ccfd, 0x1fd999c35dc10cb310264c8ccad1b38f5380aec3d857c5e53eab5a563fc7310f } is infinity flag 0 -MSM_COLLISION_X4 { 0x1a138d158ecd866f7c3b0d151e8ca737d5002a8f6016c0c36d2092be31313605, 0x1d16aa5446e4ca766cc998ba2eef5726c30083ae2c74c1f755544efdfe5e1eb3 } is infinity flag 0 -MSM_LAMBDA1 { 0x27816cf0f6826f402ceb3ed80383f32dd1866d9d0aeae65bed65624513afa765, 0x12de97161813e1421dc0b0ba279dd823e237daf45a6293d2d61332a300f5d88f } is infinity flag 0 -MSM_LAMBDA2 { 0x0f801399fe4a8ce9fbf534fbb478fd21be89e92f7e7724ad4292dd71c29a29fd, 0x1713433a3f08ec2cace6ee5f5c60960abdfe4e8f1168aa995120b1a960ba2206 } is infinity flag 0 -MSM_LAMBDA3 { 0x1b51bb77638b4b4386dae522a779f9c9e570a7546d779fa6b4ad3c60eaad66f8, 0x1b8006a6910cfdd148588c9164f304af0ea5021f0eb5511b0933e70272090eeb } is infinity flag 0 -MSM_LAMBDA4 { 0x02b6dc8f546b39a9f340660c3865af94386accc0406800382a6d0bd32b893188, 0x2d2ab2b238c56f18a8a5a4972af3826dac44cca5ad4787cab1d7966be986fa1d } is infinity flag 0 -MSM_SLICE1 { 0x2db0b902e3c1bcabc0ce4fca77ac9f5e14feb8b17d8a146b988b7062ffef7f7d, 0x1a80dadc72bc76af65e4902a5ca635cd2fbdc9cc72d263907232f5ab2b123ac0 } is infinity flag 0 -MSM_SLICE2 { 0x108c97ed2edd2fd7dffe23b67a4b1e76bfb1c28549bd8b43365ab5f48b44edb0, 0x2db8e03128a5d37bc80fffc9347842e1db17cb6c8145a968e7f14ea2cd0f381e } is infinity flag 0 -MSM_SLICE3 { 0x01568fccc5637dc37fe8a91ddbb938b1781522c862934909b1d43bf1fd58053d, 0x1d3d05e8ba5e7bdef3c53dab84d517f7142914ec3b0eede4c336d4a26871afa4 } is infinity flag 0 -MSM_SLICE4 { 0x2db61302007f737c52a8a52b2d391e07a238727de44994ae5171f1e7f114cdf5, 0x2fbb251d92e45e425298cfe9f194d92d702bc77d7f6f97660443ada8c143506a } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_EMPTY { 0x00ffcc7027f12568317b2a4da6da16710ecc64a91493eee28da919ab191f09ac, 0x2a6fbd853d7635108d5812ede4b38569898c11cd7ea312a722cecf644e1fc384 } is infinity flag 0 -TRANSCRIPT_RESET_ACCUMULATOR { 0x18ad387ca1c6836f5615652d4e790be59af7ffd13a2f13a15c2df31919a3b523, 0x2b0187f3ccca8cc4cafaeacc4b713731567f623cf463ec31853ea233fa2403b8 } is infinity flag 0 -PRECOMPUTE_SELECT { 0x1409ab6daca345982dc02f8291eb6d869acb13ebb364c6e5ef30a04e370f547a, 0x24125738f0c49a732544ba9a1fb9619c9b5210fe8fc44116aa8d4cc8a6206c78 } is infinity flag 0 -LOOKUP_READ_COUNTS_0 { 0x111e02a5c70da2faaf6c52ac9aff4d1c71c7b0005c58035204933b461268412a, 0x143212b7aab85c6d37879e1b6e5fe88a4c0a88d092bb607ae08e73b8a689f7b0 } is infinity flag 0 -LOOKUP_READ_COUNTS_1 { 0x2d1a9f5a56f8f993fd74de01ee7763e7e9f3819e8e21116b4a9e21aa68f14758, 0x25b7e0ad202b28260c1b974a7c03035120afa70b2247fabd4e31b450b7fe1213 } is infinity flag 0 -TRANSCRIPT_BASE_INFINITY { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_BASE_X_INVERSE { 0x2bc51e2c95d43a2de1b98f91f5cbf6bbf6321aabfa3fc0c9cc061b9f924e618c, 0x07bee19baa65f462f392d36a7712d274446ecbabcbe45d3ba88804e79f4f2bcc } is infinity flag 0 -TRANSCRIPT_BASE_Y_INVERSE { 0x1daa037e0e77d6f65deebbcde6074b2e72f863f235aba64f364da6b1daa2c768, 0x1c770307a6b34c0b76966faadfce61b3c03626c5eb00051eea41f0c408684c0b } is infinity flag 0 -TRANSCRIPT_ADD_X_EQUAL { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_ADD_Y_EQUAL { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_ADD_LAMBDA { 0x0e0db130766b81601f6b3c58a828f33621eeb8863b45b911c01cbd10fc86c8b0, 0x063fe49e2d21908e6178ffd54c6bfa77af0553b7464bbe514bb12b9f374bb312 } is infinity flag 0 -TRANSCRIPT_MSM_INTERMEDIATE_X { 0x25482ebe8924129d1ca267b8a4652d1dc2723452c2879da8bb28f30046952c28, 0x2673b9ec42739a245c4f2d46bd0f0de28838be808bd2a57ed00e386a1653b975 } is infinity flag 0 -TRANSCRIPT_MSM_INTERMEDIATE_Y { 0x1ea01b9a496bfceb8ea77ebabf0ef5ac810c25deab94ba71ecbc849918a600c7, 0x20c87d29187448e734441333a7c95ecabf404b14f3acb5ca88f4fbb75d1890a7 } is infinity flag 0 -TRANSCRIPT_MSM_INFINITY { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_MSM_X_INVERSE { 0x12b19c5f00eb94d27f2468c80b41fbc8b76254f4f34f5beb9a3d1e19957e1721, 0x2a256f8aebeb5da526e89452c94784dedc8625c0d6a25ddcc191b3222bb14da9 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT_ZERO_AT_TRANSITION { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_MSM_COUNT_AT_TRANSITION_INVERSE { 0x20ab83896736a90a3542bee99d50a2457743847092941f78164cf7b31792eefc, 0x227701557502ac9b45a87672748507124c0518fddb682ba9e28288af21f385fc } is infinity flag 0 -round univariate in prover length 22 -Prover challenge at round 0 0x217f345b174d319a6fef641848a9cad734f997c3375541eec822aa053e825c49 -Prover challenge at 1 round 0x28766dab100e7959f5ae0cc285da709f4e0bc8370db1e6eaf98a2536733c7ae4 -round univariate in prover length 22 -Prover challenge at 2 round 0x014b832ba922c38c1fb761eab627f276643a6ed550c06b69e5ba3e6554bfbf6d -round univariate in prover length 22 -Prover challenge at 3 round 0x2f7eb9a8316f263c78a1733d4f33c85e1d490a0c20fecb33b47ba005a318b9e9 -round univariate in prover length 22 -Prover challenge at 4 round 0x154c2cc9292edd9038b8946bb60e6012fab279876c8b74115d61fc6a056ac5b2 -round univariate in prover length 22 -Prover challenge at 5 round 0x07fbcb11e8b0891d0feb7ce5cf7985c890bf222be95125cc7771a0dddff0039c -round univariate in prover length 22 -Prover challenge at 6 round 0x1a69ee0ba6c6bfaedf306d7d1d20d4ca225b1eea9af8e343dd3909b3c926fe91 -round univariate in prover length 22 -Prover challenge at 7 round 0x2599acc4e458ddcb54c8f156802f88d51806b802e71b0d10b060a40b051d18aa -round univariate in prover length 22 -Prover challenge at 8 round 0x0bc04ed2aa2eae1bc3225f4897de2ab1cc248a5667566128a67b932299d24a98 -round univariate in prover length 22 -ECCVM Recursive Verifier -wire comms in recursive verifier -TRANSCRIPT_ADD { 0x111a92b8cdafd31e51d6d45826e518a892ad269e68ac5378249821b71edffaaa, 0x00443713c30fe23e4eb654e7aadce6468a247d28a559593bb7232e2ca4ddd966 } is infinity flag 0 -TRANSCRIPT_MUL { 0x1c1664d51c129964f9ff57446e31be8c77989a5f09e6b14f16f8736f4e8a0150, 0x0deff67cf33aad03be8beb860ffe5614f3f457cd53078f8a5ec12e815c60b380 } is infinity flag 0 -TRANSCRIPT_EQ { 0x18ad387ca1c6836f5615652d4e790be59af7ffd13a2f13a15c2df31919a3b523, 0x2b0187f3ccca8cc4cafaeacc4b713731567f623cf463ec31853ea233fa2403b8 } is infinity flag 0 -TRANSCRIPT_MSM_TRANSITION { 0x2d1dbc98052506bdfb23bf9006c719008e4e5c4307b9cbe4f72f45584e647fa4, 0x14efefb6652ade27469daf5d4b950d4c12636c8dda94b12b9d84bc2897488851 } is infinity flag 0 -TRANSCRIPT_PC { 0x0da4ffd2aadb52884c2f6a89f3cacafd6ded01814e3bdf47881925e657829b42, 0x2ee665c1b334e9f83e28318049aaddd4d0399e82596d3220972393a2f0c45ce8 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT { 0x15460df8353c38fd9ab0579d497464fdbde58f1f5c0affefcfed9cdb10569ea6, 0x072397dde30b9f8d9a29d258a73a6ff98baed96b091130f86636e51403a5e6d8 } is infinity flag 0 -TRANSCRIPT_PX { 0x263ee9cd6be55cf75840775d6dd286aed648e6172420cb0ec2ea5dfe7335d4e6, 0x02121644c5ccd713c0179b37a42ea8bbf94f57326834498c900c241beab52246 } is infinity flag 0 -TRANSCRIPT_PY { 0x2d85ddaa5c8ac2e0e8d848068c557583df265c0ec0d4efc9b25c732a7ebfb29a, 0x11041b3cab323f2873e7a9f4f5edbd180e030ac3d47d47e823bcfc46d0092928 } is infinity flag 0 -TRANSCRIPT_Z1 { 0x1009c8ac65b66832f0188a44bc93a0d89449db69f996e0930ea94cea3545f2ca, 0x033dda788f828866bc0aaaaea6b77bce6340a882d745b3717e5d4044c27088c4 } is infinity flag 0 -TRANSCRIPT_Z2 { 0x18408d71e9ec02f1a38c2eda9d1d4dfd26fb6c4dee58e9cdcf6b6e6d74a13fd2, 0x29bc5c6b1ff1e270b37800cf2aa9a40559547d547ffb7a580b38f6833e0ef631 } is infinity flag 0 -TRANSCRIPT_Z1ZERO { 0x2fef15b4b0f6245eabcb080a19af16f8848dea1d12f1864fae7eb8ca43f7e9da, 0x2a0bf1f5972a94fd35c215cb60057c4e110b4e40302b4b18c8f8bdce0672b15e } is infinity flag 0 -TRANSCRIPT_Z2ZERO { 0x2fef15b4b0f6245eabcb080a19af16f8848dea1d12f1864fae7eb8ca43f7e9da, 0x2a0bf1f5972a94fd35c215cb60057c4e110b4e40302b4b18c8f8bdce0672b15e } is infinity flag 0 -TRANSCRIPT_OP { 0x166de12120e1d42c3dbefe52168f6a60e43dde49039979bfb7928a2dff19c786, 0x063ae8c76be6bd61226006594c74e9b1a1aca2d13b6f83a7dc6d1e1a7597d849 } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_X { 0x1fba3fe7bed5a5bb0dde188ab3599804e23e3e2bacd764828f8986a36f4fc8b5, 0x3010d9275d9af73a0444ac87fa238da5d8f4507c3f58b8fa4a11b4f0bca3da3d } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_Y { 0x0271578e36725c454e40ab82591a7b64d9a00952c6b7c8569034b59f1a08a913, 0x251352153501609e17b2959093d279a5a3e95fa81b67cfabedc472bacedf8ff4 } is infinity flag 0 -TRANSCRIPT_MSM_X { 0x2737e0de4bf614244259280302e089a353546894042ebcd89d7c862523ef939b, 0x2f38de37b8ea4fe0fa85472f916b7a7a3718a724e369f2036679a70303d78bc9 } is infinity flag 0 -TRANSCRIPT_MSM_Y { 0x2462eb4b6c38bb77a4ab1eba1e2264f7503cd6a072d1185688d11e59efabbce8, 0x2419a6bb3a72e648f79af4014980b812fc2aeaa8de0f83a1c3da15af3687d2e4 } is infinity flag 0 -PRECOMPUTE_PC { 0x2d98b6aeb89622957543d07d11f10903388d7e378935f0584cdafdb99b9c300a, 0x2b5fddb07420d29015319a9e9428f931cbbcee1a7196e8cc56d3e679f5fe3dc7 } is infinity flag 0 -PRECOMPUTE_POINT_TRANSITION { 0x07dede40eb03e36cb74604290ab11da530439dae328253ac21dd1a32d808b5d0, 0x246ddd165cb43f761b5eb8d23a2ee03673dc565f22857bec3eb0a37e6ff52296 } is infinity flag 0 -PRECOMPUTE_ROUND { 0x253b625e918bd7adf25f0751b24cf2a47550d2751c7d7a3ef5d08e83ab77219d, 0x25622be957bfd899f355711ae3f58a1dbb6cd78515446d50a0900c97953a9715 } is infinity flag 0 -PRECOMPUTE_SCALAR_SUM { 0x2cef686409d1840db3d996107e16d18fcd33bbf252cea36368add68508c80cde, 0x0778a4308d44d2abd007abdd013e517696ce35ef08e84e8d93d4a4b478d7418c } is infinity flag 0 -PRECOMPUTE_S1HI { 0x13f276cb34d8d9434119fd1d90dd03f88be25affdb7b224b42b288e373996b79, 0x16b3b625c6f25e5fec09729dfb6af0d126a7fe0baa19fba066f3cff27f01e9f5 } is infinity flag 0 -PRECOMPUTE_S1LO { 0x076b60f159142c44eb6dc7af281b8a62b50217be85a896f98ca93f817009e8d2, 0x0d7e5943eda06a77112c1127125a6b4cc5d9e8c7b5ce8116b6366c40cea8c385 } is infinity flag 0 -PRECOMPUTE_S2HI { 0x1336ee1347e531ab003223a19c4a65331dfb258635d09c147f14d61be4ecfeb7, 0x0ff738c743129ecf78d5a7c3bb43e17d09c88c04d78e6d57db91133d2389ee54 } is infinity flag 0 -PRECOMPUTE_S2LO { 0x189ef24f0e737df55223ea35d0e66a6b96f3b89e8668d0a150a560a02d646bdf, 0x2b5ba3b864b7bfc6b9bd2118343b18d60fc3c320a1ae862f77d24b403d054d13 } is infinity flag 0 -PRECOMPUTE_S3HI { 0x0c35afff614d57ee6bda6a61d7d306b747436c470c189d74d652f618ef340a97, 0x0c76c6c4304e6589b38cb2ac0cd552109b26d32b131b4229f2df477a6ea3620e } is infinity flag 0 -PRECOMPUTE_S3LO { 0x00236574920ee249026c299b47ced35a4c6d292580849d4d669718e8d39ba6a5, 0x160428de747241bc746072817db330dc1228f321f23628973361d3f55803d905 } is infinity flag 0 -PRECOMPUTE_S4HI { 0x28518717aaab442b18251b6f707771b374cc5de672cf2deec4637c81701963b7, 0x23fbe90ed23f3da9c5acd90308ad6e36169fffed79623a56afc94521c93fa00b } is infinity flag 0 -PRECOMPUTE_S4LO { 0x2ebe0fc589313a0e6b754218e5c4c09ea594f2580544873955c03a1e12419977, 0x2fe971fb3e353c1170d9217f44c11dfd0684b4818b91e8b7ea00259c1b3a48a5 } is infinity flag 0 -PRECOMPUTE_SKEW { 0x1b791ac16ea1a66678d72f69494ddf13b45533d3ccc8a2f0b9c3aed9b94329e0, 0x225fd477eb7c4579bef0c317fdfa2ca361c611175c014e1a9c185eb4b2929122 } is infinity flag 0 -PRECOMPUTE_DX { 0x086a1e921528547e8eb2a3ae867cf0889bd0c3632768d7b35f33fb108e911531, 0x073fe2f0e8bc716a182ccf298e07e4a9bfa7bf4f100c2da5eefd92b40c2c8316 } is infinity flag 0 -PRECOMPUTE_DY { 0x0fbfdaa65270404af36bb50fcfb1a8c442e11de490cbbccce061c851f9297070, 0x224a288ea8a6f70d42255f0691ea42f4d575bb419830c9109f7846d2bbc498e9 } is infinity flag 0 -PRECOMPUTE_TX { 0x03ac06666304d2f2f233204dacb7452e4eafb6b809546b501dd9f5056953ce41, 0x03cb442ae482879ef63dae2fae756914e1b176ed5c7958726b83046f8d146406 } is infinity flag 0 -PRECOMPUTE_TY { 0x2e1da6e936112a07b16cedc785b52109c826fb49e3477fe0ebddc3c43a359edc, 0x15e7d0461c78bd3f94ba7e02b4eec473bf75ec6b458c07dd76ff7e874c239d2d } is infinity flag 0 -MSM_TRANSITION { 0x2cdaf62cf5866213a553a9b3ad020b49521843220773a3e48a70a08681463e26, 0x203c0f35789cc8c04a74260997cd639f75bb05157a301275affcac2ef57fedcb } is infinity flag 0 -MSM_ADD { 0x24d8a35a474fd31bd0be9fafe21e948fbb5a0a29b9f547d9aad195cbd0b8ac62, 0x0f7becd341929fcaa24b6b2a9e91e1e764df77226eccca74bb9193788aa777aa } is infinity flag 0 -MSM_DOUBLE { 0x2c532eed29ed5287f695ab58e5adcaad05904302f57f2d71c01b480e991bea88, 0x0f98414bcdca252ced97549d00fef4ccff17d9d8ae2c44324b08109084698f42 } is infinity flag 0 -MSM_SKEW { 0x1bca926f749977066df1c36fd9c3bb9673bf0f647e6b6989bc234cabf3de9c25, 0x1f61ec4540aee072d138e5a92200a3e09d5a3a9c13977cc150b8fa36a093bb22 } is infinity flag 0 -MSM_ACCUMULATOR_X { 0x00e8832ca5c207e04c393ee198ffe5cd7696dfd623511da068e6f5c153dd395a, 0x1a3b14f179938928deb721f14f1fcaef4278f99ac69d86b0f94608777e3f3135 } is infinity flag 0 -MSM_ACCUMULATOR_Y { 0x14f22fdcdf5e4aab7dc5e1dffbec0d71c60900baa64495d646401ac12fafa327, 0x0a5b910216005a4fa136339d9dfc7695fb0669b36790a70ca9a417c0f2b8deb6 } is infinity flag 0 -MSM_PC { 0x286f9eea215549edceae2729b22571e34f4602ea6d6afac17f21b21c0e8f8e03, 0x17b793d2c36d937ca430fb98be25996764702784b60f3f5417add601c466c4da } is infinity flag 0 -MSM_SIZE_OF_MSM { 0x18ba9dd7cd8e09cf6140d8cbd438306302edd9bd698f72310499f5e3983286cd, 0x2453aecf59a285eccdd397c910b815312502ce223e9276e1d05936cdd8b35120 } is infinity flag 0 -MSM_COUNT { 0x0672cc8e9e10134056a0d68646a4796e61daa75f9de4d446fdad76ae398f6031, 0x076a8a028528f780a7fb1f35bda5a21627195cc91eddab39adfa68f74cd48bb5 } is infinity flag 0 -MSM_ROUND { 0x2a19ceed5d87c1e1d06de02f698f46c5f28c8fcc27a0ce57e98f1654c90b9e01, 0x02c54298f8039ded87ecf984dc9f80e1c8c22b05fa5175c2e60aa72ab8e921e5 } is infinity flag 0 -MSM_ADD1 { 0x0f868385c1fcd6132ac44f487dc8fa3a068bb593ab0495cebba095c9194aff54, 0x2c0fc583ff5db33c4105838be2c0f7d41b16607c100ff9770716082534b80ec4 } is infinity flag 0 -MSM_ADD2 { 0x0f868385c1fcd6132ac44f487dc8fa3a068bb593ab0495cebba095c9194aff54, 0x2c0fc583ff5db33c4105838be2c0f7d41b16607c100ff9770716082534b80ec4 } is infinity flag 0 -MSM_ADD3 { 0x137056168848302dd3c5f84db4c784e581734a52d57fcf06f372e36fef8a7f9c, 0x04ec4e1d7078a35295cee19f5a70ec6ef09855de33aa3fe68d6a45378b35ad26 } is infinity flag 0 -MSM_ADD4 { 0x137056168848302dd3c5f84db4c784e581734a52d57fcf06f372e36fef8a7f9c, 0x04ec4e1d7078a35295cee19f5a70ec6ef09855de33aa3fe68d6a45378b35ad26 } is infinity flag 0 -MSM_X1 { 0x1617d7320d771b09a8ce66d2dfca3581151332f8d3569bd53f4a28e08dfe1448, 0x0b8d1ed56c44687ea1aec923da67aa088e0dcec015553b44e1e718e9a8c1f8b3 } is infinity flag 0 -MSM_Y1 { 0x2829fa452bf16b7acaec486288d6007cb84cff775f7af921483b9e3a53ccd8f6, 0x1a7d638da1be62019c7f544fdbccda5355473e0bb415227292720b6c5930368b } is infinity flag 0 -MSM_X2 { 0x0f3dbf650151b4e4b5b15edd6193e0a2ae95b61a415f696e624320d3ea674ef1, 0x18210fbcb0d6bf260b3839a26d4e16f068a0988f7459ceaee65d08a77b231f8a } is infinity flag 0 -MSM_Y2 { 0x0bc46c3c9c89e4f0fcf09bd6ba065645840f14758faed6f1785fb179a15059de, 0x0c7855297dc0c539a883594db3440aa13769561b6f311dc3f3ae8dc4270ae911 } is infinity flag 0 -MSM_X3 { 0x1a0c7b6d3d650ca568e1bd252dc3c2b37819deee9b8aed787d44518068cdaddb, 0x12e8ecd06d99a717c8ce8a44cec4526f9499153936798f25c5d5e8572fcfe35b } is infinity flag 0 -MSM_Y3 { 0x060e770be985e54ebc46ac40e1cb4371e3a2cae4e2120d1c0da3f1f4bc0fdb8f, 0x187b4b639f3c5c058d6991e1305ebad339c54d3cec3c674f9a23eb42c8a9f7b2 } is infinity flag 0 -MSM_X4 { 0x047eb92799c1c4794c4c50f5e04fe58c01eb04de8ce418e9872bb97dbb4879df, 0x0bd8231ac511108dbb0d01f8027c5e6dfe82025c636f0e4e8f4d24b9a83721cb } is infinity flag 0 -MSM_Y4 { 0x27ee2db24b71ff63c06834a50385567c10a68bcbc4f119a137e48ddb48292ebb, 0x1f381811ca0caf04cddb4303fb2385132ff086b3793a334c05f7b206c7e95948 } is infinity flag 0 -MSM_COLLISION_X1 { 0x092c99a71b977c0edd0354570a91d5604f4ad8c79e3b936883c59543ceab32ec, 0x0f17295c36dd7c51be87a973db386e004e3335be0d200e73b56bcd8874876b98 } is infinity flag 0 -MSM_COLLISION_X2 { 0x09b46b8cc976af042b1e451ef1088d1c4a8bbfff4fc364fc3c207f0133783c92, 0x21a8a7baa23bd4e6cd30fcf0232b0cb5a155705f3ad75a888904ddda97e305dc } is infinity flag 0 -MSM_COLLISION_X3 { 0x05dadbc713dc9b3a794d89a9e16a985f0ef11674d4716998ac2464e06011ccfd, 0x1fd999c35dc10cb310264c8ccad1b38f5380aec3d857c5e53eab5a563fc7310f } is infinity flag 0 -MSM_COLLISION_X4 { 0x1a138d158ecd866f7c3b0d151e8ca737d5002a8f6016c0c36d2092be31313605, 0x1d16aa5446e4ca766cc998ba2eef5726c30083ae2c74c1f755544efdfe5e1eb3 } is infinity flag 0 -MSM_LAMBDA1 { 0x27816cf0f6826f402ceb3ed80383f32dd1866d9d0aeae65bed65624513afa765, 0x12de97161813e1421dc0b0ba279dd823e237daf45a6293d2d61332a300f5d88f } is infinity flag 0 -MSM_LAMBDA2 { 0x0f801399fe4a8ce9fbf534fbb478fd21be89e92f7e7724ad4292dd71c29a29fd, 0x1713433a3f08ec2cace6ee5f5c60960abdfe4e8f1168aa995120b1a960ba2206 } is infinity flag 0 -MSM_LAMBDA3 { 0x1b51bb77638b4b4386dae522a779f9c9e570a7546d779fa6b4ad3c60eaad66f8, 0x1b8006a6910cfdd148588c9164f304af0ea5021f0eb5511b0933e70272090eeb } is infinity flag 0 -MSM_LAMBDA4 { 0x02b6dc8f546b39a9f340660c3865af94386accc0406800382a6d0bd32b893188, 0x2d2ab2b238c56f18a8a5a4972af3826dac44cca5ad4787cab1d7966be986fa1d } is infinity flag 0 -MSM_SLICE1 { 0x2db0b902e3c1bcabc0ce4fca77ac9f5e14feb8b17d8a146b988b7062ffef7f7d, 0x1a80dadc72bc76af65e4902a5ca635cd2fbdc9cc72d263907232f5ab2b123ac0 } is infinity flag 0 -MSM_SLICE2 { 0x108c97ed2edd2fd7dffe23b67a4b1e76bfb1c28549bd8b43365ab5f48b44edb0, 0x2db8e03128a5d37bc80fffc9347842e1db17cb6c8145a968e7f14ea2cd0f381e } is infinity flag 0 -MSM_SLICE3 { 0x01568fccc5637dc37fe8a91ddbb938b1781522c862934909b1d43bf1fd58053d, 0x1d3d05e8ba5e7bdef3c53dab84d517f7142914ec3b0eede4c336d4a26871afa4 } is infinity flag 0 -MSM_SLICE4 { 0x2db61302007f737c52a8a52b2d391e07a238727de44994ae5171f1e7f114cdf5, 0x2fbb251d92e45e425298cfe9f194d92d702bc77d7f6f97660443ada8c143506a } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_EMPTY { 0x00ffcc7027f12568317b2a4da6da16710ecc64a91493eee28da919ab191f09ac, 0x2a6fbd853d7635108d5812ede4b38569898c11cd7ea312a722cecf644e1fc384 } is infinity flag 0 -TRANSCRIPT_RESET_ACCUMULATOR { 0x18ad387ca1c6836f5615652d4e790be59af7ffd13a2f13a15c2df31919a3b523, 0x2b0187f3ccca8cc4cafaeacc4b713731567f623cf463ec31853ea233fa2403b8 } is infinity flag 0 -PRECOMPUTE_SELECT { 0x1409ab6daca345982dc02f8291eb6d869acb13ebb364c6e5ef30a04e370f547a, 0x24125738f0c49a732544ba9a1fb9619c9b5210fe8fc44116aa8d4cc8a6206c78 } is infinity flag 0 -LOOKUP_READ_COUNTS_0 { 0x111e02a5c70da2faaf6c52ac9aff4d1c71c7b0005c58035204933b461268412a, 0x143212b7aab85c6d37879e1b6e5fe88a4c0a88d092bb607ae08e73b8a689f7b0 } is infinity flag 0 -LOOKUP_READ_COUNTS_1 { 0x2d1a9f5a56f8f993fd74de01ee7763e7e9f3819e8e21116b4a9e21aa68f14758, 0x25b7e0ad202b28260c1b974a7c03035120afa70b2247fabd4e31b450b7fe1213 } is infinity flag 0 -TRANSCRIPT_BASE_INFINITY { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 0 -TRANSCRIPT_BASE_X_INVERSE { 0x2bc51e2c95d43a2de1b98f91f5cbf6bbf6321aabfa3fc0c9cc061b9f924e618c, 0x07bee19baa65f462f392d36a7712d274446ecbabcbe45d3ba88804e79f4f2bcc } is infinity flag 0 -TRANSCRIPT_BASE_Y_INVERSE { 0x1daa037e0e77d6f65deebbcde6074b2e72f863f235aba64f364da6b1daa2c768, 0x1c770307a6b34c0b76966faadfce61b3c03626c5eb00051eea41f0c408684c0b } is infinity flag 0 -TRANSCRIPT_ADD_X_EQUAL { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 0 -TRANSCRIPT_ADD_Y_EQUAL { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 0 -TRANSCRIPT_ADD_LAMBDA { 0x0e0db130766b81601f6b3c58a828f33621eeb8863b45b911c01cbd10fc86c8b0, 0x063fe49e2d21908e6178ffd54c6bfa77af0553b7464bbe514bb12b9f374bb312 } is infinity flag 0 -TRANSCRIPT_MSM_INTERMEDIATE_X { 0x25482ebe8924129d1ca267b8a4652d1dc2723452c2879da8bb28f30046952c28, 0x2673b9ec42739a245c4f2d46bd0f0de28838be808bd2a57ed00e386a1653b975 } is infinity flag 0 -TRANSCRIPT_MSM_INTERMEDIATE_Y { 0x1ea01b9a496bfceb8ea77ebabf0ef5ac810c25deab94ba71ecbc849918a600c7, 0x20c87d29187448e734441333a7c95ecabf404b14f3acb5ca88f4fbb75d1890a7 } is infinity flag 0 -TRANSCRIPT_MSM_INFINITY { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 0 -TRANSCRIPT_MSM_X_INVERSE { 0x12b19c5f00eb94d27f2468c80b41fbc8b76254f4f34f5beb9a3d1e19957e1721, 0x2a256f8aebeb5da526e89452c94784dedc8625c0d6a25ddcc191b3222bb14da9 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT_ZERO_AT_TRANSITION { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT_AT_TRANSITION_INVERSE { 0x20ab83896736a90a3542bee99d50a2457743847092941f78164cf7b31792eefc, 0x227701557502ac9b45a87672748507124c0518fddb682ba9e28288af21f385fc } is infinity flag 0 -Round number: 0 -round univariate in prover length 22 -u challenge is: 0x217f345b174d319a6fef641848a9cad734f997c3375541eec822aa053e825c49, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 0 -univariate value: 0x152cc8317d2ed1b33261de94e457da85075963e453bddf9b9316a867cce0449e, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x1b3786416402ce7685ee67219d297dd8902806ad14b3eaf1a909e3af0b9cb8a9, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 1 -round univariate in prover length 22 -u challenge is: 0x28766dab100e7959f5ae0cc285da709f4e0bc8370db1e6eaf98a2536733c7ae4, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 1 -univariate value: 0x007bcffd2e34c5e740605af6c08be3835fa8ac8070e274a90591b04b895c1655, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x058c3ae6897151526257a7cde0c4e7096ab9e26223f8c093164d496183dcaa89, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x06080ae3b7a61739a2b802c4a150ca8cca628ee294db353c1bdef9ad0d38c0de, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x06080ae3b7a61739a2b802c4a150ca8cca628ee294db353c1bdef9ad0d38c0de, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 2 -round univariate in prover length 22 -u challenge is: 0x014b832ba922c38c1fb761eab627f276643a6ed550c06b69e5ba3e6554bfbf6d, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 2 -univariate value: 0x1bd8b909664939c5e870c99c2ffb8e0dd1e82c3d8ebfe645acab910bcc78dc81, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x2d21c66700c5e2d160362af030295899f195ad55ea3593d4cebef28a145fece2, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x189630fd85dd7c6d9056aed5dea38e4a2bfc6f021083af8d3f49f77f085bcc1c, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x189630fd85dd7c6d9056aed5dea38e4a2bfc6f021083af8d3f49f77f085bcc1c, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 3 -round univariate in prover length 22 -u challenge is: 0x2f7eb9a8316f263c78a1733d4f33c85e1d490a0c20fecb33b47ba005a318b9e9, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 3 -univariate value: 0x290f0d4a94b285335c73b88ba61af869f0c7c6481ee11f347531f25dc8632ecf, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x06ecf89d2b70982fef1c9120bbd816c19aeb01602ffe60b6eef4db57a316bda4, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2ffc05e7c0231d634b9049ac61f30f2b8bb2c7a84edf7feb6426cdb56b79ec73, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2ffc05e7c0231d634b9049ac61f30f2b8bb2c7a84edf7feb6426cdb56b79ec73, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 4 -round univariate in prover length 22 -u challenge is: 0x154c2cc9292edd9038b8946bb60e6012fab279876c8b74115d61fc6a056ac5b2, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 4 -univariate value: 0x14d52e935e95be6c69457ad5487a55b3ca75b8d60c4aba2dbb63a5bcbf970cba, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x21b6825e75e7d1eed47d4cd53a0d927ce550af1b41fc487a7a3bf5d194e95ea5, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x0627627ef34bf031857281f401068fd31844fd5fe5d5381af97f0f777c036e18, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x0627627ef34bf031857281f401068fd31844fd5fe5d5381af97f0f777c036e18, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 5 -round univariate in prover length 22 -u challenge is: 0x07fbcb11e8b0891d0feb7ce5cf7985c890bf222be95125cc7771a0dddff0039c, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 5 -univariate value: 0x0721c017a6a33f56564a65b34c9e408e9a76dab25434c2b6d10b5e44223adaa3, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x06760f0d6a385a1ee9c11b1d7809652e0b6e1a109de725dd15ee1ab891adb1f4, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x0d97cf2510db9975400b80d0c4a7a5bca5e4f4c2f21be893e6f978fcb3e88c97, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x0d97cf2510db9975400b80d0c4a7a5bca5e4f4c2f21be893e6f978fcb3e88c97, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 6 -round univariate in prover length 22 -u challenge is: 0x1a69ee0ba6c6bfaedf306d7d1d20d4ca225b1eea9af8e343dd3909b3c926fe91, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 6 -univariate value: 0x02bcf38a1f9fb7f354fe7003d8bbd9e7e1431c2312c01bb1006610413618269e, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x2682644d45f2035287bd88021fe5e3e067530d39fca3ee0d5f2967ba2fadeabb, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x293f57d76591bb45dcbbf805f8a1bdc84896295d0f6409be5f8f77fb65c61159, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x293f57d76591bb45dcbbf805f8a1bdc84896295d0f6409be5f8f77fb65c61159, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 7 -round univariate in prover length 22 -u challenge is: 0x2599acc4e458ddcb54c8f156802f88d51806b802e71b0d10b060a40b051d18aa, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 7 -univariate value: 0x2afa7378839446154b1db1f34e29feaf64b1e3a0d7d68832f7c92ad6c988e09c, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0f458f598c84f554108e2fe0a7533453f5afb723015f075909282f5b198bd22b, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x09dbb45f2ee79b3fa35b9c1d73fbdaa5c2e0303270c3c4fec4d0ce1b0a97b580, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x09dbb45f2ee79b3fa35b9c1d73fbdaa5c2e0303270c3c4fec4d0ce1b0a97b580, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 8 -round univariate in prover length 22 -u challenge is: 0x0bc04ed2aa2eae1bc3225f4897de2ab1cc248a5667566128a67b932299d24a98, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 8 -univariate value: 0x14b8750f42d3e3f66ca00f222db4067301f4ca1341e36cd2aef9a0dc4ccd3833, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x2e335094ad6d67ed3769638d450b5d128c366f53aff588437d4079e305ea54b7, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x128777310f0fabb9ebb92cf8f13e0b27f6a9ced589672a88f0198ea87a3a8fa3, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x128777310f0fabb9ebb92cf8f13e0b27f6a9ced589672a88f0198ea87a3a8fa3, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 9 -round univariate in prover length 22 -u challenge is: 0x19b951a4d4f7e3c13e265f182ee859bef4a0919bf07929333f922c091f5a53e8, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 9 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 10 -round univariate in prover length 22 -u challenge is: 0x1a7aedc0eeee4a4f12728a75df04a123ce0459a2d112778691cf3b22f37ff4cc, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 10 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 11 -round univariate in prover length 22 -u challenge is: 0x23b123f9da9d594f05fe4088046dbbb085b9b1ff7de16a48afeab3d3b848241c, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 11 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 12 -round univariate in prover length 22 -u challenge is: 0x2ea8c245876289f61f214e58de684bf24c5b483521348cb7dca40a3c209cc08e, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 12 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 13 -round univariate in prover length 22 -u challenge is: 0x0ec044b9f1c389db746f5c0b61feb8c4d529e8fc9445d920cd8094a23b427ca9, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 13 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 14 -round univariate in prover length 22 -u challenge is: 0x2fdc40e05d79c4d41868cf59f80aac785ec732bae30a36fc5ede48c19a585687, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 14 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 15 -round univariate in prover length 22 -u challenge is: 0x1aeadfa4b51f4ad79a1ee11fb96a35de3935698f8504e44a90665581c0aa322c, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 15 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 16 -round univariate in prover length 22 -u challenge is: 0x2f5b81c8a62eaad72ae4dbf8c9d038a596daee8d0034d07ac54992ff88fe54ae, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 16 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 17 -round univariate in prover length 22 -u challenge is: 0x300326975b912db77edf716b7f7917a2addee4cf8feef6282c2c1812431278e5, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 17 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 18 -round univariate in prover length 22 -u challenge is: 0x1a7e7d2893ab60f7249df16db8c98a8869cff466f14a0a5bd982507f170be39e, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 18 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 19 -round univariate in prover length 22 -u challenge is: 0x271c2c8313b61c29274d6e67cf1da1457456c222f787cf7989b0a116019b3478, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 19 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 20 -round univariate in prover length 22 -u challenge is: 0x27df4484dd40e14851e99ba6395b2236e38f67a6fcf76413d051505ab9153b22, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 20 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 21 -round univariate in prover length 22 -u challenge is: 0x1706c50ec046ce0c87c6af0bb3df99d1866a5699d7722e2fc2c6ad0d4de91e76, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 21 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 22 -round univariate in prover length 22 -u challenge is: 0x296f3e15bbd2a6badbf03eb1a03e914ad71cbfcdb87cd949e87021b65a66ae40, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 22 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 23 -round univariate in prover length 22 -u challenge is: 0x11f22a60aca4954690500ce75b3ff25ad77ddeb9ce9a2b309c02d75280955e9f, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 23 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 24 -round univariate in prover length 22 -u challenge is: 0x026dcf15a7ce193ba9a6ec589d939dd8432ecf6d0019316577416cdf3f401484, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 24 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 25 -round univariate in prover length 22 -u challenge is: 0x061c3cd3ae0681a76ba8f8f2a5575df4bf972974202759a660740eaecbd12404, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 25 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 26 -round univariate in prover length 22 -u challenge is: 0x04aed02e5b102e13d6da105668d85992e712bd77b7767527a2bba3c6aa3a2b30, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 26 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -Round number: 27 -round univariate in prover length 22 -u challenge is: 0x0006923e69acff32fefc67d9c047523195ef7b4c45e2fa545363c31dfec55241, 0x0000000000000000000000000000000000000000000000000000000000000000 - at round i 27 -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -univariate value: 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000 - -target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -sumcheck round failed: 0 -full honk value: 0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -final target total sum0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8, 0x0000000000000000000000000000000000000000000000000000000000000000 - -verified result at the end of sumcheck verification 1 -Recursive Verifier: num gates = 732164 -Result of circuit checker:1 -ECCVM Native Verifier -Printing wire comms in native verifier -TRANSCRIPT_ADD { 0x111a92b8cdafd31e51d6d45826e518a892ad269e68ac5378249821b71edffaaa, 0x00443713c30fe23e4eb654e7aadce6468a247d28a559593bb7232e2ca4ddd966 } is infinity flag 0 -TRANSCRIPT_MUL { 0x1c1664d51c129964f9ff57446e31be8c77989a5f09e6b14f16f8736f4e8a0150, 0x0deff67cf33aad03be8beb860ffe5614f3f457cd53078f8a5ec12e815c60b380 } is infinity flag 0 -TRANSCRIPT_EQ { 0x18ad387ca1c6836f5615652d4e790be59af7ffd13a2f13a15c2df31919a3b523, 0x2b0187f3ccca8cc4cafaeacc4b713731567f623cf463ec31853ea233fa2403b8 } is infinity flag 0 -TRANSCRIPT_MSM_TRANSITION { 0x2d1dbc98052506bdfb23bf9006c719008e4e5c4307b9cbe4f72f45584e647fa4, 0x14efefb6652ade27469daf5d4b950d4c12636c8dda94b12b9d84bc2897488851 } is infinity flag 0 -TRANSCRIPT_PC { 0x0da4ffd2aadb52884c2f6a89f3cacafd6ded01814e3bdf47881925e657829b42, 0x2ee665c1b334e9f83e28318049aaddd4d0399e82596d3220972393a2f0c45ce8 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT { 0x15460df8353c38fd9ab0579d497464fdbde58f1f5c0affefcfed9cdb10569ea6, 0x072397dde30b9f8d9a29d258a73a6ff98baed96b091130f86636e51403a5e6d8 } is infinity flag 0 -TRANSCRIPT_PX { 0x263ee9cd6be55cf75840775d6dd286aed648e6172420cb0ec2ea5dfe7335d4e6, 0x02121644c5ccd713c0179b37a42ea8bbf94f57326834498c900c241beab52246 } is infinity flag 0 -TRANSCRIPT_PY { 0x2d85ddaa5c8ac2e0e8d848068c557583df265c0ec0d4efc9b25c732a7ebfb29a, 0x11041b3cab323f2873e7a9f4f5edbd180e030ac3d47d47e823bcfc46d0092928 } is infinity flag 0 -TRANSCRIPT_Z1 { 0x1009c8ac65b66832f0188a44bc93a0d89449db69f996e0930ea94cea3545f2ca, 0x033dda788f828866bc0aaaaea6b77bce6340a882d745b3717e5d4044c27088c4 } is infinity flag 0 -TRANSCRIPT_Z2 { 0x18408d71e9ec02f1a38c2eda9d1d4dfd26fb6c4dee58e9cdcf6b6e6d74a13fd2, 0x29bc5c6b1ff1e270b37800cf2aa9a40559547d547ffb7a580b38f6833e0ef631 } is infinity flag 0 -TRANSCRIPT_Z1ZERO { 0x2fef15b4b0f6245eabcb080a19af16f8848dea1d12f1864fae7eb8ca43f7e9da, 0x2a0bf1f5972a94fd35c215cb60057c4e110b4e40302b4b18c8f8bdce0672b15e } is infinity flag 0 -TRANSCRIPT_Z2ZERO { 0x2fef15b4b0f6245eabcb080a19af16f8848dea1d12f1864fae7eb8ca43f7e9da, 0x2a0bf1f5972a94fd35c215cb60057c4e110b4e40302b4b18c8f8bdce0672b15e } is infinity flag 0 -TRANSCRIPT_OP { 0x166de12120e1d42c3dbefe52168f6a60e43dde49039979bfb7928a2dff19c786, 0x063ae8c76be6bd61226006594c74e9b1a1aca2d13b6f83a7dc6d1e1a7597d849 } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_X { 0x1fba3fe7bed5a5bb0dde188ab3599804e23e3e2bacd764828f8986a36f4fc8b5, 0x3010d9275d9af73a0444ac87fa238da5d8f4507c3f58b8fa4a11b4f0bca3da3d } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_Y { 0x0271578e36725c454e40ab82591a7b64d9a00952c6b7c8569034b59f1a08a913, 0x251352153501609e17b2959093d279a5a3e95fa81b67cfabedc472bacedf8ff4 } is infinity flag 0 -TRANSCRIPT_MSM_X { 0x2737e0de4bf614244259280302e089a353546894042ebcd89d7c862523ef939b, 0x2f38de37b8ea4fe0fa85472f916b7a7a3718a724e369f2036679a70303d78bc9 } is infinity flag 0 -TRANSCRIPT_MSM_Y { 0x2462eb4b6c38bb77a4ab1eba1e2264f7503cd6a072d1185688d11e59efabbce8, 0x2419a6bb3a72e648f79af4014980b812fc2aeaa8de0f83a1c3da15af3687d2e4 } is infinity flag 0 -PRECOMPUTE_PC { 0x2d98b6aeb89622957543d07d11f10903388d7e378935f0584cdafdb99b9c300a, 0x2b5fddb07420d29015319a9e9428f931cbbcee1a7196e8cc56d3e679f5fe3dc7 } is infinity flag 0 -PRECOMPUTE_POINT_TRANSITION { 0x07dede40eb03e36cb74604290ab11da530439dae328253ac21dd1a32d808b5d0, 0x246ddd165cb43f761b5eb8d23a2ee03673dc565f22857bec3eb0a37e6ff52296 } is infinity flag 0 -PRECOMPUTE_ROUND { 0x253b625e918bd7adf25f0751b24cf2a47550d2751c7d7a3ef5d08e83ab77219d, 0x25622be957bfd899f355711ae3f58a1dbb6cd78515446d50a0900c97953a9715 } is infinity flag 0 -PRECOMPUTE_SCALAR_SUM { 0x2cef686409d1840db3d996107e16d18fcd33bbf252cea36368add68508c80cde, 0x0778a4308d44d2abd007abdd013e517696ce35ef08e84e8d93d4a4b478d7418c } is infinity flag 0 -PRECOMPUTE_S1HI { 0x13f276cb34d8d9434119fd1d90dd03f88be25affdb7b224b42b288e373996b79, 0x16b3b625c6f25e5fec09729dfb6af0d126a7fe0baa19fba066f3cff27f01e9f5 } is infinity flag 0 -PRECOMPUTE_S1LO { 0x076b60f159142c44eb6dc7af281b8a62b50217be85a896f98ca93f817009e8d2, 0x0d7e5943eda06a77112c1127125a6b4cc5d9e8c7b5ce8116b6366c40cea8c385 } is infinity flag 0 -PRECOMPUTE_S2HI { 0x1336ee1347e531ab003223a19c4a65331dfb258635d09c147f14d61be4ecfeb7, 0x0ff738c743129ecf78d5a7c3bb43e17d09c88c04d78e6d57db91133d2389ee54 } is infinity flag 0 -PRECOMPUTE_S2LO { 0x189ef24f0e737df55223ea35d0e66a6b96f3b89e8668d0a150a560a02d646bdf, 0x2b5ba3b864b7bfc6b9bd2118343b18d60fc3c320a1ae862f77d24b403d054d13 } is infinity flag 0 -PRECOMPUTE_S3HI { 0x0c35afff614d57ee6bda6a61d7d306b747436c470c189d74d652f618ef340a97, 0x0c76c6c4304e6589b38cb2ac0cd552109b26d32b131b4229f2df477a6ea3620e } is infinity flag 0 -PRECOMPUTE_S3LO { 0x00236574920ee249026c299b47ced35a4c6d292580849d4d669718e8d39ba6a5, 0x160428de747241bc746072817db330dc1228f321f23628973361d3f55803d905 } is infinity flag 0 -PRECOMPUTE_S4HI { 0x28518717aaab442b18251b6f707771b374cc5de672cf2deec4637c81701963b7, 0x23fbe90ed23f3da9c5acd90308ad6e36169fffed79623a56afc94521c93fa00b } is infinity flag 0 -PRECOMPUTE_S4LO { 0x2ebe0fc589313a0e6b754218e5c4c09ea594f2580544873955c03a1e12419977, 0x2fe971fb3e353c1170d9217f44c11dfd0684b4818b91e8b7ea00259c1b3a48a5 } is infinity flag 0 -PRECOMPUTE_SKEW { 0x1b791ac16ea1a66678d72f69494ddf13b45533d3ccc8a2f0b9c3aed9b94329e0, 0x225fd477eb7c4579bef0c317fdfa2ca361c611175c014e1a9c185eb4b2929122 } is infinity flag 0 -PRECOMPUTE_DX { 0x086a1e921528547e8eb2a3ae867cf0889bd0c3632768d7b35f33fb108e911531, 0x073fe2f0e8bc716a182ccf298e07e4a9bfa7bf4f100c2da5eefd92b40c2c8316 } is infinity flag 0 -PRECOMPUTE_DY { 0x0fbfdaa65270404af36bb50fcfb1a8c442e11de490cbbccce061c851f9297070, 0x224a288ea8a6f70d42255f0691ea42f4d575bb419830c9109f7846d2bbc498e9 } is infinity flag 0 -PRECOMPUTE_TX { 0x03ac06666304d2f2f233204dacb7452e4eafb6b809546b501dd9f5056953ce41, 0x03cb442ae482879ef63dae2fae756914e1b176ed5c7958726b83046f8d146406 } is infinity flag 0 -PRECOMPUTE_TY { 0x2e1da6e936112a07b16cedc785b52109c826fb49e3477fe0ebddc3c43a359edc, 0x15e7d0461c78bd3f94ba7e02b4eec473bf75ec6b458c07dd76ff7e874c239d2d } is infinity flag 0 -MSM_TRANSITION { 0x2cdaf62cf5866213a553a9b3ad020b49521843220773a3e48a70a08681463e26, 0x203c0f35789cc8c04a74260997cd639f75bb05157a301275affcac2ef57fedcb } is infinity flag 0 -MSM_ADD { 0x24d8a35a474fd31bd0be9fafe21e948fbb5a0a29b9f547d9aad195cbd0b8ac62, 0x0f7becd341929fcaa24b6b2a9e91e1e764df77226eccca74bb9193788aa777aa } is infinity flag 0 -MSM_DOUBLE { 0x2c532eed29ed5287f695ab58e5adcaad05904302f57f2d71c01b480e991bea88, 0x0f98414bcdca252ced97549d00fef4ccff17d9d8ae2c44324b08109084698f42 } is infinity flag 0 -MSM_SKEW { 0x1bca926f749977066df1c36fd9c3bb9673bf0f647e6b6989bc234cabf3de9c25, 0x1f61ec4540aee072d138e5a92200a3e09d5a3a9c13977cc150b8fa36a093bb22 } is infinity flag 0 -MSM_ACCUMULATOR_X { 0x00e8832ca5c207e04c393ee198ffe5cd7696dfd623511da068e6f5c153dd395a, 0x1a3b14f179938928deb721f14f1fcaef4278f99ac69d86b0f94608777e3f3135 } is infinity flag 0 -MSM_ACCUMULATOR_Y { 0x14f22fdcdf5e4aab7dc5e1dffbec0d71c60900baa64495d646401ac12fafa327, 0x0a5b910216005a4fa136339d9dfc7695fb0669b36790a70ca9a417c0f2b8deb6 } is infinity flag 0 -MSM_PC { 0x286f9eea215549edceae2729b22571e34f4602ea6d6afac17f21b21c0e8f8e03, 0x17b793d2c36d937ca430fb98be25996764702784b60f3f5417add601c466c4da } is infinity flag 0 -MSM_SIZE_OF_MSM { 0x18ba9dd7cd8e09cf6140d8cbd438306302edd9bd698f72310499f5e3983286cd, 0x2453aecf59a285eccdd397c910b815312502ce223e9276e1d05936cdd8b35120 } is infinity flag 0 -MSM_COUNT { 0x0672cc8e9e10134056a0d68646a4796e61daa75f9de4d446fdad76ae398f6031, 0x076a8a028528f780a7fb1f35bda5a21627195cc91eddab39adfa68f74cd48bb5 } is infinity flag 0 -MSM_ROUND { 0x2a19ceed5d87c1e1d06de02f698f46c5f28c8fcc27a0ce57e98f1654c90b9e01, 0x02c54298f8039ded87ecf984dc9f80e1c8c22b05fa5175c2e60aa72ab8e921e5 } is infinity flag 0 -MSM_ADD1 { 0x0f868385c1fcd6132ac44f487dc8fa3a068bb593ab0495cebba095c9194aff54, 0x2c0fc583ff5db33c4105838be2c0f7d41b16607c100ff9770716082534b80ec4 } is infinity flag 0 -MSM_ADD2 { 0x0f868385c1fcd6132ac44f487dc8fa3a068bb593ab0495cebba095c9194aff54, 0x2c0fc583ff5db33c4105838be2c0f7d41b16607c100ff9770716082534b80ec4 } is infinity flag 0 -MSM_ADD3 { 0x137056168848302dd3c5f84db4c784e581734a52d57fcf06f372e36fef8a7f9c, 0x04ec4e1d7078a35295cee19f5a70ec6ef09855de33aa3fe68d6a45378b35ad26 } is infinity flag 0 -MSM_ADD4 { 0x137056168848302dd3c5f84db4c784e581734a52d57fcf06f372e36fef8a7f9c, 0x04ec4e1d7078a35295cee19f5a70ec6ef09855de33aa3fe68d6a45378b35ad26 } is infinity flag 0 -MSM_X1 { 0x1617d7320d771b09a8ce66d2dfca3581151332f8d3569bd53f4a28e08dfe1448, 0x0b8d1ed56c44687ea1aec923da67aa088e0dcec015553b44e1e718e9a8c1f8b3 } is infinity flag 0 -MSM_Y1 { 0x2829fa452bf16b7acaec486288d6007cb84cff775f7af921483b9e3a53ccd8f6, 0x1a7d638da1be62019c7f544fdbccda5355473e0bb415227292720b6c5930368b } is infinity flag 0 -MSM_X2 { 0x0f3dbf650151b4e4b5b15edd6193e0a2ae95b61a415f696e624320d3ea674ef1, 0x18210fbcb0d6bf260b3839a26d4e16f068a0988f7459ceaee65d08a77b231f8a } is infinity flag 0 -MSM_Y2 { 0x0bc46c3c9c89e4f0fcf09bd6ba065645840f14758faed6f1785fb179a15059de, 0x0c7855297dc0c539a883594db3440aa13769561b6f311dc3f3ae8dc4270ae911 } is infinity flag 0 -MSM_X3 { 0x1a0c7b6d3d650ca568e1bd252dc3c2b37819deee9b8aed787d44518068cdaddb, 0x12e8ecd06d99a717c8ce8a44cec4526f9499153936798f25c5d5e8572fcfe35b } is infinity flag 0 -MSM_Y3 { 0x060e770be985e54ebc46ac40e1cb4371e3a2cae4e2120d1c0da3f1f4bc0fdb8f, 0x187b4b639f3c5c058d6991e1305ebad339c54d3cec3c674f9a23eb42c8a9f7b2 } is infinity flag 0 -MSM_X4 { 0x047eb92799c1c4794c4c50f5e04fe58c01eb04de8ce418e9872bb97dbb4879df, 0x0bd8231ac511108dbb0d01f8027c5e6dfe82025c636f0e4e8f4d24b9a83721cb } is infinity flag 0 -MSM_Y4 { 0x27ee2db24b71ff63c06834a50385567c10a68bcbc4f119a137e48ddb48292ebb, 0x1f381811ca0caf04cddb4303fb2385132ff086b3793a334c05f7b206c7e95948 } is infinity flag 0 -MSM_COLLISION_X1 { 0x092c99a71b977c0edd0354570a91d5604f4ad8c79e3b936883c59543ceab32ec, 0x0f17295c36dd7c51be87a973db386e004e3335be0d200e73b56bcd8874876b98 } is infinity flag 0 -MSM_COLLISION_X2 { 0x09b46b8cc976af042b1e451ef1088d1c4a8bbfff4fc364fc3c207f0133783c92, 0x21a8a7baa23bd4e6cd30fcf0232b0cb5a155705f3ad75a888904ddda97e305dc } is infinity flag 0 -MSM_COLLISION_X3 { 0x05dadbc713dc9b3a794d89a9e16a985f0ef11674d4716998ac2464e06011ccfd, 0x1fd999c35dc10cb310264c8ccad1b38f5380aec3d857c5e53eab5a563fc7310f } is infinity flag 0 -MSM_COLLISION_X4 { 0x1a138d158ecd866f7c3b0d151e8ca737d5002a8f6016c0c36d2092be31313605, 0x1d16aa5446e4ca766cc998ba2eef5726c30083ae2c74c1f755544efdfe5e1eb3 } is infinity flag 0 -MSM_LAMBDA1 { 0x27816cf0f6826f402ceb3ed80383f32dd1866d9d0aeae65bed65624513afa765, 0x12de97161813e1421dc0b0ba279dd823e237daf45a6293d2d61332a300f5d88f } is infinity flag 0 -MSM_LAMBDA2 { 0x0f801399fe4a8ce9fbf534fbb478fd21be89e92f7e7724ad4292dd71c29a29fd, 0x1713433a3f08ec2cace6ee5f5c60960abdfe4e8f1168aa995120b1a960ba2206 } is infinity flag 0 -MSM_LAMBDA3 { 0x1b51bb77638b4b4386dae522a779f9c9e570a7546d779fa6b4ad3c60eaad66f8, 0x1b8006a6910cfdd148588c9164f304af0ea5021f0eb5511b0933e70272090eeb } is infinity flag 0 -MSM_LAMBDA4 { 0x02b6dc8f546b39a9f340660c3865af94386accc0406800382a6d0bd32b893188, 0x2d2ab2b238c56f18a8a5a4972af3826dac44cca5ad4787cab1d7966be986fa1d } is infinity flag 0 -MSM_SLICE1 { 0x2db0b902e3c1bcabc0ce4fca77ac9f5e14feb8b17d8a146b988b7062ffef7f7d, 0x1a80dadc72bc76af65e4902a5ca635cd2fbdc9cc72d263907232f5ab2b123ac0 } is infinity flag 0 -MSM_SLICE2 { 0x108c97ed2edd2fd7dffe23b67a4b1e76bfb1c28549bd8b43365ab5f48b44edb0, 0x2db8e03128a5d37bc80fffc9347842e1db17cb6c8145a968e7f14ea2cd0f381e } is infinity flag 0 -MSM_SLICE3 { 0x01568fccc5637dc37fe8a91ddbb938b1781522c862934909b1d43bf1fd58053d, 0x1d3d05e8ba5e7bdef3c53dab84d517f7142914ec3b0eede4c336d4a26871afa4 } is infinity flag 0 -MSM_SLICE4 { 0x2db61302007f737c52a8a52b2d391e07a238727de44994ae5171f1e7f114cdf5, 0x2fbb251d92e45e425298cfe9f194d92d702bc77d7f6f97660443ada8c143506a } is infinity flag 0 -TRANSCRIPT_ACCUMULATOR_EMPTY { 0x00ffcc7027f12568317b2a4da6da16710ecc64a91493eee28da919ab191f09ac, 0x2a6fbd853d7635108d5812ede4b38569898c11cd7ea312a722cecf644e1fc384 } is infinity flag 0 -TRANSCRIPT_RESET_ACCUMULATOR { 0x18ad387ca1c6836f5615652d4e790be59af7ffd13a2f13a15c2df31919a3b523, 0x2b0187f3ccca8cc4cafaeacc4b713731567f623cf463ec31853ea233fa2403b8 } is infinity flag 0 -PRECOMPUTE_SELECT { 0x1409ab6daca345982dc02f8291eb6d869acb13ebb364c6e5ef30a04e370f547a, 0x24125738f0c49a732544ba9a1fb9619c9b5210fe8fc44116aa8d4cc8a6206c78 } is infinity flag 0 -LOOKUP_READ_COUNTS_0 { 0x111e02a5c70da2faaf6c52ac9aff4d1c71c7b0005c58035204933b461268412a, 0x143212b7aab85c6d37879e1b6e5fe88a4c0a88d092bb607ae08e73b8a689f7b0 } is infinity flag 0 -LOOKUP_READ_COUNTS_1 { 0x2d1a9f5a56f8f993fd74de01ee7763e7e9f3819e8e21116b4a9e21aa68f14758, 0x25b7e0ad202b28260c1b974a7c03035120afa70b2247fabd4e31b450b7fe1213 } is infinity flag 0 -TRANSCRIPT_BASE_INFINITY { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_BASE_X_INVERSE { 0x2bc51e2c95d43a2de1b98f91f5cbf6bbf6321aabfa3fc0c9cc061b9f924e618c, 0x07bee19baa65f462f392d36a7712d274446ecbabcbe45d3ba88804e79f4f2bcc } is infinity flag 0 -TRANSCRIPT_BASE_Y_INVERSE { 0x1daa037e0e77d6f65deebbcde6074b2e72f863f235aba64f364da6b1daa2c768, 0x1c770307a6b34c0b76966faadfce61b3c03626c5eb00051eea41f0c408684c0b } is infinity flag 0 -TRANSCRIPT_ADD_X_EQUAL { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_ADD_Y_EQUAL { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_ADD_LAMBDA { 0x0e0db130766b81601f6b3c58a828f33621eeb8863b45b911c01cbd10fc86c8b0, 0x063fe49e2d21908e6178ffd54c6bfa77af0553b7464bbe514bb12b9f374bb312 } is infinity flag 0 -TRANSCRIPT_MSM_INTERMEDIATE_X { 0x25482ebe8924129d1ca267b8a4652d1dc2723452c2879da8bb28f30046952c28, 0x2673b9ec42739a245c4f2d46bd0f0de28838be808bd2a57ed00e386a1653b975 } is infinity flag 0 -TRANSCRIPT_MSM_INTERMEDIATE_Y { 0x1ea01b9a496bfceb8ea77ebabf0ef5ac810c25deab94ba71ecbc849918a600c7, 0x20c87d29187448e734441333a7c95ecabf404b14f3acb5ca88f4fbb75d1890a7 } is infinity flag 0 -TRANSCRIPT_MSM_INFINITY { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_MSM_X_INVERSE { 0x12b19c5f00eb94d27f2468c80b41fbc8b76254f4f34f5beb9a3d1e19957e1721, 0x2a256f8aebeb5da526e89452c94784dedc8625c0d6a25ddcc191b3222bb14da9 } is infinity flag 0 -TRANSCRIPT_MSM_COUNT_ZERO_AT_TRANSITION { 0x183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f8000001, 0x0000000000000000000000000000000000000000000000000000000000000000 } is infinity flag 1 -TRANSCRIPT_MSM_COUNT_AT_TRANSITION_INVERSE { 0x20ab83896736a90a3542bee99d50a2457743847092941f78164cf7b31792eefc, 0x227701557502ac9b45a87672748507124c0518fddb682ba9e28288af21f385fc } is infinity flag 0 -Round number: 0 -round univariate in prover length 22 -u challenge is: 0x217f345b174d319a6fef641848a9cad734f997c3375541eec822aa053e825c49 at round i 0 -univariate value: 0x152cc8317d2ed1b33261de94e457da85075963e453bddf9b9316a867cce0449e -univariate value: 0x1b3786416402ce7685ee67219d297dd8902806ad14b3eaf1a909e3af0b9cb8a9 -TARGET TOTAL SUM 0x0000000000000000000000000000000000000000000000000000000000000000 -total sum 0x0000000000000000000000000000000000000000000000000000000000000000 -0 -Round number: 1 -round univariate in prover length 22 -u challenge is: 0x28766dab100e7959f5ae0cc285da709f4e0bc8370db1e6eaf98a2536733c7ae4 at round i 1 -univariate value: 0x007bcffd2e34c5e740605af6c08be3835fa8ac8070e274a90591b04b895c1655 -univariate value: 0x058c3ae6897151526257a7cde0c4e7096ab9e26223f8c093164d496183dcaa89 -TARGET TOTAL SUM 0x06080ae3b7a61739a2b802c4a150ca8cca628ee294db353c1bdef9ad0d38c0de -total sum 0x06080ae3b7a61739a2b802c4a150ca8cca628ee294db353c1bdef9ad0d38c0de -0 -Round number: 2 -round univariate in prover length 22 -u challenge is: 0x014b832ba922c38c1fb761eab627f276643a6ed550c06b69e5ba3e6554bfbf6d at round i 2 -univariate value: 0x1bd8b909664939c5e870c99c2ffb8e0dd1e82c3d8ebfe645acab910bcc78dc81 -univariate value: 0x2d21c66700c5e2d160362af030295899f195ad55ea3593d4cebef28a145fece2 -TARGET TOTAL SUM 0x189630fd85dd7c6d9056aed5dea38e4a2bfc6f021083af8d3f49f77f085bcc1c -total sum 0x189630fd85dd7c6d9056aed5dea38e4a2bfc6f021083af8d3f49f77f085bcc1c -0 -Round number: 3 -round univariate in prover length 22 -u challenge is: 0x2f7eb9a8316f263c78a1733d4f33c85e1d490a0c20fecb33b47ba005a318b9e9 at round i 3 -univariate value: 0x290f0d4a94b285335c73b88ba61af869f0c7c6481ee11f347531f25dc8632ecf -univariate value: 0x06ecf89d2b70982fef1c9120bbd816c19aeb01602ffe60b6eef4db57a316bda4 -TARGET TOTAL SUM 0x2ffc05e7c0231d634b9049ac61f30f2b8bb2c7a84edf7feb6426cdb56b79ec73 -total sum 0x2ffc05e7c0231d634b9049ac61f30f2b8bb2c7a84edf7feb6426cdb56b79ec73 -0 -Round number: 4 -round univariate in prover length 22 -u challenge is: 0x154c2cc9292edd9038b8946bb60e6012fab279876c8b74115d61fc6a056ac5b2 at round i 4 -univariate value: 0x14d52e935e95be6c69457ad5487a55b3ca75b8d60c4aba2dbb63a5bcbf970cba -univariate value: 0x21b6825e75e7d1eed47d4cd53a0d927ce550af1b41fc487a7a3bf5d194e95ea5 -TARGET TOTAL SUM 0x0627627ef34bf031857281f401068fd31844fd5fe5d5381af97f0f777c036e18 -total sum 0x0627627ef34bf031857281f401068fd31844fd5fe5d5381af97f0f777c036e18 -0 -Round number: 5 -round univariate in prover length 22 -u challenge is: 0x07fbcb11e8b0891d0feb7ce5cf7985c890bf222be95125cc7771a0dddff0039c at round i 5 -univariate value: 0x0721c017a6a33f56564a65b34c9e408e9a76dab25434c2b6d10b5e44223adaa3 -univariate value: 0x06760f0d6a385a1ee9c11b1d7809652e0b6e1a109de725dd15ee1ab891adb1f4 -TARGET TOTAL SUM 0x0d97cf2510db9975400b80d0c4a7a5bca5e4f4c2f21be893e6f978fcb3e88c97 -total sum 0x0d97cf2510db9975400b80d0c4a7a5bca5e4f4c2f21be893e6f978fcb3e88c97 -0 -Round number: 6 -round univariate in prover length 22 -u challenge is: 0x1a69ee0ba6c6bfaedf306d7d1d20d4ca225b1eea9af8e343dd3909b3c926fe91 at round i 6 -univariate value: 0x02bcf38a1f9fb7f354fe7003d8bbd9e7e1431c2312c01bb1006610413618269e -univariate value: 0x2682644d45f2035287bd88021fe5e3e067530d39fca3ee0d5f2967ba2fadeabb -TARGET TOTAL SUM 0x293f57d76591bb45dcbbf805f8a1bdc84896295d0f6409be5f8f77fb65c61159 -total sum 0x293f57d76591bb45dcbbf805f8a1bdc84896295d0f6409be5f8f77fb65c61159 -0 -Round number: 7 -round univariate in prover length 22 -u challenge is: 0x2599acc4e458ddcb54c8f156802f88d51806b802e71b0d10b060a40b051d18aa at round i 7 -univariate value: 0x2afa7378839446154b1db1f34e29feaf64b1e3a0d7d68832f7c92ad6c988e09c -univariate value: 0x0f458f598c84f554108e2fe0a7533453f5afb723015f075909282f5b198bd22b -TARGET TOTAL SUM 0x09dbb45f2ee79b3fa35b9c1d73fbdaa5c2e0303270c3c4fec4d0ce1b0a97b580 -total sum 0x09dbb45f2ee79b3fa35b9c1d73fbdaa5c2e0303270c3c4fec4d0ce1b0a97b580 -0 -Round number: 8 -round univariate in prover length 22 -u challenge is: 0x0bc04ed2aa2eae1bc3225f4897de2ab1cc248a5667566128a67b932299d24a98 at round i 8 -univariate value: 0x14b8750f42d3e3f66ca00f222db4067301f4ca1341e36cd2aef9a0dc4ccd3833 -univariate value: 0x2e335094ad6d67ed3769638d450b5d128c366f53aff588437d4079e305ea54b7 -TARGET TOTAL SUM 0x128777310f0fabb9ebb92cf8f13e0b27f6a9ced589672a88f0198ea87a3a8fa3 -total sum 0x128777310f0fabb9ebb92cf8f13e0b27f6a9ced589672a88f0198ea87a3a8fa3 -0 -Round number: 9 -round univariate in prover length 22 -u challenge is: 0x19b951a4d4f7e3c13e265f182ee859bef4a0919bf07929333f922c091f5a53e8 at round i 9 -Round number: 10 -round univariate in prover length 22 -u challenge is: 0x1a7aedc0eeee4a4f12728a75df04a123ce0459a2d112778691cf3b22f37ff4cc at round i 10 -Round number: 11 -round univariate in prover length 22 -u challenge is: 0x23b123f9da9d594f05fe4088046dbbb085b9b1ff7de16a48afeab3d3b848241c at round i 11 -Round number: 12 -round univariate in prover length 22 -u challenge is: 0x2ea8c245876289f61f214e58de684bf24c5b483521348cb7dca40a3c209cc08e at round i 12 -Round number: 13 -round univariate in prover length 22 -u challenge is: 0x0ec044b9f1c389db746f5c0b61feb8c4d529e8fc9445d920cd8094a23b427ca9 at round i 13 -Round number: 14 -round univariate in prover length 22 -u challenge is: 0x2fdc40e05d79c4d41868cf59f80aac785ec732bae30a36fc5ede48c19a585687 at round i 14 -Round number: 15 -round univariate in prover length 22 -u challenge is: 0x1aeadfa4b51f4ad79a1ee11fb96a35de3935698f8504e44a90665581c0aa322c at round i 15 -Round number: 16 -round univariate in prover length 22 -u challenge is: 0x2f5b81c8a62eaad72ae4dbf8c9d038a596daee8d0034d07ac54992ff88fe54ae at round i 16 -Round number: 17 -round univariate in prover length 22 -u challenge is: 0x300326975b912db77edf716b7f7917a2addee4cf8feef6282c2c1812431278e5 at round i 17 -Round number: 18 -round univariate in prover length 22 -u challenge is: 0x1a7e7d2893ab60f7249df16db8c98a8869cff466f14a0a5bd982507f170be39e at round i 18 -Round number: 19 -round univariate in prover length 22 -u challenge is: 0x271c2c8313b61c29274d6e67cf1da1457456c222f787cf7989b0a116019b3478 at round i 19 -Round number: 20 -round univariate in prover length 22 -u challenge is: 0x27df4484dd40e14851e99ba6395b2236e38f67a6fcf76413d051505ab9153b22 at round i 20 -Round number: 21 -round univariate in prover length 22 -u challenge is: 0x1706c50ec046ce0c87c6af0bb3df99d1866a5699d7722e2fc2c6ad0d4de91e76 at round i 21 -Round number: 22 -round univariate in prover length 22 -u challenge is: 0x296f3e15bbd2a6badbf03eb1a03e914ad71cbfcdb87cd949e87021b65a66ae40 at round i 22 -Round number: 23 -round univariate in prover length 22 -u challenge is: 0x11f22a60aca4954690500ce75b3ff25ad77ddeb9ce9a2b309c02d75280955e9f at round i 23 -Round number: 24 -round univariate in prover length 22 -u challenge is: 0x026dcf15a7ce193ba9a6ec589d939dd8432ecf6d0019316577416cdf3f401484 at round i 24 -Round number: 25 -round univariate in prover length 22 -u challenge is: 0x061c3cd3ae0681a76ba8f8f2a5575df4bf972974202759a660740eaecbd12404 at round i 25 -Round number: 26 -round univariate in prover length 22 -u challenge is: 0x04aed02e5b102e13d6da105668d85992e712bd77b7767527a2bba3c6aa3a2b30 at round i 26 -Round number: 27 -round univariate in prover length 22 -u challenge is: 0x0006923e69acff32fefc67d9c047523195ef7b4c45e2fa545363c31dfec55241 at round i 27 -full honk value: 0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8 -final target total sum 0x2e4a5952e414ec45be00f5f19fab07e3962b85096e8d9a736ff3684c645e63b8 -value of checked: 1 -verified result at the end of sumcheck verification 1 -Ultra -round univariate in prover length 8 -Prover challenge at round 0 0x188f8cc86cecd5bba68899ef1e29ef71fff90e7260d35c484967eaee35c84822 -Prover challenge at 1 round 0x0f8627e4231fc8b8fa9d16ba276a1505cadbc5f4c9e45714085851770c529300 -round univariate in prover length 8 -Prover challenge at 2 round 0x009e8c3b1e0635d254759757eeb5c307682af819b9ce259f937ea4b84722d2fc -round univariate in prover length 8 -Prover challenge at 3 round 0x26290c1d6bee12f05dedcb223556c758f4ac1c47e367f4c9605a864d49efef35 -round univariate in prover length 8 -Prover challenge at 4 round 0x0a9d9de1d60ec9843ca8cfb340da286dc45d052d0a973cb933ae958739890732 -round univariate in prover length 8 -Prover challenge at 5 round 0x2e9abf0448a83bb21f9e83d58abd22d8b594aca5ee2d7ba8be0414b534306383 -round univariate in prover length 8 -Prover challenge at 6 round 0x0632f323ca20d3e4121c823b510db11613f78c0341e7d258aae9174b7b542091 -round univariate in prover length 8 -Prover challenge at 7 round 0x2bb5f3e1ba508eb407b34582445b128275ff48651d80edeedd4f51248db0bdce -round univariate in prover length 8 -Prover challenge at 8 round 0x18d38b2104ee6354d9d3ce185bd45c6148e5de470f09ab2575f5a942304c899d -round univariate in prover length 8 -Prover challenge at 9 round 0x299a03e60e02a239929650e1aeb4e1e1cc2d2f99eb81cc32bae0839561501019 -round univariate in prover length 8 -Prover challenge at 10 round 0x1f5146a09f24813561675540d00329d6a0327c118fa33cf7aa82ec84009d527d -round univariate in prover length 8 -Prover challenge at 11 round 0x0892e15ee074a38f6892f8cc54d8dc763b2058bf6f1dbc5981dfbcea90e7b165 -round univariate in prover length 8 -Prover challenge at 12 round 0x2e0553df2237e6e46b7296a8e9133d6fe4eb4302d0a73a4a659e57dd22568222 -round univariate in prover length 8 -Prover challenge at 13 round 0x1519166fbd01fba7aa2845958b095b22f581f697e57a2f3ef769f086c59f17af -round univariate in prover length 8 -Prover challenge at 14 round 0x1398ac1d8f1fbe766e76143e847a68451ab339cf7889d8e76a24c4756d55af09 -round univariate in prover length 8 -Prover challenge at 15 round 0x2fda08ccf22e4ff21ab4d2094c9e74ed0b942fcd0c6a87a60bf4c94a8fe72e6d -round univariate in prover length 8 -Prover challenge at 16 round 0x082c228af4f2202e655818328a87bc5ae2ce6e899bf4ae824fb215258a38ddef -round univariate in prover length 8 -Prover challenge at 17 round 0x18dc65e95d2778eee25309d80227429e74417346cc2cc5075b507f0d752ef019 -round univariate in prover length 8 -Prover challenge at 18 round 0x0b7eb249b1be67c4970182f057cd7c57eec11a1923b329e88eef44847bc3481c -round univariate in prover length 8 -Prover challenge at 19 round 0x236bb433821ab116366466014b1a65603e46e37c67a0102abfd26dd2ba28808e -round univariate in prover length 8 -Round number: 0 -round univariate in prover length 8 -u challenge is: 0x188f8cc86cecd5bba68899ef1e29ef71fff90e7260d35c484967eaee35c84822 at round i 0 -univariate value: 0x0a8f19a2833c745aeedea267468e65bb7be7d50dc829aed3d822a77694b0f661 -univariate value: 0x25d534d05df52bcec971a34f3af2f2a1ac4c133ab18fc1bd6bbf4e1d5b4f09a0 -TARGET TOTAL SUM 0x0000000000000000000000000000000000000000000000000000000000000000 -total sum 0x0000000000000000000000000000000000000000000000000000000000000000 -0 -Round number: 1 -round univariate in prover length 8 -u challenge is: 0x0f8627e4231fc8b8fa9d16ba276a1505cadbc5f4c9e45714085851770c529300 at round i 1 -univariate value: 0x10ba4563aa4720e0babf0a777d6cb38d9f505103bd6529512f9cb09953d05728 -univariate value: 0x05b54275a33b94d2609e7e6a56d31dea050a4c2fa132027722d796c0a51bf1ca -TARGET TOTAL SUM 0x25e59b782a2459091037e6e2cb69b15e9c8f796f9d4390b39478b7ca1bc6d771 -total sum 0x166f87d94d82b5b31b5d88e1d43fd177a45a9d335e972bc852744759f8ec48f2 -1 -Round number: 2 -round univariate in prover length 8 -u challenge is: 0x009e8c3b1e0635d254759757eeb5c307682af819b9ce259f937ea4b84722d2fc at round i 2 -univariate value: 0x0869f81da703c2cf59a19126fa2bc642e5255b651e97deac381ffca40d15a2c3 -univariate value: 0x1b2b9b3e5cebe5661a8ce4e4c0187ac344d3e8fb0acdfeee7faf9cd1f569391a -TARGET TOTAL SUM 0x2395935c03efa835742e760bba44410629f944602965dd9ab7cf9976027edbdd -total sum 0x2395935c03efa835742e760bba44410629f944602965dd9ab7cf9976027edbdd -0 -Round number: 3 -round univariate in prover length 8 -u challenge is: 0x26290c1d6bee12f05dedcb223556c758f4ac1c47e367f4c9605a864d49efef35 at round i 3 -univariate value: 0x2f5b199b2f620f2763086a19b59c412bba7ab4fbcf3298f21b07ef8ff3bf3c33 -univariate value: 0x2ac62292d1f9c2b2a23150d0f16be29621354cd5e424295e20276dc9b41f2b2e -TARGET TOTAL SUM 0x29bcedbb202a31b04ce975342586cb64b37c1989399d51bef74d67c5b7de6760 -total sum 0x29bcedbb202a31b04ce975342586cb64b37c1989399d51bef74d67c5b7de6760 -0 -Round number: 4 -round univariate in prover length 8 -u challenge is: 0x0a9d9de1d60ec9843ca8cfb340da286dc45d052d0a973cb933ae958739890732 at round i 4 -univariate value: 0x2fc561df8215a52442627ec16927bebfdfd3000e0a67f0a97e3639294c61826c -univariate value: 0x233539a955a28026005e97b55eb8ce13a4e8d3d537683767d4261f9b3f4a329a -TARGET TOTAL SUM 0x22964d15f68685208a70d0c0465f34765c87eb9ac816b7800e7a63309babb505 -total sum 0x22964d15f68685208a70d0c0465f34765c87eb9ac816b7800e7a63309babb505 -0 -Round number: 5 -round univariate in prover length 8 -u challenge is: 0x2e9abf0448a83bb21f9e83d58abd22d8b594aca5ee2d7ba8be0414b534306383 at round i 5 -univariate value: 0x22ece26c8ebf0d47b33c79c67a3cf170729f304bd182740cf27a9d0f50fd3715 -univariate value: 0x0caeac458358dd0cc4c5cc5a1288eaf15e144968b1d643279365868a59d75dcd -TARGET TOTAL SUM 0x2f9b8eb21217ea54780246208cc5dc61d0b379b48358b73485e02399aad494e2 -total sum 0x2f9b8eb21217ea54780246208cc5dc61d0b379b48358b73485e02399aad494e2 -0 -Round number: 6 -round univariate in prover length 8 -u challenge is: 0x0632f323ca20d3e4121c823b510db11613f78c0341e7d258aae9174b7b542091 at round i 6 -univariate value: 0x2c5894fa28c9ca87bb740a0a58c3901c1a02c28a46994a5a01f6af74bfb03bd7 -univariate value: 0x22482c0757eed2bcf02331ac9a6f7e055bd42ece74ec183d005e95745bfabcd8 -TARGET TOTAL SUM 0x1e3c728e9f86fd1af346f60071b1b5c44da3091041cbf205be734f552baaf8ae -total sum 0x1e3c728e9f86fd1af346f60071b1b5c44da3091041cbf205be734f552baaf8ae -0 -Round number: 7 -round univariate in prover length 8 -u challenge is: 0x2bb5f3e1ba508eb407b34582445b128275ff48651d80edeedd4f51248db0bdce at round i 7 -univariate value: 0x17f289f4f5154761c866cf3090fb910baf721e2ab6295a7c5c99a6d5eb16160c -univariate value: 0x149762a22570dc98d2bd348578cfdd41365c3f0f30210e3f19706ae0afb7ac2a -TARGET TOTAL SUM 0x2c89ec971a8623fa9b2403b609cb6e4ce5ce5d39e64a68bb760a11b69acdc236 -total sum 0x2c89ec971a8623fa9b2403b609cb6e4ce5ce5d39e64a68bb760a11b69acdc236 -0 -Round number: 8 -round univariate in prover length 8 -u challenge is: 0x18d38b2104ee6354d9d3ce185bd45c6148e5de470f09ab2575f5a942304c899d at round i 8 -univariate value: 0x0929a6a48888856fd3d7b2f436d612852c597d439b94a05bc126f7cc6b252402 -univariate value: 0x208edfb378760bd51d561ec86bb939ba39b3e1d326216483f19a675f03be6c9e -TARGET TOTAL SUM 0x29b8865800fe9144f12dd1bca28f4c3f660d5f16c1b604dfb2c15f2b6ee390a0 -total sum 0x29b8865800fe9144f12dd1bca28f4c3f660d5f16c1b604dfb2c15f2b6ee390a0 -0 -Round number: 9 -round univariate in prover length 8 -u challenge is: 0x299a03e60e02a239929650e1aeb4e1e1cc2d2f99eb81cc32bae0839561501019 at round i 9 -univariate value: 0x047bd3d893bd9b8e15c9156da387de369e10ddb2ecc718270c5cd4dadcfaa7fc -univariate value: 0x1d661d77f8ed7e9c9a44abd2f658c36d3bb6c57611a849a52ac6dc3ae3f71486 -TARGET TOTAL SUM 0x21e1f1508cab1a2ab00dc14099e0a1a3d9c7a328fe6f61cc3723b115c0f1bc82 -total sum 0x21e1f1508cab1a2ab00dc14099e0a1a3d9c7a328fe6f61cc3723b115c0f1bc82 -0 -Round number: 10 -round univariate in prover length 8 -u challenge is: 0x1f5146a09f24813561675540d00329d6a0327c118fa33cf7aa82ec84009d527d at round i 10 -univariate value: 0x0f11dc7bd8bb6ac3eade8ed49e1dd1b1f9e1a40d16bd595ed7313b9bfb71a2a8 -univariate value: 0x2f16a11b35d459d6cef58f29cd62e5bfddf99831c0f614c14ff8f2862fb8aeed -TARGET TOTAL SUM 0x0dc42f242d5e24710183d847e9ff5f14afa753f65df9fd8ee348388e3b2a5194 -total sum 0x0dc42f242d5e24710183d847e9ff5f14afa753f65df9fd8ee348388e3b2a5194 -0 -Round number: 11 -round univariate in prover length 8 -u challenge is: 0x0892e15ee074a38f6892f8cc54d8dc763b2058bf6f1dbc5981dfbcea90e7b165 at round i 11 -univariate value: 0x20ff2df5126d191569d587744357f4faf1eac3c21b061fc73fac795d0fb61c5a -univariate value: 0x0974c6a0942e394b72b467f685c42beceb9c4c04c510add5c6c51cde6a415a9a -TARGET TOTAL SUM 0x2a73f495a69b5260dc89ef6ac91c20e7dd870fc6e016cd9d0671963b79f776f4 -total sum 0x2a73f495a69b5260dc89ef6ac91c20e7dd870fc6e016cd9d0671963b79f776f4 -0 -Round number: 12 -round univariate in prover length 8 -u challenge is: 0x2e0553df2237e6e46b7296a8e9133d6fe4eb4302d0a73a4a659e57dd22568222 at round i 12 -univariate value: 0x0a3019bda11efee04115b7b4a3e3bd46cc84506248bbefc3b34e3ef86221277b -univariate value: 0x0ca904d729482fc6238dcc74b79c5027246a1aa90a2d51473aa95753229bcb18 -TARGET TOTAL SUM 0x16d91e94ca672ea664a384295b800d6df0ee6b0b52e9410aedf7964b84bcf293 -total sum 0x16d91e94ca672ea664a384295b800d6df0ee6b0b52e9410aedf7964b84bcf293 -0 -Round number: 13 -round univariate in prover length 8 -u challenge is: 0x1519166fbd01fba7aa2845958b095b22f581f697e57a2f3ef769f086c59f17af at round i 13 -univariate value: 0x0657717c59064c8338c7666755c1e86324b0969a89d540aa1e1f04b5aab95a04 -univariate value: 0x2e6bf40df2795080a19bbcd8a51a58f37860e65a9c81ca03c950b15aea9baf8f -TARGET TOTAL SUM 0x045f17176a4dfcda2212dd89795ae8f974dd94acac9d9a1ca38dc07ca5550992 -total sum 0x045f17176a4dfcda2212dd89795ae8f974dd94acac9d9a1ca38dc07ca5550992 -0 -Round number: 14 -round univariate in prover length 8 -u challenge is: 0x1398ac1d8f1fbe766e76143e847a68451ab339cf7889d8e76a24c4756d55af09 at round i 14 -univariate value: 0x021d0b44cc2d6687bde21183cd17a2e972830692d19d5c26ce4171c5650ad75b -univariate value: 0x15072e6b0f87f28ac1c8048605fe65d868e87dc357d496d3fb23e18c9f39b56a -TARGET TOTAL SUM 0x172439afdbb559127faa1609d31608c1db6b84562971f2fac965535204448cc5 -total sum 0x172439afdbb559127faa1609d31608c1db6b84562971f2fac965535204448cc5 -0 -Round number: 15 -round univariate in prover length 8 -u challenge is: 0x2fda08ccf22e4ff21ab4d2094c9e74ed0b942fcd0c6a87a60bf4c94a8fe72e6d at round i 15 -univariate value: 0x185d67e8695085daeb3165c028e71c616eec78855b305fa706bb46810ae75e5d -univariate value: 0x1e1dd47e1ec47dd10c496941c56bb50f955e4dfecc47da338fbec1abf7184acf -TARGET TOTAL SUM 0x0616edf3a6e363823f2a894b6cd17913dc16de3badbec9495298129911ffa92b -total sum 0x0616edf3a6e363823f2a894b6cd17913dc16de3badbec9495298129911ffa92b -0 -Round number: 16 -round univariate in prover length 8 -u challenge is: 0x082c228af4f2202e655818328a87bc5ae2ce6e899bf4ae824fb215258a38ddef at round i 16 -univariate value: 0x1c31b29322d684f7b7c4f2dd029c91e25f0a3350d53be290dfe2cb44629f243a -univariate value: 0x0156508f096decea002a23459cb6350de34b7f30788545675b25e3707ed05908 -TARGET TOTAL SUM 0x1d8803222c4471e1b7ef16229f52c6f04255b2814dc127f83b08aeb4e16f7d42 -total sum 0x1d8803222c4471e1b7ef16229f52c6f04255b2814dc127f83b08aeb4e16f7d42 -0 -Round number: 17 -round univariate in prover length 8 -u challenge is: 0x18dc65e95d2778eee25309d80227429e74417346cc2cc5075b507f0d752ef019 at round i 17 -univariate value: 0x19176c38ff87958ca98c801018279214171400dd4e0c3c2efe8a6d9fd0db6980 -univariate value: 0x071171322f7fd08db247f5a0bf32564e369e54ee87064775a8c3ad6d84a7ab21 -TARGET TOTAL SUM 0x2028dd6b2f07661a5bd475b0d759e8624db255cbd51283a4a74e1b0d558314a1 -total sum 0x2028dd6b2f07661a5bd475b0d759e8624db255cbd51283a4a74e1b0d558314a1 -0 -Round number: 18 -round univariate in prover length 8 -u challenge is: 0x0b7eb249b1be67c4970182f057cd7c57eec11a1923b329e88eef44847bc3481c at round i 18 -univariate value: 0x25b12523bf13785b6867033cfc7072b652d1a103d6ab8bb09c432310cc11ccd5 -univariate value: 0x2e4a13494e9284c93c3212ffb3b6332e846b4b99f79636836edb33a1c6b1cdb4 -TARGET TOTAL SUM 0x2396e9fa2c745cfaec48d0862ea54d87af090455548851a2c73c611ea2c39a88 -total sum 0x2396e9fa2c745cfaec48d0862ea54d87af090455548851a2c73c611ea2c39a88 -0 -Round number: 19 -round univariate in prover length 8 -u challenge is: 0x236bb433821ab116366466014b1a65603e46e37c67a0102abfd26dd2ba28808e at round i 19 -univariate value: 0x0e7112ba1f833cd426a0caa312504705ccd75b5cc9e0906a0b1919a5fd34c90f -univariate value: 0x0955a0db0cb1515513eb673f974fcf7c788a87e486dbe509b997803b1657b589 -TARGET TOTAL SUM 0x17c6b3952c348e293a8c31e2a9a016824561e34150bc7573c4b099e1138c7e98 -total sum 0x17c6b3952c348e293a8c31e2a9a016824561e34150bc7573c4b099e1138c7e98 -0 -Round number: 20 -round univariate in prover length 8 -u challenge is: 0x2173e0ded78aa7f617c16c811d48a8a8c904aefd7f0b55cd69f4fb65cda254e6 at round i 20 -Round number: 21 -round univariate in prover length 8 -u challenge is: 0x20006f8e66768993b9c980472f99b0a36a07e6798012b0e6206d7f938e8c1bac at round i 21 -Round number: 22 -round univariate in prover length 8 -u challenge is: 0x0ce41e9128876b2e2c53e66a651a71f71af3bed70f454d8021aa36da9acb6fb1 at round i 22 -Round number: 23 -round univariate in prover length 8 -u challenge is: 0x0b76da49cfffe0ccb740fea85ee1a7973e3f6c50e920cfff93a24b93ac8e892f at round i 23 -Round number: 24 -round univariate in prover length 8 -u challenge is: 0x25df02ea1e6aa352fb3e185457e2ae1126c4ea13a33f418bc3d66c0daa9c7858 at round i 24 -Round number: 25 -round univariate in prover length 8 -u challenge is: 0x0d66ce9297ea3532df340b00d902a5b08aaa47ac380df01b948829ca941defbc at round i 25 -Round number: 26 -round univariate in prover length 8 -u challenge is: 0x27b8542a704497de8d66301de5a7eacd765c38f83ad2883850144535714e345c at round i 26 -Round number: 27 -round univariate in prover length 8 -u challenge is: 0x1ef5906c083ce376cc467d1ec07100ba3c52cd138627c08db09618916f5eb73c at round i 27 -full honk value: 0x047b7346898db7e1444c2e406b8552d0b2979bf63e0123843f51964bd1b57db5 -final target total sum 0x047b7346898db7e1444c2e406b8552d0b2979bf63e0123843f51964bd1b57db5 -value of checked: 1 -verified result at the end of sumcheck verification 0 -Ultra Verifier: Sumcheck verification failed. -eccvm_recursion_tests: /mnt/user-data/mara/aztec-packages/barretenberg/cpp/src/barretenberg/eccvm_recursion/eccvm_recursive_verifier.test.cpp:126: static void bb::ECCVMRecursiveTests>>>>::test_recursive_verification() [RecursiveFlavor = bb::ECCVMRecursiveFlavor_>>>]: Assertion `(verified)' failed. diff --git a/barretenberg/package-lock.json b/barretenberg/package-lock.json deleted file mode 100644 index 13d9aa05df1..00000000000 --- a/barretenberg/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "barretenberg", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol index 7dd4f3538c0..27f1983ed5f 100644 --- a/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol +++ b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol @@ -1,11 +1,11 @@ -// Verification Key Hash: 588e04b60b4f877a26815bd230e7bc0f2b6e38aaa2c517c889a380e0203d228c +// Verification Key Hash: f7bbd1b4758c8616f966f56728b3d7127a0d1ca6763cbaf70b4719914be476bd // SPDX-License-Identifier: Apache-2.0 // Copyright 2022 Aztec pragma solidity >=0.8.4; library Add2UltraVerificationKey { function verificationKeyHash() internal pure returns (bytes32) { - return 0x588e04b60b4f877a26815bd230e7bc0f2b6e38aaa2c517c889a380e0203d228c; + return 0xf7bbd1b4758c8616f966f56728b3d7127a0d1ca6763cbaf70b4719914be476bd; } function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { diff --git a/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol index 93086663550..b8a1d2efd68 100644 --- a/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol +++ b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol @@ -1,11 +1,11 @@ -// Verification Key Hash: 5218464f67341f763fdbf1a989bbbb0f6533c7e2919c58921d52c378610838fc +// Verification Key Hash: 7370a14d9a35deb926608bdc13693b06292d2f66052be3dd6d13d35441270318 // SPDX-License-Identifier: Apache-2.0 // Copyright 2022 Aztec pragma solidity >=0.8.4; library BlakeUltraVerificationKey { function verificationKeyHash() internal pure returns (bytes32) { - return 0x5218464f67341f763fdbf1a989bbbb0f6533c7e2919c58921d52c378610838fc; + return 0x7370a14d9a35deb926608bdc13693b06292d2f66052be3dd6d13d35441270318; } function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { diff --git a/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol index 61598654904..82e67a786f6 100644 --- a/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol +++ b/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol @@ -1,11 +1,11 @@ -// Verification Key Hash: 83001df02de0e49c3cde502f6162d6bfccb87978b28be03b851cc00a7bfa38d9 +// Verification Key Hash: 3b1c156f02c5934c94573e30a9d55a6398e8d1f616136797c008194d26892a55 // SPDX-License-Identifier: Apache-2.0 // Copyright 2022 Aztec pragma solidity >=0.8.4; library EcdsaUltraVerificationKey { function verificationKeyHash() internal pure returns (bytes32) { - return 0x83001df02de0e49c3cde502f6162d6bfccb87978b28be03b851cc00a7bfa38d9; + return 0x3b1c156f02c5934c94573e30a9d55a6398e8d1f616136797c008194d26892a55; } function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { diff --git a/yarn-project/accounts/src/artifacts/EcdsaAccount.json b/yarn-project/accounts/src/artifacts/EcdsaAccount.json deleted file mode 100644 index f37e9739fc8..00000000000 --- a/yarn-project/accounts/src/artifacts/EcdsaAccount.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"EcdsaAccount","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[{"end":10,"start":5}],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":5,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[10,11,12,13]},"bytecode":"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","debug_symbols":"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"},{"name":"cancel_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(internal)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":39,"start":0}],"outer_hash":[{"end":40,"start":39}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"outer_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496]},"bytecode":"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","debug_symbols":"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"},{"name":"approve_public_authwit","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(internal)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":3,"start":0}],"outer_hash":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"outer_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"H4sIAAAAAAAC/83Y2W4jVRAG4ONMnGQIbm/xhh3HW2ezEy+JHYLJXHLJDQ+AWAckNg0MCF6AeyTehHskLnkqTtU5dX47HfVQo5EVS7Y71fV1VZfdHR0PzBNj9raNfRwa/7B/7ZnI7Ni3LXreGdmyG/TMRCYjoZh2knJbNm6exB6Ybd6yFUy2Z1/250aK5ellh193h7xNW7R7YDJ0kJ0s1eBD864BNcpsP5ZGnxoO0mOfXlwOsbcG2GMP+KF9f9slP/XJuXjLBU0OLOdy9t0m0+8RFhoxpYQINAKNPP0JYaF5ppSQB82D5j3tICy0wJQSCqAF0IKnXyMstMiUEoqgRdCip98hLLTElBJKoCXQkntPkoKeRG+8ij2nTxAWWmZKCWXQMmjZ028QFnrAlBIOQA9AD5KNHoRGU4it9hvCQitMKaECWgGtePoFwkKrTCmhCloFrXr6OcJCa0wpoQZaA63Re5curZe4MAsMDa5Gufwo28Ryidojbhs86lyqvl6q4XDNbcoe+uI3cFU3d3iz6ZNa/q5xmOFD0K2sRU9u84X7S86RzGEsae+gmtux5YLmEB0dmlCMSJOuzucrbd1reJGRS5KuG7Pn7nJZvo/t+dtc3XG6tTbC2GoYW2P9fraPM7dDyHyw3jglN0PjTbCmy2nIpCx9ibDQFtOmG6PQFmgreY6tcFtIIbbaZwgLdRNuPTjhhp9w4yES6UlBT3J6UtSTvJ6U0okd9g8IC20zpYQ2aBu0naz2v4it9gJhoUdMKeEI9Aj0KFntKAw9hdhqPyMstMOUEjqgHdBOslon3BVTiK32McJCu0wpoQvaBe0mq3XDJJWkmU5sg58iLLTHlBJ6oD3QXrJaL/w3U5KCnrT0pKMnJT1p6kmUTuzn8xXCQvtMKaEP2gfte/oLwkIHTClhADoAHSQbHYTPSUkiPcnrSUtPSnpS3Mi55DbSWDmd2C/OrwgLjZlSQgwag8bJanEYg5J09aSykcZaelLSk/JGyGtMrLqRIRf0pKgn0UYm1t7IuTza79grbhd0nWf+xBLmGUODdYssVOLw0nBHXF35HXOp4/VSJw7HblP20BrpBOufM7fyO/NJ537lN3QrP/ot6Zye3OYf7i85RzLDWNJOUc3t2HJBM0RHQxOKETnr2PDvK23da3jh16/mmcvh1W2YzS5mU19f3u3h9OxUs2b9wZPi3+N4YMfuMLv+MPFDk/QfWt03V3+IZNPJWktyMo3l9krOrvvPc79fepy4fmkqJ27lK0PKDricOXM/8GX9eE9dkfftcxQmdo6JjdYnNkR7I3vAj+z7hUs+98mXfJIXtAV26XJGbpPekyTSk5yetPWklE7sGJ4jLHTMlBLGoGPQcbLaONw4lSSfTmyDPyIsdMKUEiagE9BJstok3NqUJKcnkZ7k04kdwwRhoVOmtGMKOgWdJqtNQzUlKepJTk+ijZxLSU/KGyGvMbG+nlT0pJpO7NfzEmGhM6aUMAOdgc6S1WbhI1WSCz2J9CSnJ209KenJpZ5UNvK5jPWkvJHPJdrIubxiYva6+RZhoVdMKeEK9Ar0KlntKvwspSRjPYn0JP9YGyvpSfsxTMx+cb5EWOg1U0q4Br0GvU5Wuw7npCQ5PZnpST6d2DFMERY6Z0oJc9A56DxZbR7+VaUQWh5u/YN1xx1Dg8WGrC4o261iR+6Iq6vYBZdarJe6cXjuNmUPLWxusGi5davYW5/0nl/FLt0qdkkhenKbf7u/5BzJLGNJexfV3I4tFzRLdLQ0oRiR24496F8rbd1rmFexdLZ3OMQizCaL2SzW12SnOL1FclXIn4JbFc7xgWT9YUbc99x9EeSA/mNY+HYWKzMO7SzQzs16O6NTWV/y8rbPq9p/6fkf62YcyfUiAAA=","debug_symbols":"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"},{"name":"spend_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)"],"abi":{"error_types":{},"param_witnesses":{"inner_hash":[{"end":40,"start":39}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496]},"bytecode":"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","debug_symbols":"7Z3hjmTHcaXfhb8FISMiIyJTr7JYLGhbXhAQKMOiF1gIevct0lPVHLOW0yzWnP7c2b9MWrc6T9a9+TG65nw1f//mX/78T//xv//Xd9//61//9s2f/sffv/nLX//52x++++v3l3/7+zeWP/3//vZv337/47/+7Ydv//2Hb/40/vDNn7//l8v//ccfvvnX7/7y52/+FO7/+MMvrvPO+HSpd+ftapt55+rp1p+unr7mF67eOa8xdo2Xq73WP/7nH76x+u8avIXBY8xr8KjfG3z9nuBz9i1K2svVVT/97P31fraPez/bo/f1jZz+pRVsp12vNo/b1Zl379Fa14v37JeL67e/6W6/P7zbuj0zbvvXw4fva56In138//nR6+V9WetlqxZx72evuMaO1S+xd/y0VT9nq3HOVuc5W81ztlrnbLXP2eo6Z6v7mK3GOGer50xLcc60FOdMSzHP2eo501KcMy3FOdNSnDMtxTnT0jxnWprnTEvznGlpnjMtzXnOVs+ZluY509I8Z1qa50xL85xpKc+ZlvKcaSnPmZbynGkp5zlbPWdaynOmpTxnWspzpqU8Z1qqc6alOmdaqnOmpTpnWqp5zlbPmZbqnGmpzpmW6pxpqc6ZlvqcaanPmZb6nGmpz5mWep6z1XOmpT5nWupzpqU+Z1rqc6aldc60tM6ZltY509I6Z1pa85ytnjMtrXOmpfW+pqW+2v2xff58q7+82LKuqa1G/9f35X2NVr/lfamfvS97/df35V3NYbtu3zYwxhfeF6/bVxN4bXu52H58X/a7Gtqe+L68qwnvie/LuxoHf9P70uPle08ifv6+3IGR33KYb//1i7dff/DO/PVL15WH/tlbcfen/vrXeux3NeyefCPnx418HzfyXf2icvKNfFe/hp18I9/VL5kn38h39VvxyTfy3F/j39eNtHHuBw/v7U6e+1HJe7uTHx/uvJc7+fHpznu5k/PjTr6TO/nx+c57uZMfH/C8lzv58QnPe7mTHx/xvJc7+fEZzzu5k/bxGc97uZMfn/G8lzv58RnPe7mTH5/xvJc7OT/u5Du5kx+f8byXO/nxGc97uZMfn/G8lzv58RnPe7mTH5/xvJM76R+f8byXO/nxGc97uZMfn/G8lzv58RnP8+9k+fXaUV+4lV+8P/Pj/qDvz8fnMa+7P/v6hljM/esXt11/cNf+nbfn4A9ZMm+3Z03kf3sO/tyEf3MO/iiEf3MO/nTjt9ycJ/6H/l39FeNzmN3e8v7CW75n1/Wdmfvlbay6l3qMvF59+ef12eU/vY/v6UOAt3wf5b+Cx7oFmjY/+9E/BZL/Jpl2RUFk2C8DTVqgpAUqWqCmBVq0QBsWSP+XSX8pkNECOS0QjdSTRupJI/WkkXrSSD1ppJ40UieN1EkjddJInTRSJ43USSN10kidNFInjdRJI3XRSF00UheN1EUjddFIXTRSF43URSN10UhdNFI3jdRNI3XTSN00UjeN1E0jddNI3TRSN43UTSP1opF60Ui9aKReNFIvGqkXjdSLRupFI/WikXrRSL1ppN40Um8aqTeN1JtG6k0j9aaRetNIvWmk3jBS+4CR2geM1D5gpPYBI7UPGKl9wEjtA0ZqHzBS+4CR2geN1EYjtdFIbTRSG43URiO10UhtNFIbjdRGI7XRSO00UjuN1E4jtdNI7TRSO43UTiO100jtNFI7jdRBI3XQSB00UtMcRac5ik5zFJ3mKDrNUXSao+g0R9FpjqLTHEWnOYpOcxSd5ig6zVF0mqPoNEfRaY6i0xxFpzmKTnMUneYoOs1RdJqj6DRH0WmOotMcRac5ik5zFJ3mKDrNUXSao+g0R9FpjqLTHEWnOYpOcxSd5ig6zVF0mqPoNEfRaY6i0xxFpzmKTnMUneYoOs1RdJqj6DRH0WmOotMcRac5ik5zFJ3mKDrNUXSao+g0R9FpjqLTHEWnOYpOcxSd5ig6zVF0mqPoNEfRaY6i0xxFpzmKTnMUg+YoBs1RDJqjGDRHMQaM1EFzFIPmKAbNUQyaoxg0RzFojmLQHMWgOYpBcxSD5igGzVEMmqMYNEcxaI5i0BzFoDmKQXMUg+YoBs1RDJqjGDRHMWiOYtAcxaA5ikFzFIPmKAbNUQyaoxg0RzFojmLQHMWgOYpBcxSD5igGzVEMmqMYNEcxaI5i0BzFoDmKQXMUg+YoBs1RDJqjGDRHMWiOYtAcxaA5ikFzFIPmKAbNUQyaoxg0RzFojmLQHMWgOYpBcxSD5igGzVEMmqMYNEcxaI5i0BzFoDmKQXMUg+YoBs1RDJqjGDRHMWiOYtAcxaA5ikFzFIPmKAbNUQyaoxg0RzFojmLQHMWgOYpBcxSD5igGzVEMmqMYNEcxaI5i0BzFoDmKQXMUg+YoBs1RDJqjGDRHMWiOYtAcxUlzFCfNUZw0R3HSHMU5YKSeNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxQnzVGcNEdx0hzFSXMUJ81RnDRHcdIcxUlzFCfNUZw0R3HSHMVJcxST5igmzVFMmqOYNEcxB4zUSXMUk+YoJs1RTJqjmDRHMWmOYtIcxaQ5iklzFJPmKCbNUUyao5g0RzFpjmLSHMWkOYpJcxST5igmzVFMmqOYNEcxaY5i0hzFpDmKSXMUk+YoJs1RTJqjmDRHMWmOYtIcxaQ5iklzFJPmKCbNUUyao5g0RzFpjmLSHMWkOYpJcxST5igmzVFMmqOYNEcxaY5i0hzFpDmKSXMUk+YoJs1RTJqjmDRHMWmOYtIcxaQ5iklzFJPmKCbNUUyao5g0RzFpjmLSHMWkOYpJcxST5igmzVFMmqOYNEcxaY5i0hzFpDmKSXMUk+YoJs1RTJqjmDRHMWmOYtIcxaQ5iklzFJPmKCbNUUyao5g0RzFpjmLSHMWkOYpJcxST5igmzVFMmqOYNEcxaY5i0hzFojmKRXMUi+YoFs1RrAEjddEcxaI5ikVzFIvmKBbNUSyao1g0R7FojmLRHMWiOYpFcxSL5igWzVEsmqNYNEexaI5i0RzFojmKRXMUi+YoFs1RLJqjWDRHsWiOYtEcxaI5ikVzFIvmKBbNUSyao1g0R7FojmLRHMWiOYpFcxSL5igWzVEsmqNYNEexaI5i0RzFojmKRXMUi+YoFs1RLJqjWDRHsWiOYtEcxaI5ikVzFIvmKBbNUSyao1g0R7FojmLRHMWiOYpFcxSL5igWzVEsmqNYNEexaI5i0RzFojmKRXMUi+YoFs1RLJqjWDRHsWiOYtEcxaI5ikVzFIvmKBbNUSyao1g0R7FojmLRHMWiOYpFcxSL5igWzVEsmqNYNEexaI5i0RzFojmKRXMUi+YoFs1RLJqjWDRHsWmOYtMcxaY5ik1zFHvASN00R7FpjmLTHMWmOYpNcxSb5ig2zVFsmqPYNEexaY5i0xzFpjmKTXMUm+YoNs1RbJqj2DRHsWmOYtMcxaY5ik1zFJvmKDbNUWyao9g0R7FpjmLTHMWmOYpNcxSb5ig2zVFsmqPYNEexaY5i0xzFpjmKTXMUm+YoNs1RbJqj2DRHsWmOYtMcxaY5ik1zFJvmKDbNUWyao9g0R7FpjmLTHMWmOYpNcxSb5ig2zVFsmqPYNEexaY5i0xzFpjmKTXMUm+YoNs1RbJqj2DRHsWmOYtMcxaY5iq13FC8j2DVQr/jCj97LPl1sw14uvnutxa7rxTM+u/innc5jdprH7LSO2Wkfs9N1zE73KTvVK7FvtlM7Zqd+zE6PmZH02vGb7fSYGWkdMyOtY2akdcyMtI6ZkfYxM9I+Zkbax8xI+5gZSS/8v9lOj5mR9jEz0j5mRtrHzEj7lBlpjVNmpDVOmZHWOGVGWuOUGWmNecxOT5mR1jhlRlrjlBlpjVNmpDWOmZHsmBnJjpmR7JgZyY6ZkfRfcvNmOz1mRrJjZiQ7ZkayY2YkO2ZG8mNmJD9mRtJ/WdOKW7V69ec/+qdA8lFm7euPjr39l4GmONAc4/qj5/D9y0DPGAy8r3fBw+PXA1Xc0tcl0e3iqntv5xh5feAu/7zy55f/FL/+e8e/+5/w8eklXwpeO6+X1r7zw9fv+eE9bH66tEfkr2/08g7eHsnul4tt3n0m3a58mr7mF67eOa+Zd42Xq73Wf25zH7HN+19ARdhmjOuPnlG/c5tuf7z/DTc9b6/r/jH1p9ftuLfbn1/c6+cXf1pjf/017n8PzZPXMMEaLlgjBGtMwRopWKMEa7RgDcE5n4JznoJznoJznoJznoJznoJznoJznoJznoJznoJznoJzXoJzXoJzXoJzXoJzXoJzXoJzXoJzXoJzXoJzXoJz3oJz3oJz3oJz3oJz3oJz3oJz3oJz3oJz3oJz3oJzvgTnfAnO+RKc8yU450twzpfgnC/BOV+Cc74E53wJzvkWnPMtOOdbcM634JxvwTnfgnO+Bed8C875FpzzLTjnNoZiEVMs4opFQrHIVCySikVKsUgrFlmKRRQn3hQn3hQn3hQn3hQn3hQn3hQn3hQn3hQn3hQn3hQn3hUn3hUn3hUn3hUn3hUn3hUn3hUn3hUn3hUn3hUnPhQnPhQnPhQnPhQnPhQnPhQnPhQnPhQnXlGbM0VvzhTFOVM050xRnTNFd84U5TlTtOdMUZ8zRX/OFAU6UzToTFGhM0WHzhQlOlO06ExRozNFj84URTpTNOlMUaUzRZfOFGU6U7TpTFGnM0WfzhSFOlM06kxRqTNFp84UpTpTtOpMUaszRa/OFMU6UzTrTFGtM0W3zhTlOlO060xRrzNFv84UBTtTNOxMUbEzRcfOFCU7U7TsTFGzM0XPzhRFO1M07UxRtTNF184UZTtTtO1MUbczRd/OFIU7UzTuTFG5M0XnzhWdO1d07lzRuXNF587HVCySikVKsUgrFlmKRRQnXtG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF584VnTtXdO5c0blzRefOFZ07V3TuXNG5c0XnzhWdO1d07lzRuXNF5y4UnbtQdO5C0bkLRecuxlQskopFSrFIKxZR/EVSis5dKDp3oejchaJzF4rOXSg6d6Ho3IWicxeKzl0oOneh6NyFonMXis5dKDp3oejchaJzF4rOXSg6d6Ho3IWicxeKzl0oOneh6NyFonMXis5dKDp3oejchaJzF4rOXUj+elhF5y4UnbtQdO5C0bkLRecuFJ27UHTuQtG5C0XnLhSdu1B07kLRuQtF5y4UnbtQdO5C0bkLRecuFJ27UHTuQtG5C0XnLhSdu1B07kLRuQtF5y4UnbtQdO5C0bkLRecuFJ27eELn7vJ7Z3y6OHq8LGKWd65O358uzsjbtX5Z5FOiJxT0np3IcIkclyhwiSYuUeISFS5R4xItXCIcsxeO2QvH7IVj9sIxe+GYvXDMXjhmLxyzF47ZC8fsjWP2xjF745i9cczeOGZvHLM3jtkbx+yNY/amMXsOGrPnoDF7Dhqz56Axew4as+egMXsOGrPnoDF7Dhqz58Ax23DMNhyzDcdswzHbcMw2HLMNx2zDMdtwzDYcsx3HbMcx23HMdhyzHcdsxzHbccx2HLMdx2zHMTtwzA4cswPH7MAxO3DMDhyzA8fswDE7cMwOHLMnjtkTx+yJY/bEMXvimD1xzJ44Zk8csyeO2RPH7MQxO3HMThyzE8fsxDE7ccxOHLMTx+zEMTtxzC4cswvH7MIxu3DMLhyzC8fswjG7cMwuHLNxHuTEeZAT50FOnAc5cR7klHuQPnZ+utrnis+uvmZKYKYCZmpgpgXMtHmZ5E7kazIZMJMDMwUwE5DjC8jxBeT4AnJ8ATm+gBzfQI5vIMc3kOMbyPEN5PgGcnwDOb6BHN9Ajm8ex3PwOJ6Dx/EcPI7n4HE8B4/jOXgcz8HjeA4ex3PwOJ4DyHEDctyAHDcgxw3IcQNy3IAcNyDHDchxA3LcgBx3IMcdyHEHctyBHHcgxx3IcQdy3IEcdyDHHcjxAHI8gBwPIMcDyPEAcjyAHA8gxwPI8QByPIAcn0COTyDHJ5DjE8jxCeT4BHJ8Ajk+gRyfQI5PIMcTyPEEcjyBHE8gxxPI8QRyPIEcTyDHE8jxBHK8gBwvIMcLyPECcryAHC8gxwvI8QJyvIAcLyDHG8jxBnK8gRxvIMeBPmcCfc4E+pwJ9DkT6HMm0OdMoM+ZQJ8zgT5nAn3OBPqcCfQ5E+hzJtDnTKDPmUCfM4E+ZwJ9zgT6nAn0ORPocybQ50ygz5lAnzOBPmcCfc4C+pwF9DkL6HMW0OesweN4AX3OAvqcBfQ5C+hzFtDnLKDPWUCfs4A+ZwF9zgL6nAX0OQvocxbQ5yygz1lAn7OAPmcBfc4C+pwF9DnrK/uc11VSssoTWNsxbqvEvrtKS1ZZklW2YpVnuIuvWMUkq/hzV5l1d5WQrDIlqzzh7K9xW2WN+/elJKu0ZJUlWWUrVnmG7/aKVZ5wXpav2yqZd1eZklV+/zM2+7bK7PS7qyzJKluxyhNcnNesYpJVXvHfl/3zVa6viwdfNx98XT74unrwdf3g69aDr9uPve41PsHd19mDr3vweakHn5d68HmpB5+XevB5qQefl3rweakHn5d+8HnpB5+XfvB56Qefl37weekHn5d+8HnpB5+XfvB56Qefl/Xg87IefF7Wg8/LevB5WQ8+L+vB52U9+LysB5+X9eDzsh58XvaDz8t+8HnZDz4v+8HnZT/4vOwHn5f94POyH3xe9oPPy37seekxHnydPfg6f/B18eDr5oOvywdfVw++rh983XrwdQ8+L/bg82IPPi/24PNiDz4v9uDzYg8+L/bg82IPPi/24PNiDz4v/uDz4g8+L6/4c6Be//jV39q//Kco/Yo/2XnGKlOySkpWqd+9Spffrn35JC1eluivv8T6+kvsr77EM75fZ9W+fa657n2y1U/4Jphp87rKtDXurhKSVaZklZSsUpJVWrLKkqyyFas84ZtJXrPKEz7VNq8vreKSVUKyypSskpJVnnD2fdxWcc+7q7RklSVZZStWecK3WbxmFZOs8oSz7z1uq6z7q4RklSlZJSWrlGSVZ5z9ipdV6u4qS7LKVqyyhmQVk6ziklXiuavsu7+xrilZJSWrPOHsz7x1GWbfX6UlqyzJKluxyhOs+XmB8ssq87NVfnm1+bpmuvzjywdoPl4yGTCTAzMFMNMEZkpgpgJmamCmBcy0cZnW4HF8DR7H1+BxfA0ex9fgcXwNHsfX4HF8DR7H1+BxfA0gxw3IcQNy3IAcNyDHDchxA3LcgBw3IMcNyHEDctyBHHcgxx3IcQdy3NUsyHH9g/y0l7aPXxa5Jlq0RKF+vtNviSLvJnJcosAlmrhEiUv0daeT6yotWeUJ3Mhx+/OmnPmFd9fHsE9XX/7xpSkYbrdMm5fpCR778zMZMJMDMwUw0wRmSmCmAmZqYCYgxyeQ4wnkeAI5nkCOJ5DjCeR4AjmeQI4nkOMJ5HgCOV5AjheQ4wXkeAE5XkCOF5DjBeR4ATleQI4XkOMN5HgDOd5AjjeQ4w3keAM53kCON5DjDeR4Azm+gBxfQI4vIMcXkOMLyPEF5PgCcnwBOb6AHF9Ajm8gxzeQ4xvI8Q3k+AZyfAM5voEc30CObyDHN4/je/A4vgeP43vwOL4Hj+N78Di+B4/je/A4vgeP43vwOL4HkOMG5LgBOW5AjhuQ4wbkuAE5bkCOG5DjBuS4ATnuQI47kOMO5LgDOe5AjjuQ4w7kuAM57kCOO5DjAeR4ADkeQI4HkOMB5HgAOR5AjgeQ40CfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc79Bj7n7Udf/tHuZjJgJgdmCmCmCcyUwEwFzNTATAuYafMybSDHN5DjG8jxDeT4BnJ8Azm+gRzfQI5vIMc3j+M2Bg/kl1A8kl9C8VB+CcVj+SUUD+aXUDyaX0LxcH4JxeP5JRQP6JdQRKIbkehGJLoRiW5EohuR6EYkuhGJbkSiG5HoRiS6E4nuRKI7kehOJLoTie5EojuR6E4kuhOJ7kSiB5HoQSR6EIkeRKIHkehBJHoQiR5EogeR6EEk+iQSfRKJPolEn0SiTyLRJ5Hok0j0SST6JBJ9EomeRKInkehJJHoSiZ5EoieR6EkkehKJnkSiJ5HoRSR6EYleRKIXkehFJHoRiV5EoheR6EUkehGJ3kSiN5HoTSR6E4neRKI3kehNJHoTid5EojeR6EBB9BKKSHSgInoJRSQ6UBK9hCISHaiJXkIRiQ4URS+hiEQHqqKXUESiA2XRSygi0YG66CUUkehAYfQSikh0oDJ6CQUkuhGdUSM6o0Z0Ro3ojNoAEt2IzqgRnVEjOqNGdEaN6Iwa0Rk1ojNqRGfUiM6oEZ1RIzqjRnRGjeiMGtEZNaIzakRn1N7AGe2XUGvdD+XEUEEMNYmhkhiqiKGaGGq9YajLb52fhfrl1Xtdv9H2x2/muF3sfudai13Xi2d8dvFtt/uk3b6B5fqWu7WjdutH7TaO2u08ard51G7rqN32Ubs9apaKo2apedQsNY+apeZRs9Q8apZ6A4f/LXd71Cw1j5ql5lGz1DxqlppHzVJ51CyVR81SedQslUfNUm/w7RlvudujZqk8apbKo2apPGqWyqNmqTpqlqqjZqk6apaqo2apN/jemrfc7VGzVB01S9VRs1QdNUsVaZa6hmrSyHMLJf+vl3ndQvn9cp/+q3ReE0rOi8vTfQs1+36oRQy1gaH0XxDzmlBGDCUf321f6e8+9v1QQQw1iaGSGKqIoZoYahFD7bcM5amdHvXfPPOmu7WjdutH7TaO2u08ard51G7rqN32UbtdR+32pFnKx0mzlI+TZikfJ81SPk6apXzMo3Z70izl46RZysdJs5SPk2YpH0fNUnbULGVHzVJ21CxlR81S+m+0e9PdHjVL2VGzlB01S9lRs5QdNUv5UbOUHzVL+VGzlB81S+m/S/JNd3vULOVHzVJ+1CzlR81SftQsFW87S92trHkYMZQTQwUx1CSGSmKoIoZqYqhFDLWBoSaR6Pov97P1Ikvc/x5y138H32tCBTHUJIZKYqgihmpiqEUMtYGh9N9d9ppQRKInkehJJHoSiZ5EoieR6EkkehKJnkSiF5HoRSR6EYleRKIXkehFJHoRiV5EoheR6EUkehOJ3kSiN5HoTSR6E4necqJffoG6fbzYdj9UEUM1MdQihtrAUPovHXpNKCOG8rcMtT7/JqSv/ifm+m8zetPdzqN2m0ftto7abR+123XUbvdJu93jqN3aUbs9apbaR81S+u+4etPdHjVL7aNmqX3ULLWPmqX2SbNUjJNmqRgnzVIxTpqlYpw0S8WYR+32pFkqxkmzVIyTZqkYJ81SMY6apeyoWcqOmqXsqFnKjpql9N9x9aa7PWqWsqNmKTtqlrKjZik7apbyo2YpP2qW8qNmKSfNUrdQkxhKzvPLL6jXUJffZ+6H2sBQ+u9iiZe/ZDRi3A8VxFCTGCqJoYoYSj7QRs9bqO33Qy1iqA0Mpf8ulteEMmIoJ4YKYqj5hqHmWNrpUf8lL2+62zpqt33UbtdRu90n7TbHUbu1o3brR+02jtrtPGq3R81SedQslUfNUnnULJVHzVJ11CxVR81SddQsVUfNUvrvH3vT3R41S9VRs1QdNUvVUbNUHTVL9VGzVB81S/VRs1QfNUvpv/nvTXd71CzVR81SfdQs1UfNUn3ULLWOmqXWUbPUOmqWWkfNUvpvsHzT3b7pLGX3K2uriKGaGGoRQ21gqD2IoYwYyomhghhqEkMRia7/urvLn0FcQ8X97yEP/bfSvSbUIobavFBT/1VsrwllxFBODBXEUJMYKomhgESfA0j0OYBEn4NIdCMS3YhENyLRjUh0IxLdiEQ3ItGNSHQjEt2IRHci0Z1IdCcS3YlEdyLRnUh0JxLdiUR3ItGdSPQgEj2IRA8i0YNI9CASPYhEDyLRg0j0IBI9iESfRKJPItEnkeiTSPRJJPokEn0SiT6JRJ9Eok8i0ZNI9CQSPYlE13+nyiy/hppr3A81iaGSGKqIoZoYahFDbWCor/wlF7dlTLOMa5YJzTJTs0xqlinNMq1ZZmmW2ZJlWkOB1lCgNRRoDQVaQ4HWUKA1FGgNBVpDgdZQYGkosDQUWBoKLA0FloYCz7C2qq9/bcYF+PMLM+oF1ut2dfr9UEUM1cRQixhqA0M9w9p6figjhnJiqCCGmsRQRKJvItE3keibSPQNJHoOINFzAImeA0j0HECi5wASPQeQ6DmARM8BJHqOr0v02zJbsowNzTKmWcY1yzyBdZ15W6bjCc/lM3ym54dKYqgihmpiqEUMtYGhnuEzPT+UfdVQt2Vcs0xolpmaZZ5Bxlc8AqVZpjXLLM0yW7LMM4yZ1yxjmmVcs0xolpmaZTQUCA0FQkOB0FAgNBSYGgpMDQWmhgJTQ4GpocDUUGBqKDA1FJgaCkwNBVJDgdRQIDUUSA0FUkOB1FAgNRRIDQVSQ4HUUKA0FCgNBUpDgdJQoDQUKA0FSkOB0lCgNBQoDQVaQ4HWUKA1FGgNBVpDgdZQoDUUaA0FWkOB1lBgaSiwNBRYGgosDQWWhgJLQ4GlocDSUGBpKLA0FNgaCmwNBbaGAltDga2hwNZQYGsosDUU2BoKbAkFagzNMqZZxjXLhGaZqVkmNcuUZpnWLLM0y2goYBoKmIYCpqGAaShgGgqYhgKmoYBpKGAaCpiGAq6hgGso4BoKuIYCrqGApjtYmu5gabqDpekOlqY7WJruYGm6g6XpDpamO1ia7mBpuoOl6Q6WpjtYmu5gabqDpekOlqY7WJruYGm6g6XpDpamO1ia7mBpuoOl6Q6WpjtYmu5gabqDpekOlqY7WJruYGm6g6XpDpamO1ia7mBpuoOl6Q6WpjtYmu5gabqDpekOlqY7WJruYGm6g6XpDpamO1ia7mBpuoOl6Q6WpjtYmu5gabqDpekOlqY7WJruYGm6g6XpDpamO1ia7mBpuoOl6Q6WpjtYmu5gabqDpekOlqY7WJruYGm6g6XpDpamO1ia7mBpuoOl6Q6WpjtYmu5gabqDrekOtqY72JruYGu6gz2mZpnULFOaZVqzzNIso6GApjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72JruYGu6g63pDramO9ia7mBruoOt6Q62pjvYmu5ga7qDrekOtqY72Jru4NJ0B5emO7g03cGl6Q6uMTXLpGaZ0izTmmWWZhkNBTTdwaXpDi5Nd3BpuoNL0x1cmu7g0pT6lqbUtzSlvqUp9S1NqW89owaXI67L5MzPlvnl1R7j+he+e5jdrg63l1BJDFXEUE0MtYihtjzU7Udf/jHvhnpGNfD5oYwYyomhghhKT/SIl1B1P1QSQxUxVBNDLWKoDQw1BzGUEUM5MVQQQ+mJ7nULFeN+qCSGKmKoJoZaxFAbGCoHMZQRQzkxVBBDEYmeRKInkehJJHoSiZ5EoheR6EUkehGJXkSiF5HoRSR6EYleRKIXkehFJHoTid5EojeR6E0kehOJ3kSiN5HoTST6knPKXkKZr/uhjBjKiaGCGGoSQ8k5Zdm3UOX3QxUxVBNDLWKoDQy19UTP8RIq7ocyYignhgpiqEkMlcRQRQzVxFCLGGrzQu2hJ/q8VQBs9v1QRgzlxFBBDDWJoZIYqoihmhhqEUNtYCgjEt2IRDci0Y1IdCMS3YhENyLRjUh0IxLdiER3ItGdSHQnEt2JRHci0Z1IdCcS3YlEdyLRnUj0IBI9iEQPItGDSPRn+H3Tr38ENGfPL4TKm4ac9vLnon5Z5BapeZEWL9LGRXqG1/fsSKaONP0a6WffJvFZJOdFCl6kyYuU6kixbpHifqTiRWpepMWLtHGRcvAiyentt/+gRN6P5LxIwYs0eZGSF6l4kZoXafEibVykGrxIPHoXj97Fo3fx6F08eheP3sWjd/HoXTx6N4/ezaN38+jdPHo3j97No3fz6N08ejeP3s2j9+LRe/HovXj0Xjx6Lx69F4/ei0fvxaP34tF7oeht4X+8392zvn427fbysuzrq+6X6774KnvoVf7Qq+K3vmp5//F+udny2iOwZT97wy9v4uXf/s+3//7dt//0lz//7fKKH//H//j+n3/47q/ff/rXH/7vv/3n/3K59v8B"},{"name":"spend_public_authwit","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"inner_hash":[{"end":4,"start":3}],"inputs":[{"end":3,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"field"},"visibility":"public"},"return_witnesses":[4]},"bytecode":"H4sIAAAAAAAC/82Zy24bNxSGKVmSnboa3S+2pURxZiTZulhSJVlxbD9AgXbTJ+g9BXoBkl7QAgX6Pl12X6DbLrrqs3RdnnNI/iOPMQGDQMgAI1GH/8dzeGY4JEeh2lPqIK/00VXmyGmLClRBf2XpvFG2pAt0ZgKVsaaIKomSkrarvcgAKscl7UHlT/XHu5GSFg5yK6rIUVslshX4c3/EZSpRdagy1FwhT97YCVeFFLIi4DCyIT9QbKTjkD5EQ9g7IWp0gx9SGCJ+YMTFKCtGVQRWFM2hFBn9DmaLBoySIAAaAA0M+j3MFi0xSoIS0BLQkkF7MFu0zCgJykDLQMsG/Qpmi1YYJUEFaAVoxaDfwmzRKqMkqAKtAq3KdxIp+yPBG/ei+/QxzBatMUqCGtAa0JpBv4bZonVGSVAHWgdaTwZad4GmINrbLzBbtMEoCRpAG0AbBv0cZos2GSVBE2gTaNOgn8Fs0RajJGgBbQFt0fdjGlo/YmCWGVQYjXb4kVpFdojqFnMKR5tdtbddHQnckqKtoRv/CKP6pMDFEyPqmKdGN8NN0EOtQyeH+VJ+2T4S042s7BjepCIrRtVFRF3lnBFyQqPzeSysOwGvM3ZI0rhRB01+ynEi2kJRDo5ctlrI1tH2Y+wwjNfEnRxznPR0PIbc9OXI9OBeZN8fafsj+XREaqYoUkJOnuViGr4gUslhu2y1ka397WwdIFv6rsyr7YPD4vmNq/LSTNs003Fhd9CguWn2zd20fx9ynI5shWQ70+WeWk1bbra78dLxSOJ9RGeeix3z82HI7tRjmSYfUlGfPXFyTXlxGTtFxsLtjD1BeKFu8CMZqnvCsLjPnaSm+sD6ogmlSN9JJPBHiumIDvAFzBYdMEqCAdAB0EHS28A9/1MQ7e1LmC06ZJQEQ6BDoMOkt6F7EnsipXREB/gSZoueMUqCM6BnQM+S3s7cnOaJFP2RwB8ppSM6DTOYLXrOKAnOgZ4DPU96O3fePJGKP1L0R4Kd9KXqj9R2grwiY/ou+Almi44YJcEI6AjoKOlt5EarJ9JMR3SAU5gtOmaUBGOgY6DjpLexu7SeSOSPBP5I0R/p+yNVf2TgjzR2cl2G/khtJ9cl2ElfXpExPW6+gdmiE0ZJMAE6ATox6A8wW3TKKAmmQKdAp8lAp65vnkjgj5Te1sCq/kj/bciYvgu+gNmiF4yS4ALoBdCLpLcL1ydPpOiPjP2RUjqi0zCH2aIzRkkwAzoDOkt6m7kpKwWhrUjmL+xHbhhU2ITYXQep5e1AKC3G3w7M2dV829VC4JkUbQ1teBbYzCzl7cDSiFbm7cBa3g6syUQnh/mn/LJ9JGYdWdl78CYVWTGqNSJaK+eMkGVPm/+IhXUnYH47QL29Se75eCsne76HsslzGXbZ693JHjTzQdbsEDNIfWxTOje181izBbddxYX7h0ocpjn2xC3LwsjG3wncjrR3YyLjEy+LxSQ6Ks6lyIEw0jFnDGGTuWC9vDP1EDgFubjvblps52OGG0LfG5kPcD1DI16667kEthTNAjdQEmn4I8OdIFV/ZLCT7pf8kYo/UvRHgp305TWuy+SN90UPgucwW3TF6FKekxZdAV0lva1csj2Rvj9S9kfq/kjDH2n6I6V0RF+fT2C2qEw6q3snnYWZdAj9GWaLXjJKgkugl0Avk4FeukA9kWo6ogP8FGaLbhglwQboBugm6e21kaI/MvFHKv5IkI7QdJf9DdPfKYMKc56d5DZuMbWQFuOLqafs6um2qyuBN1K0NeTwCnPndcGtZa5k2cJz860spm7N8u6Gw/xVftk+EnMbWdkzeJOKrBjVLSK6Vc4ZIdc93eiLWFh3Al6bJaE6pSUz/eWwtaT6/b/3/yWzLDvoVf0x54df2kd2AZJ9QsX233T+D2xsXKwaHwAA","debug_symbols":"5ZzhjlRFEIXfZX8T012nqrqbVzHGrIpmE7IYWU0M8d0dZObukh2ZIFNHbs4vXei9XTXyeQ/k8L27+enVD7//8v3d/c9v3t68/Pbdzes3P94+3L25P3z17qZ90+2fH3376+39+x94+3D728PNy/bi5tX9T4d//vXi5ue7169uXsLsrxfPzq3E8eSasZ3tnmfOhsXpsYd/XdvpHGcOp0UcD6eN/vTwdy/ej40vGbs3Px3tLY06uH/R573W49y4MLe1cfqvY90uzD28+/Hw8BjP546iuT88PUufPkqfPkufviqfbq306b306Vb6dJQ+3UufXsqqlbJqpaxaKatWyipKWUUpqyhlFaWsopRVlLKKUlZRyipKWUUpq17Kqpey6qWseimrXsqql7Lqpax6KateyqqXshqlrEYpq1HKapSyGqWsRimrUcpqlLIapaxGKatZymqWspqlrGYpq1nKapaymqWsZimrWcpqlrI6SlkdpayOUlZHKaujlNVRyuooZXWUsjpKWR2lrM5SVmcpq7OU1VnK6ixldZayOktZnaWszlJWZymrq5TVVcrqKmV1lbK6SlldpayuUlZXKaurlNVVympvrfbxvfbxVvt41D7eax9f24hotZWIVtuJaLWliFZLba+lttdS22up7bXU9lpqi3tMxUWm4ibT+SqTZZ/H77OMeeESm+in0zNyOx1xrlrX56miFn191JY7U63zlsfD6XamWne+K/W544+2jb9wYXy0cRoffVwYf8Rpjhwjno9/voz1meOvbSJbTzp//zJ++jb+wIXxp50+mJzIM+P3K4w/1vaLZ+WFT9/G3B69/PHTj3NlyBVb5XNl8+2w5TzNbzufHzuf33c+f+x8/tz5/GPn88+dz7/2PT/azuff+fsXO3//YufvX+z8/Yudv3+x8/cvdv7+xc7fv9j5+9d3/v71nb9/fefvX9/5+9d3/v71a7x/1zYSmsWn5184nT1813b08MdoZ8727a/w9vV41tz+26qps+rQWXXqrLpkVo2ms6rprAqdVV1nVZ0IEToRInQiROhEiNCJEKkTIbLrrKqTlpKdlt73i07z/7PgJ5ddw06HW7vw5BGnP+AY+eRDRD+tGjqrps6qQ2fVqbPqkll1NJ1Vu86qprOqToQYrrOqTloaOmlp6KSloZOWhk5amjppaeqkpamTlqZOWpo6aWnqpKWp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"},{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(initializer)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":39,"start":0}],"signing_pub_key_x":[{"end":71,"start":39}],"signing_pub_key_y":[{"end":103,"start":71}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559]},"bytecode":"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","debug_symbols":"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//z/1r9r//ulr4HaD7z0sl76t156q/tm1Lf+9Ut/71a0xk3gBVozIfACrcENeIHWdAW8QGsEgl2gvuYU4AVawwTwAq2/+MELtKYD4AUqq0DYBVqTBPACrUkCeIHWJAG8QGuSAF6gNUnALtBYkwTwAq1JAniB1iQBvEBrkgBeoLIKhF2gNUkAL9CaJIAXaE0SwAu0JgngBVqTBOgClW1NEsALtCYJ4AVakwTwAq1JAniByioQdoHWJAG8QGuSAF6gNUkAL9CaJIAXaE0SsAuU1iQBvEBrkgBeoDVJAC/QmiSAF6isAmEXaE0SwAu0JgngBVqTBPACrUkCeIHWJAG7QLImCeAFWpME8AKtSQJ4gdYk4XsF6nIUqOa/C/T7PZYLv8dc/5Bs6ev3+A+3UVbR3x9t4z+Xv/5+5Vf+E97plf/jjbtb3j98q9Vfm8vmvm1deTpw9dpfefBw9dpfeaZx9dpfeVxy8drnK09irl77Kw95rl77K8+Prl77K4+mrl77smp/2dqvud51a7/metet/ZrrXbf2a6533dqvud5la1/WXO+6tV9zvevWfs31rlv7Nde7bu3Lqv1la7/metet/ZrrXbf2a6533dqvud51a7/mepetva653nVrv+Z61639mutdt/Zrrnfd2pdV+8vWfs31rlv7Nde7bu3XXO+6tV9zvevWfs31Llv7uuZ61639mutdt/Zrrnfd2q+53nVrX1btL1v7Nde7bu3XXO+6tV9zvevWfs31rlv7Nde7bO3bmutdt/Zrrnfd2q+53nVrv+Z61619WbX/4dqXcdS+pdDar7nedWu/5nrXrf2a61239muud93ar7neZWvf11zvurVfc73r1n7N9a5b+zXXu27ty6r9ZWu/5nrXrf2a61239muud93ar7nedWu/5nqXrf1Yc73r1n7N9a5b+zXXu27t11zvurUvq/aXrf2a61239muud93ar7nedWu/5nrXrf2a61219rqtud51a7/metet/ZrrXbf2a6533dqXVfvL1n7N9a5b+zXXu27t11zvurVfc73r1n7N9S5b+7Tmetet/ZrrXbf2a6533dqvud51a19W7S9b+zXXu27t11zvurVfc73r1n7N9a5b+zXXu2ztZc31rlv7Nde7bu3XXO+6tV9zvffXXtpR+5zq37X//dLLeunfeumt7uuib/3rl/7eVbGm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FqcQV5sFhJKX/U/X/UOJrM0CSmQX6OG4FlmbBZTI2iygRNZmASWyNgsokbVZQImszQJKZG0WpxJbmwWUyNosoETWZgElsjYLKDmfElmbBZTI2iygRNZmASWyNgsokbVZnEpsbRZQImuzgBJZmwWUyNosoOR8SmRtFlAia7OAElmbBZTI2iygRNZmsaNMZG0W24mszWI7kbVZbCey2+K3E1mbxXYia7PYTnwv4+jaLLYTWZvFdiJrs9hOTujEtT+N4vH5YEB088HbXjaztO1lM0vbXjaztO1d2l42s7TtZTNL2142s7TtZTNL2142Hwx73Xzwtpeetbr54G0vPWt188HbXnrW6uaDt730rNXNB297pnwwhKjywVtINrO07WUzS9teNrO07V3aXjaztO1lM0vbXjaztO1lM0vbXjazBHvdfPC2l561uvngbS89a3Xzwdteetbq5oO3vfSs1c0Hb3vpWUuVD95CTPngLcSUD95CTPngLcQyty4hpnzwFmLKB28hpnzwFmLKB28hpnwwhKjywVsoedn/EKDcSlz54K3EdSRxH9fiygdvJa588FbiygdvJa588FbiygdvJa588FbiygdDiSwfvJW48sFbiSsfvJW48sFbyfmUuPLBW4krH7yVuPLBW4krH7yVuPLBUCLLB28lrnzwVuLKB28lrnzwVnI+Ja588FbiygdvJa588FbiygdvJa588K8oE1c++JcTVz74lxNXPviXE1/+ji0f/MuJKx/8y4nvZRxbPviXE1c++JcTVz74l5MTOpHtT9X+9bTH2ctLx+0Hm3lt4Kv4P19qH/x1/BSfquJLVbwWWfMqa26y5oesucuaN1nzLmsuO0Gr7AitsjPUZGeoyc5Qk52hJjtDTXaGmuwMtbAZehFGOOHxTGqvkzre/JawoglHCSfUcIKFEx7vbfO1eHwetwQPJ7RwQg8nPF3TrYx/f2kr85YwwwkrmuAlnFDDCU8/rc1eX9rsntDDCU9/0v14HXXrze4IrYQTwr9L7fGa9uuz1MYtYYYTVjShl3BCDSdYOOEIJ3g4oYUTejjhi2u691vCDCc8X9PXzjduCePxmr5273eEGk6wcMLTNd2vPEQv65bg4YQWTujhhBFOeLym1+vy517LLWFFE2YJJ9RwgoUTjnCChxNaOKGHE8YXCbdres5wwvM1/TrR0u2WsB6v6et1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lMjaLKBE1mYBJbI2CyiRtVmsKBNZm8VyImuzWE5kbRbLiey2+OVE1maxnMjaLJYT38s4ujaL5UTWZrGcyNoslpMTOrHtTzMjHzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88GTLR882fLBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPNnywZMtHzzZ8sGTLR882fLBky0fPNnywZMtHzzZ8sGTLR882fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBkzAfPAnzwZMwHzwJ88GTMB88CfPBkzAfPAnzwZMwHzwJ88GTMB886fLBtvW/7vY4+/bQcXthM84NfG7+56P27/86DvGhKj5Vxcsma15kzU3WfJc1d1nzKmveZM1lJ2iRHaFFdoaa7Aw12RlqsjPUZGeoyc5Qk52hFjZDT0IPJ9yeSfVxUserXxJmNGHfwgklnGDhhNt723gsHh/7JcHDCTWc0MIJd9d03frfH63buCSMcMKMJvgWTijhhLs/rdUeH612TWjhhLvf6bY/jrq1aleEuoUTwr9K9faa9vNnqfZLwggnzGhC28IJJZxg4YQ9nODhhBpOaOGED67p1i4JI5xwf02fO1+/JPTba/rcvZ8RSjjBwgl313Q78xBtm5cEDyfUcEILJ/Rwwu01PR+XP7eyXRJmNGFs4YQSTrBwwh5O8HBCDSe0cEL/IOFyTY8RTri/ph8nWppdEubtNX2+Dn1GKOEECyfcntOv/i06PZxQwwktnNDDCSOcEP7m5MnR6Y8hSo9vswBEt81i2cvesL3sZW/YXvayN2wve5e2l71he9nL3rC97GVv2F72sjdsL3vZNgvY67ZZLHvpWavbZrHspWetbpvFspeetbptFsteetbqtlkse6Y2CwhRtVksIdkbtpe97A3by172hu1l79L2sjdsL3vZG7aXvewN28te9obtZS97wzbsddsslr30rNVts1j20rNWt81i2UvPWt02i2UvPWt12yyWvfSspWqzWEJMbRZLiKnNYgkxtVksIZa5dQoxtVksIaY2iyXE1GaxhJjaLJYQU5sFhKjaLJZQ8rJ/cd3/UuJqs1hKXBforeNaXG0WS4mrzWIpcbVZLCWuNoulxNVmsZS42iyWElebBZTI2iyWElebxVLiarNYSlxtFkvJ+ZS42iyWElebxVLiarNYSlxtFkuJq80CSmRtFkuJq81iKXG1WSwlrjaLpeR8SlxtFkuJq81iKXG1WSwlrjaLpcTVZvEVZeJqs/hy4mqz+HLiarP4ciK7LX45cbVZfDlxtVl8OfG9jGNrs/hy4mqz+HLiarP4cnJCJ7L9yVy0zeIQ17yK+xDXvIn7EBdts4C55k3cMNe8iRvmmjdxw9xlzTVv4oa5ZpsFzGUnqGibBcxlZ6homwXMZWeoaJsFzGVnqGibBcxlZ2hwmwUIPZwQ22YBwowmBLdZgFDCCRZOiG2zAMHDCTWc0MIJsW0WIIxwwowmBLdZgFDCCbFtFiC0cELsnYwHIbjNAoTwr1JwmwUII5wwownBbRYglHCChRP2cIKHE2o4oYUTYtssQBjhhNg2C/w5K7bNAoQSTrBwQmybBQgeTqjhhBZO6OGE2DYLEGY0IbjNAoQSTrBwwh5O8HBCDSe0cEJsmwUII5wQ22aBQxCxbRYglHCChRNi2yxA8HBCDSe0cEIPJ4xwQvibk+g2i31PaLM4IMJtFrDXvWEb9ro3bMNe94Zt2Lu0ve4N27DXvWEb9ro3bMNe94Zt2Ou2WRz2wm0WsJeetcJtFrCXnrXCbRawl561wm0WsJeetcJtFrCnarM4hLjaLCCke8M27HVv2Ia97g3bsHdpe90btmGve8M27HVv2Ia97g3bsNe9YfuwF26zgL30rBVus4C99KwVbrOAvfSsFW6zgL30rBVus4C99KzlarOAEFWbBYSo2iwgRNVmASGWuXUKUbVZQIiqzQJCVG0WEKJqs4AQVZvFIcTVZgGh5GX/6rp/KJG1WUCJ7AI9HNcia7OAElmbBZTI2iygRNZmASWyNgsokbVZQImszeJQYmuzgBJZmwWUyNosoETWZgEl51Mia7OAElmbBZTI2iygRNZmASWyNotDia3NAkpkbRZQImuzgBJZmwWUnE+JrM0CSmRtFlAia7OAElmbBZTI2ixWlImszWI5kbVZLCeyNovlRHZb/HIia7NYTmRtFsuJ72UcXZvFciJrs1hOZG0Wy8kJncj2J98S8sEHRDgfDHvdzBLsdTNLsNfNLMHepe11M0uw180swV43swR73cwS7HXzwYe9cD4Y9tKzVjgfDHvpWSucD4a99KwVzgfDXnrWCueDYU+VDz6EuPLBENLNLMFeN7MEe93MEuxd2l43swR73cwS7HUzS7DXzSzBXjezdNgL54NhLz1rhfPBsJeetcL5YNhLz1rhfDDspWetcD4Y9tKzlisfDCGqfDCEqPLBEKLKB0OIZW6dQlT5YAhR5YMhRJUPhhBVPhhCVPngQ4grHwyh5GX/KkAJJbJ8MJTIjiTiuBZZPhhKZPlgKJHlg6FElg+GElk+GEpk+WAokeWDDyW2fDCUyPLBUCLLB0OJLB8MJedTIssHQ4ksHwwlsnwwlMjywVAiywcfSmz5YCiR5YOhRJYPhhJZPhhKzqdElg+GElk+GEpk+WAokeWDoUSWD15RJrJ88HIiywcvJ7J88HLiy9/R5YOXE1k+eDnxvYyjywcvJ7J88HIiywcvJyd04tqf6tOj/X17GPX6p4f7+D7/ea6/+dx487n53nPX571/8Fx58zl787nLJTS27e/nxvbkOX/zufrmc+3N5/qbz403n5vvPXd9wHGcL0hHH9fPlTefszef2998zt98rr75XHvzueufl9Efz812/dx487n53nPXh3R+8Fx58zl787n9zecuf15meayjWa7X0fU5jx881958rr/53Hjzufnec9dHBX7wXHnxnF1//5q9+dz+5nPXPy/7Y71Pv17v18cDfvBce/O5/uZz483n5nvP9e3N565/Xtr5++Dm/l8P/ufffPikWAplT6F4CqWmUFoKpadQRgplZlCu/7L/cUrK2h8pa3+krP2RsvZHytofKWt/pKz9kbL2R8ranylrf6as/Zmy9mfK2p8pa3+mrP2ZsvZnytqfKWt/pqz9J39V/Dym5GAsB7PnYDwHU3MwLQfTczAjB5OzC5ScXaDk7AIlZxcoObtAydkFSs4uUHJ2gZKzC5ScXaDk7AKWswtYzi5gObuA5ewClrMLWM4uYDm7gOXsApazC1jOLrDn7AJ7zi6w5+wCe84usOfsAnvOLrDn7AJ7zi6w5+wCe84u4Dm7gOfsAp6zC3jOLuA5u4Dn7AKeswt4zi7gObuA5+wCNWcXqDm7QM3ZBWrOLlBzdoGaswvUnF2g5uwCNWcXqDm7QMvZBVrOLtBydoGWswu0nF2g5ewCLWcXaDm7QMvZBVrOLtBzdoGc84El54BgyTkhWHKOCJacM4Il55BgyTklWHKOCZacc4Il56BgyTkpWHKOCpacs4Il57BgyTktWHKOC5ac84Il58BgyTkxWHKODJacM4Ml59BgyTk1WHKODZacc4Ml5+BgyTk5WHKODpacs4OWc3bQcs4OWs7ZQcs5O2ib52BqDqblYHoOZuRgcnaBnLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4OWs7ZQcs5O2g5Zwct5+yg5ZwdtJyzg5ZzdtByzg5aztlByzk7aDlnBy3n7KDlnB20nLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4O2gdO29XtcZVMLf+4VbW1f1BGBuUDp9OqnZS9PqFYCmVPoXgKpaZQ/u2g+fNkf/fJD5wa+MHP9QcODfyEUlMoLYWSsqt94MBA9ceV1LXaE8rMoHzguMBPKCWFYimUD6z9fZyU/QnFUyg1hdJSKD2FMlIoM2NyfuCQwE8oKb+dzZTfzmbKb2cfOCDwE0rKb2cfOB7wE0pPoYwUSsba37cthVJSKJZC2VMonkKpKZSWQukplJFCSVn7JWXtl5S1X1LWfklZ+yVl7ZeUtV9S1n5JWfslZe2XlLVvKWvfUta+pax9S1n7lrL2LWXtW8rat/i13/66rjur/ii/KLX9V2/q/zJGfbxRGqN8/9FSxilv9o9XA3b6DDKfSeZz/avNbwoVNiFjE9rZhJxNqLIJNTYhtn26sG3UhW2nNrad2th2amPbqY1tpza2ndrYdmoL3KlPRk9g3N9P51b+/uzct/tf2EkmtG9sQoVNyNiEdjYhZxOqbEKNTaizCbHt1DvbTu1sO7Wz7dTOtlM7207tbDu1s+3UzrZTe+BOfTJGAmPGM+qWwCgJDEtg7AkMT2DUBEZLYCSs83b/Z7ds2/748FbskmIplPvf92L+Z/dtly8Q2sz4f+lbCiXlu9/9A5Q2T8pol5SaQmkplJ5CGSmUT6yXVv5Q+hVlbCmUkkKxFMqeQvEUSk2htBRKT6GMFMoH1n4p/vhw8cvfYeaWQikpFEuh7CkUT6HUFEpLofQUygfWful2Usa4pMwMypNW689j9ox/W5TNczA1B9NyMDMF84ETgT/ClByM5WAS1s24Plzbz8d6f/HS1bdHkNatfv/Rce4Vc/tzKvh4O/vGq9xxfQpXQXyqil+vYgnzImtusua7rLnLmldZ8yZrLjtBi+wILbIz1GRnqMnOUJOdoSY7Q012hprsDLWwGXoSejjh9kyqj7+pevVLwowm7Fs4oYQTLJxwe28bj8XjY78keDihhhNaOOHumq7b44VU3cYlYYQTZjTBt3BCCSfc/Wmt9vhotWtCCyfc/U63/XHqolW7ItQtnBD+Vaq31/T5krnWfkkY4YQZTWhbOKGEEyycsIcTPJxQwwktnPDBNd3aJWGEE+6v6XPn65eEfntNn7v3M0IJJ1g44e6abufJ1bbNS4KHE2o4oYUTejjh9pqe9UEo2yVhRhPGFk4o4QQLJ+zhBA8n1HBCCyf0DxIu1/QY4YT7a/pxkq7ZJWHeXtPn69BnhBJOsHDC7Tn96t+i08MJNZzQwgk9nDDCCeFvTp4cKP0Yoj45rVbafp7bPT71PaL49tj8ipdyBXlyWvHfUXyclP7qr0Cfu22oPjvrJGNv0va7tL1L21dp+yZt36Xth7T9VLY36Vlr0rPWpGetSc9ak561Jj1rTXrWmvSsNelZayyz9iG0s4zPUyh5In7werD67NSbjP0ube/S9lXavknbd2n7IW0/le19k7aXnrUuPWtdeta69Kx16Vnr0rPWpWetS89al561lWXWnkIs4/MUYpmIpxDLkDuFWObWKcQyik4hlulyCrEMjFOIZQacQizb+kOose3ULXnZv7qYuT5LlPyuUvIP9qvLxeqzrMSvfpW68SntfEotW+n7y7Drs6zE7yoNPqVJpzQ2PqX0fen7+57rs4DI7yrtfErOp1T5lBqfUudTGnxKk05pbnxK2bv3i3vB67Mo0O8q7XxKzqdU+ZQan1LnUxp8SpNO6dkd/4FO3xcCLKdC6GSETpXuhc6zXoLfdeqETnwv40p2MvBHTkbotBM6OaET2f7UqmibxSGueRX3Ia55E/chLtpmAXPNm7hhrnkTN8w1b+KGucuaa97EDXPNNguYy05Q0TYLmMvOUNE2C5jLzlDRNguYy85Q0TYLmMvO0OA2CxB6OCG2zQKEGU0IbrMAoYQTLJwQ22YBgocTajihhRNi2yxAGOGEGU0IbrMAoYQTYtssQGjhhNg7GQ9CcJsFCOFfpeA2CxBGOGFGE4LbLEAo4QQLJ+zhBA8n1HBCCyfEtlmAMMIJsW0W+HNWbJsFCCWcYOGE2DYLEDycUMMJLZzQwwmxbRYgzGhCcJsFCCWcYOGEPZzg4YQaTmjhhNg2CxBGOCG2zQKHIGLbLEAo4QQLJ8S2WYDg4YQaTmjhhB5OGOGE8Dcn0W0W3RPaLA6IcJsF7HVv2Ia97g3bsNe9YRv2Lm2ve8M27HVv2Ia97g3bsNe9YRv2um0Wh71wmwXspWetcJsF7KVnrXCbBeylZ61wmwXspWetcJsF7KnaLA4hrjYLCOnesA173Ru2Ya97wzbsXdpe94Zt2OvesA173Ru2Ya97wzbsdW/YPuyF2yxgLz1rhdssYC89a4XbLGAvPWuF2yxgLz1rhdssYC89a7naLCBE1WYBIao2CwhRtVlAiGVunUJUbRYQomqzgBBVmwWEqNosIETVZnEIcbVZQCh52b+67h9KZG0WUCK7QA/HtcjaLKBE1mYBJbI2CyiRtVlAiazNAkpkbRZQImuzOJTY2iygRNZmASWyNgsokbVZQMn5lMjaLKBE1mYBJbI2CyiRtVlAiazN4lBia7OAElmbBZTI2iygRNZmASXnUyJrs4ASWZsFlMjaLKBE1mYBJbI2ixVlImuzWE5kbRbLiazNYjmR3Ra/nMjaLJYTWZvFcuJ7GUfXZrGcyNoslhNZm8VyckInsv1plIR88AERzgfDXjezBHvdzBLsdTNLsHdpe93MEux1M0uw180swV43swR73XzwYS+cD4a99KwVzgfDXnrWCueDYS89a4XzwbCXnrXC+WDYU+WDDyGufDCEdDNLsNfNLMFeN7MEe5e2180swV43swR73cwS7HUzS7DXzSwd9sL5YNhLz1rhfDDspWetcD4Y9tKzVjgfDHvpWSucD4a99KzlygdDiCofDCGqfDCEqPLBEGKZW6cQVT4YQlT5YAhR5YMhRJUPhhBVPvgQ4soHQyh52b8KUEKJLB8MJbIjiTiuRZYPhhJZPhhKZPlgKJHlg6FElg+GElk+GEpk+eBDiS0fDCWyfDCUyPLBUCLLB0PJ+ZTI8sFQIssHQ4ksHwwlsnwwlMjywYcSWz4YSmT5YCiR5YOhRJYPhpLzKZHlg6FElg+GElk+GEpk+WAokeWDV5SJLB+8nMjywcuJLB+8nPjyd3T54OVElg9eTnwv4+jywcuJLB+8nMjywcvJCZ3Y9qf5190eZ98eOm4vbMa5gc/N/3zU3vnr+PxrqIpPVfGyyZoXWXOTNd9lzV3WvMqaN1lz2QlaZEdokZ2hJjtDTXaGmuwMNdkZarIz1GRnqIXN0JPQwwm3Z1J9nNTx6peEGU3Yt3BCCSdYOOH23jYei8fHfknwcEINJ7Rwwt01Xbf+90frNi4JI5wwowm+hRNKOOHuT2u1x0erXRNaOOHud7rtj6NurdoVoW7hhPCvUr29pv38War9kjDCCTOa0LZwQgknWDhhDyd4OKGGE1o44YNrurVLwggn3F/T587XLwn99po+d+9nhBJOsHDC3TXdzjxE2+YlwcMJNZzQwgk9nHB7Tc/H5c+tbJeEGU0YWzihhBMsnLCHEzycUMMJLZzQP0i4XNNjhBPur+nHiZZml4R5e02fr0OfEUo4wcIJt+f0q3+LTg8n1HBCCyf0cMIIJ4S/OXlydPpjiDkT2izmVG6zmFO5zWJO5TaLOZXbLOZUbrOYU7nNYk7lNos5ldss5lRus5hTuc1iTuU2izmV2yzmVG6zmFO5zWJO5TaLOZXbLOZUbrOYU7nNYk7lNos5ydos5iRrs5hTuc1iTuU2izmV2yzmVG6zmFO5zWJO5TaLOZXbLOZUbrOYU7nNYk7lNos5ldssYC89a4XbLGAvPWuF2yzmVG6zgL30rBVus5hTuc1iTrI2CwhRtVlAiKrNAkJUbRYQYplbpxBVm8WcZG0Wc5K1WcxJ1mYxJ1mbxZxkbRZz0rVZzEnXZjEnXZvFnHRtFnPStVnMSddmMSddm8WcdG0Wc9K1WcxJ12YxJ12bxZx0bRZz0rVZzEnXZjEnXZvFnHRtFnPStVnMSddmMSddm8WcdG0Wc9K1WcxJ12YxJ12bxZx0bRZz0rVZzEnXZjEnXZvFnHRtFnPStVnMSddmMSdfm8VyImuzWE5kbRbLiey2+OVE1maxnMjaLJYT38s4ujaL5UTWZrGcyNoslpMTOnHtT21rmm0WEJe8ihvikjdxQ1yzzWKZS97Evcwlb+Je5pI3cS9zlzWXvIl7mUu2WSxz2Qmq2WaxzGVnqGabxTKXnaGabRbLXHaGarZZLHPZGRrbZrEIPZwQ2maxCDOaENtmsQglnGDhhNA2i0XwcEINJ7RwQmibxSKMcMKMJsS2WSxCCSeEtlksQgsnhN7JCEJsm8UihH+VYtssFmGEE2Y0IbbNYhFKOMHCCXs4wcMJNZzQwgmhbRaLMMIJoW0W689ZoW0Wi1DCCRZOCG2zWAQPJ9RwQgsn9HBCaJvFIsxoQmybxSKUcIKFE/ZwgocTajihhRNC2ywWYYQTQtss1iGI0DaLRSjhBAsnhLZZLIKHE2o4oYUTejhhhBPC35wEt1m0UuPbLADRbbNY9rI3bC972Ru2l73sDdvL3qXtZW/YXvayN2wve9kbtpe97A3by162zQL2um0Wy1561uq2WSx76Vmr22ax7KVnrW6bxbKXnrW6bRbLnqnNAkJUbRZLSPaG7WUve8P2spe9YXvZu7S97A3by172hu1lL3vD9rKXvWF72cvesA173TaLZS89a3XbLJa99KzVbbNY9tKzVrfNYtlLz1rdNotlLz1rqdoslhBTm8USYmqzWEJMbRZLiGVunUJMbRZLiKnNYgkxtVksIaY2iyXE1GYBIao2iyWUvOxfXPe/lLjaLJYS1wV667gWV5vFUuJqs1hKXG0WS4mrzWIpcbVZLCWuNoulxNVmASWyNoulxNVmsZS42iyWElebxVJyPiWuNoulxNVmsZS42iyWElebxVLiarOAElmbxVLiarNYSlxtFkuJq81iKTmfElebxVLiarNYSlxtFkuJq81iKXG1WXxFmbjaLL6cuNosvpy42iy+nMhui19OXG0WX05cbRZfTnwv49jaLL6cuNosvpy42iy+nJzQiWx/MkvIBx8Q4Xww7HUzS7DXzSzBXjezBHuXttfNLMFeN7MEe93MEux1M0uw180HH/bC+WDYS89a4Xww7KVnrXA+GPbSs1Y4Hwx76VkrnA+GPVU++BDiygdDSDezBHvdzBLsdTNLsHdpe93MEux1M0uw180swV43swR73czSYS+cD4a99KwVzgfDXnrWCueDYS89a4XzwbCXnrXC+WDYS89arnwwhKjywRCiygdDiCofDCGWuXUKUeWDIUSVD4YQVT4YQlT5YAhR5YMPIa58MISSl/2rACWUyPLBUCI7kojjWmT5YCiR5YOhRJYPhhJZPhhKZPlgKJHlg6FElg8+lNjywVAiywdDiSwfDCWyfDCUnE+JLB8MJbJ8MJTI8sFQIssHQ4ksH3woseWDoUSWD4YSWT4YSmT5YCg5nxJZPhhKZPlgKJHlg6FElg+GElk+eEWZyPLBy4ksH7ycyPLBy4kvf0eXD15OZPng5cT3Mo4uH7ycyPLBy4ksH7ycnNCJbH/a/Uk+uHp/PFdb/x7ywQPjh88g85lkPk+i1r8oVNiEjE1oZxNyNqHKJtTYhNj26cK2URe2ndrYdmpj26mNbac2tp3a2HZqY9upLXCnPhk9gXF/P/3g6VMITTKhfWMTKmxCxia0swk5m1BlE2psQp1NiG2n3tl2amfbqZ1tp3a2ndrZdmpn26mdbad2tp3aA3fqkzESGDOeUbcERklgWAJjT2B4AqMmMFoCI2Gdt/s/u68O7YNiKZT73/cf/CGvzYz/l76lUFK++90/QPn+5DwoNYXSUig9hTJSKJ9YL9+fvMWfs7cUSkmhWAplT6F4CqWmUFoKpadQRgrlA2v/xVFSHB3ZUiglhWIplD2F4imUmkJpKZSeQvnA2n9xSBiUmUF5doz845g9498WZfMcTM3BtBzMTMF84ETgjzAlB2M5mIR1064P1/bzsd5fvHT17XHW1+3FUd9x7hVz8//7x9vZN17ltutTuAriU1X8ehVLmBdZc5M132XNXda8ypo3WXPZCVpkR2iRnaEmO0NNdoaa7Aw12RlqsjPUZGeohc3Qk9DDCbdnUn38TdWrXxJmNGHfwgklnGDhhNt723gsHh/7JcHDCTWc0MIJd9d03R4vpOo2LgkjnDCjCb6FE0o44e5Pa7XHR6tdE1o44e53uu2PUxet2hWhbuGE8K9Svb2mz5fMtfZLwggnzGhC28IJJZxg4YQ9nODhhBpOaOGED67p1i4JI5xwf02fO1+/JPTba/rcvZ8RSjjBwgl313Q7T662bV4SPJxQwwktnNDDCbfX9KwPQtkuCTOaMLZwQgknWDhhDyd4OKGGE1o4oX+QcLmmxwgn3F/Tj5N0zS4J8/aaPl+HPiOUcIKFE27P6Vf/Fp0eTqjhhBZO6OGEEU4If3Py5EDpxxD+5LTav7yccntsfsVLuYKU5OuVP3jbkD876yRjb9L2u7S9S9tXafsmbd+l7Ye0/VS2N+lZa9Kz1qRnrUnPWpOetSY9a0161pr0rDXpWWsss/YhtLOMz1MoeSJ+8Howf3bqTcZ+l7Z3afsqbd+k7bu0/ZC2n8r2vknbS89al561Lj1rXXrWuvSsdelZ69Kz1qVnrUvP2soya08hlvF5CrFMxFOIZcidQixz6xRiGUWnEMt0OYVYBsYpxDIDTiGWbf0h1Nh26pa87F9dzOzPEiW/q0TWTu3PshK/+lXqxqe08yllN8K/uAzbn2Ulfldp8ClNOqWx8Sml70vf3/fszwIiv6u08yk5n1LlU2p8Sp1PafApTTqlufEpZe/eL+4F92dRoN9V2vmUnE+p8ik1PqXOpzT4lCad0rM7/gOdvi8EWE6F0MkInSrdC51nvQS/69QJnfhexpXsZOCPnIzQaSd0ckInsv2p7qJtFoe45lXch7jmTdyHuGibBcw1b+KGueZN3DDXvIkb5i5rrnkTN8w12yxgLjtBRdssYC47Q0XbLGAuO0NF2yxgLjtDRdssYC47Q4PbLEDo4YTYNgsQZjQhuM0ChBJOsHBCbJsFCB5OqOGEFk6IbbMAYYQTZjQhuM0ChBJOiG2zAKGFE2LvZDwIwW0WIIR/lYLbLEAY4YQZTQhuswChhBMsnLCHEzycUMMJLZwQ22YBwggnxLZZ4M9ZsW0WIJRwgoUTYtssQPBwQg0ntHBCDyfEtlmAMKMJwW0WIJRwgoUT9nCChxNqOKGFE2LbLEAY4YTYNgscgohtswChhBMsnBDbZgGChxNqOKGFE3o4YYQTwt+cRLdZNEtoszggwm0WsNe9YRv2ujdsw173hm3Yu7S97g3bsNe9YRv2ujdsw173hm3Y67ZZHPbCbRawl561wm0WsJeetcJtFrCXnrXCbRawl561wm0WsKdqsziEuNosIKR7wzbsdW/Yhr3uDduwd2l73Ru2Ya97wzbsdW/Yhr3uDduw171h+7AXbrOAvfSsFW6zgL30rBVus4C99KwVbrOAvfSsFW6zgL30rOVqs4AQVZsFhKjaLCBE1WYBIZa5dQpRtVlAiKrNAkJUbRYQomqzgBBVm8UhxNVmAaHkZf/qun8okbVZQInsAj0c1yJrs4ASWZsFlMjaLKBE1mYBJbI2CyiRtVlAiazN4lBia7OAElmbBZTI2iygRNZmASXnUyJrs4ASWZsFlMjaLKBE1mYBJbI2i0OJrc0CSmRtFlAia7OAElmbBZScT4mszQJKZG0WUCJrs4ASWZsFlMjaLFaUiazNYjmRtVksJ7I2i+VEdlv8ciJrs1hOZG0Wy4nvZRxdm8VyImuzWE5kbRbLyQmd2PanmZEPntL54CmdD57S+eApnQ+e0vngKZ0PntL54CmdD57S+eApnQ+e0vngKZ0PntL54CmdD57S+eApnQ+e0vngKZ0PntL54MmWD55s+eApnQ+e0vngKZ0PntL54CmdD57S+eApnQ+e0vngKZ0PntL54CmdD57S+eApnQ+e0vngKZ0PntL54CmdD57S+eApnQ+ebPngyZYPnmz54MmWD55s+eDJlg+ebPngyZYPnmz54MmWD55s+eDJlw+efPngyZcPnnz54MmXD558+eDJlw+efPngyZcPnnz54MmXD558+eDJlw+efPngyZcPnnz54MmXD558+eDJlw+efPngyZcPnnz54MmXD558+eDJlw+efPngyZcPnnz54MmXD558+eBJmA+ehPngSZgPnoT54EmYD56E+eBJmA+ehPngSZgPnoT54EmYD558+eDe/7rb4+zbQ8fthc04N/C5+Z+P2ht/HT/Eh6r4VBUvm6x5kTU3WfNd1txlzauseZM1l52gRXaEFtkZarIz1GRnqMnOUJOdoSY7Q012hlrYDD0JPZxweybVx0kdr35JmNGEfQsnlHCChRNu723jsXh87JcEDyfUcEILJ9xd03Xrf3+0buOSMMIJM5rgWzihhBPu/rRWe3y02jWhhRPufqfb/jjq1qpdEeoWTgj/KtXba9rPn6XaLwkjnDCjCW0LJ5RwgoUT9nCChxNqOKGFEz64plu7JIxwwv01fe58/ZLQb6/pc/d+RijhBAsn3F3T7cxDtG1eEjycUMMJLZzQwwm31/R8XP7cynZJmNGEsYUTSjjBwgl7OMHDCTWc0MIJ/YOEyzU9Rjjh/pp+nGhpdkmYt9f0+Tr0GaGEEyyccHtOv/q36PRwQg0ntHBCDyeMcEL4m5MnR6c/hhg9oc1idOU2i9GV2yxGV26zGF25zWJ05TaL0ZXbLEZXbrMYXbnNYnTlNovRldssRldusxhduc1idOU2i9GV2yxGV26zGF25zWJ05TaL0ZXbLEZXbrMYnazNYnSyNovRldssRldusxhduc1idOU2i9GV2yxGV26zGF25zWJ05TaL0ZXbLEZXbrMYXbnNAvbSs1a4zQL20rNWuM1idOU2C9hLz1rhNovRldssRidrs4AQVZsFhKjaLCBE1WYBIZa5dQpRtVmMTtZmMTpZm8XoZG0Wo5O1WYxO1mYxOl2bxeh0bRaj07VZjE7XZjE6XZvF6HRtFqPTtVmMTtdmMTpdm8XodG0Wo9O1WYxO12YxOl2bxeh0bRaj07VZjE7XZjE6XZvF6HRtFqPTtVmMTtdmMTpdm8XodG0Wo9O1WYxO12YxOl2bxeh0bRaj07VZjE7XZjE6XZvF6HRtFqPztVksJ7I2i+VE1maxnMhui19OZG0Wy4mszWI58b2Mo2uzWE5kbRbLiazNYjk5oRPZ/jRdtM3iENe8ivsQ17yJ+xAXbbOAueZN3DDXvIkb5po3ccPcZc01b+KGuWabBcxlJ6homwXMZWeoaJsFzGVnqGibBcxlZ6homwXMZWdocJsFCD2cENtmAcKMJgS3WYBQwgkWTohtswDBwwk1nNDCCbFtFiCMcMKMJgS3WYBQwgmxbRYgtHBC7J2MByG4zQKE8K9ScJsFCCOcMKMJwW0WIJRwgoUT9nCChxNqOKGFE2LbLEAY4YTYNgv8OSu2zQKEEk6wcEJsmwUIHk6o4YQWTujhhNg2CxBmNCG4zQKEEk6wcMIeTvBwQg0ntHBCbJsFCCOcENtmgUMQsW0WIJRwgoUTYtssQPBwQg0ntHBCDyeMcEL4m5PgNou+7fFtFoDotlkse9kbtpe97A3by172hu1l79L2sjdsL3vZG7aXvewN28te9obtZS/bZgF73TaLZS89a3XbLJa99KzVbbNY9tKzVrfNYtlLz1rdNotlz9RmASGqNoslJHvD9rKXvWF72cvesL3sXdpe9obtZS97w/ayl71he9nL3rC97GVv2Ia9bpvFspeetbptFsteetbqtlkse+lZq9tmseylZ61um8Wyl561VG0WS4ipzWIJMbVZLCGmNoslxDK3TiGmNoslxNRmsYSY2iyWEFObxRJiarOAEFWbxRJKXvYvrvtfSlxtFkuJ6wK9dVyLq81iKXG1WSwlrjaLpcTVZrGUuNoslhJXm8VS4mqzgBJZm8VS4mqzWEpcbRZLiavNYik5nxJXm8VS4mqzWEpcbRZLiavNYilxtVlAiazNYilxtVksJa42i6XE1WaxlJxPiavNYilxtVksJa42i6XE1WaxlLjaLL6iTFxtFl9OXG0WX05cbRZfTly3xX85cbVZfDlxtVl8OfG9jGNrs/hy4mqz+HLiarP4cnJCJ7L9qWwJ+eADIpwPhr1uZgn2upkl2OtmlmDv0va6mSXY62aWYK+bWYK9bmYJ9rr54MNeOB8Me+lZK5wPhr30rBXOB8NeetYK54NhLz1rhfPBsKfKBx9CXPlgCOlmlmCvm1mCvW5mCfYuba+bWYK9bmYJ9rqZJdjrZpZgr5tZOuyF88Gwl561wvlg2EvPWuF8MOylZ61wPhj20rNWOB8Me+lZy5UPhhBVPhhCVPlgCFHlgyHEMrdOIap8MISo8sEQosoHQ4gqHwwhqnzwIcSVD4ZQ8rJ/FaCEElk+GEpkRxJxXIssHwwlsnwwlMjywVAiywdDiSwfDCWyfDCUyPLBhxJbPhhKZPlgKJHlg6FElg+GkvMpkeWDoUSWD4YSWT4YSmT5YCiR5YMPJbZ8MJTI8sFQIssHQ4ksHwwl51MiywdDiSwfDCWyfDCUyPLBUCLLB68oE1k+eDmR5YOXE1k+eDnx5e/o8sHLiSwfvJz4XsbR5YOXE1k+eDmR5YOXkxM6Ue1P3bb65Gh/3x5Gvf7p4T6+z3+e628+N958br733PV57x88V958zt587nIJjW37+7mxPXnO33yuvvlce/O5/uZz483n5nvPXR9wHOcL0tHH9XPlzefszef2N5/zN5+rbz7X3nzu+udl9Mdzs10/N958br733PUhnR88V958zt58bn/zucufl1ke62iW63V0fc7jB8+1N5/rbz433nxuvvfc9VGBHzxXXjxn19+/Zm8+t7/53PXPy/5Y79Ov1/v18YAfPNfefK6/+dx487n53nN9e/O565+Xdv4+uLn/14P/+TcfPimWQtlTKJ5CqSmUlkLpKZSRQpkZlOu/7H+ckrL2R8raHylrf6Ss/ZGy9kfK2h8pa3+krP2RsvZnytqfKWt/pqz9mbL2Z8ranylrf6as/Zmy9mfK2p8pa//JXxU/jyk5GMvB7DkYz8HUHEzLwfQczMjB5OwCJWcXKDm7QMnZBUrOLlBydoGSswuUnF2g5OwCJWcXKDm7gOXsApazC1jOLmA5u4Dl7AKWswtYzi5gObuA5ewClrML7Dm7wJ6zC+w5u8CeswvsObvAnrML7Dm7wJ6zC+w5u8Ceswt4zi7gObuA5+wCnrMLeM4u4Dm7gOfsAp6zC3jOLuA5u0DN2QVqzi5Qc3aBmrML1JxdoObsAjVnF6g5u0DN2QVqzi7QcnaBlrMLtJxdoOXsAi1nF2g5u0DL2QVazi7QcnaBlrML9JxdIOd8YMk5IFhyTgiWnCOCJeeMYMk5JFhyTgmWnGOCJeecYMk5KFhyTgqWnKOCJeesYMk5LFhyTguWnOOCJee8YMk5MFhyTgyWnCODJefMYMk5NFhyTg2WnGODJefcYMk5OFhyTg6WnKODJefsoOWcHbScs4OWc3bQcs4O2uY5mJqDaTmYnoMZOZicXSDn7KDlnB20nLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4OWs7ZQcs5O2g5Zwct5+yg5ZwdtJyzg5ZzdtByzg5aztlByzk7aDlnBy3n7KDlnB20nLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4P2gdN2dXtcJVPLP25Vbe0flJFB+cDptGonZa9PKJZC2VMonkKpKZR/O2j+PNnfffIDpwZ+8HP9gUMDP6HUFEpLoaTsah84MFD9cSV1rfaEMjMoHzgu8BNKSaFYCuUDa38fJ2V/QvEUSk2htBRKT6GMFMrMmJwfOCTwE0rKb2cz5bezmfLb2QcOCPyEkvLb2QeOB/yE0lMoI4WSsfb3bUuhlBSKpVD2FIqnUGoKpaVQegplpFBS1n5JWfslZe2XlLVfUtZ+SVn7JWXtl5S1X1LWfklZ+yVl7VvK2reUtW8pa99S1r6lrH1LWfuWsvYtfO2X8td13Vn1R/lFqe2/elP/lzHq443SGOX7j5YyTnmzf7wasNNnkPlMMp/rX21+U6iwCRmb0M4m5GxClU2osQmx7dOFbaMubDu1se3UxrZTG9tObWw7tbHt1Ma2U1vgTn0yegLj/n46t/L3Z+e+3f/CTjKhfWMTKmxCxia0swk5m1BlE2psQp1NiG2n3tl2amfbqZ1tp3a2ndrZdmpn26mdbad2tp3aA3fqkzESGDOeUbcERklgWAJjT2B4AqMmMFoCI2Gdt/s/u2Xb9seHt2KXFEuh3P++F/M/u2+7fIHQZsb/S99SKCnf/e4foLR5Uka7pNQUSkuh9BTKSKF8Yr208ofSryhjS6GUFIqlUPYUiqdQagqlpVB6CmWkUD6w9kvxx4eLX/4OM7cUSkmhWAplT6F4CqWmUFoKpadQPrD2S7eTMsYlZWZQnrRafx6zZ/zbomyeg6k5mJaDmSmYD5wI/BGm5GAsB5Owbvbrw7X9fKz3Fy9dfXsEad3q9x8d514xtz+ngo+3s2+8yt2vT+EqiE9V8etVLGFeZM1N1nyXNXdZ8ypr3mTNZSdokR2hRXaGmuwMNdkZarIz1GRnqMnOUJOdoRY2Q09CDyfcnkn18TdVr35JmNGEfQsnlHCChRNu723jsXh87JcEDyfUcEILJ9xd03V7vJCq27gkjHDCjCb4Fk4o4YS7P63VHh+tdk1o4YS73+m2P05dtGpXhLqFE8K/SvX2mj5fMtfaLwkjnDCjCW0LJ5RwgoUT9nCChxNqOKGFEz64plu7JIxwwv01fe58/ZLQb6/pc/d+RijhBAsn3F3T7Ty52rZ5SfBwQg0ntHBCDyfcXtOzPghluyTMaMLYwgklnGDhhD2c4OGEGk5o4YT+QcLlmh4jnHB/TT9O0jW7JMzba/p8HfqMUMIJFk64Padf/Vt0ejihhhNaOKGHE0Y4IfzNyZMDpR9D2JPTaqXt57ndVl/8yaX49tj8ipdyBXlyWvHfUXyclP7qr0Cfu23Inp11krE3aftd2t6l7au0fZO279L2Q9p+Ktub9Kw16Vlr0rPWpGetSc9ak561Jj1rTXrWmvSsNZZZ+xDaWcbnKZQ8ET94PZg9O/UmY79L27u0fZW2b9L2Xdp+SNtPZXvfpO2lZ61Lz1qXnrUuPWtdeta69Kx16Vnr0rPWpWdtZZm1pxDL+DyFWCbiKcQy5E4hlrl1CrGMolOIZbqcQiwD4xRimQGnEMu2/hBqbDt1S172ry5mtmeJkt9VSv7BfnW5mD3LSvzqV6kbn9LOp9Sylb6/DNueZSV+V2nwKU06pbHxKaXvS9/f92zPAiK/q7TzKTmfUuVTanxKnU9p8ClNOqW58Sll794v7gW3Z1Gg31Xa+ZScT6nyKTU+pc6nNPiUJp3Sszv+A52+LwRYToXQyQidKt0LnWe9BL/r1Amd+F7Glexk4I+cjNBpJ3RyQiey/WnfRNssDnHNq7gPcc2buA9x0TYLmGvexA1zzZu4Ya55EzfMXdZc8yZumGu2WcBcdoKKtlnAXHaGirZZwFx2hoq2WcBcdoaKtlnAXHaGBrdZgNDDCbFtFiDMaEJwmwUIJZxg4YTYNgsQPJxQwwktnBDbZgHCCCfMaEJwmwUIJZwQ22YBQgsnxN7JeBCC2yxACP8qBbdZgDDCCTOaENxmAUIJJ1g4YQ8neDihhhNaOCG2zQKEEU6IbbPAn7Ni2yxAKOEECyfEtlmA4OGEGk5o4YQeTohtswBhRhOC2yxAKOEECyfs4QQPJ9RwQgsnxLZZgDDCCbFtFjgEEdtmAUIJJ1g4IbbNAgQPJ9RwQgsn9HDCCCeEvzmJbrPYZ0KbxQERbrOAve4N27DXvWEb9ro3bMPepe11b9iGve4N27DXvWEb9ro3bMNet83isBdus4C99KwVbrOAvfSsFW6zgL30rBVus4C99KwVbrOAPVWbxSHE1WYBId0btmGve8M27HVv2Ia9S9vr3rANe90btmGve8M27HVv2Ia97g3bh71wmwXspWetcJsF7KVnrXCbBeylZ61wmwXspWetcJsF7KVnLVebBYSo2iwgRNVmASGqNgsIscytU4iqzQJCVG0WEKJqs4AQVZsFhKjaLA4hrjYLCCUv+1fX/UOJrM0CSmQX6OG4FlmbBZTI2iygRNZmASWyNgsokbVZQImszQJKZG0WhxJbmwWUyNosoETWZgElsjYLKDmfElmbBZTI2iygRNZmASWyNgsokbVZHEpsbRZQImuzgBJZmwWUyNosoOR8SmRtFlAia7OAElmbBZTI2iygRNZmsaJMZG0Wy4mszWI5kbVZLCe22+InX5vFciJrs1hOfC/j6NoslhNZm8VyImuzWE5O6ES2P3lLyAcfEOF8MOx1M0uw180swV43swR7l7bXzSzBXjezBHvdzBLsdTNLsNfNBx/2wvlg2EvPWuF8MOylZ61wPhj20rNWOB8Me+lZK5wPhj1VPvgQ4soHQ0g3swR73cwS7HUzS7B3aXvdzBLsdTNLsNfNLMFeN7MEe93M0mEvnA+GvfSsFc4Hw1561grng2EvPWuF88Gwl561wvlg2EvPWq58MISo8sEQosoHQ4gqHwwhlrl1ClHlgyFElQ+GEFU+GEJU+WAIUeWDDyGufDCEkpf9qwAllMjywVAiO5KI41pk+WAokeWDoUSWD4YSWT4YSmT5YCiR5YOhRJYPPpTY8sFQIssHQ4ksHwwlsnwwlJxPiSwfDCWyfDCUyPLBUCLLB0OJLB98KLHlg6FElg+GElk+GEpk+WAoOZ8SWT4YSmT5YCiR5YOhRJYPhhJZPnhFmcjywcuJLB+8nMjywcuJL39Hlw9eTmT54OXE9zKOLh+8nMjywcuJLB+8nJzQiWx/qv7X3R5n3x46bi9sxrmBz83/fNTe+Ov4IT5UxaeqeNlkzYusucma77LmLmteZc2brLnsBC2yI7TIzlCTnaEmO0NNdoaa7Aw12RlqsjPUwmboSejhhNszqT5O6nj1S8KMJuxbOKGEEyyccHtvG4/F42O/JHg4oYYTWjjh7pquW//7o3Ubl4QRTpjRBN/CCSWccPentdrjo9WuCS2ccPc73fbHUbdW7YpQt3BC+Fep3l7Tfv4s1X5JGOGEGU1oWzihhBMsnLCHEzycUMMJLZzwwTXd2iVhhBPur+lz5+uXhH57TZ+79zNCCSdYOOHumm5nHqJt85Lg4YQaTmjhhB5OuL2m5+Py51a2S8KMJowtnFDCCRZO2MMJHk6o4YQWTugfJFyu6THCCffX9ONES7NLwry9ps/Xoc8IJZxg4YTbc/rVv0WnhxNqOKGFE3o4YYQTwt+cPDk6/TFE84Q2i+bKbRbNldssmiu3WTRXbrNortxm0Vy5zaK5cptFc+U2i+bKbRbNldssmiu3WTRXbrNortxm0Vy5zaK5cptFc+U2i+bKbRbNldssmiu3WTQna7NoTtZm0Vy5zaK5cptFc+U2i+bKbRbNldssmiu3WTRXbrNortxm0Vy5zaK5cptFc+U2C9hLz1rhNgvYS89a4TaL5sptFrCXnrXCbRbNldssmpO1WUCIqs0CQlRtFhCiarOAEMvcOoWo2iyak7VZNCdrs2hO1mbRnKzNojlZm0VzujaL5nRtFs3p2iya07VZNKdrs2hO12bRnK7Nojldm0VzujaL5nRtFs3p2iya07VZNKdrs2hO12bRnK7Nojldm0VzujaL5nRtFs3p2iya07VZNKdrs2hO12bRnK7Nojldm0VzujaL5nRtFs3p2iya07VZNKdrs2hO12bRnK/NYjmRtVksJ7I2i+VEdlv8ciJrs1hOZG0Wy4nvZRxdm8VyImuzWE5kbRbLyQmdyPanXkTbLA5xzau4D3HNm7gPcdE2C5hr3sQNc82buGGueRM3zF3WXPMmbphrtlnAXHaCirZZwFx2hoq2WcBcdoaKtlnAXHaGirZZwFx2hga3WYDQwwmxbRYgzGhCcJsFCCWcYOGE2DYLEDycUMMJLZwQ22YBwggnzGhCcJsFCCWcENtmAUILJ8TeyXgQgtssQAj/KgW3WYAwwgkzmhDcZgFCCSdYOGEPJ3g4oYYTWjghts0ChBFOiG2zwJ+zYtssQCjhBAsnxLZZgODhhBpOaOGEHk6IbbMAYUYTgtssQCjhBAsn7OEEDyfUcEILJ8S2WYAwwgmxbRY4BBHbZgFCCSdYOCG2zQIEDyfUcEILJ/RwwggnhL85iW6zGFtCm8UBEW6zgL3uDduw171hG/a6N2zD3qXtdW/Yhr3uDduw171hG/a6N2zDXrfN4rAXbrOAvfSsFW6zgL30rBVus4C99KwVbrOAvfSsFW6zgD1Vm8UhxNVmASHdG7Zhr3vDNux1b9iGvUvb696wDXvdG7Zhr3vDNux1b9iGve4N24e9cJsF7KVnrXCbBeylZ61wmwXspWetcJsF7KVnrXCbBeylZy1XmwWEqNosIETVZgEhqjYLCLHMrVOIqs0CQlRtFhCiarOAEFWbBYSo2iwOIa42CwglL/tX1/1DiazNAkpkF+jhuBZZmwWUyNosoETWZgElsjYLKJG1WUCJrM0CSmRtFocSW5sFlMjaLKBE1mYBJbI2Cyg5nxJZmwWUyNosoETWZgElsjYLKJG1WRxKbG0WUCJrs4ASWZsFlMjaLKDkfEpkbRZQImuzgBJZmwWUyNosoETWZrGiTGRtFsuJrM1iOZG1WSwnstvilxNZm8VyImuzWE58L+Po2iyWE1mbxXIia7NYTk7oxLY/9Yx8cJfOB3fpfHCXzgd36Xxwl84Hd+l8cJfOB3fpfHCXzgd36Xxwl84Hd+l8cJfOB3fpfHCXzgd36Xxwl84Hd+l8cJfOB3e2fHBnywd36Xxwl84Hd+l8cJfOB3fpfHCXzgd36Xxwl84Hd+l8cJfOB3fpfHCXzgd36Xxwl84Hd+l8cJfOB3fpfHCXzgd36XxwZ8sHd7Z8cGfLB3e2fHBnywd3tnxwZ8sHd7Z8cGfLB3e2fHBnywd3vnxw58sHd758cOfLB3e+fHDnywd3vnxw58sHd758cOfLB3e+fHDnywd3vnxw58sHd758cOfLB3e+fHDnywd3vnxw58sHd758cOfLB3e+fHDnywd3vnxw58sHd758cOfLB3e+fHDnywd3wnxwJ8wHd8J8cCfMB3fCfHAnzAd3wnxwJ8wHd8J8cCfMB3fCfHDnywfP+SQfXL0/nqutfw/54IHxw2eQ+UwynydR618UKmxCxia0swk5m1BlE2psQmz7dGHbqAvbTm1sO7Wx7dTGtlMb205tbDu1se3UFrhTn4yewLi/n37w9CmEJpnQvrEJFTYhYxPa2YScTaiyCTU2oc4mxLZT72w7tbPt1M62UzvbTu1sO7Wz7dTOtlM7207tgTv1yRgJjBnPqFsCoyQwLIGxJzA8gVETGC2BkbDO2/2f3VeH9kGxFMr97/sP/pDXZsb/S99SKCnf/e4foHx/ch6UmkJpKZSeQhkplE+sl+9P3uLP2VsKpaRQLIWyp1A8hVJTKC2F0lMoI4XygbX/4igpjo5sKZSSQrEUyp5C8RRKTaG0FEpPoXxg7b84JAzKzKA8O0b+ccye8W+LsnkOpuZgWg5mpmA+cCLwR5iSg7EcTPi62bdyfbi2n4/1/uKlq2+Ps75uL476jnOvmJv/3z/ezv7rV7kQH6riU1X8ehVLmBdZc5M132XNXda8ypo3WXPZCVpkR2iRnaEmO0NNdoaa7Aw12RlqsjPUZGeohc3Qk9DDCbdnUn38TdWrXxJmNGHfwgklnGDhhNt723gsHh/7JcHDCTWc0MIJd9d03R4vpOo2LgkjnDCjCb6FE0o44e5Pa7XHR6tdE1o44e53uu2PUxet2hWhbuGE8K9Svb2mz5fMtfZLwggnzGhC28IJJZxg4YQ9nODhhBpOaOGED67p1i4JI5xwf02fO1+/JPTba/rcvZ8RSjjBwgl313Q7T662bV4SPJxQwwktnNDDCbfX9KwPQtkuCTOaMLZwQgknWDhhDyd4OKGGE1o4oX+QcLmmxwgn3F/Tj5N0zS4J8/aaPl+HPiOUcIKFE27P6Vf/Fp0eTqjhhBZO6OGEEU4If3Py5EDpxxDlyWm1f3k55fbY/IqXcgUpydcrf+62oWVfpO1N2n6Xtndp+ypt36Ttu7T9kLafyvYmPWtNetaa9Kw16Vlr0rPWpGetSc9ak561Jj1rjWXWPoR2lvF5CiVPxM9dD7bsTdp+l7Z3afsqbd+k7bu0/ZC2n8r2vknbS89al561Lj1rXXrWuvSsdelZ69Kz1qVnrUvP2soya08hlvF5CrFMxFOIZcidQixz6xRiGUWnEMt0OYVYBsYpxDIDTiGWbf0h1Nh26pa87F9czLyUKp8SVzv1Oq5V6L5K3fiUdj6l7Eb47y/DXkqdT2nwKU06pbHxKaXvS9/e97yUjE9p51NyPqXKp9T4lDqf0uBTmnRKc+NTyt69v78XfCkZn9LOp+R8SpVPqfEpdT6lwac06ZSe3fEf6PRtIcCXUyF0MkKnSvdC51kvwe86dUInvpdxJTsZ+CMnI3TaCZ2c0IltfxqibRaHuOZV3Ie45k3ch7homwXMNW/ihrnmTdww17yJG+Yua655EzfMNdssYC47QUXbLGAuO0NF2yxgLjtDRdssYC47Q0XbLGAuO0OD2yxA6OGE2DYLEGY0IbjNAoQSTrBwQmybBQgeTqjhhBZOiG2zAGGEE2Y0IbjNAoQSTohtswChhRNi72Q8CMFtFiCEf5WC2yxAGOGEGU0IbrMAoYQTLJywhxM8nFDDCS2cENtmAcIIJ8S2WeDPWbFtFiCUcIKFE2LbLEDwcEINJ7RwQg8nxLZZgDCjCcFtFiCUcIKFE/ZwgocTajihhRNi2yxAGOGE2DYLHIKIbbMAoYQTLJwQ22YBgocTajihhRN6OGGEE8LfnES3WVhPaLM4IMJtFrDXvWEb9ro3bMNe94Zt2Lu0ve4N27DXvWEb9ro3bMNe94Zt2Ou2WRz2wm0WsJeetcJtFrCXnrXCbRawl561wm0WsJeetcJtFrCnarM4hLjaLCCke8M27HVv2Ia97g3bsHdpe90btmGve8M27HVv2Ia97g3bsNe9YfuwF26zgL30rBVus4C99KwVbrOAvfSsFW6zgL30rBVus4C99KzlarOAEFWbBYSo2iwgRNVmASGWuXUKUbVZQIiqzQJCVG0WEKJqs4AQVZvFIcTVZgGh5GX/6rp/KJG1WUCJ7AI9HNcia7OAElmbBZTI2iygRNZmASWyNgsokbVZQImszeJQYmuzgBJZmwWUyNosoETWZgEl51Mia7OAElmbBZTI2iygRNZmASWyNotDia3NAkpkbRZQImuzgBJZmwWUnE+JrM0CSmRtFlAia7OAElmbBZTI2ixWlImszWI5kbVZLCeyNovlRHZb/HIia7NYTmRtFsuJ72UcXZvFciJrs1hOZG0Wy8kJncj2p90T8sEHRDgfDHvdzBLsdTNLsNfNLMHepe11M0uw180swV43swR73cwS7HXzwYe9cD4Y9tKzVjgfDHvpWSucD4a99KwVzgfDXnrWCueDYU+VDz6EuPLBENLNLMFeN7MEe93MEuxd2l43swR73cwS7HUzS7DXzSzBXjezdNgL54NhLz1rhfPBsJeetcL5YNhLz1rhfDDspWetcD4Y9tKzlisfDCGqfDCEqPLBEKLKB0OIZW6dQlT5YAhR5YMhRJUPhhBVPhhCVPngQ4grHwyh5GX/KkAJJbJ8MJTIjiTiuBZZPhhKZPlgKJHlg6FElg+GElk+GEpk+WAokeWDDyW2fDCUyPLBUCLLB0OJLB8MJedTIssHQ4ksHwwlsnwwlMjywVAiywcfSmz5YCiR5YOhRJYPhhJZPhhKzqdElg+GElk+GEpk+WAokeWDoUSWD15RJrJ88HIiywcvJ7J88HLiy9/R5YOXE1k+eDnxvYyjywcvJ7J88HIiywcvJyd0Ituf3P662+Ps20PH7YXNODfwufmfj9obfx0/xIeq+FQVL5useZE1N1nzXdbcZc2rrHmTNZedoEV2hBbZGWqyM9RkZ6jJzlCTnaEmO0NNdoZa2Aw9CT2ccHsm1cdJHa9+SZjRhH0LJ5RwgoUTbu9t47F4fOyXBA8n1HBCCyfcXdN1639/tG7jkjDCCTOa4Fs4oYQT7v60Vnt8tNo1oYUT7n6n2/446taqXRHqFk4I/yrV22vaz5+l2i8JI5wwowltCyeUcIKFE/ZwgocTajihhRM+uKZbuySMcML9NX3ufP2S0G+v6XP3fkYo4QQLJ9xd0+3MQ7RtXhI8nFDDCS2c0MMJt9f0fFz+3Mp2SZjRhLGFE0o4wcIJezjBwwk1nNDCCf2DhMs1PUY44f6afpxoaXZJmLfX9Pk69BmhhBMsnHB7Tr/6t+j0cEINJ7RwQg8njHBC+JuTJ0enP4aoltBmUU25zaKacptFNeU2i2rKbRbVlNssqim3WVRTbrOoptxmUU25zaKacptFNeU2i2rKbRbVlNssqim3WVRTbrOoptxmUU25zaKacptFNeU2i2pkbRbVyNosqim3WVRTbrOoptxmUU25zaKacptFNeU2i2rKbRbVlNssqim3WVRTbrOoptxmAXvpWSvcZgF76Vkr3GZRTbnNAvbSs1a4zaKacptFNbI2CwhRtVlAiKrNAkJUbRYQYplbpxBVm0U1sjaLamRtFtXI2iyqkbVZVCNrs6hG12ZRja7Nohpdm0U1ujaLanRtFtXo2iyq0bVZVKNrs6hG12ZRja7Nohpdm0U1ujaLanRtFtXo2iyq0bVZVKNrs6hG12ZRja7Nohpdm0U1ujaLanRtFtXo2iyq0bVZVKNrs6hG12ZRja7Nohpdm0U1ujaLanRtFtXo2iyq8bVZLCeyNovlRNZmsZzIbotfTmRtFsuJrM1iOfG9jKNrs1hOZG0Wy4mszWI5OaET2/40RdssDnHNq7gPcc2buA9x0TYLmGvexA1zzZu4Ya55EzfMXdZc8yZumGu2WcBcdoKKtlnAXHaGirZZwFx2hoq2WcBcdoaKtlnAXHaGBrdZgNDDCbFtFiDMaEJwmwUIJZxg4YTYNgsQPJxQwwktnBDbZgHCCCfMaEJwmwUIJZwQ22YBQgsnxN7JeBCC2yxACP8qBbdZgDDCCTOaENxmAUIJJ1g4YQ8neDihhhNaOCG2zQKEEU6IbbPAn7Ni2yxAKOEECyfEtlmA4OGEGk5o4YQeTohtswBhRhOC2yxAKOEECyfs4QQPJ9RwQgsnxLZZgDDCCbFtFjgEEdtmAUIJJ1g4IbbNAgQPJ9RwQgsn9HDCCCeEvzmJbrNoI6HN4oAIt1nAXveGbdjr3rANe90btmHv0va6N2zDXveGbdjr3rANe90btmGv22Zx2Au3WcBeetYKt1nAXnrWCrdZwF561gq3WcBeetYKt1nAnqrN4hDiarOAkO4N27DXvWEb9ro3bMPepe11b9iGve4N27DXvWEb9ro3bMNe94btw164zQL20rNWuM0C9tKzVrjNAvbSs1a4zQL20rNWuM0C9tKzlqvNAkJUbRYQomqzgBBVmwWEWObWKUTVZgEhqjYLCFG1WUCIqs0CQlRtFocQV5sFhJKX/avr/qFE1mYBJbIL9HBci6zNAkpkbRZQImuzgBJZmwWUyNosoETWZgElsjaLQ4mtzQJKZG0WUCJrs4ASWZsFlJxPiazNAkpkbRZQImuzgBJZmwWUyNosDiW2NgsokbVZQImszQJKZG0WUHI+JbI2CyiRtVlAiazNAkpkbRZQImuzWFEmsjaL5UTWZrGcyNoslhPZbfHLiazNYjmRtVksJ76XcXRtFsuJrM1iOZG1WSwnJ3Qi2596TcgHHxDhfDDsdTNLsNfNLMFeN7MEe5e2180swV43swR73cwS7HUzS7DXzQcf9sL5YNhLz1rhfDDspWetcD4Y9tKzVjgfDHvpWSucD4Y9VT74EOLKB0NIN7MEe93MEux1M0uwd2l73cwS7HUzS7DXzSzBXjezBHvdzNJhL5wPhr30rBXOB8NeetYK54NhLz1rhfPBsJeetcL5YNhLz1qufDCEqPLBEKLKB0OIKh8MIZa5dQpR5YMhRJUPhhBVPhhCVPlgCFHlgw8hrnwwhJKX/asAJZTI8sFQIjuSiONaZPlgKJHlg6FElg+GElk+GEpk+WAokeWDoUSWDz6U2PLBUCLLB0OJLB8MJbJ8MJScT4ksHwwlsnwwlMjywVAiywdDiSwffCix5YOhRJYPhhJZPhhKZPlgKDmfElk+GEpk+WAokeWDoUSWD4YSWT54RZnI8sHLiSwfvJzI8sHLiS9/R5cPXk5k+eDlxPcyji4fvJzI8sHLiSwfvJyc0Ilrf2pPj/b37WHU658e7uP7/Oe5/uZz483n5nvPXZ/3/sFz5c3n7M3nLpfQ2La/nxvbk+f8zefqm8+1N5/rbz433nxuvvfc9QHHcb4gHX1cP1fefM7efG5/8zl/87n65nPtzeeuf15Gfzw32/Vz483n5nvPXR/S+cFz5c3n7M3n9jefu/x5meWxjma5XkfX5zx+8Fx787n+5nPjzefme89dHxX4wXPlxXN2/f1r9uZz+5vPXf+87I/1Pv16vV8fD/jBc+3N5/qbz403n5vvPde3N5+7/nlp5++Dm/t/Pfiff/Phk2IplD2F4imUmkJpKZSeQhkplJlBuf7L/scpKWt/pKz9kbL2R8raHylrf6Ss/ZGy9kfK2h8pa3+mrP2ZsvZnytqfKWt/pqz9mbL2Z8ranylrf6as/Zmy9p/8VfHzmJKDsRzMnoPxHEzNwbQcTM/BjBxMzi5QcnaBkrMLlJxdoOTsAiVnFyg5u0DJ2QVKzi5QcnaBkrMLWM4uYDm7gOXsApazC1jOLmA5u4Dl7AKWswtYzi5gObvAnrML7Dm7wJ6zC+w5u8CeswvsObvAnrML7Dm7wJ6zC+w5u4Dn7AKeswt4zi7gObuA5+wCnrMLeM4u4Dm7gOfsAp6zC9ScXaDm7AI1ZxeoObtAzdkFas4uUHN2gZqzC9ScXaDm7AItZxdoObtAy9kFWs4u0HJ2gZazC7ScXaDl7AItZxdoObtAz9kFcs4HlpwDgiXnhGDJOSJYcs4IlpxDgiXnlGDJOSZYcs4JlpyDgiXnpGDJOSpYcs4KlpzDgiXntGDJOS5Ycs4LlpwDgyXnxGDJOTJYcs4MlpxDgyXn1GDJOTZYcs4NlpyDgyXn5GDJOTpYcs4OWs7ZQcs5O2g5Zwct5+ygbZ6DqTmYloPpOZiRg8nZBXLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4OWs7ZQcs5O2g5Zwct5+yg5ZwdtJyzg5ZzdtByzg5aztlByzk7aDlnBy3n7KDlnB20nLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4OWs7ZQcs5O2gfOG1Xt8dVMrX841bV1v5BGRmUD5xOq3ZS9vqEYimUPYXiKZSaQvm3g+bPk/3dJz9wauAHP9cfODTwE0pNobQUSsqu9oEDA9UfV1LXak8oM4PygeMCP6GUFIqlUD6w9vdxUvYnFE+h1BRKS6H0FMpIocyMyfmBQwI/oaT8djZTfjubKb+dfeCAwE8oKb+dfeB4wE8oPYUyUigZa3/fthRKSaFYCmVPoXgKpaZQWgqlp1BGCiVl7ZeUtV9S1n5JWfslZe2XlLVfUtZ+SVn7JWXtl5S1X1LWvqWsfUtZ+5ay9i1l7VvK2reUtW8pa9/C1/4of13XnVV/lF+U2v6rN/V/GaM+3iiNUb7/aCnjlDf7x6sBO30Gmc8k87n+1eY3hQqbkLEJ7WxCziZU2YQamxDbPl3YNurCtlMb205tbDu1se3UxrZTG9tObWw7tQXu1CejJzDu76dzK39/du7b/S/sJBPaNzahwiZkbEI7m5CzCVU2ocYm1NmE2HbqnW2ndrad2tl2amfbqZ1tp3a2ndrZdmpn26k9cKc+GSOBMeMZdUtglASGJTD2BIYnMGoCoyUwEtZ5u/+zW7Ztf3x4K3ZJsRTK/e97Mf+z+7bLFwhtZvy/9C2FkvLd7/4BSpsnZbRLSk2htBRKT6GMFMon1ksrfyj9ijK2FEpJoVgKZU+heAqlplBaCqWnUEYK5QNrvxR/fLj45e8wc0uhlBSKpVD2FIqnUGoKpaVQegrlA2u/dDspY1xSZgblSav15zF7xr8tyuY5mJqDaTmYmYL5wInAH2FKDsZyMAnrZr8+XNvPx3p/8dLVt0eQ1q1+/9Fx7hVz+3Mq+Hg7+8ar3P36FK6C+FQVv17FEuZF1txkzXdZc5c1r7LmTdZcdoIW2RFaZGeoyc5Qk52hJjtDTXaGmuwMNdkZamEz9CT0cMLtmVQff1P16peEGU3Yt3BCCSdYOOH23jYei8fHfknwcEINJ7Rwwt01XbfHC6m6jUvCCCfMaIJv4YQSTrj701rt8dFq14QWTrj7nW7749RFq3ZFqFs4IfyrVG+v6fMlc639kjDCCTOa0LZwQgknWDhhDyd4OKGGE1o44YNrurVLwggn3F/T587XLwn99po+d+9nhBJOsHDC3TXdzpOrbZuXBA8n1HBCCyf0cMLtNT3rg1C2S8KMJowtnFDCCRZO2MMJHk6o4YQWTugfJFyu6THCCffX9OMkXbNLwry9ps/Xoc8IJZxg4YTbc/rVv0WnhxNqOKGFE3o4YYQTwt+cPDlQ+jHEfHJarbT9PLfb6os/uRTfHptf8VKuIE9OK/47io+T0l/9Fehztw3NZ2edZOxN2n6Xtndp+ypt36Ttu7T9kLafyvYmPWtNetaa9Kw16Vlr0rPWpGetSc9ak561Jj1rjWXWPoR2lvF5CiVPxA9eDzafnXqTsd+l7V3avkrbN2n7Lm0/pO2nsr1v0vbSs9alZ61Lz1qXnrUuPWtdeta69Kx16Vnr0rO2sszaU4hlfJ5CLBPxFGIZcqcQy9w6hVhG0SnEMl1OIZaBcQqxzIBTiGVbfwg1tp26JS/7Vxczz2eJkt9VSv7BfnW52HyWlfjVr1I3PqWdT6llK31/GfZ8lpX4XaXBpzTplMbGp5S+L31/3/N8FhD5XaWdT8n5lCqfUuNT6nxKg09p0inNjU8pe/d+cS/4fBYF+l2lnU/J+ZQqn1LjU+p8SoNPadIpPbvjP9Dp+0KA5VQInYzQqdK90HnWS/C7Tp3Qie9lXMlOBv7IyQiddkInJ3Ti2p/6tmm2WUBc8ipuiEvexA1xzTaLZS55E/cyl7yJe5lL3sS9zF3WXPIm7mUu2WaxzGUnqGabxTKXnaGabRbLXHaGarZZLHPZGarZZrHMZWdobJvFIvRwQmibxSLMaEJsm8UilHCChRNC2ywWwcMJNZzQwgmhbRaLMMIJM5oQ22axCCWcENpmsQgtnBB6JyMIsW0WixD+VYpts1iEEU6Y0YTYNotFKOEECyfs4QQPJ9RwQgsnhLZZLMIIJ4S2Waw/Z4W2WSxCCSdYOCG0zWIRPJxQwwktnNDDCaFtFoswowmxbRaLUMIJFk7YwwkeTqjhhBZOCG2zWIQRTghts1iHIELbLBahhBMsnBDaZrEIHk6o4YQWTujhhBFOCH9zEtxm0bcZ32YBiG6bxbKXvWF72cvesL3sZW/YXvYubS97w/ayl71he9nL3rC97GVv2F72sm0WsNdts1j20rNWt81i2UvPWt02i2UvPWt12yyWvfSs1W2zWPZMbRYQomqzWEKyN2wve9kbtpe97A3by96l7WVv2F72sjdsL3vZG7aXvewN28te9oZt2Ou2WSx76Vmr22ax7KVnrW6bxbKXnrW6bRbLXnrW6rZZLHvpWUvVZrGEmNoslhBTm8USYmqzWEIsc+sUYmqzWEJMbRZLiKnNYgkxtVksIaY2CwhRtVksoeRl/+K6/6XE1WaxlLgu0FvHtbjaLJYSV5vFUuJqs1hKXG0WS4mrzWIpcbVZLCWuNgsokbVZLCWuNoulxNVmsZS42iyWkvMpcbVZLCWuNoulxNVmsZS42iyWElebBZTI2iyWElebxVLiarNYSlxtFkvJ+ZS42iyWElebxVLiarNYSlxtFkuJq83iK8rE1Wbx5cTVZvHlxNVm8eXEdlv8pGuz+HLiarP4cuJ7GcfWZvHlxNVm8eXE1Wbx5eSETmT7U2kJ+eADIpwPhr1uZgn2upkl2OtmlmDv0va6mSXY62aWYK+bWYK9bmYJ9rr54MNeOB8Me+lZK5wPhr30rBXOB8NeetYK54NhLz1rhfPBsKfKBx9CXPlgCOlmlmCvm1mCvW5mCfYuba+bWYK9bmYJ9rqZJdjrZpZgr5tZOuyF88Gwl561wvlg2EvPWuF8MOylZ61wPhj20rNWOB8Me+lZy5UPhhBVPhhCVPlgCFHlgyHEMrdOIap8MISo8sEQosoHQ4gqHwwhqnzwIcSVD4ZQ8rJ/FaCEElk+GEpkRxJxXIssHwwlsnwwlMjywVAiywdDiSwfDCWyfDCUyPLBhxJbPhhKZPlgKJHlg6FElg+GkvMpkeWDoUSWD4YSWT4YSmT5YCiR5YMPJbZ8MJTI8sFQIssHQ4ksHwwl51MiywdDiSwfDCWyfDCUyPLBUCLLB68oE1k+eDmR5YOXE1k+eDnx5e/o8sHLiSwfvJz4XsbR5YOXE1k+eDmR5YOXkxM6ke1P5n/d7XH27aHj9sJmnBv43PzPR+2Nv44f4kNVfKqKl03WvMiam6z5LmvusuZV1rzJmstO0CI7QovsDDXZGWqyM9RkZ6jJzlCTnaEmO0MtbIaehB5OuD2T6uOkjle/JMxowr6FE0o4wcIJt/e28Vg8PvZLgocTajihhRPurum69b8/WrdxSRjhhBlN8C2cUMIJd39aqz0+Wu2a0MIJd7/TbX8cdWvVrgh1CyeEf5Xq7TXt589S7ZeEEU6Y0YS2hRNKOMHCCXs4wcMJNZzQwgkfXNOtXRJGOOH+mj53vn5J6LfX9Ll7PyOUcIKFE+6u6XbmIdo2LwkeTqjhhBZO6OGE22t6Pi5/bmW7JMxowtjCCSWcYOGEPZzg4YQaTmjhhP5BwuWaHiOccH9NP060NLskzNtr+nwd+oxQwgkWTrg9p1/9W3R6OKGGE1o4oYcTRjgh/M3Jk6PTH0PsntBmsbtym8Xuym0Wuyu3Weyu3Gaxu3Kbxe7KbRa7K7dZ7K7cZrG7cpvF7sptFrsrt1nsrtxmsbtym8Xuym0Wuyu3Weyu3Gaxu3Kbxe7KbRa7K7dZ7E7WZrE7WZvF7sptFrsrt1nsrtxmsbtym8Xuym0Wuyu3Weyu3Gaxu3Kbxe7KbRa7K7dZ7K7cZgF76Vkr3GYBe+lZK9xmsbtymwXspWetcJvF7sptFruTtVlAiKrNAkJUbRYQomqzgBDL3DqFqNosdidrs9idrM1id7I2i93J2ix2J2uz2J2uzWJ3ujaL3enaLHana7PYna7NYne6Novd6dosdqdrs9idrs1id7o2i93p2ix2p2uz2J2uzWJ3ujaL3enaLHana7PYna7NYne6Novd6dosdqdrs9idrs1id7o2i93p2ix2p2uz2J2uzWJ3ujaL3enaLHana7PYna7NYne6Novd+doslhNZm8VyImuzWE5kt8UvJ7I2i+VE1maxnPhextG1WSwnsjaL5UTWZrGcnNCJbH/yItpmcYhrXsV9iGvexH2Ii7ZZwFzzJm6Ya97EDXPNm7hh7rLmmjdxw1yzzQLmshNUtM0C5rIzVLTNAuayM1S0zQLmsjNUtM0C5rIzNLjNAoQeTohtswBhRhOC2yxAKOEECyfEtlmA4OGEGk5o4YTYNgsQRjhhRhOC2yxAKOGE2DYLEFo4IfZOxoMQ3GYBQvhXKbjNAoQRTpjRhOA2CxBKOMHCCXs4wcMJNZzQwgmxbRYgjHBCbJsF/pwV22YBQgknWDghts0CBA8n1HBCCyf0cEJsmwUIM5oQ3GYBQgknWDhhDyd4OKGGE1o4IbbNAoQRTohts8AhiNg2CxBKOMHCCbFtFiB4OKGGE1o4oYcTRjgh/M1JdJtF3RLaLA6IcJsF7HVv2Ia97g3bsNe9YRv2Lm2ve8M27HVv2Ia97g3bsNe9YRv2um0Wh71wmwXspWetcJsF7KVnrXCbBeylZ61wmwXspWetcJsF7KnaLA4hrjYLCOnesA173Ru2Ya97wzbsXdpe94Zt2OvesA173Ru2Ya97wzbsdW/YPuyF2yxgLz1rhdssYC89a4XbLGAvPWuF2yxgLz1rhdssYC89a7naLCBE1WYBIao2CwhRtVlAiGVunUJUbRYQomqzgBBVmwWEqNosIETVZnEIcbVZQCh52b+67h9KZG0WUCK7QA/HtcjaLKBE1mYBJbI2CyiRtVlAiazNAkpkbRZQImuzOJTY2iygRNZmASWyNgsokbVZQMn5lMjaLKBE1mYBJbI2CyiRtVlAiazN4lBia7OAElmbBZTI2iygRNZmASXnUyJrs4ASWZsFlMjaLKBE1mYBJbI2ixVlImuzWE5kbRbLiazNYjmR3Ra/nMjaLJYTWZvFcuJ7GUfXZrGcyNoslhNZm8VyckIntv2pZ+SDu3Q+uEvng7t0PrhL54O7dD64S+eDu3Q+uEvng7t0PrhL54O7dD64S+eDu3Q+uEvng7t0PrhL54O7dD64S+eDu3Q+uLPlgztbPrhL54O7dD64S+eDu3Q+uEvng7t0PrhL54O7dD64S+eDu3Q+uEvng7t0PrhL54O7dD64S+eDu3Q+uEvng7t0PrhL54M7Wz64s+WDO1s+uLPlgztbPriz5YM7Wz64s+WDO1s+uLPlgztbPrjz5YM7Xz648+WDO18+uPPlgztfPrjz5YM7Xz648+WDO18+uPPlgztfPrjz5YM7Xz648+WDO18+uPPlgztfPrjz5YM7Xz648+WDO18+uPPlgztfPrjz5YM7Xz648+WDO18+uPPlgztfPrgT5oM7YT64E+aDO2E+uBPmgzthPrgT5oM7YT64E+aDO2E+uBPmgztfPrjNJ/ng6v3xXG39e8gHD4wfPoPMZ5L5PIla/6JQYRMyNqGdTcjZhCqbUGMTYtunC9tGXdh2amPbqY1tpza2ndrYdmpj26mNbae2wJ36ZPQExv399IOnTyE0yYT2jU2osAkZm9DOJuRsQpVNqLEJdTYhtp16Z9upnW2ndrad2tl2amfbqZ1tp3a2ndrZdmoP3KlPxkhgzHhG3RIYJYFhCYw9geEJjJrAaAmMhHXe7v/svjq0D4qlUO5/33/wh7w2M/5f+pZCSfnud/8A5fuT86DUFEpLofQUykihfGK9fH/yFn/O3lIoJYViKZQ9heIplJpCaSmUnkIZKZQPrP0XR0lxdGRLoZQUiqVQ9hSKp1BqCqWlUHoK5QNr/8UhYVBmBuXZMfKPY/aMf1uUzXMwNQfTcjAzBfOBE4E/wpQcjOVg4tdNL9eHa/v5WO8vXrr69jjr6/biqO8494q5+f/94+3sv3+Ve4gPVfGpKn69iiXMi6y5yZrvsuYua15lzZusuewELbIjtMjOUJOdoSY7Q012hprsDDXZGWqyM9TCZuhJ6OGE2zOpPv6m6tUvCTOasG/hhBJOsHDC7b1tPBaPj/2S4OGEGk5o4YS7a7pujxdSdRuXhBFOmNEE38IJJZxw96e12uOj1a4JLZxw9zvd9sepi1btilC3cEL4V6neXtPnS+Za+yVhhBNmNKFt4YQSTrBwwh5O8HBCDSe0cMIH13Rrl4QRTri/ps+dr18S+u01fe7ezwglnGDhhLtrup0nV9s2LwkeTqjhhBZO6OGE22t61gehbJeEGU0YWzihhBMsnLCHEzycUMMJLZzQP0i4XNNjhBPur+nHSbpml4R5e02fr0OfEUo4wcIJt+f0q3+LTg8n1HBCCyf0cMIIJ4S/OXlyoPRjiPHktNq/vJxye2x+xUu5gpTk65U/eNvQeHbWScbepO13aXuXtq/S9k3avkvbD2n7qWxv0rPWpGetSc9ak561Jj1rTXrWmvSsNelZa9Kz1lhm7UNoZxmfp1DyRPzg9WDj2ak3Gftd2t6l7au0fZO279L2Q9p+Ktv7Jm0vPWtdeta69Kx16Vnr0rPWpWetS89al561Lj1rK8usPYVYxucpxDIRTyGWIXcKscytU4hlFJ1CLNPlFGIZGKcQyww4hVi29YdQY9upW/Kyf3Ux83iWKPldJbJ26vEsK/GrX6VufEo7n1J2I/yLy7DHs6zE7yoNPqVJpzQ2PqX0fen7+57Hs4DI7yrtfErOp1T5lBqfUudTGnxKk05pbnxK2bv3i3vBx7Mo0O8q7XxKzqdU+ZQan1LnUxp8SpNO6dkd/4FO3xcCLKdC6GSETpXuhc6zXoLfdeqETnwv40p2MvBHTkbotBM6OaET2/40RNssDnHNq7gPcc2buA9x0TYLmGvexA1zzZu4Ya55EzfMXdZc8yZumGu2WcBcdoKKtlnAXHaGirZZwFx2hoq2WcBcdoaKtlnAXHaGBrdZgNDDCbFtFiDMaEJwmwUIJZxg4YTYNgsQPJxQwwktnBDbZgHCCCfMaEJwmwUIJZwQ22YBQgsnxN7JeBCC2yxACP8qBbdZgDDCCTOaENxmAUIJJ1g4YQ8neDihhhNaOCG2zQKEEU6IbbPAn7Ni2yxAKOEECyfEtlmA4OGEGk5o4YQeTohtswBhRhOC2yxAKOEECyfs4QQPJ9RwQgsnxLZZgDDCCbFtFjgEEdtmAUIJJ1g4IbbNAgQPJ9RwQgsn9HDCCCeEvzmJbrOYPaHN4oAIt1nAXveGbdjr3rANe90btmHv0va6N2zDXveGbdjr3rANe90btmGv22Zx2Au3WcBeetYKt1nAXnrWCrdZwF561gq3WcBeetYKt1nAnqrN4hDiarOAkO4N27DXvWEb9ro3bMPepe11b9iGve4N27DXvWEb9ro3bMNe94btw164zQL20rNWuM0C9tKzVrjNAvbSs1a4zQL20rNWuM0C9tKzlqvNAkJUbRYQomqzgBBVmwWEWObWKUTVZgEhqjYLCFG1WUCIqs0CQlRtFocQV5sFhJKX/avr/qFE1mYBJbIL9HBci6zNAkpkbRZQImuzgBJZmwWUyNosoETWZgElsjaLQ4mtzQJKZG0WUCJrs4ASWZsFlJxPiazNAkpkbRZQImuzgBJZmwWUyNosDiW2NgsokbVZQImszQJKZG0WUHI+JbI2CyiRtVlAiazNAkpkbRZQImuzWFEmsjaL5UTWZrGcyNoslhPZbfHLiazNYjmRtVksJ76XcXRtFsuJrM1iOZG1WSwnJ3Ti2p/G5vH5YEB088HLXjaztOxlM0vLXjaztOxd2l42s7TsZTNLy142s7TsZTNLy142Hwx73Xzwspeetbr54GUvPWt188HLXnrW6uaDl730rNXNBy97pnwwhKjywUtINrO07GUzS8teNrO07F3aXjaztOxlM0vLXjaztOxlM0vLXjazBHvdfPCyl561uvngZS89a3Xzwcteetbq5oOXvfSs1c0HL3vpWUuVD15CTPngJcSUD15CTPngJcQyt04hpnzwEmLKBy8hpnzwEmLKBy8hpnwwhKjywUsoedm/CFAuJa588FLiOpK4jmtx5YOXElc+eClx5YOXElc+eClx5YOXElc+eClx5YOhRJYPXkpc+eClxJUPXkpc+eCl5HxKXPngpcSVD15KXPngpcSVD15KXPlgKJHlg5cSVz54KXHlg5cSVz54KTmfElc+eClx5YOXElc+eClx5YOXElc++CvKxJUP/nLiygd/OXHlg7+c+PJ3bPngLyeufPCXE9/LOLZ88JcTVz74y4krH/zl5IROZPtTsb/u9jj79tBxe2Ezzg18bv7no/bGX8cP8aEqPlXFyyZrXmTNTdZ8lzV3WfMqa95kzWUnaJEdoUV2hprsDDXZGWqyM9RkZ6jJzlCTnaEWNkNPQg8n3J5J9XFSx6tfEmY0Yd/CCSWcYOGE23vbeCweH/slwcMJNZzQwgl313Td+t8frdu4JIxwwowm+BZOKOGEuz+t1R4frXZNaOGEu9/ptj+OurVqV4S6hRPCv0r19pr282ep9kvCCCfMaELbwgklnGDhhD2c4OGEGk5o4YQPrunWLgkjnHB/TZ87X78k9Ntr+ty9nxFKOMHCCXfXdDvzEG2blwQPJ9RwQgsn9HDC7TU9H5c/t7JdEmY0YWzhhBJOsHDCHk7wcEINJ7RwQv8g4XJNjxFOuL+mHydaml0S5u01fb4OfUYo4QQLJ9ye06/+LTo9nFDDCS2c0MMJI5wQ/ubkydHpjyHMEtoszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMzI2izMyNoszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMyU2yzMlNsszJTbLMyU2yxgLz1rhdssYC89a4XbLMyU2yxgLz1rhdsszJTbLMzI2iwgRNVmASGqNgsIUbVZQIhlbp1CVG0WZmRtFmZkbRZmZG0WZmRtFmZkbRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmdG0WZnRtFmZ0bRZmfG0Wy4mszWI5kbVZLCey2+KXE1mbxXIia7NYTnwv4+jaLJYTWZvFciJrs1hOTujEtj9N0TaLQ1zzKu5DXPMm7kNctM0C5po3ccNc8yZumGvexA1zlzXXvIkb5pptFjCXnaCibRYwl52hom0WMJedoaJtFjCXnaGibRYwl52hwW0WIPRwQmybBQgzmhDcZgFCCSdYOCG2zQIEDyfUcEILJ8S2WYAwwgkzmhDcZgFCCSfEtlmA0MIJsXcyHoTgNgsQwr9KwW0WIIxwwowmBLdZgFDCCRZO2MMJHk6o4YQWTohtswBhhBNi2yzw56zYNgsQSjjBwgmxbRYgeDihhhNaOKGHE2LbLECY0YTgNgsQSjjBwgl7OMHDCTWc0MIJsW0WIIxwQmybBQ5BxLZZgFDCCRZOiG2zAMHDCTWc0MIJPZwwwgnhb06i2yz2kdBmcUCE2yxgr3vDNux1b9iGve4N27B3aXvdG7Zhr3vDNux1b9iGve4N27DXbbM47IXbLGAvPWuF2yxgLz1rhdssYC89a4XbLGAvPWuF2yxgT9VmcQhxtVlASPeGbdjr3rANe90btmHv0va6N2zDXveGbdjr3rANe90btmGve8P2YS/cZgF76Vkr3GYBe+lZK9xmAXvpWSvcZgF76Vkr3GYBe+lZy9VmASGqNgsIUbVZQIiqzQJCLHPrFKJqs4AQVZsFhKjaLCBE1WYBIao2i0OIq80CQsnL/tV1/1Aia7OAEtkFejiuRdZmASWyNgsokbVZQImszQJKZG0WUCJrs4ASWZvFocTWZgElsjYLKJG1WUCJrM0CSs6nRNZmASWyNgsokbVZQImszQJKZG0WhxJbmwWUyNosoETWZgElsjYLKDmfElmbBZTI2iygRNZmASWyNgsokbVZrCgTWZvFciJrs1hOZG0Wy4nstvjlRNZmsZzI2iyWE9/LOLo2i+VE1maxnMjaLJaTEzqR7U9eE/LBB0Q4Hwx73cwS7HUzS7DXzSzB3qXtdTNLsNfNLMFeN7MEe93MEux188GHvXA+GPbSs1Y4Hwx76VkrnA+GvfSsFc4Hw1561grng2FPlQ8+hLjywRDSzSzBXjezBHvdzBLsXdpeN7MEe93MEux1M0uw180swV43s3TYC+eDYS89a4XzwbCXnrXC+WDYS89a4Xww7KVnrXA+GPbSs5YrHwwhqnwwhKjywRCiygdDiGVunUJU+WAIUeWDIUSVD4YQVT4YQlT54EOIKx8MoeRl/ypACSWyfDCUyI4k4rgWWT4YSmT5YCiR5YOhRJYPhhJZPhhKZPlgKJHlgw8ltnwwlMjywVAiywdDiSwfDCXnUyLLB0OJLB8MJbJ8MJTI8sFQIssHH0ps+WAokeWDoUSWD4YSWT4YSs6nRJYPhhJZPhhKZPlgKJHlg6FElg9eUSayfPByIssHLyeyfPBy4svf0eWDlxNZPng58b2Mo8sHLyeyfPByIssHLycndKLan0Z5erS/bw+jXv/0cB/f5z/P9TefG28+N9977vq89w+eK28+Z28+d7mExrb9/dzYnjznbz5X33yuvflcf/O58eZz873nrg84jvMF6ejj+rny5nP25nP7m8/5m8/VN59rbz53/fMy+uO52a6fG28+N9977vqQzg+eK28+Z28+t7/53OXPyyyPdTTL9Tq6Pufxg+fam8/1N58bbz4333vu+qjAD54rL56z6+9fszef29987vrnZX+s9+nX6/36eMAPnmtvPtfffG68+dx877m+vfnc9c9LO38f3Nz/68H//JsPnxRLoewpFE+h1BRKS6H0FMpIocwMyvVf9j9OSVn7I2Xtj5S1P1LW/khZ+yNl7Y+UtT9S1v5IWfszZe3PlLU/U9b+TFn7M2Xtz5S1P1PW/kxZ+zNl7c+Utf/kr4qfx5QcjOVg9hyM52BqDqblYHoOZuRgcnaBkrMLlJxdoOTsAiVnFyg5u0DJ2QVKzi5QcnaBkrMLlJxdwHJ2AcvZBSxnF7CcXcBydgHL2QUsZxewnF3AcnYBy9kF9pxdYM/ZBfacXWDP2QX2nF1gz9kF9pxdYM/ZBfacXWDP2QU8ZxfwnF3Ac3YBz9kFPGcX8JxdwHN2Ac/ZBTxnF/CcXaDm7AI1ZxeoObtAzdkFas4uUHN2gZqzC9ScXaDm7AI1ZxdoObtAy9kFWs4u0HJ2gZazC7ScXaDl7AItZxdoObtAy9kFes4ukHM+sOQcECw5JwRLzhHBknNGsOQcEiw5pwRLzjHBknNOsOQcFCw5JwVLzlHBknNWsOQcFiw5pwVLznHBknNesOQcGCw5JwZLzpHBknNmsOQcGiw5pwZLzrHBknNusOQcHCw5JwdLztHBknN20HLODlrO2UHLOTtoOWcHbfMcTM3BtBxMz8GMHEzOLpBzdtByzg5aztlByzk7aDlnBy3n7KDlnB20nLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4OWs7ZQcs5O2g5Zwct5+yg5ZwdtJyzg5ZzdtByzg5aztlByzk7aDlnBy3n7KDlnB20nLODlnN20HLODlrO2UH7wGm7uj2ukqnlH7eqtvYPysigfOB0WrWTstcnFEuh7CkUT6HUFMq/HTR/nuzvPvmBUwM/+Ln+wKGBn1BqCqWlUFJ2tQ8cGKj+uJK6VntCmRmUDxwX+AmlpFAshfKBtb+Pk7I/oXgKpaZQWgqlp1BGCmVmTM4PHBL4CSXlt7OZ8tvZTPnt7AMHBH5CSfnt7APHA35C6SmUkULJWPv7tqVQSgrFUih7CsVTKDWF0lIoPYUyUigpa7+krP2SsvZLytovKWu/pKz9krL2S8raLylrv6Ss/ZKy9i1l7VvK2reUtW8pa99S1r6lrH1LWfsWvvZr+eu67qz6o/yi1PZfvan/yxj18UZpjPL9R0sZp7zZP14N2OkzyHwmmc/1rza/KVTYhIxNaGcTcjahyibU2ITY9unCtlEXtp3a2HZqY9upjW2nNrad2th2amPbqS1wpz4ZPYFxfz+dW/n7s3Pf7n9hJ5nQvrEJFTYhYxPa2YScTaiyCTU2oc4mxLZT72w7tbPt1M62UzvbTu1sO7Wz7dTOtlM7207tgTv1yRgJjBnPqFsCoyQwLIGxJzA8gVETGC2BkbDO2/2f3bJt++PDW7FLiqVQ7n/fi/mf3bddvkBoM+P/pW8plJTvfvcPUNo8KaNdUmoKpaVQegplpFA+sV5a+UPpV5SxpVBKCsVSKHsKxVMoNYXSUig9hTJSKB9Y+6X448PFL3+HmVsKpaRQLIWyp1A8hVJTKC2F0lMoH1j7pdtJGeOSMjMoT1qtP4/ZM/5tUTbPwdQcTMvBzBTMB04E/ghTcjCWg0lYN/v14dp+Ptb7i5euvj2CtG71+4+Oc6+Y259Twcfb2Tde5e7Xp3AVxKeq+PUqljAvsuYma77LmruseZU1b7LmshO0yI7QIjtDTXaGmuwMNdkZarIz1GRnqMnOUAuboSehhxNuz6T6+JuqV78kzGjCvoUTSjjBwgm397bxWDw+9kuChxNqOKGFE+6u6bo9XkjVbVwSRjhhRhN8CyeUcMLdn9Zqj49Wuya0cMLd73TbH6cuWrUrQt3CCeFfpXp7TZ8vmWvtl4QRTpjRhLaFE0o4wcIJezjBwwk1nNDCCR9c061dEkY44f6aPne+fknot9f0uXs/I5RwgoUT7q7pdp5cbdu8JHg4oYYTWjihhxNur+lZH4SyXRJmNGFs4YQSTrBwwh5O8HBCDSe0cEL/IOFyTY8RTri/ph8n6ZpdEubtNX2+Dn1GKOEECyfcntOv/i06PZxQwwktnNDDCSOcEP7m5MmB0o8h2pPTasd/OM/ttvriTy7Ft8fmV7yUK8iT04r/juLjpPRXfwX63G1D7dlZJxl7k7bfpe1d2r5K2zdp+y5tP6Ttp7K9Sc9ak561Jj1rTXrWmvSsNelZa9Kz1qRnrUnPWmOZtQ+hnWV8nkLJE/GD14O1Z6feZOx3aXuXtq/S9k3avkvbD2n7qWzvm7S99Kx16Vnr0rPWpWetS89al561Lj1rXXrWuvSsrSyz9hRiGZ+nEMtEPIVYhtwpxDK3TiGWUXQKsUyXU4hlYJxCLDPgFGLZ1h9CjW2nbsnL/tXFzO1ZouR3lZJ/sF9dLtaeZSV+9avUjU9p51Nq2UrfX4bdnmUlfldp8ClNOqWx8Sml70vf3/fcngVEfldp51NyPqXKp9T4lDqf0uBTmnRKc+NTyt69X9wL3p5FgX5XaedTcj6lyqfU+JQ6n9LgU5p0Ss/u+A90+r4QYDkVQicjdKp0L3Se9RL8rlMndOJ7GVeyk4E/cjJCp53QyQmdyPanvom2WRzimldxH+KaN3Ef4qJtFjDXvIkb5po3ccNc8yZumLusueZN3DDXbLOAuewEFW2zgLnsDBVts4C57AwVbbOAuewMFW2zgLnsDA1uswChhxNi2yxAmNGE4DYLEEo4wcIJsW0WIHg4oYYTWjghts0ChBFOmNGE4DYLEEo4IbbNAoQWToi9k/EgBLdZgBD+VQpuswBhhBNmNCG4zQKEEk6wcMIeTvBwQg0ntHBCbJsFCCOcENtmgT9nxbZZgFDCCRZOiG2zAMHDCTWc0MIJPZwQ22YBwowmBLdZgFDCCRZO2MMJHk6o4YQWTohtswBhhBNi2yxwCCK2zQKEEk6wcEJsmwUIHk6o4YQWTujhhBFOCH9zEt1m0WdCm8UBEW6zgL3uDduw171hG/a6N2zD3qXtdW/Yhr3uDduw171hG/a6N2zDXrfN4rAXbrOAvfSsFW6zgL30rBVus4C99KwVbrOAvfSsFW6zgD1Vm8UhxNVmASHdG7Zhr3vDNux1b9iGvUvb696wDXvdG7Zhr3vDNux1b9iGve4N24e9cJsF7KVnrXCbBeylZ61wmwXspWetcJsF7KVnrXCbBeylZy1XmwWEqNosIETVZgEhqjYLCLHMrVOIqs0CQlRtFhCiarOAEFWbBYSo2iwOIa42CwglL/tX1/1DiazNAkpkF+jhuBZZmwWUyNosoETWZgElsjYLKJG1WUCJrM0CSmRtFocSW5sFlMjaLKBE1mYBJbI2Cyg5nxJZmwWUyNosoETWZgElsjYLKJG1WRxKbG0WUCJrs4ASWZsFlMjaLKDkfEpkbRZQImuzgBJZmwWUyNosoETWZrGiTGRtFsuJrM1iOZG1WSwnttviJ1+bxXIia7NYTnwv4+jaLJYTWZvFciJrs1hOTuhEtj+NlpAPPiDC+WDY62aWYK+bWYK9bmYJ9i5tr5tZgr1uZgn2upkl2OtmlmCvmw8+7IXzwbCXnrXC+WDYS89a4Xww7KVnrXA+GPbSs1Y4Hwx7qnzwIcSVD4aQbmYJ9rqZJdjrZpZg79L2upkl2OtmlmCvm1mCvW5mCfa6maXDXjgfDHvpWSucD4a99KwVzgfDXnrWCueDYS89a4XzwbCXnrVc+WAIUeWDIUSVD4YQVT4YQixz6xSiygdDiCofDCGqfDCEqPLBEKLKBx9CXPlgCCUv+1cBSiiR5YOhRHYkEce1yPLBUCLLB0OJLB8MJbJ8MJTI8sFQIssHQ4ksH3woseWDoUSWD4YSWT4YSmT5YCg5nxJZPhhKZPlgKJHlg6FElg+GElk++FBiywdDiSwfDCWyfDCUyPLBUHI+JbJ8MJTI8sFQIssHQ4ksHwwlsnzwijKR5YOXE1k+eDmR5YOXE1/+ji4fvJzI8sHLie9lHF0+eDmR5YOXE1k+eDk5oRPZ/jT9r7s9zr49dNxe2IxzA5+b//movfHX8UN8qIpPVfGyyZoXWXOTNd9lzV3WvMqaN1lz2QlaZEdokZ2hJjtDTXaGmuwMNdkZarIz1GRnqIXN0JPQwwm3Z1J9nNTx6peEGU3Yt3BCCSdYOOH23jYei8fHfknwcEINJ7Rwwt01Xbf+90frNi4JI5wwowm+hRNKOOHuT2u1x0erXRNaOOHud7rtj6NurdoVoW7hhPCvUr29pv38War9kjDCCTOa0LZwQgknWDhhDyd4OKGGE1o44YNrurVLwggn3F/T587XLwn99po+d+9nhBJOsHDC3TXdzjxE2+YlwcMJNZzQwgk9nHB7Tc/H5c+tbJeEGU0YWzihhBMsnLCHEzycUMMJLZzQP0i4XNNjhBPur+nHiZZml4R5e02fr0OfEUo4wcIJt+f0q3+LTg8n1HBCCyf0cMIIJ4S/OXlydPpTCNs8vs0CEN02i2Uve8P2spe9YXvZy96wvexd2l72hu1lL3vD9rKXvWF72cvesL3sZdssYK/bZrHspWetbpvFspeetbptFsteetbqtlkse+lZq9tmseyZ2iwgRNVmsYRkb9he9rI3bC972Ru2l71L28vesL3sZW/YXvayN2wve9kbtpe97A3bsNdts1j20rNWt81i2UvPWt02i2UvPWt12yyWvfSs1W2zWPbSs5aqzWIJMbVZLCGmNoslxNRmsYRY5tYpxNRmsYSY2iyWEFObxRJiarNYQkxtFhCiarNYQsnL/sV1/0uJq81iKXFdoLeOa3G1WSwlrjaLpcTVZrGUuNoslhJXm8VS4mqzWEpcbRZQImuzWEpcbRZLiavNYilxtVksJedT4mqzWEpcbRZLiavNYilxtVksJa42CyiRtVksJa42i6XE1WaxlLjaLJaS8ylxtVksJa42i6XE1WaxlLjaLJYSV5vFV5SJq83iy4mrzeLLiavN4suJ67b4LyeuNosvJ642iy8nvpdxbG0WX05cbRZfTlxtFl9OTuhEtj+VotlmAXHJq7ghLnkTN8Q12yyWueRN3Mtc8ibuZS55E/cyd1lzyZu4l7lkm8Uyl52gmm0Wy1x2hmq2WSxz2Rmq2WaxzGVnqGabxTKXnaGxbRaL0MMJoW0WizCjCbFtFotQwgkWTghts1gEDyfUcEILJ4S2WSzCCCfMaEJsm8UilHBCaJvFIrRwQuidjCDEtlksQvhXKbbNYhFGOGFGE2LbLBahhBMsnLCHEzycUMMJLZwQ2maxCCOcENpmsf6cFdpmsQglnGDhhNA2i0XwcEINJ7RwQg8nhLZZLMKMJsS2WSxCCSdYOGEPJ3g4oYYTWjghtM1iEUY4IbTNYh2CCG2zWIQSTrBwQmibxSJ4OKGGE1o4oYcTRjgh/M1JdJuFbQltFgdEuM0C9ro3bMNe94Zt2OvesA17l7bXvWEb9ro3bMNe94Zt2OvesA173TaLw164zQL20rNWuM0C9tKzVrjNAvbSs1a4zQL20rNWuM0C9lRtFocQV5sFhHRv2Ia97g3bsNe9YRv2Lm2ve8M27HVv2Ia97g3bsNe9YRv2ujdsH/bCbRawl561wm0WsJeetcJtFrCXnrXCbRawl561wm0WsJeetVxtFhCiarOAEFWbBYSo2iwgxDK3TiGqNgsIUbVZQIiqzQJCVG0WEKJqsziEuNosIJS87F9d9w8lsjYLKJFdoIfjWmRtFlAia7OAElmbBZTI2iygRNZmASWyNgsokbVZHEpsbRZQImuzgBJZmwWUyNosoOR8SmRtFlAia7OAElmbBZTI2iygRNZmcSixtVlAiazNAkpkbRZQImuzgJLzKZG1WUCJrM0CSmRtFlAia7OAElmbxYoykbVZLCeyNovlRNZmsZzIbotfTmRtFsuJrM1iOfG9jKNrs1hOZG0Wy4mszWI5OaET2/7UM/LBXTof3KXzwV06H9yl88FdOh/cpfPBXTof3KXzwV06H9yl88FdOh/cpfPBXTof3KXzwV06H9yl88FdOh/cpfPBXTof3NnywZ0tH9yl88FdOh/cpfPBXTof3KXzwV06H9yl88FdOh/cpfPBXTof3KXzwV06H9yl88FdOh/cpfPBXTof3KXzwV06H9yl88GdLR/c2fLBnS0f3NnywZ0tH9zZ8sGdLR/c2fLBnS0f3NnywZ0tH9z58sGdLx/c+fLBnS8f3PnywZ0vH9z58sGdLx/c+fLBnS8f3PnywZ0vH9z58sGdLx/c+fLBnS8f3PnywZ0vH9z58sGdLx/c+fLBnS8f3PnywZ0vH9z58sGdLx/c+fLBnS8f3PnywZ0vH9wJ88GdMB/cCfPBnTAf3AnzwZ0wH9wJ88GdMB/cCfPBnTAf3AnzwZ0vH7zPJ/ng6v3xXG39e8gHD4wfPoPMZ5L5PIla/6JQYRMyNqGdTcjZhCqbUGMTYtunC9tGXdh2amPbqY1tpza2ndrYdmpj26mNbae2wJ36ZPQExv399IOnTyE0yYT2jU2osAkZm9DOJuRsQpVNqLEJdTYhtp16Z9upnW2ndrad2tl2amfbqZ1tp3a2ndrZdmoP3KlPxkhgzHhG3RIYJYFhCYw9geEJjJrAaAmMhHXe7v/svjq0D4qlUO5/33/wh7w2M/5f+pZCSfnud/8A5fuT86DUFEpLofQUykihfGK9fH/yFn/O3lIoJYViKZQ9heIplJpCaSmUnkIZKZQPrP0XR0lxdGRLoZQUiqVQ9hSKp1BqCqWlUHoK5QNr/8UhYVBmBuXZMfKPY/aMf1uUzXMwNQfTcjAzBfOBE4E/wpQcjOVg4teNl+vDtf18rPcXL119e5z1dXtx1Hece8Xc/P/+8Xb237/KPcSHqvhUFb9exRLmRdbcZM13WXOXNa+y5k3WXHaCFtkRWmRnqMnOUJOdoSY7Q012hprsDDXZGWphM/Qk9HDC7ZlUH39T9eqXhBlN2LdwQgknWDjh9t42HovHx35J8HBCDSe0cMLdNV23xwupuo1LwggnzGiCb+GEEk64+9Na7fHRateEFk64+51u++PURat2RahbOCH8q1Rvr+nzJXOt/ZIwwgkzmtC2cEIJJ1g4YQ8neDihhhNaOOGDa7q1S8IIJ9xf0+fO1y8J/faaPnfvZ4QSTrBwwt013c6Tq22blwQPJ9RwQgsn9HDC7TU964NQtkvCjCaMLZxQwgkWTtjDCR5OqOGEFk7oHyRcrukxwgn31/TjJF2zS8K8vabP16HPCCWcYOGE23P61b9Fp4cTajihhRN6OGGEE8LfnDw5UPoxRH1yWu1fXk65PTa/4qVcQUry9cofvG2oPjvrJGNv0va7tL1L21dp+yZt36Xth7T9VLY36Vlr0rPWpGetSc9ak561Jj1rTXrWmvSsNelZayyz9iG0s4zPUyh5In7werD67NSbjP0ube/S9lXavknbd2n7IW0/le19k7aXnrUuPWtdeta69Kx16Vnr0rPWpWetS89al561lWXWnkIs4/MUYpmIpxDLkDuFWObWKcQyik4hlulyCrEMjFOIZQacQizb+kOose3ULXnZv7qYuT5LlPyuElk7dX2WlfjVr1I3PqWdTym7Ef7FZdj1WVbid5UGn9KkUxobn1L6vvT9fc/1WUDkd5V2PiXnU6p8So1PqfMpDT6lSac0Nz6l7N37xb3g9VkU6HeVdj4l51OqfEqNT6nzKQ0+pUmn9OyO/0Cn7wsBllMhdDJCp0r3QudZL8HvOnVCJ76XcSU7GfgjJyN02gmdnNCJbX8aom0Wh7jmVdyHuOZN3Ie4aJsFzDVv4oa55k3cMNe8iRvmLmuueRM3zDXbLGAuO0FF2yxgLjtDRdssYC47Q0XbLGAuO0NF2yxgLjtDg9ssQOjhhNg2CxBmNCG4zQKEEk6wcEJsmwUIHk6o4YQWTohtswBhhBNmNCG4zQKEEk6IbbMAoYUTYu9kPAjBbRYghH+VgtssQBjhhBlNCG6zAKGEEyycsIcTPJxQwwktnBDbZgHCCCfEtlngz1mxbRYglHCChRNi2yxA8HBCDSe0cEIPJ8S2WYAwownBbRYglHCChRP2cIKHE2o4oYUTYtssQBjhhNg2CxyCiG2zAKGEEyycENtmAYKHE2o4oYUTejhhhBPC35xEt1m0ntBmcUCE2yxgr3vDNux1b9iGve4N27B3aXvdG7Zhr3vDNux1b9iGve4N27DXbbM47IXbLGAvPWuF2yxgLz1rhdssYC89a4XbLGAvPWuF2yxgT9VmcQhxtVlASPeGbdjr3rANe90btmHv0va6N2zDXveGbdjr3rANe90btmGve8P2YS/cZgF76Vkr3GYBe+lZK9xmAXvpWSvcZgF76Vkr3GYBe+lZy9VmASGqNgsIUbVZQIiqzQJCLHPrFKJqs4AQVZsFhKjaLCBE1WYBIao2i0OIq80CQsnL/tV1/1Aia7OAEtkFejiuRdZmASWyNgsokbVZQImszQJKZG0WUCJrs4ASWZvFocTWZgElsjYLKJG1WUCJrM0CSs6nRNZmASWyNgsokbVZQImszQJKZG0WhxJbmwWUyNosoETWZgElsjYLKDmfElmbBZTI2iygRNZmASWyNgsokbVZrCgTWZvFciJrs1hOZG0Wy4nstvjlRNZmsZzI2iyWE9/LOLo2i+VE1maxnMjaLJaTEzqR7U/dE/LBB0Q4Hwx73cwS7HUzS7DXzSzB3qXtdTNLsNfNLMFeN7MEe93MEux188GHvXA+GPbSs1Y4Hwx76VkrnA+GvfSsFc4Hw1561grng2FPlQ8+hLjywRDSzSzBXjezBHvdzBLsXdpeN7MEe93MEux1M0uw180swV43s3TYC+eDYS89a4XzwbCXnrXC+WDYS89a4Xww7KVnrXA+GPbSs5YrHwwhqnwwhKjywRCiygdDiGVunUJU+WAIUeWDIUSVD4YQVT4YQlT54EOIKx8MoeRl/ypACSWyfDCUyI4k4rgWWT4YSmT5YCiR5YOhRJYPhhJZPhhKZPlgKJHlgw8ltnwwlMjywVAiywdDiSwfDCXnUyLLB0OJLB8MJbJ8MJTI8sFQIssHH0ps+WAokeWDoUSWD4YSWT4YSs6nRJYPhhJZPhhKZPlgKJHlg6FElg9eUSayfPByIssHLyeyfPBy4svf0eWDlxNZPng58b2Mo8sHLyeyfPByIssHLycndCLbn4b9dbfH2beHjtsLm3Fu4HPzPx+1N/46fogPVfGpKl42WfMia26y5rusucuaV1nzJmsuO0GL7AgtsjPUZGeoyc5Qk52hJjtDTXaGmuwMtbAZehJ6OOH2TKqPkzpe/ZIwown7Fk4o4QQLJ9ze28Zj8fjYLwkeTqjhhBZOuLum69b//mjdxiVhhBNmNMG3cEIJJ9z9aa32+Gi1a0ILJ9z9Trf9cdStVbsi1C2cEP5VqrfXtJ8/S7VfEkY4YUYT2hZOKOEECyfs4QQPJ9RwQgsnfHBNt3ZJGOGE+2v63Pn6JaHfXtPn7v2MUMIJFk64u6bbmYdo27wkeDihhhNaOKGHE26v6fm4/LmV7ZIwowljCyeUcIKFE/ZwgocTajihhRP6BwmXa3qMcML9Nf040dLskjBvr+nzdegzQgknWDjh9px+9W/R6eGEGk5o4YQeThjhhPA3J0+OTn8MMS2hzWKacpvFNOU2i2nKbRbTlNsspim3WUxTbrOYptxmMU25zWKacpvFNOU2i2nKbRbTlNsspim3WUxTbrOYptxmMU25zWKacpvFNOU2i2nKbRbTyNosppG1WUxTbrOYptxmMU25zWKacpvFNOU2i2nKbRbTlNsspim3WUxTbrOYptxmMU25zQL20rNWuM0C9tKzVrjNYppymwXspWetcJvFNOU2i2lkbRYQomqzgBBVmwWEqNosIMQyt04hqjaLaWRtFtPI2iymkbVZTCNrs5hG1mYxja7NYhpdm8U0ujaLaXRtFtPo2iym0bVZTKNrs5hG12Yxja7NYhpdm8U0ujaLaXRtFtPo2iym0bVZTKNrs5hG12Yxja7NYhpdm8U0ujaLaXRtFtPo2iym0bVZTKNrs5hG12Yxja7NYhpdm8U0ujaLaXRtFtPo2iym0bVZTONrs1hOZG0Wy4mszWI5kd0Wv5zI2iyWE1mbxXLiexlH12axnMjaLJYTWZvFcnJCJ7b9aYq2WRzimldxH+KaN3Ef4qJtFjDXvIkb5po3ccNc8yZumLusueZN3DDXbLOAuewEFW2zgLnsDBVts4C57AwVbbOAuewMFW2zgLnsDA1uswChhxNi2yxAmNGE4DYLEEo4wcIJsW0WIHg4oYYTWjghts0ChBFOmNGE4DYLEEo4IbbNAoQWToi9k/EgBLdZgBD+VQpuswBhhBNmNCG4zQKEEk6wcMIeTvBwQg0ntHBCbJsFCCOcENtmgT9nxbZZgFDCCRZOiG2zAMHDCTWc0MIJPZwQ22YBwowmBLdZgFDCCRZO2MMJHk6o4YQWTohtswBhhBNi2yxwCCK2zQKEEk6wcEJsmwUIHk6o4YQWTujhhBFOCH9zEtxmsW8jvs0CEN02i2Uve8P2spe9YXvZy96wvexd2l72hu1lL3vD9rKXvWF72cvesL3sZdssYK/bZrHspWetbpvFspeetbptFsteetbqtlkse+lZq9tmseyZ2iwgRNVmsYRkb9he9rI3bC972Ru2l71L28vesL3sZW/YXvayN2wve9kbtpe97A3bsNdts1j20rNWt81i2UvPWt02i2UvPWt12yyWvfSs1W2zWPbSs5aqzWIJMbVZLCGmNoslxNRmsYRY5tYpxNRmsYSY2iyWEFObxRJiarNYQkxtFhCiarNYQsnL/sV1/0uJq81iKXFdoLeOa3G1WSwlrjaLpcTVZrGUuNoslhJXm8VS4mqzWEpcbRZQImuzWEpcbRZLiavNYilxtVksJedT4mqzWEpcbRZLiavNYilxtVksJa42CyiRtVksJa42i6XE1WaxlLjaLJaS8ylxtVksJa42i6XE1WaxlLjaLJYSV5vFV5SJq83iy4mrzeLLiavN4suJ67b4LyeuNosvJ642iy8nvpdxbG0WX05cbRZfTlxtFl9OTuhEtj+VmpAPPiDC+WDY62aWYK+bWYK9bmYJ9i5tr5tZgr1uZgn2upkl2OtmlmCvmw8+7IXzwbCXnrXC+WDYS89a4Xww7KVnrXA+GPbSs1Y4Hwx7qnzwIcSVD4aQbmYJ9rqZJdjrZpZg79L2upkl2OtmlmCvm1mCvW5mCfa6maXDXjgfDHvpWSucD4a99KwVzgfDXnrWCueDYS89a4XzwbCXnrVc+WAIUeWDIUSVD4YQVT4YQixz6xSiygdDiCofDCGqfDCEqPLBEKLKBx9CXPlgCCUv+1cBSiiR5YOhRHYkEce1yPLBUCLLB0OJLB8MJbJ8MJTI8sFQIssHQ4ksH3woseWDoUSWD4YSWT4YSmT5YCg5nxJZPhhKZPlgKJHlg6FElg+GElk++FBiywdDiSwfDCWyfDCUyPLBUHI+JbJ8MJTI8sFQIssHQ4ksHwwlsnzwijKR5YOXE1k+eDmR5YOXE1/+ji4fvJzI8sHLie9lHF0+eDmR5YOXE1k+eDk5oRPX/tSeHu3v28Oo1z893Mf3+c9z/c3nxpvPzfeeuz7v/YPnypvP2ZvPXS6hsW1/Pze2J8/5m8/VN59rbz7X33xuvPncfO+56wOO43xBOvq4fq68+Zy9+dz+5nP+5nP1zefam89d/7yM/nhutuvnxpvPzfeeuz6k84PnypvP2ZvP7W8+d/nzMstjHc1yvY6uz3n84Ln25nP9zefGm8/N9567Pirwg+fKi+fs+vvX7M3n9jefu/552R/rffr1er8+HvCD59qbz/U3nxtvPjffe65vbz53/fPSzt8HN/f/evA//+bDJ8VSKHsKxVMoNYXSUig9hTJSKDODcv2X/Y9TUtb+SFn7I2Xtj5S1P1LW/khZ+yNl7Y+UtT9S1v5MWfszZe3PlLU/U9b+TFn7M2Xtz5S1P1PW/kxZ+zNl7T/5q+LnMSUHYzmYPQfjOZiag2k5mJ6DGTmYnF2g5OwCJWcXKDm7QMnZBUrOLlBydoGSswuUnF2g5OwCJWcXsJxdwHJ2AcvZBSxnF7CcXcBydgHL2QUsZxewnF3AcnaBPWcX2HN2gT1nF9hzdoE9ZxfYc3aBPWcX2HN2gT1nF9hzdgHP2QU8ZxfwnF3Ac3YBz9kFPGcX8JxdwHN2Ac/ZBTxnF6g5u0DN2QVqzi5Qc3aBmrML1JxdoObsAjVnF6g5u0DN2QVazi7QcnaBlrMLtJxdoOXsAi1nF2g5u0DL2QVazi7QcnaBnrML5JwPLDkHBEvOCcGSc0Sw5JwRLDmHBEvOKcGSc0yw5JwTLDkHBUvOScGSc1Sw5JwVLDmHBUvOacGSc1yw5JwXLDkHBkvOicGSc2Sw5JwZLDmHBkvOqcGSc2yw5JwbLDkHB0vOycGSc3Sw5JwdtJyzg5ZzdtByzg5aztlB2zwHU3MwLQfTczAjB5OzC+ScHbScs4OWc3bQcs4OWs7ZQcs5O2g5Zwct5+yg5ZwdtJyzg5ZzdtByzg5aztlByzk7aDlnBy3n7KDlnB20nLODlnN20HLODlrO2UHLOTtoOWcHLefsoOWcHbScs4OWc3bQcs4OWs7ZQcs5O2g5Zwct5+yg5ZwdtJyzg5ZzdtA+cNqubo+rZGr5x62qrf2DMjIoHzidVu2k7PUJxVIoewrFUyg1hfJvB82fJ/u7T37g1MAPfq4/cGjgJ5SaQmkplJRd7QMHBqo/rqSu1Z5QZgblA8cFfkIpKRRLoXxg7e/jpOxPKJ5CqSmUlkLpKZSRQpkZk/MDhwR+Qkn57Wym/HY2U347+8ABgZ9QUn47+8DxgJ9QegplpFAy1v6+bSmUkkKxFMqeQvEUSk2htBRKT6GMFErK2i8pa7+krP2SsvZLytovKWu/pKz9krL2S8raLylrv6SsfUtZ+5ay9i1l7VvK2reUtW8pa99S1r6Fr30rf13XnVV/lF+U2v6rN/V/GaM+3iiNUb7/aCnjlDf7x6sBO30Gmc8k87n+1eY3hQqbkLEJ7WxCziZU2YQamxDbPl3YNurCtlMb205tbDu1se3UxrZTG9tObWw7tQXu1CejJzDu76dzK39/du7b/S/sJBPaNzahwiZkbEI7m5CzCVU2ocYm1NmE2HbqnW2ndrad2tl2amfbqZ1tp3a2ndrZdmpn26k9cKc+GSOBMeMZdUtglASGJTD2BIYnMGoCoyUwEtZ5u/+zW7Ztf3x4K3ZJsRTK/e97Mf+z+7bLFwhtZvy/9C2FkvLd7/4BSpsnZbRLSk2htBRKT6GMFMon1ksrfyj9ijK2FEpJoVgKZU+heAqlplBaCqWnUEYK5QNrvxR/fLj45e8wc0uhlBSKpVD2FIqnUGoKpaVQegrlA2u/dDspY1xSZgblSav15zF7xr8tyuY5mJqDaTmYmYL5wInAH2FKDsZyMAnrZr8+XNvPx3p/8dLVt0eQ1q1+/9Fx7hVz+3Mq+Hg7+8ar3P36FK6C+FQVv17FEuZF1txkzXdZc5c1r7LmTdZcdoIW2RFaZGeoyc5Qk52hJjtD/5+6s81uJceR6Ibm9CGR4NfiZu+TwVeSqs+kSi5JgCP+O/vetp3AK5nBMNkdarI71GR3qIXt0DthhBM+3knt9jdVb35JWNGEo4QTajjBwgkfz7Z5e3l8HpcEDye0cEIPJ3z6Trdy+0CqlXlJmOGEFU3wEk6o4YRPf1ub3b602TWhhxM+/Un343bqoje7IrQSTgj/LrWP3+n7h8ytjUvCDCesaEIv4YQaTrBwwhFO8HBCCyf0cMIX3+neLwkznPD5O32ffOOSMD5+p+/T+xmhhhMsnPDpO93vJ1d7WZcEDye0cEIPJ4xwwsfv9Go3Qi2XhBVNmCWcUMMJFk44wgkeTmjhhB5OGF8kXL7Tc4YTPn+nbyfpul0S1sfv9P3j0GeEGk6wcMLHe/rVf4suDye0cEIPJ4xwwgwnhH9y8uRA6dcQx5PTarUf93O7vb34k0v1cht+1Wu9gjw5rfjvKD7vlPHqr0Dfu23oeHbWScbepO0PaXuXtm/S9l3afkjbT2n7pWxv0rvWpHetSe9ak961Jr1rTXrXmvSuNelda9K71lh27U3oYFmfd6HkjfjF68GOZ6feZOwPaXuXtm/S9l3afkjbT2n7pWzvRdpeete69K516V3r0rvWpXetS+9al961Lr1rXXrXNpZdexdiWZ93IZaNeBdiWXJ3IZa9dRdiWUV3IZbtchdiWRh3IZYdcBdiGes3oc42qXvya//qYubjWaLkd5WSf7FfXS52PMtK/Op3aRif0sGn1LOV/vky7ONZVuJ3lSaf0qJTmoVPKX0u/fN9z8ezgMjvKh18Ss6n1PiUOp/S4FOafEqLTmkVPqXs6f3iXvDjWRTod5UOPiXnU2p8Sp1PafApTT6lRaf07I7/QKd/LgTYTpXQyQidGt0HOs96CX7XaRA68X0YV7OTgT9yMkKng9DJCZ3I5pMX0TaLU1zzKu5TXPMm7lNctM0C5po3ccNc8yZumGvexA1zlzXXvIkb5pptFjCX3aCibRYwl92hom0WMJfdoaJtFjCX3aGibRYwl92hwW0WIIxwQmybBQgrmhDcZgFCDSdYOCG2zQIEDye0cEIPJ8S2WYAwwwkrmhDcZgFCDSfEtlmA0MMJsXcynoTgNgsQwr9LwW0WIMxwwoomBLdZgFDDCRZOOMIJHk5o4YQeTohtswBhhhNi2yzw56zYNgsQajjBwgmxbRYgeDihhRN6OGGEE2LbLEBY0YTgNgsQajjBwglHOMHDCS2c0MMJsW0WIMxwQmybBQ5BxLZZgFDDCRZOiG2zAMHDCS2c0MMJI5wwwwnhn5xEt1n4SmizOCHCbRaw171hG/a6N2zDXveGbdi7tL3uDduw171hG/a6N2zDXveGbdjrtlmc9sJtFrCX3rXCbRawl961wm0WsJfetcJtFrCX3rXCbRawp2qzOIW42iwgpHvDNux1b9iGve4N27B3aXvdG7Zhr3vDNux1b9iGve4N27DXvWH7tBdus4C99K4VbrOAvfSuFW6zgL30rhVus4C99K4VbrOAvfSu5WqzgBBVmwWEqNosIETVZgEhlr11F6Jqs4AQVZsFhKjaLCBE1WYBIao2i1OIq80CQsmv/avr/qFE1mYBJbIL9HBci6zNAkpkbRZQImuzgBJZmwWUyNosoETWZgElsjaLU4mtzQJKZG0WUCJrs4ASWZsFlJxPiazNAkpkbRZQImuzgBJZmwWUyNosTiW2NgsokbVZQImszQJKZG0WUHI+JbI2CyiRtVlAiazNAkpkbRZQImuz2FEmsjaL7UTWZrGdyNosthPbbfGLr81iO5G1WWwnvg/j6NosthNZm8V2Imuz2E5O6EQ2n1pPyAefEOF8MOx1M0uw180swV43swR7l7bXzSzBXjezBHvdzBLsdTNLsNfNB5/2wvlg2EvvWuF8MOyld61wPhj20rtWOB8Me+ldK5wPhj1VPvgU4soHQ0g3swR73cwS7HUzS7B3aXvdzBLsdTNLsNfNLMFeN7MEe93M0mkvnA+GvfSuFc4Hw1561wrng2EvvWuF88Gwl961wvlg2EvvWq58MISo8sEQosoHQ4gqHwwhlr11F6LKB0OIKh8MIap8MISo8sEQosoHn0Jc+WAIJb/2rwKUUCLLB0OJ7EgijmuR5YOhRJYPhhJZPhhKZPlgKJHlg6FElg+GElk++FRiywdDiSwfDCWyfDCUyPLBUHI+JbJ8MJTI8sFQIssHQ4ksHwwlsnzwqcSWD4YSWT4YSmT5YCiR5YOh5HxKZPlgKJHlg6FElg+GElk+GEpk+eAdZSLLB28nsnzwdiLLB28nvvwdXT54O5Hlg7cT34dxdPng7USWD95OZPng7eSETmTzqft/Pu1x9nLTcXthM+8DfBV/fKm98dfxU3yqii9V8VpkzausucmaH7LmLmveZM27rLnsBq2yK7TK7lCT3aEmu0NNdoea7A412R1qsjvUwnbonTDCCR/vpHY7qePNLwkrmnCUcEINJ1g44ePZNm8vj8/jkuDhhBZO6OGET9/pVsZfX9rKvCTMcMKKJngJJ9Rwwqe/rc1uX9rsmtDDCZ/+pPtxO+rWm10RWgknhH+X2sfvtN9/l9q4JMxwwoom9BJOqOEECycc4QQPJ7RwQg8nfPGd7v2SMMMJn7/T98k3Lgnj43f6Pr2fEWo4wcIJn77T/Z6H6GVdEjyc0MIJPZwwwgkfv9Prdvlzr+WSsKIJs4QTajjBwglHOMHDCS2c0MMJ44uEy3d6znDC5+/07URLt0vC+vidvn8c+oxQwwkWTvh4T7/6b9Hl4YQWTujhhBFOmOGE8E9Onhyd/hpieEKbxXDlNovhym0Ww5XbLIYrt1kMV26zGK7cZjFcuc1iuHKbxXDlNovhym0Ww5XbLIYrt1kMV26zGK7cZjFcuc1iuHKbxXDlNovhym0Ww5XbLIaTtVkMJ2uzGK7cZjFcuc1iuHKbxXDlNovhym0Ww5XbLIYrt1kMV26zGK7cZjFcuc1iuHKbBeyld61wmwXspXetcJvFcOU2C9hL71rhNovhym0Ww8naLCBE1WYBIao2CwhRtVlAiGVv3YWo2iyGk7VZDCdrsxhO1mYxnKzNYjhZm8VwujaL4XRtFsPp2iyG07VZDKdrsxhO12YxnK7NYjhdm8VwujaL4XRtFsPp2iyG07VZDKdrsxhO12YxnK7NYjhdm8VwujaL4XRtFsPp2iyG07VZDKdrsxhO12YxnK7NYjhdm8VwujaL4XRtFsPp2iyG07VZDKdrsxhO12YxnK/NYjuRtVlsJ7I2i+1Edlv8diJrs9hOZG0W24nvwzi6NovtRNZmsZ3I2iy2kxM6kc2nWUXbLE5xzau4T3HNm7hPcdE2C5hr3sQNc82buGGueRM3zF3WXPMmbphrtlnAXHaDirZZwFx2h4q2WcBcdoeKtlnAXHaHirZZwFx2hwa3WYAwwgmxbRYgrGhCcJsFCDWcYOGE2DYLEDyc0MIJPZwQ22YBwgwnrGhCcJsFCDWcENtmAUIPJ8TeyXgSgtssQAj/LgW3WYAwwwkrmhDcZgFCDSdYOOEIJ3g4oYUTejghts0ChBlOiG2zwJ+zYtssQKjhBAsnxLZZgODhhBZO6OGEEU6IbbMAYUUTgtssQKjhBAsnHOEEDye0cEIPJ8S2WYAwwwmxbRY4BBHbZgFCDSdYOCG2zQIEDye0cEIPJ4xwwgwnhH9yEt1msUpCm8UJEW6zgL3uDduw171hG/a6N2zD3qXtdW/Yhr3uDduw171hG/a6N2zDXrfN4rQXbrOAvfSuFW6zgL30rhVus4C99K4VbrOAvfSuFW6zgD1Vm8UpxNVmASHdG7Zhr3vDNux1b9iGvUvb696wDXvdG7Zhr3vDNux1b9iGve4N26e9cJsF7KV3rXCbBeyld61wmwXspXetcJsF7KV3rXCbBeyldy1XmwWEqNosIETVZgEhqjYLCLHsrbsQVZsFhKjaLCBE1WYBIao2CwhRtVmcQlxtFhBKfu1fXfcPJbI2CyiRXaCH41pkbRZQImuzgBJZmwWUyNosoETWZgElsjYLKJG1WZxKbG0WUCJrs4ASWZsFlMjaLKDkfEpkbRZQImuzgBJZmwWUyNosoETWZnEqsbVZQImszQJKZG0WUCJrs4CS8ymRtVlAiazNAkpkbRZQImuzgBJZm8WOMpG1WWwnsjaL7UTWZrGdyG6L305kbRbbiazNYjvxfRhH12axncjaLLYTWZvFdnJCJ7b5NDLywUM6Hzyk88FDOh88pPPBQzofPKTzwUM6Hzyk88FDOh88pPPBQzofPKTzwUM6Hzyk88FDOh88pPPBQzofPKTzwUM6HzzY8sGDLR88pPPBQzofPKTzwUM6Hzyk88FDOh88pPPBQzofPKTzwUM6Hzyk88FDOh88pPPBQzofPKTzwUM6Hzyk88FDOh88pPPBgy0fPNjywYMtHzzY8sGDLR882PLBgy0fPNjywYMtHzzY8sGDLR88+PLBgy8fPPjywYMvHzz48sGDLx88+PLBgy8fPPjywYMvHzz48sGDLx88+PLBgy8fPPjywYMvHzz48sGDLx88+PLBgy8fPPjywYMvHzz48sGDLx88+PLBgy8fPPjywYMvHzz48sGDLx88CPPBgzAfPAjzwYMwHzwI88GDMB88CPPBgzAfPAjzwYMwHzwI88GDLh88ynqSD24+bs+1Pv4Z8r0D4/CZZD6LzOdJ1PoXhSqbkLEJHWxCzibU2IQ6mxDbnK5sg7qyTWpjm9TGNqmNbVIb26Q2tkltbJPaAif1nTESGJ/P0++dPt1Ci0zoKGxClU3I2IQONiFnE2psQp1NaLAJsU3qg21SO9ukdrZJ7WyT2tkmtbNNameb1M42qT1wUt8ZM4Gx4hmtJDBqAsMSGEcCwxMYLYHRExgJ73n//Hf3xaH9TbEUyuc/9x/8Ia+vjP8vo6RQUn76w79A+ceT85vSUig9hTJSKDOF8o335R9P3u4/Z5cUSk2hWArlSKF4CqWlUHoKZaRQZgrlC+/+Px8l3UdHSgqlplAshXKkUDyF0lIoPYUyUihfePf/+ZDwpqwMyrNj5F/HHBn/bVGL52BaDqbnYFYK5gsnAn+EqTkYy8HEvze1Xh+uHffHxnjxoauX21lftxdHfed9Vqzi//u3T2f//Ue5p/hUFV+q4tdvsYR5lTU3WfND1txlzZuseZc1l92gVXaFVtkdarI71GR3qMnuUJPdoSa7Q012h1rYDr0TRjjh453Ubn9T9eaXhBVNOEo4oYYTLJzw8Wybt5fH53FJ8HBCCyf0cMKn73Qrtw+kWpmXhBlOWNEEL+GEGk749Le12e1Lm10Tejjh0590P26nLnqzK0Ir4YTw71L7+J2+f8jc2rgkzHDCiib0Ek6o4QQLJxzhBA8ntHBCDyd88Z3u/ZIwwwmfv9P3yTcuCePjd/o+vZ8RajjBwgmfvtP9fnK1l3VJ8HBCCyf0cMIIJ3z8Tq92I9RySVjRhFnCCTWcYOGEI5zg4YQWTujhhPFFwuU7PWc44fN3+naSrtslYX38Tt8/Dn1GqOEECyd8vKdf/bfo8nBCCyf0cMIIJ8xwQvgnJ08OlH4NYU9Oq/3LyynLbfhVr/UKUpOvV/7ibUP27KyTjL1J2x/S9i5t36Ttu7T9kLaf0vZL2d6kd61J71qT3rUmvWtNetea9K416V1r0rvWpHetsezam9DBsj7vQskb8YvXg9mzU28y9oe0vUvbN2n7Lm0/pO2ntP1StvcibS+9a11617r0rnXpXevSu9ald61L71qX3rUuvWsby669C7Gsz7sQy0a8C7EsubsQy966C7GsorsQy3a5C7EsjLsQyw64C7GM9ZtQZ5vUPfm1f3Uxsz1LlPyuElc79T6uVem+S8P4lA4+pexG+BeXYduzrMTvKk0+pUWnNAufUvpc+uf7nu1ZQOR3lQ4+JedTanxKnU9p8ClNPqVFp7QKn1L29H5xL7g9iwL9rtLBp+R8So1PqfMpDT6lyae06JSe3fEf6PTPhQDbqRI6GaFTo/tA51kvwe86DUInvg/janYy8EdORuh0EDo5oRPbfJqibRanuOZV3Ke45k3cp7homwXMNW/ihrnmTdww17yJG+Yua655EzfMNdssYC67QUXbLGAuu0NF2yxgLrtDRdssYC67Q0XbLGAuu0OD2yxAGOGE2DYLEFY0IbjNAoQaTrBwQmybBQgeTmjhhB5OiG2zAGGGE1Y0IbjNAoQaTohtswChhxNi72Q8CcFtFiCEf5eC2yxAmOGEFU0IbrMAoYYTLJxwhBM8nNDCCT2cENtmAcIMJ8S2WeDPWbFtFiDUcIKFE2LbLEDwcEILJ/RwwggnxLZZgLCiCcFtFiDUcIKFE45wgocTWjihhxNi2yxAmOGE2DYLHIKIbbMAoYYTLJwQ22YBgocTWjihhxNGOGGGE8I/OYluszhGQpvFCRFus4C97g3bsNe9YRv2ujdsw96l7XVv2Ia97g3bsNe9YRv2ujdsw163zeK0F26zgL30rhVus4C99K4VbrOAvfSuFW6zgL30rhVus4A9VZvFKcTVZgEh3Ru2Ya97wzbsdW/Yhr1L2+vesA173Ru2Ya97wzbsdW/Yhr3uDdunvXCbBeyld61wmwXspXetcJsF7KV3rXCbBeyld61wmwXspXctV5sFhKjaLCBE1WYBIao2Cwix7K27EFWbBYSo2iwgRNVmASGqNgsIUbVZnEJcbRYQSn7tX133DyWyNgsokV2gh+NaZG0WUCJrs4ASWZsFlMjaLKBE1mYBJbI2CyiRtVmcSmxtFlAia7OAElmbBZTI2iyg5HxKZG0WUCJrs4ASWZsFlMjaLKBE1mZxKrG1WUCJrM0CSmRtFlAia7OAkvMpkbVZQImszQJKZG0WUCJrs4ASWZvFjjKRtVlsJ7I2i+1E1maxnchui99OZG0W24mszWI78X0YR9dmsZ3I2iy2E1mbxXZyQiey+eSekA8+IcL5YNjrZpZgr5tZgr1uZgn2Lm2vm1mCvW5mCfa6mSXY62aWYK+bDz7thfPBsJfetcL5YNhL71rhfDDspXetcD4Y9tK7VjgfDHuqfPApxJUPhpBuZgn2upkl2OtmlmDv0va6mSXY62aWYK+bWYK9bmYJ9rqZpdNeOB8Me+ldK5wPhr30rhXOB8NeetcK54NhL71rhfPBsJfetVz5YAhR5YMhRJUPhhBVPhhCLHvrLkSVD4YQVT4YQlT5YAhR5YMhRJUPPoW48sEQSn7tXwUooUSWD4YS2ZFEHNciywdDiSwfDCWyfDCUyPLBUCLLB0OJLB8MJbJ88KnElg+GElk+GEpk+WAokeWDoeR8SmT5YCiR5YOhRJYPhhJZPhhKZPngU4ktHwwlsnwwlMjywVAiywdDyfmUyPLBUCLLB0OJLB8MJbJ8MJTI8sE7ykSWD95OZPng7USWD95OfPk7unzwdiLLB28nvg/j6PLB24ksH7ydyPLB28kJncjmU7P/fNrj7OWm4/bCZt4H+Cr++FJ746/jp/hUFV+q4rXImldZc5M1P2TNXda8yZp3WXPZDVplV2iV3aEmu0NNdoea7A412R1qsjvUZHeohe3QO2GEEz7eSe12UsebXxJWNOEo4YQaTrBwwsezbd5eHp/HJcHDCS2c0MMJn77TrYy/vrSVeUmY4YQVTfASTqjhhE9/W5vdvrTZNaGHEz79SffjdtStN7sitBJOCP8utY/fab//LrVxSZjhhBVN6CWcUMMJFk44wgkeTmjhhB5O+OI73fslYYYTPn+n75NvXBLGx+/0fXo/I9RwgoUTPn2n+z0P0cu6JHg4oYUTejhhhBM+fqfX7fLnXsslYUUTZgkn1HCChROOcIKHE1o4oYcTxhcJl+/0nOGEz9/p24mWbpeE9fE7ff849BmhhhMsnPDxnn7136LLwwktnNDDCSOcMMMJ4Z+cPDk6/TVEt4Q2i27KbRbdlNssuim3WXRTbrPoptxm0U25zaKbcptFN+U2i27KbRbdlNssuim3WXRTbrPoptxm0U25zaKbcptFN+U2i27KbRbdlNssuim3WXQja7PoRtZm0U25zaKbcptFN+U2i27KbRbdlNssuim3WXRTbrPoptxm0U25zaKbcptFN+U2C9hL71rhNgvYS+9a4TaLbsptFrCX3rXCbRbdlNssupG1WUCIqs0CQlRtFhCiarOAEMveugtRtVl0I2uz6EbWZtGNrM2iG1mbRTeyNotudG0W3ejaLLrRtVl0o2uz6EbXZtGNrs2iG12bRTe6NotudG0W3ejaLLrRtVl0o2uz6EbXZtGNrs2iG12bRTe6NotudG0W3ejaLLrRtVl0o2uz6EbXZtGNrs2iG12bRTe6NotudG0W3ejaLLrRtVl0o2uz6EbXZtGNrs2iG1+bxXYia7PYTmRtFtuJ7Lb47UTWZrGdyNosthPfh3F0bRbbiazNYjuRtVlsJyd0YptPS7TN4hTXvIr7FNe8ifsUF22zgLnmTdww17yJG+aaN3HD3GXNNW/ihrlmmwXMZTeoaJsFzGV3qGibBcxld6homwXMZXeoaJsFzGV3aHCbBQgjnBDbZgHCiiYEt1mAUMMJFk6IbbMAwcMJLZzQwwmxbRYgzHDCiiYEt1mAUMMJsW0WIPRwQuydjCchuM0ChPDvUnCbBQgznLCiCcFtFiDUcIKFE45wgocTWjihhxNi2yxAmOGE2DYL/Dkrts0ChBpOsHBCbJsFCB5OaOGEHk4Y4YTYNgsQVjQhuM0ChBpOsHDCEU7wcEILJ/RwQmybBQgznBDbZoFDELFtFiDUcIKFE2LbLEDwcEILJ/RwwggnzHBC+Ccn0W0WYya0WZwQ4TYL2OvesA173Ru2Ya97wzbsXdpe94Zt2OvesA173Ru2Ya97wzbsddssTnvhNgvYS+9a4TYL2EvvWuE2C9hL71rhNgvYS+9a4TYL2FO1WZxCXG0WENK9YRv2ujdsw173hm3Yu7S97g3bsNe9YRv2ujdsw173hm3Y696wfdoLt1nAXnrXCrdZwF561wq3WcBeetcKt1nAXnrXCrdZwF5613K1WUCIqs0CQlRtFhCiarOAEMveugtRtVlAiKrNAkJUbRYQomqzgBBVm8UpxNVmAaHk1/7Vdf9QImuzgBLZBXo4rkXWZgElsjYLKJG1WUCJrM0CSmRtFlAia7OAElmbxanE1mYBJbI2CyiRtVlAiazNAkrOp0TWZgElsjYLKJG1WUCJrM0CSmRtFqcSW5sFlMjaLKBE1mYBJbI2Cyg5nxJZmwWUyNosoETWZgElsjYLKJG1WewoE1mbxXYia7PYTmRtFtuJ7Lb47UTWZrGdyNosthPfh3F0bRbbiazNYjuRtVlsJyd0IptPsyXkg0+IcD4Y9rqZJdjrZpZgr5tZgr1L2+tmlmCvm1mCvW5mCfa6mSXY6+aDT3vhfDDspXetcD4Y9tK7VjgfDHvpXSucD4a99K4VzgfDnioffApx5YMhpJtZgr1uZgn2upkl2Lu0vW5mCfa6mSXY62aWYK+bWYK9bmbptBfOB8NeetcK54NhL71rhfPBsJfetcL5YNhL71rhfDDspXctVz4YQlT5YAhR5YMhRJUPhhDL3roLUeWDIUSVD4YQVT4YQlT5YAhR5YNPIa58MISSX/tXAUookeWDoUR2JBHHtcjywVAiywdDiSwfDCWyfDCUyPLBUCLLB0OJLB98KrHlg6FElg+GElk+GEpk+WAoOZ8SWT4YSmT5YCiR5YOhRJYPhhJZPvhUYssHQ4ksHwwlsnwwlMjywVByPiWyfDCUyPLBUCLLB0OJLB8MJbJ88I4ykeWDtxNZPng7keWDtxNf/o4uH7ydyPLB24nvwzi6fPB2IssHbyeyfPB2ckInqvm0bJUnYahjlL+ec3s8ds6y+3PXMaQfPFfffM7efO7418+d6/Y4nmQeRrn9qEZ7FJSfL8DfHhzvPjjffXC9+eD1YfifPFjffdDeffDy5zjL7ec4y7MH/d0H27sP9ncfHO8+ON99cL354PU50Hn/HPmcd08erO8+aO8+eLz7oL/7YHv3wf7ug9e/OXPcHlz9yYPz3QfXmw9en2r6yYP13Qft3QePdx+8/M1Z9fZarfrktbo+HfOTB/u7D453H5zvPrjefPD6lMVPHqwvHrQnP8du7z54vPvg9W/OcZsAy59MgOvjFT95sL/74Hj3wfnug+vNB0d598Hr35x+/1d1cf+vJ//n33zxA2M5mCMH4zmYloPpOZiRg5k5mJWCuT4o8X1MzhSYOVNg5kyBmTMFZs4UmDlTYOZMgZkzBWbOFFg5U2DlTIGVMwVWzhRYOVNg5UyBlTMFVs4UWDlTYOVMgSd/uA3g1CSOJXGOJI4ncVoSpydxRhJnJnGS5kFNmgc1aR7UpHlQk+ZBTZoHNWke1KR5UJPmQU2aBzVpHljSPLCkeWBJ88CS5oElzQNLmgeWNA8saR5Y0jywpHlwJM2DI2keHEnz4EiaB0fSPDiS5sGRNA+OpHlwJM2DI2keeNI88KR54EnzwJPmgSfNA0+aB540DzxpHnjSPPCkedCS5kFLmgctaR60pHnQkuZBS5oHLWketKR50JLmQUuaBz1pHvSkedCT5kFPmgc9aR70pHnQk+ZBT5oHPWke9KR5MJLmQdIZxJp0CLEmnUKsSccQa9I5xJp0ELEmnUSsSUcRa9JZxJp0GLEmnUasSccRa9J5xJp0ILEmnUisSUcSa9KZxJp0KLEmnUqsSccSa9K5xJp0MLEmnUysSUcTa9LZxJp0OLEmnU6sSccTa9L5REs6n2hJ5xMt6XyiJZ1PtOJJnJbE6UmckcSZSZykeZB0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+URLOp9oSecTLel8oiWdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+UT7wnm+Vm4337T6t5t0+9+vP/zCcb6fYL5w+q3ZHXO0ZxjLwRw5GM/BtBzMv108f3t0vP3oF44h/OT3+wunEH6EaTmYnoPJGXFfOIHQ/HYpeWv2DLNSMF84f/AjTM3BWA7mC1PgmHfM8QzjOZiWg+k5mJGDmTmYlbJMv3Dq4EeYnH+2rZx/tq2cf7Z94cTBjzA5/2z7wnmDH2FGDmbmYFKmwFFKDqbmYCwHc+RgPAfTcjA9BzNyMDMHkzMFas4UqDlToOZMgZozBWrOFKg5U6DmTIGaMwVqzhSoOVPAcqaA5UwBy5kCljMFLGcKWM4UsJwpYAlTYP3nuiKv+a38o7b+X127/x8y2+3zpznrP39prfNub/a3jxDsITTZhBab0PW/d37VqNIZGZ3RQWfkdEaNzqjTGdFN7Eo3sivdzDa6mW10M9voZrbRzWyjm9lGN7MtcGY/ICMD8vlkXaX+9bXrKF/43i42o6PQGVU6I6MzOuiMnM6o0Rl1OqNBZ0Q3sw+6me10M9vpZrbTzWynm9lON7OdbmY73cz2wJn9gMwMyEqAtJIBqRkQy4AcGRDPgLQMSM+AZLzx/fNf4VrKcfviUu0aYzmYz3/41fwxi/v1Jwx9pfy/GSUHk/MrMPwLmL7umNmvMS0H03MwIwczczDfeG96fWDGJWaWHEzNwVgO5sjBeA6m5WB6DmbkYGYO5gtToFa/fXH163/ZrJKDqTkYy8EcORjPwbQcTM/BjBzMF6ZAHXbHzHmNWSmYJ83fAZwj5T89avEkTkvi9CTOyuF84Zzhzzg1iWNJnIT3x+v1yd1xf26MFx/Vermled3aP3/pvE+NVR5njs/PdN/4APg0n7LmS9b8+mXWUK+66qarfuiqu65601Xvuuq6u7TqLtOqu01Nd5ua7jY13W1qutvUdLep6W5TC9umD8SIR3y8ndrtr7He/BqxwhFHiUfUeITFIz6ecvP2Evk8rhEej2jxiB6P+PTtbuX2eVUr8xox4xErHOElHlHjEZ/+0ja7fWmzJ4gej/j0x92P29GN3uwS0Uo8Iv4b1T5+u++fRrc2rhEzHrHCEb3EI2o8wuIRRzzC4xEtHtHjEV98u3u/Rsx4xOdv930MjmvE+Pjtvg/zp4gaj7B4xKdvd78fi+1lXSM8HtHiET0eMeIRH7/dq90QtVwjVjhilnhEjUdYPOKIR3g8osUjejxifBFx/XbPGY/4/O2+Hc/rdo1YH7/d909RnyJqPMLiER/v7pf/xbo8HtHiET0eMeIRMx4R/zHLk9Oq32O0Jyfgaj/uB4N7e/FHm+rlNglP6XpJeXIM8t9hfN4x49Ufkr54G1J7dnpKR9+09Q9tfdfWb9r6XVt/aOtPbf0lrW/aW9e0t65pb13T3rqmvXVNe+ua9tY17a1r2lvXWLbu3ehgWaQPo+Td+M3ry9qzc3Q6+oe2vmvrN239rq0/tPWntv6S1veira+9dV1767r21nXtrevaW9e1t65rb13X3rquvXUby9Z9GLEs0ocRy258GLGsu4cRywZ7GLEspYcRy555GLGsjocRyzZ4GLEM+LtRp5vZPfntf3mLdHsWVfllp+Tf7pf3nLVnAYzf/T4NI3Q6CJ16ttOLq7vbs/jFLztNQqfF5zQLoVP6fHpxMXV7ljn5ZaeD0MkJnRqhUyd0GoROk9Bp8TmtQuiUPcdf3WDenqWLftnpIHRyQqdG6NQJnQah0yR0WnxOzzoJAqVeFBhsqcooZYxSje/znmc9Cr8sNRilCD+uq9mBw59JGaPUwSjljFJ0c2qq9m+c5qJXhp/mojeGn+aq/RtQF70xHOqiN4ZDXfTGcKi7rrrojeFQF+3fgLruLlXt34C67jZV7d+Auu42Ve3fgLruNlXt34C67jaN7t8AYsQjgvs3gFjhiOj+DSBqPMLiEcH9G0B4PKLFI3o8Irh/A4gZj1jhiOj+DSBqPCK4fwOIHo8IvhjyRET3bwAR/42K7t8AYsYjVjgiun8DiBqPsHjEEY/weESLR/R4RHD/BhAzHhHcv4G/gQX3bwBR4xEWjwju3wDC4xEtHtHjESMeEdy/AcQKR0T3bwBR4xEWjzjiER6PaPGIHo8I7t8AYsYjgvs3cJYiuH8DiBqPsHhEcP8GEB6PaPGIHo8Y8YgZj4j/mCW8f6OPjP6Nk6LcvwF94ZvAoS98Ezj0hW8Ch75r6wvfBA594ZvAoS98Ezj0hW8Ch75w/8apr9y/AX3travcvwF97a2r3L8Bfe2tq9y/AX3travcvwF9rv6N04isfwNGwjeBQ1/4JnDoC98EDn3X1he+CRz6wjeBQ1/4JnDoC98EDn3hm8BPfeX+Dehrb13l/g3oa29d5f4N6GtvXeX+Dehrb13l/g3oa29dsv4NGHH1b8CIq38DRlz9GzBi2WAPI67+DRhx9W/AiKt/A0Zc/Rsw4urfOI3I+jdglPz2v+wmgBNb/wac2C70wykvtv4NOLH1b8CJrX8DTmz9G3Bi69+AE1v/BpzY+jdOJ7r+DTix9W/Aia1/A05s/RtwckIntv4NOLH1b8CJrX8DTmz9G3Bi6984nej6N+DE1r8BJ7b+DTix9W/AyQmd2Po34MTWvwEntv4NOLH1b8CJrX9jZ6PY+je2FFv/xpZi69/YUmz32m8ptv6NLcXWv7GlCD+u4+vf2FJs/Rtbiq1/Y0s5oxTbnBqekT4+KcrpY+gL56CgL5yDgr5wDgr6rq0vnIOCvnAOCvrCOSjoC+egoC+cPj71ldPH0NfeusrpY+hrb13l9DH0tbeucvoY+tpbVzl9DH2u9PFpRJY+hpFwDgr6wjko6AvnoKDv2vrCOSjoC+egoC+cg4K+cA4K+sI5qFNfOX0Mfe2tq5w+hr721lVOH0Nfe+sqp4+hr711ldPH0NfeumTpYxhxpY9hxJU+hhFX+hhGLBvsYcSVPoYRV/oYRlzpYxhxpY9hxJU+Po3I0scwSn77XyYz4cSWPoYT23FGnPJiSx/DiS19DCe29DGc2NLHcGJLH8OJLX0MJ7b08elElz6GE1v6GE5s6WM4saWP4eSETmzpYzixpY/hxJY+hhNb+hhObOnj04kufQwntvQxnNjSx3BiSx/DyQmd2NLHcGJLH8OJLX0MJ7b0MZzY0sc7G8WWPt5SbOnjLcWWPt5ShKk+vvTxlmJLH28pwo/r+NLHW4otfbyl2NLHW8oZpdjm1LT/fNpD7eXm4/ZCZ95H+Sr++FJ752/qp/mUNV+y5rXoqlddddNVP3TVXVe96ap3XXXdXVp1l2nV3aamu01Nd5ua7jY13W1qutvUdLephW3TB2LEIz7eTu12xsebXyNWOOIo8Ygaj7B4xMdTbt5eIp/HNcLjES0e0eMRn77drYy/vrSVeY2Y8YgVjvASj6jxiE9/aZvdvrTZE0SPR3z64+7H7bxcb3aJaCUeEf+Nah+/3X7/jWrjGjHjESsc0Us8osYjLB5xxCM8HtHiET0e8cW3u/drxIxHfP5238fguEaMj9/u+zB/iqjxCItHfPp293vYopd1jfB4RItH9HjEiEd8/Hav273UvZZrxApHzBKPqPEIi0cc8QiPR7R4RI9HjC8irt/uOeMRn7/dt6Mx3a4R6+O3+/4p6lNEjUdYPOLj3f3yv1iXxyNaPKLHI0Y8YsYj4j9meXIy+3uMZRn9G8uk+zeWSfdvLJPu31gm3b+xTLp/Y5l0/8Yy6f6NZdL9G8uk+zeWSfdvLJPu31gm3b+xTLp/Y5l0/8Yy6f6NZdL9G8uk+zeWSfdvLJPu31jG1r+xjK1/Y5l0/8Yy6f6NZdL9G8uk+zeWSfdvLJPu31gm3b+xTLp/Y5l0/8Yy6f6NZdL9G9DX3rrK/RvQ1966yv0by6T7N6CvvXWV+zeWSfdvLGPr34ARV/8GjLj6N2DE1b8BI5YN9jDi6t9Yxta/sYytf2MZW//GMrb+jWVs/RvL+Po3lvH1byzj699Yxte/sYyvf2MZX//GMr7+jWV8/RvL+Po3lvH1byzj699Yxte/sYyvf2MZX//GMr7+jWV8/RvL+Po3lvH1byzj699Yxte/sYyvf2MZX//GMr7+jWV8/RvL+Po3lvH1byzj699Yxte/sYyvf2MZX//GMsL+jS3F1r+xpdj6N7YU2732W4qtf2NLsfVvbCnCj+v4+je2FFv/xpZi69/YUs4oRTenlmr/xmkuemX4aS56Y/hprtq/AXXRG8OhLnpjONRFbwyHuuuqi94YDnXR/g2o6+5S1f4NqOtuU9X+DajrblPV/g2o625T1f4NqOtu0+j+DSBGPCK4fwOIFY6I7t8AosYjLB4R3L8BhMcjWjyixyOC+zeAmPGIFY6I7t8AosYjgvs3gOjxiOCLIU9EdP8GEPHfqOj+DSBmPGKFI6L7N4Co8QiLRxzxCI9HtHhEj0cE928AMeMRwf0b+BtYcP8GEDUeYfGI4P4NIDwe0eIRPR4x4hHB/RtArHBEdP8GEDUeYfGIIx7h8YgWj+jxiOD+DSBmPCK4fwNnKYL7N4Co8QiLRwT3bwDh8YgWj+jxiBGPmPGI+I9Zovs3rMyE/g1QhPs3tr7uTeBbX/cm8K2vexP41ndtfd2bwLe+7k3gW1/3JvCtr3sT+NbX7d+AvnD/xtbX3rrC/RtbX3vrCvdvbH3trSvcv7H1tbeucP/G1qfq34ARV//GNtK9CXzr694EvvV1bwLf+q6tr3sT+NbXvQl86+veBL71dW8C3/q6N4FDX7h/Y+trb13h/o2tr711hfs3tr721hXu39j62ltXuH9j62tvXa7+jW1E1b+xjaj6N7YRVf/GNmLZYA8jqv6NbUTVv7GNqPo3thFV/8Y2ourfgBFX/8Y2Sn77X3UTbCey/o3tRHah3z7lRda/sZ3I+je2E1n/xnYi69/YTmT9G9uJrH9jO5H1b8CJrX9jO5H1b2wnsv6N7UTWv7GdnNCJrH9jO5H1b2wnsv6N7UTWv7GdyPo34MTWv7GdyPo3thNZ/8Z2Iuvf2E5O6ETWv7GdyPo3thNZ/8Z2Iuvf2E5k/Rt/slFk/Rt/pMj6N/5IkfVv/JEiu9f+jxRZ/8YfKbL+jT9ShB/X0fVv/JEi69/4I0XWv/FHyhml2OZUbRnp45OinD6GvnAOCvrCOSjoC+egoO/a+sI5KOgL56CgL5yDgr5wDgr6wunjU185fQx97a2rnD6GvvbWVU4fQ1976yqnj6GvvXWV08fQ50ofn0Zk6WMYCeegoC+cg4K+cA4K+q6tL5yDgr5wDgr6wjko6AvnoKAvnIM69ZXTx9DX3rrK6WPoa29d5fQx9LW3rnL6GPraW1c5fQx97a1Llj6GEVf6GEZc6WMYcaWPYcSywR5GXOljGHGlj2HElT6GEVf6GEZc6ePTiCx9DKPkt/9lMhNObOljOLEdZ8QpL7b0MZzY0sdwYksfw4ktfQwntvQxnNjSx3BiSx+fTnTpYzixpY/hxJY+hhNb+hhOTujElj6GE1v6GE5s6WM4saWP4cSWPj6d6NLHcGJLH8OJLX0MJ7b0MZyc0IktfQwntvQxnNjSx3BiSx/DiS19vLNRbOnjLcWWPt5SbOnjLUWY6uNLH28ptvTxliL8uI4vfbyl2NLHW4otfbylnFGKbU7ZeJI+bj5uD7Y+/pnyzbPnp9BkE1psQk+i3L9pVOmMjM7ooDNyOqNGZ9TpjOgmdqUb2ZVuZhvdzDa6mW10M9voZrbRzWyjm9kWOLMfkJEB+XyyfvMgK4wWm9FR6IwqnZHRGR10Rk5n1OiMOp3RoDOim9kH3cx2upntdDPb6Wa2081sp5vZTjeznW5me+DMfkBmBmQlQFrJgNQMiGVAjgyIZ0BaBqRnQDLe+P75r/DLMAAwloP5/If/kz//9ZXy/2aUHEzOr8DwL2BeHMkHpuVgeg5m5GBmDuYb782L07z4Y3jJwdQcjOVgjhyM52BaDqbnYEYOZuZgvjAFXp1PxQmUkoOpORjLwRw5GM/BtBxMz8GMHMwXpsCr88fArBTMs1Pq3+ccKf/pUYsncVoSpydxVg7nC+cMf8apSRxL4mS8P+v65O64PzfGi49qvdxOEru9OEg871NjFf/fv32m+84HwOv6iK+E+ZI1v36ZNdSrrrrpqh+66q6r3nTVu6667i6tusu06m5T092mprtNTXebmu42Nd1tarrb1MK26QMx4hEfb6d2+2usN79GrHDEUeIRNR5h8YiPp9y8vUQ+j2uExyNaPKLHIz59u1u5fV7VyrxGzHjECkd4iUfUeMSnv7TNbl/a7AmixyM+/XH343Z0oze7RLQSj4j/RrWP3+77p9GtjWvEjEescEQv8Ygaj7B4xBGP8HhEi0f0eMQX3+7erxEzHvH5230fg+MaMT5+u+/D/CmixiMsHvHp293vx2J7WdcIj0e0eESPR4x4xMdv92o3RC3XiBWOmCUeUeMRFo844hEej2jxiB6PGF9EXL/dc8YjPn+7b8fzul0j1sdv9/1T1KeIGo+weMTHu/vlf7Euj0e0eESPR4x4xIxHxH/M8uS06vcYx5MTcP/yOs1ym4TVa72k1OTLob95G9Lx7PSUjr5p6x/a+q6t37T1u7b+0Naf2vpLWt+0t65pb13T3rqmvXVNe+ua9tY17a1r2lvXtLeusWzdu9HBskgfRsm78ZvXlx3PztHp6B/a+q6t37T1u7b+0Naf2vpLWt+Ltr721nXtrevaW9e1t65rb13X3rquvXVde+u69tZtLFv3YcSySB9GLLvxYcSy7h5GLBvsYcSylB5GLHvmYcSyOh5GLNvgYcQy4O9GnW5m9+S3/+Ut0sezqMovO7FVcR/PAhi/+30aRuh0EDr1bKcXV3cfz+IXv+w0CZ0Wn9MshE7p8+nFxdTHs8zJLzsdhE5O6NQInTqh0yB0moROi89pFUKn7Dn+6gbz41m66JedDkInJ3RqhE6d0GkQOk1Cp8Xn9KyTIFDqRYHBlqqMUsYo1fg+73nWo/DLUoNRivDjupodOPyZlDFKHYxSzijFNqe8q/ZvnOaiV4af5qI3hp/mqv0bUBe9MRzqojeGQ130xnCou6666I3hUBft34C67i5V7d+Auu42Ve3fgLruNlXt34C67jZV7d+Auu42je7fAGLEI4L7N4BY4Yjo/g0gajzC4hHB/RtAeDyixSN6PCK4fwOIGY9Y4Yjo/g0gajwiuH8DiB6PCL4Y8kRE928AEf+Niu7fAGLGI1Y4Irp/A4gaj7B4xBGP8HhEi0f0eERw/wYQMx4R3L+Bv4EF928AUeMRFo8I7t8AwuMRLR7R4xEjHhHcvwHECkdE928AUeMRFo844hEej2jxiB6PCO7fAGLGI4L7N3CWIrh/A4gaj7B4RHD/BhAej2jxiB6PGPGIGY+I/5glvH+jtYz+jZOi3L8BfeGbwKEvfBM49IVvAoe+a+sL3wQOfeGbwKEvfBM49IVvAoe+cP/Gqa/cvwF97a2r3L8Bfe2tq9y/AX3travcvwF97a2r3L8Bfa7+jdOIrH8DRsI3gUNf+CZw6AvfBA5919YXvgkc+sI3gUNf+CZw6AvfBA594ZvAT33l/g3oa29d5f4N6GtvXeX+Dehrb13l/g3oa29d5f4N6GtvXbL+DRhx9W/AiKt/A0Zc/RswYtlgDyOu/g0YcfVvwIirfwNGXP0bMOLq3ziNyPo3YJT89r/sJoATW/8GnNgu9MMpL7b+DTix9W/Aia1/A05s/RtwYuvfgBNb/wac2Po3Tie6/g04sfVvwImtfwNObP0bcHJCJ7b+DTix9W/Aia1/A05s/RtwYuvfOJ3o+jfgxNa/ASe2/g04sfVvwMkJndj6N+DE1r8BJ7b+DTix9W/Aia1/Y2ej2Po3thRb/8aWYuvf2FJs99pvKbb+jS3F1r+xpQg/ruPr39hSbP0bW4qtf2NLOaMU25zqlpE+PinK6WPoC+egoC+cg4K+cA4K+q6tL5yDgr5wDgr6wjko6AvnoKAvnD4+9ZXTx9DX3rrK6WPoa29d5fQx9LW3rnL6GPraW1c5fQx9rvTxaUSWPoaRcA4K+sI5KOgL56Cg79r6wjko6AvnoKAvnIOCvnAOCvrCOahTXzl9DH3traucPoa+9tZVTh9DX3vrKqePoa+9dZXTx9DX3rpk6WMYcaWPYcSVPoYRV/oYRiwb7GHElT6GEVf6GEZc6WMYcaWPYcSVPj6NyNLHMEp++18mM+HElj6GE9txRpzyYksfw4ktfQwntvQxnNjSx3BiSx/DiS19DCe29PHpRJc+hhNb+hhObOljOLGlj+HkhE5s6WM4saWP4cSWPoYTW/oYTmzp49OJLn0MJ7b0MZzY0sdwYksfw8kJndjSx3BiSx/DiS19DCe29DGc2NLHOxvFlj7eUmzp4y3Flj7eUoSpPr708ZZiSx9vKcKP6/jSx1uKLX28pdjSx1vKGaXY5tQo//m0h9rLzcfthc68j/JV/PGl9s7f1E/zKWu+ZM1r0VWvuuqmq37oqruuetNV77rquru06i7TqrtNTXebmu42Nd1tarrb1HS3qeluUwvbpg/EiEd8vJ3a7YyPN79GrHDEUeIRNR5h8YiPp9y8vUQ+j2uExyNaPKLHIz59u1sZf31pK/MaMeMRKxzhJR5R4xGf/tI2u31psyeIHo/49Mfdj9t5ud7sEtFKPCL+G9U+frv9/hvVxjVixiNWOKKXeESNR1g84ohHeDyixSN6POKLb3fv14gZj/j87b6PwXGNGB+/3fdh/hRR4xEWj/j07e73sEUv6xrh8YgWj+jxiBGP+PjtXrd7qXst14gVjpglHlHjERaPOOIRHo9o8YgejxhfRFy/3XPGIz5/u29HY7pdI9bHb/f9U9SniBqPsHjEx7v75X+xLo9HtHhEj0eMeMSMR8R/zPLkZPb3GLNk9G/MIt2/MYt0/8Ys0v0bs0j3b8wi3b8xi3T/xizS/RuzSPdvzCLdvzGLdP/GLNL9G7NI92/MIt2/MYt0/8Ys0v0bs0j3b8wi3b8xi3T/xizS/RuzsPVvzMLWvzGLdP/GLNL9G7NI92/MIt2/MYt0/8Ys0v0bs0j3b8wi3b8xi3T/xizS/RuzSPdvQF976yr3b0Bfe+sq92/MIt2/AX3travcvzGLdP/GLGz9GzDi6t+AEVf/Boy4+jdgxLLBHkZc/RuzsPVvzMLWvzELW//GLGz9G7Ow9W/Mwte/MQtf/8YsfP0bs/D1b8zC178xC1//xix8/Ruz8PVvzMLXvzELX//GLHz9G7Pw9W/Mwte/MQtf/8YsfP0bs/D1b8zC178xC1//xix8/Ruz8PVvzMLXvzELX//GLHz9G7Pw9W/Mwte/MQtf/8YsfP0bs/D1b8zC178xC1//xiyE/Rtbiq1/Y0ux9W9sKbZ77bcUW//GlmLr39hShB/X8fVvbCm2/o0txda/saWcUYpuTg3V/o3TXPTK8NNc9Mbw01y1fwPqojeGQ130xnCoi94YDnXXVRe9MRzqov0bUNfdpar9G1DX3aaq/RtQ192mqv0bUNfdpqr9G1DX3abR/RtAjHhEcP8GECscEd2/AUSNR1g8Irh/AwiPR7R4RI9HBPdvADHjESscEd2/AUSNRwT3bwDR4xHBF0OeiOj+DSDiv1HR/RtAzHjECkdE928AUeMRFo844hEej2jxiB6PCO7fAGLGI4L7N/A3sOD+DSBqPMLiEcH9G0B4PKLFI3o8YsQjgvs3gFjhiOj+DSBqPMLiEUc8wuMRLR7R4xHB/RtAzHhEcP8GzlIE928AUeMRFo8I7t8AwuMRLR7R4xEjHjHjEfEfs4T3b6ye0b9xUpT7N6AvfBM49IVvAoe+8E3g0HdtfeGbwKEvfBM49IVvAoe+8E3g0Bfu3zj1lfs3oK+9dZX7N6CvvXWV+zegr711lfs3oK+9dZX7N6DP1b9xGpH1b8BI+CZw6AvfBA594ZvAoe/a+sI3gUNf+CZw6AvfBA594ZvAoS98E/ipr9y/AX3travcvwF97a2r3L8Bfe2tq9y/AX3travcvwF97a1L1r8BI67+DRhx9W/AiKt/A0YsG+xhxNW/ASOu/g0YcfVvwIirfwNGXP0bpxFZ/waMkt/+l90EcGLr34AT24V+OOXF1r8BJ7b+DTix9W/Aia1/A05s/RtwYuvfgBNb/8bpRNe/ASe2/g04sfVvwImtfwNOTujE1r8BJ7b+DTix9W/Aia1/A05s/RunE13/BpzY+jfgxNa/ASe2/g04OaETW/8GnNj6N+DE1r8BJ7b+DTix9W/sbBRb/8aWYuvf2FJs/Rtbiu1e+y3F1r+xpdj6N7YU4cd1fP0bW4qtf2NLsfVvbClnlCKbU0c5EtLHoAinj7e+bg5q6+vmoLa+bg5q67u2vm4Oauvr5qC2vm4Oauvr5qC2vm76GPrC6eOtr711hdPHW1976wqnj7e+9tYVTh9vfe2tK5w+3vpU6WMYcaWPt5FuDmrr6+agtr5uDmrru7a+bg5q6+vmoLa+bg5q6+vmoLa+bg4K+sLp462vvXWF08dbX3vrCqePt7721hVOH2997a0rnD7e+tpblyt9vI2o0sfbiCp9vI2o0sfbiGWDPYyo0sfbiCp9vI2o0sfbiCp9vI2o0scw4kofb6Pkt/9VMnM7kaWPtxPZccZ9yossfbydyNLH24ksfbydyNLH24ksfbydyNLH24ksfQwntvTxdiJLH28nsvTxdiJLH28nJ3QiSx9vJ7L08XYiSx9vJ7L08XYiSx/DiS19vJ3I0sfbiSx9vJ3I0sfbyQmdyNLH24ksfbydyNLH24ksfbydyNLHf7JRZOnjP1Jk6eM/UmTp4z9ShKk+uvTxHymy9PEfKcKP6+jSx3+kyNLHf6TI0sd/pJxRimxO9ac5gVFuSqM9ysTPH/XfHhzvPjjffXC9+eD14fGfPFjffdDeffDyZZql/PXgLM8e9HcfbO8+2N99cLz74Hz3wfXmg9enJef949Q55pMH67sP2rsPHu8+6O8+2N59sL/74PVvzhy3B1d/8uB898H15oPXJ35+8mB990F798Hj3Qcvf3NWvb1Wqz55ra4Pjfzkwf7ug+PdB+e7D643H7w+d/CTB+uLB+3Jz7Hbuw8e7z54/Ztz3CbA8icT4Pq4wU8e7O8+ON59cL774HrzwVHeffD6N6ff//VY3P/ryf/5N1/8wFgO5sjBeA6m5WB6DmbkYGYOZqVgrs8LfB+TMwVmzhSYOVNg5kyBmTMFZs4UmDlTYOZMgZkzBVbOFFg5U2DlTIGVMwVWzhRYOVNg5UyBlTMFVs4UWDlT4MnfKgM4NYljSZwjieNJnJbE6UmckcSZSZykeVCT5kFNmgc1aR7UpHlQk+ZBTZoHNWke1KR5UJPmQU2aB5Y0DyxpHljSPLCkeWBJ88CS5oElzQNLmgeWNA8saR4cSfPgSJoHR9I8OJLmwZE0D46keXAkzYMjaR4cSfPgSJoHnjQPPGkeeNI88KR54EnzwJPmgSfNA0+aB540DzxpHrSkedCS5kFLmgctaR60pHnQkuZBS5oHLWketKR50JLmQU+aBz1pHvSkedCT5kFPmgc9aR70pHnQk+ZBT5oHPWkejKR5kHQGsSYdQqxJpxBr0jHEmnQOsSYdRKxJJxFr0lHEmnQWsSYdRqxJpxFr0nHEmnQesSYdSKxJJxJr0pHEmnQmsSYdSqxJpxJr0rHEmnQusSYdTKxJJxNr0tHEmnQ2sSYdTqxJpxNr0vHEmnQ+0ZLOJ1rS+URLOp9oSecTrXgSpyVxehJnJHFmEidpHiSdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+URLOp9oSecTLel8oiWdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtG+cJ6vldvNN63+7erY3v+OmSmYL5x+a3bHHO0ZxnIwRw7GczAtB/NvF8/fHh1vP/qFYwg/+f3+wimEH2FaDqbnYHJG3BdOIDS/3cLdmj3DrBTMF84f/AhTczCWg/nCFDjmHXM8w3gOpuVgeg5m5GBmDmalLNMvnDr4ESbnn20r559tK+efbV84cfAjTM4/275w3uBHmJGDmTmYlClwlJKDqTkYy8EcORjPwbQcTM/BjBzMzMHkTIGaMwVqzhSoOVOg5kyBmjMFas4UqDlToOZMgZozBWrOFLCcKWA5U8BypoDlTAHLmQKWMwUsZwpYwhRY/7kuhGt+K/+orf9X0ez/h8x2+/xpzvrPX1rrvNub/e0jBHsITTahxSZ0/e+dXzWqdEZGZ3TQGTmdUaMz6nRGdBO70o3sSjezjW5mG93MNrqZbXQz2+hmttHNbAuc2Q/IyIB8PllXqX997TrKF763i83oKHRGlc7I6IwOOiOnM2p0Rp3OaNAZ0c3sg25mO93MdrqZ7XQz2+lmttPNbKeb2U43sz1wZj8gMwOyEiCtZEBqBsQyIEcGxDMgLQPSMyAZb3z//Fe4lnLcvrhUu8ZYDubzH341f8zifv0JQ18p/29GycHk/AoM/wKmrztm9mtMy8H0HMzIwcwczDfem14fmHGJmSUHU3MwloM5cjCeg2k5mJ6DGTmYmYP5whSo1W9fXP36Xzar5GBqDsZyMEcOxnMwLQfTczAjB/OFKVCH3TFzXmNWCuZJ83cA50j5T49aPInTkjg9ibNyOF84Z/gzTk3iWBIn4f2p9frk7rg/N8aLj2q93NK8bu2fv3Tep8YqjzPH52e6b3wAfJpPWfMla379MmuoV11101U/dNVdV73pqndddd1dWnWXadXdpqa7TU13m5ruNjXdbWq629R0t6mFbdMHYsQjPt5O7fbXWG/+v5eIFY44SjyixiMsHvHxlJu3l8jncY3weESLR/R4xKdvdyu3z6tamdeIGY9Y4Qgv8Ygaj/j0l7bZ7UubPUH0eMSnP+5+3I5u9GaXiFbiEfHfqPbx233/NLq1cY2Y8YgVjuglHlHjERaPOOIRHo9o8Ygej/ji2937NWLGIz5/u+9jcFwjxsdv932YP0XUeITFIz59u/v9WOz5N85rhMcjWjyixyNGPOLjt3u1G6KWa8QKR8wSj6jxCItHHPEIj0e0eESPR4wvIq7f7jnjEZ+/3bfjed2uEevjt/v+KepTRI1HWDzi49398r9Yl8cjWjyixyNGPGLGI+I/ZnlyWvV7DHtyAq72434wuLcXf7SpXm6TsHqtl5QnxyD/HcbnHTNe/SHpi7ch2bPTUzr6pq1/aOu7tn7T1u/a+kNbf2rrL2l90966pr11TXvrmvbWNe2ta9pb17S3rmlvXdPeusayde9GB8sifRgl78ZvXl9mz87R6egf2vqurd+09bu2/tDWn9r6S1rfi7a+9tZ17a3r2lvXtbeua29d1966rr11XXvruvbWbSxb92HEskgfRiy78WHEsu4eRiwb7GHEspQeRix75mHEsjoeRizb4GHEMuDvRp1uZvfkt//lLdL2LKryy07Jv90v7zmzZwGM3/0+DSN0OgiderbTi6u77Vn84pedJqHT4nOahdApfT69uJjanmVOftnpIHRyQqdG6NQJnQah0yR0WnxOqxA6Zc/xVzeY27N00S87HYROTujUCJ06odMgdJqETovP6VknQaDUiwKDLVUZpYxRqvF93lNLZ5QajFKEH9fV7MDhz6SMUepglHJGKbo5NVX7N05z0SvDT3PRG8NPc9X+DaiL3hgOddEbw6EuemM41F1XXfTGcKiL9m9AXXeXqvZvQF13m6r2b0Bdd5uq9m9AXXebqvZvQF13m0b3bwAx4hHB/RtArHBEdP8GEDUeYfGI4P4NIDwe0eIRPR4R3L8BxIxHrHBEdP8GEDUeEdy/AUSPRwRfDHkiovs3gIj/RkX3bwAx4xErHBHdvwFEjUdYPOKIR3g8osUjejwiuH8DiBmPCO7fwN/Agvs3gKjxCItHBPdvAOHxiBaP6PGIEY8I7t8AYoUjovs3gKjxCItHHPEIj0e0eESPRwT3bwAx4xHB/Rs4SxHcvwFEjUdYPCK4fwMIj0e0eESPR4x4xIxHxH/MEt6/cYyM/o2Toty/AX3hm8ChL3wTOPSFbwKHvmvrC98EDn3hm8ChL3wTOPSFbwKHvnD/xqmv3L8Bfe2tq9y/AX3travcvwF97a2r3L8Bfe2tq9y/AX2u/o3TiKx/A0bCN4FDX/gmcOgL3wQOfdfWF74JHPrCN4FDX/gmcOgL3wQOfeGbwE995f4N6GtvXeX+Dehrb13l/g3oa29d5f4N6GtvXeX+Dehrb12y/g0YcfVvwIirfwNGXP0bMGLZYA8jrv4NGHH1b8CIq38DRlz9GzDi6t84jcj6N2CU/Pa/7CaAE1v/BpzYLvTDKS+2/g04sfVvwImtfwNObP0bcGLr34ATW/8GnNj6N04nuv4NOLH1b8CJrX8DTmz9G3ByQie2/g04sfVvwImtfwNObP0bcGLr3zid6Po34MTWvwEntv4NOLH1b8DJCZ3Y+jfgxNa/ASe2/g04sfVvwImtf2Nno9j6N7YUW//GlmLr39hSbPfabym2/o0txda/saUIP67j69/YUmz9G1uKrX9jSzmjFNuccs9IH58U5fQx9IVzUNAXzkFBXzgHBX3X1hfOQUFfOAcFfeEcFPSFc1DQF04fn/rK6WPoa29d5fQx9LW3rnL6GPraW1c5fQx97a2rnD6GPlf6+DQiSx/DSDgHBX3hHBT0hXNQ0HdtfeEcFPSFc1DQF85BQV84BwV94RzUqa+cPoa+9tZVTh9DX3vrKqePoa+9dZXTx9DX3rrK6WPoa29dsvQxjLjSxzDiSh/DiCt9DCOWDfYw4kofw4grfQwjrvQxjLjSxzDiSh+fRmTpYxglv/0vk5lwYksfw4ntOCNOebGlj+HElj6GE1v6GE5s6WM4saWP4cSWPoYTW/r4dKJLH8OJLX0MJ7b0MZzY0sdwckIntvQxnNjSx3BiSx/DiS19DCe29PHpRJc+hhNb+hhObOljOLGlj+HkhE5s6WM4saWP4cSWPoYTW/oYTmzp452NYksfbym29PGWYksfbynCVB9f+nhLsaWPtxThx3V86eMtxZY+3lJs6eMt5YxSbHOq2X8+7aH2cvNxe6Ez76N8FX98qb3zN/XTfMqaL1nzWnTVq6666aofuuquq9501buuuu4urbrLtOpuU9Pdpqa7TU13m5ruNjXdbWq629TCtukDMeIRH2+ndjvj482vESsccZR4RI1HWDzi4yk3by+Rz+Ma4fGIFo/o8YhP3+5Wxl9f2sq8Rsx4xApHeIlH1HjEp7+0zW5f2uwJoscjPv1x9+N2Xu78n7tEtBKPiP9GtY/fbr//RrVxjZjxiBWO6CUeUeMRFo844hEej2jxiB6P+OLb3fs1YsYjPn+772NwXCPGx2/3fZg/RdR4hMUjPn27+z1s0cu6Rng8osUjejxixCM+frvX7V7qXss1YoUjZolH1HiExSOOeITHI1o8oscjxhcR12/3nPGIz9/u29GYbteI9fHbff8U9SmixiMsHvHx7n75X6zL4xEtHtHjESMeMeMR8R+zPDmZ/T1Gt4z+jW7S/RvdpPs3ukn3b3ST7t/oJt2/0U26f6ObdP9GN+n+jW7S/RvdpPs3ukn3b3ST7t/oJt2/0U26f6ObdP9GN+n+jW7S/RvdpPs3ukn3b3Rj69/oxta/0U26f6ObdP9GN+n+jW7S/RvdpPs3ukn3b3ST7t/oJt2/0U26f6ObdP9GN+n+Dehrb13l/g3oa29d5f6NbtL9G9DX3rrK/RvdpPs3urH1b8CIq38DRlz9GzDi6t+AEcsGexhx9W90Y+vf6MbWv9GNrX+jG1v/Rje2/o1ufP0b3fj6N7rx9W904+vf6MbXv9GNr3+jG1//Rje+/o1ufP0b3fj6N7rx9W904+vf6MbXv9GNr3+jG1//Rje+/o1ufP0b3fj6N7rx9W904+vf6MbXv9GNr3+jG1//Rje+/o1ufP0b3fj6N7rx9W904+vf6MbXv9GNr3+jG2H/xpZi69/YUmz9G1uK7V77LcXWv7Gl2Po3thThx3V8/Rtbiq1/Y0ux9W9sKWeUoptTS7V/4zQXvTL8NBe9Mfw0V+3fgLrojeFQF70xHOqiN4ZD3XXVRW8Mh7po/wbUdXepav8G1HW3qWr/BtR1t6lq/wbUdbepav8G1HW3aXT/BhAjHhHcvwHECkdE928AUeMRFo8I7t8AwuMRLR7R4xHB/RtAzHjECkdE928AUeMRwf0bQPR4RPDFkCciun8DiPhvVHT/BhAzHrHCEdH9G0DUeITFI454hMcjWjyixyOC+zeAmPGI4P4N/A0suH8DiBqPsHhEcP8GEB6PaPGIHo8Y8Yjg/g0gVjgiun8DiBqPsHjEEY/weESLR/R4RHD/BhAzHhHcv4GzFMH9G0DUeITFI4L7N4DweESLR/R4xIhHzHhE/Mcs4f0bY2b0b5wU5f4N6AvfBA594ZvAoS98Ezj0XVtf+CZw6AvfBA594ZvAoS98Ezj0hfs3Tn3l/g3oa29d5f4N6GtvXeX+Dehrb13l/g3oa29d5f4N6HP1b5xGZP0bMBK+CRz6wjeBQ1/4JnDou7a+8E3g0Be+CRz6wjeBQ1/4JnDoC98Efuor929AX3vrKvdvQF976yr3b0Bfe+sq929AX3vrKvdvQF9765L1b8CIq38DRlz9GzDi6t+AEcsGexhx9W/AiKt/A0Zc/Rsw4urfgBFX/8ZpRNa/AaPkt/9lNwGc2Po34MR2oR9OebH1b8CJrX8DTmz9G3Bi69+AE1v/BpzY+jfgxNa/cTrR9W/Aia1/A05s/RtwYuvfgJMTOrH1b8CJrX8DTmz9G3Bi69+AE1v/xulE178BJ7b+DTix9W/Aia1/A05O6MTWvwEntv4NOLH1b8CJrX8DTmz9Gzsbxda/saXY+je2FFv/xpZiu9d+S7H1b2wptv6NLUX4cR1f/8aWYuvf2FJs/Rtbyhml2ObUbBnp45OinD6GvnAOCvrCOSjoC+egoO/a+sI5KOgL56CgL5yDgr5wDgr6wunjU185fQx97a2rnD6GvvbWVU4fQ1976yqnj6GvvXWV08fQ50ofn0Zk6WMYCeegoC+cg4K+cA4K+q6tL5yDgr5wDgr6wjko6AvnoKAvnIM69ZXTx9DX3rrK6WPoa29d5fQx9LW3rnL6GPraW1c5fQx97a1Llj6GEVf6GEZc6WMYcaWPYcSywR5GXOljGHGlj2HElT6GEVf6GEZc6ePTiCx9DKPkt/9lMhNObOljOLEdZ8QpL7b0MZzY0sdwYksfw4ktfQwntvQxnNjSx3BiSx+fTnTpYzixpY/hxJY+hhNb+hhOTujElj6GE1v6GE5s6WM4saWP4cSWPj6d6NLHcGJLH8OJLX0MJ7b0MZyc0IktfQwntvQxnNjSx3BiSx/DiS19vLNRbOnjLcWWPt5SbOnjLUWY6uNLH28ptvTxliL8uI4vfbyl2NLHW4otfbylnFGKbU6t8SR93HzcHmx9/DPlm2fPT6HJJrTYhJ5EuX/TqNIZGZ3RQWfkdEaNzqjTGdFN7Eo3sivdzDa6mW10M9voZrbRzWyjm9lGN7MtcGY/ICMD8vlk/eZBVhgtNqOj0BlVOiOjMzrojJzOqNEZdTqjQWdEN7MPupntdDPb6Wa2081sp5vZTjeznW5mO93M9sCZ/YDMDMhKgLSSAakZEMuAHBkQz4C0DEjPgGS88f3zX+GXYQBgLAfz+Q//J3/+6yvl/80oOZicX4HhX8C8OJIPTMvB9BzMyMHMHMw33psXp3nxx/CSg6k5GMvBHDkYz8G0HEzPwYwczMzBfGEKvDqfihMoJQdTczCWgzlyMJ6DaTmYnoMZOZgvTIFX54+BWSmYZ6fUv885Uv7ToxZP4rQkTk/irBzOF84Z/oxTkziWxMl4f9b1yd1xf26MFx/VermdJHZ7cZB43qfGKv6/f/tM950PgNf1EV8J8yVrfv0ya6hXXXXTVT901V1Xvemqd1113V1adZdp1d2mprtNTXebmu42Nd1tarrb1HS3qYVt0wdixCM+3k7t9tdYb36NWOGIo8QjajzC4hEfT7l5e4l8HtcIj0e0eESPR3z6drdy+7yqlXmNmPGIFY7wEo+o8YhPf2mb3b602RNEj0d8+uPux+3oRm92iWglHhH/jWofv933T6NbG9eIGY9Y4Yhe4hE1HmHxiCMe4fGIFo/o8Ygvvt29XyNmPOLzt/s+Bsc1Ynz8dt+H+VNEjUdYPOLTt7vfj8X2sq4RHo9o8YgejxjxiI/f7tVuiFquESscMUs8osYjLB5xxCM8HtHiET0eMb6IuH6754xHfP52347ndbtGrI/f7vunqE8RNR5h8YiPd/fL/2JdHo9o8YgejxjxiBmPiP+Y5clp1a8xRnlyAu5fXqdZbpOweq2XlJp8OfQXb0Pa+lVb37T1D21919Zv2vpdW39o609t/SWtb9pb17S3rmlvXdPeuqa9dU1765r21jXtrWvaW9dYtu7d6GBZpA+j5N34xevLtr5p6x/a+q6t37T1u7b+0Naf2vpLWt+Ltr721nXtrevaW9e1t65rb13X3rquvXVde+u69tZtLFv3YcSySB9GLLvxYcSy7h5GLBvsYcSylB5GLHvmYcSyOh5GLNvgYcQy4O9GnW5m9+S3/9Ut0tupETqRVXHvU16V7/s0jNDpIHTq2U7/fHX3dhqETpPQafE5zULolD6f/vli6u1khE4HoZMTOjVCp07oNAidJqHT4nNahdApe46/uMF8Oxmh00Ho5IROjdCpEzoNQqdJ6LT4nJ51EgRK/XOBwR+pyihljFKN7/OeZz0Kvyw1GKUIP66r2YHDn0kZo9TBKOWMUmxzqnbR/g2Ya14ZDnPNG8NhLtq/sdU1bwzf6po3hm91zRvDt7rrqmveGL7VNfs3trruLhXt39jquttUtH9jq+tuU9H+ja2uu01F+ze2uu42De7f2IgRj4jt39iIFY4I7t/YiBqPsHhEbP/GRng8osUjejwitn9jI2Y8YoUjgvs3NqLGI2L7NzaixyNiL4YEIrh/YyPiv1HB/RsbMeMRKxwR3L+xETUeYfGIIx7h8YgWj+jxiNj+jY2Y8YjY/o39N7DY/o2NqPEIi0fE9m9shMcjWjyixyNGPCK2f2MjVjgiuH9jI2o8wuIRRzzC4xEtHtHjEbH9Gxsx4xGx/Rv7LEVs/8ZG1HiExSNi+zc2wuMRLR7R4xEjHjHjEfEfs4T3b1jL6N84Kcr9G9AXvgkc+sI3gUNf+CZw6Lu2vvBN4NAXvgkc+sI3gUNf+CZw6Av3b5z6yv0b0Nfeusr9G9DX3rrK/RvQ1966yv0b0Nfeusr9G9Dn6t84jcj6N2AkfBM49IVvAoe+8E3g0HdtfeGbwKEvfBM49IVvAoe+8E3g0Be+CfzUV+7fgL721lXu34C+9tZV7t+AvvbWVe7fgL721lXu34C+9tYl69+AEVf/Boy4+jdgxNW/ASOWDfYw4urfgBFX/waMuPo3YMTVvwEjrv6N04isfwNGyW//y24COLH1b8CJ7UI/nPJi69+AE1v/BpzY+jfgxNa/ASe2/g04sfVvwImtf+N0ouvfgBNb/wac2Po34MTWvwEnJ3Ri69+AE1v/BpzY+jfgxNa/ASe2/o3Tia5/A05s/RtwYuvfgBNb/wacnNCJrX8DTmz9G3Bi69+AE1v/BpzY+jd2Noqtf2NLsfVvbCm2/o0txXav/ZZi69/YUmz9G1uK8OM6vv6NLcXWv7Gl2Po3tpQzSrHNqcMy0scnRTl9DH3hHBT0hXNQ0BfOQUHftfWFc1DQF85BQV84BwV94RwU9IXTx6e+cvoY+tpbVzl9DH3traucPoa+9tZVTh9DX3vrKqePoc+VPj6NyNLHMBLOQUFfOAcFfeEcFPRdW184BwV94RwU9IVzUNAXzkFBXzgHdeorp4+hr711ldPH0NfeusrpY+hrb13l9DH0tbeucvoY+tpblyx9DCOu9DGMuNLHMOJKH8OIZYM9jLjSxzDiSh/DiCt9DCOu9DGMuNLHpxFZ+hhGyW//y2QmnNjSx3BiO86IU15s6WM4saWP4cSWPoYTW/oYTmzpYzixpY/hxJY+Pp3o0sdwYksfw4ktfQwntvQxnJzQiS19DCe29DGc2NLHcGJLH8OJLX18OtGlj+HElj6GE1v6GE5s6WM4OaETW/oYTmzpYzixpY/hxJY+hhNb+nhno9jSx1uKLX28pdjSx1uKMNXHlz7eUmzp4y1F+HEdX/p4S7Glj7cUW/p4SzmjFNuc8vKfT3uovdx83F7ozPsoX8UfX2rv/E39NJ+y5kvWvBZd9aqrbrrqh66666o3XfWuq667S6vuMq2629R0t6npblPT3aamu01Nd5ua7ja1sG36QIx4xMfbqd3O+Hjza8QKRxwlHlHjERaP+HjKzdtL5PO4Rng8osUjejzi07e7lfHXl7YyrxEzHrHCEV7iETUe8ekvbbPblzZ7gujxiE9/3P24nZfrzS4RrcQj4r9R7eO32++/UW1cI2Y8YoUjeolH1HiExSOOeITHI1o8oscjvvh2936NmPGIz9/u+xgc14jx8dt9H+ZPETUeYfGIT9/ufg9b9LKuER6PaPGIHo8Y8YiP3+51u5e613KNWOGIWeIRNR5h8YgjHuHxiBaP6PGI8UXE9ds9Zzzi87f7djSm2zViffx23z9FfYqo8QiLR3y8u1/+F+vyeESLR/R4xIhHzHhE/McsT05mf4/RSkb/RivS/RutSPdvtCLdv9GKdP9GK9L9G61I92+0It2/0Yp0/0Yr0v0brUj3b7Qi3b/RinT/RivS/RutSPdvtCLdv9GKdP9GK9L9G61I92+0It2/0Qpb/0YrbP0brUj3b7Qi3b/RinT/RivS/RutSPdvtCLdv9GKdP9GK9L9G61I92+0It2/0Yp0/wb0tbeucv8G9LW3rnL/RivS/RvQ1966yv0brUj3b7TC1r8BI67+DRhx9W/AiKt/A0YsG+xhxNW/0Qpb/0YrbP0brbD1b7TC1r/RClv/Rit8/Rut8PVvtMLXv9EKX/9GK3z9G63w9W+0wte/0Qpf/0YrfP0brfD1b7TC17/RCl//Rit8/Rut8PVvtMLXv9EKX/9GK3z9G63w9W+0wte/0Qpf/0YrfP0brfD1b7TC17/RCl//Rit8/Rut8PVvtMLXv9EKX/9GK3z9G63w9W+0Qti/saXY+je2FFv/xpZiu9d+S7H1b2wptv6NLUX4cR1f/8aWYuvf2FJs/Rtbyhml6ObUUO3fOM1Frww/zUVvDD/NVfs3oC56YzjURW8Mh7rojeFQd1110RvDoS7avwF13V2q2r8Bdd1tqtq/AXXdbaravwF13W2q2r8Bdd1tGt2/AcSIRwT3bwCxwhHR/RtA1HiExSOC+zeA8HhEi0f0eERw/wYQMx6xwhHR/RtA1HhEcP8GED0eEXwx5ImI7t8AIv4bFd2/AcSMR6xwRHT/BhA1HmHxiCMe4fGIFo/o8Yjg/g0gZjwiuH8DfwML7t8AosYjLB4R3L8BhMcjWjyixyNGPCK4fwOIFY6I7t8AosYjLB5xxCM8HtHiET0eEdy/AcSMRwT3b+AsRXD/BhA1HmHxiOD+DSA8HtHiET0eMeIRMx4R/zFLeP9G7xn9GydFuX8D+sI3gUNf+CZw6AvfBA5919YXvgkc+sI3gUNf+CZw6AvfBA594f6NU1+5fwP62ltXuX8D+tpbV7l/A/raW1e5fwP62ltXuX8D+lz9G6cRWf8GjIRvAoe+8E3g0Be+CRz6rq0vfBM49IVvAoe+8E3g0Be+CRz6wjeBn/rK/RvQ1966yv0b0Nfeusr9G9DX3rrK/RvQ1966yv0b0NfeumT9GzDi6t+AEVf/Boy4+jdgxLLBHkZc/Rsw4urfgBFX/waMuPo3YMTVv3EakfVvwCj57X/ZTQAntv4NOLFd6IdTXmz9G3Bi69+AE1v/BpzY+jfgxNa/ASe2/g04sfVvnE50/RtwYuvfgBNb/wac2Po34OSETmz9G3Bi69+AE1v/BpzY+jfgxNa/cTrR9W/Aia1/A05s/RtwYuvfgJMTOrH1b8CJrX8DTmz9G3Bi69+AE1v/xs5GsfVvbCm2/o0txda/saXY7rXfUmz9G1uKrX9jSxF+XMfXv7Gl2Po3thRb/8aWckYptjk1joz08UlRTh9DXzgHBX3hHBT0hXNQ0HdtfeEcFPSFc1DQF85BQV84BwV94fTxqa+cPoa+9tZVTh9DX3vrKqePoa+9dZXTx9DX3rrK6WPoc6WPTyOy9DGMhHNQ0BfOQUFfOAcFfdfWF85BQV84BwV94RwU9IVzUNAXzkGd+srpY+hrb13l9DH0tbeucvoY+tpbVzl9DH3traucPoa+9tYlSx/DiCt9DCOu9DGMuNLHMGLZYA8jrvQxjLjSxzDiSh/DiCt9DCOu9PFpRJY+hlHy2/8ymQkntvQxnNiOM+KUF1v6GE5s6WM4saWP4cSWPoYTW/oYTmzpYzixpY9PJ7r0MZzY0sdwYksfw4ktfQwnJ3RiSx/DiS19DCe29DGc2NLHcGJLH59OdOljOLGlj+HElj6GE1v6GE5O6MSWPoYTW/oYTmzpYzixpY/hxJY+3tkotvTxlmJLH28ptvTxliJM9fGlj7cUW/p4SxF+XMeXPt5SbOnjLcWWPt5SzijFNadOq2c5gVFuSqM9ysTPH/XfHhzvPjjffXC9+eD14fGfPFjffdDeffDyZZql/PXgLM8e9HcfbO8+2N99cLz74Hz3wfXmg9enJef949Q55pMH67sP2rsPHu8+6O8+2N59sL/74PVvzhy3B1d/8uB898H15oPXJ35+8mB990F798Hj3Qcvf3NWvb1Wqz55ra4Pjfzkwf7ug+PdB+e7D643H7w+d/CTB+uLB+3Jz7Hbuw8e7z54/Ztz3CbA8icT4Pq4wU8e7O8+ON59cL774HrzwVHeffD6N6ff//VY3P/ryf/5N1/8wFgO5sjBeA6m5WB6DmbkYGYOZqVgrs8LfB+TMwVmzhSYOVNg5kyBmTMFZs4UmDlTYOZMgZkzBVbOFFg5U2DlTIGVMwVWzhRYOVNg5UyBlTMFVs4UWDlT4MnfKgM4NYljSZwjieNJnJbE6UmckcSZSZykeVCT5kFNmgc1aR7UpHlQk+ZBTZoHNWke1KR5UJPmQU2aB5Y0DyxpHljSPLCkeWBJ88CS5oElzQNLmgeWNA8saR4cSfPgSJoHR9I8OJLmwZE0D46keXAkzYMjaR4cSfPgSJoHnjQPPGkeeNI88KR54EnzwJPmgSfNA0+aB540DzxpHrSkedCS5kFLmgctaR60pHnQkuZBS5oHLWketKR50JLmQU+aBz1pHvSkedCT5kFPmgc9aR70pHnQk+ZBT5oHPWkejKR5kHQGsSYdQqxJpxBr0jHEmnQOsSYdRKxJJxFr0lHEmnQWsSYdRqxJpxFr0nHEmnQesSYdSKxJJxJr0pHEmnQmsSYdSqxJpxJr0rHEmnQusSYdTKxJJxNr0tHEmnQ2sSYdTqxJpxNr0vHEmnQ+0ZLOJ1rS+URLOp9oSecTrXgSpyVxehJnJHFmEidpHiSdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+URLOp9oSecTLel8oiWdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtG+cJ6vldvNN63+7erY3v+OmSmYL5x+a3bHHO0ZxnIwRw7GczAtB/NvF8/fHh1vP/qFYwg/+f3+wimEH2FaDqbnYHJG3BdOIDS/3cLdmj3DrBTMF84f/AhTczCWg/nCFDjmHXM8w3gOpuVgeg5m5GBmDmalLNMvnDr4ESbnn20r559tK+efbV84cfAjTM4/275w3uBHmJGDmTmYlClwlJKDqTkYy8EcORjPwbQcTM/BjBzMzMHkTIGaMwVqzhSoOVOg5kyBmjMFas4UqDlToOZMgZozBWrOFLCcKWA5U8BypoDlTAHLmQKWMwUsZwpYwhRY/7kuhGt+K/+orf9X0ez/h8x2+/xpzvrPX1rrvNub/e0jBHsITTahxSZ0/e+dXzWqdEZGZ3TQGTmdUaMz6nRGdBO70o3sSjezjW5mG93MNrqZbXQz2+hmttHNbAuc2Q/IyIB8PllXqX997TrKF763i83oKHRGlc7I6IwOOiOnM2p0Rp3OaNAZ0c3sg25mO93MdrqZ7XQz2+lmttPNbKeb2U43sz1wZj8gMwOyEiCtZEBqBsQyIEcGxDMgLQPSMyAZb3z//Fe4lnLcvrhUu8ZYDubzH341f8zifv0JQ18p/29GycHk/AoM/wKmrztm9mtMy8H0HMzIwcwczDfem14fmHGJmSUHU3MwloM5cjCeg2k5mJ6DGTmYmYP5whSo1W9fXP36Xzar5GBqDsZyMEcOxnMwLQfTczAjB/OFKVCH3TFzXmNWCuZJ83cA50j5T49aPInTkjg9ibNyOF84Z/gzTk3iWBIn4f2Z9frk7rg/N8aLj2q93NK8bu2fv3Tep8YqjzPH52e6b3wAfJpPWfMla379MmuoV11101U/dNVdV73pqndddd1dWnWXadXdpqa7TU13m5ruNjXdbWq629R0t6mFbdMHYsQjPt5O7fbXWG9+jVjhiKPEI2o8wuIRH0+5eXuJfB7XCI9HtHhEj0d8+na3cvu8qpV5jZjxiBWO8BKPqPGIT39pm92+tNkTRI9HfPrj7sft6EZvdoloJR4R/41qH7/d90+jWxvXiBmPWOGIXuIRNR5h8YgjHuHxiBaP6PGIL77dvV8jZjzi87f7PgbHNWJ8/Hbfh/lTRI1HWDzi07e734/F9rKuER6PaPGIHo8Y8YiP3+7VboharhErHDFLPKLGIyweccQjPB7R4hE9HjG+iLh+u+eMR3z+dt+O53W7RqyP3+77p6hPETUeYfGIj3f3y/9iXR6PaPGIHo8Y8YgZj4j/mOXJadXvMdaTE3C1H/eDwb29+KNN9XKbhNVrvaQ8OQb57zA+75jx6g9JX7wNaT07PaWjb9r6h7a+a+s3bf2urT+09ae2/pLWN+2ta9pb17S3rmlvXdPeuqa9dU1765r21jXtrWssW/dudLAs0odR8m785vVl69k5Oh39Q1vftfWbtn7X1h/a+lNbf0nre9HW1966rr11XXvruvbWde2t69pb17W3rmtvXdfeuo1l6z6MWBbpw4hlNz6MWNbdw4hlgz2MWJbSw4hlzzyMWFbHw4hlGzyMWAb83ajTzeye/Pa/vEV6PYuq/LJT8m/3y3vO1rMAxu9+n4YROh2ETj3b6cXV3etZ/OKXnSah0+JzmoXQKX0+vbiYej3LnPyy00Ho5IROjdCpEzoNQqdJ6LT4nFYhdMqe469uMF/P0kW/7HQQOjmhUyN06oROg9BpEjotPqdnnQSBUi8KDLZUZZQyRqnG93nPsx6FX5YajFKEH9fV7MDhz6SMUepglHJGKbo5NVX7N05z0SvDT3PRG8NPc9X+DaiL3hgOddEbw6EuemM41F1XXfTGcKiL9m9AXXeXqvZvQF13m6r2b0Bdd5uq9m9AXXebqvZvQF13m0b3bwAx4hHB/RtArHBEdP8GEDUeYfGI4P4NIDwe0eIRPR4R3L8BxIxHrHBEdP8GEDUeEdy/AUSPRwRfDHkiovs3gIj/RkX3bwAx4xErHBHdvwFEjUdYPOKIR3g8osUjejwiuH8DiBmPCO7fwN/Agvs3gKjxCItHBPdvAOHxiBaP6PGIEY8I7t8AYoUjovs3gKjxCItHHPEIj0e0eESPRwT3bwAx4xHB/Rs4SxHcvwFEjUdYPCK4fwMIj0e0eESPR4x4xIxHxH/MEt2/UctI6N8ARbh/Y+vr3gS+9XVvAt/6ujeBb33X1te9CXzr694EvvV1bwLf+ro3gW993f4N6Av3b2x97a0r3L+x9bW3rnD/xtbX3rrC/RtbX3vrCvdvbH2q/g0YcfVvbCPdm8C3vu5N4Ftf9ybwre/a+ro3gW993ZvAt77uTeBbX/cm8K2vexM49IX7N7a+9tYV7t/Y+tpbV7h/Y+trb13h/o2tr711hfs3tr721uXq39hGVP0b24iqf2MbUfVvbCOWDfYwourf2EZU/RvbiKp/YxtR9W9sI6r+DRhx9W9so+S3/1U3wXYi69/YTmQX+u1TXmT9G9uJrH9jO5H1b2wnsv6N7UTWv7GdyPo3thNZ/wac2Po3thNZ/8Z2Iuvf2E5k/RvbyQmdyPo3thNZ/8Z2Iuvf2E5k/Rvbiax/A05s/Rvbiax/YzuR9W9sJ7L+je3khE5k/Rvbiax/YzuR9W9sJ7L+je1E1r/xJxtF1r/xR4qsf+OPFFn/xh8psnvt/0iR9W/8kSLr3/gjRfhxHV3/xh8psv6NP1Jk/Rt/pJxRim1OVc9IH58U5fQx9IVzUNAXzkFBXzgHBX3X1hfOQUFfOAcFfeEcFPSFc1DQF04fn/rK6WPoa29d5fQx9LW3rnL6GPraW1c5fQx97a2rnD6GPlf6+DQiSx/DSDgHBX3hHBT0hXNQ0HdtfeEcFPSFc1DQF85BQV84BwV94RzUqa+cPoa+9tZVTh9DX3vrKqePoa+9dZXTx9DX3rrK6WPoa29dsvQxjLjSxzDiSh/DiCt9DCOWDfYw4kofw4grfQwjrvQxjLjSxzDiSh+fRmTpYxglv/0vk5lwYksfw4ntOCNOebGlj+HElj6GE1v6GE5s6WM4saWP4cSWPoYTW/r4dKJLH8OJLX0MJ7b0MZzY0sdwckIntvQxnNjSx3BiSx/DiS19DCe29PHpRJc+hhNb+hhObOljOLGlj+HkhE5s6WM4saWP4cSWPoYTW/oYTmzp452NYksfbym29PGWYksfbynCVB9f+nhLsaWPtxThx3WVLn28pdjSx1uKLX28pZxRim1Omf3n0x5qLzcftxc68z7KV/HHl9o7f1M/zaes+ZI1r0VXveqqm676oavuuupNV73rquvu0qq7TKvuNjXdbWq629R0t6npblPT3aamu00tbJs+ECMe8fF2arczPt78GrHCEUeJR9R4hMUjPp5y8/YS+TyuER6PaPGIHo/49O1uZfz1pa3Ma8SMR6xwhJd4RI1HfPpL2+z2pc2eIHo84tMfdz9u5+V6s0tEK/GI+G9U+/jt9vtvVBvXiBmPWOGIXuIRNR5h8YgjHuHxiBaP6PGIL77dvV8jZjzi87f7PgbHNWJ8/Hbfh/lTRI1HWDzi07e738MWvaxrhMcjWjyixyNGPOLjt3vd7qXutVwjVjhilnhEjUdYPOKIR3g8osUjejxifBFx/XbPGY/4/O2+HY3pdo1YH7/d909RnyJqPMLiER/v7pf/xbo8HtHiET0eMeIRMx4R/zHLk5PZ32McltG/cZh0/8Zh0v0bh0n3bxwm3b9xmHT/xmHS/RuHSfdvHCbdv3GYdP/GYdL9G4dJ928cJt2/cZh0/8Zh0v0bh0n3bxwm3b9xmHT/xmHS/RuHSfdvHMbWv3EYW//GYdL9G4dJ928cJt2/cZh0/8Zh0v0bh0n3bxwm3b9xmHT/xmHS/RuHSfdvHCbdvwF97a2r3L8Bfe2tq9y/cZh0/wb0tbeucv/GYdL9G4ex9W/AiKt/A0Zc/Rsw4urfgBHLBnsYcfVvHMbWv3EYW//GYWz9G4ex9W8cxta/cRhf/8ZhfP0bh/H1bxzG179xGF//xmF8/RuH8fVvHMbXv3EYX//GYXz9G4fx9W8cxte/cRhf/8ZhfP0bh/H1bxzG179xGF//xmF8/RuH8fVvHMbXv3EYX//GYXz9G4fx9W8cxte/cRhf/8ZhfP0bh/H1bxzG179xGF//xmF8/RuHEfZvbCm2/o0txda/saXY7rXfUmz9G1uKrX9jSxF+XFfp+je2FFv/xpZi69/YUs4oRTenlmr/xmkuemX4aS56Y/hprtq/AXXRG8OhLnpjONRFbwyHuuuqi94YDnXR/g2o6+5S1f4NqOtuU9X+DajrblPV/g2o625T1f4NqOtu0+j+DSBGPCK4fwOIFY6I7t8AosYjLB4R3L8BhMcjWjyixyOC+zeAmPGIFY6I7t8AosYjgvs3gOjxiOCLIU9EdP8GEPHfqOj+DSBmPGKFI6L7N4Co8QiLRxzxCI9HtHhEj0cE928AMeMRwf0b+BtYcP8GEDUeYfGI4P4NIDwe0eIRPR4x4hHB/RtArHBEdP8GEDUeYfGIIx7h8YgWj+jxiOD+DSBmPCK4fwNnKYL7N4Co8QiLRwT3bwDh8YgWj+jxiBGPmPGI+I9Zwvs3fGb0b5wU5f4N6AvfBA594ZvAoS98Ezj0XVtf+CZw6AvfBA594ZvAoS98Ezj0hfs3Tn3l/g3oa29d5f4N6GtvXeX+Dehrb13l/g3oa29d5f4N6HP1b5xGZP0bMBK+CRz6wjeBQ1/4JnDou7a+8E3g0Be+CRz6wjeBQ1/4JnDoC98Efuor929AX3vrKvdvQF976yr3b0Bfe+sq929AX3vrKvdvQF9765L1b8CIq38DRlz9GzDi6t+AEcsGexhx9W/AiKt/A0Zc/Rsw4urfgBFX/8ZpRNa/AaPkt/9lNwGc2Po34MR2oR9OebH1b8CJrX8DTmz9G3Bi69+AE1v/BpzY+jfgxNa/cTrR9W/Aia1/A05s/RtwYuvfgJMTOrH1b8CJrX8DTmz9G3Bi69+AE1v/xulE178BJ7b+DTix9W/Aia1/A05O6MTWvwEntv4NOLH1b8CJrX8DTmz9Gzsbxda/saXY+je2FFv/xpZiu9d+S7H1b2wptv6NLUX4cV2l69/YUmz9G1uKrX9jSzmjFNucai0jfXxSlNPH0BfOQUFfOAcFfeEcFPRdW184BwV94RwU9IVzUNAXzkFBXzh9fOorp4+hr711ldPH0NfeusrpY+hrb13l9DH0tbeucvoY+lzp49OILH0MI+EcFPSFc1DQF85BQd+19YVzUNAXzkFBXzgHBX3hHBT0hXNQp75y+hj62ltXOX0Mfe2tq5w+hr721lVOH0Nfe+sqp4+hr711ydLHMOJKH8OIK30MI670MYxYNtjDiCt9DCOu9DGMuNLHMOJKH8OIK318GpGlj2GU/Pa/TGbCiS19DCe244w45cWWPoYTW/oYTmzpYzixpY/hxJY+hhNb+hhObOnj04kufQwntvQxnNjSx3BiSx/DyQmd2NLHcGJLH8OJLX0MJ7b0MZzY0senE136GE5s6WM4saWP4cSWPoaTEzqxpY/hxJY+hhNb+hhObOljOLGlj3c2ii19vKXY0sdbii19vKUIU3186eMtxZY+3lKEH9fxpY+3FFv6eEuxpY+3lDNKsc2pPp6kj5uP24Otj3+mfPPs+Sk02YQWm9CTKPdvGlU6I6MzOuiMnM6o0Rl1OiO6iV3pRnalm9lGN7ONbmYb3cw2upltdDPb6Ga2Bc7sB2RkQD6frN88yAqjxWZ0FDqjSmdkdEYHnZHTGTU6o05nNOiM6Gb2QTeznW5mO93MdrqZ7XQz2+lmttPNbKeb2R44sx+QmQFZCZBWMiA1A2IZkCMD4hmQlgHpGZCMN75//iv8MgwAjOVgPv/h/+TPf32l/L8ZJQeT8ysw/AuYF0fygWk5mJ6DGTmYmYP5xnvz4jQv/hhecjA1B2M5mCMH4zmYloPpOZiRg5k5mC9MgVfnU3ECpeRgag7GcjBHDsZzMC0H03MwIwfzhSnw6vwxMCsF8+yU+vc5R8p/etTiSZyWxOlJnJXD+cI5w59xahLHkjgZ78+6Prk77s+N8eKjWi+3k8RuLw4Sz/vUWMX/92+f6b7zAfC6PuIrYb5kza9fZg31qqtuuuqHrrrrqjdd9a6rrrtLq+4yrbrb1HS3qeluU9Pdpqa7TU13m5ruNrWwbfpAjHjEx9up3f4a682vESsccZR4RI1HWDzi4yk3by+Rz+Ma4fGIFo/o8YhP3+5Wbp9XtTKvETMescIRXuIRNR7x6S9ts9uXNnuC6PGIT3/c/bgd3ejNLhGtxCPiv1Ht47f7/ml0a+MaMeMRKxzRSzyixiMsHnHEIzwe0eIRPR7xxbe792vEjEd8/nbfx+C4RoyP3+77MH+KqPEIi0d8+nb3+7HYXtY1wuMRLR7R4xEjHvHx273aDVHLNWKFI2aJR9R4hMUjjniExyNaPKLHI8YXEddv95zxiM/f7tvxvG7XiPXx233/FPUposYjLB7x8e5++V+sy+MRLR7R4xEjHjHjEfEfszw5rfo9xnhyAu5fXqdZbpOweq2XlJp8OfQ3b0Maz05P6eibtv6hre/a+k1bv2vrD239qa2/pPVNe+ua9tY17a1r2lvXtLeuaW9d0966pr11TXvrGsvWvRsdLIv0YZS8G795fdl4do5OR//Q1ndt/aat37X1h7b+1NZf0vpetPW1t65rb13X3rquvXVde+u69tZ17a3r2lvXtbduY9m6DyOWRfowYtmNDyOWdfcwYtlgDyOWpfQwYtkzDyOW1fEwYtkGDyOWAX836nQzuye//S9vkR7Poiq/7MRWxT2eBTB+9/s0jNDpIHTq2U4vru4ez+IXv+w0CZ0Wn9MshE7p8+nFxdTjWebkl50OQicndGqETp3QaRA6TUKnxee0CqFT9hx/dYP5eJYu+mWng9DJCZ0aoVMndBqETpPQafE5PeskCJR6UWCwpSqjlDFKNb7Pe571KPyy1GCUIvy4rmYHDn8mZYxSB6OUM0qxzanZVfs3TnPRK8NPc9Ebw09z1f4NqIveGA510RvDoS56YzjUXVdd9MZwqIv2b0Bdd5eq9m9AXXebqvZvQF13m6r2b0Bdd5uq9m9AXXebRvdvADHiEcH9G0CscER0/wYQNR5h8Yjg/g0gPB7R4hE9HhHcvwHEjEescER0/wYQNR4R3L8BRI9HBF8MeSKi+zeAiP9GRfdvADHjESscEd2/AUSNR1g84ohHeDyixSN6PCK4fwOIGY8I7t/A38CC+zeAqPEIi0cE928A4fGIFo/o8YgRjwju3wBihSOi+zeAqPEIi0cc8QiPR7R4RI9HBPdvADHjEcH9GzhLEdy/AUSNR1g8Irh/AwiPR7R4RI9HjHjEjEfEf8wS3r+xWkb/xklR7t+AvvBN4NAXvgkc+sI3gUPftfWFbwKHvvBN4NAXvgkc+sI3gUNfuH/j1Ffu34C+9tZV7t+AvvbWVe7fgL721lXu34C+9tZV7t+APlf/xmlE1r8BI+GbwKEvfBM49IVvAoe+a+sL3wQOfeGbwKEvfBM49IVvAoe+8E3gp75y/wb0tbeucv8G9LW3rnL/BvS1t65y/wb0tbeucv8G9LW3Lln/Boy4+jdgxNW/ASOu/g0YsWywhxFX/waMuPo3YMTVvwEjrv4NGHH1b5xGZP0bMEp++192E8CJrX8DTmwX+uGUF1v/BpzY+jfgxNa/ASe2/g04sfVvwImtfwNObP0bpxNd/wac2Po34MTWvwEntv4NODmhE1v/BpzY+jfgxNa/ASe2/g04sfVvnE50/RtwYuvfgBNb/wac2Po34OSETmz9G3Bi69+AE1v/BpzY+jfgxNa/sbNRbP0bW4qtf2NLsfVvbCm2e+23FFv/xpZi69/YUoQf11W6/o0txda/saXY+je2lDNKkc0pK5aQPgZFOH289XVzUFtfNwe19XVzUFvftfV1c1BbXzcHtfV1c1BbXzcHtfV108fQF04fb33trSucPt762ltXOH289bW3rnD6eOtrb13h9PHWp0ofw4grfbyNdHNQW183B7X1dXNQW9+19XVzUFtfNwe19XVzUFtfNwe19XVzUNAXTh9vfe2tK5w+3vraW1c4fbz1tbeucPp462tvXeH08dbX3rpc6eNtRJU+3kZU6eNtRJU+3kYsG+xhRJU+3kZU6eNtRJU+3kZU6eNtRJU+hhFX+ngbJb/9r5KZ24ksfbydyI4z7lNeZOnj7USWPt5OZOnj7USWPt5OZOnj7USWPt5OZOljOLGlj7cTWfp4O5Glj7cTWfp4OzmhE1n6eDuRpY+3E1n6eDuRpY+3E1n6GE5s6ePtRJY+3k5k6ePtRJY+3k5O6ESWPt5OZOnj7USWPt5OZOnj7USWPv6TjSJLH/+RIksf/5EiSx//kSJM9dGlj/9IkaWP/0gRflxHlz7+I0WWPv4jRZY+/iPljFJsc6qW/3zaQ+3l5uP2QmfeR/kq/vhSe+dv6qf5lDVfsua16KpXXXXTVT901V1Xvemqd1113V1adZdp1d2mprtNTXebmu42Nd1tarrb1HS3qYVt0wdixCM+3k7tdsbHm18jVjjiKPGIGo+weMTHU27eXiKfxzXC4xEtHtHjEZ++3a2Mv760lXmNmPGIFY7wEo+o8YhPf2mb3b602RNEj0d8+uPux+28XG92iWglHhH/jWofv91+/41q4xox4xErHNFLPKLGIyweccQjPB7R4hE9HvHFt7v3a8SMR3z+dt/H4LhGjI/f7vswf4qo8QiLR3z6dvd72KKXdY3weESLR/R4xIhHfPx2r9u91L2Wa8QKR8wSj6jxCItHHPEIj0e0eESPR4wvIq7f7jnjEZ+/3bejMd2uEevjt/v+KepTRI1HWDzi49398r9Yl8cjWjyixyNGPGLGI+I/ZnlyMvt7DCsZ/RtWpPs3rEj3b1iR7t+wIt2/YUW6f8OKdP+GFen+DSvS/RtWpPs3rEj3b1iR7t+wIt2/YUW6f8OKdP+GFen+DSvS/RtWpPs3rEj3b1iR7t+wwta/YYWtf8OKdP+GFen+DSvS/RtWpPs3rEj3b1iR7t+wIt2/YUW6f8OKdP+GFen+DSvS/RvQ1966yv0b0Nfeusr9G1ak+zegr711lfs3rEj3b1hh69+AEVf/Boy4+jdgxNW/ASOWDfYw4urfsMLWv2GFrX/DClv/hhW2/g0rbP0bVvj6N6zw9W9Y4evfsMLXv2GFr3/DCl//hhW+/g0rfP0bVvj6N6zw9W9Y4evfsMLXv2GFr3/DCl//hhW+/g0rfP0bVvj6N6zw9W9Y4evfsMLXv2GFr3/DCl//hhW+/g0rfP0bVvj6N6zw9W9Y4evfsMLXv2GFr3/DCl//hhXC/o0txda/saXY+je2FNu99luKrX9jS7H1b2wpwo/r+Po3thRb/8aWYuvf2FLOKEU3p4Zq/8ZpLnpl+GkuemP4aa7avwF10RvDoS56YzjURW8Mh7rrqoveGA510f4NqOvuUtX+DajrblPV/g2o625T1f4NqOtuU9X+DajrbtPo/g0gRjwiuH8DiBWOiO7fAKLGIyweEdy/AYTHI1o8oscjgvs3gJjxiBWOiO7fAKLGI4L7N4Do8YjgiyFPRHT/BhDx36jo/g0gZjxihSOi+zeAqPEIi0cc8QiPR7R4RI9HBPdvADHjEcH9G/gbWHD/BhA1HmHxiOD+DSA8HtHiET0eMeIRwf0bQKxwRHT/BhA1HmHxiCMe4fGIFo/o8Yjg/g0gZjwiuH8DZymC+zeAqPEIi0cE928A4fGIFo/o8YgRj5jxiPiPWcL7N46e0b9xUpT7N6AvfBM49IVvAoe+8E3g0HdtfeGbwKEvfBM49IVvAoe+8E3g0Bfu3zj1lfs3oK+9dZX7N6CvvXWV+zegr711lfs3oK+9dZX7N6DP1b9xGpH1b8BI+CZw6AvfBA594ZvAoe/a+sI3gUNf+CZw6AvfBA594ZvAoS98E/ipr9y/AX3travcvwF97a2r3L8Bfe2tq9y/AX3travcvwF97a1L1r8BI67+DRhx9W/AiKt/A0YsG+xhxNW/ASOu/g0YcfVvwIirfwNGXP0bpxFZ/waMkt/+l90EcGLr34AT24V+OOXF1r8BJ7b+DTix9W/Aia1/A05s/RtwYuvfgBNb/8bpRNe/ASe2/g04sfVvwImtfwNOTujE1r8BJ7b+DTix9W/Aia1/A05s/RunE13/BpzY+jfgxNa/ASe2/g04OaETW/8GnNj6N+DE1r8BJ7b+DTix9W/sbBRb/8aWYuvf2FJs/Rtbiu1e+y3F1r+xpdj6N7YU4cd1fP0bW4qtf2NLsfVvbClnlGKbU35kpI9PinL6GPrCOSjoC+egoC+cg4K+a+sL56CgL5yDgr5wDgr6wjko6Aunj0995fQx9LW3rnL6GPraW1c5fQx97a2rnD6GvvbWVU4fQ58rfXwakaWPYSScg4K+cA4K+sI5KOi7tr5wDgr6wjko6AvnoKAvnIOCvnAO6tRXTh9DX3vrKqePoa+9dZXTx9DX3rrK6WPoa29d5fQx9LW3Lln6GEZc6WMYcaWPYcSVPoYRywZ7GHGlj2HElT6GEVf6GEZc6WMYcaWPTyOy9DGMkt/+l8lMOLGlj+HEdpwRp7zY0sdwYksfw4ktfQwntvQxnNjSx3BiSx/DiS19fDrRpY/hxJY+hhNb+hhObOljODmhE1v6GE5s6WM4saWP4cSWPoYTW/r4dKJLH8OJLX0MJ7b0MZzY0sdwckIntvQxnNjSx3BiSx/DiS19DCe29PHORrGlj7cUW/p4S7Glj7cUYaqPL328pdjSx1uK8OM6vvTxlmJLH28ptvTxlnJGKbI51Z7mBEa5KY32KBM/f9R/e3C8++B898H15oPXh8d/8mB990F798HLl2mW8teDszx70N99sL37YH/3wfHug/PdB9ebD16flpz3j1PnmE8erO8+aO8+eLz7oL/7YHv3wf7ug9e/OXPcHlz9yYPz3QfXmw9en/j5yYP13Qft3QePdx+8/M1Z9fZarfrktbo+NPKTB/u7D453H5zvPrjefPD63MFPHqwvHrQnP8du7z54vPvg9W/OcZsAy59MgOvjBj95sL/74Hj3wfnug+vNB0d598Hr35x+/9djcf+vJ//n33zxA2M5mCMH4zmYloPpOZiRg5k5mJWCuT4v8H1MzhSYOVNg5kyBmTMFZs4UmDlTYOZMgZkzBWbOFFg5U2DlTIGVMwVWzhRYOVNg5UyBlTMFVs4UWDlTYOVMgSd/qwzg1CSOJXGOJI4ncVoSpydxRhJnJnGS5kFNmgc1aR7UpHlQk+ZBTZoHNWke1KR5UJPmQU2aBzVpHljSPLCkeWBJ88CS5oElzQNLmgeWNA8saR5Y0jywpHlwJM2DI2keHEnz4EiaB0fSPDiS5sGRNA+OpHlwJM2DI2keeNI88KR54EnzwJPmgSfNA0+aB540DzxpHnjSPPCkedCS5kFLmgctaR60pHnQkuZBS5oHLWketKR50JLmQUuaBz1pHvSkedCT5kFPmgc9aR70pHnQk+ZBT5oHPWke9KR5MJLmQdIZxJp0CLEmnUKsSccQa9I5xJp0ELEmnUSsSUcRa9JZxJp0GLEmnUasSccRa9J5xJp0ILEmnUisSUcSa9KZxJp0KLEmnUqsSccSa9K5xJp0MLEmnUysSUcTa9LZxJp0OLEmnU6sSccTa9L5REs6n2hJ5xMt6XyiJZ1PtOJJnJbE6UmckcSZSZykeZB0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+URLOp9oSecTLel8oiWdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+UT7wnm+Vm4337T6t6tje/87ZqZgvnD6rdkdc7RnGMvBHDkYz8G0HMy/XTx/e3S8/egXjiH85Pf7C6cQfoRpOZieg8kZcV84gdD8dgt3a/YMs1IwXzh/8CNMzcFYDuYLU+CYd8zxDOM5mJaD6TmYkYOZOZiVsky/cOrgR5icf7atnH+2rZx/tn3hxMGPMDn/bPvCeYMfYUYOZuZgUqbAUUoOpuZgLAdz5GA8B9NyMD0HM3IwMweTMwVqzhSoOVOg5kyBmjMFas4UqDlToOZMgZozBWrOFKg5U8BypoDlTAHLmQKWMwUsZwpYzhSwnClgCVNg/ee6EK75rfyjtv5fRbP/HzLb7fOnOes/f2mt825v9rePEOwhNNmEFpvQ9b93ftWo0hkZndFBZ+R0Ro3OqNMZ0U3sSjeyK93MNrqZbXQz2+hmttHNbKOb2UY3sy1wZj8gIwPy+WRdpf71tesoX/jeLjajo9AZVTojozM66IyczqjRGXU6o0FnRDezD7qZ7XQz2+lmttPNbKeb2U43s51uZjvdzPbAmf2AzAzISoC0kgGpGRDLgBwZEM+AtAxIz4BkvPH981/hWspx++JS7RpjOZjPf/jV/DGL+/UnDH2l/L8ZJQeT8ysw/AuYvu6Y2a8xLQfTczAjBzNzMN94b3p9YMYlZpYcTM3BWA7myMF4DqblYHoOZuRgZg7mC1OgVr99cfXrf9mskoOpORjLwRw5GM/BtBxMz8GMHMwXpkAddsfMeY1ZKZgnzd8BnCPlPz1q8SROS+L0JM7K4XzhnOHPODWJY0mchPen1euTu+P+3BgvPqr1ckvzurV//tJ5nxqrPM4cn5/pvvEB8Gk+Zc2XrPn1y6yhXnXVTVf90FV3XfWmq9511XV3adVdplV3m5ruNjXdbWq629R0t6npblPT3aYWtk0fiBGP+Hg7tdtfY735NWKFI44Sj6jxCItHfDzl5u0l8nlcIzwe0eIRPR7x6dvdyu3zqlbmNWLGI1Y4wks8osYjPv2lbXb70mZPED0e8emPux+3oxu92SWilXhE/Deqffx23z+Nbm1cI2Y8YoUjeolH1HiExSOOeITHI1o8oscjvvh2936NmPGIz9/u+xgc14jx8dt9H+ZPETUeYfGIT9/ufj8W28u6Rng8osUjejxixCM+frtXuyFquUascMQs8Ygaj7B4xBGP8HhEi0f0eMT4IuL67Z4zHvH52307ntftGrE+frvvn6I+RdR4hMUjPt7dL/+LdXk8osUjejxixCNmPCL+Y5Ynp1W/x+hPTsDVftwPBvf24o821cttElav9ZLy5Bjkv8P4vGPGqz8kffE2pP7s9JSOvmnrH9r6rq3ftPW7tv7Q1p/a+kta37S3rmlvXdPeuqa9dU1765r21jXtrWvaW9e0t66xbN270cGySB9Gybvxm9eX9Wfn6HT0D21919Zv2vpdW39o609t/SWt70VbX3vruvbWde2t69pb17W3rmtvXdfeuq69dV176zaWrfswYlmkDyOW3fgwYll3DyOWDfYwYllKDyOWPfMwYlkdDyOWbfAwYhnwd6NON7N78tv/8hbp/iyq8stOyb/dL+85688CGL/7fRpG6HQQOvVspxdXd/dn8YtfdpqETovPaRZCp/T59OJi6v4sc/LLTgehkxM6NUKnTug0CJ0modPic1qF0Cl7jr+6wbw/Sxf9stNB6OSETo3QqRM6DUKnSei0+JyedRIESr0oMNhSlVHKGKUa3+c9z3oUfllqMEoRflxXswOHP5MyRqmDUcoZpejm1FTt3zjNRa8MP81Fbww/zVX7N6AuemM41EVvDIe66I3hUHddddEbw6Eu2r8Bdd1dqtq/AXXdbaravwF13W2q2r8Bdd1tqtq/AXXdbRrdvwHEiEcE928AscIR0f0bQNR4hMUjgvs3gPB4RItH9HhEcP8GEDMescIR0f0bQNR4RHD/BhA9HhF8MeSJiO7fACL+GxXdvwHEjEescER0/wYQNR5h8YgjHuHxiBaP6PGI4P4NIGY8Irh/A38DC+7fAKLGIyweEdy/AYTHI1o8oscjRjwiuH8DiBWOiO7fAKLGIyweccQjPB7R4hE9HhHcvwHEjEcE92/gLEVw/wYQNR5h8Yjg/g0gPB7R4hE9HjHiETMeEf8xS3j/xhgZ/RsnRbl/A/rCN4FDX/gmcOgL3wQOfdfWF74JHPrCN4FDX/gmcOgL3wQOfeH+jVNfuX8D+tpbV7l/A/raW1e5fwP62ltXuX8D+tpbV7l/A/pc/RunEVn/BoyEbwKHvvBN4NAXvgkc+q6tL3wTOPSFbwKHvvBN4NAXvgkc+sI3gZ/6yv0b0Nfeusr9G9DX3rrK/RvQ1966yv0b0Nfeusr9G9DX3rpk/Rsw4urfgBFX/waMuPo3YMSywR5GXP0bMOLq34ARV/8GjLj6N2DE1b9xGpH1b8Ao+e1/2U0AJ7b+DTixXeiHU15s/RtwYuvfgBNb/wac2Po34MTWvwEntv4NOLH1b5xOdP0bcGLr34ATW/8GnNj6N+DkhE5s/RtwYuvfgBNb/wac2Po34MTWv3E60fVvwImtfwNObP0bcGLr34CTEzqx9W/Aia1/A05s/RtwYuvfgBNb/8bORrH1b2wptv6NLcXWv7Gl2O6131Js/Rtbiq1/Y0sRflzH17+xpdj6N7YUW//GlnJGKbY5NT0jfXxSlNPH0BfOQUFfOAcFfeEcFPRdW184BwV94RwU9IVzUNAXzkFBXzh9fOorp4+hr711ldPH0NfeusrpY+hrb13l9DH0tbeucvoY+lzp49OILH0MI+EcFPSFc1DQF85BQd+19YVzUNAXzkFBXzgHBX3hHBT0hXNQp75y+hj62ltXOX0Mfe2tq5w+hr721lVOH0Nfe+sqp4+hr711ydLHMOJKH8OIK30MI670MYxYNtjDiCt9DCOu9DGMuNLHMOJKH8OIK318GpGlj2GU/Pa/TGbCiS19DCe244w45cWWPoYTW/oYTmzpYzixpY/hxJY+hhNb+hhObOnj04kufQwntvQxnNjSx3BiSx/DyQmd2NLHcGJLH8OJLX0MJ7b0MZzY0senE136GE5s6WM4saWP4cSWPoaTEzqxpY/hxJY+hhNb+hhObOljOLGlj3c2ii19vKXY0sdbii19vKUIU3186eMtxZY+3lKEH9fxpY+3FFv6eEuxpY+3lDNKsc2pZf/5tIfay83H7YXOvI/yVfzxpfbO39RP8ylrvmTNa9FVr7rqpqt+6Kq7rnrTVe+66rq7tOou06q7TU13m5ruNjXdbWq629R0t6npblML26YPxIhHfLyd2u2Mjze/RqxwxFHiETUeYfGIj6fcvL1EPo9rhMcjWjyixyM+fbtbGX99aSvzGjHjESsc4SUeUeMRn/7SNrt9abMniB6P+PTH3Y/bebne7BLRSjwi/hvVPn67/f4b1cY1YsYjVjiil3hEjUdYPOKIR3g8osUjejzii29379eIGY/4/O2+j8FxjRgfv933Yf4UUeMRFo/49O3u97BFL+sa4fGIFo/o8YgRj/j47V63e6l7LdeIFY6YJR5R4xEWjzjiER6PaPGIHo8YX0Rcv91zxiM+f7tvR2O6XSPWx2/3/VPUp4gaj7B4xMe7++V/sS6PR7R4RI9HjHjEjEfEf8zy5GT21xi9WEL/BijC/RtbX/cm8K2vexP41te9CXzru7a+7k3gW1/3JvCtr3sT+NbXvQl86+v2b0BfuH9j62tvXeH+ja2vvXWF+ze2vvbWFe7f2PraW1e4f2PrU/VvwIirf2Mb6d4EvvV1bwLf+ro3gW9919bXvQl86+veBL71dW8C3/q6N4Fvfd2bwKEv3L+x9bW3rnD/xtbX3rrC/RtbX3vrCvdvbH3trSvcv7H1tbcuV//GNqLq39hGVP0b24iqf2MbsWywhxFV/8Y2ourf2EZU/RvbiKp/YxtR9W/AiKt/Yxslv/2vugm2E1n/xnYiu9Bvn/Ii69/YTmT9G9uJrH9jO5H1b2wnsv6N7UTWv7GdyPo34MTWv7GdyPo3thNZ/8Z2Iuvf2E5O6ETWv7GdyPo3thNZ/8Z2Iuvf2E5k/RtwYuvf2E5k/Rvbiax/YzuR9W9sJyd0Iuvf2E5k/Rvbiax/YzuR9W9sJ7L+jT/ZKLL+jT9SZP0bf6TI+jf+SJHda/9Hiqx/448UWf/GHynCj+vo+jf+SJH1b/yRIuvf+CPljFJ0c2qJ9m/AXPPKcJhr3hgOc9H+ja2ueWP4Vte8MXyra94YvtVdV13zxvCtrtm/sdV1d6lo/8ZW192mov0bW113m4r2b2x13W0q2r+x1XW3aXD/xkaMeERs/8ZGrHBEcP/GRtR4hMUjYvs3NsLjES0e0eMRsf0bGzHjESscEdy/sRE1HhHbv7ERPR4RezEkEK3EI+K/UcH9Gxsx4xErHBHcv7ERNR5h8YgjHuHxiBaP6PGI2P6NjZjxiNj+jf03sNj+jY2o8QiLR8T2b2yExyNaPKLHI0Y8IrZ/YyNWOCK4f2MjajzC4hFHPMLjES0e0eMRsf0bGzHjEbH9G/ssRWz/xkbUeITFI2L7NzbC4xEtHtHjESMeMeMR8R+zhPdv1JnRv3FSlPs3oC98Ezj0hW8Ch77wTeDQd2194ZvAoS98Ezj0hW8Ch77wTeDQF+7fOPWV+zegr711lfs3oK+9dZX7N6CvvXWV+zegr711lfs3oM/Vv3EakfVvwEj4JnDoC98EDn3hm8Ch79r6wjeBQ1/4JnDoC98EDn3hm8ChL3wT+Kmv3L8Bfe2tq9y/AX3travcvwF97a2r3L8Bfe2tq9y/AX3trUvWvwEjrv4NGHH1b8CIq38DRiwb7GHE1b8BI67+DRhx9W/AiKt/A0Zc/RunEVn/BoyS3/6X3QRwYuvfgBPbhX445cXWvwEntv4NOLH1b8CJrX8DTmz9G3Bi69+AE1v/xulE178BJ7b+DTix9W/Aia1/A05O6MTWvwEntv4NOLH1b8CJrX8DTmz9G6cTXf8GnNj6N+DE1r8BJ7b+DTg5oRNb/wac2Po34MTWvwEntv4NOLH1b+xsFFv/xpZi69/YUmz9G1uK7V77LcXWv7Gl2Po3thThx3V8/Rtbiq1/Y0ux9W9sKWeUYptT1jLSxydFOX0MfeEcFPSFc1DQF85BQd+19YVzUNAXzkFBXzgHBX3hHBT0hdPHp75y+hj62ltXOX0Mfe2tq5w+hr721lVOH0Nfe+sqp4+hz5U+Po3I0scwEs5BQV84BwV94RwU9F1bXzgHBX3hHBT0hXNQ0BfOQUFfOAd16iunj6GvvXWV08fQ1966yulj6GtvXeX0MfS1t65y+hj62luXLH0MI670MYy40scw4kofw4hlgz2MuNLHMOJKH8OIK30MI670MYy40senEVn6GEbJb//LZCac2NLHcGI7zohTXmzpYzixpY/hxJY+hhNb+hhObOljOLGlj+HElj4+nejSx3BiSx/DiS19DCe29DGcnNCJLX0MJ7b0MZzY0sdwYksfw4ktfXw60aWP4cSWPoYTW/oYTmzpYzg5oRNb+hhObOljOLGlj+HElj6GE1v6eGej2NLHW4otfbyl2NLHW4ow1ceXPt5SbOnjLUX4cR1f+nhLsaWPtxRb+nhLOaMU25w6xpP0cfNxe7D18c+Ub549P4Umm9BiE3oS5f5No0pnZHRGB52R0xk1OqNOZ0Q3sSvdyK50M9voZrbRzWyjm9lGN7ONbmYb3cy2wJn9gIwMyOeT9ZsHWWG02IyOQmdU6YyMzuigM3I6o0Zn1OmMBp0R3cw+6Ga2081sp5vZTjeznW5mO93MdrqZ7XQz2wNn9gMyMyArAdJKBqRmQCwDcmRAPAPSMiA9A5LxxvfPf4VfhgGAsRzM5z/8n/z5r6+U/zej5GByfgWGfwHz4kg+MC0H03MwIwczczDfeG9enObFH8NLDqbmYCwHc+RgPAfTcjA9BzNyMDMH84Up8Op8Kk6glBxMzcFYDubIwXgOpuVgeg5m5GC+MAVenT8GZqVgnp1S/z7nSPlPj1o8idOSOD2Js3I4Xzhn+DNOTeJYEifj/VnXJ3fH/bkxXnxU6+V2ktjtxUHieZ8aq/j//u0z3Xc+AF7XR3wlzJes+fXLrKFeddVNV/3QVXdd9aar3nXVdXdp1V2mVXebmu42Nd1tarrb1HS3qeluU9Pdpha2TR+IEY/4eDu1219jvfk1YoUjjhKPqPEIi0d8POXm7SXyeVwjPB7R4hE9HvHp293K7fOqVuY1YsYjVjjCSzyixiM+/aVtdvvSZk8QPR7x6Y/7/B/560t7s0tEK/GI+G9U+/jtvn8a3dq4Rsx4xApH9BKPqPEIi0cc8QiPR7R4RI9HfPHt7v0aMeMRn7/d9zE4rhHj47f7PsyfImo8wuIRn77d/X4stpd1jfB4RItH9HjEiEd8/HavdkPUco1Y4YhZ4hE1HmHxiCMe4fGIFo/o8YjxRcT12z1nPOLzt/t2PK/bNWJ9/HbfP0V9iqjxCItHfLy7X/4X6/J4RItH9HjEiEfMeET8xyxPTqt+j+FPTsDVf3edZrlNwuq1XlJq8uXQ37wNyZ+dntLRN239Q1vftfWbtn7X1h/a+lNbf0nrm/bWNe2ta9pb17S3rmlvXdPeuqa9dU1765r21jWWrXs3OlgW6cMoeTd+8/oyf3aOTkf/0NZ3bf2mrd+19Ye2/tTWX9L6XrT1tbeua29d1966rr11XXvruvbWde2t69pb17W3bmPZug8jlkX6MGLZjQ8jlnX3MGLZYA8jlqX0MGLZMw8jltXxMGLZBg8jlgF/N+p0M7snv/0vb5H2Z1GVX3Ziq+L2ZwGM3/0+DSN0OgiderbTi6u7/Vn84pedJqHT4nOahdApfT69uJjan2VOftnpIHRyQqdG6NQJnQah0yR0WnxOqxA6Zc/xVzeY+7N00S87HYROTujUCJ06odMgdJqETovP6VknQaDUiwKDLVUZpYxRqvF93vOsR+GXpQajFOHHdTU7cPgzKWOUOhilnFGKbU61rtq/cZqLXhl+moveGH6aq/ZvQF30xnCoi94YDnXRG8Oh7rrqojeGQ120fwPqurtUtX8D6rrbVLV/A+q621S1fwPquttUtX8D6rrbNLp/A4gRjwju3wBihSOi+zeAqPEIi0cE928A4fGIFo/o8Yjg/g0gZjxihSOi+zeAqPGI4P4NIHo8IvhiyBMR3b8BRPw3Krp/A4gZj1jhiOj+DSBqPMLiEUc8wuMRLR7R4xHB/RtAzHhEcP8G/gYW3L8BRI1HWDwiuH8DCI9HtHhEj0eMeERw/wYQKxwR3b8BRI1HWDziiEd4PKLFI3o8Irh/A4gZjwju38BZiuD+DSBqPMLiEcH9G0B4PKLFI3o8YsQjZjwi/mOW8P6N3jL6N06Kcv8G9IVvAoe+8E3g0Be+CRz6rq0vfBM49IVvAoe+8E3g0Be+CRz6wv0bp75y/wb0tbeucv8G9LW3rnL/BvS1t65y/wb0tbeucv8G9Ln6N04jsv4NGAnfBA594ZvAoS98Ezj0XVtf+CZw6AvfBA594ZvAoS98Ezj0hW8CP/WV+zegr711lfs3oK+9dZX7N6CvvXWV+zegr711lfs3oK+9dcn6N2DE1b8BI67+DRhx9W/AiGWDPYy4+jdgxNW/ASOu/g0YcfVvwIirf+M0IuvfgFHy2/+ymwBObP0bcGK70A+nvNj6N+DE1r8BJ7b+DTix9W/Aia1/A05s/RtwYuvfOJ3o+jfgxNa/ASe2/g04sfVvwMkJndj6N+DE1r8BJ7b+DTix9W/Aia1/43Si69+AE1v/BpzY+jfgxNa/AScndGLr34ATW/8GnNj6N+DE1r8BJ7b+jZ2NYuvf2FJs/Rtbiq1/Y0ux3Wu/pdj6N7YUW//GliL8uI6vf2NLsfVvbCm2/o0t5YxSbHNqWEb6+KQop4+hL5yDgr5wDgr6wjko6Lu2vnAOCvrCOSjoC+egoC+cg4K+cPr41FdOH0Nfe+sqp4+hr711ldPH0NfeusrpY+hrb13l9DH0udLHpxFZ+hhGwjko6AvnoKAvnIOCvmvrC+egoC+cg4K+cA4K+sI5KOgL56BOfeX0MfS1t65y+hj62ltXOX0Mfe2tq5w+hr721lVOH0Nfe+uSpY9hxJU+hhFX+hhGXOljGLFssIcRV/oYRlzpYxhxpY9hxJU+hhFX+vg0Iksfwyj57X+ZzIQTW/oYTmzHGXHKiy19DCe29DGc2NLHcGJLH8OJLX0MJ7b0MZzY0senE136GE5s6WM4saWP4cSWPoaTEzqxpY/hxJY+hhNb+hhObOljOLGlj08nuvQxnNjSx3BiSx/DiS19DCcndGJLH8OJLX0MJ7b0MZzY0sdwYksf72wUW/p4S7Glj7cUW/p4SxGm+vjSx1uKLX28pQg/ruNLH28ptvTxlmJLH28pZ5Rim1Oz/OfTHmovNx+3FzrzPspX8ceX2jt/Uz/Np6z5kjWvRVe96qqbrvqhq+666k1Xveuq6+7SqrtMq+42Nd1tarrb1HS3qeluU9Pdpqa7TS1smz4QIx7x8XZqtzM+3vwascIRR4lH1HiExSM+nnLz9hL5PK4RHo9o8Ygej/j07W5l/PWlrcxrxIxHrHCEl3hEjUd8+kvb7PalzZ4gejzi0x93P27n5XqzS0Qr8Yj4b1T7+O32+29UG9eIGY9Y4Yhe4hE1HmHxiCMe4fGIFo/o8Ygvvt29XyNmPOLzt/s+Bsc1Ynz8dt+H+VNEjUdYPOLTt7vfwxa9rGuExyNaPKLHI0Y84uO3e93upe61XCNWOGKWeESNR1g84ohHeDyixSN6PGJ8EXH9ds8Zj/j87b4djel2jVgfv933T1GfImo8wuIRH+/ul//Fujwe0eIRPR4x4hEzHhH/McuTk9nfY6yS0b+xinT/xirS/RurSPdvrCLdv7GKdP/GKtL9G6tI92+sIt2/sYp0/8Yq0v0bq0j3b6wi3b+xinT/xirS/RurSPdvrCLdv7GKdP/GKtL9G6tI92+swta/sQpb/8Yq0v0bq0j3b6wi3b+xinT/xirS/RurSPdvrCLdv7GKdP/GKtL9G6tI92+sIt2/AX3travcvwF97a2r3L+xinT/BvS1t65y/8Yq0v0bq7D1b8CIq38DRlz9GzDi6t+AEcsGexhx9W+swta/sQpb/8YqbP0bq7D1b6zC1r+xCl//xip8/Rur8PVvrMLXv7EKX//GKnz9G6vw9W+swte/sQpf/8YqfP0bq/D1b6zC17+xCl//xip8/Rur8PVvrMLXv7EKX//GKnz9G6vw9W+swte/sQpf/8YqfP0bq/D1b6zC17+xCl//xip8/Rur8PVvrMLXv7EKX//GKnz9G6sQ9m9sKbb+jS3F1r+xpdjutd9SbP0bW4qtf2NLEX5cx9e/saXY+je2FFv/xpZyRim6OTVU+zdOc9Erw09z0RvDT3PV/g2oi94YDnXRG8OhLnpjONRdV130xnCoi/ZvQF13l6r2b0Bdd5uq9m9AXXebqvZvQF13m6r2b0Bdd5tG928AMeIRwf0bQKxwRHT/BhA1HmHxiOD+DSA8HtHiET0eEdy/AcSMR6xwRHT/BhA1HhHcvwFEj0cEXwx5IqL7N4CI/0ZF928AMeMRKxwR3b8BRI1HWDziiEd4PKLFI3o8Irh/A4gZjwju38DfwIL7N4Co8QiLRwT3bwDh8YgWj+jxiBGPCO7fAGKFI6L7N4Co8QiLRxzxCI9HtHhEj0cE928AMeMRwf0bOEsR3L8BRI1HWDwiuH8DCI9HtHhEj0eMeMSMR8R/zBLdvzFKT+jfAEW4f2Pr694EvvV1bwLf+ro3gW9919bXvQl86+veBL71dW8C3/q6N4Fvfd3+DegL929sfe2tK9y/sfW1t65w/8bW1966wv0bW1976wr3b2x9qv4NGHH1b2wj3ZvAt77uTeBbX/cm8K3v2vq6N4Fvfd2bwLe+7k3gW1/3JvCtr3sTOPSF+ze2vvbWFe7f2PraW1e4f2Pra29d4f6Nra+9dYX7N7a+9tbl6t/YRlT9G9uIqn9jG1H1b2wjlg32MKLq39hGVP0b24iqf2MbUfVvbCOq/g0YcfVvbKPkt/9VN8F2Iuvf2E5kF/rtU15k/Rvbiax/YzuR9W9sJ7L+je1E1r+xncj6N7YTWf8GnNj6N7YTWf/GdiLr39hOZP0b28kJncj6N7YTWf/GdiLr39hOZP0b24msfwNObP0b24msf2M7kfVvbCey/o3t5IROZP0b24msf2M7kfVvbCey/o3tRNa/8ScbRda/8UeKrH/jjxRZ/8YfKbJ77f9IkfVv/JEi69/4I0X4cR1d/8YfKbL+jT9SZP0bf6ScUYptTtUjI318UpTTx9AXzkFBXzgHBX3hHBT0XVtfOAcFfeEcFPSFc1DQF85BQV84fXzqK6ePoa+9dZXTx9DX3rrK6WPoa29d5fQx9LW3rnL6GPpc6ePTiCx9DCPhHBT0hXNQ0BfOQUHftfWFc1DQF85BQV84BwV94RwU9IVzUKe+cvoY+tpbVzl9DH3traucPoa+9tZVTh9DX3vrKqePoa+9dcnSxzDiSh/DiCt9DCOu9DGMWDbYw4grfQwjrvQxjLjSxzDiSh/DiCt9fBqRpY9hlPz2v0xmwoktfQwntuOMOOXFlj6GE1v6GE5s6WM4saWP4cSWPoYTW/oYTmzp49OJLn0MJ7b0MZzY0sdwYksfw8kJndjSx3BiSx/DiS19DCe29DGc2NLHpxNd+hhObOljOLGlj+HElj6GkxM6saWP4cSWPoYTW/oYTmzpYzixpY93Nootfbyl2NLHW4otfbylCFN9fOnjLcWWPt5ShB/X8aWPtxRb+nhLsaWPt5QzSnHNKbMyn+QERrkpjfYoEz9/1H97cLz74Hz3wfXmg9eHx3/yYH33QXv3wcuXaZby14OzPHvQ332wvftgf/fB8e6D890H15sPXp+WnPePU+eYTx6s7z5o7z54vPugv/tge/fB/u6D1785c9weXP3Jg/PdB9ebD16f+PnJg/XdB+3dB493H7z8zVn19lqt+uS1uj408pMH+7sPjncfnO8+uN588PrcwU8erC8etCc/x27vPni8++D1b85xmwDLn0yA6+MGP3mwv/vgePfB+e6D680HR3n3wevfnH7/12Nx/68n/+fffPEDYzmYIwfjOZiWg+k5mJGDmTmYlYK5Pi/wfUzOFJg5U2DmTIGZMwVmzhSYOVNg5kyBmTMFZs4UWDlTYOVMgZUzBVbOFFg5U2DlTIGVMwVWzhRYOVNg5UyBJ3+rDODUJI4lcY4kjidxWhKnJ3FGEmcmcZLmQU2aBzVpHtSkeVCT5kFNmgc1aR7UpHlQk+ZBTZoHNWkeWNI8sKR5YEnzwJLmgSXNA0uaB5Y0DyxpHljSPLCkeXAkzYMjaR4cSfPgSJoHR9I8OJLmwZE0D46keXAkzYMjaR540jzwpHngSfPAk+aBJ80DT5oHnjQPPGkeeNI88KR50JLmQUuaBy1pHrSkedCS5kFLmgctaR60pHnQkuZBS5oHPWke9KR50JPmQU+aBz1pHvSkedCT5kFPmgc9aR70pHkwkuZB0hnEmnQIsSadQqxJxxBr0jnEmnQQsSadRKxJRxFr0lnEmnQYsSadRqxJxxFr0nnEmnQgsSadSKxJRxJr0pnEmnQosSadSqxJxxJr0rnEmnQwsSadTKxJRxNr0tnEmnQ4sSadTqxJxxNr0vlESzqfaEnnEy3pfKIlnU+04kmclsTpSZyRxJlJnKR5kHQ+0ZLOJ1rS+URLOp9oSecTLel8oiWdT7Sk84mWdD7Rks4nWtL5REs6n2hJ5xMt6XyiJZ1PtKTziZZ0PtGSzida0vlESzqfaEnnEy3pfKIlnU+0pPOJlnQ+0ZLOJ1rS+URLOp9oSecTLel8oiWdT7Sk84mWdD7Rks4nWtL5RPvCeb5WbjfftPq3q2N7/ztmpmC+cPqt2R1ztGcYy8EcORjPwbQczL9dPH97dLz96BeOIfzk9/sLpxB+hGk5mJ6DyRlxXziB0Px2C3dr9gyzUjBfOH/wI0zNwVgO5gtT4Jh3zPEM4zmYloPpOZiRg5k5mJWyTL9w6uBHmJx/tq2cf7atnH+2feHEwY8wOf9s+8J5gx9hRg5m5mBSpsBRSg6m5mAsB3PkYDwH03IwPQczcjAzB5MzBWrOFKg5U6DmTIGaMwVqzhSoOVOg5kyBmjMFas4UqDlTwHKmgOVMAcuZApYzBSxnCljOFLCcKWDxU6D6f64L4Zrfyj9q6/9VNPv/IbPdPn+as/7zl9Y67/Zmf/sIwR5Ck01osQld/3vnV40qnZHRGR10Rk5n1OiMOp0R3cSudCO70s1so5vZRjezjW5mG93MNrqZbXQz2wJn9gMyMiCfT9ZV6l9fu47yhe/tYjM6Cp1RpTMyOqODzsjpjBqdUaczGnRGdDP7oJvZTjeznW5mO93MdrqZ7XQz2+lmttPNbA+c2Q/IzICsBEgrGZCaAbEMyJEB8QxIy4D0DEjGG98//xWupRy3Ly7VrjGWg/n8h1/NH7O4X3/C0FfK/5tRcjA5vwLDv4Dp646Z/RrTcjA9BzNyMDMH8433ptcHZlxiZsnB1ByM5WCOHIznYFoOpudgRg5m5mC+MAVq9dsXV7/+l80qOZiag7EczJGD8RxMy8H0HMzIwXxhCtRhd8yc15iVgnnS/B3AOVL+06MWT+K0JE5P4qwczhfOGf6MU5M4lsTJeH/69cndcX9ujBcf1Xq5pXnd2j9/6bxPjVUeZ47Pz3Tf+QC4Xx/xlTBfsubXL7OGetVVN131Q1fdddWbrnrXVdfdpVV3mVbdbWq629R0t6npblPT3aamu01Nd5ta2DZ9IEY84uPt1G5/jfXm14gVjjhKPKLGIywe8fGUm7eXyOdxjfB4RItH9HjEp293K7fPq1qZ14gZj1jhCC/xiBqP+PSXttntS5s9QfR4xKc/7n7cjm70ZpeIVuIR8d+o9vHbff80urVxjZjxiBWO6CUeUeMRFo844hEej2jxiB6P+OLb3fs1YsYjPn+772NwXCPGx2/3fZg/RdR4hMUjPn27+/1YbC/rGuHxiBaP6PGIEY/4+O1e7Yao5RqxwhGzxCNqPMLiEUc8wuMRLR7R4xHji4jrt3vOeMTnb/fteF63a8T6+O2+f4r6FFHjERaP+Hh3v/wv1uXxiBaP6PGIEY+Y8Yj4j1menFb9HsOenICr/bgfDO7txR9tqpfbJKxe6yXlyTHIf4fxeceMV39I+uJtSPbs9JSOvmnrH9r6rq3ftPW7tv7Q1p/a+kta37S3rmlvXdPeuqa9dU1765r21jXtrWvaW9e0t66xbN270cGySB9Gybvxm9eX2bNzdDr6h7a+a+s3bf2urT+09ae2/pLW96Ktr711XXvruvbWde2t69pb17W3rmtvXdfeuq69dRvL1n0YsSzShxHLbnwYsay7hxHLBnsYsSylhxHLnnkYsayOhxHLNngYsQz4u1Gnm9k9+e1/eYu0PYuq/LJT8m/3y3vO7FkA43e/T8MInQ5Cp57t9OLqbnsWv/hlp0notPicZiF0Sp9PLy6mtmeZk192OgidnNCpETp1QqdB6DQJnRaf0yqETtlz/NUN5vYsXfTLTgehkxM6NUKnTug0CJ0modPic3rWSRAo9aLAYEtVRiljlGp8n/c861H4ZanBKEX4cV3NDhz+TMoYpQ5GKWeUYptTx6Hav3Gai14ZfpqL3hh+mqv2b0Bd9MZwqIveGA510RvDoe666qI3hkNdtH8D6rq7VLV/A+q621S1fwPquttUtX8D6rrbVLV/A+q62zS6fwOIEY8I7t8AYoUjovs3gKjxCItHBPdvAOHxiBaP6PGI4P4NIGY8YoUjovs3gKjxiOD+DSB6PCL4YsgTEd2/AUT8Nyq6fwOIGY9Y4Yjo/g0gajzC4hFHPMLjES0e0eMRwf0bQMx4RHD/Bv4GFty/AUSNR1g8Irh/AwiPR7R4RI9HjHhEcP8GECscEd2/AUSNR1g84ohHeDyixSN6PCK4fwOIGY8I7t/AWYrg/g0gajzC4hHB/RtAeDyixSN6PGLEI2Y8Iv5jlvD+DbeM/o2Toty/AX3hm8ChL3wTOPSFbwKHvmvrC98EDn3hm8ChL3wTOPSFbwKHvnD/xqmv3L8Bfe2tq9y/AX3travcvwF97a2r3L8Bfe2tq9y/AX2u/o3TiKx/A0bCN4FDX/gmcOgL3wQOfdfWF74JHPrCN4FDX/gmcOgL3wQOfeGbwE995f4N6GtvXeX+Dehrb13l/g3oa29d5f4N6GtvXeX+Dehrb12y/g0YcfVvwIirfwNGXP0bMGLZYA8jrv4NGHH1b8CIq38DRlz9GzDi6t84jcj6N2CU/Pa/7CaAE1v/BpzYLvTDKS+2/g04sfVvwImtfwNObP0bcGLr34ATW/8GnNj6N04nuv4NOLH1b8CJrX8DTmz9G3ByQie2/g04sfVvwImtfwNObP0bcGLr3zid6Po34MTWvwEntv4NOLH1b8DJCZ3Y+jfgxNa/ASe2/g04sfVvwImtf2Nno9j6N7YUW//GlmLr39hSbPfabym2/o0txda/saUIP67j69/YUmz9G1uKrX9jSzmjFN2cWinp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl506eNFlz5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjRZc+XnTp40WXPl506eNFlz5edOnjRZc+XnTp40WXPl506eNFlz5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ejOnjxZg+Xozp48WYPl6M6ePFmD5ejOnjxZg+Xozp48WYPl6M6eNFmD5u4z+f9lB7ufm4vdCZ91G+ij++1N75m/ppPmXNl6x5LbrqVVfddNUPXXXXVW+66l1XXXeXVt1lWnW3qeluU9Pdpqa7TU13m5ruNjXdbWph2/SBGPGIj7dTu53x8ebXiBWOOEo8osYjLB7x8ZSbt5fI53GN8HhEi0f0eMSnb3cr468vbWVeI2Y8YoUjvMQjajzi01/aZrcvbfYE0eMRn/64+3E7L9ebXSJaiUfEf6Pax2+333+j2rhGzHjECkf0Eo+o8QiLRxzxCI9HtHhEj0d88e3u/Rox4xGfv933MTiuEePjt/s+zJ8iajzC4hGfvt39HrboZV0jPB7R4hE9HjHiER+/3et2L3Wv5RqxwhGzxCNqPMLiEUc8wuMRLR7R4xHji4jrt3vOeMTnb/ftaEy3a8T6+O2+f4r6FFHjERaP+Hh3v/wv1uXxiBaP6PGIEY+Y8Yj4j1menMz+HqOPjP6NPqT7N/qQ7t/oQ7p/ow/p/o0+pPs3+pDu3+hDun+jD+n+jT6k+zf6kO7f6EO6f6MP6f6NPqT7N/qQ7t/oQ7p/ow/p/o0+pPs3+pDu3+hDun+jD7b+jT7Y+jf6kO7f6EO6f6MP6f6NPqT7N/qQ7t/oQ7p/ow/p/o0+pPs3+pDu3+hDun+jD+n+Dehrb13l/g3oa29d5f6NPqT7N6CvvXWV+zf6kO7f+L/q3mjHkWVZsvuhwUGGZ3h4xOeMBD0MIIwEaSRAD/ffRY/eJPfFJE/1JmneZo8HpxJr7epK925WWNgItv6NNOLq30gjrv6NNOLq30gjlg32NOLq3xjB1r8xgq1/YwRb/8YItv6NEWz9GyP4+jdG8PVvjODr3xjB178xgq9/YwRf/8YIvv6NEXz9GyP4+jdG8PVvjODr3xjB178xgq9/YwRf/8YIvv6NEXz9GyP4+jdG8PVvjODr3xjB178xgq9/YwRf/8YIvv6NEXz9GyP4+jdG8PVvjODr3xjB178xgq9/YwRf/8YIwv6NLcXWv7Gl2Po3thTbvfZbiq1/Y0ux9W9sKcKP6/j6N7YUW//GlmLr39hSnVGKbU5FV+3fuJmLXhl+Mxe9Mfxmrtq/keqiN4anuuiN4akuemN4qnddddEbw1NdtH8j1XV3qWr/RqrrblPV/o1U192mqv0bqa67TVX7N1Jdd5ui+zcSEXgEuH8jEQuOQPdvJKLhEYZHgPs3EtHxCMcjBh4B7t9IxMQjFhyB7t9IRMMjwP0biRh4BPhiyBsC3b+RCPw3Ct2/kYiJRyw4At2/kYiGRxgeceIRHY9wPGLgEeD+jURMPALcv5G/AwP3bySi4RGGR4D7NxLR8QjHIwYeEXgEuH8jEQuOQPdvJKLhEYZHnHhExyMcjxh4BLh/IxETjwD3b+RZCnD/RiIaHmF4BLh/IxEdj3A8YuARgUdMPAL/MQu8f2OeFf0bN4py/0bqC98EnvrCN4GnvvBN4KnftfWFbwJPfeGbwFNf+Cbw1Be+CTz1hfs3bvrK/Rupr711lfs3Ul976yr3b6S+9tZV7t9Ife2tq9y/kfpc/Rs3I7L+jTQSvgk89YVvAk994ZvAU79r6wvfBJ76wjeBp77wTeCpL3wTeOoL3wR+01fu30h97a2r3L+R+tpbV7l/I/W1t65y/0bqa29d5f6N1NfeumT9G2nE1b+RRlz9G2nE1b+RRiwb7GnE1b+RRlz9G2nE1b+RRlz9G2nE1b9xMyLr30ij4rf/x26CdGLr30gntgv98pQXW/9GOrH1b6QTW/9GOrH1b6QTW/9GOrH1b6QTW//GzYmufyOd2Po30omtfyOd2Po30qkTOrH1b6QTW/9GOrH1b6QTW/9GOrH1b9yc6Po30omtfyOd2Po30omtfyOdOqETW/9GOrH1b6QTW/9GOrH1b6QTW//Gzkax9W9sKbb+jS3F1r+xpdjutd9SbP0bW4qtf2NLEX5cx9e/saXY+je2FFv/xpbqjFJsc2odFenjG0U5fZz6wjmo1BfOQaW+cA4q9bu2vnAOKvWFc1CpL5yDSn3hHFTqC6ePb/rK6ePU1966yunj1Nfeusrp49TX3rrK6ePU1966yunj1OdKH9+MyNLHaSScg0p94RxU6gvnoFK/a+sL56BSXzgHlfrCOajUF85Bpb5wDuqmr5w+Tn3traucPk597a2rnD5Ofe2tq5w+Tn3traucPk597a1Llj5OI670cRpxpY/TiCt9nEYsG+xpxJU+TiOu9HEacaWP04grfZxGXOnjmxFZ+jiNit/+H5OZ6cSWPk4ntuOMecqLLX2cTmzp43RiSx+nE1v6OJ3Y0sfpxJY+Tie29PHNiS59nE5s6eN0YksfpxNb+jidOqETW/o4ndjSx+nElj5OJ7b0cTqxpY9vTnTp43RiSx+nE1v6OJ3Y0sfp1Amd2NLH6cSWPk4ntvRxOrGlj9OJLX28s1Fs6eMtxZY+3lJs6eMtRZjq40sfbym29PGWIvy4ji99vKXY0sdbii19vKU6oxTZnDoPe5E+9h73B33Ev6d88ex5Ck02ocUm9CLK/SeNGp2R0RmddEadzsjpjAadEd3EbnQju9HNbKOb2UY3s41uZhvdzDa6mW10M9uAM/sJiQrI55P1iwdZt9FiMzoPOqNGZ2R0RiedUaczcjqjQWcUdEZ0M/ukm9mdbmZ3upnd6WZ2p5vZnW5md7qZ3elmdgfO7CdkVkBWAcSPCkirgFgF5KyA9AqIV0BGBaTijR+f/wj/FAbYGKvBfP6H/zu//hur5L8mjhpMzY9A9C9g/v2R/I3xGsyowUQNZtZgvvHe/PvTvPuX4UcNptVgrAZz1mB6DcZrMKMGEzWYWYP5whT44XzqPoFy1GBaDcZqMGcNptdgvAYzajBRg/nCFPjh/PHGrBLMq1Pq3+ecJf/0aEcv4ngRZxRxVg3nC+cMf4/TijhWxKl4f/r1yd14PBfxw0e1/bifJO72w0Hi+Zga6+j/8bfPdN/5ALhfH/GVMF+y5tcvs4Z601U3XfVTV73rqruu+tBV192lTXeZNt1tarrb1HS3qeluU9Pdpqa7TU13mxpsmz4RgUd8vJ38/tvY7v0aseCI88AjGh5heMTHU27eX6I+z2tExyMcjxh4xKdvtx/3z6v8mNeIiUcsOKIfeETDIz79oXW7f6nbC8TAIz794x7n/ejGcLtE+IFH4L9R/vHb/fg02j2uEROPWHDEOPCIhkcYHnHiER2PcDxi4BFffLvHuEZMPOLzt/sxBuMaER+/3Y9h/hLR8AjDIz59u8fjWOw41jWi4xGORww8IvCIj9/u5XdEO64RC46YBx7R8AjDI048ouMRjkcMPCK+iLh+u+fEIz5/u+/H84ZdI9bHb/fjU9SXiIZHGB7x8e7+8V+sq+MRjkcMPCLwiIlH4D9meXFa9XuM9uIE3D+8TvO4T8LWW7uktOLLob95G1J7dXpKR9+09U9t/a6t79r6Q1s/tPWntv6S1jftrWvaW9e0t65pb13T3rqmvXVNe+ua9tY17a1rLFv3YXSyLNKnUfFu/Ob1Ze3VOTod/VNbv2vru7b+0NYPbf2prb+k9fuhra+9dbv21u3aW7drb92uvXW79tbt2lu3a2/drr11nWXrPo1YFunTiGU3Po1Y1t3TiGWDPY1YltLTiGXPPI1YVsfTiGUbPI1YBvzDaNDN7FH89v94i3R7FVX5w05kVdz7lFfj+z6FETqdhE6j2umHq7vbq/jFH3aahE6Lz2kehE7l8+mHi6nbq8zJH3Y6CZ06oZMTOg1CpyB0moROi89pHYRO1XP8pxvM26t00R92OgmdOqGTEzoNQqcgdJqETovP6VUnAVDqhwKDLdUYpYxRyvk+73nVo/CHpYJRivDjulYdOPw9KWOUOhmlOqMU25yyptq/cTMXvTL8Zi56Y/jNXLV/I9VFbwxPddEbw1Nd9MbwVO+66qI3hqe6aP9GquvuUtX+jVTX3aaq/RuprrtNVfs3Ul13m6r2b6S67jZF928kIvAIcP9GIhYcge7fSETDIwyPAPdvJKLjEY5HDDwC3L+RiIlHLDgC3b+RiIZHgPs3EjHwCPDFkDcEun8jEfhvFLp/IxETj1hwBLp/IxENjzA84sQjOh7heMTAI8D9G4mYeAS4fyN/Bwbu30hEwyMMjwD3bySi4xGORww8IvAIcP9GIhYcge7fSETDIwyPOPGIjkc4HjHwCHD/RiImHgHu38izFOD+jUQ0PMLwCHD/RiI6HuF4xMAjAo+YeAT+YxZ4/8Z5VPRv3CjK/RupL3wTeOoL3wSe+sI3gad+19YXvgk89YVvAk994ZvAU1/4JvDUF+7fuOkr92+kvvbWVe7fSH3travcv5H62ltXuX8j9bW3rnL/Rupz9W/cjMj6N9JI+Cbw1Be+CTz1hW8CT/2urS98E3jqC98EnvrCN4GnvvBN4KkvfBP4TV+5fyP1tbeucv9G6mtvXeX+jdTX3rrK/Rupr711lfs3Ul9765L1b6QRV/9GGnH1b6QRV/9GGrFssKcRV/9GGnH1b6QRV/9GGnH1b6QRV//GzYisfyONit/+H7sJ0omtfyOd2C70y1NebP0b6cTWv5FObP0b6cTWv5FObP0b6cTWv5FObP0bNye6/o10YuvfSCe2/o10YuvfSKdO6MTWv5FObP0b6cTWv5FObP0b6cTWv3FzouvfSCe2/o10YuvfSCe2/o106oRObP0b6cTWv5FObP0b6cTWv5FObP0bOxvF1r+xpdj6N7YUW//GlmK7135LsfVvbCm2/o0tRfhxHV//xpZi69/YUmz9G1uqM0rRzakoSR+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Drr0cdClj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh8HXfo46NLHQZc+Drr0cdClj4MufRx06eOgSx8HXfo46NLHQZc+DsL0cRCmj4MwfRyE6eMgTB8HYfo4CNPHQZg+DsL0cRCmj4MwfRyE6eMgTB8HYfo4CNPHQZg+DsL0cRCmj4MwfRyE6eMgTB8HYfo4CNPHQZg+DsL0cRCmj4MwfRyE6eMgTB8HYfo4GNPHwZg+Dsb0cTCmj4MxfRyM6eNgTB8HY/o4GNPHwZg+Dsb0cRCmj7v/69Me6n7cfbr9oDMfo3wd/fml9s7v1G/mU9Z8yZq3Q1e96aqbrvqpq9511V1Xfeiq6+7SprtMm+42Nd1tarrb1HS3qeluU9Pdpqa7TQ22TZ+IwCM+3k5+P+PTvV8jFhxxHnhEwyMMj/h4ys37S9TneY3oeITjEQOP+PTt9iP++lI/5jVi4hELjugHHtHwiE9/aN3uX+r2AjHwiE//uMd5Py833C4RfuAR+G+Uf/x298dPlMc1YuIRC44YBx7R8AjDI048ouMRjkcMPOKLb/cY14iJR3z+dj/GYFwj4uO3+zHMXyIaHmF4xKdv93iELcaxrhEdj3A8YuARgUd8/Hav+73Uox3XiAVHzAOPaHiE4REnHtHxCMcjBh4RX0Rcv91z4hGfv933ozHDrhHr47f78SnqS0TDIwyP+Hh3//gv1tXxCMcjBh4ReMTEI/Afs7w4mf09hntF/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+GO1v/hjtb/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/hrt0/4a7dP+Gu3T/Ruprb13l/o3U1966yv0b7tL9G6mvvXWV+zfcpfs33Nn6N9KIq38jjbj6N9KIq38jjVg22NOIq3/Dna1/w52tf8OdrX/Dna1/w52tf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8Odr3/Dna9/w52vf8OdsH9jS7H1b2wptv6NLcV2r/2WYuvf2FJs/RtbivDjOr7+jS3F1r+xpdj6N7ZUZ5Rim1PDVPs3buaiV4bfzEVvDL+Zq/ZvpLrojeGpLnpjeKqL3hie6l1XXfTG8FQX7d9Idd1dqtq/keq621S1fyPVdbepav9GqutuU9X+jVTX3abo/o1EBB4B7t9IxIIj0P0biWh4hOER4P6NRHQ8wvGIgUeA+zcSMfGIBUeg+zcS0fAIcP9GIgYeAb4Y8oZA928kAv+NQvdvJGLiEQuOQPdvJKLhEYZHnHhExyMcjxh4BLh/IxETjwD3b+TvwMD9G4loeIThEeD+jUR0PMLxiIFHBB4B7t9IxIIj0P0biWh4hOERJx7R8QjHIwYeAe7fSMTEI8D9G3mWAty/kYiGRxgeAe7fSETHIxyPGHhE4BETj8B/zALv34hW0b9xoyj3b6S+8E3gqS98E3jqC98EnvpdW1/4JvDUF74JPPWFbwJPfeGbwFNfuH/jpq/cv5H62ltXuX8j9bW3rnL/Ruprb13l/o3U1966yv0bqc/Vv3EzIuvfSCPhm8BTX/gm8NQXvgk89bu2vvBN4KkvfBN46gvfBJ76wjeBp77wTeA3feX+jdTX3rrK/Rupr711lfs3Ul976yr3b6S+9tZV7t9Ife2tS9a/kUZc/RtpxNW/kUZc/RtpxLLBnkZc/RtpxNW/kUZc/RtpxNW/kUZc/Rs3I7L+jTQqfvt/7CZIJ7b+jXRiu9AvT3mx9W+kE1v/Rjqx9W+kE1v/Rjqx9W+kE1v/Rjqx9W/cnOj6N9KJrX8jndj6N9KJrX8jnTqhE1v/Rjqx9W+kE1v/Rjqx9W+kE1v/xs2Jrn8jndj6N9KJrX8jndj6N9KpEzqx9W+kE1v/Rjqx9W+kE1v/Rjqx9W/sbBRb/8aWYuvf2FJs/Rtbiu1e+y3F1r+xpdj6N7YU4cd1fP0bW4qtf2NLsfVvbKnOKEU3p2ZJ+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp48nXfp40qWPp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eNKljydd+njSpY8nXfp40qWPJ136eNKljydd+njSpY8nXfp40qWPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2P6eDKmjydj+ngypo8nY/p4MqaPJ2P6eDKmjydj+ngypo8nY/p48qWPx8ucQBx3pfBnmfjtj/pvD8a7D853H1xvPnh9ePx3HmzvPmjvPnj5Ms3j+OvBebx6sL/7oL/74Hj3wXj3wfnug+vNB69PS87Hx6kz5osH27sP2rsPnu8+2N990N99cLz74PVPzoz7g2u8eHC+++B688HrEz+/82B790F798Hz3Qcvf3JWu79Wq714ra4PjfzOg+PdB+PdB+e7D643H7w+d/A7D7YfHrQXf47D3n3wfPfB65+c8z4BVn8xAa6PG/zOg+PdB+PdB+e7D643H4zj3Qevf3LG42+PR+//6cn/8k+++ImxGsxZg+k1GK/BjBpM1GBmDWaVYK7PC3wfUzMFZs0UmDVTYNZMgVkzBWbNFJg1U2DWTIFZMwVWzRRYNVNg1UyBVTMFVs0UWDVTYNVMgVUzBVbNFFg1U+DF7yoBnFbEsSLOWcTpRRwv4owiThRxZhGnaB60onnQiuZBK5oHrWgetKJ50IrmQSuaB61oHrSiedCK5oEVzQMrmgdWNA+saB5Y0TywonlgRfPAiuaBFc0DK5oHZ9E8OIvmwVk0D86ieXAWzYOzaB6cRfPgLJoHZ9E8OIvmQS+aB71oHvSiedCL5kEvmge9aB70onnQi+ZBL5oHvWgeeNE88KJ54EXzwIvmgRfNAy+aB140D7xoHnjRPPCieTCK5sEomgejaB6MonkwiubBKJoHo2gejKJ5MIrmwSiaB1E0D4rOILaiQ4it6BRiKzqG2IrOIbaig4it6CRiKzqK2IrOIraiw4it6DRiKzqO2IrOI7aiA4mt6ERiKzqS2IrOJLaiQ4mt6FRiKzqW2IrOJbaig4mt6GRiKzqa2IrOJraiw4mt6HRiKzqe2IrOJ1rR+UQrOp9oRecTreh8oh29iONFnFHEiSLOLOIUzYOi84lWdD7Ris4nWtH5RCs6n2hF5xOt6HyiFZ1PtKLziVZ0PtGKzida0flEKzqfaEXnE63ofKIVnU+0ovOJVnQ+0YrOJ1rR+UQrOp9oRecTreh8ohWdT7Si84lWdD7Ris4nWtH5RCs6n2hF5xOt6HyiFZ1PtKLziVZ0PtGKzifaF87z+XG/+cbb366OHePvmFmC+cLpN7cH5vRXGKvBnDWYXoPxGsw/XTx/ezTefvQLxxB+5+f7C6cQfgvjNZhRg6kZcV84geD9fgu3u73CrBLMF84f/Bam1WCsBvOFKXDOB+Z8hek1GK/BjBpM1GBmDWaVLNMvnDr4LUzNX9tWzV/bVs1f275w4uC3MDV/bfvCeYPfwkQNZtZgSqbAeRw1mFaDsRrMWYPpNRivwYwaTNRgZg2mZgq0minQaqZAq5kCrWYKtJop0GqmQKuZAq1mCrSaKdBqpoDVTAGrmQJWMwWsZgpYzRSwmilgNVPA8FNg9n9dF8J5v5d/NB//qWj2f4ZMv3/+NGf791/a2nzYm/3tIwR7Ck02ocUmdP33nT9q1OiMjM7opDPqdEZOZzTojOgmdqMb2Y1uZhvdzDa6mW10M9voZrbRzWyjm9kGnNlPSFRAPp+s62h/fe06jy98bxeb0XnQGTU6I6MzOumMOp2R0xkNOqOgM6Kb2SfdzO50M7vTzexON7M73czudDO7083sTjezO3BmPyGzArIKIH5UQFoFxCogZwWkV0C8AjIqIBVv/Pj8R7gdx3n/4qPZNcZqMJ//4Tfrz1k8rj9hGKvkvyaOGkzNj0D0L2DGemDmuMZ4DWbUYKIGM2sw33hvRnti4hIzjxpMq8FYDeaswfQajNdgRg0majCzBvOFKdBav39x69d/s1lHDabVYKwGc9Zgeg3GazCjBhM1mC9MgRb2wMx5jVklmBfN3wDOWfJPj3b0Io4XcUYRZ9VwvnDO8Pc4rYhjRZyK92dcn9yNx3MRP3xU2497mreb//svnY+psY7nmePbZ7rvfAA8ro/4SpgvWfPrl1lDvemqm676qaveddVdV33oquvu0qa7TJvuNjXdbWq629R0t6npblPT3aamu00Ntk2fiMAjPt5Ofv9tbPd+jVhwxHngEQ2PMDzi4yk37y9Rn+c1ouMRjkcMPOLTt9uP++dVfsxrxMQjFhzRDzyi4RGf/tC63b/U7QVi4BGf/nGP8350Y7hdIvzAI/DfKP/47X58Gu0e14iJRyw4Yhx4RMMjDI848YiORzgeMfCIL77dY1wjJh7x+dv9GINxjYiP3+7HMH+JaHiE4RGfvt3jcSx2HOsa0fEIxyMGHhF4xMdv9/I7oh3XiAVHzAOPaHiE4REnHtHxCMcjBh4RX0Rcv91z4hGfv93343nDrhHr47f78SnqS0TDIwyP+Hh3//gv1tXxCMcjBh4ReMTEI/Afs7w4rfo9xnpxAq6N83EwePgPv7Rp/bhPwtZbu6S8OAb5zzB9PjDx0y+Svngb0np1ekpH37T1T239rq3v2vpDWz+09ae2/pLWN+2ta9pb17S3rmlvXdPeuqa9dU1765r21jXtrWssW/dhdLIs0qdR8W785vVl69U5Oh39U1u/a+u7tv7Q1g9t/amtv6T1+6Gtr711u/bW7dpbt2tv3a69dbv21u3aW7drb92uvXWdZes+jVgW6dOIZTc+jVjW3dOIZYM9jViW0tOIZc88jVhWx9OIZRs8jVgG/MNo0M3sUfz2/3iL9HoVVfnDTsU/3T/ec7ZeBTD+7PcpjNDpJHQa1U4/XN29XsUv/rDTJHRafE7zIHQqn08/XEy9XmVO/rDTSejUCZ2c0GkQOgWh0yR0WnxO6yB0qp7jP91gvl6li/6w00no1AmdnNBpEDoFodMkdFp8Tq86CYBSPxQYbKnGKGWMUs73ec+rHoU/LBWMUoQf17XqwOHvSRmj1Mko1RmlyOZUHKdo/0aaa14ZnuaaN4anuWj/xlbXvDF8q2veGL7VNW8M3+pdV13zxvCtrtm/sdV1d6lo/8ZW192mov0bW113m4r2b2x13W0q2r+x1XW3Kbh/YyMCj8D2b2zEgiPA/Rsb0fAIwyOw/Rsb0fEIxyMGHoHt39iIiUcsOALcv7ERDY/A9m9sxMAjsBdDJgLcv7ER+G8UuH9jIyYeseAIcP/GRjQ8wvCIE4/oeITjEQOPwPZvbMTEI7D9G/t3YNj+jY1oeIThEdj+jY3oeITjEQOPCDwC27+xEQuOAPdvbETDIwyPOPGIjkc4HjHwCGz/xkZMPALbv7HPUmD7Nzai4RGGR2D7Nzai4xGORww8IvCIiUfgP2ZB929Es4L+jaQI929sfd2bwLe+7k3gW1/3JvCt37X1dW8C3/q6N4Fvfd2bwLe+7k3gW1+3fyP1hfs3tr721hXu39j62ltXuH9j62tvXeH+ja2vvXWF+ze2PlX/Rhpx9W9sI92bwLe+7k3gW1/3JvCt37X1dW8C3/q6N4Fvfd2bwLe+7k3gW1/3JvDUF+7f2PraW1e4f2Pra29d4f6Nra+9dYX7N7a+9tYV7t/Y+tpbl6t/YxtR9W9sI6r+jW1E1b+xjVg22NOIqn9jG1H1b2wjqv6NbUTVv7GNqPo30oirf2MbFb/9P3UTbCey/o3tRHah3z7lRda/sZ3I+je2E1n/xnYi69/YTmT9G9uJrH9jO5H1b6QTW//GdiLr39hOZP0b24msf2M7dUInsv6N7UTWv7GdyPo3thNZ/8Z2IuvfSCe2/o3tRNa/sZ3I+je2E1n/xnbqhE5k/Rvbiax/YzuR9W9sJ7L+je1E1r/xKxtF1r/xS4qsf+OXFFn/xi8ptnvttxRZ/8YvKbL+jV9ShB/X0fVv/JIi69/4JUXWv/FLqjNK0c2pVZI+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp40WXPl506eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5e2unjpZ0+Xtrp46WdPl7a6eOlnT5edOnjRZc+XnTp40WXPl506eNFlz5edOnjRZc+XnTp40WXPl506eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6eNFmD5ehOnjRZg+XoTp40WYPl6E6ePFmD5ejOnjxZg+Xozp48WYPl6M6ePFmD5ejOnjxZg+Xozp48WYPl6E6WOLf33aQ92Pu0+3H3TmY5Svoz+/1N75nfrNfMqaL1nzduiqN11101U/ddW7rrrrqg9ddd1d2nSXadPdpqa7TU13m5ruNjXdbWq629R0t6nBtukTEXjEx9vJ72d8uvdrxIIjzgOPaHiE4REfT7l5f4n6PK8RHY9wPGLgEZ++3X7EX1/qx7xGTDxiwRH9wCMaHvHpD63b/UvdXiAGHvHpH/c47+flhtslwg88Av+N8o/f7v74ifK4Rkw8YsER48AjGh5heMSJR3Q8wvGIgUd88e0e4xox8YjP3+7HGIxrRHz8dj+G+UtEwyMMj/j07R6PsMU41jWi4xGORww8IvCIj9/udb+XerTjGrHgiHngEQ2PMDzixCM6HuF4xMAj4ouI67d7Tjzi87f7fjRm2DViffx2Pz5FfYloeIThER/v7h//xbo6HuF4xMAjAo+YeAT+Y5YXJ7O/xzijon/jDOn+jTOk+zfOkO7fOEO6f+MM6f6NM6T7N86Q7t84Q7p/4wzp/o0zpPs3zpDu3zhDun/jDOn+jTOk+zfOkO7fOEO6f+MM6f6NM6T7N86Q7t84g61/4wy2/o0zpPs3zpDu3zhDun/jDOn+jTOk+zfOkO7fOEO6f+MM6f6NM6T7N86Q7t84Q7p/I/W1t65y/0bqa29d5f6NM6T7N1Jfe+sq92+cId2/cQZb/0YacfVvpBFX/0YacfVvpBHLBnsacfVvnMHWv3EGW//GGWz9G2ew9W+cwda/cQZf/8YZfP0bZ/D1b5zB179xBl//xhl8/Rtn8PVvnMHXv3EGX//GGXz9G2fw9W+cwde/cQZf/8YZfP0bZ/D1b5zB179xBl//xhl8/Rtn8PVvnMHXv3EGX//GGXz9G2fw9W+cwde/cQZf/8YZfP0bZ/D1b5zB179xBl//xhl8/RtnEPZvbCm2/o0txda/saXY7rXfUmz9G1uKrX9jSxF+XMfXv7Gl2Po3thRb/8aW6oxSbHOqd9X+jZu56JXhN3PRG8Nv5qr9G6kuemN4qoveGJ7qojeGp3rXVRe9MTzVRfs3Ul13l6r2b6S67jZV7d9Idd1tqtq/keq621S1fyPVdbcpun8jEYFHgPs3ErHgCHT/RiIaHmF4BLh/IxEdj3A8YuAR4P6NREw8YsER6P6NRDQ8Aty/kYiBR4Avhrwh0P0bicB/o9D9G4mYeMSCI9D9G4loeIThESce0fEIxyMGHgHu30jExCPA/Rv5OzBw/0YiGh5heAS4fyMRHY9wPGLgEYFHgPs3ErHgCHT/RiIaHmF4xIlHdDzC8YiBR4D7NxIx8Qhw/0aepQD3bySi4RGGR4D7NxLR8QjHIwYeEXjExCPwH7PA+zf8rOjfuFGU+zdSX/gm8NQXvgk89YVvAk/9rq0vfBN46gvfBJ76wjeBp77wTeCpL9y/cdNX7t9Ife2tq9y/kfraW1e5fyP1tbeucv9G6mtvXeX+jdTn6t+4GZH1b6SR8E3gqS98E3jqC98EnvpdW1/4JvDUF74JPPWFbwJPfeGbwFNf+Cbwm75y/0bqa29d5f6N1Nfeusr9G6mvvXWV+zdSX3vrKvdvpL721iXr30gjrv6NNOLq30gjrv6NNGLZYE8jrv6NNOLq30gjrv6NNOLq30gjrv6NmxFZ/0YaFb/9P3YTpBNb/0Y6sV3ol6e82Po30omtfyOd2Po30omtfyOd2Po30omtfyOd2Po3bk50/RvpxNa/kU5s/RvpxNa/kU6d0ImtfyOd2Po30omtfyOd2Po30omtf+PmRNe/kU5s/RvpxNa/kU5s/Rvp1Amd2Po30omtfyOd2Po30omtfyOd2Po3djaKrX9jS7H1b2wptv6NLcV2r/2WYuvf2FJs/RtbivDjOr7+jS3F1r+xpdj6N7ZUZ5Rim1PjqEgf3yjK6ePUF85Bpb5wDir1hXNQqd+19YVzUKkvnINKfeEcVOoL56BSXzh9fNNXTh+nvvbWVU4fp7721lVOH6e+9tZVTh+nvvbWVU4fpz5X+vhmRJY+TiPhHFTqC+egUl84B5X6XVtfOAeV+sI5qNQXzkGlvnAOKvWFc1A3feX0ceprb13l9HHqa29d5fRx6mtvXeX0ceprb13l9HHqa29dsvRxGnGlj9OIK32cRlzp4zRi2WBPI670cRpxpY/TiCt9nEZc6eM04kof34zI0sdpVPz2/5jMTCe29HE6sR1nzFNebOnjdGJLH6cTW/o4ndjSx+nElj5OJ7b0cTqxpY9vTnTp43RiSx+nE1v6OJ3Y0sfp1Amd2NLH6cSWPk4ntvRxOrGlj9OJLX18c6JLH6cTW/o4ndjSx+nElj5Op07oxJY+Tie29HE6saWP04ktfZxObOnjnY1iSx9vKbb08ZZiSx9vKcJUH1/6eEuxpY+3FOHHdXzp4y3Flj7eUmzp4y3VGaXY5lTYi/Sx97g/6CP+PeWbZ89vQpNNaLEJvYhy/0mjRmdkdEYnnVGnM3I6o0FnRDexG93IbnQz2+hmttHNbKOb2UY3s41uZhvdzDbgzH5CogLy+WT95kHWNFpsRudBZ9TojIzO6KQz6nRGTmc06IyCzohuZp90M7vTzexON7M73czudDO7083sTjezO93M7sCZ/YTMCsgqgPhRAWkVEKuAnBWQXgHxCsiogFS88ePzH+EfwwCJsRrM53/4v/Prv7FK/mviqMHU/AhE/wLmhyP5ifEazKjBRA1m1mC+8d78cJo3fxl+1GBaDcZqMGcNptdgvAYzajBRg5k1mC9MgZ/Op+YJlKMG02owVoM5azC9BuM1mFGDiRrMF6bAT+ePE7NKMK9OqX+fc5b806MdvYjjRZxRxFk1nC+cM/w9TiviWBGn4v3p1yd34/FcxA8f1fbjfpK42w8Hiedjaqyj/8ffPtN95wPgfn3EV8J8yZpfv8wa6k1X3XTVT131rqvuuupDV113lzbdZdp0t6npblPT3aamu01Nd5ua7jY13W1qsG36RAQe8fF28vtvY7v3a8SCI84Dj2h4hOERH0+5eX+J+jyvER2PcDxi4BGfvt1+3D+v8mNeIyYeseCIfuARDY/49IfW7f6lbi8QA4/49I97nPejG8PtEuEHHoH/RvnHb/fj02j3uEZMPGLBEePAIxoeYXjEiUd0PMLxiIFHfPHtHuMaMfGIz9/uxxiMa0R8/HY/hvlLRMMjDI/49O0ej2Ox41jXiI5HOB4x8IjAIz5+u5ffEe24Riw4Yh54RMMjDI848YiORzgeMfCI+CLi+u2eE4/4/O2+H88bdo1YH7/dj09RXyIaHmF4xMe7+8d/sa6ORzgeMfCIwCMmHoH/mOXFadXvMeaLE3D/8DrN4z4JW2/tktKKL4f+5m1I89XpKR1909Y/tfW7tr5r6w9t/dDWn9r6S1rftLeuaW9d0966pr11TXvrmvbWNe2ta9pb17S3rrFs3YfRybJIn0bFu/Gb15fNV+fodPRPbf2ure/a+kNbP7T1p7b+ktbvh7a+9tbt2lu3a2/drr11u/bW7dpbt2tv3a69dbv21nWWrfs0YlmkTyOW3fg0Yll3TyOWDfY0YllKTyOWPfM0YlkdTyOWbfA0YhnwD6NBN7NH8dv/4y3S81VU5Q87sVVxz1cBjD/7fQojdDoJnUa10w9Xd89X8Ys/7DQJnRaf0zwIncrn0w8XU89XmZM/7HQSOnVCJyd0GoROQeg0CZ0Wn9M6CJ2q5/hPN5jPV+miP+x0Ejp1QicndBqETkHoNAmdFp/Tq04CoNQPBQZbqjFKGaOU833e86pH4Q9LBaMU4cd1rTpw+HtSxih1Mkp1Rim2ObWaav/GzVz0yvCbueiN4Tdz1f6NVBe9MTzVRW8MT3XRG8NTveuqi94Ynuqi/RuprrtLVfs3Ul13m6r2b6S67jZV7d9Idd1tqtq/keq62xTdv5GIwCPA/RuJWHAEun8jEQ2PMDwC3L+RiI5HOB4x8Ahw/0YiJh6x4Ah0/0YiGh4B7t9IxMAjwBdD3hDo/o1E4L9R6P6NREw8YsER6P6NRDQ8wvCIE4/oeITjEQOPAPdvJGLiEeD+jfwdGLh/IxENjzA8Aty/kYiORzgeMfCIwCPA/RuJWHAEun8jEQ2PMDzixCM6HuF4xMAjwP0biZh4BLh/I89SgPs3EtHwCMMjwP0bieh4hOMRA48IPGLiEfiPWdD9G/M4Cvo3kiLcv7H1dW8C3/q6N4Fvfd2bwLd+19bXvQl86+veBL71dW8C3/q6N4Fvfd3+jdQX7t/Y+tpbV7h/Y+trb13h/o2tr711hfs3tr721hXu39j6VP0bacTVv7GNdG8C3/q6N4Fvfd2bwLd+19bXvQl86+veBL71dW8C3/q6N4Fvfd2bwFNfuH9j62tvXeH+ja2vvXWF+ze2vvbWFe7f2PraW1e4f2Pra29drv6NbUTVv7GNqPo3thFV/8Y2YtlgTyOq/o1tRNW/sY2o+je2EVX/xjai6t9II67+jW1U/Pb/1E2wncj6N7YT2YV++5QXWf/GdiLr39hOZP0b24msf2M7kfVvbCey/o3tRNa/kU5s/Rvbiax/YzuR9W9sJ7L+je3UCZ3I+je2E1n/xnYi69/YTmT9G9uJrH8jndj6N7YTWf/GdiLr39hOZP0b26kTOpH1b2wnsv6N7UTWv7GdyPo3thNZ/8avbBRZ/8YvKbL+jV9SZP0bv6TI7rX/JUXWv/FLiqx/45cU4cd1dP0bv6TI+jd+SZH1b/yS6oxSdHMqStLHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Du30cWinj4MufRx06ePQTh+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHoZ0+Du30cWinj0M7fRza6ePQTh+Hdvo4tNPHQZc+Drr0cdClj4MufRx06eOgSx8HXfo46NLHQZc+Drr0cdClj4MwfRyE6eMgTB8HYfo4CNPHQZg+DsL0cRCmj4MwfRyE6eMgTB8HYfo4CNPHQZg+DsL0cRCmj4MwfRyE6eMgTB8HYfo4CNPHQZg+DsL0cRCmj4MwfRyE6eMgTB8HYfo4CNPHQZg+Dsb0cTCmj4MxfRyM6eNgTB8HY/o4GNPHwZg+Dsb0cTCmj4MxfRyE6ePm//q0h7ofd59uP+jMxyhfR39+qb3zO/Wb+ZQ1X7Lm7dBVb7rqpqt+6qp3XXXXVR+66rq7tOku06a7TU13m5ruNjXdbWq629R0t6npblODbdMnIvCIj7eT38/4dO/XiAVHnAce0fAIwyM+nnLz/hL1eV4jOh7heMTAIz59u/2Iv77Uj3mNmHjEgiP6gUc0POLTH1q3+5e6vUAMPOLTP+5x3s/LDbdLhB94BP4b5R+/3f3xE+VxjZh4xIIjxoFHNDzC8IgTj+h4hOMRA4/44ts9xjVi4hGfv92PMRjXiPj47X4M85eIhkcYHvHp2z0eYYtxrGtExyMcjxh4ROARH7/d634v9WjHNWLBEfPAIxoeYXjEiUd0PMLxiIFHxBcR12/3nHjE52/3/WjMsGvE+vjtfnyK+hLR8AjDIz7e3T/+i3V1PMLxiIFHBB4x8Qj8xywvTmZ/j2Fe0b9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/Yc7Wv2HO1r9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/YS7dv2Eu3b9hLt2/YS7dv5H62ltXuX8j9bW3rnL/hrl0/0bqa29d5f4Nc+n+DXO2/o004urfSCOu/o004urfSCOWDfY04urfMGfr3zBn698wZ+vfMGfr3zBn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698w5+vfMOfr3zDn698wJ+zf2FJs/Rtbiq1/Y0ux3Wu/pdj6N7YUW//GliL8uI6vf2NLsfVvbCm2/o0t1Rml2ObUaar9Gzdz0SvDb+aiN4bfzFX7N1Jd9MbwVBe9MTzVRW8MT/Wuqy56Y3iqi/ZvpLruLlXt30h13W2q2r+R6rrbVLV/I9V1t6lq/0aq625TdP9GIgKPAPdvJGLBEej+jUQ0PMLwCHD/RiI6HuF4xMAjwP0biZh4xIIj0P0biWh4BLh/IxEDjwBfDHlDoPs3EoH/RqH7NxIx8YgFR6D7NxLR8AjDI048ouMRjkcMPALcv5GIiUeA+zfyd2Dg/o1ENDzC8Ahw/0YiOh7heMTAIwKPAPdvJGLBEej+jUQ0PMLwiBOP6HiE4xEDjwD3byRi4hHg/o08SwHu30hEwyMMjwD3bySi4xGORww8IvCIiUfgP2aB92/0VtG/caMo92+kvvBN4KkvfBN46gvfBJ76XVtf+Cbw1Be+CTz1hW8CT33hm8BTX7h/46av3L+R+tpbV7l/I/W1t65y/0bqa29d5f6N1Nfeusr9G6nP1b9xMyLr30gj4ZvAU1/4JvDUF74JPPW7tr7wTeCpL3wTeOoL3wSe+sI3gae+8E3gN33l/o3U1966yv0bqa+9dZX7N1Jfe+sq92+kvvbWVe7fSH3trUvWv5FGXP0bacTVv5FGXP0bacSywZ5GXP0bacTVv5FGXP0bacTVv5FGXP0bNyOy/o00Kn77f+wmSCe2/o10YrvQL095sfVvpBNb/0Y6sfVvpBNb/0Y6sfVvpBNb/0Y6sfVv3Jzo+jfSia1/I53Y+jfSia1/I506oRNb/0Y6sfVvpBNb/0Y6sfVvpBNb/8bNia5/I53Y+jfSia1/I53Y+jfSqRM6sfVvpBNb/0Y6sfVvpBNb/0Y6sfVv7GwUW//GlmLr39hSbP0bW4rtXvstxda/saXY+je2FOHHdXz9G1uKrX9jS7H1b2ypzihFN6dmSfp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePJ136eNKlj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+nhqp4+ndvp4aqePp3b6eGqnj6d2+njSpY8nXfp40qWPJ136eNKljydd+njSpY8nXfp40qWPJ136eNKljydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydh+ngSpo8nYfp4EqaPJ2H6eBKmjydj+ngypo8nY/p4MqaPJ2P6eDKmjydj+ngypo8nY/p4MqaPJ2P6eNKlj8/2MicQx10p/Fkmfvuj/tuD8e6D890H15sPXh8e/50H27sP2rsPXr5M8zj+enAerx7s7z7o7z443n0w3n1wvvvgevPB69OS8/Fx6oz54sH27oP27oPnuw/2dx/0dx8c7z54/ZMz4/7gGi8enO8+uN588PrEz+882N590N598Hz3wcufnNXur9VqL16r60Mjv/PgePfBePfB+e6D680Hr88d/M6D7YcH7cWf47B3HzzfffD6J+e8T4DVX0yA6+MGv/PgePfBePfB+e6D680H43j3weufnPH42+PR+3968r/8ky9+YqwGc9Zgeg3GazCjBhM1mFmDWSWY6/MC38fUTIFZMwVmzRSYNVNg1kyBWTMFZs0UmDVTYNZMgVUzBVbNFFg1U2DVTIFVMwVWzRRYNVNg1UyBVTMFVs0UePG7SgCnFXGsiHMWcXoRx4s4o4gTRZxZxCmaB61oHrSiedCK5kErmgetaB60onnQiuZBK5oHrWgetKJ5YEXzwIrmgRXNAyuaB1Y0D6xoHljRPLCieWBF88CK5sFZNA/OonlwFs2Ds2genEXz4CyaB2fRPDiL5sFZNA/OonnQi+ZBL5oHvWge9KJ50IvmQS+aB71oHvSiedCL5kEvmgdeNA+8aB540TzwonngRfPAi+aBF80DL5oHXjQPvGgejKJ5MIrmwSiaB6NoHoyieTCK5sEomgejaB6MonkwiuZBFM2DojOIregQYis6hdiKjiG2onOIreggYis6idiKjiK2orOIregwYis6jdiKjiO2ovOIrehAYis6kdiKjiS2ojOJrehQYis6ldiKjiW2onOJrehgYis6mdiKjia2orOJrehwYis6ndiKjie2ovOJVnQ+0YrOJ1rR+UQrOp9oRy/ieBFnFHGiiDOLOEXzoOh8ohWdT7Si84lWdD7Ris4nWtH5RCs6n2hF5xOt6HyiFZ1PtKLziVZ0PtGKzida0flEKzqfaEXnE63ofKIVnU+0ovOJVnQ+0YrOJ1rR+UQrOp9oRecTreh8ohWdT7Si84lWdD7Ris4nWtH5RCs6n2hF5xOt6HyiFZ1PtKLzifaF83x+3G++8fa3q2PH+DtmlmC+cPrN7YE5/RXGajBnDabXYLwG808Xz98ejbcf/cIxhN/5+f7CKYTfwngNZtRgakbcF04geL/fwu1urzCrBPOF8we/hWk1GKvBfGEKnPOBOV9heg3GazCjBhM1mFmDWSXL9AunDn4LU/PXtlXz17ZV89e2L5w4+C1MzV/bvnDe4LcwUYOZNZiSKXAeRw2m1WCsBnPWYHoNxmswowYTNZhZg6mZAq1mCrSaKdBqpkCrmQKtZgq0minQaqZAq5kCrWYKtJopYDVTwGqmgNVMAauZAlYzBaxmCljNFDD8FPD+r+tCOO/38o/m4z8Vzf7PkOn3z5/mbP/+S1ubD3uzv32EYE+hySa02ISu/77zR40anZHRGZ10Rp3OyOmMBp0R3cRudCO70c1so5vZRjezjW5mG93MNrqZbXQz24Az+wmJCsjnk3Ud7a+vXefxhe/tYjM6DzqjRmdkdEYnnVGnM3I6o0FnFHRGdDP7pJvZnW5md7qZ3elmdqeb2Z1uZne6md3pZnYHzuwnZFZAVgHEjwpIq4BYBeSsgPQKiFdARgWk4o0fn/8It+M47198NLvGWA3m8z/8Zv05i8f1JwxjlfzXxFGDqfkRiP4FzFgPzBzXGK/BjBpM1GBmDeYb781oT0xcYuZRg2k1GKvBnDWYXoPxGsyowUQNZtZgvjAFWuv3L279+m8266jBtBqM1WDOGkyvwXgNZtRgogbzhSnQwh6YOa8xqwTzovkbwDlL/unRjl7E8SLOKOKsGs4Xzhn+HqcVcayIU/H+jOuTu/F4LuKHj2r7cU/zdvN//6XzMTXW8TxzfPtM950PgMf1EV8J8yVrfv0ya6g3XXXTVT911buuuuuqD1113V3adJdp092mprtNTXebmu42Nd1tarrb1HS3qcG26RMReMTH28nvv43t3q8RC444Dzyi4RGGR3w85eb9JerzvEZ0PMLxiIFHfPp2+3H/vMqPeY2YeMSCI/qBRzQ84tMfWrf7l7q9QAw84tM/7nHej24Mt0uEH3gE/hvlH7/dj0+j3eMaMfGIBUeMA49oeIThESce0fEIxyMGHvHFt3uMa8TEIz5/ux9jMK4R8fHb/RjmLxENjzA84tO3ezyOxY5jXSM6HuF4xMAjAo/4+O1efke04xqx4Ih54BENjzA84sQjOh7heMTAI+KLiOu3e0484vO3+348b9g1Yn38dj8+RX2JaHiE4REf7+4f/8W6Oh7heMTAIwKPmHgE/mOWF6dVv8cYL07AtXE+DgYP/+GXNq0f90nYemuXlBfHIP8Zps8HJn76RdIXb0Mar05P6eibtv6prd+19V1bf2jrh7b+1NZf0vqmvXVNe+ua9tY17a1r2lvXtLeuaW9d0966pr11jWXrPoxOlkX6NCrejd+8vmy8Okeno39q63dtfdfWH9r6oa0/tfWXtH4/tPW1t27X3rpde+t27a3btbdu1966XXvrdu2t27W3rrNs3acRyyJ9GrHsxqcRy7p7GrFssKcRy1J6GrHsmacRy+p4GrFsg6cRy4B/GA26mT2K3/4fb5Eer6Iqf9ip+Kf7x3vOxqsAxp/9PoUROp2ETqPa6Yeru8er+MUfdpqETovPaR6ETuXz6YeLqcerzMkfdjoJnTqhkxM6DUKnIHSahE6Lz2kdhE7Vc/ynG8zHq3TRH3Y6CZ06oZMTOg1CpyB0moROi8/pVScBUOqHAoMt1RiljFHK+T7vedWj8IelglGK8OO6Vh04/D0pY5Q6GaU6oxTbnIpTtX/jZi56ZfjNXPTG8Ju5av9GqoveGJ7qojeGp7rojeGp3nXVRW8MT3XR/o1U192lqv0bqa67TVX7N1Jdd5uq9m+kuu42Ve3fSHXdbYru30hE4BHg/o1ELDgC3b+RiIZHGB4B7t9IRMcjHI8YeAS4fyMRE49YcAS6fyMRDY8A928kYuAR4Ishbwh0/0Yi8N8odP9GIiYeseAIdP9GIhoeYXjEiUd0PMLxiIFHgPs3EjHxCHD/Rv4ODNy/kYiGRxgeAe7fSETHIxyPGHhE4BHg/o1ELDgC3b+RiIZHGB5x4hEdj3A8YuAR4P6NREw8Aty/kWcpwP0biWh4hOER4P6NRHQ8wvGIgUcEHjHxCPzHLPD+jWkV/Rs3inL/RuoL3wSe+sI3gae+8E3gqd+19YVvAk994ZvAU1/4JvDUF74JPPWF+zdu+sr9G6mvvXWV+zdSX3vrKvdvpL721lXu30h97a2r3L+R+lz9Gzcjsv6NNBK+CTz1hW8CT33hm8BTv2vrC98EnvrCN4GnvvBN4KkvfBN46gvfBH7TV+7fSH3travcv5H62ltXuX8j9bW3rnL/Ruprb13l/o3U1966ZP0bacTVv5FGXP0bacTVv5FGLBvsacTVv5FGXP0bacTVv5FGXP0bacTVv3EzIuvfSKPit//HboJ0YuvfSCe2C/3ylBdb/0Y6sfVvpBNb/0Y6sfVvpBNb/0Y6sfVvpBNb/8bNia5/I53Y+jfSia1/I53Y+jfSqRM6sfVvpBNb/0Y6sfVvpBNb/0Y6sfVv3Jzo+jfSia1/I53Y+jfSia1/I506oRNb/0Y6sfVvpBNb/0Y6sfVvpBNb/8bORrH1b2wptv6NLcXWv7Gl2O6131Js/Rtbiq1/Y0sRflzH17+xpdj6N7YUW//GluqMUnRzapWkj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+njRpY8XXfp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePF136eNGljxdd+njRpY8XXfp40aWPF136eNGljxdd+njRpY8XXfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4MaaPF2P6eDGmjxdj+ngxpo8XY/p4MaaPF2P6eDGmjxdj+ngxpo8XYfp4xb8+7aHux92n2w868zHK19GfX2rv/E79Zj5lzZeseTt01Zuuuumqn7rqXVfdddWHrrruLm26y7TpblPT3aamu01Nd5ua7jY13W1qutvUYNv0iQg84uPt5PczPt37NWLBEeeBRzQ8wvCIj6fcvL9EfZ7XiI5HOB4x8IhP324/4q8v9WNeIyYeseCIfuARDY/49IfW7f6lbi8QA4/49I97nPfzcsPtEuEHHoH/RvnHb3d//ER5XCMmHrHgiHHgEQ2PMDzixCM6HuF4xMAjvvh2j3GNmHjE52/3YwzGNSI+frsfw/wlouERhkd8+naPR9hiHOsa0fEIxyMGHhF4xMdv97rfSz3acY1YcMQ88IiGRxgeceIRHY9wPGLgEfFFxPXbPSce8fnbfT8aM+wasT5+ux+for5ENDzC8IiPd/eP/2JdHY9wPGLgEYFHTDwC/zHLi5PZX2PYEQX9G0kR7t/Y+ro3gW993ZvAt77uTeBbv2vr694EvvV1bwLf+ro3gW993ZvAt75u/0bqC/dvbH3trSvcv7H1tbeucP/G1tfeusL9G1tfe+sK929sfar+jTTi6t/YRro3gW993ZvAt77uTeBbv2vr694EvvV1bwLf+ro3gW993ZvAt77uTeCpL9y/sfW1t65w/8bW1966wv0bW1976wr3b2x97a0r3L+x9bW3Llf/xjai6t/YRlT9G9uIqn9jG7FssKcRVf/GNqLq39hGVP0b24iqf2MbUfVvpBFX/8Y2Kn77f+om2E5k/RvbiexCv33Ki6x/YzuR9W9sJ7L+je1E1r+xncj6N7YTWf/GdiLr30gntv6N7UTWv7GdyPo3thNZ/8Z26oROZP0b24msf2M7kfVvbCey/o3tRNa/kU5s/Rvbiax/YzuR9W9sJ7L+je3UCZ3I+je2E1n/xnYi69/YTmT9G9uJrH/jVzaKrH/jlxRZ/8YvKbL+jV9SZPfa/5Ii69/4JUXWv/FLivDjOrr+jV9SZP0bv6TI+jd+SXVGKbY51bpo/0aaa14ZnuaaN4anuWj/xlbXvDF8q2veGL7VNW8M3+pdV13zxvCtrtm/sdV1d6lo/8ZW192mov0bW113m4r2b2x13W0q2r+x1XW3Kbh/YyMCj8D2b2zEgiPA/Rsb0fAIwyOw/Rsb0fEIxyMGHoHt39iIiUcsOALcv7ERDY/A9m9sxMAjsBdDJgLcv7ER+G8UuH9jIyYeseAIcP/GRjQ8wvCIE4/oeITjEQOPwPZvbMTEI7D9G/t3YNj+jY1oeIThEdj+jY3oeITjEQOPCDwC27+xEQuOAPdvbETDIwyPOPGIjkc4HjHwCGz/xkZMPALbv7HPUmD7Nzai4RGGR2D7Nzai4xGORww8IvCIiUfgP2aB92/YWdG/caMo92+kvvBN4KkvfBN46gvfBJ76XVtf+Cbw1Be+CTz1hW8CT33hm8BTX7h/46av3L+R+tpbV7l/I/W1t65y/0bqa29d5f6N1Nfeusr9G6nP1b9xMyLr30gj4ZvAU1/4JvDUF74JPPW7tr7wTeCpL3wTeOoL3wSe+sI3gae+8E3gN33l/o3U1966yv0bqa+9dZX7N1Jfe+sq92+kvvbWVe7fSH3trUvWv5FGXP0bacTVv5FGXP0bacSywZ5GXP0bacTVv5FGXP0bacTVv5FGXP0bNyOy/o00Kn77f+wmSCe2/o10YrvQL095sfVvpBNb/0Y6sfVvpBNb/0Y6sfVvpBNb/0Y6sfVv3Jzo+jfSia1/I53Y+jfSia1/I506oRNb/0Y6sfVvpBNb/0Y6sfVvpBNb/8bNia5/I53Y+jfSia1/I53Y+jfSqRM6sfVvpBNb/0Y6sfVvpBNb/0Y6sfVv7GwUW//GlmLr39hSbP0bW4rtXvstxda/saXY+je2FOHHdXz9G1uKrX9jS7H1b2ypzijFNqfOoyJ9fKMop49TXzgHlfrCOajUF85BpX7X1hfOQaW+cA4q9YVzUKkvnINKfeH08U1fOX2c+tpbVzl9nPraW1c5fZz62ltXOX2c+tpbVzl9nPpc6eObEVn6OI2Ec1CpL5yDSn3hHFTqd2194RxU6gvnoFJfOAeV+sI5qNQXzkHd9JXTx6mvvXWV08epr711ldPHqa+9dZXTx6mvvXWV08epr711ydLHacSVPk4jrvRxGnGlj9OIZYM9jbjSx2nElT5OI670cRpxpY/TiCt9fDMiSx+nUfHb/2MyM53Y0sfpxHacMU95saWP04ktfZxObOnjdGJLH6cTW/o4ndjSx+nElj6+OdGlj9OJLX2cTmzp43RiSx+nUyd0YksfpxNb+jid2NLH6cSWPk4ntvTxzYkufZxObOnjdGJLH6cTW/o4nTqhE1v6OJ3Y0sfpxJY+Tie29HE6saWPdzaKLX28pdjSx1uKLX28pQhTfXzp4y3Flj7eUoQf1/Glj7cUW/p4S7Glj7dUZ5Rim1PdXqSPvcf9QR/x7ynfPHt+E5psQotN6EWU+08aNTojozM66Yw6nZHTGQ06I7qJ3ehGdqOb2UY3s41uZhvdzDa6mW10M9voZrYBZ/YTEhWQzyfrNw+yptFiMzoPOqNGZ2R0RiedUaczcjqjQWcUdEZ0M/ukm9mdbmZ3upnd6WZ2p5vZnW5md7qZ3elmdgfO7CdkVkBWAcSPCkirgFgF5KyA9AqIV0BGBaTijR+f/wj/GAZIjNVgPv/D/51f/41V8l8TRw2m5kcg+hcwPxzJT4zXYEYNJmowswbzjffmh9O8+cvwowbTajBWgzlrML0G4zWYUYOJGsyswXxhCvx0PjVPoBw1mFaDsRrMWYPpNRivwYwaTNRgvjAFfjp/nJhVgnl1Sv37nLPknx7t6EUcL+KMIs6q4XzhnOHvcVoRx4o4Fe9Pvz65G4/nIn74qLYf95PE3X44SDwfU2Md/T/+9pnuOx8A9+sjvhLmS9b8+mXWUG+66qarfuqqd11111Ufuuq6u7TpLtOmu01Nd5ua7jY13W1qutvUdLep6W5Tg23TJyLwiI+3k99/G9u9XyMWHHEeeETDIwyP+HjKzftL1Od5jeh4hOMRA4/49O324/55lR/zGjHxiAVH9AOPaHjEpz+0bvcvdXuBGHjEp3/c47wf3Rhulwg/8Aj8N8o/frsfn0a7xzVi4hELjhgHHtHwCMMjTjyi4xGORww84otv9xjXiIlHfP52P8ZgXCPi47f7McxfIhoeYXjEp2/3eByLHce6RnQ8wvGIgUcEHvHx2738jmjHNWLBEfPAIxoeYXjEiUd0PMLxiIFHxBcR12/3nHjE52/3/XjesGvE+vjtfnyK+hLR8AjDIz7e3T/+i3V1PMLxiIFHBB4x8Qj8xywvTqt+j+EvTsD9w+s0j/skbL21S0orvhz6m7ch+avTUzr6pq1/aut3bX3X1h/a+qGtP7X1l7S+aW9d0966pr11TXvrmvbWNe2ta9pb17S3rmlvXWPZug+jk2WRPo2Kd+M3ry/zV+fodPRPbf2ure/a+kNbP7T1p7b+ktbvh7a+9tbt2lu3a2/drr11u/bW7dpbt2tv3a69dbv21nWWrfs0YlmkTyOW3fg0Yll3TyOWDfY0YllKTyOWPfM0YlkdTyOWbfA0YhnwD6NBN7NH8dv/4y3S/iqq8oed2Kq4/VUA489+n8IInU5Cp1Ht9MPV3f4qfvGHnSah0+JzmgehU/l8+uFian+VOfnDTiehUyd0ckKnQegUhE6T0GnxOa2D0Kl6jv90g7m/Shf9YaeT0KkTOjmh0yB0CkKnSei0+JxedRIApX4oMNhSjVHKGKWc7/OeVz0Kf1gqGKUIP65r1YHD35MyRqmTUaozSrHNqdFU+zdu5qJXht/MRW8Mv5mr9m+kuuiN4akuemN4qoveGJ7qXVdd9MbwVBft30h13V2q2r+R6rrbVLV/I9V1t6lq/0aq625T1f6NVNfdpuj+jUQEHgHu30jEgiPQ/RuJaHiE4RHg/o1EdDzC8YiBR4D7NxIx8YgFR6D7NxLR8Ahw/0YiBh4BvhjyhkD3byQC/41C928kYuIRC45A928kouERhkeceETHIxyPGHgEuH8jEROPAPdv5O/AwP0biWh4hOER4P6NRHQ8wvGIgUcEHgHu30jEgiPQ/RuJaHiE4REnHtHxCMcjBh4B7t9IxMQjwP0beZYC3L+RiIZHGB4B7t9IRMcjHI8YeETgEROPwH/MAu/fiKOif+NGUe7fSH3hm8BTX/gm8NQXvgk89bu2vvBN4KkvfBN46gvfBJ76wjeBp75w/8ZNX7l/I/W1t65y/0bqa29d5f6N1Nfeusr9G6mvvXWV+zdSn6t/42ZE1r+RRsI3gae+8E3gqS98E3jqd2194ZvAU1/4JvDUF74JPPWFbwJPfeGbwG/6yv0bqa+9dZX7N1Jfe+sq92+kvvbWVe7fSH3travcv5H62luXrH8jjbj6N9KIq38jjbj6N9KIZYM9jbj6N9KIq38jjbj6N9KIq38jjbj6N25GZP0baVT89v/YTZBObP0b6cR2oV+e8mLr30gntv6NdGLr30gntv6NdGLr30gntv6NdGLr37g50fVvpBNb/0Y6sfVvpBNb/0Y6dUIntv6NdGLr30gntv6NdGLr30gntv6NmxNd/0Y6sfVvpBNb/0Y6sfVvpFMndGLr30gntv6NdGLr30gntv6NdGLr39jZKLb+jS3F1r+xpdj6N7YU2732W4qtf2NLsfVvbCnCj+v4+je2FFv/xpZi69/YUp1Rim5ORUn6OLTTx6GdPg7t9HFop49DO30c2unj0E4fh3b6OLTTx6GdPg7t9HFop49DO30c2unj0E4fh3b6OLTTx6GdPg7t9HHQpY+DLn0c2unj0E4fh3b6OLTTx6GdPg7t9HFop49DO30c2unj0E4fh3b6OLTTx6GdPg7t9HFop49DO30c2unj0E4fh3b6OOjSx0GXPg669HHQpY+DLn0cdOnjoEsfB136OOjSx0GXPg669HEQpo+DMH0chOnjIEwfB2H6OAjTx0GYPg7C9HEQpo+DMH0chOnjIEwfB2H6OAjTx0GYPg7C9HEQpo+DMH0chOnjIEwfB2H6OAjTx0GYPg7C9HEQpo+DMH0chOnjIEwfB2H6OAjTx8GYPg7G9HEwpo+DMX0cjOnjYEwfB2P6OBjTx8GYPg7G9HEwpo+DMH08/V+f9lD34+7T7Qed+Rjl6+jPL7V3fqd+M5+y5kvWvB266k1X3XTVT131rqvuuupDV113lzbdZdp0t6npblPT3aamu01Nd5ua7jY13W1qsG36RAQe8fF28vsZn+79GrHgiPPAIxoeYXjEx1Nu3l+iPs9rRMcjHI8YeMSnb7cf8deX+jGvEROPWHBEP/CIhkd8+kPrdv9StxeIgUd8+sc9zvt5ueF2ifADj8B/o/zjt7s/fqI8rhETj1hwxDjwiIZHGB5x4hEdj3A8YuARX3y7x7hGTDzi87f7MQbjGhEfv92PYf4S0fAIwyM+fbvHI2wxjnWN6HiE4xEDjwg84uO3e93vpR7tuEYsOGIeeETDIwyPOPGIjkc4HjHwiPgi4vrtnhOP+Pztvh+NGXaNWB+/3Y9PUV8iGh5heMTHu/vHf7Gujkc4HjHwiMAjJh6B/5jlxcns7zGWV/RvLJfu31gu3b+xXLp/Y7l0/8Zy6f6N5dL9G8ul+zeWS/dvLJfu31gu3b+xXLp/Y7l0/8Zy6f6N5dL9G8ul+zeWS/dvLJfu31gu3b+xXLp/Yzlb/8Zytv6N5dL9G8ul+zeWS/dvLJfu31gu3b+xXLp/Y7l0/8Zy6f6N5dL9G8ul+zeWS/dvpL721lXu30h97a2r3L+xXLp/I/W1t65y/8Zy6f6N5Wz9G2nE1b+RRlz9G2nE1b+RRiwb7GnE1b+xnK1/Yzlb/8Zytv6N5Wz9G8vZ+jeW8/VvLOfr31jO17+xnK9/Yzlf/8Zyvv6N5Xz9G8v5+jeW8/VvLOfr31jO17+xnK9/Yzlf/8Zyvv6N5Xz9G8v5+jeW8/VvLOfr31jO17+xnK9/Yzlf/8Zyvv6N5Xz9G8v5+jeW8/VvLOfr31jO17+xnK9/Yzlf/8Zyvv6N5YT9G1uKrX9jS7H1b2wptnvttxRb/8aWYuvf2FKEH9fx9W9sKbb+jS3F1r+xpTqjFNmcOg8T7d9Ic80rw9Nc88bwNBft39jqmjeGb3XNG8O3uuaN4Vu966pr3hi+1TX7N7a67i4V7d/Y6rrbVLR/Y6vrblPR/o2trrtNRfs3trruNgX3b2xE4BHY/o2NWHAEuH9jIxoeYXgEtn9jIzoe4XjEwCOw/RsbMfGIBUeA+zc2ouER2P6NjRh4BPZiyESA+zc2Av+NAvdvbMTEIxYcAe7f2IiGRxgeceIRHY9wPGLgEdj+jY2YeAS2f2P/Dgzbv7ERDY8wPALbv7ERHY9wPGLgEYFHYPs3NmLBEeD+jY1oeIThESce0fEIxyMGHoHt39iIiUdg+zf2WQps/8ZGNDzC8Ahs/8ZGdDzC8YiBRwQeMfEI/Mcs6P6Ns7WC/o2kCPdvbH3dm8C3vu5N4Ftf9ybwrd+19XVvAt/6ujeBb33dm8C3vu5N4Ftft38j9YX7N7a+9tYV7t/Y+tpbV7h/Y+trb13h/o2tr711hfs3tj5V/0YacfVvbCPdm8C3vu5N4Ftf9ybwrd+19XVvAt/6ujeBb33dm8C3vu5N4Ftf9ybw1Bfu39j62ltXuH9j62tvXeH+ja2vvXWF+ze2vvbWFe7f2PraW5erf2MbUfVvbCOq/o1tRNW/sY1YNtjTiKp/YxtR9W9sI6r+jW1E1b+xjaj6N9KIq39jGxW//T91E2wnsv6N7UR2od8+5UXWv7GdyPo3thNZ/8Z2Iuvf2E5k/Rvbiax/YzuR9W+kE1v/xnYi69/YTmT9G9uJrH9jO3VCJ7L+je1E1r+xncj6N7YTWf/GdiLr30gntv6N7UTWv7GdyPo3thNZ/8Z26oROZP0b24msf2M7kfVvbCey/o3tRNa/8SsbRda/8UuKrH/jlxRZ/8YvKbZ77bcUWf/GLymy/o1fUoQf19H1b/ySIuvf+CVF1r/xS6ozStHNqVmSPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eNJlz6edOnjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+nnTp40mXPp506eNJlz6edOnjSZc+nnTp40mXPp506eNJlz6edOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjyZg+nozp48mYPp6M6ePJmD6ejOnjyZg+nozp48mYPp6M6ePJmD6efOnj8TInEMddKfxZJn77o/7bg/Hug/PdB9ebD14fHv+dB9u7D9q7D16+TPM4/npwHq8e7O8+6O8+ON59MN59cL774HrzwevTkvPxceqM+eLB9u6D9u6D57sP9ncf9HcfHO8+eP2TM+P+4BovHpzvPrjefPD6xM/vPNjefdDeffB898HLn5zV7q/Vai9eq+tDI7/z4Hj3wXj3wfnug+vNB6/PHfzOg+2HB+3Fn+Owdx88333w+ifnvE+A1V9MgOvjBr/z4Hj3wXj3wfnug+vNB+N498Hrn5zx+Nvj0ft/evK//JMvfmKsBnPWYHoNxmswowYTNZhZg1klmOvzAt/H1EyBWTMFZs0UmDVTYNZMgVkzBWbNFJg1U2DWTIFVMwVWzRRYNVNg1UyBVTMFVs0UWDVTYNVMgVUzBVbNFHjxu0oApxVxrIhzFnF6EceLOKOIE0WcWcQpmgetaB60onnQiuZBK5oHrWgetKJ50IrmQSuaB61oHrSieWBF88CK5oEVzQMrmgdWNA+saB5Y0TywonlgRfPAiubBWTQPzqJ5cBbNg7NoHpxF8+Asmgdn0Tw4i+bBWTQPzqJ50IvmQS+aB71oHvSiedCL5kEvmge9aB70onnQi+ZBL5oHXjQPvGgeeNE88KJ54EXzwIvmgRfNAy+aB140D7xoHoyieTCK5sEomgejaB6MonkwiubBKJoHo2gejKJ5MIrmQRTNg6IziK3oEGIrOoXYio4htqJziK3oIGIrOonYio4itqKziK3oMGIrOo3Yio4jtqLziK3oQGIrOpHYio4ktqIzia3oUGIrOpXYio4ltqJzia3oYGIrOpnYio4mtqKzia3ocGIrOp3Yio4ntqLziVZ0PtGKzida0flEKzqfaEcv4ngRZxRxoogzizhF86DofKIVnU+0ovOJVnQ+0YrOJ1rR+UQrOp9oRecTreh8ohWdT7Si84lWdD7Ris4nWtH5RCs6n2hF5xOt6HyiFZ1PtKLziVZ0PtGKzida0flEKzqfaEXnE63ofKIVnU+0ovOJVnQ+0YrOJ1rR+UQrOp9oRecTreh8ohWdT7Si84n2hfN8ftxvvvH2t6tjx/g7ZpZgvnD6ze2BOf0VxmowZw2m12C8BvNPF8/fHo23H/3CMYTf+fn+wimE38J4DWbUYGpG3BdOIHi/38Ltbq8wqwTzhfMHv4VpNRirwXxhCpzzgTlfYXoNxmswowYTNZhZg1kly/QLpw5+C1Pz17ZV89e2VfPXti+cOPgtTM1f275w3uC3MFGDmTWYkilwHkcNptVgrAZz1mB6DcZrMKMGEzWYWYOpmQKtZgq0minQaqZAq5kCrWYKtJop0GqmQKuZAq1mCrSaKWA1U8BqpoDVTAGrmQJWMwWsZgpYzRQw/BSw/q/rQjjv9/KP5uM/Fc3+z5Dp98+f5mz//ktbmw97s799hGBPockmtNiErv++80eNGp2R0RmddEadzsjpjAadEd3EbnQju9HNbKOb2UY3s41uZhvdzDa6mW10M9uAM/sJiQrI55N1He2vr13n8YXv7WIzOg86o0ZnZHRGJ51RpzNyOqNBZxR0RnQz+6Sb2Z1uZne6md3pZnanm9mdbmZ3upnd6WZ2B87sJ2RWQFYBxI8KSKuAWAXkrID0CohXQEYFpOKNH5//CLfjOO9ffDS7xlgN5vM//Gb9OYvH9ScMY5X818RRg6n5EYj+BcxYD8wc1xivwYwaTNRgZg3mG+/NaE9MXGLmUYNpNRirwZw1mF6D8RrMqMFEDWbWYL4wBVrr9y9u/fpvNuuowbQajNVgzhpMr8F4DWbUYKIG84Up0MIemDmvMasE86L5G8A5S/7p0Y5exPEizijirBrOF84Z/h6nFXGsiFPx/ozrk7vxeC7ih49q+3FP83bzf/+l8zE11vE8c3z7TPedD4DH9RFfCfMla379MmuoN11101U/ddW7rrrrqg9ddd1d2nSXadPdpqa7TU13m5ruNjXdbWq629R0t6nBtukTEXjEx9vJ77+N7d6vEQuOOA88ouERhkd8POXm/SXq87xGdDzC8YiBR3z6dvtx/7zKj3mNmHjEgiP6gUc0POLTH1q3+5e6vUAMPOLTP+5x3o9uDLdLhB94BP4b5R+/3Y9Po93jGjHxiAVHjAOPaHiE4REnHtHxCMcjBh7xxbd7jGvExCM+f7sfYzCuEfHx2/0Y5i8RDY8wPOLTt3s8jsWOY10jOh7heMTAIwKP+PjtXn5HtOMaseCIeeARDY8wPOLEIzoe4XjEwCPii4jrt3tOPOLzt/t+PG/YNWJ9/HY/PkV9iWh4hOERH+/uH//Fujoe4XjEwCMCj5h4BP5jlhenVb/HOF+cgGvjfBwMHv7DL21aP+6TsPXWLikvjkH+M0yfD0z89IukL96GdL46PaWjb9r6p7Z+19Z3bf2hrR/a+lNbf0nrm/bWNe2ta9pb17S3rmlvXdPeuqa9dU1765r21jWWrfswOlkW6dOoeDd+8/qy89U5Oh39U1u/a+u7tv7Q1g9t/amtv6T1+6Gtr711u/bW7dpbt2tv3a69dbv21u3aW7drb92uvXWdZes+jVgW6dOIZTc+jVjW3dOIZYM9jViW0tOIZc88jVhWx9OIZRs8jVgG/MNo0M3sUfz2/3iL9PkqqvKHnYp/un+85+x8FcD4s9+nMEKnk9BpVDv9cHX3+Sp+8YedJqHT4nOaB6FT+Xz64WLq81Xm5A87nYROndDJCZ0GoVMQOk1Cp8XntA5Cp+o5/tMN5uerdNEfdjoJnTqhkxM6DUKnIHSahE6Lz+lVJwFQ6ocCgy3VGKWMUcr5Pu951aPwh6WCUYrw47pWHTj8PSljlDoZpTqjFNuc6qdq/8bNXPTK8Ju56I3hN3PV/o1UF70xPNVFbwxPddEbw1O966qL3hie6qL9G6muu0tV+zdSXXebqvZvpLruNlXt30h13W2q2r+R6rrbFN2/kYjAI8D9G4lYcAS6fyMRDY8wPALcv5GIjkc4HjHwCHD/RiImHrHgCHT/RiIaHgHu30jEwCPAF0PeEOj+jUTgv1Ho/o1ETDxiwRHo/o1ENDzC8IgTj+h4hOMRA48A928kYuIR4P6N/B0YuH8jEQ2PMDwC3L+RiI5HOB4x8IjAI8D9G4lYcAS6fyMRDY8wPOLEIzoe4XjEwCPA/RuJmHgEuH8jz1KA+zcS0fAIwyPA/RuJ6HiE4xEDjwg8YuIR+I9Z4P0bbhX9GzeKcv9G6gvfBJ76wjeBp77wTeCp37X1hW8CT33hm8BTX/gm8NQXvgk89YX7N276yv0bqa+9dZX7N1Jfe+sq92+kvvbWVe7fSH3travcv5H6XP0bNyOy/o00Er4JPPWFbwJPfeGbwFO/a+sL3wSe+sI3gae+8E3gqS98E3jqC98EftNX7t9Ife2tq9y/kfraW1e5fyP1tbeucv9G6mtvXeX+jdTX3rpk/RtpxNW/kUZc/RtpxNW/kUYsG+xpxNW/kUZc/RtpxNW/kUZc/RtpxNW/cTMi699Io+K3/8dugnRi699IJ7YL/fKUF1v/Rjqx9W+kE1v/Rjqx9W+kE1v/Rjqx9W+kE1v/xs2Jrn8jndj6N9KJrX8jndj6N9KpEzqx9W+kE1v/Rjqx9W+kE1v/Rjqx9W/cnOj6N9KJrX8jndj6N9KJrX8jnTqhE1v/Rjqx9W+kE1v/Rjqx9W+kE1v/xs5GsfVvbCm2/o0txda/saXY7rXfUmz9G1uKrX9jSxF+XMfXv7Gl2Po3thRb/8aW6oxSdHNqlaSPl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eNGljxdd+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp4+Xdvp4aaePl3b6eGmnj5d2+nhpp48XXfp40aWPF136eNGljxdd+njRpY8XXfp40aWPF136eNGljxdd+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngRpo8XYfp4EaaPF2H6eBGmjxdh+ngxpo8XY/p4MaaPF2P6eDGmjxdj+ngxpo8XY/p4MaaPF2P6eDGmjxdh+njEvz7toe7H3afbDzrzMcrX0Z9fau/8Tv1mPmXNl6x5O3TVm6666aqfuupdV9111Yeuuu4ubbrLtOluU9Pdpqa7TU13m5ruNjXdbWq629Rg2/SJCDzi4+3k9zM+3fs1YsER54FHNDzC8IiPp9y8v0R9nteIjkc4HjHwiE/fbj/iry/1Y14jJh6x4Ih+4BENj/j0h9bt/qVuLxADj/j0j3uc9/Nyw+0S4Qcegf9G+cdvd3/8RHlcIyYeseCIceARDY8wPOLEIzoe4XjEwCO++HaPcY2YeMTnb/djDMY1Ij5+ux/D/CWi4RGGR3z6do9H2GIc6xrR8QjHIwYeEXjEx2/3ut9LPdpxjVhwxDzwiIZHGB5x4hEdj3A8YuAR8UXE9ds9Jx7x+dt9Pxoz7BqxPn67H5+ivkQ0PMLwiI9394//Yl0dj3A8YuARgUdMPAL/McuLk9nfY0RU9G9ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvRLD1b0Sw9W9ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvREj3b0RI929ESPdvREj3b6S+9tZV7t9Ife2tq9y/ESHdv5H62ltXuX8jQrp/I4KtfyONuPo30oirfyONuPo30ohlgz2NuPo3Itj6NyLY+jci2Po3Itj6NyLY+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jci+Po3Ivj6NyL4+jciCPs3thRb/8aWYuvf2FJs99pvKbb+jS3F1r+xpQg/ruPr39hSbP0bW4qtf2NLdUYptjk1u2r/xs1c9Mrwm7nojeE3c9X+jVQXvTE81UVvDE910RvDU73rqoveGJ7qov0bqa67S1X7N1Jdd5uq9m+kuu42Ve3fSHXdbarav5HqutsU3b+RiMAjwP0biVhwBLp/IxENjzA8Aty/kYiORzgeMfAIcP9GIiYeseAIdP9GIhoeAe7fSMTAI8AXQ94Q6P6NROC/Uej+jURMPGLBEej+jUQ0PMLwiBOP6HiE4xEDjwD3byRi4hHg/o38HRi4fyMRDY8wPALcv5GIjkc4HjHwiMAjwP0biVhwBLp/IxENjzA84sQjOh7heMTAI8D9G4mYeAS4fyPPUoD7NxLR8AjDI8D9G4noeITjEQOPCDxi4hH4j1ng/RvrrOjfuFGU+zdSX/gm8NQXvgk89YVvAk/9rq0vfBN46gvfBJ76wjeBp77wTeCpL9y/cdNX7t9Ife2tq9y/kfraW1e5fyP1tbeucv9G6mtvXeX+jdTn6t+4GZH1b6SR8E3gqS98E3jqC98EnvpdW1/4JvDUF74JPPWFbwJPfeGbwFNf+Cbwm75y/0bqa29d5f6N1Nfeusr9G6mvvXWV+zdSX3vrKvdvpL721iXr30gjrv6NNOLq30gjrv6NNGLZYE8jrv6NNOLq30gjrv6NNOLq30gjrv6NmxFZ/0YaFb/9P3YTpBNb/0Y6sV3ol6e82Po30omtfyOd2Po30omtfyOd2Po30omtfyOd2Po3bk50/RvpxNa/kU5s/RvpxNa/kU6d0ImtfyOd2Po30omtfyOd2Po30omtf+PmRNe/kU5s/RvpxNa/kU5s/Rvp1Amd2Po30omtfyOd2Po30omtfyOd2Po3djaKrX9jS7H1b2wptv6NLcV2r/2WYuvf2FJs/RtbivDjOr7+jS3F1r+xpdj6N7ZUZ5Qim1NxHAXp46QIp4+3vm4Oauvr5qC2vm4Oaut3bX3dHNTW181BbX3dHNTW181BbX3d9HHqC6ePt7721hVOH2997a0rnD7e+tpbVzh9vPW1t65w+njrU6WP04grfbyNdHNQW183B7X1dXNQW79r6+vmoLa+bg5q6+vmoLa+bg5q6+vmoFJfOH289bW3rnD6eOtrb13h9PHW1966wunjra+9dYXTx1tfe+typY+3EVX6eBtRpY+3EVX6eBuxbLCnEVX6eBtRpY+3EVX6eBtRpY+3EVX6OI240sfbqPjt/ymZuZ3I0sfbiew44z7lRZY+3k5k6ePtRJY+3k5k6ePtRJY+3k5k6ePtRJY+Tie29PF2Iksfbyey9PF2Iksfb6dO6ESWPt5OZOnj7USWPt5OZOnj7USWPk4ntvTxdiJLH28nsvTxdiJLH2+nTuhElj7eTmTp4+1Elj7eTmTp4+1Elj7+lY0iSx//kiJLH/+SIksf/5IiTPXRpY9/SZGlj39JEX5cR5c+/iVFlj7+JUWWPv4l1Rml2OZUsxfpY+9xf9BH/HvKN8+e34Qmm9BiE3oR5f6TRo3OyOiMTjqjTmfkdEaDzohuYje6kd3oZrbRzWyjm9lGN7ONbmYb3cw2upltwJn9hEQF5PPJ+s2DrGm02IzOg86o0RkZndFJZ9TpjJzOaNAZBZ0R3cw+6WZ2p5vZnW5md7qZ3elmdqeb2Z1uZne6md2BM/sJmRWQVQDxowLSKiBWATkrIL0C4hWQUQGpeOPH5z/CP4YBEmM1mM//8H/n139jlfzXxFGDqfkRiP4FzA9H8hPjNZhRg4kazKzBfOO9+eE0b/4y/KjBtBqM1WDOGkyvwXgNZtRgogYzazBfmAI/nU/NEyhHDabVYKwGc9Zgeg3GazCjBhM1mC9MgZ/OHydmlWBenVL/Pucs+adHO3oRx4s4o4izajhfOGf4e5xWxLEiTsX7069P7sbjuYgfPqrtx/0kcbcfDhLPx9RYR/+Pv32m+84HwP36iK+E+ZI1v36ZNdSbrrrpqp+66l1X3XXVh6667i5tusu06W5T092mprtNTXebmu42Nd1tarrb1GDb9IkIPOLj7eT338Z279eIBUecBx7R8AjDIz6ecvP+EvV5XiM6HuF4xMAjPn27/bh/XuXHvEZMPGLBEf3AIxoe8ekPrdv9S91eIAYe8ekf9zjvRzeG2yXCDzwC/43yj9/ux6fR7nGNmHjEgiPGgUc0PMLwiBOP6HiE4xEDj/ji2z3GNWLiEZ+/3Y8xGNeI+Pjtfgzzl4iGRxge8enbPR7HYsexrhEdj3A8YuARgUd8/HYvvyPacY1YcMQ88IiGRxgeceIRHY9wPGLgEfFFxPXbPSce8fnbfT+eN+wasT5+ux+for5ENDzC8IiPd/eP/2JdHY9wPGLgEYFHTDwC/zHLi9Oq32PYixNw//A6zeM+CVtv7ZLSii+H/uZtSPbq9JSOvmnrn9r6XVvftfWHtn5o609t/SWtb9pb17S3rmlvXdPeuqa9dU1765r21jXtrWvaW9dYtu7D6GRZpE+j4t34zevL7NU5Oh39U1u/a+u7tv7Q1g9t/amtv6T1+6Gtr711u/bW7dpbt2tv3a69dbv21u3aW7drb92uvXWdZes+jVgW6dOIZTc+jVjW3dOIZYM9jViW0tOIZc88jVhWx9OIZRs8jVgG/MNo0M3sUfz2/3iLtL2KqvxhJ7YqbnsVwPiz36cwQqeT0GlUO/1wdbe9il/8YadJ6LT4nOZB6FQ+n364mNpeZU7+sNNJ6NQJnZzQaRA6BaHTJHRafE7rIHSqnuM/3WBur9JFf9jpJHTqhE5O6DQInYLQaRI6LT6nV50EQKkfCgy2VGOUMkYp5/u851WPwh+WCkYpwo/rWnXg8PekjFHqZJTqjFJsc+psqv0bN3PRK8Nv5qI3ht/MVfs3Ul30xvBUF70xPNVFbwxP9a6rLnpjeKqL9m+kuu4uVe3fSHXdbarav5HquttUtX8j1XW3qWr/RqrrblN0/0YiAo8A928kYsER6P6NRDQ8wvAIcP9GIjoe4XjEwCPA/RuJmHjEgiPQ/RuJaHgEuH8jEQOPAF8MeUOg+zcSgf9Gofs3EjHxiAVHoPs3EtHwCMMjTjyi4xGORww8Aty/kYiJR4D7N/J3YOD+jUQ0PMLwCHD/RiI6HuF4xMAjAo8A928kYsER6P6NRDQ8wvCIE4/oeITjEQOPAPdvJGLiEeD+jTxLAe7fSETDIwyPAPdvJKLjEY5HDDwi8IiJR+A/ZoH3b/Sjon/jRlHu30h94ZvAU1/4JvDUF74JPPW7tr7wTeCpL3wTeOoL3wSe+sI3gae+cP/GTV+5fyP1tbeucv9G6mtvXeX+jdTX3rrK/Rupr711lfs3Up+rf+NmRNa/kUbCN4GnvvBN4KkvfBN46ndtfeGbwFNf+Cbw1Be+CTz1hW8CT33hm8Bv+sr9G6mvvXWV+zdSX3vrKvdvpL721lXu30h97a2r3L+R+tpbl6x/I424+jfSiKt/I424+jfSiGWDPY24+jfSiKt/I424+jfSiKt/I424+jduRmT9G2lU/Pb/2E2QTmz9G+nEdqFfnvJi699IJ7b+jXRi699IJ7b+jXRi699IJ7b+jXRi69+4OdH1b6QTW/9GOrH1b6QTW/9GOnVCJ7b+jXRi699IJ7b+jXRi699IJ7b+jZsTXf9GOrH1b6QTW/9GOrH1b6RTJ3Ri699IJ7b+jXRi699IJ7b+jXRi69/Y2Si2/o0txda/saXY+je2FNu99luKrX9jS7H1b2wpwo/r+Po3thRb/8aWYuvf2FKdUYpuTkVJ+ji008ehnT4O7fRxaKePQzt9HNrp49BOH4d2+ji008ehnT4O7fRxaKePQzt9HNrp49BOH4d2+ji008ehnT4O7fRx0KWPgy59HNrp49BOH4d2+ji008ehnT4O7fRxaKePQzt9HNrp49BOH4d2+ji008ehnT4O7fRxaKePQzt9HNrp49BOH4d2+jjo0sdBlz4OuvRx0KWPgy59HHTp46BLHwdd+jjo0sdBlz4OuvRxEKaPgzB9HITp4yBMHwdh+jgI08dBmD4OwvRxEKaPgzB9HITp4yBMHwdh+jgI08dBmD4OwvRxEKaPgzB9HITp4yBMHwdh+jgI08dBmD4OwvRxEKaPgzB9HITp4yBMHwdh+jgI08fBmD4OxvRxMKaPgzF9HIzp42BMHwdj+jgY08fBmD4OxvRxMKaPgzB97P6vT3uo+3H36faDznyM8nX055faO79Tv5lPWfMla94OXfWmq2666qeuetdVd131oauuu0ub7jJtutvUdLep6W5T092mprtNTXebmu42Ndg2fSICj/h4O/n9jE/3fo1YcMR54BENjzA84uMpN+8vUZ/nNaLjEY5HDDzi07fbj/jrS/2Y14iJRyw4oh94RMMjPv2hdbt/qdsLxMAjPv3jHuf9vNxwu0T4gUfgv1H+8dvdHz9RHteIiUcsOGIceETDIwyPOPGIjkc4HjHwiC++3WNcIyYe8fnb/RiDcY2Ij9/uxzB/iWh4hOERn77d4xG2GMe6RnQ8wvGIgUcEHvHx273u91KPdlwjFhwxDzyi4RGGR5x4RMcjHI8YeER8EXH9ds+JR3z+dt+Pxgy7RqyP3+7Hp6gvEQ2PMDzi4939479YV8cjHI8YeETgEROPwH/M8uJk9vcYwyv6N4ZL928Ml+7fGC7dvzFcun9juHT/xnDp/o3h0v0bw6X7N4ZL928Ml+7fGC7dvzFcun9juHT/xnDp/o3h0v0bw6X7N4ZL928Ml+7fGC7dvzGcrX9jOFv/xnDp/o3h0v0bw6X7N4ZL928Ml+7fGC7dvzFcun9juHT/xnDp/o3h0v0bw6X7N1Jfe+sq92+kvvbWVe7fGC7dv5H62ltXuX9juHT/xnC2/o004urfSCOu/o004urfSCOWDfY04urfGM7WvzGcrX9jOFv/xnC2/o3hbP0bw/n6N4bz9W8M5+vfGM7XvzGcr39jOF//xnC+/o3hfP0bw/n6N4bz9W8M5+vfGM7XvzGcr39jOF//xnC+/o3hfP0bw/n6N4bz9W8M5+vfGM7XvzGcr39jOF//xnC+/o3hfP0bw/n6N4bz9W8M5+vfGM7XvzGcr39jOF//xnDC/o0txda/saXY+je2FNu99luKrX9jS7H1b2wpwo/r+Po3thRb/8aWYuvf2FKdUYptToWp9m/czEWvDL+Zi94YfjNX7d9IddEbw1Nd9MbwVBe9MTzVu6666I3hqS7av5HqurtUtX8j1XW3qWr/RqrrblPV/o1U192mqv0bqa67TdH9G4kIPALcv5GIBUeg+zcS0fAIwyPA/RuJ6HiE4xEDjwD3byRi4hELjkD3bySi4RHg/o1EDDwCfDHkDYHu30gE/huF7t9IxMQjFhyB7t9IRMMjDI848YiORzgeMfAIcP9GIiYeAe7fyN+Bgfs3EtHwCMMjwP0bieh4hOMRA48IPALcv5GIBUeg+zcS0fAIwyNOPKLjEY5HDDwC3L+RiIlHgPs38iwFuH8jEQ2PMDwC3L+RiI5HOB4x8IjAIyYegf+YBd6/MVtF/8aNoty/kfrCN4GnvvBN4KkvfBN46ndtfeGbwFNf+Cbw1Be+CTz1hW8CT33h/o2bvnL/Ruprb13l/o3U1966yv0bqa+9dZX7N1Jfe+sq92+kPlf/xs2IrH8jjYRvAk994ZvAU1/4JvDU79r6wjeBp77wTeCpL3wTeOoL3wSe+sI3gd/0lfs3Ul976yr3b6S+9tZV7t9Ife2tq9y/kfraW1e5fyP1tbcuWf9GGnH1b6QRV/9GGnH1b6QRywZ7GnH1b6QRV/9GGnH1b6QRV/9GGnH1b9yMyPo30qj47f+xmyCd2Po30ontQr885cXWv5FObP0b6cTWv5FObP0b6cTWv5FObP0b6cTWv3FzouvfSCe2/o10YuvfSCe2/o106oRObP0b6cTWv5FObP0b6cTWv5FObP0bNye6/o10YuvfSCe2/o10YuvfSKdO6MTWv5FObP0b6cTWv5FObP0b6cTWv7GzUWz9G1uKrX9jS7H1b2wptnvttxRb/8aWYuvf2FKEH9fx9W9sKbb+jS3F1r+xpTqjFN2cmiXp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp506eNJlz6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjqZ0+ntrp46mdPp7a6eOpnT6e2unjSZc+nnTp40mXPp506eNJlz6edOnjSZc+nnTp40mXPp506eNJlz6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ehOnjSZg+noTp40mYPp6E6eNJmD6ejOnjyZg+nozp48mYPp6M6ePJmD6ejOnjyZg+nozp48mYPp6M6eNJlz7uts4XAaszjr8e7PZ87jbTng9eR5t+58H27oP27oPnP3/Qm8eL4Kj7/V9hY/Xng83/ejDOf11+U/u4/zm7HX97rj+fu05p/86D7d0H7d0Hz3cf7O8+6O8+eLmK3e4vh4/4Tw9e/TXkeLxJ+Qf9+Oq5/oaJGsyswawSzPUY+T6m1WCsBnN+jmnxwNh4gek1GK/BjBpM1GBmDWaVYM4vTIH++B1X8/kC02owVoM5azC9BuM1mAHH2NH+dfkfY49QoY2/TfYW+7lxDvvXuD4Fea7H31XH3/7KedyevP2v//e//l//7b/+L//7//Z/357I//P/+e//6//4b//Hf//rf/6P/+///PX/3L72/wc="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"app_payload":[{"end":60,"start":39}],"fee_payload":[{"end":72,"start":60}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528]},"bytecode":"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","debug_symbols":"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J+dfOTn/ysn5V07Ov3Jy/pWT86+cnH/l5PwrJ+dfOTn/ysn5V07Ov3Jy/pWT86+cnH/l5PwrJ+dfOTn/ysn5V07Ov3Jy/pWT86+cnH/l5PwrJ+dfOTn/ysn5V07Ov3Jy/pWT86+cnH/l5PwrJ+dfOTn/ysn5V07Ov3Jy/pWT86+cnH/l5PwrJ+dfOTn/ysn5V07Ov3Jy/pWT86+cnH/l5PwrJ+dfOTn/ysn5V07Ov3Jy/lUl519Vcv5VJedfVXL+VV24+28l519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnXzVy/lUj5181cv5VI+dftYW7/zZy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VVrIAVirAO4OvArgbsGrAO4evArg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z32hM+XPkBzPfaFz5c+QHM99obPlz5Acz32h8+XPkBzPfaHz6M+QHM99xWPdl3is+xKPdV/ise5LPNZ9ice6L/FY9yUe677EY92XeKz7Eo91X+Kx7ks81n2Jx7ov8Vj3JR7rvsRj3Zd4rPsSj3Vf4rHuSzzWfYnHui/xWPclHuu+xGPdl3is+xKPdV/ise5LPNZ9ice6L/FY9yUe677EY92XeKz7Eo91X+Kx7ks81n2Jx7ov8Vj3JR7rvsRj3Zd4rPsSj3Vf4rHuSzzWfYnHui/xWPclHuu+xGPdl3ise4nHupd4rHuJx7qXeKx7WSSe5HDuS+Kx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute4rHuJR7rXuKx7iUe617ise4lHute47HuNR7rXuOx7jUe614XiSc5nPvSeKx7jce613ise43Hutd4rHuNx7rXeKx7jce613ise43Hutd4rHuNx7rXeKx7jce613ise43Hutd4rHuNx7rXeKx7jce613ise43HutdLUdCb56+rm//52g+Cr9SVDwm+UrVutd4E//W/Pxd8pVp9SPCVKvUhwVeq04cEX2mNfEjwlVbIRwRfiod9SPCl+vARwVdaGx8SfKWV8SHBEk1wNKdFzMB+EMHrnh5EYDsiL8sWSJW9j95f3Nqvy//ixr1YqoNzqs+QDM6pPkUyti86RTK2MzpFMrY3OkWyxJOM7Y9OkYztkE6RjO2nTpEcz32Bc6rPkAzOqT5Fcjz3Bc6pPkVyPPcFzqk+RXI89wXOqT5Fcjz3Bc6pPkVyPPcFzqk+RXI89wXOqT5Fcjz3Bc6pPkVy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vwP7/WsP7PevPbDfv/bAfv/aA/v9aw/s9689sN+/9sB+/9oD+/1rD+z3rz3A378H+Pv3AH//HuDv3wP8/evS/bPz+cHfvwf4+/cAf/8e4O/fA/z9e4K/f0/w9+8J/v49wd+/Lt0/O58f/P17gr9/T/D37wn+/j3B378X+Pv3An//XuDv3wv8/evSvbTz+cHfvxf4+/cCf/9e4O/fC/z9a+DvXwN//xr4+9fA378u3Vc7nx/8/Wvg718Df/8a+PvXwN+/Bfz9W8DfvwX8/VvA378u3Vc7nx/8/VvA378F/P1bwN+/Bfz9W8HfvxX8/VvB378V/P3r0l+18/nB378V/P1bwd+/Ffz9W8Hfvw38/dvA378N/P3bwN+/Lp1SO58f/P3bwN+/Dfz928Dfvw38/Qvef2Xg/VcG3n9l4P1XBt5/ZeD9Vwbef2Xg/VcG3n9l4P1XBt5/ZeD9Vwbef2Xg/VcG3n9l4P1XBt5/ZeD9Vwbef2Xg/VcFvP+qgPdfFfD+qwLef1Ue2O/fAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA919V8P6rCt5/VcH7ryp4/1V9YL9/K3j/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n/VwPuvGnj/VQPvv2rg/Vftgf3+beD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VB++/6uD9Vx28/6qD91/1B/b7t4P3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XA7z/aoD3Xw3w/qsB3n81Htjv3wHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfHQ/wAqynAOw38FMA9iv4KQD7HfwUgP0SfgrAfgs/BWC/hp8CsN/DTwHYL+KnAPQ3MXgV1lMA+psYvAzrKQD9TQxeh/UUgP4mBi/EegpAfxODV2I9BaC/icFLsZ6Ph/4mBq/Fej4e+psYvBjr+Xjob2Lwaqzn46G/icHLsZ6Ph/4mBq/HegpAfxODF2Q9BaC/icErsp4C0N/E4CVZTwHob2LwmqynAPQ3MXhR1lMA+psYvCrrKQD9TQxelvUUgP4mBq/LegpAfxODF2Y9BaC/icErs54C0N/E4KVZTwHob2Lw2qynAPQ3MXhx1lMA+psYvDrrKQD9TQxenvUUgP4mBq/PegpAfxODF2g9BaC/icErtJ4C0N/E4CVaTwHob2LwGq2nAPQ3MXiR1lMA+psYvErrKQD9TQxepvUUgP4mBq/TegpAfxODF2o9BaC/icErtZ4C0N/E4KVaTwHob2LwWq2nAPQ3MXix1lMA+psYvFrrKQD9TQxervUUgP4mBq/XegpAfxODF2w9BaC/icErtp4CwN/EB3rH1oHesXWgd2wd6B1bxwP8TXygd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1onesXWid2yd6B1bJ3rH1vkAfxOf6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWhd2xd6B1bF3rH1oXesXU9wN/EF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWhd2xd6B1bF3rH1oXesXWh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e+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6L3xd94Wv677wdd0Xvq778jA+yXTuq/B13Re+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovqVrQRzv//urR/vzeL4IzvZWnBGf6tB69fwj+63//Z8GZPqunBGf6pJ4SnOlzekpwpow8JThTQp4RnKoPe0pwqvfwjOBM2XhKcKZkPCXY2ASzOS3gDuwXEbju6UVEbEfUrsfng3T77j+9v3pr//7yv3rjbqJ68J7qFZKD91QvkRzbFy2RHNsZLZEc2xstkWx8kmP7oyWSYzukJZJj+6klkvncV/Ce6hWSg/dUL5HM576C91QvkcznvoL3VC+RzOe+gvdUL5HM576C91QvkcznvoL3VC+RzOe+gvdUL5HM576C91QvkcznvoL3VC+RzOe+gvdUL5HM576C91QvkcznvoL3VC+RzOe+gvdUL5HM576C91QvkcznvoL3VC+RzOe+gvdUL5HM576C91QvkcznvoL3VC+RzOe+gvdUL5HM576C91QvkUznvmrwnuolkuncVw3eU71EMp37qg/jk0znvmrwnuolkuncVw3eU71EMp/7Ct5TvUQyn/sK3lO9RDKf+wreU71EMp/7Ct5TvUQyn/sK3lO9RDKf+wreU71EMp/7Ct5TvUQyn/sK3lO9RDKf+wreU71EMp/7Ovnc18nnvoK3kS+RzOe+Lj73dfG5r+Ct5D+TPFG0X4O3kvsLDt5Z/UPB39e/1uCd1QsEZ/qknhKc6XN6SrCxCc6U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YLovmIrAdF8wFYHpvmDmPR0NJ6DNEZi+v6cisHMnf53Jzi37dSaNe3M8N0HkXPI3Z0rltTaiyMWZhr0zabjr/OhMys+eaLjrbD1/Bj//CX5+AT9/AT9/BT9/Az9/Bz//wD7/AL9/B/j9O8Dv3wF+/2r46mw9P/j9O8Dv3wF+/w7w+3dg379yYN+/cmDfv3Jg379yYN+/cmDfv3Jg379yYN+/cmDfv3Jg379ygN+/Cfz+TeD3bwK/fxP4/avi/bPz/OD3bwK/fxP4/ZvA798Efv9m8Ps3g9+/Gfz+zeD3r4r3z87zg9+/Gfz+zeD3bwa/fzP4/XuC378n+P17gt+/J/j9q+K9tPP84PfvCX7/nuD37wl+/57g96+A378Cfv8K+P0r4PevivfVzvOD378Cfv8K+P0r4PevgN+/Bfz+LeD3bwG/fwv4/avifbXz/OD3bwG/fwv4/VvA798Cfv9W8Pu3gt+/Ffz+reD3r4p/1c7zg9+/Ffz+reD3bwW/fyv4/dvA798Gfv828Pu3gd+/Kp5SO88Pfv828Pu3gd+/Dfz+beD3L7j/lYD7Xwm4/5WA+18JuP+VgPtfCbj/lYD7Xwm4/5WA+18JuP+VgPtfCbj/lYD7Xwm4/5WA+18JuP+VgPtfCbj/lYD7XxVw/6sC7n9VwP2vCrj/VTmw798C7n9VwP2vCrj/VQH3vyrg/lcF3P+qgPtfFXD/qwLuf1XA/a8KuP9VAfe/KuD+VwXc/6qA+18VcP+rAu5/VcD9rwq4/1UB978q4P5XBdz/qoD7XxVw/6sC7n9VwP2vCrj/VQH3vyrg/lcF3P+qgPtfFXD/qwLuf1XA/a8KuP9VAfe/KuD+VwXc/6qA+18VcP+rAu5/VcD9rwq4/1UB978q4P5XBdz/qoD7XxVw/6sC7n9VwP2vCrj/VQH3vyrg/lcF3P+qgPtfFXD/qwLuf1XA/a8KuP9VAfe/KuD+VwXc/6qA+18VcP+rAu5/VcD9rwq4/1UB978q4P5XBdz/qoD7XxVw/6sC7n9VwP2vCrj/VQH3vyrg/lcF3P+qgPtfFXD/qwLuf1XA/a8KuP9VAfe/KuD+VwXc/6qA+18VcP+rAu5/VcD9rwq4/1UB978q4P5XBdz/qoD7X1Vw/6sK7n9Vwf2vKrj/VT2w798K7n9Vwf2vKrj/VQX3v6rg/lcV3P+qgvtfVXD/qwruf1XB/a8quP9VBfe/quD+VxXc/6qC+19VcP+rCu5/VcH9ryq4/1UF97+q4P5XFdz/qoL7X1Vw/6sK7n9Vwf2vKrj/VQX3v6rg/lcV3P+qgvtfVXD/qwruf1XB/a8quP9VBfe/quD+VxXc/6qC+19VcP+rCu5/VcH9ryq4/1UF97+q4P5XFdz/qoL7X1Vw/6sK7n9Vwf2vKrj/VQX3v6rg/lcV3P+qgvtfVXD/qwruf1XB/a8quP9VBfe/quD+VxXc/6qC+19VcP+rCu5/VcH9ryq4/1UF97+q4P5XFdz/qoL7X1Vw/6sK7n9Vwf2vKrj/VQX3v6rg/lcV3P+qgvtfVXD/qwruf1XB/a8quP9VBfe/quD+VxXc/6qC+19VcP+rCu5/VcH9ryq4/1UF97+q4P5XFdz/qoL7XzVw/6sG7n/VwP2vGrj/VTuw798G7n/VwP2vGrj/VQP3v2rg/lcN3P+qgftfNXD/qwbuf9XA/a8auP9VA/e/auD+Vw3c/6qB+181cP+rBu5/1cD9rxq4/1UD979q4P5XDdz/qoH7XzVw/6sG7n/VwP2vGrj/VQP3v2rg/lcN3P+qgftfNXD/qwbuf9XA/a8auP9VA/e/auD+Vw3c/6qB+181cP+rBu5/1cD9rxq4/1UD979q4P5XDdz/qoH7XzVw/6sG7n/VwP2vGrj/VQP3v2rg/lcN3P+qgftfNXD/qwbuf9XA/a8auP9VA/e/auD+Vw3c/6qB+181cP+rBu5/1cD9rxq4/1UD979q4P5XDdz/qoH7XzVw/6sG7n/VwP2vGrj/VQP3v2rg/lcN3P+qgftfNXD/qwbuf9XA/a8auP9VA/e/auD+Vw3c/6qB+181cP+rBu5/1cD9rxq4/1UD979q4P5XDdz/qoH7X3Vw/6sO7n/Vwf2vOrj/VT+w798O7n/Vwf2vOrj/VQf3v+rg/lcd3P+qg/tfdXD/qw7uf9XB/a86uP9VB/e/6uD+Vx3c/6qD+191cP+rDu5/1cH9rzq4/1UH97/q4P5XHdz/qoP7X3Vw/6sO7n/Vwf2vOrj/VQf3v+rg/lcd3P+qg/tfdXD/qw7uf9XB/a86uP9VB/e/6uD+Vx3c/6qD+191cP+rDu5/1cH9rzq4/1UH97/q4P5XHdz/qoP7X3Vw/6sO7n/Vwf2vOrj/VQf3v+rg/lcd3P+qg/tfdXD/qw7uf9XB/a86uP9VB/e/6uD+Vx3c/6qD+191cP+rDu5/1cH9rzq4/1UH97/q4P5XHdz/qoP7X3Vw/6sO7n/Vwf2vOrj/VQf3v+rg/lcd3P+qg/tfdXD/qw7uf9XB/a86uP9VB/e/6uD+Vx3c/6qD+191cP+rDu5/1cH9rzq4/1UH97/q4P5XHdz/qoP7Xw1w/6sB7n81wP2vBrj/1Tiw798B7n81wP2vBrj/1QD3vxrg/lcD3P9qgPtfDXD/qwHufzXA/a8GuP/VAPe/GuD+VwPc/2qA+18NcP+rAe5/NcD9rwa4/9UA978a4P5XA9z/aoD7Xw1w/6sB7n81wP2vBrj/1QD3vxrg/lcD3P9qgPtfDXD/qwHufzXA/a8GuP/VAPe/GuD+VwPc/2qA+18NcP+rAe5/NcD9rwa4/9UA978a4P5XA9z/aoD7Xw1w/6sB7n81wP2vBrj/1QD3vxrg/lcD3P9qgPtfDXD/qwHufzXA/a8GuP/VAPe/GuD+VwPc/2qA+18NcP+rAe5/NcD9rwa4/9UA978a4P5XA9z/aoD7Xw1w/6sB7n81wP2vBrj/1QD3vxrg/lcD3P9qgPtfDXD/qwHufzXA/a8GuP/VAPe/GuD+VwPc/2qA+18NcP+rAe5/NcD9rwa4/9UA978a4P5XA9z/aoD7X6UD3ADrEQD2DfwIAPsKfgSAfQc/AsC+hB8BYN/CjwCwr+FHANj38CMA7Iv4EQD6TQxuhfUIAP0mBjfDegSAfhOD22E9AkC/icENsR4BoN/E4JZYjwDQb2JwU6zH8dBvYnBbrMfx0G9icGOsx/HQb2Jwa6zH8dBvYnBzrMfx0G9icHusRwDoNzG4QdYjAPSbGNwi6xEA+k0MbpL1CAD9Jga3yXoEgH4TgxtlPQJAv4nBrbIeAaDfxOBmWY8A0G9icLusRwDoNzG4YdYjAPSbGNwy6xEA+k0Mbpr1CAD9Jga3zXoEgH4TgxtnPQJAv4nBrbMeAaDfxODmWY8A0G9icPusRwDoNzG4gdYjAPSbGNxC6xEA+k0MbqL1CAD9Jga30XoEgH4TgxtpPQJAv4nBrbQeAaDfxOBmWo8A0G9icDutRwDoNzG4odYjAPSbGNxS6xEA+k0Mbqr1CAD9Jga31XoEgH4TgxtrPQJAv4nBrbUeAaDfxODmWo8A0G9icHutRwDoNzG4wdYjAPSbGNxi6xEA+E2c0D22ErrHVkL32EroHlvpAL+JE7rHVkL32EroHlsJ3WMroXtsJXSPrYTusZXQPbYSusdWQvfYSugeWwndYyuhe2wldI+thO6xldA9thK6x1ZC99hK6B5bCd1jK6F7bCV0j62E7rGV0D22ErrHVkL32EroHlsJ3WMroXtsJXSPrYTusZXQPbYSusdWQvfYSugeWwndYyuhe2wldI+thO6xldA9thK6x1ZC99hK6B5bCd1jK6F7bCV0j62E7rGV0D22ErrHVkL32EroHlsJ3WMroXtsJXSPrYTusZXQPbYSusdWQvfYSugeWwndYyuhe2wldI+thO6xldA9thK6x1ZC99hK6B5bCd1jK6F7bCV0j62E7rGV0D22ErrHVkL32EroHlsJ3WMroXtsJXSPrYTusZXQPbYSusdWQvfYSugeWwndYyuhe2wldI+thO6xldA9thK6x1ZC99hK6B5bCd1jK6F7bCV0j62E7rGV0T22MrrHVkb32MroHlv5AL+JM7rHVkb32MroHlsZ3WMro3tsZXSPrYzusZXRPbYyusdWRvfYyugeWxndYyuje2xldI+tjO6xldE9tjK6x1ZG99jK6B5bGd1jK6N7bGV0j62M7rGV0T22MrrHVkb32MroHlsZ3WMro3tsZXSPrYzusZXRPbYyusdWRvfYyugeWxndYyuje2xldI+tjO6xldE9tjK6x1ZG99jK6B5bGd1jK6N7bGV0j62M7rGV0T22MrrHVkb32MroHlsZ3WMro3tsZXSPrYzusZXRPbYyusdWRvfYyugeWxndYyuje2xldI+tjO6xldE9tjK6x1ZG99jK6B5bGd1jK6N7bGV0j62M7rGV0T22MrrHVkb32MroHlsZ3WMro3tsZXSPrYzusZXRPbYyusdWRvfYyugeWxndYyuje2xldI+tjO6xldE9tjK6x1ZG99jK6B5bGd1jK6N7bGV0j62M7rF1ontsnegeWye6x9aJ7rF1HuA38YnusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bJ7rH1onusXWie2yd6B5bgu6xJegeW4LusSXoHltygN/Egu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rEl6B5bgu6xJegeW4LusSXoHluC7rFV0D22CrrHVkH32CroHlvlAL+JC7rHVkH32CroHlsF3WOroHtsFXSPrYLusVXQPbYKusdWQffYKugeWwXdY6uge2wVdI+tgu6xVdA9tgq6x1ZB99gq6B5bBd1jq6B7bBV0j62C7rFV0D22CrrHVkH32CroHlsF3WOroHtsFXSPrYLusVXQPbYKusdWQffYKugeWwXdY6uge2wVdI+tgu6xVdA9tgq6x1ZB99gq6B5bBd1jq6B7bBV0j62C7rFV0D22CrrHVkH32CroHlsF3WOroHtsFXSPrYLusVXQPbYKusdWQffYKugeWwXdY6uge2wVdI+tgu6xVdA9tgq6x1ZB99gq6B5bBd1jq6B7bBV0j62C7rFV0D22CrrHVkH32CroHlsF3WOroHtsFXSPrYLusVXQPbYKusdWQffYKugeWwXdY6uge2wVdI+tgu6xVdA9tgq6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sTvQ/eVyuarYHej+crlcVewOdH+5XK4qdl+6v1wuV8XVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydatfXN3qF1e3+sXVrX5xdatfD+OSS+WqLq5u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW924utWNq1vduLrVjatb3R7GJZfKVRlXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1qxtXt7pxdasbV7e6cXWrG1e3unF1q1uiOurRzo8vbted3Dwvohm5iQqLR+8fX/zP//3PcvN8VE3JzfNRNSXXuOTmCYBTcvMEwCm5id67M3ITvXdn5OYJgDNyExUWT8nlclWJCoun5KK6qhcJhi8htPtp5/iQ0M/2XQx/jPrx1Mfx8hytvwoO7X9WCA7tgFYIDu2BVggO7YIWCI5dMbxCcGgntEJwaC+0QnBoN7RCsLEJZnNaseuGVwhmc1qxK4dXCGZzWrFrh1cIZnNasauHVwhmc1qx64dXCGZzWrEriFcIZnNasWuIVwgmc1oldhXxCsFkTqvEriNeIZjMaZWHsQkmc1oldi3xCsFkTqvEriZeIZjNacWuJ14hmM1pxa4oXiGYzWnFrileIZjNacWuKl4hmM1pxa4rXiGYzWnFrixeIZjNacWuLV4hmM1pxa4uXiGYzWnFri9eIZjNacWuMF4hmM1pxa4xXiGYzWnFrjJeIZjNacWuM14hmM1pxa40XiGYzWnFrjVeIZjNacWuNl4hmM1pxa43XiGYzWnFrjheIZjNacWuOV4hmM1pxa46XiGYzWnFrjteIZjNacWuPF4hmM1pFWMTzOa0CpvTit3kvUIwm9MqbE6rsjmt2H3tKwSzOa3Yne0rBBubYDanFbu5fYVgNqcVu719hWA2pxW7wX2FYDanFbvFfYVgNqcVu/V9hWA2p8XWEV/YOuILW0d8YeuIL2wd8YWtI76wdcQXto74wtYRX9g64gtbR3xh64gvbB3xha0jvrB1xBe2jvjC1hFf2DriC1tHfGHriC9sHfGFrSO+sHXEF7aO+MrWEV/ZOuIrW0d8ZeuIrw9jE0zmtCpbR3xl64ivbB3xla0jvrJ1xFe2jvjK1hFf2TriK1tHfGXriK9sHfGVrSO+snXEV7aO+MrWEV/ZOuIrW0d8ZeuIr2wd8TVRg/jzqz++uP3+nV/k5nkLz8hN1C09ev/44tHu5Ob5fJ6Sm+fTeUpuns/mKbl5MvCU3DwJeEpuovfujNxE790ZuXmy74zcRE3SU3K5XFWiFukpuaiu6kWC4UsI7X56aZ//HZX6XRC38zOI21W+vvfjeBUc2v+sEBzaAa0QHNoDrRAc2gUtEBy753mF4NBOaIXg0F5oheDQbmiFYGMTzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxBM5rRa7J7nFYLJnFaL3fO8QjCZ02oPYxNM5rRa7J7nFYLJnFaL3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9M62ZxW7CbvFYLZnNbJ5rQuNqcVu699hWA2pxW7s32FYGMTzOa0Yje3rxDM5rRit7evEMzmtGI3uK8QzOa0Yre4rxDM5rRit76vEMzmtNg64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xHe2jvjO1hHf2TriO1tHfH8Ym2Ayp9XZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI74nahAf7fz44vb7d36Rm+ctPCU3zyf06P3zi9ud3Dyfz1Ny83w6T8nN89k8JTdPBp6Rm6hRekpuovfujNxE790ZuXmy75Rc45LL5aoStUhPyUV1VS8SUJ3Si4TQ7md8fufjcZzHd0m8fH51sZv/6mLXPC/QG9r/LNAb2gAt0BvaAS3Qa2R6Q3ugBXpDm6AFekO7oAV6Q1umBXrJ/FXscucFesn8Vexq5wV6yfxV7GLnBXrJ/FXsWucFesn8VexS5wV6ufzViF3pvEAvl78asQudF+jl8lfjYWR6ufzViF3mvEAvl78asaucF+gl81exi5wX6CXzV7FrnBfoJfNXsUucF+gl81exK5wX6CXzV7ELnBfoJfNXseubF+gl81exy5sX6CXzV7GrmxfoJfNXsYubF+gl81exa5sX6CXzV7FLmxfoJfNXsSubF+gl81exC5sX6CXzV7HrmhfoJfNXscuaF+gl81exq5oX6CXzV7GLmhfoJfNXsWuaF+gl81exS5oX6CXzV7ErmhfoJfNXsQuaF+gl81ex65kX6CXzV7HLmRfoJfNXsauZF+gl81exi5kX6CXzV5XMX8Xu3V6gl8xfVTJ/VY1ML5m/il2tvkAvmb+KXa6+QC+Zv4pdr75AL5m/il2wvkAvmb+KXbG+QC+Zv4pdsr5AL5m/il3JvkAvmb8i628fZP3tg6y/fZD1tw+y/vZB1t8+yPrbB1l/+yDrbx9k/e2DrL99kPW3D7L+9kHW3z7I+tsHWX/7IOtvH1z97fbI1O/9/eX0p95E798pvYk+n7+/8vnUm+jzeUpvos/nKb2JPp+n9CbKv1N6E+XfGb2Z+p+n9GZ6/87oTZR/p/Qmyr9Teo1ML5m/wu1/ftEA65leNET2Qc8Hr8fXg5znN//h3X/vF8GRjdAKwaGbmpcIjmyFlgiO7IWWCI5shpYINjbBke3QEsGR/dASwZHN0xLBbE4rdGXzCsGhO5uXCGZzWqFbm5cIZnNaoXublwhmc1qhm5uXCGZzWqG7m5cIZnNaodublwhmc1qh+5uXCGZzWqEbnJcIZnNaoTuclwhmc1qhW5yXCGZzWqF7nJcIZnNaoZuclwhmc1qhu5yXCGZzWqHbnJcIZnNaofuclwhmc1qhG52XCGZzWqE7nZcIZnNaoVudlwhmc1qhe52XCGZzWqGbnZcIZnNaobudlwhmc1qh252XCGZzWqH7nZcIZnNaoRuelwhmc1qhO56XCGZzWqFbnpcIZnNaoXuelwhmc1qhm56XCGZzWqG7npcIZnNaoduelwhmc1qh+56XCGZzWqEbn5cIZnNaoTuflwhmc1qhW5+XCGZzWoPNaQ0yp3WEbvZeIpjMaT2/DZvgTK+lYh/t7cVuBWd6Lc0IDl2H/GPB5aNftNR2JzjTh9aU4EwfWlOCM8XDKcHGJjhTPJwSnOk9XI/666vrdd4JzvQenhKcKR5OCc4UD2cEp6pbnhKcyWlNCc7ktKYEZ3JaU4KNTXAmpzUlmM1ppapbnhKM67ReROC6py8RwWuRz/r6II9v/tObWacGr0VeIDi2I/qZ4PP8fBArd4JjO6IFgo1NcGxHtEBwbEe0QHBsR7RAcGxH9EPBpXw8SDvuBMd2T/6Cg9ciLxCcyWlNCU7ltGYEp3JaM4KNTXAqpzUjOLbTuo7r80HsvL4R/IxCH7uYp2d+WcZc16vk2F5rieTYbmuJ5Nh+a4Xk4PXISyTH9lxLJMd2XUskx/ZdSyQbn+TY3muJZD73FbwseYlkPvcVvDB5heTglclLJPO5r+C1yUsk87mv4NXJSyTzua/g9clLJPO5r+AVyksk87mv4DXKSyTzua/gVcpLJPO5r+B1yksk87mv4JXKSyTzua/gtcpLJPO5r+DVyksk87mv4PXKSyTzua/gFctLJPO5r+A1y0sk87mv4FXLSyTzua/gdctLJPO5r+CFvD+TPNpHTdxod3/IGbyQd4HgTJ/Wo39UTI1xVzEVvK7VXfAZvK51geBMn9NTgjNl5CnBmRLylOBU7+EZwanewzOCM2XjKcGZkvGUYDKndT7YnFbwjul3gl9E4LqnFxGxHZFV+xLR2jf/6U0UEJ3Bu6AXCDY2wbEd0c8ET7S1nMG7oBcIju2IFgiO7YgWCI7tiPwFB++CXiA4tntaIDiT05ooLzmDd0EvEGxsglM5rRnBqZzWjOBUTmtGcCqnNSMYyGl1u9liBO+NnhQB5IjuRcR2OeX8WoqVqzpsG4L3Oy8QbIkEzxj34P3OCwTHdjkLBMd2OQsEx3Y5CwTHdjn+goP3O/9Q8ISPDd7vvEBwJqc1JTiT05oSbGyCUzmtGcGpnNaMYCCnZXe/MxG8r3lSBJAjuhURvFO59PL5IHV894tTvdjj45uX8vK/tlZfJQf3OSskB3c6KyQH9zorJBuf5OB+Z4Xk4I5nheTgnmeF5OAOaYXk4H5qgeTgncpLJPO5r+Cdyksk87mv4J3KSyTzua/gncpLJPO5r+Cdyksk87mv4J3KSyTzua/gncpLJPO5r+Cdyksk87mv4J3KSyTzua/gncpLJPO5r+Cdyksk87mv4J3KSyTzua/gncpLJPO5r+Cdyksk87mv4J3KSyTzua/gncpLJPO5r8Hnvgaf+wrenL1EMp/7Gnzua/C5r+Ad6Usk07mvK3hP+hLJdO7rCt6VvkQynfu6HsYnmc59XcE705dIpnNfV/De9CWS+dxX8O70JZL53FfwXvYlkvncV/Bu9iWS+dxX8H72JZL53FfwjvYlkvncV/Ce9iWS+dxX8K72JZL53FfwvvYlkvncV/DO9iWS+dxX8N72JZL53FfwnvclkvncV/QO+RWS+dxX9B75FZL53Ff0LvkVkvncV/Q++RWS+dxX9E75FZL53Ff0XvkVkvncV/Ru+RWS+dxX9H75FZL53Ff0PvoVkvncF1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdX/xdd1ffF33F1/X/cXXdW98XffG13VvfF33xtd1bw/jk0znvoyv6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+Lruja/r3vi67o2v6974uu6Nr+ve+LruC1/XfeHrui98XfeFr+u+PIxPMp37Knxd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovfF33ha/rvvB13Re+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu5Lqhb00c5fXz3a79/7RXCmt/KU4Eyf1qP3D8H//N//LDjTZ/WU4Eyf1FOCM31OTwnOlJGnBGdKyDOCU/VhTwlO9R6eEZwpG08JzpSMpwQbm2A2pwXcgf0iAtc9vYiI7Yja9fh8kG7f/af3T2/try//pzfuJqoH76leITl4T/USybF90RLJsZ3REsmxvdESycYnObY/WiI5tkNaIjm2n1oimc99Be+pXiE5eE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl8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Xsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyXrb69k/e2VrL+9kvW314eR6eXyV5Wsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e01U7/38Xg8vh57fPPNf/Ig53n1T4ndvp6jjf/1Oz/KxzOfj1G+vnP9I7w+Pr/z+c13Lnb++tpi1930E7kRTf+n08/U/a7p/3j6iZyqpv/j6Sfy7Zr+j6efKMVo+j+evmn6xNNPlHA1/R9PP9HPUzT9H08/0U+XNP0fT1+7Pubpa9eXdfr94xuXl+/7+/Qz3SHS9H88fe36mKevXR/z9LXryzr99jX9ejd90/SJp69dH/P0tetjnr52fczT166Pefra9WWdfvl45FLvfqc3001MTf/H09euj3n62vUxT1+7Pubpm6ZPPH3t+pinr10f8/S162OevnZ9zNPXro94+pnus2v6P56+dn3M09euj3n62vUxT980feLpa9fHPH3t+pinr10f8/S162OevnZ9xNMf2vUxT1+7Pubpa9fHPH3t+pinb5o+8fS162OevnZ9zNPXro95+tr1MU9fuz7e6beHdn3M09euj3n62vUxT1+7Pubpm6ZPPH3t+pinr10f8/S16yOe/qG8v3X6TyXH5/SP6jn9729ztEN5n3n6yvvM01feZ56+afrE01feZ56+8j7z9JX3maev3+1hnr5+t4d4+qd2fczT164v6/S/v8bYTu36mKevXR/z9E3TJ56+dn1Zp//9RbZ2atfHPH3t+pinr10f8/S16yOe/qVdH/P0tevLOv2J3+m9tOtjnr52fczTN02fePra9TFPX7s+5ulr18c8fe36mKevXR/x9E27Pubpa9fHPH3t+pinr10f8/RN0yeevnZ9zNPXro95+tr1MU9fuz7m6WvXRzz9ol0f8/S162OevnZ9zNPXro95+qbpE09fuz7m6WvXxzx97fqYp69dH/P0tesjnn7Vro95+tr1MU9fuz7m6WvXxzx90/SJp69dH/P0tetjnr52fczT166Pefra9RFP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4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rCt5/VcH7ryp4/1UF77+qD+z3bwXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvGnj/VQPvv2rg/VcNvP+qPbDfvw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/6uD9Vx28/6qD91918P6r/sB+/3bw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/aoD3Xw3w/qsB3n81wPuvxgP7/TvA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+q+MBXoD1FID9Bn4KwH4FPwVgv4OfArBfwk8B2G/hpwDs1/BTAPZ7+CkA+0X8FID+JgavwnoKQH8Tg5dhPQWgv4nB67CeAtDfxOCFWE8B6G9i8EqspwD0NzF4Kdbz8dDfxOC1WM/HQ38TgxdjPR8P/U0MXo31fDz0NzF4Odbz8dDfxOD1WE8B6G9i8IKspwD0NzF4RdZTAPqbGLwk6ykA/U0MXpP1FID+JgYvynoKQH8Tg1dlPQWgv4nBy7KeAtDfxOB1WU8B6G9i8MKspwD0NzF4ZdZTAPqbGLw06ykA/U0MXpv1FID+JgYvznoKQH8Tg1dnPQWgv4nBy7OeAtDfxOD1WU8B6G9i8AKtpwD0NzF4hdZTAPqbGLxE6ykA/U0MXqP1FID+JgYv0noKQH8Tg1dpPQWgv4nBy7SeAtDfxOB1Wk8B6G9i8EKtpwD0NzF4pdZTAPqbGLxU6ykA/U0MXqv1FID+JgYv1noKQH8Tg1drPQWgv4nBy7WeAtDfxOD1Wk8B6G9i8IKtpwD0NzF4xdZTAPib+EDv2DrQO7YO9I6tA71j63iAv4kP9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrQO7YO9I6tA71j60Dv2DrRO7ZO9I6tE71j60Tv2Dof4G/iE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7ZO9I6tE71j60Tv2DrRO7Yu9I6tC71j60Lv2LrQO7auB/ib+ELv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I6tC71j60Lv2LrQO7Yu9I4tQ+/YMvSOLUPv2DL0ji17gL+JDb1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWOroHdsFfSOrYLesVXQO7bKA/xNXNA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tit6xVdE7tip6x1ZF79iqD/A3cUXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2GnrHVkPv2GroHVsNvWOrPcDfxA29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/Y6ugdWx29Y6ujd2x19I6t/gB/E3f0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1ja6B3bA30jq2B3rE10Du2xgP8TTzQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfCOrfMB3rH1FID9Jn4KwH4TPwVgv4mfArDfxE8B2G/ipwDsN/FTAPab+CkA+038FID+Jgbv2HoKQH8Tg3dsPQWgv4nBO7aeAtDfxOAdW08B6G9i8I6tpwD0NzF4x9ZTAPqbGLxj6ykA/U0M3rH1FID+Jgbv2HoKQH8Tg3dsPQWgv4nBO7aeAtDfxOAdW08B6G9i8I6tpwD0NzF4x9ZTAPqbGLxj6ykA/U0M3rH1FID+Jgbv2HoKQH8Tg3dsPQWgv4nBO7aeAtDfxOAdW08B6G9i8I6tpwD0NzF4x9ZTAPqbGLxj6ykA/U0M3rH1FID+Jgbv2HoKQH8Tg3dsPQWgv4nBO7aeAtDfxOAdW08B6G9i8I6tpwD0NzF4x9ZTAPqbGLxj6ykA/U0M3rH1FID+Jgbv2HoKQH8Tg3dsPQWgv4nBO7aeAtDfxOAdW08B6G9i8I6tpwD0NzF4x9ZTAPqbGLxj6ykA/U0M3rH1FID+Jgbv2HoKQH8Tg3dsPQWgv4nBO7aeAtDfxOAdW08B6G9i8I6tpwDwN/GB3rF1oHdsHegdWwd6x9bxAH8TH+gdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1oHdsHegdWwd6x9aB3rF1ondsnegdWyd6x9aJ3rF1PsDfxCd6x9aJ3rF1ondsnegdWyd6x9aJ3rF1ondsnegdWyd6x9aJ3rF1ondsnegdWyd6x9aJ3rF1ondsnegdWyd6x9aJ3rF1ondsnegdWyd6x9aJ3rF1ondsnegdW2fohqdi56+vLXYrIPJ7YEpA5E+hUvqHgNruBET+FJoSEPlTaEpA5E+hKQGR88CMgND9QlMCIr8H6lF/fW29zjsBkd8DUwIi54EpAYYuIPKbeEpA5DfxlIDIb+IpAZHfxFMCIr+JZwSE7heaEoD+Jg7dLzQlAP1NHLpfaEoA+ps4dL/QlAD0N3HofqEpAX/9TXy7Lvzvr+1tHB9f3A/7+s6j/ctF5N9vI9or9+CSe3LJvUDlvkgwfAkFX0LFl9DwJXR8Cahu4ktCQ3UILxJQ3/ovElDf5C8SQr+de3t8fPH43oyMz+/8GF9fW+1Vbug3ub/c0G/9n8l1/mWPFtpN7EUT2qXsRRPa/exFE9pVbUXTQ7u1vWhCu8C9aEK7y71oErlWbzQmNHdo5IZv0cgN36KRG75FIzd8i0Zu+A7NkBu+RSM3fItGbvgWjdzwLRoTmjs0csO3aOSGb9HIDd+ikRu+RSM3fIPmesgN36KRG75FIzd8i0Zu+BaNCc0dGrnhWzRyw7do5IZv0cgN36KRG75Dc8gN36KRG75FIzd8i0Zu+BaNCc0dGrnhWzRyw7do5IZv0cgN36KRG75Dc3L6mommyOvk9DVTaDjfUBPNftfJ+YaaQsP5hppCw/mGmkFzce5rptBw7mum0HD6mommo+vi9DVTaExo7tBw7mum0HC64Sk0nG54Cg2nG55Cw+mGZ9AYpxueQsPphqfQyA3fopEbvkVjedD84DsfvdqHwue/5es7l/4nhaV8CGzHHchE3nkvyEROey/IRL58L8hELt4J5AucRD7eHU5J5OT94STy8v5wErl5fziJ/Lw/HBOcezhy6W/gkDrvUT++8/ObXb/B+XehupA6b3+QpM77RyDP81OglTuQpC7dHWTsmzpIIEndvz9I0qTgD5I0VfiDNIH0AUmaVn4GcmKDG/vmExJIzmRzPq6PH7uej9dn/tfJJvb9KySQnMnmZyBnXjaxb4EhgeRMNgtAciabBSA5k80CkCaQPiA5k80CkJzJ5ocgJ5JNpmt1e0GSJpvj+GRzvCr818km0yW8rSAz3c1bBnLmZZPpyt5ekKTJxh8kabLxB2kC6QOSNNn4gyRNNv4gSZPNz0BOJJtMdwr3gmT9mU2vXyDHNyDb+PzOj5evrfYCMtMNxL0gWX9m4w6SNdnU4xNkM4elRaZrjHtBmkB+C3LGR2a69LgXJGuycQfJmmzcQbImG3eQrD+zcQZpme5Z7gXJ+jObH4H8fmlhmW5l7gWpZHP033/T4gWOCc49HCWQN3BIU8VzcfX5zGf53xcGluka516QpKniRyCnPBxpqnAHmeku6F6QpKnCHyRpqvAHSZoq/EGaQPqAJE0rPwM5sTDIdCt1L0glm/O6bvJzptuq/nCUQO7hnKypovbPZ+6Hw8LgZE0V7iBZU8VPQM54uEz3gfeCNIH0AcmaKtxBsqYKd5CsqcIdJGsCcQfJmlZ+BHJiYZDpLvdekEo2TiCVbJxAKtk4gTSB9AGpZOMEUsnGCaSSzdl//4PvFzhKK2/gKIHcw8l03/z2O7/IZfD+L3JDO/TxWXfYx+t3/vdyQ/tof7mWRu7MJin2VW9/uaGdo7/c0P7OX25ox+YvN7QHc5cb+9b0z+ROZLPY16P95eZxVVNy87iqKbnGJTeRq5qRG9tV9a8AOC6HiBD7+rG/3Niu6idyp2xGbFflLTf2vV9/ubFdlbvc2K7KXW5sV+Uu1/LInbAZsa/F+svN46qm5OZxVVNyE7mqGbmJXNWE3NC3RsfDPr7zeJTqEBFCXwRdIDeyq/qZ3BmbEfq65gK5xiU3sqtaIDeyq1ogN7KrWiA3sqv6odwZmxHZVfnLDX3ncIHcPK5qSm4iVzUjN5GrmpFrKHLr7wHwRQKMU7qXAON+7iXEdjTjo8l2HA+P3zYNfZNtgdzYjuYncmf8auj7ZgvkxnY07nJjOxp3ubEdjbtc45Ib2/38SO6EXw19w2qB3DyuakpuHlc1JTeRq/pebgl9W2mB3ESuakYujqsaf86wJfSFoEkJFlnCYV8SXv9M94//0fXzowO128tTtN/khnY//nJDu58fyW3987fdj/Ob7zyxoSihr+dsRhPaVe1FE9qBbUUT+mbNZjShnd1eNKFd4F40od3lXjQmNHdo8jhcdzRyw7do5IZv0cgN36KRG75DE/rWymY0csO3aOSGb9HIDd+iMaG5QyM3fItGbvgWjdzwLRq54Vs0csN3aELf59iMRm74Fo3c8C0aueFbNCY0d2g4fU2xj9+UKHaLhtPXzKAJ3Qu/EE35OBFQartDw/mGmkLD+YaaQsP5hppCw7mvmULDua+ZQsPpayYurJfQXfqb0XDua2bQhO7o34yG0w1PoeF0w1NoON3wFBoTmjs0nG54Cg2nG55CIzd8i0Zu+BaN3PAdmtC3FX6I5gffubWPP+Jtr9/3tz8wDH2HYTOaRG7YG00iN+yNxoTmDk0iN+yNJpEb9kaTyA3/OzSj3qFJ5Ia90SRyw85oYt/EWIbmpW7jKndoON3wFBpONzyFhtMNT6ExoblDw+mGp9BwuuEpNJxueKYrK/bNkb1oON3wDJrYt0yc0LzIZXC4L3JDu9bz/PjicV3jG7nHo9vHUx+Px8tz1FfBob3oCsHGJji0b1whOLQbXCE4tMdbITi0c1shOLQfWyA49n2VFYJD+6wVgtmcVuwrKysEG5tgNqcV+9bKCsFsTiv2vZUVgsmcVo19c2WFYDKnVWPfXVkhmMxp1YexCSZzWjX2XZcVgsmcVo19g2WFYDanFfteygrBbE4r9m2TFYLZnFbsOyQrBLM5rdg3Q1YIZnNase97rBDM5rRi3+JYIZjNacW+m7FCMJvTin3jYoVgNqcV+x7FCsFsTiv27YgVgtmcVuw7DysEszmt2DcZVghmc1qx7yesEMzmtC42pxX77sUKwWxO62JzWsbmtGJfIVkhmM1pxb4YskKwsQlmc1qxb3asEMzmtGLf11ghmM1pxb6FsUIwm9OKfbdihWA2pxX7xsQKwWxOK/Y9iBWC2ZxW7NsNKwSzOa3YdxZWCGZzWrFvIqwQzOa0Yt8vWCGYzWnFvjWwQjCb04p9F2CFYDanFbvDf4VgNqcVu29/hWA2pxW7G3+FYDanFbvHfoVgNqcVu3N+hWA2pxW7H36FYDanxdYRX9k64itbR3xl64ivbB3xla0jvrJ1xFe2jvjK1hFf2TriK1tHfGXriK9sHfGVrSO+snXEV7aO+MrWEV/ZOuIbW0d8Y+uIb2wd8Y2tI749jE0wmdNqbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64jtbR3xn64jvbB3xna0jvj+MTTCZ0+psHfGdrSO+s3XEd7aO+M7WEd/ZOuL/P/bOMMtxXNnRO5pjSUGKXNzsfdzzyk7XuyWb7hssBgKYX3POc7uFL/qKQGQm2Ng64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74lqhBvJ/748Pn79/8IjfPKTwkN88burf2+PA///c/y83zfh6Sm+ftPCQ3z7t5SG6eDDwiN1Gj9JDcROfuiNxE5+6I3DzZd0iuccnlclWJWqSH5KK6qhcJqE7pRUJo93Ocz/+OrN9cgnjsnucZgkM7oBmCQ3ugGYJDu6AZgo1NcGgnNENwaC80Q3BoNzRDcGjvNEMwm9OK3fM8QzCb04rd8zxDMJvTit3zPEMwm9OK3fM8QzCb04rd8zxDMJnT6rF7nmcIJnNaPXbP8wzBZE6r34xNMJnT6rF7nmcIJnNaPXbP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTit2z/MMwWxOK3bP8wzBbE4rds/zDMFsTquyOa3YTd4zBLM5rcrmtKqxCWZzWrEb22cIZnNasVvbZwhmc1qxm9tnCGZzWrHb22cIZnNasRvcZwhmc1qxW9xnCGZzWrFb32cIZnNabB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3so7440bWEX8XzOW07oK5nNZdMJfTugs2NsFcTusumMtp3QVzOa27YC6ndRfM5rTIOuLvgtmcFllH/F0wm9Mi64i/C2ZzWmQd8XfBbE6LrCP+LpjNaZF1xN8Fszktso74u2A2p0XWEX8XzOa0yDri74LZnBZZR/xdMJvTIuuIvwtmc1pkHfF3wWxOi6wj/i6YzWmRdcTfBbM5LbKO+LtgNqdF1hF/F8zmtMg64u+C2ZwWWUf8XTCb0yLriL8LZnNaZB3xd8FsTousI/4umM1pkXXE3wWzOS2yjvi7YDanRdYRfxfM5rTIOuLvgtmcFllH/F0wm9Mi64i/C2ZzWmQd8XfBbE6LrCP+LpjNaZF1xN8Fszktso74u2A2p0XWEX8XzOa0yDri74LZnBZZR/xdMJvTIuuIvwtmc1pkHfF3wWxOi6wj/i6YzWmRdcTfBbM5LbKO+LtgNqdF1hF/F8zmtMg64u+C2ZwWWUf8XTCb0yLriL8LZnNaZB3xd8FsTousI/4umMxpbWwd8RtbR/zG1hG/sXXEbzdjE0zmtDa2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI39g64je2jviNrSN+Y+uI3xI1iPdzf3z4/P2bf+Qm6g8fkpvnDd3b88P//N//LDfP+3lIbp6385DcPO/mIbl5MvCQ3DwJeEhuonN3QG6iNukhuXmy75DcPMl3SC6Xq0rUIj0kF9VVvUhAdUovEkK7n2KPaN1rb5+CeHk8xn2BdPUfXWj34y83tPtxlxu74dlfbmj34y83tPvxlxva/fjLNS65od2Pv9zQTslfLperit3o7C+Xy1XFbnP2l8vlqmI3OfvL5XJVsVuc/eVyuarYDc7+crlcVez2Zn+5VK5qj93c7C+XylXtsVub/eVSuar9ZlxyqVzVHrut2V8ulavaYzc1+8vlclWxW5r95XK5qtgNzf5yuVxV7HZmf7lcrip2M7O/XC5XFbuV2V8ul6uK3cjsL5fLVcVuY/aXy+WqYjcx+8vlclWxW5j95XK5qtgNzP5yuVxV7PZlf7lcrip287K/XC5XFbt12V8ul6uK3bjsL5fLVcVuW/aXy+WqYjct+8vlclWxW5b95XK5qtgNy/5yuVxV7HZlf7lcrip2s7K/XC5XFbtV2V8ul6uK3ajsL5fLVcVuU/aXy+WqYjcp+8vlclWFy1XFbsl2lxu7JdtfLperqlyuKnYHur9c45LL5apid6D7y+VyVbE70P3lcrmq2B3o/nK5XFXsDnR/uVyuKnYHur9cLlcVuy/dXy6Xq+LqVt+5utV3rm71natbfefqVt+5utV3rm71natbfefqVt+5utV3rm71natbfefqVt+5utV3rm71natbfefqVt+5utV3rm71natbfefqVt+5utUPrm71g6tb/eDqVj+4utWPm3HJpXJVB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrX5wdasfXN3qB1e3+sHVrW5c3erG1a1uXN3qxtWtbjfjkkvlqoyrW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61S1RHXU/98eHz+NKbp6DaERuosLi3trjw//83/8sN8+rakhunlfVkFzjkpsnAA7JzRMAh+QmOndH5CY6d0fk5gmAI3ITFRYPyeVyVYkKi4fkorqqFwmGLyG0+zn3/pDQ9vNTDL/1+njqbXt5jrO9Cg7tf2YIDu2AZggO7YFmCA7tgiYIjl0xPENwaCc0Q3BoLzRDcGg3NEOwsQlmc1qx64ZnCGZzWrErh2cIZnNasWuHZwhmc1qxq4dnCGZzWrHrh2cIZnNasSuIZwhmc1qxa4hnCCZzWiV2FfEMwWROq8SuI54hmMxplZuxCSZzWiV2LfEMwWROq8SuJp4hmM1pxa4nniGYzWnFriieIZjNacWuKZ4hmM1pxa4qniGYzWnFriueIZjNacWuLJ4hmM1pxa4tniGYzWnFri6eIZjNacWuL54hmM1pxa4wniGYzWnFrjGeIZjNacWuMp4hmM1pxa4zniGYzWnFrjSeIZjNacWuNZ4hmM1pxa42niGYzWnFrjeeIZjNacWuOJ4hmM1pxa45niGYzWnFrjqeIZjNacWuO54hmM1pxa48niGYzWkVYxPM5rQKm9OK3eQ9QzCb0ypsTquyOa3Yfe0zBLM5rdid7TMEG5tgNqcVu7l9hmA2pxW7vX2GYDanFbvBfYZgNqcVu8V9hmA2pxW79X2GYDanxdYRX9g64gtbR3xh64gvbB3xha0jvrB1xBe2jvjC1hFf2DriC1tHfGHriC9sHfGFrSO+sHXEF7aO+MLWEV/YOuILW0d8YeuIL2wd8YWtI76wdcQXto74ytYRX9k64itbR3xl64ivN2MTTOa0KltHfGXriK9sHfGVrSO+snXEV7aO+MrWEV/ZOuIrW0d8ZeuIr2wd8ZWtI76ydcRXto74ytYRX9k64itbR3xl64ivbB3xNVGD+P3Tjw+fv3/zi9w8p/CI3ETd0r21x4f7eSU3z/t5SG6et/OQ3Dzv5iG5eTLwkNw8CXhIbqJzd0RuonN3RG6e7DsiN1GT9JBcLleVqEV6SC6qq3qRYPgSQrufVs7nf0elfgritj+DuB3l57tv26vg0P5nhuDQDmiG4NAeaIbg0C5oguDYPc8zBId2QjMEh/ZCMwSHdkMzBBubYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgNqcVu+d5hmA2pxW753mGYDanFbvneYZgMqd1xu55niGYzGmdsXueZwgmc1rnzdgEkzmtM3bP8wzBZE7rjN3zPEMwm9OK3fM8QzCb04rd8zxDMJvTit3zPEMwm9OK3fM8QzCb04rd8zxDMJvTit3zPEMwm9OK3fM8QzCb04rd8zxDMJvT2tmcVuwm7xmC2ZzWzua0DjanFbuvfYZgNqcVu7N9hmBjE8zmtGI3t88QzOa0Yre3zxDM5rRiN7jPEMzmtGK3uM8QzOa0Yre+zxDM5rTYOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74k60j/mTriD/ZOuJPto74xtYR39g64htbR3xj64hvN2MTTOa0GltHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEt0QN4v3cHx8+f//mF7l5TuEhuXne0L2154fPK7l53s9DcvO8nYfk5nk3D8nNk4FH5CZqlB6Sm+jcHZGb6NwdkZsn+w7JNS65XK4qUYv0kFxUV/UiAdUpvUgI7X7685u327Zvn5J4eX662MV/dbFrnifoDe1/JugNbYAm6A3tgCboNTK9oT3QBL2hTdAEvaFd0AS9oS3TBL1k/ip2ufMEvWT+Kna18wS9ZP4qdrHzBL1k/ip2rfMEvWT+Knap8wS9XP6qx650nqCXy1/12IXOE/Ry+at+MzK9XP6qxy5znqCXy1/12FXOE/SS+avYRc4T9JL5q9g1zhP0kvmr2CXOE/SS+avYFc4T9JL5q9gFzhP0kvmr2PXNE/SS+avY5c0T9JL5q9jVzRP0kvmr2MXNE/SS+avYtc0T9JL5q9ilzRP0kvmr2JXNE/SS+avYhc0T9JL5q9h1zRP0kvmr2GXNE/SS+avYVc0T9JL5q9hFzRP0kvmr2DXNE/SS+avYJc0T9JL5q9gVzRP0kvmr2AXNE/SS+avY9cwT9JL5q9jlzBP0kvmr2NXME/SS+avYxcwT9JL5q0rmr2L3bk/QS+avKpm/qkaml8xfxa5Wn6CXzF/FLlefoJfMX8WuV5+gl8xfxS5Yn6CXzF/FrlifoJfMX8UuWZ+gl8xfxa5kn6CXzF+R9bd3sv72Ttbf3sn62ztZf3sn62/vZP3tnay/vZP1t3ey/vZO1t/eyfrbO1l/eyfrb+9k/e2drL+9k/W3d67+drtl6vf+fHP6XW+i83dIb6L38+dbPu96E72fh/Qmej8P6U30fh7Smyj/DulNlH9H9Gbqfx7Sm+n8HdGbKP8O6U2Uf4f0GpleMn+F2//8ogHWM71oiOyD7g9et58H2fcP/+Fdf/eL4MhGaIbg0E3NUwRHtkJTBEf2QlMERzZDUwQbm+DIdmiK4Mh+aIrgyOZpimA2pxW6snmG4NCdzVMEszmt0K3NUwSzOa3Qvc1TBLM5rdDNzVMEszmt0N3NUwSzOa3Q7c1TBLM5rdD9zVMEszmt0A3OUwSzOa3QHc5TBLM5rdAtzlMEszmt0D3OUwSzOa3QTc5TBLM5rdBdzlMEszmt0G3OUwSzOa3Qfc5TBLM5rdCNzlMEszmt0J3OUwSzOa3Qrc5TBLM5rdC9zlMEszmt0M3OUwSzOa3Q3c5TBLM5rdDtzlMEszmt0P3OUwSzOa3QDc9TBLM5rdAdz1MEszmt0C3PUwSzOa3QPc9TBLM5rdBNz1MEszmt0F3PUwSzOa3Qbc9TBLM5rdB9z1MEszmt0I3PUwSzOa3Qnc9TBLM5rdCtz1MEszmtzua0OpnT2kI3e08RTOa07l/DJjjTsVTs0d5e7FJwpmNpRHDoOuSvBZdHv2ip55XgTC+tIcGZXlpDgjPFwyHBxiY4UzwcEpzpHK5b/fXpeuxXgjOdw0OCM8XDIcGZ4uGI4FR1y0OCMzmtIcGZnNaQ4ExOa0iwsQnO5LSGBLM5rVR1y0OCcZ3Wiwhc9/QjIngt8l5fH+T24T+9kXVq8FrkCYJjO6LvBO/780GsXAmO7YgmCDY2wbEd0QTBsR3RBMGxHdEEwbEd0ZeCS3k8yLldCY7tnvwFB69FniA4k9MaEpzKaY0ITuW0RgQbm+BUTmtEcGyndWzH80FsPz4Ivkehxy7m7plfljHH8So5tteaIjm225oiObbfmiE5eD3yFMmxPdcUybFd1xTJsX3XFMnGJzm295oimc99BS9LniKZz30FL0yeITl4ZfIUyXzuK3ht8hTJfO4reHXyFMl87it4ffIUyXzuK3iF8hTJfO4reI3yFMl87it4lfIUyXzuK3id8hTJfO4reKXyFMl87it4rfIUyXzuK3i18hTJfO4reL3yFMl87it4xfIUyXzuK3jN8hTJfO4reNXyFMl87it43fIUyXzuK3gh73eS+/moievn1R9yBi/knSA409u6t0fFVO9XFVPB61rdBe/B61onCM70nh4SnCkjDwnOlJCHBKc6h0cEpzqHRwRnysZDgjMl4yHBZE5rv7E5reAd0+8Ev4jAdU8vImI7Iqv2I+I8P/ynN1BAtAfvgp4g2NgEx3ZE3wkeaGvZg3dBTxAc2xFNEBzbEU0QHNsR+QsO3gU9QXBs9zRBcCanNVBesgfvgp4g2NgEp3JaI4JTOa0Rwamc1ojgVE5rRDCQ02p2scUI3hs9KALIEV2LiO1yyv6zFCtHddg2BO93niDYEgkeMe7B+50nCI7tciYIju1yJgiO7XImCI7tcvwFB+93/lLwgI8N3u88QXAmpzUkOJPTGhJsbIJTOa0Rwamc1ohgIKdlV78zEbyveVAEkCO6FBG8U7m08nyQ2j/94lQrdnt8eSkv/2s766vk4D5nhuTgTmeG5OBeZ4Zk45Mc3O/MkBzc8cyQHNzzzJAc3CHNkBzcT02QHLxTeYpkPvcVvFN5imQ+9xW8U3mKZD73FbxTeYpkPvcVvFN5imQ+9xW8U3mKZD73FbxTeYpkPvcVvFN5imQ+9xW8U3mKZD73FbxTeYpkPvcVvFN5imQ+9xW8U3mKZD73FbxTeYpkPvcVvFN5imQ+9xW8U3mKZD73FbxTeYpkPvfV+dxX53NfwZuzp0jmc1+dz311PvcVvCN9imQ693UE70mfIpnOfR3Bu9KnSKZzX8fN+CTTua8jeGf6FMl07usI3ps+RTKf+wrenT5FMp/7Ct7LPkUyn/sK3s0+RTKf+wrezz5FMp/7Ct7RPkUyn/sK3tM+RTKf+wre1T5FMp/7Ct7XPkUyn/sK3tk+RTKf+wre2z5FMp/7Ct7zPkUyn/uK3iE/QzKf+4reIz9DMp/7it4lP0Myn/uK3ic/QzKf+4reKT9DMp/7it4rP0Myn/uK3i0/QzKf+4reLz9DMp/7it5HP0Myn/vi67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+LruD76u+4Ov6/7g67o/+Lruja/r3vi67o2v6974uu7tZnyS6dyX8XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf133h67ovfF33ha/rvvB13Zeb8Ummc1+Fr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovfF33ha/rvvB13Re+rvvC13Vf+LruC1/XfUnVgt7P/den+/n7d78IznQqDwnO9LburT0E//N//7PgTO/qIcGZ3tRDgjO9p4cEZ8rIQ4IzJeQRwan6sIcEpzqHRwRnysZDgjMl4yHBxiaYzWkBd2C/iMB1Ty8iYjui87g9H6TZp//0/umt/fXxf3rjLqJ68J7qGZKD91RPkRzbF02RHNsZTZEc2xtNkWx8kmP7oymSYzukKZJj+6kpkvncV/Ce6hmSg/dUT5HM576C91RPkcznvoL3VE+RzOe+gvdUT5HM576C91RPkcznvoL3VE+RzOe+gvdUT5HM576C91RPkcznvoL3VE+RzOe+gvdUT5HM576C91RPkcznvoL3VE+RzOe+gvdUT5HM576C91RPkcznvoL3VE+RzOe+gvdUT5HM576C91RPkcznvoL3VE+RzOe+gvdUT5HM576C91RPkUznvmrwnuopkuncVw3eUz1FMp37qjfjk0znvmrwnuopkuncVw3eUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/72vnc187nvoK3kU+RzOe+Dj73dfC5r+Ct5N9JHijar8Fbyf0FB++s/lLw5/rXGryzeoLgTG/qIcGZ3tNDgo1NcKaEPCQ41Tk8IjjVOTwiOFM2HhKcKRmPCE7Vgz0kmM1pAXdgv4jAdU8vIiy0iNb254P0s3/4T287+lPz0ftFVA/eUz1FcmxXNEVybF80RXJsZzRFcmxvNENy8J7qKZJj+6MpkmM7pCmSY/upKZKNTzKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUyn/sK3lM9RTKf+wreUz1FMp/7Ct5TPUUynfs6g/dUT5FM577O4D3VUyTTua/zZnyS6dzXGbyneopkOvd1Bu+pniKZz30F76meIpnPfQXvqZ4imc99Be+pniKZz30F76meIpnPfQXvqZ4imc99Be+pniKZz30F76meIpnPfQVvMP5O8kBx4Bm8v9hfcPBe2y8Ff66zOYO32k4QnOlNPSQ403t6SLCxCc6UkIcEpzqHRwSnOodHBGfKxkOCMyXjEcHBO6knCGZzWsE7qd8JfhGB655eRFhkEdtte4rYbmX78J9e2fuvT5ejvHz3a1CP3R09Q3BoR/Sl4LP153fvH777+jle4IR2T6vhhHZaq+GEdmWL4cTuul4NJ7TbWw0ntDNcDSe041wNxwTnGk4m1+sORw75DRw55Ddw5JDfwJFDvoYTu+98NRw55Ddw5JDfwJFDfgPHBOcajhzyGzhyyG/gyCG/gSOH/AaOHPI1nNid9KvhyCG/gSOH/AaOHPIbOCY413DkkN/AkUN+A0cO+Q0cOeQ3cOSQr+HEvjdgNRw55Ddw5JDfwJFDfgPHBOcajhzyGzhyyG/gyCG/gSOH/AaOHPI1nNh3O6yGI4f8Bo4c8hs4cshv4JjgXMORQ34DRw75DRw55Ddw5JDfwJFDvoTTYt+/sRqOHPIbOHLIb+DIIb+BY4JzDUcO+Q0cOeQ3cOSQ38CRQ34DRw75Gk7sO1JWw5FDfgNHDvkNHDnkN3BMcK7hyCG/gSOH/AaOHPIbOHLIb+DIIV/DiX2PzWo4cshv4Mghv4Ejh/wGjgnONRw55Ddw5JDfwJFDfgNHDvkNHDnkazix7w5bDUcO+Q0cOeQ3cOSQ38AxwbmGI4f8Bo4c8hs4cshv4Mghv4Ejh3wNJ/adb6vhyCG/gSOH/AaOHPIbOCY413DkkN/AkUN+A0cO+Q0cOeQ3cOSQr+HoTr13cOSQ38CRQ34DRw75DRwTnGs4cshv4Mghv4Ejh/wGjhzyNRzay7+KPb652CUc1qN8CA7rC7mU9oBTzys4rC/kITisL+QhOKwrixE4tFc4DcFhXVkMwWH1OXWrvz5bj/0KziE413BMcK7hsK4shuCwOuQhOKwOeQgOq0MegsPqkEfg0F7hNASH1SEPwZFDfgNHDvkNHBOcazhyyG/gyCG/gSOH/AaOHPIbOHLI13ByXeH0zXfX+tiT3v+//efT+/6KJ5VH9seTyiX740nlk/3xmPC8w5PKK3/z3eftcXBt5/k7nj/8vGt/nIjlKC/fXF9RpnLWa1Gm8uFrUaZy7WtRpvL4K1H2XFdWrUVJmx78UdImDX+UtKnEH6UJpRdKpR03lEo7biiVdtxQKu24oVTa8UKZ6/qxtSiVdtxQKu24oVTacUNpQumFUmnHDaXSjhtK+cohlLcnyq1doMx1addalDrBvf4Hnutap7UodYK7odQJ7oZS+0o3lNpX/ifKFzzyiu/w5LqSyh8P766wP3/1sx2XeHj3f0N4eBPBEB4Tnnd4eJ37EB5eNz6Eh9Zht/b86m7tNzz/zmHnus5qLUpaN+6OMtdVWWtR0rp8f5S0icAfJW168EdpQumFkjaV+KOkTTD+KJV23FAq7bihVNrxQpnr2rO1KJV23FAq7bihVNpxQ2lC6YVSaccNpdKOG0qlHTeUSjtuKJV2vFBWpR03lEo7biiVdtxQKu24oTSh9EKptOOGUmnHC2Wu6yPnoRz4E8Vcl02uRaljx+1/4Dp23FDq2HFDqSWbG0ot2dxQasn2nyh/8OS6SNEfj/zfWzy0C65eHx/eb7ftCg/t0moMjwnPOzy0Ln8MD61zH8ND68bH8LA67P12bE883X7D8weHXe3hsNvLZ2+3V5SsDtsfJe2ljRNQsjr3CShZXf4ElKyJYAJKE0ovlKxJYwJK1lQyASVrgpmAUmnHDaXSjg/KcqO9kHICSqUdN5RKO24olXbcUJpQeqFU2nFDqbTjhlJpxw2l0o4bSqUdL5S0F1JOQKm044ZSaccNpdKOG0oTSi+USjtuKJV23FAq7bihVNpxQ6m044WS9prUCSiVdtxQKu24oVTacUNpQumFUmnHDaXSjhtKpR03lEo7biiVdrxQ0l4KPAGl0o4bSqUdN5RKO24oZYaGUH6sVLujlBnyQkl7o+WXKD82Lt1R6thxQ6ljxw2lCaUXSi3Z3FBqyfafKF/wyCu+xSP/9xYP7YJr255PvdkVHtobIgfx0CaCMTy0Ln8MD61zH8NjwvMOD63D3lp5PrX13/D8u3Uj7S2KE1DSunF/lLTO3R8lr8v3Rkl7i+IElLzpwR0lb9JwR8mbStxRmlB6oVTacUOptOOGUmnHDaXSjhtKpR0vlLTXpE5AqbTjhlJpxw2l0o4bShNKL5RKO24olXbcUCrtuKFU2nFDqbTjhZL2ot8JKJV23FAq7bihVNpxQ2lC6YVSaccNpdKOG0qlHTeUSjtuKJV2vFDyXqTsj1Jpxw2l0o4bSqUdN5QmlF4olXbcUCrtuKFU2nFDqbTjhlJpxwnlxnuRsj9KE8oRlJ8r1Tbee1b9UerYGUL5uXFp473R0h0l742W/ii1ZHNDqSWbG0ot2f4T5QseE553eOT/3uKhXXDttT2e+riHrws8tEurMTy0iWAMD63LH8LDezvjGB5aNz6Gh9ZhH/sPHqtXeGhd8xgeE553eGhd8xgeWtc8hofWNY/hoXXNR3989W7WfsPzp93Q/qfd0G8/KOO9PdAdJe/tgf4oaZ27P0pel++OkjcRuKM0ofRCyZs0vkL581tD53mFkjeVuKPkTTDuKJV23FAq7XihNKUdN5RKO24olXa+RHn5K9S8l9b6ozSh9EJJm3asPVGW49OvBbbb9vzmF5Tbbyhp044/Stq044+SNu34o6RNO+4oeS/Z9UdJm3a+Q2kPM9TKeYWSNu34o6RNO/4oTSi9UCrtuKFU2nFDqbQzhPJ8/Cpb69sVSqUdN5RKO14oeS8Q9keptOOGUmnHDaXSjhtKE8oBlH17SOx7vUKptOOGUmnHDaXSjhtKpR03lEo7Xih5LxD2R0mbdkq9PZ663rYPKLf7ofJ8kPryazH2G0zavDMDJm3imQHTBNMPJm3q+Q7mvj1+MrHt7fwN5n9+eqQWj/fa4dXgaRPVavC0+Ws1eNq0thg873XJq8ErCS4Cr9S4CLwS5iLwJvBrwCu5LgKv5LoIvJLrIvBKrovAK7muAc979fVq8Equi8AruS4Cr+S6CLwJ/BrwSq6LwCu5LgIvHz8B/Oc7X3feS51Xg5erWfKq2W8m8GvAy9UsAi9Xswi89vGLwGsf/9+Cf4Epb+4Hk/c2+xkwtQsfgnnc6uNBDruEqf22I0ylO0eYJph+MJXCHGEqWTnCVFoag3k+AtBm5fYbzD98+rQn+mYvT3LYK3rlpWXola5Wod+VxZahV3Jbhl45bxl6pcJl6E3oV6FX4lyGXvl0GXql2WXolWaXoVeaXYX+UJpdhl5pdhl6pdll6JVml6E3oV+FXml2GXql2WXolWaXoVeaXYZeaXYVelOaXYZeaXYZeqXZZeiVZpehN6FfhV5pdhl6pdll6JVml6FXml2GXml2FfqiNLsMvdLsMvRKs8vQK80uQ29Cvwq9zKU/+pEysyJruQZ81RE7AfxAw1DVAbsIvI7XReC1Kl4EXoviReC1Jv5vwb/AlDd3hCm/PQSzbA+NWznbx1fC/qdXwu0V/KlF7iLwWuMuAq+EuQi8EuYi8Cbwa8ArYS4Cr4Q5AXx9NBiX87wCr4S5CLzS6CLwSq5rwDcl10XglVwXgVdyXQReyXUq+GZX4E3g14BXcl0EXsl1CPz9I48HqS/PcfHLdsWel++U8vKW/+2X7Zqy6zL0Sq/L0Cu/rkLflWCXoVeGXYZeKXYG+tJ/jOh+hV45dhl6E/pV6JVll6FXml2GXml2GXql2Qnord+e6Nvv5vLfrdq6ki/AmI6bUjLEmJSoJ4ypnj+ffkX/et4cNyXqZeiVqJehN6FfhV6Jehl6Jepl6JWol6FXop6Bvj0riGrvV+iVkleh35R8l6FXml2GXml2GXql2WXoTehXoVeanYF+e/I7t999/b9bMG9KvhBjUkqGGJMS9YQxtdvzp2q/Pcnv540S9Sr0uxL1MvRK1MvQK1EvQ69EvQy9Cf0q9ErUM9Bv5Yn+hd//Qq+UvAy9ku8y9Eqzy9Arza5CfyjNLkOvNLsMvdLsBPRvriP7dwvmQ8kXYkymMSGMiTZR1+P51Pef5n8c0/b8+8xqLxpr++N/Ao/jZj+3357jBTxtnl4NnjZNrwZPm6VXg6dN0m7gf2AabTaeAZM27c6ASZtfZ8CkTZkzYJpg+sFUYnOEqRTmCFPJagxmfz7IeSu/wfzDc5T268Nnf1ni7K/cFazWcFeu8ue+78+vtnIRaIsy2CLwymuLwCvbLQKvHLgIvAn8GvDKlxPAD6zpi7LoIvDKrUPgz709wdv23+enoty6hrtyqz/3kaO1KrcuAq/cugi8cusi8Mqti8CbwK8Br9w6AfxAfKrKrYvAK7eOga/PH16f7dMvVA7kp6rcuoa7cqs/95Gj9VRuXQReuXUReOXWReCVWxeBN4FfA165dQL4gfh0KrcuAq/cOgS+3Z5E2n77v/91fjqVW9dwV2715z5ytDbl1kXglVsXgVduXQReuXUReBP4NeCVWyeAH4hPTbl1EXjl1u/Bn7+Bf4GpMOoIUwnTD2ZXahyDedoTZjv/73+9JukKjWu4KzP6cx9x0F2ZcRF4E/g14JUZF4FXZlwEXplxEXjlywngB7YkXVl0CXi7KbeOgS/bD/j2AXw/Hr/80uvLPe+3+q+ylt2UcePPSHk4/owUnePPyDSj8DNSII8/I2X3+DNSzI8/I20E4s9Iy4PwM9q0Z4g/I+0ZhmbU7fkgvZQPMxrhrt3BGu7aB/hzH/gxi20m8GvAK7kvAq84vgi8MvYi8ArOi8ArDU8AP/Cj9F0RdxF45dZF4BVcF4FXch0D326PT98+/jXfu0+/oDehX4Ve6dUf/dn68zn2D89x/cwvQ1LSBRiSUjHAkJSgAYaktB1/SIeSOcCQlOIBhqTEDzAkbQcAhmQaUvwhaeMAMCRtHACGpI0DwJC0cQAYkjYO8Ydk2jgADEkbB4AhaeMAMCRtHACGZBpS/CFp4wAwJG0cAIakjQPAkLRxABiSNg7xh1S0cQAYkjYOAEPSxgFgSNo4AAxJOWntkMrzD4/uPze6GpJyUvwhVbm7xUN61smUel4NSe4OYEhydwBDkrsDGJJpSPGHpJ8nAQxJOWntkOpWf322HvvVkJSTAIaknycBDEk/T4o/pFMbB4AhaeMAMCRtHACGpI0DwJBMQ4o/JG0cAIakjQPAkLRxABiSNg4AQ9LGYcKQvniOnwbc3wtw68uQmjYOAEPSxgFgSNo4AAxJGweAIZmGFH9I2jgADEkbh8VDKo/P9vN2NSRtHACGpI0DwJC0cYg/pK6NA8CQtHEAGJI2DgBD0sbhbw7pBbwJ/Brw2gwsAq+0vwi8Evwi8Erli8AraS8BX24c6flFMEcSfRHMkepeBHMkpBfBxiaYIxG8COZw4i+Cgzvg56e3+//rHwRv5fEgW7ErwcGdp7/g4I7vK8HOnWtlC+7K1sIJ7uDWwgnu9tbCCe4M18IxwbmGE9xxroUT3J2uhZPJybrDyeR63eHIIV/D2eWQ38CRQ34DRw75DRw55DdwTHCu4cghv4Ejh/wGjhzyGzhyyG/gyCFfwznkkN/AkUN+A0cO+Q0cOeQ3cExwruHIIb+BI4f8Bo4c8hs4cshv4MghX8MxOeQ3cOSQ38CRQ34DRw75DRwTnGs4cshv4Mghv4Ejh/wGjhzyGzhyyNdwihzyGzhyyG/gyCG/gSOH/AaOCc41HDnkN3DkkN/AkUN+A0cO+Q0cOeRrOFUO+Q0cOeQ3cOSQ38CRQ34DxwTnGo4c8hs4rD6nPMvt7z+euoLD6nNG4ES//3YenNIecOp5BYf1tBqCw3paDcFhPa2G4LDuc4bgsO5zhuCw+pyBezRL9Hs0l8KJfn/lWjis+5whOKwOeQgOq0MegmOCcw2H1SEPwWF1yENwWB3yEBw55Ddw5JCv4US/b20tHDnkN3DkkN/AkUN+A8cE5xqOHPIbOKkc8jffXcqzlP/+Y4afT//TyP6fGkt5SDy3K5Sp/PRalKnc91qUqbz6SpQ1+l1QS1C+4Enl7f3xpHL3/nhS+Xt/PCY87/Ck8vj+eOTy3+KRc3+Lh9aN1/2Rtrdq+294/lXcrrlu9VqKMtcdYNNQ7vtTopUrlLTO3R8lrcv3R0mbCPxRmlB6oaRNGv4oaVOJP0raBPMdyoEtb64719ai5E07tTxRns0h7eS6z20tSt608w3KkWMn111xa1Hyph13lCaUXih50447St60446SN+24o+RNO1+hHEg7uW7bW4oy1918a1Eq7bihpE075+0Rq7ez3D6g3MpD4vbP//3PKGnTjj9KE8oBlM5VcTXXbYU42GlT1FrstIlrLXbadLYWO22SW4o9132TONhpE+Ja7EqTS7AreS7BbsK+ArtS6hLsSqlLsCulLsGulLoEu1LqCuy57nzFwa6UugS7UuoS7EqpS7CbsK/ArpS6BLtS6hLsSqlLsCulLsGulLoCe657l3GwK6Uuwa6UugS7UuoS7CbsK7ArpS7BrpS6BLtS6hLsSqlLsCulrsB+KqUuwa6UugS7UuoS7EqpS7CbsK/ArpS6BLtS6hLsSqlLsCulLsGulLoCe1NKXYJdKXUJdqXUJdjl272xF3tcblXsErt8+xLscjLu2Et7YK/nBfYuJ7MEu5zMEuxyMkuwa9++BLsJ+wrs8u3e2Ecuceny7Uuwa9++BLv27UuwK6UuwH7elFKXYFdKXYJdKXUJdqXUJdhN2FdgV0pdgl0pdQl2pdQl2JVSl2BXSl2BfVNKXYJdKXUJdqXUJdiVUoewf/HN+37cfnj8fHqr3z3zy5BMQ4o/JCVggCEpLwMMSen6bw7pBbzy9SLwSthrwO/K2IvAK2UvAq+cvQi8kvYi8Cbwa8ArES8Cr5S7CLySqz/49gR/bPU38H94Dmv2eI5yvH76dcGwK+dCjEmpeO2YnCsIzkNpO9lAleKTDVTbgWQD1dYh2UBNA801UG1Jkg1U25dkA9VWJ9lAtf9JNlBtinIN1LQpSjZQbYqSDVSbomQD1aYo2UBNA801UG2Kkg1Um6JkA9WmKNlAtSlKNlBtinINtGhTlGyg2hQlG6g2RckGqk1RsoGaBpproNoUJRuoNkXJBqpNUa6BVuVQnIEO3CB5VuXQZAM1DRRnoJ9vRjurXG6ygcrlJhuoXG6ygernockGqp+H5hroqRyKM9CRhvZTOTTZQPXz0GQD1c9Dkw3UNNBcA9WmKNlAtSlKNlBtipINVJuiZAPVpijXQJs2RckGqk1RsoFqU5RsoNoULR7oN89sT9JbuV2VlDfTSLONVNuidCPVvijdSLUxSjdS7YzSjVRbo2wj7dobgY705dP/a6TaHKUbqXZH6Uaq7RHQSMtWniN9ncvvIzWNNNtItT1KN1Jtj9KNVNujdCPV9ijdSLU9SjbSdtP2CHSkR7kaqbZH6Uaq7VG6kWp7FHWkL0MyDSn+kLThcR/SsbXnkP75trdD2qzZzwuvXr3wtLWBGJM2MWvH5NyE2W7awyQbqLYwuQa6aQeTbKDawCQbqPYvyQaq7UuygZoGmmug2uokG6j2P8kGqk1RsoFqU5RsoNoU5Rrork1RsoFqU5RsoNoUJRuoNkXJBmoaaK6BalOUbKDaFCUbqDZFyQaqTVGygWpTlGughzZFyQaqTVGygWpTlGyg2hQlG6hpoLkGqk1RsoEqh+IMtNj+67PFLgeqHJproCaXCzTQzxeaN5PLTTZQ00BzDVQuN9lA9fPQZAPVz0OTDVQ5FGegAzcDNlMOzTXQop+HJhuofh6abKDaFCUbqDZFyQZqGmiugWpTlGyg2hQlG6g2RckGqk1RsoFqU5RroFWbomQD1aZo8UC/eeaRO69b1a4o3Ui1LUo3UtNIs41UG6N0I9XOKN1ItTVKN1LtjUBH+vLp/zVSbY6yjfTU7ijdSLU9Ahrp0J3Xp7ZH6Uaq7VG6kZpGmm2k2h6lG6m2R+lGqu1RupFqewQ60qNcjVTbo2wjbdoepRuptkdRR/oyJO2DAIakDY//kEp9DqnXD0Pq++PXMvu5vXy2vg7JNKT4Q9IWZu2QvFswm3YwyQaqDUyygWr/kmyg2r7kGmjX7iXZQLV5STZQbWmSDVQbnWQDNQ0010C1KUo2UG2Kkg1Um6JkA9WmKNlAtSlKNdB+06Yo2UC1KUo2UG2Kkg1Um6JkAzUNNNdAtSlKNlBtipINVJuiZAPVpijZQLUpyjXQTZuiZAPVpijZQLUpSjZQbYqSDVQ5FGegxfZfny12OVDl0FwD3eVygQb6+TLzvsvlJhuoXG6ygcrlJhuoaaC5BqqfhyYbqHIozkAHbgXsu3JosoHq56HJBqqfh+Ya6KFNUbKBalOUbKDaFCUbqDZFyQZqGmiugWpTlGyg2hQlG6g2RckGqk3R4oF+8c39+SsovZSX762vA9WmKNdATZuiZAPVpijZQLUpSjZQbYqSDdQ00FwD1aYIaKDl8dl+3q4Gqk1RsoFqU5RsoNoUJRuoNkW5Blq0KUo2UG2Kkg1Um6KoA30ZkrY/AEMyDcl9SP15T7Vt24ch7Xs9fj69//bplzFpTwMxJm1fVo/pZ0rl6pWnjQrAkLQlARiSNh/xh1S1zQAYkjYUAEPS1mHxkEp5fPjcroakrQPAkExDij8k7RwAhqSNA8CQtHEAGJI2DgBD0sYh/pBObRwAhqSNA8CQtHEAGJI2DgBDMg3pvxrSC0rtBdxQKr27oVTGdkOpJOyGUnnVC2VTqnRDqeznhlIJzQ2lcpQbShNKL5RKO24olXb+E+ULHt4Ec+5PPO388F/a/Uns+SCHXf23xpthJsDkTTH+MDtvjpkAkzfJTIDJm2UmwORNMxNgmmD6weRNNBNg8maaCTCVgBxhKgE5wlQC8oJZbzclIEeYSkCOMJWAHGEqATnCNMH0g6kE5AhTCcgRphKQI0wlIEeYSkB+MDclIEeYSkCOMJWAHGEqATnCNMH0g6kE5AhTCcgRphKQI0wlIEeYSkB+MHclIEeYSkCOMJWAHGEqATnCNMH0g6kE5AhTCcgRphKQI0wlIEeYSkB+MA8lIEeYSkCOMJWAHGEqATnCNMH0g6kE5AhTCcgRphKQI0wlIEeYSkB+ME0JyBGmEpAjTCUgR5hKQI4wTTD9YCoBOcJUAnKEqQTkCFMJyBGmEpAfzKIE5AhTCcgRphKQI0wlIEeYJph+MJWAHGEqATnCVAJyhKkE5AhTCcgPZlUCcoSpBOQIUwnIEaYSkCNME0w/mEpAjjCVgBxhKgE5wlQCcoSpBOQH81QCcoSpBOQIUwnIEaYSkCNME0w/mEpAjjCVgBxhKgE5wlQCcoSpBOQHsykBOcJUAnKEqQTkCFMJyBGmCaYfTCUgR5hKQI4wlYAcYSoBOcJUAvKD2ZWAHGEqATnCVAJyhKkE5AjTBNMPphKQI0wlIEeYSkCOMJWAHGEqAbnB3G5KQI4wlYAcYSoBOcJUAnKEaYLpB1MJyBGmEpAjTCUgR5hKQI4wlYD8YG5KQI4wlYAcYSoBOcJUAnKEaYLpB1MJyBGmEpAjTCUgR5hKQI4wlYD8YO5KQI4wlYAcYSoBOcJUAnKEaYLpB1MJyBGmEpAjTCUgR5hKQI4wlYD8YB5KQI4wlYAcYSoBOcJUAnKEaYLpB1MJyBGmEpAjTCUgR5hKQI4wlYD8YJoSkCNMJSBHmBwJ6EUwR0p5EWxsgjnc/otgDkf+IpjDNb8I5nC2L4I53OeP4MLhEF8Ec7i4F8FsTovkfvgXwQYr+EUErnt6EYHriF5E4LqcFxG4zuVFBK4b+REBfCf1iwhc1/AiAtcJvIjAPd1fRGQ4sYHv+n0RkeHEBr7b9kVEhhMb+C7XHxHAd6i+iMhwYgPfGfoiIsOJDXxH5ouIDCc28J2QLyJin9j3n3X/iCj1NxH/9ie+wW9MnCI5thuYITn47YNTJMd2GlMkx/YlUyTHdjFTJBuf5NgOaYrk2H5qimQ+9xX8trYpkvncV/Cbz6ZI5nNfwW8RmyKZz30Fv5FrimQ+9xX8dqspkvncV/CboqZIpnNfe/Bbl6ZIpnNfe/AbjKZIpnNf+834JNO5rz34zTpTJNO5rz34LTVTJPO5r+A3vkyRzOe+gt+eMkUyn/sKfhPJFMl87iv4rR5TJPO5r+A3ZEyRzOe+gt82MUUyn/sKfnPDFMl87iv4LQhTJPO5r+A3CkyRzOe+grfzT5HM576CN91PkcznvoK3xk+RzOe+gjewT5HM576Ct5lPkcznvoI3g0+RzOe+grdsT5HM576CN1ZPkcznvoK3Vk+RzOe+gjdXT5HM576Ct1dPkcznvoI3WE+RzOe+grdYT5HM576CN1lPkcznvoK3ZE+RzOe+gjdwT5HM576Ct3tPkcznvoI3h0+RzOe+greST5HM576CN55PkcznvoK3qU+RzOe+gje1T5HM576Ct8BPkcznvoI3zE+RzOe+grfXT5HM5774uu53vq77na/rfufrut/5uu53vq77na/rfufrut/5uu53vq77na/rfufrut/5uu53vq77na/rfufrut/5uu53vq77na/rfufrut/5uu53vq77g6/r/uDruj/4uu4Pvq7742Z8kunc18HXdX/wdd0ffF33B1/X/cHXdX/wdd0ffF33B1/X/cHXdX/wdd0ffF33B1/X/cHXdX/wdd0ffF33R6Cu+5eHiuOPXh4qjoN5eSiL+FBxXMDLQ8U5p18eKs5J+vJQcc66l4eKcxr9PFSgdu6Xh4r4Rg/UcP3yUBHf6IFaol8eKuIbPVDT8stDRXyjB2orfnmoiG/0QI2/Lw8V8Y0eqDX35aEivtEDNc++PFTEN3qg9taXh4r4Rg/UgPryUBHf6IFaRF8eKuIbPVAT58tDRXyjB2qzfHmouW/0l39R/Vv/ovNv/Yva3/oX9b/0L5rc3vfyL9r+1r9o/1v/ouNv/Yvsb/2L/tabof6tN0P9W2+G+rfeDPVvvRnOv/VmOP/Wm+H8W2+G82+9Gc6/9WY4/9ab4fxbb4bzb70Zzr/1Zjj/1puh/a03Q/tbb4b2t94M7W+9GdrfejO0v/VmaH/rzdD+1puh/a03Q/tbb4b+t94M/W+9GfrfejP0v/Vm6H/rzdD/1puh/603Q/9bb4b+t94M/S+9Gczjr0X3057/otZ/+xf9y99qM4+/6JzxWHvMxzpiPpbFfKwS87FqzMc6Yz5Wi/lYPeRjbTHf8lvMt/wW8y2/xXzLbzHf8lvMt/wW8y2/xXzLbzHf8lvMt/we8y2/x3zL7zHf8nvMt/we8y2/x3zL7zHf8nvMt/we8y2/x3zLHzHf8kfMt/wR8y1/xHzLHzHf8kfMt/wR8y1/xHzLHzHf8kfMt7zFfMtbzLe8xXzLW8y3vMV8y1vMt7zFfMtbzLe8xXzLW8y3fIn5li8x3/Il5lu+xHzLl5hv+RLzLV9ivuVLzLd8ifmWLzHf8jXmW77GfMvXmG/5GvMtX2O+5WvMt3yN+ZavMd/yNeZbvsZ8y58x3/JnzLf8GfMtf8Z8y58x3/JnzLf8GfMtf8Z8y58x3/JnzLd8i/mWbzHf8i3mW77FfMu3mG/5FvMt32K+5VvMt3yL+ZZvMd/yPeZbvsd8y/eYb/ke8y3fY77le8y3fI/5lu8x3/I95lu+h3zLl5h/+1pi/u1rifm3ryXm376WW8i3fIn5t68l5t++lph/+1pi/u1rifm3ryXm376WmH/7WmL+7WuJ+bevJebfvpaYf/taYv7ta4n5t68l5t++lph/+1pi/u1rifm3ryXm376WmH/7WmL+7WuJ+bevJebfvpaYf/taYv7ta4n5t68l5t++lph/+1pi/u1rifm3ryXm376WmH/7WmL+7WuJ+bevJebfvpaYf/taYv7ta4n5t68l5t++lph/+1onVy7/56e/uyH89vz0dv9/L5L/eEP4V9993urjq89y+/l0sf/ym/ejPL55P/rLreb1j8/c+vOb9w/ffP9v+9dn7/85XQx0crW1BvrXBxrnajUN1GWgca6l00BdBhrnSj8N1GWgpoHmGmicy4E1UJeBxrlYWQN1GWicS6k1UJeBxrnQWwN1Gag2RakGet60KQIaaLs9BtrL1UC1KUo2UG2Kkg1Um6JkAzUNFGeg589A69VAtSlKNlBtipINVJuiZAPVpijZQLUpyjXQTZsioIGW9hjoP9/154FqU5RsoNoUJRuoNkXJBmoaaK6BalOUbKDaFCUbqDZFyQaqTVGygWpTlGuguzZFyQaqTVGygWpTlGyg2hQlG6hpoLkGqk1RsoFqU5RsoNoUJRuoNkXJBqpNUa6BHtoUJRuoNkXJBqpNUbKBalOUbKCmgeYaqDZFyQaqTVGygWpTlGyg2hQlG6g2RbkGatoUJRuoNkXJBqpNUbKBalOUbKCmgeYaqDZFyQaqTVGygWpTlGyg2hTlGmhRDvUf6NaeAy3mOdCBRuuiHJpsoMqhyQZqGmiugSqHJhuocmiygSqHJhuocmiygeo3FnINtOo3FpINVJuiZAPVpghooAMX8VRtipIN1DTQXAPVpijZQLUpAhrowDUfVZuiZAPVpijZQLUpyjXQU5uiZAPVpijZQLUpAhrowG/9ndoUJRuoaaC5BqpNUbKBalOUbKDaFCUbqDZFyQaqTVGugTZtipINVJuiZAPVpijZQLUpSjZQ00BzDVSbomQD1aYo2UC1KUo2UG2Kkg1Um6JcA+3aFCUbqDZFyQaqTVGygWpTlGygpoHmGqg2RckGqk1RsoFqU5RsoNoUJRuoNkWpBtpu2hQlG6g2RckGqk1RsoFqU5RsoKaB5hqoNkXJBqpNUbKBalOUbKDaFCUbqDZFuQa6aVOUbKDKoe4D3Z+lmffZul5m97nRum2mgeYaqHJosoEqhyYbqHJosoEqhyYbqHJoroHuyqHJBqrfWEg2UP3GQrKBalOUbKCmgeIM9PNFPG3XpijZQLUpSjZQbYqSDVSbIqCBfr7mo+3aFOUa6KFNUbKBalOUbKDaFCUbqDZFyQZqGijOQAd+6+/QpijZQLUpSjZQbYqSDVSbomQD1aYo10BNm6JkA9WmKNlAtSlKNlBtipIN1DTQXAPVpijZQLUpSjZQbYqSDVSbomQD1aYo10CLNkXJBqpNUbKBalOUbKDaFCUbqGmguQaqTVGygWpTlGyg2hQlG6g2RckGqk1RroFWbYqSDVSbomQD1aYo2UC1KUo2UNNAcw1Um6JkA9WmKNlAtSlKNlBtipINVJuiXAM9tSlKNlBtipINVJuiZANVDh0aqHPv9Km0uAS7Mt0S7EpeS7ArH63A3pRilmBX1liCXYlgCXb9hHcJdhP2FdiVUpdgV0p1xz5woUZTSl2CXSl1CXal1BXYu1KqO/aBGvmulLoEu1LqEuxKqUuwm7CvwK6UugS7Uqo79oHfHOhKqUuwK6Uuwa6UugB7vymlLsGulLoEu1LqEuxKqUuwm7CvwK6UugS7UuoS7EqpS7ArpS7BrpS6AvumlLoEu1LqEuxKqUuwK6UuwW7CvgK7UuoS7EqpS7ArpS7BrpS6BLtS6grsu1LqEuxKqUuwK6Uuwa6UugS7CfsK7EqpS7ArpS7BrpS6BLtS6hLsSqkrsB9KqUuwK6Uuwa6UugS7UuoS7CbsK7Cn8u2+HUf9SOWuveGk8sDOcCyVU/WGk8pPesNJ5fq84aTyZt5wTHCu4aTaxnvDSbUz94Yjh/wGDq1D/lyj143WIQ/AKbQOeQQOrUMegUPrkD8XXvVC65BH4JjgXMOhdcgjcGgd8ggcWoc8AofWIQ/89KHQOuQBOJXWIY/AoXXII3BoHfIIHFqHPALHBOcaDq1DHoFD65BH4NA65BE4cshv4MghX8M55ZDfwJFDfgNHDvkNHDnkN3BMcK7hyCG/gSOH/AaOHPIbOHLIb+DIIV/DaXLIb+DIIb+BI4f8Bo4c8hs4JjjXcOSQ38CRQ34DRw75DRw55Ddw5JCv4eS669wbjhzyGzhyyG/gyCG/gWOCcw1HDvkNHDnkN3CC+5xtf8K5le0TnC++e6/H86lre/lN5H3/05P05x/Z7Lf9p3Bkq+2/HdLHvxg8b9Fv7dWQ/hlScN+nIf0zpOD+U0P6Z0jBfbCG9M+QTEOKP6TguUBD+mdIwfOJhvTPkIL/JEFD+mdIwX+ioSH9MyRtHOIPKfoNzPmH9LHU5T4kbRwAhqSNA8CQtHEAGJJpSGuH9LG65T4kbRwAhqSNA8CQtHEAGJI2DgBD0sYh/pCi36adf0gff1voPiRtHACGpI0DwJC0cQAYkmlI8YekjQPAkLRxABiSNg4AQ9LGAWBI2jjEH1L0m9E1pH+GpI0DwJC0cQAYkjYOAEMyDSn+kLRxABiSNg4AQ9LGAWBI2jgADEkbh/hDMm0cAIakjQPAkLRxABiSNg4AQzINKf6QtHEAGJI2DgBD0sYBYEjaOAAMSRuH+EMq2jgADEkbB4AhaeMAMCRtHACGZBpS/CFp4wAwJG0cAIakjQPAkLRxiD+kSpuTSn1ir7ft05CO88F9s/IzpN3+pLHcHh8uW3t5jvoKnjb7rAZPm2dWgzeBXwOeNnesBk+bJWaC/6laLvsVeNp8sBo8redfDZ72J4eLwZ+0Pw2cCf54JtdyXIFXcl0EXsl1EXgl10XgTeDXgFdyXQReyXUC+P25MjjKFXgl10XglVwXgVdyXQO+KbkuAq/kugi8kusi8Equi8CbwK8Br+S6CLyS6yLwSq6LwCu5LgKv5LoGfFdyXQReyXUReCXXReCVXBeBN4FfA17JdRF4JddF4JVcF4FXcl0EXsl1CfjtpuS6CLyS6yLwSq6LwCu5LgJvAr8GvJLrIvBKrovAK7kuAq/kugi8kusa8JuS6yLwSq6LwCu5LgKv5LoIvAn8GvDy8UPg980eD7K38xP4zw1N2yYfvwi8fPwa8Lt8/CLw8vGLwMvHTwD/uURi2+XjF4E3gV8DXj+BWgReP4FaBF7JdRF4JdcJ4Ad2NbuS6xrwh5LrIvBKrovAK7kuAq/kugi8Cfwa8Equi8AruS4Cr+S6CLyS6yLwSq5rwJuS6yLwSq6LwCu5LgKv5LoIvAn8GvBKrovAK7kuAq/kugi8kusi8Equa8AXJddF4JVcF4FXcl0EXsl1EXgT+DXglVwXgVdyXQReyXUReCXXReCVXNeAr0qui8AruS4Cr+S6CLyS6yLwJvBrwCu5LgKv5LoIPK2P31p5PrX1D+BH+jhOWmfuj5LWa/ujpHXP/ihp/bA/ShPKEZT2eI7yovB/oaT1rP4oaV2oP0ran4j4o6T9Gcd3KAfKZU6lHS+UTWnHDaXSjhtKpR03lEo7bihNKEdQDuwrm9KOG0qlHTeUSjtuKJV23FAq7Xih7Eo7biiVdtxQKu24oVTacUNpQumFUmnHDaXSjhtKpR03lEo7biiVdpxQ7jelHTeUSjtuKJV23FAq7bihNKH0Qqm044ZSaccNpdKOG0qlHTeUSjteKDelHTeUSjtuKJV23FAq7bihNKH0Qqm044ZSaccNpdKOG0qlHTeUSjteKHelHTeUSjtuKJV23FDS+srbsT2e+tbtE8rPLQX7Tusr/VHS+kp/lLS+0h8lra90R3nQ+srvUH4ufNgPWl/pj5LWV/qjpN2i+6M0oRxB+flP6/dDaccNpdKOG0qlHTeUSjtuKJV2vFCa0s4QyoF9pSntuKFU2nFDqbTjhtKE0gul0o4bSqUdN5RKO24olXbcUCrteKEsSjtuKJV23FAq7bihVNpxQ2lC6YVSaccNpdKOG0qlHTeUSjtuKJV2vFDy3rDuj1Jpxw2l0o4bSqUdN5QmlF4olXbcUCrtuKFU2nFDqbTjhlJpxwsl7631/iiVdtxQKu24oVTacUNpQumFUmnHDaXSjhtKpR03lEo7Xihp7wffWnt+dbf2CeVASwHt/eATULL6ygkoTSi9ULL6ygkoWX3llygHCh9o7wefgJLVV05AybpF90dJez/4lygH/rSe9n7wCSiVdtxQKu24oTSh9EKptOOGUmlnCOXAvpL2fvAJKJV23FAq7TihPGjvB5+AUmnHDaXSjhtKpR03lCaUXiiVdtxQKu24oVTacUOptOOGUmnHCyXt/eATUCrtuKFU2nFDqbTjhtKE0gul0o4bSqUdN5RKO24olXbcUCrteKGkvR98AkqlHTeUSjtuKJV23FCaUHqhVNpxQ6m044ZSaccNpdKOG0qlHS+UtLfWT0CptOOGUmnHDaXSjhtKE0ovlLS+8rzVx1efZ/+E8nNLwUF7P/gElLS+0h0l7f3gE1DS+kp/lLS+8juUn/9c9KC9H3wCShNKL5S0W3R/lLRbdH+USjtuKJV2hlAOZHDa+8H9UdLeDz4BpdKOG0qlHTeUSjtuKE0ovVAq7bihVNpxQ6m044ZSaccNpdKOF0ra+8EnoFTacUOptOOGUmnHDaUJpRdKpR03lEo7biiVdtxQKu24oVTa8UJJez/4BJRKO24olXbcUCrtuKE0ofRCqbTjhlJpxw2l0o4bSqUdN5RKO14om9KOG0qlHTeUSjtuKJV23FCaUHqhVNpxQ6m044Yyla9s/fnd+4fvfrnx235/jh84uW789oaTyvt5w0nl5rzhpPJn3nBMcK7hpPJQ3nBSuSJvOKm2ut5wUu1pveHIIV/CsVy3RH8Dp90ecHq5gkPrkEfg0DrkETi0DnkEjrHCOX/g1Cs4tA55BA6tQx6BQ+uQR+DQOuQROLQOeQBOrpuFv4FTnlVX9byCQ+uQR+DQOuQROLQOeQSOCc41HFqHPAKH1iGPwKF1yCNwaB3yCBxahzwAJ9dttN5w5JDfwJFDfgNHDvkNHBOcazhyyG/gyCG/gSOH/AaOHPIbOHLI13By3WDqDUcO+Q0cOeQ3cOSQ38AxwbmGI4f8Bo4c8hs4cshv4Mghv4Ejh3wNJ9ddrN5w5JDfwJFDfgNHDvkNHBOcazhyyG/gyCG/gSOH/AaOHPI1nNj3Kt5ae8K59Zfyjj/D6efj0/28+uu72LcfzhAc2o/MEGxsgkP7hhmCQ3uBLwVvt9vt57n7h2/v7fFO7/3ynR7aDazHE9oPrMcTeme2HE/sW+7W48nkJyfgyeQ+J+DJ5FW/w/NNsLt+6heUJpReKDP568UoeZ27O0pel++OkjcRuKPkTQ/eKGPfMIeFkjeVuKPkTTDuKJV23FCaUHqhVNpxQ6m044ZSaccNpdKOG0qlHS+UsW+Yw0KptOOGUmnHDaXSjhtKE0ovlEo7biiVdtxQKu24oVTacUOptOOFMvYtiVgolXbcUCrtuKFU2nFDaULphVJpxw2lzNDQ3yB+vhCvxL4QDwuljh2nv4wtNx07bih17Lih1JLNDaWWbG4otWRzQylfOYKybvXXZ+uxX6CMfY0cFkot2dxQasnmhlJpxw2lCaUXSqUdN5RKO24olXbcUCrtuKFU2vFCGftKQCyUSjtuKInTzjdPcuzPbz5evnk76ytM4rzjD9ME0w8mcebxh0mcevxhEucef5jEyccfJnH2+QpmeT7IUbcLmLGve0SDSZx//GEqATnCVAJyhGmC6QdTCcgRphLQ9zDbFUwlIEeYSkCOMJWAxmD2nzjZr+Jk7Os80WAqATnCVAJyhKkE5AjTBNMPphKQI0wloDd/fVtiX3i6Ho9Syls8yh3v8BQlibd4lA3e4pHbf4sn1XW8n+90K7mu4x0RnOo63hHBmbzqkOBM7nNIcCY/OSQ4k0McEZzqWtshwZlc3JDgTL5sSDCb00p15euQYDanler61CHBbE4r1VWkQ4LZnFaqaz2HBLM5rVRXZA4JZnNaqa6bHBLM5rRSXd04JJjNaaW6BnFIMJvTSnWl4JBgNqeV6nq+IcFsTivVVXdDgtmcVqpr44YEszmtVFewDQlmc1qprjMbEszmtFJdDTYkmM1ppbpma0gwm9PqbE6rszmtzua0Ut3CNiC4prorbUgwmdOqNzKnVVPdWTck2NgEkzmtmuqWtiHBZE6rprrxbEgwm9NKdXvYkGA2p5XqJq4hwWxOK9WtVkOC2ZxWqhuihgSzOa1Uty0NCWZzWqluLhoSzOa0Ut0CNCSYzWmluk1nSDCb00p1K82QYDanlep2lyHBbE4r1S0pQ4LZnFaq20aGBLM5rVS3dgwJZnNaqW6/GBLM5rRS3SIxJJjNaaW6jWFIMJvTSnWrwZBgNqeV6naAIcFsTitVy/6QYDanlaoJf0gwm9NK1VY/JJjNaaVqlB8SzOa02DriK1tHfGXriK9sHfGVrSO+snXEV7aO+MrWEV/ZOuIrW0d8ZeuIr6kaxL+8jqr155PsHz5b7PEcxY4rlMS3CnqjJL6B0Bllqj71xSiJbzb0Rkl8C6I3SuIbz71RmlB6oSS+7dwbJfFd594olXbcUCrtDKFsjy8uvVyhVNrxQpnqToPFKJV23FAq7QyhPH9Q1iuUSjtuKE0ovVAq7bihVNpxQ6m044ZSaWcIZXn8xLHUq584prr9Yy3KVPeKLEaptOOGUmnHDaXSjhtKE0ovlEo7biiVdtxQKu24oVTacUOptOOE8kx1t89ilEo7biiVdtxQKu24oTSh9EKptOOGUmnHDaXSjhtKpR03lEo7XihT3a+1GKXSjhtKpR03lEo7bihNKL1QKu24oVTacUOptOOGUmnHDaXSjhfKVHfcLUaptOOGUmnHDaXSjhtKE0ovlEo7biiVdtxQxvaV5/HDpr30A1yU0J0P8P286BI4g9+7N0FwbI82QXBsJzVBcGy/M0GwJRL83ft/oGfzDH5L33I8sd3Dcjyx95/L8cTeaS7Hk8lP+uMJfhfhcjyZvOq8YHf91C8oM7ngxSgz+evFKE0ovVDyunx3lLyJwB0lb3pwR8mbNNxR8qYSb5TB7/iEQqm044ZSaccNpdKOG0oTSi+USjtuKJV23FAq7bihVNpxQ6m044Uy+D27UCiVdtxQKu24oVTacUNpQumFUmnHDaXSjhtKpR03lEo7biiVdrxQBr+/Gwql0o4bSqUdN5RKO24oTSi9UCrtuKFU2nFDqbTjhTL49b5RUA5chX4Gv94XCqWOnSGUAy0CwS9ShUKpY8cNpZZsbii1ZPNCGfwiVSiU8pUjKOtWf322HvsVSvlKN5RasrmhNKH0Qqm044ZSaccNpdKOG0qlHTeUSjtOKFvwi1ShUCrtuKFU2nFDqbTjhtJ4UX7xJHbYYzVkR/nZDW1nfYVJnHf8YRInHn+YxJnHHyZx6vGHSZx73GEGv1QVDCZx9vkKZrs9YbZ+BZM4/fjDJM4//jBNMP1gKgE5wlQCcoSpBOQIUwnoa5i9XsFUAvKDGfyiVTCYSkBDMG17xknbr+Jk8MtWwWAqATnCNMH0g6kE5AhTCcgRphKQI0wloDGY5XjCrPsVTCUgP5ipLhteDlMJyBGmEpAjTCUgR5gmmH4wlYDeFJM04qugh/AopbzFo9zxFo+SxDs8xFdBD+GR23+LJ5N/H7gavKW6hHlIsLEJzuRVhwRncp9DgjP5ySHBmRzikOBMnm9EcKrrcIcEZ/JlQ4LZnFaqC2CHBBubYDanlerK0yHBbE4r1fWhQ4LZnFaqqziHBLM5rVTXWg4JZnNaqa6IHBLM5rRSXbc4JJjNaaW6unBIMJvTSnUN4JBgNqeV6kq9IcFsTivV9XRDgtmcVqqr3oYEszmtk81pnWxOq7E5rVQ3AQ4JZnNajc1pNWMTzOa0Ut1uOCSYzWmluilwSDCb00p1696QYDanleoGuyHBbE4r1W1wQ4LZnFaqm9WGBLM5rVS3lA0JJnNaPdWNX0OCyZxWT3V71pBgMqfVb8YmmMxp9VQ3Og0JJnNaPdXNSEOC2ZxWqhuGhgSzOa1UN/UMCWZzWqluvBkSzOa0Ut0cMySYzWmluoFlSDCb00p1k8mQYDanlepGkCHBbE4r1c0aQ4LZnFaqGyqGBLM5rVQ3PQwJZnNaqW5MGBLM5rRS3TwwJJjNaaVq8B8SzOa0UvXmDwlmc1qpuu2HBLM5rVT980OC2ZwWW0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XE91QN4tvt9vPxvX/49rP155PsHz5bbP/12WLHBcpU3eSLUWbyDotRZnIli1Fm8juLUZpQeqHM5NEWo8zk/hajzLTBW4wy025wMUqlHR+U7ZbqfoCJKNvji0svVyiVdtxQKu24oVTacUNpQjmC8vxBWa9QKu24oVTacUOptOOGUmnHDaXSjhfKVHd0TERZHj9xLPW8Qqm044ZSaccNpdKOG0oTSi+USjtuKJV23FAq7bihVNpxQ6m044Uy1T05i1Eq7bihVNpxQ6m044bShNILpdKOG0qlHTeUSjtuKJV23FAq7XihTHVX1WKUSjtuKJV23FAq7bihNKH0Qqm044ZSaccNpdKOG0qlHTeUSjteKFPdF7cYpdKOG0qlHTeUSjtuKE0ovVAq7bihVNpxQ6m044ZSaccLZfB790orzwep/RPKfj66BPp51SUQ/N69CYJje7QJgo1NcGy/M0FwbFfyneDv3v+fezbveGI7jeV4YruH5Xhi7z9X4wl+X+ByPJn85AQ8mdznBDyZvOq8YHf91C8oTSi9UGby14tR8jp3d5S8Lt8dJW8icEfJmx68UQa/LxMKJW8qcUfJm2DcUSrtuKE0ofRCqbTjhlJpxw2l0o4bSqUdN5RKO14og99ZC4VSaccNpdKOG0qlHTeUJpReKJV23FAq7bihVNpxQ6m044ZSaccLZfD7u6FQKu24oVTacUOptOOG0oTSC6XSjhtKpR03lEo7biiVdtxQKu04odyCX+8bBeXAVejbzYTSC6WOnSGUn1sEtuAXqUKh1LHjhTL4RapQKLVkc0OpJZsbSvnKEZR1q78+W4/9CqUJpRdKLdncUGrJ5oZSaccNpdKOG0qlHS+UwS9ShUKptOOGUmnHDaXSjhtKE0ovlEo7biiJ084XT9Jsf6yGmh0/u6HtrK8wifOOP0zixOMPkzjzuMMMfqEqGEzi3OMPkzj5+MMkzj5fway3J8zar2CaYPrBJM4//jCVgBxhKgE5wlQCcoSpBOQHM/glqyFh3gFewFQCcoSpBOQIUwloDGZ/xslyu4qTwS9bBYOpBOQIUwnIEaYSkCNMJSBHmEpAfjCLEtAQzGJPn1nsKk6muhB4OUwlIEeYSkCOME0w/WAqATnCVAJyhKkE9DXMcrWCI744egJMJSA/mMSXUo/0DxFfSj2ERynlLR7ljrd4THje4VE2eItHbv8tnkz+vbfHMrf3q0qXVFcxDwnO5INHBKe61nhIcCb3OSQ4k58cEpzJIQ4JNjbBmVzckOBMvmxIMJvTSnUN7JBgNqeV6krVIcFsTivV9aRDgtmcVqqrPocEszmtVNdmDglmc1qprqAcEszmtFJd5zgkmM1ppboacUgwm9NKdc3gkGA2p5Xqyr4hwWxOK9X1d0OCyZzWfiNzWvuNzGntNzKntae6HXFIsLEJJnNa+43Mae2p7pIcEkzmtPZU9zKOCE51e+KQYDanleomwiHBbE4r1a1+Q4LZnFaqG/KGBLM5rVS3zQ0JZnNaqW5uGxLM5rRS3YI2JJjNaaW6UWxIMJvTSnU715BgNqeV6parIcFsTivVbVFDgtmcVqpbl4YEszmtVLcXDQlmc1qpbgEaEszmtFLdpjMkmM1ppbqVZkgwm9NKdbvLkGA2p5XqlpQhwWxOK9VtI0OC2ZxWqls7hgSzOa1Ut18MCWZzWqlukRgSzOa0Ut3GMCSYzWmlutVgSDCb00p1O8CQYDanlaplf0gwm9NK1YQ/JJjNaaVqqx8SzOa0UjXKDwlmc1psHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xO9sHfE7W0f8ztYRv7N1xB9sHfEHW0f8wdYRf7B1xB83YxNM5rQOto74g60j/mDriD/YOuIPto74g60j/kjVIL7dbref5+4fvv1s/fkk+4fPFtt/fbbYcYUy0wm/GGUm77AYZSZXshhlJr+zGGUmJ7UWZap2+cUoM7m/xSgzbfAWo8y0G1yM0oTSC6XSzhDK9vji0ssVSqUdN5RKO24olXbcUCrtDKE8f1DWC5SpbnhYjFJpxw2l0o4bSqUdN5QmlF4olXaGUJbHTxxLvfqJY6rbPxajVNpxQ6m044ZSaccLZapbVhajVNpxQ6m044ZSaccNpQmlF0qlHTeUSjtuKJV23FAq7bihVNrxQpnqpqPFKJV23FAq7bihVNpxQ2lC6YVSaccNpdKOG0qlHTeUSjtuKJV2vFCmum1sMUqlHTeUSjtuKJV23FCaUHqhVNpxQ6m044ZSaccNpdKOG0qlHS+UqW78W4xSaccNpdKOG0qlHTeUsX3lsR3PB7H9E8p+ProE+nnVJRD83r0JgmN7tAmCYzspf8HB792bIDi2K/lO8Hfv/5GezeC39C3HE9s9LMdjwvMOT+yd5nI8mfzkBDyZ3OcEPJm86rxgd/3ULygzueC1KIPftgiFkte5u6PkdfnuKHkTgTtKE0ovlLxJwx0lbypxR8mbYNxRKu24oVTacUJpwW88hUKptOOGUmnHDaXSjhtKE0ovlEo7biiVdtxQKu24oVTacUOptOOFMvitw1AolXbcUCrtuKFU2nFDaULphVJpxw2l0o4bSqUdN5RKO24olXa8UAa/vxsKpQnlyN8gfr7e14Jf7wuFUseO01/GWvCLVJFQBr9IFQqllmxuKLVkc0OpJZsbShPKAZR1q78+W4/9CqV8pRtKLdncUGrJ5oZSaccNpdKOF8rgF6lCoVTacUOptOOGUmnHDaUJpRdKpR03lEo7biiJ0843T7Kf2+Ob9390PT59HK8wifOOP0zixOMOM/h1qmAwiVOPP0zi3OMPkzj5+MM0wRyCae0H5vYbzP/8dD8e/rXXl6e41T89xfPHcWe3n8/urzMiDlUwMyJOazAzUgyMPyOly/gzUmgNP6Pgl+1qRv/MSBE7/oyU3OPPSAuB+DMyzSj8jLRnGHqS42aPbz5eP/3bYi34XclgMJXcHWEqYjvCVBb2gxn8zmQwmEqXjjAVA8dgHvUJ08oVTOU1R5gmmH4wlYAcYSoBOcJUAnKEqQTkCFMJ6GuYLxp/h5nqFvXlMJWAHGEqAb1rYiO+z30IjwnPOzzKHW/xKEm8xaNs8BaP3P5bPJn8e2+Pn3L3flVuleom9SHBmXzwkOBMXnVIcCb3OSTY2ARncohDgjN5viHBmVzckOBMvmxIMJnTKqlucR4STOa0SqobkYcEkzmtcjM2wWROq6S6qXdIMJnTKqluvR0SzOa0Ut0gOySYzWmluo11SDCb00p1s+mQYDanleqW0CHBbE4r1Y2bQ4LZnFaq2yuHBLM5rZ3Nae1sTivVtalDgtmc1s7mtHY2p5XqktkhwWxOK9WFrUOC2ZxWqstPhwSzOa1UF4kOCWZzWqku5RwSzOa0Ul1wOSSYzWmluixySDCb00p18eKQYDanleoSwyHBbE4r1YWAQ4LZnFaqq/WGBLM5rVRX1A0JZnNaqa56GxLM5rRSXZk2JJjNaaW6zGtIMJvTSnXN1JBgNqeV6gKkIcFsTivV1TxDgtmcVqpLY4YEszmtVLekDAlmc1qpbhsZEszmtFLd2jEkmM1ppbr9Ykgwm9NKdYvEkGA2p5XqNoYhwWxOK9WtBkOC2ZxWqtsBhgSzOa1ULftDgtmcVqom/CHBbE4rVVv9kGA2p5WqUX5IMJvTYuuIL2wd8YWtI76wdcQXto74wtYRX9g64gtbR3xh64gvbB3xla0jvqZqEP/yOqrWn0+yf/hssf3XZ4sdVygznfCLURLfQOiNkvi2Qm+UxDcbeqMkvgXRGyXxjefOKFP11i9GSXzbuTdK4rvOvVEq7bihNKEcQdkeX3xfiF6hVNpxQ6m044ZSaccNpdLOEMrzB2W9Qqm044Uy1d0Ri1Eq7bihVNpxQ6m044bShHIEZXn8xLHUq584prr9YzFKpR03lEo7biiVdtxQKu14oUx1f8tilEo7biiVdtxQKu24oTSh9EKptOOGUmnHDaXSjhtKpR03lEo7XihT3aG0GKXSjhtKpR03lEo7bihNKL1QKu24oVTacUOptOOGUmnHDaXSjhfKVPeYLUaptOOGUmnHDaXSjhtKE0ovlEo7biiVdtxQKu24oVTacUOptOOFMtVdgotRKu24oVTacUMZ21dudft5kH3/gHKkSyD4vXsTBMf2aBMEx3ZSEwTH9jv+goPfuzdBcGzvMEFw7BN+guDYW8cJgo1NMJvTCn7v3peCB6pXgt+7N0FwKqc1IjiV0xoQHPzevS8FD5QvBL93b4LgVE5rRHAqpzUi2NgEp3JaI4JTOa2BrWXwe/cmCE7ltEYEp3JaA4KD37s3QXAqpzUiOJXTGhGcymmNCDY2wamc1ohgNqcV/N69CYLZnFbwe/fcBZ/B792bIJjMaZ03Mqd1Br9ZcYJgYxNM5rTO4HcJThBM5rTO4PfyTRDM5rSC33E3QTCb0wp+X9wEwWxOK/jdaxMEszmt4PeYTRDM5rSC3wk2QTCb0wp+v9YEwWxOK/hdVRMEszmt4Pc+TRAc+Rzuvf/8Fee2bx/09vPxC/H9PK70Rj6GZ+iNfApP0Bv62pcZeiOfwTP0Rj6Cv9T73V+d9/Z4m/d+9TYPfSfKejqRD/f1dCLvXNbTibygWU8nkYucQCeR55xAJ5FDndcjc/3QPyRDXwKCRTKRq15Mktavu5Ok9fbuJE0knUjSZgZ3krT5wp0kbRZxJ0mbW9xJKuM4kQx99QcWSWUcL5LKOF4klXG8SJpIOpFUxvEiqYzjRVIZx4ukMo4XSWUcJ5KhL/zAIqmM40VSGceLpDKOF0kTSSeSyjheJJVxvEgq43iRVMbxIqmM40Qy9PVBWCSVcbxIKuN4kVTG8SJpIulEUhnHi6QyjhdJZRwvkso4XiSVcZxIhr64C4ukMo4XSWUcL5LKOF4k5YIGSA5c93qGvqIKimTom5HikBxomAp95RIWSZ04XiRNJJ1IaqvmRVJbNS+S8pMDJOtWf322HvsVSflJL5LaqvmQbKGvDsMiqYzjRVIZx4ukMo4XSRNJJ5LKOF4klXG8SCrjeJFUxvEiqYzjRDL0pX1YJJVxvEgq43iRVMbxImki6USSN+N88SD79kS5b0f5eY6z/+nTpTw+fG5X3HkT0VruvPlpLXfetLWWO282c+L+wzL0RZ9oLHnzmT9L3oTmz5I3o/mzNLF0Y6mc5sdS2cuPpfLUEMv+tOr7rf3G8t/tbTLdZwzFXXnKnfu+P3lYueCe6X5nKO7KaWu4K9Ot4a78t4a7ifsS7sqVa7grg/pzH/h5CO+N5Yu5K6+u4a68uoQ78Z3s33Dfj/aU2OwD9608n7rYFXfl1TXclVfduTv3LTXim+RxZmSaUfgZKTPHn5HydfwZKYvHn5Fye/wZKeOHn1HRPiD+jLQ7iD8j7Rniz0h7hvgzMs0o/Iy0Z4g/I+0Z4s9Ie4b4M9KeIf6MtGcIP6OqPUP8GWnPEH9G2jPEn5H2DPFnZJpR+BlpzxB/RtozxJ+R9gzxZ6Q9Q/wZac8Qfkan9gzxZ6Q9Q/wZac8Qf0baM8SfkWlG4WekfLR0RgP3n7dT+Sj8jJp83doZfb6LuDX5uvgzkq+LPyPTjMLPSD8/ij8j/fwo/oyUj5bOaKT/tykfxZ+Rfn4UfkZdPz+KPyPtGeLPSHuG+DPSniH+jEwzCj8j7Rniz0h7hvgz0p4h/oy0Z4g/I+0Zos+o37RniD8j7Rniz0h7hvgz0p4h/oxMMwo/I+0Z/Gf0xTdv/eeZ+/bzzFu9/duJaiuRbaLaYWSbqDYe2Saq/UjYif5MadOGBGFK2pEgTElbEoQpaU+CMCXTlACmpF0JwpS0/0CYknYaCFPSngJhSto9LJ7SuT2++bbV36b0h+f4fKN637WnyDZR7TSAJurcBtR37UqYp68dDPP0TdMnnr52RszT1y6KefracTFPX7sz5ulrJ0c8/UP7O+bpa9fHPH3t+pinr10f8/RN0yeevnZ9zNPXro95+tr1MU9fuz7m6WvXRzx9066Pefra9TFPX7s+5ulr18c8fdP0iaevXR/z9JX3k05/4E7absr7xNMv8vxZp//53sJe5PmZp2+aPvH05fmZp6+f7zNPXz/fZ56+8n7S6Y90+xblfeLpV/18n3n6+vk+8/S162OevnZ9zNM3TZ94+tr1MU9fuz7m6WvXxzx97fqYp69dH/H0T+36mKevXR/S9L/55q0/nnnbby8/5bv9Nn9t+7jnr30f9/xN86eev3Z+3PPX1o97/tr7cc9fm78U83+ZqLZ5ySbatKFbOtH7G/P2nGgvHyY6cjNe09Yt20S1RwOaqHc3QtMWjXn6pukTT18bNObpa3/GPH1tz5inr90Z8/S1ZyOeftdOjnn62t8xT1+7Pubpa9fHPH3T9Imnr10f8/S162OevnZ9zNPXro95+tr10U6/33lp+sTT166Pefra9TFPX7s+5umbpk88fe36mKevXR/z9JX3k07/8213/bYp7zNPX54/6/Q/3npzn75p+sTTl+dnnr48P/P09fN95unr5/vM01feTzr9zx3I/bYr7zNPXz/fZ56+fr7PPH3t+pinb5o+8fS162OevnZ9zNPXro95+tr1MU9fuz7i6R/a9TFPX7s+pOl/8c0jt13c569tH/f8te/jnr9p/tTz186Pe/7a+nHPX3s/7vlr85di/i8T1TYv2URNG7q1E72/Sh/fvB3nh4neB2APhdthVzPV3i3fTLVLA5qpPT9sx+3DN79+tl1NX5s05umbpp9z+vdnfnyxlavpa4vGPH3t0Jinrw0a8/S1P2OevnZtxNMv2stlnX4pjy8+t6vpa4PHPH3t+pinr10f8/RN0yeevnZ9zNPXro95+tr1gU7/6ud2Rfu7bBPVTi7ZRKv2bNkmqt1ZtolqH5ZtotpxZZuoaaLJJqpdVLaJar+UbaLaGS2e6M/fY221fJjo2F96VG2N8s1Ue6N0Mz21Oco3U+2O8s1U26N8M9X+KN9MTTNNN1PtkPLNVFukfDPVHinfTLVHyjdT7ZHSzbRpj5Rvptoj5Zup9kj5Zqo9Ur6ZmmaabqbaI+WbqfZI+WaqPVK+mWqPlG+m2iOlm2nXHinfTLVHyjdT7ZHyzVR7pHwzNc003Uy1R8o3U+2R8s1Ue6R8M9UeKd9MtUfKNtM7Bs003Uy1R8o3U+2R8s1Ue6R8MzXNNN1MtUfKN1PtkfLNVHukfDPVHinfTLVHSjfTTXukfDPVHinfTLVHyjdT7ZHyzdQ003Qz1R4p30y1R8o3U+2R8s1Ue6R8M9UeKd1Md+2R8s1Ue6R8M9UeKd9MtUfKN1PTTNPNVHukfDPVHinfTLVHyjdT7ZHyzVR7pHQzPbRHyjdT7ZHyzVR7pHwz1R4p30xNM003U+2R8s1Ue6R8M9UeKd9MtUfKN1PtkdLN1LRHyjdT7ZHyzVR7pHwz1R4p30xNM003U+2R8s1Ue6R8M9UeKd9MtUfKN1PtkdLNtGiPlG+m2iPlm6n2SPlmqj1SvpmaZppuptoj5Zup9kj5Zqo9Ur6Zao+Ub6baI6WbadUeKd9MtUfKN1PtkfLNVHukfDM1zTTdTLVHyjdT7ZHyzVR7pHwz1R4p30y1R0o301N7pHwz1R4p30y1R8o3U+2R8s3UNNN0M9UeKd9MtUfKN1PtkfLNVHukfDPVHindTJv2SPlmqj1Svplqj5Rvptoj5ZupaabpZqo9Ur6Zao+Ub6baI+WbqfZI+WaqPVK6mXbtkfLNVHukfDPVHinfTLVHyjdT00zTzVR7pHwz1R4p30y1R8o3U+2R8s1Ue6RsM91v2iPlm6n2SPlmqj1Svplqj5RvpqaZppup9kj5Zqo9Ur6Zao+Ub6baI+WbqfZI6Wa6aY+Ub6baI+WbqfZI+WaqPVK+mZpmmm6m2iPlm6n2SPlmqj1Svplqj5RvptojpZvprj1Svplqj5Rvptoj/cWZvnDXrmcNdxP3Jdy1M1nDXXuNNdy1e1jDXfuBNdyV4Ue4H3t5SDxs/8B9zMEfStqryCsPu5M/7PHUR7EP31y3+uuz9divZqR8G39GysLxZ2Sa0coZ3R3b44utXM1IGTv+jJTH489I2T3+jJTz489IO4HwMzJtD+LPSHuGtTMqzy8+t6sZac8Qf0baM8SfkWlG4WekPUP8GWnPEH9G2jPMnFG95K7dwRru2gcs4V6U8ddwV25fw11ZfIh7257ce/vAfew3YooS9iryJvLe5L1/h6IoN8efkXLz0hmN/DykKDfHn5EydvwZKY+Hn1FVdo8/I+X8+DPSTmDtjAZ+HlK1PYg/I9OMws9Ie4b4M9KeIf6MtGeIPyPtGeLPSHuGmTO6/Dnoqd3BGu7aB6zhroy/hrty+xruJu5LuCtfr+GuzLyGu3LwGu7Ktmu4K6+OcLetPyTa8alDcOy3GJsS6yryyqyryCu1riKv3LqKvIn8IvLKrqvIK72uIq/8uoq8Euwq8sqwi8h3ZdhV5JVhV5FXhl1FXhl2FXkT+UXklWFXkVeGXUVeGXYVeWXYVeSVYdeQP27KsKvIK8OuIq8Mu4q8Muwq8ibyi8grw64irwy7irwy7CryyrCryCvDLiK/KcOuIq8Mu4q8Muwq8sqwq8ibyC8irwy7irwy7CryyrCryCvDriKvDLuI/K4Mu4q8Muwq8sqwq8grw64ibyK/iLwy7CryyrCryCvDriKvDLuKvDLsIvKHMuwq8sqwq8grw64irwy7iryJ/CLyyrCryCvDriKvDLuKvDLsKvLKsIvImzLsKvLKsKvIK8OuIq8Mu4q8ifwi8sqwq8grw64irwy7irwy7CryyrCLyBdl2FXklWFXkVeGXUVeGXYVeRP5ReSVYVeRV4ZdRV4ZdhV5ZdhV5JVhF5GvyrCryCvDriKvDLuKvDLsKvIm8ovIK8OuIq8Mu4q8Muwq8sqwq8grwy4ifyrDriKvDLuKvDLsKvLKsKvIm8gvIq8Mu4q8Muwq8sqwq8grw64irwy7iHxThl1FXhl2FXll2FXklWFXkTeRX0ReGXYVeWXYVeSVYVeRV4ZdRV4ZdhH5rgy7irwy7CryyrCryCvDriJvIr+IvDLsKvLKsKvIK8OuIq8Mu4q8Muwa8nZThl1FXhl2FXll2FXklWFXkTeRX0ReGXYVeWXYVeSVYVeRV4ZdRV4ZdhH5TRl2FXll2FXklWFXkVeGXUXeRH4ReWXYVeSVYVeRV4ZdRV4ZdhV5ZdhF5Hdl2FXklWFXkVeGXUVeGfY/HuSFjonOGzrKgu/oKK+9o6NM9Y6Ocs87Osomb+gcyg/v6Mjjv6MjH/6OjrzyOzomOm/oJPLKvbVfn+7//N//rDeR+x3Sm8jPDulN5FCH9CbynCN6LZGLHNKbyBcO6U3k9Ib0JvJuQ3qNTC+ZvzIyf2Vk/srI/JWR+atC5q8Kmb8qZP6qkPmrYmR6yfxVIfNXhcxfFTJ/Vcj8VSXzV5XMX1Uyf1XJ/FU1Mr1k/irTDfVDesn8Vabb2If0kvmrTDePD+kl81eZbtke0kvmrzLdKD2kl8xfZbo9eUgvmb/KdFPwkF4yf5XpVtwhvWT+KtMNsEN6yfxVpttOh/SS+atMN3sO6SXzV5lusRzSS+avMt3YOKSXzF9lup1wSC+Zv8p0E9+QXjJ/lenWuSG9ZP4q0w1rQ3q5/FXJdJvYkF4uf1Uy3Zw1pJfLX5Wbkenl8lcl041IQ3q5/FXJdPvPkF4yf5XpppshvWT+KtOtLkN6yfxVphtMhvSS+atMt3UM6SXzV5luphjSS+avMt3CMKSXzF9lunFgSC+Zv8rU3D+kl8xfZWrXH9JL5q8yNeAP6SXzV5la6of0kvmrTE3yQ3rJ/FWmtvchvWT+iqy/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97ZWsv72S9bdXsv72StbfXm9GppfLX1Wy/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bfXTP3e2+12+3ns/uHLv3mQfT/aU2Kzn+c4+3/7zbfyeOb91svPN9c/wmv9+c37h28utv/6bLHjavqJ3Iim/+30M3W/a/pfTz+RU9X0v55+It+u6X89/UQpRtP/evqm6RNPP1HC1fS/nn6in6do+l9PP9FPlzT9r6evXR/z9LXryzr99vji8vK9v08/0z1Emv7X09euj3n62vUxT1+7vqzTP3+mX6+mb5o+8fS162OevnZ9zNPXro95+tr1MU9fu76s0y+PRy716nd6M92Jqel/PX3t+pinr10f8/S162Oevmn6xNPXro95+tr1MU9fuz7m6WvXxzx97fqIp5/pfnZN/+vpa9fHPH3t+pinr10f8/RN0yeevnZ9zNPXro95+tr1MU9fuz7m6WvXRzz9rl0f8/S162OevnZ9zNPXro95+qbpE09fuz7m6WvXxzx97fqYp69dH/P0tevjnf55066Pefra9TFPX7s+5ulr18c8fdP0iaevXR/z9LXrY56+dn3E09+U95dO/65ke05/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7uDn7w5+/u7g5+8Ofv4e4OfvAX7+HuDn7wF+/rp0L618fvDz9wA/fw/w8/cAP38P8PPXwM9fAz9/Dfz8NfDz16X7auXzg5+/Bn7+Gvj5a+Dnr4GfvwX8/C3g528BP38L+Pnr0n218vnBz98Cfv4W8PO3gJ+/Bfz8reDnbwU/fyv4+VvBz1+X/qqVzw9+/lbw87eCn78V/Pyt4OfvCX7+nuDn7wl+/p7g569Lp9TK5wc/f0/w8/cEP39P8PP3BD9/wfuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/qoD3XxXw/qsC3n9VwPuvyg37/C3g/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQXvv6rg/VcVvP+qgvdf1Rv2+VvB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qxO8/+oE7786wfuvTvD+q/OGff6e4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef3WC91+d4P1XJ3j/1Qnef9XA+68aeP9VA++/auD9V+2Gff428P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qD91918P6rDt5/1cH7r/oN+/zt4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9V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datfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3+sXVrX5xdatfXN3qF1e3unF1qxtXt7pxdasbV7e6PYxLLpWrMq5udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWt0R11KOdHx9u153cPAfRjNxEhcWj948P//N//7PcPK+qKbl5XlVTco1Lbp4AOCU3TwCckpvo3J2Rm+jcnZGbJwDOyE1UWDwll8tVJSosnpKL6qpeJBi+hNDup53jQ0I/23cx/DHqx1Mfx8tztP4qOLT/WSE4tANaITi0B1ohOLQLWiA4dsXwCsGhndAKwaG90ArBod3QCsHGJpjNacWuG14hmM1pxa4cXiGYzWnFrh1eIZjNacWuHl4hmM1pxa4fXiGYzWnFriBeIZjNacWuIV4hmMxpldhVxCsEkzmtEruOeIVgMqdVHsYmmMxpldi1xCsEkzmtEruaeIVgNqcVu554hWA2pxW7oniFYDanFbumeIVgNqcVu6p4hWA2pxW7rniFYDanFbuyeIVgNqcVu7Z4hWA2pxW7uniFYDanFbu+eIVgNqcVu8J4hWA2pxW7xniFYDanFbvKeIVgNqcVu854hWA2pxW70niFYDanFbvWeIVgNqcVu9p4hWA2pxW73niFYDanFbvieIVgNqcVu+Z4hWA2pxW76niFYDanFbvueIVgNqcVu/J4hWA2p1WMTTCb0ypsTit2k/cKwWxOq7A5rcrmtGL3ta8QzOa0Yne2rxBsbILZnFbs5vYVgtmcVuz29hWC2ZxW7Ab3FYLZnFbsFvcVgtmcVuzW9xWC2ZwWW0d8YeuIL2wd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G1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0bX9e98XXdG1/XvfF13Rtf173xdd0Xvq77wtd1X/i67gtf1315GJ9kOvdV+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovfF33ha/rvvB13ZdULeijnb8+Pdrv3/0iONOpPCU409t69P4h+J//+58FZ3pXTwnO9KaeEpzpPT0lOFNGnhKcKSHPCE7Vhz0lONU5PCM4UzaeEpwpGU8JNjbBbE4LuAP7RQSue3oREdsRtevx+SDdvvtP75/e2l8f/6c37iaqB++pXiE5eE/1EsmxfdESybGd0RLJsb3REsnGJzm2P1oiObZDWiI5tp9aIpnPfQXvqV4hOXhP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl87it4T/USyXzuK3hP9RLJfO4reE/1Esl07qsG76leIpnOfdXgPdVLJNO5r/owPsl07qsG76leIpnOfdXgPdVLJPO5r+A91Usk87mv4D3VSyTzua/gPdVLJPO5r+A91Usk87mv4D3VSyTzua/gPdVLJPO5r+A91Usk87mv4D3VSyTzua/gPdVLJPO5r5PPfZ187it4G/kSyXzu6+JzXxef+wreSv4zyRNF+zV4K7m/4OCd1T8U/H39aw3eWb1AcKY39ZTgTO/pKcHGJjhTQp4SnOocnhGc6hyeEZwpG08JzpSMZwSn6sGeEszmtIA7sF9E4LqnFxEWWkTv5+eDjDa++U/vuMan5muMm6gevKd6ieTY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gPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB77+q4P1XFbz/qoL3X1Xw/qv6wD5/K3j/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n/VwPuvGnj/VQPvv2rg/VftgX3+NvD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qg/dfdfD+qw7ef9XB+6/6A/v87eD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/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l5u7JdtfrparWrVcVe4OdH+5TUuulqvK3YHuL1fLVeXuQPeXq+Wqcneg+8vVclW5O9D95Wq5qtwd6P5ytVxV7r50f7larkqrW33W6laftbrVZ61u9VmrW33W6laftbrVZ61u9VmrW33W6laftbrVZ61u9VmrW33W6laftbrVZ61u9VmrW33W6laftbrVZ61u9VmrW33W6lZftLrVF61u9UWrW33R6lZfHk1LrpSrWrS61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvVFq1t90epWX7S61RetbvWm1a3etLrVm1a3etPqVm+PpiVXylU1rW71ptWt3rS61ZtWt3rT6lZvWt3qTatbvWl1qzetbvWm1a3etLrVm1a3etPqVm9a3epNq1u9aXWrN61u9abVrd60utWbVrd60+pWb1rd6k2rW71pdas3rW71ptWt3rS61ZtWt3rT6lZvWt3qTatbvWl1qzetbvWm1a3etLrVm1a3etPqVm9a3epNq1u9aXWrN61u9abVrd60utWbVrd60+pWb1rd6k2rW71pdau3QnXUxzY/v3hbzuTWeRFZ5BYqLD72/fnF//zzP8ut86gyya3zqDLJbVpy6wRAk9w6AdAkt9B71yK30HvXIrdOALTILVRYbJKr5aoKFRab5N7VVb1JaPeXkNr9bPPxlLDP208x/HGsz089TW+fY9vfBaf2PyMEp3ZAIwSn9kAjBKd2QQME564YHiE4tRMaITi1FxohOLUbGiG4qQlWc1q564ZHCFZzWrkrh0cIVnNauWuH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e4/8CMl67it7l/wIyXruK3uf/AjJeu4re6f8CMl67it7r/wIyXruK3u3/AjJeu4re7/8CMl67it7H/0IyXruS6/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrul/0uu4Xva77Ra/rftHrum96XfdNr+u+6XXdN72u+/ZoepLl3FfT67pvel33Ta/rvul13Te9rvum13Xf9Lrum17XfdPrum96XfdNr+u+6XXdN72u+6bXdd/0uu6bXtd90+u6b3pd902v677pdd03va77ptd13/S67pte133T67pvel33Ta/rvul13Te9rvum13Xf9Lrum17XfdPrum96XfdNr+u+6XXdN72u+6bXdd/0uu6bXtd90+u6b3pd902v677pdd03va77ptd13/S67pte133T67pvel33Ta/rvul13Te9rvum13Xf9Lrum17XfdPrum96XfdNr+u+6XXdN72u+6bXdd/0uu6bXtd90+u6b3pd902v677pdd03va77ptd13/S67pte133T67pvel33Ta/rvul13Te9rvum13Xf9Lrum17XfdPrum96XfdNr+u+6XXdN72u+6bXdd/0uu6bXtd90+u6b3pd902v677pdd03va77ptd13/W67rte133X67rvel33/dH0JMu5r67Xdd/1uu67Xtd91+u673pd912v677rdd13va77rtd13/W67rte133X67rvel33Xa/rvut13Xe9rvuu13Xf9bruu17Xfdfruu96Xfddr+u+l2pBP7b511cf2+/f+01wpbeySXClp/Wx70/B//zzPwuu9Kw2Ca70pDYJrvScNgmulJFNgislZIvgUn3YJsGl3sMWwZWysUlwpWRsEtzUBKs5rRt3YL+JuK97ehOR2xFty+P1Qfb20396//TW/vryf3rjTqJ68p7qEZKT91QPkZzbFw2RnNsZDZGc2xsNkdz0JOf2R0Mk53ZIQyTn9lNDJOu5r+Q91SMkJ++pHiJZz30l76keIlnPfSXv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PuWnnE/5KedTfsr5lJ9yPuXnnE/5OedTfs75lJ9zPuXnnE/5OedTfs75lJ9zPuXnnE/5OedTfsn5lF9yPuWXnE/5JedTfsn5lF9yPuWXnE/5JedTfsn5lF9yPuVbzqd8y/mUbzmf8i3nU77lfMq3nE/5lvMp33I+5VvOp3zL+ZTvOZ/yPedTvud8yvecT/me8ynfcz7le86nfM/5lO85n/I951N+zfmUX3M+5decT/k151N+zfmUX3M+5decT/k151N+zfmUX3M+5becT/kt51N+y/mU33I+5becT/kt51N+y/mU33I+5becT/kt51N+z/mU33M+5fecT/k951N+z/mU33M+5fecT/k951N+z/mU33M+5Y+cT/kj51P+yPmUP3I+5Y+cT/kj51P+yPmUP3I+5Y+cT/kj5VO+5/zb157zb197zr997Tn/9rU/Uj7le86/fe05//a15/zb157zb197zr997Tn/9rXn/NvXnvNvX3vOv33tOf/2tef829ee829fe86/fe05//a15/zb157zb197zr997Tn/9rXn/NvXnvNvX3vOv33tOf/2tef829ee829fe86/fe05//a15/zb157zb197zr997Tn/9rXn/NvXnvNvX3vOv33tOf/2tef829ee829fe86/fe05//a15/zb13Vw5fK/fvVnF8Ifr6+evv7nTfIfL4R/9L23x/r81lt/fH91b//hd56X/vzO83K8XTVf//iZ9+P1necfvvPXf9u/vvbrP6eTgQ6utmagf32geU6rMVCXgeY5S8dAXQaa56QfA3UZaGOgtQaa5zgwA3UZaJ7DygzUZaB5jlIzUJeB5jnozUBdBsqmqNRAtwebohsNdH88B3r0s4GyKSo2UDZFxQbKpqjYQBsDvc9At++BrmcDZVNUbKBsiooNlE1RsYGyKSo2UDZFtQY6sSm60UD7/hzoP9/rzwNlU1RsoGyKig2UTVGxgTYGWmugbIqKDZRNUbGBsikqNlA2RcUGyqao1kBnNkXFBsqmqNhA2RQVGyibomIDbQy01kDZFBUbKJuiYgNlU1RsoGyKig2UTVGtgS5siooNlE1RsYGyKSo2UDZFxQbaGGitgbIpKjZQNkXFBsqmqNhA2RQVGyiboloDbWyKig2UTVGxgbIpKjZQNkXFBtoYaK2BsikqNlA2RcUGyqao2EDZFNUaaCeH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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"6999100115978011798108105997510112178111116101"},{"kind":"string","value":"EcdsaPublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"1"}},{"name":"typ","value":{"kind":"string","value":"PrivateImmutable"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}}],"kind":"struct","path":"EcdsaAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}}],"kind":"struct","path":"EcdsaAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"outer_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaAccount::cancel_authwit_parameters"}}],"kind":"struct","path":"EcdsaAccount::cancel_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaAccount::spend_public_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaAccount::spend_public_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"outer_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaAccount::approve_public_authwit_parameters"}}],"kind":"struct","path":"EcdsaAccount::approve_public_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaAccount::spend_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaAccount::spend_private_authwit_abi"}]}},"file_map":{"101":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nfn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"103":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, hash::pedersen_hash, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: Field = 24;\n\nstruct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nfn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nfn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"106":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::PublicKeys;\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, grumpkin_point::GrumpkinPoint};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nfn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 9] {}\n\nunconstrained fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 9] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\nfn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(address);\n\n let keys = PublicKeys {\n npk_m: GrumpkinPoint::new(result[0], result[1]),\n ivpk_m: GrumpkinPoint::new(result[2], result[3]),\n ovpk_m: GrumpkinPoint::new(result[4], result[5]),\n tpk_m: GrumpkinPoint::new(result[6], result[7])\n };\n\n let partial_address = PartialAddress::from_field(result[8]);\n\n (keys, partial_address)\n}\n"},"107":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nfn emit_encrypted_note_log_oracle(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_note_log(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nfn emit_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nfn compute_encrypted_note_log_oracle(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nfn compute_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nfn emit_contract_class_unencrypted_log_private(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, event_selector, message, counter)\n}\n"},"109":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n"},"110":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"111":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nfn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nfn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"113":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, hash::pedersen_hash,\n public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage, traits::{Hash, Serialize},\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nfn get_public_data_witness_oracle(\n _block_number: u32,\n _leaf_slot: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, leaf_slot: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, leaf_slot);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"114":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::{\n grumpkin_point::GrumpkinPoint,\n abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH}\n};\n\n#[oracle(getKeyValidationRequest)]\nfn get_key_validation_request_oracle(_pk_m_hash: Field, _key_index: Field) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(npk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"115":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nfn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _inner_note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n inner_note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n inner_note_hash,\n counter\n )\n}\n\n#[oracle(notifyNullifiedNote)]\nfn notify_nullified_note_oracle(\n _nullifier: Field,\n _inner_note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_nullified_note(\n nullifier: Field,\n inner_note_hash: Field,\n counter: u32\n) -> Field {\n notify_nullified_note_oracle(nullifier, inner_note_hash, counter)\n}\n\n#[oracle(getNotes)]\nfn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\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_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; 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 _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S] where Note: NoteInterface {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n Note::set_header(&mut note, header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nfn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"116":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nfn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nfn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"117":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nfn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"120":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl Storage for Map {}\n\nimpl Map {\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 { context, storage_slot, state_var_constructor }\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 = derive_storage_slot_in_map(self.storage_slot, key);\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"},"123":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse dep::std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initally equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation \n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the \n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a \n// reduced delay, invalidating prior private reads.\nstruct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option, \n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pre: Option,\n post: Option,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n // The _dummy variable forces INITIAL_DELAY to be interpreted as a numeric value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; INITIAL_DELAY],\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change, _dummy: [0; INITIAL_DELAY] }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current block number - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_block_number: u32) -> u32 {\n // The post value becomes the current one at the block of change, so any transaction that is included in the\n // block of change will use the post value.\n\n if current_block_number < self.block_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the block at which it will become the current\n /// delay. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u32, u32) {\n (self.post.unwrap_or(INITIAL_DELAY), self.block_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current block number. This function is only meaningful\n /// when called in public with the current block number.\n /// The block at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u32, current_block_number: u32) {\n let current = self.get_current(current_block_number);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let blocks_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior contraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value block of change\n // block block of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | blocks until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.block_of_change = current_block_number + blocks_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical block number. It only returns a meaningful value when called in private with historical blocks. This \n /// function can be used alongside `ScheduledValueChange.get_block_horizon` to properly constrain the\n /// `max_block_number` transaction property when reading mutable shared state.\n /// This value typically equals the current delay at the block following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is \n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_block_number: u32) -> u32 {\n if self.block_of_change <= historical_block_number {\n // If no delay changes were scheduled, then the delay value at the historical block (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // block of change the current delay will be the scheduled one, with an overall delay from the historical\n // block number equal to the number of blocks until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // block delay actual earliest value\n // v block of change block of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest block in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | blocks new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest block in \n // which to scheduled value change\n\n let blocks_until_change = self.block_of_change - (historical_block_number + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n blocks_until_change + self.post.unwrap_or(INITIAL_DELAY)\n )\n }\n }\n}\n\nimpl Serialize<1> for ScheduledDelayChange {\n fn serialize(self) -> [Field; 1] {\n // We pack all three u32 values into a single U128, which is made up of two u64 limbs.\n // Low limb: [ pre_inner: u32 | post_inner: u32 ]\n // High limb: [ empty | pre_is_some: u8 | post_is_some: u8 | block_of_change: u32 ]\n\n let lo = ((self.pre.unwrap_unchecked() as u64) * (1 << 32))\n + (self.post.unwrap_unchecked() as u64);\n\n let hi = (self.pre.is_some() as u64) * (1 << 33) \n + (self.post.is_some() as u64 * (1 << 32)) \n + self.block_of_change as u64;\n\n let packed = U128::from_u64s_le(lo, hi);\n\n [packed.to_integer()]\n }\n}\n\nimpl Deserialize<1> for ScheduledDelayChange {\n fn deserialize(input: [Field; 1]) -> Self {\n let packed = U128::from_integer(input[0]);\n\n // We use division and modulo to clear the bits that correspond to other values when unpacking.\n\n let pre_is_some = ((packed.hi as u64) / (1 << 33)) as bool;\n let pre_inner = ((packed.lo as u64) / (1 << 32)) as u32;\n\n let post_is_some = (((packed.hi as u64) / (1 << 32)) % (1 << 1)) as bool;\n let post_inner = ((packed.lo as u64) % (1 << 32)) as u32;\n\n let block_of_change = ((packed.hi as u64) % (1 << 32)) as u32;\n\n Self {\n pre: if pre_is_some { Option::some(pre_inner) } else { Option::none() },\n post: if post_is_some { Option::some(post_inner) } else { Option::none() },\n block_of_change,\n _dummy: [0; INITIAL_DELAY],\n }\n }\n}\n"},"125":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse dep::std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block\n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know\n// both the current value and the smallest block number at which the value might change - this is called the\n// 'block horizon'.\nstruct ScheduledValueChange {\n pre: T,\n post: T,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public\n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current\n /// transaction will be included) and in private (where `block_number` is the historical block number that is used\n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or\n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current\n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`,\n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum number of blocks that need to\n /// elapse from the next block until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon\n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to\n // that one.\n //\n // block of historical\n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the block of change is in the past: the time horizon is the\n // block prior to the earliest one in which a new block of change might land.\n //\n // historical\n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case\n // the block of change would become the limiting factor for the time horizon, which would equal the\n // block right before the block of change (since by definition the value changes at the block of\n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for\n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current block number. This function is only meaningful when\n /// called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl Serialize<3> for ScheduledValueChange {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl Deserialize<3> for ScheduledValueChange {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self {\n pre: FromField::from_field(input[0]),\n post: FromField::from_field(input[1]),\n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n"},"128":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable_private_getter.nr","source":"use dep::protocol_types::{hash::pedersen_hash, traits::FromField, address::AztecAddress, header::Header};\n\nuse crate::context::PrivateContext;\nuse crate::public_storage;\nuse crate::state_vars::{\n storage::Storage,\n shared_mutable::{scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange}\n};\n\nstruct SharedMutablePrivateGetter {\n context: &mut PrivateContext,\n // The contract address of the contract we want to read from\n other_contract_address: AztecAddress,\n // The storage slot where the SharedMutable is stored on the other contract\n storage_slot: Field,\n // The _dummy variable forces INITIAL_DELAY to be interpreted as a numberic value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; INITIAL_DELAY],\n}\n\n// We have this as a view-only interface to reading Shared Mutables in other contracts.\n// Currently the Shared Mutable does not support this. We can adapt SharedMutable at a later date\nimpl SharedMutablePrivateGetter {\n pub fn new(\n context: &mut PrivateContext,\n other_contract_address: AztecAddress,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n assert(other_contract_address.to_field() != 0, \"Other contract address cannot be 0\");\n Self { context, other_contract_address, storage_slot, _dummy: [0; INITIAL_DELAY] }\n }\n\n pub fn get_value_in_private(self, header: Header) -> T where T: FromField {\n let (value_change, delay_change, historical_block_number) = self.historical_read_from_public_storage(header);\n let effective_minimum_delay = delay_change.get_effective_minimum_delay_at(historical_block_number);\n let block_horizon = value_change.get_block_horizon(historical_block_number, effective_minimum_delay);\n\n // If our context has the same header as the one we pass in via the parameter, we are trying to read the \"current\" value\n // and thus need to set the tx max block number below. If the context header is not the same as the one we pass in, this means\n // we are trying to read a historical value and thus have no constraint on the max block number that this transaction can be included in.\n if (self.context.historical_header.global_variables.block_number.eq(header.global_variables.block_number)) {\n self.context.set_tx_max_block_number(block_horizon);\n }\n\n value_change.get_current_at(historical_block_number)\n }\n\n fn historical_read_from_public_storage(\n self,\n header: Header\n ) -> (ScheduledValueChange, ScheduledDelayChange, u32) where T: FromField {\n let value_change_slot = self.get_value_change_storage_slot();\n let mut raw_value_change_fields = [0; 3];\n for i in 0..3 {\n raw_value_change_fields[i] = header.public_storage_historical_read(\n value_change_slot + i as Field,\n self.other_contract_address\n );\n }\n\n let delay_change_slot = self.get_delay_change_storage_slot();\n let raw_delay_change_fields = [header.public_storage_historical_read(delay_change_slot, self.other_contract_address)];\n\n let value_change = ScheduledValueChange::deserialize(raw_value_change_fields);\n let delay_change = ScheduledDelayChange::deserialize(raw_delay_change_fields);\n\n let historical_block_number = header.global_variables.block_number as u32;\n\n (value_change, delay_change, historical_block_number)\n }\n\n fn get_value_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 0], 0)\n }\n\n fn get_delay_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 1], 0)\n }\n}\n"},"131":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl Storage for PublicMutable {}\n\nimpl PublicMutable {\n // docs:start:public_mutable_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 ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl PublicMutable {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T where T: Deserialize {\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) where T: Serialize {\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl PublicMutable {\n pub fn read(self) -> T where T: Deserialize {\n // This looks the same as the &mut PublicContext impl, but is actually very different. In public execution the\n // storage read oracle gets transpiled to SLOAD opcodes, whereas in unconstrained execution the PXE returns\n // historical data.\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n}\n"},"133":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, grumpkin_point::GrumpkinPoint,\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::pedersen_hash\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor. \n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n pedersen_hash(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint\n ) where Note: NoteInterface {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_new_nullifier(nullifier, 0);\n\n create_note(self.context, self.storage_slot, note, ovpk_m, ivpk_m);\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note where Note: NoteInterface {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot)\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note where Note: NoteInterface {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1))[0].unwrap()\n }\n // docs:end:view_note\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"146":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::{compute_siloed_nullifier, pedersen_hash},\n constants::GENERATOR_INDEX__CONSTRUCTOR, abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_new_nullifier(init_nullifier, 0);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_new_nullifier(init_nullifier, 0);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_contract_initialization_nullifier(context.this_address());\n let header = context.get_header();\n header.prove_nullifier_inclusion(init_nullifier);\n}\n\nfn compute_contract_initialization_nullifier(address: AztecAddress) -> Field {\n compute_siloed_nullifier(\n address,\n compute_unsiloed_contract_initialization_nullifier(address)\n )\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n pedersen_hash(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"158":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\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 Serialize for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"160":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"163":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize for 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 serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"164":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\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 Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> 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"},"165":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse dep::std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"166":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"167":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"168":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"176":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"177":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"178":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"179":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"180":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\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 function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x22786e4f971661d2e49095e6b038e5170bc47b795253916d5657c4bdd1df50bf;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"186":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"189":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"190":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1970bf189adc837d1769f9f44a8b55c97d45690e7744859b71b647e808ee8622;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"198":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x03ab5026ab5b3e6b81be5c3ec31c7937f293180c25a240eb75693cda81bb2a05;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"20":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n// TODO(https://github.com/noir-lang/noir/issues/4931)\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite) | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n// Scalar represented as low and high limbs\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n#[foreign(multi_scalar_mul)]\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> [Field; 3]\n// docs:end:multi_scalar_mul\n{}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(\n scalar_low: Field,\n scalar_high: Field\n) -> [Field; 3]\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n let scalar = EmbeddedCurveScalar { lo: scalar_low, hi: scalar_high };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"200":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"201":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"202":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\nstruct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self {\n nullifier : 0,\n next_nullifier : 0,\n next_index : 0,\n }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n dep::std::hash::pedersen_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier) &\n (self.next_nullifier == other.next_nullifier) &\n (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"203":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\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::empty();\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\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x124a62189073cc551fea148d735d1e8b452e38537e075895b02ccfd9c9901819;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x2cbb07062730bfc4933f5e8d533d5b62ac6e1b7922b831993377cd85d7445399;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"206":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\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 Serialize for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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 { inner: result }\n }\n}\n"},"207":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::pedersen_hash, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\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 Serialize for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n pedersen_hash(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_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.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"209":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::pedersen_hash, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n pedersen_hash(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"21":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose_hint, decompose, compute_lt, assert_gt, gt, lt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"210":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"212":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"220":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/grumpkin_point.nr","source":"use crate::{traits::{Serialize, Deserialize, Hash}, hash::poseidon2_hash};\nuse dep::std::cmp::Eq;\n\nglobal GRUMPKIN_POINT_SERIALIZED_LEN: Field = 2;\n\n// TODO(https://github.com/noir-lang/noir/issues/4931)\nstruct GrumpkinPoint {\n x: Field,\n y: Field,\n}\n\nimpl Serialize for GrumpkinPoint {\n fn serialize(self) -> [Field; GRUMPKIN_POINT_SERIALIZED_LEN] {\n [self.x, self.y]\n }\n}\n\nimpl Deserialize for GrumpkinPoint {\n fn deserialize(serialized: [Field; GRUMPKIN_POINT_SERIALIZED_LEN]) -> Self {\n Self {\n x: serialized[0],\n y: serialized[1],\n }\n }\n}\n\nimpl Eq for GrumpkinPoint {\n fn eq(self, point: GrumpkinPoint) -> bool {\n (point.x == self.x) & (point.y == self.y)\n }\n}\n\nimpl Hash for GrumpkinPoint {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl GrumpkinPoint {\n pub fn new(x: Field, y: Field) -> Self {\n Self { x, y }\n }\n\n pub fn zero() -> Self {\n Self { x: 0, y: 0 }\n }\n\n pub fn is_zero(self) -> bool {\n (self.x == 0) & (self.y == 0)\n }\n\n // TODO(David): Would be quite careful here as (0,0) is not a point\n // on the curve. A boolean flag may be the better approach here,\n // would also cost less constraints. It seems like we don't need to \n // group arithmetic either. \n fn assert_is_zero(self) {\n assert(self.x == 0);\n assert(self.y == 0);\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 64] {\n let mut result = [0 as u8; 64];\n let x_bytes = self.x.to_be_bytes(32);\n let y_bytes = self.y.to_be_bytes(32);\n for i in 0..32 {\n result[i] = x_bytes[i];\n result[i + 32] = y_bytes[i];\n }\n result\n }\n}\n"},"221":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/grumpkin_private_key.nr","source":"use dep::std::{cmp::Eq, embedded_curve_ops::fixed_base_scalar_mul};\nuse crate::{grumpkin_point::GrumpkinPoint, traits::Empty};\n\nglobal GRUMPKIN_PRIVATE_KEY_SERIALIZED_LEN: Field = 2;\n\nstruct GrumpkinPrivateKey {\n high: Field,\n low: Field,\n}\n\nimpl Eq for GrumpkinPrivateKey {\n fn eq(self, key: GrumpkinPrivateKey) -> bool {\n (key.high == self.high) & (key.low == self.low)\n }\n}\n\nimpl Empty for GrumpkinPrivateKey {\n fn empty() -> Self {\n Self { high: 0, low: 0 }\n }\n}\n\nimpl GrumpkinPrivateKey {\n pub fn new(high: Field, low: Field) -> Self {\n GrumpkinPrivateKey { high, low }\n }\n\n pub fn zero() -> Self {\n Self { high: 0, low: 0 }\n }\n\n pub fn is_zero(self) -> bool {\n (self.high == 0) & (self.low == 0)\n }\n\n pub fn serialize(self) -> [Field; GRUMPKIN_PRIVATE_KEY_SERIALIZED_LEN] {\n [self.high, self.low]\n }\n\n pub fn derive_public_key(self) -> GrumpkinPoint {\n let public_key = fixed_base_scalar_mul(self.low, self.high);\n GrumpkinPoint { x: public_key[0], y: public_key[1] }\n }\n}\n"},"222":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"233":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"234":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"240":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"242":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"254":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"256":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"257":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\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 lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n"},"265":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\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_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&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 // TODO(#4394)\n pub fn read_struct(&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(&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"},"266":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"267":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle(_msg: str, args: [Field]) {}\n\n/// NOTE: call this with a str msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format(msg: str, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"270":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n dep::std::hash::pedersen_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"271":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize"},"28":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"29":{"path":"std/hash.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::sha256::{digest, sha256_var};\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\nstruct PedersenPoint {\n x : Field,\n y : Field,\n}\n\npub fn pedersen_commitment(input: [Field; N]) -> PedersenPoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(keccak256)]\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n"},"3":{"path":"std/cmp.nr","source":"// docs:start:eq-trait\ntrait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\nimpl Eq for Field { fn eq(self, other: Field) -> bool { self == other } }\n\nimpl Eq for u64 { fn eq(self, other: u64) -> bool { self == other } }\nimpl Eq for u32 { fn eq(self, other: u32) -> bool { self == other } }\nimpl Eq for u8 { fn eq(self, other: u8) -> bool { self == other } }\nimpl Eq for u1 { fn eq(self, other: u1) -> bool { self == other } }\n\nimpl Eq for i8 { fn eq(self, other: i8) -> bool { self == other } }\nimpl Eq for i32 { fn eq(self, other: i32) -> bool { self == other } }\nimpl Eq for i64 { fn eq(self, other: i64) -> bool { self == other } }\n\nimpl Eq for () { fn eq(_self: Self, _other: ()) -> bool { true } }\nimpl Eq for bool { fn eq(self, other: bool) -> bool { self == other } }\n\nimpl Eq for [T; N] where T: Eq {\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T] where T: Eq {\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B) where A: Eq, B: Eq {\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C) where A: Eq, B: Eq, C: Eq {\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D) where A: Eq, B: Eq, C: Eq, D: Eq {\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E) where A: Eq, B: Eq, C: Eq, D: Eq, E: Eq {\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3) & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\nstruct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n// docs:start:ord-trait\ntrait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else {\n if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n\nimpl Ord for [T; N] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl Ord for [T] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B) where A: Ord, B: Ord {\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C) where A: Ord, B: Ord, C: Ord {\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D) where A: Ord, B: Ord, C: Ord, D: Ord {\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E) where A: Ord, B: Ord, C: Ord, D: Ord, E: Ord {\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T where T: Ord {\n if v1 > v2 { v1 } else { v2 }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T where T: Ord {\n if v1 > v2 { v2 } else { v1 }\n}\n\nmod cmp_tests {\n use crate::cmp::{min, max};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"},"31":{"path":"std/merkle.nr","source":"// Regular merkle tree means a append-only merkle tree (Explain why this is the only way to have privacy and alternatives if you don't want it)\n// Currently we assume that it is a binary tree, so depth k implies a width of 2^k\n// XXX: In the future we can add an arity parameter\n// Returns the merkle root of the tree from the provided leaf, its hashpath, using a pedersen hash function.\npub fn compute_merkle_root(leaf: Field, index: Field, hash_path: [Field; N]) -> Field {\n let n = hash_path.len();\n let index_bits = index.to_le_bits(n as u32);\n let mut current = leaf;\n for i in 0..n {\n let path_bit = index_bits[i] as bool;\n let (hash_left, hash_right) = if path_bit {\n (hash_path[i], current)\n } else {\n (current, hash_path[i])\n };\n current = crate::hash::pedersen_hash([hash_left, hash_right]);\n }\n current\n}\n"},"321":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/ecdsa_public_key_note.nr","source":"use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteInterface, NoteGetterOptions, PrivateContext};\n\nuse dep::aztec::{\n note::utils::compute_note_hash_for_consumption, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, grumpkin_point::GrumpkinPoint, hash::poseidon2_hash}\n};\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5;\n// ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN: Field = 5 * 32 + 64;\n\n// Stores an ECDSA public key composed of two 32-byte elements\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[aztec(note)]\nstruct EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NoteInterface for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = npk_m_hash\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n \n [x, last_x, y, last_y, self.npk_m_hash]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x = serialized_note[0].to_be_bytes(32);\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes(32)[31];\n\n let part_y = serialized_note[2].to_be_bytes(32);\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes(32)[31];\n\n EcdsaPublicKeyNote { x, y, npk_m_hash: serialized_note[4], header: NoteHeader::empty() }\n }\n\n fn compute_nullifier(self, context: &mut PrivateContext) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_consumption(self);\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash([\n note_hash_for_nullify,\n secret,\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n ])\n }\n\n fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_consumption(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash([\n note_hash_for_nullify,\n secret,\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n ])\n }\n\n // Broadcasts the note as an encrypted log on L1.\n fn broadcast(self, context: &mut PrivateContext, slot: Field, ovpk_m: GrumpkinPoint, ivpk_m: GrumpkinPoint) {\n context.encrypt_and_emit_note(\n slot,\n ovpk_m,\n ivpk_m,\n self,\n );\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], npk_m_hash: Field) -> Self {\n EcdsaPublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"322":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/main.nr","source":"mod ecdsa_public_key_note;\n\n// Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum.\n// The signing key is stored in an immutable private note and should be different from the signing key.\ncontract EcdsaAccount {\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteGetterOptions, PrivateContext, PrivateImmutable};\n\n use dep::aztec::protocol_types::abis::call_context::CallContext;\n use dep::std;\n\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness\n };\n\n use crate::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[aztec(storage)]\n struct Storage {\n public_key: PrivateImmutable,\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\n let this = context.this_address();\n let header = context.get_header();\n let this_npk_m_hash = header.get_npk_m_hash(&mut context, this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n let this_ovpk_m = header.get_ovpk_m(&mut context, this);\n let this_ivpk_m = header.get_ivpk_m(&mut context, this);\n\n let mut pub_key_note = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_npk_m_hash);\n storage.public_key.initialize(&mut pub_key_note, this_ovpk_m, this_ivpk_m);\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload) {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload);\n }\n\n #[aztec(private)]\n #[aztec(noinitcheck)]\n fn spend_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.spend_private_authwit(inner_hash)\n }\n\n #[aztec(public)]\n fn spend_public_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.spend_public_authwit(inner_hash)\n }\n\n #[aztec(private)]\n #[aztec(internal)]\n fn cancel_authwit(outer_hash: Field) {\n context.push_new_nullifier(outer_hash, 0);\n }\n\n #[aztec(public)]\n #[aztec(internal)]\n fn approve_public_authwit(outer_hash: Field) {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.approve_public_authwit(outer_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(outer_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 payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes(32).as_array();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n let verification = std::ecdsa_secp256k1::verify_signature(public_key.x, public_key.y, signature, hashed_message);\n assert(verification == true);\n\n true\n }\n}\n"},"35":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\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 { self._value } else { default }\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(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\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(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(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(self, f: fn[Env](T) -> Option) -> Option {\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 { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\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 { Option::none() } else { self }\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(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> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u32) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u32) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any(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\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n"},"44":{"path":"std/uint128.nr","source":"use crate::ops::{Add, Sub, Mul, Div, Rem, Not, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\nuse crate::println;\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\nglobal pow63 : Field = 9223372036854775808; // 2^63;\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn zero() -> U128 {\n U128 { lo: 0, hi: 0 }\n }\n\n pub fn one() -> U128 {\n U128 { lo: 1, hi: 0 }\n }\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex(hex: str) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n unconstrained fn uconstrained_check_is_upper_ascii(ascii: u8) -> bool {\n ((ascii >= 65) & (ascii <= 90)) // Between 'A' and 'Z'\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else {\n let ascii = ascii + 32 * (U128::uconstrained_check_is_upper_ascii(ascii) as u8);\n assert(ascii >= 97); // enforce >= 'a'\n assert(ascii <= 102); // enforce <= 'f'\n ascii - 87\n } as Field\n }\n\n // TODO: Replace with a faster version. \n // A circuit that uses this function can be slow to compute\n // (we're doing up to 127 calls to compute the quotient)\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if b == U128::zero() {\n // Return 0,0 to avoid eternal loop\n (U128::zero(), U128::zero())\n } else if self < b {\n (U128::zero(), self)\n } else if self == b {\n (U128::one(), U128::zero())\n } else {\n let (q,r) = if b.hi as u64 >= pow63 as u64 {\n // The result of multiplication by 2 would overflow\n (U128::zero(), self)\n } else {\n self.unconstrained_div(b * U128::from_u64s_le(2, 0))\n };\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::one(), r - b)\n }\n }\n }\n\n pub fn from_integer(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = self.lo * b.hi + self.hi * b.lo + carry;\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl Not for U128 { \n fn not(self) -> U128 {\n U128 {\n lo: (!(self.lo as u64)) as Field,\n hi: (!(self.hi as u64)) as Field\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift left with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift right with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n\nmod tests {\n use crate::uint128::{U128, pow64, pow63};\n\n #[test]\n fn test_not() {\n let num = U128::from_u64s_le(0, 0);\n let not_num = num.not();\n\n let max_u64: Field = pow64 - 1;\n assert_eq(not_num.hi, max_u64);\n assert_eq(not_num.lo, max_u64);\n\n let not_not_num = not_num.not();\n assert_eq(num, not_not_num);\n }\n #[test]\n fn test_construction() {\n // Check little-endian u64 is inversed with big-endian u64 construction\n let a = U128::from_u64s_le(2, 1);\n let b = U128::from_u64s_be(1, 2);\n assert_eq(a, b);\n // Check byte construction is equivalent\n let c = U128::from_le_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n let d = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n assert_eq(c, d);\n }\n #[test]\n fn test_byte_decomposition() {\n let a = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n // Get big-endian and little-endian byte decompostions\n let le_bytes_a= a.to_le_bytes();\n let be_bytes_a= a.to_be_bytes();\n\n // Check equivalence\n for i in 0..16 {\n assert_eq(le_bytes_a[i], be_bytes_a[15 - i]);\n }\n // Reconstruct U128 from byte decomposition\n let b= U128::from_le_bytes(le_bytes_a);\n // Check that it's the same element\n assert_eq(a, b);\n }\n #[test]\n fn test_hex_constuction() {\n let a = U128::from_u64s_le(0x1, 0x2);\n let b = U128::from_hex(\"0x20000000000000001\");\n assert_eq(a, b);\n\n let c= U128::from_hex(\"0xffffffffffffffffffffffffffffffff\");\n let d= U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff);\n assert_eq(c, d);\n\n let e= U128::from_hex(\"0x00000000000000000000000000000000\");\n let f= U128::from_u64s_le(0, 0);\n assert_eq(e, f);\n }\n\n // Ascii decode tests\n\n #[test]\n fn test_ascii_decode_correct_range() {\n // '0'..'9' range\n for i in 0..10 {\n let decoded= U128::decode_ascii(48 + i);\n assert_eq(decoded, i as Field);\n }\n // 'A'..'F' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(65 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n // 'a'..'f' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(97 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_0() {\n crate::println(U128::decode_ascii(0));\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_1() {\n crate::println(U128::decode_ascii(47));\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_0() {\n let _ = U128::decode_ascii(58);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_1() {\n let _ = U128::decode_ascii(64);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_0() {\n let _ = U128::decode_ascii(71);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_1() {\n let _ = U128::decode_ascii(96);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_greater_than_102_fails() {\n let _ = U128::decode_ascii(103);\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_regression() {\n // This code will actually fail because of ascii_decode,\n // but in the past it was possible to create a value > (1<<128)\n let a = U128::from_hex(\"0x~fffffffffffffffffffffffffffffff\");\n let b:Field= a.to_integer();\n let c= b.to_le_bytes(17);\n assert(c[16] != 0);\n }\n\n #[test]\n fn test_unconstrained_div() {\n // Test the potential overflow case\n let a= U128::from_u64s_le(0x0, 0xffffffffffffffff);\n let b= U128::from_u64s_le(0x0, 0xfffffffffffffffe);\n let c= U128::one();\n let d= U128::from_u64s_le(0x0, 0x1);\n let (q,r) = a.unconstrained_div(b);\n assert_eq(q, c);\n assert_eq(r, d);\n\n let a = U128::from_u64s_le(2, 0);\n let b = U128::one();\n // Check the case where a is a multiple of b\n let (c,d ) = a.unconstrained_div(b);\n assert_eq((c, d), (a, U128::zero()));\n\n // Check where b is a multiple of a\n let (c,d) = b.unconstrained_div(a);\n assert_eq((c, d), (U128::zero(), b));\n\n // Dividing by zero returns 0,0\n let a = U128::from_u64s_le(0x1, 0x0);\n let b = U128::zero();\n let (c,d)= a.unconstrained_div(b);\n assert_eq((c, d), (U128::zero(), U128::zero()));\n\n // Dividing 1<<127 by 1<<127 (special case)\n let a = U128::from_u64s_le(0x0, pow63 as u64);\n let b = U128::from_u64s_le(0x0, pow63 as u64);\n let (c,d )= a.unconstrained_div(b);\n assert_eq((c, d), (U128::one(), U128::zero()));\n }\n\n #[test]\n fn integer_conversions() {\n // Maximum\n let start:Field = 0xffffffffffffffffffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Minimum\n let start:Field = 0x0;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Low limb\n let start:Field = 0xffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // High limb\n let start:Field = 0xffffffffffffffff0000000000000000;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n #[test]\n fn test_wrapping_mul() {\n // 1*0==0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::one()));\n\n // 0*1==0\n assert_eq(U128::zero(), U128::one().wrapping_mul(U128::zero()));\n\n // 1*1==1\n assert_eq(U128::one(), U128::one().wrapping_mul(U128::one()));\n\n // 0 * ( 1 << 64 ) == 0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * 0 == 0\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::zero()));\n\n // 1 * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::from_u64s_le(0, 1).wrapping_mul(U128::one()));\n\n // ( 1 << 64 ) * 1 == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::one().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::from_u64s_le(0, 1)));\n // -1 * -1 == 1\n assert_eq(\n U128::one(), U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff).wrapping_mul(U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff))\n );\n }\n}\n"},"51":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"52":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"55":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::context::{PrivateContext, PublicContext};\nuse dep::aztec::state_vars::{Map, PublicMutable};\nuse dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector, hash::pedersen_hash};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_outer_authwit_hash};\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map, Context>,\n}\n\nimpl AccountActions {\n pub fn init(\n context: Context,\n approved_action_storage_slot: Field,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool\n ) -> Self {\n AccountActions {\n context,\n is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicMutable::new(context, slot)\n }\n )\n }\n }\n}\n\nimpl AccountActions<&mut PrivateContext> {\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload) {\n let valid_fn = self.is_valid_impl;\n\n let fee_hash = fee_payload.hash();\n assert(valid_fn(self.context, fee_hash));\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n\n let app_hash = app_payload.hash();\n assert(valid_fn(self.context, app_hash));\n app_payload.execute_calls(self.context);\n }\n // docs:end:entrypoint\n\n // docs:start:spend_private_authwit\n pub fn spend_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can \n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_outer_authwit_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n self.context.push_new_nullifier(message_hash, 0);\n IS_VALID_SELECTOR\n }\n // docs:end:spend_private_authwit\n}\n\nimpl AccountActions<&mut PublicContext> {\n // docs:start:spend_public_authwit\n pub fn spend_public_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can \n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_outer_authwit_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let is_valid = self.approved_action.at(message_hash).read();\n assert(is_valid == true, \"Message not authorized by account\");\n self.context.push_new_nullifier(message_hash, 0);\n IS_VALID_SELECTOR\n }\n // docs:end:spend_public_authwit\n\n // docs:start:approve_public_authwit\n pub fn approve_public_authwit(self, message_hash: Field) {\n self.approved_action.at(message_hash).write(true);\n }\n // docs:end:approve_public_authwit\n}\n"},"56":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = context.call_public_function(\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n"},"57":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"67":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn storage_address(self) -> AztecAddress {\n storage_address()\n }\n pub fn fee_per_l2_gas(self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(self) -> Field {\n fee_per_da_gas()\n }\n /**\n * Emit a log with the given event selector and message.\n *\n * @param event_selector The event selector for the log.\n * @param message The message to emit in the log.\n */\n pub fn emit_unencrypted_log_with_selector(\n &mut self,\n event_selector: Field,\n log: T\n ) where T: Serialize {\n emit_unencrypted_log(event_selector, Serialize::serialize(log).as_slice());\n }\n // For compatibility with the selector-less API. We'll probably rename the above one.\n pub fn emit_unencrypted_log(&mut self, log: T) where T: Serialize {\n self.emit_unencrypted_log_with_selector(/*event_selector=*/ 5, log);\n }\n pub fn note_hash_exists(self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n pub fn l1_to_l2_msg_exists(self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn block_number(self) -> Field {\n block_number()\n }\n\n fn timestamp(self) -> u64 {\n timestamp()\n }\n\n fn transaction_fee(self) -> Field {\n transaction_fee()\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0);\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n fn msg_sender(self) -> AztecAddress {\n sender()\n }\n fn this_address(self) -> AztecAddress {\n address()\n }\n fn chain_id(self) -> Field {\n chain_id()\n }\n fn version(self) -> Field {\n version()\n }\n fn selector(self) -> FunctionSelector {\n FunctionSelector::from_field(self.inputs.selector)\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn l2_gas_left(self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(self) -> Field {\n da_gas_left()\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n let MAX_POSSIBLE_FIELD: Field = 0 - 1;\n [\n user_gas.l2_gas.unwrap_or(MAX_POSSIBLE_FIELD),\n user_gas.da_gas.unwrap_or(MAX_POSSIBLE_FIELD)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(event_selector: Field, message: [Field]) {\n emit_unencrypted_log_opcode(event_selector, message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nfn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nfn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nfn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nfn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nfn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nfn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeTransactionFee)]\nfn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nfn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nfn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nfn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nfn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nfn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nfn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nfn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nfn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nfn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nfn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(amvOpcodeEmitUnencryptedLog)]\nfn emit_unencrypted_log_opcode(event_selector: Field, message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nfn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nfn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nfn call_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nfn call_static_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\nstruct FunctionReturns {\n values: [Field; N]\n}\n\nimpl FunctionReturns {\n pub fn new(values: [Field; N]) -> FunctionReturns {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into(self) -> T where T: Deserialize {\n Deserialize::deserialize(self.raw())\n }\n}\n"},"70":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint,\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash\n};\n\nuse dep::std::aes128::aes128_encrypt;\nuse dep::std::println;\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: GrumpkinPrivateKey,\n recipient: AztecAddress,\n recipient_ivpk_app: GrumpkinPoint,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(\n eph_sk: GrumpkinPrivateKey,\n recipient: AztecAddress,\n recipient_ivpk_app: GrumpkinPoint\n ) -> Self {\n Self { eph_sk, recipient, recipient_ivpk_app }\n }\n\n pub fn compute_ciphertext(self, ovsk_app: GrumpkinPrivateKey, eph_pk: GrumpkinPoint) -> [u8; 176] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer: [u8; 160] = [0; 160];\n\n let serialized_eph_sk: [Field; 2] = self.eph_sk.serialize();\n let serialized_eph_sk_high = serialized_eph_sk[0].to_be_bytes(32);\n let serialized_eph_sk_low = serialized_eph_sk[1].to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\n let serialized_recipient_ivpk_app = self.recipient_ivpk_app.serialize();\n let serialized_recipient_ivpk_app_x = serialized_recipient_ivpk_app[0].to_be_bytes(32);\n let serialized_recipient_ivpk_app_y = serialized_recipient_ivpk_app[1].to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n buffer[i + 96] = serialized_recipient_ivpk_app_x[i];\n buffer[i + 128] = serialized_recipient_ivpk_app_y[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash(\n [\n ovsk_app.high, ovsk_app.low, eph_pk.x, eph_pk.y,\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ]\n ).to_be_bytes(32).as_array();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::encrypted_logs::outgoing_body::EncryptedLogOutgoingBody;\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, hash::poseidon2_hash\n };\n\n use crate::context::PrivateContext;\n\n #[test]\n fn test_encrypted_log_outgoing_body() {\n let eph_sk = GrumpkinPrivateKey::new(\n 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe\n );\n let recipient_ivsk_app = GrumpkinPrivateKey::new(\n 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31,\n 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022\n );\n let sender_ovsk_app = GrumpkinPrivateKey::new(\n 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e\n );\n\n let eph_pk = eph_sk.derive_public_key();\n let recipient_ivpk_app = recipient_ivsk_app.derive_public_key();\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk_app);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n let expected_outgoing_body_ciphertext = [\n 126, 10, 214, 39, 130, 143, 96, 143, 79, 143, 22, 36, 55, 41, 234, 255, 226, 26, 138, 236, 91, 188, 204, 216, 172, 133, 134, 69, 161, 237, 134, 5, 75, 192, 10, 6, 229, 54, 194, 56, 103, 243, 57, 248, 147, 237, 4, 3, 39, 28, 226, 30, 237, 228, 212, 115, 246, 244, 105, 39, 129, 119, 126, 207, 176, 14, 75, 134, 241, 23, 2, 187, 239, 86, 47, 56, 239, 20, 92, 176, 70, 12, 219, 226, 150, 70, 192, 43, 125, 53, 230, 153, 135, 228, 210, 197, 76, 123, 185, 190, 61, 172, 29, 168, 241, 191, 205, 71, 136, 72, 52, 115, 232, 246, 87, 42, 50, 150, 134, 108, 225, 90, 191, 191, 182, 150, 124, 147, 78, 249, 144, 111, 122, 187, 187, 5, 249, 167, 186, 14, 228, 128, 158, 138, 55, 99, 228, 46, 219, 187, 248, 122, 70, 31, 39, 209, 127, 23, 244, 84, 14, 93, 86, 208, 155, 151, 238, 70, 63, 3, 137, 59, 206, 230, 4, 20\n ];\n\n for i in 0..expected_outgoing_body_ciphertext.len() {\n assert_eq(ciphertext[i], expected_outgoing_body_ciphertext[i]);\n }\n assert_eq(expected_outgoing_body_ciphertext.len(), ciphertext.len());\n }\n}\n"},"71":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse dep::std::aes128::aes128_encrypt;\n\nstruct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: GrumpkinPrivateKey, point: GrumpkinPoint) -> [u8; 48] {\n let full_key = point_to_symmetric_key(secret, point);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes(32).as_array();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n let point = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n let expected_header_ciphertext = [\n 131, 119, 105, 129, 244, 32, 151, 205, 12, 99, 93, 62, 10, 180, 72, 21, 179, 36, 250, 95, 56, 167, 171, 16, 195, 164, 223, 57, 75, 5, 24, 119, 198, 34, 99, 189, 193, 183, 227, 43, 79, 204, 214, 89, 221, 153, 246, 64\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext);\n}\n"},"72":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint,\n constants::{GENERATOR_INDEX__IVSK_M, GENERATOR_INDEX__OVSK_M}, hash::poseidon2_hash\n};\n\nuse dep::std::{embedded_curve_ops::{embedded_curve_add, EmbeddedCurvePoint}, field::bytes32_to_field};\n\nuse crate::oracle::unsafe_rand::unsafe_rand;\n\nuse crate::note::note_interface::NoteInterface;\n\nuse crate::encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n};\n\npub fn compute_encrypted_note_log(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: GrumpkinPoint,\n ivpk: GrumpkinPoint,\n note: Note\n) -> [u8; M] where Note: NoteInterface {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n let eph_sk: GrumpkinPrivateKey = fr_to_private_key(unsafe_rand());\n let eph_pk = eph_sk.derive_public_key();\n\n // @todo This value needs to be populated!\n let recipient = AztecAddress::from_field(0);\n\n let ivpk_app = compute_ivpk_app(ivpk, contract_address);\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_Header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk_app);\n let outgoing_body_ciphertext: [u8; 176] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk_app).compute_ciphertext(fr_to_private_key(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now \n\n let eph_pk_bytes = eph_pk.to_be_bytes();\n for i in 0..64 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[128 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[176 + i] = outgoing_Header_ciphertext[i];\n }\n for i in 0..176 {\n encrypted_bytes[224 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 400;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[400 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (64 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (176 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\nfn fr_to_private_key(r: Field) -> GrumpkinPrivateKey {\n let r_bytes = r.to_be_bytes(32);\n\n let mut high_bytes = [0; 32];\n let mut low_bytes = [0; 32];\n\n for i in 0..16 {\n high_bytes[16 + i] = r_bytes[i];\n low_bytes[16 + i] = r_bytes[i + 16];\n }\n\n let low = bytes32_to_field(low_bytes);\n let high = bytes32_to_field(high_bytes);\n\n GrumpkinPrivateKey::new(high, low)\n}\n\nfn compute_ivpk_app(ivpk: GrumpkinPoint, contract_address: AztecAddress) -> GrumpkinPoint {\n // It is useless to compute this, it brings no value to derive fully.\n // Issue(#6955)\n ivpk\n /*\n // @todo Just setting infinite to false, but it should be checked.\n // for example user could define ivpk = infinity using the registry\n assert((ivpk.x != 0) & (ivpk.y != 0), \"ivpk is infinite\");\n\n let i = fr_to_private_key(poseidon2_hash([contract_address.to_field(), ivpk.x, ivpk.y, GENERATOR_INDEX__IVSK_M]));\n let I = i.derive_public_key();\n\n let embed_I = EmbeddedCurvePoint { x: I.x, y: I.y, is_infinite: false };\n let embed_ivpk = EmbeddedCurvePoint { x: ivpk.x, y: ivpk.y, is_infinite: false };\n\n let embed_result = embedded_curve_add(embed_I, embed_ivpk);\n\n GrumpkinPoint::new(embed_result.x, embed_result.y)*/\n}\n"},"73":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint};\n\nuse dep::std::aes128::aes128_encrypt;\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nstruct EncryptedLogIncomingBody {\n plaintext: [u8; M]\n}\n\nimpl EncryptedLogIncomingBody {\n pub fn from_note(note: T, storage_slot: Field) -> Self where T: NoteInterface {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event(event: T, randomness: Field) -> Self where T: EventInterface {\n let mut plaintext = event.to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: GrumpkinPrivateKey, ivpk_app: GrumpkinPoint) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk_app);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use crate::encrypted_logs::incoming_body::EncryptedLogIncomingBody;\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, traits::Serialize,\n abis::function_selector::FunctionSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption},\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n context::PrivateContext\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface for AddressNote {\n fn compute_note_content_hash(self) -> Field {1}\n\n fn get_note_type_id() -> Field {1}\n\n fn get_header(self) -> NoteHeader { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(self, context: &mut PrivateContext) -> Field {1}\n\n fn compute_nullifier_without_context(self) -> Field {1}\n\n fn broadcast(self, context: &mut PrivateContext, slot: Field, ovpk_m: GrumpkinPoint, ivpk_m: GrumpkinPoint) {}\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes = serialized_note[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body() {\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n let ivpk_app = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk_app);\n\n let expected_note_body_ciphertext = [\n 131, 119, 105, 129, 244, 32, 151, 205, 12, 99, 93, 62, 10, 180, 72, 21, 47, 232, 95, 17, 240, 230, 80, 129, 174, 158, 23, 76, 114, 185, 43, 18, 254, 148, 147, 230, 66, 216, 167, 62, 180, 213, 238, 33, 108, 29, 84, 139, 99, 206, 212, 253, 92, 116, 137, 31, 0, 104, 45, 91, 250, 109, 141, 114, 189, 53, 35, 60, 108, 156, 170, 206, 150, 114, 150, 187, 198, 13, 62, 153, 133, 13, 169, 167, 242, 221, 40, 168, 186, 203, 104, 82, 47, 238, 142, 179, 90, 37, 9, 70, 245, 176, 122, 247, 42, 87, 75, 7, 20, 89, 166, 123, 14, 26, 230, 156, 49, 94, 0, 94, 72, 58, 171, 239, 115, 174, 155, 7, 151, 17, 60, 206, 193, 134, 70, 87, 215, 88, 21, 194, 63, 26, 106, 105, 124, 213, 252, 152, 192, 71, 115, 13, 181, 5, 169, 15, 170, 196, 174, 228, 170, 192, 91, 76, 110, 220, 89, 47, 248, 144, 189, 251, 167, 149, 248, 226\n ];\n\n assert_eq(expected_note_body_ciphertext.len(), ciphertext.len());\n\n for i in 0..expected_note_body_ciphertext.len() {\n assert_eq(ciphertext[i], expected_note_body_ciphertext[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n\n impl EventInterface for TestEvent {\n fn _selector(self) -> FunctionSelector {\n FunctionSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n\n fn to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes = randomness.to_be_bytes(32);\n let event_type_id_bytes = self._selector().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n\n let ivpk_app = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk_app);\n\n let expected_event_body_ciphertext = [\n 131, 119, 105, 129, 244, 32, 151, 205, 12, 99, 93, 62, 10, 180, 72, 21, 47, 232, 95, 17, 240, 230, 80, 129, 174, 158, 23, 76, 114, 185, 43, 18, 254, 148, 147, 230, 66, 216, 167, 62, 180, 213, 238, 33, 108, 29, 84, 139, 157, 165, 187, 138, 35, 3, 236, 75, 197, 105, 102, 247, 224, 253, 13, 217, 145, 62, 96, 167, 93, 23, 18, 198, 187, 91, 8, 3, 197, 195, 127, 9, 218, 111, 125, 97, 141, 129, 142, 1, 230, 108, 35, 211, 170, 170, 170, 249, 249, 104, 68, 191, 245, 207, 182, 245, 248, 82, 175, 83, 155, 138, 208, 65, 31, 129, 251, 242, 219, 76, 17, 61, 178, 187, 108, 114, 177, 215, 175, 189, 166, 221, 94, 9, 22, 57, 151, 204, 57, 220, 129, 243, 217, 18, 101, 128, 229, 40, 254, 175, 2, 21, 31, 198, 18, 152, 169, 32, 113, 92, 37, 65, 169, 119, 95, 149, 239, 8, 23, 182, 22, 209, 207, 120, 133, 90, 252, 106\n ];\n\n assert_eq(expected_event_body_ciphertext.len(), ciphertext.len());\n\n for i in 0..expected_event_body_ciphertext.len() {\n assert_eq(ciphertext[i], expected_event_body_ciphertext[i]);\n }\n }\n}\n"},"77":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/history/nullifier_inclusion.nr","source":"use dep::std::merkle::compute_merkle_root;\nuse dep::protocol_types::header::Header;\n\nuse crate::{\n context::PrivateContext, oracle::get_nullifier_membership_witness::get_nullifier_membership_witness,\n note::{utils::compute_siloed_nullifier, note_interface::NoteInterface}\n};\n\ntrait ProveNullifierInclusion {\n fn prove_nullifier_inclusion(header: Header, nullifier: Field);\n}\n\nimpl ProveNullifierInclusion for Header {\n fn prove_nullifier_inclusion(self, nullifier: Field) {\n // 1) Get the membership witness of the nullifier\n let witness = get_nullifier_membership_witness(self.global_variables.block_number as u32, nullifier);\n\n // 2) Check that the witness we obtained matches the nullifier\n assert(witness.leaf_preimage.nullifier == nullifier, \"Nullifier does not match value in witness\");\n\n // 3) Compute the nullifier tree leaf\n let nullifier_leaf = witness.leaf_preimage.hash();\n\n // 4) Prove that the nullifier is in the nullifier tree\n assert(\n self.state.partial.nullifier_tree.root\n == compute_merkle_root(nullifier_leaf, witness.index, witness.path), \"Proving nullifier inclusion failed\"\n );\n // --> Now we have traversed the trees all the way up to archive root and verified that the nullifier\n // was included in the nullifier tree.\n }\n}\n\ntrait ProveNoteIsNullified {\n fn prove_note_is_nullified(header: Header, note: Note, context: &mut PrivateContext) where Note: NoteInterface;\n}\n\nimpl ProveNoteIsNullified for Header {\n fn prove_note_is_nullified(self, note: Note, context: &mut PrivateContext) where Note: NoteInterface {\n let nullifier = compute_siloed_nullifier(note, context);\n\n self.prove_nullifier_inclusion(nullifier);\n }\n}\n"},"79":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::pedersen_hash, address::AztecAddress,\n header::Header, utils::field::full_field_less_than\n};\nuse dep::std::merkle::compute_merkle_root;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header { \n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_value_leaf_slot = pedersen_hash(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_value_leaf_slot\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_value_leaf_slot);\n let is_next_greater_than = full_field_less_than(public_value_leaf_slot, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_value_leaf_slot, \"Public data slot doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == compute_merkle_root(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"},"83":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/getters.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, grumpkin_point::GrumpkinPoint,\n storage::map::derive_storage_slot_in_map\n};\nuse crate::{\n context::PrivateContext,\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}},\n state_vars::{shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter}\n};\n\nglobal DELAY = 5;\n\n// docs:start:key-getters\ntrait KeyGetters {\n fn get_npk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_ivpk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_ovpk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_tpk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_npk_m_hash(header: Header, context: &mut PrivateContext, address: AztecAddress) -> Field;\n}\n\nimpl KeyGetters for Header {\n fn get_npk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, NULLIFIER_INDEX, self)\n }\n\n fn get_ivpk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, INCOMING_INDEX, self)\n }\n\n fn get_ovpk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, OUTGOING_INDEX, self)\n }\n\n fn get_tpk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, TAGGING_INDEX, self)\n }\n\n fn get_npk_m_hash(self, context: &mut PrivateContext, address: AztecAddress) -> Field {\n get_master_key(context, address, NULLIFIER_INDEX, self).hash()\n }\n}\n// docs:end:key-getters\n\nfn get_master_key(\n context: &mut PrivateContext,\n address: AztecAddress,\n key_index: Field,\n header: Header\n) -> GrumpkinPoint {\n let key = fetch_key_from_registry(context, key_index, address, header);\n if key.is_zero() {\n // Keys were not registered in registry yet --> fetch key from PXE\n let keys = fetch_and_constrain_keys(address);\n // Return the corresponding to index\n keys.get_key_by_index(key_index)\n } else {\n // Keys were registered --> return the key\n key\n }\n}\n\nfn fetch_key_from_registry(\n context: &mut PrivateContext,\n key_index: Field,\n address: AztecAddress,\n header: Header\n) -> GrumpkinPoint {\n let x_coordinate_map_slot = key_index * 2 + 1;\n let y_coordinate_map_slot = x_coordinate_map_slot + 1;\n let x_coordinate_derived_slot = derive_storage_slot_in_map(x_coordinate_map_slot, address);\n let y_coordinate_derived_slot = derive_storage_slot_in_map(y_coordinate_map_slot, address);\n\n let x_coordinate_registry: SharedMutablePrivateGetter = SharedMutablePrivateGetter::new(\n context,\n AztecAddress::from_field(CANONICAL_KEY_REGISTRY_ADDRESS),\n x_coordinate_derived_slot\n );\n let y_coordinate_registry: SharedMutablePrivateGetter = SharedMutablePrivateGetter::new(\n context,\n AztecAddress::from_field(CANONICAL_KEY_REGISTRY_ADDRESS),\n y_coordinate_derived_slot\n );\n let x_coordinate = x_coordinate_registry.get_value_in_private(header);\n let y_coordinate = y_coordinate_registry.get_value_in_private(header);\n\n GrumpkinPoint::new(x_coordinate, y_coordinate)\n}\n\n// Passes only when keys were not rotated - is expected to be called only when keys were not registered yet\nfn fetch_and_constrain_keys(address: AztecAddress) -> PublicKeys {\n let (public_keys, partial_address) = get_public_keys_and_partial_address(address);\n\n let computed_address = AztecAddress::compute(public_keys.hash(), partial_address);\n\n assert(computed_address.eq(address));\n\n public_keys\n}\n\n// A helper function since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n"},"84":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, grumpkin_private_key::GrumpkinPrivateKey,\n grumpkin_point::GrumpkinPoint, utils::arr_copy_slice\n};\nuse dep::std::{hash::sha256, embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul}};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: GrumpkinPrivateKey, point: GrumpkinPoint) -> [u8; 32] {\n let shared_secret_fields = multi_scalar_mul(\n [EmbeddedCurvePoint { x: point.x, y: point.y, is_infinite: false }],\n [EmbeddedCurveScalar { lo: secret.low, hi: secret.high }]\n );\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/6061): make the func return Point struct directly\n let shared_secret = GrumpkinPoint::new(shared_secret_fields[0], shared_secret_fields[1]);\n let mut shared_secret_bytes_with_separator = [0 as u8; 65];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret.to_be_bytes(), shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[64] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nfn check_point_to_symmetric_key() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n let point = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let key = point_to_symmetric_key(secret, point);\n // The following value gets updated when running encrypt_buffer.test.ts with AZTEC_GENERATE_TEST_DATA=1\n let expected_key = [\n 198, 74, 242, 51, 177, 36, 183, 8, 2, 246, 197, 138, 59, 166, 86, 96, 155, 50, 186, 34, 242, 3, 208, 144, 161, 64, 69, 165, 70, 57, 226, 139\n ];\n assert_eq(key, expected_key);\n}\n"},"85":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH, hash::poseidon2_hash,\n grumpkin_point::GrumpkinPoint, traits::{Deserialize, Serialize}\n};\nuse crate::keys::constants::{NUM_KEY_TYPES, NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH = 8;\n\nstruct PublicKeys {\n npk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n ovpk_m: GrumpkinPoint,\n tpk_m: GrumpkinPoint,\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n poseidon2_hash(\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n ]\n )\n )\n }\n\n pub fn get_key_by_index(self, index: Field) -> GrumpkinPoint {\n assert(index as u8 < NUM_KEY_TYPES, \"Invalid key index\");\n if index == NULLIFIER_INDEX {\n self.npk_m\n } else if index == INCOMING_INDEX {\n self.ivpk_m\n } else if index == OUTGOING_INDEX {\n self.ovpk_m\n } else {\n self.tpk_m\n }\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: GrumpkinPoint { x: serialized[0], y: serialized[1] },\n ivpk_m: GrumpkinPoint { x: serialized[2], y: serialized[3] },\n ovpk_m: GrumpkinPoint { x: serialized[4], y: serialized[5] },\n tpk_m: GrumpkinPoint { x: serialized[6], y: serialized[7] },\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x1936abe4f6a920d16a9f6917f10a679507687e2cd935dd1f1cdcb1e908c027f3;\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.x, deserialized.npk_m.x);\n assert_eq(keys.npk_m.y, deserialized.npk_m.y);\n assert_eq(keys.ivpk_m.x, deserialized.ivpk_m.x);\n assert_eq(keys.ivpk_m.y, deserialized.ivpk_m.y);\n assert_eq(keys.ovpk_m.x, deserialized.ovpk_m.x);\n assert_eq(keys.ovpk_m.y, deserialized.ovpk_m.y);\n assert_eq(keys.tpk_m.x, deserialized.tpk_m.x);\n assert_eq(keys.tpk_m.y, deserialized.tpk_m.y);\n}\n"},"89":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/note_header.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse dep::protocol_types::traits::{Empty, Eq, Serialize};\n\nstruct NoteHeader {\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n // Check the nonce to see whether a note is transient or not.\n note_hash_counter: u32, // a note_hash_counter of 0 means non-transient\n}\n\nimpl Empty for NoteHeader {\n fn empty() -> Self {\n NoteHeader { contract_address: AztecAddress::zero(), nonce: 0, storage_slot: 0, note_hash_counter: 0 }\n }\n}\n\nimpl Eq for NoteHeader {\n fn eq(self, other: Self) -> bool {\n (self.contract_address == other.contract_address) & \n (self.nonce == other.nonce) & \n (self.storage_slot == other.storage_slot)& \n (self.note_hash_counter == other.note_hash_counter)\n }\n}\n\nimpl NoteHeader {\n pub fn new(contract_address: AztecAddress, nonce: Field, storage_slot: Field) -> Self {\n NoteHeader { contract_address, nonce, storage_slot, note_hash_counter: 0 }\n }\n}\n\nimpl Serialize<4> for NoteHeader {\n fn serialize(self) -> [Field; 4] {\n [self.contract_address.to_field(), self.nonce, self.storage_slot, self.note_hash_counter as Field]\n }\n}\n"},"91":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__INNER_NOTE_HASH\n},\n hash::pedersen_hash, utils::arr_copy_slice\n};\n\nfn compute_siloed_hash(contract_address: AztecAddress, unique_note_hash: Field) -> Field {\n let inputs = [contract_address.to_field(), unique_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__SILOED_NOTE_HASH)\n}\n\nfn compute_unique_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\nfn compute_inner_note_hash(note: Note) -> Field where Note: NoteInterface {\n let header = note.get_header();\n let note_hash = note.compute_note_content_hash();\n\n pedersen_hash(\n [header.storage_slot, note_hash],\n GENERATOR_INDEX__INNER_NOTE_HASH\n )\n}\n\nfn compute_unique_note_hash(note_with_header: Note) -> Field where Note: NoteInterface {\n let header = note_with_header.get_header();\n\n let inner_note_hash = compute_inner_note_hash(note_with_header);\n\n compute_unique_hash(header.nonce, inner_note_hash)\n}\n\nfn compute_siloed_note_hash(note_with_header: Note) -> Field where Note: NoteInterface {\n let header = note_with_header.get_header();\n\n let unique_note_hash = if (header.nonce == 0) {\n // If nonce is zero, that means we are reading a public note.\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n // Remove this once notes added from public also include nonces.\n compute_inner_note_hash(note_with_header)\n } else {\n compute_unique_note_hash(note_with_header)\n };\n\n compute_siloed_hash(header.contract_address, unique_note_hash)\n}\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface {\n let header = note_with_header.get_header();\n let inner_nullifier = note_with_header.compute_nullifier(context);\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_insertion(note: Note) -> Field where Note: NoteInterface {\n compute_inner_note_hash(note)\n}\n\npub fn compute_note_hash_for_read_request(note: Note) -> Field where Note: NoteInterface {\n let header = note.get_header();\n\n if (header.nonce != 0) {\n compute_unique_note_hash(note)\n } else {\n compute_inner_note_hash(note)\n }\n}\n\npub fn compute_note_hash_for_consumption(note: Note) -> Field where Note: NoteInterface {\n let header = note.get_header();\n // There are 3 cases for reading a note intended for consumption:\n // 1. The note was inserted in this transaction, and is transient.\n // 2. The note was inserted in a previous transaction, and was inserted in public\n // 3. The note was inserted in a previous transaction, and was inserted in private\n\n if (header.note_hash_counter != 0) {\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)\n } else {\n // If a note is not transient, that means we are reading a settled note (from tree) created in a\n // previous TX. So we need the siloed_note_hash which has already been hashed with\n // nonce and then contract address. This hash will match the existing leaf in the note hash\n // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n compute_siloed_note_hash(note)\n // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n // nullification, it is not strictly necessary to silo the note hash before computing\n // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n }\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier(\n // docs:start:compute_note_hash_and_optionally_a_nullifier_args\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S] // docs:end:compute_note_hash_and_optionally_a_nullifier_args\n) -> [Field; 4] where T: NoteInterface {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n T::set_header((&mut note), note_header);\n\n let inner_note_hash = compute_inner_note_hash(note);\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n // Should always be calling compute_unique_hash() once notes added from public also include nonces.\n let unique_note_hash = if note_header.nonce != 0 {\n compute_unique_hash(note_header.nonce, inner_note_hash)\n } else {\n inner_note_hash\n };\n\n let siloed_note_hash = compute_siloed_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [inner_note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"92":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use dep::protocol_types::grumpkin_point::GrumpkinPoint;\nuse crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::NoteInterface,\n utils::{compute_note_hash_for_insertion, compute_note_hash_for_consumption}\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint\n) where Note: NoteInterface {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n Note::set_header(note, header);\n let inner_note_hash = compute_note_hash_for_insertion(*note);\n\n // TODO: Strong typing required because of https://github.com/noir-lang/noir/issues/4088\n let serialized_note: [Field; N] = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n inner_note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_new_note_hash(inner_note_hash);\n\n Note::broadcast(*note, context, storage_slot, ovpk_m, ivpk_m);\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n Note::set_header(note, header);\n let inner_note_hash = compute_note_hash_for_insertion(*note);\n\n context.push_new_note_hash(inner_note_hash);\n}\n\npub fn destroy_note(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface {\n let mut nullifier = 0;\n let mut consumed_note_hash: Field = 0;\n nullifier = note.compute_nullifier(context);\n\n // We also need the note hash corresponding to the \"nullifier\"\n let header = note.get_header();\n\n // A non-zero note hash counter implies that we're nullifying a transient note (i.e. one that has not yet been\n // persisted in the trees and is instead if the pending new commitments array). In such a case we compute its hash \n // to inform the kernel which note we're nullifyng so that it can find it and squash both the note and the \n // nullifier. This value is unused when nullifying non transient notes - in that case the kernel simply persists\n // the nullifier in the tree.\n if (header.note_hash_counter != 0) {\n // TODO(1718): Can we reuse the note hash computed in `compute_nullifier`?\n consumed_note_hash = compute_note_hash_for_consumption(note);\n }\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, consumed_note_hash, nullifier_counter) == 0);\n\n context.push_new_nullifier(nullifier, consumed_note_hash)\n}\n"},"93":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/note_getter.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note. \n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value = serialized_note[selector.index].to_be_bytes(32);\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(serialized_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"Mismatch return note field.\");\n }\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\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(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> Note where Note: NoteInterface {\n let note = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\n note\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n let opt_notes = get_notes_internal(storage_slot, options);\n\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n let mut returned_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let mut num_notes = 0;\n let mut prev_fields = [0; N];\n for i in 0..filtered_notes.len() {\n let opt_note = filtered_notes[i];\n if opt_note.is_some() {\n let note = opt_note.unwrap_unchecked();\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, 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_request(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_note_hash_read_request(note_hash_for_read_request);\n\n // The below code is used to collapse a sparse array into one where the values are guaranteed to be at the \n // front of the array. This is highly useful because the caller knows that the returned array won't have\n // more than option.limits notes, and can therefore loop over this limit value instead of the entire array,\n // resulting in a smaller circuit and faster proving times.\n // We write at returned_notes[num_notes] because num_notes is only advanced when we have a value in \n // filtered_notes.\n returned_notes[num_notes] = Option::some(note);\n num_notes += 1;\n };\n }\n if options.limit != 0 {\n assert(num_notes <= options.limit, \"Got more notes than limit.\");\n }\n\n assert(num_notes != 0, \"Cannot return zero notes\");\n\n returned_notes\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note where Note: NoteInterface {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n )\n}\n\nunconstrained pub fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions\n) -> [Option; MAX_NOTES_PER_PAGE] where Note: NoteInterface {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, 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 let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [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_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/accounts/src/artifacts/SchnorrAccount.json b/yarn-project/accounts/src/artifacts/SchnorrAccount.json deleted file mode 100644 index f7e04541036..00000000000 --- a/yarn-project/accounts/src/artifacts/SchnorrAccount.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"SchnorrAccount","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[{"end":8,"start":5}],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[8,9,10,11]},"bytecode":"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","debug_symbols":"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"},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)"],"abi":{"error_types":{},"param_witnesses":{"app_payload":[{"end":60,"start":39}],"fee_payload":[{"end":72,"start":60}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528]},"bytecode":"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","debug_symbols":"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Ns6Vpc7UzpWlztTOlaV63uruS+hf1E6VpfqStpf3f92w/XdqxZTaqbLUqdqpstSp2qmyVK8bonn9708/urzUTpWlTtVOlaV6S3sH6vFLckxTZalTtVNlqVO14FmqbIcuxFKjfCkfPBydlS/Y5dey/yxf2/L9Z20Nsh8v7vEzwz+9qyNux3SE9TO6vTqUd6/ueQPs97LsLq6/1v9tI3iM+pGNPclLa+4nNq4/bL7qWO+57saE3n5jI3g++5GNtb+0hmXJf/j4L62j01kM20Mr659eTrSu1zVtztT2deFo3OV36vJl4S4/cJcfuctP3OULd/mZu/zCXT531xXurivcXTdzd93M3XUzd9fN3F13+LlXyuVzd93M3XUzd9fN3F03c3fdwt11C3fXLdxdt3B33eGnzCiXz911C3fXLdxdt3B33cLddSt3163cXbdyd93K3XWHE/6Vy+fuupW761burlu5u27l7rqNu+s27q7buLtu4+66w4nUyuVzd93G3XUbd9dt3F23cXfdzt11O3fX7dxdt3N33eEEVeXyubtu5+66nbvrdu6u26m7bl+ou25fqLtuX6i7bl+ou25fqLtuX6i7bl+ou25fqLtuX6i7bl+4u27g7rqBu+sG7q4buLvucEyecvncXTdwd93A3XUDd9cN3F03cnfdyN11I3fXjdxddzhQTbl87q4bubtu5O66kbvrRu6um7i7buLuuom76yburjsc7KVcPnfXTdxdl5tN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTdW52VSdm03VudlUnZtN1bnZVJ2bTRUWbjjVWj91313rp268a/3UnXetn7r1/nXgOnn91M13rZ+6+671U7fftX7y/ouOqao9b/W3d/WD99/T+sH772n94P33tH7w/ntaP3j/Pa0fvP+e1g/ef0/rB++/rctWf6/la/3g/fesfnRg1Wn94P33tH7s/huW/fsb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df/81+iKvO6fl9+Q8/6F8pHz/oXykbvuhfKRu+6F8pG77oXykbvuhfKRu+6F8pG77oXyubtu4+66nbvr9uFd9/DuwdfXhtBfkTPE5VPm/PRITI/sAhK7AGEXkNkFFHYBlV1AgxGwldTRSkqLQq9cr8arpFDkpKQQtkmlEOTT3y5pLyogFhUHF6X6A0BaEnf5wl1+5i6/cJdfuctv3OV36vLDwl1+4C6fu+sG7q4buLtu4O66gbvrBu6uG7i7buDuupG760burhu5u27k7rqRu+tG7q4bubtu5O66kbvrRu6um7i7bkJe90+fEk4Jed2/UD7yynP6pGRKyCvPhfKRV57z8gV55blQPnLev1A+ct6/UD7yun/6wE8S5HX/QvnIef9C+ch5/0L5yF33QvnIXfdC+chd97z8jNx1L5SP3HUvlI/cdS+Uz911NSggT5bP3XXz8K77k8cLl72OsHx6yO7T42C5sgto7AI6uYCysAsI7AIiu4AELWDbuYe/sPGfBbz5y337y0v/9FrZxYolsdmSWOg08MfD4QffQ+g0cEUAdBq4IgA6DVwQUKHTwBUB0GngigDoNHBFAHQauDBjo0HqeVYAdNe+IgCnE28l4fTWrSSNbtlfpzDEmONJSSFvRzZkeV9ShytJg37zo5J0nybRoN88WX7kLj9xly/c5Wfu8gt3+ZW7/MZdfqcuv3N33c7ddTt31+3cXVeDe/Nk+dxdt3N33c7ddTt31+3UXVcW6q4rC3XXlYW668pC3XVloe66slB3XVmou64s1F1XFuquKwt31w3cXTdwd93A3XUDd9dVYfM8WD531w3cXTdwd93A3XUDd9eN3F03cnfdyN11I3fXVWHzPFg+d9eN3F03cnfdyN11I3fXTdxdN3F33cTddRN311UhIz1YPnfXTdxdN3F33cTddRN31xXurivcXVe4u65wd10VLtWD5XN3XeHuusLddYW76wp3183cXTdzd93M3XUzd9dV4VI9WD53183cXTdzd93M3XUzd9ct3F23cHfdwt11C3fXVWFLPVg+d9ct3F23cHfdwt11C3fXrdxdt3J33crddSt311XhPT1YPnfXrdxdt3J33crddSt31+VmUwk3m0q42VTCzaYSbjaVcLOphJtNJdxsKuFmUwk3m0q42VTCzaYSbjaVcLOphJtNJdxsKuFmUwk3m0q42VTCzabK3GyqzM2mytxsqszNpsoLddfN3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrMzabK3GyqzM2mytxsqszNpsrcbKrCzaYq3Gyqws2mKtxsqrJQd93CzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpircbKrCzaYq3Gyqws2mKtxsqsLNpqrcbKrKzaaq3Gyqys2mqgt1163cbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsrNpqrcbKrKzaaq3Gyqys2mqtxsqsbNpmrcbKrGzaZq3GyqtlB33cbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2matxsqsbNpmrcbKrGzaZq3Gyqxs2m6txsqs7NpurcbKrOzabqC3XX7dxsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3Gyqzs2m6txsqs7NpurcbKrOzabq3GyqsHDDqdb6qfvuWj91413rp+68a/3UrXetn7r3rvVTN9+1furuu9ZP3X7X+sn7Lzemaq2fvP9yg6rW+sn7Lzeqaq2fvP9yw6rW+sn7Lzeuaq2fvP9yA6vW6sj7Lzeyaq2OvP9yQ6vW6sj7Lze2aq2OvP9yg6vW6sj7Lze6aq2fvP9yw6vW+sn7Lze+aq2fvP9yA6zW+sn7LzfCaq2fvP9yQ6zW+sn7LzfGaq2fvP9yg6zW+sn7LzfKaq2fvP9yw6zW+sn7LzfOaq2fvP9yA63W+sn7LzfSaq2fvP9yQ63W+sn7LzfWaq2fvP9yg63W+sn7Lzfaaq2fvP9yw63W+sn7Lzfeaq2fvP9yA67W+sn7Lzfiaq2fvP9yQ67W+sn7Lzfmaq2fvP9yg67W+sn7Lzfqaq2fvP9yw67W+sn7Lzfuaq2fvP9yA6/W+sn7Lzfyaq2fvP9yQ6/W+sn7Lzf2aq2fvP9yg6/W+sn7Lzf6aq2fvP9yw6/W+sn7Lzf+aq2fu/8Gcv5VIOdfBXL+VSDnX4WFu/8Gcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUg518Fcv5VIOdfBXL+VSDnXwVy/lUk519Fcv5VJOdfRXL+VVy4+28k519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnX0Vy/lUk519Fcv5VJOdfRXL+VSTnXyVy/lUi518lcv5VIudfpYW7/yZy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+VSLnXyVy/lUi518lcv5VIudfJXL+lZDzr4ScfyXk/Csh51/Jwt1/hZx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv6VkPOvhJx/JeT8KyHnXwk5/0rI+VdCzr8Scv5VJudfZXL+VSbnX2Vy/lVeuPtvJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm519lcv5VJudfZXL+VSbnX2Vy/lUm518Vcv5VIedfFXL+VSHnX5WFu/8Wcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUh518Vcv5VIedfFXL+VSHnXxVy/lUl519Vcv5VJedfVXL+VV24+28l519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnX1Vy/lUl519Vcv5VJedfVXL+VSXnXzVy/lUj5181cv5VI+dftYW7/zZy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSPnXzVy/lUj5181cv5VI+dfNXL+VSfnX3Vy/lUn5191cv5VX7j7byfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5VJ+dfdXL+VSfnX3Vy/lUn5191cv5V5+ZfxYWbf7XWT91/1/qp++9aP3X/Xeun7r9r/dT9d62fuv+u9VP337V+6v671k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v95P2Xm3+11k/ef7n5V2v93P03kPOvAjn/KpDzrwI5/yos3P03kPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868COf8qkPOvAjn/KpDzrwI5/yqQ868iOf8qkvOvIjn/KpLzr+LC3X8jOf8qkvOvIjn/KpLzryI5/yqS868iOf8qkvOvIjn/KpLzryI5/yqS868iOf8qkvOvIjn/KpLzryI5/yqS868iOf8qkvOvIjn/KpLzryI5/yqS868iNH8pS/x4bZaj+pHX/yv1I68/ObdX/aUe1I+8/lypH3n9uVI/8vpzpX7k/H+hfmj+z5X6kdf/EsrHa0uKB/Ujr/9X6kfO/1fqF/L6kfvvlfqR+++V+pH775X6kfvvlfqR+++F+qH5P1fqJ++/0PyfK/WT919o/s+V+sn7LzT/50r95P0Xmv9zpf7h/ffwnuDX17baw+vFLcj+l3v93d3G8bSgR9UGU2qjKbWJVO2uQOgVZHoFhV5B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yUmzexxpm5M5nT3115aw/eVPTobPTprd46g7aXaPo+6k2T2OupNm9zjaTto9BVfdSbN7nJ85Ka8U1HI9cNLsHkfdSbN7HHUnxZ1UctL3OFpO+h5Hy0nf41xysr4eVms9HDjpexwtJ32Po+Sk3RN+1Z30PY6Wk77H0XLS9zhaToo7ecHJHl4SeywHTvoeR8tJ3+NoOel7HC0nfY+j5aTvcZSctHvCr7qTZvc4uSyvqssSTpwMa0PZCimfnn2Rz16a3eXc4KXZfc4NXop7qeal2b3Oz7yM4fUzRIit/uHl11df4NrZPRf4Yd/N7qMe9t3sruth383u0Z713e55xg/77vu/Z3z3veIzvvu+8hnfxX1/xHffrz7ju+9Xn/Hd96vP+O771Wd89/3qI77bPZv6Yd99v/qM775ffcZ3368+47u474/47vvVZ3z3/eozvnt+v8H305NZo91zlx/23fPME+tMXMR9f8R3zzPP+O555hnf/f77M777/fd/6vvupWdyNS/tnjZ/g5d+7/uSl2kpr0KSHHnp97P1vPQ9nZ6X4l6qeel7Lz0vfT+l56Xvka55WV/bniB5+cPLN6+usjnf5FMlST4577ukp5z3PdVDzkffgT3lvO/XnnLed3dPOe97waecF3f+Ied9n/mU874rfcp538M+5bzvYZ9y3vewDzmffA/7lPO+h33Ked/DPuW872Gfcl7c+Yec9z3sU877HvYp530P+5Tzvod9ynnfwz7kvPge9innfQ/7lPO+h33Ked/DPuW8uPMPOe972Kec9z3sU877HvYp530P+5Tzvod9yPnse9innPc97FPO+x72Ked9D/uU8+LOP+S8p0p95y9wybJnykd8L95db/D9nBdUvLc+47t31md893vDz/jud4af8d3vC/9T33cvPZPreek5+5KXObw0hlzb6XoQ360Hyyffq9+5fcZ3v2/7jO++r3zGd99XPuO7uO+P+O77ymd8933lDb6XF4Q413rgu+8rn/Hd96DP+O771Ud8b75ffcZ3368+47vvV5/x3fert/re5MB3cd8f8d33q8/47vvVS76vL3kVUj7VcfBEXZbt1JycP63wn5+oa75jfcp537M+5bzvWh9yvvu+9Snnfef6lPO+d73D+dz3BBoPnPfd61POizv/kPO+g33Ked/DPuW872Gfct73sDc4L33ZnG9/pspf3V3rvt/Fv0pp8b0xw1XyffQNV6nU/dWfnf/Ua9Li++innPd99FPOizv/kPO+j37Ked9HP+W876Ofct730Xc43zaiUOn9wHnfGz/kfPD97lPO+x72Ked9D/uU876Hfcp5cecfct73sHc4Hzb/avgzz//qjnLw/S7DVfK9McNV8n30DVepLdtvaH9U8kev8X30Q85H30c/5bzvo59y3vfRTznv++innBd3/iHnfR99h/Mhb85/8u9P531v/JTzvt99ynnfwz7lvO9hH3I++R72Ked9D/uU876HvcH5b04R+9Ud5eT7XYarJH6VCK6S2X10SVvV6w/3p1cpbJOXRT5pLO3tJ+DVamINf9Sx+252F/2w72b30A/7bnYH/bDvZvfPar5vXorZHfENXprd497gpdld6w1emt1b3uCluJdqXvo+Tc9L33vpeen7qWte9q2QuuQ/vHxTR24fL679032b+Ml23049YrvvpvRtj3H705Lf72Kz77ye8d13ac/47ju6Z3z33d8zvov7/ojvvqu8wffzu/LZd6DP+O671Uu+19g23yX8421T9t3qI7b7blXf9gtdtfhu9Rnffbf6jO++W33Gd9+tPuO7uO+P+O671Rt8P981Fd+tPuO771av+V6236lrO3tm8nzbVHy3+ojtvlvVt/1CV62+W33Gd9+tPuO771af8d13q8/4Lu77I777bvUG3893TdV3q8/47rvVS763ZXOkxeUfb5uq71Yfsd13q/q2X+iqzXerz/juu9VnfPfd6jO++271Gd/FfX/Ed9+t3uD7+a6p+W71Gd99t/pz3+sfvu9e+hZUz0vfV6p52X2veM3LKpuXrf7vf3prpPtW8RHbfaeob/uF5Nx9p/iM7+K+P+K77xSf8d13is/47jvFZ3z3XeUNvp/fGem+A33Cd1l8t3rN9xx239uJ7z29HnLp5dOJ7Ev5zRZLFt/Zwl8i3wXDXyLfMMNfIvFLhH6JfBsOf4l8xw5/iXxzD3+J/D4A/CXyWwbolyj43QX4S+R3Fy5doi5bIT3nk0t0wXa/Y/CI7X4XQN/2859VJIj7/ojvvl9/xnffhD/ju++sn/Hdt8vP+O574Bt8P//ZPPrG9hnffbf6jO++XX3Gd9+vXvO9La9XL6eDet+9ende3PmHnPc9q77ztfWtjnhSx3HN+zXy/S3+NfK9MP418n0z/jXy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rqffH5rrevr9oamuZ/H9J8/1PD/7sRbff851PcWvJ8/1PD3XrBbPt3NdT8+3c11Pz7dzXU///XOu6+m/f051PavvP3mu5wXWevX951zX03//nOt6+u+fc11P8es51fX0+0NzXU+/PzTX9fT7Q3NdT78/NNf19PtDU13P5veH5rqefn9oruvp94fmup5+f+jh6/mTmmVzOuTlgDjexK/oZFfU7xHNdkX9LtFsV9TvE812Rf1O0WxX1O8VTXZFu98tIr2in1795xX1+0WzXVG/YzTbFfV7RkRXNIe8XdHP1+WPKyp+RSe7on7PaLYr6veMZruifs9otivq94xmu6J+z2iuK9oWv2dEekVTPriifs9otivq94xmu6J+zwj1iu7XSPwawV8jv6+jfo1SaNs1+uuvfXuNgjTZV7tysNr5vRqGq+T3X569Srpsy7b43Ze5rqffe5nqega/8zLX9fT7LnNdT7/rMtf19Hsuc11P8es51fX0ezlzXU+/6zPX9fT7Q3NdT78/NNf19PtDU13P6PeH5rqefn9oruvp94fmup5+f2iu6yl+Pae6nn5/aK7r6feH5rqefn9oruvp94fmup5+f2iq65n8/tBc19PvD811Pf3+0FzX0+8PzXU9xa/nVNfT7w/NdT19/8lzPbPEj9dmObqevv+c6nqK51ui63l6FnkTz7dzXU/x6znV9fR8O9f19N8/57qe/vvnXNfT95881/P8bL8mvv+c6npm//1zruvpv3/OdT39/tBc19PvD811PcWv51TX0+8PzXU9/f7QXNfT7w/NdT39/tBc19PvD011PYvfH5rrevr9oYev509qvnBedSt+h2i2K+r3iGa7ouJXdLIr6veJZruifqdotivq94pmu6J+t4j0in569Z9X1O8XTXZFq98xmu2K+j0joit65bzq6veMZruifs9otisqfkUnu6J+z2i2K+r3jGa7on7PaLYr6veMSK9oygdX1O8ZTXZFm98zmu2K+j0j1Cu6XyO/C4R/jfy+jv41ymW7Rr2cXKMeX89f9ho+vbZ8ukbi1wj+Gvm9l2evkTLXsvmdl7mup993met6+l2Xua6n33OZ6np2v+My1/X0+y1zXU+/NzPX9fT7OHNdT/HrOdX19PtDc11Pvz801/X0+0NzXU+/PzTX9fT7QzNdz774/aG5rqffH5rrevr9obmup98f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4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwbef9XA+68aeP9VA++/ag/s97eB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vx28/6qD91918P6rDt5/1R/Y728H77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+q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jsK/n5HH5+vUevE67abX+e9/36R/vo70mv/+OgqfU1p7nXTT6+SbXqfc9DoL9898fZ2v76y//s726+/sv/7O8evvnL/9zpXPcVx8Z/r1d+Zff2f59Xf++neo/vp3qP76d6j++neo/vp3qP76d6j9+neo/fp3qP36d6j9+neo/fp3qP36d6j9+neo/fp3qP36d6j9+neo//p3qP/6d6j/+neo//p3qP/6d6j/+neo//p3qP/6d6j/+neo//p3aPz6d2j8+ndo/Pp3aPz6d2j8+ndo/Pp3aPz6d2j8+ndo/Pp3aPz6d2j++ndo/vp3aP76d2j++ndo/vp3aP76d2j++ndo/vp3aP76d2j+9ndIFv6e38d7X9Rb/vzaL3dc6suLpDteJN/xIuWGF9GYZY82P2cW4+9eVRRmv5Lk43UkjcfF65SbXkduep160+u0m16n3/Q646bXmfe8jsLsd+11FGZxKbfvXyff9DrlpteRm16n3vQ6CudBfny+Ts714nX6Ta8zbnqdec/raMzml14n3fQ6CudB7o/P1xlXr1Nueh256XXqTa/TbnodjfOgla/XaRevM256nXnP69THTa+TbnqdfNPrFN3XmeXideSm16k3vY7CeSD182+c0q9ep9/0OuOm15n3vI5CVtHzTu5fryN/vM5/fnUdH780dXx97Zgvj5TsPVK290jF3iOJvUeq9h6p2Xukbu+Rhr1HmuYeqds7vbu907vbO727vdO72zu9u73Tu9s7vbu907vbO727vdN72Du9h73Te9g7vYe903vYO72HvdN73H4IPD7+lFbT19/g8/NFPp9pPgw+0+2/4PnzmUq9eCYx+EzV4DM1g8/UDT7TXo3y9TrzltepCikoz78OfE50q9RvGKfy8ee6VL+eqUh+eaZk8JmywWcqBp9JDD5TNfhMzeAz9bufqX38qSG9/AXtz2caBp9p2num9DD4TMngM2WDz1QMPtPd53j+9Bc594tnqgafqRl8pm7wmYbBZ5r2nik/DD7T3nP863XyTa9Tbnoduel16k2v0256nX7T64ybXmfe8zrlcdPr3HQelJvOg3LTeVBuOg/KTedBuek8KDedB+Wm86DcdB7ITeeB3HQeaLyLv/XPTyn19N08eCUnp2q853/DU4nJp6omn6qZfKpu8qmGyaeaW5/q83U0Pgex9DrpptfJN71Ouel1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86/Eef6VOM+/Euf5V+I8/6o6z7+qzvOvqvP8q+o8/6o+fN+/1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd519V5/lX1Xn+VXWef1Wd51815/lXzXn+VXOef9Wc51+1h+/7tznPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr5jz/qjnPv2rO86+a8/yr7jz/qjvPv+rO86+68/yr/vB9/3bn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/1Z3nX3Xn+Vfdef5Vd55/NZznXw3n+VfDef7VcJ5/NR6+79/hPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr4bz/KvhPP9qOM+/Gs7zr6bz/KvpPP9qOs+/ms7zr+bD9/07nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5V9N5/tV0nn81nedfTef5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phSE9gUzClpoXzClILQvmFIQ2hdMKQjtC2b+TsejCWizgtDv7ykFcd7Jv58pzlv29zN5vDfH6xLEeZbzm2c6ytfZiGI3zzTiPZNHu86Pnsn5d0882nW2Pv8J/vwX+PMb+PMX8Oev4M/fwJ+/gz//wH7+Af7+HeDv3wH+/h3g71+PXp2tzw/+/h3g798B/v4d4O/fgf3+tQf2+9ce2O9fe2C/f+2B/f61B/b71x7Y7197YL9/7YH9/rUH9vvXHuDv3wP8/XuAv38P8PfvAf7+den+2fn84O/fA/z9e4C/fw/w9+8B/v49wd+/J/j79wR//57g71+X7p+dzw/+/j3B378n+Pv3BH//nuDv3wv8/XuBv38v8PfvBf7+dele2vn84O/fC/z9e4G/fy/w9+8F/v418Pevgb9/Dfz9a+DvX5fuq53PD/7+NfD3r4G/fw38/Wvg798C/v4t4O/fAv7+LeDvX5fuq53PD/7+LeDv3wL+/i3g798C/v6t4O/fCv7+reDv3wr+/nXpr9r5/ODv3wr+/q3g798K/v6t4O/fBv7+beDv3wb+/m3g71+XTqmdzw/+/m3g798G/v5t4O/fBv7+Be+/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+qwLef1XA+68KeP9VAe+/Kg/s928B778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7ryp4/1UF77+q4P1XFbz/qj6w378VvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv2rg/VcNvP+qgfdfNfD+q/bAfv828P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qD91918P6rDt5/1cH7r/oD+/3bwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsB3n81wPuvBnj/1QDvvxoP7PfvAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+6+OB3gB1lMA9hv4KQD7FfwUgP0OfgrAfgk/BWC/hZ8CsF/DTwHY7+GnAOwX8VMA+psYvArrKQD9TQxehvUUgP4mBq/DegpAfxODF2I9BaC/icErsZ4C0N/E4KVYz8dDfxOD12I9Hw/9TQxejPV8PPQ3MXg11vPx0N/E4OVYz8dDfxOD12M9BaC/icELsp4C0N/E4BVZTwHob2LwkqynAPQ3MXhN1lMA+psYvCjrKQD9TQxelfUUgP4mBi/LegpAfxOD12U9BaC/icELs54C0N/E4JVZTwHob2Lw0qynAPQ3MXht1lMA+psYvDjrKQD9TQxenfUUgP4mBi/PegpAfxOD12c9BaC/icELtJ4C0N/E4BVaTwHob2LwEq2nAPQ3MXiN1lMA+psYvEjrKQD9TQxepfUUgP4mBi/TegpAfxOD12k9BaC/icELtZ4C0N/E4JVaTwHob2LwUq2nAPQ3MXit1lMA+psYvFjrKQD9TQxerfUUgP4mBi/XegpAfxOD12s9BaC/icELtp4C0N/E4BVbTwHgb+IDvWPrQO/YOtA7tg70jq3jAf4mPtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrQO/YOtA7tg70jq0DvWPrRO/YOtE7tk70jq0TvWPrfIC/iU/0jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YOtE7tk70jq0TvWPrRO/YutA7ti70jq0LvWPrQu/Yuh7gb+ILvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7ti70jq0LvWPrQu/YutA7tgy9Y8vQO7YMvWPL0Du27AH+Jjb0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOLUPv2DL0ji1D79gy9I4tQ+/YMvSOrYLesVXQO7YKesdWQe/YKg/wN3FB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tip6x1ZF79iq6B1bFb1jqz7A38QVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2GroHVsNvWOroXdsNfSOrfYAfxM39I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6ujd2x19I6tjt6x1dE7tvoD/E3c0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2B3rE10Du2BnrH1kDv2BoP8DfxQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXAO7bOB3jH1lMA9pv4KQD7TfwUgP0mfgrAfhM/BWC/iZ8CsN/ETwHYb+KnAOw38VMA+psYvGPrKQD9TQzesfUUgP4mBu/YegpAfxODd2w9BaC/icE7tp4C0N/E4B1bTwHob2Lwjq2nAPQ3MXjH1lMA+psYvGPrKQD9TQzesfUUgP4mBu/YegpAfxODd2w9BaC/icE7tp4C0N/E4B1bTwHob2Lwjq2nAPQ3MXjH1lMA+psYvGPrKQD9TQzesfUUgP4mBu/YegpAfxODd2w9BaC/icE7tp4C0N/E4B1bTwHob2Lwjq2nAPQ3MXjH1lMA+psYvGPrKQD9TQzesfUUgP4mBu/YegpAfxODd2w9BaC/icE7tp4C0N/E4B1bTwHob2Lwjq2nAPQ3MXjH1lMA+psYvGPrKQD9TQzesfUUgP4mBu/YegpAfxODd2w9BaC/icE7tp4C0N/E4B1bTwHob2Lwjq2nAPQ3MXjH1lMA+psYvGPrKQD9TQzesfUUgP4mBu/YegpAfxODd2w9BaC/icE7tp4CwN/EB3rH1oHesXWgd2wd6B1bxwP8TXygd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1oHesXWgd2wd6B1bB3rH1onesXWid2yd6B1bJ3rH1vkAfxOf6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2yd6B1bJ3rH1onesXWid2ydoRueip2/vrbYrYDI74EpAZE/hUrpLwG13QmI/Ck0JSDyp9CUgMifQlMCIueBGQGh+4WmBER+D9Sj/vraep13AiK/B6YERM4DUwIMXUDkN/GUgMhv4ikBkd/EUwIiv4mnBER+E88ICN0vNCUA/U0cul9oSgD6mzh0v9CUAPQ3ceh+oSkB6G/i0P1CUwL++pv4dl34v7+2t3G8vrgf9vs7j/YfF5F/v41or9yDS+7JJfcClfsmwfAlFHwJFV9Cw5fQ8SWguonfEhqqQ3iTgPrWf5OA+iZ/kxD67dzb4/XF43szMr6+82P8/tpq73JDv8n95YZ+6/9MrvMve7TQbmIvmtAuZS+a0O5nL5rQrmormh7are1FE9oF7kUT2l3uRZPItXqjMaG5QyM3fItGbvgWjdzwLRq54Vs0csN3aIbc8C0aueFbNHLDt2jkhm/RmNDcoZEbvkUjN3yLRm74Fo3c8C0aueEbNNdDbvgWjdzwLRq54Vs0csO3aExo7tDIDd+ikRu+RSM3fItGbvgWjdzwHZpDbvgWjdzwLRq54Vs0csO3aExo7tDIDd+ikRu+RSM3fItGbvgWjdzwHZqT09dMNEVeJ6evmULD+YaaaPa7Ts431BQazjfUFBrON9QMmotzXzOFhnNfM4WG09dMNB09/79Cc4fGhOYODee+ZgoNpxueQsPphqfQcLrhKTScbngGjXG64Sk0nG54Co3c8C0aueFbNJYHzQ++89GrvRQ+/y2/v3Pp/6awlJfAdtyBTOSd94JM5LT3gkzky/eCTOTinUC+wUnk493hlERO3h9OIi/vDyeRm/eHk8jP+8MxwbmHI5f+AQ6p8x719Z2f3+z6A85/C9WF1Hn7gyR13j8CeZ5fAq3cgSR16e4gY9/UQQJJ6v79QZImBX+QpKnCH6QJpA9I0rTyM5ATG9zYN5+QQHImm/NxvX7sej7en/k/J5vY96+QQHImm5+BnHnZxL4FhgSSM9ksAMmZbBaA5Ew2C0CaQPqA5Ew2C0ByJpsfgpxINpmu1e0FSZpsjuOLzfGu8D8nm0yX8LaCzHQ3bxnImZdNpit7e0GSJht/kKTJxh+kCaQPSNJk4w+SNNn4gyRNNj8DOZFsMt0p3AuS9Wc2vf4GOb4B2cbXd368fW21N5CZbiDuBcn6Mxt3kKzJph5fIJs5LC0yXWPcC9IE8luQMz4y06XHvSBZk407SNZk4w6SNdm4g2T9mY0zSMt0z3IvSNaf2fwI5PdLC8t0K3MvSCWbo//5mxZvcExw7uEogXyAQ5oqnourr2c+y/99YWCZrnHuBUmaKn4EcsrDkaYKd5CZ7oLuBUmaKvxBkqYKf5CkqcIfpAmkD0jStPIzkBMLg0y3UveCVLI5r+smP2e6reoPRwnkHs7Jmipq/3rmfjgsDE7WVOEOkjVV/ATkjIfLdB94L0gTSB+QrKnCHSRrqnAHyZoq3EGyJhB3kKxp5UcgJxYGme5y7wWpZOMEUsnGCaSSjRNIE0gfkEo2TiCVbJxAKtmc/c8/+H6Do7TyAY4SyD2cTPfNb7/zm1wG7/8mN7RDH191h328f+f/Lje0j/aXa2nkzmySYl/19pcb2jn6yw3t7/zlhnZs/nJDezB3ubFvTf9M7kQ2i3092l9uHlc1JTePq5qSa1xyE7mqGbmxXVX/HQDH5RARYl8/9pcb21X9RO6UzYjtqrzlxr736y83tqtylxvbVbnLje2q3OVaHrkTNiP2tVh/uXlc1ZTcPK5qSm4iVzUjN5GrmpAb+tboeNjrO49HqQ4RIfRF0AVyI7uqn8mdsRmhr2sukGtcciO7qgVyI7uqBXIju6oFciO7qh/KnbEZkV2Vv9zQdw4XyM3jqqbkJnJVM3ITuaoZuYYit/4ZAN8kwDilewkw7udeQmxHM15NtuN4ePy2aeibbAvkxnY0P5E741dD3zdbIDe2o3GXG9vRuMuN7Wjc5RqX3Nju50dyJ/xq6BtWC+TmcVVTcvO4qim5iVzV93JL6NtKC+QmclUzcnFc1fj3DFtCXwialGCRJRz2W8L7n+n+6390/Xx1oHZ7e4r2h9zQ7sdfbmj38yO5rX/9tvtxfvOdJzYUJfT1nM1oQruqvWhCO7CtaELfrNmMJrSz24smtAvciya0u9yLxoTmDk0eh+uORm74Fo3c8C0aueFbNHLDd2hC31rZjEZu+BaN3PAtGrnhWzQmNHdo5IZv0cgN36KRG75FIzd8i0Zu+A5N6Pscm9HIDd+ikRu+RSM3fIvGhOYODaevKfb6TYlit2g4fc0MmtC98AvRlNeJgFLbHRrON9QUGs431BQazjfUFBrOfc0UGs59zRQaTl8zcWG9hO7S34yGc18zgyZ0R/9mNJxueAoNpxueQsPphqfQmNDcoeF0w1NoON3wFBq54Vs0csO3aOSG79CEvq3wQzQ/+M6tvf6It71/3z/+wDD0HYbNaBK5YW80idywNxoTmjs0idywN5pEbtgbTSI3/N/QjHqHJpEb9kaTyA07o4l9E2MZmre6javcoeF0w1NoON3wFBpONzyFxoTmDg2nG55Cw+mGp9BwuuGZrqzYN0f2ouF0wzNoYt8ycULzJpfB4b7JDe1az/P1xeO6xjdyj0e311Mfj8fbc9R3waG96ArBxiY4tG9cITi0G1whOLTHWyE4tHNbITi0H1sgOPZ9lRWCQ/usFYLZnFbsKysrBBubYDanFfvWygrBbE4r9r2VFYLJnFaNfXNlhWAyp1Vj311ZIZjMadWHsQkmc1o19l2XFYLJnFaNfYNlhWA2pxX7XsoKwWxOK/ZtkxWC2ZxW7DskKwSzOa3YN0NWCGZzWrHve6wQzOa0Yt/iWCGYzWnFvpuxQjCb04p942KFYDanFfsexQrBbE4r9u2IFYLZnFbsOw8rBLM5rdg3GVYIZnNase8nrBDM5rQuNqcV++7FCsFsTutic1rG5rRiXyFZIZjNacW+GLJCsLEJZnNasW92rBDM5rRi39dYIZjNacW+hbFCMJvTin23YoVgNqcV+8bECsFsTiv2PYgVgtmcVuzbDSsEszmt2HcWVghmc1qxbyKsEMzmtGLfL1ghmM1pxb41sEIwm9OKfRdghWA2pxW7w3+FYDanFbtvf4VgNqcVuxt/hWA2pxW7x36FYDanFbtzfoVgNqcVux9+hWA2p8XWEV/ZOuIrW0d8ZeuIr2wd8ZWtI76ydcRXto74ytYRX9k64itbR3xl64ivbB3xla0jvrJ1xFe2jvjK1hFf2TriG1tHfGPriG9sHfGNrSO+PYxNMJnTamwd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuI7W0d8Z+uI72wd8Z2tI74/jE0wmdPqbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHfEzWIj3a+vrj9+Z3f5OZ5C0/JzfMJPXp/ffE///d/l5vn83lKbp5P5ym5eT6bp+TmycAzchM1Sk/JTfTenZGb6L07IzdP9p2Sa1xyuVxVohbpKbmorupNAqpTepMQ2v1c7eu/IxsPlyAeu+d5heDQDmiF4NAeaIXg0C5ohWBjExzaCa0QHNoLrRAc2g2tEBzaO60QzOa0Yvc8rxDM5rRi9zyvEMzmtGL3PK8QzOa0Yvc8rxDM5rRi9zyvEEzmtEbsnucVgsmc1ojd87xCMJnTGg9jE0zmtEbsnucVgsmc1ojd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OK3fO8QjCb04rd87xCMJvTit3zvEIwm9OqbE4rdpP3CsFsTquyOa1qbILZnFbsxvYVgtmcVuzW9hWC2ZxW7Ob2FYLZnFbs9vYVgtmcVuwG9xWC2ZxW7Bb3FYLZnFbs1vcVgtmcFltH/GDriB9sHfGDrSN+sHXED7aO+MHWET/YOuIHW0f8YOuIH2wd8YOtI36wdcQPto74wdYRP9g64gdbR/xg64gfbB3xg6wj/nqQdcQ/BXM5radgLqf1FMzltJ6CjU0wl9N6CuZyWk/BXE7rKZjLaT0Fszktso74p2A2p0XWEf8UzOa0yDrin4LZnBZZR/xTMJvTIuuIfwpmc1pkHfFPwWxOi6wj/imYzWmRdcQ/BbM5LbKO+KdgNqdF1hH/FMzmtMg64p+C2ZwWWUf8UzCb0yLriH8KZnNaZB3xT8FsTousI/4pmM1pkXXEPwWzOS2yjvinYDanRdYR/xTM5rTIOuKfgtmcFllH/FMwm9Mi64h/CmZzWmQd8U/BbE6LrCP+KZjNaZF1xD8Fszktso74p2A2p0XWEf8UzOa0yDrin4LZnBZZR/xTMJvTIuuIfwpmc1pkHfFPwWxOi6wj/imYzWmRdcQ/BbM5LbKO+KdgNqdF1hH/FMzmtMg64p+C2ZwWWUf8UzCb0yLriH8KZnNaZB3xT8FsTousI/4pmM1pkXXEPwWzOS2yjvinYDanRdYR/xTM5rTIOuKfgtmcFllH/FMwm9Mi64h/CiZzWgdbR/zB1hF/sHXEH2wd8cfD2ASTOa2DrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64g+2jviDrSP+YOuIP9g64o9EDeKjna8vbn9+599yE/WHT8nN8wk9+tcX//N//3e5eT6fp+Tm+XSekpvns3lKbp4MPCU3TwKekpvovTshN1Gb9JTcPNl3Sm6e5Dsll8tVJWqRnpKL6qreJKA6pTcJod1PsVe0HnX074J4eT3Gc4F09x9daPfjLze0+3GXG7vh2V9uaPfjLze0+/GXG9r9+Ms1Lrmh3Y+/3NBOyV8ul6uK3ejsL5fLVcVuc/aXy+WqYjc5+8vlclWxW5z95XK5qtgNzv5yuVxV7PZmf7lUruqM3dzsL5fKVZ2xW5v95VK5qvNhXHKpXNUZu63ZXy6VqzpjNzX7y+VyVbFbmv3lcrmq2A3N/nK5XFXsdmZ/uVyuKnYzs79cLlcVu5XZXy6Xq4rdyOwvl8tVxW5j9pfL5apiNzH7y+VyVbFbmP3lcrmq2A3M/nK5XFXs9mV/uVyuKnbzsr9cLlcVu3XZXy6Xq4rduOwvl8tVxW5b9pfL5apiNy37y+VyVbFblv3lcrmq2A3L/nK5XFXsdmV/uVyuKnazsr9cLlcVu1XZXy6Xq4rdqOwvl8tVxW5T9pfL5apiNyn7y+VyVYXLVcVuyXaXG7sl218ul6uqXK4qdge6v1zjksvlqmJ3oPvL5XJVsTvQ/eVyuarYHej+crlcVewOdH+5XK4qdge6v1wuVxW7L91fLper4upWP7m61U+ubvWTq1v95OpWP7m61U+ubvWTq1v95OpWP7m61U+ubvWTq1v95OpWP7m61U+ubvWTq1v95OpWP7m61U+ubvWTq1v95OpWP7m61S+ubvWLq1v94upWv7i61a+HccmlclUXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtfnF1q19c3eoXV7f6xdWtblzd6sbVrW5c3erG1a1uD+OSS+WqjKtb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVLVEd9Wjn64vbdSc3z4toRm6iwuLR++uL//m//7vcPB9VU3LzfFRNyTUuuXkC4JTcPAFwSm6i9+6M3ETv3Rm5eQLgjNxEhcVTcrlcVaLC4im5qK7qTYLhSwjtfto5XhL62b6L4Y9RX099HG/P0fq74ND+Z4Xg0A5oheDQHmiF4NAuaIHg2BXDKwSHdkIrBIf2QisEh3ZDKwQbm2A2pxW7bniFYDanFbtyeIVgNqcVu3Z4hWA2pxW7eniFYDanFbt+eIVgNqcVu4J4hWA2pxW7hniFYDKnVWJXEa8QTOa0Suw64hWCyZxWeRibYDKnVWLXEq8QTOa0Suxq4hWC2ZxW7HriFYLZnFbsiuIVgtmcVuya4hWC2ZxW7KriFYLZnFbsuuIVgtmcVuzK4hWC2ZxW7NriFYLZnFbs6uIVgtmcVuz64hWC2ZxW7ArjFYLZnFbsGuMVgtmcVuwq4xWC2ZxW7DrjFYLZnFbsSuMVgtmcVuxa4xWC2ZxW7GrjFYLZnFbseuMVgtmcVuyK4xWC2ZxW7JrjFYLZnFbsquMVgtmcVuy64xWC2ZxW7MrjFYLZnFYxNsFsTquwOa3YTd4rBLM5rcLmtCqb04rd175CMJvTit3ZvkKwsQlmc1qxm9tXCGZzWrHb21cIZnNasRvcVwhmc1qxW9xXCGZzWrFb31cIZnNabB3xha0jvrB1xBe2jvjC1hFf2DriC1tHfGHriC9sHfGFrSO+sHXEF7aO+MLWEV/YOuILW0d8YeuIL2wd8YWtI76wdcQXto74wtYRX9g64gtbR3xh64ivbB3xla0jvrJ1xFe2jvj6MDbBZE6rsnXEV7aO+MrWEV/ZOuIrW0d8ZeuIr2wd8ZWtI76ydcRXto74ytYRX9k64itbR3xl64ivbB3xla0jvrJ1xFe2jvjK1hFfEzWIP7/69cXtz+/8JjfPW3hGbqJu6dH764tHu5Ob5/N5Sm6eT+cpuXk+m6fk5snAU3LzJOApuYneuzNyE713Z+Tmyb4zchM1SU/J5XJViVqkp+Siuqo3CYYvIbT76aV9/XdU6ndB3M6vIG5X+f29H8e74ND+Z4Xg0A5oheDQHmiF4NAuaIHg2D3PKwSHdkIrBIf2QisEh3ZDKwQbm2A2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDKn1WL3PK8QTOa0Wuye5xWCyZxWexibYDKn1WL3PK8QTOa0Wuye5xWC2ZxW7J7nFYLZnFbsnucVgtmcVuye5xWC2ZxW7J7nFYLZnFbsnucVgtmcVuye5xWC2ZxW7J7nFYLZnFbsnucVgtmc1snmtGI3ea8QzOa0TjandbE5rdh97SsEszmt2J3tKwQbm2A2pxW7uX2FYDanFbu9fYVgNqcVu8F9hWA2pxW7xX2FYDanFbv1fYVgNqfF1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+s3XEd7aO+M7WEd/ZOuL7w9gEkzmtztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xPVGD+Gjn64vbn9/5TW6et/CU3Dyf0KP3ry9ud3LzfD5Pyc3z6TwlN89n85TcPBl4Rm6iRukpuYneuzNyE713Z+Tmyb5Tco1LLperStQiPSUX1VW9SUB1Sm8SQruf8fWdj8dxHt8l8fL11cVu/quLXfO8QG9o/7NAb2gDtEBvaAe0QK+R6Q3tgRboDW2CFugN7YIW6A1tmRboJfNXscudF+gl81exq50X6CXzV7GLnRfoJfNXsWudF+gl81exS50X6OXyVyN2pfMCvVz+asQudF6gl8tfjYeR6eXyVyN2mfMCvVz+asSucl6gl8xfxS5yXqCXzF/FrnFeoJfMX8UucV6gl8xfxa5wXqCXzF/FLnBeoJfMX8Wub16gl8xfxS5vXqCXzF/Frm5eoJfMX8Uubl6gl8xfxa5tXqCXzF/FLm1eoJfMX8WubF6gl8xfxS5sXqCXzF/FrmteoJfMX8Uua16gl8xfxa5qXqCXzF/FLmpeoJfMX8WuaV6gl8xfxS5pXqCXzF/FrmheoJfMX8UuaF6gl8xfxa5nXqCXzF/FLmdeoJfMX8WuZl6gl8xfxS5mXqCXzF9VMn8Vu3d7gV4yf1XJ/FU1Mr1k/ip2tfoCvWT+Kna5+gK9ZP4qdr36Ar1k/ip2wfoCvWT+KnbF+gK9ZP4qdsn6Ar1k/ip2JfsCvWT+iqy/fZD1tw+y/vZB1t8+yPrbB1l/+yDrbx9k/e2DrL99kPW3D7L+9kHW3z7I+tsHWX/7IOtvH2T97YOsv31w9bfbI1O/9/eX0596E71/p/Qm+nz+/srnU2+iz+cpvYk+n6f0Jvp8ntKbKP9O6U2Uf2f0Zup/ntKb6f07ozdR/p3Smyj/Tuk1Mr1k/gq3//lNA6xnetMQ2Qc9H7wevx/kPL/5D+/+e78JjmyEVggO3dS8RHBkK7REcGQvtERwZDO0RLCxCY5sh5YIjuyHlgiObJ6WCGZzWqErm1cIDt3ZvEQwm9MK3dq8RDCb0wrd27xEMJvTCt3cvEQwm9MK3d28RDCb0wrd3rxEMJvTCt3fvEQwm9MK3eC8RDCb0wrd4bxEMJvTCt3ivEQwm9MK3eO8RDCb0wrd5LxEMJvTCt3lvEQwm9MK3ea8RDCb0wrd57xEMJvTCt3ovEQwm9MK3em8RDCb0wrd6rxEMJvTCt3rvEQwm9MK3ey8RDCb0wrd7bxEMJvTCt3uvEQwm9MK3e+8RDCb0wrd8LxEMJvTCt3xvEQwm9MK3fK8RDCb0wrd87xEMJvTCt30vEQwm9MK3fW8RDCb0wrd9rxEMJvTCt33vEQwm9MK3fi8RDCb0wrd+bxEMJvTCt36vEQwm9MabE5rkDmtI3Sz9xLBZE7r+W3YBGd6LRV7tbcXuxWc6bU0Izh0HfKPBZdXv2ip7U5wpg+tKcGZPrSmBGeKh1OCjU1wpng4JTjTe7ge9ddX1+u8E5zpPTwlOFM8nBKcKR7OCE5VtzwlOJPTmhKcyWlNCc7ktKYEG5vgTE5rSjCb00pVtzwlGNdpvYnAdU+/RQSvRT7r+4M8vvlPb2adGrwWeYHg2I7oZ4LP8+tBrNwJju2IFgg2NsGxHdECwbEd0QLBsR3RAsGxHdEPBZfyepB23AmO7Z78BQevRV4gOJPTmhKcymnNCE7ltGYEG5vgVE5rRnBsp3Ud19eD2Hl9I/gZhV67mKdnflvGXNe75Nhea4nk2G5rieTYfmuF5OD1yEskx/ZcSyTHdl1LJMf2XUskG5/k2N5riWQ+9xW8LHmJZD73FbwweYXk4JXJSyTzua/gtclLJPO5r+DVyUsk87mv4PXJSyTzua/gFcpLJPO5r+A1yksk87mv4FXKSyTzua/gdcpLJPO5r+CVyksk87mv4LXKSyTzua/g1cpLJPO5r+D1yksk87mv4BXLSyTzua/gNctLJPO5r+BVy0sk87mv4HXLSyTzua/ghbw/kzzaqyZutLs/5AxeyLtAcKZP69FfFVNj3FVMBa9rdRd8Bq9rXSA40+f0lOBMGXlKcKaEPCU41Xt4RnCq9/CM4EzZeEpwpmQ8JZjMaZ0PNqcVvGP6k+A3Ebju6U1EbEdk1X6LaO2b//QmCojO4F3QCwQbm+DYjuhngifaWs7gXdALBMd2RAsEx3ZECwTHdkT+goN3QS8QHNs9LRCcyWlNlJecwbugFwg2NsGpnNaM4FROa0ZwKqc1IziV05oRDOS0ut1sMYL3Rk+KAHJE9yJiu5xy/l6Klas6bBuC9zsvEGyJBM8Y9+D9zgsEx3Y5CwTHdjkLBMd2OQsEx3Y5/oKD9zv/UPCEjw3e77xAcCanNSU4k9OaEmxsglM5rRnBqZzWjGAgp2V3vzMRvK95UgSQI7oVEbxTufTy9SB1fPeLU73Y4/XNS3n7X1ur75KD+5wVkoM7nRWSg3udFZKNT3Jwv7NCcnDHs0JycM+zQnJwh7RCcnA/tUBy8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53Nfgc1+Dz30Fb85eIpnPfQ0+9zX43FfwjvQlkunc1xW8J32JZDr3dQXvSl8imc59XQ/jk0znvq7gnelLJNO5ryt4b/oSyXzuK3h3+hLJfO4reC/7Esl87it4N/sSyXzuK3g/+xLJfO4reEf7Esl87it4T/sSyXzuK3hX+xLJfO4reF/7Esl87it4Z/sSyXzuK3hv+xLJfO4reM/7Esl87it6h/wKyXzuK3qP/ArJfO4repf8Csl87it6n/wKyXzuK3qn/ArJfO4req/8Csl87it6t/wKyXzuK3q//ArJfO4reh/9Csl87ouv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67q/+LruL76u+4uv6/7i67o3vq574+u6N76ue+PrureH8Ummc1/G13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd94Wv677wdd0Xvq77wtd1Xx7GJ5nOfRW+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovfF33JVUL+mjnr68e7c/v/SY401t5SnCmT+vR+0vwP//3fxec6bN6SnCmT+opwZk+p6cEZ8rIU4IzJeQZwan6sKcEp3oPzwjOlI2nBGdKxlOCjU0wm9MC7sB+E4Hrnt5ExHZE7Xp8PUi37/7T+6e39teX/9MbdxPVg/dUr5AcvKd6ieTYvmiJ5NjOaInk2N5oiWTjkxzbHy2RHNshLZEc208tkcznvoL3VK+QHLyneolkPvcVvKd6iWQ+9xW8p3qJZD73FbyneolkPvcVvKd6iWQ+9xW8p3qJZD73FbyneolkPvcVvKd6iWQ+9xW8p3qJZD73FbyneolkPvcVvKd6iWQ+9xW8p3qJZD73FbyneolkPvcVvKd6iWQ+9xW8p3qJZD73FbyneolkPvcVvKd6iWQ+9xW8p3qJZD73FbyneolkPvcVvKd6iWQ691WD91QvkUznvmrwnuolkuncV30Yn2Q691WD91QvkUznvmrwnuol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t9eHkenl8leVrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tNVO/9/F4PL4ee3zzzX/yIOd59U+J3b6eo43/63d+lI9nPh+jfH3n+q/w+vj8zuc337nY+edri11300/kRjT9n04/U/e7pv/j6Sdyqpr+j6efyLdr+j+efqIUo+n/ePqm6RNPP1HC1fR/PP1EP0/R9H88/UQ/XdL0fzx97fqYp69dX9bp949vXF6+79/Tz3SHSNP/8fS162OevnZ9zNPXri/r9NvX9Ovd9E3TJ56+dn3M09euj3n62vUxT1+7Pubpa9eXdfrl45FLvfud3kw3MTX9H09fuz7m6WvXxzx97fqYp2+aPvH0tetjnr52fczT166Pefra9TFPX7s+4ulnus+u6f94+tr1MU9fuz7m6WvXxzx90/SJp69dH/P0tetjnr52fczT166Pefra9RFPf2jXxzx97fqYp69dH/P0tetjnr5p+sTT166Pefra9TFPX7s+5ulr18c8fe36eKffHtr1MU9fuz7m6WvXxzx97fqYp2+aPvH0tetjnr52fczT166PePqH8v7W6T+VHJ/TP6rn9L+/zdEO5X3m6SvvM09feZ95+qbpE09feZ95+sr7zNNX3meevn63h3n6+t0e4umf2vUxT1+7vqzT//4aYzu162OevnZ9zNM3TZ94+tr1ZZ3+9xfZ2qldH/P0tetjnr52fczT166PePqXdn3M09euL+v0J36n99Kuj3n62vUxT980feLpa9fHPH3t+pinr10f8/S162OevnZ9xNM37fqYp69dH/P0tetjnr52fczTN02fePra9TFPX7s+5ulr18c8fe36mKevXR/x9It2fczT166Pefra9TFPX7s+5umbpk88fe36mKevXR/z9LXrY56+dn3M09euj3j6Vbs+5ulr18c8fe36mKevXR/z9E3TJ56+dn3M09euj3n62vUxT1+7Pubpa9dHPP2mvO8/fecLGk2pPP6MTDMKPyMl3PgzUg6NPyOlxfgzUqaLPyMlr/Az6vpdiPgz0m8s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918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB77+q4P1XFbz/qoL3X1Xw/qv6wH7/VvD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgfdfNfD+qwbef9XA+6/aA/v928D7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rDt5/1cH7rzp4/1UH77/qD+z3bwfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvBnj/1QDvvxrg/VcDvP9qPLDfvwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/Oh7gBVhPAdhv4KcA7FfwUwD2O/gpAPsl/BSA/RZ+CsB+DT8FYL+HnwKwX8RPAehvYvAqrKcA9DcxeBnWUwD6mxi8DuspAP1NDF6I9RSA/iYGr8R6CkB/E4OXYj0fD/1NDF6L9Xw89DcxeDHW8/HQ38Tg1VjPx0N/E4OXYz0fD/1NDF6P9RSA/iYGL8h6CkB/E4NXZD0FoL+JwUuyngLQ38TgNVlPAehvYvCirKcA9DcxeFXWUwD6mxi8LOspAP1NDF6X9RSA/iYGL8x6CkB/E4NXZj0FoL+JwUuzngLQ38TgtVlPAehvYvDirKcA9DcxeHXWUwD6mxi8POspAP1NDF6f9RSA/iYGL9B6CkB/E4NXaD0FoL+JwUu0ngLQ38TgNVpPAehvYvAiracA9DcxeJXWUwD6mxi8TOspAP1NDF6n9RSA/iYGL9R6CkB/E4NXaj0FoL+JwUu1ngLQ38TgtVpPAehvYvBiracA9DcxeLXWUwD6mxi8XOspAP1NDF6v9RSA/iYGL9h6CkB/E4NXbD0FgL+JD/SOrQO9Y+tA79g60Du2jgf4m/hA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrQO9Y+tA79g60Du2DvSOrRO9Y+tE79g60Tu2TvSOrfMB/iY+0Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tE79g60Tu2TvSOrRO9Y+tC79i60Du2LvSOrQu9Y+t6gL+JL/SOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79i60Du2LvSOrQu9Y+tC79gy9I4tQ+/YMvSOLUPv2LIH+JvY0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YMvWPL0Du2DL1jy9A7tgy9Y8vQO7YKesdWQe/YKugdWwW9Y6s8wN/EBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79gq6B1bBb1jq6B3bBX0jq2C3rFV0Du2CnrHVkHv2CroHVsFvWOroHdsFfSOrYLesVXQO7YKesdWQe/YKugdWwW9Y6ugd2wV9I6tgt6xVdA7tgp6x1ZB79iq6B1bFb1jq6J3bFX0jq36AH8TV/SOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOrondsVfSOrYresVXRO7YqesdWRe/YqugdWxW9Y6uid2xV9I6tit6xVdE7tip6x1ZF79iq6B1bFb1jq6J3bFX0jq2K3rFV0Tu2KnrHVkXv2KroHVsVvWOroXdsNfSOrYbesdXQO7baA/xN3NA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tht6x1dA7thp6x1ZD79hq6B1bDb1jq6F3bDX0jq2G3rHV0Du2GnrHVkPv2GroHVsNvWOroXdsNfSOrYbesdXQO7YaesdWQ+/YaugdWw29Y6uhd2w19I6tjt6x1dE7tjp6x1ZH79jqD/A3cUfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2OnrHVkfv2OroHVsdvWOro3dsdfSOrY7esdXRO7Y6esdWR+/Y6ugdWx29Y6ujd2x19I6tjt6x1dE7tjp6x1ZH79jq6B1bHb1jq6N3bHX0jq2O3rHV0Tu2BnrH1kDv2BroHVsDvWNrPMDfxAO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWQO/YGugdWwO9Y2ugd2wN9I6tgd6xNdA7tgZ6x9ZA79ga6B1bA71ja6B3bA30jq2B3rE10Du2BnrH1kDv2BroHVsDvWNroHdsDfSOrYHesTXQO7YGesfWAO/YOh/gHVtPAdhv4qcA7DfxUwD2m/gpAPtN/BSA/SZ+CsB+Ez8FYL+JnwKw38RPAehvYvCOracA9DcxeMfWUwD6mxi8Y+spAP1NDN6x9RSA/iYG79h6CkB/E4N3bD0FoL+JwTu2ngLQ38TgHVtPAehvYvCOracA9DcxeMfWUwD6mxi8Y+spAP1NDN6x9RSA/iYG79h6CkB/E4N3bD0FoL+JwTu2ngLQ38TgHVtPAehvYvCOracA9DcxeMfWUwD6mxi8Y+spAP1NDN6x9RSA/iYG79h6CkB/E4N3bD0FoL+JwTu2ngLQ38TgHVtPAehvYvCOracA9DcxeMfWUwD6mxi8Y+spAP1NDN6x9RSA/iYG79h6CkB/E4N3bD0FoL+JwTu2ngLQ38TgHVtPAehvYvCOracA9DcxeMfWUwD6mxi8Y+spAP1NDN6x9RSA/iYG79h6CkB/E4N3bD0FoL+JwTu2ngLQ38TgHVtPAehvYvCOracA9DcxeMfWUwD6mxi8Y+spAP1NDN6x9RSA/iYG79h6CgB/Ex/oHVsHesfWgd6xdaB3bB0P8Dfxgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsHesfWgd6xdaB3bB3oHVsnesfWid6xdaJ3bJ3oHVvnA/xNfKJ3bJ3oHVsnesfWid6xdaJ3bJ3oHVsnesfWid6xdaJ3bJ3oHVsnesfWid6xdaJ3bJ3oHVsnesfWid6xdaJ3bJ3oHVsnesfWid6xdaJ3bJ3oHVsnesfWid6xdYZueCp2/vnaYrcCIr8HpgRE/hQqpX8IqO1OQORPoSkBkT+FpgRE/hSaEhA5D8wICN0vNCUg8nugHvXP19brvBMQ+T0wJSByHpgSYOgCIr+JpwREfhNPCYj8Jp4SEPlNPCUg8pt4RkDofqEpAehv4tD9QlMC0N/EofuFpgSgv4lD9wtNCUB/E4fuF5oS8Otv4tt14f/+2t7G8fHF/bCv7zzaf1xE/n4b0V65B5fck0vuBSr3RYLhSyj4Eiq+hIYvoeNLQHUTXxIaqkN4kYD61n+RgPomf5EQ+u3c2+Pji8f3ZmR8fufH+Praaq9yQ7/J/eWGfuv/TK7zL3u00G5iL5rQLmUvmtDuZy+a0K5qK5oe2q3tRRPaBe5FE9pd7kWTyLV6ozGhuUMjN3yLRm74Fo3c8C0aueFbNHLDd2iG3PAtGrnhWzRyw7do5IZv0ZjQ3KGRG75FIzd8i0Zu+BaN3PAtGrnhGzTXQ274Fo3c8C0aueFbNHLDt2hMaO7QyA3fopEbvkUjN3yLRm74Fo3c8B2aQ274Fo3c8C0aueFbNHLDt2hMaO7QyA3fopEbvkUjN3yLRm74Fo3c8B2ak9PXTDRFXienr5lCw/mGmmj2u07ON9QUGs431BQazjfUDJqLc18zhYZzXzOFhtPXTDQdXRenr5lCY0Jzh4ZzXzOFhtMNT6HhdMNTaDjd8BQaTjc8g8Y43fAUGk43PIVGbvgWjdzwLRrLg+YH3/no1T4UPv8tX9+59H9TWMqHwHbcgUzknfeCTOS094JM5Mv3gkzk4p1AvsBJ5OPd4ZRETt4fTiIv7w8nkZv3h5PIz/vDMcG5hyOX/gYOqfMe9eM7P7/Z9Rec/xaqC6nz9gdJ6rx/BPI8PwVauQNJ6tLdQca+qYMEktT9+4MkTQr+IElThT9IE0gfkKRp5WcgJza4sW8+IYHkTDbn4/r4sev5eH3m/5xsYt+/QgLJmWx+BnLmZRP7FhgSSM5kswAkZ7JZAJIz2SwAaQLpA5Iz2SwAyZlsfghyItlkula3FyRpsjmOTzbHq8L/nGwyXcLbCjLT3bxlIGdeNpmu7O0FSZps/EGSJht/kCaQPiBJk40/SNJk4w+SNNn8DOREssl0p3AvSNaf2fT6BXJ8A7KNz+/8ePnaai8gM91A3AuS9Wc27iBZk009PkE2c1haZLrGuBekCeS3IGd8ZKZLj3tBsiYbd5CsycYdJGuycQfJ+jMbZ5CW6Z7lXpCsP7P5EcjvlxaW6VbmXpBKNkf/+zctXuCY4NzDUQJ5A4c0VTwXV5/PfJb/+8LAMl3j3AuSNFX8COSUhyNNFe4gM90F3QuSNFX4gyRNFf4gSVOFP0gTSB+QpGnlZyAnFgaZbqXuBalkc17XTX7OdFvVH44SyD2ckzVV1P75zP1wWBicrKnCHSRrqvgJyBkPl+k+8F6QJpA+IFlThTtI1lThDpI1VbiDZE0g7iBZ08qPQE4sDDLd5d4LUsnGCaSSjRNIJRsnkCaQPiCVbJxAKtk4gVSyOfvff/D9Akdp5Q0cJZB7OJnum99+5xe5DN7/RW5ohz4+6w77eP3O/11uaB/tL9fSyJ3ZJMW+6u0vN7Rz9Jcb2t/5yw3t2PzlhvZg7nJj35r+mdyJbBb7erS/3DyuakpuHlc1Jde45CZyVTNyY7uq/hUAx+UQEWJfP/aXG9tV/UTulM2I7aq85ca+9+svN7arcpcb21W5y43tqtzlWh65EzYj9rVYf7l5XNWU3DyuakpuIlc1IzeRq5qQG/rW6HjYx3cej1IdIkLoi6AL5EZ2VT+TO2MzQl/XXCDXuORGdlUL5EZ2VQvkRnZVC+RGdlU/lDtjMyK7Kn+5oe8cLpCbx1VNyU3kqmbkJnJVM3INRW79OwC+SIBxSvcSYNzPvYTYjmZ8NNmO4+Hx26ahb7ItkBvb0fxE7oxfDX3fbIHc2I7GXW5sR+MuN7ajcZdrXHJju58fyZ3wq6FvWC2Qm8dVTcnN46qm5CZyVd/LLaFvKy2Qm8hVzcjFcVXj3zNsCX0haFKCRZZw2JeE1z/T/df/6Pr50YHa7eUp2l9yQ7sff7mh3c+P5Lb++dvux/nNd57YUJTQ13M2owntqvaiCe3AtqIJfbNmM5rQzm4vmtAucC+a0O5yLxoTmjs0eRyuOxq54Vs0csO3aOSGb9HIDd+hCX1rZTMaueFbNHLDt2jkhm/RmNDcoZEbvkUjN3yLRm74Fo3c8C0aueE7NKHvc2xGIzd8i0Zu+BaN3PAtGhOaOzScvqbYx29KFLtFw+lrZtCE7oVfiKZ8nAgotd2h4XxDTaHhfENNoeF8Q02h4dzXTKHh3NdMoeH0NRMX1kvoLv3NaDj3NTNoQnf0b0bD6Yan0HC64Sk0nG54Co0JzR0aTjc8hYbTDU+hkRu+RSM3fItGbvgOTejbCj9E84Pv3NrHH/G21+/71x8Yhr7DsBlNIjfsjSaRG/ZGY0JzhyaRG/ZGk8gNe6NJ5Ib/G5pR79AkcsPeaBK5YWc0sW9iLEPzUrdxlTs0nG54Cg2nG55Cw+mGp9CY0Nyh4XTDU2g43fAUGk43PNOVFfvmyF40nG54Bk3sWyZOaF7kMjjcF7mhXet5fnzxuK7xjdzj0e3jqY/H4+U56qvg0F50hWBjExzaN64QHNoNrhAc2uOtEBzaua0QHNqPLRAc+77KCsGhfdYKwWxOK/aVlRWCjU0wm9OKfWtlhWA2pxX73soKwWROq8a+ubJCMJnTqrHvrqwQTOa06sPYBJM5rRr7rssKwWROq8a+wbJCMJvTin0vZYVgNqcV+7bJCsFsTiv2HZIVgtmcVuybISsEszmt2Pc9Vghmc1qxb3GsEMzmtGLfzVghmM1pxb5xsUIwm9OKfY9ihWA2pxX7dsQKwWxOK/adhxWC2ZxW7JsMKwSzOa3Y9xNWCGZzWheb04p992KFYDandbE5LWNzWrGvkKwQzOa0Yl8MWSHY2ASzOa3YNztWCGZzWrHva6wQzOa0Yt/CWCGYzWnFvluxQjCb04p9Y2KFYDanFfsexArBbE4r9u2GFYLZnFbsOwsrBLM5rdg3EVYIZnNase8XrBDM5rRi3xpYIZjNacW+C7BCMJvTit3hv0Iwm9OK3be/QjCb04rdjb9CMJvTit1jv0Iwm9OK3Tm/QjCb04rdD79CMJvTYuuIr2wd8ZWtI76ydcRXto74ytYRX9k64itbR3xl64ivbB3xla0jvrJ1xFe2jvjK1hFf2TriK1tHfGXriK9sHfGNrSO+sXXEN7aO+MbWEd8exiaYzGk1to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Y2tI76xdcQ3to74xtYR39g64htbR3xj64hvbB3xja0jvrF1xDe2jvjG1hHf2DriG1tHfGPriG9sHfGNrSO+sXXEN7aO+MbWEd/YOuIbW0d8Y+uIb2wd8Z2tI76zdcR3to74ztYR3x/GJpjMaXW2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO9sHfGdrSO+s3XEd7aO+M7WEd/ZOuI7W0d8Z+uI72wd8Z2tI76zdcR3to74ztYR39k64jtbR3xn64jvbB3xna0jvrN1xHe2jvjO1hHf2TriO1tHfGfriO+JGsRHOz++uP39nV/k5nkLT8nN8wk9ev/44n/+7/8uN8/n85TcPJ/OU3LzfDZPyc2TgWfkJmqUnpKb6L07IzfRe3dGbp7sOyXXuORyuapELdJTclFd1YsEVKf0IiG0+7na539HNh4uQTx2z/MKwaEd0ArBoT3QCsGhXdAKwcYmOLQTWiE4tBdaITi0G1ohOLR3WiGYzWnF7nleIZjNacXueV4hmM1pxe55XiGYzWnF7nleIZjNacXueV4hmMxpjdg9zysEkzmtEbvneYVgMqc1HsYmmMxpjdg9zysEkzmtEbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2pxW753mFYDanFbvneYVgNqcVu+d5hWA2p1XZnFbsJu8VgtmcVmVzWtXYBLM5rdiN7SsEszmt2K3tKwSzOa3Yze0rBLM5rdjt7SsEszmt2A3uKwSzOa3YLe4rBLM5rdit7ysEszktto74wdYRP9g64gdbR/xg64gfbB3xg60jfrB1xA+2jvjB1hE/2DriB1tH/GDriB9sHfGDrSN+sHXED7aO+MHWET/YOuIHWUf89SDriH8K5nJaT8FcTuspmMtpPQUbm2Aup/UUzOW0noK5nNZTMJfTegpmc1pkHfFPwWxOi6wj/imYzWmRdcQ/BbM5LbKO+KdgNqdF1hH/FMzmtMg64p+C2ZwWWUf8UzCb0yLriH8KZnNaZB3xT8FsTousI/4pmM1pkXXEPwWzOS2yjvinYDanRdYR/xTM5rTIOuKfgtmcFllH/FMwm9Mi64h/CmZzWmQd8U/BbE6LrCP+KZjNaZF1xD8Fszktso74p2A2p0XWEf8UzOa0yDrin4LZnBZZR/xTMJvTIuuIfwpmc1pkHfFPwWxOi6wj/imYzWmRdcQ/BbM5LbKO+KdgNqdF1hH/FMzmtMg64p+C2ZwWWUf8UzCb0yLriH8KZnNaZB3xT8FsTousI/4pmM1pkXXEPwWzOS2yjvinYDanRdYR/xTM5rTIOuKfgtmcFllH/FMwm9Mi64h/CmZzWmQd8U/BbE6LrCP+KZjNaZF1xD8Fszktso74p2A2p0XWEf8UTOa0DraO+IOtI/5g64g/2Drij4exCSZzWgdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH2wd8QdbR/zB1hF/sHXEH4kaxEc7P764/f2dv+Qm6g+fkpvnE3r0zy/+5//+73LzfD5Pyc3z6TwlN89n85TcPBl4Sm6eBDwlN9F7d0JuojbpKbl5su+U3DzJd0oul6tK1CI9JRfVVb1IQHVKLxJCu59iH9F61NG/C+Ll4zGeC6S7/+hCux9/uaHdj7vc2A3P/nJDux9/uaHdj7/c0O7HX65xyQ3tfvzlhnZK/nK5XFXsRmd/uVyuKnabs79cLlcVu8nZXy6Xq4rd4uwvl8tVxW5w9pfL5apitzf7y6VyVWfs5mZ/uVSu6ozd2uwvl8pVnQ/jkkvlqs7Ybc3+cqlc1Rm7qdlfLperit3S7C+Xy1XFbmj2l8vlqmK3M/vL5XJVsZuZ/eVyuarYrcz+crlcVexGZn+5XK4qdhuzv1wuVxW7idlfLperit3C7C+Xy1XFbmD2l8vlqmK3L/vL5XJVsZuX/eVyuarYrcv+crlcVezGZX+5XK4qdtuyv1wuVxW7adlfLperit2y7C+Xy1XFblj2l8vlqmK3K/vL5XJVsZuV/eVyuarYrcr+crlcVexGZX+5XK4qdpuyv1wuVxW7SdlfLperKlyuKnZLtrvc2C3Z/nK5XFXlclWxO9D95RqXXC5XFbsD3V8ul6uK3YHuL5fLVcXuQPeXy+WqYneg+8vlclWxO9D95XK5qth96f5yuVwVV7f6ydWtfnJ1q59c3eonV7f6ydWtfnJ1q59c3eonV7f6ydWtfnJ1q59c3eonV7f6ydWtfnJ1q59c3eonV7f6ydWtfnJ1q59c3eonV7f6ydWtfnF1q19c3eoXV7f6xdWtfj2MSy6Vq7q4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm71i6tb/eLqVr+4utUvrm514+pWN65udePqVjeubnV7GJdcKldlXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uieqoRzs/vrhdd3LzvIhm5CYq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SKZzX1fwrvQlkunc1/UwPsl07usK3pm+RDKd+7qC96YvkcznvoJ3py+RzOe+gveyL5HM576Cd7MvkcznvoL3sy+RzOe+gne0L5HM576C97QvkcznvoJ3tS+RzOe+gve1L5HM576Cd7YvkcznvoL3ti+RzOe+gve8L5HM576id8ivkMznvqL3yK+QzOe+onfJr5DM576i98mvkMznvqJ3yq+QzOe+ovfKr5DM576id8uvkMznvqL3y6+QzOe+ovfRr5DM5774uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq574+u6N76ue+Pruje+rnt7GJ9kOvdlfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdV/4uu4LX9d94eu6L3xd9+VhfJLp3Ffh67ovfF33ha/rvvB13Re+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X1K1oI92/vnq0f7+3i+CM72VpwRn+rQevX8I/uf//u+CM31WTwnO9Ek9JTjT5/SU4EwZeUpwpoQ8IzhVH/aU4FTv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pZfMX2W6ODCll8xfZWrun9JL5q8ytetP6SXzV5ka8Kf0kvmrTC31U3rJ/FWmJvkpvWT+KlPb+5ReMn9F1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72StbfXsn62ytZf3sl62+vDyPTy+WvKll/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn622umfu/j8Xj8euzxzTf/yYOc59W/JHb79Rxt/K/f+VFez3w+Rvn1nes/wuvj6zuf33znYuffX1vsupt+Ijei6f90+pm63zX9H08/kVPV9H88/US+XdP/8fQTpRhN/8fTN02fePqJEq6m/+PpJ/p5iqb/4+kn+umSpv/j6WvXxzx97fqyTr+/vnF5+76/Tz/THSJN/8fT166Pefra9TFPX7u+rNNvv6Zf76Zvmj7x9LXrY56+dn3M09euj3n62vUxT1+7vqzTL69HLvXud3oz3cTU9H88fe36mKevXR/z9LXrY56+afrE09euj3n62vUxT1+7Pubpa9fHPH3t+oinn+k+u6b/4+lr18c8fe36mKevXR/z9E3TJ56+dn3M09euj3n62vUxT1+7Pubpa9dHPP2hXR/z9LXrY56+dn3M09euj3n6pukTT1+7Pubpa9fHPH3t+pinr10f8/S16+Odfnto18c8fe36mKevXR/z9LXrY56+afrE09euj3n62vUxT1+7PuLpH8r7W6f/VHJ8Tf+ontP//jZHO5T3maevvM88feV95umbpk88feV95ukr7zNPX3mfefr63R7m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8PfvBf7+vcDfvwb+/jXw96+Bv38N/P3r0n218/nB378G/v418Pevgb9/Dfz9W8DfvwX8/VvA378F/P3r0n218/nB378F/P1bwN+/Bfz9W8DfvxX8/VvB378V/P1bwd+/Lv1VO58f/P1bwd+/Ffz9W8HfvxX8/dvA378N/P3bwN+/Dfz969IptfP5wd+/Dfz928Dfvw38/dvA37/g/VcG3n9l4P1XBt5/ZeD9Vwbef2Xg/VcG3n9l4P1XBt5/ZeD9Vwbef2Xg/VcG3n9l4P1XBt5/ZeD9Vwbef2Xg/VcG3n9VwPuvCnj/VQHvvyrg/Vflgf3+LeD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VBe+/quD9VxW8/6qC91/VB/b7t4L3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XDbz/qoH3XzXw/qsG3n/VHtjv3wbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfdfD+qw7ef9XB+686eP9Vf2C/fzt4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/NcD7rwZ4/9UA778a4P1X44H9/h3g/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHe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"},{"name":"spend_public_authwit","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(noinitcheck)"],"abi":{"error_types":{},"param_witnesses":{"inner_hash":[{"end":4,"start":3}],"inputs":[{"end":3,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"field"},"visibility":"public"},"return_witnesses":[4]},"bytecode":"H4sIAAAAAAAC/83Z224jRRAG4LYTO4F4vYlZnPHZsWd8xofYCcGQF0DiAnGLhDiDxEHiIASvxJtwzbPs9XZVdfVvZ6JZ9WplraWxOzX1TVf3TDzTSWyOjDktGPtqGfc6thFTNkX7kaft3mjLNmjLlU1OQwntJCUtGzdHiQPmmFu2B1Po2bdSYuQIp8c3tOOYjnVBsWKV3k8u6f00ppqoCnOWaE1vGQ7S64zeJId6ezve3XMkuZxUSqiGIrWQXpKcM2k+Tk7CyWk4KWQT2TNHkybkyYfHOzl0vCeyk0fqZ6uA2Sruz9YpZqsYcwm7Lx48n3megxM5TMEdpuwnp4wDliWnKE36TJNSNtkrSQfzlEeqOXS8p+l66XUh9dJldFHwgH48j7k7806BP8+pabeKdPKR3ap+xp5hxqr7M/YuyqvaA35mPy8l+ZlLjniQdO1GYJHkVKXJ9A+EldaYUkINtAZac/RXhJXWmVJCHbQOWnf0N4SVNphSQgO0Adpw9EuElTaZUkITtAnadPR7hJW2mFJCC7QF2nL0W4SVtplSQhu0Ddp2tIuw0g5TSuiAdkA7jv6OsNIuU0rognZBu47+hLDSK6aUcAV6BXoln2lSCydROGlnEzumJcJKe0wpoQfaA+2le+v53jKI7e0XhJX2mVJCH7QP2k/31vczGEiicNIOJ41w0j0IecmM2fPzF8JKY6aUEIPGoHG6t9j/FmcQ29s3CCtNmFJCApqAJo7OEVY6YEoJA9AB6CBd6MCf4kByGU6icFILJ/Vw0ggnzXDSOsh56YST7kHOS3SQsbxkxuzvzc8IKx0ypYQh6BB06OifCCsdMaWEEegIdJQudOTHFkiicNJ+UwtrhJP6mzBj9ir4DmGlY6aUMAYdg47TvY39mAJJLZwMwkk7m9hpWCGsdMKUEiagE9BJureJv2VlEHoQy32B9cw9Q4NFjK5aKJsPJjbmhaS+ptzVdL+rmeCJNHUPLZhmWAzNi36BSkkLO3qyyxwfgp4fF7RxmZ/LTzpGMstE095Db7IjL0GzREVL4zsjMu/a8Kc7ZT0o+DbnRnufXjPyUlDWjOeySPQz7Gev8mD2kDMd5t0KM4ep31nUTt3e6c5hi365ixNHa4Yql+leR9Itp1UTrb9c9ivayr2rjDf8GUZCkkfNqTS5ECZlt+0QDrkTVin4UAWFU5Gzx66m2f58THBB2Gsj9wnOZ9Ulz/35nIPNJWeGCyhNWuGkcxDSCCfNgwy/HU564aQWTqKDjOUVzsvwtY/F/hL8gLDSBdO5fE8qXYAu0r0t/GQHkno2sQX+iLBS+dZdPPqtO3PfukT/QVjpiiklrEBXoKt0oSt/hQeSOJy0s4kd01cIK71mSgnXoNeg147+jbDSNVNKWIOuQdfpQte+0EDSyCa2wK8RVrphSgkb0A3oJt3bK5NaOBmGk144ibIJ3f7yXdwOuQd/O5zhdrjxD1czOeLuw9UNd3Wz39Wt4I00dQ91eIt76Z08M9y5pA/cvXorD1dbCtHGZbbkJx0jmW2iae+jN9mRl6DZoqKt8Z0RubPjzld2ynpQ8K17RDQ9fhYoPXjE+vf5x/9TWB5D6E//8m8f/idAog8k+T41o/9oewHAdvZ5hBoAAA==","debug_symbols":"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"},{"name":"approve_public_authwit","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(internal)","aztec(noinitcheck)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":3,"start":0}],"outer_hash":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"outer_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"H4sIAAAAAAAC/83YWXMaRxAH8EEWAocAC6y4L6FdkLhRZF4S+TFfwO9JOXeqclXOylfMp8p0z/T+hda1dvthy1QBS2//tntmEa52ZJ4ZUz439jEy/mE/lU3NXNi3M3o+GDmyB/Qs1ExBQjGdJOWObNw8iz0w53xkK5jizL5UXhgp1qCXizq9lopUip8lOh9RS4aKVmJp6bnhID0q9OJyqNhHEc5EpvC5ff/YJT/3ydX4zAVNFazqcirukOlfCAutMaWEGmgNtObpLwgLrTOlhDpoHbTu6dcICw2YUkIAGoAGnv6JsNAGU0pogDZAG57+iLDQJlNKaII2QZue/oqw0BZTSmiBtkBb7j1NatnEVpsiLDRkSgkhaAgaevoaYaGXTCnhEvQS9NLT3xAW2mZKCW3QNmg7vcZ3Irba7wgL7TClhA5oB7STrtZJbkIGsdX+RlholykldEG7oF1Pv0VYaI8pJfRAe6A9T79EWGifKSX0Qfug/fQa+8mOKkk1m9gGv0JY6IApJQxAB6ADT39CWOiQKSUMQYegw3Sjw+TvT0nqetLTk1BPqnoSZBO72T8gLHTElBJGoCPQkaf/ICx0zJQSxqBj0HG60XFyn5Qk0JOWntT1JNSTWi5raebS2CCb2C/OvwgLnTClhAnoBHSSrjZJtkFJ+nrSzaWxup6EejLIhbxlx+y34BuEhU6ZUsIUdAo6TVebJputJA09qelJoCddPWnnspZQTwa5kHE2uaL4PUahlwxlFKpgFKJsExuxkTk3eFxxqavTUjOHp+5QztCsNcMcFV3wYeSTYvvdJzsv8CXmvmbMbR7cJ1kjmXksadeo5k6cuaCZo6O5SYoRiWxyYf6orScNHwt+tS9dDl2xnOxNCXvDMynKXGB5dleL5vTBO8UTL2/YlbtMyV9m+qad9Det7Jsrv4kUs8lJS7KYyqfnj3JK7rfnab/0mLl+aVdmboKWTSpGXM5ERX4v+u29dkU+s89FsmMxdmxxumNztLewF3xl329ccuyTb3mRN3QEdutyFu6Q3tMk0JOmnrT1JMwmdhu+R1jokiklLEGXoMt0tWXyw6kkrWxiG/wDYaErppSwAl2BrtLVVslPm5I09STQk1Y2sduwR1jomiklrEHXoOt0tXVSTUlqetLUkyCXtYR6MsiFvMeOjfSkqyeTbGK/nluEhW6YUsIGdAO6SVfbJLdUSW70JNCTpp609STUk1s96eZyX5Z6MsjlvgS5rOUtO2b/bn5GWOiWKSVsQbeg23S1bfLfU0qy1JNAT1ofamOhnrQ/hB2zX5zvEBa6Y0oJO9Ad6C5dbZesSUmaerLRk1Y2idy4tjule6aUsAfdg+7T1fbJP1UZhOals9eYOx4YGgwbMl3s/Rzi7ekUe+BSh9NSdw7v3aGcocHmDkPLvZti733SCz/FHt0Ue6QQPbnNL9wnWSOZYyxpn6CaO3HmguaIjo4mKUbkfmov+upRW08a5imWVvuASxySvSlibw6nM9k1lndIT4V8F9xUuMcNKfrLLLjvvfsiyAX9bTj4dg6P9jhp54B27k7bWdzIfMnj7TWR7n/0/B+pE4hHVx4AAA==","debug_symbols":"5ZzRbhRHEEX/xc8omqqu6pnmV6IochISWUImAhMpQvx7DHgdEBbkJIhoOU+wdveqi/uwl7M959XFL09+evnbj1fXvz57cfH4+1cXT5/9fHlz9ez69tWri+27iLc/ffH75fWbH7y4uXx+c/F4e3Tx5PqX2z9fP7r49erpk4vHo+L1o4/WdRzjbmnHivvVc39g8axt3i2elR8s/uHRm6PkfzpK9mnp7V/XZ46S3aej5P7AUcY/P8q7DUU3NN0w6YadbjjohgU35EY3BN2QdANNOmnSSZNOmnTSpJMmnTTpQZMeNOlBkx406UGTHjTpQZMeNOlBkx406aJJF026aNJFky6adNGkiyZdNOmiSRdNumnSTZNumnTTpJsm3TTppkk3Tbpp0k2TnjTpSZOeNOlJk5406UmTnjTpSZOeNOlJk95p0jtNeqdJ7zTpnSa906R3mvROk95p0jtN+qBJHzTpgyZ90KQPmvRBkz5o0gdN+qBJHzTpRZNeNOlFk1406UWTXjTpRZNeNOlFk1406dg2vCPwjsQ7MD3ZMD7ZMD/ZMEDZMEHZMELZcOaBMw+ceeDMOTHjyIwzMw7NODXj2Axzs8DgLDA5C4zOArOzwPAsMD0LjM8C87PAAC0wQQuM0AIztMAQLTBFC4zRAnO0wCAtMEkLjNICs7TAMC0wTQuM06L4tyE4c0zUAiO1wEwtMFQLTNUCY7XAXC0wWAtM1gKjtcBsLTBcC0zXAuO1wHwtMGALTNgCI7bAjC0wZIvJv/fEmWPOFhi0BSZtgVFbYNYWGLYFpm2BcVtg3hY7/7IbZ46RW2DmFhi6BaZugbFbYO4WGLwFJm+B0Vsc/IYDzhzTt8D4LTB/CwzgAhO4wAguMIMLDOECU7hY/FoLv9eCL7ZgDpeYwyXmcIk5XGIOl5jDJeZwiTlcYg6XwS8z4cwxh0vM4RJzuMQcLjGHS8zhEnO45PfX+AW2f3GDDWfO77DxS2z8Fhu/xsbvsfGLbJjDJeZwiTlcDn5tEWeOOVxiDpeYwyXmcIk5XGIOl5jDJeZwiTlcFr+rijPHHC4xh0vM4RJzuMQcLjGHS8zhEnO4xBwuMYdLzOESc7jEHC4xh0vM4RJzuMQcLjGHS8zhEnO4nPxWOs4cc7jEHC4xh0vM4RJzuMQcLjGHS8zhEnO43PmjCDhzzOESc7jEHC4xh0vM4RJzuMQcLjGHS8zh8uDPn+DMMYdLzOESc7jEHC4xh0vM4RJzuMQcLjGHy8UfOuJPHeHHjjCHG5jDDczhBuZwA3O4gTncwBxuPMzhRm/H3abR/eG+j5/VHKNOz2qOceT96u4HFq9xeud1HPdLI7cH1sb9A6O3jPh+7e3/yx56367T4jW3+nv1PE6jLs2oD5PPb3PU8IyanlGHZ9T2jDo9o+6eUT0VIjwVIj0VIj0VIj0VIj0V4uEvi7/NUT1tKb92W4ptnlxR8XbATw679jwt3rb+9DvvHXdr9/neP+I4UYg8PKMuzahj84wanlHTM+rwjFqeUdszqqdCjN0zqqctDU9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bak9bak9bak9bak9bak9bak9bak9bak9bak9bak9bmp62ND1taXra0vS0pelpS9PTlqanLU1PW5qetjQ9bWn3tKXd05Z2T1vaPW1p97Sl3dOWdk9b2j1tafe0pd3Tlg5PWzo8benwtKXD05YOT1s6PG3p8LSlw9OWDk9bOjxtaXna0vK0peVpS8vTlpanLS1PW1qetrQ8bWl52tLStKXaNG2pNk1bqk3TlmrTtKXayjOqpi3VpmlLtWnaUm2atlSbpy2Fpy2Fpy2Fpy2Fpy2Fpy2Fpy2Fpy2Fpy2Fpy2Fpy2lpy2lpy2lpy2lpy19dcH1/ziqpy15BNeVnrbkcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7tcXm3x+XdHpd3e1zevZVnVE1bao/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v6XF5T4/Le3pc3tPj8p5beUbVtKXpcXlPj8t7elze84u7vFd9ZtQa96PWPj440serZ867xfP942/r7vhf3M/9lY8f5338PO/jj/M+fp338ed5H38/7+Mf53388/7YyvP+2Mrz/tjK8/7YyvP+2Pri4uGvdvzbV39cPr+6/Onpkxe3O9788uX1zzdXz67vXt78+fu739yu/Qs="},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"block_number":[{"end":2,"start":1}],"check_private":[{"end":3,"start":2}],"message_hash":[{"end":4,"start":3}],"myself":[{"end":1,"start":0}]},"parameters":[{"name":"myself","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"block_number","type":{"kind":"integer","sign":"unsigned","width":32},"visibility":"private"},{"name":"check_private","type":{"kind":"boolean"},"visibility":"private"},{"name":"message_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":2,"type":{"kind":"boolean"}},"visibility":"public"},"return_witnesses":[4,5]},"bytecode":"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","debug_symbols":"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Xl3e8eryjleXd7y6vOPV5R2vLu94dXnHq8s7Xl3e8eryjleXd7y6vOPV5R2vLu94dXnHq8s7Xl3e8eryjteQd7yGvOM15B2vIe94jUO9k4e84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zXkHa8h73gNecdryDteQ97xGvKO15B3vIa84zWyO17l/L/H1x7H/Pza1p68unk8ll3ax2u990fa5P19c9rkXX9z2uRzwb1ps7tjN6dNPm/cnDb5bHJz2uRzzM1pKypt8vno5rSoWSq71XZzWtQsld2AuzXtzO7F3ZyWNEvN7A7dzWlJs9Q8KiotaZaa2d28m9OSZqmZ3eO7OS1qlsru/N2cFjVLZfcDb06LmqWyu4Q3p0XNUtm9w5vTomap7I7izWlRs1R2n/HmtKhZKrv7eHNa1CyV3ZO8OS1qlsruVN6cFjVLZfcvb06LmqWyu5o3p0XNUtm9zpvTomap7A7ozWlRs1R2X/TmtKhZKrtbenNa1CyV3UO9OS1qlsrurN6cFjVLZfdbb06LmqWyu7A3p0XNUtm92ZvTomap7I7tzWlRs1R2H/fmtKhZKru7e3Na1CyV3fO9OS1qlsruBN+cFjVLZfeHb06LmqWyu8Y3p0XNUtm95JvTomap7A7zzWlRs1R23/nmtKhZKrsbfXNa1CyV3aO+OS1qlsruXN+cFjVLZfezb06LmqWyu9w3p0XNUtm975vTomap7I74zWlRs1R2n/zmtKhZCuWeT5R7PlHu+US55xPlnk+Uez5R7vlEuecT5Z5PlHs+Ue75RLnnE+WeT5R7Hij3PFDueaDc80C553FUVFrSLBUo9zxQ7nmg3PNAueeBcs8D5Z4Hyj0PlHseKPc8UO55oNzzQLnngXLPA+WeB8o9D5R7Hij3PFDueaDc80C554FyzwPlngfKPQ+Uex4o9zxQ7nmg3PNAueeBcs8D5Z4Hyj0PlHseKPc8UO55oNzzQLnngXLPA+WeB8o9D5R7Hij3PFDueaDc80C554FyzwPlngfKPQ+Uex4o9zxQ7nmg3PNAueeBcs8D5Z4Hyj0PlHseKPc8UO55oNzzQLnngXLPA+WeB8o9D5R7Hij3PFDueaDc80C554FyzwPlngfKPQ+Uex4o9zxQ7nmg3PNAueeBcs8D5Z4Hyj0PlHseKPc8UO55oNzzQLnngXLPA+WeB8o9D5R7Hij3PFDueaDc80C554FyzwPlntuBgs/PuKRp6oxLGqfOuKR56oxbWXFJE9UZlzRSnXFJM9UZlzRUnXFZUxWKQD/fjzVVoRD08/1YUxWKQT/fjzVVoSD08/1YUxWKQj/fjzVVoTD0My5rqkJx6Gdc1lSFAtHPuKypCkWin3FZUxUKRT/jsqYqFIt+xmVNVSgY/YzLmqpQNPoZlzVVoXD0My5rqkLx6Gdc1lSFAtLPuKypCkWkn3FZUxUKST/jsqYqFJN+xmVNVSgo/YzLmqpQVPoZlzVVobD0My5rqkJx6Wdc1lSFAtPPuKypCkWmn3FZUxUKTT/jsqYqFJt+xmVNVSg4/YzLmqpQdPoZlzVVofD0My5rqkLx6Wdc1lSFAtTPuKypCkWon3FZUxUKUT/jsqYqFKN+xmVNVShI/YzLmqpQlPoZlzVVoTD1My5rqkJx6mdc1lSFAtXPuKypCkWqn3FZUxUKVT/jsqYqFKt+xmVNVShY/YzLmqpQtPoZFzVVGctWN5atbixb3Vi2uh2VFRc1VRnLVjeWrW4sW91YtrqxbHVj2erGstWNZasby1Y3lq1uLFvdWLa6sWx1Y9nqxrLVjWWrG8tWN5atbixb3Vi2urFsdWPZ6say1Y1lqxvLVjeWrW4sW91YtrqxbHVj2erGstWNZasby1Y3lq1uLFvdWLa6sWx1Y9nqxrLVjWWrG8tWN5atbixb3Vi2urFsdWPZ6say1Y1lqxvLVjeWrW4sW91YtrqxbHVj2erGstWNZasby1Y3lq1uLFvdWLa6sWx1Y9nqxrLVjWWrG8tWN5atbixb3Vi2urFsdWPZ6say1Y1lqxvLVjeWrW4sW91YtrqxbHVj2erGstWNZasby1Y3lq1uLFvdWLa6sWx1Y9nqxrLVjWWrG8tWN5atbixb3Vi2urFsdWPZ6s6y1Z1lqzvLVneWre5HZcVFTVXOstWdZas7y1Z3lq3uLFvdWba6s2x1Z9nqzrLVnWWrO8tWd5at7ixb3Vm2urNsdWfZ6s6y1Z1lqzvLVneWre4sW91ZtrqzbHVn2erOstWdZas7y1Z3lq3uLFvdWba6s2x1Z9nqzrLVnWWrO8tWd5at7ixb3Vm2urNsdWfZ6s6y1Z1lqzvLVneWre4sW91ZtrqzbHVn2erOstWdZas7y1Z3lq3uLFvdWba6s2x1Z9nqzrLVnWWrO8tWd5at7ixb3Vm2urNsdWfZ6s6y1Z1lqzvLVneWre4sW91ZtrqzbHVn2erOstWdZas7y1Z3lq3uLFvdWba6s2x1Z9nqzrLVnWWrO8tWd5at7ixb3Vm2urNsdWfZ6s6y1Z1lqzvLVneWre4sW91Ztnph2eqFZasXlq1eWLZ6OSorLmqqKixbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1wrLVC8tWLyxbvbBs9cKy1QvLVi8sW72wbPXCstULy1YvLFu9sGz1yrLVK8tWryxbvbJs9XpUVlzUVFVZtnpl2eqVZatXlq1eWbZ6ZdnqlWWrV5atXlm2emXZ6pVlq1eWrV5Ztnpl2eqVZatXlq1eWbZ6ZdnqlWWrV5atXlm2emXZ6pVlq1eWrV5Ztnpl2eqVZatXlq1eWbZ6ZdnqlWWrV5atXlm2emXZ6pVlq1eWrV5Ztnpl2eqVZatXlq1eWbZ6ZdnqlWWrV5atXlm2emXZ6pVlq1eWrV5Ztnpl2eqVZatXlq1eWbZ6ZdnqlWWrV5atXlm2emXZ6pVlq1eWrV5Ztnpl2eqVZatXlq1eWbZ6ZdnqlWWrV5atXlm2emXZ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0u3ZNd2eXdPt2TXdnl3T7dk13Z79Kx/QGcfH31vMeHo0/ysf0Llw4fPv7vPvwr9c2I9jBQ9Hebz4/Ousj9eaH8/+DNqDhLX4fK3XZ39e0erjxdGPT+3a+3ws/1c+tCOzfNNevmsvv2gvv2ovv2kvv2svf2gvf2ovX7t1u3brdu3W7dqt27Vbt2u3btdu3X5D69p5Cz7W9J+L/psBHita/W6N0R4/CI7+1R9K+fhJqw/dpU/dpYfs0sehu3TTXbrrLr3oLr3qLr3pLl23TYdumw7dNh26bTp123TqtunUbdOp26ZTt02nbptO3Tadum06ddt06rZp6LZp6LZp6LZp6LZp6LZp6LZp6LZp6LZp6LZpyLapHbJtaodsm9oh26Z2yLapHbJtaodsm9oh26Z2yLapHbJtaodum5pum5pum5pum5pum5pum5pum5pum5pum5pum5pum7pum7pum7pum7pum7pum7pum7pum7pum7pum7pumxbdNi26bVp027TotmnRbdOi26ZFt02LbpsW3TYtum1addu06rZp1W3TqtumVbdNq26bVt02rbptWnXbtOq2adNt06bbpk23TZtum95hJ32vpeu2adNt06bbpk23TZtum3bdNu26bdp127TrtukdJtL3Wrpum+paSKZrIZmuhWS6FpLpWkimayGZroVkuhaS6VpIpmshma6FZLoWkulaSKZrIZmuhWS6FpLpWkimayGZroVkuhaS6VpIpmshma6FZLoWkulaSKZrIZmuhWS6FpLpWkimayGZroVkuhaS6VpIpmshua6F5LoWkutaSK5rIfkh26auayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FpLrWkiuayG5roXkuhaS61pIrmshua6F5LoWkutaSK5rIbmuheS6FlLRtZCKroVUdC2komshlUO2TYuuhVR0LaSiayEVXQup6FpIRddCKroWUtG1kIquhVR0LaSiayEVXQup6FpIRddCKroWUtG1kIquhVR0LaSiayEVXQup6FpIRddCKroWUtG1kIquhVR0LaSiayEVXQup6FpIRddCKroWUtG1kIquhVR0LaSiayEVXQup6FpIRddCKroWUtG1kIquhVR0LaSiayEVXQup6FpIRddCKroWUtG1kIquhVR0LaSiayEVXQup6FpIRddCKhcsJOurpUcdj6XH+OXbfPvqMvzLi6uVz9f+/Af0zWu9P75wOeovXvtl+Rc8pNTLN+3lu/byi/byq/by2z92+Y+36a95m3HH28zHq/2wY/E/Rivx5cWtfi7JW/9Y0sy3pEi3pHHkW5LlW5LnW1L5jktq/emSar4ltXxLeroj9/MVjyWVwxdL8uGPKvJZv3qbn6fcb14drT4G5uhftdHPr34samRc1My4qEi4qOf2zPdelGVclGdcVMm4qJpxUS3jojLu6DPjjj4z7ugz444eGXf0yLijPzdLevGPEa/EcsSr0R4/4bb+9c/25eNtymvepr7mbdpr3qa/5m3Ga95mvuZt4oa3af3xY4j1r37C+fltvn11t8f5Th+xeO3509DHQX3E56v9/M7/rwD1uTahFMDUA7h6gKIeoKoHaOoBunqAoR5gqgdQb2JTb2JTb2JTb2JTb2JTb2JTb2JTb2JTb2JTb2JTb2JXb2JXb2JXb2JXb2JP3QPt+PiLe/vqExe9fyw/dQssl19S70DNP5Zf2tPlp95/1stPvfusl59671kvv2ovP9FPAI8lJdrLH0t6+f482qPy5rHux/LZj9Wf9WOZ6gFCPEA91AOYegBXD1DUA7y8K+dH/8UY2699LL9pL79rL39oL39qLz+kl98O7eWb9vJde/lFe/nardu0W7dpt27Tbt2m3bpNu3W7dut27dbt2q3btVu3a7du127drt26Xbt1u3brdu3WHdqtO7Rbd2i37tBu3aHdukO7dYd26w7t1h3arTu0W3dqt+7Ubt2p3bpTu3WndutO7dad2q07tVt3arfu1G7d0G7d0G7d0G7d0G7dWzyX77h87dYN7dYN7dYN7dYN6dZth3TrtkO6ddsh3brtkG7ddki3bjukW7cd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"},{"name":"cancel_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(internal)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":39,"start":0}],"outer_hash":[{"end":40,"start":39}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"outer_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496]},"bytecode":"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","debug_symbols":"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"},{"name":"spend_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)"],"abi":{"error_types":{},"param_witnesses":{"inner_hash":[{"end":40,"start":39}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496]},"bytecode":"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","debug_symbols":"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"},{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(initializer)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":39,"start":0}],"signing_pub_key_x":[{"end":40,"start":39}],"signing_pub_key_y":[{"end":41,"start":40}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497]},"bytecode":"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","debug_symbols":"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17uv91HXu6/3Et7f1vuo693X+6jr3df7qOvd1/uo693X+6jr3db7EXW9+3ofdb37eh91vft6H3W9+3ov4f1tvY+63n29j7refb2Put59vY+63n29j7reXb2vS9T17ut91PXu633U9e7rfdT17uu9hPe39T7qevf1Pup69/U+6nr39T7qevf1Pup6t/U+RV3vvt5HXe++3kdd777eR13vvt5LeH9b76Oud1/vo653X++jrndf76Oud1/vo653W+9z1PV+2nsZD+9bcvU+6nr39T7qevf1Pup69/Vewvvbeh91vft6H3W9+3ofdb37eh91vft6H3W923q/Rl3vvt5HXe++3kdd777eR13vvt5LeH9b76Oud1/vo653X++jrndf76Oud1/vo653W+8l6nr39T7qevf1Pup69/U+6nr39V7C+9t6H3W9+3ofdb37eh91vft6H3W9+3ofdb3bel+irndf76Oud1/vo653X++jrndf7yW8v633Ude7r/dR17uv91HXu6/3Ude7r/dR17ut9zXqevf1Pup69/U+6nr39T7qevf1XsL723ofdb37eh91vft6H3W9+3ofdb37eh91vfO9/6/PrX97/+umtyio/cBNj0rW9256q/tk1Jf+9U0/dSpqUW4CNyhqQuAGSRiEbVBUV8ANihIIuEFRpwA3KIoJ4AbFGz+2QT2qA+AGRSUB3KCoJIAbFJUEcIMkDMI2KCoJ4AZFJQHcoKgkgBsUlQRwg6KSgG3QiEoCuEFRSQA3KCoJ4AZFJQHcIAmDsA2KSgK4QVFJADcoKgngBkUlAdygqCRAG9SWqCSAGxSVBHCDopIAblBUEsANkjAI26CoJIAbFJUEcIOikgBuUFQSwA2KSgK2QSkqCeAGRSUB3KCoJIAbFJUEcIMkDMI2KCoJ4AZFJQHcoKgkgBsUlQRwg6KSgG1QjkrC9wzq+WFQXf826Pd9vPML/1r/kCzp6/v4D6dR1lx+/2kb/3X46+9bfudXeKNb/o8n7i7r/sebV39NLov5tHXn6sDdvZfw/rbe37mmcXfv71wuubv3d67E3N37Oxd57u79netHN/d+vXNp6u7eRzntvt5HXe++3kdd777eS3h/W++jrndf76Oud1/vo653X++jrndf76Oud1vvJep69/U+6nr39T7qevf1Pup69/Vewvvbeh91vft6H3W9+3ofdb37eh91vft6H3W923pfoq53X++jrndf76Oud1/vo653X+8lvL+t91HXu6/3Ude7r/dR17uv91HXu6/3Ude7rfc16nr39T7qevf1Pup69/U+6nr39V7C+9t6H3W9+3ofdb37eh91vft6H3W9+3ofdb3bet+irndf76Ou99Pey3h435Kr91HXu6/3Ude7r/cS3t/W+6jr3df7qOvd1/uo693X+6jr3df7qOvd1vsedb37eh91vft6H3W9+3ofdb37ei/h/W29j7refb2Put59vY+63n29j7refb2Put5tvR9R17uv91HXu6/3Ude7r/dR17uv9xLe39b7qOvd1/uo693X+6jr3df7qOvd1/uo693V+75EXe++3kdd777eR13vvt5HXe++3kt4f1vvo653X++jrndf76Oud1/vo653X++jrndb71PU9e7rfdT17ut91PXu633U9e7rvYT3t/U+6nr39T7qevf1Pup69/U+6nr39T7qerf1Pkdd73zvc3vcvTXVv73/fdOjoPa9m97qPi62H56+vunnjoqoeoEbFKUpcIMkDMI2KIo84AZFJQbcoCiXgBsUNQ1wg6LwgG3QGtUBcIOikgBuUFQSwA2KSgK4QRIGYRsUlQRwg6KSAG5QVBLADYpKArhBUUnANkiikgBuUFQSwA2KSgK4QVFJADdIwiBsg6KSAG5QVBLADYpKArhBUUkANygqCdgGlagkgBsUlQRwg6KSAG5QVBLADZIwCNugqCSAGxSVBHCDopIAblBUEsANikoCtkE1KgngBkUlAdygqCSAGxSVBHCDJAzCNigqCeAGRSUB3KCoJIAbFJUEcIOikoBtUItKwvcM6vlhUF3/Nuj3fbzzC7+sjw+XsX59H8vjPv7XaZRH/8M2yn7L83iBfO6guHNx4HJm3rmQcDkzJcy8jpl3LlBczsw7FzMuZ+adCx+XM/PORZLLmXnngsrVzOx3Lr5czsyoAF3IzKgAXcjMqABdyEwJM69jZlSALmRmVIAuZGZUgC5kZlSALmRmVICuY+aICtCFzIwK0IXMjArQhcyMCtCFzJQw8zpmRgXoQmZGBehCZkYF6EJmRgXoQmZGBegyZo4lKkAXMjMqQBcyMypAFzIzKkAXMlPCzOuYGRWgC5kZFaALmRkVoAuZGRWgC5kZFaDrmJmiAnQhM6MCdCEzowJ0ITOjAnQh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X1et+1Xtrav6W1eNd6463nL28qr01lX5rasO/eqPMkNfDq+St64qb11V37qqvXVVf+uq8c5Vxz8T9LqXxHvrR1elt67Kb121vnWVvHVVeeuq+tZVx8/GY27vox5d1d+6arxz1XEN4OVV6a2r8ltXrW9ddfhsjLSPlJGORsrxi9jLq+pbV7W3rupvXTXeuer42/DLq9KLq/KRX8ffB19etb511fGzse5jecjRWK7lravqW1e1t67qb1013rmqLW9ddfxs1MdvB4vIf132f//yx781soPG6qAhDhrFQaM6aDQHje6gMew1+uKg4TDOu8M47w7jvDuM8+4wzrvDOO8O47w7jPPuMM6HwzgfDuN8OIzz4TDOh8M4Hw7jfDiM8+EwzofDOB8O4zwti4dI8hDJHiKrh4h4iBQPkeoh0jxEuoeIx4hPHiM+eYz45DHik8eITx4jPnmM+OQx4pPHiE8eIz55jPjsMeKzx4jPHiM+e4z47DHis8eIzx4jPnuM+Owx4rPHiF89RvzqMeJXjxG/eoz41WPErx4jfvUY8avHiF89RvzqMeLFY8SLx4gXjxEvHiNePEa8eIx48Rjx4jHixWPEi8eILx4jvniM+OIx4ovHiC8eI754jPjiMeKLx4gvHiO+eIz46jHiq8eIrx4jvnqM+Oox4qvHiK8eI756jPjqMeKrx4hvHiPeY19d8thYlzx21iWPrXXJY29d8thclzx21yWP7XXJY39d8thglzx22CWPLXbJY49d8thklzx22SWPbXbJY59d8tholzx22iWPrXbJY69d8thslzx22yWP7XbJY79d8thwlzx23CWPLXfJY89d9thzlz323GWPPXfZY89dXsRDpHiIVA+R5iHSPUQ8RrzHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yx577rLHnrvssecue+y5yyfsVCvLfthJSX8fCF8fGt1e44TdXSU/NNZyqJEdNFYHDXHQKA4a/7qQ7Ne196474Tf5l8/xCT/Jv9YoDhrVQcNh7jrh5/giezpFKflQY9hrnPBj/GuN5KCRHTROGOdrf2ishxrioFEcNKqD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FqFE1mYRSmRtFqFE1mYRSo1PiazNIpTI2ixCiazNIpTI2ixCiazNYkeZyNosthNZm8V2Imuz2E5kt8VvJ7I2i+1E1maxnfhextG1WWwnsjaL7UTWZrGdGqET2/40M/LBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPNnywZMtHzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88FTOh88pfPBUzofPKXzwVM6Hzyl88GTLR882fLBky0fPNnywZMtHzzZ8sGTLR882fLBky0fPNnywZMtHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzz58sGTLx88+fLBky8fPPnywZMvHzwJ88GTMB88CfPBkzAfPAnzwZMwHzwJ88GTMB88CfPBkzAfPAnzwZMvH7z6f+72OLfjqdPsjY2fG/g62u+P2gd/HX+Iu6r4UhUvh6x5kTU3WfMqa95kzbus+ZA1l52gRXaEFtkZarIz1GRnqMnOUJOdoSY7Q012hhpshp6ECSfcnkn9eVKn9XZJWGhCPeCEAicYnHB7b/Pn4mleLwkNTuhwwoAT7q7pfsz/frQffklwOGGhCe2AEwqccPentdvzo92uCQNOuPudHvV51G10uyL0A06Af5X67TXdzp+lPi8JDicsNGEccEKBEwxOqHBCgxM6nDDghC+u6TEuCQ4n3F/T5843Lwnz9po+d+9XhAInGJxwd02PMw8xjnVJaHBChxMGnDDhhNtrej0vfx7luCQsNMEPOKHACQYnVDihwQkdThhwwvwi4XJNu8MJ99f080TLsEvCur2mz9ehrwgFTjA44facfvdv0dXghA4nDDhhwgkOJ8DfnLw4Ov0tRD86vs0iILptFtte9obtbS97w/a2l71he9s3aXvZG7a3vewN29te9obtbS97w/a2l22zCHvdNottLz1rddsstr30rNVts9j20rNWt81i20vPWt02i23P1GYRQlRtFltI9obtbS97w/a2l71he9s3aXvZG7a3vewN29te9obtbS97w/a2l71hO+x12yy2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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"8011798108105997510112178111116101"},{"kind":"string","value":"PublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"1"}},{"name":"typ","value":{"kind":"string","value":"PrivateImmutable"}}],"kind":"struct"}},{"name":"approved_actions","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"2"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"outer_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::approve_public_authwit_parameters"}}],"kind":"struct","path":"SchnorrAccount::approve_public_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"outer_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::cancel_authwit_parameters"}}],"kind":"struct","path":"SchnorrAccount::cancel_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::spend_public_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::spend_public_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::spend_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::spend_private_authwit_abi"}]}},"file_map":{"101":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nfn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"103":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, hash::pedersen_hash, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: Field = 24;\n\nstruct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nfn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nfn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"106":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::PublicKeys;\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, grumpkin_point::GrumpkinPoint};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nfn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 9] {}\n\nunconstrained fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 9] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\nfn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(address);\n\n let keys = PublicKeys {\n npk_m: GrumpkinPoint::new(result[0], result[1]),\n ivpk_m: GrumpkinPoint::new(result[2], result[3]),\n ovpk_m: GrumpkinPoint::new(result[4], result[5]),\n tpk_m: GrumpkinPoint::new(result[6], result[7])\n };\n\n let partial_address = PartialAddress::from_field(result[8]);\n\n (keys, partial_address)\n}\n"},"107":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nfn emit_encrypted_note_log_oracle(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_note_log(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nfn emit_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nfn compute_encrypted_note_log_oracle(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nfn compute_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nfn emit_contract_class_unencrypted_log_private(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, event_selector, message, counter)\n}\n"},"109":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n"},"110":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"111":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nfn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nfn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"113":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, hash::pedersen_hash,\n public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage, traits::{Hash, Serialize},\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nfn get_public_data_witness_oracle(\n _block_number: u32,\n _leaf_slot: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, leaf_slot: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, leaf_slot);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"114":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::{\n grumpkin_point::GrumpkinPoint,\n abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH}\n};\n\n#[oracle(getKeyValidationRequest)]\nfn get_key_validation_request_oracle(_pk_m_hash: Field, _key_index: Field) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(npk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"115":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nfn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _inner_note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n inner_note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n inner_note_hash,\n counter\n )\n}\n\n#[oracle(notifyNullifiedNote)]\nfn notify_nullified_note_oracle(\n _nullifier: Field,\n _inner_note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_nullified_note(\n nullifier: Field,\n inner_note_hash: Field,\n counter: u32\n) -> Field {\n notify_nullified_note_oracle(nullifier, inner_note_hash, counter)\n}\n\n#[oracle(getNotes)]\nfn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\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_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; 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 _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S] where Note: NoteInterface {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n Note::set_header(&mut note, header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nfn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"116":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nfn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nfn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"117":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nfn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"120":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl Storage for Map {}\n\nimpl Map {\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 { context, storage_slot, state_var_constructor }\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 = derive_storage_slot_in_map(self.storage_slot, key);\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"},"123":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse dep::std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initally equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation \n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the \n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a \n// reduced delay, invalidating prior private reads.\nstruct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option, \n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pre: Option,\n post: Option,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n // The _dummy variable forces INITIAL_DELAY to be interpreted as a numeric value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; INITIAL_DELAY],\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change, _dummy: [0; INITIAL_DELAY] }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current block number - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_block_number: u32) -> u32 {\n // The post value becomes the current one at the block of change, so any transaction that is included in the\n // block of change will use the post value.\n\n if current_block_number < self.block_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the block at which it will become the current\n /// delay. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u32, u32) {\n (self.post.unwrap_or(INITIAL_DELAY), self.block_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current block number. This function is only meaningful\n /// when called in public with the current block number.\n /// The block at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u32, current_block_number: u32) {\n let current = self.get_current(current_block_number);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let blocks_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior contraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value block of change\n // block block of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | blocks until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.block_of_change = current_block_number + blocks_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical block number. It only returns a meaningful value when called in private with historical blocks. This \n /// function can be used alongside `ScheduledValueChange.get_block_horizon` to properly constrain the\n /// `max_block_number` transaction property when reading mutable shared state.\n /// This value typically equals the current delay at the block following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is \n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_block_number: u32) -> u32 {\n if self.block_of_change <= historical_block_number {\n // If no delay changes were scheduled, then the delay value at the historical block (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // block of change the current delay will be the scheduled one, with an overall delay from the historical\n // block number equal to the number of blocks until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // block delay actual earliest value\n // v block of change block of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest block in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | blocks new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest block in \n // which to scheduled value change\n\n let blocks_until_change = self.block_of_change - (historical_block_number + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n blocks_until_change + self.post.unwrap_or(INITIAL_DELAY)\n )\n }\n }\n}\n\nimpl Serialize<1> for ScheduledDelayChange {\n fn serialize(self) -> [Field; 1] {\n // We pack all three u32 values into a single U128, which is made up of two u64 limbs.\n // Low limb: [ pre_inner: u32 | post_inner: u32 ]\n // High limb: [ empty | pre_is_some: u8 | post_is_some: u8 | block_of_change: u32 ]\n\n let lo = ((self.pre.unwrap_unchecked() as u64) * (1 << 32))\n + (self.post.unwrap_unchecked() as u64);\n\n let hi = (self.pre.is_some() as u64) * (1 << 33) \n + (self.post.is_some() as u64 * (1 << 32)) \n + self.block_of_change as u64;\n\n let packed = U128::from_u64s_le(lo, hi);\n\n [packed.to_integer()]\n }\n}\n\nimpl Deserialize<1> for ScheduledDelayChange {\n fn deserialize(input: [Field; 1]) -> Self {\n let packed = U128::from_integer(input[0]);\n\n // We use division and modulo to clear the bits that correspond to other values when unpacking.\n\n let pre_is_some = ((packed.hi as u64) / (1 << 33)) as bool;\n let pre_inner = ((packed.lo as u64) / (1 << 32)) as u32;\n\n let post_is_some = (((packed.hi as u64) / (1 << 32)) % (1 << 1)) as bool;\n let post_inner = ((packed.lo as u64) % (1 << 32)) as u32;\n\n let block_of_change = ((packed.hi as u64) % (1 << 32)) as u32;\n\n Self {\n pre: if pre_is_some { Option::some(pre_inner) } else { Option::none() },\n post: if post_is_some { Option::some(post_inner) } else { Option::none() },\n block_of_change,\n _dummy: [0; INITIAL_DELAY],\n }\n }\n}\n"},"125":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse dep::std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block\n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know\n// both the current value and the smallest block number at which the value might change - this is called the\n// 'block horizon'.\nstruct ScheduledValueChange {\n pre: T,\n post: T,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public\n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current\n /// transaction will be included) and in private (where `block_number` is the historical block number that is used\n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or\n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current\n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`,\n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum number of blocks that need to\n /// elapse from the next block until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon\n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to\n // that one.\n //\n // block of historical\n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the block of change is in the past: the time horizon is the\n // block prior to the earliest one in which a new block of change might land.\n //\n // historical\n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case\n // the block of change would become the limiting factor for the time horizon, which would equal the\n // block right before the block of change (since by definition the value changes at the block of\n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for\n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current block number. This function is only meaningful when\n /// called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl Serialize<3> for ScheduledValueChange {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl Deserialize<3> for ScheduledValueChange {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self {\n pre: FromField::from_field(input[0]),\n post: FromField::from_field(input[1]),\n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n"},"128":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable_private_getter.nr","source":"use dep::protocol_types::{hash::pedersen_hash, traits::FromField, address::AztecAddress, header::Header};\n\nuse crate::context::PrivateContext;\nuse crate::public_storage;\nuse crate::state_vars::{\n storage::Storage,\n shared_mutable::{scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange}\n};\n\nstruct SharedMutablePrivateGetter {\n context: &mut PrivateContext,\n // The contract address of the contract we want to read from\n other_contract_address: AztecAddress,\n // The storage slot where the SharedMutable is stored on the other contract\n storage_slot: Field,\n // The _dummy variable forces INITIAL_DELAY to be interpreted as a numberic value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; INITIAL_DELAY],\n}\n\n// We have this as a view-only interface to reading Shared Mutables in other contracts.\n// Currently the Shared Mutable does not support this. We can adapt SharedMutable at a later date\nimpl SharedMutablePrivateGetter {\n pub fn new(\n context: &mut PrivateContext,\n other_contract_address: AztecAddress,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n assert(other_contract_address.to_field() != 0, \"Other contract address cannot be 0\");\n Self { context, other_contract_address, storage_slot, _dummy: [0; INITIAL_DELAY] }\n }\n\n pub fn get_value_in_private(self, header: Header) -> T where T: FromField {\n let (value_change, delay_change, historical_block_number) = self.historical_read_from_public_storage(header);\n let effective_minimum_delay = delay_change.get_effective_minimum_delay_at(historical_block_number);\n let block_horizon = value_change.get_block_horizon(historical_block_number, effective_minimum_delay);\n\n // If our context has the same header as the one we pass in via the parameter, we are trying to read the \"current\" value\n // and thus need to set the tx max block number below. If the context header is not the same as the one we pass in, this means\n // we are trying to read a historical value and thus have no constraint on the max block number that this transaction can be included in.\n if (self.context.historical_header.global_variables.block_number.eq(header.global_variables.block_number)) {\n self.context.set_tx_max_block_number(block_horizon);\n }\n\n value_change.get_current_at(historical_block_number)\n }\n\n fn historical_read_from_public_storage(\n self,\n header: Header\n ) -> (ScheduledValueChange, ScheduledDelayChange, u32) where T: FromField {\n let value_change_slot = self.get_value_change_storage_slot();\n let mut raw_value_change_fields = [0; 3];\n for i in 0..3 {\n raw_value_change_fields[i] = header.public_storage_historical_read(\n value_change_slot + i as Field,\n self.other_contract_address\n );\n }\n\n let delay_change_slot = self.get_delay_change_storage_slot();\n let raw_delay_change_fields = [header.public_storage_historical_read(delay_change_slot, self.other_contract_address)];\n\n let value_change = ScheduledValueChange::deserialize(raw_value_change_fields);\n let delay_change = ScheduledDelayChange::deserialize(raw_delay_change_fields);\n\n let historical_block_number = header.global_variables.block_number as u32;\n\n (value_change, delay_change, historical_block_number)\n }\n\n fn get_value_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 0], 0)\n }\n\n fn get_delay_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 1], 0)\n }\n}\n"},"131":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl Storage for PublicMutable {}\n\nimpl PublicMutable {\n // docs:start:public_mutable_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 ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl PublicMutable {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T where T: Deserialize {\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) where T: Serialize {\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl PublicMutable {\n pub fn read(self) -> T where T: Deserialize {\n // This looks the same as the &mut PublicContext impl, but is actually very different. In public execution the\n // storage read oracle gets transpiled to SLOAD opcodes, whereas in unconstrained execution the PXE returns\n // historical data.\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n}\n"},"133":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, grumpkin_point::GrumpkinPoint,\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::pedersen_hash\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor. \n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n pedersen_hash(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint\n ) where Note: NoteInterface {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_new_nullifier(nullifier, 0);\n\n create_note(self.context, self.storage_slot, note, ovpk_m, ivpk_m);\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note where Note: NoteInterface {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot)\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note where Note: NoteInterface {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1))[0].unwrap()\n }\n // docs:end:view_note\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"146":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::{compute_siloed_nullifier, pedersen_hash},\n constants::GENERATOR_INDEX__CONSTRUCTOR, abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_new_nullifier(init_nullifier, 0);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_new_nullifier(init_nullifier, 0);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_contract_initialization_nullifier(context.this_address());\n let header = context.get_header();\n header.prove_nullifier_inclusion(init_nullifier);\n}\n\nfn compute_contract_initialization_nullifier(address: AztecAddress) -> Field {\n compute_siloed_nullifier(\n address,\n compute_unsiloed_contract_initialization_nullifier(address)\n )\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n pedersen_hash(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"158":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\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 Serialize for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"160":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"163":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize for 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 serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"164":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\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 Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> 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"},"165":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse dep::std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"166":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"167":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"168":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"176":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"177":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"178":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"179":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"180":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\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 function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x22786e4f971661d2e49095e6b038e5170bc47b795253916d5657c4bdd1df50bf;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"186":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"189":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"190":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1970bf189adc837d1769f9f44a8b55c97d45690e7744859b71b647e808ee8622;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"198":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x03ab5026ab5b3e6b81be5c3ec31c7937f293180c25a240eb75693cda81bb2a05;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"20":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n// TODO(https://github.com/noir-lang/noir/issues/4931)\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite) | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n// Scalar represented as low and high limbs\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n#[foreign(multi_scalar_mul)]\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> [Field; 3]\n// docs:end:multi_scalar_mul\n{}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(\n scalar_low: Field,\n scalar_high: Field\n) -> [Field; 3]\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n let scalar = EmbeddedCurveScalar { lo: scalar_low, hi: scalar_high };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"200":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"201":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"202":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\nstruct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self {\n nullifier : 0,\n next_nullifier : 0,\n next_index : 0,\n }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n dep::std::hash::pedersen_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier) &\n (self.next_nullifier == other.next_nullifier) &\n (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"203":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\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::empty();\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\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x124a62189073cc551fea148d735d1e8b452e38537e075895b02ccfd9c9901819;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x2cbb07062730bfc4933f5e8d533d5b62ac6e1b7922b831993377cd85d7445399;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"206":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\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 Serialize for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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 { inner: result }\n }\n}\n"},"207":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::pedersen_hash, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\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 Serialize for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n pedersen_hash(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_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.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"209":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::pedersen_hash, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n pedersen_hash(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"21":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose_hint, decompose, compute_lt, assert_gt, gt, lt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"210":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"212":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"220":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/grumpkin_point.nr","source":"use crate::{traits::{Serialize, Deserialize, Hash}, hash::poseidon2_hash};\nuse dep::std::cmp::Eq;\n\nglobal GRUMPKIN_POINT_SERIALIZED_LEN: Field = 2;\n\n// TODO(https://github.com/noir-lang/noir/issues/4931)\nstruct GrumpkinPoint {\n x: Field,\n y: Field,\n}\n\nimpl Serialize for GrumpkinPoint {\n fn serialize(self) -> [Field; GRUMPKIN_POINT_SERIALIZED_LEN] {\n [self.x, self.y]\n }\n}\n\nimpl Deserialize for GrumpkinPoint {\n fn deserialize(serialized: [Field; GRUMPKIN_POINT_SERIALIZED_LEN]) -> Self {\n Self {\n x: serialized[0],\n y: serialized[1],\n }\n }\n}\n\nimpl Eq for GrumpkinPoint {\n fn eq(self, point: GrumpkinPoint) -> bool {\n (point.x == self.x) & (point.y == self.y)\n }\n}\n\nimpl Hash for GrumpkinPoint {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl GrumpkinPoint {\n pub fn new(x: Field, y: Field) -> Self {\n Self { x, y }\n }\n\n pub fn zero() -> Self {\n Self { x: 0, y: 0 }\n }\n\n pub fn is_zero(self) -> bool {\n (self.x == 0) & (self.y == 0)\n }\n\n // TODO(David): Would be quite careful here as (0,0) is not a point\n // on the curve. A boolean flag may be the better approach here,\n // would also cost less constraints. It seems like we don't need to \n // group arithmetic either. \n fn assert_is_zero(self) {\n assert(self.x == 0);\n assert(self.y == 0);\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 64] {\n let mut result = [0 as u8; 64];\n let x_bytes = self.x.to_be_bytes(32);\n let y_bytes = self.y.to_be_bytes(32);\n for i in 0..32 {\n result[i] = x_bytes[i];\n result[i + 32] = y_bytes[i];\n }\n result\n }\n}\n"},"221":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/grumpkin_private_key.nr","source":"use dep::std::{cmp::Eq, embedded_curve_ops::fixed_base_scalar_mul};\nuse crate::{grumpkin_point::GrumpkinPoint, traits::Empty};\n\nglobal GRUMPKIN_PRIVATE_KEY_SERIALIZED_LEN: Field = 2;\n\nstruct GrumpkinPrivateKey {\n high: Field,\n low: Field,\n}\n\nimpl Eq for GrumpkinPrivateKey {\n fn eq(self, key: GrumpkinPrivateKey) -> bool {\n (key.high == self.high) & (key.low == self.low)\n }\n}\n\nimpl Empty for GrumpkinPrivateKey {\n fn empty() -> Self {\n Self { high: 0, low: 0 }\n }\n}\n\nimpl GrumpkinPrivateKey {\n pub fn new(high: Field, low: Field) -> Self {\n GrumpkinPrivateKey { high, low }\n }\n\n pub fn zero() -> Self {\n Self { high: 0, low: 0 }\n }\n\n pub fn is_zero(self) -> bool {\n (self.high == 0) & (self.low == 0)\n }\n\n pub fn serialize(self) -> [Field; GRUMPKIN_PRIVATE_KEY_SERIALIZED_LEN] {\n [self.high, self.low]\n }\n\n pub fn derive_public_key(self) -> GrumpkinPoint {\n let public_key = fixed_base_scalar_mul(self.low, self.high);\n GrumpkinPoint { x: public_key[0], y: public_key[1] }\n }\n}\n"},"222":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"233":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"234":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"240":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"242":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"254":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"256":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"257":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\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 lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n"},"265":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\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_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&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 // TODO(#4394)\n pub fn read_struct(&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(&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"},"266":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"267":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle(_msg: str, args: [Field]) {}\n\n/// NOTE: call this with a str msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format(msg: str, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"270":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n dep::std::hash::pedersen_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"271":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize"},"28":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"29":{"path":"std/hash.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::sha256::{digest, sha256_var};\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\nstruct PedersenPoint {\n x : Field,\n y : Field,\n}\n\npub fn pedersen_commitment(input: [Field; N]) -> PedersenPoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(keccak256)]\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n"},"3":{"path":"std/cmp.nr","source":"// docs:start:eq-trait\ntrait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\nimpl Eq for Field { fn eq(self, other: Field) -> bool { self == other } }\n\nimpl Eq for u64 { fn eq(self, other: u64) -> bool { self == other } }\nimpl Eq for u32 { fn eq(self, other: u32) -> bool { self == other } }\nimpl Eq for u8 { fn eq(self, other: u8) -> bool { self == other } }\nimpl Eq for u1 { fn eq(self, other: u1) -> bool { self == other } }\n\nimpl Eq for i8 { fn eq(self, other: i8) -> bool { self == other } }\nimpl Eq for i32 { fn eq(self, other: i32) -> bool { self == other } }\nimpl Eq for i64 { fn eq(self, other: i64) -> bool { self == other } }\n\nimpl Eq for () { fn eq(_self: Self, _other: ()) -> bool { true } }\nimpl Eq for bool { fn eq(self, other: bool) -> bool { self == other } }\n\nimpl Eq for [T; N] where T: Eq {\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T] where T: Eq {\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B) where A: Eq, B: Eq {\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C) where A: Eq, B: Eq, C: Eq {\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D) where A: Eq, B: Eq, C: Eq, D: Eq {\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E) where A: Eq, B: Eq, C: Eq, D: Eq, E: Eq {\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3) & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\nstruct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n// docs:start:ord-trait\ntrait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else {\n if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n\nimpl Ord for [T; N] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl Ord for [T] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B) where A: Ord, B: Ord {\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C) where A: Ord, B: Ord, C: Ord {\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D) where A: Ord, B: Ord, C: Ord, D: Ord {\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E) where A: Ord, B: Ord, C: Ord, D: Ord, E: Ord {\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T where T: Ord {\n if v1 > v2 { v1 } else { v2 }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T where T: Ord {\n if v1 > v2 { v2 } else { v1 }\n}\n\nmod cmp_tests {\n use crate::cmp::{min, max};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"},"31":{"path":"std/merkle.nr","source":"// Regular merkle tree means a append-only merkle tree (Explain why this is the only way to have privacy and alternatives if you don't want it)\n// Currently we assume that it is a binary tree, so depth k implies a width of 2^k\n// XXX: In the future we can add an arity parameter\n// Returns the merkle root of the tree from the provided leaf, its hashpath, using a pedersen hash function.\npub fn compute_merkle_root(leaf: Field, index: Field, hash_path: [Field; N]) -> Field {\n let n = hash_path.len();\n let index_bits = index.to_le_bits(n as u32);\n let mut current = leaf;\n for i in 0..n {\n let path_bit = index_bits[i] as bool;\n let (hash_left, hash_right) = if path_bit {\n (hash_path[i], current)\n } else {\n (current, hash_path[i])\n };\n current = crate::hash::pedersen_hash([hash_left, hash_right]);\n }\n current\n}\n"},"341":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","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\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, PrivateContext, PrivateImmutable};\n use dep::aztec::state_vars::{Map, PublicMutable};\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness\n };\n use dep::aztec::hash::compute_siloed_nullifier;\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n\n use crate::public_key_note::{PublicKeyNote, PUBLIC_KEY_NOTE_LEN};\n\n #[aztec(storage)]\n struct Storage {\n // docs:start:storage\n signing_public_key: PrivateImmutable,\n // docs:end:storage\n approved_actions: Map>,\n }\n\n // Constructs the contract\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let header = context.get_header();\n let this_npk_m_hash = header.get_npk_m_hash(&mut context, this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n let this_ovpk_m = header.get_ovpk_m(&mut context, this);\n let this_ivpk_m = header.get_ivpk_m(&mut context, this);\n\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_npk_m_hash);\n storage.signing_public_key.initialize(&mut pub_key_note, this_ovpk_m, this_ivpk_m);\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 #[aztec(noinitcheck)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload) {\n let actions = AccountActions::init(\n &mut context,\n storage.approved_actions.storage_slot,\n is_valid_impl\n );\n actions.entrypoint(app_payload, fee_payload);\n }\n\n #[aztec(private)]\n #[aztec(noinitcheck)]\n fn spend_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(\n &mut context,\n storage.approved_actions.storage_slot,\n is_valid_impl\n );\n actions.spend_private_authwit(inner_hash)\n }\n\n #[aztec(public)]\n #[aztec(noinitcheck)]\n fn spend_public_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(\n &mut context,\n storage.approved_actions.storage_slot,\n is_valid_impl\n );\n actions.spend_public_authwit(inner_hash)\n }\n\n #[aztec(private)]\n #[aztec(internal)]\n fn cancel_authwit(outer_hash: Field) {\n context.push_new_nullifier(outer_hash, 0);\n }\n\n #[aztec(public)]\n #[aztec(internal)]\n #[aztec(noinitcheck)]\n fn approve_public_authwit(outer_hash: Field) {\n let actions = AccountActions::init(\n &mut context,\n storage.approved_actions.storage_slot,\n is_valid_impl\n );\n actions.approve_public_authwit(outer_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(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(outer_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_slice(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n /**\n * @notice Helper function to check the existing and validity of authwitnesses\n * @dev TODO: myself and block_number should be removed and passed from a context\n * @param myself The address of the contract\n * @param block_number The block number to check the nullifier against\n * @param check_private Whether to check the validity of the authwitness in private state or not\n * @param message_hash The message hash of the message to check the validity\n * @return An array of two booleans, the first is the validity of the authwitness in the private state,\n * the second is the validity of the authwitness in the public state\n * Both values will be `false` if the nullifier is spent\n */\n unconstrained fn lookup_validity(\n myself: AztecAddress,\n block_number: u32,\n check_private: bool,\n message_hash: Field\n ) -> pub [bool; 2] {\n let valid_in_private = if check_private {\n let public_key = storage.signing_public_key.view_note();\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 std::schnorr::verify_signature_slice(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n )\n } else {\n false\n };\n\n let valid_in_public = storage.approved_actions.at(message_hash).read();\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let siloed_nullifier = compute_siloed_nullifier(myself, message_hash);\n let lower_wit = get_low_nullifier_membership_witness(block_number, siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n if is_spent {\n [false, false]\n } else {\n [valid_in_private, valid_in_public]\n }\n }\n}\n"},"342":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{AztecAddress, NoteHeader, NoteInterface, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_consumption, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, grumpkin_point::GrumpkinPoint, hash::poseidon2_hash}\n};\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n// PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal PUBLIC_KEY_NOTE_BYTES_LEN: Field = 3 * 32 + 64;\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?\n#[aztec(note)]\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NoteInterface for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_consumption(self);\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash([\n note_hash_for_nullify,\n secret,\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n ])\n }\n\n fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_consumption(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash([\n note_hash_for_nullify,\n secret,\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n ])\n }\n\n // Broadcasts the note as an encrypted log on L1.\n fn broadcast(self, context: &mut PrivateContext, slot: Field, ovpk_m: GrumpkinPoint, ivpk_m: GrumpkinPoint) {\n context.encrypt_and_emit_note(\n slot,\n ovpk_m,\n ivpk_m,\n self,\n );\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"35":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\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 { self._value } else { default }\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(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\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(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(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(self, f: fn[Env](T) -> Option) -> Option {\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 { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\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 { Option::none() } else { self }\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(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> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u32) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u32) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any(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\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n"},"44":{"path":"std/uint128.nr","source":"use crate::ops::{Add, Sub, Mul, Div, Rem, Not, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\nuse crate::println;\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\nglobal pow63 : Field = 9223372036854775808; // 2^63;\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn zero() -> U128 {\n U128 { lo: 0, hi: 0 }\n }\n\n pub fn one() -> U128 {\n U128 { lo: 1, hi: 0 }\n }\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex(hex: str) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n unconstrained fn uconstrained_check_is_upper_ascii(ascii: u8) -> bool {\n ((ascii >= 65) & (ascii <= 90)) // Between 'A' and 'Z'\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else {\n let ascii = ascii + 32 * (U128::uconstrained_check_is_upper_ascii(ascii) as u8);\n assert(ascii >= 97); // enforce >= 'a'\n assert(ascii <= 102); // enforce <= 'f'\n ascii - 87\n } as Field\n }\n\n // TODO: Replace with a faster version. \n // A circuit that uses this function can be slow to compute\n // (we're doing up to 127 calls to compute the quotient)\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if b == U128::zero() {\n // Return 0,0 to avoid eternal loop\n (U128::zero(), U128::zero())\n } else if self < b {\n (U128::zero(), self)\n } else if self == b {\n (U128::one(), U128::zero())\n } else {\n let (q,r) = if b.hi as u64 >= pow63 as u64 {\n // The result of multiplication by 2 would overflow\n (U128::zero(), self)\n } else {\n self.unconstrained_div(b * U128::from_u64s_le(2, 0))\n };\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::one(), r - b)\n }\n }\n }\n\n pub fn from_integer(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = self.lo * b.hi + self.hi * b.lo + carry;\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl Not for U128 { \n fn not(self) -> U128 {\n U128 {\n lo: (!(self.lo as u64)) as Field,\n hi: (!(self.hi as u64)) as Field\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift left with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift right with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n\nmod tests {\n use crate::uint128::{U128, pow64, pow63};\n\n #[test]\n fn test_not() {\n let num = U128::from_u64s_le(0, 0);\n let not_num = num.not();\n\n let max_u64: Field = pow64 - 1;\n assert_eq(not_num.hi, max_u64);\n assert_eq(not_num.lo, max_u64);\n\n let not_not_num = not_num.not();\n assert_eq(num, not_not_num);\n }\n #[test]\n fn test_construction() {\n // Check little-endian u64 is inversed with big-endian u64 construction\n let a = U128::from_u64s_le(2, 1);\n let b = U128::from_u64s_be(1, 2);\n assert_eq(a, b);\n // Check byte construction is equivalent\n let c = U128::from_le_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n let d = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n assert_eq(c, d);\n }\n #[test]\n fn test_byte_decomposition() {\n let a = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n // Get big-endian and little-endian byte decompostions\n let le_bytes_a= a.to_le_bytes();\n let be_bytes_a= a.to_be_bytes();\n\n // Check equivalence\n for i in 0..16 {\n assert_eq(le_bytes_a[i], be_bytes_a[15 - i]);\n }\n // Reconstruct U128 from byte decomposition\n let b= U128::from_le_bytes(le_bytes_a);\n // Check that it's the same element\n assert_eq(a, b);\n }\n #[test]\n fn test_hex_constuction() {\n let a = U128::from_u64s_le(0x1, 0x2);\n let b = U128::from_hex(\"0x20000000000000001\");\n assert_eq(a, b);\n\n let c= U128::from_hex(\"0xffffffffffffffffffffffffffffffff\");\n let d= U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff);\n assert_eq(c, d);\n\n let e= U128::from_hex(\"0x00000000000000000000000000000000\");\n let f= U128::from_u64s_le(0, 0);\n assert_eq(e, f);\n }\n\n // Ascii decode tests\n\n #[test]\n fn test_ascii_decode_correct_range() {\n // '0'..'9' range\n for i in 0..10 {\n let decoded= U128::decode_ascii(48 + i);\n assert_eq(decoded, i as Field);\n }\n // 'A'..'F' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(65 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n // 'a'..'f' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(97 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_0() {\n crate::println(U128::decode_ascii(0));\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_1() {\n crate::println(U128::decode_ascii(47));\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_0() {\n let _ = U128::decode_ascii(58);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_1() {\n let _ = U128::decode_ascii(64);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_0() {\n let _ = U128::decode_ascii(71);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_1() {\n let _ = U128::decode_ascii(96);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_greater_than_102_fails() {\n let _ = U128::decode_ascii(103);\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_regression() {\n // This code will actually fail because of ascii_decode,\n // but in the past it was possible to create a value > (1<<128)\n let a = U128::from_hex(\"0x~fffffffffffffffffffffffffffffff\");\n let b:Field= a.to_integer();\n let c= b.to_le_bytes(17);\n assert(c[16] != 0);\n }\n\n #[test]\n fn test_unconstrained_div() {\n // Test the potential overflow case\n let a= U128::from_u64s_le(0x0, 0xffffffffffffffff);\n let b= U128::from_u64s_le(0x0, 0xfffffffffffffffe);\n let c= U128::one();\n let d= U128::from_u64s_le(0x0, 0x1);\n let (q,r) = a.unconstrained_div(b);\n assert_eq(q, c);\n assert_eq(r, d);\n\n let a = U128::from_u64s_le(2, 0);\n let b = U128::one();\n // Check the case where a is a multiple of b\n let (c,d ) = a.unconstrained_div(b);\n assert_eq((c, d), (a, U128::zero()));\n\n // Check where b is a multiple of a\n let (c,d) = b.unconstrained_div(a);\n assert_eq((c, d), (U128::zero(), b));\n\n // Dividing by zero returns 0,0\n let a = U128::from_u64s_le(0x1, 0x0);\n let b = U128::zero();\n let (c,d)= a.unconstrained_div(b);\n assert_eq((c, d), (U128::zero(), U128::zero()));\n\n // Dividing 1<<127 by 1<<127 (special case)\n let a = U128::from_u64s_le(0x0, pow63 as u64);\n let b = U128::from_u64s_le(0x0, pow63 as u64);\n let (c,d )= a.unconstrained_div(b);\n assert_eq((c, d), (U128::one(), U128::zero()));\n }\n\n #[test]\n fn integer_conversions() {\n // Maximum\n let start:Field = 0xffffffffffffffffffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Minimum\n let start:Field = 0x0;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Low limb\n let start:Field = 0xffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // High limb\n let start:Field = 0xffffffffffffffff0000000000000000;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n #[test]\n fn test_wrapping_mul() {\n // 1*0==0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::one()));\n\n // 0*1==0\n assert_eq(U128::zero(), U128::one().wrapping_mul(U128::zero()));\n\n // 1*1==1\n assert_eq(U128::one(), U128::one().wrapping_mul(U128::one()));\n\n // 0 * ( 1 << 64 ) == 0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * 0 == 0\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::zero()));\n\n // 1 * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::from_u64s_le(0, 1).wrapping_mul(U128::one()));\n\n // ( 1 << 64 ) * 1 == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::one().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::from_u64s_le(0, 1)));\n // -1 * -1 == 1\n assert_eq(\n U128::one(), U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff).wrapping_mul(U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff))\n );\n }\n}\n"},"51":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"52":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"55":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::context::{PrivateContext, PublicContext};\nuse dep::aztec::state_vars::{Map, PublicMutable};\nuse dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector, hash::pedersen_hash};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_outer_authwit_hash};\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map, Context>,\n}\n\nimpl AccountActions {\n pub fn init(\n context: Context,\n approved_action_storage_slot: Field,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool\n ) -> Self {\n AccountActions {\n context,\n is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicMutable::new(context, slot)\n }\n )\n }\n }\n}\n\nimpl AccountActions<&mut PrivateContext> {\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload) {\n let valid_fn = self.is_valid_impl;\n\n let fee_hash = fee_payload.hash();\n assert(valid_fn(self.context, fee_hash));\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n\n let app_hash = app_payload.hash();\n assert(valid_fn(self.context, app_hash));\n app_payload.execute_calls(self.context);\n }\n // docs:end:entrypoint\n\n // docs:start:spend_private_authwit\n pub fn spend_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can \n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_outer_authwit_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n self.context.push_new_nullifier(message_hash, 0);\n IS_VALID_SELECTOR\n }\n // docs:end:spend_private_authwit\n}\n\nimpl AccountActions<&mut PublicContext> {\n // docs:start:spend_public_authwit\n pub fn spend_public_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can \n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_outer_authwit_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let is_valid = self.approved_action.at(message_hash).read();\n assert(is_valid == true, \"Message not authorized by account\");\n self.context.push_new_nullifier(message_hash, 0);\n IS_VALID_SELECTOR\n }\n // docs:end:spend_public_authwit\n\n // docs:start:approve_public_authwit\n pub fn approve_public_authwit(self, message_hash: Field) {\n self.approved_action.at(message_hash).write(true);\n }\n // docs:end:approve_public_authwit\n}\n"},"56":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = context.call_public_function(\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n"},"57":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"67":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn storage_address(self) -> AztecAddress {\n storage_address()\n }\n pub fn fee_per_l2_gas(self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(self) -> Field {\n fee_per_da_gas()\n }\n /**\n * Emit a log with the given event selector and message.\n *\n * @param event_selector The event selector for the log.\n * @param message The message to emit in the log.\n */\n pub fn emit_unencrypted_log_with_selector(\n &mut self,\n event_selector: Field,\n log: T\n ) where T: Serialize {\n emit_unencrypted_log(event_selector, Serialize::serialize(log).as_slice());\n }\n // For compatibility with the selector-less API. We'll probably rename the above one.\n pub fn emit_unencrypted_log(&mut self, log: T) where T: Serialize {\n self.emit_unencrypted_log_with_selector(/*event_selector=*/ 5, log);\n }\n pub fn note_hash_exists(self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n pub fn l1_to_l2_msg_exists(self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn block_number(self) -> Field {\n block_number()\n }\n\n fn timestamp(self) -> u64 {\n timestamp()\n }\n\n fn transaction_fee(self) -> Field {\n transaction_fee()\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0);\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n fn msg_sender(self) -> AztecAddress {\n sender()\n }\n fn this_address(self) -> AztecAddress {\n address()\n }\n fn chain_id(self) -> Field {\n chain_id()\n }\n fn version(self) -> Field {\n version()\n }\n fn selector(self) -> FunctionSelector {\n FunctionSelector::from_field(self.inputs.selector)\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn l2_gas_left(self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(self) -> Field {\n da_gas_left()\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n let MAX_POSSIBLE_FIELD: Field = 0 - 1;\n [\n user_gas.l2_gas.unwrap_or(MAX_POSSIBLE_FIELD),\n user_gas.da_gas.unwrap_or(MAX_POSSIBLE_FIELD)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(event_selector: Field, message: [Field]) {\n emit_unencrypted_log_opcode(event_selector, message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nfn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nfn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nfn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nfn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nfn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nfn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeTransactionFee)]\nfn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nfn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nfn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nfn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nfn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nfn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nfn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nfn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nfn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nfn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nfn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(amvOpcodeEmitUnencryptedLog)]\nfn emit_unencrypted_log_opcode(event_selector: Field, message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nfn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nfn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nfn call_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nfn call_static_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\nstruct FunctionReturns {\n values: [Field; N]\n}\n\nimpl FunctionReturns {\n pub fn new(values: [Field; N]) -> FunctionReturns {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into(self) -> T where T: Deserialize {\n Deserialize::deserialize(self.raw())\n }\n}\n"},"68":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::address::AztecAddress;\n\nstruct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress, \n}\n\nimpl UnconstrainedContext {\n fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = block_number_oracle();\n let contract_address = contract_address_oracle();\n Self { block_number, contract_address }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\n#[oracle(getContractAddress)]\nfn contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nfn block_number_oracle() -> u32 {}\n"},"70":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint,\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash\n};\n\nuse dep::std::aes128::aes128_encrypt;\nuse dep::std::println;\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: GrumpkinPrivateKey,\n recipient: AztecAddress,\n recipient_ivpk_app: GrumpkinPoint,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(\n eph_sk: GrumpkinPrivateKey,\n recipient: AztecAddress,\n recipient_ivpk_app: GrumpkinPoint\n ) -> Self {\n Self { eph_sk, recipient, recipient_ivpk_app }\n }\n\n pub fn compute_ciphertext(self, ovsk_app: GrumpkinPrivateKey, eph_pk: GrumpkinPoint) -> [u8; 176] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer: [u8; 160] = [0; 160];\n\n let serialized_eph_sk: [Field; 2] = self.eph_sk.serialize();\n let serialized_eph_sk_high = serialized_eph_sk[0].to_be_bytes(32);\n let serialized_eph_sk_low = serialized_eph_sk[1].to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\n let serialized_recipient_ivpk_app = self.recipient_ivpk_app.serialize();\n let serialized_recipient_ivpk_app_x = serialized_recipient_ivpk_app[0].to_be_bytes(32);\n let serialized_recipient_ivpk_app_y = serialized_recipient_ivpk_app[1].to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n buffer[i + 96] = serialized_recipient_ivpk_app_x[i];\n buffer[i + 128] = serialized_recipient_ivpk_app_y[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash(\n [\n ovsk_app.high, ovsk_app.low, eph_pk.x, eph_pk.y,\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ]\n ).to_be_bytes(32).as_array();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::encrypted_logs::outgoing_body::EncryptedLogOutgoingBody;\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, hash::poseidon2_hash\n };\n\n use crate::context::PrivateContext;\n\n #[test]\n fn test_encrypted_log_outgoing_body() {\n let eph_sk = GrumpkinPrivateKey::new(\n 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe\n );\n let recipient_ivsk_app = GrumpkinPrivateKey::new(\n 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31,\n 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022\n );\n let sender_ovsk_app = GrumpkinPrivateKey::new(\n 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e\n );\n\n let eph_pk = eph_sk.derive_public_key();\n let recipient_ivpk_app = recipient_ivsk_app.derive_public_key();\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk_app);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n let expected_outgoing_body_ciphertext = [\n 126, 10, 214, 39, 130, 143, 96, 143, 79, 143, 22, 36, 55, 41, 234, 255, 226, 26, 138, 236, 91, 188, 204, 216, 172, 133, 134, 69, 161, 237, 134, 5, 75, 192, 10, 6, 229, 54, 194, 56, 103, 243, 57, 248, 147, 237, 4, 3, 39, 28, 226, 30, 237, 228, 212, 115, 246, 244, 105, 39, 129, 119, 126, 207, 176, 14, 75, 134, 241, 23, 2, 187, 239, 86, 47, 56, 239, 20, 92, 176, 70, 12, 219, 226, 150, 70, 192, 43, 125, 53, 230, 153, 135, 228, 210, 197, 76, 123, 185, 190, 61, 172, 29, 168, 241, 191, 205, 71, 136, 72, 52, 115, 232, 246, 87, 42, 50, 150, 134, 108, 225, 90, 191, 191, 182, 150, 124, 147, 78, 249, 144, 111, 122, 187, 187, 5, 249, 167, 186, 14, 228, 128, 158, 138, 55, 99, 228, 46, 219, 187, 248, 122, 70, 31, 39, 209, 127, 23, 244, 84, 14, 93, 86, 208, 155, 151, 238, 70, 63, 3, 137, 59, 206, 230, 4, 20\n ];\n\n for i in 0..expected_outgoing_body_ciphertext.len() {\n assert_eq(ciphertext[i], expected_outgoing_body_ciphertext[i]);\n }\n assert_eq(expected_outgoing_body_ciphertext.len(), ciphertext.len());\n }\n}\n"},"71":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse dep::std::aes128::aes128_encrypt;\n\nstruct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: GrumpkinPrivateKey, point: GrumpkinPoint) -> [u8; 48] {\n let full_key = point_to_symmetric_key(secret, point);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes(32).as_array();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n let point = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n let expected_header_ciphertext = [\n 131, 119, 105, 129, 244, 32, 151, 205, 12, 99, 93, 62, 10, 180, 72, 21, 179, 36, 250, 95, 56, 167, 171, 16, 195, 164, 223, 57, 75, 5, 24, 119, 198, 34, 99, 189, 193, 183, 227, 43, 79, 204, 214, 89, 221, 153, 246, 64\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext);\n}\n"},"72":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint,\n constants::{GENERATOR_INDEX__IVSK_M, GENERATOR_INDEX__OVSK_M}, hash::poseidon2_hash\n};\n\nuse dep::std::{embedded_curve_ops::{embedded_curve_add, EmbeddedCurvePoint}, field::bytes32_to_field};\n\nuse crate::oracle::unsafe_rand::unsafe_rand;\n\nuse crate::note::note_interface::NoteInterface;\n\nuse crate::encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n};\n\npub fn compute_encrypted_note_log(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: GrumpkinPoint,\n ivpk: GrumpkinPoint,\n note: Note\n) -> [u8; M] where Note: NoteInterface {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n let eph_sk: GrumpkinPrivateKey = fr_to_private_key(unsafe_rand());\n let eph_pk = eph_sk.derive_public_key();\n\n // @todo This value needs to be populated!\n let recipient = AztecAddress::from_field(0);\n\n let ivpk_app = compute_ivpk_app(ivpk, contract_address);\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_Header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk_app);\n let outgoing_body_ciphertext: [u8; 176] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk_app).compute_ciphertext(fr_to_private_key(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now \n\n let eph_pk_bytes = eph_pk.to_be_bytes();\n for i in 0..64 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[128 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[176 + i] = outgoing_Header_ciphertext[i];\n }\n for i in 0..176 {\n encrypted_bytes[224 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 400;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[400 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (64 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (176 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\nfn fr_to_private_key(r: Field) -> GrumpkinPrivateKey {\n let r_bytes = r.to_be_bytes(32);\n\n let mut high_bytes = [0; 32];\n let mut low_bytes = [0; 32];\n\n for i in 0..16 {\n high_bytes[16 + i] = r_bytes[i];\n low_bytes[16 + i] = r_bytes[i + 16];\n }\n\n let low = bytes32_to_field(low_bytes);\n let high = bytes32_to_field(high_bytes);\n\n GrumpkinPrivateKey::new(high, low)\n}\n\nfn compute_ivpk_app(ivpk: GrumpkinPoint, contract_address: AztecAddress) -> GrumpkinPoint {\n // It is useless to compute this, it brings no value to derive fully.\n // Issue(#6955)\n ivpk\n /*\n // @todo Just setting infinite to false, but it should be checked.\n // for example user could define ivpk = infinity using the registry\n assert((ivpk.x != 0) & (ivpk.y != 0), \"ivpk is infinite\");\n\n let i = fr_to_private_key(poseidon2_hash([contract_address.to_field(), ivpk.x, ivpk.y, GENERATOR_INDEX__IVSK_M]));\n let I = i.derive_public_key();\n\n let embed_I = EmbeddedCurvePoint { x: I.x, y: I.y, is_infinite: false };\n let embed_ivpk = EmbeddedCurvePoint { x: ivpk.x, y: ivpk.y, is_infinite: false };\n\n let embed_result = embedded_curve_add(embed_I, embed_ivpk);\n\n GrumpkinPoint::new(embed_result.x, embed_result.y)*/\n}\n"},"73":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint};\n\nuse dep::std::aes128::aes128_encrypt;\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nstruct EncryptedLogIncomingBody {\n plaintext: [u8; M]\n}\n\nimpl EncryptedLogIncomingBody {\n pub fn from_note(note: T, storage_slot: Field) -> Self where T: NoteInterface {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event(event: T, randomness: Field) -> Self where T: EventInterface {\n let mut plaintext = event.to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: GrumpkinPrivateKey, ivpk_app: GrumpkinPoint) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk_app);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use crate::encrypted_logs::incoming_body::EncryptedLogIncomingBody;\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, traits::Serialize,\n abis::function_selector::FunctionSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption},\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n context::PrivateContext\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface for AddressNote {\n fn compute_note_content_hash(self) -> Field {1}\n\n fn get_note_type_id() -> Field {1}\n\n fn get_header(self) -> NoteHeader { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(self, context: &mut PrivateContext) -> Field {1}\n\n fn compute_nullifier_without_context(self) -> Field {1}\n\n fn broadcast(self, context: &mut PrivateContext, slot: Field, ovpk_m: GrumpkinPoint, ivpk_m: GrumpkinPoint) {}\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes = serialized_note[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body() {\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n let ivpk_app = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk_app);\n\n let expected_note_body_ciphertext = [\n 131, 119, 105, 129, 244, 32, 151, 205, 12, 99, 93, 62, 10, 180, 72, 21, 47, 232, 95, 17, 240, 230, 80, 129, 174, 158, 23, 76, 114, 185, 43, 18, 254, 148, 147, 230, 66, 216, 167, 62, 180, 213, 238, 33, 108, 29, 84, 139, 99, 206, 212, 253, 92, 116, 137, 31, 0, 104, 45, 91, 250, 109, 141, 114, 189, 53, 35, 60, 108, 156, 170, 206, 150, 114, 150, 187, 198, 13, 62, 153, 133, 13, 169, 167, 242, 221, 40, 168, 186, 203, 104, 82, 47, 238, 142, 179, 90, 37, 9, 70, 245, 176, 122, 247, 42, 87, 75, 7, 20, 89, 166, 123, 14, 26, 230, 156, 49, 94, 0, 94, 72, 58, 171, 239, 115, 174, 155, 7, 151, 17, 60, 206, 193, 134, 70, 87, 215, 88, 21, 194, 63, 26, 106, 105, 124, 213, 252, 152, 192, 71, 115, 13, 181, 5, 169, 15, 170, 196, 174, 228, 170, 192, 91, 76, 110, 220, 89, 47, 248, 144, 189, 251, 167, 149, 248, 226\n ];\n\n assert_eq(expected_note_body_ciphertext.len(), ciphertext.len());\n\n for i in 0..expected_note_body_ciphertext.len() {\n assert_eq(ciphertext[i], expected_note_body_ciphertext[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n\n impl EventInterface for TestEvent {\n fn _selector(self) -> FunctionSelector {\n FunctionSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n\n fn to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes = randomness.to_be_bytes(32);\n let event_type_id_bytes = self._selector().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n\n let ivpk_app = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk_app);\n\n let expected_event_body_ciphertext = [\n 131, 119, 105, 129, 244, 32, 151, 205, 12, 99, 93, 62, 10, 180, 72, 21, 47, 232, 95, 17, 240, 230, 80, 129, 174, 158, 23, 76, 114, 185, 43, 18, 254, 148, 147, 230, 66, 216, 167, 62, 180, 213, 238, 33, 108, 29, 84, 139, 157, 165, 187, 138, 35, 3, 236, 75, 197, 105, 102, 247, 224, 253, 13, 217, 145, 62, 96, 167, 93, 23, 18, 198, 187, 91, 8, 3, 197, 195, 127, 9, 218, 111, 125, 97, 141, 129, 142, 1, 230, 108, 35, 211, 170, 170, 170, 249, 249, 104, 68, 191, 245, 207, 182, 245, 248, 82, 175, 83, 155, 138, 208, 65, 31, 129, 251, 242, 219, 76, 17, 61, 178, 187, 108, 114, 177, 215, 175, 189, 166, 221, 94, 9, 22, 57, 151, 204, 57, 220, 129, 243, 217, 18, 101, 128, 229, 40, 254, 175, 2, 21, 31, 198, 18, 152, 169, 32, 113, 92, 37, 65, 169, 119, 95, 149, 239, 8, 23, 182, 22, 209, 207, 120, 133, 90, 252, 106\n ];\n\n assert_eq(expected_event_body_ciphertext.len(), ciphertext.len());\n\n for i in 0..expected_event_body_ciphertext.len() {\n assert_eq(ciphertext[i], expected_event_body_ciphertext[i]);\n }\n }\n}\n"},"77":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/history/nullifier_inclusion.nr","source":"use dep::std::merkle::compute_merkle_root;\nuse dep::protocol_types::header::Header;\n\nuse crate::{\n context::PrivateContext, oracle::get_nullifier_membership_witness::get_nullifier_membership_witness,\n note::{utils::compute_siloed_nullifier, note_interface::NoteInterface}\n};\n\ntrait ProveNullifierInclusion {\n fn prove_nullifier_inclusion(header: Header, nullifier: Field);\n}\n\nimpl ProveNullifierInclusion for Header {\n fn prove_nullifier_inclusion(self, nullifier: Field) {\n // 1) Get the membership witness of the nullifier\n let witness = get_nullifier_membership_witness(self.global_variables.block_number as u32, nullifier);\n\n // 2) Check that the witness we obtained matches the nullifier\n assert(witness.leaf_preimage.nullifier == nullifier, \"Nullifier does not match value in witness\");\n\n // 3) Compute the nullifier tree leaf\n let nullifier_leaf = witness.leaf_preimage.hash();\n\n // 4) Prove that the nullifier is in the nullifier tree\n assert(\n self.state.partial.nullifier_tree.root\n == compute_merkle_root(nullifier_leaf, witness.index, witness.path), \"Proving nullifier inclusion failed\"\n );\n // --> Now we have traversed the trees all the way up to archive root and verified that the nullifier\n // was included in the nullifier tree.\n }\n}\n\ntrait ProveNoteIsNullified {\n fn prove_note_is_nullified(header: Header, note: Note, context: &mut PrivateContext) where Note: NoteInterface;\n}\n\nimpl ProveNoteIsNullified for Header {\n fn prove_note_is_nullified(self, note: Note, context: &mut PrivateContext) where Note: NoteInterface {\n let nullifier = compute_siloed_nullifier(note, context);\n\n self.prove_nullifier_inclusion(nullifier);\n }\n}\n"},"79":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::pedersen_hash, address::AztecAddress,\n header::Header, utils::field::full_field_less_than\n};\nuse dep::std::merkle::compute_merkle_root;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header { \n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_value_leaf_slot = pedersen_hash(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_value_leaf_slot\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_value_leaf_slot);\n let is_next_greater_than = full_field_less_than(public_value_leaf_slot, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_value_leaf_slot, \"Public data slot doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == compute_merkle_root(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"},"83":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/getters.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, grumpkin_point::GrumpkinPoint,\n storage::map::derive_storage_slot_in_map\n};\nuse crate::{\n context::PrivateContext,\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}},\n state_vars::{shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter}\n};\n\nglobal DELAY = 5;\n\n// docs:start:key-getters\ntrait KeyGetters {\n fn get_npk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_ivpk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_ovpk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_tpk_m(header: Header, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint;\n fn get_npk_m_hash(header: Header, context: &mut PrivateContext, address: AztecAddress) -> Field;\n}\n\nimpl KeyGetters for Header {\n fn get_npk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, NULLIFIER_INDEX, self)\n }\n\n fn get_ivpk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, INCOMING_INDEX, self)\n }\n\n fn get_ovpk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, OUTGOING_INDEX, self)\n }\n\n fn get_tpk_m(self, context: &mut PrivateContext, address: AztecAddress) -> GrumpkinPoint {\n get_master_key(context, address, TAGGING_INDEX, self)\n }\n\n fn get_npk_m_hash(self, context: &mut PrivateContext, address: AztecAddress) -> Field {\n get_master_key(context, address, NULLIFIER_INDEX, self).hash()\n }\n}\n// docs:end:key-getters\n\nfn get_master_key(\n context: &mut PrivateContext,\n address: AztecAddress,\n key_index: Field,\n header: Header\n) -> GrumpkinPoint {\n let key = fetch_key_from_registry(context, key_index, address, header);\n if key.is_zero() {\n // Keys were not registered in registry yet --> fetch key from PXE\n let keys = fetch_and_constrain_keys(address);\n // Return the corresponding to index\n keys.get_key_by_index(key_index)\n } else {\n // Keys were registered --> return the key\n key\n }\n}\n\nfn fetch_key_from_registry(\n context: &mut PrivateContext,\n key_index: Field,\n address: AztecAddress,\n header: Header\n) -> GrumpkinPoint {\n let x_coordinate_map_slot = key_index * 2 + 1;\n let y_coordinate_map_slot = x_coordinate_map_slot + 1;\n let x_coordinate_derived_slot = derive_storage_slot_in_map(x_coordinate_map_slot, address);\n let y_coordinate_derived_slot = derive_storage_slot_in_map(y_coordinate_map_slot, address);\n\n let x_coordinate_registry: SharedMutablePrivateGetter = SharedMutablePrivateGetter::new(\n context,\n AztecAddress::from_field(CANONICAL_KEY_REGISTRY_ADDRESS),\n x_coordinate_derived_slot\n );\n let y_coordinate_registry: SharedMutablePrivateGetter = SharedMutablePrivateGetter::new(\n context,\n AztecAddress::from_field(CANONICAL_KEY_REGISTRY_ADDRESS),\n y_coordinate_derived_slot\n );\n let x_coordinate = x_coordinate_registry.get_value_in_private(header);\n let y_coordinate = y_coordinate_registry.get_value_in_private(header);\n\n GrumpkinPoint::new(x_coordinate, y_coordinate)\n}\n\n// Passes only when keys were not rotated - is expected to be called only when keys were not registered yet\nfn fetch_and_constrain_keys(address: AztecAddress) -> PublicKeys {\n let (public_keys, partial_address) = get_public_keys_and_partial_address(address);\n\n let computed_address = AztecAddress::compute(public_keys.hash(), partial_address);\n\n assert(computed_address.eq(address));\n\n public_keys\n}\n\n// A helper function since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n"},"84":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, grumpkin_private_key::GrumpkinPrivateKey,\n grumpkin_point::GrumpkinPoint, utils::arr_copy_slice\n};\nuse dep::std::{hash::sha256, embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul}};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: GrumpkinPrivateKey, point: GrumpkinPoint) -> [u8; 32] {\n let shared_secret_fields = multi_scalar_mul(\n [EmbeddedCurvePoint { x: point.x, y: point.y, is_infinite: false }],\n [EmbeddedCurveScalar { lo: secret.low, hi: secret.high }]\n );\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/6061): make the func return Point struct directly\n let shared_secret = GrumpkinPoint::new(shared_secret_fields[0], shared_secret_fields[1]);\n let mut shared_secret_bytes_with_separator = [0 as u8; 65];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret.to_be_bytes(), shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[64] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nfn check_point_to_symmetric_key() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = GrumpkinPrivateKey::new(\n 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd\n );\n let point = GrumpkinPoint::new(\n 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e\n );\n\n let key = point_to_symmetric_key(secret, point);\n // The following value gets updated when running encrypt_buffer.test.ts with AZTEC_GENERATE_TEST_DATA=1\n let expected_key = [\n 198, 74, 242, 51, 177, 36, 183, 8, 2, 246, 197, 138, 59, 166, 86, 96, 155, 50, 186, 34, 242, 3, 208, 144, 161, 64, 69, 165, 70, 57, 226, 139\n ];\n assert_eq(key, expected_key);\n}\n"},"85":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH, hash::poseidon2_hash,\n grumpkin_point::GrumpkinPoint, traits::{Deserialize, Serialize}\n};\nuse crate::keys::constants::{NUM_KEY_TYPES, NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH = 8;\n\nstruct PublicKeys {\n npk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n ovpk_m: GrumpkinPoint,\n tpk_m: GrumpkinPoint,\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n poseidon2_hash(\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n ]\n )\n )\n }\n\n pub fn get_key_by_index(self, index: Field) -> GrumpkinPoint {\n assert(index as u8 < NUM_KEY_TYPES, \"Invalid key index\");\n if index == NULLIFIER_INDEX {\n self.npk_m\n } else if index == INCOMING_INDEX {\n self.ivpk_m\n } else if index == OUTGOING_INDEX {\n self.ovpk_m\n } else {\n self.tpk_m\n }\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: GrumpkinPoint { x: serialized[0], y: serialized[1] },\n ivpk_m: GrumpkinPoint { x: serialized[2], y: serialized[3] },\n ovpk_m: GrumpkinPoint { x: serialized[4], y: serialized[5] },\n tpk_m: GrumpkinPoint { x: serialized[6], y: serialized[7] },\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x1936abe4f6a920d16a9f6917f10a679507687e2cd935dd1f1cdcb1e908c027f3;\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.x, deserialized.npk_m.x);\n assert_eq(keys.npk_m.y, deserialized.npk_m.y);\n assert_eq(keys.ivpk_m.x, deserialized.ivpk_m.x);\n assert_eq(keys.ivpk_m.y, deserialized.ivpk_m.y);\n assert_eq(keys.ovpk_m.x, deserialized.ovpk_m.x);\n assert_eq(keys.ovpk_m.y, deserialized.ovpk_m.y);\n assert_eq(keys.tpk_m.x, deserialized.tpk_m.x);\n assert_eq(keys.tpk_m.y, deserialized.tpk_m.y);\n}\n"},"89":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/note_header.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse dep::protocol_types::traits::{Empty, Eq, Serialize};\n\nstruct NoteHeader {\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n // Check the nonce to see whether a note is transient or not.\n note_hash_counter: u32, // a note_hash_counter of 0 means non-transient\n}\n\nimpl Empty for NoteHeader {\n fn empty() -> Self {\n NoteHeader { contract_address: AztecAddress::zero(), nonce: 0, storage_slot: 0, note_hash_counter: 0 }\n }\n}\n\nimpl Eq for NoteHeader {\n fn eq(self, other: Self) -> bool {\n (self.contract_address == other.contract_address) & \n (self.nonce == other.nonce) & \n (self.storage_slot == other.storage_slot)& \n (self.note_hash_counter == other.note_hash_counter)\n }\n}\n\nimpl NoteHeader {\n pub fn new(contract_address: AztecAddress, nonce: Field, storage_slot: Field) -> Self {\n NoteHeader { contract_address, nonce, storage_slot, note_hash_counter: 0 }\n }\n}\n\nimpl Serialize<4> for NoteHeader {\n fn serialize(self) -> [Field; 4] {\n [self.contract_address.to_field(), self.nonce, self.storage_slot, self.note_hash_counter as Field]\n }\n}\n"},"91":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__INNER_NOTE_HASH\n},\n hash::pedersen_hash, utils::arr_copy_slice\n};\n\nfn compute_siloed_hash(contract_address: AztecAddress, unique_note_hash: Field) -> Field {\n let inputs = [contract_address.to_field(), unique_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__SILOED_NOTE_HASH)\n}\n\nfn compute_unique_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\nfn compute_inner_note_hash(note: Note) -> Field where Note: NoteInterface {\n let header = note.get_header();\n let note_hash = note.compute_note_content_hash();\n\n pedersen_hash(\n [header.storage_slot, note_hash],\n GENERATOR_INDEX__INNER_NOTE_HASH\n )\n}\n\nfn compute_unique_note_hash(note_with_header: Note) -> Field where Note: NoteInterface {\n let header = note_with_header.get_header();\n\n let inner_note_hash = compute_inner_note_hash(note_with_header);\n\n compute_unique_hash(header.nonce, inner_note_hash)\n}\n\nfn compute_siloed_note_hash(note_with_header: Note) -> Field where Note: NoteInterface {\n let header = note_with_header.get_header();\n\n let unique_note_hash = if (header.nonce == 0) {\n // If nonce is zero, that means we are reading a public note.\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n // Remove this once notes added from public also include nonces.\n compute_inner_note_hash(note_with_header)\n } else {\n compute_unique_note_hash(note_with_header)\n };\n\n compute_siloed_hash(header.contract_address, unique_note_hash)\n}\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface {\n let header = note_with_header.get_header();\n let inner_nullifier = note_with_header.compute_nullifier(context);\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_insertion(note: Note) -> Field where Note: NoteInterface {\n compute_inner_note_hash(note)\n}\n\npub fn compute_note_hash_for_read_request(note: Note) -> Field where Note: NoteInterface {\n let header = note.get_header();\n\n if (header.nonce != 0) {\n compute_unique_note_hash(note)\n } else {\n compute_inner_note_hash(note)\n }\n}\n\npub fn compute_note_hash_for_consumption(note: Note) -> Field where Note: NoteInterface {\n let header = note.get_header();\n // There are 3 cases for reading a note intended for consumption:\n // 1. The note was inserted in this transaction, and is transient.\n // 2. The note was inserted in a previous transaction, and was inserted in public\n // 3. The note was inserted in a previous transaction, and was inserted in private\n\n if (header.note_hash_counter != 0) {\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)\n } else {\n // If a note is not transient, that means we are reading a settled note (from tree) created in a\n // previous TX. So we need the siloed_note_hash which has already been hashed with\n // nonce and then contract address. This hash will match the existing leaf in the note hash\n // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n compute_siloed_note_hash(note)\n // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n // nullification, it is not strictly necessary to silo the note hash before computing\n // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n }\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier(\n // docs:start:compute_note_hash_and_optionally_a_nullifier_args\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S] // docs:end:compute_note_hash_and_optionally_a_nullifier_args\n) -> [Field; 4] where T: NoteInterface {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n T::set_header((&mut note), note_header);\n\n let inner_note_hash = compute_inner_note_hash(note);\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n // Should always be calling compute_unique_hash() once notes added from public also include nonces.\n let unique_note_hash = if note_header.nonce != 0 {\n compute_unique_hash(note_header.nonce, inner_note_hash)\n } else {\n inner_note_hash\n };\n\n let siloed_note_hash = compute_siloed_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [inner_note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"92":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use dep::protocol_types::grumpkin_point::GrumpkinPoint;\nuse crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::NoteInterface,\n utils::{compute_note_hash_for_insertion, compute_note_hash_for_consumption}\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint\n) where Note: NoteInterface {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n Note::set_header(note, header);\n let inner_note_hash = compute_note_hash_for_insertion(*note);\n\n // TODO: Strong typing required because of https://github.com/noir-lang/noir/issues/4088\n let serialized_note: [Field; N] = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n inner_note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_new_note_hash(inner_note_hash);\n\n Note::broadcast(*note, context, storage_slot, ovpk_m, ivpk_m);\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n // TODO: change this to note.set_header(header) once https://github.com/noir-lang/noir/issues/4095 is fixed\n Note::set_header(note, header);\n let inner_note_hash = compute_note_hash_for_insertion(*note);\n\n context.push_new_note_hash(inner_note_hash);\n}\n\npub fn destroy_note(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface {\n let mut nullifier = 0;\n let mut consumed_note_hash: Field = 0;\n nullifier = note.compute_nullifier(context);\n\n // We also need the note hash corresponding to the \"nullifier\"\n let header = note.get_header();\n\n // A non-zero note hash counter implies that we're nullifying a transient note (i.e. one that has not yet been\n // persisted in the trees and is instead if the pending new commitments array). In such a case we compute its hash \n // to inform the kernel which note we're nullifyng so that it can find it and squash both the note and the \n // nullifier. This value is unused when nullifying non transient notes - in that case the kernel simply persists\n // the nullifier in the tree.\n if (header.note_hash_counter != 0) {\n // TODO(1718): Can we reuse the note hash computed in `compute_nullifier`?\n consumed_note_hash = compute_note_hash_for_consumption(note);\n }\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, consumed_note_hash, nullifier_counter) == 0);\n\n context.push_new_nullifier(nullifier, consumed_note_hash)\n}\n"},"93":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/note_getter.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note. \n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value = serialized_note[selector.index].to_be_bytes(32);\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(serialized_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"Mismatch return note field.\");\n }\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\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(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> Note where Note: NoteInterface {\n let note = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\n note\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n let opt_notes = get_notes_internal(storage_slot, options);\n\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n let mut returned_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let mut num_notes = 0;\n let mut prev_fields = [0; N];\n for i in 0..filtered_notes.len() {\n let opt_note = filtered_notes[i];\n if opt_note.is_some() {\n let note = opt_note.unwrap_unchecked();\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, 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_request(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_note_hash_read_request(note_hash_for_read_request);\n\n // The below code is used to collapse a sparse array into one where the values are guaranteed to be at the \n // front of the array. This is highly useful because the caller knows that the returned array won't have\n // more than option.limits notes, and can therefore loop over this limit value instead of the entire array,\n // resulting in a smaller circuit and faster proving times.\n // We write at returned_notes[num_notes] because num_notes is only advanced when we have a value in \n // filtered_notes.\n returned_notes[num_notes] = Option::some(note);\n num_notes += 1;\n };\n }\n if options.limit != 0 {\n assert(num_notes <= options.limit, \"Got more notes than limit.\");\n }\n\n assert(num_notes != 0, \"Cannot return zero notes\");\n\n returned_notes\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note where Note: NoteInterface {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n )\n}\n\nunconstrained pub fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions\n) -> [Option; MAX_NOTES_PER_PAGE] where Note: NoteInterface {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, 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 let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [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_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"96":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/note/note_viewer_options.nr","source":"use dep::std::option::Option;\nuse crate::note::note_getter_options::{PropertySelector, Select, Sort, Comparator, NoteStatus};\nuse dep::protocol_types::traits::ToField;\nuse crate::note::note_interface::NoteInterface;\nuse crate::note::constants::MAX_NOTES_PER_PAGE;\n\n// docs:start:NoteViewerOptions\nstruct NoteViewerOptions {\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n limit: u32,\n offset: u32,\n status: u8,\n}\n// docs:end:NoteViewerOptions\n\nimpl NoteViewerOptions {\n pub fn new() -> NoteViewerOptions where Note: NoteInterface {\n NoteViewerOptions {\n selects: BoundedVec::new(),\n sorts: BoundedVec::new(),\n limit: MAX_NOTES_PER_PAGE as u32,\n offset: 0,\n status: NoteStatus.ACTIVE\n }\n }\n\n // This method adds a `Select` criterion to the options.\n // It takes a field_index indicating which field to select,\n // a value representing the specific value to match in that field, and\n // a comparator (For possible values of comparators, please see the Comparator enum from note_getter_options)\n pub fn select(\n &mut self,\n property_selector: PropertySelector,\n value: T,\n comparator: Option\n ) -> Self where T: ToField {\n self.selects.push(\n Option::some(\n Select::new(\n property_selector,\n value.to_field(),\n comparator.unwrap_or(Comparator.EQ)\n )\n )\n );\n *self\n }\n\n pub fn sort(&mut self, property_selector: PropertySelector, order: u8) -> Self {\n self.sorts.push(Option::some(Sort::new(property_selector, order)));\n *self\n }\n\n pub fn set_limit(&mut self, limit: u32) -> Self {\n assert(limit <= MAX_NOTES_PER_PAGE as u32);\n self.limit = limit;\n *self\n }\n\n pub fn set_offset(&mut self, offset: u32) -> Self {\n self.offset = offset;\n *self\n }\n\n // This method sets the status value, which determines whether to retrieve active or nullified notes.\n pub fn set_status(&mut self, status: u8) -> Self {\n self.status = status;\n *self\n }\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/accounts/src/artifacts/SchnorrSingleKeyAccount.json b/yarn-project/accounts/src/artifacts/SchnorrSingleKeyAccount.json deleted file mode 100644 index 8f3e76cdb63..00000000000 --- a/yarn-project/accounts/src/artifacts/SchnorrSingleKeyAccount.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"SchnorrSingleKeyAccount","functions":[{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"app_payload":[{"end":60,"start":39}],"fee_payload":[{"end":72,"start":60}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528]},"bytecode":"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","debug_symbols":"7P3drizLkpyHvktfE0JGhMcfX+Xg4IBHogQCAimI1BXR765ce8/KHHNX5cgcc3lmuIV536jFrlXlZjEr3Dwqxxf/89/+t//8//9//o//33/5r//7f/vv//Yf/z//89/+z//2v/6n//Ff/tt/Xf///ue/JfnH/9t//7/+03/96//3v/+P//R//49/+4/Lf/i3//xf/7f1//vv/+Hf/vf/8n/+53/7j0nKv/+Ht9fFmtOvl8Za8/bqIPnDqyWG+uvVEpucvLpneZXRy7K/Opb27//f//BvKaMWXh4sPC3yKjyVv1t4/TuFi9StlBz2V5fyj/duN753//TepbRf/0kN8eT9Q9xeHGIr26vzJxfD0sPrxaHuxeT4c8tl+dulp+X17yWklE9Krym/XlxL+u2t/6ommKommqommapGTFWTTVVTTFVTTVXTTFXTLVWTTe3F2dRenE3txdnUXpxN7cXZ1F6cTe3F2dRenE3txdnUXlxM7cXF1F5cTO3FxdReXEztxcXUXlxM7cXF1F5cTO3FxdReXE3txdXUXlxN7cXV1F5cTe3F1dReXE3txdXUXlxN7cXV1F7cTO3FzdRe3Eztxc3UXtxM7cXN1F7cTO3FzdRe3Eztxc3UXtxN7cXd1F7cTe3F3dRe3E3txd3UXtxN7cXd1F7cTe3F3dReHBZTm3FYTO3GYTG1HYfF1H4cFlMbclie3pHb6wml0EI5eeuYXg9ixfK1jE/v3Nv2nNQSdp0xfiy5l9eLJf324n94UtyTN0+qe/LmSXNP3jzp7sm/ehIW9+TNk+CevHkS3ZM3T5J78uaJuCdvnniOfffEc+y7J55j3z3xHPvuiefYN0+i59h3TzzHvnviOfbdE8+x756Ie/LmiefYd088x7574jn23RPPse+eeI598yR5jn33xHPsuyeeY9898Rz77om4J2+eeI5998Rz7LsnnmPfPfEc++6J59g3T8Rz7LsnnmPfPfEc++6J59h3T8Q9efPEc+y7J55j3z3xHPvuiefYd088x755kj3HvnviOfbdE8+x7554jn33RAx7ksrrxXlZfvPkH6Vbjps5vN45p/ReuuVUmMtWejv7l5hz//XaVneGdvv4j3aX12sM+z/E0j4tvby476m1/bUfX1pzfL32K5j944vXjXH7G78s5eTFy/4HgcsX+nxs/1xFyznWV/HqKlpO3r6K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tRG610boXhuhe+3DAGTt6qF7bYTutRG610boXhuhe22C7rUJutcm6F6boHvtw6hc7eqhe22C7rUJutcm6F6boHutQPdage61At1rBbrXPgxV1a4eutcKdK8V6F4r0L1WoHtthu61GbrXZuhem6F77cP4Te3qoXtthu61GbrXZuhem6F7bYHutQW61xboXluge+3DvEXt6qF7bYHutQW61xboXluge22F7rUVutdW6F5boXvtwyw/7eqhe22F7rUVutdW6F5boXttg+61DbrXNuhe26B77cOcOO3qoXttg+61DbrXNuhe26B7bYfutR2613boXtuhe+3DDDLt6qF7bYfutR2613boXtuRe21ekHttXpB7bV6Qe21ekHttXpB7bV6Qe21ekHttXpB7bYbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmVoblSG5kZlaG5UhuZGZWhuVIbmRmXb3Kja81Z9+1S96V57Wr3pXntavelee1q96V57Wr3pXntavelee1q96V57Wr3pXtv69uql1/JWvW1u1Gn1pnvtafWme+1p9ZZ7bVj2b20IMb5Xb7nXnldvudeG2uNWfUvvO6ZpbtR59ZZ77Xn1lnttaHmvvi/hvXrLvfas+mKaG3VeveVee1695V57Xr3pXntavelee1q96V7b47JXXz5Ub7rXnlZvuteeVm+5166DbX29OgbJ79Vb7rUx7Kew6//Ut+pNc6POq7fca8+rt9xrY5OwVd9De6/ecq89r95yr409b3tOWnJ6r95yrz2v3nKvPa/ecq9Nee+1Kaffeu2nl7dNq+S9kNCWD6/uWV7v3desur06lvbLGct9fKwzljNCEmmbM2tL/d6ZnMuvF+e6fznknzpNk7E0dVrOHZo6LScUTZ2Ws4ymTplG5zrz/npxif1Np+V8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e+3DZGLt6qF7bYfutR2613boXtuRe21ckHttXJB7bVyQe21ckHttXJB7bVyQe21ckHttXJB7bVyQe21coHttgO61AbrXBuheG6B77cOEU+3qoXttgO61AbrXBuheG6B7bYTutRG610boXhuhe+3D9Ezt6qF7bYTutRG610boXhuhe22C7rUJutcm6F6boHvtw2RG7eqhe22C7rUJutcm6F6boHutQPdage61At1rBbrXPkz9064eutcKdK8V6F4r0L1WoHtthu61GbrXZuhem6F77cNEOe3qoXtthu61GbrXZuhem6F7bYHutQW61xboXluge+3DtDLt6qF7bYHutQW61xboXluge22F7rUVutdW6F5boXvtwyQs7eqhe22F7rUVutdW6F4LzY2K0NyoCM2NitDcqAjNjYrQ3KgIzY2K0NyoCM2NitDcqAjNjYrQ3KgIzY2K0NyoCM2NitDcqAjNjYrQ3KgIzY2K0NyoCM2NStDcqATNjUrQ3KgEzY1KC3KvTdDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoBM2NStDcqATNjUrQ3KgEzY1K0NyoZJsbVXveqm+fqjfda0+rN91rT6s33WtPqzfda0+rN91rT6s33WtPqzfda8+qt82Nan179dJrea/edK89rd50rz2t3nSvPa3ecq8Ny/6tDSHG9+ot99rz6i332lB73Kpv6cOOabnXnldvudeeV2+514aW9+r7Et6qN82NOq/ecq89r95yrz2v3nKvPa/edK89rd50rz2t3nSv7XHZqy8fqjfda0+rN91rT6u33GvXwba+Xh2D5LfqTXOjYthPYf+6OPK9esu99rx6y732vHrLvTY2CVv1PbT36i332vPqLffa2PO256Qlp/fqLffa8+ot99rz6i332vVXta3Xrr9R/dZrP728bVol74WEtnx4dc/yeu9eln1kjqX9csZyHx/qjGneVRJpmzMlnDiTc/n14lz3L4f80mk5TWjqtJw7NHVaTiiaOoVEp+XU8zOdZXlt0CX2N52W85GmTstJSlOn6cylqNN0glLTKaaZZJo658lD3+ucJw99r3OePPS9TiHRyZGHxDSPTVMnRx4S04w3TZ0kecg0N05TJ0keMs2i09RJkodM8+00dZLkIdPMPE2dJHnINIdPUydJHjLN9tPUSZKHTPMCNXWS5CHTDEJNnSR5yDTXUFMnSR4yzUrU1EmSh0zzFzV1kuQh00xHTZ0kecg0J1JTJ0keMs2e1NRJkodM8yw1dZLkIdOMTE2dJHnINHdTUydJHjLN8tTUSZKHTPNBNXWS5CHTzFFNnSR5yDTHVFMnSR4yzUbV1EmSh0zzVjV1kuQh0wxXTZ0kecg0F1ZTJ0keMs2a1dRJkodM82s1dZLkIdNMXE2dJHnINGdXUydJHjLN7tXUSZKHTPOANXWS5CHTjGFNnSR5yDS3WFMnSR4yzUL+oU558aRKftc5UR76VuezeSj0/XaCWNKJzlL6q/RYany7y0Ae5isrV/8wX1m7+gBdfYSuPkFXL9DVZ+jqC3T1Fbp65F6bP5PtXnTg5aRyWSeBXy+VHJb3dw+3vnu89d3Tre8ut757vvXdy63vXm9993bru/c7312B0pO2qSGklk+ml7DPIxL3cv7Ci7+/+Oz+5KzA3hlZvUBXn6GrL9DVV+jqG3T1Hbl6BarMyOoDcPUlmZ7F16SwpfqS23v1Al296Vn8tHrTs/hp9aZn8dPqTc/ip9WbPvc+q15Mn3ufVm/63Pu0etPn3mfVZ9M7Zk2yn6C1v/GrXMmm91ZFnaZ3YUWdpvdrPZ3F9M6uqNN0D1DUabpbKOo0PcMp6hQSnabnQkWdyL/mloL8a24pyL/mloL85FSpyE9OlYr85FSpln9bHHkXcqmWf7cc64y4M5+daXc+f1FaufXd663v3m599zufvyh9ufXdoX8v68jPppSO/GxK6Zb34fPqkZ9NKR352ZRakX83qBX5N/r68N/QaVeP/Bt9rci/0deK/Bt97ab/3aud4tXOcVpZO8evt7Vz/HpbO8evt7Vz/HrblqdPVZdX5aGnE52hhPx6cUl7nF2T66/iA3LxEbl40+E6bAdwfz1wWf81ZLRFLFefWt+ql1S//3KntLxWKiXZ81RYPr352qZ+vbgt+1YQymszMB1KBvpiOsQM9MV06Bnoi+mQNNAX06FqnC/B9E/bA30x/aP5QF9MH8wO9MV0Kh3oi8zjy47BStLjmS918yXsdcTy8ceTpW0PwYQvELTw1ynljx2fKEmDOD5RRgdxfKL0D+L4RHMFiOMTTSwYjseJZiEQxyeaskAcn2h+A3F8oskQxHFxx88dX39o2xxv8TfH/+miz5EaLvpsqOGiz3saLvoMp+Giz2UKLiaftTRc9PlJw0WfiTRc9DlHw0VxF89dXGfEreovDxTuLvrsouGizy4aLvrsouGizy4aLvrsouCibaAojIs+u2i46LOLhos+u2i4KO7iBRc3P2Js7YOLPrtouOizi4aLPrtouOizi4aLPrsouJh9dtFw0WcXDRd9dtFw0WcXDRcFFF304eUt501sK8sb0XH9vzOJRUVq/ZFYVALXH4lFvVTrk9gSvoj9AA6xfaeLsljbF7toi0W94euPxKKCPf9ILCoH9I/ECpPYmRJUqVtGb/WT2JkS1KnYmRLUqdipEtSZ2KkS1IlY21fWaIudKkGdiZ0pQdWWN7EtlnexMyWoU7HCJHamBNXz9lR3X0J/FztRgupL2l7e/3Ey+69iJ0pQ52InSlDnYidKUKdi20QJqtcNqrz+719+WdnETpSgzsVOlKB6S3vr6fE9LraJEtS5WGESazpBndzr2RryXcKt2b5zo+w/ute2fP8PbQ2vv17c41fcfvpUR0wbnH/9B7q9OpRPrz67jbI12zd6/MTFvl2L0b/cdPHZxbbk17+uFtLuS+jtj1y0fV/IT1ys/SU1LEv+zcZ/SO2mM9mPrkbJ27+BXPd3/kUw6qbjmKJO00lMUafpEKaoU0h0TnSF2vIKpSW+XdE00xVq3+qc6Aq1b3VOdIXatzonukLtG519mScPfa9znjz0vc558tD3OufJQ9/rFBKdHHmo276NTVEnRx7qtm9LU9RJkods32amqJMkD9m+bUxRJ0kesn0bmKJOkjxk++YrRZ0kecj2LU+KOknykO0bjRR1kuQh27f3KOokyUO2b6pR1EmSh2zf9qKokyQP2b4xRVEnSR6yfeuIok6SPGT75g5FnSR5yPbtF4o6SfKQ7RskFHWS5CHbtzAo6iTJQ7ZvMlDUSZKHbN8GoKiTJA/ZJuor6iTJQ7ap9Io6SfKQbbK7ok6SPGSbjq6okyQP2SaMK+okyUO2Kd2KOknykG02t6JOkjxkm8itqJMkD9nmcCvqJMlDtunbijpJ8pBt5raiTpI8ZJu0raiTJA/Z5msr6nw2D8UUt8pzLyc6l1xebx2X2t5gXv1hVrZ29QG6+ghdfYKuXqCrz9DVF+jqK3T1Dbp66F7boHttg+61DbrXNuhe+zCZWLt66F7boHttg+61DbrXNuhe26F7bYfutR2613boXvswhVa7euhe26F7bYfutR2613bgXpuWBbjXrtUD99q1euBeu1YP3GvX6oF77Vo9cK9dqwfutWv1wL12rR64167VQ/faAN1rA3SvDdC9NkD32ofpmdrVQ/faAN1rA3SvDdC9NkD32gjdayN0r43QvTZC99qHyYza1UP32gjdayN0r43QvTZC99oE3WsTdK9N0L02Qffah6l/2tVD99oE3WsTdK9N0L02Qfdage61At1rBbrXCnSvfZgop109dK8V6F4r0L1WoHutQPfaDN1rM3SvzdC9NkP32odpZdrVQ/faDN1rM3SvzdC9NkP32gLdawt0ry3QvbZA99qHSVja1UP32gLdawt0ry3QvRaZG5UWZG7UWj10r0XmRq3VQ/daZG7UWj10r0XmRq3VQ/daZG7UWj10r0XmRq3VQ/daZG7UWj10r0XmRq3VQ/daZG7UWj10r0XmRq3VQ/daZG7UWj10r0XmRq3VQ/daZG7UWj10r0XmRq3VQ/daZG7UWj1yrw3Q3KgAzY0K0NyoAM2NCgtyrw3Q3KgAzY0K0NyoAM2NCtDcqADNjQrQ3KgAzY0K0NyoAM2NCtDcqADNjQrQ3KgAzY0K0NyoAM2NCtDcqADNjQrQ3KgAzY0K0NyoAM2NCtDcqADNjQrQ3KgAzY0K0NyoAM2NCtDcqADNjQrQ3KgAzY0K0NyoAM2NCtDcqADNjQrQ3KhgmxtVe96qb5+qN91rT6s33WtPqzfda0+rN91rT6s33WtPqzfda0+rN91rz6q3zY1qfXv10mt5r950rz2t3nSvPa3edK89rd5yrw3L/q1df9WP79Vb7rXn1VvutaH2uFXf0ocd03KvPa/ecq89r95yrw0t79X3JbxVb5obdV695V57Xr3lXnteveVee1696V57Wr3pXntavele2+OyV18+VG+6155Wb7rXnlZvudeug219vTquR09v1ZvmRsWwn8Ku/1Pfq7fca8+rt9xrz6u33Gtjk7BV30N7r95yrz2v3nKvjT1ve85f2Oz36i332vPqLffa8+ot99qU916bcvqt1356edu0St4LCW358Oqe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t2B3XRW21MDysbtuwe66BbvrFuyuW7C7bsXuuhW761bsrluxu64K72lg+dhdt2J33YrddSt2163YXRebTSXYbCrBZlMJNptKsNlUgs2mEmw2lWCzqQSbTSXYbCrBZlMJNptKsNlUgs2mEmw2lWCzqQSbTSXYbCrBZlMJNpsqY7OpMjabKmOzqTI2myov0F03Y7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kyNpsqY7OpMjabKmOzqTI2mypjs6kKNpuqYLOpCjabqmCzqcoC3XULNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pgs6kKNpuqYLOpCjabqmCzqQo2m6pis6kqNpuqYrOpKjabqi7QXbdis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqSo2m6pis6kqNpuqYrOpKjabqmKzqRo2m6phs6kaNpuqYbOp2gLddRs2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmGzqRo2m6phs6kaNpuqYbOpGjabqmOzqTo2m6pjs6k6NpuqL9Bdt2OzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOzqTo2m6pjs6k6NpuqY7OpOjabqmOz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wflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf1XB+VcVnH9VwflXFZx/VcH5VxWcf9XA+VcNnH/VwPlXDZx/1Rbs/tvA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vw2cf9XA+VcNnH/VwPlXDZx/1cD5Vx2cf9XB+VcdnH/VwflXfcHuvx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZx/1cH5Vx2cf9XB+VcdnH/VwflXHZt/FRds/tVaP3T/XeuH7r9r/dD9d60fuv+u9UP337V+6P671g/df9f6ofvvWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631g/dfbP7VWj94/8XmX631Y/ffAM6/CuD8qwDOvwrg/KuwYPffAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr8K4PyrAM6/CuD8qwDOvwrg/KsAzr+K4PyrCM6/iuD8qwjOv4oLdv+N4PyrCM6/iuD8qwjOv4rg/KsIzr+K4PyrCM6/iuD8qwjOv4rg/KsIzr+K4PyrCM6/iuD8qwjOv4rg/KsIzr+K4PyrCM6/iuD8qwjOv4rg/KsIzr+KpvlLWeKv12Y5qt/y/n+lfsv7T87tVX+pB/Vb3n+u1G95/7lSv+X950r9lvP/hfpN83+u1G95/y+h/HptSfGgfsv7/5X6Lef/K/ULeP2W+++V+i333yv1W+6/V+q33H+v1G+5/16o3zT/50r94P3XNP/nSv3g/dc0/+dK/eD91zT/50r94P3XNP/nSv2P99/DM8H317baw+vFLcj+zr3+2Wnj87SgoWoDldpIpTaBqt0VCLyCDK+gwCuo8AoavALUDLEpqKi5YFeA2ut3Baj9e1dguie3urxe3M8TSN/eeen7a4t8UWu6f6urNd3rf6ZW9wmOajpDDHXGdDYZ6ozpzDPUGdNZaqQzzXRGG+qM6ew31BnTmXKoMxNlVWVnxJ05cMYz8JEznoGPnPEMfOSMZ+AjZzwDHzjTPQMfOeMZ+MgZz8BHzngGPnJG3JkDZzwDHznjGfjIGc/AR854Bj5yxjPwZ2fS4hn4yBnPwEfOeAY+csYz8JEz4s4cOOMZ+MgZz8BHzngGPnLGM/CRM56BD5wJnoGPnPEMfOSMZ+AjZzwDHzkj7syBM56Bj5zxDHzkjGfgI2c8Ax854xn4wJnImWfOmY4pcuaZK85w9qZzDl+KnL3pijOcvemKM5y96YIzifN85ooznOczV5zhzDPnjKKUOPPMFWfEnTlwhvN85ooznBn4ijOcGfiKM5wZ+IoznBn4gjPCmYGvOMOZga844xn4yBnPwEfOyDzO/OCdQyvyUrh+yv7OuX1SmPNLYA0HPk6UmIf6OFG+HurjRGl8qI8TZXclH3dvJkrv2t7kifK7ujcTJXh1bybK8OreTJTi1b0R9+bQG8/mx96Q5u1eXu+8vln6zZs/mqMzad5W95E0b//Ixxg3gZIPfCTN5to+2r7zBshH0syv7iPpfKDuI+ksoe6juI8qPpLOKD/z8fy81vadTEA+cs4zcUmvn1fj8rXmP51nbN9PBeQj5zzzMx8v9Bnbd3UB+cg5z+j7yDnP6PvIOc/o+yjuo4qPnPOMvo+c88wPfTyfZ2a6TW6oj6TzTAibNeGrwj+dZ2a6qW6kjzPda3ebjxf6zEy34A31kXSeUfeRdJ5R91HcRxUfSecZdR9J5xl1H0nnmZ/5eD7PzHSP4FAfWX+faWX3sZ/4WPv2zsuX1xbZfZzpjsKhPrL+PqPtI+s8U8LmY5W/f04x022JQ30U9/HUxwv5caabGIf6yDrPaPvIOs9o+8g6z2j7yPr7jK6PMtN9k0N9ZP195kc+np5TyEx3WQ710eeZ0H5/nmL3RtybQ2987jj2hnSWWE+qtppj/ttnBDLTbZlDfSSdJX7k45XsRjpLaPs4072dQ30knSXUfSSdJdR9JJ0l1H0U91HFR9IZ5Wc+np8RzHSX6VAffZ6JKX2emWe6+1TdG587Dr2JrLNEaVvNLfz9M4LIOkto+8g6S/zExwvZbabbe4f6KO6jio+ss4S2j6yzhLaPrLOEto+sc4e2j6wzyo98PD8jmOnO7KE++jyj46PPMzo++jyj46O4jyo++jyj46PPMzo++jwT2+9/v7174zPKsTc+dxx6M9Pd44fvvKtlSPy7WtO5vG+0wta/vvMfqzWdntXVyjRqL5wc2b5xW12t6byortZ0qlNXazqnqas1nby01dq+B/pnas+nMds3O6urnSdLXVE7T5a6olao1E6UpS6otZ2l2j7x9fT3pwLbNxOrq7WdpX6i9kq6sJ2llNXavotXXa3tLKWt1naW0lZrO0tpq5V51J6nC9s3uaqrnSdLXVE7T5a6onaiLHVB7URZ6lyt6XtA+yKvd+5LLn9/KjB9W6e+WstZ6mdqL6QL0zdf6qsVKrWWs5S+WstZSl+t5Sylr9Zylvqh2gvpwnKWUldr+g5CfbXzZKkraifKUhfUTpSlLqgVFLXl94lvVwCTjw4VwGSeQwW2c0x/cWd7WBSeHzV9X5q+Wts55idqL2RU03eP6au1nWO01drOMdpqbecYbbVCpdZ25vmR2vOMavp+KX2182SpK2rnyVJX1E6UpU7VZtP3HumrnShLXVCLk6X6x5k1m76955oCsawgyK7g61/ZfvwX1+ILV9rkSxX1q1rTmUddrenM8yO1tW2Prod48s7n5xHZ9M02Y50xnaWGOmM6d410xvR9MmOdMZ3nhjpjOvsNdcZ0phzqjLgzB87Mk2u1nfEMfOSMZ+AjZzwDHznjGfjAGdP3oIx1xjPwkTOegY+c8Qx85Iy4MwfOeAY+csYz8JEznoGPnPEMfOSMZ+ADZ0zfnTHWGc/AR854Bj5yxjPwkTPizhw4w5lnsryehchy5AxnnrngjGlu+43O5BfAP5d64Axnb7riDGdvuuIMZ2+64gzn+cwVZzjPZ644w5lnzu85z6ZZ92Od4TyfueCMaYb+WGc4M/AVZzgz8BVnODPwFWfEnTlwhjMDX3GGMwNfccYz8JEznoGPnPEMfOCM6bsPfujMD9651tdf49av7/v1rwVN35Mw1pmJMrCyMxNlYGVnxJ05cGaiDKzszEQZWNmZiTLwnznTy4EzE2VgZWcmysC6zti+s+I2Z74QM1I+cIYzA19xhjMDX3GGMwNfcUbcmQNnODPwFWc4M/AVZzgz8AXOle07QYY6w5mBLzhj+64RJWd2tQy5dldrOqvG+HpxT6mfqA1Lk1fVYVm+1FG+6DWdQG/QK2R6TafFG/SazoA36DWd7G7Qazqv3aDXdArT12v7/pMb9JpOVzfoJctXtm9BuUGvkOkly1e270K5QS9ZvrJ9H8oNernyVbF9J8oNernyVbF9L8oNernyVVmETC9Xviq27125QS9Xviq270i5QS9ZvrJ9n8kNesnyle27R27QS5avbN8TcoNesnxl+06PG/SS5Svb92/coJcsX9m+K+MGvWT5yva9FjfoJctXtu+guEEvWb6yfV/EDXrJ8pXtux1u0EuWr2zfw3CDXrJ8ZfvOhBv0kuUr2/cb3KCXLF8lsnxl+1aKG/SS5atElq+ELF/ZviHkBr1k+cr2bR436BUyvWT5yvZ9GjfoJctXtu++uEEvWb6yfU/FDXrJ8pXtOyVu0EuWr2zf/3CDXrJ8Zfuuhhv0kuUr2/cq3KCXLF/ZvgPhBr1k+cr2fQU36CXLV7bvFrhBL1m+sn0PwA16yfKVbWb/DXrJ8pVtvv4NesnylW0W/g16yfKVbW79DXrJ8pVtxvwNesnylW0e/A16yfKVbXb7DXrJ8hUZv72Q8dsLGb+9kPHbCxm/vZDx2wsZv72Q8dsLGb+9kPHbCxm/vZDx2wsZv72Q8dsLGb+9kPHbCxm/vZDx2ysZv72S8dsrGb+9kvHb6yJkernyVSXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57JeO3VzJ+eyXjt1cyfnsl47dXMn57I+O3NzJ+eyPjtzcyfntbhEwvV75qZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PZGxm9vZPz2RsZvb2T89kbGb29k/PY2Ed+71/h6cf39nXe183TfK2rn2Zt7a68X//V//6h2np35itp59uUraufZla+onWfmvaB2IuLzFbUT9dsLaifqtxfUzjPrXlErVGqpstRElOcralGz1K4ANR/tCkxnnlS3f0TSF4252zaH+Qa9pnPPDXpNJ58b9JrOPjfoFTK9pvPPDXpNJ6Ab9JrOQDfoNZ2YbtBLlq9sc5hv0EuWr2xzmG/QS5avbHOYb9BLlq9sc5hv0EuWr2xzmG/Qy5Wvum0O8w16ufJVt81hvkEvV77qi5Dp5cpX3TaH+Qa9XPmq2+Yw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsX9nmMN+glyxf2eYw36CXLF/Z5jDfoJcsXxWyfGWbs32DXrJ8VcjyVREyvWT5yjZN/Qa9ZPnKNlH9Br1k+co2Vf0GvWT5yjZZ/Qa9ZPnKNl39Br1k+co2Yf0GvWT5yjaR/Qa9ZPmKjN/eyfjtnYzf3sn47Z2M397J+O2djN/eyfjtnYzf3sn47Z2M397J+O2djN/eyfjtnYzf3sn47Z2M397J+O2djN/eufjtaeHit696qfLVqpcqX616qfLVqlfI9FLlq1UvVb5a9VLlq1UvVb5a9ZLlKy5++6qXLF9x8dtXvWT5iovfvuoly1dc/PZVL1m+4uK3r3rJ8hUXv33VS5avuPjtq16yfMXFb1/1kuUrLn77qpcsX3Hx21e9ZPmKi9++6iXLV1z89lUvWb7i4revesnyFRe/fdVLlq+4+O2rXrJ8xcVvX/WS5SsufvuqlyxfcfHbV71k+YqL377qJctXXPz2VS9ZvuLit696yfIVF7991UuWr7j47atesnzFxW9f9ZLlKy5++6qXLF9x8dtXvWT5iovfvuoly1dc/PZVL1m+4uK3r3rJ8hUXv33VS5avuPjtq16yfMXFb1/1kuUrLn77qpcsX3Hx21e9ZPmKi9++6iXLV1z89lUvWb7i4revesnyFRe/fdVLlq+4+O2rXrJ8xcVvX/WS5SsufvuqlyxfcfHbV71k+YqL377qJctXXPz2VS9ZvuLit696ufJVIOO3BzJ+eyDjtwcyfntYhEwvV74KZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89kDGbw9k/PZAxm8PZPz2QMZvD2T89jAR37vX+Hpx/f2dN7UT0b2vqJ1nb+5te/Ff//ePaufZma+onWdfvqJ2nl35itp5Zt4raueZeK+onajfnqudiPZ8Re08s+4VtfNMulfUUmWpiSjPV9SiZqldAWo+2hWYzjxZXpN0L72dzd35VcZ6WnTwL8505lFXazrzaKu1TWBWV2s686irNZ151NWazjzqaoVKrenMo67WdD5SV0uVpWwTl9XVUmUp27RldbVUWco2aVldLVWWsk1ZVldLlaVsE5bV1VJlKdt0ZXW1TFkq2iYrq6tlylLRNlVZXS1TloqLUKllylLRNk1ZXS1Tloq2ScrqaqmylG2Ksrpaqixlm6CsrpYqS9mmJ6urpcpStsnJ6mqpspRtarK6WqosZZuYrK6WKkvZpiWrq6XKUrZJyepqqbKUbUqyulqqLGWbkKyulipL2aYjq6ulylK2ycjqaqmylG0qsrpaqixlm4isrpYqS9mmIaurpcpStknI6mqpspRtCrK6WqosZZuArK6WKkvZph+rq6XKUrbJx+pqqbKUbeqxulqqLGWbeKyulipL2aYdq6ulylK2ScfqaqmyVKbKUrYZ1tpqbTOs1dVSZalClaVs88nV1QqVWqosZZtPrq6WKkvZ5pOrq6XKUrb55OpqqbKUbT65ulqqLGWbT66ulipL2WaZq6ulylJU3PNIxT2PVNzzSMU9j1Tc80jFPY9U3PNIxT2PVNzzSMU9j1Tc80jFPY9U3PNIxT2PVNzzSMU9j1Tc80jFPY9U3PNIxT2PVNzzSMU9T1Tc80TFPU9U3PNExT1Pi1CpZcpSiYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOeJinueqLjniYp7nqi454mKe56ouOdCxT0XKu65UHHPhYp7LotQqWXKUkLFPRcq7rlQcc+FinsuVNxzoeKeCxX3XKi450LFPRcq7rlQcc+FinsuVNxzoeKeCxX3XKi450LFPRcq7rlQcc+FinsuVNxzoeKeCxX3XKi450LFPRcq7rlQcc+FinsuVNxzoeKeCxX3XKi450LFPRcq7rlQcc+FinsuVNxzoeKeCxX3XKi450LFPRcq7rlQcc+FinsuVNxzoeKeCxX3XKi45zIRLbrX+HpxTQdq5+lAF9RORBTurb1e/Nf//aPaeXapK2rn2aWuqBUqtfNMfFfUzjPxXVE7Ub+9oHaifntB7TwT3wW1ExGFr6ilylITEYWvqEXNUrsCgVdgOvPU2F8KWqxnU/fSy6vqEL7UUdsXvaZTzw16TeeeG/SaTj436DWdffT12mYA36DXdP65Qa/pBHSDXtMZ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P9rX8+n1tHMvma+nxnraudPN11NjPe3ch+frqbGe4us51XrauU/X11NjPe3cRezrqbGedu5x9vXUWE87d2D7emqsp58PzbSedfHzIaD1bMtrPXs+WE8/H5prPf18aK719POhudZTfD1x1rPu61kO1tPPh+ZaTz8fmms9/XxorvX086G51tPPh6Zaz+DnQ0DrmdtrPf96r4/r6edDc62nnw/NtZ5+PjTXeoqv51Tr6edDc62nnw/NtZ5+PjTXevr50Fzr6edDU61n9POhudbTz4fmWk8/H5prPf18aK71FF/PqdbTz4fmWk8/H5prPf18aK719POhudbTz4emWs/k50NzraefD821nn4+NNd6+vnQXOspvp5TraefD821nn4+NNd6+vnQXOvp50NzraefD021nuLnQ3Otp58PzbWefj4013r6+dBc6ym+nlOtp58PzbWefj4013r6+dBc6+nnQ1OtZ/b5U389Q9vWM4vmep7zqbPPn3Otp8+fc62n+HpOtZ4+f861nj5/zrWePn/OtZ4+f861nv58wlTrWfz5hLnW08+H5lpPPx8CWs/z+3SKnw/NtZ7i6znVevr50Fzr6edDQOt5fl9H8fOhudbTz4fmWk8/H5pqPaufD821nn4+NNd6+vkQ0HqeP99X/XxorvUUX8+p1tPPh+ZaTz8fmms9/XxorvX086G51tPPh6Zaz+bnQ3Otp58PzbWefj4013r6+dBc6ym+nlOtp58PzbWefj4013r6+dBc6+nnQ3Otp58PTbWe3c+H5lpPPx+aaz39fGiu9fTzobnWU3w9p1pPPx+aaz39fGiu9fTzobnW08+H5lpPPx+aaT3b4udDc62nnw/NtZ5+PjTXevr50FzrKb6eU62nnw/NtZ5+PjTXevr50Fzr6edDc62nnw9NtZ7Bz4fmWk+fP9XXM24YzHVpVe+jO+VTtyC+nlOtp8+fc62nz59zrafPn3Otp8+fc62nz59TrWf0+XOu9fTnE+ZaT38+Ya719POhudZTfD1x1vP0Pp0W/XxorvX086G51tPPh+ZaTz8fAlrP0/s6WvTzoanWM/n50Fzr6edDc62nnw/NtZ5+PjTXeoqvJ856nj/fl/x8aK719POhudbTz4fmWk8/H5prPf18aKr1FD8fmms9/XxorvX086G51tPPh+ZaT/H1nGo9/XxorvX086G51tPP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Aq/kugm8kuse8KeS6ybwSq6bwCu5bgKv5PpfD/KGY4Izh6ME+Ac4Sml/gKMk9Qc4Sjt/gKNEModzKTX8AY6c/R/gyH3/AY4c8h/gmODM4SRyyKP3fz49/vN//63cRJ53RW4iF7siN5EvXZGbyGkuyLVE3nFFbiI3uCI3kb9bkZvIsa3INS65XK7KuFyVcbkq43JVxuWqCperKlyuqnC5qsLlqopxyeVyVYXLVRUuV1W4XFXhclWVy1VVLldVuVxV5XJV1bjkcrmqTLfHr8jlclWZbkpfkcvlqjLdCr4il8tVZboBe0Uul6vKdNvzilwuV5XpZuMVuVyuKtMtvityuVxVphtrV+RyuapMt7OuyOVyVZluIl2Ry+WqMt26uSKXy1VlumFyRS6Xq8p0m+KKXC5XlenmwBW5XK4q0y15K3K5XFWmG+FW5HK5qky3n63IpXJVJdNNXytyqVxVyXSr1YpcKldVHsYll8pVlUy3Fa3IpXJVJdPNPCtyuVxVpltoVuRyuapMN66syOVyVZluF1mRy+WqMt2ksSKXy1VlujViRS6Xq8p0Q8KKXC5Xlek2gBW5XK4qU6v+ilwuV5Wp+X5FLperytROvyKXy1VlapBfkcvlqjK1vK/I5XJVmZrYV+RyuSqubvXC1a1euLrVC1e3euHqVi9c3eqFq1u9cHWrF65u9cLVrV64utULV7d64epWL1zd6oWrW71wdasXrm71wtWtXri61QtXt3rh6lYvXN3qhatbvXB1qxeubvXC1a1euLrVC1e3euHqVi9c3eqFq1u9cHWrF65u9cLVrV64utULV7d64epWL1zd6oWrW71wdasXrm71wtWtXri61QtXt3rh6lYvXN3qhatbvXB1qxeubvXC1a1euLrVC1e3euHqVi9c3eqFq1u9cHWrF65u9cLVrV64utULV7d64epWL1zd6oWrW71wdatXrm71ytWtXrm61StXt3p9GJdcKldVubrVK1e3euXqVq9c3eqVq1u9cnWrV65u9crVrV65utUrV7d65epWr1zd6pWrW71ydatXrm71ytWtXrm61StXt3rl6lavXN3qlatbvXJ1q1eubvXK1a1eubrVK1e3euXqVq9c3eqVq1u9cnWrV65u9crVrV65utUrV7d65epWr1zd6pWrW71ydatXrm71ytWtXjO1bx+Px+P92OPDl//kQc7z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tVbP5wc/f7GLrZ7PD37+YldbPZ8f/PzFLrd6Pj/4+Ytdb/V8fvDzF7vg6vn84OcvdsXV8/nBz1/skqvn84Ofv9g1V8/nBz9/sYuuns8Pfv5iV109nx/8/MUuu3o+P/j5i1139Xx+8PMXu/Dq+fzg5y925dXz+cHPX+zSq+fzg5+/2LVXz+cHP3+xi6+ezw9+/mJXXz2fH/z8xS6/ej4/+PmLXX/1fH7s8/cA7786wPuvDvD+qwO8/+p4YJ+/B3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA91+d4P1XJ3j/1Qnef3WC91+dD+zz9wTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rC7z/6gLvv7rA+68u8P6r64F9/l7g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/dYH3X13g/VcXeP/VBd5/ZeD9Vwbef2Xg/VcG3n9lD+zz18D7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvCnj/VQHvvyrg/VcFvP+qPLDP3wLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfVfD+qwref1XB+68qeP9VfWCfvxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/auD9Vw28/6qB91818P6r9sA+fxt4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cH7rzp4/1UH77/q4P1X/YF9/nbw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/aoD3Xw3w/qsB3n81wPuvxgP7/B3g/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnb/1fnA7r96Pj/0+ft8fujz9/n80Ofv8/mhz9/n80Ofv8/nhz5/n88Pff4+nx/6/H0+P/j5i91/9Xx+8PMXu//q+fzg5y92/9Xz+cHPX+z+q+fzg5+/2P1Xz+cHP3+x+6+ezw9+/mL3Xz2fH/z8xe6/ej4/+PmL3X/1fH7w8xe7/+r5/ODnL3b/1fP5wc9f7P6r5/ODn7/Y/VfP5wc/f7H7r57PD37+YvdfPZ8f/PzF7r96Pj/4+Yvdf/V8fvDzF7v/6vn84Ocvdv/V8/nBz1/s/qvn84Ofv9j9V8/nBz9/sfuvns8Pfv5i9189nx/8/MXuv3o+P/j5i91/9Xx+8PMXu//q+fzg5y92/9Xz+cHPX+z+q+fzg5+/2P1Xz+cHP3+x+6+ezw9+/mL3Xz2fH/z8xe6/ej4/+PmL3X/1fH7w8xe7/+r5/ODnL3b/1fP5wc9f7P6r5/ODn7/Y/VfP5wc/f7H7r57PD37+YvdfPZ8f/PzF7r96Pj/4+Yvdf/V8fvDzF7v/6vn84Ocvdv/V8/nBz1/s/qvn84Ofv9j9V8/nxz5/D/D+qwO8/+oA7786wPuvjgf2+XuA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1QHef3WA918d4P1XB3j/1Qnef3WC91+d4P1XJ3j/1fnAPn9P8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+6/O0P1Lxc5/Plts9vyR3/8rzx/5/VNKfz1/bZPnj/z+WXn+yO+fleeP/P5Zef7I/n/h+UP3/6w8f+T3fz3qP5+t1zl5/sjv/5Xnj+z/V57fwJ8/8vm78vyRz9+V5498/q48f+Tzd+X5I5+/C88fuv9n5fnBz9/Q/T8rzw9+/obu/1l5fvDzN3T/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zxW95/0GxXSeK3rX+w2K6TxX9L73GxTTea7one83KKbzXNF7329QTOe5one/36CYznNF74q/QTGd56Lrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeugvuh76i66H/qLrob/oeuiNrofe6Hroja6H3uh66O1hdIrZPJfR9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PvdH10BtdD73R9dAbXQ+90fXQG10PfaHroS90PfSFroe+0PXQl4fRKWbzXIWuh77Q9dAXuh76QtdDX+h66AtdD32h66EvdD30ha6HvtD10Be6HvpC10Nf6HroC10PfaHroS90PfSFroe+0PXQF7oe+kLXQ1/oeugLXQ99SdVRPtr5z6dH+/W733ozncYrejO9p0fvL73/+b//Vm+mt/SK3kzv6BW9md7QK3ozZeIVvZkS8YLeVH3VK3pTnb8LejNl4RW9mZLwil4j00vmr4A7qt8acD3TW0NsH9Sux9eDdPv0391/ymX/+fh/Wt5+n8yD90jfoDh4j/QdimO7oTsUx/ZDdyiO7YjuUGx0imO7ojsUx/ZFdyiO7aLuUEznuYL3SN+gOHiP9B2K6TxX8B7pOxTTea7gPdJ3KKbzXMF7pO9QTOe5gvdI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v/z7v6zHD7LO/Priszz+/Cr1lldpt7xKv+VVxh2v8mdPaP4q6ZZXOW55lfOWV8m3vMotP/v5lp/9fMvPfr7lZz/f8rNfbvnZL7f87JdbfvbLLT/75Zaf/XLLz3655We/3PKzX2752S+3/OzXW3726y0/+/WWn/16y89+veVnv97ys19v+dmvt/zs11t+9ustP/vtlp/9dsvPfrvlZ7/d8rPfbvnZb7f87LdbfvbbLT/77Zaf/XbLz36/5We/3/Kz32/52e+3/Oz3W372+y0/+/2Wn/1+y89+v+Vnv9/ysz9u+dkft/zsj1t+9sctP/vjlp/9ccvP/rjlZ3/c8rM/bvnZH7f87KfH456XSfe8zHHPy5z3vEy+52XKPS9T73mZds/L9Hte5p6nQLrnKZDueQqke54C6Z6nQLrnKZDueQqke54C6Z6nQLrnKZDueQoc9zwFjnueAsc9T4HjnqfAcc9T4LjnKXDc8xQ47nkKHPc8BY57ngLnPU+B856nwHnPU+C85ylw3vMUuOezf+meD/+lez79l+75+F+65/N/6Z4PAKZ7PgGY7vkIYLrnM4Dpng8Bpns+BZju+RhguudzgOmeDwKmez4JmO75KGC657OA6Z4PA6Z7Pg2Y7vk4YLrn84Dpng8Epns+EZju+UhguuczgemeDwWmez4VmO75WGC653OB6Z4PBqZ7PhmY7vloYLrns4Hpng8Hpns+HZju+XhguufzgemeDwimez4hmO75iGC65zOC6Z4PCaZ7PiWY7vmYYLrnc4Lpng8Kpns+KZju+ahguuezgumeDwumez4tmO75uGC65/OC6Z4PDKZ7PjGY7vnIYLrnM4Ppng8Npns+NZju+dhguudzg+meDw6mez45mO756GC657ODxz2fHTzu+ezgcc9nB497Pjt4PPI9L1PueZl6z8u0e16m3/My9zwF7vns4HHPZwePez47eNzz2cHjns8OHvd8dvC457ODxz2fHTzu+ezgcc9nB497Pjt43PPZweOezw4e93x28Ljns4PHPZ8dPO757OBxz2cHj3s+O3jc89nB457PDh73fHbwuOezg8c9nx087vns4HHPZwePez47eNzz2cHjns8OHvd8dvC457ODxz2fHTzu+ezgcc9nB497Pjt43PPZweOezw4e93x28Ljns4PHPZ8dPO757OBxz2cHj3s+O3jc89nB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/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgfdfNfD+qwbef9XA+6/aA/v8beD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VB++/6uD9Vx28/6qD91/1B/b528H7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw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GU8JJnNax4PNaTnvmP4k+E0Ernt6E+HbEeWav0W09sM/vYkCosN5F/QCwZlNsG9H9DvBE20th/Mu6AWCfTuiBYJ9O6IFgn07InvBzrugFwj27Z4WCI7ktCbKSw7nXdALBGc2waGc1ozgUE5rRnAopzUjOJTTmhEM5LR6vthiOO+NnhQB5IiuRfh2OeX4XoqVsxpsG5z3Oy8QnAMJnjHuzvudFwj27XIWCPbtchYI9u1yFgj27XLsBTvvd/6l4Akf67zfeYHgSE5rSnAkpzUlOLMJDuW0ZgSHclozgoGcVr76zITzvuZJEUCO6FKE807l0svXG6njpw9O9ZIfr29eyttPW6vvkp37nBWSnTudFZKde50VkjOfZOd+Z4Vk545nhWTnnmeFZOcOaYVk535qgWTnncpLJPO5L+edyksk87kv553KSyTzuS/nncpLJPO5L+edyksk87kv553KSyTzuS/nncpLJPO5L+edyksk87kv553KSyTzuS/nncpLJPO5L+edyksk87kv553KSyTzuS/nncpLJPO5L+edyksk87kv553KSyTzuS/nncpLJPO5r8Hnvgaf+3LenL1EMp/7Gnzua/C5L+cd6Usk07mv03lP+hLJdO7rdN6VvkQynfs6H5lPMp37Op13pi+RTOe+Tue96Usk87kv593pSyTzuS/nvexLJPO5L+fd7Esk87kv5/3sSyTzuS/nHe1LJPO5L+c97Usk87kv513tSyTzuS/nfe1LJPO5L+ed7Usk87kv573tSyTzuS/nPe9LJPO5L+8d8isk87kv7z3yKyTzuS/vXfIrJPO5L+998isk87kv753yKyTzuS/vvfIrJPO5L+/d8isk87kv7/3yKyTzuS/vffQrJPO5L76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6/7k67o/+bruT76u+5Ov6z7zdd1nvq77zNd1n/m67vMj80mmc1+Zr+s+83XdZ76u+8zXdZ/5uu4zX9d95uu6z3xd95mv6z7zdd1nvq77zNd1n/m67jNf133m67rPfF33ma/rPvN13We+rvvM13Wf+bruM1/Xfebrus98XfeZr+s+83XdZ76u+8zXdZ/5uu4zX9d95uu6z3xd95mv6z7zdd1nvq77zNd1n/m67jNf133m67rPfF33ma/rPvN13We+rvvM13Wf+bruM1/Xfebrus98XfeZr+s+83XdZ76u+8zXdZ/5uu4zX9d95uu6z3xd95mv6z7zdd1nvq77zNd1n/m67jNf133m67rPfF33ma/rPvN13We+rvvM13Wf+bruM1/Xfebrus98XfeZr+s+83XdZ76u+8zXdZ/5uu4zX9d95uu6z3xd95mv6z7zdd1nvq77zNd1n/m67jNf133m67rPfF33ma/rPvN13We+rvvM13Wf+bruM1/XfeHrui98XfeFr+u+8HXdl0fmk0znvgpf133h67ovfF33ha/rvvB13Re+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77EqoFfbTj368e7b/f+01wpFN5SnCkp/Xo/SX4n//9z4IjPaunBEd6Uk8JjvScnhIcKSNPCY6UkGcEh+rDnhIc6hyeERwpG08JjpSMpwRnNsFsTgu4A/tNBK57ehPh2xG18/H1Rnr+6Z/eP721/375P71xF1HdeU/1CsnOe6qXSPbti5ZI9u2Mlkj27Y2WSM58kn37oyWSfTukJZJ9+6klkvncl/Oe6hWSnfdUL5HM576c91Qvkcznvpz3VC+RzOe+nPdUL5HM576c91Qvkcznvpz3VC+RzOe+nPdUL5HM576c91Qvkcznvpz3VC+RzOe+nPdUL5HM576c91Qvkcznvpz3VC+RzOe+nPdUL5HM576c91Qvkcznvpz3VC+RzOe+nPdUL5HM576c91Qvkcznvpz3VC+RzOe+nPdUL5HM576c91QvkUznvqrznuolkuncV3XeU71EMp37qo/MJ5nOfVXnPdVLJNO5r+q8p3qJZD735byneolkPvflvKd6iWQ+9+W8p3qJZD735byneolkPvflvKd6iWQ+9+W8p3qJZD735byneolkPvflvKd6iWQ+9+W8p3qJZD73dfC5r4PPfTlvI18imc99nXzu6+RzX85byX8neaJovzpvJbcX7Lyz+peCf65/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Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3vN1O99PB6PX489vvnmP3mQ87z6l8Ruv56jjf/1Oz/K65nPxyi/vnP9R3h9fH3n85vvXOz8+2uLXXfTT+RGNP2fTj9T97um/+PpJ3Kqmv6Pp5/It2v6P55+ohSj6f94+qbpE08/UcLV9H88/UQ/T9H0fzz9RD9d0vR/PH3t+pinr11f1un31zcub9/39+lnukOk6f94+tr1MU9fuz7m6WvXl3X67df06930TdMnnr52fczT166Pefra9TFPX7s+5ulr15d1+uX1yKXe/U5vppuYmv6Pp69dH/P0tetjnr52fczTN02fePra9TFPX7s+5ulr18c8fe36mKevXR/x9DPdZ9f0fzx97fqYp69dH/P0tetjnr5p+sTT166Pefra9TFPX7s+5ulr18c8fe36iKc/tOtjnr52fczT166Pefra9TFP3zR94ulr18c8fe36mKevXR/z9LXrY56+dn28028P7fqYp69dH/P0tetjnr52fczTN02fePra9TFPX7s+5ulr10c8/UN5f+v0n0qOr+kf1XP639/maIfyPvP0lfeZp6+8zzx90/SJp6+8zzx95X3m6SvvM09fv9vDPH39bg/x9E/t+pinr11f1ul/f42xndr1MU9fuz7m6ZumTzx97fqyTv/7i2zt1K6Pefra9TFPX7s+5ulr10c8/Uu7Pubpa9eXdfoTv9N7adfHPH3t+pinb5o+8fS162OevnZ9zNPXro95+tr1MU9fuz7i6Zt2fczT166Pefra9TFPX7s+5umbpk88fe36mKevXR/z9LXrY56+dn3M09euj3j6Rbs+5ulr18c8fe36mKevXR/z9E3TJ56+dn3M09euj3n62vUxT1+7Pubpa9dHPP2qXR/z9LXrY56+dn3M09euj3n6pukTT1+7Pubpa9fHPH3t+pinr10f8/S16yOeflPe95++8wWNplQef0amGYWfkRJu/Bkph8afkdJi/Bkp08WfkZJX+Bl1/S5E/BnpNxbiz0h7hvgz0p5h74wmrqp104zCz0h7hvgz0p4h/oy0Z9g7o4mLP117hvgz0p4h/IyG9gzxZ6Q9Q/wZac8Qf0baM+yd0cTvBQ3TjMLPSHuG+DPSniH+jLRniD8j7Rniz0h7hugz6g/tGeLPSHuG+DPSniH+jLRniD8j04zC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rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qC919V8P6rCt5/VcH7r+oD+/1bwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsG3n/VwPuvGnj/VQPvv2oP7PdvA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+686eP9VB++/6uD9Vx28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lf3lcrmq2K3K/nK5XFXsRmV/uVyuKnabsr9cLlcVu0nZXy6Xqypcrip2S7a73Ngt2f5yuVxV5XJVsTvQ/eUal1wuVxW7A91fLperit2B7i+Xy1XF7kD3l8vlqmJ3oPvL5XJVsTvQ/eVyuarYfen+crlcFVe3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5xdatfXN3qF1e3+sXVrX49jEsulau6uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65udePqVjeubnXj6lY3rm51exiXXCpXZVzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtblzd6sbVrW5c3erG1a1uXN3qxtWtbonqqEc7X1/crju5eV5EM3ITFRaP3l9f/Nf//Z/l5vmompKb56NqSq5xyc0TAKfk5gmAU3ITvXdn5CZ6787IzRMAZ+QmKiyeksvlqhIVFk/JRXVVbxIMX0Jo99PO8ZLQz/ZdDH+M+nrq43h7jtbfBYf2PysEh3ZAKwSH9kArBId2QQsEx64YXiE4tBNa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576id8ivkMznvqL3yK+QzOe+onfJr5DM576i98mvkMznvqJ3yq+QzOe+ovfKr5DM576id8uvkMznvqL3y6+QzOe+ovfRr5DM5774uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq574+u6N76ue+Pruje+rnt7GJ9kOvdlfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdV/4uu4LX9d94eu6L3xd9+VhfJLp3Ffh67ovfF33ha/rvvB13Re+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X1K1oI92/v3Vo/3+vd8EZ3orTwnO9Gk9en8J/uv//s+CM31WTwnO9Ek9JTjT5/SU4EwZeUpwpoQ8IzhVH/aU4FTv4RnBmbLxlOBMyXhKsLEJZnNawB3YbyJw3dObiNiOqF2Prwfp9t1/en/11v795X/1xt1E9eA91SskB++pXiI5ti9aIjm2M1oiObY3WiLZ+CTH9kdLJMd2SEskx/ZTSyTzua/gPdUrJAfvqV4imc99Be+pXiKZz30F76le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yPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1t1ey/vZK1t9eyfrbK1l/e30YmV4uf1XJ+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eM/V7H4/H49djj2+++U8e5Dyv/iWx26/naON//c6P8nrm8zHKr+9c/xFeH1/f+fzmOxc7//7aYtfd9BO5EU3/p9PP1P2u6f94+omcqqb/4+kn8u2a/o+nnyjFaPo/nr5p+sTTT5RwNf0fTz/Rz1M0/R9PP9FPlzT9H09fuz7m6WvXl3X6/fWNy9v3/X36me4Qafo/nr52fczT166Pefra9WWdfvs1/Xo3fdP0iaevXR/z9LXrY56+dn3M09euj3n62vVlnX55PXKpd7/Tm+kmpqb/4+lr18c8fe36mKevXR/z9E3TJ56+dn3M09euj3n62vUxT1+7Pubpa9dHPP1M99k1/R9PX7s+5ulr18c8fe36mKdvmj7x9LXrY56+dn3M09euj3n62vUxT1+7PuLpD+36mKevXR/z9LXrY56+dn3M0zdNn3j62vUxT1+7Pubpa9fHPH3t+pinr10f7/TbQ7s+5ulr18c8fe36mKevXR/z9E3TJ56+dn3M09euj3n62vURT/9Q3t86/aeS42v6R/Wc/ve3OdqhvM88feV95ukr7zNP3zR94ukr7zNPX3mfefrK+8zT1+/2ME9fv9tDPP1Tuz7m6WvXl3X6319jbKd2fczT166Pefqm6RNPX7u+rNP//iJbO7XrY56+dn3M09euj3n62vURT//Sro95+tr1ZZ3+xO/0Xtr1MU9fuz7m6ZumTzx97fqYp69dH/P0tetjnr52fczT166PePqmXR/z9LXrY56+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3wb+/m3g71+XTqmdzw/+/m3g798G/v5t4O/fBv7+Be+/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+qwLef1XA+68KeP9VAe+/Kg/s928B778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7ryp4/1UF77+q4P1XFbz/qj6w378VvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv2rg/VcNvP+qgfdfNfD+q/bAfv828P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qD91918P6rDt5/1cH7r/oD+/3bwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsB3n81wPuvBnj/1QDvvxoP7PfvAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuv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PCskB/c8KyQHd0grJAf3UwskB+9UXiKZz30F71ReIpnPfQXvVF4imc99Be9UXiKZz30F71ReIpnPfQXvVF4imc99Be9UXiKZz30F71ReIpnPfQXvVF4imc99Be9UXiKZz30F71ReIpnPfQXvVF4imc99Be9UXiKZz30F71ReIpnPfQXvVF4imc99Be9UXiKZz30NPvc1+NxX8ObsJZL53Nfgc1+Dz30F70hfIpnOfV3Be9KXSKZzX1fwrvQlkunc1/UwPsl07usK3pm+RDKd+7qC96YvkcznvoJ3py+RzOe+gveyL5HM576Cd7MvkcznvoL3sy+RzOe+gne0L5HM576C97QvkcznvoJ3tS+RzOe+gve1L5HM576Cd7YvkcznvoL3ti+RzOe+gve8L5HM576id8ivkMznvqL3yK+QzOe+onfJr5DM576i98mvkMznvqJ3yq+QzOe+ovfKr5DM576id8uvkMznvqL3y6+QzOe+ovfRr5DM5774uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq574+u6N76ue+Pruje+rnt7GJ9kOvdlfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13Vv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v78D/P0d4O/vAH9/PXp1tn5+8Pd3gL+/A/z9HeDv78B+f+2B/f7aA/v9tQf2+2sP7PfXHtjvrz2w3197YL+/9sB+f+2B/f7aA/z9PcDf3wP8/T3A398D/P116f7Z+fnB398D/P09wN/fA/z9PcDf3xP8/T3B398T/P09wd9fl+6fnZ8f/P09wd/fE/z9PcHf3xP8/b3A398L/P29wN/fC/z9dele2vn5wd/fC/z9vcDf3wv8/b3A318Df38N/P018PfXwN9fl+6rnZ8f/P018PfXwN9fA39/Dfz9LeDvbwF/fwv4+1vA31+X7qudnx/8/S3g728Bf38L+PtbwN/fCv7+VvD3t4K/vxX8/XXpr9r5+cHf3wr+/lbw97eCv78V/P1t4O9vA39/G/j728DfX5dOqZ2fH/z9beDvbwN/fxv4+9vA31/w/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778q4P1XBbz/qoD3XxXw/qvywH5/C3j/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwfuvKnj/VQXvv6rg/Vf1gf3+VvD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgfdfNfD+qwbef9XA+6/aA/v9beD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VB++/6uD9Vx28/6qD91/1B/b728H7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/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N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6N76ue+Pruje+rnvj67o3vq574+u6L3xd94Wv677wdd0Xvq778jA+yXTuq/B13Re+rvvC13Vf+LruC1/XfeHrui98XfeFr+u+8HXdF76u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovqVrQRzv//urR/vzeb4IzvcpTgjP9tB69vwT/9f/+z4Iz/ayeEpzpJ/WU4Ew/p6cEZ8rIU4IzJeQZwan6sKcEp3qHZwRnysZTgjMl4ynBxiaYzWkBd2C/icB1T28iYjuidj2+Pki3n/6n91dv7d9f/ldv3E1UD95TvUJy8J7qJZJj+6IlkmM7oyWSY3ujJZKNT3Jsf7REcmyHtERybD+1RDKf+wreU71CcvCe6iWS+dxX8J7qJZL53FfwnuolkvncV/Ce6iWS+dxX8J7qJZL53FfwnuolkvncV/Ce6iWS+dxX8J7qJZL53FfwnuolkvncV/Ce6iWS+dxX8J7qJZL53FfwnuolkvncV/Ce6iWS+dxX8J7qJZL53FfwnuolkvncV/Ce6iWS+dxX8J7qJZL53FfwnuolkvncV/Ce6iWS+dxX8J7qJZLp3FcN3lO9RDKd+6rBe6qXSKZzX/VhfJLp3FcN3lO9RDKd+6rBe6qXSOZzX8F7qpdI5nNfwXuql0jmc1/Be6qXSOZzX8F7qpdI5nNfwXuql0jmc1/Be6qXSOZzX8F7qpdI5nNfwXuql0jmc1/Be6qXSOZzXyef+zr53FfwNvIlkvnc18Xnvi4+9xW8lfx3kieK9mvwVnJ/wcE7q38p+Of61xq8s3qB4Ew/qacEZ/o5PSXY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dNkzNK+Zv+p0xTI0r5m/6nSxMTSvmb/qdJ0wNK+Zv+p0iS80r5m/6nR1LjSvmb/qdGEtNK+Xv5qdromF5vXyV7PT5azQvF7+al6G2bxe/mp2uogUmtfLX81O139C85r5q06XbkLzmvmrTlddQvOa+atOF0xC85r5q07XOkLzmvmrTpcpQvOa+atOVxhC85r5q04XB0LzmvmrTpv7Q/Oa+atO2/VD85r5q04b8EPzmvmrTlvqQ/Oa+atOm+RD85r5q07b3kPzmvkrs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9rdPs/3t02x/+zTb3z7N9revZvvbV7P97avZ/vbVbH/7ehlm83r5q9Vsf/tqtr99Ndvfvprtb1/N9revZvvbV7P97avZ/vbVbH/7ara/fTXb376a7W9fzfa3r2b721ez/e2r2f721Wx/+2q2v30129++mu1vX832t69m+9tXs/3tq9n+9tVsf/tqtr99Ndvfvprtb1/N9revZvvbV7P97avZ/vbVbH/7ara/fTXb376a7W9fzfa3r2b721ez/e2r2f72tdN+7+vlcvn7sfcXv/ydD7Ist+1rxG38/Rz3/X/0N1/m4zMvl33+/c3rv8Lb9q/fvLz4zXMsf352jtuR+o3cCOq/q36n3e+o/7b6jZwq6r+tfiPfjvpvq98oxaD+2+oP1DdWv1HCRf231W/09xTUf1v9Rn9dQv231afrc1afrq+r+tvjF89vv/ef6ne6Q4T6b6tP1+esPl2fs/p0fV3Vv/9Vfz1Sf6C+sfp0fc7q0/U5q0/X56w+XZ+z+nR9XdWfj48816N/09vpJibqv60+XZ+z+nR9zurT9TmrP1DfWH26Pmf16fqc1afrc1afrs9Zfbo+Y/U73WdH/bfVp+tzVp+uz1l9uj5n9QfqG6tP1+esPl2fs/p0fc7q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"},{"name":"spend_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"inner_hash":[{"end":40,"start":39}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496]},"bytecode":"H4sIAAAAAAAA/+2dBXQU1xfGdzdCCCS4F1hoi8tOsiEb3N3dISEJULQQ2lL3Und3d3d3d3d3d2/p/7vJ3PLyCJLkLX++051zvjN7Z0d+977xO++9YKBsOCMUCBSHyn4HoSRIzLBhJ/m/1U627BRr/hqWnWHZdSy7nmU3sOwmUH/Dbm39H7bsNpbd1rLb+bY5BP1xf3+cHekRjRblZhV52V5+JCuvIJYTieYU9Ih5MS8nllOYFcvOLopFY7l5BXm5kTwvml3kFefkZRdHyobvgxvWFanmIGw1Dbb20HpItpEY//fGXaAfgmX7rLlf/JCIz39+v/gxGCg3+Kd2V+cir13A3Tnyp6A7LnFbzu2yznBgw7GRbMRCYtTSH7fyx3ou7Qb9HCy7lgUCG64H5hB0HMuf3fkfSTc4f/FBf/XHv/nj3/3xH/74T3/8lz/+2z+n9Nd4wfhHJmAnCkIhKAlKhlKgVKgGlAbVhNKhWlBtKAPKhOpAdaF6UH2oAdQQagQ1hppATaFmUHOoBbQD1BJqBbWGwlAbqC20I7QTtDPUDmoPdYA6Qp2gzlAXqCvUDeoORSAPyoKyoSiUA/WAcqEYlAf1hHpBvaE+/oHTN1TBvuBqB9CdVgKdFthwg/KPZUsBmHbQskOWnWTZyZadYtmpll3DstMsu6Zlp1t2LcuubdkZlp1p2XUsu65l17Ps+pbdwLIbWnYjy25s2U0su6llN7Ps5pbdwrJ3sOyWlt3Ksltbdtiy21h2W8ve0bJ3suydLbudZbe37A6W3dGyO1l2Z8vuYtldLbubZXe37Ihle5adZdnZlh217BzL7mHZuZYds+w8y+5p2b0su7dl9/Ft/xzz77A9X2DC/nr6Abo/NAAaCA2CBkNDoKHQMGg4NAIaCY2CRkNjoLHQOGg8NAGaCE2CJkNToKnQNGg6NAOaCc2CZkNzoLmhsiBpHPtZce1v2QMse6BlD7LswZY9xLKHWvYwyx5u2SMse6Rlj7Ls0ZY9xrLHWvY4yx5v2RMse6JlT7LsyZY9xbKnWvY0y55u2TMse6Zlz7Ls2ZY9x7Ln+rY56A1ef38cqd5Q7pip7g1u6bFSzXUVFcsQ8fqH3HHtE3J3XthcWVTHZymLAU7iV1auA6u/riw/ft4gh2Wx7/ZcFtF/Ob3B1fM5YvjsDanOurLKxc8b6rAs9ts+yyJicXrDquhzj+KNfPaGV21dsQri541wWBb7b29lEauQ0xtZeZ9zN+GzN6qy68rdZPy80Q7L4oDtpyyyNsPpjamMz7mb9dkbu/XrWrCF+HnjHJbFgdtDWeRukdMbv3U+R7bCZ2/C1qwrslXx8yY6LIuD/r9lkbOVnN6kLfkc3WqfvcmbXVe0uBLx86Y4LIuD/19lkVspTm/qpn2OVdJnb9om1pVXXOn4edMdlsUh274sIlXg9GZU5HOkSj57Mzdel1fF+HmzHJbFoduyLAqrzOnNLu9zdjV89uYY68oqrlb8vLkOy+KwbVQWkeoNnsP3A57D51tvP4dlsY6kLBw+B3kO7+O9Ax2WxeEkZeHwfs9zeL/iHeKwLI4gKQuH1zXP4XnZW+ewLI6MU1kkOS4Lh8ev53D/81zGT3IQ8mHjb/7HNr/7Y83da87+31y9P9bcvObkNRevOXjNvWvOXXPtmmPX3Lrm1DWXrjl0zZ1rzlxz5Zoj19y45sQ1F645cM19a85bc92a49bctua0NZetOWzNXWvOWnPVmqPW3LTmpDUXrTlozT1rzllzzZpj1tyy5pQ1l6w5ZM0da85Yc8WaI9bcsOaENResOWDN/WrOV3O9muPV3K7mdDWXqzncsL9/aW5Kc1aay9Icl+a+NCemuTLNoWluTXNumovTHJ3m7jSnp7k+zQFqblBzhppL1Byj5h41J6m5Ss1ham5Tc56aC9UcqeZONaequVbNwc4LBcoNrnPZ8xyeVzfHWd11z6/6OSfPniBs8vGzXjt/8c85v/pjPRfJNtcb8+XDLoAWQIWh8h/ByeD6/P+7u+8MvHyH5VwU4rh+/uEwfgUO41dMEr8/HcZvgcP4LXR8/2GeC4r8Y77YHy/0x4XWuWAR7MXQLtCSbXAu+MthWSxyWBZLSfblvx3Gb7HD+C2LU/xCjuO3i0OflzvzOTvbPn6X+sfpMn+83B8vsY7fFbBXQrtCqyo4fl3fv6x2V87F8eQsqTpntj3BLpsVfhn09cer/XGJVTZrYO8G7Q7tUUHZhBz7HAy4O07WkBzPPzn8Hm+tO5///XZf1hkOlFUcCQY2/qbXHFxuOxinbeQXIGGSXxjV9QXj5YS5Ttcnhz1D7gIhbGYtuz1Didpm//VadnuFNq59uVdiv/jP7xd7W2d/1zcA5roi1Ru8DoFtcwOwPd30dCTxOeTQ504kPic59Lkzic/JDn3uQuJzikOfu24jnyPVG7xuDuMnNfwZfO7u0Oe94/SwGnTscyTAwemRcGaRcGaTcEZJOHNIOHuQcOaScMZIOPNIOHuScPYi4exNwtmHhLMvCWc/Es7+JJwDSDgHknAOIuEcTMI5hIRzKAnnMBLO4SScI0g4R5JwjiLhHE3COYaEcywJ5zgSzvEknBNIOCeScE4i4ZxMwjmFhHMqCec0Es7pJJwzSDhnknDOIuGcTcI5h4RzLgnnPBLO+SSc+SScBSScC0g4C0k4i0g4i0k4F5JwLiLhXEzCuQsJ5xISzqUknMtIOJeTcK4g4VxJwrkrCecqEs7VJJwlJJxrSDh3I+HcnYRzDxLOtSSce5Jw7kXCuTcJ5z4knPuScO5Hwrk/CecBJJwHknAeRMJ5MAnnISSch5JwHkbCuY6E83ASziNIOI8k4TyKhPNoEs5jSDiPJeE8joTzeBLOE0g4TyThPImE82QSzlNIOE8l4TyNhPN0Es4zSDjPJOE8i4TzbBLOc0g4zyXhPI+E83wSzgtIOC8k4byIhPNiEs5LSDgvJeG8jITzchLOK0g4ryThvIqE82oSzmtIOK8l4byOhPN6Es4bSDhvJOG8iYTzZhLOW0g4byXhvI2E83YSzjtIOO8k4byLhPNuEs57SDjvJeG8j4TzfhLOB0g4HyThfIiE82ESzkdIOB8l4XyMhPNxEs4nSDifJOF8ioTzaRLOZ0g4nyXhfI6E83kSzhdIOF8k4XyJhPNlEs5XSDhfJeF8jYTzdRLON0g43yThfIuE820SzndION8l4XyPhPN9Es4PSDg/JOH8iITzYxLOT0g4PyXh/IyE83MSzi9IOL8k4fyKhPNrEs5vSDi/JeH8joTzexLOH0g4fyTh/ImE82cSzl9IOH8l4fyNhPN3Es4/SDj/JOH8i4TzbxLO9SSc/5BwygoZOIMknCESziQSzmQSzhQSzlQSzhoknGkknDVJONNJOGuRcNYm4cwg4cwk4axDwlmXhLMeCWd9Es4GceIMOeZsaHBmR3pEo0W5WUVetpcfycoriOVEojkFPWJezMuJ5RRmxbKzi2LRWG5eQV5uJM+LZhd5xTl52cX+yn4m8bmRQ59/ItkfG5NwNiHhbErC2YyEszkJZwsSzh1IOFuScLYi4WxNwhkm4WxDwtmWhHNHEs6dSDh3JuFsR8LZnoSzAwlnRxLOTiScnUk4u5BwdiXh7EbC2Z2EM0LC6ZFwZpFwZpNwRkk4c0g4e5Bw5pJwxkg480g4e5Jw9iLh7E3C2YeEsy8JZz8Szv4knANIOAeScA4i4RxMwjmEhHMoCecwEs7hJJwjSDhHknCOIuEcTcI5hoRzLAnnOBLO8SScE0g4J5JwTiLhnEzCOYWEcyoJ5zQSzukknDNIOGeScM4i4ZxNwjmHhHMuCec8Es75JJz5JJwFJJwLSDgLSTiLSDiLSTgXknAuIuFcTMK5CwnnEhLOpSScy0g4l5NwriDhXEnCuSsJ56o4cYYszurW127n0OfV28jnSPUGryToLn5rQxz74xqS42Y3Es7dSTj3IOFcS8K5JwnnXiSce5Nw7kPCuS8J534knPuTcB5AwnkgCedBJJwHk3AeQsJ5KAnnYSSc60g4DyfhPIKE80gSzqNIOI8m4TyGhPNYEs7jSDiPJ+E8gYTzRBLOk0g4TybhPIWE81QSztNIOE8n4TyDhPNMEs6zSDjPJuE8h4TzXBLO80g4zyfhvICE80ISzotIOC8m4byEhPNSEs7LSDgvJ+G8goTzShLOq0g4rybhvIaE81oSzutIOK8n4byBhPNGEs6bSDhvJuG8hYTzVhLO20g4byfhvIOE804SzrtIOO8m4byHhPNeEs77SDjvJ+F8gITzQRLOh0g4HybhfISE81ESzsdIOB8n4XyChPNJEs6nSDifJuF8hoTzWRLO5+LEGbI4q1sPOtWhz8+T+FzDoc8vkPic5tDnF0l8runQ55dIfE536PPLJD7XcujzKyQ+13bo86skPmc49Pk1Ep8zHfr8OonPdRz6/AaJz3Ud+vwmic/1HPr8FonP9R36/DaJzw0c+vwOic8NHfr8LonPjRz6/B6Jz40d+vw+ic9NHPr8AYnPTR36/CGJz80c+vwRic/NHfr8MYnPLRz6/AmJzzs49PlTEp9bOvT5MxKfWzn0+XMSn1s79PkLEp/DDn3+ksTnNg59/orE57YOff6axOcdHfr8DYnPOzn0+VsSn3d26PN3Dn2W3Hiyv64Ohv9BPwZJ/v8pkOSTJb8q+UbJv0k+SvIzkq+Q9/fyPlve78r7Tnn/J+/D5P2QvC+R9wfyPC3Pl/K8Jc8fcj8u96dyvyb3L3I9l+tbGJLzn5wP5PiQ/UXiJ+2itzcYHw9u4O4IdYI6Q12grlA3qLvECPKgLClHKArlQD2gXCgG5UE9oV5Qb6gP1Bfq55fbAGggNAgaDA2BhkLDoOHQCGgkNAoaDY2BxkLjoPHQBGgiNAmaDE2BpkLToOnQDGgmNAuaDc2B5kLzoPlQPlQALYAKoSKoGFoILYIWQ7tAS6Cl0DJoObQCWgntCq2CVkMl0BpoN2h3aA9oLbQntBe0N7QPtC+0H7Q/dAB0IHQQdDB0CHQodBi0DjocOgI6EjoKOho6BjoWOg46HjoBOhE6CToZOgU6FToNOh06AzoTOgs6GzoHOhc6DzofugC6ELoIuhi6BLoUugy6HLoCuhK6Croauga6FroOuh66AboRugm6GboFuhW6DbodugO6E7oLuhu6B7oXug+6H3oAehB6CHoYegR6FHoMehx6AnoSegp6GnoGehZ6DnoeegF6EXoJehl6BXoVeg16HXoDehN6C3obegd6F3oPeh/6APoQ+gj6GPoE+hT6DPoc+gL6EvoK+hr6BvoW+g76HvoB+hH6CfoZ+gX6FfoN+h36A/oT+gv6G1oP/QPJySAIhaAkKBlKgVKhGlAaVBNKh2pBtaEMKBOqA9WF6kH1oQZQQ6gR1BhqAjWFmkHNoRbQDlBLqBXUGgpDbaC20I7QTtDOUDuoPdQB6gh1gjpDXaCuUDeoOyQnOQ/KgrKhKJQD9YByoRiUB/WEekG9oT5QX6ifnGuhAdBAaBA0GBoCDYWkL3rp5136UJf+yaXvb+lXW/qslv6gpa9l6cdY+giW/nelb1vpN1b6ZJX+TqUvUemnU/rAlP4lpe9G6RdR+hyU/vykr7z5kPTxJv2nSd9k0u+X9Kkl/VVJX1DSz5L0YST9A0nfO9KvjfQZI/2xSF8n0o+I9NEh/V9IfxDS14L0PSDt+kub+dIevbT1Lu2oSxvl0v63tK0t7VZLm9D7Q9KWsbQTLG3wSvu20nastMsqbZ5Ke6LSVqe0gyltTEr7jdI2orQ7KG36SXt50hadtPMmbahJ+2TS9pe0qyVtVkl7UNLWkrRjJG0ESfs70raNtBsjbbKcB0lbItJOh7SBIe1LSNsN0i6CtDkg9fmlrrzUQ5c63lJ/WuomS71fqVMr9VWlLqjUs5Q6jFI/UOreSb02qTMm9bGkrpPUI5I6OlL/ReqWSL0NqRMh9Q3kW375Tl6+QZfvu+XbafkuWb75le9p5Vok34HKN5by/aJ8Gyjf3ck3bfK9mHw/Jd8Tyfc18r2JfH8h3yNIfl7y1ZK/lXym5Pck3yX5H8mHSH5A3pfL+2N5nyrvF+V9m7x/kvcx8n5Cntfl+VWe5+T5Ru735f5X7gfl/kjuF+S6rEMD4/cO/ji/pKRo2cqScMmKcH5hYXj3xSWLwit2K1pVvHSFXCJKz9GVWQabLL3myyDHkw7N/PGAVavy14YXLy8s2iO8Yk1JeEVxuGDFmuWFq80FB1V1wZFVXXBCVRecXtUF51V1weKqLrisqgseVtUFrzAWrOzOc01VN3prVRd8ubK0+qzwtr9g2oblA+GAo3v1WDQ/1Vi5wVg6yH24cug8NQwH5P+gPz1kLuNPSzKmJfnTko1pyf60FGNaij8t1ZiWamxbp9VIK4dVOi3NN2oayBn+73DAVcwiebLeTNfrjURLv7ms63y9Zc9j9QIbYh02tpNpxKq+/zvobtueue2gL92OTk82fjc35tX5NB7p/m9ll7LVa1D9zSyXYS2XacxTpwL/w479r2vx1LWYUwwO2Y9H+PtxbX+axEaPsxEGb6pz3mhe6XEZKD/Y54Ww8TvV4ElxzhPxpMx1H11YVDJgTcmiaYtLlhetXh006JR4hEUcDJSnX1/BPDKEKpi23vcqFAevgka0dN0pFkt8SjiSVe6sXoHfuj0dzBJOc84TLf0aN7USPGnGuIZznogXHz/Lvqg3r0yu1iuxSrdilWrFKtOYx2RIj0P8goGN71bU1u0lmBPMCeYEc4I5wZxgTjAnmBPMCeYEc4I5wZxgTjAnmBPMCeYEc4I5wZxgTjD3TzAnmBPMCeYEc4I5kGCOVG9IMCeYE8wJ5gRzgjnBnGBOMCeYE8wJZkpm4dHv2c1aQzpfaDth1Gk1DJ409zyl39MnGduQQeoWSA1lneb+u/lo6Xfoqcb2wgaHbi/ZmOf84IZ5YwZbHOo8ROLkc17QinHY4Dd91nn6+H6aNYJ0qGg/0notus6MwMZlGx/fyupB1IxTzNKtmCl/TSNmOs/gLcQsfRMxq2HEzD4e4+NbJEvWWytOMattxUz5axkx03lGbSFmtTcRs5pGzDRWtY2Yufctkp0WiEMtTT9mmVbMahn+acx0nolbiFnmJmJmrlNjZdaqdO9bJCrrrROnmNW1Yqb8dYyY6TwzthCzupuIWYYx1ljVNWLm3rdIjqy3XpxiVt+KmfKbNVx1nvlbiFn9TcSsjhEzuwZpfHyL9JD1NohTzBpaMVP+BkbMdJ6FW4hZw03ErJ4RM41VQyNm7n2L5Mp6G8UpZo2tmCl/IyNmOs/yLcSs8SZi1sCImcaqsTFNf5s1/ptY0yQGTZ3HoOxeu4nFrXZTg1Hj0cTgaRInnkYWj73tjAriIzFrVkHMmseJsZnFqHZzg1Hj18zgaRYnnqYWj71t85muyXYas0xjWlODx/1+H43FZ/8tO6eoDylWWej2ko151m3hnGLHLNmKj+xnWnY6r1muZosh5rGr0zT26ca0Fv7v2sY0baEk05jWMlCeXaa18n/XN6a19n83NKaF/d+NjWlt/N+NjGlt/d/lWkPxf5v+qp/mvq2xam5M0zYBWhjT9FnQbIVFn3VaGtM0bq2MaXp/39qYZr4T0Wl6T9vGmKbxVR9lXRkGT6iCbZvHaRyetzb77sV8ljHfucSRJ1YRT5LFYz6zplrz6LLm8++VmznmtuXzpnkcKqPOc20Vnzd1nRU9b4aM3+Zze8hYTv9f709Pt9abFr8Ylb7vyrBiZJ6/Ar6fOs9tWyjHODwDR+L0zO6Zz8PJgfLvcEzfdZ67jXd99wY3zKflZL43fKaC/3UIWnbY+J1hxHJbt6Jkbnt7aEXp6eCGee3nSY11ZVtRSrOW2x5bUXrA2M+eMd4p144TU51NxCjJiJHOY56b4vCOu5SnhsWjHLq9zV17zPfVOs8rmzlnmffo5rVBlzX/i8M7MM/0RdetdobBaF9XalXgs5kfMd/dBVxzxyJZZot7oUD5IWRuOG3DtitqiS/N8MMhX+l7/2TX6/XzCfFoIcy8Jy7X4qD/28xfxsMv2YfMltpC1kUrPbDhmrgyf8GSiUUla1YtX21eyszDUwe9pdEhZIzVtWTrP3UtVMG65Pbzf1xJaLTr1QEA","debug_symbols":"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"},{"name":"cancel_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(internal)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":39,"start":0}],"outer_hash":[{"end":40,"start":39}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"outer_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496]},"bytecode":"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","debug_symbols":"1ZTRCsIgFIbf5VzvQo/Ho9urRITVisFw0VYQY++eq1lRQcEo6kp//fz5QDgtLPP5bj0r/KqqIZu0UFYL1xSVD6kFqU9n9cb5PtaN2zaQiQRyvwxrl8CqKHPIFHGXPHBotBpQNEZfaEn6CU0ozUATWnpBp5qiRsriSiPbbpqA5H8VN18UV4KiuOKx4naMOJG5qGh5pZlP3ennulG8393j8hkuMeXhhVTKvBBiZeMvMQm8FXqElRA6doe91ff++FNCIezdtnDzMu8nSH+384s4UEJsDpvzTWCP"},{"name":"spend_public_authwit","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"inner_hash":[{"end":4,"start":3}],"inputs":[{"end":3,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"field"},"visibility":"public"},"return_witnesses":[4]},"bytecode":"H4sIAAAAAAAC/83Z2W7bRhQG4JGsrbWjyGoqUxslS6TWiNriuELrFyjQi6K3BYruC7oAXVC0r9Q36XWfpdeZc2bO/GLoMJggEEKA0vjwfJwzQy0cOVJnStXKSm99ZbeSjqi6quinIu13Slq6QXuhrgoSiukgKdPScXUWW6BK3NI9qPJIP1zEypyhVrqhAyU61yXFKi16rF7RYy2imqgKdR5LTW8pDtJ2Tg8mh3p7Ozo+cmZyOekiphoq1EL6hck5N837SdWf1PxJOZ+YIwmaNCEP3i8d5dD5HpiDXLabrTJmq5qerQpmqxpxCccbZdT4yvOAauY0ZXuauhtpHSesm5yqadJzllzkk1RJMpiHPFLJofM9zNZL26Wpl15Gl2Vu1u2fjYi7U++U+blBTb03TScf6L3lZuwRZqyVnrF3UV5Ln/AT/Xxlkh/Z5IAHSa/dACwwOS3TZPo7wkLbTCmhDdoGbVv6C8JCO0wpoQPaAe1Y+ivCQrtMKaEL2gXtWvo5wkJ7TCmhB9oD7Vn6LcJC+0wpoQ/aB+1b+jXCQkOmlBCChqChpUOEhQ6YUsIAdAA6sPQ3hIUOmVLCEHQIOrT0R4SFXjOlhGvQa9Br85wlbX8S+JMwn+gxbRAWOmJKCSPQEego29vI9ZZDdG8/Iyx0zJQSxqBj0HG2t7GbQU8S+JPQn3T9yfAk5CUzpq/PnwgLjZhSQgQagUbZ3iL3Ls4hurevEBYaM6WEGDQGjS1NEBY6YUoJE9AJ6CRb6MRdYk9y5U8Cf9L2Jx1/0vUnPX/SP8l1GfiT4UmuS3CSsbxkxvT75ieEhU6ZUsIUdAo6tfQPhIXOmFLCDHQGOssWOnNj8ySBPwnf1MK6/qTzJsyYfhV8g7DQOVNKmIPOQefZ3uZuTJ6k7U8m/iTMJ3oatggLXTClhAXoAnSR7W3hvrJyCN2IFT7DeuaOocIiRlYtlM0nMzbihaRsS+5qme7qscEL05QjtGB6jMVQUnELVEpa69GT3RT4FHT/uKady/zU/CVjJLOJJW2F3syBogmqDSraKNcZkWSowx8flfVcwU8LdrR3OMXSzU0Dc7NMr/Wa06JdP/KCMbNkbdqjzaPTVtxilmeRx/uDK8JuZ6ZbTlvE9nKqet2tVxt3tjLe8SOLCZk8ajZNkwthUrf7EeGQvRyNsgs1UDjf5bv5WLxw7btMr30/Sk81Ja/4atGkr8BWeKmu8FpMk74/GZyEdP1J7yTDD/3JyJ+0/UlwkrG8wnWZvvax6DfBd+mPLDqUuI+sBDQBTbK9JW6yPUknn+gCv0dY6JppYj6mha5B15b+jbBQ83G8vvfjuGU/jlv3kb4/ifxJmE/0mL5AWOiWKSVsQbegW0v/Qljojikl7EB3oLtsoTtXqCfp5hNd4JcIC90zpYQ96B50n+3tlUnbn0z9ycifBPmEvv6KIb4OuYf7bp32qVunffrW6Ql39STd1Y3Be9OUI9ThDb5Lb809w61Nes9+Vx/MrdOBQrRzmV3zl4yRzCGWtKfozRwomqA6oKKDcp0RuR3qkzaOynquYHfrNKIvdfoHRepH93/+//A/CpvbEPph3/xTh3/ij+WGpDimZvAv7c8AwuMsQmIaAAA=","debug_symbols":"5ZzhalxXEoTfRb/Ncru6+5x7/CpLWJTEWQRGDrGysJi8+442o5GNRARhqOTy/fNIR7erB5VPjSi+Lzc/fvj+13//6+7+p0+fb97/88vNx08/3D7cfbo/vfpys/0j9P+vfv759v7xC58fbn95uHkf0Xp38+H+x8d/Lv327uanu48fbt5njd/evTitPeN8WnuPy+nuVw537Hk+3LHicnjMVw6P2sb58Ch9c/i7d4/q8xrq53ZRv/IN9bnNJ/UZ8w31s/cn9XP2S/V1BfXrIkhL6y31oy7qZ76hftfT+zL2HC/V9xXUz3X5zVnjjfdec98vh+v5ve/Xnry6ntSvsdXlsMZ+lj+OLX8eW/5+bPnr0PK1HVt+HFu+ji0/jy2/ji3/2Leujn3r6ti3ro596+rYt24e+9bNY9+6eexbN4996+axb9089q2bx75189i3bh771s1r3Lrroig39R/LX/l09vRTl6Oh7ZWz0U/iYz2fVenPbFobZtPAbCrMponZtDCbDsymE7PpjtkUkxwakxwakxwakxwakxy6MJs2ZlNMRmp3Ropt5OXRj/v94a5rXnRs2xtPnv3054w5vnoPM86bLsqmY8NsGphNhdk0MZsWZtPGbDowm2KSw9gxm2Iy0sRkpInJSBOTkSYmI83CbIrJSBOTkSYmI01MRpqYjLRjMtKOyUg7JiPtmIy0F2ZTTEbaMRlpx2SkHZORdkxGWpiMtDAZaWEy0sJkpFWYTTEZaWEy0sJkpIXJSAuTkU4P4KyKSUmxYWJSbJicFFtxVsUkpdNgzqqYrBQbJizFxklLwUlLwUlLwUlLwUlL18GtHmNVTloKTloKTloKTloKTloSJy2Jk5bESUvipKWrcHIPsionLYmTlsRJS+KkJXHSUnLSUnLSUnLSUnLS0lX4xgdZlZOWkpOWkpOWkpOWkpOWipOWipOWipOWipOW7ADnv3BVTloqTloqTloqTloqTlpqTlpqTlpqTlpqTlqyQ6v/wlU5aak5aYnDrY7mpCUOozs4kO7gULqDg+kODqc7OKDu4JC6g4PqDg6rOziw7uDQuoOD6w4Orzs4wO7gELuDg+wODrM7ONDu4FC7g4PtDg63Ozjg7uCQu4OD7g4Ouzs48O7g0LuDg+8ODr87OADv4BC8g4PwDg7DOzgQ7+BQvIOD8Q4Oxzs4IO/gkLyDg/IODstbHJa3OCxvcVje4rC8tRVnVUxaEoflLQ7LWxyWtzgsb3FY3uKwvMVheYvD8haH5S0Oy1sclrc4LG9xWN7isLzFYXmLw/IWh+UtDstbHJa3OCxvcVje4rC8xWF5i8PyFoflLQ7LWxyWtzgsb3FY3uKwvMVheYvD8haH5S0Oy1sclrc4LG9xWN7isLzFYXmLw/IWh+UtDstbHJa3OCxvcVje4rC8xWF5i8PyFoflLQ7LWxyWtzgsb3FY3uKwvMVheYvD8haH5S0Oy1sclrc4LG9xWN7isLzFYXmLw/IWh+UtDstbHJa3OCxvcVje4rC8xWF5i8PyFoflLQ7LWxyWtzgsb3FY3uKwvMVheYvD8haH5S0Oy1sclrc4LG9xWN7isLzFYXmLw/IWh+UtDstbHJa3OCxvcVje4rC8k8PyTg7LOzks7+SwvHMrzqqYtJQclndyWN7JYXknh+WdHJZ3cljeyWF5J4flnRyWd3JY3slheSeH5Z0clndyWN7JYXknh+WdHJZ3cljeyWF5J4flnRyWd3JY3slheSeH5Z0clndyWN7JYXknh+WdHJZ3cljeyWF5J4flnRyWd3JY3slheSeH5Z0clndyWN7JYXknh+WdHJZ3cljeyWF5J4flnRyWd16d5Z16Y9XI51VHfSPp5em8rFqRz2e39ZqMMS8q6puz51XFWTU5qxZn1easOv5Gq54lzb+fpN0uadbzo8cbvxCd63y46/nuUY8n+evQ8q/OsDbLj2PL17Hl57Hl11Hk93hN/jy2/MP8v/+q/GswXk+xYV3kj28+BJ2HyDEkHUPKMaQdQ4ZjyHQM2R1DlmHINWiJbw9xOH53OH53OH53OH53OH53OH53OH53OH53OH45HL8cjl8Oxy+H45fD8cvh+OVw/HI4fjkcvwyOr21zDAnHEDmGpGNIOYa0Y8hwDJmOIbtjiMPx4XB8OBwfDseHw/HhcHw4HB8Ox4fD8eFwfDgcL4fj5XC8HI6Xw/FyOF4Ox8vheDkcL4fj5XB8OhyfDsenw/HpcHw6HJ8Ox6fD8elwfDocnw7Hl8Px5XB8ORxfDseXw/HlcHw5HF8Ox5fD8eVwfDsc3w7Ht8Px7XB8OxzfDse3w/HtcHw7HN8Oxw+H44fD8cPh+OFw/HA4fjgcPxyOHw7HD4fjh8Px0+F4R+euHJ27cnTuytG5K0fnrhydu3J07srRuStH564cnbtydO7K0bkrR+euHJ27cnTuytG5K0fnrhydu3J07srRuStH564cnbtydO7K0bkrR+euHJ27cnTuytG5K0fnrh2du3Z07trRuWtH5663cgxpx5DhGDIdQ3bHEIfjHZ27dnTu2tG5a0fnrh2du3Z07trRuWtH564dnbt2dO7a0blrR+euHZ27dnTu2tG5a0fnrh2du3Z07trRuWtH564dnbt2dO7a0blrR+euHZ27dnTu2tG5a0fnrh2du3Z07trRuWtH566v0rmLeGJSZYz4esjLw6dPRNv58OkjxbOiMV85PE8J93x4fs2cOR3+7vTiP7e/3N1+//HD59OPPH7v1/sfHu4+3Z9fPvz359+/czr7Pw=="},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[5,6,7,8]},"bytecode":"H4sIAAAAAAAA/+2b227aQBCG18RJTJ24YGMMgQQIyUXvDA2nO16mfe3eV+orVM2YnTJsp2hRx1tWYqWIsb2e/5t/D1jICdSuRe9/gY6v9eeN+rNhn63+LP+tzQRzlXVyBp5wNjzhvPKEMxTkDBhO+Ax1DOsO1tytOlyPv9tWqChTlELBBLoi19URwIMboUU6oBfHUuDrcnNDklNwpcFDfQ0/ASfW1yhYrIus+pBzWGiDnEOdK3IOd0bUibQpwvUuoj2yXN73CQA1NHUu5I5JTK8NiXVhTTVey9f4VsuYlLtVjGNyrXPfkmP0Cj0U/OaYUe1A/zWJptJjhPGA9MV+6EeDjDG0e7Wf180j94XGfQnpc8PUPxau/9bgMecsjEFLx204xj2BsH0g9W1l2ErIG8vnndExCHVu5I9JTYm43/M15L9Th838VhqTOCE89+I85ayeOndj95Gwy+RdvIFXLcOrO8OrhPShDK0a/AuILubG4xajLefFcg3abQsv2gxP27EXbUZb0IsNaKcWXqQMT+rYi5TRlvNi9Rm0MwsvMoYnc+xFxmjLeTGvni06Fl50GJ6OYy86jLbgGqnmRW7hRc7w5I69yBltQS++gnbXwosuw9N17EWX0Rb04gtoFxZeFAxP4diLgtEW3Dur54uehRc9hqfn2Iseoy3oxRy0+xZe9BmevmMv+oy24BqptB8svHhgeB4ce4F6pzJ3PGQuPGTOzoA5MmIZ7WW1fw4svBgwPAPHXtDfck5hzs+AOTJiGe3lArSHFl4MGZ6hYy9Q71Tm1EPmzEPmrofMuYfMhYfM5zCfIyOW0V5Ve+ijhRePDM+jYy9Q71Tm1EPmgYfM2RkwR0Yso72qfpt7svDiieF5cuwF6p3K3POQuX0GzJERy2ivlqA9svBixPCMHHuBeqcy9z1kLjxkHnjInHnI3PWQOfeQ+bIG3TCnZ8AM773gOzA/auWZb2KDBz1TBqMyGGMSJ4QR+26V3PsqiVE7ak3E/diNjzlf8HhSq/Z8DXmn8jVVz/IvOhe+wzdlanrVcSDs5wvJGxAdPB+S+Dvpi/3QD1y3yA7vXD3r+PXIfSPjvoT0eWbqHwvXPzV4pgYzjMk3wlHH3LKZ1y21X8ufCE8N++AbfScXm82+Q/cYQZ5ZTXWW9B2+n0p2TU8Mr5qGVwnpQ/fo/7VvXpgvzH9jps8TTXKO8uC5hlEL/f+GCcnxC57ToyHuNQAA","debug_symbols":"ndpRattAGIXRveg5FN/foxkpWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLLX/ent52x9uL03n3fp7ut6Pupv3x6fY0Pu+m58PL/vrc+ue3u9tohdF2I6PIqGS0lVGT0SyjLqMhIyliK0U0KaJJEU2KaFJEkyKaFNGkiCZFNCmiSRGzFDFLEbMUMUsRsxQxSxGzFDFLEbMUMUsRXYroUkSXIroU0aWILkV0KaJLEV2K6FLEkCKGFDGkiCFFDCliSBFDihhSxJAihhSxSBGLFLFIEYsUsUgRixSxSBGLFLFIEYsUsUoRqxSxShGrFLFKEasUsUoRqxSxShGrFJHNhlahVdFqS6tGq5lWnVaDVgutqI1QG6E2Qm2E2gi1EWoj1EaojVAboTaK2ihqo6iNojaK2ihqo6iNojYINEOiGSLNkGmGUDOkmiHWDLlmCDZDshmizZBthnAzpJsh3gz5Zgg4Q8IZIs6QcYaQM6ScIeYMOWcIOkPSGaLOkHWGsDOknSHuDHlnCDxD4hkiz5B5htAzpJ4h9gy5Zwg+Q/IZos+QfYbwM6SfIf4M+WcIQEMCGiLQkIGGEDSkoCEGDTloCEJDEhqi0JCFhjA0pKEhDg15aAhEQyIaItGQiYZQNKSiIRYNuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlo2UVPctEiFy1y0SIXLXLRIhctctH6bxe9nn7u3g+7h5f97W7v7ePH8fHfVd/r8fzr7e+X67+/AQ=="},{"name":"approve_public_authwit","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(internal)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":3,"start":0}],"outer_hash":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"outer_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"H4sIAAAAAAAC/83YWXMaRxAH8EESAocAC6y4b+0iiRtH5iWRH/MF/J6Uc6cqV+WsfMV8qkz3TO9faJ112g9bpgpYevu3PdOLcLUjc25M+cLYx8j4h/1UNjVzad/O6Plg5Mge0LNQMwUJxXSSlDuycXMee2Au+MhWMMW5fam8MFKsQS+XdXotFakUP0t0PqIlGSpaiWVJzwwH6VGhF5dDxT6IcCYyhU/t+4cu+ZlPrsZnLmiqYFWXU3GHTP9AWGiNKSXUQGugNU9/QlhonSkl1EHroHVPv0RYaMCUEgLQADTw9HeEhTaYUkIDtAHa8PR7hIU2mVJCE7QJ2vT0Z4SFtphSQgu0Bdpy72lSyya22hRhoSFTSghBQ9DQ09cIC71iSglXoFegV57+grDQNlNKaIO2QdvpPf4vYqv9irDQDlNK6IB2QDvpap3kJmQQW+1PhIV2mVJCF7QL2vX0a4SF9phSQg+0B9rz9HOEhfaZUkIftA/aT++xn3RUSarZxC7wC4SFDphSwgB0ADrw9AeEhQ6ZUsIQdAg6TC90mPz9KUldT3p6EupJVU+CbGKb/R3CQkdMKWEEOgIdefoXwkLHTClhDDoGHacXOk7uk5IEetLSk7qehHpSy2UvzVwWNsgm9ovzN8JCJ0wpYQI6AZ2kq02SNihJX0+6uSysriehngxyIW/pmP0WfIWw0ClTSpiCTkGn6WrTpNlK0tCTmp4EetLVk3Yuewn1ZJALGWeTGcXvMQq9ZCijUAWjEGWb2IiNzIXBY8alZqel5g5P3aGcoVlrjjkquuTDyCfF9rtPdlHgSyx8zZiXeXCfZI9kFrGkXaOaO3HmgmaBFS1MUoxIZJMLi0fLerLgY8Hv9qXLoSuWk96U0BueSVHmEtuzXS2a0wdlzHji5YbN3GVK/jLTN3XS37SyX1z5TaSYTU6WJJupfHzxKKfkfnuerpcec7de6srcTdDSpGLE5UxU5Peib++1K/KJfd4kHYvRsZvTji2wvBt7wVf2/dYlxz75jjd5S0dgdy7nxh3Se5oEetLUk7aehNnEtuFbhIUumVLCEnQJukxXWyY/nErSyiZ2gb8hLHTFlBJWoCvQVbraKvlpU5KmngR60somtg17hIWumVLCGnQNuk5XWyfVlKSmJ009CXLZS6gng1zIO3RspCddPZlkE/v13CIsdMOUEjagG9BNutomuaVKcqsngZ409aStJ6Ge3OlJN5f7stSTQS73JchlL2/pmP27+RFhoVumlLAF3YJu09W2yX9PKclSTwI9ab2vCwv1pP0+dMx+cb5BWOiOKSXsQHegu3S1XbInJWnqyUZPWtkkcuPa7pTumVLCHnQPuk9X2yf/VGUQmpfOXmPueGBoMGzIdLH3c4i3p1PsgUsdTks9d3jvDuUMDTbPMbTcuyn23ie98FPs0U2xRwrRk5f5mfskeyRzjCXtI1RzJ85c0ByxoqNJihG5n9qLvnq0rCcL5imWdvuASxyS3hTRm8PpTHYdPT5z7nJdd5IZNX1LDr70AWcwAB7+cwDc38r0yMPrNZHuP/T8F4O+ADk1HgAA","debug_symbols":"5ZzRbhRHEEX/xc9WNFVd1TPDr0RRZMBElpCNsIkUIf49C9gOiBXJSRDRcp7AdrfVxX3Yy5me8/bs+eXTN7/9enX94ub27MnPb89e3jy7uLu6uT589fZs+Sniw3dvX11cv//G7d3F67uzJ8v52eX188Of787PXly9vDx7Mmq+O/9iXcc27pd27PG4eq5HFs9a5v3iWfnZ4l/O3x8l/9NRsh+WHv66/81RsvvhKLkeOcr450f5uKHohqYbJt2w0g0b3bDDDbnQDUE3JN1Ak06adNKkkyadNOmkSSdNetCkB0160KQHTXrQpAdNetCkB0160KQHTbpo0kWTLpp00aSLJl006aJJF026aNJFk26adNOkmybdNOmmSTdNumnSTZNumnTTpCdNetKkJ0160qQnTXrSpCdNetKkJ0160qRXmvRKk15p0itNeqVJrzTplSa90qRXmvRKk95o0htNeqNJbzTpjSa90aQ3mvRGk95o0htNeqdJ7zTpnSa906R3mvROk95p0jtNeqdJ7zTpWBa8I/COxDswPVkwPlkwP1kwQFkwQVkwQllw5oEzD5x54Mw5MePIjDMzDs04NePYDHOzwOAsMDkLjM4Cs7PA8CwwPQuMzwLzs8AALTBBC4zQAjO0wBAtMEULjNECc7TAIC0wSQuM0gKztMAwLTBNC4zTovjTEJw5JmqBkVpgphYYqgWmaoGxWmCuFhisBSZrgdFaYLYWGK4FpmuB8VpgvhYYsAUmbIERW2DGFhiyxeTPPXHmmLMFBm2BSVtg1BaYtQWGbYFpW2DcFpi3xcofduPMMXILzNwCQ7fA1C0wdgvM3QKDt8DkLTB6i43fcMCZY/oWGL8F5m+BAVxgAhcYwQVmcIEhXGAKFzu/1sLvteCLLZjDJeZwiTlcYg6XmMMl5nCJOVxiDpeYw2Xwy0w4c8zhEnO4xBwuMYdLzOESc7jEHC75/TV+ge1f3GDDmfM7bPwSG7/Fxq+x8Xts/CIb5nCJOVxiDpeDX1vEmWMOl5jDJeZwiTlcYg6XmMMl5nCJOVxiDpfF76rizDGHS8zhEnO4xBwuMYdLzOESc7jEHC4xh0vM4RJzuMQcLjGHS8zhEnO4xBwuMYdLzOESc7jEHC4nv5WOM8ccLjGHS8zhEnO4xBwuMYdLzOESc7jEHC5X/ioCzhxzuMQcLjGHS8zhEnO4xBwuMYdLzOESc7jc+PsnOHPM4RJzuMQcLjGHS8zhEnO4xBwuMYdLzOFy5y8d8beO8GtHmMMNzOEG5nADc7iBOdzAHG5gDjeOc7jDg9+833R4dlqf7fvyXc0x6uFdzTG2fFzdfWTxPrb7tfu2PS6NXI6sjccXRg+M+HHt4f9lx35v18PifS5/HfnQWB5G3TWjHiefP+ao4Rk1PaMOz6jtGXV6Rl09o3oqRHgqRHoqRHoqRHoqRHoqxPGHxT/mqJ62lN+7LcUyH1xR8WHArw67r4/nWJb++m9eO+7XrvOTf8QRD6NunlF3zahj8YwanlHTM+rwjFqeUdszqqdCjNUzqqctDU9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bKk9bak9bak9bak9bak9bak9bak9bak9bak9bak9bak9bmp62ND1taXra0vS0pelpS9PTlqanLU1PW5qetjQ9bWn1tKXV05ZWT1taPW1p9bSl1dOWVk9bWj1tafW0pdXTljZPW9o8bWnztKXN05Y2T1vaPG1p87SlzdOWNk9b2jxtafe0pd3TlnZPW9o9bWn3tKXd05Z2T1vaPW1p97SlXdOWatG0pVo0bakWTVuqRdOWainPqJq2VIumLdWiaUu1aNpSLZ62FJ62FJ62FJ62FJ62FJ62FJ62FJ62FJ62FJ62FJ62lJ62lJ62lJ62lJ629N0F1//jqJ625BFcV3raksflXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5l8flXR6Xd3lc3uVxeZfH5V0el3d5XN7lcXmXx+VdHpd3eVze5XF5t8fl3R6Xd3tc3u1xefdSnlE1bak9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vNvj8m6Py7s9Lu/2uLzb4/Juj8u7PS7v9ri82+Pybo/Luz0u7/a4vKfH5T09Lu/pcXlPj8t7LuUZVdOWpsflPT0u7+lxec9v7vL+ZPXxUWs8jlrr+OxIX66eOe8Xz0+Pv+z3x//mfu7vfPw47ePnaR9/nPbx67SP36d9/Hnax19P+/jbaR//tD9187Q/dfO0P3XzZD91D1/9fvH66uLpy8vbw473P3xz/ezu6ub6/su7P159/Mlh7Z8="}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"outer_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::cancel_authwit_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::cancel_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::spend_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::spend_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"outer_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::approve_public_authwit_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::approve_public_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::spend_public_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::spend_public_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_abi"}]}},"file_map":{"101":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nfn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"109":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n"},"110":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"116":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nfn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nfn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"120":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl Storage for Map {}\n\nimpl Map {\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 { context, storage_slot, state_var_constructor }\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 = derive_storage_slot_in_map(self.storage_slot, key);\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"},"131":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl Storage for PublicMutable {}\n\nimpl PublicMutable {\n // docs:start:public_mutable_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 ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl PublicMutable {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T where T: Deserialize {\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) where T: Serialize {\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl PublicMutable {\n pub fn read(self) -> T where T: Deserialize {\n // This looks the same as the &mut PublicContext impl, but is actually very different. In public execution the\n // storage read oracle gets transpiled to SLOAD opcodes, whereas in unconstrained execution the PXE returns\n // historical data.\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"158":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\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 Serialize for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"160":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"163":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize for 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 serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"164":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\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 Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> 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"},"165":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse dep::std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"166":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"167":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"168":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"176":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"177":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"178":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"179":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"180":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\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 function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x22786e4f971661d2e49095e6b038e5170bc47b795253916d5657c4bdd1df50bf;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"186":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"189":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"190":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1970bf189adc837d1769f9f44a8b55c97d45690e7744859b71b647e808ee8622;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"198":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x03ab5026ab5b3e6b81be5c3ec31c7937f293180c25a240eb75693cda81bb2a05;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"200":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"201":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"203":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\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::empty();\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\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x124a62189073cc551fea148d735d1e8b452e38537e075895b02ccfd9c9901819;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x2cbb07062730bfc4933f5e8d533d5b62ac6e1b7922b831993377cd85d7445399;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"206":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\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 Serialize for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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 { inner: result }\n }\n}\n"},"210":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"222":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"233":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"234":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"240":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"242":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"254":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"256":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"265":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\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_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&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 // TODO(#4394)\n pub fn read_struct(&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(&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"},"266":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"267":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle(_msg: str, args: [Field]) {}\n\n/// NOTE: call this with a str msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format(msg: str, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"28":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"344":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr","source":"use dep::authwit::auth_witness;\nuse dep::aztec::{protocol_types::{address::PartialAddress, grumpkin_point::GrumpkinPoint}, keys::PublicKeys};\n\nstruct AuthWitness {\n keys: PublicKeys,\n signature: [u8; 64],\n partial_address: PartialAddress,\n}\n\nimpl AuthWitness {\n fn deserialize(values: [Field; 73]) -> Self {\n let mut signature = [0; 64];\n for i in 0..64 {\n signature[i] = values[i + 8] as u8;\n }\n Self {\n keys: PublicKeys {\n npk_m: GrumpkinPoint::new(values[0], values[1]),\n ivpk_m: GrumpkinPoint::new(values[2], values[3]),\n ovpk_m: GrumpkinPoint::new(values[4], values[5]),\n tpk_m: GrumpkinPoint::new(values[6], values[7])\n },\n signature,\n partial_address: PartialAddress::from_field(values[72])\n }\n }\n}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> AuthWitness {\n let witness: [Field; 73] = auth_witness::get_auth_witness(message_hash);\n AuthWitness::deserialize(witness)\n}\n"},"345":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/util.nr","source":"use dep::std::{schnorr::verify_signature_slice};\nuse dep::aztec::prelude::AztecAddress;\nuse crate::auth_oracle::AuthWitness;\n\npub fn recover_address(message_hash: Field, witness: AuthWitness) -> AztecAddress {\n let message_bytes = message_hash.to_be_bytes(32);\n // In a single key account contract we re-used ivpk_m as signing key\n let verification = verify_signature_slice(\n witness.keys.ivpk_m.x,\n witness.keys.ivpk_m.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(witness.keys.hash(), witness.partial_address)\n}\n"},"346":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr","source":"mod util;\nmod auth_oracle;\n\ncontract SchnorrSingleKeyAccount {\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, PrivateContext};\n\n use dep::authwit::{entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions};\n\n use crate::{util::recover_address, auth_oracle::get_auth_witness};\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 1;\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload) {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload);\n }\n\n #[aztec(private)]\n fn spend_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.spend_private_authwit(inner_hash)\n }\n\n #[aztec(public)]\n fn spend_public_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.spend_public_authwit(inner_hash)\n }\n\n #[aztec(private)]\n #[aztec(internal)]\n fn cancel_authwit(outer_hash: Field) {\n context.push_new_nullifier(outer_hash, 0);\n }\n\n #[aztec(public)]\n #[aztec(internal)]\n fn approve_public_authwit(outer_hash: Field) {\n let actions = AccountActions::init(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.approve_public_authwit(outer_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n let witness = get_auth_witness(outer_hash);\n assert(recover_address(outer_hash, witness).eq(context.this_address()));\n true\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u32) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u32) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any(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\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n"},"51":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"52":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"55":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::context::{PrivateContext, PublicContext};\nuse dep::aztec::state_vars::{Map, PublicMutable};\nuse dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector, hash::pedersen_hash};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_outer_authwit_hash};\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map, Context>,\n}\n\nimpl AccountActions {\n pub fn init(\n context: Context,\n approved_action_storage_slot: Field,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool\n ) -> Self {\n AccountActions {\n context,\n is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicMutable::new(context, slot)\n }\n )\n }\n }\n}\n\nimpl AccountActions<&mut PrivateContext> {\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload) {\n let valid_fn = self.is_valid_impl;\n\n let fee_hash = fee_payload.hash();\n assert(valid_fn(self.context, fee_hash));\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n\n let app_hash = app_payload.hash();\n assert(valid_fn(self.context, app_hash));\n app_payload.execute_calls(self.context);\n }\n // docs:end:entrypoint\n\n // docs:start:spend_private_authwit\n pub fn spend_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can \n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_outer_authwit_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n self.context.push_new_nullifier(message_hash, 0);\n IS_VALID_SELECTOR\n }\n // docs:end:spend_private_authwit\n}\n\nimpl AccountActions<&mut PublicContext> {\n // docs:start:spend_public_authwit\n pub fn spend_public_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can \n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_outer_authwit_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let is_valid = self.approved_action.at(message_hash).read();\n assert(is_valid == true, \"Message not authorized by account\");\n self.context.push_new_nullifier(message_hash, 0);\n IS_VALID_SELECTOR\n }\n // docs:end:spend_public_authwit\n\n // docs:start:approve_public_authwit\n pub fn approve_public_authwit(self, message_hash: Field) {\n self.approved_action.at(message_hash).write(true);\n }\n // docs:end:approve_public_authwit\n}\n"},"56":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = context.call_public_function(\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n"},"57":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"67":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn storage_address(self) -> AztecAddress {\n storage_address()\n }\n pub fn fee_per_l2_gas(self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(self) -> Field {\n fee_per_da_gas()\n }\n /**\n * Emit a log with the given event selector and message.\n *\n * @param event_selector The event selector for the log.\n * @param message The message to emit in the log.\n */\n pub fn emit_unencrypted_log_with_selector(\n &mut self,\n event_selector: Field,\n log: T\n ) where T: Serialize {\n emit_unencrypted_log(event_selector, Serialize::serialize(log).as_slice());\n }\n // For compatibility with the selector-less API. We'll probably rename the above one.\n pub fn emit_unencrypted_log(&mut self, log: T) where T: Serialize {\n self.emit_unencrypted_log_with_selector(/*event_selector=*/ 5, log);\n }\n pub fn note_hash_exists(self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n pub fn l1_to_l2_msg_exists(self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn block_number(self) -> Field {\n block_number()\n }\n\n fn timestamp(self) -> u64 {\n timestamp()\n }\n\n fn transaction_fee(self) -> Field {\n transaction_fee()\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0);\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n fn msg_sender(self) -> AztecAddress {\n sender()\n }\n fn this_address(self) -> AztecAddress {\n address()\n }\n fn chain_id(self) -> Field {\n chain_id()\n }\n fn version(self) -> Field {\n version()\n }\n fn selector(self) -> FunctionSelector {\n FunctionSelector::from_field(self.inputs.selector)\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn l2_gas_left(self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(self) -> Field {\n da_gas_left()\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n let MAX_POSSIBLE_FIELD: Field = 0 - 1;\n [\n user_gas.l2_gas.unwrap_or(MAX_POSSIBLE_FIELD),\n user_gas.da_gas.unwrap_or(MAX_POSSIBLE_FIELD)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(event_selector: Field, message: [Field]) {\n emit_unencrypted_log_opcode(event_selector, message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nfn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nfn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nfn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nfn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nfn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nfn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeTransactionFee)]\nfn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nfn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nfn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nfn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nfn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nfn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nfn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nfn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nfn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nfn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nfn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(amvOpcodeEmitUnencryptedLog)]\nfn emit_unencrypted_log_opcode(event_selector: Field, message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nfn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nfn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nfn call_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nfn call_static_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\nstruct FunctionReturns {\n values: [Field; N]\n}\n\nimpl FunctionReturns {\n pub fn new(values: [Field; N]) -> FunctionReturns {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into(self) -> T where T: Deserialize {\n Deserialize::deserialize(self.raw())\n }\n}\n"},"85":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH, hash::poseidon2_hash,\n grumpkin_point::GrumpkinPoint, traits::{Deserialize, Serialize}\n};\nuse crate::keys::constants::{NUM_KEY_TYPES, NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH = 8;\n\nstruct PublicKeys {\n npk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n ovpk_m: GrumpkinPoint,\n tpk_m: GrumpkinPoint,\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n poseidon2_hash(\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n ]\n )\n )\n }\n\n pub fn get_key_by_index(self, index: Field) -> GrumpkinPoint {\n assert(index as u8 < NUM_KEY_TYPES, \"Invalid key index\");\n if index == NULLIFIER_INDEX {\n self.npk_m\n } else if index == INCOMING_INDEX {\n self.ivpk_m\n } else if index == OUTGOING_INDEX {\n self.ovpk_m\n } else {\n self.tpk_m\n }\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: GrumpkinPoint { x: serialized[0], y: serialized[1] },\n ivpk_m: GrumpkinPoint { x: serialized[2], y: serialized[3] },\n ovpk_m: GrumpkinPoint { x: serialized[4], y: serialized[5] },\n tpk_m: GrumpkinPoint { x: serialized[6], y: serialized[7] },\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x1936abe4f6a920d16a9f6917f10a679507687e2cd935dd1f1cdcb1e908c027f3;\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.x, deserialized.npk_m.x);\n assert_eq(keys.npk_m.y, deserialized.npk_m.y);\n assert_eq(keys.ivpk_m.x, deserialized.ivpk_m.x);\n assert_eq(keys.ivpk_m.y, deserialized.ivpk_m.y);\n assert_eq(keys.ovpk_m.x, deserialized.ovpk_m.x);\n assert_eq(keys.ovpk_m.y, deserialized.ovpk_m.y);\n assert_eq(keys.tpk_m.x, deserialized.tpk_m.x);\n assert_eq(keys.tpk_m.y, deserialized.tpk_m.y);\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/protocol-contracts/src/artifacts/ContractClassRegisterer.json b/yarn-project/protocol-contracts/src/artifacts/ContractClassRegisterer.json deleted file mode 100644 index 446a9a15f39..00000000000 --- a/yarn-project/protocol-contracts/src/artifacts/ContractClassRegisterer.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"ContractClassRegisterer","functions":[{"name":"broadcast_unconstrained_function","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"artifact_function_tree_leaf_index":[{"end":48,"start":47}],"artifact_function_tree_sibling_path":[{"end":47,"start":42}],"artifact_metadata_hash":[{"end":41,"start":40}],"contract_class_id":[{"end":40,"start":39}],"function_data":[{"end":3050,"start":48}],"inputs":[{"end":39,"start":0}],"private_functions_artifact_tree_root":[{"end":42,"start":41}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"artifact_metadata_hash","type":{"kind":"field"},"visibility":"private"},{"name":"private_functions_artifact_tree_root","type":{"kind":"field"},"visibility":"private"},{"name":"artifact_function_tree_sibling_path","type":{"kind":"array","length":5,"type":{"kind":"field"}},"visibility":"private"},{"name":"artifact_function_tree_leaf_index","type":{"kind":"field"},"visibility":"private"},{"name":"function_data","type":{"fields":[{"name":"selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"metadata_hash","type":{"kind":"field"}},{"name":"bytecode","type":{"kind":"array","length":3000,"type":{"kind":"field"}}}],"kind":"struct","path":"events::unconstrained_function_broadcasted::UnconstrainedFunction"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506]},"bytecode":"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","debug_symbols":"1ZrbbtpAFEX/xc8omjnXMb9SVZWTkAoJmSiQShXi32tShiTNSKiHJMp+QoPPthewh+UH77rbxfXjzx/L8W696ebfdt1qfTNsl+txWu26bE/vbe6H8bDcbIeHbTdPs24x3k6v+1l3t1wtujkV2s/ezJErH0fJXU/TWbQxzcX1OM290JnpXqVi9JbkmcTK/vusy44KXlDBe1BwSqjgGRWcUMEZFVxQwRUVHNWchGpOQjUnoZqTUc3JqOZkVHMyqjkZ1ZyMak5GNSejmpNRzcmo5hRUcwqqOQXVnIJqTkE1p6CaU1DNKajmFFRzCqo5FdWcimpORTWnoppTUc2pqOZUVHMqqjkV1ZyKak5DNaehmtNQzWmfaE6h7MdpoSIXggsq+CeaUzhJBWe7FPwic4r4CUXz87TZ07n9A8/d9I9IyjXjqq+ucAg1//vFrW49KeRnsLJwqdfI0/VegTX2dUpqdWOnVPSfz+Hp6yHl90AS0hOSkr75+a7at/dudVN6oRdl9ZqSUEpDKQulPJQqoVQfSbXvJM6mcihFoVSoGxbqhoW6YaFuWKgbFuqGhbrhoW54qBse6oaHuuGhbnioGx7qhoe64e1uiJ5S3Er1/53yfJWb3zxT6atN+OV9VJpy0+rX8LAcrleLwwPJh4OP4019Pnlabn/f/z0yzf4B"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[5,6,7,8]},"bytecode":"H4sIAAAAAAAA/+2b227aQBCG18RJTJ24YGMMgQQIyUXvDA2nO16mfe3eV+orVM2YnTJsp2hRx1tWYqWIsb2e/5t/D1jICdSuRe9/gY6v9eeN+rNhn63+LP+tzQRzlXVyBp5wNjzhvPKEMxTkDBhO+Ax1DOsO1tytOlyPv9tWqChTlELBBLoi19URwIMboUU6oBfHUuDrcnNDklNwpcFDfQ0/ASfW1yhYrIus+pBzWGiDnEOdK3IOd0bUibQpwvUuoj2yXN73CQA1NHUu5I5JTK8NiXVhTTVey9f4VsuYlLtVjGNyrXPfkmP0Cj0U/OaYUe1A/zWJptJjhPGA9MV+6EeDjDG0e7Wf180j94XGfQnpc8PUPxau/9bgMecsjEFLx204xj2BsH0g9W1l2ErIG8vnndExCHVu5I9JTYm43/M15L9Th838VhqTOCE89+I85ayeOndj95Gwy+RdvIFXLcOrO8OrhPShDK0a/AuILubG4xajLefFcg3abQsv2gxP27EXbUZb0IsNaKcWXqQMT+rYi5TRlvNi9Rm0MwsvMoYnc+xFxmjLeTGvni06Fl50GJ6OYy86jLbgGqnmRW7hRc7w5I69yBltQS++gnbXwosuw9N17EWX0Rb04gtoFxZeFAxP4diLgtEW3Dur54uehRc9hqfn2Iseoy3oxRy0+xZe9BmevmMv+oy24BqptB8svHhgeB4ce4F6pzJ3PGQuPGTOzoA5MmIZ7WW1fw4svBgwPAPHXtDfck5hzs+AOTJiGe3lArSHFl4MGZ6hYy9Q71Tm1EPmzEPmrofMuYfMhYfM5zCfIyOW0V5Ve+ijhRePDM+jYy9Q71Tm1EPmgYfM2RkwR0Yso72qfpt7svDiieF5cuwF6p3K3POQuX0GzJERy2ivlqA9svBixPCMHHuBeqcy9z1kLjxkHnjInHnI3PWQOfeQ+bIG3TCnZ8AM773gOzA/auWZb2KDBz1TBqMyGGMSJ4QR+26V3PsqiVE7ak3E/diNjzlf8HhSq/Z8DXmn8jVVz/IvOhe+wzdlanrVcSDs5wvJGxAdPB+S+Dvpi/3QD1y3yA7vXD3r+PXIfSPjvoT0eWbqHwvXPzV4pgYzjMk3wlHH3LKZ1y21X8ufCE8N++AbfScXm82+Q/cYQZ5ZTXWW9B2+n0p2TU8Mr5qGVwnpQ/fo/7VvXpgvzH9jps8TTXKO8uC5hlEL/f+GCcnxC57ToyHuNQAA","debug_symbols":"ndpBattQGIXRvWhsiu9vSe/JWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq82/Cyf/r48f1wej1fhu3X23A8P++uh/PpfroN6y/V/7y9vO1OjxeX6+79Omw3rVbD/vTyeGqfq+H1cNwP2+r1+W31GC0w2qxlFBmVjDYyGmU0yWiWUZORFLGRIkYpYpQiRililCJGKWKUIkYpYpQiRililCImKWKSIiYpYpIiJilikiImKWKSIiYpYpIiZililiJmKWKWImYpYpYiZililiJmKWKWIpoU0aSIJkU0KaJJEU2KaFJEkyKaFNGkiC5FdCmiSxFdiuhSRJciuhTRpYguRXQpYpEiFilikSIWKWKRIhYpYpEiFilikSIWKSLrNa1Cq6LVhlYjrSZazbRqtOq0ojZCbYTaCLURaiPURqiNUBuhNkJthNooaqOojaI2itooaqOojaI2itog0AyJZog0Q6YZQs2QaoZYM+SaIdgMyWaINkO2GcLNkG6GeDPkmyHgDAlniDhDxhlCzpByhpgz5Jwh6AxJZ4g6Q9YZws6Qdoa4M+SdIfAMiWeIPEPmGULPkHqG2DPkniH4DMlniD5D9hnCz5B+hvgz5J8hAA0JaIhAQwYaQtCQgoYYNOSgIQgNSWiIQkMWGsLQkIaGODTkoSEQDYloiERDJhpC0ZCKhlg05KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiZRc9yUWLXLTIRYtctMhFi1y0yEXrv130fvq5ez/sno77x93ex8eP0/O/q7734/XX298v939/Aw=="},{"name":"register","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"artifact_hash":[{"end":40,"start":39}],"inputs":[{"end":39,"start":0}],"private_functions_root":[{"end":41,"start":40}],"public_bytecode_commitment":[{"end":42,"start":41}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"artifact_hash","type":{"kind":"field"},"visibility":"private"},{"name":"private_functions_root","type":{"kind":"field"},"visibility":"private"},{"name":"public_bytecode_commitment","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498]},"bytecode":"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","debug_symbols":"1Zdra8IwFIb/Sz6L5FyT+FfGGJ2XIUgVL4Mh/vfVS6qbgeJxG+5Tm/Z9ct40bw9k60bj183by7SezFdu8LR1s/mwWk/ndTPaOpDDs9WiqvfD1bpart3A99y4HjXXXc9NprOxG2DEXe9Kh0HoJMUQpFUDS0HNCOGkZozcoU7C2UZSf1ajxt1zz4H+V+PhD42T52yc9F7j8R7jzKG1InBWqx7mTr83N/rS3ICa9xQwfq2wh6AIUYoZEpIOW4kxi0HDWQxwqIDFCtHn/YWo2FFBKWa1ssfLhV+LyXvRk7q5j/L9O9GjGeKioUSQ/wD01xtXbGiI4FsodK0CmGKuAcze37kOfTxL4ScsMUprSfCqhu+XWwZhytY4XRShTCULVf7NOykwUXg7xX0qriu0fSjEi0/eNIwjxd5EgYlCE0Umik2UmCg1UcFERRNlyoaYsiGmbIgpG2LKhpiyIaZsiCkbYsqGmLIhpmyoKRtqyoaasqGmbGg5GywtRSVKbqdCH6jc52Pb6OnyOOAbrhm9V8tp9Tob7w9Y+5ebepjPW81w/bE4vmm0nw=="},{"name":"broadcast_private_function","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"artifact_function_tree_leaf_index":[{"end":54,"start":53}],"artifact_function_tree_sibling_path":[{"end":53,"start":48}],"artifact_metadata_hash":[{"end":41,"start":40}],"contract_class_id":[{"end":40,"start":39}],"function_data":[{"end":3057,"start":54}],"inputs":[{"end":39,"start":0}],"private_function_tree_leaf_index":[{"end":48,"start":47}],"private_function_tree_sibling_path":[{"end":47,"start":42}],"unconstrained_functions_artifact_tree_root":[{"end":42,"start":41}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"artifact_metadata_hash","type":{"kind":"field"},"visibility":"private"},{"name":"unconstrained_functions_artifact_tree_root","type":{"kind":"field"},"visibility":"private"},{"name":"private_function_tree_sibling_path","type":{"kind":"array","length":5,"type":{"kind":"field"}},"visibility":"private"},{"name":"private_function_tree_leaf_index","type":{"kind":"field"},"visibility":"private"},{"name":"artifact_function_tree_sibling_path","type":{"kind":"array","length":5,"type":{"kind":"field"}},"visibility":"private"},{"name":"artifact_function_tree_leaf_index","type":{"kind":"field"},"visibility":"private"},{"name":"function_data","type":{"fields":[{"name":"selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"metadata_hash","type":{"kind":"field"}},{"name":"vk_hash","type":{"kind":"field"}},{"name":"bytecode","type":{"kind":"array","length":3000,"type":{"kind":"field"}}}],"kind":"struct","path":"events::private_function_broadcasted::PrivateFunction"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512,3513]},"bytecode":"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","debug_symbols":"1ZrbaiJBFEX/pZ4lVJ1bVfsrwzB0EjMI0oZoBgbx39MmVudWIDkmIftJyj67XeIulza9C9eLy/u/f5bDzXoT5r92YbW+6rfL9TCudiHZ43Ob2344LDfb/m4b5nEWFsP1+LifhZvlahHmVGg/ezdHWfk4SjnrNJ1EG9Ncsh6nuRM6Md2pVIzOojyTWNn/noWUUcELKngHCk4RFTyhghMqOKOCCyq4ooKjmpNQzUmo5iRUczKqORnVnIxqTkY1J6Oak1HNyajmZFRzMqo5GdWcgmpOQTWnoJpTUM0pqOYUVHMKqjkF1ZyCak5BNaeimlNRzamo5lRUcyqqORXVnIpqTkU1p6KaU1HNaajmNFRzGqo57RvNKZTycVqoyJngggr+jeYUjlLB2c4FP8ucInlC0fQ8bfZ47vyF5276hylR3UUW06tXOISa3/1sKU2hzCewknCp40kkvgJr7OsY1erZYyz65n3k+POQ0mcgCemEpKTvPr6L9kWDbHVT5kIvypprqrhSnSfV/q96MpVcKXKl2JUSV0pdKXOlXN1QVzfU1Q1zdcNc3TBXN8zVDXN1w1zdMFc3zNUNc3XDXN3Irm5kVzdyuxuiU4pbKf5wKqeLxG3nlq6KgV/+jopjblz96++W/eVqcbgh+XDwfriq9yePy+3/26cj4+wD"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"artifact_metadata_hash","type":{"kind":"field"}},{"name":"private_functions_artifact_tree_root","type":{"kind":"field"}},{"name":"artifact_function_tree_sibling_path","type":{"kind":"array","length":5,"type":{"kind":"field"}}},{"name":"artifact_function_tree_leaf_index","type":{"kind":"field"}},{"name":"function_data","type":{"fields":[{"name":"selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"metadata_hash","type":{"kind":"field"}},{"name":"bytecode","type":{"kind":"array","length":3000,"type":{"kind":"field"}}}],"kind":"struct","path":"events::unconstrained_function_broadcasted::UnconstrainedFunction"}}],"kind":"struct","path":"ContractClassRegisterer::broadcast_unconstrained_function_parameters"}}],"kind":"struct","path":"ContractClassRegisterer::broadcast_unconstrained_function_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"artifact_metadata_hash","type":{"kind":"field"}},{"name":"unconstrained_functions_artifact_tree_root","type":{"kind":"field"}},{"name":"private_function_tree_sibling_path","type":{"kind":"array","length":5,"type":{"kind":"field"}}},{"name":"private_function_tree_leaf_index","type":{"kind":"field"}},{"name":"artifact_function_tree_sibling_path","type":{"kind":"array","length":5,"type":{"kind":"field"}}},{"name":"artifact_function_tree_leaf_index","type":{"kind":"field"}},{"name":"function_data","type":{"fields":[{"name":"selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"metadata_hash","type":{"kind":"field"}},{"name":"vk_hash","type":{"kind":"field"}},{"name":"bytecode","type":{"kind":"array","length":3000,"type":{"kind":"field"}}}],"kind":"struct","path":"events::private_function_broadcasted::PrivateFunction"}}],"kind":"struct","path":"ContractClassRegisterer::broadcast_private_function_parameters"}}],"kind":"struct","path":"ContractClassRegisterer::broadcast_private_function_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"artifact_hash","type":{"kind":"field"}},{"name":"private_functions_root","type":{"kind":"field"}},{"name":"public_bytecode_commitment","type":{"kind":"field"}}],"kind":"struct","path":"ContractClassRegisterer::register_parameters"}}],"kind":"struct","path":"ContractClassRegisterer::register_abi"}]}},"file_map":{"107":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nfn emit_encrypted_note_log_oracle(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_note_log(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nfn emit_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nfn compute_encrypted_note_log_oracle(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nfn compute_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nfn emit_contract_class_unencrypted_log_private(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, event_selector, message, counter)\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"211":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr","source":"use crate::constants::GENERATOR_INDEX__CONTRACT_LEAF;\nuse crate::traits::{ToField, FromField, Hash, Serialize, Deserialize};\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ToField for ContractClassId {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for ContractClassId {\n fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n}\n\nimpl Serialize<1> for ContractClassId {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n}\n\nimpl Deserialize<1> for ContractClassId {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"267":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle(_msg: str, args: [Field]) {}\n\n/// NOTE: call this with a str msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format(msg: str, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"282":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr","source":"mod events;\nmod capsule;\n\ncontract ContractClassRegisterer {\n use dep::aztec::prelude::{AztecAddress, EthAddress, FunctionSelector};\n use dep::aztec::protocol_types::{\n contract_class_id::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::Serialize\n };\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n // docs:start:import_pop_capsule\n use crate::capsule::pop_capsule;\n // docs:end:import_pop_capsule\n\n #[aztec(private)]\n fn register(artifact_hash: Field, private_functions_root: Field, public_bytecode_commitment: Field) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n // docs:start:pop_capsule\n let packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = pop_capsule();\n // docs:end:pop_capsule\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n dep::aztec::oracle::debug_log::debug_log_format(\n \"ContractClassRegistered: {}\",\n [\n contract_class_id.to_field(),\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ]\n );\n context.emit_contract_class_unencrypted_log(event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n private_function_tree_leaf_index: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n artifact_function_tree_leaf_index: Field,\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n private_function_tree_leaf_index,\n artifact_function_tree_sibling_path,\n artifact_function_tree_leaf_index,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_format(\n \"ClassPrivateFunctionBroadcasted: {}\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.vk_hash,\n function_data.metadata_hash\n ]\n );\n context.emit_contract_class_unencrypted_log(event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n artifact_function_tree_leaf_index: Field,\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n artifact_function_tree_leaf_index,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_format(\n \"ClassUnconstrainedFunctionBroadcasted: {}\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.metadata_hash\n ]\n );\n context.emit_contract_class_unencrypted_log(event.serialize());\n }\n}\n"},"283":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/capsule.nr","source":"// We should extract this to a shared lib in aztec-nr once we settle on a design for capsules\n\n// docs:start:pop_capsule\n#[oracle(popCapsule)]\nfn pop_capsule_oracle() -> [Field; N] {}\n\n// A capsule is a \"blob\" of data that is passed to the contract through an oracle.\nunconstrained pub fn pop_capsule() -> [Field; N] {\n pop_capsule_oracle()\n}\n// docs:end:pop_capsule"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/protocol-contracts/src/artifacts/ContractInstanceDeployer.json b/yarn-project/protocol-contracts/src/artifacts/ContractInstanceDeployer.json deleted file mode 100644 index fe922ee1257..00000000000 --- a/yarn-project/protocol-contracts/src/artifacts/ContractInstanceDeployer.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"ContractInstanceDeployer","functions":[{"name":"deploy","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"contract_class_id":[{"end":41,"start":40}],"initialization_hash":[{"end":42,"start":41}],"inputs":[{"end":39,"start":0}],"public_keys_hash":[{"end":43,"start":42}],"salt":[{"end":40,"start":39}],"universal_deploy":[{"end":44,"start":43}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"salt","type":{"kind":"field"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"initialization_hash","type":{"kind":"field"},"visibility":"private"},{"name":"public_keys_hash","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::public_keys_hash::PublicKeysHash"},"visibility":"private"},{"name":"universal_deploy","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500]},"bytecode":"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","debug_symbols":"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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[5,6,7,8]},"bytecode":"H4sIAAAAAAAA/+2b227aQBCG18RJTJ24YGMMgQQIyUXvDA2nO16mfe3eV+orVM2YnTJsp2hRx1tWYqWIsb2e/5t/D1jICdSuRe9/gY6v9eeN+rNhn63+LP+tzQRzlXVyBp5wNjzhvPKEMxTkDBhO+Ax1DOsO1tytOlyPv9tWqChTlELBBLoi19URwIMboUU6oBfHUuDrcnNDklNwpcFDfQ0/ASfW1yhYrIus+pBzWGiDnEOdK3IOd0bUibQpwvUuoj2yXN73CQA1NHUu5I5JTK8NiXVhTTVey9f4VsuYlLtVjGNyrXPfkmP0Cj0U/OaYUe1A/zWJptJjhPGA9MV+6EeDjDG0e7Wf180j94XGfQnpc8PUPxau/9bgMecsjEFLx204xj2BsH0g9W1l2ErIG8vnndExCHVu5I9JTYm43/M15L9Th838VhqTOCE89+I85ayeOndj95Gwy+RdvIFXLcOrO8OrhPShDK0a/AuILubG4xajLefFcg3abQsv2gxP27EXbUZb0IsNaKcWXqQMT+rYi5TRlvNi9Rm0MwsvMoYnc+xFxmjLeTGvni06Fl50GJ6OYy86jLbgGqnmRW7hRc7w5I69yBltQS++gnbXwosuw9N17EWX0Rb04gtoFxZeFAxP4diLgtEW3Dur54uehRc9hqfn2Iseoy3oxRy0+xZe9BmevmMv+oy24BqptB8svHhgeB4ce4F6pzJ3PGQuPGTOzoA5MmIZ7WW1fw4svBgwPAPHXtDfck5hzs+AOTJiGe3lArSHFl4MGZ6hYy9Q71Tm1EPmzEPmrofMuYfMhYfM5zCfIyOW0V5Ve+ijhRePDM+jYy9Q71Tm1EPmgYfM2RkwR0Yso72qfpt7svDiieF5cuwF6p3K3POQuX0GzJERy2ivlqA9svBixPCMHHuBeqcy9z1kLjxkHnjInHnI3PWQOfeQ+bIG3TCnZ8AM773gOzA/auWZb2KDBz1TBqMyGGMSJ4QR+26V3PsqiVE7ak3E/diNjzlf8HhSq/Z8DXmn8jVVz/IvOhe+wzdlanrVcSDs5wvJGxAdPB+S+Dvpi/3QD1y3yA7vXD3r+PXIfSPjvoT0eWbqHwvXPzV4pgYzjMk3wlHH3LKZ1y21X8ufCE8N++AbfScXm82+Q/cYQZ5ZTXWW9B2+n0p2TU8Mr5qGVwnpQ/fo/7VvXpgvzH9jps8TTXKO8uC5hlEL/f+GCcnxC57ToyHuNQAA","debug_symbols":"ndpBattQGIXRvWhsiu9vSe/JWymlOIlTDMYOsVMopnuv3dIF5Mz0JN3ZNzq82/Cyf/r48f1wej1fhu3X23A8P++uh/PpfroN6y/V/769vO1OjxeX6+79Omw3rVbD/vTyeGq/V8Pr4bgftnV//rZ6jBYYbdYyioxKRhsZjTKaZDTLqMlIithIEaMUMUoRoxQxShGjFDFKEaMUMUoRoxQxShGTFDFJEZMUMUkRkxQxSRGTFDFJEZMUMUkRsxQxSxGzFDFLEbMUMUsRsxQxSxGzFDFLEU2KaFJEkyKaFNGkiCZFNCmiSRFNimhSRJciuhTRpYguRXQpoksRXYroUkSXIroUsUgRixSxSBGLFLFIEYsUsUgRixSxSBGLFJH1mlahVdFqQ6uRVhOtZlo1WnVaURuhNkJthNoItRFqI9RGqI1QG6E2Qm0UtVHURlEbRW0UtVHURlEbRW0QaIZEM0SaIdMMoWZINUOsGXLNEGyGZDNEmyHbDOFmSDdDvBnyzRBwhoQzRJwh4wwhZ0g5Q8wZcs4QdIakM0SdIesMYWdIO0PcGfLOEHiGxDNEniHzDKFnSD1D7BlyzxB8huQzRJ8h+wzhZ0g/Q/wZ8s8QgIYENESgIQMNIWhIQUMMGnLQEISGJDREoSELDWFoSENDHBry0BCIhkQ0RKIhEw2haEhFQywactEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRsoue5KJFLlrkokUuWuSiRS5a5KL1aRe9n37u3g+7p+P+cbf38fHj9Pz/qu/9eP319u/L/d8/"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys_hash","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::public_keys_hash::PublicKeysHash"}},{"name":"universal_deploy","type":{"kind":"boolean"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_parameters"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_abi"}]}},"file_map":{"107":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nfn emit_encrypted_note_log_oracle(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_note_log(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nfn emit_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\nunconstrained pub fn emit_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nfn compute_encrypted_note_log_oracle(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nfn compute_encrypted_event_log_oracle(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: GrumpkinPoint,\n _ivpk_m: GrumpkinPoint,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nfn emit_contract_class_unencrypted_log_private(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, event_selector, message, counter)\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"207":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::pedersen_hash, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\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 Serialize for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n pedersen_hash(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_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.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"209":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::pedersen_hash, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n pedersen_hash(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"267":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle(_msg: str, args: [Field]) {}\n\n/// NOTE: call this with a str msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format(msg: str, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"277":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr","source":"mod events;\n\ncontract ContractInstanceDeployer {\n use dep::aztec::protocol_types::{\n address::{AztecAddress, EthAddress, PublicKeysHash, PartialAddress},\n contract_class_id::ContractClassId, constants::DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n traits::Serialize\n };\n\n use crate::events::{instance_deployed::ContractInstanceDeployed};\n\n #[aztec(private)]\n fn deploy(\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys_hash: PublicKeysHash,\n universal_deploy: bool\n ) {\n // TODO(@spalladino): assert nullifier_exists silo(contract_class_id, ContractClassRegisterer)\n\n let deployer = if universal_deploy {\n AztecAddress::zero()\n } else {\n context.msg_sender()\n };\n\n let partial_address = PartialAddress::compute(contract_class_id, salt, initialization_hash, deployer);\n\n let address = AztecAddress::compute(public_keys_hash, partial_address);\n\n // Emit the address as a nullifier to be able to prove that this instance has been (not) deployed\n context.push_new_nullifier(address.to_field(), 0);\n\n // Broadcast the event\n let event = ContractInstanceDeployed { contract_class_id, address, public_keys_hash, initialization_hash, salt, deployer, version: 1 };\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_format(\"ContractInstanceDeployed: {}\", event_payload);\n context.emit_unencrypted_log(event_payload);\n }\n}\n"},"28":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"99":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/logs_traits.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n// TODO: this is awful but since we can't have a fn that maps [Field; N] -> [u8; 480 + N * 32]\n// (where N is the note pre-image size and 480 + N * 32 is the encryption output size)\n// The fns for LensForEncryptedLog are never used, it's just to tell the compiler what the lens are\n\n// The to_bytes fn for ToBytesForUnencryptedLog is used to allow us to hash some generic T\n\n// I could have omitted N from the trait, but wanted to keep it strictly for field arrs\n// TODO(1139): Once we enc inside the circuit, we will no longer need the oracle to return\n// anything, so we can remove this trait\ntrait LensForEncryptedLog {\n // N = note preimage input in fields\n // M = encryption output len in bytes (= 480 + N * 32)\n fn output_fields(self: [Field; N]) -> [Field; N];\n fn output_bytes(self: [Field; N]) -> [u8; M];\n}\n\nimpl LensForEncryptedLog<1, 512> for [Field; 1] {\n fn output_fields(self) -> [Field; 1] {[self[0]; 1]}\n fn output_bytes(self) -> [u8; 512] {[self[0] as u8; 512]}\n}\nimpl LensForEncryptedLog<2, 544> for [Field; 2] {\n fn output_fields(self) -> [Field; 2] {[self[0]; 2]}\n fn output_bytes(self) -> [u8; 544] {[self[0] as u8; 544]}\n}\nimpl LensForEncryptedLog<3, 576> for [Field; 3] {\n fn output_fields(self) -> [Field; 3] {[self[0]; 3]}\n fn output_bytes(self) -> [u8; 576] {[self[0] as u8; 576]}\n}\nimpl LensForEncryptedLog<4, 608> for [Field; 4] {\n fn output_fields(self) -> [Field; 4] {[self[0]; 4]}\n fn output_bytes(self) -> [u8; 608] {[self[0] as u8; 608]}\n\n}\nimpl LensForEncryptedLog<5, 640> for [Field; 5] {\n fn output_fields(self) -> [Field; 5] {[self[0]; 5]}\n fn output_bytes(self) -> [u8; 640] {[self[0] as u8; 640]}\n}\nimpl LensForEncryptedLog<6, 672> for [Field; 6] {\n fn output_fields(self) -> [Field; 6] {[self[0]; 6]}\n fn output_bytes(self) -> [u8; 672] {[self[0] as u8; 672]}\n\n}\n\n// This trait defines the length of the inputs in bytes to\n// the unencrypted log hash fn, where the log can be any type T\n// as long as the ACVM can convert to fields.\ntrait ToBytesForUnencryptedLog {\n // N = preimage input in bytes (32 * num fields or chars)\n // M = full log input in bytes ( = N + 40 = N + 32 for addr, + 4 for selector, + 4 for len)\n fn to_be_bytes_arr(self) -> [u8; N];\n fn output_bytes(self) -> [u8; M];\n}\n\nimpl ToBytesForUnencryptedLog<32, 72> for Field {\n fn to_be_bytes_arr(self) -> [u8; 32] {\n self.to_be_bytes(32).as_array()\n }\n fn output_bytes(self) -> [u8; 72] {[self as u8; 72]}\n}\n\nimpl ToBytesForUnencryptedLog<32, 72> for AztecAddress {\n fn to_be_bytes_arr(self) -> [u8; 32] {\n self.to_field().to_be_bytes(32).as_array()\n }\n fn output_bytes(self) -> [u8; 72] {[self.to_field() as u8; 72]}\n}\n\nfn arr_to_be_bytes_arr(fields: [Field; L]) -> [u8; N] {\n let mut bytes: [u8] = &[];\n for i in 0..L {\n // Note that bytes.append() results in bound error\n let to_add = fields[i].to_be_bytes(32);\n for j in 0..32 {\n bytes = bytes.push_back(to_add[j]);\n }\n }\n bytes.as_array()\n}\n\n// each character of a string is converted into a byte\n// then an ACVM field via the oracle => we recreate here\nfn str_to_be_bytes_arr(string: str) -> [u8; N] {\n let chars_bytes = string.as_bytes();\n let mut bytes: [u8] = &[];\n for i in 0..L {\n let to_add = (chars_bytes[i] as Field).to_be_bytes(32);\n for j in 0..32 {\n bytes = bytes.push_back(to_add[j]);\n }\n }\n bytes.as_array()\n}\n\nimpl ToBytesForUnencryptedLog<32, 72> for [Field; 1] {\n fn to_be_bytes_arr(self) -> [u8; 32] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 72] {\n [self[0] as u8; 72]\n }\n}\n\nimpl ToBytesForUnencryptedLog<64, 104> for [Field; 2] {\n fn to_be_bytes_arr(self) -> [u8; 64] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 104] {\n [self[0] as u8; 104]\n }\n}\n\nimpl ToBytesForUnencryptedLog<96, 136> for [Field; 3] {\n fn to_be_bytes_arr(self) -> [u8; 96] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 136] {\n [self[0] as u8; 136]\n }\n}\n\nimpl ToBytesForUnencryptedLog<128, 168> for [Field; 4] {\n fn to_be_bytes_arr(self) -> [u8; 128] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 168] {\n [self[0] as u8; 168]\n }\n}\n\nimpl ToBytesForUnencryptedLog<160, 200> for [Field; 5] {\n fn to_be_bytes_arr(self) -> [u8; 160] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 200] {\n [self[0] as u8; 200]\n }\n}\n\nimpl ToBytesForUnencryptedLog<192, 232> for [Field; 6] {\n fn to_be_bytes_arr(self) -> [u8; 192] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 232] {\n [self[0] as u8; 232]\n }\n}\n\nimpl ToBytesForUnencryptedLog<224, 264> for [Field; 7] {\n fn to_be_bytes_arr(self) -> [u8; 224] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 264] {\n [self[0] as u8; 264]\n }\n}\n\nimpl ToBytesForUnencryptedLog<256, 296> for [Field; 8] {\n fn to_be_bytes_arr(self) -> [u8; 256] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 296] {\n [self[0] as u8; 296]\n }\n}\n\nimpl ToBytesForUnencryptedLog<288, 328> for [Field; 9] {\n fn to_be_bytes_arr(self) -> [u8; 288] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 328] {\n [self[0] as u8; 328]\n }\n}\n\nimpl ToBytesForUnencryptedLog<320, 360> for [Field; 10] {\n fn to_be_bytes_arr(self) -> [u8; 320] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 360] {\n [self[0] as u8; 360]\n }\n}\n\nimpl ToBytesForUnencryptedLog<352, 392> for [Field; 11] {\n fn to_be_bytes_arr(self) -> [u8; 352] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 392] {\n [self[0] as u8; 392]\n }\n}\n\nimpl ToBytesForUnencryptedLog<384, 424> for [Field; 12] {\n fn to_be_bytes_arr(self) -> [u8; 384] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 424] {\n [self[0] as u8; 424]\n }\n}\n\nimpl ToBytesForUnencryptedLog<416, 456> for [Field; 13] {\n fn to_be_bytes_arr(self) -> [u8; 416] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 456] {\n [self[0] as u8; 456]\n }\n}\n\nimpl ToBytesForUnencryptedLog<448, 488> for [Field; 14] {\n fn to_be_bytes_arr(self) -> [u8; 448] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 488] {\n [self[0] as u8; 488]\n }\n}\n\nimpl ToBytesForUnencryptedLog<480, 520> for [Field; 15] {\n fn to_be_bytes_arr(self) -> [u8; 480] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 520] {\n [self[0] as u8; 520]\n }\n}\n\nimpl ToBytesForUnencryptedLog<512, 552> for [Field; 16] {\n fn to_be_bytes_arr(self) -> [u8; 512] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 552] {\n [self[0] as u8; 552]\n }\n}\n\nimpl ToBytesForUnencryptedLog<544, 584> for [Field; 17] {\n fn to_be_bytes_arr(self) -> [u8; 544] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 584] {\n [self[0] as u8; 584]\n }\n}\n\nimpl ToBytesForUnencryptedLog<576, 616> for [Field; 18] {\n fn to_be_bytes_arr(self) -> [u8; 576] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 616] {\n [self[0] as u8; 616]\n }\n}\n\nimpl ToBytesForUnencryptedLog<608, 648> for [Field; 19] {\n fn to_be_bytes_arr(self) -> [u8; 608] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 648] {\n [self[0] as u8; 648]\n }\n}\n\nimpl ToBytesForUnencryptedLog<640, 680> for [Field; 20] {\n fn to_be_bytes_arr(self) -> [u8; 640] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 680] {\n [self[0] as u8; 680]\n }\n}\n\nimpl ToBytesForUnencryptedLog<672, 712> for [Field; 21] {\n fn to_be_bytes_arr(self) -> [u8; 672] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 712] {\n [self[0] as u8; 712]\n }\n}\n\nimpl ToBytesForUnencryptedLog<704, 744> for [Field; 22] {\n fn to_be_bytes_arr(self) -> [u8; 704] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 744] {\n [self[0] as u8; 744]\n }\n}\n\nimpl ToBytesForUnencryptedLog<736, 776> for [Field; 23] {\n fn to_be_bytes_arr(self) -> [u8; 736] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 776] {\n [self[0] as u8; 776]\n }\n}\n\nimpl ToBytesForUnencryptedLog<768, 808> for [Field; 24] {\n fn to_be_bytes_arr(self) -> [u8; 768] {\n arr_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; 808] {\n [self[0] as u8; 808]\n }\n}\n\nimpl ToBytesForUnencryptedLog for str where [Field; L]: ToBytesForUnencryptedLog {\n fn to_be_bytes_arr(self) -> [u8; N] {\n str_to_be_bytes_arr(self)\n }\n fn output_bytes(self) -> [u8; M] {\n [0; M]\n }\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/protocol-contracts/src/artifacts/GasToken.json b/yarn-project/protocol-contracts/src/artifacts/GasToken.json deleted file mode 100644 index c2a0de996a9..00000000000 --- a/yarn-project/protocol-contracts/src/artifacts/GasToken.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"GasToken","functions":[{"name":"mint_public","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"amount":[{"end":5,"start":4}],"inputs":[{"end":3,"start":0}],"to":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"amount","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"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","debug_symbols":"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"},{"name":"_increase_public_balance","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(internal)"],"abi":{"error_types":{},"param_witnesses":{"amount":[{"end":5,"start":4}],"inputs":[{"end":3,"start":0}],"to":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"amount","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"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","debug_symbols":"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"},{"name":"deploy","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"artifact_hash":[{"end":40,"start":39}],"inputs":[{"end":39,"start":0}],"portal_address":[{"end":43,"start":42}],"private_functions_root":[{"end":41,"start":40}],"public_bytecode_commitment":[{"end":42,"start":41}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"artifact_hash","type":{"kind":"field"},"visibility":"private"},{"name":"private_functions_root","type":{"kind":"field"},"visibility":"private"},{"name":"public_bytecode_commitment","type":{"kind":"field"},"visibility":"private"},{"name":"portal_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499]},"bytecode":"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","debug_symbols":"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0mm+dCLVvw/RSKfZePrs+vTF9enF9emr69M316fvrk8/XJ9+ej79dP2sna6ftdP1s3a6ftZq5NJsPL3rZ+10/aydrp+10/Wzdnp+1srh+Vkrh+dnrRyen7VyeH7WyuH5WSuH52etHJ6ftXJ4ftbK4flZK4frZ21y/axNrp+1yfWzNrl+1qpk5+w7vetnbXL9rE2un7XJ9bM2uX7WZtfP2uz6WZtdP2uz62etSnbOvtO7ftZm18/a7PpZm10/a7PrZ21x/awtrp+1xfWztrh+1qrkFu07vetnbXH9rC2un7XF9bO2uH7Wiutnrbh+1orrZ624ftaqZEbtO73rZ624ftaK62etuH7WiutnbXX9rK2un7XV9bO2un7WqmRG7Tu962dtdf2sra6ftdX1s7a6ftY218/a5vpZ21w/a5vrZ61K7tO+07t+1jbXz9rm+lnbXD9rm+tnbXf9rO2un7Xd9bO2u37WqmQx7Tu962dtd/2s7a6ftd31s7a7fta6zo0S17lR4jo3SlznRonr3ChxnRslrnOjxHVulLjOjRLXuVHiOjdKXOdGievcKHGdGyWuc6PEdW6UuM6NEte5UeI6N0pc50ZV17lR1XVuVHWdG1Vd50bVw/OztrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo6jo3qrrOjaquc6Oq69yo5jo3qrnOjWquc6Oa69yodnh+1jbXuVHNdW5Uc50b1VznRjXXuVHNdW5Uc50b1VznRjXXuVHNdW5Uc50b1VznRjXXuVHNdW5U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dR1H9Ti+76eu60Cqx/F9P3VdR1I9ju/7qes6lOpxfN9PXdexVI/j+37qug6mehzf91PXdTTV4/iun7rJdzZV8p1NlXxnUyXf2VTpcP3UTb6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+c6mSr6zqZLvbKrkO5sq+86myr6zqbLvbKrsO5sqH66futl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTZd/ZVNl3NlX2nU2VfWdTFd/ZVMV3NlXxnU1VfGdTlcP1U7f4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9squI7m6r4zqYqvrOpiu9sKvGdTSW+s6nEdzaV+M6mksP1U1d8Z1OJ72wq8Z1NJb6zqcR3NpX4zqYS39lU4jubSnxnU4nvbCrxnU0lvrOpxHc2lfjOphLf2VTiO5tKfGdTie9sKvGdTSW+s6nEdzaV+M6mEt/ZVOI7m0p8Z1OJ72wq8Z1NJb6zqcR3NpX4zqYS39lU4jubSnxnU4nvbCrxnU0lvrOpxHc2lfjOphLf2VTiO5tKfGdTie9sKvGdTSW+s6nEdzaV+M6mEt/ZVOI7m0p8Z1OJ72wq8Z1NJb6zqcR3NpX4zqYS39lU4jubSnxnU4nvbCrxnU0lvrOpxHc2lfjOphLf2VTiO5tKfGdTie9sKvGdTSW+s6nEdzaV+M6mEt/ZVOI7m0p8Z1OJ72wq8Z1NJb6zqcR3NpX4zqYS39lU4jubSnxnU4nvbCrxnU0lvrOpxHc2lfjOphLf2VTiO5tKfGdTie9sKvGdTSW+s6nEdzaV+M6mEt/ZVNV3NlX1nU1VfWdTVd/ZVPVw/dStvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r6zqaqvrOpqu9squo7m6r5zqZqvrOpmu9squY7m6odrp+6zXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1M139lUzXc2VfOdTdV8Z1N139lU3Xc2VfedTdV9Z1P1w/VTt/vOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq7jubqvvOpuq+s6m672yq4TubavjOphq+s6mG72yqcbh+6g7f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNXxnUw3f2VTDdzbV8J1NNX1nU03f2VTTdzbV9J1NNQ/XT93pO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmr6zqabvbKrpO5tq+s6mmq6zqfLhOpvqcXzPT93H8T0/dR/H9/zUfRzf81P3cXzPT93H8T0/dR/H9/zUfRzf81P3cXzfT13X2VSP4/t+6rrOpnoc3/dT13U21eP4vp+6rrOpHsf3/dR1nU31OL7vp67rbKrH8X0/dV1nUz2O7/up6zqb6nF8309d19lUj+P7fuq6zqZ6HN/3U9d1NtXj+L6fuq6zqR7H9/3UdZ1N9Ti+76eu62yqx/F9P3VdZ1M9ju/7qes6m+pxfN9PXdfZVI/j+37qus6mehzf91PXdTbV4/i+n7qus6kex/f91HWdTfU4vu+nrutsqsfxfT91XWdTPY7v+6nrOpvqcXzfT13X2VSP4/t+6rrOpnoc3/dT13U21eP4vp+6rrOpHsf3/dR1nU31OL7vp67rbKrH8X0/dV1nUz2O7/up6zqb6nF8309d19lUj+P7fuq6zqZ6HN/3U9d1NtXj+L6fuq6zqR7H9/3UdZ1N9Ti+76eu62yqx/F9P3VdZ1M9ju/7qes6m+pxfN9PXdfZVI/j+37qus6mehzf91PXdTbV4/i+n7qus6kex/f91HWdTfU4vuunbvKdTZV8Z1Ml39lUyXc2VTpcP3WT72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpkq+s6mS72yq5DubKvnOpsq+s6my72yq7DubKvvOpsqH66du9p1NlX1nU2Xf2VTZdzZV9p1NlX1nU2Xf2VTZdzZV9p1NlX1nU2Xf2VTZdzZV9p1NlX1nU2Xf2VTZdzZV9p1NlX1nU2Xf2VTZdzZV9p1NlX1nU2Xf2VTZdzZVNp2OVCX/+myVi+NbvvcXjm/55ql1PI/f+uvjW755Fo5v+eZZOL7lm2fh+Jb1/v3xTefzLBzf8r3fUvv12Vby6+NbvvcXjm9Z7y8cX3wf3/JTd+H4lp+6C8e3/NRdOL7lp+7C8S0/de+PbzqfZ+H4vp+6pvN5Fo7v+6lrOp9n4fi+n7qm83kWju/7qWs6n2fh+D/+1L0c/P39s6PP9Pzw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njeo3PMGlXveoHLPG1TueYPKPW9QuecNKve8QeWeN6jc8waVe96gcs8bVO55g8o9b1C55w0q97xB5Z43qNzzBpV73qByzxtU7nmDyj1vULnnDSr3vEHlnjeo3PMGlXveoHLPG1TueYPKPW9QuecNKve8QeWeN6jc8waVe94iZWOn4zg+jj1vvvhXDpJzGWeJQz7O0ec//cpHfZ45H7N+fOX2Et6Y51fON1+5Sv712Srlde8DqQ/2/mu9j5Sbzt5/sfeBlCl7/8XeB9Lp7P0Xex/ItbD3X+y9sPewvQ/kaNn7L/Y+0O9K2Psv9j7Qb47Y+y/2nnM93N5zrhe19+P5heunr/u595F2+LD3X+w953q4vedcD7f3nOtF7X3/6H173Xth72F7z7kebu8518PtPed6uL3nXA+395zrRe19fR65ttd/pxtpnyR7/8Xec66H23vO9XB7z7kebu+FvYftPed6uL3nXA+395zr4faecz3c3nOuB9v7SLvN2fsv9p5zPdzec66H23vO9XB7L+w9bO8518PtPed6uL3nXA+395zr4faecz3Y3k/O9XB7z7kebu8518PtPed6uL0X9h6295zr4faecz3c3nOuh9t7zvVwe8+5Hmrv+8G5Hm7vOdfD7T3neri951wPt/fC3sP2nnM93N5zrofbe871YHuf6O+39v5RSTp7n5pm7+/2ZvREf4/be/p73N7T3+P2Xth72N7T3+P2nv4et/f097i959/t4Paef7cD2/vMuR5u7znXi9r7u92IPXOuh9t7zvVwey/sPWzvOdeL2vu7HWk9c66H23vO9XB7z7kebu8514PtfeFcD7f3nOtF7f3t3+kWzvVwe8+5Hm7vhb2H7T3neri951wPt/ec6+H2nnM93N5zrgfbe+FcD7f3nOvh9p5zPdzec66H23th72F7z7kebu8518PtPed6uL3nXA+395zrwfa+cq6H23vO9XB7z7kebu8518PtvbD3sL3nXA+395zr4faecz3c3nOuh9t7zvVge98418PtPed6uL3nXA+395zr4fZe2HvY3nOuh9t7zvVwe8+5Hm7vOdfD7T3nerC97/T3+r1X3W7R6cKtd0jYIeMdoqO13iH6Tusdoju03iF6OOsdotMy3qHBv3Ow3iH+NYL1DnGmYL1DnCns7dDtjrMh7JDxDnGmYL1DnClY7xBnCns7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X53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VBZ5/dYHnX13g+VcXeP7V9cC+fy/w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/usDzry7w/KsLPP/qAs+/MvD8KwPPvzLw/CsDz7+yB/b9a+D5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBp5/ZeD5Vwaef2Xg+VcGnn9l4PlXBTz/qoDnXxXw/KsCnn9VHtj3bwHPvyrg+VcFPP+qgOdfFfD8qwKef1XA868KeP5VAc+/KuD5VwU8/6qA518V8PyrAp5/VcDzrwp4/lUBz78q4PlXBTz/qoDnXxXw/KsCnn9VwPOvCnj+VQHPvyrg+VcFPP+qgOdfFfD8qwKef1XA868KeP5VAc+/KuD5VwU8/6qA518V8PyrAp5/VcDzrwp4/lUBz78q4PlXBTz/qoDnXxXw/KsCnn9VwPOvCnj+VQHPvyrg+VcFPP+qgOdfFfD8qwKef1XA868KeP5VAc+/KuD5VwU8/6qA518V8PyrAp5/VcDzrwp4/lUBz78q4PlXBTz/qoDnXxXw/KsCnn9VwPOvCnj+VQHPvyrg+VcFPP+qgOdfFfD8qwKef1XA868KeP5VAc+/KuD5VwU8/6qA518V8PyrAp5/VcDzrwp4/lUBz78q4PlXBTz/qoDnXxXw/KsCnn9VwPOvKnj+VQXPv6rg+VcVPP+qPrDv3wqef1XB868qeP5VBc+/quD5VxU8/6qC519V8PyrCp5/VcHzryp4/lUFz7+q4PlXFTz/qoLnX1Xw/KsKnn9VwfOvKnj+VQXPv6rg+VcVPP+qgudfVfD8qwqef1XB868qeP5VBc+/quD5VxU8/6qC519V8PyrCp5/VcHzryp4/lUFz7+q4PlXFTz/qoLnX1Xw/KsKnn9VwfOvKnj+VQXPv6rg+VcVPP+qgudfVfD8qwqef1XB868qeP5VBc+/quD5VxU8/6qC519V8PyrCp5/VcHzryp4/lUFz7+q4PlXFTz/qoLnX1Xw/KsKnn9VwfOvKnj+VQXPv6rg+VcVPP+qgudfVfD8qwqef1XB868qeP5VBc+/quD5VxU8/6qC519V8PyrCp5/VcHzryp4/lUFz7+q4PlXFTz/qoLnX1Xw/KsKnn9VwfOvKnj+VQXPv6rg+VcVPP+qgudfNfD8qwaef9XA868aeP5Ve2Dfvw08/6qB51818PyrBp5/1cDzrxp4/lUDz79q4PlXDTz/qoHnXzXw/KsGnn/VwPOvGnj+VQPPv2rg+VcNPP+qgedfNfD8qwaef9XA868aeP5VA8+/auD5Vw08/6qB51818PyrBp5/1cDzrxp4/lUDz79q4PlXDTz/qoHnXzXw/KsGnn/VwPOvGnj+VQPPv2rg+VcNPP+qgedfNfD8qwaef9XA868aeP5VA8+/auD5Vw08/6qB51818PyrBp5/1cDzrxp4/lUDz79q4PlXDTz/qoHnXzXw/KsGnn/VwPOvGnj+VQPPv2rg+VcNPP+qgedfNfD8qwaef9XA868aeP5VA8+/auD5Vw08/6qB51818PyrBp5/1cDzrxp4/lUDz79q4PlXDTz/qoHnXzXw/KsGnn/VwPOvGnj+VQPPv2rg+VcNPP+qgedfNfD8qwaef9XA868aeP5VA8+/6uD5Vx08/6qD51918Pyr/sC+fzt4/lUHz7/q4PlXHTz/qoPnX3Xw/KsOnn/VwfOvOnj+VQfPv+rg+VcdPP+qg+dfdfD8qw6ef9XB8686eP5VB8+/6uD5Vx08/6qD51918PyrDp5/1cHzrzp4/lUHz7/q4PlXHTz/qoPnX3Xw/KsOnn/VwfOvOnj+VQfPv+rg+VcdPP+qg+dfdfD8qw6ef9XB8686eP5VB8+/6uD5Vx08/6qD51918PyrDp5/1cHzrzp4/lUHz7/q4PlXHTz/qoPnX3Xw/KsOnn/VwfOvOnj+VQfPv+rg+VcdPP+qg+dfdfD8qw6ef9XB8686eP5VB8+/6uD5Vx08/6qD51918PyrDp5/1cHzrzp4/lUHz7/q4PlXHTz/qoPnX3Xw/KsOnn/VwfOvOnj+VQfPv+rg+VcdPP+qg+dfdfD8qw6ef9XB8686eP5VB8+/6uD5Vx08/6qD51918PyrDp5/NcDzrwZ4/tUAz78a4PlX44F9/w7w/KsBnn81wPOvBnj+1QDPvxrg+VcDPP9qgOdfDfD8qwGefzXA868GeP7VAM+/GuD5VwM8/2qA518N8PyrAZ5/NcDzrwZ4/tUAz78a4PlXAzz/aoDnXw3w/KsBnn81wPOvBnj+1QDPvxrg+VcDPP9qgOdfDfD8qwGefzXA868GeP7VAM+/GuD5VwM8/2qA518N8PyrAZ5/NcDzrwZ4/tUAz78a4PlXAzz/aoDnXw3w/KsBnn81wPOvBnj+1QDPvxrg+VcDPP9qgOdfDfD8qwGefzXA868GeP7VAM+/GuD5VwM8/2qA518N8PyrAZ5/NcDzrwZ4/tUAz78a4PlXAzz/aoDnXw3w/KsBnn81wPOvBnj+1QDPvxrg+VcDPP9qgOdfDfD8qwGefzXA868GeP7VAM+/GuD5VwM8/2qA518N8PyrAZ5/NcDzrwZ4/tUAz78a4PlXAzv/6nxg5189zw99/z7PD33/Ps8Pff8+zw99/z7PD33/Ps8Pff8+zw99/z7PD33/Ps8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc8Pfv9i5189zw9+/2LnXz3PD37/YudfPc+Pff8e4PlXB3j+1QGef3WA518dD+z79wDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrAzz/6gDPvzrA868O8PyrEzz/6gTPvzrB869O8Pyr84F9/57g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX53g+VcneP7VCZ5/dYLnX52h85eK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Psjy2wdZfvsgy28fZPntgyu//Xpw5bc/66XSV896qfTVs14qffWs18jqpdJXz3qp9NWzXip99ayXSl896yXTV1z57c96yfQVV377s14yfcWV3/6sl0xfceW3P+sl01dc+e3Pesn0FVd++7NeMn3Fld/+rJdMX3Hltz/rJdNXXPntz3rJ9BVXfvuzXjJ9xZXf/qyXTF9x5bc/6yXTV1z57c96yfQVV377s14yfcWV3/6sl0xfceW3P+sl01dc+e3Pesn0FVd++7NeMn3Fld/+rJdMX3Hltz/rJdNXXPntz3rJ9BVXfvuzXjJ9xZXf/qyXTF9x5bc/6yXTV1z57c96yfQVV377s14yfcWV3/6sl0xfceW3P+sl01dc+e3Pesn0FVd++7NeMn3Fld/+rJdMX3Hltz/rJdNXXPntz3rJ9BVXfvuzXjJ9xZXf/qyXTF9x5bc/6yXTV1z57c96yfQVV377s14yfcWV3/6sl0xfceW3P+sl01dc+e3Pesn0FVd++7NeMn3Fld/+rJdMX3Hltz/rJdNXXPntz3q59NVBlt9+kOW3H2T57QdZfvvxMLJ6ufTVQZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e0HWX77QZbffpDltx9k+e1Honzv0c7Xi9uv7/xVbaJ075Vq8zybR/968X/+899Wm+fJvFJtnufySrV5nsor1ebxvCvV5nG8K9Umum8/V5so7Xml2jxed6XaPE53pVoqLZUo5XmlWlQt9a4AVR+9KwiteYq9nPSoo3/y3eV1jOe0aPIvLrTmca82tObxrjZ2ArN7taE1j3u1oTWPe7WhNY97tUZVbWjN415taH3kXi2VloqduOxeLZWWip227F4tlZaKnbTsXi2VloqdsuxeLZWWip2w7F4tlZaKna7sXi2TljpjJyu7V8ukpc7Yqcru1TJpqfNhVNUyaakzdpqye7VMWuqMnaTsXi2VloqdouxeLZWWip2g7F4tlZaKnZ7sXi2V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"},{"name":"check_balance","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(view)"],"abi":{"error_types":{},"param_witnesses":{"fee_limit":[{"end":4,"start":3}],"inputs":[{"end":3,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"fee_limit","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"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","debug_symbols":"5ZztbpTJFYTvxb9R1Od0VX/srURRxO6yERIyq4WNFKG995jNfBh5hKmTiTMlfoGh233aVUzZNS/Pp7uf3/z4+z/+/vb+l/cf7n7466e7d+9/ev3x7fv7h48+3bW/RPz5px9+fX3/+Q8+fHz928e7H9qruzf3Pz/8+seru1/evntz90NO/PG3V583pLqhqxugbqC6YagbprphqRu2uCGbukFVOlWlU1U6VaVTVTpVpVNVOlWlU1W6q0p3VemuKt1VpbuqdFeV7qrSXVW6q0p3VWmoSkNVGqrSUJWGqjRUpaEqDVVpqEpDVZqq0lSVpqo0VaWpKk1VaapKU1WaqtJUlR6q0kNVeqhKD1XpoSo9VKWHqvRQlR6q0kNVeqpKT1XpqSo9VaWnqvRUlZ6q0lNVeqpKT1XppSq9VKWXqvRSlV6q0ktVeqlKL1XppSq9VKW3qvRWld6q0ltVeqtKb1XprSq9VaW3qvRWlY7W5B1yd9Lk8qTJ7UmT65Mm9ydNLlCa3KA0uUJpsuYha673ZXphpjdmemWmd2Z6aaa3ZnptJvdmIRdnkXpHKmsud2chl2cht2ch12ch92chF2ghN2ghV2ghd2jR9WJc1lyu0ULu0UIu0kJu0kKu0kLu0kIu00Ju00Ku0wL6uyGy5nKjFnKlFnKnFnKpFnKrFnKtFnKvFnKxFnKzFnK1FnK3FnK5FnK7FnK9FnK/FnLBFnLDFnLFFnLHFnLJFkN/31PWXO7ZQi7aQm7aQq7aQu7aQi7bQm7bQq7bQu7bYupvdsuay5VbyJ1byKVbyK1byLVbyL1byMVbyM1byNVbLP0JB1lzuX0LuX4LuX8LuYALuYELuYILuYMLuYQLuYWLrT/Woj/XIj/YIvdwKfdwKfdwKfdwKfdwKfdwKfdwKfdwKfdwGfrDTLLmcg+Xcg+Xcg+Xcg+Xcg+Xcg+Xcg+X+vNr+gNshSfYZM31Z9j0h9j0p9j0x9j059j0B9nkHi7lHi7lHi67/tiirLncw6Xcw6Xcw6Xcw6Xcw6Xcw6Xcw6Xcw6XcwyX0Z1VlzeUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLuUeLof+VLqsudzDpdzDpdzDpdzDpdzDpdzDpdzDpdzDpdzD5dT/K4KsudzDpdzDpdzD5eUejn0fNxGxv9j36slq5OqH1ejtvBqXFk+uw9q5cf7EeZwnb2we3Ng8vLF5xo3NM68wT891mqePx/McDlkvcci+xiGDp0NmPD3kcokrH4LTIatdOCRf4pCLwUJwnA6Z45lDGCcj8qGtPq0e88LigXb81AP5xeLDRJdfOh5ucp5oPjPR7keT7LVOayPbhbUP77Af1j50wefPi7z0eYnj4j3ao39HYx2np/X0w3r6aT39sp5+G0/fL7/dYjN9Wk/frad3TqvenNOqN+e06s05rXpzTqverNPq8lvLNtNbZ21cIWujjePPS/HnzF+d/3INdekn/Dj+hD8efU16HCeH7eS0nXzYTj5tJ1+2k2/XybPZTh62k9smUXbbyW0zNG0zNG0zNG0zNG0zNG0ztNtmaLfN0G6bod02Q7tthnbbDO22GdptM7TbZmi3zVDYZihsMxS2GQrbDIVthsI2Q2GbobDNUNhmKGwzlLYZStsMpW2G0jZDaZuhtM1Q2mYobTOUthlK2wwdthk6bDN02GbosM3QYZuhwzZDh22GDtsMHbYZOmwzdNpm6LTN0GmbodM2Q6dthk7bDJ22GTptM3TaZui0zdBlm6HLNkOXbYYu2wxdthm6bDN02Wboss3QZZuhyzZDt22GbtsM3bYZum0z9Brcnf/T5LYZum0zdNtm6LbN0O2aoWiuGYrmmqForhmK5pqhaK4ZiuaaoWiuGYrmmqForhmKZpuhYZuhYZuhtrQfhG2G2nKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspgi2nCLacIthyimDLKYItpwi2nCLYcopgyymCLacItpwi2HKKYMspoi2niLacItpyimjLKWJzzVDacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niLacItpyimjLKaItp4i2nCLacopoyymiLaeItpwi2nKKaMspoi2niN/AKVp4bvLo58kHvjjl6eo+87AY0c9r276wNsc8rO0NX6w9TD+tp1/W02/j6cc3cItuefr4305/OCVf5JR+jVMmTqfs8YwSMebx5fPht/v8uTmOM+EGZ+INzjRucKZ5gzOtG5xpv/xMp29GYqz2xUxPVyPX8ZUDvZ1vgMvf5qzjtzn70dB5uGu07+iu+R3dtX9Hd8V3dFfe+F17rtNd+3h818MFhvsF5q1fYPB0gRkXLrBu/gI4XeDR6vMFns/n/VynMFYeDxmrr6eHfAM25wqHxEscktc4BDwdMi5o8g3cmCscgpc4hFfRpJ8Pya+/4vcYx29Ie8zz4n4caL30QJnHH8h7djwZCFf5Cu3jS8LYjU9l+Ib/0vf8ITvydEjOC4fMq9yknQ/Z/53WbC890DNaj2t8hTbPWq/+9YGyn5yane3pQPvGBpqyUQ/7VnHfru1brbgvivuyuK8X96G4j8V9Rd3XLO4r+mUV/bKLftlFv+yiX3bRL7vol130yy76ZRf9sot+2TW/zNaK+6K4L4v7enEfivtY3DeK+2Zx3yruK/olin6Jol+i6Jco+iWKfomiX6Lolyj6JYp+iaJfsuiXLPoli37Jol+y6Jcs+iWLfsmiX7Lolyz6pRf90ot+6UW/9KJfetEvveiXXvRLL/qlF/3Si35B0S8o+gVFv6DoFxT9gqJfUPQLin5B0S8o+oVFv7DoFxb9wqJfWPQLi35h0S8s+oVFv7Dol1H0yyj6ZRT9Mop+GUW/jKJfRtEvo+iXUfTLKPplFv0yi36ZRb/Mol9m0S+z6JdiTztn0S/FfncW+91Z6HcfPvrn69/evv7x3ZsPD3s+/+Xv9z99fPv+/vDhx3/9+p+/eVj7bw=="},{"name":"claim","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"amount":[{"end":41,"start":40}],"inputs":[{"end":39,"start":0}],"secret":[{"end":42,"start":41}],"to":[{"end":40,"start":39}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"amount","type":{"kind":"field"},"visibility":"private"},{"name":"secret","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498]},"bytecode":"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","debug_symbols":"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"},{"name":"balance_of_public","is_unconstrained":true,"custom_attributes":["aztec(public)","aztec(view)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":3,"start":0}],"owner":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"owner","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"field"},"visibility":"public"},"return_witnesses":[4]},"bytecode":"H4sIAAAAAAAC/83YW2/rRBAH8E0apyU0ztVp7o2buLm7PSUgjqCvCIlHJB5B3IXETVyE+Ip8Kc7O7M7+k/rI1UpH1onkxhnPb2d2nbTZLtSZUheB0o+Jso+KjqhQVfVTmY5HJWf6hI5SqEoSSugiKXOm4+ossUBV+ExXUMGN/nGZKDPCReV9ulChsRaqROg8oDGptjrXR3VBjakP9VFLpDFd58ye1uiHySH2zgJX9ICf6Od3TfKFTb5MyiaoLsEuTU7NnDL9G2GhdaaUUAetg9Yt/RVhoSFTSghBQ9DQ0m8RFtpgSgkN0AZow9K/EBbaZEoJTdAmaNPSnxAW2mJKCS3QFmjL0t8QFtpmSglt0DZo2zxnST2f6GozhIV2mFJCB7QD2rH0G4SFdplSQhe0C9q19GuEhUZMKSECjUAjS39GWGiPKSX0QHugvezy9Fw1T1L3J2E+0XP6HmGhV0wp4Qr0CvTK0q8QFtpnSgl90D5oP9to373Bcoiu9gPCQgdMKWEAOgAdZKsNXIM5RFf7HWGhQ6aUMAQdgg6z1Ybud4wn6fiTyJ80/UnoT9qFVOn6k3ohc2kV0tgzd1+/o/9FWOiIKSWMQEego2y1kVsGT9LxJ71CGgv9SdefRIWQZ1ZMvwu+Q1jomCkljEHHoONstbFb7Byiq/2JsNAJU0qYgE5AJ9lqE/fFx5N0C6nS9CdhIXOJCiHDfBJTfIrv/i8ZKnzhl2/4vFFJZBegR6woPKZcanpa6trgiTmVK7S5uMbGIa7yaWyTbuzGZF7iIeYUooPbHJlXMkeKzRNJm6GauVA2QTVHR3PlihGJ9eVS86itJw1/ULKzfWlyeI7J0YZNJjE93RdVMb3pQgXq9MF3gTd6XMnekIodpsZ9T8wHVAa0t2Fq25m+jgT55KQlmcz1R5WjnIq5M0/7pcfM9EvLOQv4tGZfBgsup27MTjKwNyw2RT6m94xbsTlWLDldsQXaS/SAn+vnW5M8t8lLnuQtnYEtTU5iTuk5Sxr+pJVPdIN/ICx0xZQSVqAr0FW22sr95sghutqPCAtdM6WENegadJ2ttnZ/gjxJ25+M/UnkT1r+pPHGp6/vzz3CQjdMKWEDugHdZKttXDVPUvcnLX/SKGQuXX8SFUKeWTH9LvgHYaFbppSwBd2CbrPVtu5T6klG+UQ3mCIsdMeUEnagO9BdttrO3VpPcutPGv6k5U+W/qTrT1b+pFfIfRn7k6iQ+9IoZC7PrJj+3PyCsNA9U0rYg+5B99lqe/e/Jk8y9icNf9J+Wxvr+pPl27pi/ULm0vInuzc+ff25eYGw0JQpJaSgKWiarZa6P1E5hHZ05c+w73hkqLDZkN1F6jYfiRnxeBd7x6XuTkvdG5yaU7lCG5t7bFoezC72wSa9Z3exB7OLPVCIDm7zU/NK5kjmkEjaC1QzF8omqA7o6KBcMSIPMz3o41FbTxrmXSzN9hFD3Lm1CbA2d6d7snhZtvs83thltpaxvRofDVt1m05eRZ7vF64J+zgzZTktTeztVLXQ7Sv1iMH/Tx5kTAbR4JxPY/vSFPrytFDI95bHC5FdclUCW8mmHzWoUgOorZTfILE0WXY8NWHpiFfD/XskTkSV53Ta/4+OV5aU6Xn3HQAA","debug_symbols":"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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[5,6,7,8]},"bytecode":"H4sIAAAAAAAA/+2b227aQBCG18RJTJ24YGMMgQQIyUXvDA2nO16mfe3eV+orVM2YnTJsp2hRx1tWYqWIsb2e/5t/D1jICdSuRe9/gY6v9eeN+rNhn63+LP+tzQRzlXVyBp5wNjzhvPKEMxTkDBhO+Ax1DOsO1tytOlyPv9tWqChTlELBBLoi19URwIMboUU6oBfHUuDrcnNDklNwpcFDfQ0/ASfW1yhYrIus+pBzWGiDnEOdK3IOd0bUibQpwvUuoj2yXN73CQA1NHUu5I5JTK8NiXVhTTVey9f4VsuYlLtVjGNyrXPfkmP0Cj0U/OaYUe1A/zWJptJjhPGA9MV+6EeDjDG0e7Wf180j94XGfQnpc8PUPxau/9bgMecsjEFLx204xj2BsH0g9W1l2ErIG8vnndExCHVu5I9JTYm43/M15L9Th838VhqTOCE89+I85ayeOndj95Gwy+RdvIFXLcOrO8OrhPShDK0a/AuILubG4xajLefFcg3abQsv2gxP27EXbUZb0IsNaKcWXqQMT+rYi5TRlvNi9Rm0MwsvMoYnc+xFxmjLeTGvni06Fl50GJ6OYy86jLbgGqnmRW7hRc7w5I69yBltQS++gnbXwosuw9N17EWX0Rb04gtoFxZeFAxP4diLgtEW3Dur54uehRc9hqfn2Iseoy3oxRy0+xZe9BmevmMv+oy24BqptB8svHhgeB4ce4F6pzJ3PGQuPGTOzoA5MmIZ7WW1fw4svBgwPAPHXtDfck5hzs+AOTJiGe3lArSHFl4MGZ6hYy9Q71Tm1EPmzEPmrofMuYfMhYfM5zCfIyOW0V5Ve+ijhRePDM+jYy9Q71Tm1EPmgYfM2RkwR0Yso72qfpt7svDiieF5cuwF6p3K3POQuX0GzJERy2ivlqA9svBixPCMHHuBeqcy9z1kLjxkHnjInHnI3PWQOfeQ+bIG3TCnZ8AM773gOzA/auWZb2KDBz1TBqMyGGMSJ4QR+26V3PsqiVE7ak3E/diNjzlf8HhSq/Z8DXmn8jVVz/IvOhe+wzdlanrVcSDs5wvJGxAdPB+S+Dvpi/3QD1y3yA7vXD3r+PXIfSPjvoT0eWbqHwvXPzV4pgYzjMk3wlHH3LKZ1y21X8ufCE8N++AbfScXm82+Q/cYQZ5ZTXWW9B2+n0p2TU8Mr5qGVwnpQ/fo/7VvXpgvzH9jps8TTXKO8uC5hlEL/f+GCcnxC57ToyHuNQAA","debug_symbols":"ndpBattQGIXRvWhsiu/vJz3JWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq82/Cyf/r48f1wej1fhu3X23A8P++uh/PpfroN6y81/3l7edudHi8u1937ddhueq2G/enl8dQ/V8Pr4bgfttXb57fVY7TAaLOWUWRUMtrIqMlolNEkoy4jKWIjRTQpokkRTYpoUkSTIpoU0aSIJkU0KaJJEaMUMUoRoxQxShGjFDFKEaMUMUoRoxQxShGTFDFJEZMUMUkRkxQxSRGTFDFJEZMUMUkRXYroUkSXIroU0aWILkV0KaJLEV2K6FLELEXMUsQsRcxSxCxFzFLELEXMUsQsRcxSxCJFLFLEIkUsUsQiRSxSxCJFLFLEIkUsUkTWa1qFVkWrDa0arUZaTbTqtJppRW2E2gi1EWoj1EaojVAboTZCbYTaCLVR1EZRG0VtFLVR1EZRG0VtFLVBoBkSzRBphkwzhJoh1QyxZsg1Q7AZks0QbYZsM4SbId0M8WbIN0PAGRLOEHGGjDOEnCHlDDFnyDlD0BmSzhB1hqwzhJ0h7QxxZ8g7Q+AZEs8QeYbMM4SeIfUMsWfIPUPwGZLPEH2G7DOEnyH9DPFnyD9DABoS0BCBhgw0hKAhBQ0xaMhBQxAaktAQhYYsNIShIQ0NcWjIQ0MgGhLREImGTDSEoiEVDbFoyEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFyy56kosWuWiRixa5aJGLFrlokYvWf7vo/fRz937YPR33j7u9j48fp+d/V33vx+uvt79f7v/+Bg=="},{"name":"claim_public","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"amount":[{"end":5,"start":4}],"inputs":[{"end":3,"start":0}],"leaf_index":[{"end":7,"start":6}],"secret":[{"end":6,"start":5}],"to":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"amount","type":{"kind":"field"},"visibility":"private"},{"name":"secret","type":{"kind":"field"},"visibility":"private"},{"name":"leaf_index","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"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","debug_symbols":"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"},{"name":"set_portal","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"inputs":[{"end":3,"start":0}],"portal_address":[{"end":4,"start":3}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"portal_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"H4sIAAAAAAAC/72WS47TQBCGO8kkk2Rsh8k7cV523PFIbNgwG8QBWHMCEEggAQsECzgKd+AicwhuwB6JxdBV3dW/Hc9EsoTGUift6v+rqq5qyZ2pllLdM2WetXKPeeuqSHXMX5PGcyUzM6HRiFRDTJoWibIzY1ct7QB1xjMTQbVT83PxVEmwTLVV+SF9h6PaUVWQ73OrOKeRUe5s7WvRmFRabtq3cUTTy5vONb11C7BFeg7pZd7DBURBh6cXNDUjTGg9ptl1Axm2XDFIFmpaCMmrzdk5L+3q1jyksgoSh0Zxe/RQUKug2AF8FEKryCoiGk3vjl7Do1flX4My1z3nac/tIuJNPqYZNlltCz29yJO9NnZLjtjJE5rd6+TZj5tmuU79QuXv6m1Q7m3Eve1XextYJJK9YiVEQ6kSA06TTvrgvoYOuKEDctX2zejB656bfkeyYTnZAQ6YaXbjpfl/hEgkvtRNa1SXwC6tJrRTRt/BLOiQURIMgQ6BDh36CmZBR4ySYAR0BHTk0M8wCzpmlARjoGOgY4e+hVnQCaMkmACdAJ049A3Mgk4ZJcEU6BTo1KEvYBZ0xigJZkBnQGcO/QizoHNGSTAHOgc6t/+1ERPtK8yCLhglwQLoAujCoV9gFnTJKAmWQJdAl9VEl/4InEBMtNcwCxozSoIYaAw0dugHmAVdMUqCFdAV0FU10ZU/NScQE20Hs6BrRkmwBroGuq5GW/uy1ETi+sioPjJ+kL1MTiOm2N9gFnTDKAk2QDdAN9VoG9+fE4iJ9h5mQbeMkmALdAt069BPMAu6Y5QEO6A7oLtqojsfrSayeJAow/pI/N8TM8X+DrOgCaMkSIAmQJNqtMSf9JrI5DTCn/2/+IhnDCp8ueVTzUItn3Pj8axwgUk5VFoOtbdwYqeyQtM9bgDaXkO0WzmYghGbN9hFTiYaHP2PfZM9EpNrkWWIZheabjc5MsqVD0aIpg78LqR1lPC1XGAzuEh9bQLUJj26jWF7aeW6+OsnubY3vQQNCZybkPNO7NnxdzWrSV06aaHGPp0U6ezL6YRX7iZob/tY0B7eA9ZlOMuKK1IpEh0407ZtmsgPqDD1TRdq74NpBMvLwQ5X7tzwW4c3N7+h8Q95DkDBpw0AAA==","debug_symbols":"5Z3dahpRGEXfZa6lnG+f/7xKKcUkpgjBhMQUSsi7V6uOlViEdLI4w9xl9JvZ+0TWGZQF89rdLq5ffnxfru4enrurr6/d/cPNfL18WG2OXjv3xezPq8+P89X2hef1/GndXXnzbtYtVrfbP1N6m3V3y/tFd6Uc3mbvpuWU9tNyMffT5nVm2mfth4P546yr566c8qGGCyez32bb8n7M5eOYy6cxl89jLl/GXL6OuLzc55bfhRgRoiFC+v+WXKkXPoZcDo1yjccru7Qv5FsrFForFFsrlForlFsrVForVPFCyfeF0kmh97PV1/1sTfXCbI6lv+5xp9Z+e/NuIuvURNYZJrLONJF15omss0xknRO5r4SJ3FeCTWSdE7l/hsvfrvLpOnenxY+dlj52Wv7Yaf/YY0v/VV7+0mdoUYcfCSzGyP2iEN2Yy9uYy2vM5f2Yy4cxl4+fW34XkoiQPERIPoaUdCakECEVCEmOCDEiRESIHzik2pmQQIREIiQRIZkIKURIBUKyI0KMCBERQhCfCeIzQXwmiM8E8ZkgPhPEF4L4QhBfCOILQXwhiC8E8YUgvhDEF4L4QhBfCeIrQXwliK8E8ZUgvhLEV4L4ShBfCeIrQbw5h6QYkiIkxSMpAUmJSEpCUjKSUpAUhH1D2DeEfUPYN4R9Q9g3hH1D2DeEfUPYN4R9IewLYV8I+0LYF8K+EPaFsC+EfSHsC2HfI+x7hH2PsO8R9j3CvkfY9wj7HmHfI+x7hP2AsB8Q9gPCfkDYDwj7AWE/IOwHhP2AsB8Q9iPCfkTYjwj7EWE/IuxHhP2IsB8R9iPCfkTYTwj7CWE/Iewjzp4h0p4h1p4h2p4h3p4h4p4h5p4h6p4h7p4h8p4h9p4h+p4h/p4hAp8hBp8hCp8hDp8hEp8hFp8hGp8hHp8hIp8hJp8hKp8hLp8hMp8hNp8hOp8hPp8hQp8hRp8hSp8hTp8hUp8hVp8hWp8hXp8Qr0+I1yfE6xPi9ckFJCUiKQlJyUhKQVIQ9hGvT4jXJ8TrE+L1CfH6hHh9Qrw+IV6fEK9PiNcnxOsT4vUJ8fqEeH1CvD4hXp8Qr0+I1yfE6xPi9Qnx+oR4fUK8PiFenxCvT4jXJ8TrE+L1CfH6hHh9Qrw+IV6fEK9PiNcnxOsT4vUJ8fqEeH1CvD4hXp8Qr0+DeH05hkNKruUk5f106h/bkNJfs/3zJwZxAIdt5JtrFJprFJtrlJprVJprVFtrNIjROGyj5nbI1NwOmZrbIVNzO2RqbodMze2Qg1igJR6mrTr/v41Kc41qa40GMVGHbWTNNVJzjXxzjUJzjWJzjVJzjZrbs3Nze3Zubs8uLe3Zm6Of86fl/Pp+sX1g7/bNl9XN4fm9m8P1r8fdO5vZ3w=="}],"outputs":{"globals":{"storage":[{"fields":[{"name":"balances","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"1"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"portal_address","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"2"}},{"name":"typ","value":{"kind":"string","value":"SharedImmutable"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"fee_limit","type":{"kind":"field"}}],"kind":"struct","path":"GasToken::check_balance_parameters"}}],"kind":"struct","path":"GasToken::check_balance_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"amount","type":{"kind":"field"}}],"kind":"struct","path":"GasToken::mint_public_parameters"}}],"kind":"struct","path":"GasToken::mint_public_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"owner","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}}],"kind":"struct","path":"GasToken::balance_of_public_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"GasToken::balance_of_public_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"amount","type":{"kind":"field"}},{"name":"secret","type":{"kind":"field"}}],"kind":"struct","path":"GasToken::claim_parameters"}}],"kind":"struct","path":"GasToken::claim_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"amount","type":{"kind":"field"}},{"name":"secret","type":{"kind":"field"}},{"name":"leaf_index","type":{"kind":"field"}}],"kind":"struct","path":"GasToken::claim_public_parameters"}}],"kind":"struct","path":"GasToken::claim_public_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"to","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"amount","type":{"kind":"field"}}],"kind":"struct","path":"GasToken::_increase_public_balance_parameters"}}],"kind":"struct","path":"GasToken::_increase_public_balance_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"portal_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}}],"kind":"struct","path":"GasToken::set_portal_parameters"}}],"kind":"struct","path":"GasToken::set_portal_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"artifact_hash","type":{"kind":"field"}},{"name":"private_functions_root","type":{"kind":"field"}},{"name":"public_bytecode_commitment","type":{"kind":"field"}},{"name":"portal_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}}],"kind":"struct","path":"GasToken::deploy_parameters"}}],"kind":"struct","path":"GasToken::deploy_abi"}]}},"file_map":{"100":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/arguments.nr","source":"#[oracle(packArgumentsArray)]\nfn pack_arguments_array_oracle(_args: [Field; N]) -> Field {}\n\n#[oracle(packArguments)]\nfn pack_arguments_oracle(_args: [Field]) -> Field {}\n\n/// - Pack arguments (array version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments_array(args: [Field; N]) -> Field {\n pack_arguments_array_oracle(args)\n}\n\n/// - Pack arguments (slice version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments(args: [Field]) -> Field {\n pack_arguments_oracle(args)\n}\n\n"},"101":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nfn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"102":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_l1_to_l2_membership_witness.nr","source":"use dep::protocol_types::{address::AztecAddress};\n\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: u64 = 17;\n\n// Obtains membership witness (index and sibling path) for a message in the L1 to L2 message tree.\n#[oracle(getL1ToL2MembershipWitness)]\nfn get_l1_to_l2_membership_witness_oracle(\n _contract_address: AztecAddress,\n _message_hash: Field,\n _secret: Field\n) -> [Field; L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH] {}\n\nunconstrained pub fn get_l1_to_l2_membership_witness(\n contract_address: AztecAddress,\n message_hash: Field,\n secret: Field\n) -> [Field; L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH] {\n get_l1_to_l2_membership_witness_oracle(contract_address, message_hash, secret)\n}\n"},"109":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n"},"110":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"111":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nfn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nfn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"113":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, hash::pedersen_hash,\n public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage, traits::{Hash, Serialize},\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nfn get_public_data_witness_oracle(\n _block_number: u32,\n _leaf_slot: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, leaf_slot: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, leaf_slot);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"120":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl Storage for Map {}\n\nimpl Map {\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 { context, storage_slot, state_var_constructor }\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 = derive_storage_slot_in_map(self.storage_slot, key);\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"},"131":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl Storage for PublicMutable {}\n\nimpl PublicMutable {\n // docs:start:public_mutable_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 ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl PublicMutable {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T where T: Deserialize {\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) where T: Serialize {\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl PublicMutable {\n pub fn read(self) -> T where T: Deserialize {\n // This looks the same as the &mut PublicContext impl, but is actually very different. In public execution the\n // storage read oracle gets transpiled to SLOAD opcodes, whereas in unconstrained execution the PXE returns\n // historical data.\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n}\n"},"132":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_immutable.nr","source":"use crate::{\n context::{PrivateContext, PublicContext, UnconstrainedContext},\n oracle::{storage::{storage_read, storage_write}}, state_vars::storage::Storage\n};\nuse dep::protocol_types::{constants::INITIALIZATION_SLOT_SEPARATOR, traits::{Deserialize, Serialize}};\n\n// Just like PublicImmutable but with the ability to read from private functions.\nstruct SharedImmutable{\n context: Context,\n storage_slot: Field,\n}\n\nimpl Storage for SharedImmutable {}\n\nimpl SharedImmutable {\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 ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl SharedImmutable {\n // Intended to be only called once. \n pub fn initialize(self, value: T) where T: Serialize {\n // TODO(#4738): Uncomment the following assert\n // assert(\n // self.context.public.unwrap_unchecked().is_deployment(), \"SharedImmutable can only be initialized during contract deployment\"\n // );\n\n // We check that the struct is not yet initialized by checking if the initialization slot is 0\n let initialization_slot = INITIALIZATION_SLOT_SEPARATOR + self.storage_slot;\n let fields_read: [Field; 1] = storage_read(initialization_slot);\n assert(fields_read[0] == 0, \"SharedImmutable already initialized\");\n\n // We populate the initialization slot with a non-zero value to indicate that the struct is initialized\n storage_write(initialization_slot, [0xdead]);\n\n let fields_write = T::serialize(value);\n storage_write(self.storage_slot, fields_write);\n }\n\n pub fn read_public(self) -> T where T: Deserialize {\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n}\n\nimpl SharedImmutable {\n pub fn read_public(self) -> T where T: Deserialize {\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n}\n\nimpl SharedImmutable {\n pub fn read_private(self) -> T where T: Deserialize {\n let header = self.context.get_header();\n let mut fields = [0; T_SERIALIZED_LEN];\n\n for i in 0..fields.len() {\n fields[i] =\n header.public_storage_historical_read(\n self.storage_slot + i as Field,\n (*self.context).this_address()\n );\n }\n T::deserialize(fields)\n }\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"158":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\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 Serialize for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"160":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"163":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize for 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 serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"164":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\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 Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> 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"},"165":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse dep::std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"166":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"167":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"168":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"176":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"177":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"178":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"179":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"180":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\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 function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x22786e4f971661d2e49095e6b038e5170bc47b795253916d5657c4bdd1df50bf;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"186":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"189":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"190":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1970bf189adc837d1769f9f44a8b55c97d45690e7744859b71b647e808ee8622;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"198":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x03ab5026ab5b3e6b81be5c3ec31c7937f293180c25a240eb75693cda81bb2a05;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"200":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"201":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"203":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\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::empty();\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\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x124a62189073cc551fea148d735d1e8b452e38537e075895b02ccfd9c9901819;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x2cbb07062730bfc4933f5e8d533d5b62ac6e1b7922b831993377cd85d7445399;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"206":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\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 Serialize for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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 { inner: result }\n }\n}\n"},"207":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::pedersen_hash, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\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 Serialize for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n pedersen_hash(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_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.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"209":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::pedersen_hash, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n pedersen_hash(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"21":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose_hint, decompose, compute_lt, assert_gt, gt, lt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"210":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"211":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr","source":"use crate::constants::GENERATOR_INDEX__CONTRACT_LEAF;\nuse crate::traits::{ToField, FromField, Hash, Serialize, Deserialize};\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ToField for ContractClassId {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for ContractClassId {\n fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n}\n\nimpl Serialize<1> for ContractClassId {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n}\n\nimpl Deserialize<1> for ContractClassId {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"212":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"222":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"233":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"234":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"240":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"242":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"254":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"256":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"257":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\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 lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n"},"265":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\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_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&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 // TODO(#4394)\n pub fn read_struct(&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(&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"},"266":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"267":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle(_msg: str, args: [Field]) {}\n\n/// NOTE: call this with a str msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format(msg: str, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"270":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n dep::std::hash::pedersen_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"271":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize"},"273":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr","source":"use dep::aztec::prelude::{AztecAddress, EthAddress};\nuse dep::aztec::context::PublicContext;\nuse dep::aztec::protocol_types::hash::sha256_to_field;\n\npub fn calculate_fee(context: PublicContext) -> Field {\n context.transaction_fee()\n}\n\npub fn get_bridge_gas_msg_hash(owner: AztecAddress, amount: Field) -> Field {\n let mut hash_bytes = [0; 68];\n let recipient_bytes = owner.to_field().to_be_bytes(32);\n let amount_bytes = amount.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i + 4] = recipient_bytes[i];\n hash_bytes[i + 36] = amount_bytes[i];\n }\n\n // Function selector: 0x3e87b9be keccak256('mint_public(bytes32,uint256)')\n hash_bytes[0] = 0x3e;\n hash_bytes[1] = 0x87;\n hash_bytes[2] = 0xb9;\n hash_bytes[3] = 0xbe;\n\n let content_hash = sha256_to_field(hash_bytes);\n content_hash\n}\n"},"274":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr","source":"mod lib;\n\ncontract GasToken {\n use dep::aztec::{\n protocol_types::{\n contract_class_id::ContractClassId, abis::function_selector::FunctionSelector,\n address::{AztecAddress, EthAddress},\n constants::{DEPLOYER_CONTRACT_ADDRESS, REGISTERER_CONTRACT_ADDRESS}\n },\n state_vars::{SharedImmutable, PublicMutable, Map},\n oracle::get_contract_instance::get_contract_instance, deploy::deploy_contract\n };\n\n use dep::deployer::ContractInstanceDeployer;\n use dep::registerer::ContractClassRegisterer;\n\n use crate::lib::{calculate_fee, get_bridge_gas_msg_hash};\n\n #[aztec(storage)]\n struct Storage {\n // This map is accessed directly by protocol circuits to check balances for fee payment.\n // Do not change this storage layout unless you also update the base rollup circuits.\n balances: Map>,\n portal_address: SharedImmutable,\n }\n\n // Not flagged as initializer to reduce cost of checking init nullifier in all functions.\n // This function should be called as entrypoint to initialize the contract by minting itself funds.\n #[aztec(private)]\n fn deploy(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field,\n portal_address: EthAddress\n ) {\n // Validate contract class parameters are correct\n let self = context.this_address();\n let instance = get_contract_instance(self);\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n assert(\n instance.contract_class_id == contract_class_id, \"Invalid contract class id computed for gas token\"\n );\n\n // Increase self balance and set as fee payer, and end setup\n let deploy_fees = 20000000000;\n GasToken::at(self)._increase_public_balance(self, deploy_fees).enqueue(&mut context);\n context.set_as_fee_payer();\n context.end_setup();\n\n // Register class and publicly deploy contract\n let _register = ContractClassRegisterer::at(AztecAddress::from_field(REGISTERER_CONTRACT_ADDRESS)).register(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ).call(&mut context);\n let _deploy = ContractInstanceDeployer::at(AztecAddress::from_field(DEPLOYER_CONTRACT_ADDRESS)).deploy(\n instance.salt,\n instance.contract_class_id,\n instance.initialization_hash,\n instance.public_keys_hash,\n true\n ).call(&mut context);\n\n // Enqueue call to set the portal address\n GasToken::at(self).set_portal(portal_address).enqueue(&mut context);\n }\n\n // We purposefully not set this function as an initializer so we do not bind\n // the contract to a specific L1 portal address, since the gas token address\n // is a hardcoded constant in the rollup circuits.\n #[aztec(public)]\n fn set_portal(portal_address: EthAddress) {\n assert(storage.portal_address.read_public().is_zero());\n storage.portal_address.initialize(portal_address);\n }\n\n #[aztec(private)]\n fn claim(to: AztecAddress, amount: Field, secret: Field) {\n let content_hash = get_bridge_gas_msg_hash(to, amount);\n let portal_address = storage.portal_address.read_private();\n assert(!portal_address.is_zero());\n\n // Consume message and emit nullifier\n context.consume_l1_to_l2_message(content_hash, secret, portal_address);\n\n // TODO(palla/gas) Emit an unencrypted log to announce which L1 to L2 message has been claimed\n // Otherwise, we cannot trace L1 deposits to their corresponding claims on L2\n\n GasToken::at(context.this_address())._increase_public_balance(to, amount).enqueue(&mut context);\n }\n\n #[aztec(public)]\n #[aztec(internal)]\n fn _increase_public_balance(to: AztecAddress, amount: Field) {\n let new_balance = storage.balances.at(to).read().add(U128::from_integer(amount));\n storage.balances.at(to).write(new_balance);\n }\n\n // TODO(palla/gas) Remove this function and use the private claim flow only\n #[aztec(public)]\n fn claim_public(to: AztecAddress, amount: Field, secret: Field, leaf_index: Field) {\n let content_hash = get_bridge_gas_msg_hash(to, amount);\n let portal_address = storage.portal_address.read_public();\n assert(!portal_address.is_zero());\n\n // Consume message and emit nullifier\n context.consume_l1_to_l2_message(content_hash, secret, portal_address, leaf_index);\n\n let new_balance = storage.balances.at(to).read() + U128::from_integer(amount);\n storage.balances.at(to).write(new_balance);\n }\n\n // TODO(@just-mitch): remove this function before mainnet deployment\n // convenience function for testing\n // the true canonical gas token contract will not have this function\n #[aztec(public)]\n fn mint_public(to: AztecAddress, amount: Field) {\n let amount = U128::from_integer(amount);\n let new_balance = storage.balances.at(to).read().add(amount);\n\n storage.balances.at(to).write(new_balance);\n }\n\n #[aztec(public)]\n #[aztec(view)]\n fn check_balance(fee_limit: Field) {\n let fee_limit = U128::from_integer(fee_limit);\n assert(storage.balances.at(context.msg_sender()).read() >= fee_limit, \"Balance too low\");\n }\n\n // utility function for testing\n #[aztec(public)]\n #[aztec(view)]\n fn balance_of_public(owner: AztecAddress) -> pub Field {\n storage.balances.at(owner).read().to_field()\n }\n}\n"},"277":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr","source":"mod events;\n\ncontract ContractInstanceDeployer {\n use dep::aztec::protocol_types::{\n address::{AztecAddress, EthAddress, PublicKeysHash, PartialAddress},\n contract_class_id::ContractClassId, constants::DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n traits::Serialize\n };\n\n use crate::events::{instance_deployed::ContractInstanceDeployed};\n\n #[aztec(private)]\n fn deploy(\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys_hash: PublicKeysHash,\n universal_deploy: bool\n ) {\n // TODO(@spalladino): assert nullifier_exists silo(contract_class_id, ContractClassRegisterer)\n\n let deployer = if universal_deploy {\n AztecAddress::zero()\n } else {\n context.msg_sender()\n };\n\n let partial_address = PartialAddress::compute(contract_class_id, salt, initialization_hash, deployer);\n\n let address = AztecAddress::compute(public_keys_hash, partial_address);\n\n // Emit the address as a nullifier to be able to prove that this instance has been (not) deployed\n context.push_new_nullifier(address.to_field(), 0);\n\n // Broadcast the event\n let event = ContractInstanceDeployed { contract_class_id, address, public_keys_hash, initialization_hash, salt, deployer, version: 1 };\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_format(\"ContractInstanceDeployed: {}\", event_payload);\n context.emit_unencrypted_log(event_payload);\n }\n}\n"},"28":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"282":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr","source":"mod events;\nmod capsule;\n\ncontract ContractClassRegisterer {\n use dep::aztec::prelude::{AztecAddress, EthAddress, FunctionSelector};\n use dep::aztec::protocol_types::{\n contract_class_id::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::Serialize\n };\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n // docs:start:import_pop_capsule\n use crate::capsule::pop_capsule;\n // docs:end:import_pop_capsule\n\n #[aztec(private)]\n fn register(artifact_hash: Field, private_functions_root: Field, public_bytecode_commitment: Field) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n // docs:start:pop_capsule\n let packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = pop_capsule();\n // docs:end:pop_capsule\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n dep::aztec::oracle::debug_log::debug_log_format(\n \"ContractClassRegistered: {}\",\n [\n contract_class_id.to_field(),\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ]\n );\n context.emit_contract_class_unencrypted_log(event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n private_function_tree_leaf_index: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n artifact_function_tree_leaf_index: Field,\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n private_function_tree_leaf_index,\n artifact_function_tree_sibling_path,\n artifact_function_tree_leaf_index,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_format(\n \"ClassPrivateFunctionBroadcasted: {}\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.vk_hash,\n function_data.metadata_hash\n ]\n );\n context.emit_contract_class_unencrypted_log(event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n artifact_function_tree_leaf_index: Field,\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n artifact_function_tree_leaf_index,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_format(\n \"ClassUnconstrainedFunctionBroadcasted: {}\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.metadata_hash\n ]\n );\n context.emit_contract_class_unencrypted_log(event.serialize());\n }\n}\n"},"29":{"path":"std/hash.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::sha256::{digest, sha256_var};\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\nstruct PedersenPoint {\n x : Field,\n y : Field,\n}\n\npub fn pedersen_commitment(input: [Field; N]) -> PedersenPoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n#[foreign(keccak256)]\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n"},"3":{"path":"std/cmp.nr","source":"// docs:start:eq-trait\ntrait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\nimpl Eq for Field { fn eq(self, other: Field) -> bool { self == other } }\n\nimpl Eq for u64 { fn eq(self, other: u64) -> bool { self == other } }\nimpl Eq for u32 { fn eq(self, other: u32) -> bool { self == other } }\nimpl Eq for u8 { fn eq(self, other: u8) -> bool { self == other } }\nimpl Eq for u1 { fn eq(self, other: u1) -> bool { self == other } }\n\nimpl Eq for i8 { fn eq(self, other: i8) -> bool { self == other } }\nimpl Eq for i32 { fn eq(self, other: i32) -> bool { self == other } }\nimpl Eq for i64 { fn eq(self, other: i64) -> bool { self == other } }\n\nimpl Eq for () { fn eq(_self: Self, _other: ()) -> bool { true } }\nimpl Eq for bool { fn eq(self, other: bool) -> bool { self == other } }\n\nimpl Eq for [T; N] where T: Eq {\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T] where T: Eq {\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B) where A: Eq, B: Eq {\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C) where A: Eq, B: Eq, C: Eq {\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D) where A: Eq, B: Eq, C: Eq, D: Eq {\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E) where A: Eq, B: Eq, C: Eq, D: Eq, E: Eq {\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3) & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\nstruct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n// docs:start:ord-trait\ntrait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else {\n if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n\nimpl Ord for [T; N] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl Ord for [T] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B) where A: Ord, B: Ord {\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C) where A: Ord, B: Ord, C: Ord {\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D) where A: Ord, B: Ord, C: Ord, D: Ord {\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E) where A: Ord, B: Ord, C: Ord, D: Ord, E: Ord {\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T where T: Ord {\n if v1 > v2 { v1 } else { v2 }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T where T: Ord {\n if v1 > v2 { v2 } else { v1 }\n}\n\nmod cmp_tests {\n use crate::cmp::{min, max};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"},"31":{"path":"std/merkle.nr","source":"// Regular merkle tree means a append-only merkle tree (Explain why this is the only way to have privacy and alternatives if you don't want it)\n// Currently we assume that it is a binary tree, so depth k implies a width of 2^k\n// XXX: In the future we can add an arity parameter\n// Returns the merkle root of the tree from the provided leaf, its hashpath, using a pedersen hash function.\npub fn compute_merkle_root(leaf: Field, index: Field, hash_path: [Field; N]) -> Field {\n let n = hash_path.len();\n let index_bits = index.to_le_bits(n as u32);\n let mut current = leaf;\n for i in 0..n {\n let path_bit = index_bits[i] as bool;\n let (hash_left, hash_right) = if path_bit {\n (hash_path[i], current)\n } else {\n (current, hash_path[i])\n };\n current = crate::hash::pedersen_hash([hash_left, hash_right]);\n }\n current\n}\n"},"44":{"path":"std/uint128.nr","source":"use crate::ops::{Add, Sub, Mul, Div, Rem, Not, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\nuse crate::println;\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\nglobal pow63 : Field = 9223372036854775808; // 2^63;\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn zero() -> U128 {\n U128 { lo: 0, hi: 0 }\n }\n\n pub fn one() -> U128 {\n U128 { lo: 1, hi: 0 }\n }\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex(hex: str) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n unconstrained fn uconstrained_check_is_upper_ascii(ascii: u8) -> bool {\n ((ascii >= 65) & (ascii <= 90)) // Between 'A' and 'Z'\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else {\n let ascii = ascii + 32 * (U128::uconstrained_check_is_upper_ascii(ascii) as u8);\n assert(ascii >= 97); // enforce >= 'a'\n assert(ascii <= 102); // enforce <= 'f'\n ascii - 87\n } as Field\n }\n\n // TODO: Replace with a faster version. \n // A circuit that uses this function can be slow to compute\n // (we're doing up to 127 calls to compute the quotient)\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if b == U128::zero() {\n // Return 0,0 to avoid eternal loop\n (U128::zero(), U128::zero())\n } else if self < b {\n (U128::zero(), self)\n } else if self == b {\n (U128::one(), U128::zero())\n } else {\n let (q,r) = if b.hi as u64 >= pow63 as u64 {\n // The result of multiplication by 2 would overflow\n (U128::zero(), self)\n } else {\n self.unconstrained_div(b * U128::from_u64s_le(2, 0))\n };\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::one(), r - b)\n }\n }\n }\n\n pub fn from_integer(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = self.lo * b.hi + self.hi * b.lo + carry;\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl Not for U128 { \n fn not(self) -> U128 {\n U128 {\n lo: (!(self.lo as u64)) as Field,\n hi: (!(self.hi as u64)) as Field\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift left with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift right with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n\nmod tests {\n use crate::uint128::{U128, pow64, pow63};\n\n #[test]\n fn test_not() {\n let num = U128::from_u64s_le(0, 0);\n let not_num = num.not();\n\n let max_u64: Field = pow64 - 1;\n assert_eq(not_num.hi, max_u64);\n assert_eq(not_num.lo, max_u64);\n\n let not_not_num = not_num.not();\n assert_eq(num, not_not_num);\n }\n #[test]\n fn test_construction() {\n // Check little-endian u64 is inversed with big-endian u64 construction\n let a = U128::from_u64s_le(2, 1);\n let b = U128::from_u64s_be(1, 2);\n assert_eq(a, b);\n // Check byte construction is equivalent\n let c = U128::from_le_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n let d = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n assert_eq(c, d);\n }\n #[test]\n fn test_byte_decomposition() {\n let a = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n // Get big-endian and little-endian byte decompostions\n let le_bytes_a= a.to_le_bytes();\n let be_bytes_a= a.to_be_bytes();\n\n // Check equivalence\n for i in 0..16 {\n assert_eq(le_bytes_a[i], be_bytes_a[15 - i]);\n }\n // Reconstruct U128 from byte decomposition\n let b= U128::from_le_bytes(le_bytes_a);\n // Check that it's the same element\n assert_eq(a, b);\n }\n #[test]\n fn test_hex_constuction() {\n let a = U128::from_u64s_le(0x1, 0x2);\n let b = U128::from_hex(\"0x20000000000000001\");\n assert_eq(a, b);\n\n let c= U128::from_hex(\"0xffffffffffffffffffffffffffffffff\");\n let d= U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff);\n assert_eq(c, d);\n\n let e= U128::from_hex(\"0x00000000000000000000000000000000\");\n let f= U128::from_u64s_le(0, 0);\n assert_eq(e, f);\n }\n\n // Ascii decode tests\n\n #[test]\n fn test_ascii_decode_correct_range() {\n // '0'..'9' range\n for i in 0..10 {\n let decoded= U128::decode_ascii(48 + i);\n assert_eq(decoded, i as Field);\n }\n // 'A'..'F' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(65 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n // 'a'..'f' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(97 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_0() {\n crate::println(U128::decode_ascii(0));\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_1() {\n crate::println(U128::decode_ascii(47));\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_0() {\n let _ = U128::decode_ascii(58);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_1() {\n let _ = U128::decode_ascii(64);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_0() {\n let _ = U128::decode_ascii(71);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_1() {\n let _ = U128::decode_ascii(96);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_greater_than_102_fails() {\n let _ = U128::decode_ascii(103);\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_regression() {\n // This code will actually fail because of ascii_decode,\n // but in the past it was possible to create a value > (1<<128)\n let a = U128::from_hex(\"0x~fffffffffffffffffffffffffffffff\");\n let b:Field= a.to_integer();\n let c= b.to_le_bytes(17);\n assert(c[16] != 0);\n }\n\n #[test]\n fn test_unconstrained_div() {\n // Test the potential overflow case\n let a= U128::from_u64s_le(0x0, 0xffffffffffffffff);\n let b= U128::from_u64s_le(0x0, 0xfffffffffffffffe);\n let c= U128::one();\n let d= U128::from_u64s_le(0x0, 0x1);\n let (q,r) = a.unconstrained_div(b);\n assert_eq(q, c);\n assert_eq(r, d);\n\n let a = U128::from_u64s_le(2, 0);\n let b = U128::one();\n // Check the case where a is a multiple of b\n let (c,d ) = a.unconstrained_div(b);\n assert_eq((c, d), (a, U128::zero()));\n\n // Check where b is a multiple of a\n let (c,d) = b.unconstrained_div(a);\n assert_eq((c, d), (U128::zero(), b));\n\n // Dividing by zero returns 0,0\n let a = U128::from_u64s_le(0x1, 0x0);\n let b = U128::zero();\n let (c,d)= a.unconstrained_div(b);\n assert_eq((c, d), (U128::zero(), U128::zero()));\n\n // Dividing 1<<127 by 1<<127 (special case)\n let a = U128::from_u64s_le(0x0, pow63 as u64);\n let b = U128::from_u64s_le(0x0, pow63 as u64);\n let (c,d )= a.unconstrained_div(b);\n assert_eq((c, d), (U128::one(), U128::zero()));\n }\n\n #[test]\n fn integer_conversions() {\n // Maximum\n let start:Field = 0xffffffffffffffffffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Minimum\n let start:Field = 0x0;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Low limb\n let start:Field = 0xffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // High limb\n let start:Field = 0xffffffffffffffff0000000000000000;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n #[test]\n fn test_wrapping_mul() {\n // 1*0==0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::one()));\n\n // 0*1==0\n assert_eq(U128::zero(), U128::one().wrapping_mul(U128::zero()));\n\n // 1*1==1\n assert_eq(U128::one(), U128::one().wrapping_mul(U128::one()));\n\n // 0 * ( 1 << 64 ) == 0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * 0 == 0\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::zero()));\n\n // 1 * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::from_u64s_le(0, 1).wrapping_mul(U128::one()));\n\n // ( 1 << 64 ) * 1 == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::one().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::from_u64s_le(0, 1)));\n // -1 * -1 == 1\n assert_eq(\n U128::one(), U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff).wrapping_mul(U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff))\n );\n }\n}\n"},"64":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/packed_returns.nr","source":"use crate::{hash::hash_args_array, oracle::returns::unpack_returns};\nuse dep::protocol_types::traits::Deserialize;\n\nstruct PackedReturns {\n packed_returns: Field,\n}\n\nimpl PackedReturns {\n pub fn new(packed_returns: Field) -> Self {\n PackedReturns { packed_returns }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.packed_returns, 0);\n }\n\n pub fn raw(self) -> Field {\n self.packed_returns\n }\n\n pub fn unpack(self) -> [Field; N] {\n let unpacked: [Field; N] = unpack_returns(self.packed_returns);\n assert_eq(self.packed_returns, hash_args_array(unpacked));\n unpacked\n }\n\n pub fn unpack_into(self) -> T where T: Deserialize {\n let unpacked: [Field; N] = self.unpack();\n Deserialize::deserialize(unpacked)\n }\n}\n"},"65":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, traits::Deserialize};\n\nuse crate::context::private_context::PrivateContext;\nuse crate::context::public_context::PublicContext;\nuse crate::context::gas::GasOpts;\nuse crate::context::public_context::FunctionReturns;\n\nuse crate::oracle::arguments;\n\nstruct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args_hash: Field,\n}\n\nimpl PrivateCallInterface {\n pub fn call(self, context: &mut PrivateContext) -> T where T: Deserialize {\n let returns = context.call_private_function_with_packed_args(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n false\n );\n let unpacked: T = returns.unpack_into();\n unpacked\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T where T: Deserialize {\n let returns = context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false);\n returns.unpack_into()\n }\n\n pub fn delegate_call(self, context: &mut PrivateContext) -> T where T: Deserialize {\n let returns = context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, false, true);\n returns.unpack_into()\n }\n}\n\nstruct PrivateVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args_hash: Field,\n}\n\nimpl PrivateVoidCallInterface {\n pub fn call(self, context: &mut PrivateContext) {\n context.call_private_function_with_packed_args(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n false\n ).assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false).assert_empty();\n }\n\n pub fn delegate_call(self, context: &mut PrivateContext) {\n context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, false, true).assert_empty();\n }\n}\n\nstruct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args_hash: Field,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn view(self, context: &mut PrivateContext) -> T where T: Deserialize {\n let returns = context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false);\n returns.unpack_into()\n }\n}\n\nstruct PrivateStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args_hash: Field,\n}\n\nimpl PrivateStaticVoidCallInterface {\n pub fn view(self, context: &mut PrivateContext) {\n context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false).assert_empty();\n }\n}\n\nstruct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n}\n\nimpl PublicCallInterface {\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub fn call(self, context: &mut PublicContext) -> T where T: Deserialize {\n let returns = context.call_public_function(self.target_contract, self.selector, self.args, self.gas_opts);\n returns.deserialize_into()\n }\n\n pub fn view(self, context: &mut PublicContext) -> T where T: Deserialize {\n let returns = context.static_call_public_function(self.target_contract, self.selector, self.args, self.gas_opts);\n returns.deserialize_into()\n }\n\n pub fn delegate_call(self, context: &mut PublicContext) -> T where T: Deserialize {\n let returns = context.delegate_call_public_function(self.target_contract, self.selector, self.args);\n returns.deserialize_into()\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ false,\n /*delegate=*/ false\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ true,\n /*delegate=*/ false\n )\n }\n\n pub fn delegate_enqueue(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ false,\n /*delegate=*/ true\n )\n }\n}\n\nstruct PublicVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n}\n\nimpl PublicVoidCallInterface {\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(self.target_contract, self.selector, self.args, self.gas_opts);\n returns.assert_empty()\n }\n\n pub fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(self.target_contract, self.selector, self.args, self.gas_opts);\n returns.assert_empty()\n }\n\n pub fn delegate_call(self, context: &mut PublicContext) {\n let returns = context.delegate_call_public_function(self.target_contract, self.selector, self.args);\n returns.assert_empty()\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ false,\n /*delegate=*/ false\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ true,\n /*delegate=*/ false\n )\n }\n\n pub fn delegate_enqueue(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ false,\n /*delegate=*/ true\n )\n }\n}\n\nstruct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface {\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub fn view(self, context: &mut PublicContext) -> T where T: Deserialize {\n let returns = context.static_call_public_function(self.target_contract, self.selector, self.args, self.gas_opts);\n returns.deserialize_into()\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ true,\n /*delegate=*/ false\n )\n }\n}\n\nstruct PublicStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticVoidCallInterface {\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(self.target_contract, self.selector, self.args, self.gas_opts);\n returns.assert_empty()\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n // This packing is only here because PrivateContext's call_public* functions do not accept a slice for the args.\n let args_hash = arguments::pack_arguments(self.args);\n context.call_public_function_with_packed_args(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/ true,\n /*delegate=*/ false\n )\n }\n}\n"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"67":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn storage_address(self) -> AztecAddress {\n storage_address()\n }\n pub fn fee_per_l2_gas(self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(self) -> Field {\n fee_per_da_gas()\n }\n /**\n * Emit a log with the given event selector and message.\n *\n * @param event_selector The event selector for the log.\n * @param message The message to emit in the log.\n */\n pub fn emit_unencrypted_log_with_selector(\n &mut self,\n event_selector: Field,\n log: T\n ) where T: Serialize {\n emit_unencrypted_log(event_selector, Serialize::serialize(log).as_slice());\n }\n // For compatibility with the selector-less API. We'll probably rename the above one.\n pub fn emit_unencrypted_log(&mut self, log: T) where T: Serialize {\n self.emit_unencrypted_log_with_selector(/*event_selector=*/ 5, log);\n }\n pub fn note_hash_exists(self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n pub fn l1_to_l2_msg_exists(self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn block_number(self) -> Field {\n block_number()\n }\n\n fn timestamp(self) -> u64 {\n timestamp()\n }\n\n fn transaction_fee(self) -> Field {\n transaction_fee()\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0);\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n fn msg_sender(self) -> AztecAddress {\n sender()\n }\n fn this_address(self) -> AztecAddress {\n address()\n }\n fn chain_id(self) -> Field {\n chain_id()\n }\n fn version(self) -> Field {\n version()\n }\n fn selector(self) -> FunctionSelector {\n FunctionSelector::from_field(self.inputs.selector)\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn l2_gas_left(self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(self) -> Field {\n da_gas_left()\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n let MAX_POSSIBLE_FIELD: Field = 0 - 1;\n [\n user_gas.l2_gas.unwrap_or(MAX_POSSIBLE_FIELD),\n user_gas.da_gas.unwrap_or(MAX_POSSIBLE_FIELD)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(event_selector: Field, message: [Field]) {\n emit_unencrypted_log_opcode(event_selector, message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nfn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nfn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nfn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nfn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nfn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nfn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeTransactionFee)]\nfn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nfn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nfn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nfn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nfn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nfn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nfn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nfn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nfn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nfn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nfn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(amvOpcodeEmitUnencryptedLog)]\nfn emit_unencrypted_log_opcode(event_selector: Field, message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nfn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nfn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nfn call_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nfn call_static_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\nstruct FunctionReturns {\n values: [Field; N]\n}\n\nimpl FunctionReturns {\n pub fn new(values: [Field; N]) -> FunctionReturns {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into(self) -> T where T: Deserialize {\n Deserialize::deserialize(self.raw())\n }\n}\n"},"79":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::pedersen_hash, address::AztecAddress,\n header::Header, utils::field::full_field_less_than\n};\nuse dep::std::merkle::compute_merkle_root;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header { \n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_value_leaf_slot = pedersen_hash(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_value_leaf_slot\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_value_leaf_slot);\n let is_next_greater_than = full_field_less_than(public_value_leaf_slot, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_value_leaf_slot, \"Public data slot doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == compute_merkle_root(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"},"86":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/messaging.nr","source":"use crate::{\n hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier},\n oracle::get_l1_to_l2_membership_witness::get_l1_to_l2_membership_witness\n};\n\nuse dep::std::merkle::compute_merkle_root;\nuse dep::protocol_types::{constants::L1_TO_L2_MSG_TREE_HEIGHT, address::{AztecAddress, EthAddress}, utils::arr_copy_slice};\n\npub fn process_l1_to_l2_message(\n l1_to_l2_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n chain_id: Field,\n version: Field,\n content: Field,\n secret: Field\n) -> Field {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n portal_contract_address,\n chain_id,\n storage_contract_address,\n version,\n content,\n secret_hash\n );\n\n let returned_message = get_l1_to_l2_membership_witness(storage_contract_address, message_hash, secret);\n let leaf_index = returned_message[0];\n let sibling_path = arr_copy_slice(returned_message, [0; L1_TO_L2_MSG_TREE_HEIGHT], 1);\n\n // Check that the message is in the tree\n // This is implicitly checking that the values of the message are correct\n let root = compute_merkle_root(message_hash, leaf_index, sibling_path);\n assert(root == l1_to_l2_root, \"Message not in state\");\n\n compute_message_nullifier(message_hash, secret, leaf_index)\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/protocol-contracts/src/artifacts/KeyRegistry.json b/yarn-project/protocol-contracts/src/artifacts/KeyRegistry.json deleted file mode 100644 index fcec1c89219..00000000000 --- a/yarn-project/protocol-contracts/src/artifacts/KeyRegistry.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"KeyRegistry","functions":[{"name":"register","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"address":[{"end":4,"start":3}],"inputs":[{"end":3,"start":0}],"keys":[{"end":13,"start":5}],"partial_address":[{"end":5,"start":4}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"},"visibility":"private"},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"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","debug_symbols":"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GdlhM7LDFmSHLcgOW5AdtiA7bEF22ILssAXZYQuywxZkhy3IDluRHbYiO2xFdtiK7LAV2WErssNWZIetyA5bkR22IjtsQ3bYhuywDdlhG7LDNmSHbcgO25AdtiE7bEN22IbssB3ZYTuyw3Zkh+3IDtuRHbYjO2xHdtiO7LAd2WE7sMO2A9hh2wHssO0Adth2ADtsO4Adth3ADtsOYIdtB7DDtgPYYduB7LAB2WEDssMGZIcNyA4bkB02IDtsQHbYgOywAdlhA7LDRmSHjcgOG5EdNiI7rEVh0s8tHtlhI7LDRmSHjcgOG5EdNiE7bEJ22ITssAnZYS26nX5u8cgOm5AdNiE7LHKnU0PudGrInU4NudOpIXc6NeROp4bc6dSQO50acqdTQ+50asidTg2506khdzo15E6nhtzp1JA7nRpyp1ND7nRqyJ1ODbnTqSF3OjXkTqeG3OnUkDudGnKnU0PudGrInU4NudOpIXc6NeROp4bc6dSQO50acqdTQ+50asidTg2506khdzo15E6nhtzp1JA7nRpyp1ND7nRqyJ1ODbnTqSF3OjXkTqeG3OnUkDudGnKnU0PudGrInU4NudOpIXc6NeROp4bc6dSQO50acqdTQ+50asidTg2506khdzo15E6njtzp1JE7nTpyp1NH7nTqB7DDduROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4duNMpHsCdTrfF4zrsbfG4DntbPK7D3haP67C3xeM67G3xuA57Wzyuw94Wj+uwt8UjO+xZp1Pt9x/MoUxu09Nd6W0zYrL0kO+Lvw3/49ooUfu9We4X93LI59WljeUH7OVH7OUn7OUL9vIz9vIr9vIb9vI79PIjtm1FbNuK2LYVsW0rYttWxLats9IklOUbuO6PDSuxIS++Ay8+HciLD8iLj8iLT8iLF+TFZ+TFF+TFIztsQnbYhOywguywguywguywguywguywguywguywguywguywguywGdlhM7LDZmSHzcgOm5EdNiM7bEZ22IzssBnZYTOywxZkhy3IDluQHbYgO2xBdtiC7LAF2WELssMWZIctyA5bkR22IjtsRXbYiuywFdlhK7LDVmSHrcgOW5EdtiI7bEN22IbssA3ZYRuywzZkh23IDtuQHbYhO2xDdtiG7LAd2WE7ssN2ZIftyA7bkR22IztsR3bYjuywHdlhO7DDhgPYYcMB7LDhAHbYcAA7bDiAHTYcwA4bDmCHDQeww4YD2GHDgeywAdlhA7LDBmSHDcgOa1GX9HOLR3bYgOywAdlhA7LDBmSHjcgOG5EdNiI7bER2WItmp59bPLLDRmSHRe50CsidTgG50ykgdzoF5E6ngNzpFJA7nQJyp1NA7nQKyJ1OAbnTKSB3OgXkTqeA3OkUkDudAnKnU0DudArInU4BudMpIHc6BeROp4Dc6RSQO50CcqdTQO50CsidTgG50ykgdzoF5E6ngNzpFJA7nQJyp1NA7nQKyJ1OAbnTKSB3OgXkTqeA3OkUkDudAnKnU0DudArInU4BudMpIHc6BeROp4Dc6RSQO50CcqdTQO50CsidTgG50ykgdzoF5E6ngNzpFJA7nQJyp1NA7nQKyJ1OAbnTKSB3OgXkTqeA3OkUkDudAnKnU0DudArInU4BudMpIHc6BeROp4Dc6RSQO50CcqdTQO50isidThG50ykidzpF5E6neAA7bETudIrInU4RudMpInc6ReROp4jc6RSRO50icqdTRO50isidThG50ykidzpF5E6niNzpFJE7nSJyp1NE7nSKyJ1OEbnTKSJ3OkXkTqeI3OkUkTudInKnU0TudIrInU4RudMpInc6ReROp4jc6RSRO50icqdTRO50isidThG50ykidzpF5E6niNzpFJE7nSJyp1NE7nSKyJ1OEbnTKSJ3OkXkTqeI3OkUkTudInKnU0TudIrInU4RudMpInc6ReROp4jc6RSRO50icqdTRO50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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[5,6,7,8]},"bytecode":"H4sIAAAAAAAA/+2b227aQBCG18RJTJ24YGMMgQQIyUXvDA2nO16mfe3eV+orVM2YnTJsp2hRx1tWYqWIsb2e/5t/D1jICdSuRe9/gY6v9eeN+rNhn63+LP+tzQRzlXVyBp5wNjzhvPKEMxTkDBhO+Ax1DOsO1tytOlyPv9tWqChTlELBBLoi19URwIMboUU6oBfHUuDrcnNDklNwpcFDfQ0/ASfW1yhYrIus+pBzWGiDnEOdK3IOd0bUibQpwvUuoj2yXN73CQA1NHUu5I5JTK8NiXVhTTVey9f4VsuYlLtVjGNyrXPfkmP0Cj0U/OaYUe1A/zWJptJjhPGA9MV+6EeDjDG0e7Wf180j94XGfQnpc8PUPxau/9bgMecsjEFLx204xj2BsH0g9W1l2ErIG8vnndExCHVu5I9JTYm43/M15L9Th838VhqTOCE89+I85ayeOndj95Gwy+RdvIFXLcOrO8OrhPShDK0a/AuILubG4xajLefFcg3abQsv2gxP27EXbUZb0IsNaKcWXqQMT+rYi5TRlvNi9Rm0MwsvMoYnc+xFxmjLeTGvni06Fl50GJ6OYy86jLbgGqnmRW7hRc7w5I69yBltQS++gnbXwosuw9N17EWX0Rb04gtoFxZeFAxP4diLgtEW3Dur54uehRc9hqfn2Iseoy3oxRy0+xZe9BmevmMv+oy24BqptB8svHhgeB4ce4F6pzJ3PGQuPGTOzoA5MmIZ7WW1fw4svBgwPAPHXtDfck5hzs+AOTJiGe3lArSHFl4MGZ6hYy9Q71Tm1EPmzEPmrofMuYfMhYfM5zCfIyOW0V5Ve+ijhRePDM+jYy9Q71Tm1EPmgYfM2RkwR0Yso72qfpt7svDiieF5cuwF6p3K3POQuX0GzJERy2ivlqA9svBixPCMHHuBeqcy9z1kLjxkHnjInHnI3PWQOfeQ+bIG3TCnZ8AM773gOzA/auWZb2KDBz1TBqMyGGMSJ4QR+26V3PsqiVE7ak3E/diNjzlf8HhSq/Z8DXmn8jVVz/IvOhe+wzdlanrVcSDs5wvJGxAdPB+S+Dvpi/3QD1y3yA7vXD3r+PXIfSPjvoT0eWbqHwvXPzV4pgYzjMk3wlHH3LKZ1y21X8ufCE8N++AbfScXm82+Q/cYQZ5ZTXWW9B2+n0p2TU8Mr5qGVwnpQ/fo/7VvXpgvzH9jps8TTXKO8uC5hlEL/f+GCcnxC57ToyHuNQAA","debug_symbols":"ndpLahtBGIXRvfTYBN2/H1XtrYQQZFsOAiEZSw4E4b1HSsgCcmZd3X1n3+hQ1+Fl9/Tx4/v++Ho6D49fr8Ph9Ly97E/H2+k6bL5U//P2/LY93l+cL9v3y/A4tnoYdseX+1P7fBhe94fd7XncfH57uI9WGI0bGUVGJaNRRpOMZhktMmoykiJGKWKSIiYpYpIiJilikiImKWKSIiYpYpIiJililiJmKWKWImYpYpYiZililiJmKWKWImYpYpEiFilikSIWKWKRIhYpYpEiFilikSIWKaJJEU2KaFJEkyKaFNGkiCZFNCmiSRFNiuhSRJciuhTRpYguRXQpoksRXYroUkSXIlYpYpUiVililSJWKWKVIlYpYpUiVililSKy2dAqtCpajbSaaDXTaqFVo1WnFbURaiPURqiNUBuhNkJthNoItRFqI9RGURtFbRS1UdRGURtFbRS1UdQGgWZINEOkGTLNEGqGVDPEmiHXDMFmSDZDtBmyzRBuhnQzxJsh3wwBZ0g4Q8QZMs4QcoaUM8ScIecMQWdIOkPUGbLOEHaGtDPEnSHvDIFnSDxD5BkyzxB6htQzxJ4h9wzBZ0g+Q/QZss8Qfob0M8SfIf8MAWhIQEMEGjLQEIKGFDTEoCEHDUFoSEJDFBqy0BCGhjQ0xKEhDw2BaEhEQyQaMtEQioZUNMSiIRctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLbvoSS5a5KJFLlrkokUuWuSiRS5a/+2it9PP7ft++3TY3e/23j9+HJ//XfW9HS+/3v5+uf37Gw=="},{"name":"rotate_npk_m","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"param_witnesses":{"address":[{"end":4,"start":3}],"inputs":[{"end":3,"start":0}],"new_npk_m":[{"end":6,"start":4}],"nonce":[{"end":7,"start":6}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"selector","type":{"kind":"field"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"new_npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"}],"return_type":null,"return_witnesses":[]},"bytecode":"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","debug_symbols":"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"}],"outputs":{"globals":{"storage":[{"fields":[{"name":"npk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"1"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"npk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"2"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"ivpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"3"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"ivpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"4"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"ovpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"5"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"ovpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"6"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"tpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"7"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}},{"name":"tpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"8"}},{"name":"typ","value":{"kind":"string","value":"Map, Context>"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"new_npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"KeyRegistry::rotate_npk_m_parameters"}}],"kind":"struct","path":"KeyRegistry::rotate_npk_m_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"}},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"}}],"kind":"struct","path":"KeyRegistry::register_parameters"}}],"kind":"struct","path":"KeyRegistry::register_abi"}]}},"file_map":{"109":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n"},"118":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/public_storage.nr","source":"use dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::oracle::storage::{storage_read, storage_write};\n\npub fn read(storage_slot: Field) -> T where T: Deserialize {\n T::deserialize(storage_read(storage_slot))\n}\n\npub fn write(storage_slot: Field, value: T) where T: Serialize {\n storage_write(storage_slot, value.serialize());\n}\n\n// Ideally we'd do the following, but we cannot because of https://github.com/noir-lang/noir/issues/4633\n// pub fn read_historical(\n// storage_slot: Field,\n// context: PrivateContext\n// ) -> T where T: Deserialize {\n// let mut fields = [0; N];\n// for i in 0..N {\n// fields[i] = public_storage_historical_read(\n// context,\n// storage_slot + i as Field,\n// context.this_address()\n// );\n// }\n// T::deserialize(fields)\n// }\n\nmod tests {\n use dep::std::test::OracleMock;\n use dep::protocol_types::traits::{Deserialize, Serialize};\n use crate::public_storage;\n\n struct TestStruct {\n a: Field,\n b: Field,\n }\n\n impl Deserialize<2> for TestStruct {\n fn deserialize(fields: [Field; 2]) -> TestStruct {\n TestStruct { a: fields[0], b: fields[1] }\n }\n }\n\n impl Serialize<2> for TestStruct {\n fn serialize(self) -> [Field; 2] {\n [self.a, self.b]\n }\n }\n\n #[test]\n fn test_read() {\n let slot = 7;\n let written = TestStruct { a: 13, b: 42 };\n\n OracleMock::mock(\"storageRead\").with_params((slot, 2)).returns(written.serialize());\n\n let read: TestStruct = public_storage::read(slot);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n\n #[test]\n fn test_write() {\n let slot = 7;\n let to_write = TestStruct { a: 13, b: 42 };\n\n let mock = OracleMock::mock(\"storageWrite\").returns([0; 2]); // The return value is unused\n\n public_storage::write(slot, to_write);\n assert_eq(mock.get_last_params(), (slot, to_write.serialize()));\n }\n}\n"},"120":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl Storage for Map {}\n\nimpl Map {\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 { context, storage_slot, state_var_constructor }\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 = derive_storage_slot_in_map(self.storage_slot, key);\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"},"123":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse dep::std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initally equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation \n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the \n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a \n// reduced delay, invalidating prior private reads.\nstruct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option, \n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pre: Option,\n post: Option,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n // The _dummy variable forces INITIAL_DELAY to be interpreted as a numeric value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; INITIAL_DELAY],\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change, _dummy: [0; INITIAL_DELAY] }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current block number - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_block_number: u32) -> u32 {\n // The post value becomes the current one at the block of change, so any transaction that is included in the\n // block of change will use the post value.\n\n if current_block_number < self.block_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the block at which it will become the current\n /// delay. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u32, u32) {\n (self.post.unwrap_or(INITIAL_DELAY), self.block_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current block number. This function is only meaningful\n /// when called in public with the current block number.\n /// The block at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u32, current_block_number: u32) {\n let current = self.get_current(current_block_number);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let blocks_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior contraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value block of change\n // block block of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | blocks until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.block_of_change = current_block_number + blocks_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical block number. It only returns a meaningful value when called in private with historical blocks. This \n /// function can be used alongside `ScheduledValueChange.get_block_horizon` to properly constrain the\n /// `max_block_number` transaction property when reading mutable shared state.\n /// This value typically equals the current delay at the block following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is \n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_block_number: u32) -> u32 {\n if self.block_of_change <= historical_block_number {\n // If no delay changes were scheduled, then the delay value at the historical block (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // block of change the current delay will be the scheduled one, with an overall delay from the historical\n // block number equal to the number of blocks until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // block delay actual earliest value\n // v block of change block of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest block in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | blocks new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest block in \n // which to scheduled value change\n\n let blocks_until_change = self.block_of_change - (historical_block_number + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n blocks_until_change + self.post.unwrap_or(INITIAL_DELAY)\n )\n }\n }\n}\n\nimpl Serialize<1> for ScheduledDelayChange {\n fn serialize(self) -> [Field; 1] {\n // We pack all three u32 values into a single U128, which is made up of two u64 limbs.\n // Low limb: [ pre_inner: u32 | post_inner: u32 ]\n // High limb: [ empty | pre_is_some: u8 | post_is_some: u8 | block_of_change: u32 ]\n\n let lo = ((self.pre.unwrap_unchecked() as u64) * (1 << 32))\n + (self.post.unwrap_unchecked() as u64);\n\n let hi = (self.pre.is_some() as u64) * (1 << 33) \n + (self.post.is_some() as u64 * (1 << 32)) \n + self.block_of_change as u64;\n\n let packed = U128::from_u64s_le(lo, hi);\n\n [packed.to_integer()]\n }\n}\n\nimpl Deserialize<1> for ScheduledDelayChange {\n fn deserialize(input: [Field; 1]) -> Self {\n let packed = U128::from_integer(input[0]);\n\n // We use division and modulo to clear the bits that correspond to other values when unpacking.\n\n let pre_is_some = ((packed.hi as u64) / (1 << 33)) as bool;\n let pre_inner = ((packed.lo as u64) / (1 << 32)) as u32;\n\n let post_is_some = (((packed.hi as u64) / (1 << 32)) % (1 << 1)) as bool;\n let post_inner = ((packed.lo as u64) % (1 << 32)) as u32;\n\n let block_of_change = ((packed.hi as u64) % (1 << 32)) as u32;\n\n Self {\n pre: if pre_is_some { Option::some(pre_inner) } else { Option::none() },\n post: if post_is_some { Option::some(post_inner) } else { Option::none() },\n block_of_change,\n _dummy: [0; INITIAL_DELAY],\n }\n }\n}\n"},"125":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse dep::std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block\n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know\n// both the current value and the smallest block number at which the value might change - this is called the\n// 'block horizon'.\nstruct ScheduledValueChange {\n pre: T,\n post: T,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public\n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current\n /// transaction will be included) and in private (where `block_number` is the historical block number that is used\n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or\n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current\n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`,\n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum number of blocks that need to\n /// elapse from the next block until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon\n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to\n // that one.\n //\n // block of historical\n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the block of change is in the past: the time horizon is the\n // block prior to the earliest one in which a new block of change might land.\n //\n // historical\n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case\n // the block of change would become the limiting factor for the time horizon, which would equal the\n // block right before the block of change (since by definition the value changes at the block of\n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for\n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current block number. This function is only meaningful when\n /// called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl Serialize<3> for ScheduledValueChange {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl Deserialize<3> for ScheduledValueChange {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self {\n pre: FromField::from_field(input[0]),\n post: FromField::from_field(input[1]),\n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n"},"127":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr","source":"use dep::protocol_types::{hash::pedersen_hash, traits::FromField};\n\nuse crate::context::{PrivateContext, PublicContext};\nuse crate::public_storage;\nuse crate::state_vars::{\n storage::Storage,\n shared_mutable::{scheduled_value_change::ScheduledValueChange, scheduled_delay_change::ScheduledDelayChange}\n};\n\nmod test;\n\nstruct SharedMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Serialize trait, and allocate N storage slots to\n// this state variable. This is incorrect, since what we actually store is:\n// - a ScheduledValueChange, which requires 1 + 2 * M storage slots, where M is the serialization length of T\n// - a ScheduledDelayChange, which requires another storage slot\n//\n// TODO https://github.com/AztecProtocol/aztec-packages/issues/5736: change the storage allocation scheme so that we \n// can actually use it here\nimpl Storage for SharedMutable {}\n\n// SharedMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in blocks. Reads in private are only valid as long as they are included in a block not too far into the \n// future, so that they can guarantee the value will not have possibly changed by then (because of the delay).\n// The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling \n// `schedule_delay_change`.\nimpl SharedMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n\n // Since we can't rely on the native storage allocation scheme, we hash the storage slot to get a unique location in\n // which we can safely store as much data as we need. \n // See https://github.com/AztecProtocol/aztec-packages/issues/5492 and \n // https://github.com/AztecProtocol/aztec-packages/issues/5736\n fn get_value_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 0], 0)\n }\n\n fn get_delay_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 1], 0)\n }\n}\n\nimpl SharedMutable {\n pub fn schedule_value_change(self, new_value: T) {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let block_number = self.context.block_number() as u32;\n let current_delay = delay_change.get_current(block_number);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let block_of_change = block_number + current_delay;\n value_change.schedule_change(new_value, block_number, current_delay, block_of_change);\n\n self.write_value_change(value_change);\n }\n\n pub fn schedule_delay_change(self, new_delay: u32) {\n let mut delay_change = self.read_delay_change();\n\n let block_number = self.context.block_number() as u32;\n\n delay_change.schedule_change(new_delay, block_number);\n\n self.write_delay_change(delay_change);\n }\n\n pub fn get_current_value_in_public(self) -> T {\n let block_number = self.context.block_number() as u32;\n self.read_value_change().get_current_at(block_number)\n }\n\n pub fn get_current_delay_in_public(self) -> u32 {\n let block_number = self.context.block_number() as u32;\n self.read_delay_change().get_current(block_number)\n }\n\n pub fn get_scheduled_value_in_public(self) -> (T, u32) {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay_in_public(self) -> (u32, u32) {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange {\n public_storage::read(self.get_value_change_storage_slot())\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange {\n public_storage::read(self.get_delay_change_storage_slot())\n }\n\n fn write_value_change(self, value_change: ScheduledValueChange) {\n public_storage::write(self.get_value_change_storage_slot(), value_change);\n }\n\n fn write_delay_change(self, delay_change: ScheduledDelayChange) {\n public_storage::write(self.get_delay_change_storage_slot(), delay_change);\n }\n}\n\nimpl SharedMutable {\n pub fn get_current_value_in_private(self) -> T where T: FromField {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction block number as this proof\n // will only be valid for however many blocks we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n\n let (value_change, delay_change, historical_block_number) = self.historical_read_from_public_storage(*self.context);\n\n // We use the effective minimum delay as opposed to the current delay at the historical block as this one also\n // takes into consideration any scheduled delay changes. \n // For example, consider a scenario in which at block 200 the current delay was 50. We may naively think that\n // the earliest we could change the value would be at block 251 by scheduling immediately after the historical\n // block, i.e. at block 201. But if there was a delay change scheduled for block 210 to reduce the delay to 20 \n // blocks, then if a value change was scheduled at block 210 it would go into effect at block 230, which is \n // earlier than what we'd expect if we only considered the current delay.\n let effective_minimum_delay = delay_change.get_effective_minimum_delay_at(historical_block_number);\n let block_horizon = value_change.get_block_horizon(historical_block_number, effective_minimum_delay);\n\n // We prevent this transaction from being included in any block after the block horizon, ensuring that the \n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_tx_max_block_number(block_horizon);\n value_change.get_current_at(historical_block_number)\n }\n\n fn historical_read_from_public_storage(\n self,\n context: PrivateContext\n ) -> (ScheduledValueChange, ScheduledDelayChange, u32) where T: FromField {\n let header = context.get_header();\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let value_change_slot = self.get_value_change_storage_slot();\n let mut raw_value_change_fields = [0; 3];\n for i in 0..3 {\n raw_value_change_fields[i] = header.public_storage_historical_read(\n value_change_slot + i as Field,\n context.this_address()\n );\n }\n\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let delay_change_slot = self.get_delay_change_storage_slot();\n let raw_delay_change_fields = [header.public_storage_historical_read(delay_change_slot, context.this_address())];\n\n let value_change = ScheduledValueChange::deserialize(raw_value_change_fields);\n let delay_change = ScheduledDelayChange::deserialize(raw_delay_change_fields);\n\n let historical_block_number = context.historical_header.global_variables.block_number as u32;\n\n (value_change, delay_change, historical_block_number)\n }\n}\n"},"164":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\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 Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> 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"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"242":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"256":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"257":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\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 lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"271":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize"},"28":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"330":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr","source":"contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n keys::PublicKeys, state_vars::{SharedMutable, Map},\n protocol_types::{grumpkin_point::GrumpkinPoint, address::{AztecAddress, PartialAddress}}\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n // The following stores a hash of individual master public keys\n // If you change slots of vars below, you must update the slots in `SharedMutablePrivateGetter` in aztec-nr/keys.\n // We store x and y coordinates in individual shared mutables as shared mutable currently supports only 1 field\n npk_m_x_registry: Map>,\n npk_m_y_registry: Map>,\n\n ivpk_m_x_registry: Map>,\n ivpk_m_y_registry: Map>,\n \n ovpk_m_x_registry: Map>,\n ovpk_m_y_registry: Map>,\n \n tpk_m_x_registry: Map>,\n tpk_m_y_registry: Map>,\n }\n\n #[aztec(public)]\n fn rotate_npk_m(address: AztecAddress, new_npk_m: GrumpkinPoint, nonce: Field) {\n // TODO: (#6137)\n if (!address.eq(context.msg_sender())) {\n assert_current_call_valid_authwit_public(&mut context, address);\n } else {\n assert(nonce == 0, \"invalid nonce\");\n }\n\n let npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n npk_m_x_registry.schedule_value_change(new_npk_m.x);\n npk_m_y_registry.schedule_value_change(new_npk_m.y);\n }\n\n #[aztec(public)]\n fn register(address: AztecAddress, partial_address: PartialAddress, keys: PublicKeys) {\n let computed_address = AztecAddress::compute(keys.hash(), partial_address);\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n let ivpk_m_x_registry = storage.ivpk_m_x_registry.at(address);\n let ivpk_m_y_registry = storage.ivpk_m_y_registry.at(address);\n let ovpk_m_x_registry = storage.ovpk_m_x_registry.at(address);\n let ovpk_m_y_registry = storage.ovpk_m_y_registry.at(address);\n let tpk_m_x_registry = storage.tpk_m_x_registry.at(address);\n let tpk_m_y_registry = storage.tpk_m_y_registry.at(address);\n\n npk_m_x_registry.schedule_value_change(keys.npk_m.x);\n npk_m_y_registry.schedule_value_change(keys.npk_m.y);\n ivpk_m_x_registry.schedule_value_change(keys.ivpk_m.x);\n ivpk_m_y_registry.schedule_value_change(keys.ivpk_m.y);\n ovpk_m_x_registry.schedule_value_change(keys.ovpk_m.x);\n ovpk_m_y_registry.schedule_value_change(keys.ovpk_m.y);\n tpk_m_x_registry.schedule_value_change(keys.tpk_m.x);\n tpk_m_y_registry.schedule_value_change(keys.tpk_m.y);\n }\n}\n"},"44":{"path":"std/uint128.nr","source":"use crate::ops::{Add, Sub, Mul, Div, Rem, Not, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\nuse crate::println;\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\nglobal pow63 : Field = 9223372036854775808; // 2^63;\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn zero() -> U128 {\n U128 { lo: 0, hi: 0 }\n }\n\n pub fn one() -> U128 {\n U128 { lo: 1, hi: 0 }\n }\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex(hex: str) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n unconstrained fn uconstrained_check_is_upper_ascii(ascii: u8) -> bool {\n ((ascii >= 65) & (ascii <= 90)) // Between 'A' and 'Z'\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else {\n let ascii = ascii + 32 * (U128::uconstrained_check_is_upper_ascii(ascii) as u8);\n assert(ascii >= 97); // enforce >= 'a'\n assert(ascii <= 102); // enforce <= 'f'\n ascii - 87\n } as Field\n }\n\n // TODO: Replace with a faster version. \n // A circuit that uses this function can be slow to compute\n // (we're doing up to 127 calls to compute the quotient)\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if b == U128::zero() {\n // Return 0,0 to avoid eternal loop\n (U128::zero(), U128::zero())\n } else if self < b {\n (U128::zero(), self)\n } else if self == b {\n (U128::one(), U128::zero())\n } else {\n let (q,r) = if b.hi as u64 >= pow63 as u64 {\n // The result of multiplication by 2 would overflow\n (U128::zero(), self)\n } else {\n self.unconstrained_div(b * U128::from_u64s_le(2, 0))\n };\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::one(), r - b)\n }\n }\n }\n\n pub fn from_integer(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = self.lo * b.hi + self.hi * b.lo + carry;\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl Not for U128 { \n fn not(self) -> U128 {\n U128 {\n lo: (!(self.lo as u64)) as Field,\n hi: (!(self.hi as u64)) as Field\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift left with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift right with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n\nmod tests {\n use crate::uint128::{U128, pow64, pow63};\n\n #[test]\n fn test_not() {\n let num = U128::from_u64s_le(0, 0);\n let not_num = num.not();\n\n let max_u64: Field = pow64 - 1;\n assert_eq(not_num.hi, max_u64);\n assert_eq(not_num.lo, max_u64);\n\n let not_not_num = not_num.not();\n assert_eq(num, not_not_num);\n }\n #[test]\n fn test_construction() {\n // Check little-endian u64 is inversed with big-endian u64 construction\n let a = U128::from_u64s_le(2, 1);\n let b = U128::from_u64s_be(1, 2);\n assert_eq(a, b);\n // Check byte construction is equivalent\n let c = U128::from_le_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n let d = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n assert_eq(c, d);\n }\n #[test]\n fn test_byte_decomposition() {\n let a = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n // Get big-endian and little-endian byte decompostions\n let le_bytes_a= a.to_le_bytes();\n let be_bytes_a= a.to_be_bytes();\n\n // Check equivalence\n for i in 0..16 {\n assert_eq(le_bytes_a[i], be_bytes_a[15 - i]);\n }\n // Reconstruct U128 from byte decomposition\n let b= U128::from_le_bytes(le_bytes_a);\n // Check that it's the same element\n assert_eq(a, b);\n }\n #[test]\n fn test_hex_constuction() {\n let a = U128::from_u64s_le(0x1, 0x2);\n let b = U128::from_hex(\"0x20000000000000001\");\n assert_eq(a, b);\n\n let c= U128::from_hex(\"0xffffffffffffffffffffffffffffffff\");\n let d= U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff);\n assert_eq(c, d);\n\n let e= U128::from_hex(\"0x00000000000000000000000000000000\");\n let f= U128::from_u64s_le(0, 0);\n assert_eq(e, f);\n }\n\n // Ascii decode tests\n\n #[test]\n fn test_ascii_decode_correct_range() {\n // '0'..'9' range\n for i in 0..10 {\n let decoded= U128::decode_ascii(48 + i);\n assert_eq(decoded, i as Field);\n }\n // 'A'..'F' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(65 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n // 'a'..'f' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(97 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_0() {\n crate::println(U128::decode_ascii(0));\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_1() {\n crate::println(U128::decode_ascii(47));\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_0() {\n let _ = U128::decode_ascii(58);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_1() {\n let _ = U128::decode_ascii(64);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_0() {\n let _ = U128::decode_ascii(71);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_1() {\n let _ = U128::decode_ascii(96);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_greater_than_102_fails() {\n let _ = U128::decode_ascii(103);\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_regression() {\n // This code will actually fail because of ascii_decode,\n // but in the past it was possible to create a value > (1<<128)\n let a = U128::from_hex(\"0x~fffffffffffffffffffffffffffffff\");\n let b:Field= a.to_integer();\n let c= b.to_le_bytes(17);\n assert(c[16] != 0);\n }\n\n #[test]\n fn test_unconstrained_div() {\n // Test the potential overflow case\n let a= U128::from_u64s_le(0x0, 0xffffffffffffffff);\n let b= U128::from_u64s_le(0x0, 0xfffffffffffffffe);\n let c= U128::one();\n let d= U128::from_u64s_le(0x0, 0x1);\n let (q,r) = a.unconstrained_div(b);\n assert_eq(q, c);\n assert_eq(r, d);\n\n let a = U128::from_u64s_le(2, 0);\n let b = U128::one();\n // Check the case where a is a multiple of b\n let (c,d ) = a.unconstrained_div(b);\n assert_eq((c, d), (a, U128::zero()));\n\n // Check where b is a multiple of a\n let (c,d) = b.unconstrained_div(a);\n assert_eq((c, d), (U128::zero(), b));\n\n // Dividing by zero returns 0,0\n let a = U128::from_u64s_le(0x1, 0x0);\n let b = U128::zero();\n let (c,d)= a.unconstrained_div(b);\n assert_eq((c, d), (U128::zero(), U128::zero()));\n\n // Dividing 1<<127 by 1<<127 (special case)\n let a = U128::from_u64s_le(0x0, pow63 as u64);\n let b = U128::from_u64s_le(0x0, pow63 as u64);\n let (c,d )= a.unconstrained_div(b);\n assert_eq((c, d), (U128::one(), U128::zero()));\n }\n\n #[test]\n fn integer_conversions() {\n // Maximum\n let start:Field = 0xffffffffffffffffffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Minimum\n let start:Field = 0x0;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Low limb\n let start:Field = 0xffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // High limb\n let start:Field = 0xffffffffffffffff0000000000000000;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n #[test]\n fn test_wrapping_mul() {\n // 1*0==0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::one()));\n\n // 0*1==0\n assert_eq(U128::zero(), U128::one().wrapping_mul(U128::zero()));\n\n // 1*1==1\n assert_eq(U128::one(), U128::one().wrapping_mul(U128::one()));\n\n // 0 * ( 1 << 64 ) == 0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * 0 == 0\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::zero()));\n\n // 1 * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::from_u64s_le(0, 1).wrapping_mul(U128::one()));\n\n // ( 1 << 64 ) * 1 == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::one().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::from_u64s_le(0, 1)));\n // -1 * -1 == 1\n assert_eq(\n U128::one(), U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff).wrapping_mul(U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff))\n );\n }\n}\n"},"56":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = context.call_public_function(\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n"},"67":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn storage_address(self) -> AztecAddress {\n storage_address()\n }\n pub fn fee_per_l2_gas(self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(self) -> Field {\n fee_per_da_gas()\n }\n /**\n * Emit a log with the given event selector and message.\n *\n * @param event_selector The event selector for the log.\n * @param message The message to emit in the log.\n */\n pub fn emit_unencrypted_log_with_selector(\n &mut self,\n event_selector: Field,\n log: T\n ) where T: Serialize {\n emit_unencrypted_log(event_selector, Serialize::serialize(log).as_slice());\n }\n // For compatibility with the selector-less API. We'll probably rename the above one.\n pub fn emit_unencrypted_log(&mut self, log: T) where T: Serialize {\n self.emit_unencrypted_log_with_selector(/*event_selector=*/ 5, log);\n }\n pub fn note_hash_exists(self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n pub fn l1_to_l2_msg_exists(self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn block_number(self) -> Field {\n block_number()\n }\n\n fn timestamp(self) -> u64 {\n timestamp()\n }\n\n fn transaction_fee(self) -> Field {\n transaction_fee()\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0);\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n temporary_function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n temporary_function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n fn msg_sender(self) -> AztecAddress {\n sender()\n }\n fn this_address(self) -> AztecAddress {\n address()\n }\n fn chain_id(self) -> Field {\n chain_id()\n }\n fn version(self) -> Field {\n version()\n }\n fn selector(self) -> FunctionSelector {\n FunctionSelector::from_field(self.inputs.selector)\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn l2_gas_left(self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(self) -> Field {\n da_gas_left()\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n let MAX_POSSIBLE_FIELD: Field = 0 - 1;\n [\n user_gas.l2_gas.unwrap_or(MAX_POSSIBLE_FIELD),\n user_gas.da_gas.unwrap_or(MAX_POSSIBLE_FIELD)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(event_selector: Field, message: [Field]) {\n emit_unencrypted_log_opcode(event_selector, message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nfn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nfn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nfn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nfn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nfn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nfn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeTransactionFee)]\nfn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nfn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nfn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nfn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nfn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nfn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nfn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nfn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nfn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nfn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nfn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(amvOpcodeEmitUnencryptedLog)]\nfn emit_unencrypted_log_opcode(event_selector: Field, message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nfn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nfn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nfn call_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nfn call_static_opcode(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\nstruct FunctionReturns {\n values: [Field; N]\n}\n\nimpl FunctionReturns {\n pub fn new(values: [Field; N]) -> FunctionReturns {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into(self) -> T where T: Deserialize {\n Deserialize::deserialize(self.raw())\n }\n}\n"},"85":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH, hash::poseidon2_hash,\n grumpkin_point::GrumpkinPoint, traits::{Deserialize, Serialize}\n};\nuse crate::keys::constants::{NUM_KEY_TYPES, NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH = 8;\n\nstruct PublicKeys {\n npk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n ovpk_m: GrumpkinPoint,\n tpk_m: GrumpkinPoint,\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n poseidon2_hash(\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n ]\n )\n )\n }\n\n pub fn get_key_by_index(self, index: Field) -> GrumpkinPoint {\n assert(index as u8 < NUM_KEY_TYPES, \"Invalid key index\");\n if index == NULLIFIER_INDEX {\n self.npk_m\n } else if index == INCOMING_INDEX {\n self.ivpk_m\n } else if index == OUTGOING_INDEX {\n self.ovpk_m\n } else {\n self.tpk_m\n }\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.x,\n self.npk_m.y,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.tpk_m.x,\n self.tpk_m.y,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: GrumpkinPoint { x: serialized[0], y: serialized[1] },\n ivpk_m: GrumpkinPoint { x: serialized[2], y: serialized[3] },\n ovpk_m: GrumpkinPoint { x: serialized[4], y: serialized[5] },\n tpk_m: GrumpkinPoint { x: serialized[6], y: serialized[7] },\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x1936abe4f6a920d16a9f6917f10a679507687e2cd935dd1f1cdcb1e908c027f3;\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: GrumpkinPoint { x: 1, y: 2 },\n ivpk_m: GrumpkinPoint { x: 3, y: 4 },\n ovpk_m: GrumpkinPoint { x: 5, y: 6 },\n tpk_m: GrumpkinPoint { x: 7, y: 8 }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.x, deserialized.npk_m.x);\n assert_eq(keys.npk_m.y, deserialized.npk_m.y);\n assert_eq(keys.ivpk_m.x, deserialized.ivpk_m.x);\n assert_eq(keys.ivpk_m.y, deserialized.ivpk_m.y);\n assert_eq(keys.ovpk_m.x, deserialized.ovpk_m.x);\n assert_eq(keys.ovpk_m.y, deserialized.ovpk_m.y);\n assert_eq(keys.tpk_m.x, deserialized.tpk_m.x);\n assert_eq(keys.tpk_m.y, deserialized.tpk_m.y);\n}\n"}}} \ No newline at end of file diff --git a/yarn-project/protocol-contracts/src/artifacts/MultiCallEntrypoint.json b/yarn-project/protocol-contracts/src/artifacts/MultiCallEntrypoint.json deleted file mode 100644 index b7f9e414354..00000000000 --- a/yarn-project/protocol-contracts/src/artifacts/MultiCallEntrypoint.json +++ /dev/null @@ -1 +0,0 @@ -{"transpiled":true,"noir_version":"0.30.0+69d3505aae6ab262912d841822f4f3a67dd1dce6","name":"MultiCallEntrypoint","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"compute_nullifier":[{"end":5,"start":4}],"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[5,6,7,8]},"bytecode":"H4sIAAAAAAAA/+2b227aQBCG18RJTJ24YGMMgQQIyUXvDA2nO16mfe3eV+orVM2YnTJsp2hRx1tWYqWIsb2e/5t/D1jICdSuRe9/gY6v9eeN+rNhn63+LP+tzQRzlXVyBp5wNjzhvPKEMxTkDBhO+Ax1DOsO1tytOlyPv9tWqChTlELBBLoi19URwIMboUU6oBfHUuDrcnNDklNwpcFDfQ0/ASfW1yhYrIus+pBzWGiDnEOdK3IOd0bUibQpwvUuoj2yXN73CQA1NHUu5I5JTK8NiXVhTTVey9f4VsuYlLtVjGNyrXPfkmP0Cj0U/OaYUe1A/zWJptJjhPGA9MV+6EeDjDG0e7Wf180j94XGfQnpc8PUPxau/9bgMecsjEFLx204xj2BsH0g9W1l2ErIG8vnndExCHVu5I9JTYm43/M15L9Th838VhqTOCE89+I85ayeOndj95Gwy+RdvIFXLcOrO8OrhPShDK0a/AuILubG4xajLefFcg3abQsv2gxP27EXbUZb0IsNaKcWXqQMT+rYi5TRlvNi9Rm0MwsvMoYnc+xFxmjLeTGvni06Fl50GJ6OYy86jLbgGqnmRW7hRc7w5I69yBltQS++gnbXwosuw9N17EWX0Rb04gtoFxZeFAxP4diLgtEW3Dur54uehRc9hqfn2Iseoy3oxRy0+xZe9BmevmMv+oy24BqptB8svHhgeB4ce4F6pzJ3PGQuPGTOzoA5MmIZ7WW1fw4svBgwPAPHXtDfck5hzs+AOTJiGe3lArSHFl4MGZ6hYy9Q71Tm1EPmzEPmrofMuYfMhYfM5zCfIyOW0V5Ve+ijhRePDM+jYy9Q71Tm1EPmgYfM2RkwR0Yso72qfpt7svDiieF5cuwF6p3K3POQuX0GzJERy2ivlqA9svBixPCMHHuBeqcy9z1kLjxkHnjInHnI3PWQOfeQ+bIG3TCnZ8AM773gOzA/auWZb2KDBz1TBqMyGGMSJ4QR+26V3PsqiVE7ak3E/diNjzlf8HhSq/Z8DXmn8jVVz/IvOhe+wzdlanrVcSDs5wvJGxAdPB+S+Dvpi/3QD1y3yA7vXD3r+PXIfSPjvoT0eWbqHwvXPzV4pgYzjMk3wlHH3LKZ1y21X8ufCE8N++AbfScXm82+Q/cYQZ5ZTXWW9B2+n0p2TU8Mr5qGVwnpQ/fo/7VvXpgvzH9jps8TTXKO8uC5hlEL/f+GCcnxC57ToyHuNQAA","debug_symbols":"ndpRattAGIXRveg5FN/fGs0oWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLjT9vT2+74+3F6bx7P0/321530/74dHvqn3fT8+Flf31u4/Pb3W20wmi7kVFkVDLaymiWUZPRIqMuIyliK0XMUsQsRcxSxCxFzFLELEXMUsQsRcxSxCxFNCmiSRFNimhSRJMimhTRpIgmRTQpokkRixSxSBGLFLFIEYsUsUgRixSxSBGLFLFIEV2K6FJElyK6FNGliC5FdCmiSxFdiuhSxJAihhQxpIghRQwpYkgRQ4oYUsSQIoYUsUoRqxSxShGrFLFKEasUsUoRqxSxShGrFJHNhlahVdFqS6uZVo1WC606rQatqI1QG6E2Qm2E2gi1EWoj1EaojVAboTaK2ihqo6iNojaK2ihqo6iNojYINEOiGSLNkGmGUDOkmiHWDLlmCDZDshmizZBthnAzpJsh3gz5Zgg4Q8IZIs6QcYaQM6ScIeYMOWcIOkPSGaLOkHWGsDOknSHuDHlnCDxD4hkiz5B5htAzpJ4h9gy5Zwg+Q/IZos+QfYbwM6SfIf4M+WcIQEMCGiLQkIGGEDSkoCEGDTloCEJDEhqi0JCFhjA0pKEhDg15aAhEQyIaItGQiYZQNKSiIRYNuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlo2UVPctEiFy1y0SIXLXLRIhctctH6bxe9nn7u3g+7h5f97W7v7ePH8fHfVd/r8fzr7e+X67+/AQ=="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"app_payload":[{"end":60,"start":39}],"inputs":[{"end":39,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":32,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"},"return_witnesses":[60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516]},"bytecode":"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","debug_symbols":"7P3djiTLkp0JvktdEw3Tf1W+ymAw4EyzBwQa5GDIviL47m27Kt09siIszCJTzHWJrnVuutjHj2+RJblVloinfvo//+V//8//7//r//v/+i//9f/4b//9X/7j/+N//sv/+d/+P//pf/yX//Zf9//X//yX2P71/99////9p//6z//zv/+P//T//x//8h+3//Av//m//u/7//d//Yd/+T/+y//5n//lP6bS/9d/+PS52Er69dHYWnl+OuTyxadzDO3Xp3Ps+eTTo+RHGKNur0/H2v/X//M//EvsXgMfbww8bfkReKp/GXja/ibwnNszlBJen671X7873Pjd8avvzs9ccxsn3x/GU8YwUnp+uoSvPlxDeXy4plcwcSv/Gk2CiiZDRVP+PpoRH/96xHoSTazh+dX7h2v7939w6pvDSX08w8npt3A+fzyl7aFlSrm//t3evvryNh4nWN9eUYf9TPgn0caSaGdJdJAkmjeWRANLopEl0cSSaGZJtLAkiu2Mcu6PRPOIZ4m2Z6IhfZh5vpqQ4tbrI44QP8jyZY7fS4jtuVxIiO3mXEiI7RM9SFiwHagLCbG9rQsJsV2zCwmx/bgLCbMk/FsJsWcIFxKyTif7ev0pYY+/SfiPLKwTx4ksrFPEiSysk8H3slRWt38iC6uDP5GF1ZWfyMLqtE9kyZLlK1lYHfGJLKwudx8PnlF/+AsnD1lYXe6JLKwu90QWVpf7vSyN1eWeyMLqck9kYXW5J7KwutwTWbJk+UoWVpd7Iguty639GXXvn2Shdbnfy0Lrcr+XhdblfitLp3W538tC63K/l4XW5X4vC63L/V6WLFm+koXW5X4vy7tdbs7tKUst/XtZYi/lGX2v27+/YNmb6+i76+iH5+jHhh19DR+i/3Q/dATX0UfX0SfX0WfX0RfX0YP32pPowXttbU+/1dvn6MF77Un04L32++jDht5sT8JH77Yn4aO325Pw0fvtSfjgDbf18gy/x/opfPCOexY+eMs9Cx+8547y/HtiYwvjU/jYTXds6fnx8a+bln8XPnbXPQs/YHfd0/Cxu+5p+Nhdd7QnD2v/vz9sHB/hY3fd0/Cxu+7o6XVwjvjJNATsrnsaPnbXPQ3/3V23jucFxNpi/hRPB4vn3X2x1ddPKa1v35d3NyW/PjziR85f+iqOmJ5UwP2PxfPToX716RNKZYgbsi4jPWiJo4wTXfpWHn8C9l+YPtA7R/8TXQKyLm084tj3FOU3Yf41+L/u4zHFh/KxjHoS/K78E7O6tf7pX76YwOLJYPEUsHgqWDwNLJ4OFs/AiidtYPEEsHjAzucEdj4nsPM5gZ3PCex8TmDncwI7nxPY+ZzBzucMdj5nsPM5g53PGex8zmDncwY7nzPY+ZzBzucMdj4XsPO5gJ3PBex8LmDncwE7nwvY+VzAzucCdj4XsPO5gJ3PFex8rmDncwU7nyvY+VzBzucKdj5XsPO5gp3PFex8rmDncwM7nxvY+dzAzucGdj43sPO5gZ3PDex8bmDncwM7nxvY+dzBzucOdj53sPO5g53PHex87mDncwc7nzvY+dzBzucOdj4PsPN5gJ3PA+x8HmDn8wA7nwfY+TzAzucBdj4PsPN5YJ3PccM6n+OGdT7HDet8jhvW+Rw3rPM5bljnc9ywzue4YZ3PccM6n+MGdj4HsPM5gJ3PAex8DmDncwA7nwPY+RzAzucAdj4HsPM5gJ3PEex8jmDnM9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wQh2fzCC3R+MYPcHI9j9wfj2+4Pt+R5I3PoX8VSweBpYPB0sngEVT3r7/cGzeAJYPBEsnnefz308P72NVj/Fk8HiKWDxVLB43nw+h+315zmEGD/F08HiefP5HNrraajQ06d/3999f/A0ngAWz5vP59DLK57x6d3M9O77g6fxZLB4Clg8FSyeBhZPB4vn3efziNsrnvopnnffHzyNJ4DF8+bzeTfQz7dUY8jlUzxvPp9jeO0T9v+0T/FksHgKWDxvPp/3HwSej+vuy8L+KZ4GFs+bz+d9Afb892sfttKneAZWPO++P3gaz5vP51Re53Mq6bfz+auP92f0ubyGo/DPK7SfPn3ycG56993Eqbm++8H57x+5Tn9/79E4ngIWTwWLB+vR9pSwHm1PaWDFkzeweAJYPBEsHrDz+et7j49otpNYcm6PvphL2D59ebnzy+udX4711zsS2PXCBHa9MBWwY7CAHYMF7BgsYMfg318vNI4HzKa++3rhzBHq66uCRo3l63t/Rl8OdokvgV3iS/Xdp2Cr4/VvVd++/1PcxiOOsG2vhXHc0r8Fb3Bkbg8xw0gnwYcaHj9Q76vR7UM45d/CyVjhFKxw3j3Wh+dX7x+un9bX9d1jfeqvP/k5te//5O/b0Yea+8LotVsOW/jy35PHYd+3V9Sh5n/LtNNkOlgybRtNpoEm00iTaaLJNNNkWmgyrTSZYnuknPsj0zziWabPv33SQ/ow4ZYvx6b+nP1D/KDLlzmeaIjtvnxoiO3rXGjYsR2jDw2xvagPDbFdrg8Nsf2zDw2zNPxrDbE9vw8NsacJHxqyzin70v2pYY+/afivurDOHme6sM4TJ7oM1hnhTBdW33+mC6uXP9OF1Z+f6ZKly5e6sProM11YvfGZLqx+d58UnlF/+AspT11Y/e6ZLqx+93td8sbqd890YfW7Z7qw+t0zXVj97pkuWbp8qQur3z3ThdXvnulC63drf0bd+2ddaP3uiS60fvd7XQKt3z3RhdbvnuhC63dPdKH1uye6ZOnypS60fvdEF1q/e6LLu/1uzs/bwrWW/r0usZfyDL/X7d9fus2h+w5/uA4/br7DD9jh1/Ah/E/XSnOMvsNPvsPPvsMvvsOvvsMH77pn4YN33dqe3qu3L8IH77on4SfwrnsWPnrXPQkfveuehI/edU/CR++6J+GDd93Wn++i9B7rp/DBu+5Z+OBd9yx88K47yvNvko0tjE/hY3fdsaXnx0f49OZEzthd9zR87K57Gj521z0NH7vrjvYEau3/94ifwsfuuqfhY3fd0dPr4ByfXr/IGbvrnoaP3XVPw8dioOeMxUDPb4f//gjr2J8P/Y34ERSYvoojpidWcP9j8fx0qF99+gRkmt8OIf6RLiM9cIujjBNd+lYefwL235temYbR/0QXxxjQ/HZycnvW6Z/gw/fBl2edSnt9c/63yLPbyIvbyKvbyJvbyDty5HV7WJP6gUPwK/LhNfK6uY08uI08uo0cuod+Gzl0D/02cuge+m3k0D3028ihe+i3kbvtodVtD21ue2hz20Ob2x7a3PbQt1Oq7SJ320Ob2x7a3PbQ5raHNrc9tLvtod1tD+1ue2h320PfzpO1i9xtD+1ue2h320O72x7a3fbQ4baHDrc9dLjtocNtD307H9Iucrc9dLjtocNtDx1ue+jw2kPL5rWHls1rDy1/z8szfe24/D2nzjieDBZPAYungsXTwOLpYPEMrHgC1uvvJWC9/l4C2PkcwM7nAHY+B7DzOYCdzwHsfA5g53MAO58j2Pkcwc7nCHY+R7DzOYKdzxHsfI5g53MEO58j2Pkcwc7nBHY+J7DzOYGdzwnsfE5g53MCO58T2PmcwM7nBHY+J7DzOYOdzxnsfM5g53MGO58z2Pmcwc7nDHY+Z7DzOYOdzxnsfC5g53MBO58L2PlcwM7nAnY+F7DzuYCdzwXsfC5g53MBO58r2Plcwc7nCnY+V7DzuYKdzxXsfK5g53MFO58r2Plcwc7nBnY+N7DzuYGdzw3sfG5g53MDO58b2PncwM7nBnY+N7DzuYOdzx3sfO5g53MHO5872Pncwc7nDnY+d7DzuYOdzx3sfB5g5/MAO58H2Pk8wM7nAXY+D7DzeYCdzwPsfB5g5/PAOp/rhnU+1w3rfK5g9wcr2P3BumGdzxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Ywe4PVrD7gxXs/mAFuz9Y335/sI3yjKd/EU8Fi6eBxdPB4hlY8bz9/uBZPAEsnggWz7vP5z6en95Gq5/iyWDxFLB4Klg8bz6fw/b68xxCjJ/i6WDxvPl8Du31LlTo6dO/7+++P3gaTwCL583nc+jlFc/Ywqd4Elg8GSyeAhZPBYungcXTweJ59/k84vaKp/77eNq77w+exhPA4nnz+bwb6MdjiDGGXD7F8+bzOYbXPmH/T/sUTwaLp4DF8+bzOfYcnvGM0D/F08DiefP5HEd5/vuVtpI+xTOw4nn3/cHTeN58PqfyOp9TSb+dz199vD+jz+U1HIW+ffHpUZ5hj7q9rHms/d9yjUS5vrmvpJz7M9caTnItpf76cGmvP5L53yLPbiMvbiOvbiNvbiPvyJF/84Z3e/edT7vI33071DDy4Dby6DZy6B76beTQPfTbyKF76LeRQ/fQbyOH7qHfRu62h0a3PTS57aHJbQ9NbntocttD333T2DBytz00ue2hyW0PTW57aHLbQ7PbHprd9tDstodmtz303bfBDSN320Oz2x6a3fbQ7LaHZrc9tLjtocVtDy1ue2hx20PffWPfMHK3PbS47aHFbQ8tbntocdtDq9seWt320Oq2h1a3PfTdVAXDyN320IrdQ/Pjb+bU8ily7B76XeTYPfS7yP+6h4bxupkVazqJvNbxCCbWFv/9Pa7295wI43gCWDwRLJ4EFk8Gi6eAxVPB4mlg8XSweMDO56/v/T6i2U5iybk9ulwuYfv05fHOL093fnm+88vLnV9e7/zydueX9zu/fNz35f3ry6JWX45FbupbBosHi6zXwV5G7GAvI3awlxE72MuIHexlxA72MmIHexmx13c73r1fPB1dLf1TPB0snoEVz9s3EmfxBLB4Ilg8CSyeDBZPAYungsUDdj6Pd//5aSm/NgD9z3fLfRS3kVe3kTe3kXe3kQ+nkY9tcxt5cBt5dBt5chu51x46Nqzfj8aG9fvR2LB+Pxob1u9HY8P6/WgErN/3BxGHaxBxuMbbOVwTc403/pw0Yrjzy+OdX57u/PJ855eXO78c6/emEbF+bxoR6/emEbF+bxoJ6/emkbB+bxoFa585CtY+cxSs35tGwfq9aVSs35tGxfq9aTSve8LR3O4Ju9s9YXe7J+xu94Td7Z7w71+xCvuu8deHw0gnkYcaHo8QhZpeTn33GP8WTsEKp2KF825jE55fvX+4/vsnCkZ/d2NKfTzjyal9/8c+pe2hZkr51VXD9tWXt/HowX17RR3qr39NBkumY6PJNNBkGmkyTTSZZppMC02mlSbTRpMptkd6XatOecSzTJ8vjPXwiiPW8uXWsD9/hgwfruyHL3M80RDbfXnQMGwbtrFzIiK2Z3QiIrYddSIittN1ImKWiH8vIrY/dyIitvV3IiL2VOFERNaBZd++P0Xs8TcR/00Y1inkTJjAOlmcCsM6LZwKwzoBnArD6upPhckS5mthWN33qTCsjvpUGFaXfCoMq/Pdh4Zn1B/+jspLGFbneyZMZHW+p8KwOt9TYVid76kwrM73VJgsYb4WhtX5ngrD6nxPhWF1vqfC0Drf+nxVIPb+hTC0zvdEmETrfM+EoXW+Z8LQOt8zYWid75kwWcJ8LQyt8z0Thtb5nglD63zPhAG6m//Fx3spz/h73f492mSPH+gu/5/En4Hu/v9R/ECsgD+KH4hl/VX8NXyI/9MN1D1+IPb1H8WfnccPxNb+o/iB2DV/FD8Q6+aP4gfvv6fxg/ff2p4+rLcv4i/g/fc0fvD+exo/ev89ix+9/57Fj95/z+JH779n8YP339bLM/4e6+f4wfvvafzg/fc0fvD+O8rz75yNLYxP8SOx7774+Ng3R8/4/3Ud8+/jx+6/5/Fj99/z+LH773n82P13tCeRa/+/P6wmn/Fj99/z+LH77+jpdX6O+Nk/IL0t+EfxY/ff8/ixXlsIW8N6bmEP6O08zvr66aX17fsK7wbl14dH/AgcTF/FEdMTT7j/yXh+OtSvPn3C8N+FicjCjCdhc3yAZn4tTN/HmF8f3n+SeqUaRv8jYRKyMG084vjn6v9vyvxb9O/u6D9ioZZnpUp7ffOvq88N+vm+70OHfr/v+9ChH/D7PnRoMvf3oWOjubeHS6lx/PvQwdnc34aODef+NnRsOve3oWPjub8NHbqbfh869mO434aO/Rrut6FjP4f7bejY71x8G7rfbjr8dtPht5sOv910+O2m4C/Lfxu6324K/rb8t6H77abgr8t/G7rbbhrA35f/NnS33TSAvzD/behuu2nY3HbTsLntpmFz203D5rabhs1tNw2b324a/HbT4LebBr/dNPjtpm8nXBqG7rebBr/dNPjtpsFvNw1+u2n0202j324a/XbTv2fyxRSfwZRRT0LfSk2PT2+tf/q7dOHvWXjWARW0gCpaQA0toI4W0AAL6O/ZXtYBBbSAIlpAaCd1QjupE9pJndBO6oR2Uie0kzqhndQZ7aTOaCd1RjupM9pJndFO6ox2Ume0kzqjndQZ7aTOaCd1QTupC9pJXdBO6oJ2Uhe0k7qgndQF7aQuaCd1QTupC9pJXdFO6op2Ule0k7qindQV7aSuaCd1RTupK9pJXdFO6op2Uje0k7qhndQN7aRuaCd1QzupG9pJ3dBO6oZ2Uje0k7qhndQd7aTuaCd1RzupO9pJ3dFO6o52Une0k7qjndQd7aTuaCf1QDupB9pJPdBO6oF2Ug+0k3qgndQD7aQeaCf1QDupB9hJHTewkzpuYCd13MBO6riBndRxAzup4wZ2UscN7KSOG9hJHTewkzpuaCd1QDupA9pJHdBO6oB2Uge0kzqgndQB7aQOaCd1QDupA9pJHdFO6oh2Uke0kxrtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJEu6MY0e4oRrQ7ihHtjmJ8+x3FNsozoP5VQA0toI4W0MAKKL39juJpQAEtoIgWUEIL6N0ndR/PT2+j1c8BFbSAKlpADS2gN5/U/zzX/vj0Py9AfQ5ogAX07juKob3etAo9ff7X/t13FM8DimgBvfmkDr28Ahpb+BxQRguooAVU0QJqaAF1tIAGWEDvvqMYRtxeAdUvAgpoAUW0gN58Uu+m+vGqY4whl88BvfmkjuG1bNj/0z4HVNACqmgBvfmk3n/LCM+ARuifA+poAb35pN5Xds9/y/ahMH0K6N13FM8DCmgBvfmkTuV1UqeSfjupv/p4f4afy2tmCn374tOjPMMedXvZ9Vj7r2QTU7Jv7jAp5/5MtoaTZEupvz5c2utPZf4VevEbevUbevMbevcb+kAO/bvHydO775Vahh78hh79hp78hg7dTb8PHbqbfh86dDf9PnTobvp96NDd9PvQ/XbT4rebFr/dtPjtpsVvN333HWXL0P120+K3mxa/3bT47abFbzetfrtp9dtNq99uWv1203ffI7cM3W83rX67afXbTavfblr9dtPmt5s2v920+e2mzW83ffddf8vQ/XbT5rebNr/dtPntps1vN+1+u2n32027327a/XbTd/MYLEP32027327a/XbT7rebdr/ddPjtpsNvNx1+u+nw203fzcywDN1vNx1+u+nw202H32463HbTvLntpnnD7qb58ZfAa/kcOnY3/Tb0v+6mYbyu2ceaTkKvdTyiibXFT5fy85bRAipoAVW0gBpaQB0toAEW0N/TSqwDCmgBRbSA0E7qr6+cP8LZToLJuT06Xi5h+/zt9dZvb7d+e7/128ed3/71nWuzbw+3fnu89dvTrd+eb/12MEhvRnv2M6M9+5nRnv3MaM9+ZrRnPzPas58Z7dnPjPbsZ0Z79rOUd88ue+t42rxa+ueABlhAdUMLKKAFFNECSmgBZbSAClpAFS2gBhZQf/e/9i3l10De/2LrW3r0G3ryG3r2G3rxG3r1G3rzG3r3G/pwG/rY/IYO9gNAGWA/AJQB9gNA+fu/zmQdENhPtWWA/VRb3v4XiiYiNMvb/wrS1GQHT7I13PkjVQ3h1m+Pt357uvXb863fXm79drBNbw1gv8nVAPabXA1gv8nVCPabXI1gv8nVAbalqwPs95Q6wH5PaRvY7yltA/s9pW1gv6e04HZF0aLbFUWLbhf+Lbpd+LfoduHf/v6VoHmhG6xStkcwYaST0P8x/48P1/Qy77vh+BVPBYungcXzbpsTnl+9f7h+em6pxXe3qNTHM6Cc2vd/9lPaHnqmlF8NNmxffXkbj3bct1fUof76dyVtPKkGnlQjT6qJJ9XMk2rhSbXypNp4Uu08qWK7pdd945RHPEv1+XZqD684Yi1fLhT78wfL8OFOePgyxxMRM7YPcyIitsNzIiK2d3QiIrYrdSJiloh/LyK2k3YiIrZHdyIitvt3IiL2XOFERNaJZV/FP0Xs8TcR/1WYwjqFnArDOlmcCsM6LZwKwzoBnAqTJczXwrA69VNhWN33qTCsjvpUGFaXfCoMq/Pdh4Zn1B/+wspTmMrqfE+FYXW+p8KwOt9TYVid76kwWcJ8LQyr8z0VhtX5ngrD6nxPhWF1vqfC0Drf+uTtx94/C9None+ZMLTO90wYWud7Jgyt8z0TJkuYr4Whdb5nwtA63zNhaJ3vmTC0zvdMGKBL+198vJfyjL/X7RP8pHWgO/5/FD8QEuCP4gciCPxR/EAA56/ir+FD/F/cRn07etU6fiA89B/FD0ST/qP4gbA2fxQ/EAXnj+IH779n8Q/w/lvb04f19lX84P33NH7w/nsaP3r/PYsfvf+exY/ef8/iR++/Z/GD99/doD3j77F+jh+8/57GD95/T+LvSIy7r+If5fl3zsYWxuf4sfvv2NLz4+Nf1zH/Pn7s/nseP3b/PY8fu/+ex4/df0d74rn2//vDavIZP3b/PY8fu/+Onl7n54jtc/zY/fc8fuz+exo/2nvjHe298f7298Zbff300vr2fYV3g/LrwyN+pA+mr+KI6ckq3P9kPD8d6lefPmP997e/e/4jYcaTuDk+QDS/FmbvYo8/A3tWr1TD6H8kTEYWZl95Pf4QbFv5TZl/ix76RbHyrFRpr2/Ov0KHflHs+9ChXxT7PnToF8W+Dx0a1/1t6OC47u3hUmocn0LHxnV/Gzo2rvvb0LFx3d+Gnv2Gjv0+57ehY7/P+W3o2O9zfhs69vuc34aO/fjFd6Env900+e2myW83TX676dtJ24ah++2myW83TX67afLbTZPfbpr9dtPst5tmv900++2mb+f4Gobut5tmv900++2m2W83zX67afHbTYvfblr8dtPit5u+nZ9pGLrfblr8dtPit5sWv920+O2m1W83rX67afXbTavfbvp2Jp9h6H67afXbTavfblr9dtPqt5s2v920+e2mzW83bX676ds5X4ah++2mzW83bX67afPbTZvfbtr9dtPut5t2v920++2mbwc/GYbut5t2v920++2m3W837X676fDbTYffbvr3QKeY4jOYMupJ6Fup6fHprfXP93f/ntBkHVBGC6igBVTRAmpoAXW0gAZWQOPvwULWAQW0gMBO6rGBndRjAzupxwZ2Uo8N7KQeG9hJPTawk3psaCd1QDupA9pJHdBO6oB2Uge0kzqgndQB7aQOaCd1QDupA9pJHdFO6oh2Uke0kzqindQR7aSOaCd1RDupI9pJHdFO6oh2Uie0kzqhndQJ7aROaCd1QjupE9pJndBO6oR2Uie0kzqhndQZ7aTOaCd1RjupM9pJndFO6ox2Ume0kzqjndQZ7aTOaCd1QTupC9pJXdBO6oJ2Uhe0k7qgndQF7aQuaCd1QTupC9pJXdFO6op2Ule0k7qindQV7aSuaCd1RTupK9pJXdFO6op2Uje0k7qhndQN7aRuaCd1QzupG9pJ3dBO6oZ2Uje0k7qhndQd7aTuaCd1RzupO9pJ3dFO6o52Une0k7qjndQd7aTu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d90L4SN33Qvh++66FhSQmeH77rrl7V33J3+9cHvFEbYPf8nuw18HK817At17AsN5AnXznkDwnkD0nkCCTuA5uYd/sPEfE/jim8fzm7fx4bP5lWxmSrYwJQvtBn77y+EH/x5Cu4ErCUC7gSsJQLuBCwk0aDdwJQFoN3AlAWg3cCUBaDdw4Y6NBalnbgLQXftKAjid+BkSTm99hmTRLcfz3al4+n5gKM8nG0r+OqQBF5IF/eZHIdn+bRIL+s3M8KPv8JPv8LPv8Ivv8Kvv8Jvv8Lvv8Ifr8Ifvrjt8d93hu+sO313XgnszM3zfXXf47rrDd9cdvrvucN118+a66+bNddfNm+uumzfXXTdvrrtu3lx33by57rp5c9118+a66+bNd9cNvrtu8N11g++uG3x3XRM2z8TwfXfd4LvrBt9dN/juusF3142+u2703XWj764bfXddEzbPxPB9d93ou+tG3103+u660XfXTb67bvLddZPvrpt8d10TMtLE8H133eS76ybfXTf57rrJd9fNvrtu9t11s++um313XRMu1cTwfXfd7LvrZt9dN/vuutl31y2+u27x3XWL765bfHddEy7VxPB9d93iu+sW3123+O66xXfXrb67bvXddavvrlt9d10TttTE8H133eq761bfXbf67rrVd9dtvrtu8911m++u23x3XRPe08TwfXfd5rvrNt9dt/nuus131/XNpsq+2VTZN5sq+2ZTZd9squybTZV9s6mybzZV9s2myr7ZVNk3myr7ZlNl32yq7JtNlX2zqbJvNlX2zabKvtlU2TebKvtmUxXfbKrim01VfLOpim82Vdlcd93im01VfLOpim82VfHNpiq+2VTFN5uq+GZTFd9squKbTVV8s6mKbzZV8c2mKr7ZVMU3m6r4ZlMV32yq4ptNVXyzqYpvNlXxzaYqvtlUxTebqvhmUxXfbKrim01VfLOpim82VfHNpiq+2VTFN5uq+GZTFd9squKbTVV8s6mKbzZV8c2mKr7ZVMU3m6r4ZlMV32yq4ptNVXyzqYpvNlXxzaYqvtlUxTebqvhmUxXfbKrim01VfLOpim82VfHNpiq+2VTFN5uq+GZTFd9squKbTVV8s6mKbzZV8c2mKr7ZVMU3m6r4ZlMV32yq4ptNVXyzqYpvNlXxzaYqvtlUxTebqvhmUxXfbKrim01VfLOpim82VfHNpiq+2VTFN5uq+GZTFd9squKbTVV8s6mKbzZV8c2mKr7ZVMU3m6r4ZlMV32yq4ptNVXyzqYpvNlXxzaYqvtlUxTebqvhmU1XfbKrqm01VfbOpqm82Vd1cd93qm01VfbOpqm82VfXNpqq+2VTVN5uq+mZTVd9squqbTVV9s6mqbzZV9c2mqr7ZVNU3m6r6ZlNV32yq6ptNVX2zqapvNlX1zaaqvtlU1TebqvpmU1XfbKrqm01VfbOpqm82VfXNpqq+2VTVN5uq+mZTVd9squqbTVV9s6mqbzZV9c2mqr7ZVNU3m6r6ZlNV32yq6ptNVX2zqapvNlX1zaaqvtlU1TebqvpmU1XfbKrqm01VfbOpqm82VfXNpqq+2VTVN5uq+mZTVd9squqbTVV9s6mqbzZV9c2mqr7ZVNU3m6r6ZlNV32yq6ptNVX2zqapvNlX1zaaqvtlU1TebqvpmU1XfbKrqm01VfbOpqm82VfXNpqq+2VTVN5uq+mZTVd9squqbTVV9s6mqbzZV9c2mqr7ZVNU3m6r6ZlNV32yq6ptNVX2zqapvNlX1zaaqvtlU1TebqvpmUzXfbKrmm03VfLOpmm82Vdtcd93mm03VfLOpmm82VfPNpmq+2VTNN5uq+WZTNd9squabTdV8s6mabzZV882mar7ZVM03m6r5ZlM132yq5ptN1XyzqZpvNlXzzaZqvtlUzTebqvlmUzXfbKrmm03VfLOpmm82VfPNpmq+2VTNN5uq+WZTNd9squabTdV8s6mabzZV882mar7ZVM03m6r5ZlM132yq5ptN1XyzqZpvNlXzzaZqvtlUzTebqvlmUzXfbKrmm03VfLOpmm82VfPNpmq+2VTNN5uq+WZTNd9squabTdV8s6mabzZV882mar7ZVM03m6r5ZlM132yq5ptN1XyzqZpvNlXzzaZqvtlUzTebqvlmUzXfbKrmm03VfLOpmm82VfPNpmq+2VTNN5uq+WZTNd9squabTdV8s6mabzZV882mar7ZVM03m6r5ZlM132yq5ptN1XyzqZpvNlXzzaZqvtlUzTebqvlmU3XfbKrum03VfbOpum82Vd9cd93um03VfbOpum82VffNpuq+2VTdN5uq+2ZTdd9squ6bTdV9s6m6bzZV982m6r7ZVN03m6r7ZlN132yq7ptN1X2zqbpvNlX3zabqvtlU3TebqvtmU3XfbKrum03VfbOpum82VffNpuq+2VTdN5uq+2ZTdd9squ6bTdV9s6m6bzZV982m6r7ZVN03m6r7ZlN132yq7ptN1X2zqbpvNlX3zabqvtlU3TebqvtmU3XfbKrum03VfbOpum82VffNpuq+2VTdN5uq+2ZTdd9squ6bTdV9s6m6bzZV982m6r7ZVN03m6r7ZlN132yq7ptN1X2zqbpvNlX3zabqvtlU3TebqvtmU3XfbKrum03VfbOpum82VffNpuq+2VTdN5uq+2ZTdd9squ6bTdV9s6m6bzZV982m6r7ZVN03m6r7ZlN132yq7ptN1X2zqbpvNlX3zabqvtlU3TebqvtmUw3fbKrhm001fLOphm821dhcd93hm001fLOphm821fDNphq+2VTDN5tq+GZTDd9squGbTTV8s6mGbzbV8M2mGr7ZVMM3m2r4ZlMN32yq4ZtNNXyzqYZvNtXwzaYavtlUwzebavhmUw3fbKrhm001fLOphm821fDNphq+2VTDN5tq+GZTDd9squGbTTV8s6mGbzbV8M2mGr7ZVMM3m2r4ZlMN32yq4ZtNNXyzqYZvNtXwzaYavtlUwzebavhmUw3fbKrhm001fLOphm821fDNphq+2VTDN5tq+GZTDd9squGbTTV8s6mGbzbV8M2mGr7ZVMM3m2r4ZlMN32yq4ZtNNXyzqYZvNtXwzaYavtlUwzebavhmUw3fbKrhm001fLOphm821fDNphq+2VTDN5tq+GZTDd9squGbTTV8s6mGbzbV8M2mGr7ZVMM3m2r4ZlMN32yq4ZtNNXyzqYZvNtXwzaYavtlUwzebavhmU4XNN5xqj991393jd9149/hdd949ftetd4/fde/d43fdfPf4XXffPX7X7XeP33n/9Y2p2uN33n99g6r2+J33X9+oqj1+5/3XN6xqj995//WNq9rjd95/fQOr9uic91/fyKo9Ouf91ze0ao/Oef/1ja3ao3Pef32Dq/bonPdf3+iqPX7n/dc3vGqP33n/9Y2v2uN33n99A6z2+J33X98Iqz1+5/3XN8Rqj995//WNsdrjd95/fYOs9vid91/fKKs9fuf91zfMao/fef/1jbPa43fef30Drfb4nfdf30irPX7n/dc31GqP33n/9Y212uN33n99g632+J33X99oqz1+5/3XN9xqj995//WNt9rjd95/fQOu9vid91/fiKs9fuf91zfkao/fef/1jbna43fef32Drvb4nfdf36irPX7n/dc37GqP33n/9Y272uN33n99A6/2+J33X9/Iqz1+5/3XN/Rqj995//WNvdrjd95/fYOv9vid91/f6Ks9fuf91zf8ao/fef/1jb/a4/fdf4Nz/lVwzr8KzvlXwTn/Kmy++29wzr8KzvlXwTn/KjjnXwXn/KvgnH8VnPOvgnP+VXDOvwrO+VfBOf8qOOdfBef8q+CcfxWc86+Cc/5VcM6/Cs75V8E5/yo4518F5/yr4Jx/FZzzr4Jz/lVwzr8KzvlXwTn/KjjnXwXn/KvgnH8VnPOvgnP+VXDOvwrO+VfBOf8qOOdfBef8q+CcfxWc86+Cc/5VcM6/Cs75V8E5/yo4518F5/yr4Jx/FZzzr4Jz/lVwzr8KzvlXwTn/KjjnXwXn/KvgnH8VnPOvgnP+VXDOvwrO+VfBOf8qOOdfBef8q+CcfxWc86+Cc/5VcM6/Cs75V8E5/yo4518F5/yr4Jx/FZzzr4Jz/lVwzr8KzvlXwTn/KjjnXwXn/KvgnH8VnPOvgnP+VXDOvwrO+VfBOf8qOOdfBef8q+CcfxWc86+Cc/5VcM6/Cs75V8E5/yo4518F5/yr4Jx/FZzzr6Jz/lV0zr+KzvlX0Tn/Km6++290zr+KzvlX0Tn/KjrnX0Xn/KvonH8VnfOvonP+VXTOv4rO+VfROf8qOudfRef8q+icfxWd86+ic/5VdM6/is75V9E5/yo6519F5/yr6Jx/FZ3zr6Jz/lV0zr+KzvlX0Tn/KjrnX0Xn/KvonH8VnfOvonP+VXTOv4rO+VfROf8qOudfRef8q+icfxWd86+ic/5VdM6/is75V9E5/yo6519F5/yr6Jx/FZ3zr6Jz/lV0zr+KzvlX0Tn/KjrnX0Xn/KvonH8VnfOvonP+VXTOv4rO+VfROf8qOudfRef8q+icfxWd86+ic/5VdM6/is75V9E5/yo6519F5/yr6Jx/FZ3zr6Jz/lV0zr+KzvlX0Tn/KjrnX0Xn/KvonH8VnfOvonP+VXTOv4rO+VfROf8qOudfRef8q+icfxWd86+ic/5VdM6/is75V9E5/yo6519F5/yr6Jx/FZ3zr5Jz/lVyzr9KzvlXyTn/Km2++29yzr9KzvlXyTn/KjnnXyXn/KvknH+VnPOvknP+VXLOv0rO+VfJOf8qOedfJef8q+Scf5Wc86+Sc/5Vcs6/Ss75V8k5/yo5518l5/yr5Jx/lZzzr5Jz/lVyzr9KzvlXyTn/KjnnXyXn/KvknH+VnPOvknP+VXLOv0rO+VfJOf8qOedfJef8q+Scf5Wc86+Sc/5Vcs6/Ss75V8k5/yo5518l5/yr5Jx/lZzzr5Jz/lVyzr9KzvlXyTn/KjnnXyXn/KvknH+VnPOvknP+VXLOv0rO+VfJOf8qOedfJef8q+Scf5Wc86+Sc/5Vcs6/Ss75V8k5/yo5518l5/yr5Jx/lZzzr5Jz/lVyzr9KzvlXyTn/KjnnXyXn/KvknH+VnPOvknP+VXLOv0rO+VfJOf8qOedfJef8q+Scf5Wc86+Sc/5Vcs6/Ss75V8k5/yo5518l5/yr5Jx/lZzzr7Jz/lV2zr/KzvlX2Tn/Km+++292zr/KzvlX2Tn/KjvnX2Xn/KvsnH+VnfOvsnP+VXbOv8rO+VfZOf8qO+dfZef8q+ycf5Wd86+yc/5Vds6/ys75V9k5/yo7519l5/yr7Jx/lZ3zr7Jz/lV2zr/KzvlX2Tn/KjvnX2Xn/KvsnH+VnfOvsnP+VXbOv8rO+VfZOf8qO+dfZef8q+ycf5Wd86+yc/5Vds6/ys75V9k5/yo7519l5/yr7Jx/lZ3zr7Jz/lV2zr/KzvlX2Tn/KjvnX2Xn/KvsnH+VnfOvsnP+VXbOv8rO+VfZOf8qO+dfZef8q+ycf5Wd86+yc/5Vds6/ys75V9k5/yo7519l5/yr7Jx/lZ3zr7Jz/lV2zr/KzvlX2Tn/KjvnX2Xn/KvsnH+VnfOvsnP+VXbOv8rO+VfZOf8qO+dfZef8q+ycf5Wd86+yc/5Vds6/ys75V9k5/yo7519l5/yr7Jx/lZ3zr4pz/lVxzr8qzvlXxTn/qmy++29xzr8qzvlXxTn/qjjnXxXn/KvinH9VnPOvinP+VXHOvyrO+VfFOf+qOOdfFef8q+Kcf1Wc86+Kc/5Vcc6/Ks75V8U5/6o4518V5/yr4px/VZzzr4pz/lVxzr8qzvlXxTn/qjjnXxXn/KvinH9VnPOvinP+VXHOvyrO+VfFOf+qOOdfFef8q+Kcf1Wc86+Kc/5Vcc6/Ks75V8U5/6o4518V5/yr4px/VZzzr4pz/lVxzr8qzvlXxTn/qjjnXxXn/KvinH9VnPOvinP+VXHOvyrO+VfFOf+qOOdfFef8q+Kcf1Wc86+Kc/5Vcc6/Ks75V8U5/6o4518V5/yr4px/VZzzr4pz/lVxzr8qzvlXxTn/qjjnXxXn/KvinH9VnPOvinP+VXHOvyrO+VfFOf+qOOdfFef8q+Kcf1Wc86+Kc/5Vcc6/Ks75V8U5/6o4518V5/yr4px/VZzzr6pz/lV1zr+qzvlX1Tn/qm6++291zr+qzvlX1Tn/qjrnX1Xn/KvqnH9VnfOvqnP+VXXOv6rO+VfVOf+qOudfVef8q+qcf1Wd86+qc/5Vdc6/qs75V9U5/6o6519V5/yr6px/VZ3zr6pz/lV1zr+qzvlX1Tn/qjrnX1Xn/KvqnH9VnfOvqnP+VXXOv6rO+VfVOf+qOudfVef8q+qcf1Wd86+qc/5Vdc6/qs75V9U5/6o6519V5/yr6px/VZ3zr6pz/lV1zr+qzvlX1Tn/qjrnX1Xn/KvqnH9VnfOvqnP+VXXOv6rO+VfVOf+qOudfVef8q+qcf1Wd86+qc/5Vdc6/qs75V9U5/6o6519V5/yr6px/VZ3zr6pz/lV1zr+qzvlX1Tn/qjrnX1Xn/KvqnH9VnfOvqnP+VXXOv6rO+VfVOf+qOudfVef8q+qcf1Wd86+qc/5Vdc6/qs75V9U5/6o6519V5/yr6px/VZ3zr5pz/lVzzr9qzvlXzTn/qm2++29zzr9qzvlXzTn/qjnnXzXn/KvmnH/VnPOvmnP+VXPOv2rO+VfNOf+qOedfNef8q+acf9Wc86+ac/5Vc86/as75V805/6o551815/yr5px/1Zzzr5pz/lVzzr9qzvlXzTn/qjnnXzXn/KvmnH/VnPOvmnP+VXPOv2rO+VfNOf+qOedfNef8q+acf9Wc86+ac/5Vc86/as75V805/6o551815/yr5px/1Zzzr5pz/lVzzr9qzvlXzTn/qjnnXzXn/KvmnH/VnPOvmnP+VXPOv2rO+VfNOf+qOedfNef8q+acf9Wc86+ac/5Vc86/as75V805/6o551815/yr5px/1Zzzr5pz/lVzzr9qzvlXzTn/qjnnXzXn/KvmnH/VnPOvmnP+VXPOv2rO+VfNOf+qOedfNef8q+acf9Wc86+ac/5Vc86/as75V805/6o551815/yr5px/1Zzzr7pz/lV3zr/qzvlX3Tn/qm+++293zr/qzvlX3Tn/qjvnX3Xn/KvunH/V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lNTEZ6Wk5jIrJTU9WSmZpaSRkppxrJTUjPNZyZc6vHNLi091ejv5c7ZHkp+BpHzwJ413crHXknd2Mddy8E4v9lryzi/2WvJOMPZa8s4w9lpmaWmmJe8cY68l7yRjr6XmHjstNffYaam5x0jLum2ae+y01Nxjp6XmHjstNffYaZmlpZmWmnvstNTcY6el5h47LTX32GmpucdMy6C5x05LzT12WmrusdNSc4+dlllammmpucdOS809dlpq7rHTUnOPnZaae8y0jJp77LTU3GOnpeYeOy0199hpmaWlmZaae+y01Nxjp6XmHjstNffYaam5x0zLpLnHTkvNPXZaau6x01Jzj52WWVqaaam5x05LzT12WmrusdNSc4+dlpp7zLTMmnvstNTcY6el5h47LTX32GmZpaWZlpp77LTU3GOnpeYeOy0199hpqbnHTMuiucdOS809dlpq7rHTUnOPnZZZWpppqbnHTkvNPXZaau6x01Jzj52WmnvMtKyae+y01Nxjp6XmHjstNffYaZmlpZmWmnvstNTcY6el5h47LTX32GmpucdMy6a5x05LzT12WmrusdNSc4+dlllammmpucdOS809dlpq7rHTUnOPnZaae8y07Jp77LTU3GOnpeYeOy0199hpmaWlmZaae+y01Nxjp6XmHjstNffYaam5x0zLobnHTkvNPXZaau6x01Jzj52WWVqaaam5x05LzT12WmrusdNSc4+dlpp7rLQMm+YeOy0199hpqbnHTkvNPXZaZmlppqXmHjstNffYaam5x05LzT12WmruMdMyaO6x01Jzj52WmnvstNTcY6dllpZmWmrusdNSc4+dlpp77LTU3GOnpeYeMy2j5h47LTX32GmpucdOS809dlpmaWmmpeYeOy0199hpqbnHTkvNPXZaau4x0zJp7rHTUnOPnZaae+y01Nxjp2WWlmZaau6x01Jzj52WmnvstNTcY6el5h4zLbPmHjstNffYackx97zy5ZhNXvlmsnw5PP4rXw4f/sqXwyu/8uXws698OTznM1+S9+xf+XJ4t1e+ZP6K5O32V77Zbb6vHPx6plcOfn3QKwe/3uaVg1+/8srBrwd55uD4vehXDn69wisHv/3/lYPfnv7KYYE+7fgd3lcOC/Rpx+/OvnJYoE87fmf1mYPj901fOSzQpx2/5/nKYYE+7fj9ylcOC/Rpx+81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lu5TdNe8Okd3zatzdNe8Okd3zatzdNe8OkP3sGlenaO75tU5umtenaO75tU5umfpPkV3zatzdNe8Okd3zatzdNe8Okd3zatTdA+aV+fornl1ju6aV+fornl1ju5Zuk/RXf79ku4x5Ecgsbcz3U95SyHIv8/RXf59iu5R/n2O7vLvc3SXf79B91MuRIjy73N0z9J9iu76vWmO7vq9aY7umlfn6K559Qbdz/czUfPqFN2T5tU5umtenaO75tU5umtenaN7lu5TdNe8Okd3zatzdNe8Okd3zatzdNe8OkX3rHl1ju6aV+fornl1ju6aV+fonqX7FN01r87RXfPqHN01r87RXfPqHN01r07RvWhenaO75tU5umtenaO75tU5umfpPkV3zatzdNe8Okd3zatzdNe8Okd3zatTdK+aV+fornl1ju6aV+fornl1ju5Zuk/RXfPqHN01r87Rnda/h16eUedxovsFwkajdeTmStJ6bHMlaV2zuZK0PthcySwlryiZH3GUDxn+riStVzVXktZ9mitJ+/uHuZK0v2j8TMlzVkzTjGOkZNeMY6WkZhwrJTXjWCmpGcdKySwlryh5vp/smnGslNSMY6WkZhwrJTXjWCmpGcdIyaEZx0pJzThWSmrGsVJSM46VkllKGimpGcdKSc04VkpqxrFSUjOOlZKacWyUjJtmHCslNeNYKakZx0pJzThWSmYpaaSkZhwrJTXjWCmpGcdKSc04VkpqxjFSMmjGsVJSM46VkppxrJTUjGOlZJaSRkpqxrFSUjOOlZKacayU1IxjpaRmHCMlo2YcKyU141gpqRnHSklaP7ml8Ih6G/lMyVPmQIy0ftJcSVo/aa4krZ80V5LWT1ormWj95M+UPKU3xETrJ82VpPWT5krS7szNlcxS8oqSpzflY9KMY6WkZhwrJTXjWCmpGcdKSc04RkpmzTiXlDzfT2bNOFZKasaxUlIzjpWSWUoaKakZx0pJzThWSmrGsVJSM46VkppxjJTkfc3eXEnNOFZKasaxUlIzjpWSWUoaKakZx0pJzThWSmrGsVJSM46VkppxjJTkfQHdXEnNOFZKasaxUlIzjpWSWUoaKakZx0pJzThWSmrGsVJSM46VkppxjJTkfVPeXEnNOFZKasaxUlIzjpWSWUoaKakZx0pJzThWSmrGsVJSM46RkrTvd4fen189cj9T8pw5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vaZ4JV0uV7XSy4FX0uVyVSu9knclXS5XtdKLcFfS5XJVK71+diVdKldVVnrp60q6VK6qrPSq1ZV0qVxV2TJXulSuqqz0WtGVdKlcVVnpZZ4r6XK5qpVeobmSLperWunFlSvpcrmqlV4XuZIul6ta6SWNK+lyuaqVXo24ki6Xq1rphYQr6XK5qpVeA7iSLperWomqfyVdLle1Evn+SrpcrmolOv2VdLlc1UoE+SvpcrmqlSjvV9LlclUrkdivpMvlqrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61euNjqhYutXrjY6oWLrV642OqFi61eudjqlYutXrnY6pWLrV63zJUulauqXGz1ysVWr1xs9crFVq9cbPXKxVavXGz1ysVWr1xs9crFVq9cbPXKxVavXGz1ysVWr1xs9crFVq9cbPXKxVavXGz1ysVWr1xs9crFVq9cbPXKxVavXGz1ysVWr1xs9crFVq9cbPXKxVavXGz1ysVWr1xs9crFVq9cbPXKxVavXGz1ysVWr1xs9crFVq8r0bfDtm2vsMfJl/8kkBhTf6bY8yuONv72m7fyiDluo7y+uX4pXh/Pb44n31xy/PXZktNB8RdyISr+D4u/Epldxf9p8RdyqCr+T4u/kF9X8X9a/IWmFxX/p8XPKj5v8ReabFX8nxZ/oV9PVPyfFn+h35JU/J8WXxs+4uJrw7dq8fvji8uH7/2t+Cu9EqTi/7T42vARF18bPuLia8O3avHbq/j1oPhZxectvjZ8xMXXho+4+NrwERdfGz7i4mvDt2rxyyPkUg/+9u5KL1aq+D8tvjZ8xMXXho+4+NrwERc/q/i8xdeGj7j42vARF18bPuLia8NHXHxt+HiLv9Lr6Sr+T4uvDR9x8bXhIy6+NnzExc8qPm/xteEjLr42fMTF14aPuPja8BEXXxs+3uIPbfiIi68NH3HxteEjLr42fMTFzyo+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8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrA+68O8P6rA7z/6gDvvzrB+69O8P6rE7z/6gTvvzof2O/fE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+69O8P6rE7z/6gTvvzrB+68u8P6rC7z/6gLvv7rA+6+uB/b79wLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P6rC7z/6gLvv7rA+68u8P4rA++/MvD+KwPvvzLw/it7YL9/Dbz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP/KwPuvDLz/ysD7rwy8/8rA+68MvP+qgPdfFfD+qwLef1XA+6/KA/v9W8D7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rCt5/VcH7ryp4/1UF77+qD+z3bwXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvGnj/VQPvv2rg/VcNvP+qPbDfvw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/6uD9Vx28/6qD91918P6r/sB+/3bw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/aoD3Xw3w/qsB3n81wPuvxgP7/TvA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDez+q/OB3X/1fH7o9+/z+aHfv8/nh37/Pp8f+v37fH7o9+/z+aHfv8/nh37/Pp8f+v37fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz+cHfv9j9V8/nB3//YvdfPZ8f/P2L3X/1fH7w9y92/9Xz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778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7ryp4/1UF77+q4P1XFbz/qj6wz98K3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3XzXw/qsG3n/VwPuvGnj/VXtgn78NvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv+rg/Vcd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eo/8Csl87it6l/wKyXzuK3qf/ArJfO4reqf8Csl87it6r/wKyXzuK3q3/ArJfO4rer/8Csl87it6H/0KyXzui6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLruje+rnvj67o3vq574+u6t4fxSaZzX8bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33ha/rvvB13Re+rvvC13VfHsYnmc59Fb6u+8LXdV/4uu4LX9d94eu6L3xd94Wv677wdd0Xvq77wtd1X/i67gtf133h67ovfF33ha/rvvB13Re+rvvC13Vf+LruC1/XfeHrui98XfclVQv6aOevT4/253e/Cc50Kk8JzvS2Hr2/BP/z//7vgjO9q6cEZ3pTTwnO9J6eEpwpI08JzpSQZwSn6sOeEpzqHJ4RnCkbTwnOlIynBBubYDanBdyB/SYC1z29iYjtiNr1+HqQbt/9p/dPb+2vj//TG3cT1YP3VK+QHLyneonk2L5oieTYzmiJ5NjeaIlk45Mc2x8tkRzbIS2RHNtPLZHM576C91SvkBy8p3qJZD73FbyneolkPvcVvKd6iWQ+9xW8p3qJZD73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hay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3tlay/vZL1t1ey/vZK1t9eH0aml8tfVbL+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t9dM/d7H4/H49djjm2/+kwc5z6t/Sez26zna+F+/86O8nvl8jPLrO9d/hNfH13c+v/nOxc6/v7bYdTf9RG5E0//p9DN1v2v6P55+Iqeq6f94+ol8u6b/4+knSjGa/o+nb5o+8fQTJVxN/8fTT/TzFE3/x9NP9NMlTf/H09euj3n62vVlnX5/fePy9n1/n36mO0Sa/o+nr10f8/S162OevnZ9Wafffk2/3k3fNH3i6WvXxzx97fqYp69dH/P0tetjnr52fVmnX16PXOrd7/Rmuomp6f94+tr1MU9fuz7m6WvXxzx90/SJp69dH/P0tetjnr52fczT166Pefra9RFPP9N9dk3/x9PXro95+tr1MU9fuz7m6ZumTzx97fqYp69dH/P0tetjnr52fczT166PePpDuz7m6WvXxzx97fqYp69dH/P0TdMnnr52fczT166Pefra9TFPX7s+5ulr18c7/fbQro95+tr1MU9fuz7m6WvXxzx90/SJp69dH/P0tetjnr52fcTTP5T3t07/qeT4mv5RPaf//W2OdijvM09feZ95+sr7zNM3TZ94+sr7zNNX3meevvI+8/T1uz3M09fv9hBP/9Suj3n62vVlnf731xjbqV0f8/S162Oevmn6xNPXri/r9L+/yNZO7fqYp69dH/P0tetjnr52fcTTv7TrY56+dn1Zpz/xO72Xdn3M09euj3n6pukTT1+7Pubpa9fHPH3t+pinr10f8/S16yOevmnX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798G/v5t4O/fBv7+beDvX5dOqZ3PD/7+beDv3wb+/m3g798G/v4F778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P4rA++/MvD+KwPvvzLw/isD778y8P6rAt5/VcD7rwp4/1UB778qD+z3bwHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvCnj/VQHvvyrg/VcFvP+qgPdfFfD+qwLef1XA+68KeP9VAe+/KuD9VwW8/6qA918V8P6rAt5/VcD7rwp4/1UB778q4P1XBbz/qoD3XxXw/qsC3n9VwPuvKnj/VQXvv6rg/VcVvP+qPrDfvxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/quD9VxW8/6qC919V8P6rCt5/VcH7ryp4/1UF77+q4P1XFbz/qoL3X1Xw/qsK3n9VwfuvKnj/VQXvv6rg/VcVvP+qgvdfVfD+qwref1XB+68qeP9VBe+/auD9Vw28/6qB91818P6r9sB+/zbw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoH3XzXw/qsG3n/VwPuvGnj/VQPvv2rg/VcNvP+qgfdfNfD+qwbef9XA+68aeP9VA++/auD9Vw28/6qB91818P6rBt5/1cD7rxp4/1UD779q4P1XDbz/qoP3X3Xw/qsO3n/Vwfuv+gP7/dvB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qw7ef9XB+686eP9VB++/6uD9Vx28/6qD91918P6rDt5/1cH7rzp4/1UH77/q4P1XHbz/qoP3X3Xw/qsO3n/VwfuvOnj/VQfvv+rg/VcdvP+qg/dfdfD+qwHefzXA+68GeP/VAO+/Gg/s9+8A778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+qwHefzXA+68GeP/VAO+/GuD9VwO8/2qA918N8P6rAd5/NcD7rwZ4/9UA778a4P1XA7z/aoD3Xw3w/qsB3n81wPuvBnj/1QDvvxrg/VcDvP9qgPdfDfD+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UJ3Sm4TQ7qfYK1qPOvp3Qby8HuO5QLr7jy60+/GXG9r9uMuN3fDsLze0+/GXG9r9+MsN7X785RqX3NDux19uaKfkL5fLVcVudPaXy+WqYrc5+8vlclWxm5z95XK5qtgtzv5yuVxV7AZnf7lcrip2e7O/XCpXdcZubvaXS+Wqztitzf5yqVzV+TAuuVSu6ozd1uwvl8pVnbGbmv3lcrmq2C3N/nK5XFXshmZ/uVyuKnY7s79cLlcVu5nZXy6Xq4rdyuwvl8tVxW5k9pfL5apitzH7y+VyVbGbmP3lcrmq2C3M/nK5XFXsBmZ/uVyuKnb7sr9cLlcVu3nZXy6Xq4rduuwvl8tVxW5c9pfL5apity37y+VyVbGblv3lcrmq2C3L/nK5XFXshmV/uVyuKna7sr9cLlcVu1nZXy6Xq4rdquwvl8tVxW5U9pfL5apityn7y+VyVbGblP3lcrmqwuWqYrdku8uN3ZLtL5fLVVUuVxW7A91frnHJ5XJVsTvQ/eVyuarYHej+crlcVewOdH+5XK4qdge6v1wuVxW7A91fLperit2X7i+Xy1VxdaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qF1e3+sXVrX5xdatfXN3q18O45FK5qourW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6la/uLrVL65u9YurW/3i6lY3rm514+pWN65udePqVreHccml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cnC/s0JycMezQnJwz7NCcnCHtEJycD+1QHLwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvncV/BO5SWS+dxX8E7lJZL53FfwTuUlkvnc1+BzX4PPfQVvzl4imc99DT73NfjcV/CO9CWS6dzXFbwnfYlkOvd1Be9KXyKZzn1dD+OTTOe+ruCd6Usk07mvK3hv+hLJfO4reHf6Esl87it4L/sSyXzuK3g3+xLJfO4reD/7Esl87it4R/sSyXzuK3hP+xLJfO4reFf7Esl87it4X/sSyXzuK3hn+xLJfO4reG/7Esl87it4z/sSyXzuK3qH/ArJfO4reo/8Csl87it6l/wKyXzuK3qf/ArJfO4reqf8Csl87it6r/wKyXzuK3q3/ArJfO4rer/8Csl87it6H/0KyXzui6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLrur/4uu4vvq77i6/r/uLruje+rnvj67o3vq574+u6t4fxSaZzX8bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33xtd1b3xd98bXdW98XffG13VvfF33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"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi"}]}},"file_map":{"101":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nfn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"110":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\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 _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\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 is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"145":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"158":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\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 Serialize for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"160":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"163":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize for 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 serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"164":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\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 Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> 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"},"165":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse dep::std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"166":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"167":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"168":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"176":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"177":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"178":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"179":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"180":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\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 function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x22786e4f971661d2e49095e6b038e5170bc47b795253916d5657c4bdd1df50bf;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"186":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"189":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"190":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1970bf189adc837d1769f9f44a8b55c97d45690e7744859b71b647e808ee8622;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"198":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\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_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x03ab5026ab5b3e6b81be5c3ec31c7937f293180c25a240eb75693cda81bb2a05;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"200":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"201":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"203":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\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::empty();\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\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x124a62189073cc551fea148d735d1e8b452e38537e075895b02ccfd9c9901819;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x2cbb07062730bfc4933f5e8d533d5b62ac6e1b7922b831993377cd85d7445399;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"205":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\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 FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"206":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\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 Serialize for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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 { inner: result }\n }\n}\n"},"210":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl 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, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(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 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 // 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, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\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 pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\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 by modding\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\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"222":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"233":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"234":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"240":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"254":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"265":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\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_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&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 // TODO(#4394)\n pub fn read_struct(&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(&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"},"266":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"268":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n contract_class_id::ContractClassId, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{Hash, is_empty},\n utils::{uint256::U256, field::field_from_bytes_32_trunc}\n};\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u32) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\nfn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_siloed_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, first_nullifier: Field, index: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(first_nullifier, index);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_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\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn 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::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\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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 silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"358":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr","source":"// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u32) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u32) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any(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\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n"},"51":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\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,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"66":{"path":"/mnt/user-data/mara/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::encrypted_logs::{payload::compute_encrypted_note_log};\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_unencrypted_log_hash},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n note::{note_interface::NoteInterface, utils::compute_note_hash_for_insertion},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{\n emit_encrypted_note_log, emit_encrypted_event_log, compute_encrypted_event_log,\n emit_contract_class_unencrypted_log_private_internal, emit_unencrypted_log_private_internal\n},\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n hash::sha256_to_field,\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, grumpkin_point::GrumpkinPoint, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{is_empty, Empty},\n utils::arrays::find_index\n};\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 min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n new_note_hashes: BoundedVec,\n new_nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_stack_hashes : BoundedVec,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Ending setup at counter {0}\",\n [self.side_effect_counter as Field]\n );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\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(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\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 // 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.\n pub fn emit_unencrypted_log(\n &mut self,\n log: T\n ) where T: ToBytesForUnencryptedLog {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + log_slice.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n let len = 44 + N * 32;\n let side_effect = LogHash { value: log_hash, counter, length: len };\n self.unencrypted_logs_hashes.push(side_effect);\n }\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn encrypt_and_emit_event(\n &mut self,\n randomness: Field, // Secret random value used later for masked_contract_address\n event_type_id: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog {\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n let contract_address = self.this_address();\n\n // We are currently just encrypting it unconstrained, but otherwise the same way as if it was a note.\n let encrypted_log: [u8; M] = compute_encrypted_event_log(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n preimage\n );\n\n self.emit_raw_event_log_with_masked_address(randomness, encrypted_log);\n }\n\n pub fn emit_raw_event_log_with_masked_address(\n &mut self,\n randomness: Field,\n encrypted_log: [u8; M]\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, encrypted_log, counter);\n }\n\n pub fn encrypt_and_emit_note(\n &mut self,\n storage_slot: Field,\n ovpk_m: GrumpkinPoint,\n ivpk_m: GrumpkinPoint,\n note: Note\n ) where Note: NoteInterface, [Field; N]: LensForEncryptedLog {\n let note_hash_counter = note.get_header().note_hash_counter;\n let note_exists_index = find_index(\n self.new_note_hashes.storage,\n |n: NoteHash| n.counter == note_hash_counter\n );\n assert(\n note_exists_index as u32 != MAX_NEW_NOTE_HASHES_PER_CALL, \"Can only emit a note log for an existing note.\"\n );\n\n let contract_address = self.this_address();\n let ovsk_app = self.request_ovsk_app(ovpk_m.hash());\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(contract_address, storage_slot, ovsk_app, ovpk_m, ivpk_m, note);\n self.emit_raw_note_log(note_hash_counter, encrypted_log);\n }\n\n pub fn emit_raw_note_log(&mut self, note_hash_counter: u32, encrypted_log: [u8; M]) {\n let counter = self.next_counter();\n let len = encrypted_log.len() as Field + 4;\n let log_hash = sha256_to_field(encrypted_log);\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, encrypted_log, counter);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\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 call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\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.side_effect_counter, self.side_effect_counter);\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"}}} \ No newline at end of file From 61b47894df51bfd0fd41ebca20dd07c1b8752ea2 Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 19 Aug 2024 09:42:39 +0000 Subject: [PATCH 40/47] make pow fix not affect other prover and verifier than ultra --- barretenberg/cpp/output_file | 1 - .../cpp/src/barretenberg/common/mem.hpp | 1 - .../scalar_multiplication.cpp | 58 +- .../cpp/src/barretenberg/polynomials/pow.hpp | 30 +- .../ultra_honk/ultra_honk.test.cpp | 18 +- output | 1210 ----------------- 6 files changed, 61 insertions(+), 1257 deletions(-) delete mode 100644 barretenberg/cpp/output_file delete mode 100644 output diff --git a/barretenberg/cpp/output_file b/barretenberg/cpp/output_file deleted file mode 100644 index 2bd926ca9ef..00000000000 --- a/barretenberg/cpp/output_file +++ /dev/null @@ -1 +0,0 @@ -Test project /mnt/user-data/mara/aztec-packages/barretenberg/cpp diff --git a/barretenberg/cpp/src/barretenberg/common/mem.hpp b/barretenberg/cpp/src/barretenberg/common/mem.hpp index 7654b2b0d34..d07b85d5da9 100644 --- a/barretenberg/cpp/src/barretenberg/common/mem.hpp +++ b/barretenberg/cpp/src/barretenberg/common/mem.hpp @@ -47,7 +47,6 @@ inline void* protected_aligned_alloc(size_t alignment, size_t size) // NOLINTNEXTLINE(cppcoreguidelines-owning-memory) t = aligned_alloc(alignment, size); if (t == nullptr) { - info("allingment ", alignment); info("bad alloc of size: ", size); std::abort(); } diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp index 6e0496cbbef..22e2c72f405 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp @@ -18,6 +18,22 @@ // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays, google-readability-casting) #define BBERG_SCALAR_MULTIPLICATION_FETCH_BLOCK \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 16] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 17] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 18] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 19] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 20] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 21] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 22] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 23] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 24] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 25] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 26] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 27] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 28] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 29] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 30] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 31] >> 32ULL)); \ \ uint64_t schedule_a = state.point_schedule[schedule_it]; \ uint64_t schedule_b = state.point_schedule[schedule_it + 1]; \ @@ -317,10 +333,10 @@ void add_affine_points(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - // __builtin_prefetch(points + i - 2); - // __builtin_prefetch(points + i - 1); - // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + __builtin_prefetch(points + i - 2); + __builtin_prefetch(points + i - 1); + __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + __builtin_prefetch(scratch_space + ((i - 2) >> 1)); points[i + 1].y *= batch_inversion_accumulator; // update accumulator batch_inversion_accumulator *= points[i + 1].x; @@ -374,10 +390,10 @@ void add_affine_points_with_edge_cases(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - // __builtin_prefetch(points + i - 2); - // __builtin_prefetch(points + i - 1); - // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + __builtin_prefetch(points + i - 2); + __builtin_prefetch(points + i - 1); + __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + __builtin_prefetch(scratch_space + ((i - 2) >> 1)); if (points[i].is_point_at_infinity()) { points[(i + num_points) >> 1] = points[i + 1]; @@ -643,10 +659,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 4: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; const uint64_t schedule_c = state.point_schedule[schedule_it + 2]; @@ -669,10 +685,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 2: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; @@ -687,10 +703,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 1: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; Group::conditional_negate_affine(state.points + (schedule_a >> 32ULL), @@ -706,7 +722,7 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b default: { for (size_t k = 0; k < k_end; ++k) { uint64_t schedule = state.point_schedule[schedule_it]; - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); const uint64_t predicate = (schedule >> 31UL) & 1UL; diff --git a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp index 9719c95b8d3..26217478aec 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp @@ -64,20 +64,20 @@ template struct PowPolynomial { */ FF univariate_eval(FF challenge) const { return (FF(1) + (challenge * (betas[current_element_idx] - FF(1)))); }; - // /** - // * @brief Evaluate \f$ ((1−X_{i}) + X_{i}\cdot \beta_{i})\f$ at the challenge point \f$ X_{i}=u_{i} \f$. - // */ - // template FF univariate_eval(const FF& challenge, const Bool& dummy_round) const - // { - // FF beta_or_dummy; - // if (!dummy_round.get_value()) { - // beta_or_dummy = betas[current_element_idx]; - // } else { - // beta_or_dummy = FF::from_witness(challenge.get_context(), 1); - // } - // FF beta_val = FF::conditional_assign(dummy_round, FF::from_witness(challenge.get_context(), 1), - // beta_or_dummy); return (FF(1) + (challenge * (beta_val - FF(1)))); - // } + /** + * @brief Evaluate \f$ ((1−X_{i}) + X_{i}\cdot \beta_{i})\f$ at the challenge point \f$ X_{i}=u_{i} \f$. + */ + template FF univariate_eval(const FF& challenge, const Bool& dummy_round) const + { + FF beta_or_dummy; + if (current_element_idx < betas.size()) { + beta_or_dummy = betas[current_element_idx]; + } else { + beta_or_dummy = FF::from_witness(challenge.get_context(), 1); + } + FF beta_val = FF::conditional_assign(dummy_round, FF::from_witness(challenge.get_context(), 1), beta_or_dummy); + return (FF(1) + (challenge * (beta_val - FF(1)))); + } /** * @brief Partially evaluate the \f$pow_{\beta} \f$-polynomial at the new challenge and update \f$ c_i \f$ @@ -101,7 +101,7 @@ template struct PowPolynomial { */ template void partially_evaluate(const FF& challenge, const stdlib::bool_t& dummy) { - FF current_univariate_eval = univariate_eval(challenge); + FF current_univariate_eval = univariate_eval(challenge, dummy); // If dummy round, make no update to the partial_evaluation_result partial_evaluation_result = FF::conditional_assign( dummy, partial_evaluation_result, partial_evaluation_result * current_univariate_eval); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index 74af801bc63..0da0887d8d7 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -17,8 +17,8 @@ using namespace bb; -using ProverInstance = ProverInstance_; -using VerificationKey = UltraKeccakFlavor::VerificationKey; +using ProverInstance = ProverInstance_; +using VerificationKey = UltraFlavor::VerificationKey; std::vector add_variables(auto& circuit_builder, std::vector variables) { @@ -32,9 +32,9 @@ std::vector add_variables(auto& circuit_builder, std::vector v void prove_and_verify(auto& circuit_builder, bool expected_result) { auto instance = std::make_shared(circuit_builder); - UltraKeccakProver prover(instance); + UltraProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraKeccakVerifier verifier(verification_key); + UltraVerifier verifier(verification_key); auto proof = prover.construct_proof(); bool verified = verifier.verify_proof(proof); EXPECT_EQ(verified, expected_result); @@ -66,7 +66,7 @@ TEST_F(UltraHonkTests, ANonZeroPolynomialIsAGoodPolynomial) auto circuit_builder = UltraCircuitBuilder(); auto instance = std::make_shared(circuit_builder); - UltraKeccakProver prover(instance); + UltraProver prover(instance); auto proof = prover.construct_proof(); auto& polynomials = instance->proving_key.polynomials; @@ -98,9 +98,9 @@ TEST_F(UltraHonkTests, StructuredTrace) // Construct an instance with a structured execution trace TraceStructure trace_structure = TraceStructure::SMALL_TEST; auto instance = std::make_shared(builder, trace_structure); - UltraKeccakProver prover(instance); + UltraProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraKeccakVerifier verifier(verification_key); + UltraVerifier verifier(verification_key); auto proof = prover.construct_proof(); EXPECT_TRUE(verifier.verify_proof(proof)); } @@ -224,9 +224,9 @@ TEST_F(UltraHonkTests, LookupFailure) }; auto prove_and_verify = [](auto& instance) { - UltraKeccakProver prover(instance); + UltraProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraKeccakVerifier verifier(verification_key); + UltraVerifier verifier(verification_key); auto proof = prover.construct_proof(); return verifier.verify_proof(proof); }; diff --git a/output b/output deleted file mode 100644 index bccc8cc3424..00000000000 --- a/output +++ /dev/null @@ -1,1210 +0,0 @@ -diff --git a/barretenberg/acir_tests/sol-test/yarn.lock b/barretenberg/acir_tests/sol-test/yarn.lock -index af80282ea9..9afd4540c9 100644 -Binary files a/barretenberg/acir_tests/sol-test/yarn.lock and b/barretenberg/acir_tests/sol-test/yarn.lock differ -diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp -index 8fe76c8e7a..9ca094bae7 100644 ---- a/barretenberg/cpp/src/barretenberg/bb/main.cpp -+++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp -@@ -196,7 +196,14 @@ bool proveAndVerifyHonkAcirFormat(acir_format::AcirFormat constraint_system, aci - auto proof = prover.construct_proof(); - - // Verify Honk proof -+ info("Printing VK from actual instance"); -+ - auto verification_key = std::make_shared(prover.instance->proving_key); -+ typename Flavor::CommitmentLabels commitment_labels; -+ info("PRINTING THE VKEY IN PROVE AND VERIFY FLOW"); -+ for (auto [label, key] : zip_view(commitment_labels.get_precomputed(), verification_key->get_all())) { -+ info("label: ", label, " value: ", key); -+ } - Verifier verifier{ verification_key }; - - return verifier.verify_proof(proof); -@@ -1093,6 +1100,11 @@ template bool verify_honk(const std::string& proof_path, - auto vk = std::make_shared(from_buffer(read_file(vk_path))); - vk->pcs_verification_key = std::make_shared(); - Verifier verifier{ vk }; -+ typename Flavor::CommitmentLabels commitment_labels; -+ info("PRINTING THE VKEY IN VERIFY ULTRA HONK FLOW"); -+ for (auto [label, key] : zip_view(commitment_labels.get_precomputed(), vk->get_all())) { -+ info("label: ", label, " value: ", key); -+ } - - bool verified = verifier.verify_proof(proof); - -diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp -index 387c11e760..4bec617ffc 100644 ---- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp -+++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp -@@ -367,6 +367,7 @@ INSTANTIATE_TEST_SUITE_P(AcirTests, - "unconstrained_empty", - "unit_value", - "unsafe_range_constraint", -+ "verify_honk_proof", - "witness_compression", - "xor")); - -@@ -453,6 +454,29 @@ TEST_F(AcirIntegrationTest, DISABLED_Databus) - EXPECT_TRUE(prove_and_verify_honk(builder)); - } - -+/** -+ * @brief A basic test of a circuit generated in noir that makes use of the databus -+ * -+ */ -+TEST_F(AcirIntegrationTest, DISABLED_Honk_Constraint) -+{ -+ using Flavor = UltraFlavor; -+ using Builder = Flavor::CircuitBuilder; -+ -+ std::string test_name = "verify_honk_proof"; -+ info("Test: ", test_name); -+ acir_format::AcirProgram acir_program = get_program_data_from_test_file(test_name, true); -+ -+ // Construct a bberg circuit from the acir representation -+ Builder builder = acir_format::create_circuit(acir_program.constraints, 0, acir_program.witness); -+ -+ // This prints a summary of the types of gates in the circuit -+ builder.blocks.summarize(); -+ -+ // Construct and verify Honk proof -+ EXPECT_TRUE(prove_and_verify_honk(builder)); -+} -+ - /** - * @brief Test a program that uses two databus calldata columns - * @details In addition to checking that a proof of the resulting circuit verfies, check that the specific structure of -diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp -index da877ebb2d..6ff16c6175 100644 ---- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp -+++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.cpp -@@ -36,6 +36,12 @@ void create_dummy_vkey_and_proof(Builder& builder, - // Set vkey->circuit_size correctly based on the proof size - size_t num_frs_comm = bb::field_conversion::calc_num_bn254_frs(); - size_t num_frs_fr = bb::field_conversion::calc_num_bn254_frs(); -+ info("is the first assert true: ", -+ (input.proof.size() - HonkRecursionConstraint::inner_public_input_offset - -+ UltraFlavor::NUM_WITNESS_ENTITIES * num_frs_comm - UltraFlavor::NUM_ALL_ENTITIES * num_frs_fr - -+ 2 * num_frs_comm) % -+ (num_frs_comm + num_frs_fr * UltraFlavor::BATCHED_RELATION_PARTIAL_LENGTH) == -+ 0); - assert((input.proof.size() - HonkRecursionConstraint::inner_public_input_offset - - UltraFlavor::NUM_WITNESS_ENTITIES * num_frs_comm - UltraFlavor::NUM_ALL_ENTITIES * num_frs_fr - - 2 * num_frs_comm) % -@@ -102,6 +108,7 @@ void create_dummy_vkey_and_proof(Builder& builder, - offset += 4; - } - -+ info("here ", Flavor::BATCHED_RELATION_PARTIAL_LENGTH); - // now the univariates, which can just be 0s (7*CONST_PROOF_SIZE_LOG_N Frs) - for (size_t i = 0; i < CONST_PROOF_SIZE_LOG_N * Flavor::BATCHED_RELATION_PARTIAL_LENGTH; i++) { - builder.assert_equal(builder.add_variable(fr::random_element()), proof_fields[offset].witness_index); -@@ -135,6 +142,7 @@ void create_dummy_vkey_and_proof(Builder& builder, - builder.assert_equal(builder.add_variable(frs[3]), proof_fields[offset + 3].witness_index); - offset += 4; - } -+ info("is the last assert true: ", offset == input.proof.size() + input.public_inputs.size()); - ASSERT(offset == input.proof.size() + input.public_inputs.size()); - } - -@@ -191,8 +199,10 @@ AggregationObjectIndices create_honk_recursion_constraints(Builder& builder, - if (!has_valid_witness_assignments) { - create_dummy_vkey_and_proof(builder, input, key_fields, proof_fields); - } -+ - // Recursively verify the proof - auto vkey = std::make_shared(builder, key_fields); -+ Flavor::CommitmentLabels commitment_labels; - RecursiveVerifier verifier(&builder, vkey); - aggregation_state_ct input_agg_obj = bb::stdlib::recursion::convert_witness_indices_to_agg_obj( - builder, input_aggregation_object_indices); -diff --git a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp -index 6851f79b1d..9719c95b8d 100644 ---- a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp -+++ b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp -@@ -64,20 +64,20 @@ template struct PowPolynomial { - */ - FF univariate_eval(FF challenge) const { return (FF(1) + (challenge * (betas[current_element_idx] - FF(1)))); }; - -- /** -- * @brief Evaluate \f$ ((1−X_{i}) + X_{i}\cdot \beta_{i})\f$ at the challenge point \f$ X_{i}=u_{i} \f$. -- */ -- template FF univariate_eval(const FF& challenge, const Bool& dummy_round) const -- { -- FF beta_or_dummy; -- if (!dummy_round.get_value()) { -- beta_or_dummy = betas[current_element_idx]; -- } else { -- beta_or_dummy = FF::from_witness(challenge.get_context(), 1); -- } -- FF beta_val = FF::conditional_assign(dummy_round, FF::from_witness(challenge.get_context(), 1), beta_or_dummy); -- return (FF(1) + (challenge * (beta_val - FF(1)))); -- } -+ // /** -+ // * @brief Evaluate \f$ ((1−X_{i}) + X_{i}\cdot \beta_{i})\f$ at the challenge point \f$ X_{i}=u_{i} \f$. -+ // */ -+ // template FF univariate_eval(const FF& challenge, const Bool& dummy_round) const -+ // { -+ // FF beta_or_dummy; -+ // if (!dummy_round.get_value()) { -+ // beta_or_dummy = betas[current_element_idx]; -+ // } else { -+ // beta_or_dummy = FF::from_witness(challenge.get_context(), 1); -+ // } -+ // FF beta_val = FF::conditional_assign(dummy_round, FF::from_witness(challenge.get_context(), 1), -+ // beta_or_dummy); return (FF(1) + (challenge * (beta_val - FF(1)))); -+ // } - - /** - * @brief Partially evaluate the \f$pow_{\beta} \f$-polynomial at the new challenge and update \f$ c_i \f$ -@@ -101,7 +101,7 @@ template struct PowPolynomial { - */ - template void partially_evaluate(const FF& challenge, const stdlib::bool_t& dummy) - { -- FF current_univariate_eval = univariate_eval(challenge, dummy); -+ FF current_univariate_eval = univariate_eval(challenge); - // If dummy round, make no update to the partial_evaluation_result - partial_evaluation_result = FF::conditional_assign( - dummy, partial_evaluation_result, partial_evaluation_result * current_univariate_eval); -@@ -114,9 +114,10 @@ template struct PowPolynomial { - * \ell)\f$ for \f$ \ell =0,\ldots,2^{d}-1\f$. - * - */ -- BB_PROFILE void compute_values() -+ BB_PROFILE void compute_values(std::optional subspan = std::nullopt) - { -- size_t pow_size = 1 << betas.size(); -+ -+ size_t pow_size = subspan.has_value() ? 1 << subspan.value() : 1 << betas.size(); - info("size of pow", pow_size); - pow_betas = std::vector(pow_size); - -diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp -index e37cc16289..cd101e5ffe 100644 ---- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp -+++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/verifier.test.cpp -@@ -126,7 +126,9 @@ template class RecursiveVerifierTest : public testing - static void test_independent_vk_hash() - { - // Retrieves the trace blocks (each consisting of a specific gate) from the recursive verifier circuit -- auto get_blocks = [](size_t inner_size) { // Create an arbitrary inner circuit -+ auto get_blocks = [](size_t inner_size) -+ -> std::tuple> { -+ // Create an arbitrary inner circuit - auto inner_circuit = create_inner_circuit(inner_size); - - // Generate a proof over the inner circuit -@@ -142,7 +144,12 @@ template class RecursiveVerifierTest : public testing - [[maybe_unused]] auto pairing_points = verifier.verify_proof( - inner_proof, - init_default_aggregation_state(outer_circuit)); -- return outer_circuit.blocks; -+ -+ auto outer_instance = std::make_shared(outer_circuit); -+ auto outer_verification_key = -+ std::make_shared(outer_instance->proving_key); -+ -+ return { outer_circuit.blocks, outer_verification_key }; - }; - - bool broke(false); -@@ -156,12 +163,15 @@ template class RecursiveVerifierTest : public testing - } - }; - -- auto blocks_10 = get_blocks(10); -- auto blocks_11 = get_blocks(11); -+ auto [blocks_10, verification_key_10] = get_blocks(10); -+ auto [blocks_11, verification_key_11] = get_blocks(11); -+ - size_t block_idx = 0; - for (auto [b_10, b_11] : zip_view(blocks_10.get(), blocks_11.get())) { - info("block index: ", block_idx); - size_t sel_idx = 0; -+ EXPECT_TRUE(b_10.selectors.size() == 13); -+ EXPECT_TRUE(b_11.selectors.size() == 13); - for (auto [p_10, p_11] : zip_view(b_10.selectors, b_11.selectors)) { - - info("sel index: ", sel_idx); -@@ -171,6 +181,18 @@ template class RecursiveVerifierTest : public testing - block_idx++; - } - -+ typename OuterFlavor::CommitmentLabels labels; -+ for (auto [vk_10, vk_11, label] : -+ zip_view(verification_key_10->get_all(), verification_key_11->get_all(), labels.get_precomputed())) { -+ if (vk_10 != vk_11) { -+ broke = true; -+ info("Mismatch verification key label: ", label, " left: ", vk_10, " right: ", vk_11); -+ } -+ } -+ -+ EXPECT_TRUE(verification_key_10->circuit_size == verification_key_11->circuit_size); -+ EXPECT_TRUE(verification_key_10->num_public_inputs == verification_key_11->num_public_inputs); -+ - EXPECT_FALSE(broke); - } - -@@ -192,6 +214,10 @@ template class RecursiveVerifierTest : public testing - // Create a recursive verification circuit for the proof of the inner circuit - OuterBuilder outer_circuit; - RecursiveVerifier verifier{ &outer_circuit, verification_key }; -+ typename RecursiveFlavor::CommitmentLabels commitment_labels; -+ for (auto [label, key] : zip_view(commitment_labels.get_precomputed(), verifier.key->get_all())) { -+ info("label: ", label, " value: ", key.get_value()); -+ } - aggregation_state agg_obj = - init_default_aggregation_state(outer_circuit); - auto pairing_points = verifier.verify_proof(inner_proof, agg_obj); -diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp -index 48714d7993..19bc19d550 100644 ---- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp -+++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak.hpp -@@ -14,6 +14,8 @@ - #include "barretenberg/relations/elliptic_relation.hpp" - #include "barretenberg/relations/logderiv_lookup_relation.hpp" - #include "barretenberg/relations/permutation_relation.hpp" -+#include "barretenberg/relations/poseidon2_external_relation.hpp" -+#include "barretenberg/relations/poseidon2_internal_relation.hpp" - #include "barretenberg/relations/relation_parameters.hpp" - #include "barretenberg/relations/ultra_arithmetic_relation.hpp" - #include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp" -@@ -36,10 +38,10 @@ class UltraKeccakFlavor { - static constexpr size_t NUM_WIRES = CircuitBuilder::NUM_WIRES; - // The number of multivariate polynomials on which a sumcheck prover sumcheck operates (including shifts). We often - // need containers of this size to hold related data, so we choose a name more agnostic than `NUM_POLYNOMIALS`. -- static constexpr size_t NUM_ALL_ENTITIES = 42; -+ static constexpr size_t NUM_ALL_ENTITIES = 44; - // The number of polynomials precomputed to describe a circuit and to aid a prover in constructing a satisfying - // assignment of witnesses. We again choose a neutral name. -- static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 25; -+ static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 27; - // The total number of witness entities not including shifts. - static constexpr size_t NUM_WITNESS_ENTITIES = 8; - // Total number of folded polynomials, which is just all polynomials except the shifts -@@ -51,10 +53,12 @@ class UltraKeccakFlavor { - template - using Relations_ = std::tuple, - bb::UltraPermutationRelation, -- bb::LogDerivLookupRelation, - bb::DeltaRangeConstraintRelation, - bb::EllipticRelation, -- bb::AuxiliaryRelation>; -+ bb::AuxiliaryRelation, -+ bb::LogDerivLookupRelation, -+ bb::Poseidon2ExternalRelation, -+ bb::Poseidon2InternalRelation>; - using Relations = Relations_; - - static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length(); -@@ -98,37 +102,51 @@ class UltraKeccakFlavor { - public: - using DataType = DataType_; - DEFINE_FLAVOR_MEMBERS(DataType, -- q_m, // column 0 -- q_c, // column 1 -- q_l, // column 2 -- q_r, // column 3 -- q_o, // column 4 -- q_4, // column 5 -- q_arith, // column 6 -- q_delta_range, // column 7 -- q_elliptic, // column 8 -- q_aux, // column 9 -- q_lookup, // column 10 -- sigma_1, // column 11 -- sigma_2, // column 12 -- sigma_3, // column 13 -- sigma_4, // column 14 -- id_1, // column 15 -- id_2, // column 16 -- id_3, // column 17 -- id_4, // column 18 -- table_1, // column 19 -- table_2, // column 20 -- table_3, // column 21 -- table_4, // column 22 -- lagrange_first, // column 23 -- lagrange_last) // column 24 -+ q_m, // column 0 -+ q_c, // column 1 -+ q_l, // column 2 -+ q_r, // column 3 -+ q_o, // column 4 -+ q_4, // column 5 -+ q_arith, // column 6 -+ q_delta_range, // column 7 -+ q_elliptic, // column 8 -+ q_aux, // column 9 -+ q_lookup, // column 10 -+ q_poseidon2_external, // column 11 -+ q_poseidon2_internal, // column 12 -+ sigma_1, // column 11 -+ sigma_2, // column 12 -+ sigma_3, // column 13 -+ sigma_4, // column 14 -+ id_1, // column 15 -+ id_2, // column 16 -+ id_3, // column 17 -+ id_4, // column 18 -+ table_1, // column 19 -+ table_2, // column 20 -+ table_3, // column 21 -+ table_4, // column 22 -+ lagrange_first, // column 23 -+ lagrange_last) // column 24 - - static constexpr CircuitType CIRCUIT_TYPE = CircuitBuilder::CIRCUIT_TYPE; - - auto get_selectors() - { -- return RefArray{ q_m, q_c, q_l, q_r, q_o, q_4, q_arith, q_delta_range, q_elliptic, q_aux, q_lookup }; -+ return RefArray{ q_m, -+ q_c, -+ q_l, -+ q_r, -+ q_o, -+ q_4, -+ q_arith, -+ q_delta_range, -+ q_elliptic, -+ q_aux, -+ q_lookup, -+ q_poseidon2_external, -+ q_poseidon2_internal }; - }; - auto get_sigma_polynomials() { return RefArray{ sigma_1, sigma_2, sigma_3, sigma_4 }; }; - auto get_id_polynomials() { return RefArray{ id_1, id_2, id_3, id_4 }; }; -@@ -392,6 +410,8 @@ class UltraKeccakFlavor { - const Commitment& q_elliptic, - const Commitment& q_aux, - const Commitment& q_lookup, -+ const Commitment& q_poseidon2_external, -+ const Commitment& q_poseidon2_internal, - const Commitment& sigma_1, - const Commitment& sigma_2, - const Commitment& sigma_3, -@@ -422,6 +442,8 @@ class UltraKeccakFlavor { - this->q_elliptic = q_elliptic; - this->q_aux = q_aux; - this->q_lookup = q_lookup; -+ this->q_poseidon2_external = q_poseidon2_external; -+ this->q_poseidon2_internal = q_poseidon2_internal; - this->sigma_1 = sigma_1; - this->sigma_2 = sigma_2; - this->sigma_3 = sigma_3; -@@ -539,6 +561,8 @@ class UltraKeccakFlavor { - q_elliptic = "Q_ELLIPTIC"; - q_aux = "Q_AUX"; - q_lookup = "Q_LOOKUP"; -+ q_poseidon2_external = "Q_POSEIDON2_EXTERNAL"; -+ q_poseidon2_internal = "Q_POSEIDON2_INTERNAL"; - sigma_1 = "SIGMA_1"; - sigma_2 = "SIGMA_2"; - sigma_3 = "SIGMA_3"; -@@ -578,6 +602,8 @@ class UltraKeccakFlavor { - this->q_elliptic = verification_key->q_elliptic; - this->q_aux = verification_key->q_aux; - this->q_lookup = verification_key->q_lookup; -+ this->q_poseidon2_external = verification_key->q_poseidon2_external; -+ this->q_poseidon2_internal = verification_key->q_poseidon2_internal; - this->sigma_1 = verification_key->sigma_1; - this->sigma_2 = verification_key->sigma_2; - this->sigma_3 = verification_key->sigma_3; -diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp -index 5fb71170a4..31560aa24e 100644 ---- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp -+++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp -@@ -187,13 +187,8 @@ template class SumcheckProver { - info(multivariate_n); - info(gate_challenges.size()); - -- std::vector gate_challenges_subspan; -- for (size_t i = 0; i < multivariate_d; i++) { -- gate_challenges_subspan.emplace_back(gate_challenges[i]); -- } -- -- bb::PowPolynomial pow_univariate(gate_challenges_subspan); -- pow_univariate.compute_values(); -+ bb::PowPolynomial pow_univariate(gate_challenges); -+ pow_univariate.compute_values(multivariate_d); - - std::vector multivariate_challenge; - multivariate_challenge.reserve(multivariate_d); -@@ -392,11 +387,7 @@ template class SumcheckVerifier { - { - bool verified(true); - -- std::vector gate_challenges_subspan; -- for (size_t i = 0; i < multivariate_d; i++) { -- gate_challenges_subspan.emplace_back(gate_challenges[i]); -- } -- bb::PowPolynomial pow_univariate(gate_challenges_subspan); -+ bb::PowPolynomial pow_univariate(gate_challenges); - // All but final round. - // target_total_sum is initialized to zero then mutated in place. - -diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp -index de79a7dbd8..74af801bc6 100644 ---- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp -+++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp -@@ -8,6 +8,7 @@ - #include "barretenberg/stdlib_circuit_builders/plookup_tables/fixed_base/fixed_base.hpp" - #include "barretenberg/stdlib_circuit_builders/plookup_tables/types.hpp" - #include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp" -+#include "barretenberg/stdlib_circuit_builders/ultra_keccak.hpp" - #include "barretenberg/sumcheck/sumcheck_round.hpp" - #include "barretenberg/ultra_honk/ultra_prover.hpp" - #include "barretenberg/ultra_honk/ultra_verifier.hpp" -@@ -16,8 +17,8 @@ - - using namespace bb; - --using ProverInstance = ProverInstance_; --using VerificationKey = UltraFlavor::VerificationKey; -+using ProverInstance = ProverInstance_; -+using VerificationKey = UltraKeccakFlavor::VerificationKey; - - std::vector add_variables(auto& circuit_builder, std::vector variables) - { -@@ -31,9 +32,9 @@ std::vector add_variables(auto& circuit_builder, std::vector v - void prove_and_verify(auto& circuit_builder, bool expected_result) - { - auto instance = std::make_shared(circuit_builder); -- UltraProver prover(instance); -+ UltraKeccakProver prover(instance); - auto verification_key = std::make_shared(instance->proving_key); -- UltraVerifier verifier(verification_key); -+ UltraKeccakVerifier verifier(verification_key); - auto proof = prover.construct_proof(); - bool verified = verifier.verify_proof(proof); - EXPECT_EQ(verified, expected_result); -@@ -65,7 +66,7 @@ TEST_F(UltraHonkTests, ANonZeroPolynomialIsAGoodPolynomial) - auto circuit_builder = UltraCircuitBuilder(); - - auto instance = std::make_shared(circuit_builder); -- UltraProver prover(instance); -+ UltraKeccakProver prover(instance); - auto proof = prover.construct_proof(); - auto& polynomials = instance->proving_key.polynomials; - -@@ -97,9 +98,9 @@ TEST_F(UltraHonkTests, StructuredTrace) - // Construct an instance with a structured execution trace - TraceStructure trace_structure = TraceStructure::SMALL_TEST; - auto instance = std::make_shared(builder, trace_structure); -- UltraProver prover(instance); -+ UltraKeccakProver prover(instance); - auto verification_key = std::make_shared(instance->proving_key); -- UltraVerifier verifier(verification_key); -+ UltraKeccakVerifier verifier(verification_key); - auto proof = prover.construct_proof(); - EXPECT_TRUE(verifier.verify_proof(proof)); - } -@@ -223,9 +224,9 @@ TEST_F(UltraHonkTests, LookupFailure) - }; - - auto prove_and_verify = [](auto& instance) { -- UltraProver prover(instance); -+ UltraKeccakProver prover(instance); - auto verification_key = std::make_shared(instance->proving_key); -- UltraVerifier verifier(verification_key); -+ UltraKeccakVerifier verifier(verification_key); - auto proof = prover.construct_proof(); - return verifier.verify_proof(proof); - }; -diff --git a/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol -index 27f1983ed5..7dd4f3538c 100644 ---- a/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol -+++ b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol -@@ -1,11 +1,11 @@ --// Verification Key Hash: f7bbd1b4758c8616f966f56728b3d7127a0d1ca6763cbaf70b4719914be476bd -+// Verification Key Hash: 588e04b60b4f877a26815bd230e7bc0f2b6e38aaa2c517c889a380e0203d228c - // SPDX-License-Identifier: Apache-2.0 - // Copyright 2022 Aztec - pragma solidity >=0.8.4; - - library Add2UltraVerificationKey { - function verificationKeyHash() internal pure returns (bytes32) { -- return 0xf7bbd1b4758c8616f966f56728b3d7127a0d1ca6763cbaf70b4719914be476bd; -+ return 0x588e04b60b4f877a26815bd230e7bc0f2b6e38aaa2c517c889a380e0203d228c; - } - - function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { -diff --git a/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol -index b8a1d2efd6..9308666355 100644 ---- a/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol -+++ b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol -@@ -1,11 +1,11 @@ --// Verification Key Hash: 7370a14d9a35deb926608bdc13693b06292d2f66052be3dd6d13d35441270318 -+// Verification Key Hash: 5218464f67341f763fdbf1a989bbbb0f6533c7e2919c58921d52c378610838fc - // SPDX-License-Identifier: Apache-2.0 - // Copyright 2022 Aztec - pragma solidity >=0.8.4; - - library BlakeUltraVerificationKey { - function verificationKeyHash() internal pure returns (bytes32) { -- return 0x7370a14d9a35deb926608bdc13693b06292d2f66052be3dd6d13d35441270318; -+ return 0x5218464f67341f763fdbf1a989bbbb0f6533c7e2919c58921d52c378610838fc; - } - - function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { -diff --git a/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol -index 82e67a786f..6159865490 100644 ---- a/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol -+++ b/barretenberg/sol/src/ultra/keys/EcdsaUltraVerificationKey.sol -@@ -1,11 +1,11 @@ --// Verification Key Hash: 3b1c156f02c5934c94573e30a9d55a6398e8d1f616136797c008194d26892a55 -+// Verification Key Hash: 83001df02de0e49c3cde502f6162d6bfccb87978b28be03b851cc00a7bfa38d9 - // SPDX-License-Identifier: Apache-2.0 - // Copyright 2022 Aztec - pragma solidity >=0.8.4; - - library EcdsaUltraVerificationKey { - function verificationKeyHash() internal pure returns (bytes32) { -- return 0x3b1c156f02c5934c94573e30a9d55a6398e8d1f616136797c008194d26892a55; -+ return 0x83001df02de0e49c3cde502f6162d6bfccb87978b28be03b851cc00a7bfa38d9; - } - - function loadVerificationKey(uint256 _vk, uint256 _omegaInverseLoc) internal pure { -diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol -index a0863663b5..7d3ed2cf78 100644 ---- a/l1-contracts/src/core/libraries/ConstantsGen.sol -+++ b/l1-contracts/src/core/libraries/ConstantsGen.sol -@@ -207,10 +207,10 @@ library Constants { - uint256 internal constant LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 64; - uint256 internal constant NUM_MSGS_PER_BASE_PARITY = 4; - uint256 internal constant NUM_BASE_PARITY_PER_ROOT_PARITY = 4; -- uint256 internal constant RECURSIVE_PROOF_LENGTH = 409; -- uint256 internal constant NESTED_RECURSIVE_PROOF_LENGTH = 409; -- uint256 internal constant TUBE_PROOF_LENGTH = 409; -- uint256 internal constant VERIFICATION_KEY_LENGTH_IN_FIELDS = 120; -+ uint256 internal constant RECURSIVE_PROOF_LENGTH = 439; -+ uint256 internal constant NESTED_RECURSIVE_PROOF_LENGTH = 439; -+ uint256 internal constant TUBE_PROOF_LENGTH = 439; -+ uint256 internal constant VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; - uint256 internal constant SENDER_SELECTOR = 0; - uint256 internal constant ADDRESS_SELECTOR = 1; - uint256 internal constant STORAGE_ADDRESS_SELECTOR = 1; -diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr -index e0c3aa6de2..e09cdd6ce4 100644 ---- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr -+++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr -@@ -270,11 +270,11 @@ global NUM_MSGS_PER_BASE_PARITY: u32 = 4; - global NUM_BASE_PARITY_PER_ROOT_PARITY: u32 = 4; - - // Lengths of the different types of proofs in fields --global RECURSIVE_PROOF_LENGTH = 409; --global NESTED_RECURSIVE_PROOF_LENGTH = 409; -+global RECURSIVE_PROOF_LENGTH = 439; -+global NESTED_RECURSIVE_PROOF_LENGTH = 439; - global TUBE_PROOF_LENGTH = RECURSIVE_PROOF_LENGTH; // in the future these can differ - --global VERIFICATION_KEY_LENGTH_IN_FIELDS = 120; -+global VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; - - /** - * Enumerate the hash_indices which are used for pedersen hashing. -diff --git a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml -index f2e6bbed8e..8a10d971d9 100644 ---- a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml -+++ b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/Prover.toml -@@ -1,537 +1,6 @@ - key_hash = "0x096129b1c6e108252fc5c829c4cc9b7e8f0d1fd9f29c2532b563d6396645e08f" --proof = [ -- "0x0000000000000000000000000000000000000000000000000000000000000020", -- "0x0000000000000000000000000000000000000000000000000000000000000011", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf", -- "0x00000000000000000000000000000000000000000000000b75c020998797da78", -- "0x0000000000000000000000000000000000000000000000005a107acb64952eca", -- "0x000000000000000000000000000000000000000000000000000031e97a575e9d", -- "0x00000000000000000000000000000000000000000000000b5666547acf8bd5a4", -- "0x00000000000000000000000000000000000000000000000c410db10a01750aeb", -- "0x00000000000000000000000000000000000000000000000d722669117f9758a4", -- "0x000000000000000000000000000000000000000000000000000178cbf4206471", -- "0x000000000000000000000000000000000000000000000000e91b8a11e7842c38", -- "0x000000000000000000000000000000000000000000000007fd51009034b3357f", -- "0x000000000000000000000000000000000000000000000009889939f81e9c7402", -- "0x0000000000000000000000000000000000000000000000000000f94656a2ca48", -- "0x000000000000000000000000000000000000000000000006fb128b46c1ddb67f", -- "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", -- "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", -- "0x0000000000000000000000000000000000000000000000000001b52c2020d746", -- "0x0000000000000000000000000000005a9bae947e1e91af9e4033d8d6aa6ed632", -- "0x000000000000000000000000000000000025e485e013446d4ac7981c88ba6ecc", -- "0x000000000000000000000000000000ff1e0496e30ab24a63b32b2d1120b76e62", -- "0x00000000000000000000000000000000001afe0a8a685d7cd85d1010e55d9d7c", -- "0x000000000000000000000000000000b0804efd6573805f991458295f510a2004", -- "0x00000000000000000000000000000000000c81a178016e2fe18605022d5a8b0e", -- "0x000000000000000000000000000000eba51e76eb1cfff60a53a0092a3c3dea47", -- "0x000000000000000000000000000000000022e7466247b533282f5936ac4e6c15", -- "0x00000000000000000000000000000071b1d76edf770edff98f00ff4deec264cd", -- "0x00000000000000000000000000000000001e48128e68794d8861fcbb2986a383", -- "0x000000000000000000000000000000d3a2af4915ae6d86b097adc377fafda2d4", -- "0x000000000000000000000000000000000006359de9ca452dab3a4f1f8d9c9d98", -- "0x0000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f", -- "0x00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa49", -- "0x0000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e157", -- "0x00000000000000000000000000000000000ff3e0896bdea021253b3d360fa678", -- "0x0000000000000000000000000000000d9d719a8b9f020ad3642d60fe704e696f", -- "0x00000000000000000000000000000000000ddfdbbdefc4ac1580ed38e12cfa49", -- "0x0000000000000000000000000000008289fe9754ce48cd01b7be96a861b5e157", -- "0x00000000000000000000000000000000000ff3e0896bdea021253b3d360fa678", -- "0x000000000000000000000000000000f968b227a358a305607f3efc933823d288", -- "0x00000000000000000000000000000000000eaf8adb390375a76d95e918b65e08", -- "0x000000000000000000000000000000bb34b4b447aae56f5e24f81c3acd6d547f", -- "0x00000000000000000000000000000000002175d012746260ebcfe339a91a81e1", -- "0x0000000000000000000000000000005b739ed2075f2b046062b8fc6a2d1e9863", -- "0x00000000000000000000000000000000001285cd1030d338c0e1603b4da2c838", -- "0x00000000000000000000000000000027447d6c281eb38b2b937af4a516d60c04", -- "0x000000000000000000000000000000000019bc3d980465fbb4a656a74296fc58", -- "0x000000000000000000000000000000b484788ace8f7df86dd5e325d2e9b12599", -- "0x00000000000000000000000000000000000a2ca0d10eb7b767114ae230b728d3", -- "0x000000000000000000000000000000c6dfc7092f16f95795e437664498b88d53", -- "0x0000000000000000000000000000000000131067b4e4d95a4f6f8cf5c9b5450a", -- "0x0f413f22eec51f2a02800e0cafaeec1d92d744fbbaef213c687b9edabd6985f5", -- "0x21230f4ff26c80ffb5d037a9d1d26c3f955ca34cbeca4f54db6656b932967a0c", -- "0x0521f877fe35535767f99597cc50effbd283dcae6812ee0a7620d796ccbfd642", -- "0x202b01350a9cc5c20ec0f3eaada338c0a3b793811bd539418ffa3cc4302615e2", -- "0x2d1214d9b0d41058ad4a172d9c0aecc5bdabe95e687c3465050c6b5396509be4", -- "0x1113b344a151b0af091cb28d728b752ebb4865da6cd7ee68471b961ca5cf69b9", -- "0x2aa66d0954bb83e17bd5c9928d3aa7a7df75d741d409f7c15ba596804ba643fb", -- "0x2e26bc7a530771ef7a95d5360d537e41cf94d8a0942764ff09881c107f91a106", -- "0x0f14f32b921bb63ad1df00adab7c82af58ea8aa7f353f14b281208d8c5fab504", -- "0x13429515c0c53b6502bbcdf545defb3cb69a986c9263e070fcbb397391aae1a3", -- "0x1f21cac5e2f262afc1006a21454cc6bcb018c44e53ad8ab61cebbac99e539176", -- "0x2a9886a6ddc8a61b097c668cd362fc8acdee8dde74f7b1af192c3e060bb2948f", -- "0x2d718181e408ead2e9bcd30a84ad1fccbaf8d48ab6d1820bad4933d284b503c4", -- "0x2634c1aafc902f14508f34d3d7e9d485f42d1a4c95b5a1ef73711ed0d3c68d77", -- "0x092ede9777e6472ce5ffd8c963d466006189e960e2c591d338dc8d4af1a057fb", -- "0x1cba45b17fd24f1cb1b4ab7b83eee741f6c77ba70a497dc4de259eceb7d5ea26", -- "0x246e887c7bf2e17f919b2393b6e9b00b33e8822d862544a775aac05cb7bff710", -- "0x04c3f539fe8689971948afcb437f1ecbd444a5bddaca1c8a450348dcd8480047", -- "0x20c6a423ae4fd58e8951aa378d02d77baf90508ceb48856db2319d70938b186e", -- "0x1bcf8786b554b3316d8ebdbc9d006a4e5d4865aad512ffd404b7f83550d3d030", -- "0x09ab038260518f0970564afcd6bf22e2abf6b1fa5e12a327bbf195b6ca5edd78", -- "0x1024e32554746f89c195286ba6ccfc9765e5d14bbe8064bc6fdf22d16ec6b495", -- "0x17706656f8dbd7e47bb257a6428f0cb7278ea02fa9e6ce431d7bcc9133fba9c7", -- "0x25a3e8a33c15ef2a4dd16313a6049bf1d468b4cdc141f238f2d51a1e8e1c22b3", -- "0x1198863f08006edb27aee23164fb117a4ddec1bf1ed89807aa907e5cd24bf068", -- "0x1862b4856b5b4d4a064f873e221703e4e2cd1ebfca1337dedca56485c38ed5a0", -- "0x062214af1ea6dd6bf8895b92d394571c43970b6f967e1c794624d96071b25ad3", -- "0x1e5be9428ddcf1f9b0cbafc28101e792ec5cf73852b0cd0b84fbff71b4490e09", -- "0x2d4189bea5b1e30f63c64bd26df82f18bcaf885ec8887b54634b2557869ce87f", -- "0x0f2e5d9a908850e9d44925e17d8b12d1adb1ed029799c9b5858598504242bbc0", -- "0x3050dc85746a57931d99f3f35e77c2ba561fba0baa018b79ff1fd544026833ae", -- "0x2a591a32437e5e0b875a137fd868bd1b6dbc003ff1b661f26e00627cc7c5cf47", -- "0x27946841e1670ad9c65717016d0cedf524724217236e81b9fd0a264a36ebfb0e", -- "0x0fc396e9d19d6e68e289602e292ee345542d0d28bf6de34fa62cc577cbdfb1df", -- "0x08e7433a07a44c0c9c4dd4b273a2685bbd1a91fd5cf2b43409458fab42a23e1b", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x12bd9bfb029c3503a5c6deea87b0a0f11bb9f7ea584af2d48f3e48d7e09247ae", -- "0x2ccc4810748c0a82dfc0f063d0b8c7999ffe9474653080e6ef92b3cb7a428784", -- "0x08eb574d7fecadadb508c8bd35fdad06b99110609d679763c2e3645229b1b95a", -- "0x0f1a65e747c8021ed7c454a4be1e89b1bce66ead9ed980fa98a7a050eafe98a1", -- "0x1c8ff9e36684ec71614dee4c17859b06c742089f6029d3694a16e00dac9b57f1", -- "0x0303101a8ba712aeca4da85b767ab8d3ecf489ec7d746f8ee20041717cc000e9", -- "0x0aaf64c65e7088e5596108c9601467911fea809ca6540d79af77e6e66e36cd99", -- "0x17caf164ce74ea7edfb1390e07763d2197797ec26661b92cde18a98d61d2fddc", -- "0x18cb055c7ad6d01437725bb457681d81f3ecadc4f35d838a3c13daf25a44456a", -- "0x2d78602b8bbcd32b36a99a6e2d248e7fe044ef1b50813133370412f9ef5299f0", -- "0x2b139276ea86d426a115479e4154f72a6bd83a6253bf13e9670dc6b4664378f0", -- "0x127c7837b384902c39a104036c09546728571c46c8166b1b9b13b3a615ebb781", -- "0x05faa4816f83cf0189a482ad943c94b9ec6474002f2b327f8698763ad0ea0985", -- "0x2f90359cc30ee693fb3aced96523cf7aebd152c22329eee56a398d9a4ac0628e", -- "0x0a71beaf17a59c5a238f04c1f203848d87502c5057a78c13f0cfb0f9876e7714", -- "0x2696c1e6d089556adaeb95c8a5e3065b00a393a38c2d69e9bd6ce8cdc49d87da", -- "0x1f3d165a7dc6564a036e451eb9cb7f1e1cb1e6d29daa75e3f135ea3e58a79ccd", -- "0x1473a660819bdd838d56122b72b32b267211e9f1103239480ec50fa85c9e1035", -- "0x0a8ccaeb22451f391b3fc3467c8e6e900270a7afb7b510e8acf5a4f06f1c0888", -- "0x03b3080afc0658cc87e307758cebc171921f43eca159b9dedf7f72aa8dd926bd", -- "0x2dd7d6663fa0e1755dfafac352c361fcd64c7f4d53627e3646870ac169cc4a07", -- "0x1ec54b883f5f35ccad0e75695af20790d9860104095bab34c9bf01628dd40cb9", -- "0x193dff50f83c241f7a9e087a29ce72ecf3f6d8563593f786dcd04c32bcfd4ced", -- "0x135122c0dae26cda8ca1c09de8225064ad86d10423ab0aaa53b481aa4626e1d6", -- "0x08d5a56cbfab5aeed56d3cdd7fb6b30fc26b0c1a5b63fccd7fa44c53ba6fd35a", -- "0x0d12f126dfa2daad3726d00ca339284cc22e36c6d81bb7a4b95c6f9598b60e7c", -- "0x2e8b24bbdf2fd839d3c7cae1f0eeb96bfcfaeef30b27476f2fafcb17da78cd5e", -- "0x2364acfe0cea39b7f749c5f303b99504977357925f810f684c60f35d16315211", -- "0x06ca062eb70b8c51cfac35345e7b6b51f33a8ec9ebe204fb9b4911200bf508b7", -- "0x266c0aa1ccb97186815bf69084f600d06ddd934e59a38dfe602ee5d6b9487f22", -- "0x1d817537a49c6d0e3b4b65c6665334b91d7593142e60065048be9e55ceb5e7ab", -- "0x05e9b7256a368df053c691952b59e9327a7c12ed322bbd6f72c669b9b9c26d49", -- "0x05e9b7256a368df053c691952b59e9327a7c12ed322bbd6f72c669b9b9c26d49", -- "0x25b77026673a1e613e50df0e88fb510973739d5f9064bd364079a9f884209632", -- "0x25c9bc7a3f6aae3d43ff68b5614b34b5eaceff37157b37347995d231784ac1fd", -- "0x085f69baef22680ae15f4801ef4361ebe9c7fc24a94b5bc2527dce8fb705439e", -- "0x0d7c6b9ce31bfc32238a205455baf5ffe99cd30eb0f7bb5b504e1d4501e01382", -- "0x1001a8cc4bc1221c814fba0eddcf3c40619b133373640c600de5bed0a0a05b10", -- "0x20f5894be90e52977cb70f4f4cbd5101693db0360848939750db7e91109d54b6", -- "0x22c09cb26db43f0599408b4daed0f4f496c66424e6affa41c14387d8e0af851b", -- "0x24e5f41357798432426a9549d71e8cc681eaebacbe87f6e3bf38e85de5aa2f3d", -- "0x06eb90100c736fbf2b87432d7821ecdc0b365024739bc36363d48b905973f5b9", -- "0x000000000000000000000000000000ece6d09ed58e9f5661c01140b10558a8c2", -- "0x000000000000000000000000000000000012b6e4f37adcb34b8e88ff8b6eebce", -- "0x000000000000000000000000000000b226a2bb93593fa1fab19a44767828a3f5", -- "0x00000000000000000000000000000000002b5b518342030543092e1428a7e33c", -- "0x00000000000000000000000000000022ba33857034a0574c216eb3c1ddff3025", -- "0x00000000000000000000000000000000001918e58df857985a7cf9eae7802165", -- "0x00000000000000000000000000000045c2d840b96fb6106cc14dcad89dd5f675", -- "0x00000000000000000000000000000000000afdfac1e3a1febdd0208867d44f98", -- "0x00000000000000000000000000000042ebed6c5ec45d794f119aef24c192af0f", -- "0x00000000000000000000000000000000002d05ef250900bbcc5751bbeb210d6a", -- "0x00000000000000000000000000000060d604bdda48eecc90ed065bd9770e1323", -- "0x00000000000000000000000000000000001fed91c63d0041660c1cbc84c2ffbb", -- "0x00000000000000000000000000000054196b549cde36092e8184c7f4f7d878de", -- "0x00000000000000000000000000000000000153f26a01294329922b492485cc31", -- "0x00000000000000000000000000000056ebea579d10dbb440f0222931df2c0059", -- "0x00000000000000000000000000000000000d2cbc61ce5b7cdd7fce398da4637b", -- "0x000000000000000000000000000000e2b9512360b9797d96675d8a2fd2f7aa5d", -- "0x000000000000000000000000000000000025742905f105ff895f74e7c3daa34a", -- "0x000000000000000000000000000000a2dd7df55db59bd41b83518d4403fbc382", -- "0x00000000000000000000000000000000002c1d9c3cbb9371d4cc4e9f900b9a46", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x000000000000000000000000000000bcf12ae40c9425c3e67654b84181f90502", -- "0x00000000000000000000000000000000000b6d3faa8a71ff6ef1aa887b7307cf", -- "0x0000000000000000000000000000001f6f719acc23b8f84808c0275d61cfb456", -- "0x0000000000000000000000000000000000296030933ed0c134457ae71c393dfe", -- "0x000000000000000000000000000000ebe1a57cdd7d3d763289b40ef5ed9a7ae0", -- "0x000000000000000000000000000000000010f30483e7df51fca2316d3367603c", -- "0x0000000000000000000000000000000149b7b283ab18060618c8e051864c03cd", -- "0x00000000000000000000000000000000001ef7763235a3a25e241a5f06704dc3", --] -+proof = ["0x0000000000000000000000000000000000000000000000000000000000000040","0x0000000000000000000000000000000000000000000000000000000000000011","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf","0x00000000000000000000000000000000000000000000000b75c020998797da78","0x0000000000000000000000000000000000000000000000005a107acb64952eca","0x000000000000000000000000000000000000000000000000000031e97a575e9d","0x00000000000000000000000000000000000000000000000b5666547acf8bd5a4","0x00000000000000000000000000000000000000000000000c410db10a01750aeb","0x00000000000000000000000000000000000000000000000d722669117f9758a4","0x000000000000000000000000000000000000000000000000000178cbf4206471","0x000000000000000000000000000000000000000000000000e91b8a11e7842c38","0x000000000000000000000000000000000000000000000007fd51009034b3357f","0x000000000000000000000000000000000000000000000009889939f81e9c7402","0x0000000000000000000000000000000000000000000000000000f94656a2ca48","0x000000000000000000000000000000000000000000000006fb128b46c1ddb67f","0x0000000000000000000000000000000000000000000000093fe27776f50224bd","0x000000000000000000000000000000000000000000000004a0c80c0da527a081","0x0000000000000000000000000000000000000000000000000001b52c2020d746","0x0000000000000000000000000000005a9bae947e1e91af9e4033d8d6aa6ed632","0x000000000000000000000000000000000025e485e013446d4ac7981c88ba6ecc","0x000000000000000000000000000000ff1e0496e30ab24a63b32b2d1120b76e62","0x00000000000000000000000000000000001afe0a8a685d7cd85d1010e55d9d7c","0x000000000000000000000000000000b0804efd6573805f991458295f510a2004","0x00000000000000000000000000000000000c81a178016e2fe18605022d5a8b0e","0x000000000000000000000000000000eba51e76eb1cfff60a53a0092a3c3dea47","0x000000000000000000000000000000000022e7466247b533282f5936ac4e6c15","0x00000000000000000000000000000071b1d76edf770edff98f00ff4deec264cd","0x00000000000000000000000000000000001e48128e68794d8861fcbb2986a383","0x000000000000000000000000000000d3a2af4915ae6d86b097adc377fafda2d4","0x000000000000000000000000000000000006359de9ca452dab3a4f1f8d9c9d98","0x0000000000000000000000000000006cf7dd96d7636fda5953191b1ad776d491","0x00000000000000000000000000000000001633d881a08d136e834cb13a28fcc6","0x00000000000000000000000000000001254956cff6908b069fca0e6cf1c47eb1","0x000000000000000000000000000000000006f4d4dd3890e997e75e75886bf8f7","0x0000000000000000000000000000006cf7dd96d7636fda5953191b1ad776d491","0x00000000000000000000000000000000001633d881a08d136e834cb13a28fcc6","0x00000000000000000000000000000001254956cff6908b069fca0e6cf1c47eb1","0x000000000000000000000000000000000006f4d4dd3890e997e75e75886bf8f7","0x000000000000000000000000000000f968b227a358a305607f3efc933823d288","0x00000000000000000000000000000000000eaf8adb390375a76d95e918b65e08","0x000000000000000000000000000000bb34b4b447aae56f5e24f81c3acd6d547f","0x00000000000000000000000000000000002175d012746260ebcfe339a91a81e1","0x000000000000000000000000000000286fcda0e28617c86e195005b9f2efc555","0x00000000000000000000000000000000000dc409eb684b23f6a97175bcb9b486","0x000000000000000000000000000000e8de6a193cd36414f598bc7c48d67c3b59","0x00000000000000000000000000000000002a8a791544cad8c712de871e3de50a","0x000000000000000000000000000000d6f1e64b562df0f17ecc6aa46392f8d5a3","0x00000000000000000000000000000000000aac977763f33fd6a360ccc50a827a","0x000000000000000000000000000000899fa957f5597c6419e3ead9843d21d917","0x000000000000000000000000000000000016c4611846952bd6833c35fb11c0da","0x013dbfbfbfb2ae7d524edb15343e551d9510b3116223baaa67312d17652f2fb1","0x2f268eb3217ef1ac66016aa14d43033f932335371795b5e6dcb0c87c8ad0d050","0x2d5dbd52e00ae837e9868289fbe9057f16ea5b76c7e362603e8883f0de4b3e94","0x0e357b6a266c20d5e546c2931475eb044d7e75e08ec31b5e8623aec30f964323","0x0a9ace4dea44d0a2e8d12d495a683f508714356656aea3882436b729ead24165","0x0c17102a98ccb76faf0f78d669ee9cfb694849896787c985225d92e1af3cab35","0x09cc7cb719deb139c84fd9fa273e862a1b5d1cec2501c6cd8ba3c37ca06ac07f","0x15a0369f3f95d53687dfe79483baf75597d8b281fe0595caf1f7c9ccf99d985e","0x17fb53a42b3d1fa5d26ab19dfcc0d74d1781cee0be98dcc492c22e8f3442c4db","0x291d6810fc6afc5c2254fd283843a74c85a77275eee3049ea8ed9c88e02a99b8","0x0ad40d1627c31247dfb894584a71f8599cfcb85afe84b20186fc07fccae1aa4a","0x251cd908fb4e9fe88660f2303f8d7e4d7886da32fddc0319a842b99543659c0b","0x1885bdea3dd82085ca67502ebec8ad87213493e18a06cfa27e2c69810481b4a7","0x239ab5ba86866bc6705091f82a6a29444dc76b0e7d94cede7eb745cce36ab2cf","0x088d29a03baa491845d152124189dfb8bf70ba9bf1fb00c379199dbb0195c663","0x18c9fbe3227988d2da599eba82d60f4de25b442b663585fdc611e37305fa77fc","0x010242ae641a8cc4d06b5d24e38d9fa6254f981e28f238ccf6aad580f780d3f5","0x00128d34b122e84d7e23276b1f13f5789a562e82c727e9ffcfd7bbaccbe69e04","0x0776defaf478bfea4db2698542314e27213f63c96e41f98d4d82a47ed6fab55d","0x273014a360eaaa493e398df82f18d9cae37f4b6c0ead20100cad3f5491805298","0x2b13528eb9ab6fa705f2b48c9ec6ce054ac984e3adf17d4d73431e8456bf4a3c","0x22dafe1d63e39cd2effb236da2e131ee1c8cf4049ce504431dcaf98f75c47ad8","0x1afb5bc7eb8d30d807101357bb290f9c3113523f4aacc1154a27b075e46a4fa4","0x0782dd7df679163e5f0c126abc901d00f3d7d0856b4c02a199ab691ecd7566e6","0x2e556c722c99a84a09ffdcc719178277f8e6c9e31a4769270e3b522b944b8ea2","0x1be933a48dca8ef26202d3f135998ac8bed6947020b7447ffb6033b0e37f2065","0x2d8ebae210848de2464f5435f1fd4b5467ee938910d7779002614943060bbb32","0x2da854bbee38a94a6a9c2c85dd05bb4c879173720b67f93f78b9de93cdb427b0","0x0fa2649472af2e79489c466b58002f8f284f953085ac0a98dfabee85b78f63cf","0x304a09437636026ef0746c4b8ac1ca0ff250c5630fb5bd03ddafddd7cbde850e","0x0c83bb3c6ee0faa1646ee4d8dd83f67ec98e5d63ac802f7bdebfcdf21dee62f1","0x229d7e4524b30c18a6b94f0054e6d2ea8eb2396f58f9c808d2c9f991e2be2399","0x1265bf5e1aaddeae09242b1435e2f8f9e7487bf76a0461752777f6ea1ff75ad6","0x2f32f53281b7a363d6bec84ca21c71c3206d906b036e8b36b0702780e3b1b870","0x017fb18c9aef4d6d2bc99f5d7f9a002c8921fcd7c7ba69bf05930b55c2829cb7","0x2ec761c02ef6f2eefb7c9b2d6df71795d0ce0820f86797e2e11415cb5b122f22","0x2b1722960f42a1b40ffae3e4b9419fc8ff5cb8139a2c7e89af332ba2e95c1b5f","0x2dafa15594da2318245475c77eae3712429226b3005852e70f567efff0a7d79a","0x2ed44d7e3d5f44ac8f7c144ee0ba9d369c82428827c19b010384708bbc52a3f9","0x2777eedda697c7f90aee44fa97cfe62596d16c43fa3545b48d622023ca7a446a","0x1a47a5c1b0f41905aa0bad6248be8c7887ddea3ad9dfc8462b23a95b073c8a49","0x093656d571e84ac676a265dd509c98513039552b7a24e001b003ca618cc4ea5c","0x15c901e8a7ff0f1ae1989b5cfb687975c16716a8014a4052d527d4db4ecbaeb4","0x08bfa20e83096b0be58e4c96232510c8ef9824c0a62b91ffcc4592b217753a72","0x021913efbdfbc73aa5f4a97c79f352ac61f71248947f5eb5713c1b107c632703","0x00df89625aef270fab2a8c33ba742e1375423f4cfb3f63514ae748e004bb8cf4","0x2455f76c8ee59e93cbe7fe192cf0f766e1399617cabfa230cf27ca2a18cd58d5","0x150c3e56ea4f6442ed6b11030c98682a8f5e3c9cd6fd18949254a7c79b3cb5b6","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000000","0x01e89c6fe644aea7f63301278dbdb4ea29cf4d33f8b0cdcd79cb106e0bf0a753","0x2d49d23421e253903b8a5d0911642b9ce218cef4e350cf8689704eb1f3ae38d4","0x072956ca447343d788791fee1ef222f280048ad4aefb6cb7bc96b538f482f525","0x168176bf15c8ca63457acf05efbe54af452ea41f935ab82c2a96fedde10ba52f","0x20a13690f13491f7f3b756a1dc3b69a3f96d78355c70289583032a593bfc87bc","0x273e0a32ab3ef0d3f179b62520b31015ccfc8b53c76a1bb323b41e40ff954596","0x28019d4b05546b44e35d5dc74375b75dabb6fae49a07381605c60423c6163d26","0x10beda0b8dd484c63f0937820e2c7e9be832a0031efe3557631608895255ca5f","0x095a8f04a901526e4d70b1560bfff29b5a3c30347725d1e420c1b30ee2bf8a1c","0x1fb742e863a5c76262ffec93b3351405b0840b326fa5fffd73f40abcd5f05f05","0x11fa63cfcb2e603fe4e4668d75f05a2cf22650b84a91d1753e83f0e7ae83b4ad","0x2872e3d3c431a8b7ee4cec1c2a999a42c40ae33382fbba80a6d4c1a39b2d57a3","0x17e8c2a5f809f9935d7c6d7cb2f8859a513864b53f53de3d2a14c74cd690bd1a","0x20a552298d691393ae401382b3015689231ad988d3eb0521d414dcd2e8781053","0x183eb6bca59a141b4e8136179a258272ec9c25ec80bdb0458b6880c711707a28","0x03cd147a2a4c8dc272f3e240b8b0090d45e994e5fd40e07a54f6765795cd5ef8","0x082b135b3a20da4c766242b4258e27dbc050e4b8958bb15431626f2eeed9bd2b","0x28c894a6a719a32fe8d78ded46bc685ba035e5579c88fbc5bcbc0f09d8c5268b","0x06418cceff50837f923e63a37c2c534d13d9f59793c3aa6274813baa64d1899e","0x2b4a27b672f85c4fc697605da213de8b950a629602c5b8c6403e6c1c1065388a","0x0e2b817c6a79d6d1027f0376fb26ec81a140a4402e2dcdff6152cf01f2f4dbf9","0x2ae0fbce87dc53f0ff5473117e1c49a8197a14f8eaaec00cb5b10f94e844111f","0x2368004a1dee06f505e75ada3e9f8cc4c801f6a2068620da51ba11f537453835","0x2009df8e6f49f67dcaecb93e4a9ef81aaff096136d26f0fe691e14cd580c47da","0x2e512617136e8da2817856e57f13087a75fcc512faefc6d4b2eedd73c58a9b35","0x2848fcd535bd7c8017ca331a14919aa492ed05b04e9d0745480d291205eac8dc","0x19bb0990cb37f3a8f6c3db78219b07d6accd08e889586660e92dd6000755f09a","0x15520c8158b2e36c40c5fa46d5281c45d3df2c7f5d974a1f9549bfca6cbceaea","0x0e285f4df658d99922c286c5a253d6f6f37aa6c52d7a0fc1a20f3e6da9df23e1","0x0f9cd4667f4c1e86f83eda9e752a05c0cc630b0827a93a68322fa258dffb0f24","0x12d8b0dbbea3dccfe5d2dd090daf8ab4d2fac74fada9c49875b0c9122663a8ad","0x2e8c814d93f027ecff08c4e58555aadfc0f9ec3889eff2150f2b5bb6c557add0","0x013516a1456c5831aba87e4057878f6f3f18471e0674fd1e89be3e18351ec394","0x14418aa79dc84fd791d5638bdc103786ef8181a714ee8e022d3a1e792cbc7959","0x14418aa79dc84fd791d5638bdc103786ef8181a714ee8e022d3a1e792cbc7959","0x25c5e6c96a39bb36e19106d4049b675f0279084cc757c4e2acf6e497c61056a2","0x231aaafcf2a4c6fd8da18ce5ae5b33790f2c306a2692c6383c9a0787c50ac269","0x0a5f7665f0997081f9b38ec64e9a18542ac3a9648060f8cc720fc04669224730","0x0f1c9d9d1ac6f62825c6038117ed30540be434e8fd2d88150dcd4fece39b335a","0x1308871c8fcb09f07e5257f5cc5678d98842a8d18b2af09b5132d9af3cb1893e","0x28801985290dac4eba72ed01ee06fe88f6fc533dc1a46bd86e2d35be8021b042","0x14407f38cfba3cc61fca173b41133ab05a1c176caf8bb597588b01817e9eeaa3","0x0ea1a9f6f95f6193e512a7bd3db0c147f66687662934aed53cb657935b1e4eb9","0x1bc4ab6eacd61b5fd9e414b0186ef5deaadaf59aa9e53cb8d8812255baa28109","0x00000000000000000000000000000093a4da68a2fac0ee94841efdfc57eb748c","0x00000000000000000000000000000000001c22f1f5f927bee6adb649cc132391","0x0000000000000000000000000000003d0c2acea76c551f58876b3c35f19f345a","0x00000000000000000000000000000000002e94fded0a0b7f4fd1c882fd2a4e52","0x00000000000000000000000000000022e23b6fa0f72844bf8f60ea140cca5663","0x000000000000000000000000000000000013380f284bf3cb98b9a7cbae7d702b","0x000000000000000000000000000000942a13cf93056815c3f7439c9eed0a103e","0x00000000000000000000000000000000002be14bec02c6dae4625d32866de4fc","0x000000000000000000000000000000e2a2c75dc664c12695b4f7795c61f92669","0x000000000000000000000000000000000000725da448f376bde6cf63bcf79463","0x000000000000000000000000000000f54eee585f8ab367dc66a587e1d4cdbd8c","0x0000000000000000000000000000000000071106624ae5623a070f0addc18433","0x000000000000000000000000000000d60352bea3b2adb311b1a3beb25acb8aed","0x00000000000000000000000000000000001965b7c781e33f94e90c743c7881ed","0x0000000000000000000000000000006458a2aa57539e2b192f9c3ed69f9fb674","0x00000000000000000000000000000000001fc9c667723a4e66d752c6b426d444","0x0000000000000000000000000000008d1ff1c5d59a463c5b46bcf52f41ad3c63","0x00000000000000000000000000000000001b3e73df070a35c49a03fab1c76e9b","0x0000000000000000000000000000001c17a62b6c0a7ab14de83391e06f780adb","0x000000000000000000000000000000000012c7fbe2591b9ae72dd526e4ed1d7f","0x000000000000000000000000000000a758fa0c72d6a93155cb18b3fcc7defd34","0x00000000000000000000000000000000000cea12961770ce7cb6f2a4aed009fe","0x000000000000000000000000000000ef6e9647803aac315fa6d287e0e66f4767","0x0000000000000000000000000000000000259a82b8d6c6015cc51d2681f26ad4","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000008152b373c87004bef7d2c55ec8c540b67f","0x00000000000000000000000000000000000a55be5fdcb0a0dce4976d7bb78b0c","0x000000000000000000000000000000f749ea03f04ac964706139b9d1db595ecb","0x000000000000000000000000000000000013218e14dae80c066b4e46e9309fb2","0x0000000000000000000000000000004bbd7f950c36ce69db39e2b234a9e3f9b0","0x00000000000000000000000000000000002a0c3994d892ca5ea26984abbb30fb","0x0000000000000000000000000000006c1b39306846620bd546ac2c897834f259","0x000000000000000000000000000000000020350b9f507d6e25961a11be3e494b"] - public_inputs = [ - "0x0000000000000000000000000000000000000000000000000000000000000003", - ] --verification_key = [ -- "0x0000000000000000000000000000000000000000000000000000000000000020", -- "0x0000000000000000000000000000000000000000000000000000000000000011", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000003", -- "0x0000000000000000000000000000000000000000000000000000000000000004", -- "0x0000000000000000000000000000000000000000000000000000000000000005", -- "0x0000000000000000000000000000000000000000000000000000000000000006", -- "0x0000000000000000000000000000000000000000000000000000000000000007", -- "0x0000000000000000000000000000000000000000000000000000000000000008", -- "0x0000000000000000000000000000000000000000000000000000000000000009", -- "0x000000000000000000000000000000000000000000000000000000000000000a", -- "0x000000000000000000000000000000000000000000000000000000000000000b", -- "0x000000000000000000000000000000000000000000000000000000000000000c", -- "0x000000000000000000000000000000000000000000000000000000000000000d", -- "0x000000000000000000000000000000000000000000000000000000000000000e", -- "0x000000000000000000000000000000000000000000000000000000000000000f", -- "0x0000000000000000000000000000000000000000000000000000000000000010", -- "0x00000000000000000000000000000060e430ad1c23bfcf3514323aae3f206e84", -- "0x00000000000000000000000000000000001b5c3ff4c2458d8f481b1c068f27ae", -- "0x000000000000000000000000000000bb510ab2112def34980e4fc6998ad9dd16", -- "0x00000000000000000000000000000000000576e7c105b43e061e13cb877fefe1", -- "0x000000000000000000000000000000ced074785d11857b065d8199e6669a601c", -- "0x00000000000000000000000000000000000053b48a4098c1c0ae268f273952f7", -- "0x000000000000000000000000000000d1d4b26e941db8168cee8f6de548ae0fd8", -- "0x00000000000000000000000000000000001a9adf5a6dadc3d948bb61dfd63f4c", -- "0x0000000000000000000000000000009ce1faac6f8de6ebb18f1db17372c82ad5", -- "0x00000000000000000000000000000000002002681bb417184b2df070a16a3858", -- "0x000000000000000000000000000000161baa651a8092e0e84725594de5aba511", -- "0x00000000000000000000000000000000000be0064399c2a1efff9eb0cdcb2223", -- "0x0000000000000000000000000000008673be6fd1bdbe980a29d8c1ded54381e7", -- "0x000000000000000000000000000000000008a5158a7d9648cf1d234524c9fa0c", -- "0x0000000000000000000000000000002b4fce6e4b1c72062b296d49bca2aa4130", -- "0x00000000000000000000000000000000002e45a9eff4b6769e55fb710cded44f", -- "0x00000000000000000000000000000072b85bf733758b76bcf97333efb85a23e3", -- "0x000000000000000000000000000000000017da0ea508994fc82862715e4b5592", -- "0x00000000000000000000000000000094fa74695cf058dba8ff35aec95456c6c3", -- "0x0000000000000000000000000000000000211acddb851061c24b8f159e832bd1", -- "0x000000000000000000000000000000303b5e5c531384b9a792e11702ad3bcab0", -- "0x00000000000000000000000000000000000d336dff51a60b8833d5d7f6d4314c", -- "0x0000000000000000000000000000009f825dde88092070747180d581c342444a", -- "0x0000000000000000000000000000000000237fbd6511a03cca8cac01b555fe01", -- "0x0000000000000000000000000000007c313205159495df6d8de292079a4844ff", -- "0x000000000000000000000000000000000018facdfc468530dd45e8f7a1d38ce9", -- "0x0000000000000000000000000000000d1ce33446fc3dc4ab40ca38d92dac74e1", -- "0x00000000000000000000000000000000000852d8e3e0e8f4435af3e94222688b", -- "0x0000000000000000000000000000006c04ee19ec1dfec87ed47d6d04aa158de2", -- "0x000000000000000000000000000000000013240f97a584b45184c8ec31319b5f", -- "0x000000000000000000000000000000cefb5d240b07ceb4be26ea429b6dc9d9e0", -- "0x00000000000000000000000000000000002dad22022121d689f57fb38ca21349", -- "0x000000000000000000000000000000c9f189f2a91aeb664ce376d8b157ba98f8", -- "0x00000000000000000000000000000000002531a51ad54f124d58094b219818d2", -- "0x000000000000000000000000000000ef1e6db71809307f677677e62b4163f556", -- "0x0000000000000000000000000000000000272da4396fb2a7ee0638b9140e523d", -- "0x0000000000000000000000000000002e54c0244a7732c87bc4712a76dd8c83fb", -- "0x000000000000000000000000000000000007db77b3e04b7eba9643da57cbbe4d", -- "0x000000000000000000000000000000e0dfe1ddd7f74ae0d636c910c3e85830d8", -- "0x00000000000000000000000000000000000466fa9b57ec4664abd1505b490862", -- "0x0000000000000000000000000000009ee55ae8a32fe5384c79907067cc27192e", -- "0x00000000000000000000000000000000000799d0e465cec07ecb5238c854e830", -- "0x0000000000000000000000000000001d5910ad361e76e1c241247a823733c39f", -- "0x00000000000000000000000000000000002b03f2ccf7507564da2e6678bef8fe", -- "0x000000000000000000000000000000231147211b3c75e1f47d150e4bbd2fb22e", -- "0x00000000000000000000000000000000000d19ee104a10d3c701cfd87473cbbe", -- "0x0000000000000000000000000000006705f3f382637d00f698e2c5c94ed05ae9", -- "0x00000000000000000000000000000000000b9c792da28bb60601dd7ce4b74e68", -- "0x000000000000000000000000000000ac5acc8cc21e4ddb225c510670f80c80b3", -- "0x00000000000000000000000000000000002da9d3fa57343e6998aba19429b9fa", -- "0x0000000000000000000000000000004bacbf54b7c17a560df0af18b6d0d527be", -- "0x00000000000000000000000000000000000faea33aeca2025b22c288964b21eb", -- "0x000000000000000000000000000000492e756298d68d6e95de096055cc0336c3", -- "0x00000000000000000000000000000000001a12a12f004859e5a3675c7315121b", -- "0x000000000000000000000000000000893d521d512f30e6d32afbbc0cecd8ee00", -- "0x00000000000000000000000000000000001674b3c1ef12c6da690631e0d86c04", -- "0x000000000000000000000000000000aa6cb02a52e7a613873d4ac9b411349945", -- "0x00000000000000000000000000000000001ecb1fe9c493add46751f9940f73e1", -- "0x00000000000000000000000000000045b3d362ca82cba69fb2b9c733a5b8c351", -- "0x000000000000000000000000000000000019a683586af466e331945b732d2f8c", -- "0x000000000000000000000000000000fc79b052dfdfe67c0ecfc06b4267ffd694", -- "0x00000000000000000000000000000000001336a70c396393038d5e9913744ac2", -- "0x0000000000000000000000000000005450d29af1e9438e91cd33ddeb2548226e", -- "0x000000000000000000000000000000000000993a602891cfd0e6f6ecf7404933", -- "0x000000000000000000000000000000498efddab90a32e9b2db729ed6e9b40192", -- "0x00000000000000000000000000000000002425efebe9628c63ca6fc28bdb5901", -- "0x000000000000000000000000000000d8488157f875a21ab5f93f1c2b641f3de9", -- "0x0000000000000000000000000000000000290f95ada3936604dc4b14df7504e3", -- "0x0000000000000000000000000000005d6902187f3ed60dcce06fca211b40329a", -- "0x00000000000000000000000000000000002b5870a6ba0b20aaa0178e5adfbc36", -- "0x000000000000000000000000000000e5c2519171fa0e548fc3c4966ffc1ce570", -- "0x00000000000000000000000000000000001cb8d8f4793b7debbdc429389dbf2d", -- "0x000000000000000000000000000000a3ee22dd60456277b86c32a18982dcb185", -- "0x00000000000000000000000000000000002493c99a3d068b03f8f2b8d28b57ce", -- "0x000000000000000000000000000000f6c3731486320082c20ec71bbdc92196c1", -- "0x00000000000000000000000000000000001ded39c4c8366469843cd63f09ecac", -- "0x000000000000000000000000000000494997477ab161763e46601d95844837ef", -- "0x00000000000000000000000000000000002e0cddbc5712d79b59cb3b41ebbcdd", -- "0x000000000000000000000000000000426db4c64531d350750df62dbbc41a1bd9", -- "0x0000000000000000000000000000000000303126892f664d8d505964d14315ec", -- "0x00000000000000000000000000000076a6b2c6040c0c62bd59acfe3e3e125672", -- "0x000000000000000000000000000000000000874a5ad262eecc6b565e0b085074", -- "0x000000000000000000000000000000ef082fb517183c9c6841c2b8ef2ca1df04", -- "0x0000000000000000000000000000000000127b2a745a1b74968c3edc18982b9b", -- "0x000000000000000000000000000000c9efd4f8c3d56e1eb23d789a8f710d5be6", -- "0x000000000000000000000000000000000015a18748490ff4c2b1871081954e86", -- "0x000000000000000000000000000000a0011ef987dc016ab110eacd554a1d8bbf", -- "0x00000000000000000000000000000000002097c84955059442a95df075833071", -- "0x000000000000000000000000000000d38e9426ad3085b68b00a93c17897c2877", -- "0x00000000000000000000000000000000002aecd48089890ea0798eb952c66824", -- "0x00000000000000000000000000000078d8a9ce405ce559f441f2e71477ff3ddb", -- "0x00000000000000000000000000000000001216bdb2f0d961bb8a7a23331d2150", -- "0x0000000000000000000000000000000000000000000000000000000000000001", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x0000000000000000000000000000000000000000000000000000000000000002", -- "0x0000000000000000000000000000000000000000000000000000000000000000", -- "0x000000000000000000000000000000ee40d90bea71fba7a412dd61fcf34e8ceb", -- "0x0000000000000000000000000000000000140b0936c323fd2471155617b6af56", -- "0x0000000000000000000000000000002b90071823185c5ff8e440fd3d73b6fefc", -- "0x00000000000000000000000000000000002b6c10790a5f6631c87d652e059df4", --] -+verification_key = ["0x0000000000000000000000000000000000000000000000000000000000000040","0x0000000000000000000000000000000000000000000000000000000000000011","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000003","0x0000000000000000000000000000000000000000000000000000000000000004","0x0000000000000000000000000000000000000000000000000000000000000005","0x0000000000000000000000000000000000000000000000000000000000000006","0x0000000000000000000000000000000000000000000000000000000000000007","0x0000000000000000000000000000000000000000000000000000000000000008","0x0000000000000000000000000000000000000000000000000000000000000009","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000000000000000000000000000000000000000000b","0x000000000000000000000000000000000000000000000000000000000000000c","0x000000000000000000000000000000000000000000000000000000000000000d","0x000000000000000000000000000000000000000000000000000000000000000e","0x000000000000000000000000000000000000000000000000000000000000000f","0x0000000000000000000000000000000000000000000000000000000000000010","0x00000000000000000000000000000060e430ad1c23bfcf3514323aae3f206e84","0x00000000000000000000000000000000001b5c3ff4c2458d8f481b1c068f27ae","0x000000000000000000000000000000bb510ab2112def34980e4fc6998ad9dd16","0x00000000000000000000000000000000000576e7c105b43e061e13cb877fefe1","0x000000000000000000000000000000ced074785d11857b065d8199e6669a601c","0x00000000000000000000000000000000000053b48a4098c1c0ae268f273952f7","0x000000000000000000000000000000d1d4b26e941db8168cee8f6de548ae0fd8","0x00000000000000000000000000000000001a9adf5a6dadc3d948bb61dfd63f4c","0x0000000000000000000000000000009ce1faac6f8de6ebb18f1db17372c82ad5","0x00000000000000000000000000000000002002681bb417184b2df070a16a3858","0x000000000000000000000000000000161baa651a8092e0e84725594de5aba511","0x00000000000000000000000000000000000be0064399c2a1efff9eb0cdcb2223","0x0000000000000000000000000000008673be6fd1bdbe980a29d8c1ded54381e7","0x000000000000000000000000000000000008a5158a7d9648cf1d234524c9fa0c","0x0000000000000000000000000000002b4fce6e4b1c72062b296d49bca2aa4130","0x00000000000000000000000000000000002e45a9eff4b6769e55fb710cded44f","0x00000000000000000000000000000072b85bf733758b76bcf97333efb85a23e3","0x000000000000000000000000000000000017da0ea508994fc82862715e4b5592","0x00000000000000000000000000000094fa74695cf058dba8ff35aec95456c6c3","0x0000000000000000000000000000000000211acddb851061c24b8f159e832bd1","0x000000000000000000000000000000303b5e5c531384b9a792e11702ad3bcab0","0x00000000000000000000000000000000000d336dff51a60b8833d5d7f6d4314c","0x0000000000000000000000000000009f825dde88092070747180d581c342444a","0x0000000000000000000000000000000000237fbd6511a03cca8cac01b555fe01","0x0000000000000000000000000000007c313205159495df6d8de292079a4844ff","0x000000000000000000000000000000000018facdfc468530dd45e8f7a1d38ce9","0x0000000000000000000000000000000d1ce33446fc3dc4ab40ca38d92dac74e1","0x00000000000000000000000000000000000852d8e3e0e8f4435af3e94222688b","0x0000000000000000000000000000006c04ee19ec1dfec87ed47d6d04aa158de2","0x000000000000000000000000000000000013240f97a584b45184c8ec31319b5f","0x000000000000000000000000000000cefb5d240b07ceb4be26ea429b6dc9d9e0","0x00000000000000000000000000000000002dad22022121d689f57fb38ca21349","0x000000000000000000000000000000c9f189f2a91aeb664ce376d8b157ba98f8","0x00000000000000000000000000000000002531a51ad54f124d58094b219818d2","0x000000000000000000000000000000ef1e6db71809307f677677e62b4163f556","0x0000000000000000000000000000000000272da4396fb2a7ee0638b9140e523d","0x0000000000000000000000000000002e54c0244a7732c87bc4712a76dd8c83fb","0x000000000000000000000000000000000007db77b3e04b7eba9643da57cbbe4d","0x000000000000000000000000000000e0dfe1ddd7f74ae0d636c910c3e85830d8","0x00000000000000000000000000000000000466fa9b57ec4664abd1505b490862","0x0000000000000000000000000000009ee55ae8a32fe5384c79907067cc27192e","0x00000000000000000000000000000000000799d0e465cec07ecb5238c854e830","0x0000000000000000000000000000001d5910ad361e76e1c241247a823733c39f","0x00000000000000000000000000000000002b03f2ccf7507564da2e6678bef8fe","0x000000000000000000000000000000ee40d90bea71fba7a412dd61fcf34e8ceb","0x0000000000000000000000000000000000140b0936c323fd2471155617b6af56","0x0000000000000000000000000000002b90071823185c5ff8e440fd3d73b6fefc","0x00000000000000000000000000000000002b6c10790a5f6631c87d652e059df4","0x00000000000000000000000000000029a17181c7934fc3fdbd352eac5cb521b9","0x00000000000000000000000000000000001f497cbf5284ff29a2d336e5991999","0x000000000000000000000000000000072bd9c0c6beda1fdee6d4ff0432ba9e1b","0x000000000000000000000000000000000013ea38a0bd2aa751a490a724fac818","0x000000000000000000000000000000c599f63dcd3edd49f08ae5c3141c1e3493","0x00000000000000000000000000000000002bdb36be0bea09950dd32a8ccf6fbc","0x00000000000000000000000000000047f27f29724e7f19eba0340256a0bd4b7d","0x00000000000000000000000000000000001c1c5ccf87a962129ca785f8f35120","0x000000000000000000000000000000c5c71efdae00679bbe4a95096e012b1817","0x000000000000000000000000000000000017a365de041e317817d0135f2b48e0","0x0000000000000000000000000000008ae711ac402f7848d719c93a89ba8d39f1","0x00000000000000000000000000000000002b6fb40ed8a1935226f4f9786a0499","0x0000000000000000000000000000002f03a71501d83de1da5715a4e9462d6198","0x00000000000000000000000000000000001644064443b8546f48eae693af47b8","0x00000000000000000000000000000083763ab1b6e8fe269b2fe4c7b9c448c08d","0x000000000000000000000000000000000021d7cc18c59676a8eeb47c0111c251","0x000000000000000000000000000000b5f937153073e03ea7d51a996e0ebc2e6b","0x000000000000000000000000000000000011ddd0e26457373eb06e0493177672","0x000000000000000000000000000000c5f6eb9f6fc8fa99811a4a88c74a6d018b","0x000000000000000000000000000000000025bcd07a0732c123567834f5109558","0x000000000000000000000000000000aeb08a0b1a4442189448b4e97490568146","0x000000000000000000000000000000000002a1744e4771705536a88f07e0f90f","0x000000000000000000000000000000b938568293bd0724b0ea76c2ec34c4a829","0x0000000000000000000000000000000000053296e8f3b9ad3af877dfa9c7c2a7","0x000000000000000000000000000000f0ca1db6323996eba26bdc86dafef9d10b","0x00000000000000000000000000000000001441a46c58af03d5645d52721d956a","0x0000000000000000000000000000008bbf8f884013c66c28ba09c2fbd573b656","0x0000000000000000000000000000000000206c391ca06fac27d1908e94570243","0x0000000000000000000000000000002d4f5aaed88ba4f79612d53b804ca8f194","0x00000000000000000000000000000000001674011c96392df08970fa6b7b4cb8","0x0000000000000000000000000000009f88297c1729d76c4d9306853598c91325","0x0000000000000000000000000000000000256f51adfcacc3c1e340be4d32d3e9","0x0000000000000000000000000000000ab9955eec0d74eb799afed2a802b24d75","0x00000000000000000000000000000000001fcbe43ea105b30d36ed0b21b03411","0x000000000000000000000000000000d66b1d5433f1aa5305cd1edce7c22de466","0x00000000000000000000000000000000002331546a256b8a3b751956806680d4","0x000000000000000000000000000000e97954ad6cd6f45fb15c91434121db4304","0x00000000000000000000000000000000002e20a97e09d50f227ced47e7a98250","0x0000000000000000000000000000001ebbc27eb9ebededefba79522eb58ae89b","0x0000000000000000000000000000000000090efa4974e566e81d1177b85a30be","0x0000000000000000000000000000005eafa070b9c9632404052642e3bc14f9fd","0x00000000000000000000000000000000001489068864102daca6a6b8bc4d448b","0x0000000000000000000000000000009ebc91aaaac036a6477cadbe54e8556dfd","0x00000000000000000000000000000000000ef6d835e2ed3343b95c82c8c54037","0x00000000000000000000000000000033b28b529dff46e93af4e7422530478e4a","0x000000000000000000000000000000000020a86c2f8591bf190bcddcc03c42fb","0x000000000000000000000000000000a9679d0acc088f7dc27bf6d866bcd2dda2","0x00000000000000000000000000000000002fb9d0d2d4099402bed74f738f64cc","0x00000000000000000000000000000023b09f876a29a061582848a8b9a5870c12","0x00000000000000000000000000000000001d5bb906f03f0d49e9c4791bc43af9","0x00000000000000000000000000000017aac9854ea240d8ec97bf760c4d4ba870","0x00000000000000000000000000000000000b227a556c414ada0dc75bb303e30e","0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000009b624fa65d1a24b7f14a8f25f3789622af","0x000000000000000000000000000000000013d47bff8c630e847b70e2732fd3f0","0x00000000000000000000000000000061d21663e93132f32921075f4c936a84df","0x00000000000000000000000000000000001a74ca4e118fb480b9b999902989a3"] -\ No newline at end of file -diff --git a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr -index 17adc68c05..42e6b501d0 100644 ---- a/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr -+++ b/noir/noir-repo/test_programs/execution_success/verify_honk_proof/src/main.nr -@@ -1,8 +1,8 @@ - - // This circuit aggregates a single Honk proof from `assert_statement_recursive`. --global SIZE_OF_PROOF_IF_LOGN_IS_28 : u32 = 409; -+global SIZE_OF_PROOF_IF_LOGN_IS_28 : u32 = 439; - fn main( -- verification_key: [Field; 120], -+ verification_key: [Field; 128], - // This is the proof without public inputs attached. - // - // This means: the size of this does not change with the number of public inputs. -diff --git a/noir/verify_honk_proof/src/main.nr b/noir/verify_honk_proof/src/main.nr -index 10ea457775..a8fb9ab53f 100644 ---- a/noir/verify_honk_proof/src/main.nr -+++ b/noir/verify_honk_proof/src/main.nr -@@ -2,7 +2,7 @@ - // This circuit aggregates a single Honk proof from `assert_statement_recursive`. - global SIZE_OF_PROOF_IF_LOGN_IS_28 : u32 = 409; - fn main( -- verification_key: [Field; 120], -+ verification_key: [Field; 128], - // This is the proof without public inputs attached. - // - // This means: the size of this does not change with the number of public inputs. -@@ -12,10 +12,5 @@ fn main( - // I believe we want to eventually make it public too though. - key_hash: Field - ) { -- std::verify_proof( -- verification_key, -- proof, -- public_inputs, -- key_hash -- ); -+ std::verify_proof(verification_key, proof, public_inputs, key_hash); - } -diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts -index 693fbb373b..870d74ccf6 100644 ---- a/yarn-project/circuits.js/src/constants.gen.ts -+++ b/yarn-project/circuits.js/src/constants.gen.ts -@@ -191,10 +191,10 @@ export const L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP = 256; - export const LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 64; - export const NUM_MSGS_PER_BASE_PARITY = 4; - export const NUM_BASE_PARITY_PER_ROOT_PARITY = 4; --export const RECURSIVE_PROOF_LENGTH = 409; --export const NESTED_RECURSIVE_PROOF_LENGTH = 409; --export const TUBE_PROOF_LENGTH = 409; --export const VERIFICATION_KEY_LENGTH_IN_FIELDS = 120; -+export const RECURSIVE_PROOF_LENGTH = 439; -+export const NESTED_RECURSIVE_PROOF_LENGTH = 439; -+export const TUBE_PROOF_LENGTH = 439; -+export const VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; - export const SENDER_SELECTOR = 0; - export const ADDRESS_SELECTOR = 1; - export const STORAGE_ADDRESS_SELECTOR = 1; From b251dc75100db26f3cd0551dcc4d285d71220037 Mon Sep 17 00:00:00 2001 From: maramihali Date: Mon, 19 Aug 2024 16:13:28 +0000 Subject: [PATCH 41/47] fix keccak stuff --- barretenberg/acir_tests/flows/honk_sol.sh | 13 +++- barretenberg/acir_tests/sol-test/yarn.lock | 34 ++++----- barretenberg/cpp/src/barretenberg/bb/main.cpp | 6 +- .../scalar_multiplication.cpp | 74 ++++++++----------- .../execution_trace/execution_trace.cpp | 19 +++-- .../execution_trace/execution_trace.hpp | 9 ++- .../cpp/src/barretenberg/flavor/flavor.hpp | 3 + .../arithmetization/ultra_arithmetization.hpp | 8 ++ .../ultra_honk/ultra_honk.test.cpp | 18 ++--- .../ultra_honk/ultra_verifier.cpp | 1 + 10 files changed, 101 insertions(+), 84 deletions(-) diff --git a/barretenberg/acir_tests/flows/honk_sol.sh b/barretenberg/acir_tests/flows/honk_sol.sh index ed223b7d37c..527d13513e5 100755 --- a/barretenberg/acir_tests/flows/honk_sol.sh +++ b/barretenberg/acir_tests/flows/honk_sol.sh @@ -1,14 +1,19 @@ #!/bin/sh -set -eu +set -eux + +VFLAG=${VERBOSE:+-v} +BFLAG="-b ./target/program.json" +FLAGS="-c $CRS_PATH $VFLAG" export PROOF="$(pwd)/proof" export PROOF_AS_FIELDS="$(pwd)/proof_fields.json" # Create a proof, write the solidity contract, write the proof as fields in order to extract the public inputs -$BIN prove_keccak_ultra_honk -o proof -$BIN write_vk_ultra_honk -o vk +$BIN prove_keccak_ultra_honk -o proof $FLAGS $BFLAG +$BIN write_vk_ultra_keccak_honk -o vk $FLAGS $BFLAG +$BIN verify_keccak_ultra_honk -k vk -p proof $FLAGS $BIN proof_as_fields_honk -k vk -c $CRS_PATH -p $PROOF -$BIN contract_ultra_honk -k vk -c $CRS_PATH -b ./target/program.json -o Verifier.sol +$BIN contract_ultra_honk -k vk -c $CRS_PATH -o Verifier.sol # Export the paths to the environment variables for the js test runner export VERIFIER_PATH="$(pwd)/Verifier.sol" diff --git a/barretenberg/acir_tests/sol-test/yarn.lock b/barretenberg/acir_tests/sol-test/yarn.lock index af80282ea95..9afd4540c9f 100644 --- a/barretenberg/acir_tests/sol-test/yarn.lock +++ b/barretenberg/acir_tests/sol-test/yarn.lock @@ -4,44 +4,44 @@ "@adraffy/ens-normalize@1.10.0": version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== "@noble/curves@1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== dependencies: "@noble/hashes" "1.3.2" "@noble/hashes@1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== "@types/node@18.15.13": version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + resolved "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz" integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== aes-js@4.0.0-beta.5: version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== command-exists@^1.2.8: version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== commander@^8.1.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== ethers@^6.8.1: version "6.8.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.8.1.tgz#ee2a1a39b5f62a13678f90ccd879175391d0a2b4" + resolved "https://registry.npmjs.org/ethers/-/ethers-6.8.1.tgz" integrity sha512-iEKm6zox5h1lDn6scuRWdIdFJUCGg3+/aQWu0F4K0GVyEZiktFkqrJbRjTn1FlYEPz7RKA707D6g5Kdk6j7Ljg== dependencies: "@adraffy/ens-normalize" "1.10.0" @@ -54,32 +54,32 @@ ethers@^6.8.1: follow-redirects@^1.12.1: version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== js-sha3@0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== semver@^5.5.0: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== solc@^0.8.22: version "0.8.22" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.22.tgz#6df0bb688b9a58bbf10932730301374a6ccfb862" + resolved "https://registry.npmjs.org/solc/-/solc-0.8.22.tgz" integrity sha512-bA2tMZXx93R8L5LUH7TlB/f+QhkVyxrrY6LmgJnFFZlRknrhYVlBK1e3uHIdKybwoFabOFSzeaZjPeL/GIpFGQ== dependencies: command-exists "^1.2.8" @@ -92,17 +92,17 @@ solc@^0.8.22: tmp@0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tslib@2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== ws@8.5.0: version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 9ca094bae79..d130d4c34bd 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -828,7 +828,7 @@ void contract(const std::string& output_path, const std::string& vk_path) */ void contract_honk(const std::string& output_path, const std::string& vk_path) { - using VerificationKey = UltraFlavor::VerificationKey; + using VerificationKey = UltraKeccakFlavor::VerificationKey; using VerifierCommitmentKey = bb::VerifierCommitmentKey; auto g2_data = get_bn254_g2_data(CRS_PATH); @@ -1157,6 +1157,7 @@ template void write_vk_honk(const std::string& bytecodePa void proof_as_fields_honk(const std::string& proof_path, const std::string& output_path) { auto proof = from_buffer>(read_file(proof_path)); + info("proof length: ", proof.size()); auto json = to_json(proof); if (output_path == "-") { @@ -1468,6 +1469,9 @@ int main(int argc, char* argv[]) } else if (command == "write_vk_ultra_honk") { std::string output_path = get_option(args, "-o", "./target/vk"); write_vk_honk(bytecode_path, output_path); + } else if (command == "write_vk_ultra_keccak_honk") { + std::string output_path = get_option(args, "-o", "./target/vk"); + write_vk_honk(bytecode_path, output_path); } else if (command == "prove_mega_honk") { std::string output_path = get_option(args, "-o", "./proofs/proof"); prove_honk(bytecode_path, witness_path, output_path); diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp index 22e2c72f405..b2b1aa6e262 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp @@ -18,22 +18,6 @@ // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays, google-readability-casting) #define BBERG_SCALAR_MULTIPLICATION_FETCH_BLOCK \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 16] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 17] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 18] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 19] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 20] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 21] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 22] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 23] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 24] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 25] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 26] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 27] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 28] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 29] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 30] >> 32ULL)); \ - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 31] >> 32ULL)); \ \ uint64_t schedule_a = state.point_schedule[schedule_it]; \ uint64_t schedule_b = state.point_schedule[schedule_it + 1]; \ @@ -333,10 +317,10 @@ void add_affine_points(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - __builtin_prefetch(points + i - 2); - __builtin_prefetch(points + i - 1); - __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + // __builtin_prefetch(points + i - 2); + // __builtin_prefetch(points + i - 1); + // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); points[i + 1].y *= batch_inversion_accumulator; // update accumulator batch_inversion_accumulator *= points[i + 1].x; @@ -390,10 +374,10 @@ void add_affine_points_with_edge_cases(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - __builtin_prefetch(points + i - 2); - __builtin_prefetch(points + i - 1); - __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + // __builtin_prefetch(points + i - 2); + // __builtin_prefetch(points + i - 1); + // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); if (points[i].is_point_at_infinity()) { points[(i + num_points) >> 1] = points[i + 1]; @@ -611,14 +595,14 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 8: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 8] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 9] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 10] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 11] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 12] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 13] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 14] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 15] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 8] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 9] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 10] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 11] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 12] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 13] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 14] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 15] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; @@ -659,10 +643,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 4: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; const uint64_t schedule_c = state.point_schedule[schedule_it + 2]; @@ -685,10 +669,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 2: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; @@ -703,10 +687,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 1: { - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; Group::conditional_negate_affine(state.points + (schedule_a >> 32ULL), @@ -722,7 +706,7 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b default: { for (size_t k = 0; k < k_end; ++k) { uint64_t schedule = state.point_schedule[schedule_it]; - __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); + // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); const uint64_t predicate = (schedule >> 31UL) & 1UL; diff --git a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp index c59d07cbd01..481666ae417 100644 --- a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.cpp @@ -57,10 +57,17 @@ typename ExecutionTrace_::TraceData ExecutionTrace_::construct_t uint32_t offset = Flavor::has_zero_row ? 1 : 0; // Offset at which to place each block in the trace polynomials // For each block in the trace, populate wire polys, copy cycles and selector polys - for (auto& block : builder.blocks.get()) { - auto block_size = static_cast(block.size()); - // + auto get_blocks = [&]() { + if constexpr (!HasKeccak) { + return builder.blocks.get(); + } else { + return builder.blocks.get_for_ultra_keccak(); + } + }; + + for (auto& block : get_blocks()) { + auto block_size = static_cast(block.size()); // Update wire polynomials and copy cycles // NB: The order of row/column loops is arbitrary but needs to be row/column to match old copy_cycle code @@ -78,10 +85,12 @@ typename ExecutionTrace_::TraceData ExecutionTrace_::construct_t // Insert the selector values for this block into the selector polynomials at the correct offset // TODO(https://github.com/AztecProtocol/barretenberg/issues/398): implicit arithmetization/flavor consistency - for (auto [selector_poly, selector] : zip_view(trace_data.selectors, block.selectors)) { + for (size_t selector_idx = 0; selector_idx < NUM_USED_SELECTORS; selector_idx++) { + auto selector_poly = trace_data.selectors[selector_idx]; + auto selector = block.selectors[selector_idx]; for (size_t row_idx = 0; row_idx < block_size; ++row_idx) { size_t trace_row_idx = row_idx + offset; - selector_poly[trace_row_idx] = selector[row_idx]; + trace_data.selectors[selector_idx][trace_row_idx] = selector[row_idx]; } } diff --git a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.hpp b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.hpp index 39ddf504706..5a163ad2652 100644 --- a/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.hpp +++ b/barretenberg/cpp/src/barretenberg/execution_trace/execution_trace.hpp @@ -9,16 +9,18 @@ template class ExecutionTrace_ { using Builder = typename Flavor::CircuitBuilder; using Polynomial = typename Flavor::Polynomial; using FF = typename Flavor::FF; - using TrackBlocks = typename Builder::Arithmetization::TraceBlocks; + using TraceBlocks = typename Builder::Arithmetization::TraceBlocks; using Wires = std::array>, Builder::NUM_WIRES>; using ProvingKey = typename Flavor::ProvingKey; public: static constexpr size_t NUM_WIRES = Builder::NUM_WIRES; + static constexpr size_t NUM_USED_SELECTORS = + !HasKeccak ? Builder::Arithmetization::NUM_SELECTORS : Builder::Arithmetization::NUM_SELECTORS - 2; struct TraceData { std::array wires; - std::array selectors; + std::array selectors; // A vector of sets (vectors) of addresses into the wire polynomials whose values are copy constrained std::vector copy_cycles; uint32_t ram_rom_offset = 0; // offset of the RAM/ROM block in the execution trace @@ -55,7 +57,8 @@ template class ExecutionTrace_ { } { ZoneScopedN("selector initialization"); - for (size_t idx = 0; idx < Builder::Arithmetization::NUM_SELECTORS; ++idx) { + for (size_t idx = 0; idx < NUM_USED_SELECTORS; ++idx) { + selectors[idx] = Polynomial(proving_key.circuit_size); std::string selector_tag = builder.selector_names[idx] + "_lagrange"; proving_key.polynomial_store.put(selector_tag, selectors[idx].share()); diff --git a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp index db63d9cb0cd..c0a297a3d5a 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp @@ -411,6 +411,9 @@ concept IsHonkFlavor = IsAnyOf concept IsUltraFlavor = IsAnyOf; +template +concept HasKeccak = IsAnyOf; + template concept IsGoblinFlavor = IsAnyOf, diff --git a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp index 81b723ac252..277ef866da9 100644 --- a/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk_honk_shared/arithmetization/ultra_arithmetization.hpp @@ -30,6 +30,8 @@ template class UltraArith { aux, lookup, poseidon_external, poseidon_internal }; } + auto get_for_ultra_keccak() { return RefArray{ pub_inputs, arithmetic, delta_range, elliptic, aux, lookup }; } + bool operator==(const UltraTraceBlocks& other) const = default; }; @@ -122,6 +124,12 @@ template class UltraArith { this->aux, this->lookup, this->poseidon_external, this->poseidon_internal }; } + auto get_for_ultra_keccak() + { + return RefArray{ this->pub_inputs, this->arithmetic, this->delta_range, + this->elliptic, this->aux, this->lookup }; + } + void summarize() const { info("Gate blocks summary:"); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index 0da0887d8d7..74af801bc63 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -17,8 +17,8 @@ using namespace bb; -using ProverInstance = ProverInstance_; -using VerificationKey = UltraFlavor::VerificationKey; +using ProverInstance = ProverInstance_; +using VerificationKey = UltraKeccakFlavor::VerificationKey; std::vector add_variables(auto& circuit_builder, std::vector variables) { @@ -32,9 +32,9 @@ std::vector add_variables(auto& circuit_builder, std::vector v void prove_and_verify(auto& circuit_builder, bool expected_result) { auto instance = std::make_shared(circuit_builder); - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraVerifier verifier(verification_key); + UltraKeccakVerifier verifier(verification_key); auto proof = prover.construct_proof(); bool verified = verifier.verify_proof(proof); EXPECT_EQ(verified, expected_result); @@ -66,7 +66,7 @@ TEST_F(UltraHonkTests, ANonZeroPolynomialIsAGoodPolynomial) auto circuit_builder = UltraCircuitBuilder(); auto instance = std::make_shared(circuit_builder); - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto proof = prover.construct_proof(); auto& polynomials = instance->proving_key.polynomials; @@ -98,9 +98,9 @@ TEST_F(UltraHonkTests, StructuredTrace) // Construct an instance with a structured execution trace TraceStructure trace_structure = TraceStructure::SMALL_TEST; auto instance = std::make_shared(builder, trace_structure); - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraVerifier verifier(verification_key); + UltraKeccakVerifier verifier(verification_key); auto proof = prover.construct_proof(); EXPECT_TRUE(verifier.verify_proof(proof)); } @@ -224,9 +224,9 @@ TEST_F(UltraHonkTests, LookupFailure) }; auto prove_and_verify = [](auto& instance) { - UltraProver prover(instance); + UltraKeccakProver prover(instance); auto verification_key = std::make_shared(instance->proving_key); - UltraVerifier verifier(verification_key); + UltraKeccakVerifier verifier(verification_key); auto proof = prover.construct_proof(); return verifier.verify_proof(proof); }; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index 239f2bc66dd..b8b39a2b81e 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -86,6 +86,7 @@ template bool UltraVerifier_::verify_proof(const HonkP transcript); auto pairing_points = PCS::reduce_verify(opening_claim, transcript); auto pcs_verified = key->pcs_verification_key->pairing_check(pairing_points[0], pairing_points[1]); + info("PCS verified: ", pcs_verified); return sumcheck_verified.value() && pcs_verified; } From 50041c85cf703ebb0d12791b5837b8a2bcf4ae1c Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 20 Aug 2024 10:09:03 +0000 Subject: [PATCH 42/47] undo MSAN related changes --- barretenberg/cpp/Earthfile | 6 +- .../scalar_multiplication.cpp | 74 +++++++++++-------- 2 files changed, 48 insertions(+), 32 deletions(-) diff --git a/barretenberg/cpp/Earthfile b/barretenberg/cpp/Earthfile index 01eda7d85c0..3e4b6a75ff4 100644 --- a/barretenberg/cpp/Earthfile +++ b/barretenberg/cpp/Earthfile @@ -65,11 +65,11 @@ preset-msan-check: COPY --dir cmake CMakeLists.txt CMakePresets.json . # We never fail this as test-listing targets can timeout. Just pragmatically go on to see if the binary exists. - RUN cmake --preset msan -Bbuild && cmake --build build --target eccvm_recursion_tests || true + RUN cmake --preset msan -Bbuild && cmake --build build --target client_ivc_tests || true # install SRS needed for proving COPY --dir ./srs_db/+build/. srs_db - RUN echo "Warning: If ./bin/eccvm_recursion_tests is not found, there may be build failures above." - RUN cd build && ./bin/eccvm_recursion_tests --gtest_also_run_disabled_tests + RUN echo "Warning: If ./bin/client_ivc_tests is not found, there may be build failures above." + RUN cd build && ./bin/client_ivc_tests --gtest_also_run_disabled_tests preset-wasm: ARG TARGETARCH diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp index b2b1aa6e262..22e2c72f405 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp @@ -18,6 +18,22 @@ // NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays, google-readability-casting) #define BBERG_SCALAR_MULTIPLICATION_FETCH_BLOCK \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 16] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 17] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 18] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 19] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 20] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 21] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 22] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 23] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 24] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 25] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 26] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 27] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 28] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 29] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 30] >> 32ULL)); \ + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 31] >> 32ULL)); \ \ uint64_t schedule_a = state.point_schedule[schedule_it]; \ uint64_t schedule_b = state.point_schedule[schedule_it + 1]; \ @@ -317,10 +333,10 @@ void add_affine_points(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - // __builtin_prefetch(points + i - 2); - // __builtin_prefetch(points + i - 1); - // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + __builtin_prefetch(points + i - 2); + __builtin_prefetch(points + i - 1); + __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + __builtin_prefetch(scratch_space + ((i - 2) >> 1)); points[i + 1].y *= batch_inversion_accumulator; // update accumulator batch_inversion_accumulator *= points[i + 1].x; @@ -374,10 +390,10 @@ void add_affine_points_with_edge_cases(typename Curve::AffineElement* points, // Memory bandwidth is a bit of a bottleneck here. // There's probably a more elegant way of structuring our data so we don't need to do all of this // prefetching - // __builtin_prefetch(points + i - 2); - // __builtin_prefetch(points + i - 1); - // __builtin_prefetch(points + ((i + num_points - 2) >> 1)); - // __builtin_prefetch(scratch_space + ((i - 2) >> 1)); + __builtin_prefetch(points + i - 2); + __builtin_prefetch(points + i - 1); + __builtin_prefetch(points + ((i + num_points - 2) >> 1)); + __builtin_prefetch(scratch_space + ((i - 2) >> 1)); if (points[i].is_point_at_infinity()) { points[(i + num_points) >> 1] = points[i + 1]; @@ -595,14 +611,14 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 8: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 8] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 9] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 10] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 11] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 12] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 13] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 14] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 15] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 8] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 9] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 10] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 11] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 12] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 13] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 14] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 15] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; @@ -643,10 +659,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 4: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; const uint64_t schedule_c = state.point_schedule[schedule_it + 2]; @@ -669,10 +685,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 2: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; const uint64_t schedule_b = state.point_schedule[schedule_it + 1]; @@ -687,10 +703,10 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b break; } case 1: { - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 4] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 5] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 6] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 7] >> 32ULL)); const uint64_t schedule_a = state.point_schedule[schedule_it]; Group::conditional_negate_affine(state.points + (schedule_a >> 32ULL), @@ -706,7 +722,7 @@ uint32_t construct_addition_chains(affine_product_runtime_state& state, b default: { for (size_t k = 0; k < k_end; ++k) { uint64_t schedule = state.point_schedule[schedule_it]; - // __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); + __builtin_prefetch(state.points + (state.point_schedule[schedule_it + 1] >> 32ULL)); const uint64_t predicate = (schedule >> 31UL) & 1UL; From 1992e8e3198d9e3cb7af6cca3bfedb17b8494d71 Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 20 Aug 2024 10:12:40 +0000 Subject: [PATCH 43/47] more changes to make the solidity flow pass --- barretenberg/acir_tests/flows/honk_sol.sh | 1 - .../dsl/acir_proofs/honk_contract.hpp | 8 ++--- .../cpp/src/barretenberg/polynomials/pow.hpp | 2 +- .../solidity_helpers/honk_proof_gen.cpp | 2 +- .../src/barretenberg/sumcheck/sumcheck.hpp | 30 +++++++++---------- .../barretenberg/sumcheck/sumcheck_round.hpp | 20 ++++++------- .../ultra_honk/ultra_honk.test.cpp | 18 +++++------ .../ultra_honk/ultra_verifier.cpp | 3 +- barretenberg/sol/bootstrap.sh | 3 +- .../sol/src/honk/instance/Add2Honk.sol | 9 +++--- .../sol/src/honk/instance/BlakeHonk.sol | 8 ++--- .../sol/src/honk/instance/EcdsaHonk.sol | 8 ++--- .../ultra/keys/Add2UltraVerificationKey.sol | 4 +-- .../ultra/keys/BlakeUltraVerificationKey.sol | 4 +-- .../ultra/keys/EcdsaUltraVerificationKey.sol | 4 +-- .../sol/test/base/DifferentialFuzzer.sol | 5 ++++ barretenberg/sol/test/honk/TestBaseHonk.sol | 2 +- 17 files changed, 69 insertions(+), 62 deletions(-) diff --git a/barretenberg/acir_tests/flows/honk_sol.sh b/barretenberg/acir_tests/flows/honk_sol.sh index 527d13513e5..1801d034e19 100755 --- a/barretenberg/acir_tests/flows/honk_sol.sh +++ b/barretenberg/acir_tests/flows/honk_sol.sh @@ -11,7 +11,6 @@ export PROOF_AS_FIELDS="$(pwd)/proof_fields.json" # Create a proof, write the solidity contract, write the proof as fields in order to extract the public inputs $BIN prove_keccak_ultra_honk -o proof $FLAGS $BFLAG $BIN write_vk_ultra_keccak_honk -o vk $FLAGS $BFLAG -$BIN verify_keccak_ultra_honk -k vk -p proof $FLAGS $BIN proof_as_fields_honk -k vk -c $CRS_PATH -p $PROOF $BIN contract_ultra_honk -k vk -c $CRS_PATH -o Verifier.sol diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/honk_contract.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/honk_contract.hpp index f44a7c05485..711ed414a81 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/honk_contract.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/honk_contract.hpp @@ -270,7 +270,7 @@ struct Transcript { Fr beta; Fr gamma; Fr[NUMBER_OF_ALPHAS] alphas; - Fr[LOG_N] gateChallenges; + Fr[CONST_PROOF_SIZE_LOG_N] gateChallenges; Fr[CONST_PROOF_SIZE_LOG_N] sumCheckUChallenges; Fr rho; // Zero morph @@ -297,7 +297,7 @@ library TranscriptLib t.gateChallenges = generateGateChallenges(t.alphas[NUMBER_OF_ALPHAS - 1]); - t.sumCheckUChallenges = generateSumcheckChallenges(proof, t.gateChallenges[LOG_N - 1]); + t.sumCheckUChallenges = generateSumcheckChallenges(proof, t.gateChallenges[CONST_PROOF_SIZE_LOG_N - 1]); t.rho = generateRhoChallenge(proof, t.sumCheckUChallenges[CONST_PROOF_SIZE_LOG_N - 1]); t.zmY = generateZMYChallenge(t.rho, proof); @@ -385,9 +385,9 @@ library TranscriptLib } } - function generateGateChallenges(Fr previousChallenge) internal view returns(Fr[LOG_N] memory gateChallenges) + function generateGateChallenges(Fr previousChallenge) internal view returns(Fr[CONST_PROOF_SIZE_LOG_N] memory gateChallenges) { - for (uint256 i = 0; i < LOG_N; i++) { + for (uint256 i = 0; i < CONST_PROOF_SIZE_LOG_N; i++) { previousChallenge = FrLib.fromBytes32(keccak256(abi.encodePacked(Fr.unwrap(previousChallenge)))); gateChallenges[i] = previousChallenge; } diff --git a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp index 26217478aec..7308675ada7 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp @@ -118,7 +118,7 @@ template struct PowPolynomial { { size_t pow_size = subspan.has_value() ? 1 << subspan.value() : 1 << betas.size(); - info("size of pow", pow_size); + // info("size of pow", pow_size); pow_betas = std::vector(pow_size); // Determine number of threads for multithreading. diff --git a/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_proof_gen.cpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_proof_gen.cpp index fc5e5a69bbf..e6777182317 100644 --- a/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_proof_gen.cpp +++ b/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_proof_gen.cpp @@ -38,7 +38,7 @@ template