{
  "_format": "hh-sol-artifact-1",
  "contractName": "RelayActor",
  "sourceName": "contracts/test/invariants/CrossDomainMessenger.t.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract OptimismPortal",
          "name": "_op",
          "type": "address"
        },
        {
          "internalType": "contract L1CrossDomainMessenger",
          "name": "_xdm",
          "type": "address"
        },
        {
          "internalType": "contract Vm",
          "name": "_vm",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_doFail",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "hashes",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "numHashes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_version",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "_mntValue",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "_ethValue",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        }
      ],
      "name": "relay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reverted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002805460ff1916905534801561001a57600080fd5b50604051611232380380611232833981016040819052610039916100b3565b60028054610100600160a81b0319166101006001600160a01b0396871602179055600380546001600160a01b0319169385169390931790925560048054919093166001600160a81b031990911617600160a01b91151591909102179055610117565b6001600160a01b03811681146100b057600080fd5b50565b600080600080608085870312156100c957600080fd5b84516100d48161009b565b60208601519094506100e58161009b565b60408601519093506100f68161009b565b6060860151909250801515811461010c57600080fd5b939692955090935050565b61110c806101266000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063348a71cb14610051578063501895ae1461006d57806355e8e28b14610080578063bc0af82a14610095575b600080fd5b61005a60005481565b6040519081526020015b60405180910390f35b61005a61007b366004610c12565b6100b2565b61009361008e366004610c70565b6100d3565b005b6002546100a29060ff1681565b6040519015158152602001610064565b600181815481106100c257600080fd5b600091825260209091200154905081565b8051600490734200000000000000000000000000000000000007906000906020906100ff90601f610da0565b6101099190610de7565b610114906003610dfb565b61011f90600f610da0565b6004546002546040805173ffffffffffffffffffffffffffffffffffffffff8781166020830152949550928416936370ca10bb9361010090930416916032910160405160208183030381529060405261017790610e38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091526044820152606401600060405180830381600087803b1580156101ea57600080fd5b505af11580156101fe573d6000803e3d6000fd5b5050505060028761020f9190610e7d565b965061021c600286610e7d565b60045490955060009074010000000000000000000000000000000000000000900460ff166102ec576003546040517fb28ade2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b28ade259061029c9088908690600401610f19565b602060405180830381865afa1580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd9190610f41565b67ffffffffffffffff16610302565b6103028263ffffffff1661ea60620138806107ba565b905060006103467eff00000000000000000000000000000000000000000000000000000000000060f08b901b1685878b60ff168b60ff168863ffffffff168c61080f565b60018054808201825560008281527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690910183905580549293509091819061038f908490610da0565b9091555050600480546003546040517fb1b1b20900000000000000000000000000000000000000000000000000000000815292830184905273ffffffffffffffffffffffffffffffffffffffff91821692634c63e562929091169063b1b1b20990602401602060405180830381865afa158015610410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104349190610f6b565b1580156104d157506003546040517fa4e7f8bd0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff9091169063a4e7f8bd90602401602060405180830381865afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cf9190610f6b565b155b6040518263ffffffff1660e01b81526004016104f1911515815260200190565b60006040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b5050600480546002546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6101009092048216938101939093521692506306447d569150602401600060405180830381600087803b15801561059757600080fd5b505af11580156105ab573d6000803e3d6000fd5b505060045474010000000000000000000000000000000000000000900460ff169150610661905057600480546040517f08e4e11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916308e4e1169161062e91908b9088908c908401610f8d565b600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b505050505b60035473ffffffffffffffffffffffffffffffffffffffff1663ff8daf158360ff8a167eff00000000000000000000000000000000000000000000000000000000000060f08e901b16888a8e8e8b8f6040518a63ffffffff1660e01b81526004016106d29796959493929190610fdb565b6000604051808303818589803b1580156106eb57600080fd5b5088f194505050505080156106fe575060015b61072e57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b60048054604080517f90c5013b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926390c5013b92828201926000929082900301818387803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b50505050505050505050505050565b60006107c7848484610834565b90506108086040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082610a70565b9392505050565b600061082088888888888888610b70565b805190602001209050979650505050505050565b6000818311156108ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156108da5750818411155b156108e6575082610808565b60006108f28484611045565b6108fd906001610da0565b90506003851115801561090f57508481115b156109265761091e8585610da0565b915050610808565b61095160037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611045565b85101580156109885750610985857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611045565b81115b156109c1576109b7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611045565b61091e9084611045565b82851115610a175760006109d58487611045565b905060006109e3838361105c565b9050806000036109f857849350505050610808565b6001610a048288610da0565b610a0e9190611045565b93505050610a68565b83851015610a68576000610a2b8686611045565b90506000610a39838361105c565b905080600003610a4e57859350505050610808565b610a588186611045565b610a63906001610da0565b935050505b509392505050565b60006a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff168383604051602401610aa7929190611070565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc0000000000000000000000000000000000000000000000000000000017905251610b289190611092565b600060405180830381855afa9150503d8060008114610b63576040519150601f19603f3d011682016040523d82523d6000602084013e610b68565b606091505b505050505050565b606087878787878787604051602401610b8f97969594939291906110ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fff8daf15000000000000000000000000000000000000000000000000000000001790529050979650505050505050565b600060208284031215610c2457600080fd5b5035919050565b803560ff81168114610c3c57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215610c8657600080fd5b610c8f85610c2b565b9350610c9d60208601610c2b565b9250610cab60408601610c2b565b9150606085013567ffffffffffffffff80821115610cc857600080fd5b818701915087601f830112610cdc57600080fd5b813581811115610cee57610cee610c41565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d3457610d34610c41565b816040528281528a6020848701011115610d4d57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610db357610db3610d71565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610df657610df6610db8565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e3357610e33610d71565b500290565b80516020808301519190811015610e77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b600060ff831680610e9057610e90610db8565b8060ff84160691505092915050565b60005b83811015610eba578181015183820152602001610ea2565b83811115610ec9576000848401525b50505050565b60008151808452610ee7816020860160208601610e9f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000610f2c6040830185610ecf565b905063ffffffff831660208301529392505050565b600060208284031215610f5357600080fd5b815167ffffffffffffffff8116811461080857600080fd5b600060208284031215610f7d57600080fd5b8151801515811461080857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8516815260ff8416602082015263ffffffff83166040820152608060608201526000610fd16080830184610ecf565b9695505050505050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060ff8616606083015260ff8516608083015263ffffffff841660a083015260e060c083015261103860e0830184610ecf565b9998505050505050505050565b60008282101561105757611057610d71565b500390565b60008261106b5761106b610db8565b500690565b6040815260006110836040830185610ecf565b90508260208301529392505050565b600082516110a4818460208701610e9f565b9190910192915050565b878152600073ffffffffffffffffffffffffffffffffffffffff80891660208401528088166040840152508560608301528460808301528360a083015260e060c083015261103860e0830184610ecf56fea164736f6c634300080f000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063348a71cb14610051578063501895ae1461006d57806355e8e28b14610080578063bc0af82a14610095575b600080fd5b61005a60005481565b6040519081526020015b60405180910390f35b61005a61007b366004610c12565b6100b2565b61009361008e366004610c70565b6100d3565b005b6002546100a29060ff1681565b6040519015158152602001610064565b600181815481106100c257600080fd5b600091825260209091200154905081565b8051600490734200000000000000000000000000000000000007906000906020906100ff90601f610da0565b6101099190610de7565b610114906003610dfb565b61011f90600f610da0565b6004546002546040805173ffffffffffffffffffffffffffffffffffffffff8781166020830152949550928416936370ca10bb9361010090930416916032910160405160208183030381529060405261017790610e38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091526044820152606401600060405180830381600087803b1580156101ea57600080fd5b505af11580156101fe573d6000803e3d6000fd5b5050505060028761020f9190610e7d565b965061021c600286610e7d565b60045490955060009074010000000000000000000000000000000000000000900460ff166102ec576003546040517fb28ade2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b28ade259061029c9088908690600401610f19565b602060405180830381865afa1580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd9190610f41565b67ffffffffffffffff16610302565b6103028263ffffffff1661ea60620138806107ba565b905060006103467eff00000000000000000000000000000000000000000000000000000000000060f08b901b1685878b60ff168b60ff168863ffffffff168c61080f565b60018054808201825560008281527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690910183905580549293509091819061038f908490610da0565b9091555050600480546003546040517fb1b1b20900000000000000000000000000000000000000000000000000000000815292830184905273ffffffffffffffffffffffffffffffffffffffff91821692634c63e562929091169063b1b1b20990602401602060405180830381865afa158015610410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104349190610f6b565b1580156104d157506003546040517fa4e7f8bd0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff9091169063a4e7f8bd90602401602060405180830381865afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cf9190610f6b565b155b6040518263ffffffff1660e01b81526004016104f1911515815260200190565b60006040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b5050600480546002546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6101009092048216938101939093521692506306447d569150602401600060405180830381600087803b15801561059757600080fd5b505af11580156105ab573d6000803e3d6000fd5b505060045474010000000000000000000000000000000000000000900460ff169150610661905057600480546040517f08e4e11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916308e4e1169161062e91908b9088908c908401610f8d565b600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b505050505b60035473ffffffffffffffffffffffffffffffffffffffff1663ff8daf158360ff8a167eff00000000000000000000000000000000000000000000000000000000000060f08e901b16888a8e8e8b8f6040518a63ffffffff1660e01b81526004016106d29796959493929190610fdb565b6000604051808303818589803b1580156106eb57600080fd5b5088f194505050505080156106fe575060015b61072e57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b60048054604080517f90c5013b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926390c5013b92828201926000929082900301818387803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b50505050505050505050505050565b60006107c7848484610834565b90506108086040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082610a70565b9392505050565b600061082088888888888888610b70565b805190602001209050979650505050505050565b6000818311156108ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156108da5750818411155b156108e6575082610808565b60006108f28484611045565b6108fd906001610da0565b90506003851115801561090f57508481115b156109265761091e8585610da0565b915050610808565b61095160037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611045565b85101580156109885750610985857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611045565b81115b156109c1576109b7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611045565b61091e9084611045565b82851115610a175760006109d58487611045565b905060006109e3838361105c565b9050806000036109f857849350505050610808565b6001610a048288610da0565b610a0e9190611045565b93505050610a68565b83851015610a68576000610a2b8686611045565b90506000610a39838361105c565b905080600003610a4e57859350505050610808565b610a588186611045565b610a63906001610da0565b935050505b509392505050565b60006a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff168383604051602401610aa7929190611070565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc0000000000000000000000000000000000000000000000000000000017905251610b289190611092565b600060405180830381855afa9150503d8060008114610b63576040519150601f19603f3d011682016040523d82523d6000602084013e610b68565b606091505b505050505050565b606087878787878787604051602401610b8f97969594939291906110ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fff8daf15000000000000000000000000000000000000000000000000000000001790529050979650505050505050565b600060208284031215610c2457600080fd5b5035919050565b803560ff81168114610c3c57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215610c8657600080fd5b610c8f85610c2b565b9350610c9d60208601610c2b565b9250610cab60408601610c2b565b9150606085013567ffffffffffffffff80821115610cc857600080fd5b818701915087601f830112610cdc57600080fd5b813581811115610cee57610cee610c41565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d3457610d34610c41565b816040528281528a6020848701011115610d4d57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610db357610db3610d71565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610df657610df6610db8565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e3357610e33610d71565b500290565b80516020808301519190811015610e77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b600060ff831680610e9057610e90610db8565b8060ff84160691505092915050565b60005b83811015610eba578181015183820152602001610ea2565b83811115610ec9576000848401525b50505050565b60008151808452610ee7816020860160208601610e9f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000610f2c6040830185610ecf565b905063ffffffff831660208301529392505050565b600060208284031215610f5357600080fd5b815167ffffffffffffffff8116811461080857600080fd5b600060208284031215610f7d57600080fd5b8151801515811461080857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8516815260ff8416602082015263ffffffff83166040820152608060608201526000610fd16080830184610ecf565b9695505050505050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060ff8616606083015260ff8516608083015263ffffffff841660a083015260e060c083015261103860e0830184610ecf565b9998505050505050505050565b60008282101561105757611057610d71565b500390565b60008261106b5761106b610db8565b500690565b6040815260006110836040830185610ecf565b90508260208301529392505050565b600082516110a4818460208701610e9f565b9190910192915050565b878152600073ffffffffffffffffffffffffffffffffffffffff80891660208401528088166040840152508560608301528460808301528360a083015260e060c083015261103860e0830184610ecf56fea164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
