@ensuro/account-abstraction
Version:
ERC-4337 related contracts by the Ensuro Team
633 lines • 36.2 kB
JSON
{
"_format": "hh3-artifact-1",
"contractName": "ERC2771ForwarderAccount",
"sourceName": "contracts/ERC2771ForwarderAccount.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IEntryPoint",
"name": "anEntryPoint",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [],
"name": "ECDSAInvalidSignature",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "ECDSAInvalidSignatureLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "ECDSAInvalidSignatureS",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "error",
"type": "bytes"
}
],
"name": "ExecuteError",
"type": "error"
},
{
"inputs": [],
"name": "FailedCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "InsufficientBalance",
"type": "error"
},
{
"inputs": [],
"name": "InvalidCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "contract ERC2771Context",
"name": "target",
"type": "address"
},
{
"internalType": "address",
"name": "signer",
"type": "address"
}
],
"name": "InvalidTarget",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "selector",
"type": "bytes4"
}
],
"name": "MethodNotSupported",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RequiredEntryPointOrExecutor",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "executor",
"type": "address"
},
{
"indexed": true,
"internalType": "contract ERC2771Context",
"name": "target",
"type": "address"
}
],
"name": "ExecutorAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"name": "ExecutorRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "addDeposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "executor",
"type": "address"
},
{
"internalType": "contract ERC2771Context",
"name": "target",
"type": "address"
}
],
"name": "addExecutor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "entryPoint",
"outputs": [
{
"internalType": "contract IEntryPoint",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "func",
"type": "bytes"
}
],
"name": "erc2771Forward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "execute",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"internalType": "struct BaseAccount.Call[]",
"name": "",
"type": "tuple[]"
}
],
"name": "executeBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "initCode",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "callData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "accountGasLimits",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "preVerificationGas",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "gasFees",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "paymasterAndData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"internalType": "struct PackedUserOperation",
"name": "userOp",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "userOpHash",
"type": "bytes32"
}
],
"name": "executeUserOp",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"name": "removeExecutor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "initCode",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "callData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "accountGasLimits",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "preVerificationGas",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "gasFees",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "paymasterAndData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"internalType": "struct PackedUserOperation",
"name": "userOp",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "userOpHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "missingAccountFunds",
"type": "uint256"
}
],
"name": "validateUserOp",
"outputs": [
{
"internalType": "uint256",
"name": "validationData",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "withdrawAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdrawDepositTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60c060405230608052348015610013575f5ffd5b5060405161166d38038061166d83398101604081905261003291610043565b6001600160a01b031660a052610070565b5f60208284031215610053575f5ffd5b81516001600160a01b0381168114610069575f5ffd5b9392505050565b60805160a0516115ab6100c25f395f818161027b0152818161039901528181610415015281816105ea0152818161067f01526106b901525f81816107c8015281816107f1015261092d01526115ab5ff3fe6080604052600436106100f2575f3560e01c80638129fc1c11610087578063b0d691fe11610057578063b0d691fe14610262578063b61d27f6146102a5578063c399ec88146102bf578063d087d288146102d3575f5ffd5b80638129fc1c146101dc57806381a30acd146101e75780638dd7712f14610206578063ad3cb1cc14610225575f5ffd5b80634d44560d116100c25780634d44560d146101775780634f1ef2861461019657806352d1902d146101a95780636267e759146101bd575f5ffd5b806319822f7c146100fd578063247884291461012f57806334fcd5be146101505780634a58db191461016f575f5ffd5b366100f957005b5f5ffd5b348015610108575f5ffd5b5061011c610117366004611014565b6102e7565b6040519081526020015b60405180910390f35b34801561013a575f5ffd5b5061014e610149366004611072565b61030c565b005b34801561015b575f5ffd5b5061014e61016a36600461108d565b61037e565b61014e610397565b348015610182575f5ffd5b5061014e6101913660046110fe565b610413565b61014e6101a43660046111c7565b610497565b3480156101b4575f5ffd5b5061011c6104ad565b3480156101c8575f5ffd5b5061014e6101d7366004611214565b6104c8565b34801561014e575f5ffd5b3480156101f2575f5ffd5b5061014e610201366004611290565b610545565b348015610211575f5ffd5b5061014e6102203660046112fe565b61057b565b348015610230575f5ffd5b50610255604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101269190611340565b34801561026d575f5ffd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610126565b3480156102b0575f5ffd5b5061014e61016a366004611375565b3480156102ca575f5ffd5b5061011c6105cb565b3480156102de575f5ffd5b5061011c610659565b5f6102f06106ae565b6102fa848461072b565b905061030582610778565b9392505050565b6001600160a01b0381165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b0319169055519092917f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d91a25050565b60405163574b16a760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b1580156103fa575f5ffd5b505af115801561040c573d5f5f3e3d5ffd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b15801561047d575f5ffd5b505af115801561048f573d5f5f3e3d5ffd5b505050505050565b61049f6107bd565b6104a98282610861565b5050565b5f6104b6610922565b505f5160206115565f395f51905f5290565b6001600160a01b038281165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b031916958716958617905551909392917f8a39fc6d5142759acd84b3e96ccde9187266ecb0df56c8ff08bf2aedc7c93c4791a3505050565b565b61054d6106ae565b61048f84838388604051602001610566939291906113cd565b6040516020818303038152906040528561096b565b6105836106ae565b5f5f61058f8484610a37565b509150915061040c815f01518260400151846040516020016105b29291906113f3565b604051602081830303815290604052836020015161096b565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610630573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106549190611422565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610615565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105435760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064015b60405180910390fd5b5f5f5f6107388585610a37565b50915091505f6107488686610b88565b90506107588184845f0151610c09565b610768576001935050505061076f565b5f93505050505b92915050565b50565b8015610775576040515f90339083908381818185875af1925050503d805f811461040c576040519150601f19603f3d011682016040523d82523d5f602084013e61040c565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061084357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108375f5160206115565f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105435760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108bb575060408051601f3d908101601f191682019092526108b891810190611422565b60015b6108e357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610722565b5f5160206115565f395f51905f52811461091357604051632a87526960e21b815260048101829052602401610722565b61091d8383610c6a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105435760405163703e46dd60e11b815260040160405180910390fd5b6060814710156109975760405163cf47918160e01b815247600482015260248101839052604401610722565b5f6109a3858486610cbf565b90508080156109c457505f3d11806109c457505f856001600160a01b03163b115b156109d9576109d1610cd4565b915050610305565b8015610a0357604051639996b31560e01b81526001600160a01b0386166004820152602401610722565b3d15610a1657610a11610ced565b610a2f565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b60408051606080820183525f80835260208301819052928201525f6084610a616060870187611439565b90501015610a825760405163574b16a760e11b815260040160405180910390fd5b610a8f6060860186611439565b610a9d916004915f9161147c565b610aa6916114a3565b90506001600160e01b03198116638dd7712f60e01b14801590610ada57506001600160e01b031981166381a30acd60e01b14155b15610b045760405163c610096760e01b81526001600160e01b031982166004820152602401610722565b610b116060860186611439565b610b1f91600490829061147c565b810190610b2c91906114d9565b604086015260208501526001600160a01b0316808452909350610b81578151610b558686610b88565b60405163f252a21160e01b81526001600160a01b03928316600482015291166024820152604401610722565b9250925092565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120610c0181610bc8610100870187611439565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610cf892505050565b949350505050565b5f7f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006001600160a01b03858116908516148015610c6157506001600160a01b038581165f908152602083905260409020548116908416145b95945050505050565b610c7382610d20565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610cb75761091d8282610d83565b6104a9610e05565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f5f610d068686610e24565b925092509250610d168282610e6a565b5090949350505050565b806001600160a01b03163b5f03610d5557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610722565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610d908484610f22565b9050808015610db157505f3d1180610db157505f846001600160a01b03163b115b15610dc657610dbe610cd4565b91505061076f565b8015610df057604051639996b31560e01b81526001600160a01b0385166004820152602401610722565b3d15610a1657610dfe610ced565b5092915050565b34156105435760405163b398979f60e01b815260040160405180910390fd5b5f5f5f8351604103610e5b576020840151604085015160608601515f1a610e4d88828585610f35565b955095509550505050610b81565b505081515f9150600290610b81565b5f826003811115610e7d57610e7d611541565b03610e86575050565b6001826003811115610e9a57610e9a611541565b03610eb85760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ecc57610ecc611541565b03610eed5760405163fce698f760e01b815260048101829052602401610722565b6003826003811115610f0157610f01611541565b036104a9576040516335e2f38360e21b815260048101829052602401610722565b5f5f5f835160208501865af49392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f6e57505f91506003905082610ff3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610fbf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610fea57505f925060019150829050610ff3565b92505f91508190505b9450945094915050565b5f610120828403121561100e575f5ffd5b50919050565b5f5f5f60608486031215611026575f5ffd5b833567ffffffffffffffff81111561103c575f5ffd5b61104886828701610ffd565b9660208601359650604090950135949350505050565b6001600160a01b0381168114610775575f5ffd5b5f60208284031215611082575f5ffd5b81356103058161105e565b5f5f6020838503121561109e575f5ffd5b823567ffffffffffffffff8111156110b4575f5ffd5b8301601f810185136110c4575f5ffd5b803567ffffffffffffffff8111156110da575f5ffd5b8560208260051b84010111156110ee575f5ffd5b6020919091019590945092505050565b5f5f6040838503121561110f575f5ffd5b823561111a8161105e565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261114b575f5ffd5b813567ffffffffffffffff81111561116557611165611128565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561119457611194611128565b6040528181528382016020018510156111ab575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156111d8575f5ffd5b82356111e38161105e565b9150602083013567ffffffffffffffff8111156111fe575f5ffd5b61120a8582860161113c565b9150509250929050565b5f5f60408385031215611225575f5ffd5b82356112308161105e565b915060208301356112408161105e565b809150509250929050565b5f5f83601f84011261125b575f5ffd5b50813567ffffffffffffffff811115611272575f5ffd5b602083019150836020828501011115611289575f5ffd5b9250929050565b5f5f5f5f5f608086880312156112a4575f5ffd5b85356112af8161105e565b945060208601356112bf8161105e565b935060408601359250606086013567ffffffffffffffff8111156112e1575f5ffd5b6112ed8882890161124b565b969995985093965092949392505050565b5f5f6040838503121561130f575f5ffd5b823567ffffffffffffffff811115611325575f5ffd5b61133185828601610ffd565b95602094909401359450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f60608587031215611388575f5ffd5b84356113938161105e565b935060208501359250604085013567ffffffffffffffff8111156113b5575f5ffd5b6113c18782880161124b565b95989497509550505050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b5f83518060208601845e60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f60208284031215611432575f5ffd5b5051919050565b5f5f8335601e1984360301811261144e575f5ffd5b83018035915067ffffffffffffffff821115611468575f5ffd5b602001915036819003821315611289575f5ffd5b5f5f8585111561148a575f5ffd5b83861115611496575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610dfe576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f5f608085870312156114ec575f5ffd5b84356114f78161105e565b935060208501356115078161105e565b925060408501359150606085013567ffffffffffffffff811115611529575f5ffd5b6115358782880161113c565b91505092959194509250565b634e487b7160e01b5f52602160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220925fe411a74f721c53058a316afb80f3ef094898def53447db92437f185df9ba64736f6c634300081e0033",
"deployedBytecode": "0x6080604052600436106100f2575f3560e01c80638129fc1c11610087578063b0d691fe11610057578063b0d691fe14610262578063b61d27f6146102a5578063c399ec88146102bf578063d087d288146102d3575f5ffd5b80638129fc1c146101dc57806381a30acd146101e75780638dd7712f14610206578063ad3cb1cc14610225575f5ffd5b80634d44560d116100c25780634d44560d146101775780634f1ef2861461019657806352d1902d146101a95780636267e759146101bd575f5ffd5b806319822f7c146100fd578063247884291461012f57806334fcd5be146101505780634a58db191461016f575f5ffd5b366100f957005b5f5ffd5b348015610108575f5ffd5b5061011c610117366004611014565b6102e7565b6040519081526020015b60405180910390f35b34801561013a575f5ffd5b5061014e610149366004611072565b61030c565b005b34801561015b575f5ffd5b5061014e61016a36600461108d565b61037e565b61014e610397565b348015610182575f5ffd5b5061014e6101913660046110fe565b610413565b61014e6101a43660046111c7565b610497565b3480156101b4575f5ffd5b5061011c6104ad565b3480156101c8575f5ffd5b5061014e6101d7366004611214565b6104c8565b34801561014e575f5ffd5b3480156101f2575f5ffd5b5061014e610201366004611290565b610545565b348015610211575f5ffd5b5061014e6102203660046112fe565b61057b565b348015610230575f5ffd5b50610255604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101269190611340565b34801561026d575f5ffd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610126565b3480156102b0575f5ffd5b5061014e61016a366004611375565b3480156102ca575f5ffd5b5061011c6105cb565b3480156102de575f5ffd5b5061011c610659565b5f6102f06106ae565b6102fa848461072b565b905061030582610778565b9392505050565b6001600160a01b0381165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b0319169055519092917f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d91a25050565b60405163574b16a760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b1580156103fa575f5ffd5b505af115801561040c573d5f5f3e3d5ffd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b15801561047d575f5ffd5b505af115801561048f573d5f5f3e3d5ffd5b505050505050565b61049f6107bd565b6104a98282610861565b5050565b5f6104b6610922565b505f5160206115565f395f51905f5290565b6001600160a01b038281165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b031916958716958617905551909392917f8a39fc6d5142759acd84b3e96ccde9187266ecb0df56c8ff08bf2aedc7c93c4791a3505050565b565b61054d6106ae565b61048f84838388604051602001610566939291906113cd565b6040516020818303038152906040528561096b565b6105836106ae565b5f5f61058f8484610a37565b509150915061040c815f01518260400151846040516020016105b29291906113f3565b604051602081830303815290604052836020015161096b565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610630573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106549190611422565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610615565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105435760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064015b60405180910390fd5b5f5f5f6107388585610a37565b50915091505f6107488686610b88565b90506107588184845f0151610c09565b610768576001935050505061076f565b5f93505050505b92915050565b50565b8015610775576040515f90339083908381818185875af1925050503d805f811461040c576040519150601f19603f3d011682016040523d82523d5f602084013e61040c565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061084357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108375f5160206115565f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105435760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108bb575060408051601f3d908101601f191682019092526108b891810190611422565b60015b6108e357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610722565b5f5160206115565f395f51905f52811461091357604051632a87526960e21b815260048101829052602401610722565b61091d8383610c6a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105435760405163703e46dd60e11b815260040160405180910390fd5b6060814710156109975760405163cf47918160e01b815247600482015260248101839052604401610722565b5f6109a3858486610cbf565b90508080156109c457505f3d11806109c457505f856001600160a01b03163b115b156109d9576109d1610cd4565b915050610305565b8015610a0357604051639996b31560e01b81526001600160a01b0386166004820152602401610722565b3d15610a1657610a11610ced565b610a2f565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b60408051606080820183525f80835260208301819052928201525f6084610a616060870187611439565b90501015610a825760405163574b16a760e11b815260040160405180910390fd5b610a8f6060860186611439565b610a9d916004915f9161147c565b610aa6916114a3565b90506001600160e01b03198116638dd7712f60e01b14801590610ada57506001600160e01b031981166381a30acd60e01b14155b15610b045760405163c610096760e01b81526001600160e01b031982166004820152602401610722565b610b116060860186611439565b610b1f91600490829061147c565b810190610b2c91906114d9565b604086015260208501526001600160a01b0316808452909350610b81578151610b558686610b88565b60405163f252a21160e01b81526001600160a01b03928316600482015291166024820152604401610722565b9250925092565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120610c0181610bc8610100870187611439565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610cf892505050565b949350505050565b5f7f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006001600160a01b03858116908516148015610c6157506001600160a01b038581165f908152602083905260409020548116908416145b95945050505050565b610c7382610d20565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610cb75761091d8282610d83565b6104a9610e05565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f5f610d068686610e24565b925092509250610d168282610e6a565b5090949350505050565b806001600160a01b03163b5f03610d5557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610722565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610d908484610f22565b9050808015610db157505f3d1180610db157505f846001600160a01b03163b115b15610dc657610dbe610cd4565b91505061076f565b8015610df057604051639996b31560e01b81526001600160a01b0385166004820152602401610722565b3d15610a1657610dfe610ced565b5092915050565b34156105435760405163b398979f60e01b815260040160405180910390fd5b5f5f5f8351604103610e5b576020840151604085015160608601515f1a610e4d88828585610f35565b955095509550505050610b81565b505081515f9150600290610b81565b5f826003811115610e7d57610e7d611541565b03610e86575050565b6001826003811115610e9a57610e9a611541565b03610eb85760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ecc57610ecc611541565b03610eed5760405163fce698f760e01b815260048101829052602401610722565b6003826003811115610f0157610f01611541565b036104a9576040516335e2f38360e21b815260048101829052602401610722565b5f5f5f835160208501865af49392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f6e57505f91506003905082610ff3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610fbf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610fea57505f925060019150829050610ff3565b92505f91508190505b9450945094915050565b5f610120828403121561100e575f5ffd5b50919050565b5f5f5f60608486031215611026575f5ffd5b833567ffffffffffffffff81111561103c575f5ffd5b61104886828701610ffd565b9660208601359650604090950135949350505050565b6001600160a01b0381168114610775575f5ffd5b5f60208284031215611082575f5ffd5b81356103058161105e565b5f5f6020838503121561109e575f5ffd5b823567ffffffffffffffff8111156110b4575f5ffd5b8301601f810185136110c4575f5ffd5b803567ffffffffffffffff8111156110da575f5ffd5b8560208260051b84010111156110ee575f5ffd5b6020919091019590945092505050565b5f5f6040838503121561110f575f5ffd5b823561111a8161105e565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261114b575f5ffd5b813567ffffffffffffffff81111561116557611165611128565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561119457611194611128565b6040528181528382016020018510156111ab575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156111d8575f5ffd5b82356111e38161105e565b9150602083013567ffffffffffffffff8111156111fe575f5ffd5b61120a8582860161113c565b9150509250929050565b5f5f60408385031215611225575f5ffd5b82356112308161105e565b915060208301356112408161105e565b809150509250929050565b5f5f83601f84011261125b575f5ffd5b50813567ffffffffffffffff811115611272575f5ffd5b602083019150836020828501011115611289575f5ffd5b9250929050565b5f5f5f5f5f608086880312156112a4575f5ffd5b85356112af8161105e565b945060208601356112bf8161105e565b935060408601359250606086013567ffffffffffffffff8111156112e1575f5ffd5b6112ed8882890161124b565b969995985093965092949392505050565b5f5f6040838503121561130f575f5ffd5b823567ffffffffffffffff811115611325575f5ffd5b61133185828601610ffd565b95602094909401359450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f60608587031215611388575f5ffd5b84356113938161105e565b935060208501359250604085013567ffffffffffffffff8111156113b5575f5ffd5b6113c18782880161124b565b95989497509550505050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b5f83518060208601845e60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f60208284031215611432575f5ffd5b5051919050565b5f5f8335601e1984360301811261144e575f5ffd5b83018035915067ffffffffffffffff821115611468575f5ffd5b602001915036819003821315611289575f5ffd5b5f5f8585111561148a575f5ffd5b83861115611496575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610dfe576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f5f608085870312156114ec575f5ffd5b84356114f78161105e565b935060208501356115078161105e565b925060408501359150606085013567ffffffffffffffff811115611529575f5ffd5b6115358782880161113c565b91505092959194509250565b634e487b7160e01b5f52602160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220925fe411a74f721c53058a316afb80f3ef094898def53447db92437f185df9ba64736f6c634300081e0033",
"linkReferences": {},
"deployedLinkReferences": {},
"immutableReferences": {
"4888": [
{
"length": 32,
"start": 1992
},
{
"length": 32,
"start": 2033
},
{
"length": 32,
"start": 2349
}
],
"14489": [
{
"length": 32,
"start": 635
},
{
"length": 32,
"start": 921
},
{
"length": 32,
"start": 1045
},
{
"length": 32,
"start": 1514
},
{
"length": 32,
"start": 1663
},
{
"length": 32,
"start": 1721
}
]
},
"inputSourceName": "project/contracts/ERC2771ForwarderAccount.sol",
"buildInfoId": "solc-0_8_30-ce7ccc34c8ce5a5834c5c7141e779845a204959a"
}