diff --git a/packages/contracts/test/EmailAccountRecovery.t.sol b/packages/contracts/test/EmailAccountRecovery.t.sol index e15979bf..a69d4a84 100644 --- a/packages/contracts/test/EmailAccountRecovery.t.sol +++ b/packages/contracts/test/EmailAccountRecovery.t.sol @@ -685,7 +685,7 @@ contract EmailAccountRecoveryTest is StructHelper { assertEq(simpleWallet.owner(), deployer); assertEq(simpleWallet.newSignerCandidate(), newSigner); - vm.startPrank(deployer); + vm.startPrank(someRelayer); vm.warp(4 days); simpleWallet.completeRecovery(); vm.stopPrank(); @@ -704,7 +704,7 @@ contract EmailAccountRecoveryTest is StructHelper { assertEq(simpleWallet.owner(), deployer); assertEq(simpleWallet.newSignerCandidate(), address(0x0)); - vm.startPrank(deployer); + vm.startPrank(someRelayer); vm.warp(4 days); vm.expectRevert(bytes("recovery not in progress")); simpleWallet.completeRecovery(); @@ -726,7 +726,7 @@ contract EmailAccountRecoveryTest is StructHelper { vm.warp(0); - vm.startPrank(deployer); + vm.startPrank(someRelayer); vm.expectRevert(bytes("timelock not expired")); simpleWallet.completeRecovery(); vm.stopPrank(); diff --git a/packages/relayer/src/abis/ecdsa_owned_dkim_registry.rs b/packages/relayer/src/abis/ecdsa_owned_dkim_registry.rs index 9b7230aa..0c3f5909 100644 --- a/packages/relayer/src/abis/ecdsa_owned_dkim_registry.rs +++ b/packages/relayer/src/abis/ecdsa_owned_dkim_registry.rs @@ -7,307 +7,316 @@ pub use ecdsa_owned_dkim_registry::*; clippy::upper_case_acronyms, clippy::type_complexity, dead_code, - non_camel_case_types, + non_camel_case_types )] pub mod ecdsa_owned_dkim_registry { #[allow(deprecated)] fn __abi() -> ::ethers::core::abi::Abi { ::ethers::core::abi::ethabi::Contract { constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_signer"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_signer"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], }), functions: ::core::convert::From::from([ ( ::std::borrow::ToOwned::to_owned("REVOKE_PREFIX"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("REVOKE_PREFIX"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("REVOKE_PREFIX"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("SET_PREFIX"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("SET_PREFIX"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("SET_PREFIX"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("computeSignedMsg"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("computeSignedMsg"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("prefix"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("selector"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("domainName"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeSignedMsg"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("prefix"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("selector"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("domainName"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], ), ( ::std::borrow::ToOwned::to_owned("dkimRegistry"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("dkimRegistry"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract DKIMRegistry"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dkimRegistry"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("contract DKIMRegistry"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("isDKIMPublicKeyHashValid"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "isDKIMPublicKeyHashValid", + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isDKIMPublicKeyHashValid",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("domainName"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("domainName"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("revokeDKIMPublicKeyHash"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "revokeDKIMPublicKeyHash", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("selector"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("domainName"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("revokeDKIMPublicKeyHash",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("selector"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("domainName"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("signature"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("setDKIMPublicKeyHash"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setDKIMPublicKeyHash", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("selector"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("domainName"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setDKIMPublicKeyHash",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("selector"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("domainName"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("publicKeyHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("signature"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("signer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("signer"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("signer"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ]), events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("ECDSAInvalidSignature"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ECDSAInvalidSignature",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ECDSAInvalidSignatureLength"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ECDSAInvalidSignatureLength",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("length"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ECDSAInvalidSignatureS"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ECDSAInvalidSignatureS",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("StringsInsufficientHexLength"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("StringsInsufficientHexLength",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("length"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ]), receive: false, fallback: false, } } ///The parsed JSON ABI of the contract. - pub static ECDSAOWNEDDKIMREGISTRY_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); + pub static ECDSAOWNEDDKIMREGISTRY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\"\x958\x03\x80b\0\"\x95\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xA3V[`@Qb\0\0B\x90b\0\0\x95V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\0_W=`\0\x80>=`\0\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x93\x90\x92\x16\x92\x16\x91\x90\x91\x17\x90Ub\0\0\xD5V[a\t\x9B\x80b\0\x18\xFA\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\0\xB6W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xCEW`\0\x80\xFD[\x93\x92PPPV[a\x18\x15\x80b\0\0\xE5`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xAE\xC7\x93a\x11a\0[W\x80c\xAE\xC7\x93a\x14a\x01YW\x80c\xD5\x07\xC3 \x14a\x01lW\x80c\xE7\xA7\x97z\x14a\x01\xA8W\x80c\xF6\xB4\x93D\x14a\x01\xCBW`\0\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\0\x8DW\x80c#\x8A\xC93\x14a\0\xDFW\x80cd#\xF1\xE2\x14a\x01$W\x80c\x97\x17\x0F+\x14a\x01DW[`\0\x80\xFD[a\0\xC9`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\0\xD6\x91\x90a\x12\xE3V[`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0\xFF\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD6V[`\0Ta\0\xFF\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01Wa\x01R6`\x04a\x13\xD9V[a\x01\xDEV[\0[a\0\xC9a\x01g6`\x04a\x14\x7FV[a\x06\x03V[a\0\xC9`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[a\x01\xBBa\x01\xB66`\x04a\x15\x0FV[a\x06=V[`@Q\x90\x15\x15\x81R` \x01a\0\xD6V[a\x01Wa\x01\xD96`\x04a\x13\xD9V[a\x06\xE0V[\x83Q`\0\x03a\x02NW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82Q`\0\x03a\x02\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x03 W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x03*\x83\x83a\x06=V[\x15a\x03\x91W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FpublicKeyHash is already set\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04$\x91\x90a\x15TV[\x15a\x04\x8BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is revoked\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0a\x04\xCE`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\x04\xDB\x82a\n\xC8V[\x90P`\0a\x04\xE9\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\x05pW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\xC1\\\xFF\xAB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xC1\\\xFF\xAB\x90a\x05\xC8\x90\x89\x90\x89\x90`\x04\x01a\x15vV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[``\x84\x84\x84a\x06\x11\x85a\x0B'V[`@Q` \x01a\x06$\x94\x93\x92\x91\x90a\x15\x98V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x94\x93PPPPV[`\0\x80T`@Q\x7F\xE7\xA7\x97z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xE7\xA7\x97z\x90a\x06\x96\x90\x86\x90\x86\x90`\x04\x01a\x15vV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD7\x91\x90a\x15TV[\x90P[\x92\x91PPV[\x83Q`\0\x03a\x07KW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x82Q`\0\x03a\x07\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x08\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x08'\x83\x83a\x06=V[\x15\x15`\x01\x14a\x08\x92W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is not set\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t%\x91\x90a\x15TV[\x15a\t\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FpublicKeyHash is already revoked`D\x82\x01R`d\x01a\x02EV[`\0a\t\xCF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\t\xDC\x82a\n\xC8V[\x90P`\0a\t\xEA\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\nqW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\x15\xD2Q.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x15\xD2Q.\x90`$\x01a\x05\xC8V[`\0a\n\xD4\x82Qa\x0B>V[\x82`@Q` \x01a\n\xE6\x92\x91\x90a\x16\x98V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x80`\0a\x0B\x12\x85\x85a\x0B\xFCV[\x91P\x91Pa\x0B\x1F\x81a\x0CAV[P\x93\x92PPPV[``a\x06\xDA\x82a\x0B6\x84a\r\xF7V[`\x01\x01a\x0EaV[```\0a\x0BK\x83a\x10\xA4V[`\x01\x01\x90P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0BkWa\x0Bka\x12\xF6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x95W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x9FWP\x93\x92PPPV[`\0\x80\x82Q`A\x03a\x0C2W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x0C&\x87\x82\x85\x85a\x11\x86V[\x94P\x94PPPPa\x0C:V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x0CUWa\x0CUa\x16\xF3V[\x03a\x0C]WPV[`\x01\x81`\x04\x81\x11\x15a\x0CqWa\x0Cqa\x16\xF3V[\x03a\x0C\xD8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\x02\x81`\x04\x81\x11\x15a\x0C\xECWa\x0C\xECa\x16\xF3V[\x03a\rSW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02EV[`\x03\x81`\x04\x81\x11\x15a\rgWa\rga\x16\xF3V[\x03a\r\xF4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01R\x7Fue\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x02EV[PV[`\0\x80`\x80\x83\x90\x1C\x15a\x0E\x0FW`\x80\x92\x90\x92\x1C\x91`\x10\x01[`@\x83\x90\x1C\x15a\x0E$W`@\x92\x90\x92\x1C\x91`\x08\x01[` \x83\x90\x1C\x15a\x0E9W` \x92\x90\x92\x1C\x91`\x04\x01[`\x10\x83\x90\x1C\x15a\x0ENW`\x10\x92\x90\x92\x1C\x91`\x02\x01[`\x08\x83\x90\x1C\x15a\x06\xDAW`\x01\x01\x92\x91PPV[```\0a\x0Ep\x83`\x02a\x17QV[a\x0E{\x90`\x02a\x17hV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x93Wa\x0E\x93a\x12\xF6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\xBDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x7F0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\0\x81Q\x81\x10a\x0E\xF4Wa\x0E\xF4a\x17{V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP\x7Fx\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\x01\x81Q\x81\x10a\x0FWWa\x0FWa\x17{V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\0a\x0F\x93\x84`\x02a\x17QV[a\x0F\x9E\x90`\x01a\x17hV[\x90P[`\x01\x81\x11\x15a\x10;W\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85`\x0F\x16`\x10\x81\x10a\x0F\xDFWa\x0F\xDFa\x17{V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a\x0F\xF5Wa\x0F\xF5a\x17{V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a\x104\x81a\x17\xAAV[\x90Pa\x0F\xA1V[P\x83\x15a\x06\xD7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x02EV[`\0\x80z\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x10a\x10\xEDWz\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x11\x19Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x117Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x11OWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x11cWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x11uW`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x06\xDAW`\x01\x01\x92\x91PPV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x11\xBDWP`\0\x90P`\x03a\x12lV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x12\x11W=`\0\x80>=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x12eW`\0`\x01\x92P\x92PPa\x12lV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0[\x83\x81\x10\x15a\x12\x90W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12xV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x12\xB1\x81` \x86\x01` \x86\x01a\x12uV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x06\xD7` \x83\x01\x84a\x12\x99V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x13@Wa\x13@a\x12\xF6V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x13\x86Wa\x13\x86a\x12\xF6V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x13\x9FW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x13\xCAW`\0\x80\xFD[a\x06\xD7\x83\x835` \x85\x01a\x13%V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xEFW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x07W`\0\x80\xFD[a\x14\x13\x88\x83\x89\x01a\x13\xB9V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x14)W`\0\x80\xFD[a\x145\x88\x83\x89\x01a\x13\xB9V[\x94P`@\x87\x015\x93P``\x87\x015\x91P\x80\x82\x11\x15a\x14RW`\0\x80\xFD[P\x85\x01`\x1F\x81\x01\x87\x13a\x14dW`\0\x80\xFD[a\x14s\x87\x825` \x84\x01a\x13%V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\x95W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\xADW`\0\x80\xFD[a\x14\xB9\x88\x83\x89\x01a\x13\xB9V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x14\xCFW`\0\x80\xFD[a\x14\xDB\x88\x83\x89\x01a\x13\xB9V[\x94P`@\x87\x015\x91P\x80\x82\x11\x15a\x14\xF1W`\0\x80\xFD[Pa\x14\xFE\x87\x82\x88\x01a\x13\xB9V[\x94\x97\x93\x96P\x93\x94``\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\"W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x159W`\0\x80\xFD[a\x15E\x85\x82\x86\x01a\x13\xB9V[\x95` \x94\x90\x94\x015\x94PPPPV[`\0` \x82\x84\x03\x12\x15a\x15fW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x06\xD7W`\0\x80\xFD[`@\x81R`\0a\x15\x89`@\x83\x01\x85a\x12\x99V[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0\x85Qa\x15\xAA\x81\x84` \x8A\x01a\x12uV[\x7Fselector=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x83\x01\x90\x81R\x85Qa\x15\xE4\x81`\t\x84\x01` \x8A\x01a\x12uV[\x7F;domain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\t\x92\x90\x91\x01\x91\x82\x01R\x84Qa\x16\"\x81`\x11\x84\x01` \x89\x01a\x12uV[\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x11\x92\x90\x91\x01\x91\x82\x01R\x83Qa\x16`\x81`\"\x84\x01` \x88\x01a\x12uV[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\"\x92\x90\x91\x01\x91\x82\x01R`#\x01\x96\x95PPPPPPV[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R`\0\x83Qa\x16\xD0\x81`\x1A\x85\x01` \x88\x01a\x12uV[\x83Q\x90\x83\x01\x90a\x16\xE7\x81`\x1A\x84\x01` \x88\x01a\x12uV[\x01`\x1A\x01\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`!`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xDAWa\x06\xDAa\x17\"V[\x80\x82\x01\x80\x82\x11\x15a\x06\xDAWa\x06\xDAa\x17\"V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0\x81a\x17\xB9Wa\x17\xB9a\x17\"V[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 \x8C\xC9\x90a\0\x9FV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0jW=`\0\x80>=`\0\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x93\x90\x92\x16\x92\x16\x91\x90\x91\x17\x90Ua\0\xDDV[a\t\x99\x80b\0\x18W\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\0\xBFW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xD6W`\0\x80\xFD[\x93\x92PPPV[a\x17j\x80b\0\0\xED`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xAE\xC7\x93a\x11a\0[W\x80c\xAE\xC7\x93a\x14a\x01YW\x80c\xD5\x07\xC3 \x14a\x01lW\x80c\xE7\xA7\x97z\x14a\x01\xA8W\x80c\xF6\xB4\x93D\x14a\x01\xCBW`\0\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\0\x8DW\x80c#\x8A\xC93\x14a\0\xDFW\x80cd#\xF1\xE2\x14a\x01$W\x80c\x97\x17\x0F+\x14a\x01DW[`\0\x80\xFD[a\0\xC9`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\0\xD6\x91\x90a\x121V[`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0\xFF\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD6V[`\0Ta\0\xFF\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01Wa\x01R6`\x04a\x13'V[a\x01\xDEV[\0[a\0\xC9a\x01g6`\x04a\x13\xCDV[a\x06\x03V[a\0\xC9`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[a\x01\xBBa\x01\xB66`\x04a\x14]V[a\x06=V[`@Q\x90\x15\x15\x81R` \x01a\0\xD6V[a\x01Wa\x01\xD96`\x04a\x13'V[a\x06\xE0V[\x83Q`\0\x03a\x02NW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82Q`\0\x03a\x02\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x03 W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x03*\x83\x83a\x06=V[\x15a\x03\x91W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FpublicKeyHash is already set\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04$\x91\x90a\x14\xA2V[\x15a\x04\x8BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is revoked\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0a\x04\xCE`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\x04\xDB\x82a\n\xC8V[\x90P`\0a\x04\xE9\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\x05pW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\xC1\\\xFF\xAB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xC1\\\xFF\xAB\x90a\x05\xC8\x90\x89\x90\x89\x90`\x04\x01a\x14\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[``\x84\x84\x84a\x06\x11\x85a\x0B-V[`@Q` \x01a\x06$\x94\x93\x92\x91\x90a\x14\xEDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x94\x93PPPPV[`\0\x80T`@Q\x7F\xE7\xA7\x97z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xE7\xA7\x97z\x90a\x06\x96\x90\x86\x90\x86\x90`\x04\x01a\x14\xCBV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD7\x91\x90a\x14\xA2V[\x90P[\x92\x91PPV[\x83Q`\0\x03a\x07KW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x82Q`\0\x03a\x07\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x08\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x08'\x83\x83a\x06=V[\x15\x15`\x01\x14a\x08\x92W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is not set\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t%\x91\x90a\x14\xA2V[\x15a\t\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FpublicKeyHash is already revoked`D\x82\x01R`d\x01a\x02EV[`\0a\t\xCF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\t\xDC\x82a\n\xC8V[\x90P`\0a\t\xEA\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\nqW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\x15\xD2Q.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x15\xD2Q.\x90`$\x01a\x05\xC8V[`\0a\n\xD4\x82Qa\x0BDV[\x82`@Q` \x01a\n\xE6\x92\x91\x90a\x15\xEDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x80`\0\x80a\x0B\x13\x86\x86a\x0C\x02V[\x92P\x92P\x92Pa\x0B#\x82\x82a\x0COV[P\x90\x94\x93PPPPV[``a\x06\xDA\x82a\x0B<\x84a\rWV[`\x01\x01a\r\xC1V[```\0a\x0BQ\x83a\x0F\xE7V[`\x01\x01\x90P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0BqWa\x0Bqa\x12DV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x9BW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\xA5WP\x93\x92PPPV[`\0\x80`\0\x83Q`A\x03a\x0C=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x11\xAFWP`\0\x92P`\x01\x91P\x82\x90Pa\x11\xB9V[\x92P`\0\x91P\x81\x90P[\x94P\x94P\x94\x91PPV[`\0[\x83\x81\x10\x15a\x11\xDEW\x81\x81\x01Q\x83\x82\x01R` \x01a\x11\xC6V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x11\xFF\x81` \x86\x01` \x86\x01a\x11\xC3V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x06\xD7` \x83\x01\x84a\x11\xE7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x12\x8EWa\x12\x8Ea\x12DV[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x12\xD4Wa\x12\xD4a\x12DV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x12\xEDW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x13\x18W`\0\x80\xFD[a\x06\xD7\x83\x835` \x85\x01a\x12sV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13=W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13UW`\0\x80\xFD[a\x13a\x88\x83\x89\x01a\x13\x07V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x13wW`\0\x80\xFD[a\x13\x83\x88\x83\x89\x01a\x13\x07V[\x94P`@\x87\x015\x93P``\x87\x015\x91P\x80\x82\x11\x15a\x13\xA0W`\0\x80\xFD[P\x85\x01`\x1F\x81\x01\x87\x13a\x13\xB2W`\0\x80\xFD[a\x13\xC1\x87\x825` \x84\x01a\x12sV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xE3W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xFBW`\0\x80\xFD[a\x14\x07\x88\x83\x89\x01a\x13\x07V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x14\x1DW`\0\x80\xFD[a\x14)\x88\x83\x89\x01a\x13\x07V[\x94P`@\x87\x015\x91P\x80\x82\x11\x15a\x14?W`\0\x80\xFD[Pa\x14L\x87\x82\x88\x01a\x13\x07V[\x94\x97\x93\x96P\x93\x94``\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14pW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x87W`\0\x80\xFD[a\x14\x93\x85\x82\x86\x01a\x13\x07V[\x95` \x94\x90\x94\x015\x94PPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xB4W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14\xC4W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0a\x14\xDE`@\x83\x01\x85a\x11\xE7V[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0\x85Qa\x14\xFF\x81\x84` \x8A\x01a\x11\xC3V[\x7Fselector=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x83\x01\x90\x81R\x85Qa\x159\x81`\t\x84\x01` \x8A\x01a\x11\xC3V[\x7F;domain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\t\x92\x90\x91\x01\x91\x82\x01R\x84Qa\x15w\x81`\x11\x84\x01` \x89\x01a\x11\xC3V[\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x11\x92\x90\x91\x01\x91\x82\x01R\x83Qa\x15\xB5\x81`\"\x84\x01` \x88\x01a\x11\xC3V[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\"\x92\x90\x91\x01\x91\x82\x01R`#\x01\x96\x95PPPPPPV[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R`\0\x83Qa\x16%\x81`\x1A\x85\x01` \x88\x01a\x11\xC3V[\x83Q\x90\x83\x01\x90a\x16<\x81`\x1A\x84\x01` \x88\x01a\x11\xC3V[\x01`\x1A\x01\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`!`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xDAWa\x06\xDAa\x16wV[\x80\x82\x01\x80\x82\x11\x15a\x06\xDAWa\x06\xDAa\x16wV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0\x81a\x17\x0EWa\x17\x0Ea\x16wV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 d\xE7I\x84:X\x98\xC3\xE6\xA0\xDE\x83\x93\xF1\xF0\xA3e\xD5@U@?\xAC\xD6\x1CQ\x89\xBA\x96\xF6\x07mdsolcC\0\x08\x17\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\t\x998\x03\x80a\t\x99\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xBEV[\x80`\x01`\x01`\xA0\x1B\x03\x81\x16a\0^W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[a\0g\x81a\0nV[PPa\0\xEEV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0` \x82\x84\x03\x12\x15a\0\xD0W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xE7W`\0\x80\xFD[\x93\x92PPPV[a\x08\x9C\x80a\0\xFD`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA3W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0vW\x80c\xE7\xA7\x97z\x11a\0[W\x80c\xE7\xA7\x97z\x14a\x01vW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x89W\x80c\xF4\x9E\xB1d\x14a\x01\x9CW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01;W\x80c\xC1\\\xFF\xAB\x14a\x01cW`\0\x80\xFD[\x80c\x06\x90\xBD8\x14a\0\xA8W\x80c\x15\xD2Q.\x14a\0\xFBW\x80cB\xD7\xCB\x98\x14a\x01\x10W\x80cqP\x18\xA6\x14a\x013W[`\0\x80\xFD[a\0\xE6a\0\xB66`\x04a\x069V[\x81Q` \x81\x84\x01\x81\x01\x80Q`\x01\x82R\x92\x82\x01\x94\x82\x01\x94\x90\x94 \x91\x90\x93R\x90\x91R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x0Ea\x01\t6`\x04a\x06~V[a\x01\xAFV[\0[a\0\xE6a\x01\x1E6`\x04a\x06~V[`\x02` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x01\x0Ea\x02+V[`\0T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xF2V[a\x01\x0Ea\x01q6`\x04a\x069V[a\x02?V[a\0\xE6a\x01\x846`\x04a\x069V[a\x03YV[a\x01\x0Ea\x01\x976`\x04a\x06\x97V[a\x03\xBDV[a\x01\x0Ea\x01\xAA6`\x04a\x06\xD4V[a\x04!V[a\x01\xB7a\x04eV[`\0\x81\x81R`\x02` R`@\x90\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UQ\x7F\xB8\x0F\xFF+Lo=\xDF\x80Hw\x92|w\xB2\xFE\x18q\xCE\xCA\xA5\xADC\xD2\xC7\xC4/As1\xF8e\x90a\x02 \x90\x83\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1PV[a\x023a\x04eV[a\x02=`\0a\x04\xB8V[V[a\x02Ga\x04eV[`\0\x81\x81R`\x02` R`@\x90 T`\xFF\x16\x15a\x02\xC5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fcannot set revoked pubkey\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80\x83`@Qa\x02\xD6\x91\x90a\x07\xC2V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x81 `\0\x86\x81R\x93R\x91 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x92\x15\x15\x92\x90\x92\x17\x90\x91U\x7FQ\r\xAC\x88\xEA\xF2\xDF\xBDS\x90BA\xFC\x19\x9A\xD4k c\xE6\xBFl?\xB2\x91\xF8\xCE\x86Cf4\x19\x90a\x03M\x90\x84\x90\x84\x90a\x07\xDEV[`@Q\x80\x91\x03\x90\xA1PPV[`\0\x81\x81R`\x02` R`@\x81 T`\xFF\x16\x15a\x03xWP`\0a\x03\xB7V[`\x01\x83`@Qa\x03\x88\x91\x90a\x07\xC2V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 `\0\x85\x81R\x92R\x90 T`\xFF\x16\x15a\x03\xB3WP`\x01a\x03\xB7V[P`\0[\x92\x91PPV[a\x03\xC5a\x04eV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x04\x15W`@Q\x7F\x1EO\xBD\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x04\x82\x01R`$\x01a\x02\xBCV[a\x04\x1E\x81a\x04\xB8V[PV[a\x04)a\x04eV[`\0[\x81Q\x81\x10\x15a\x04`Wa\x04X\x83\x83\x83\x81Q\x81\x10a\x04KWa\x04Ka\x087V[` \x02` \x01\x01Qa\x02?V[`\x01\x01a\x04,V[PPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02=W`@Q\x7F\x11\x8C\xDA\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R`$\x01a\x02\xBCV[`\0\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xA3Wa\x05\xA3a\x05-V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x05\xBCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xD6Wa\x05\xD6a\x05-V[a\x06\x07` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\\V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\x1CW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06LW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06cW`\0\x80\xFD[a\x06o\x85\x82\x86\x01a\x05\xABV[\x95` \x94\x90\x94\x015\x94PPPPV[`\0` \x82\x84\x03\x12\x15a\x06\x90W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xA9W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\xCDW`\0\x80\xFD[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06\xE7W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06\xFFW`\0\x80\xFD[a\x07\x0B\x86\x83\x87\x01a\x05\xABV[\x93P` \x91P\x81\x85\x015\x81\x81\x11\x15a\x07\"W`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x073W`\0\x80\xFD[\x805\x82\x81\x11\x15a\x07EWa\x07Ea\x05-V[\x80`\x05\x1B\x92Pa\x07V\x84\x84\x01a\x05\\V[\x81\x81R\x92\x82\x01\x84\x01\x92\x84\x81\x01\x90\x89\x85\x11\x15a\x07pW`\0\x80\xFD[\x92\x85\x01\x92[\x84\x84\x10\x15a\x07\x8EW\x835\x82R\x92\x85\x01\x92\x90\x85\x01\x90a\x07uV[\x80\x96PPPPPPP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x07\xB9W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\xA1V[PP`\0\x91\x01RV[`\0\x82Qa\x07\xD4\x81\x84` \x87\x01a\x07\x9EV[\x91\x90\x91\x01\x92\x91PPV[`@\x81R`\0\x83Q\x80`@\x84\x01Ra\x07\xFD\x81``\x85\x01` \x88\x01a\x07\x9EV[` \x83\x01\x93\x90\x93RP`\x1F\x91\x90\x91\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x01``\x01\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x0C\x1C\xFA\xD6\xEFCwe\x9B\xFE\xA8\x8BVP\xBAm?\xB1y\x89C:k:\t \"S[\x9F\xCA\x1BdsolcC\0\x08\x17\x003"; /// The bytecode of the contract. - pub static ECDSAOWNEDDKIMREGISTRY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); + pub static ECDSAOWNEDDKIMREGISTRY_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xAE\xC7\x93a\x11a\0[W\x80c\xAE\xC7\x93a\x14a\x01YW\x80c\xD5\x07\xC3 \x14a\x01lW\x80c\xE7\xA7\x97z\x14a\x01\xA8W\x80c\xF6\xB4\x93D\x14a\x01\xCBW`\0\x80\xFD[\x80c\x07\xF1\xEA\xF5\x14a\0\x8DW\x80c#\x8A\xC93\x14a\0\xDFW\x80cd#\xF1\xE2\x14a\x01$W\x80c\x97\x17\x0F+\x14a\x01DW[`\0\x80\xFD[a\0\xC9`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\0\xD6\x91\x90a\x12\xE3V[`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0\xFF\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD6V[`\0Ta\0\xFF\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01Wa\x01R6`\x04a\x13\xD9V[a\x01\xDEV[\0[a\0\xC9a\x01g6`\x04a\x14\x7FV[a\x06\x03V[a\0\xC9`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[a\x01\xBBa\x01\xB66`\x04a\x15\x0FV[a\x06=V[`@Q\x90\x15\x15\x81R` \x01a\0\xD6V[a\x01Wa\x01\xD96`\x04a\x13\xD9V[a\x06\xE0V[\x83Q`\0\x03a\x02NW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82Q`\0\x03a\x02\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x03 W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x03*\x83\x83a\x06=V[\x15a\x03\x91W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FpublicKeyHash is already set\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04$\x91\x90a\x15TV[\x15a\x04\x8BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is revoked\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0a\x04\xCE`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\x04\xDB\x82a\n\xC8V[\x90P`\0a\x04\xE9\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\x05pW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\xC1\\\xFF\xAB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xC1\\\xFF\xAB\x90a\x05\xC8\x90\x89\x90\x89\x90`\x04\x01a\x15vV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[``\x84\x84\x84a\x06\x11\x85a\x0B'V[`@Q` \x01a\x06$\x94\x93\x92\x91\x90a\x15\x98V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x94\x93PPPPV[`\0\x80T`@Q\x7F\xE7\xA7\x97z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xE7\xA7\x97z\x90a\x06\x96\x90\x86\x90\x86\x90`\x04\x01a\x15vV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD7\x91\x90a\x15TV[\x90P[\x92\x91PPV[\x83Q`\0\x03a\x07KW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x82Q`\0\x03a\x07\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x08\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x08'\x83\x83a\x06=V[\x15\x15`\x01\x14a\x08\x92W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is not set\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t%\x91\x90a\x15TV[\x15a\t\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FpublicKeyHash is already revoked`D\x82\x01R`d\x01a\x02EV[`\0a\t\xCF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\t\xDC\x82a\n\xC8V[\x90P`\0a\t\xEA\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\nqW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\x15\xD2Q.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x15\xD2Q.\x90`$\x01a\x05\xC8V[`\0a\n\xD4\x82Qa\x0B>V[\x82`@Q` \x01a\n\xE6\x92\x91\x90a\x16\x98V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x80`\0a\x0B\x12\x85\x85a\x0B\xFCV[\x91P\x91Pa\x0B\x1F\x81a\x0CAV[P\x93\x92PPPV[``a\x06\xDA\x82a\x0B6\x84a\r\xF7V[`\x01\x01a\x0EaV[```\0a\x0BK\x83a\x10\xA4V[`\x01\x01\x90P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0BkWa\x0Bka\x12\xF6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x95W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x9FWP\x93\x92PPPV[`\0\x80\x82Q`A\x03a\x0C2W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x0C&\x87\x82\x85\x85a\x11\x86V[\x94P\x94PPPPa\x0C:V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x0CUWa\x0CUa\x16\xF3V[\x03a\x0C]WPV[`\x01\x81`\x04\x81\x11\x15a\x0CqWa\x0Cqa\x16\xF3V[\x03a\x0C\xD8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\x02\x81`\x04\x81\x11\x15a\x0C\xECWa\x0C\xECa\x16\xF3V[\x03a\rSW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02EV[`\x03\x81`\x04\x81\x11\x15a\rgWa\rga\x16\xF3V[\x03a\r\xF4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01R\x7Fue\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x02EV[PV[`\0\x80`\x80\x83\x90\x1C\x15a\x0E\x0FW`\x80\x92\x90\x92\x1C\x91`\x10\x01[`@\x83\x90\x1C\x15a\x0E$W`@\x92\x90\x92\x1C\x91`\x08\x01[` \x83\x90\x1C\x15a\x0E9W` \x92\x90\x92\x1C\x91`\x04\x01[`\x10\x83\x90\x1C\x15a\x0ENW`\x10\x92\x90\x92\x1C\x91`\x02\x01[`\x08\x83\x90\x1C\x15a\x06\xDAW`\x01\x01\x92\x91PPV[```\0a\x0Ep\x83`\x02a\x17QV[a\x0E{\x90`\x02a\x17hV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x93Wa\x0E\x93a\x12\xF6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E\xBDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x7F0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\0\x81Q\x81\x10a\x0E\xF4Wa\x0E\xF4a\x17{V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP\x7Fx\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81`\x01\x81Q\x81\x10a\x0FWWa\x0FWa\x17{V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\0a\x0F\x93\x84`\x02a\x17QV[a\x0F\x9E\x90`\x01a\x17hV[\x90P[`\x01\x81\x11\x15a\x10;W\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85`\x0F\x16`\x10\x81\x10a\x0F\xDFWa\x0F\xDFa\x17{V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a\x0F\xF5Wa\x0F\xF5a\x17{V[` \x01\x01\x90~\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a\x104\x81a\x17\xAAV[\x90Pa\x0F\xA1V[P\x83\x15a\x06\xD7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x02EV[`\0\x80z\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x10a\x10\xEDWz\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01\0\0\0\0\0\0\0\0\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x11\x19Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x117Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x11OWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x11cWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x11uW`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x06\xDAW`\x01\x01\x92\x91PPV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x11\xBDWP`\0\x90P`\x03a\x12lV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x12\x11W=`\0\x80>=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x12eW`\0`\x01\x92P\x92PPa\x12lV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0[\x83\x81\x10\x15a\x12\x90W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12xV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x12\xB1\x81` \x86\x01` \x86\x01a\x12uV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x06\xD7` \x83\x01\x84a\x12\x99V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x13@Wa\x13@a\x12\xF6V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x13\x86Wa\x13\x86a\x12\xF6V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x13\x9FW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x13\xCAW`\0\x80\xFD[a\x06\xD7\x83\x835` \x85\x01a\x13%V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xEFW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x07W`\0\x80\xFD[a\x14\x13\x88\x83\x89\x01a\x13\xB9V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x14)W`\0\x80\xFD[a\x145\x88\x83\x89\x01a\x13\xB9V[\x94P`@\x87\x015\x93P``\x87\x015\x91P\x80\x82\x11\x15a\x14RW`\0\x80\xFD[P\x85\x01`\x1F\x81\x01\x87\x13a\x14dW`\0\x80\xFD[a\x14s\x87\x825` \x84\x01a\x13%V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x14\x95W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\xADW`\0\x80\xFD[a\x14\xB9\x88\x83\x89\x01a\x13\xB9V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x14\xCFW`\0\x80\xFD[a\x14\xDB\x88\x83\x89\x01a\x13\xB9V[\x94P`@\x87\x015\x91P\x80\x82\x11\x15a\x14\xF1W`\0\x80\xFD[Pa\x14\xFE\x87\x82\x88\x01a\x13\xB9V[\x94\x97\x93\x96P\x93\x94``\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x15\"W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x159W`\0\x80\xFD[a\x15E\x85\x82\x86\x01a\x13\xB9V[\x95` \x94\x90\x94\x015\x94PPPPV[`\0` \x82\x84\x03\x12\x15a\x15fW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x06\xD7W`\0\x80\xFD[`@\x81R`\0a\x15\x89`@\x83\x01\x85a\x12\x99V[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0\x85Qa\x15\xAA\x81\x84` \x8A\x01a\x12uV[\x7Fselector=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x83\x01\x90\x81R\x85Qa\x15\xE4\x81`\t\x84\x01` \x8A\x01a\x12uV[\x7F;domain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\t\x92\x90\x91\x01\x91\x82\x01R\x84Qa\x16\"\x81`\x11\x84\x01` \x89\x01a\x12uV[\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x11\x92\x90\x91\x01\x91\x82\x01R\x83Qa\x16`\x81`\"\x84\x01` \x88\x01a\x12uV[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\"\x92\x90\x91\x01\x91\x82\x01R`#\x01\x96\x95PPPPPPV[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R`\0\x83Qa\x16\xD0\x81`\x1A\x85\x01` \x88\x01a\x12uV[\x83Q\x90\x83\x01\x90a\x16\xE7\x81`\x1A\x84\x01` \x88\x01a\x12uV[\x01`\x1A\x01\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`!`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xDAWa\x06\xDAa\x17\"V[\x80\x82\x01\x80\x82\x11\x15a\x06\xDAWa\x06\xDAa\x17\"V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0\x81a\x17\xB9Wa\x17\xB9a\x17\"V[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 \x8C\xC9=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04$\x91\x90a\x14\xA2V[\x15a\x04\x8BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is revoked\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0a\x04\xCE`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01\x7FSET:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\x04\xDB\x82a\n\xC8V[\x90P`\0a\x04\xE9\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\x05pW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\xC1\\\xFF\xAB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xC1\\\xFF\xAB\x90a\x05\xC8\x90\x89\x90\x89\x90`\x04\x01a\x14\xCBV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[``\x84\x84\x84a\x06\x11\x85a\x0B-V[`@Q` \x01a\x06$\x94\x93\x92\x91\x90a\x14\xEDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x94\x93PPPPV[`\0\x80T`@Q\x7F\xE7\xA7\x97z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xE7\xA7\x97z\x90a\x06\x96\x90\x86\x90\x86\x90`\x04\x01a\x14\xCBV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD7\x91\x90a\x14\xA2V[\x90P[\x92\x91PPV[\x83Q`\0\x03a\x07KW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FInvalid selector\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x82Q`\0\x03a\x07\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FInvalid domain name\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[\x81a\x08\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FInvalid public key hash\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[a\x08'\x83\x83a\x06=V[\x15\x15`\x01\x14a\x08\x92W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FpublicKeyHash is not set\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7FB\xD7\xCB\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x84\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cB\xD7\xCB\x98\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t%\x91\x90a\x14\xA2V[\x15a\t\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FpublicKeyHash is already revoked`D\x82\x01R`d\x01a\x02EV[`\0a\t\xCF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FREVOKE:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86\x86\x86a\x06\x03V[\x90P`\0a\t\xDC\x82a\n\xC8V[\x90P`\0a\t\xEA\x82\x85a\x0B\x03V[`\x01T\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x91\x16\x14a\nqW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02EV[`\0T`@Q\x7F\x15\xD2Q.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x15\xD2Q.\x90`$\x01a\x05\xC8V[`\0a\n\xD4\x82Qa\x0BDV[\x82`@Q` \x01a\n\xE6\x92\x91\x90a\x15\xEDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x80`\0\x80a\x0B\x13\x86\x86a\x0C\x02V[\x92P\x92P\x92Pa\x0B#\x82\x82a\x0COV[P\x90\x94\x93PPPPV[``a\x06\xDA\x82a\x0B<\x84a\rWV[`\x01\x01a\r\xC1V[```\0a\x0BQ\x83a\x0F\xE7V[`\x01\x01\x90P`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0BqWa\x0Bqa\x12DV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x9BW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x7F0123456789abcdef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\xA5WP\x93\x92PPPV[`\0\x80`\0\x83Q`A\x03a\x0C=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x11\xAFWP`\0\x92P`\x01\x91P\x82\x90Pa\x11\xB9V[\x92P`\0\x91P\x81\x90P[\x94P\x94P\x94\x91PPV[`\0[\x83\x81\x10\x15a\x11\xDEW\x81\x81\x01Q\x83\x82\x01R` \x01a\x11\xC6V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x11\xFF\x81` \x86\x01` \x86\x01a\x11\xC3V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x06\xD7` \x83\x01\x84a\x11\xE7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x12\x8EWa\x12\x8Ea\x12DV[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x12\xD4Wa\x12\xD4a\x12DV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x12\xEDW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x13\x18W`\0\x80\xFD[a\x06\xD7\x83\x835` \x85\x01a\x12sV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13=W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13UW`\0\x80\xFD[a\x13a\x88\x83\x89\x01a\x13\x07V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x13wW`\0\x80\xFD[a\x13\x83\x88\x83\x89\x01a\x13\x07V[\x94P`@\x87\x015\x93P``\x87\x015\x91P\x80\x82\x11\x15a\x13\xA0W`\0\x80\xFD[P\x85\x01`\x1F\x81\x01\x87\x13a\x13\xB2W`\0\x80\xFD[a\x13\xC1\x87\x825` \x84\x01a\x12sV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x13\xE3W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xFBW`\0\x80\xFD[a\x14\x07\x88\x83\x89\x01a\x13\x07V[\x95P` \x87\x015\x91P\x80\x82\x11\x15a\x14\x1DW`\0\x80\xFD[a\x14)\x88\x83\x89\x01a\x13\x07V[\x94P`@\x87\x015\x91P\x80\x82\x11\x15a\x14?W`\0\x80\xFD[Pa\x14L\x87\x82\x88\x01a\x13\x07V[\x94\x97\x93\x96P\x93\x94``\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14pW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x87W`\0\x80\xFD[a\x14\x93\x85\x82\x86\x01a\x13\x07V[\x95` \x94\x90\x94\x015\x94PPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xB4W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x14\xC4W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0a\x14\xDE`@\x83\x01\x85a\x11\xE7V[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0\x85Qa\x14\xFF\x81\x84` \x8A\x01a\x11\xC3V[\x7Fselector=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x83\x01\x90\x81R\x85Qa\x159\x81`\t\x84\x01` \x8A\x01a\x11\xC3V[\x7F;domain=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\t\x92\x90\x91\x01\x91\x82\x01R\x84Qa\x15w\x81`\x11\x84\x01` \x89\x01a\x11\xC3V[\x7F;public_key_hash=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x11\x92\x90\x91\x01\x91\x82\x01R\x83Qa\x15\xB5\x81`\"\x84\x01` \x88\x01a\x11\xC3V[\x7F;\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\"\x92\x90\x91\x01\x91\x82\x01R`#\x01\x96\x95PPPPPPV[\x7F\x19Ethereum Signed Message:\n\0\0\0\0\0\0\x81R`\0\x83Qa\x16%\x81`\x1A\x85\x01` \x88\x01a\x11\xC3V[\x83Q\x90\x83\x01\x90a\x16<\x81`\x1A\x84\x01` \x88\x01a\x11\xC3V[\x01`\x1A\x01\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`!`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xDAWa\x06\xDAa\x16wV[\x80\x82\x01\x80\x82\x11\x15a\x06\xDAWa\x06\xDAa\x16wV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0\x81a\x17\x0EWa\x17\x0Ea\x16wV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V\xFE\xA2dipfsX\"\x12 d\xE7I\x84:X\x98\xC3\xE6\xA0\xDE\x83\x93\xF1\xF0\xA3e\xD5@U@?\xAC\xD6\x1CQ\x89\xBA\x96\xF6\x07mdsolcC\0\x08\x17\x003"; /// The deployed bytecode of the contract. - pub static ECDSAOWNEDDKIMREGISTRY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); + pub static ECDSAOWNEDDKIMREGISTRY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); pub struct ECDSAOwnedDKIMRegistry(::ethers::contract::Contract); impl ::core::clone::Clone for ECDSAOwnedDKIMRegistry { fn clone(&self) -> Self { @@ -339,13 +348,11 @@ pub mod ecdsa_owned_dkim_registry { address: T, client: ::std::sync::Arc, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ECDSAOWNEDDKIMREGISTRY_ABI.clone(), - client, - ), - ) + Self(::ethers::contract::Contract::new( + address.into(), + ECDSAOWNEDDKIMREGISTRY_ABI.clone(), + client, + )) } /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction @@ -420,10 +427,7 @@ pub mod ecdsa_owned_dkim_registry { ///Calls the contract's `dkimRegistry` (0x6423f1e2) function pub fn dkim_registry( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([100, 35, 241, 226], ()) .expect("method not found (this should never happen)") @@ -471,21 +475,218 @@ pub mod ecdsa_owned_dkim_registry { ///Calls the contract's `signer` (0x238ac933) function pub fn signer( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([35, 138, 201, 51], ()) .expect("method not found (this should never happen)") } } impl From<::ethers::contract::Contract> - for ECDSAOwnedDKIMRegistry { + for ECDSAOwnedDKIMRegistry + { fn from(contract: ::ethers::contract::Contract) -> Self { Self::new(contract.address(), contract.client()) } } + ///Custom Error type `ECDSAInvalidSignature` with signature `ECDSAInvalidSignature()` and selector `0xf645eedf` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ECDSAInvalidSignature", abi = "ECDSAInvalidSignature()")] + pub struct ECDSAInvalidSignature; + ///Custom Error type `ECDSAInvalidSignatureLength` with signature `ECDSAInvalidSignatureLength(uint256)` and selector `0xfce698f7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ECDSAInvalidSignatureLength", + abi = "ECDSAInvalidSignatureLength(uint256)" + )] + pub struct ECDSAInvalidSignatureLength { + pub length: ::ethers::core::types::U256, + } + ///Custom Error type `ECDSAInvalidSignatureS` with signature `ECDSAInvalidSignatureS(bytes32)` and selector `0xd78bce0c` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ECDSAInvalidSignatureS", + abi = "ECDSAInvalidSignatureS(bytes32)" + )] + pub struct ECDSAInvalidSignatureS { + pub s: [u8; 32], + } + ///Custom Error type `StringsInsufficientHexLength` with signature `StringsInsufficientHexLength(uint256,uint256)` and selector `0xe22e27eb` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "StringsInsufficientHexLength", + abi = "StringsInsufficientHexLength(uint256,uint256)" + )] + pub struct StringsInsufficientHexLength { + pub value: ::ethers::core::types::U256, + pub length: ::ethers::core::types::U256, + } + ///Container type for all of the contract's custom errors + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum ECDSAOwnedDKIMRegistryErrors { + ECDSAInvalidSignature(ECDSAInvalidSignature), + ECDSAInvalidSignatureLength(ECDSAInvalidSignatureLength), + ECDSAInvalidSignatureS(ECDSAInvalidSignatureS), + StringsInsufficientHexLength(StringsInsufficientHexLength), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for ECDSAOwnedDKIMRegistryErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ECDSAInvalidSignature(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ECDSAInvalidSignatureLength(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ECDSAInvalidSignatureS(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::StringsInsufficientHexLength(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ECDSAOwnedDKIMRegistryErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::ECDSAInvalidSignature(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ECDSAInvalidSignatureLength(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ECDSAInvalidSignatureS(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::StringsInsufficientHexLength(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for ECDSAOwnedDKIMRegistryErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector( + ) => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector( + ) => + { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for ECDSAOwnedDKIMRegistryErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ECDSAInvalidSignature(element) => ::core::fmt::Display::fmt(element, f), + Self::ECDSAInvalidSignatureLength(element) => ::core::fmt::Display::fmt(element, f), + Self::ECDSAInvalidSignatureS(element) => ::core::fmt::Display::fmt(element, f), + Self::StringsInsufficientHexLength(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for ECDSAOwnedDKIMRegistryErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for ECDSAOwnedDKIMRegistryErrors { + fn from(value: ECDSAInvalidSignature) -> Self { + Self::ECDSAInvalidSignature(value) + } + } + impl ::core::convert::From for ECDSAOwnedDKIMRegistryErrors { + fn from(value: ECDSAInvalidSignatureLength) -> Self { + Self::ECDSAInvalidSignatureLength(value) + } + } + impl ::core::convert::From for ECDSAOwnedDKIMRegistryErrors { + fn from(value: ECDSAInvalidSignatureS) -> Self { + Self::ECDSAInvalidSignatureS(value) + } + } + impl ::core::convert::From for ECDSAOwnedDKIMRegistryErrors { + fn from(value: StringsInsufficientHexLength) -> Self { + Self::StringsInsufficientHexLength(value) + } + } ///Container type for all input parameters for the `REVOKE_PREFIX` function with signature `REVOKE_PREFIX()` and selector `0xd507c320` #[derive( Clone, @@ -495,7 +696,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "REVOKE_PREFIX", abi = "REVOKE_PREFIX()")] pub struct RevokePrefixCall; @@ -508,7 +709,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "SET_PREFIX", abi = "SET_PREFIX()")] pub struct SetPrefixCall; @@ -521,7 +722,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "computeSignedMsg", @@ -542,7 +743,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "dkimRegistry", abi = "dkimRegistry()")] pub struct DkimRegistryCall; @@ -555,7 +756,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "isDKIMPublicKeyHashValid", @@ -574,7 +775,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "revokeDKIMPublicKeyHash", @@ -595,7 +796,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "setDKIMPublicKeyHash", @@ -616,7 +817,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "signer", abi = "signer()")] pub struct SignerCall; @@ -637,44 +838,38 @@ pub mod ecdsa_owned_dkim_registry { data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) + { return Ok(Self::RevokePrefix(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::SetPrefix(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::ComputeSignedMsg(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) + { return Ok(Self::DkimRegistry(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::IsDKIMPublicKeyHashValid(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::RevokeDKIMPublicKeyHash(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::SetDKIMPublicKeyHash(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Signer(decoded)); } Err(::ethers::core::abi::Error::InvalidData.into()) @@ -683,18 +878,10 @@ pub mod ecdsa_owned_dkim_registry { impl ::ethers::core::abi::AbiEncode for ECDSAOwnedDKIMRegistryCalls { fn encode(self) -> Vec { match self { - Self::RevokePrefix(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetPrefix(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ComputeSignedMsg(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DkimRegistry(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::RevokePrefix(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SetPrefix(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ComputeSignedMsg(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DkimRegistry(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::IsDKIMPublicKeyHashValid(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -715,15 +902,9 @@ pub mod ecdsa_owned_dkim_registry { Self::SetPrefix(element) => ::core::fmt::Display::fmt(element, f), Self::ComputeSignedMsg(element) => ::core::fmt::Display::fmt(element, f), Self::DkimRegistry(element) => ::core::fmt::Display::fmt(element, f), - Self::IsDKIMPublicKeyHashValid(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevokeDKIMPublicKeyHash(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::SetDKIMPublicKeyHash(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::IsDKIMPublicKeyHashValid(element) => ::core::fmt::Display::fmt(element, f), + Self::RevokeDKIMPublicKeyHash(element) => ::core::fmt::Display::fmt(element, f), + Self::SetDKIMPublicKeyHash(element) => ::core::fmt::Display::fmt(element, f), Self::Signer(element) => ::core::fmt::Display::fmt(element, f), } } @@ -748,20 +929,17 @@ pub mod ecdsa_owned_dkim_registry { Self::DkimRegistry(value) } } - impl ::core::convert::From - for ECDSAOwnedDKIMRegistryCalls { + impl ::core::convert::From for ECDSAOwnedDKIMRegistryCalls { fn from(value: IsDKIMPublicKeyHashValidCall) -> Self { Self::IsDKIMPublicKeyHashValid(value) } } - impl ::core::convert::From - for ECDSAOwnedDKIMRegistryCalls { + impl ::core::convert::From for ECDSAOwnedDKIMRegistryCalls { fn from(value: RevokeDKIMPublicKeyHashCall) -> Self { Self::RevokeDKIMPublicKeyHash(value) } } - impl ::core::convert::From - for ECDSAOwnedDKIMRegistryCalls { + impl ::core::convert::From for ECDSAOwnedDKIMRegistryCalls { fn from(value: SetDKIMPublicKeyHashCall) -> Self { Self::SetDKIMPublicKeyHash(value) } @@ -780,7 +958,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct RevokePrefixReturn(pub ::std::string::String); ///Container type for all return fields from the `SET_PREFIX` function with signature `SET_PREFIX()` and selector `0x07f1eaf5` @@ -792,7 +970,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct SetPrefixReturn(pub ::std::string::String); ///Container type for all return fields from the `computeSignedMsg` function with signature `computeSignedMsg(string,string,string,bytes32)` and selector `0xaec79361` @@ -804,7 +982,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct ComputeSignedMsgReturn(pub ::std::string::String); ///Container type for all return fields from the `dkimRegistry` function with signature `dkimRegistry()` and selector `0x6423f1e2` @@ -816,7 +994,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct DkimRegistryReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `isDKIMPublicKeyHashValid` function with signature `isDKIMPublicKeyHashValid(string,bytes32)` and selector `0xe7a7977a` @@ -828,7 +1006,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct IsDKIMPublicKeyHashValidReturn(pub bool); ///Container type for all return fields from the `signer` function with signature `signer()` and selector `0x238ac933` @@ -840,7 +1018,7 @@ pub mod ecdsa_owned_dkim_registry { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct SignerReturn(pub ::ethers::core::types::Address); } diff --git a/packages/relayer/src/abis/email_auth.rs b/packages/relayer/src/abis/email_auth.rs index 754a5339..86236b93 100644 --- a/packages/relayer/src/abis/email_auth.rs +++ b/packages/relayer/src/abis/email_auth.rs @@ -7,7 +7,7 @@ pub use email_auth::*; clippy::upper_case_acronyms, clippy::type_complexity, dead_code, - non_camel_case_types, + non_camel_case_types )] pub mod email_auth { #[allow(deprecated)] @@ -17,842 +17,740 @@ pub mod email_auth { inputs: ::std::vec![], }), functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("UPGRADE_INTERFACE_VERSION"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("UPGRADE_INTERFACE_VERSION",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), ( ::std::borrow::ToOwned::to_owned("accountSalt"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("accountSalt"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("accountSalt"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("authEmail"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("authEmail"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("emailAuthMsg"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::String, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::String, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct EmailAuthMsg"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("authEmail"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("emailAuthMsg"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Bytes, + ), + ), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::String, + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::String, + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct EmailAuthMsg"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("authedHash"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("authedHash"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("authedHash"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("computeMsgHash"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("computeMsgHash"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_accountSalt"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_isCodeExist"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_templateId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_subjectParams"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeMsgHash"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_accountSalt"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_isCodeExist"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_templateId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_subjectParams"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Bytes, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes[]"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], ), ( ::std::borrow::ToOwned::to_owned("deleteSubjectTemplate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "deleteSubjectTemplate", + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deleteSubjectTemplate",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_templateId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_templateId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("dkim"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("dkim"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract ECDSAOwnedDKIMRegistry", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dkim"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("contract ECDSAOwnedDKIMRegistry",), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("dkimRegistryAddr"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("dkimRegistryAddr"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dkimRegistryAddr"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("getSubjectTemplate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getSubjectTemplate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_templateId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::String, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getSubjectTemplate"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_templateId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string[]"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("initialize"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("initialize"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_accountSalt"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("initialize"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_initialOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_accountSalt"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("insertSubjectTemplate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "insertSubjectTemplate", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_templateId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_subjectTemplate"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::String, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("insertSubjectTemplate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_templateId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_subjectTemplate"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string[]"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("isValidSignature"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isValidSignature"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_hash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isValidSignature"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_hash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_signature"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("lastTimestamp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("lastTimestamp"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("lastTimestamp"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("owner"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("proxiableUUID"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("renounceOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("renounceOwnership"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("renounceOwnership"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("setTimestampCheckEnabled"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setTimestampCheckEnabled", + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setTimestampCheckEnabled",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_enabled"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_enabled"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("subjectTemplates"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("subjectTemplates"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("subjectTemplates"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("timestampCheckEnabled"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "timestampCheckEnabled", + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("timestampCheckEnabled",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), ), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferOwnership"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("updateDKIMRegistry"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("updateDKIMRegistry"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_dkimRegistryAddr"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("updateDKIMRegistry"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_dkimRegistryAddr"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("updateSubjectTemplate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "updateSubjectTemplate", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_templateId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_subjectTemplate"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::String, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("updateSubjectTemplate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_templateId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_subjectTemplate"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string[]"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("updateVerifier"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("updateVerifier"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_verifierAddr"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("upgradeTo"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("upgradeTo"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newImplementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("updateVerifier"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_verifierAddr"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], ), ( ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newImplementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newImplementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], ), ( ::std::borrow::ToOwned::to_owned("usedNullifiers"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("usedNullifiers"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("usedNullifiers"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("verifier"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("verifier"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract Verifier"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("verifier"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("contract Verifier"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ( ::std::borrow::ToOwned::to_owned("verifierAddr"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("verifierAddr"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("verifierAddr"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], ), ]), events: ::core::convert::From::from([ ( - ::std::borrow::ToOwned::to_owned("AdminChanged"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AdminChanged"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("previousAdmin"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newAdmin"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], + ::std::borrow::ToOwned::to_owned("Initialized"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Initialized"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("version"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + indexed: false, + },], + anonymous: false, + },], ), ( - ::std::borrow::ToOwned::to_owned("BeaconUpgraded"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("BeaconUpgraded"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("beacon"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], + ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("OwnershipTransferred",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("previousOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("newOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ], + anonymous: false, + },], ), ( - ::std::borrow::ToOwned::to_owned("Initialized"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Initialized"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("version"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgraded"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + },], + anonymous: false, + },], ), + ]), + errors: ::core::convert::From::from([ ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", + ::std::borrow::ToOwned::to_owned("AddressEmptyCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AddressEmptyCode"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("target"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("previousOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], + },], + },], ), ( - ::std::borrow::ToOwned::to_owned("Upgraded"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Upgraded"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("implementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], + ::std::borrow::ToOwned::to_owned("ERC1967InvalidImplementation"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ERC1967InvalidImplementation",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ERC1967NonPayable"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ERC1967NonPayable"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("FailedInnerCall"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("FailedInnerCall"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidInitialization"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidInitialization",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotInitializing"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotInitializing"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OwnableInvalidOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OwnableInvalidOwner",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OwnableUnauthorizedAccount"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OwnableUnauthorizedAccount",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UUPSUnauthorizedCallContext"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UUPSUnauthorizedCallContext",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UUPSUnsupportedProxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UUPSUnsupportedProxiableUUID",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("slot"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + },], ), ]), - errors: ::std::collections::BTreeMap::new(), receive: false, fallback: false, } } ///The parsed JSON ABI of the contract. - pub static EMAILAUTH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); + pub static EMAILAUTH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); pub struct EmailAuth(::ethers::contract::Contract); impl ::core::clone::Clone for EmailAuth { fn clone(&self) -> Self { @@ -872,7 +770,9 @@ pub mod email_auth { } impl ::core::fmt::Debug for EmailAuth { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(EmailAuth)).field(&self.address()).finish() + f.debug_tuple(::core::stringify!(EmailAuth)) + .field(&self.address()) + .finish() } } impl EmailAuth { @@ -882,18 +782,22 @@ pub mod email_auth { address: T, client: ::std::sync::Arc, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - EMAILAUTH_ABI.clone(), - client, - ), - ) + Self(::ethers::contract::Contract::new( + address.into(), + EMAILAUTH_ABI.clone(), + client, + )) + } + ///Calls the contract's `UPGRADE_INTERFACE_VERSION` (0xad3cb1cc) function + pub fn upgrade_interface_version( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([173, 60, 177, 204], ()) + .expect("method not found (this should never happen)") } ///Calls the contract's `accountSalt` (0x6c74921e) function - pub fn account_salt( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn account_salt(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([108, 116, 146, 30], ()) .expect("method not found (this should never happen)") @@ -943,10 +847,7 @@ pub mod email_auth { ///Calls the contract's `dkim` (0x400ad5ce) function pub fn dkim( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([64, 10, 213, 206], ()) .expect("method not found (this should never happen)") @@ -954,10 +855,7 @@ pub mod email_auth { ///Calls the contract's `dkimRegistryAddr` (0x1bc01b83) function pub fn dkim_registry_addr( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([27, 192, 27, 131], ()) .expect("method not found (this should never happen)") @@ -966,21 +864,20 @@ pub mod email_auth { pub fn get_subject_template( &self, template_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::std::string::String>, - > { + ) -> ::ethers::contract::builders::ContractCall> + { self.0 .method_hash([30, 5, 160, 40], template_id) .expect("method not found (this should never happen)") } - ///Calls the contract's `initialize` (0x9498bd71) function + ///Calls the contract's `initialize` (0xbe13f47c) function pub fn initialize( &self, + initial_owner: ::ethers::core::types::Address, account_salt: [u8; 32], ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([148, 152, 189, 113], account_salt) + .method_hash([190, 19, 244, 124], (initial_owner, account_salt)) .expect("method not found (this should never happen)") } ///Calls the contract's `insertSubjectTemplate` (0xc4b84df4) function @@ -1014,26 +911,19 @@ pub mod email_auth { ///Calls the contract's `owner` (0x8da5cb5b) function pub fn owner( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([141, 165, 203, 91], ()) .expect("method not found (this should never happen)") } ///Calls the contract's `proxiableUUID` (0x52d1902d) function - pub fn proxiable_uuid( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([82, 209, 144, 45], ()) .expect("method not found (this should never happen)") } ///Calls the contract's `renounceOwnership` (0x715018a6) function - pub fn renounce_ownership( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn renounce_ownership(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([113, 80, 24, 166], ()) .expect("method not found (this should never happen)") @@ -1102,15 +992,6 @@ pub mod email_auth { .method_hash([151, 252, 0, 124], verifier_addr) .expect("method not found (this should never happen)") } - ///Calls the contract's `upgradeTo` (0x3659cfe6) function - pub fn upgrade_to( - &self, - new_implementation: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 89, 207, 230], new_implementation) - .expect("method not found (this should never happen)") - } ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function pub fn upgrade_to_and_call( &self, @@ -1133,10 +1014,7 @@ pub mod email_auth { ///Calls the contract's `verifier` (0x2b7ac3f3) function pub fn verifier( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([43, 122, 195, 243], ()) .expect("method not found (this should never happen)") @@ -1144,110 +1022,429 @@ pub mod email_auth { ///Calls the contract's `verifierAddr` (0x663ea2e2) function pub fn verifier_addr( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([102, 62, 162, 226], ()) .expect("method not found (this should never happen)") } - ///Gets the contract's `AdminChanged` event - pub fn admin_changed_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - AdminChangedFilter, - > { - self.0.event() - } - ///Gets the contract's `BeaconUpgraded` event - pub fn beacon_upgraded_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - BeaconUpgradedFilter, - > { - self.0.event() - } ///Gets the contract's `Initialized` event pub fn initialized_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - InitializedFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, InitializedFilter> + { self.0.event() } ///Gets the contract's `OwnershipTransferred` event pub fn ownership_transferred_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, OwnershipTransferredFilter> + { self.0.event() } ///Gets the contract's `Upgraded` event pub fn upgraded_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - UpgradedFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { self.0.event() } /// Returns an `Event` builder for all the events of this contract. pub fn events( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - EmailAuthEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, EmailAuthEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) } } - impl From<::ethers::contract::Contract> - for EmailAuth { + impl From<::ethers::contract::Contract> for EmailAuth { fn from(contract: ::ethers::contract::Contract) -> Self { Self::new(contract.address(), contract.client()) } } + ///Custom Error type `AddressEmptyCode` with signature `AddressEmptyCode(address)` and selector `0x9996b315` #[derive( Clone, - ::ethers::contract::EthEvent, + ::ethers::contract::EthError, ::ethers::contract::EthDisplay, Default, Debug, PartialEq, Eq, - Hash + Hash, )] - #[ethevent(name = "AdminChanged", abi = "AdminChanged(address,address)")] - pub struct AdminChangedFilter { - pub previous_admin: ::ethers::core::types::Address, - pub new_admin: ::ethers::core::types::Address, + #[etherror(name = "AddressEmptyCode", abi = "AddressEmptyCode(address)")] + pub struct AddressEmptyCode { + pub target: ::ethers::core::types::Address, } + ///Custom Error type `ERC1967InvalidImplementation` with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3` #[derive( Clone, - ::ethers::contract::EthEvent, + ::ethers::contract::EthError, ::ethers::contract::EthDisplay, Default, Debug, PartialEq, Eq, - Hash + Hash, )] - #[ethevent(name = "BeaconUpgraded", abi = "BeaconUpgraded(address)")] - pub struct BeaconUpgradedFilter { - #[ethevent(indexed)] - pub beacon: ::ethers::core::types::Address, + #[etherror( + name = "ERC1967InvalidImplementation", + abi = "ERC1967InvalidImplementation(address)" + )] + pub struct ERC1967InvalidImplementation { + pub implementation: ::ethers::core::types::Address, + } + ///Custom Error type `ERC1967NonPayable` with signature `ERC1967NonPayable()` and selector `0xb398979f` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ERC1967NonPayable", abi = "ERC1967NonPayable()")] + pub struct ERC1967NonPayable; + ///Custom Error type `FailedInnerCall` with signature `FailedInnerCall()` and selector `0x1425ea42` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "FailedInnerCall", abi = "FailedInnerCall()")] + pub struct FailedInnerCall; + ///Custom Error type `InvalidInitialization` with signature `InvalidInitialization()` and selector `0xf92ee8a9` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidInitialization", abi = "InvalidInitialization()")] + pub struct InvalidInitialization; + ///Custom Error type `NotInitializing` with signature `NotInitializing()` and selector `0xd7e6bcf8` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotInitializing", abi = "NotInitializing()")] + pub struct NotInitializing; + ///Custom Error type `OwnableInvalidOwner` with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OwnableInvalidOwner", abi = "OwnableInvalidOwner(address)")] + pub struct OwnableInvalidOwner { + pub owner: ::ethers::core::types::Address, + } + ///Custom Error type `OwnableUnauthorizedAccount` with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "OwnableUnauthorizedAccount", + abi = "OwnableUnauthorizedAccount(address)" + )] + pub struct OwnableUnauthorizedAccount { + pub account: ::ethers::core::types::Address, + } + ///Custom Error type `UUPSUnauthorizedCallContext` with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "UUPSUnauthorizedCallContext", + abi = "UUPSUnauthorizedCallContext()" + )] + pub struct UUPSUnauthorizedCallContext; + ///Custom Error type `UUPSUnsupportedProxiableUUID` with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "UUPSUnsupportedProxiableUUID", + abi = "UUPSUnsupportedProxiableUUID(bytes32)" + )] + pub struct UUPSUnsupportedProxiableUUID { + pub slot: [u8; 32], + } + ///Container type for all of the contract's custom errors + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum EmailAuthErrors { + AddressEmptyCode(AddressEmptyCode), + ERC1967InvalidImplementation(ERC1967InvalidImplementation), + ERC1967NonPayable(ERC1967NonPayable), + FailedInnerCall(FailedInnerCall), + InvalidInitialization(InvalidInitialization), + NotInitializing(NotInitializing), + OwnableInvalidOwner(OwnableInvalidOwner), + OwnableUnauthorizedAccount(OwnableUnauthorizedAccount), + UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext), + UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for EmailAuthErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::AddressEmptyCode(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ERC1967InvalidImplementation(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ERC1967NonPayable(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::FailedInnerCall(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidInitialization(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotInitializing(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::OwnableInvalidOwner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::OwnableUnauthorizedAccount(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UUPSUnauthorizedCallContext(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UUPSUnsupportedProxiableUUID(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for EmailAuthErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AddressEmptyCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ERC1967InvalidImplementation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ERC1967NonPayable(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::FailedInnerCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidInitialization(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NotInitializing(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnableInvalidOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::OwnableUnauthorizedAccount(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UUPSUnauthorizedCallContext(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UUPSUnsupportedProxiableUUID(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for EmailAuthErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector( + ) => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector( + ) => + { + true + } + _ if selector + == ::selector( + ) => + { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for EmailAuthErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddressEmptyCode(element) => ::core::fmt::Display::fmt(element, f), + Self::ERC1967InvalidImplementation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ERC1967NonPayable(element) => ::core::fmt::Display::fmt(element, f), + Self::FailedInnerCall(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidInitialization(element) => ::core::fmt::Display::fmt(element, f), + Self::NotInitializing(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnableInvalidOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnableUnauthorizedAccount(element) => ::core::fmt::Display::fmt(element, f), + Self::UUPSUnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), + Self::UUPSUnsupportedProxiableUUID(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for EmailAuthErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: AddressEmptyCode) -> Self { + Self::AddressEmptyCode(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: ERC1967InvalidImplementation) -> Self { + Self::ERC1967InvalidImplementation(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: ERC1967NonPayable) -> Self { + Self::ERC1967NonPayable(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: FailedInnerCall) -> Self { + Self::FailedInnerCall(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: InvalidInitialization) -> Self { + Self::InvalidInitialization(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: NotInitializing) -> Self { + Self::NotInitializing(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: OwnableInvalidOwner) -> Self { + Self::OwnableInvalidOwner(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: OwnableUnauthorizedAccount) -> Self { + Self::OwnableUnauthorizedAccount(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: UUPSUnauthorizedCallContext) -> Self { + Self::UUPSUnauthorizedCallContext(value) + } + } + impl ::core::convert::From for EmailAuthErrors { + fn from(value: UUPSUnsupportedProxiableUUID) -> Self { + Self::UUPSUnsupportedProxiableUUID(value) + } } #[derive( Clone, @@ -1257,11 +1454,11 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] - #[ethevent(name = "Initialized", abi = "Initialized(uint8)")] + #[ethevent(name = "Initialized", abi = "Initialized(uint64)")] pub struct InitializedFilter { - pub version: u8, + pub version: u64, } #[derive( Clone, @@ -1271,7 +1468,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent( name = "OwnershipTransferred", @@ -1291,7 +1488,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] pub struct UpgradedFilter { @@ -1301,8 +1498,6 @@ pub mod email_auth { ///Container type for all of the contract's events #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum EmailAuthEvents { - AdminChangedFilter(AdminChangedFilter), - BeaconUpgradedFilter(BeaconUpgradedFilter), InitializedFilter(InitializedFilter), OwnershipTransferredFilter(OwnershipTransferredFilter), UpgradedFilter(UpgradedFilter), @@ -1311,12 +1506,6 @@ pub mod email_auth { fn decode_log( log: &::ethers::core::abi::RawLog, ) -> ::core::result::Result { - if let Ok(decoded) = AdminChangedFilter::decode_log(log) { - return Ok(EmailAuthEvents::AdminChangedFilter(decoded)); - } - if let Ok(decoded) = BeaconUpgradedFilter::decode_log(log) { - return Ok(EmailAuthEvents::BeaconUpgradedFilter(decoded)); - } if let Ok(decoded) = InitializedFilter::decode_log(log) { return Ok(EmailAuthEvents::InitializedFilter(decoded)); } @@ -1332,30 +1521,12 @@ pub mod email_auth { impl ::core::fmt::Display for EmailAuthEvents { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { - Self::AdminChangedFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::BeaconUpgradedFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } Self::InitializedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::OwnershipTransferredFilter(element) => ::core::fmt::Display::fmt(element, f), Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), } } } - impl ::core::convert::From for EmailAuthEvents { - fn from(value: AdminChangedFilter) -> Self { - Self::AdminChangedFilter(value) - } - } - impl ::core::convert::From for EmailAuthEvents { - fn from(value: BeaconUpgradedFilter) -> Self { - Self::BeaconUpgradedFilter(value) - } - } impl ::core::convert::From for EmailAuthEvents { fn from(value: InitializedFilter) -> Self { Self::InitializedFilter(value) @@ -1371,6 +1542,22 @@ pub mod email_auth { Self::UpgradedFilter(value) } } + ///Container type for all input parameters for the `UPGRADE_INTERFACE_VERSION` function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "UPGRADE_INTERFACE_VERSION", + abi = "UPGRADE_INTERFACE_VERSION()" + )] + pub struct UpgradeInterfaceVersionCall; ///Container type for all input parameters for the `accountSalt` function with signature `accountSalt()` and selector `0x6c74921e` #[derive( Clone, @@ -1380,7 +1567,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "accountSalt", abi = "accountSalt()")] pub struct AccountSaltCall; @@ -1393,7 +1580,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "authEmail", @@ -1411,7 +1598,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "authedHash", abi = "authedHash(bytes32)")] pub struct AuthedHashCall(pub [u8; 32]); @@ -1424,7 +1611,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "computeMsgHash", @@ -1445,7 +1632,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "deleteSubjectTemplate", abi = "deleteSubjectTemplate(uint256)")] pub struct DeleteSubjectTemplateCall { @@ -1460,7 +1647,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "dkim", abi = "dkim()")] pub struct DkimCall; @@ -1473,7 +1660,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "dkimRegistryAddr", abi = "dkimRegistryAddr()")] pub struct DkimRegistryAddrCall; @@ -1486,13 +1673,13 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "getSubjectTemplate", abi = "getSubjectTemplate(uint256)")] pub struct GetSubjectTemplateCall { pub template_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `initialize` function with signature `initialize(bytes32)` and selector `0x9498bd71` + ///Container type for all input parameters for the `initialize` function with signature `initialize(address,bytes32)` and selector `0xbe13f47c` #[derive( Clone, ::ethers::contract::EthCall, @@ -1501,10 +1688,11 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] - #[ethcall(name = "initialize", abi = "initialize(bytes32)")] + #[ethcall(name = "initialize", abi = "initialize(address,bytes32)")] pub struct InitializeCall { + pub initial_owner: ::ethers::core::types::Address, pub account_salt: [u8; 32], } ///Container type for all input parameters for the `insertSubjectTemplate` function with signature `insertSubjectTemplate(uint256,string[])` and selector `0xc4b84df4` @@ -1516,7 +1704,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "insertSubjectTemplate", @@ -1535,7 +1723,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] pub struct IsValidSignatureCall { @@ -1551,7 +1739,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "lastTimestamp", abi = "lastTimestamp()")] pub struct LastTimestampCall; @@ -1564,7 +1752,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "owner", abi = "owner()")] pub struct OwnerCall; @@ -1577,7 +1765,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] pub struct ProxiableUUIDCall; @@ -1590,7 +1778,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] pub struct RenounceOwnershipCall; @@ -1603,9 +1791,12 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, + )] + #[ethcall( + name = "setTimestampCheckEnabled", + abi = "setTimestampCheckEnabled(bool)" )] - #[ethcall(name = "setTimestampCheckEnabled", abi = "setTimestampCheckEnabled(bool)")] pub struct SetTimestampCheckEnabledCall { pub enabled: bool, } @@ -1618,7 +1809,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "subjectTemplates", abi = "subjectTemplates(uint256,uint256)")] pub struct SubjectTemplatesCall( @@ -1634,7 +1825,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "timestampCheckEnabled", abi = "timestampCheckEnabled()")] pub struct TimestampCheckEnabledCall; @@ -1647,7 +1838,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] pub struct TransferOwnershipCall { @@ -1662,7 +1853,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "updateDKIMRegistry", abi = "updateDKIMRegistry(address)")] pub struct UpdateDKIMRegistryCall { @@ -1677,7 +1868,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "updateSubjectTemplate", @@ -1696,27 +1887,12 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "updateVerifier", abi = "updateVerifier(address)")] pub struct UpdateVerifierCall { pub verifier_addr: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `upgradeTo` function with signature `upgradeTo(address)` and selector `0x3659cfe6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "upgradeTo", abi = "upgradeTo(address)")] - pub struct UpgradeToCall { - pub new_implementation: ::ethers::core::types::Address, - } ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` #[derive( Clone, @@ -1726,7 +1902,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] pub struct UpgradeToAndCallCall { @@ -1742,7 +1918,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "usedNullifiers", abi = "usedNullifiers(bytes32)")] pub struct UsedNullifiersCall(pub [u8; 32]); @@ -1755,7 +1931,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "verifier", abi = "verifier()")] pub struct VerifierCall; @@ -1768,13 +1944,14 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "verifierAddr", abi = "verifierAddr()")] pub struct VerifierAddrCall; ///Container type for all of the contract's call #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum EmailAuthCalls { + UpgradeInterfaceVersion(UpgradeInterfaceVersionCall), AccountSalt(AccountSaltCall), AuthEmail(AuthEmailCall), AuthedHash(AuthedHashCall), @@ -1797,7 +1974,6 @@ pub mod email_auth { UpdateDKIMRegistry(UpdateDKIMRegistryCall), UpdateSubjectTemplate(UpdateSubjectTemplateCall), UpdateVerifier(UpdateVerifierCall), - UpgradeTo(UpgradeToCall), UpgradeToAndCall(UpgradeToAndCallCall), UsedNullifiers(UsedNullifiersCall), Verifier(VerifierCall), @@ -1808,139 +1984,122 @@ pub mod email_auth { data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeInterfaceVersion(decoded)); + } + if let Ok(decoded) = ::decode(data) { return Ok(Self::AccountSalt(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::AuthEmail(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::AuthedHash(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::ComputeMsgHash(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::DeleteSubjectTemplate(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Dkim(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::DkimRegistryAddr(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::GetSubjectTemplate(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Initialize(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::InsertSubjectTemplate(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::IsValidSignature(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) + { return Ok(Self::LastTimestamp(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Owner(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) + { return Ok(Self::ProxiableUUID(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::RenounceOwnership(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::SetTimestampCheckEnabled(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::SubjectTemplates(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::TimestampCheckEnabled(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::TransferOwnership(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::UpdateDKIMRegistry(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::UpdateSubjectTemplate(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::UpdateVerifier(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::UpgradeTo(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::UpgradeToAndCall(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::UsedNullifiers(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Verifier(decoded)); } - if let Ok(decoded) = ::decode( - data, - ) { + if let Ok(decoded) = ::decode(data) + { return Ok(Self::VerifierAddr(decoded)); } Err(::ethers::core::abi::Error::InvalidData.into()) @@ -1949,126 +2108,78 @@ pub mod email_auth { impl ::ethers::core::abi::AbiEncode for EmailAuthCalls { fn encode(self) -> Vec { match self { - Self::AccountSalt(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::AuthEmail(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::AuthedHash(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ComputeMsgHash(element) => { + Self::UpgradeInterfaceVersion(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::AccountSalt(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AuthEmail(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AuthedHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ComputeMsgHash(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::DeleteSubjectTemplate(element) => { ::ethers::core::abi::AbiEncode::encode(element) } Self::Dkim(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::DkimRegistryAddr(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::DkimRegistryAddr(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::GetSubjectTemplate(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::Initialize(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::InsertSubjectTemplate(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::IsValidSignature(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::LastTimestamp(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::LastTimestamp(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ProxiableUUID(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RenounceOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RenounceOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::SetTimestampCheckEnabled(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::SubjectTemplates(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::SubjectTemplates(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::TimestampCheckEnabled(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::TransferOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::UpdateDKIMRegistry(element) => { ::ethers::core::abi::AbiEncode::encode(element) } Self::UpdateSubjectTemplate(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::UpdateVerifier(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UpgradeTo(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UpgradeToAndCall(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UsedNullifiers(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Verifier(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::VerifierAddr(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::UpdateVerifier(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UsedNullifiers(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Verifier(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::VerifierAddr(element) => ::ethers::core::abi::AbiEncode::encode(element), } } } impl ::core::fmt::Display for EmailAuthCalls { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { + Self::UpgradeInterfaceVersion(element) => ::core::fmt::Display::fmt(element, f), Self::AccountSalt(element) => ::core::fmt::Display::fmt(element, f), Self::AuthEmail(element) => ::core::fmt::Display::fmt(element, f), Self::AuthedHash(element) => ::core::fmt::Display::fmt(element, f), Self::ComputeMsgHash(element) => ::core::fmt::Display::fmt(element, f), - Self::DeleteSubjectTemplate(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::DeleteSubjectTemplate(element) => ::core::fmt::Display::fmt(element, f), Self::Dkim(element) => ::core::fmt::Display::fmt(element, f), Self::DkimRegistryAddr(element) => ::core::fmt::Display::fmt(element, f), - Self::GetSubjectTemplate(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::GetSubjectTemplate(element) => ::core::fmt::Display::fmt(element, f), Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), - Self::InsertSubjectTemplate(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::InsertSubjectTemplate(element) => ::core::fmt::Display::fmt(element, f), Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), Self::LastTimestamp(element) => ::core::fmt::Display::fmt(element, f), Self::Owner(element) => ::core::fmt::Display::fmt(element, f), Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f), - Self::SetTimestampCheckEnabled(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::SetTimestampCheckEnabled(element) => ::core::fmt::Display::fmt(element, f), Self::SubjectTemplates(element) => ::core::fmt::Display::fmt(element, f), - Self::TimestampCheckEnabled(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::TimestampCheckEnabled(element) => ::core::fmt::Display::fmt(element, f), Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - Self::UpdateDKIMRegistry(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::UpdateSubjectTemplate(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::UpdateDKIMRegistry(element) => ::core::fmt::Display::fmt(element, f), + Self::UpdateSubjectTemplate(element) => ::core::fmt::Display::fmt(element, f), Self::UpdateVerifier(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeTo(element) => ::core::fmt::Display::fmt(element, f), Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), Self::UsedNullifiers(element) => ::core::fmt::Display::fmt(element, f), Self::Verifier(element) => ::core::fmt::Display::fmt(element, f), @@ -2076,6 +2187,11 @@ pub mod email_auth { } } } + impl ::core::convert::From for EmailAuthCalls { + fn from(value: UpgradeInterfaceVersionCall) -> Self { + Self::UpgradeInterfaceVersion(value) + } + } impl ::core::convert::From for EmailAuthCalls { fn from(value: AccountSaltCall) -> Self { Self::AccountSalt(value) @@ -2186,11 +2302,6 @@ pub mod email_auth { Self::UpdateVerifier(value) } } - impl ::core::convert::From for EmailAuthCalls { - fn from(value: UpgradeToCall) -> Self { - Self::UpgradeTo(value) - } - } impl ::core::convert::From for EmailAuthCalls { fn from(value: UpgradeToAndCallCall) -> Self { Self::UpgradeToAndCall(value) @@ -2211,6 +2322,18 @@ pub mod email_auth { Self::VerifierAddr(value) } } + ///Container type for all return fields from the `UPGRADE_INTERFACE_VERSION` function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct UpgradeInterfaceVersionReturn(pub ::std::string::String); ///Container type for all return fields from the `accountSalt` function with signature `accountSalt()` and selector `0x6c74921e` #[derive( Clone, @@ -2220,7 +2343,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct AccountSaltReturn(pub [u8; 32]); ///Container type for all return fields from the `authEmail` function with signature `authEmail((uint256,bytes[],uint256,(string,bytes32,uint256,string,bytes32,bytes32,bool,bytes)))` and selector `0xad3f5f9b` @@ -2232,7 +2355,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct AuthEmailReturn(pub [u8; 32]); ///Container type for all return fields from the `authedHash` function with signature `authedHash(bytes32)` and selector `0x805811ec` @@ -2244,7 +2367,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct AuthedHashReturn(pub [u8; 32]); ///Container type for all return fields from the `computeMsgHash` function with signature `computeMsgHash(bytes32,bool,uint256,bytes[])` and selector `0x2bde033d` @@ -2256,7 +2379,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct ComputeMsgHashReturn(pub [u8; 32]); ///Container type for all return fields from the `dkim` function with signature `dkim()` and selector `0x400ad5ce` @@ -2268,7 +2391,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct DkimReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `dkimRegistryAddr` function with signature `dkimRegistryAddr()` and selector `0x1bc01b83` @@ -2280,7 +2403,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct DkimRegistryAddrReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `getSubjectTemplate` function with signature `getSubjectTemplate(uint256)` and selector `0x1e05a028` @@ -2292,7 +2415,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct GetSubjectTemplateReturn(pub ::std::vec::Vec<::std::string::String>); ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` @@ -2304,7 +2427,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct IsValidSignatureReturn(pub [u8; 4]); ///Container type for all return fields from the `lastTimestamp` function with signature `lastTimestamp()` and selector `0x19d8ac61` @@ -2316,7 +2439,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct LastTimestampReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` @@ -2328,7 +2451,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct OwnerReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` @@ -2340,7 +2463,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct ProxiableUUIDReturn(pub [u8; 32]); ///Container type for all return fields from the `subjectTemplates` function with signature `subjectTemplates(uint256,uint256)` and selector `0x4bd07760` @@ -2352,7 +2475,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct SubjectTemplatesReturn(pub ::std::string::String); ///Container type for all return fields from the `timestampCheckEnabled` function with signature `timestampCheckEnabled()` and selector `0x3e56f529` @@ -2364,7 +2487,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct TimestampCheckEnabledReturn(pub bool); ///Container type for all return fields from the `usedNullifiers` function with signature `usedNullifiers(bytes32)` and selector `0x206137aa` @@ -2376,7 +2499,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct UsedNullifiersReturn(pub bool); ///Container type for all return fields from the `verifier` function with signature `verifier()` and selector `0x2b7ac3f3` @@ -2388,7 +2511,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct VerifierReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `verifierAddr` function with signature `verifierAddr()` and selector `0x663ea2e2` @@ -2400,7 +2523,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct VerifierAddrReturn(pub ::ethers::core::types::Address); ///`EmailAuthMsg(uint256,bytes[],uint256,(string,bytes32,uint256,string,bytes32,bytes32,bool,bytes))` @@ -2412,7 +2535,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct EmailAuthMsg { pub template_id: ::ethers::core::types::U256, @@ -2429,7 +2552,7 @@ pub mod email_auth { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct EmailProof { pub domain_name: ::std::string::String, diff --git a/packages/relayer/src/core.rs b/packages/relayer/src/core.rs index 054ba0a2..56972d42 100644 --- a/packages/relayer/src/core.rs +++ b/packages/relayer/src/core.rs @@ -28,14 +28,6 @@ pub async fn handle_email( trace!(LOG, "From address: {}", guardian_email_addr; "func" => function_name!()); let subject = parsed_email.get_subject_all()?; - let account_code_str = db - .get_invitation_code_from_email_addr(&guardian_email_addr) - .await? - .ok_or(anyhow!( - "The user of email address {} is not registered.", - guardian_email_addr - ))?; - let request_decomposed_def = serde_json::from_str(include_str!("./regex_json/request_def.json"))?; let request_idxes = extract_substr_idxes(&email, &request_decomposed_def)?; @@ -44,10 +36,10 @@ pub async fn handle_email( } info!(LOG, "Request idxes: {:?}", request_idxes; "func" => function_name!()); let request_id = &email[request_idxes[0].0..request_idxes[0].1]; - let request_id_u64 = request_id - .parse::() + let request_id_u32 = request_id + .parse::() .map_err(|e| anyhow!("Failed to parse request_id to u64: {}", e))?; - let request_record = db.get_request(request_id_u64).await?; + let request_record = db.get_request(request_id_u32).await?; if request_record.is_none() { return Ok(EmailAuthEvent::Error { email_addr: guardian_email_addr, @@ -55,6 +47,21 @@ pub async fn handle_email( }); } let request = request_record.unwrap(); + if request.guardian_email_addr != guardian_email_addr { + return Err(anyhow!( + "Guardian email address in the request {} is not equal to the one in the email {}", + request.guardian_email_addr, + guardian_email_addr + )); + } + let account_code_str = db + .get_account_code_from_wallet_and_email(&request.wallet_eth_addr, &guardian_email_addr) + .await? + .ok_or(anyhow!( + "The user of the wallet address {} and the email address {} is not registered.", + request.wallet_eth_addr, + guardian_email_addr + ))?; check_and_update_dkim( &email, &parsed_email, @@ -155,7 +162,7 @@ pub async fn handle_email( is_set: true, }; - db.update_credentials(&creds).await?; + db.update_credentials_of_account_code(&creds).await?; let updated_request = Request { wallet_eth_addr: request.wallet_eth_addr.clone(), @@ -176,7 +183,7 @@ pub async fn handle_email( Ok(EmailAuthEvent::AcceptanceSuccess { wallet_eth_addr: request.wallet_eth_addr, guardian_email_addr, - request_id: request_id_u64, + request_id: request_id_u32, }) } Ok(false) => { @@ -296,7 +303,7 @@ pub async fn handle_email( Ok(EmailAuthEvent::RecoverySuccess { wallet_eth_addr: request.wallet_eth_addr, guardian_email_addr, - request_id: request_id_u64, + request_id: request_id_u32, }) } Ok(false) => { @@ -418,7 +425,7 @@ pub async fn handle_email( Ok(EmailAuthEvent::RecoverySuccess { wallet_eth_addr: request.wallet_eth_addr, guardian_email_addr, - request_id: request_id_u64, + request_id: request_id_u32, }) } Ok(false) => { diff --git a/packages/relayer/src/database.rs b/packages/relayer/src/database.rs index d1663312..2cfdd816 100644 --- a/packages/relayer/src/database.rs +++ b/packages/relayer/src/database.rs @@ -12,7 +12,7 @@ pub struct Credentials { #[derive(Debug, Clone)] pub struct Request { - pub request_id: u64, + pub request_id: u32, pub wallet_eth_addr: String, pub guardian_email_addr: String, pub is_for_recovery: bool, @@ -96,12 +96,19 @@ impl Database { } } - pub(crate) async fn is_email_registered(&self, email_addr: &str) -> bool { - let row = sqlx::query("SELECT * FROM credentials WHERE guardian_email_addr = $1") - .bind(email_addr) - .fetch_optional(&self.db) - .await - .unwrap(); + pub(crate) async fn is_wallet_and_email_registered( + &self, + wallet_eth_addr: &str, + email_addr: &str, + ) -> bool { + let row = sqlx::query( + "SELECT * FROM credentials WHERE wallet_eth_addr = $1 AND guardian_email_addr = $2", + ) + .bind(wallet_eth_addr) + .bind(email_addr) + .fetch_optional(&self.db) + .await + .unwrap(); match row { Some(_) => true, @@ -109,7 +116,7 @@ impl Database { } } - pub(crate) async fn update_credentials(&self, row: &Credentials) -> Result<()> { + pub(crate) async fn update_credentials_of_account_code(&self, row: &Credentials) -> Result<()> { let res = sqlx::query("UPDATE credentials SET wallet_eth_addr = $1, guardian_email_addr = $2, is_set = $3 WHERE account_code = $4") .bind(&row.wallet_eth_addr) .bind(&row.guardian_email_addr) @@ -120,6 +127,20 @@ impl Database { Ok(()) } + pub(crate) async fn update_credentials_of_wallet_and_email( + &self, + row: &Credentials, + ) -> Result<()> { + let res = sqlx::query("UPDATE credentials SET account_code = $1, is_set = $2 WHERE wallet_eth_addr = $3, guardian_email_addr = $4") + .bind(&row.account_code) + .bind(row.is_set) + .bind(&row.wallet_eth_addr) + .bind(&row.guardian_email_addr) + .execute(&self.db) + .await?; + Ok(()) + } + #[named] pub(crate) async fn insert_credentials(&self, row: &Credentials) -> Result<()> { info!(LOG, "insert row {:?}", row; "func" => function_name!()); @@ -155,7 +176,7 @@ impl Database { } #[named] - pub(crate) async fn get_request(&self, request_id: u64) -> Result> { + pub(crate) async fn get_request(&self, request_id: u32) -> Result> { let row = sqlx::query("SELECT * FROM requests WHERE request_id = $1") .bind(request_id as i64) .fetch_optional(&self.db) @@ -173,7 +194,7 @@ impl Database { let email_nullifier: Option = row.get("email_nullifier"); let account_salt: Option = row.get("account_salt"); let requests_row = Request { - request_id: request_id as u64, + request_id: request_id as u32, wallet_eth_addr, guardian_email_addr, is_for_recovery, @@ -206,14 +227,18 @@ impl Database { Ok(()) } - pub(crate) async fn get_invitation_code_from_email_addr( + pub(crate) async fn get_account_code_from_wallet_and_email( &self, + wallet_eth_addr: &str, email_addr: &str, ) -> Result> { - let row = sqlx::query("SELECT * FROM credentials WHERE guardian_email_addr = $1") - .bind(email_addr) - .fetch_optional(&self.db) - .await?; + let row = sqlx::query( + "SELECT * FROM credentials WHERE wallet_eth_addr = $1 AND guardian_email_addr = $2", + ) + .bind(wallet_eth_addr) + .bind(email_addr) + .fetch_optional(&self.db) + .await?; match row { Some(row) => { diff --git a/packages/relayer/src/modules/email_client/mail.rs b/packages/relayer/src/modules/email_client/mail.rs index b0bafa50..07105525 100644 --- a/packages/relayer/src/modules/email_client/mail.rs +++ b/packages/relayer/src/modules/email_client/mail.rs @@ -1,7 +1,4 @@ -use crate::{ - error, render_html, EmailForwardSender, - EmailMessage, Future, Result, LOG, -}; +use crate::{error, render_html, EmailForwardSender, EmailMessage, Future, Result, LOG}; use std::pin::Pin; @@ -10,7 +7,7 @@ pub enum EmailAuthEvent { AcceptanceRequest { wallet_eth_addr: String, guardian_email_addr: String, - request_id: u64, + request_id: u32, subject: String, account_code: String, }, @@ -25,18 +22,18 @@ pub enum EmailAuthEvent { RecoveryRequest { wallet_eth_addr: String, guardian_email_addr: String, - request_id: u64, + request_id: u32, subject: String, }, AcceptanceSuccess { wallet_eth_addr: String, guardian_email_addr: String, - request_id: u64, + request_id: u32, }, RecoverySuccess { wallet_eth_addr: String, guardian_email_addr: String, - request_id: u64, + request_id: u32, }, GuardianNotSet { wallet_eth_addr: String, @@ -46,7 +43,7 @@ pub enum EmailAuthEvent { wallet_eth_addr: String, guardian_email_addr: String, subject: String, - request_id: u64, + request_id: u32, }, } diff --git a/packages/relayer/src/modules/web_server/rest_api.rs b/packages/relayer/src/modules/web_server/rest_api.rs index a2de5d83..64ca8cd2 100644 --- a/packages/relayer/src/modules/web_server/rest_api.rs +++ b/packages/relayer/src/modules/web_server/rest_api.rs @@ -9,7 +9,7 @@ use std::str; #[derive(Serialize, Deserialize)] pub struct RequestStatusRequest { - pub request_id: u64, + pub request_id: u32, } #[derive(Serialize, Deserialize)] @@ -21,7 +21,7 @@ pub enum RequestStatus { #[derive(Serialize, Deserialize)] pub struct RequestStatusResponse { - pub request_id: u64, + pub request_id: u32, pub status: RequestStatus, pub is_success: bool, pub email_nullifier: Option, @@ -39,7 +39,7 @@ pub struct AcceptanceRequest { #[derive(Serialize, Deserialize)] pub struct AcceptanceResponse { - pub request_id: u64, + pub request_id: u32, pub subject_params: Vec, } @@ -53,7 +53,7 @@ pub struct RecoveryRequest { #[derive(Serialize, Deserialize)] pub struct RecoveryResponse { - pub request_id: u64, + pub request_id: u32, pub subject_params: Vec, } @@ -62,6 +62,12 @@ pub struct CompleteRecoveryRequest { pub wallet_eth_addr: String, } +#[derive(Serialize, Deserialize)] +pub struct GetAccountSaltRequest { + pub account_code: String, + pub email_addr: String, +} + // Create request status API pub async fn request_status_api(payload: RequestStatusRequest) -> Result { let row = DB.get_request(payload.request_id).await?; @@ -123,9 +129,9 @@ pub async fn handle_acceptance_request( .unwrap(); } - let mut request_id = rand::thread_rng().gen::(); + let mut request_id = rand::thread_rng().gen::(); while let Ok(Some(request)) = db.get_request(request_id).await { - request_id = rand::thread_rng().gen::(); + request_id = rand::thread_rng().gen::(); } if db @@ -152,6 +158,44 @@ pub async fn handle_acceptance_request( guardian_email_addr: payload.guardian_email_addr.clone(), }) .expect("Failed to send GuardianAlreadyExists event"); + } else if db + .is_wallet_and_email_registered(&payload.wallet_eth_addr, &payload.guardian_email_addr) + .await + { + // In this case, the relayer sent a request email to the same guardian before, but it has not been replied yet. + // Therefore, the relayer will send an email to the guardian again with a fresh account code. + db.update_credentials_of_wallet_and_email(&Credentials { + account_code: payload.account_code.clone(), + wallet_eth_addr: payload.wallet_eth_addr.clone(), + guardian_email_addr: payload.guardian_email_addr.clone(), + is_set: false, + }) + .await + .expect("Failed to insert credentials"); + + db.insert_request(&Request { + request_id: request_id.clone(), + wallet_eth_addr: payload.wallet_eth_addr.clone(), + guardian_email_addr: payload.guardian_email_addr.clone(), + is_for_recovery: false, + template_idx: payload.template_idx, + is_processed: false, + is_success: None, + email_nullifier: None, + account_salt: None, + }) + .await + .expect("Failed to insert request"); + + tx_event_consumer + .send(EmailAuthEvent::AcceptanceRequest { + wallet_eth_addr: payload.wallet_eth_addr.clone(), + guardian_email_addr: payload.guardian_email_addr.clone(), + request_id, + subject: payload.subject.clone(), + account_code: payload.account_code.clone(), + }) + .expect("Failed to send Acceptance event"); } else { db.insert_credentials(&Credentials { account_code: payload.account_code.clone(), @@ -230,12 +274,15 @@ pub async fn handle_recovery_request( .unwrap(); } - let mut request_id = rand::thread_rng().gen::(); + let mut request_id = rand::thread_rng().gen::(); while let Ok(Some(request)) = db.get_request(request_id).await { - request_id = rand::thread_rng().gen::(); + request_id = rand::thread_rng().gen::(); } - if !db.is_email_registered(&payload.guardian_email_addr).await { + if !db + .is_wallet_and_email_registered(&payload.wallet_eth_addr, &payload.guardian_email_addr) + .await + { db.insert_request(&Request { request_id: request_id.clone(), wallet_eth_addr: payload.wallet_eth_addr.clone(), @@ -313,11 +360,11 @@ pub async fn handle_recovery_request( .expect("Failed to insert request"); tx_event_consumer - .send(EmailAuthEvent::RecoveryRequest { + .send(EmailAuthEvent::GuardianNotSet { wallet_eth_addr: payload.wallet_eth_addr.clone(), guardian_email_addr: payload.guardian_email_addr.clone(), - request_id, - subject: payload.subject.clone(), + // request_id, + // subject: payload.subject.clone(), }) .expect("Failed to send Recovery event"); } @@ -384,6 +431,18 @@ pub async fn handle_complete_recovery_request( } } +pub async fn get_account_salt(payload: GetAccountSaltRequest) -> Response { + let padded_email_addr = PaddedEmailAddr::from_email_addr(&payload.email_addr); + let account_code = + AccountCode::from(hex2field(&format!("0x{}", payload.account_code)).unwrap()); + let account_salt = AccountSalt::new(&padded_email_addr, account_code).unwrap(); + + Response::builder() + .status(StatusCode::OK) + .body(Body::from(field2hex(&account_salt.0))) + .unwrap() +} + fn parse_error_message(error_data: String) -> String { // Attempt to extract and decode the error message if let Some(hex_error) = error_data.split(" ").last() { diff --git a/packages/relayer/src/modules/web_server/server.rs b/packages/relayer/src/modules/web_server/server.rs index 8cd6ceb1..8ac451ce 100644 --- a/packages/relayer/src/modules/web_server/server.rs +++ b/packages/relayer/src/modules/web_server/server.rs @@ -28,7 +28,7 @@ pub async fn run_server( ) .route( "/api/requestStatus", - axum::routing::get(move |payload: String| async move { + axum::routing::post(move |payload: String| async move { let payload: Result = serde_json::from_str(&payload).map_err(|e| anyhow::Error::from(e)); match payload { @@ -153,6 +153,28 @@ pub async fn run_server( } } }), + ) + .route( + "/api/getAccountSalt", + axum::routing::post(move |payload: String| async move { + let payload: Result = + serde_json::from_str(&payload).map_err(|e| anyhow::Error::from(e)); + match payload { + Ok(payload) => { + let response = get_account_salt(payload).await; + Ok::<_, axum::response::Response>(response) + } + Err(e) => { + let error_message = serde_json::to_string(&e.to_string()) + .map_err(|_| axum::http::StatusCode::INTERNAL_SERVER_ERROR) + .unwrap(); + Ok(axum::http::Response::builder() + .status(axum::http::StatusCode::INTERNAL_SERVER_ERROR) + .body(serde_json::to_string(&e.to_string()).unwrap().into()) + .unwrap()) + } + } + }), ); app = app.layer(