{
  "_format": "hh-sol-artifact-1",
  "contractName": "Test4337ModuleAndHandler",
  "sourceName": "contracts/test/Test4337ModuleAndHandler.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "entryPointAddress",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ENTRYPOINT",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MY_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "enableMyself",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "execTransaction",
      "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": "uint256",
              "name": "callGasLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "verificationGasLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "preVerificationGas",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxFeePerGas",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxPriorityFeePerGas",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "paymasterAndData",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "signature",
              "type": "bytes"
            }
          ],
          "internalType": "struct UserOperation",
          "name": "userOp",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "missingAccountFunds",
          "type": "uint256"
        }
      ],
      "name": "validateUserOp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "validationData",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b506040516109d93803806109d9833981810160405281019061003291906100bb565b8073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250503073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505061012d565b6000815190506100b581610116565b92915050565b6000602082840312156100cd57600080fd5b60006100db848285016100a6565b91505092915050565b60006100ef826100f6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b61011f816100e4565b811461012a57600080fd5b50565b60805160601c60a05160601c6108796101606000398061017c5280610391525080610117528061023b52506108796000f3fe60806040526004361061004a5760003560e01c80633a756cec1461004f5780633a871cdd1461007a578063a798b2b1146100b7578063ab4ed83e146100ce578063e8eb3cc6146100ea575b600080fd5b34801561005b57600080fd5b50610064610115565b6040516100719190610646565b60405180910390f35b34801561008657600080fd5b506100a1600480360381019061009c919061052b565b610139565b6040516100ae9190610719565b60405180910390f35b3480156100c357600080fd5b506100cc61021d565b005b6100e860048036038101906100e39190610496565b6102aa565b005b3480156100f657600080fd5b506100ff61038f565b60405161010c9190610646565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60008084600001602081019061014f919061046d565b9050600081905060008414610210578073ffffffffffffffffffffffffffffffffffffffff1663468721a77f00000000000000000000000000000000000000000000000000000000000000008660006040518463ffffffff1660e01b81526004016101bc939291906106af565b602060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e9190610502565b505b6000925050509392505050565b3073ffffffffffffffffffffffffffffffffffffffff1663610b59257f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102769190610646565b600060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b50505050565b600033905060008190508073ffffffffffffffffffffffffffffffffffffffff1663468721a78787878760006040518663ffffffff1660e01b81526004016102f6959493929190610661565b602060405180830381600087803b15801561031057600080fd5b505af1158015610324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103489190610502565b610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037e906106f9565b60405180910390fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000813590506103c2816107e7565b92915050565b6000815190506103d7816107fe565b92915050565b6000813590506103ec81610815565b92915050565b60008083601f84011261040457600080fd5b8235905067ffffffffffffffff81111561041d57600080fd5b60208301915083600182028301111561043557600080fd5b9250929050565b6000610160828403121561044f57600080fd5b81905092915050565b6000813590506104678161082c565b92915050565b60006020828403121561047f57600080fd5b600061048d848285016103b3565b91505092915050565b600080600080606085870312156104ac57600080fd5b60006104ba878288016103b3565b94505060206104cb87828801610458565b935050604085013567ffffffffffffffff8111156104e857600080fd5b6104f4878288016103f2565b925092505092959194509250565b60006020828403121561051457600080fd5b6000610522848285016103c8565b91505092915050565b60008060006060848603121561054057600080fd5b600084013567ffffffffffffffff81111561055a57600080fd5b6105668682870161043c565b9350506020610577868287016103dd565b925050604061058886828701610458565b9150509250925092565b61059b81610756565b82525050565b60006105ad8385610734565b93506105ba8385846107c7565b6105c3836107d6565b840190509392505050565b6105d7816107b5565b82525050565b60006105ea600983610745565b91507f7478206661696c656400000000000000000000000000000000000000000000006000830152602082019050919050565b600061062a600083610734565b9150600082019050919050565b6106408161079e565b82525050565b600060208201905061065b6000830184610592565b92915050565b60006080820190506106766000830188610592565b6106836020830187610637565b81810360408301526106968185876105a1565b90506106a560608301846105ce565b9695505050505050565b60006080820190506106c46000830186610592565b6106d16020830185610637565b81810360408301526106e28161061d565b90506106f160608301846105ce565b949350505050565b60006020820190508181036000830152610712816105dd565b9050919050565b600060208201905061072e6000830184610637565b92915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107618261077e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006107c0826107a8565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6107f081610756565b81146107fb57600080fd5b50565b61080781610768565b811461081257600080fd5b50565b61081e81610774565b811461082957600080fd5b50565b6108358161079e565b811461084057600080fd5b5056fea2646970667358221220060335c4dd303a70e25315c3d37bfa6e78c74996854b5d49b14f44e2f4acf1b264736f6c63430007060033",
  "deployedBytecode": "0x60806040526004361061004a5760003560e01c80633a756cec1461004f5780633a871cdd1461007a578063a798b2b1146100b7578063ab4ed83e146100ce578063e8eb3cc6146100ea575b600080fd5b34801561005b57600080fd5b50610064610115565b6040516100719190610646565b60405180910390f35b34801561008657600080fd5b506100a1600480360381019061009c919061052b565b610139565b6040516100ae9190610719565b60405180910390f35b3480156100c357600080fd5b506100cc61021d565b005b6100e860048036038101906100e39190610496565b6102aa565b005b3480156100f657600080fd5b506100ff61038f565b60405161010c9190610646565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60008084600001602081019061014f919061046d565b9050600081905060008414610210578073ffffffffffffffffffffffffffffffffffffffff1663468721a77f00000000000000000000000000000000000000000000000000000000000000008660006040518463ffffffff1660e01b81526004016101bc939291906106af565b602060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e9190610502565b505b6000925050509392505050565b3073ffffffffffffffffffffffffffffffffffffffff1663610b59257f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102769190610646565b600060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b50505050565b600033905060008190508073ffffffffffffffffffffffffffffffffffffffff1663468721a78787878760006040518663ffffffff1660e01b81526004016102f6959493929190610661565b602060405180830381600087803b15801561031057600080fd5b505af1158015610324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103489190610502565b610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037e906106f9565b60405180910390fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000813590506103c2816107e7565b92915050565b6000815190506103d7816107fe565b92915050565b6000813590506103ec81610815565b92915050565b60008083601f84011261040457600080fd5b8235905067ffffffffffffffff81111561041d57600080fd5b60208301915083600182028301111561043557600080fd5b9250929050565b6000610160828403121561044f57600080fd5b81905092915050565b6000813590506104678161082c565b92915050565b60006020828403121561047f57600080fd5b600061048d848285016103b3565b91505092915050565b600080600080606085870312156104ac57600080fd5b60006104ba878288016103b3565b94505060206104cb87828801610458565b935050604085013567ffffffffffffffff8111156104e857600080fd5b6104f4878288016103f2565b925092505092959194509250565b60006020828403121561051457600080fd5b6000610522848285016103c8565b91505092915050565b60008060006060848603121561054057600080fd5b600084013567ffffffffffffffff81111561055a57600080fd5b6105668682870161043c565b9350506020610577868287016103dd565b925050604061058886828701610458565b9150509250925092565b61059b81610756565b82525050565b60006105ad8385610734565b93506105ba8385846107c7565b6105c3836107d6565b840190509392505050565b6105d7816107b5565b82525050565b60006105ea600983610745565b91507f7478206661696c656400000000000000000000000000000000000000000000006000830152602082019050919050565b600061062a600083610734565b9150600082019050919050565b6106408161079e565b82525050565b600060208201905061065b6000830184610592565b92915050565b60006080820190506106766000830188610592565b6106836020830187610637565b81810360408301526106968185876105a1565b90506106a560608301846105ce565b9695505050505050565b60006080820190506106c46000830186610592565b6106d16020830185610637565b81810360408301526106e28161061d565b90506106f160608301846105ce565b949350505050565b60006020820190508181036000830152610712816105dd565b9050919050565b600060208201905061072e6000830184610637565b92915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107618261077e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006107c0826107a8565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6107f081610756565b81146107fb57600080fd5b50565b61080781610768565b811461081257600080fd5b50565b61081e81610774565b811461082957600080fd5b50565b6108358161079e565b811461084057600080fd5b5056fea2646970667358221220060335c4dd303a70e25315c3d37bfa6e78c74996854b5d49b14f44e2f4acf1b264736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
