@aztec/accounts 0.55.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.33.0+cb20e078dd909656110d133339b2b425e6c3ebb0","name":"SchnorrSingleKeyAccount","functions":[{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(view)"],"abi":{"error_types":{},"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"}}],"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":"num_txs","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":"slot_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"}}],"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":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::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","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::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"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"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":"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":"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":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"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_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","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":"end_gas_left","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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","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":"end_gas_left","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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"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":"num_txs","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":"slot_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"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_auth_witness","pack_returns","directive_invert"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"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"}}],"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":"num_txs","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":"slot_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"},{"name":"cancellable","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":"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"}}],"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":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::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","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::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"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"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":"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":"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":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"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_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","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":"end_gas_left","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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","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":"end_gas_left","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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"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":"num_txs","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":"slot_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"}},"bytecode":"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","debug_symbols":"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9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9inL9hnL9hnL9hnL9hnL9tmBSmVj2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5j2T5n2T5n2T5n2T5n2T4/UKnsLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNvnLNsXLNsXLNsXLNsXLNsXByqVg2X7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX7gmX74u62r/v1xWP2cZzPL9bj/Jf259Xn/7nfJxGJC6/P0fzz8pyPk/w5quw5qu45qu05qu85auw5au45au05au856qw5au1pSwVuSzLZb289dciVo6pOv7ZgteOYv3v9344LbkzfcVxwa/qO4/qu44Lb03ccF9ygvuO4d25Rlfr24pZPdxDu7cGvjTOocVgePFgePFgePO7twa/97DhrnGCNk6xxWKncrFRuVirf24NfG4eVynf24Kr61ng080qfOu+XvQ1/fknNz/3ozn785uP77x4/fvf4rE+VYX2qDOtT5c6e/R/8WWt7+5qYR3z+Ipd39u83H19+9/gXP+Ve/1ccV0a3kdebrTYhF97evvft/XvfPr737fN7376+9+37d//g/+7UlN+dmvK7U1PQ3w2uj4/+bnB9fCd9UUyWr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr0+Wr88g34fOqfdfux/H+184/zOQJO9s93/0qOS/fbnxUXPPUWvPUcm/2b7xUVmf3qxnLCfrGcvJesZysp6xnKxnLCfrGcvJesZysp6xnKxnLCfrGcvJesZysp6xnKxnLCfrGcvJesZysp6xnKxnLCfrGcvJesZysp6xnCxTmyxTmyxTm6xnLCfrGcvJesZysp6xnKxnLCfrGcvJesZysp6xnCxTm6xnLCfrGcvJesZysp6xnKxnLCfrGcvJesZysp6xXKxnLBfrGcvFesZysZ6xXAcqlYv1jOViPWO5WM9YLtYzlov1jOViPWO5WM9YLtYzlov1jOViGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiGdBiPWO5WM9YLtYzlov1jOViPWO5WM9YLpbtK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5btK5bta5bta5bta5bta5bt6wOVys2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfc2yfcOyfcOyfcOyfcOyfXOgUnlYtm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Ytm9Qtk8PlO07xyGl8jkOKZXPcUipfI5DSuVzHFIqn+OQUvkch5TK5zikVD7HYaUyyvad47BSGWX7znHuncrdry8es4/jfH6xHhHx59Xn/7nfJxGJC6/P0fzz8pyPk/w5qu85auw5au45au05au856n0/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lcrFSuVipTLreZrJep5msp6nmaznaSbreZrJep5mssxtssxtNiuVm5XKzUrlZqXysFKZZW6TZW5zWKnMep5msp6nmcNK5WGlMsvcJsvcFsvcFsvcFsvcFsvc1oFK5TpQqVys52kW63maxXqeZrGep1ms52kW63maxXqeZrGep1ksc1ssc1vCSmVhpbKwUllYqaysVFZWKisrlZWVyqznaRbreZqlrFRWViorK5WVlcrGSmXW8zSL9TzNMlYqGyuVjZXKLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNtXLNvXLNvXLNvXLNvXLNvXByqVm2X7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7mmX7hmX7hmX7hmX7hmX75kCl8rBs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs37Bs36Bsnx0o23eOQ0rlcxxSKp/jkFL5HIeUyuc4pFQ+xyGl8jkOKZXPcUipfI7DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcVCoLy/YJy/YJy/YJy/bJgUplYdk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Ydk+Zdk+Zdk+Zdk+Zdk+PVCprCzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbZyzbZyzbZyzbZyzbZwcqlY1l+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+5xl+5xl+5xl+5xl+/xApbKzbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbF+wbF+wbF+wbF+wbF8cqFQOlu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu1Llu1Llu1Llu1Llu3LA5XKybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9xbJ9xbJ9xbJ9xbJ9daBSuVi2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1m2r1m2r1m2r1m2rw9UKjfL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL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lu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu1Llu0rlu0rlu0rlu0rlu2rA5XKxbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9xbJ9zbJ9zbJ9zbJ9zbJ9faBSuVm2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2r1m2b1i2b1i2b1i2b1i2bw5UKg/L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3L9g3K9sWBsn3nOKRUPschpfI5DimVz3FIqXyOQ0rlcxxSKp/jkFL5HIeUyuc4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHQaWysGyfsGyfsGyfsGyfHKhUFpbtE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btE5btU5btU5btU5btU5bt0wOVysqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcqyfcayfcayfcayfcayfXagUtlYts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Yts9Zts9Zts9Zts9Zts8PVCo7y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/Y5y/YFy/YFy/YFy/YFy/bFgUrlYNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+YNm+uLPt0yOPPy9WOeLjOJdefBag11cf0e8vF7n0+hzNPy/PsQ9n/XPU2HPU3HPU2nPU3nPUWXNUjgG98OL3MSTm/Z1N/3x8cMToPzM8phn8M8Mb91+ITLa/HbUOufIvRHX67d3tOObvXv+34/qu44K7ynccF9xXvuO44M4i5/Tvn26HxIXxH6mHtL19OHfYpw/nR+ohXx/1zur5R48qe46qe44KbkT/+FG73r4zHJ++M9xZmf/oUR/prs2Voz7SXZsrR32kuzZXjvpQbenroz5UW/rqqHk8VFv6+qgP1Za+PupDtaWvj7qmLeXhe466pi3lsaYt5bGmLeWxpi3lsactyZ62JHvakuxpS7KnLd15K8uPHnVPW5I9bUn2tCXZ05ZkT1vSPW1J97Ql3dOWdE9buvO2pB896p62pHvaku5pS7qnLemetmR72pLtaUu2py3ZnrZ05y1mP3rUPW3J9rQl29OWbE9bsj1tyfe0Jd/TlnxPW/I9benO2wV/9Kh72pLvaUu+py35nrbke9pS7GlLsactxZ62FHva0p23fv7oUfe0pdjTlmJPW4o9bSn2tKXc05ZyT1vKPW0p97SlO2/j/dGj7mlLuact5Z62lHvaUu5pS7WnLdWetlR72lLtaUsPtSX7ylH3tKWH2pJ95ah72tJDbcm+ctQ9ban3tKXe05Z6T1si7+u+9VF9z1H3tCXyju5bH3VPW3qsXd5fH3VPW3qsXd5fH3VPW3qsXd5fH3VPW9qzyzv37PLOPbu8c88u79yzyzv37PKuPbu8a88u79qzy7v27PKuw/ccdU1bqj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/as8u79uzyrj27vGvPLu/es8u79+zy7j27vHvPLu8+fM9R17Sl3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8u49u7x7zy7v3rPLu/fs8p49u7xnzy7v2bPLe/bs8p7D9xx1TVuaPbu8Z88u79mzy3v27PKePbu8Z88u79mzy3v27PKePbu8Z88u79mzy3v27PKePbu8Z88u79mzy3v27PKePbu8Z88u79mzy3v27PKePbu8Z88u79mzy3v27PKePbu8Z88u73moXd7n58nbUe3zUR+pLV05qt/3qDb6Orxbf31UeVlf/PrWecT83VH/Nn787vETPH4e72+don5h/Prd4/fvHn9+9fj33mH9j40/9fpqqeOwqx+d9hayHfZvQ/beO6x/8qi656i256i+56jkRvEPH/XLRu/o9nHbo6Kbym2Pim41tz0qugHd9KjxUG3p66M+VFv6+qgP1Za+PupDtaWvj+p7jrqnLcWethR72lLsaUuxpy3lnraUe9pS7mlLuact3XuH9U8edU9byj1tKfe0pdzTlnJPW6o9ban2tKXa05ZqT1u69w7rnzzqnrZUe9pS7WlLtact1Z621HvaUu9p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bJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbF+wbF+wbF+wbF+wbF8cqFQOlu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu1Llu1Llu1Llu1Llu3LA5XKybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9xbJ9xbJ9xbJ9xbJ9daBSuVi2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1m2r1m2r1m2r1m2rw9UKjfL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9jXL9g3L9g3L9g3L9g3L9s2BSuVh2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5h2b5B2b46ULbvHIeUyuc4pFQ+xyGl8jkOKZXPcUipfI5DSuVzHFIqn+OQUvkch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG2b5zHFYqo2zfOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKhUFpbtE5btE5btE5btkwOVysKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcKyfcqyfcqyfcqyfcqyfXqgUllZtk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Zts9Yts9Yts9Yts9Yts8OVCoby/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/Y5y/Y5y/Y5y/Y5y/b5gUplZ9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9m+YNm+YNm+YNm+YNm+OFCpHCzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzbFyzblyzblyzblyzblyzblwcqlZNl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+5Jl+4pl+4pl+4pl+4pl++pApXKxbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+xbF+zbF+zbF+zbF+zbF8fqFRulu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu1rlu0blu0blu0blu0blu2bA5XKw7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9w7J9g7J9faBs3zkOKZXPcUipfI5DSuVzHFIqn+OQUvkch5TK5zikVD7HIaXyOQ4rlVG27xyHlcoo23eOw0pllO07x2GlMsr2neOwUhll+85xWKmMsn3nOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4901lPfL482KVIz6Oc+nFEfH66iP6/eUil16fo/nn5Tn24ax/jup7jhp7jpp7jlp7jtp7jjprjnpnX/qjR5U9R9U9RwW3JZlsf6t6dciVo6pOv727Hcf83ev/dlzfdVxwa/qO44Kb03ccF9yevuO44Ab1Hce9QYuSt5nqY/Rf/Fpd+fa1uvp9/vrzQXELs33LcYQ1jt53nD6O9x/k+jyOscZx1jjB+tlJ1jjFGqdZ47BSuVmp3KxUbmWNY6xxWKncwRonWeMUa5z7prKqvrVlzfw4zoV3jnxr7hIl+blb9/zq8ef43ePL7x6f9akyrE+VW5jzW44T5J+1tn596zx/bXLhZy1/9/j1u8e/+Cn3+r/iuDK6jbzeqLcJufD2851vL5eN+u3eXr737fV7396+9+39N//gy/GrU1OOX52acvzq1JQD/d3g+vjo7wZXx5eD9EVRRFjjoO7Ti6Du08stDPwtx0HdERJB3RESQd0REmnWOIMaR1mprKxUVlYqKyuVlZXKykplZaWyslJZWamsrFQ2ViobK5WNlcrGSmVjpbKxUtlYqWysVDZWKhsrlZ2Vys5KZWelsrNS2Vmp7KxUdlYqOyuVnZXKzkrlYKVysFI5WKkcrFQOVioHK5WDlcrBSuVgpXKwUjlZqZysVE5WKicrlZOVyslK5WSlcrJSOVmpnKxULlYqFyuVWVZSWFZSWFZSipXKxUrlYqVysVK5WKncrFRuVio3K5WblcosKyksKyksKyksKynNSuVmpfKwUnlYqTysVB5WKg8rlYeVysNK5WGl8rBSeVCprAcqlfVApbIeqFTWA5XKeqBSWQ9UKuuBSmU9UKmsByqV9WClMsv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv2Kcv26Z2fb6s2r0vj1K3fXxyX3jk/PHCsjsPeXv7PPHBD7/zs3B89auw5au45au05au85KuqJm8p6DrKynoOsrOcgK+s5yMp6DrKynoOsrOcgK+s5yMp6DrKynoOsrOcgK+s5yMp6DrIGK5WDlcrBSuVgpXKwUjlYqRysVE5WKicrlZOVyslK5WSlcrJSOVmpnKxUTlYqJyuVi5XKxUrlYqVysVK5WKlcrFQuVioXK5WLlcrFSuVmpXKzUrlZqdysVG5WKjcrlZuVys1K5WalcrNSeVipPKxUHlYqDyuVh5XKw0rlYaXysFJ5WKk8qFS2A5XKdqBS2Q5UKtuBSmU7UKlsByqV7UClsh2oVLYDlcp2sFJZWKksrFQWVioLK5WFlcrCSmVhpbKwUllYqSysVFZWKisrlZWVyspKZWWlsrJSWVmprKxUVlYqKyuVjZXKxkplY6WysVLZWKlsrFQ2ViobK5WNlcos22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs22cs2+cs2+cs2+cs2+cs2+cHKpWdZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfucZfuCZfuCZfuCZfuCZfviQKVysGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsGxfsmxfsmxfsmxfsmxfHqhUTpbtS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btS5btK5btK5btK5btK5btqwOVysWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfcWyfc2yfc2yfc2yfc2yfX2gUrlZtq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztq9Ztm9Ytm9Ytm9Ytm9Ytm8OVCoPy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNy/YNyvbNgbJ95zikVD7HIaXyOQ4plc9xSKl8jkNK5XMcUiqf45BS+RyHlMrnOKxURtm+cxxWKqNs3zkOK5VRtu8ch5XKKNt3jsNKZZTtO8dhpTLK9p3jsFIZZfvOcVipjLJ95zisVEbZvnMcViqjbN85DiuVUbbvHIeVyijbd47DSmWU7TvHYaUyyvad47BSGWX7znFYqYyyfec4rFRG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QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYP5QYP5QYP5QYP5QTtY+WwwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP2gwP+gwP+gwP+gwP+gwP+gHK58d5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcd5gcD5gcD5gcD5gcD5gfjYOVzwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwvxgwvxgwvxgwvxgHqx8TpgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfTJgfLJgfLJgfLJgfLJgfrIOVzwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgwXzgw3zgw3zgw3zgw3zg32w8rlhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfrBhfnBgfnBgfnBgfnBgfnAOVj4PzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8OzA8Oyw/KwfKD5zyofD7nQeXzOQ8qn895UPl8zoPK53MeVD6f86Dy+ZwHlc/nPLB8ZvnBcx5YPrP84DkPLJ9ZfvCcB5bPLD94zgPLZ5YfPOeB5TPLD57zwPKZ5QfPeWD5zPKD5zywfGb5wXMeWD6z/OA5DyyfWX7wnAeWzyw/eM4Dy2eWHzzngeUzyw+e88DymeUHz3lg+czyg+c8sHxm+cFzHlg+s/zgOQ8sn1l+8JwHls8sP3jOA8tnlh8854HlM8sPnvPA8pnlB895YPnM8oPnPLB8ZvnBcx5YPrP84DkPLJ9ZfvCcB5bPLD94zgPLZ5YfPOeB5TPLD57zwPKZ5QfPeWD5zPKD5zywfGb5wXMeWD6z/OA5DyyfWX7wnAeWzyw/eM4Dy2eWHzzngeUzyw+e88DymeUHXx6ACpsHls8sP/jyQBfYPLB8ZvnBlwW1sHlg+czygy8Ld2DzwPKZ5QdfACFqHoH5QYH5QYH5QYH5wfMX3rB5WPksMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD8oMD+oMD+oMD+oMD+oMD+oByufFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHFeYHDeYHDeYHDeYHDeYH7WDls8H8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMH8oMP8oMP8oMP8oMP8oB+sfHaYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYH3SYHwyYHwyYHwyYHwyYH4yDlc8B84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MB84MJ84MJ84MJ84MJ84N5sPI5YX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX4wYX6wYH6wYH6wYH6wYH6wDlY+F8wPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswPFswP1p39oB55/HmxyhEf57n04oh4ffUR/f5ykUuvz9H88/Ic+3DY17POnrPe2T3+7Fll0Vl10Vlt0Vl90Vlj0Vlz0Vlr0VnBvUkm299aXx1y5ayq02/vbscxf/f6P+cFd6fvOG+B+9O3nBfcob7lvOAe9S3nBXepbzmv/+vnlbeh6uMnwMXv2Wcxf3txvx+gXj8vbuHCbzpPwuap+87Tx/H+w1wX5mnYPMOa5xYu/JY/P7dw4TedR2HzGGweWD43LJ8bls9dsHkaNg8sn+eAzSOweRQ2z33zWVXfGrRmfpznwjtHvrV5iZK80LfHf/n88cvnz18+P+zzZWCfLzOoefo4yD9vbf361nnEhfsDfcgvn19/+fwXP+9e/3ccV2a3kdeb+TYhl97fv/n945vfP7/5/eub37+/+f3nd//8yy/PT/nl+Sm/PD8F/X3h3zE/+vvCv2P+QH1/bEnYPKz7+S2s+/ktrPtFraz7Ra2s+0WtrPtFrQabx2HzwPJZYfmssHxWWD4rLJ8Nls8Gy2eD5bPB8tlg+WywfDZYPhssnw2WzwbLZ4fls8Py2WH57LB8dlg+OyyfHZbPDstnh+Wzw/I5YPkcsHwOWD4HLJ8Dls8By+eA5XPA8jlg+RywfE5YPicsnxOWzwnL54Tlc8LyOWH5nLB8Tlg+JyyfC5bPBcvnguVzwfK5YPlcsHwuWD7DPGbDPGbDPGY3LJ8bls8Ny+eG5XPD8rlh+dywfG5YPjcsn2Ees2Ees2Ees2EesweWzwPL54Hl88DyeWD5PLB8HlY+z8HK5zlY+TwHK5/nYOXzHKx8noOVz3Ow8nkOVj7PwcrnOWD5LLB8Flg+CyyfBZbPAstnmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB8cmB+cOz+nV21e99epW7+/OC69c354Slodh729/J96Nsjc+RnAP3rWOz9f+GfPKovOqovOaovO6nc967XnTw7sec4De57zwJ7nPLDnOQ/sec4De57zwJ7nPLDnOQ/sec4De57zwJ7nPLDnOQ/sec4TsHwOWD4nLJ8Tls8Jy+eE5XPC8jlh+ZywfE5YPicsnxOWzwXL54Llc8HyuWD5XLB8Llg+FyyfC5bPBcvnguVzw/K5YfncsHxuWD43LJ8bls8Ny+eG5XPD8rlh+TywfB5YPg8snweWzwPL54Hl88DyeWD5PLB8HlQ+63Gg8vmcB5XP5zyofD7nQeXzOQ8qn895UPl8zoPK53MeVD6f86Dy+ZwHls8Cy2eB5bPA8llg+SywfBZYPgssnwWWzwLLZ4Hls8LyWWH5rLB8Vlg+KyyfFZbPCstnheWzwvJZYflssHw2WD4bLJ8Nls8Gy2eD5bPB8tlg+WywfDZYPjssnx2Wzw7LZ4flM8sPnvPA8pnlB895YPnM8oPnPLB8ZvnBcx5YPrP84DkPLJ9ZfvCcB5bPLD94zgPLZ5YfPOeB5TPLD57zwPKZ5QfPeWD5zPKD5zywfGb5wXMeWD6z/OA5DyyfWX7wnAeWzyw/eM4Dy2eWHzzngeUzyw+e88DymeUHz3lg+czyg+c8sHxm+cFzHlg+s/zgOQ8sn1l+8JwHls8sP3jOA8tnlh8854HlM8sPnvPA8pnlB895YPnM8oPnPLB8ZvnBcx5WPgvMDwrMDwrMDwrMD8rBymeB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGB+UGF+UGF+UGF+UGF+UE9WPmsMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD+oMD9oMD9oMD9oMD9oMD9oByufDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHDeYHHeYHHeYHHeYHHeYH/WDls8P8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8oMP8YMD8YMD8YMD8YMD8YBysfA6YHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYHwyYH0yYH0yYH0yYH0yYH8yDlc8J84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MJ84MF84MF84MF84MF84N1sPK5YH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYH6wYX6wYX6wYX6wYX6wD1Y+N8wPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPNswPDswPDswPDswPDswPzsHK54H5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wYH5wbmzH9Qjjz8vVjni4zyXXhwRr68+ot9fLnLp9Tmaf16e5y+K3t/89ayx6Ky56Ky16Ky96Kyz56wcZ3rhxe9jSMz7O5u+fopwVOo/NT2mI/xT0xv3X4mc91f87ax1yJV/JfpSaF/f3Y5j/u71f87ry84Lbi3fcl5wc/mW84Lbi5zjv3/KHRKX5n+kRtL29indYZ8/pR+pkXx51vOH9Vh0Vll0Vl10VnA3+sfP2vX2DeKYz2f1RWd9pDs51876SHdyrp31ke7kXDvrQ/WmK2d9qN709VnloXrTlbM+VG+6ctaH6k1XzrqoN915w8TPnnVRb5JFvUkW9SZZ1JtkUW/SRb1JF/UmXdSbdFFvuvPml58966LepIt6ky7qTbqoN+mi3mSLepMt6k22qDfZot50541MP3vWRb3JFvUmW9SbbFFvskW9yRf1Jl/Um3xRb/JFvenOm9J+9qyLepMv6k2+qDf5ot7ki3pTLOpNsag3xaLeFIt60503GP7sWRf1pljUm2JRb4pFvSkW9aZc1JtyUW/KRb0pF/WmO28W/dmzLupN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xPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgxPzgwvzgwvzgwvzgwvzguqx+XpgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgfXJgf3Jgf3Jgf3Jgf3Jgf3JfVzxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgxvzgwfzgwfzgwfzgwfzg+ey+vlgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBgfvBg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","brillig_names":["get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_format","notify_set_min_revertible_side_effect_counter","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"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"}},"bytecode":"H4sIAAAAAAAA/9VW207DMAx1Wbum6yom+IHyhuCBVtqkPQ5x/QB+YBqV2MuG1sL3M3c2O8sKLzQSjRQ5ceLjE8e5eLQrZls9aQci+3RcdM5MZPa3kreIlbnk6XWE50lHePY6wtNvkafXwJOlL20+d3zmQtqdx6NBNOaN7sE4/QLkWU653ED7UuTL27JMF+tVtZkvqvR1XZTpal2lH2WRvm+Wn/Oq4H5RfgPdioyEEJKetRO1PLIW3hr2dLyIhLsD3hPGHbjBznhj78w+9gS+OCmeZEylJzWRcQL7hPaJcw86TbgH0OmL8Ai6kA59MR/jZr+mDvcrY9zYDXaewP4Q+MCCB1l5DMhZDtUvWmz5V196lut8kc00oPPNIc86X6x85G4K4wbWpOPX1tqQS8/iwriBi1hIXvVdYGfZGGPoN8QwaIhhvyGG59v6bOEw79A44V2/VgY4+uBLeZ7AHAM8Auhf0V4faRIInsZFcU957ZpH5mc737IbwZw+2IWWXQi867nbeiHtWOKJ90uLv77cfg/a/FHiWfYFW33pegKYo1+mMzouGAOiTtyvky7fr0OL0wh0mItDC2toYf0Hu4QOY6s6vctjkF9e6Ei/eg4AAA==","debug_symbols":"lZDLCsMgEEX/ZdYu2sbG4q+UEjTRMCAa1BSK+O+dPBbZuhnmzNyzuQUmo9d5QG9DAvku4MKoMgZPVCoDHdE5nIfrGW7b4N2eT4vyG6asYgbZ9YKB8RNt4kG+RWdA8vurfhhw3q4825W+XRGNSiX8qohKO3M2ZVc/XorLv+X4UPgP","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_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"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_abi"}]}},"file_map":{"115":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\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::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_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 header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\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<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\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<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\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<KeyValidationRequest>; 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 note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n 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_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.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 note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.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 notify_set_min_revertible_side_effect_counter(self.min_revertible_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.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_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\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 emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\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, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\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, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 (end_side_effect_counter, returns_hash) = 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 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 let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\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 counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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 note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n 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"},"143":{"path":"/usr/src/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, MAX_ARGS_LENGTH\n},\n point::Point, traits::Hash, hash::{sha256_to_field, poseidon2_hash_with_separator}\n};\nuse crate::oracle::logs_traits::ToBytesForUnencryptedLog;\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\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 len_bytes: [u8; 4] = (n as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + 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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\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 poseidon2_hash_with_separator(\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<let N: u32>(&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<let N: u32>(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() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\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] = poseidon2_hash_with_separator(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] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(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..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn 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)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn 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; 2] {}\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) -> (u32, Field) {\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 let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn 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) {}\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) {\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)]\nunconstrained fn 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) {}\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) {\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\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\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// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\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"},"26":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\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 #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_le_radix(256)\n }\n // docs:end:to_le_bytes\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_be_radix(256)\n }\n // docs:end:to_be_bytes\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\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 comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\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 x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_radix_example\n}\n"},"264":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use 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 {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(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 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\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 {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\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<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\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<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"265":{"path":"/usr/src/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)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> 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<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"269":{"path":"/usr/src/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 merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::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\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\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(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.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 silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn 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 poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\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<u8, 160> = 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: [u8; 32] = inputs[i].to_be_bytes();\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: [u8; 32] = input[offset].to_be_bytes();\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: [u8; 32] = logs[offset].value.to_be_bytes();\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: [u8; 32] = logs[offset].value.to_be_bytes();\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<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\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 = std::hash::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\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"292":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_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<let K: u32>(&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<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&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"},"312":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.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<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"325":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n 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 { inner: 0 }\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<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> 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_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { 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 = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\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"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global 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 #[no_predicates]\n pub fn hash<let N: u32>(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) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\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 }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(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 { _state: &[] }\n }\n}\n"},"417":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr","source":"use dep::authwit::auth_witness;\nuse dep::aztec::{\n protocol_types::{address::PartialAddress, utils::arr_copy_slice},\n keys::{PublicKeys, PUBLIC_KEYS_LENGTH}\n};\n\nstruct AuthWitness {\n keys: PublicKeys,\n signature: [u8; 64],\n partial_address: PartialAddress,\n}\n\nimpl AuthWitness {\n fn deserialize(values: [Field; 77]) -> Self {\n let mut signature = [0; 64];\n for i in 0..64 {\n signature[i] = values[i + PUBLIC_KEYS_LENGTH] as u8;\n }\n Self {\n keys: PublicKeys::deserialize(arr_copy_slice(values, [0; PUBLIC_KEYS_LENGTH], 0)),\n signature,\n partial_address: PartialAddress::from_field(values[76])\n }\n }\n}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> AuthWitness {\n let witness: [Field; 77] = auth_witness::get_auth_witness(message_hash);\n AuthWitness::deserialize(witness)\n}\n"},"418":{"path":"/usr/src/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::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 // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[aztec(private)]\n #[aztec(view)]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n let witness = unsafe {\n get_auth_witness(outer_hash)\n };\n recover_address(outer_hash, witness).eq(context.this_address())\n }\n}\n"},"419":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/util.nr","source":"use std::schnorr::verify_signature;\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: [u8; 32] = message_hash.to_be_bytes();\n // In a single key account contract we re-used ivpk_m as signing key\n let verification = verify_signature(\n witness.keys.ivpk_m.inner.x,\n witness.keys.ivpk_m.inner.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(witness.keys.hash(), witness.partial_address)\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiller can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\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 /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&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 /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\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 /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\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 /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\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::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> 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<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\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<Field, 10> = 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<Field, 2> = 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<Field, 10> = 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 mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"72":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `keccak256(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field\n) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\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_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"74":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\nstruct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_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_authwit_message_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 IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\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<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = 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 poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\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<u8, APP_PAYLOAD_SIZE_IN_BYTES> = 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_array(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"},"77":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\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<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = 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 poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = 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_array(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"},"85":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\nstruct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\ntrait ToPoint {\n fn to_point(self) -> Point;\n}\n\nstruct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nstruct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.34.0+02fea6abe8637b9fb8f9535d1709b367d5e1da5c","name":"SchnorrSingleKeyAccount","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3715688037512703171":{"error_kind":"fmtstring","item_types":[],"length":16}},"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"}},"bytecode":"H4sIAAAAAAAA/9VYTXPaMBCVg41lUwe3gEnSQ3ttT3IwNNyY6ef/8KTX/IT89bBGOzw2xBkUaSZoxiNb0r59eitpbUdqV/T2iux9Yuuhel54zMbW5m2l9ohlQvKMzoTnxZnwHJwJz9gjz+gIT6pje0/7jvZcqnb78VknGlOgB9Cv+oCk10dbZxYInW08KZcJv96w75o2s9wD8F4Sbh4G21BAfuq99gp8UTD/2j6uI3sVtl+BfaH2Af8FbbxQfkMbn+R/oC1Vh76Ijw4Tr7uA8TIFaKjABxbcJLzecxUszl22GAn/ufDfxdQKrqEttg8jaEvEmqHHL9CvYU7c/13MDbkMBBfCTUJoYWM/DIFtTIMaxkc0TI5oODyi4WR7/RM4xDvVQXh3mUADxxh8Mc8LGKOBRwLP39S+PYOTPgZdGHdMc+d1pF+2i4VdCWOGYJcKuxR4d2O311d7P7J64hng701ltZZntj/sH4tM7feiZ973hP0hCHbTYReA7XP9EvZlGE1WhD0Og93l9jII9m2nyUfA9vjFUFMcP6nDQv4mQeJb1335k33mwClE/pwI/+wL8+dUcCqhDffVVGBNBRZpOYPxHtfcf+Q0O4ET2pWOdiNHu1N4knYVjPd49jbIqXKcy9jRLne0OyVWpN0cxntcdwfazR3n4qrdpaNd5mjnus5d5zcHvngG+/xLhJxii82+OM8kMObB1nQuXqnDQjyvgafHXHHblyuugRPfM7dccErewGmxWJt2tV6umrq9b9tFBNjMiZ/xf8eNGCNzDOn2OYxuBr9dbkAnfv9G7fibgLngt0sG9r459unIPkvBlXm8pj9pfQX3PJcC7DZe5rH7R4DvE+xrFkQ3s+zbE+wzV6He33bvTzPhfyL0J00qwamENoxlJbAqgfUe7PAfGc+V8sIT7yz2rOIYAAA=","debug_symbols":"tdnLioNAEEDRf+m1Cx/dVV3+yjAETTQ0iAY1A4P472PmwQSyvhuxtPruzqo3d+na+/WUxn5aXP22uWE6N2uaxmPa9sy1cxqGdD09f3b54+HL7/3l1oyPcVmbeXW1lJnrxsvxosfpPg2dq72v9uxlU/829X8z2P6eOV9hZY+VA1YWrKxYOWJlo8ohx8oFVsYMBsxgwAwGzGDADAbMYMAMBsygYAYFMyiYQcEMCmZQMIOCGRTMoGAGBTOomEHFDCpmUDGDihlUzKBiBhUzqJhBxQxGzGDEDEbMYMQMRsxgxAxGzGDEDEbMYMQMGmbQMIOGGTTMoGEGDTNomEHDDBpm0DCDRZ5z6YJLl1y64tKeSwcuLVxauXTk0pzGAtK4H9NHM6emHbrfe4f+Pp6friHWz9vPn2P5Cw==","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","view"],"abi":{"error_types":{},"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"}}],"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":"num_txs","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":"slot_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"}}],"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":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::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","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::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"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"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":"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":"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":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"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_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"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":"num_txs","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":"slot_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"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_auth_witness","pack_returns","directive_invert"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private"],"abi":{"error_types":{},"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"}}],"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":"num_txs","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":"slot_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"},{"name":"cancellable","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":"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"}}],"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":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::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","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::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"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"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":"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":"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":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"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_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"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":"num_txs","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":"slot_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"}},"bytecode":"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","debug_symbols":"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qYyyfXs5rFRG2b69HFYqo2zfXg4qlYVl+4Rl+4Rl+4Rl+2RDpbKwbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+wbJ+ybJ+ybJ+ybJ+ybJ9uqFRWlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu1Tlu0zlu0zlu0zlu0zlu2zDZXKxrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9xrJ9zrJ9zrJ9zrJ9zrJ9vqFS2Vm2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2z1m2L1i2L1i2L1i2L1i2LzZUKgfL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9gXL9iXL9iXL9iXL9iXL9uWGSuVk2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b5k2b482PbpZvbjYt1qvS/n3MW69elqtT5dLnKukmx9uzzb3/X6o1Wd06rNadXntBpzWs05rdacVtecVntMqwe72C9tFTwtScc6vXRHryutqrq8jYb67Untf7r+e7vgieke7YKnpnu067PaBU9P92gXPEHdo93fn6JK1ltN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srJsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Jsn7Fsn7Fsn7Fsn7Fsn22oVDaW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7TOW7bODbZ9uZj8u1q3W+3LOXaxbn65W69PlIucqyda3y7P9Xa/fWz3YDX5pqzKnVZ3Tqs1p1ee0ivnufebiWKdXjv75yvtHnR/FY77X/z3FYyaDv6f4xf0KkX5XfUevK18hqi5vR7P/t/ufrv/eLnhOuUO7CZ5V7tEueF65R7vgmWWPpk1P7bbomfKfaQ5ZdvrmvCL/9pvzwTL5S1uNOa3mnFZrTqvgiejzrfap7PcZ/NbqM921udxqPdNdmyutPtNdmyutPtNdmyutPtW0dLlVn9PqU01Ll1t9qmnpcqtPNS1dbnXOtFRzpqU1Z1pac6alNWdaWnOmpYM3eXxpq3OmpTVnWlpzpqU1Z1pac6alnjMt9ZxpqedMSz1nWjp4w86XtjpnWuo501LPmZZ6zrTUY6Yl38ZMS76NmZZ8GzMt+TZmWvLN57Q6Zlrybcy05NuYacm3MdOSb3OmJZkzLcmcaUnmTEsyZ1o6eCPdl7Y6Z1qSOdOSzJmWZM60JHOmJZ0zLemcaUnnTEs6Z1o6eFPkl7Y6Z1rSOdOSzpmWdM60pHOmJZszLdmcacnmTEs2Z1o6eIPrl7Y6Z1qyOdOSzZmWbM60ZHOmJZ8zLfmcacnnTEs+Z1o6eLPyl7Y6Z1ryOdOSz5mWfM609FRbsi+3+lRbsq+0Omdaeqot2VdanTMtPdWW7CutzpmWYs60FHOmJfK+7lu3OmdaIu/pvnWrc6Yl8n7uW7c6Z1p6rl3el1udMy091y7vy63OmZbm7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zy9vn7PL2Obu8fc4ub5+zyzvm7PKOObu8Y84u75izyzs2n9PqmGkp5uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vGPOLu+Ys8s75uzyjjm7vHPOLu+cs8s75+zyzjm7vHPzOa2OmZZyzi7vnLPLO+fs8s45u7xzzi7vnLPLO+fs8s45u7xzzi7vnLPLO+fs8s45u7xzzi7vnLPLO+fs8s45u7xzzi7vfKpd3q19atU/tupzWj14WrKMt+Jd5HKrEmVvV8v+M8P8U6vfy8/HLr/I5Xf720vvN9HlTPnrscvvhy7/6H3Xty5fwOXnyj6V39t29VunnUJ2vftC/xGyR++w/spWbU6rPqdV8pRw41bJE8WnW7040Rt5+rhxq+RJ5catkqea27bq5Anoxq0+1bR0udWnmpYut/pU09LlVn1Oq081LV1udc605HOmJZ8zLfmcaSnmTEsxZ1qKOdNSzJmWjt5h/ZWtzpmWYs60FHOmpZgzLcWcaSnnTEs5Z1rKOdNS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lZXKykplZaUy6nmaezmsVFZWKhsrlY2VyizbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbJyzbpyzbpyzbpyzbpyzbpxsqlZVl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+5Rl+4xl+4xl+4xl+4xl+2xDpbKxbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+xbJ+zbJ+zbJ+zbJ+zbJ9vqFR2lu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu1zlu0Llu0Llu0Llu0Llu2LDZXKwbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9wbJ9ybJ9ybJ9ybJ9ybJ9uaFSOVm2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2L1m2r1i2r1i2r1i2r1i2rzZUKhfL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL9hXL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tk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Ztk9Zts9Yts9Yts9Yts9Yts82VCoby/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/YZy/Y5y/Y5y/Y5y/Y5y/b5hkplZ9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+Z9k+P9j26Wb242Ldar0v59zFuvXparU+XS5yrpJsfbs829/1+qNVmdOqzmnV5rTqc1qNOa1ivnufuTjW6ZWjf76y2VvxmO/1f0/xmMng7ym+uV8h0u+q7+h15StEdf+h4Nur6z7t/+n6P9pN8Jxyj3bBs8o92gXPK/doFzyz7NG06andFj1Tvj/RN+dlp2/OK/JvvznnM80hV1rNOa3WnFbXnFbBE9HnW+1T2e8z+Eer9Ux3ba60+kx3ba60+kx3ba60+kx3ba606nNafapp6XKrTzUtXW71qaaly60+1bR0udU509KaMy2tOdPSmjMtrTnT0sHbNr601TnT0pozLa0509KaMy2tOdNSz5mWes601HOmpZ4zLR28BedLW50zLfWcaannTEs9Z1rqMdNSbGOmpdjGTEuxjZmWYhszLcXmc1odMy3FNmZaim3MtBTbmGkptjnTksyZlmTOtCRzpiWZMy0dvDXuS1udMy3JnGlJ5kxLMmdakjnTks6ZlnTOtKRzpiWdMy0dvM3xS1udMy3pnGlJ50xLOmda0jnTks2ZlmzOtGRzpiWbMy0dvGX1S1udMy3ZnGnJ5kxLNmdasjnTks+ZlnzOtORzpiWfMy0dvP34S1udMy35nGnJ50xLPmda8jnT0lNtyb7S6pxp6am2ZF9pdc609FRbsq+0OmdaijnTUsyZlmLOtETe133jVsm7um/d6pxpibyj+9atzpmWnmuX9+VW50xLz7XL+3Krc6al59rlfbnVOdPSnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd8zZ5R1zdnnHnF3eMWeXd87Z5Z1zdnnnnF3eOWeXd24+p9Ux01LO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z555xd3jlnl3fO2eWdc3Z515xd3jVnl3fN2eVdc3Z51+ZzWh0zLdWcXd41Z5d3zdnlXXN2edecXd41Z5d3zdnlXXN2edecXd41Z5d3zdnlXXN2edecXd41Z5d3zdnlXXN2edecXd41Z5d3PdUu79Y+teofW32maelKqwdPS5bxVryLXG5Vouzt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WKlcrFQuVioXK5VRz9Pcy2GlMup5mns5rFRGPU8zBfU8zb0cViqzzK0sViovViovViovViovViqzzK2wzK00K5VRz9Pcy2GlcrNSuVmpzDK3wjK3wjK3wjK3wjK3yjK3uqFSWTdUKivreZq6oVJZWc/TVNbzNJX1PE1lPU9TWc/TVNbzNJVlbpVlblVYqSysVBZWKgsrlYWVysJKZWGlsrJSmfU8TWU9T1OVlcrKSmVlpbKyUllZqcx6nqaynqepxkplY6WysVKZZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuUZfuMZfuMZfuMZfuMZftsQ6WysWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfsWyfs2yfs2yfs2yfs2yfb6hUdpbtc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btc5btC5btC5btC5btC5btiw2VysGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcGyfcmyfcmyfcmyfcmyfbmhUjlZti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Zti9Ztq9Ytq9Ytq9Ytq9Ytq82VCoXy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YVy/YV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pyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbpyzbZyzbZyzbZyzbZyzbZxsqlY1l+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+5xl+5xl+5xl+5xl+3xDpbKzbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbF+wbF+wbF+wbF+wbF9sqFQOlu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu2Lg22fbmY/Ltat1vtyzl2sW5+uVuvT5SLnKsnWt8uz/V2vP1rVOa3anFZ9Tqsxp9Wc0yrmu/eZi2OdXjn65yubvRWP+V7/9xSPmQz+juIP1qif+gqRfld9R68rXyGqLm9Hs/+3+5+u/94ueE65R7vgWeUe7YLnlXu06+R2a9NTuy16pvxnmkOWnb45r8i//eaczzSHXGm15rS65rTaY1ot8ET0+Vb7VPb7DH5r9Znu2lxp9Znu2lxp9Znu2lxp1ee0+lTT0uVWn2pautzqU01Ll1t9qmnpcqtPNS1dbHXNmZbWnGlpzZmW1pxp6eCNGF/a6pxpac2ZltacaWnNmZbWnGmp50xLPWda6jnTUs+Zlg7eVPOlrc6ZlnrOtNRzpqWeMy31mGkptzHTUm5jpqXcxkxLuY2ZlnLzOa2OmZZyGzMt5TZmWsptzLSU25xpSeZMSzJnWpI505LMmZYO3uz2pa3OmZZkzrQkc6YlmTMtyZxpSedMSzpnWtI505LOmZYO3rj4pa3OmZZ0zrSkc6YlnTMt6ZxpyeZMSzZnWrI505LNmZYO3oT6pa3OmZZszrRkc6YlmzMt2ZxpyedMSz5nWvI505LPmZYO3lD8pa3OmZZ8zrTkc6YlnzMt+ZxpKeZMS0+1JftKq3Ompafakn2lVZ/T6pxp6am2ZF9pdc60FHOmpZgzLZH3dd+61TnTEnlP961bnTMtkfdz37rVOdPSc+3yvtzqnGnpuXZ5X251zrQ0Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlnXN2eeecXd45Z5d3ztnlXXN2edecXd41Z5d3zdnlXZvPaXXMtFRzdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1zdnnXnF3eNWeXd83Z5V1z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fWqsVDZWKrOe26es5/Yp67l9ynpun7Ke26es5/Yp67l9ynpun7Jsn7JsnwYrlYOVysFK5WClcrBSOVipHKxUDlYqs57bp6zn9inL9inL9inL9inL9inL9inL9inL9inL9mmyUjlZqVysVC5WKrOe26es5/Yp67l9ynpun7Ke26es5/Ypy/Ypy/bpYqXyYqXyYqXyYqXyYqUyy/Ypy/bpYqUy67l9ynpunzYrlZuVyizbpyzbpyzbpyzbpyzbpyzbp81K5UalsrGe22es5/YZ67l9xnpun22oVDbWc/uM9dw+Yz23z1i2z1i2z4SVysJKZWGlsrBSWVipLKxUFlYqCyuVWc/tM9Zz+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+4xl+5xl+5xl+5xl+5xl+3xDpbKzbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbJ+zbF+wbF+wbF+wbF+wbF9sqFQOlu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu0Llu1Llu1Llu1Llu1Llu3LDZXKybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9ybJ9xbJ9xbJ9xbJ9xbJ9taFSuVi2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2r1i2b7Fs32LZvsWyfYtl+9aGSuXFsn2LZfsWy/Ytlu1bLNu3WLZvsWzfYtm+xbJ9i2X7Fsv2LZbtWyzbt1i2b7Fs32LZvsWyfYtl+xbL9i2W7Vss27dYtm+xbN9i2b7F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WLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWLbPWbbPWbbPWbbPWbbPN1QqO8v2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Ocv2Bcv2Bcv2Bcv2Bcv2xYZK5WDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmDZvmTZvmTZvmTZvmTZvtxQqZws25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25cs25e3sH29fr5DXylnM7O3qzfzOl2utc6+eP7sdW2nq83PXSybv10sYe8v/t6rDerVB/X6+9+sut+q1023y71GZv24OHL56WKRcy+t6vL2Fbj/t//5+u/154PXXw9e/3rw+vux67+B8/za+uXB69cHr//Yj3K62c9ma70fqc6dTKzTS3+7rX2Ddn1Mu/v/+s//86///M9//e//6Z//9b/847//9V//5d++/ent2/9zPraX6I/XW5HvzkHPvLvX6R+i/Hzn+uOcz4fqrV79fOTd7NXlrq+ud311u+ur++de/dsfic//kfz8Hzk7Q608/ZGOK23bqW2r9eHl131fvu/68ufJ8e1eXu778nrfl7f7vrzf9+Xjvi+f9335+37V+n2/av2+X7Vx36/auO9Xbdz3qzbu+1Ub9/2qjft+1cZ9v2rjvl+1+dv/MH17m4l9qw8vr/d9+d8+nPC3a6P1yrXpdfrUEh9KWZxSGlNKbZxShFOKckoxTinOKSU4pSSnFE7aFidti5O2i5O2i5O2i5O2i5O2i5O2i5O2i5O2i5O2fWiuxM9bouvnT/JNv/9E4divoO30c4otP5TinFKCU0pySvn9ryBZp1Ls2sdsPb2waf185f3L6VstC1RLc2qRbTu2mLWdinl39VsxQipGScXYocXY9naxmcqHYpxUTJCKSVIx9XXF9IdiFqmYBhUjxyawnX7nwqz9QzFCKkZJxRipmIMTuPutGBf9UEyQiklSMUUq5tgEdj392Mt9+1BMg4rRjVSMkIrRrytmfSjGSMU4qZhjEzhOn/ot5MNHFU1SMUUqZpGKOTaBf15sYR8+qthGKkZIxSipmGMTODxPxcSHz03mpGKCVEySiqkvKybrQzGLVEyDivFjEzjlNM+kfRg7XUjFKKkYIxVzbAKnxakY/5AzHqRiklRMkYo5NoEz/VRMffjc5A0qJjZSMUIqRr+smJUfijFSMU4q5o4J/Mfr551fv+78+uvOr//baZb19vf73lq/vX5ud359ufPr631f/9jfz734a1py8C/obm8/eEj1j7U0p5aDf0X3ci0CqkVBtRioFgfVwvktQ1mcXzOUg39T93ItC1RLc2rpDVSLgGpRUC2c3+0W0C93C+i3uwX0693SoNxtUO42J3d14+Su/v7vMF/E6Lr9dma4v32+88yPrx93fv288+vXnV//t78G3er0+mf+fvu+r//7v4h75fXlzq+vd359u/Pr+51fP274+mUfXz/v/Pp159f//a9ffbvWzT++ft/39X//1zivvL7c+fX1zq9vd359v/Prx51fP+/8+nXn17/z16/e+evX7vz1a3f++rU7f/3aPb9+9/8l3678xeMq7E2jLP35jUP2IfDbH9Q//uD5xdLr7TvOevdz3f1HPd8nus//Efn8H9HP/xH7/B/xz/+R+Pwfyc//kfr8HzkbJL29/ePpd9bw2x8595Pi0++ArHc7+LfvL993ffnzMXK7l5f7vrze9+Xtvi/vn3v5//irlbmX/0h+/o+c/SroePsqeP+4k/N96+nnre959lvf674v33d9+fO/+/mZl3/3j6L8Ty//8do+KTXZZPvbv6jzv/r5RbUoqBY7shY9PQhI332Qfvvn4pxSglNKckopTimLU0pjSolDA/di9odwSlFOKbdM249jUvh9Xz7u+/J535ev+778uu/Ln0+ZX39v/+wgcP63MG/5BnLvN9DffoOL6Zp259f3O79+3Pn1886vX3d+/XXn1//9L+GL31xqu/Pryz1ff/9f9u3K8/+K1ukn9Et+3lfS8l//w7j8R9bn/0h/+o/8Yk36xT8in/8j+vk/Yp//I/75PxKf/yOf/9uvz//t1+f/9uvzf/vr83/76/N/++d/w7qWnW6sy4c/Yp//I/75PxKf/yP5+T9Sn/wj+//yb1ee/fuUtb1hZlnvEvz7TyT2//n//uP//Os//ud//qdvT4D79n/9X//yX94eCLf/z3////7H9//LfvH/Dw==","brillig_names":["get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_format","notify_set_min_revertible_side_effect_counter","directive_invert","directive_integer_quotient"]}],"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"}},{"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"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrSingleKeyAccount::verify_private_authwit_abi"}]}},"file_map":{"113":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\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::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_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 header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct 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<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\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<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\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<KeyValidationRequest>; 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 note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n 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_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.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 note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.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 notify_set_min_revertible_side_effect_counter(self.min_revertible_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.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_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\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 emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\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, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\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, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 (end_side_effect_counter, returns_hash) = 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 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 let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\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 counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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 note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n 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"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::oracle::logs_traits::ToBytesForUnencryptedLog;\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\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 len_bytes: [u8; 4] = (n as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + 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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\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 poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct 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<let N: u32>(&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<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn 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)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn 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; 2] {}\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) -> (u32, Field) {\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 let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn 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) {}\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) {\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)]\nunconstrained fn 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) {}\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) {\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\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\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// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because 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\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"26":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\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 #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_le_radix(256)\n }\n // docs:end:to_le_bytes\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_be_radix(256)\n }\n // docs:end:to_be_bytes\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\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 x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_radix_example\n}\n"},"273":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\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.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait 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 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\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\npub trait 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 {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"274":{"path":"/usr/src/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)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> 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<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"278":{"path":"/usr/src/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 merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::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\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\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(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.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 silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn 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 poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\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<u8, 160> = 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: [u8; 32] = inputs[i].to_be_bytes();\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: [u8; 32] = input[offset].to_be_bytes();\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: [u8; 32] = logs[offset].value.to_be_bytes();\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: [u8; 32] = logs[offset].value.to_be_bytes();\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<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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 = std::hash::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\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"301":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_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<let K: u32>(&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<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&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"},"323":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.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<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"337":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> 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_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { 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 = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\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"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct 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 #[no_predicates]\n pub fn hash<let N: u32>(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) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\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 }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(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\npub struct 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 { _state: &[] }\n }\n}\n"},"442":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr","source":"use dep::authwit::auth_witness;\nuse dep::aztec::{\n protocol_types::{address::PartialAddress, utils::arr_copy_slice},\n keys::{PublicKeys, PUBLIC_KEYS_LENGTH}\n};\n\npub struct AuthWitness {\n keys: PublicKeys,\n signature: [u8; 64],\n partial_address: PartialAddress,\n}\n\nimpl AuthWitness {\n fn deserialize(values: [Field; 77]) -> Self {\n let mut signature = [0; 64];\n for i in 0..64 {\n signature[i] = values[i + PUBLIC_KEYS_LENGTH] as u8;\n }\n Self {\n keys: PublicKeys::deserialize(arr_copy_slice(values, [0; PUBLIC_KEYS_LENGTH], 0)),\n signature,\n partial_address: PartialAddress::from_field(values[76])\n }\n }\n}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> AuthWitness {\n let witness: [Field; 77] = auth_witness::get_auth_witness(message_hash);\n AuthWitness::deserialize(witness)\n}\n"},"443":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr","source":"mod util;\nmod auth_oracle;\n\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrSingleKeyAccount {\n use dep::aztec::prelude::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 use dep::aztec::macros::{functions::{private, view}};\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[private]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n let witness = unsafe {\n get_auth_witness(outer_hash)\n };\n recover_address(outer_hash, witness).eq(context.this_address())\n }\n}\n"},"444":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/util.nr","source":"use std::schnorr::verify_signature;\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: [u8; 32] = message_hash.to_be_bytes();\n // In a single key account contract we re-used ivpk_m as signing key\n let verification = verify_signature(\n witness.keys.ivpk_m.inner.x,\n witness.keys.ivpk_m.inner.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(witness.keys.hash(), witness.partial_address)\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\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 /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&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 /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\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 /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\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 /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\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::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> 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<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\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<Field, 10> = 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<Field, 2> = 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<Field, 10> = 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 mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"74":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\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_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_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_authwit_message_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 IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = 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 poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\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<u8, APP_PAYLOAD_SIZE_IN_BYTES> = 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_array(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"},"78":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct 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<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = 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 poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = 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_array(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"},"85":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"}}}