{ "abi": [{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "MESSENGER", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract CrossDomainMessenger" }], "stateMutability": "view" }, { "type": "function", "name": "OTHER_BRIDGE", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract StandardBridge" }], "stateMutability": "view" }, { "type": "function", "name": "bridgeERC721", "inputs": [{ "name": "_localToken", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_tokenId", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "bridgeERC721To", "inputs": [{ "name": "_localToken", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_tokenId", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "deposits", "inputs": [{ "name": "", "type": "address", "internalType": "address" }, { "name": "", "type": "address", "internalType": "address" }, { "name": "", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "finalizeBridgeERC721", "inputs": [{ "name": "_localToken", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_from", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_tokenId", "type": "uint256", "internalType": "uint256" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "initialize", "inputs": [{ "name": "_messenger", "type": "address", "internalType": "contract CrossDomainMessenger" }, { "name": "_superchainConfig", "type": "address", "internalType": "contract SuperchainConfig" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "messenger", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract CrossDomainMessenger" }], "stateMutability": "view" }, { "type": "function", "name": "otherBridge", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract StandardBridge" }], "stateMutability": "view" }, { "type": "function", "name": "paused", "inputs": [], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "superchainConfig", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract SuperchainConfig" }], "stateMutability": "view" }, { "type": "function", "name": "version", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "event", "name": "ERC721BridgeFinalized", "inputs": [{ "name": "localToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "remoteToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": false, "internalType": "address" }, { "name": "tokenId", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" }], "anonymous": false }, { "type": "event", "name": "ERC721BridgeInitiated", "inputs": [{ "name": "localToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "remoteToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": false, "internalType": "address" }, { "name": "tokenId", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" }], "anonymous": false }, { "type": "event", "name": "Initialized", "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], "anonymous": false }], "bytecode": { "object": "0x60806040523480156200001157600080fd5b506200001f60008062000025565b62000234565b600054610100900460ff1615808015620000465750600054600160ff909116105b8062000076575062000063306200018a60201b62000b141760201c565b15801562000076575060005460ff166001145b620000df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000103576000805461ff0019166101001790555b603280546001600160a01b0319166001600160a01b0384161790556200013e8373420000000000000000000000000000000000001462000199565b801562000185576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002065760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d6565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6113e980620002446000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80635d93a3fc11610081578063927ede2d1161005b578063927ede2d14610231578063aa5574521461024f578063c89701a21461026257600080fd5b80635d93a3fc146101cc578063761f4493146102005780637f46ddb21461021357600080fd5b8063485cc955116100b2578063485cc9551461015857806354fd4d501461016b5780635c975abb146101b457600080fd5b806335e80ab3146100d95780633687011a146101235780633cb747bf14610138575b600080fd5b6032546100f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610136610131366004610fe1565b610282565b005b6001546100f99073ffffffffffffffffffffffffffffffffffffffff1681565b610136610166366004611064565b61032e565b6101a76040518060400160405280600581526020017f322e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161011a9190611108565b6101bc610518565b604051901515815260200161011a565b6101bc6101da366004611122565b603160209081526000938452604080852082529284528284209052825290205460ff1681565b61013661020e366004611163565b6105b1565b60025473ffffffffffffffffffffffffffffffffffffffff166100f9565b60015473ffffffffffffffffffffffffffffffffffffffff166100f9565b61013661025d3660046111fb565b610a58565b6002546100f99073ffffffffffffffffffffffffffffffffffffffff1681565b333b15610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103268686333388888888610b30565b505050505050565b600054610100900460ff161580801561034e5750600054600160ff909116105b806103685750303b158015610368575060005460ff166001145b6103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161030d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790556104b083734200000000000000000000000000000000000014610e70565b801561051357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b603254604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac9190611272565b905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331480156106865750600254600154604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190611294565b73ffffffffffffffffffffffffffffffffffffffff16145b610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f746865722062726964676500606482015260840161030d565b61071a610518565b15610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c314552433732314272696467653a2070617573656400000000000000000000604482015260640161030d565b3073ffffffffffffffffffffffffffffffffffffffff881603610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c314552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c6600000000000000000000000000000000000000000000606482015260840161030d565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152603160209081526040808320938a1683529281528282208683529052205460ff1615156001146108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4c314552433732314272696467653a20546f6b656e204944206973206e6f742060448201527f657363726f77656420696e20746865204c312042726964676500000000000000606482015260840161030d565b73ffffffffffffffffffffffffffffffffffffffff87811660008181526031602090815260408083208b8616845282528083208884529091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152918616602483015260448201859052906342842e0e90606401600060405180830381600087803b1580156109b557600080fd5b505af11580156109c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac87878787604051610a4794939291906112fa565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f74206265206164647265737328302900000000000000000000000000000000606482015260840161030d565b610b0b8787338888888888610b30565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff8716610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c314552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f742062652061646472657373283029000000000000000000000000000000606482015260840161030d565b600063761f449360e01b888a8989898888604051602401610bfa979695949392919061133a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000959095169490941790935273ffffffffffffffffffffffffffffffffffffffff8c81166000818152603186528381208e8416825286528381208b82529095529382902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517f23b872dd000000000000000000000000000000000000000000000000000000008152908a166004820152306024820152604481018890529092506323b872dd90606401600060405180830381600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b50506001546002546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450633dbb202b9350610db1929091169085908990600401611397565b600060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a589898888604051610e5d94939291906112fa565b60405180910390a4505050505050505050565b600054610100900460ff16610f07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030d565b6001805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560028054929093169116179055565b73ffffffffffffffffffffffffffffffffffffffff81168114610f7c57600080fd5b50565b803563ffffffff81168114610f9357600080fd5b919050565b60008083601f840112610faa57600080fd5b50813567ffffffffffffffff811115610fc257600080fd5b602083019150836020828501011115610fda57600080fd5b9250929050565b60008060008060008060a08789031215610ffa57600080fd5b863561100581610f5a565b9550602087013561101581610f5a565b94506040870135935061102a60608801610f7f565b9250608087013567ffffffffffffffff81111561104657600080fd5b61105289828a01610f98565b979a9699509497509295939492505050565b6000806040838503121561107757600080fd5b823561108281610f5a565b9150602083013561109281610f5a565b809150509250929050565b6000815180845260005b818110156110c3576020818501810151868301820152016110a7565b818111156110d5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061111b602083018461109d565b9392505050565b60008060006060848603121561113757600080fd5b833561114281610f5a565b9250602084013561115281610f5a565b929592945050506040919091013590565b600080600080600080600060c0888a03121561117e57600080fd5b873561118981610f5a565b9650602088013561119981610f5a565b955060408801356111a981610f5a565b945060608801356111b981610f5a565b93506080880135925060a088013567ffffffffffffffff8111156111dc57600080fd5b6111e88a828b01610f98565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561121657600080fd5b873561122181610f5a565b9650602088013561123181610f5a565b9550604088013561124181610f5a565b94506060880135935061125660808901610f7f565b925060a088013567ffffffffffffffff8111156111dc57600080fd5b60006020828403121561128457600080fd5b8151801515811461111b57600080fd5b6000602082840312156112a657600080fd5b815161111b81610f5a565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006113306060830184866112b1565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261138a60c0830184866112b1565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006113c6606083018561109d565b905063ffffffff8316604083015294935050505056fea164736f6c634300080f000a", "sourceMap": "922:4498:131:-:0;;;1492:155;;;;;;;;;-1:-1:-1;1531:109:131::1;1585:1;::::0;1531:10:::1;:109::i;:::-;922:4498:::0;;1869:318;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:43;;216:2:357;3146:190:43;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:357;;;338:44;399:19;;3146:190:43;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:43;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:43;;;;;3372:65;1987:16:131::1;:36:::0;;-1:-1:-1;;;;;;1987:36:131::1;-1:-1:-1::0;;;;;1987:36:131;::::1;;::::0;;2033:147:::1;2079:10:::0;786:42:199::1;2033:19:131;:147::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:43;;;3531:14;;-1:-1:-1;581:36:357;;3531:14:43;;569:2:357;554:18;3531:14:43;;;;;;;3457:99;3090:472;1869:318:131;;:::o;1175:320:59:-;-1:-1:-1;;;;;1465:19:59;;:23;;;1175:320::o;3043:234:224:-;4888:13:43;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:43;;830:2:357;4880:69:43;;;812:21:357;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:357;;;952:41;1010:19;;4880:69:43;628:407:357;4880:69:43;3212:9:224::1;:22:::0;;-1:-1:-1;;;;;3212:22:224;;::::1;-1:-1:-1::0;;;;;;3212:22:224;;::::1;;::::0;;;3244:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;3043:234::o;628:407:357:-;922:4498:131;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80635d93a3fc11610081578063927ede2d1161005b578063927ede2d14610231578063aa5574521461024f578063c89701a21461026257600080fd5b80635d93a3fc146101cc578063761f4493146102005780637f46ddb21461021357600080fd5b8063485cc955116100b2578063485cc9551461015857806354fd4d501461016b5780635c975abb146101b457600080fd5b806335e80ab3146100d95780633687011a146101235780633cb747bf14610138575b600080fd5b6032546100f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610136610131366004610fe1565b610282565b005b6001546100f99073ffffffffffffffffffffffffffffffffffffffff1681565b610136610166366004611064565b61032e565b6101a76040518060400160405280600581526020017f322e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161011a9190611108565b6101bc610518565b604051901515815260200161011a565b6101bc6101da366004611122565b603160209081526000938452604080852082529284528284209052825290205460ff1681565b61013661020e366004611163565b6105b1565b60025473ffffffffffffffffffffffffffffffffffffffff166100f9565b60015473ffffffffffffffffffffffffffffffffffffffff166100f9565b61013661025d3660046111fb565b610a58565b6002546100f99073ffffffffffffffffffffffffffffffffffffffff1681565b333b15610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103268686333388888888610b30565b505050505050565b600054610100900460ff161580801561034e5750600054600160ff909116105b806103685750303b158015610368575060005460ff166001145b6103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161030d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790556104b083734200000000000000000000000000000000000014610e70565b801561051357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b603254604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac9190611272565b905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331480156106865750600254600154604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190611294565b73ffffffffffffffffffffffffffffffffffffffff16145b610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f746865722062726964676500606482015260840161030d565b61071a610518565b15610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c314552433732314272696467653a2070617573656400000000000000000000604482015260640161030d565b3073ffffffffffffffffffffffffffffffffffffffff881603610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c314552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c6600000000000000000000000000000000000000000000606482015260840161030d565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152603160209081526040808320938a1683529281528282208683529052205460ff1615156001146108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4c314552433732314272696467653a20546f6b656e204944206973206e6f742060448201527f657363726f77656420696e20746865204c312042726964676500000000000000606482015260840161030d565b73ffffffffffffffffffffffffffffffffffffffff87811660008181526031602090815260408083208b8616845282528083208884529091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152918616602483015260448201859052906342842e0e90606401600060405180830381600087803b1580156109b557600080fd5b505af11580156109c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac87878787604051610a4794939291906112fa565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f74206265206164647265737328302900000000000000000000000000000000606482015260840161030d565b610b0b8787338888888888610b30565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff8716610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c314552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f742062652061646472657373283029000000000000000000000000000000606482015260840161030d565b600063761f449360e01b888a8989898888604051602401610bfa979695949392919061133a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000959095169490941790935273ffffffffffffffffffffffffffffffffffffffff8c81166000818152603186528381208e8416825286528381208b82529095529382902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517f23b872dd000000000000000000000000000000000000000000000000000000008152908a166004820152306024820152604481018890529092506323b872dd90606401600060405180830381600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b50506001546002546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450633dbb202b9350610db1929091169085908990600401611397565b600060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a589898888604051610e5d94939291906112fa565b60405180910390a4505050505050505050565b600054610100900460ff16610f07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030d565b6001805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560028054929093169116179055565b73ffffffffffffffffffffffffffffffffffffffff81168114610f7c57600080fd5b50565b803563ffffffff81168114610f9357600080fd5b919050565b60008083601f840112610faa57600080fd5b50813567ffffffffffffffff811115610fc257600080fd5b602083019150836020828501011115610fda57600080fd5b9250929050565b60008060008060008060a08789031215610ffa57600080fd5b863561100581610f5a565b9550602087013561101581610f5a565b94506040870135935061102a60608801610f7f565b9250608087013567ffffffffffffffff81111561104657600080fd5b61105289828a01610f98565b979a9699509497509295939492505050565b6000806040838503121561107757600080fd5b823561108281610f5a565b9150602083013561109281610f5a565b809150509250929050565b6000815180845260005b818110156110c3576020818501810151868301820152016110a7565b818111156110d5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061111b602083018461109d565b9392505050565b60008060006060848603121561113757600080fd5b833561114281610f5a565b9250602084013561115281610f5a565b929592945050506040919091013590565b600080600080600080600060c0888a03121561117e57600080fd5b873561118981610f5a565b9650602088013561119981610f5a565b955060408801356111a981610f5a565b945060608801356111b981610f5a565b93506080880135925060a088013567ffffffffffffffff8111156111dc57600080fd5b6111e88a828b01610f98565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561121657600080fd5b873561122181610f5a565b9650602088013561123181610f5a565b9550604088013561124181610f5a565b94506060880135935061125660808901610f7f565b925060a088013567ffffffffffffffff8111156111dc57600080fd5b60006020828403121561128457600080fd5b8151801515811461111b57600080fd5b6000602082840312156112a657600080fd5b815161111b81610f5a565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006113306060830184866112b1565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261138a60c0830184866112b1565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006113c6606083018561109d565b905063ffffffff8316604083015294935050505056fea164736f6c634300080f000a", "sourceMap": "922:4498:131:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1279:40;;;;;;;;;;;;216:42:357;204:55;;;186:74;;174:2;159:18;1279:40:131;;;;;;;;5688:971:224;;;;;;:::i;:::-;;:::i;:::-;;829:37;;;;;;;;;1869:318:131;;;;;;:::i;:::-;;:::i;1389:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2226:103::-;;;:::i;:::-;;;3420:14:357;;3413:22;3395:41;;3383:2;3368:18;2226:103:131;3255:187:357;1134:80:131;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3096:1207;;;;;;:::i;:::-;;:::i;3858:98:224:-;3938:11;;;;3858:98;;3511:99;3594:9;;;;3511:99;;7885:428;;;;;;:::i;:::-;;:::i;967:33::-;;;;;;;;;5688:971;6472:10;1465:19:59;:23;6444:89:224;;;;;;;6391:2:357;6444:89:224;;;6373:21:357;6430:2;6410:18;;;6403:30;6469:34;6449:18;;;6442:62;6540:15;6520:18;;;6513:43;6573:19;;6444:89:224;;;;;;;;;6544:108;6566:11;6579:12;6593:10;6605;6617:8;6627:12;6641:10;;6544:21;:108::i;:::-;5688:971;;;;;;:::o;1869:318:131:-;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:43;1465:19:59;:23;;;3208:55:43;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;;;;6805:2:357;3146:190:43;;;6787:21:357;6844:2;6824:18;;;6817:30;6883:34;6863:18;;;6856:62;6954:16;6934:18;;;6927:44;6988:19;;3146:190:43;6603:410:357;3146:190:43;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;1987:16:131::1;:36:::0;;;::::1;;::::0;::::1;;::::0;;2033:147:::1;2079:10:::0;786:42:199::1;2033:19:131;:147::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;7170:36:357;;3531:14:43;;7158:2:357;7143:18;3531:14:43;;;;;;;3457:99;3090:472;1869:318:131;;:::o;2226:103::-;2297:16;;:25;;;;;;;;2274:4;;2297:16;;;:23;;:25;;;;;;;;;;;;;;:16;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2290:32;;2226:103;:::o;3096:1207::-;2669:9:224;;;;2647:10;:32;:92;;;;-1:-1:-1;2727:11:224;;;2683:9;:32;;;;;;;;2727:11;;;;;2683:9;;;;:30;;:32;;;;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;2647:92;2626:202;;;;;;;7957:2:357;2626:202:224;;;7939:21:357;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;8106:33;8086:18;;;8079:61;8157:19;;2626:202:224;7755:427:357;2626:202:224;3359:8:131::1;:6;:8::i;:::-;:17;3351:52;;;::::0;::::1;::::0;;8389:2:357;3351:52:131::1;::::0;::::1;8371:21:357::0;8428:2;8408:18;;;8401:30;8467:24;8447:18;;;8440:52;8509:18;;3351:52:131::1;8187:346:357::0;3351:52:131::1;3444:4;3421:28;::::0;::::1;::::0;3413:83:::1;;;::::0;::::1;::::0;;8740:2:357;3413:83:131::1;::::0;::::1;8722:21:357::0;8779:2;8759:18;;;8752:30;8818:34;8798:18;;;8791:62;8889:12;8869:18;;;8862:40;8919:19;;3413:83:131::1;8538:406:357::0;3413:83:131::1;3620:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;;:45;;;;;;;::::1;;:53;;:45:::0;:53:::1;3599:157;;;::::0;::::1;::::0;;9151:2:357;3599:157:131::1;::::0;::::1;9133:21:357::0;9190:2;9170:18;;;9163:30;9229:34;9209:18;;;9202:62;9300:27;9280:18;;;9273:55;9345:19;;3599:157:131::1;8949:421:357::0;3599:157:131::1;3878:21;::::0;;::::1;3926:5;3878:21:::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;:45;;;;;;;;;;:53;;;::::1;::::0;;4053:90;;;;4107:4:::1;4053:90;::::0;::::1;9638:34:357::0;9708:15;;;9688:18;;;9681:43;9740:18;;;9733:34;;;3878:21:131;4053:37:::1;::::0;9550:18:357;;4053:90:131::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4263:5;4214:82;;4249:12;4214:82;;4236:11;4214:82;;;4270:3;4275:8;4285:10;;4214:82;;;;;;;;;:::i;:::-;;;;;;;;3096:1207:::0;;;;;;;:::o;7885:428:224:-;8124:17;;;8116:78;;;;;;;10750:2:357;8116:78:224;;;10732:21:357;10789:2;10769:18;;;10762:30;10828:34;10808:18;;;10801:62;10899:18;10879;;;10872:46;10935:19;;8116:78:224;10548:412:357;8116:78:224;8205:101;8227:11;8240:12;8254:10;8266:3;8271:8;8281:12;8295:10;;8205:21;:101::i;:::-;7885:428;;;;;;;:::o;1175:320:59:-;1465:19;;;:23;;;1175:320::o;4342:1076:131:-;4628:26;;;4620:88;;;;;;;11167:2:357;4620:88:131;;;11149:21:357;11206:2;11186:18;;;11179:30;11245:34;11225:18;;;11218:62;11316:19;11296:18;;;11289:47;11353:19;;4620:88:131;10965:413:357;4620:88:131;4798:20;4857:44;;;4903:12;4917:11;4930:5;4937:3;4942:8;4952:10;;4821:151;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:21;;;;-1:-1:-1;5017:21:131;;;:8;:21;;;;;:35;;;;;;;;;;:45;;;;;;;;;;:52;;;;5065:4;5017:52;;;5079:88;;;;;9656:15:357;;;5079:88:131;;;9638:34:357;5140:4:131;9688:18:357;;;9681:43;9740:18;;;9733:34;;;4821:151:131;;-1:-1:-1;5079:33:131;;9550:18:357;;5079:88:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5211:9:131;;5252:11;;5211:103;;;;;:9;;;;;-1:-1:-1;5211:21:131;;-1:-1:-1;5211:103:131;;5252:11;;;;5276:7;;5299:12;;5211:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5378:5;5329:82;;5364:12;5329:82;;5351:11;5329:82;;;5385:3;5390:8;5400:10;;5329:82;;;;;;;;;:::i;:::-;;;;;;;;4610:808;4342:1076;;;;;;;;:::o;3043:234:224:-;4888:13:43;;;;;;;4880:69;;;;;;;12719:2:357;4880:69:43;;;12701:21:357;12758:2;12738:18;;;12731:30;12797:34;12777:18;;;12770:62;12868:13;12848:18;;;12841:41;12899:19;;4880:69:43;12517:407:357;4880:69:43;3212:9:224::1;:22:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;3244:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;3043:234::o;271:154:357:-;357:42;350:5;346:54;339:5;336:65;326:93;;415:1;412;405:12;326:93;271:154;:::o;430:163::-;497:20;;557:10;546:22;;536:33;;526:61;;583:1;580;573:12;526:61;430:163;;;:::o;598:347::-;649:8;659:6;713:3;706:4;698:6;694:17;690:27;680:55;;731:1;728;721:12;680:55;-1:-1:-1;754:20:357;;797:18;786:30;;783:50;;;829:1;826;819:12;783:50;866:4;858:6;854:17;842:29;;918:3;911:4;902:6;894;890:19;886:30;883:39;880:59;;;935:1;932;925:12;880:59;598:347;;;;;:::o;950:827::-;1055:6;1063;1071;1079;1087;1095;1148:3;1136:9;1127:7;1123:23;1119:33;1116:53;;;1165:1;1162;1155:12;1116:53;1204:9;1191:23;1223:31;1248:5;1223:31;:::i;:::-;1273:5;-1:-1:-1;1330:2:357;1315:18;;1302:32;1343:33;1302:32;1343:33;:::i;:::-;1395:7;-1:-1:-1;1449:2:357;1434:18;;1421:32;;-1:-1:-1;1472:37:357;1505:2;1490:18;;1472:37;:::i;:::-;1462:47;;1560:3;1549:9;1545:19;1532:33;1588:18;1580:6;1577:30;1574:50;;;1620:1;1617;1610:12;1574:50;1659:58;1709:7;1700:6;1689:9;1685:22;1659:58;:::i;:::-;950:827;;;;-1:-1:-1;950:827:357;;-1:-1:-1;950:827:357;;1736:8;;950:827;-1:-1:-1;;;950:827:357:o;2044:445::-;2169:6;2177;2230:2;2218:9;2209:7;2205:23;2201:32;2198:52;;;2246:1;2243;2236:12;2198:52;2285:9;2272:23;2304:31;2329:5;2304:31;:::i;:::-;2354:5;-1:-1:-1;2411:2:357;2396:18;;2383:32;2424:33;2383:32;2424:33;:::i;:::-;2476:7;2466:17;;;2044:445;;;;;:::o;2494:531::-;2536:3;2574:5;2568:12;2601:6;2596:3;2589:19;2626:1;2636:162;2650:6;2647:1;2644:13;2636:162;;;2712:4;2768:13;;;2764:22;;2758:29;2740:11;;;2736:20;;2729:59;2665:12;2636:162;;;2816:6;2813:1;2810:13;2807:87;;;2882:1;2875:4;2866:6;2861:3;2857:16;2853:27;2846:38;2807:87;-1:-1:-1;2939:2:357;2927:15;2944:66;2923:88;2914:98;;;;3014:4;2910:109;;2494:531;-1:-1:-1;;2494:531:357:o;3030:220::-;3179:2;3168:9;3161:21;3142:4;3199:45;3240:2;3229:9;3225:18;3217:6;3199:45;:::i;:::-;3191:53;3030:220;-1:-1:-1;;;3030:220:357:o;3447:456::-;3524:6;3532;3540;3593:2;3581:9;3572:7;3568:23;3564:32;3561:52;;;3609:1;3606;3599:12;3561:52;3648:9;3635:23;3667:31;3692:5;3667:31;:::i;:::-;3717:5;-1:-1:-1;3774:2:357;3759:18;;3746:32;3787:33;3746:32;3787:33;:::i;:::-;3447:456;;3839:7;;-1:-1:-1;;;3893:2:357;3878:18;;;;3865:32;;3447:456::o;3908:1038::-;4023:6;4031;4039;4047;4055;4063;4071;4124:3;4112:9;4103:7;4099:23;4095:33;4092:53;;;4141:1;4138;4131:12;4092:53;4180:9;4167:23;4199:31;4224:5;4199:31;:::i;:::-;4249:5;-1:-1:-1;4306:2:357;4291:18;;4278:32;4319:33;4278:32;4319:33;:::i;:::-;4371:7;-1:-1:-1;4430:2:357;4415:18;;4402:32;4443:33;4402:32;4443:33;:::i;:::-;4495:7;-1:-1:-1;4554:2:357;4539:18;;4526:32;4567:33;4526:32;4567:33;:::i;:::-;4619:7;-1:-1:-1;4673:3:357;4658:19;;4645:33;;-1:-1:-1;4729:3:357;4714:19;;4701:33;4757:18;4746:30;;4743:50;;;4789:1;4786;4779:12;4743:50;4828:58;4878:7;4869:6;4858:9;4854:22;4828:58;:::i;:::-;3908:1038;;;;-1:-1:-1;3908:1038:357;;-1:-1:-1;3908:1038:357;;;;4802:84;;-1:-1:-1;;;3908:1038:357:o;5215:969::-;5329:6;5337;5345;5353;5361;5369;5377;5430:3;5418:9;5409:7;5405:23;5401:33;5398:53;;;5447:1;5444;5437:12;5398:53;5486:9;5473:23;5505:31;5530:5;5505:31;:::i;:::-;5555:5;-1:-1:-1;5612:2:357;5597:18;;5584:32;5625:33;5584:32;5625:33;:::i;:::-;5677:7;-1:-1:-1;5736:2:357;5721:18;;5708:32;5749:33;5708:32;5749:33;:::i;:::-;5801:7;-1:-1:-1;5855:2:357;5840:18;;5827:32;;-1:-1:-1;5878:38:357;5911:3;5896:19;;5878:38;:::i;:::-;5868:48;;5967:3;5956:9;5952:19;5939:33;5995:18;5987:6;5984:30;5981:50;;;6027:1;6024;6017:12;7217:277;7284:6;7337:2;7325:9;7316:7;7312:23;7308:32;7305:52;;;7353:1;7350;7343:12;7305:52;7385:9;7379:16;7438:5;7431:13;7424:21;7417:5;7414:32;7404:60;;7460:1;7457;7450:12;7499:251;7569:6;7622:2;7610:9;7601:7;7597:23;7593:32;7590:52;;;7638:1;7635;7628:12;7590:52;7670:9;7664:16;7689:31;7714:5;7689:31;:::i;9778:325::-;9866:6;9861:3;9854:19;9918:6;9911:5;9904:4;9899:3;9895:14;9882:43;;9970:1;9963:4;9954:6;9949:3;9945:16;9941:27;9934:38;9836:3;10092:4;10022:66;10017:2;10009:6;10005:15;10001:88;9996:3;9992:98;9988:109;9981:116;;9778:325;;;;:::o;10108:435::-;10333:42;10325:6;10321:55;10310:9;10303:74;10413:6;10408:2;10397:9;10393:18;10386:34;10456:2;10451;10440:9;10436:18;10429:30;10284:4;10476:61;10533:2;10522:9;10518:18;10510:6;10502;10476:61;:::i;:::-;10468:69;10108:435;-1:-1:-1;;;;;;10108:435:357:o;11383:700::-;11643:4;11672:42;11753:2;11745:6;11741:15;11730:9;11723:34;11805:2;11797:6;11793:15;11788:2;11777:9;11773:18;11766:43;11857:2;11849:6;11845:15;11840:2;11829:9;11825:18;11818:43;11909:2;11901:6;11897:15;11892:2;11881:9;11877:18;11870:43;;11950:6;11944:3;11933:9;11929:19;11922:35;11994:3;11988;11977:9;11973:19;11966:32;12015:62;12072:3;12061:9;12057:19;12049:6;12041;12015:62;:::i;:::-;12007:70;11383:700;-1:-1:-1;;;;;;;;;11383:700:357:o;12088:424::-;12301:42;12293:6;12289:55;12278:9;12271:74;12381:2;12376;12365:9;12361:18;12354:30;12252:4;12401:45;12442:2;12431:9;12427:18;12419:6;12401:45;:::i;:::-;12393:53;;12494:10;12486:6;12482:23;12477:2;12466:9;12462:18;12455:51;12088:424;;;;;;:::o", "linkReferences": {} }, "methodIdentifiers": { "MESSENGER()": "927ede2d", "OTHER_BRIDGE()": "7f46ddb2", "bridgeERC721(address,address,uint256,uint32,bytes)": "3687011a", "bridgeERC721To(address,address,address,uint256,uint32,bytes)": "aa557452", "deposits(address,address,uint256)": "5d93a3fc", "finalizeBridgeERC721(address,address,address,address,uint256,bytes)": "761f4493", "initialize(address,address)": "485cc955", "messenger()": "3cb747bf", "otherBridge()": "c89701a2", "paused()": "5c975abb", "superchainConfig()": "35e80ab3", "version()": "54fd4d50" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC721BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC721BridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC721To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"_messenger\",\"type\":\"address\"},{\"internalType\":\"contract SuperchainConfig\",\"name\":\"_superchainConfig\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superchainConfig\",\"outputs\":[{\"internalType\":\"contract SuperchainConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Messenger contract on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC721(address,address,uint256,uint32,bytes)\":{\"params\":{\"_extraData\":\"Optional data to forward to the other chain. Data supplied here will not                     be used to execute any code on the other chain and is only emitted as                     extra data for the convenience of off-chain tooling.\",\"_localToken\":\"Address of the ERC721 on this domain.\",\"_minGasLimit\":\"Minimum gas limit for the bridge message on the other domain.\",\"_remoteToken\":\"Address of the ERC721 on the remote domain.\",\"_tokenId\":\"Token ID to bridge.\"}},\"bridgeERC721To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_extraData\":\"Optional data to forward to the other chain. Data supplied here will not                     be used to execute any code on the other chain and is only emitted as                     extra data for the convenience of off-chain tooling.\",\"_localToken\":\"Address of the ERC721 on this domain.\",\"_minGasLimit\":\"Minimum gas limit for the bridge message on the other domain.\",\"_remoteToken\":\"Address of the ERC721 on the remote domain.\",\"_to\":\"Address to receive the token on the other domain.\",\"_tokenId\":\"Token ID to bridge.\"}},\"finalizeBridgeERC721(address,address,address,address,uint256,bytes)\":{\"params\":{\"_extraData\":\"Optional data to forward to L2.                     Data supplied here will not be used to execute any code on L2 and is                     only emitted as extra data for the convenience of off-chain tooling.\",\"_from\":\"Address that triggered the bridge on the other domain.\",\"_localToken\":\"Address of the ERC721 token on this domain.\",\"_remoteToken\":\"Address of the ERC721 token on the other domain.\",\"_to\":\"Address to receive the token on this domain.\",\"_tokenId\":\"ID of the token being deposited.\"}},\"initialize(address,address)\":{\"params\":{\"_messenger\":\"Contract of the CrossDomainMessenger on this network.\",\"_superchainConfig\":\"Contract of the SuperchainConfig contract on this network.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"2.1.0\"}},\"title\":\"L1ERC721Bridge\",\"version\":1},\"userdoc\":{\"events\":{\"ERC721BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC721 bridge from the other network is finalized.\"},\"ERC721BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC721 bridge to the other network is initiated.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Legacy getter for messenger contract.         Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Legacy getter for other bridge address.         Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC721(address,address,uint256,uint32,bytes)\":{\"notice\":\"Initiates a bridge of an NFT to the caller's account on the other chain. Note that         this function can only be called by EOAs. Smart contract wallets should use the         `bridgeERC721To` function after ensuring that the recipient address on the remote         chain exists. Also note that the current owner of the token on this chain must         approve this contract to operate the NFT before it can be bridged.         **WARNING**: Do not bridge an ERC721 that was originally deployed on Optimism. This         bridge only supports ERC721s originally deployed on Ethereum. Users will need to         wait for the one-week challenge period to elapse before their Optimism-native NFT         can be refunded on L2.\"},\"bridgeERC721To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Initiates a bridge of an NFT to some recipient's account on the other chain. Note         that the current owner of the token on this chain must approve this contract to         operate the NFT before it can be bridged.         **WARNING**: Do not bridge an ERC721 that was originally deployed on Optimism. This         bridge only supports ERC721s originally deployed on Ethereum. Users will need to         wait for the one-week challenge period to elapse before their Optimism-native NFT         can be refunded on L2.\"},\"constructor\":{\"notice\":\"Constructs the L1ERC721Bridge contract.\"},\"deposits(address,address,uint256)\":{\"notice\":\"Mapping of L1 token to L2 token to ID to boolean, indicating if the given L1 token         by ID was deposited for a given L2 token.\"},\"finalizeBridgeERC721(address,address,address,address,uint256,bytes)\":{\"notice\":\"Completes an ERC721 bridge from the other domain and sends the ERC721 token to the         recipient on this domain.\"},\"initialize(address,address)\":{\"notice\":\"Initializes the contract.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Contract of the bridge on the other network.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op.\"},\"superchainConfig()\":{\"notice\":\"Address of the SuperchainConfig contract.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The L1 ERC721 bridge is a contract which works together with the L2 ERC721 bridge to         make it possible to transfer ERC721 tokens from Ethereum to Optimism. This contract         acts as an escrow for ERC721 tokens deposited into L2.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L1ERC721Bridge.sol\":\"L1ERC721Bridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L1ERC721Bridge.sol\":{\"keccak256\":\"0x2a3177a2b025bf7ac58450d7dfc7f4f984a265b651d9f57f83c4b43d9fe5ebdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f24ea47b324c2683f3dd00f5b47c93bfe7b45fda3dd85c2fc08999c2f1e62db\",\"dweb:/ipfs/QmTKM64r67YGyRamy2pwBA47N7HeD6fk5HEMd3nM3vNkAK\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/L1/SuperchainConfig.sol\":{\"keccak256\":\"0x5fab874f980fe3e52c3398ddd25b655c56af0c98c15588b2ad9ebf30671d859d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0aa613d38eceb621f8569fc714f521bc1f2df3d029552186ab3cdf2ee5d53f\",\"dweb:/ipfs/QmZDzFxhTXLW79eohQbr1nghNh3oNC4CUfH7uMX8CsjVAB\"]},\"src/L2/L2ERC721Bridge.sol\":{\"keccak256\":\"0xcacb39a7b6e5d2d5293834195363397010130ab88d2f4de860277dae6d4265f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cdcf63276957f9ca614567394b11ab3f6877baa5a6d33bf54dd8022ca2021f\",\"dweb:/ipfs/QmZQBBfjk2UPLFtKeTd5DJCTRWw1KxKbQMmWr8WVDzZsat\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff\",\"dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663\",\"dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Storage.sol\":{\"keccak256\":\"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269\",\"dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1\",\"dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n\"]},\"src/universal/ERC721Bridge.sol\":{\"keccak256\":\"0xea04387e26c6b3ba2ce5762166b7f790ccb068012f2cd5cc16c5734b47e1cb4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37a697c0886aa201672ded4196c3e5506903522183f27c9c3455ccdbd5e1c3cb\",\"dweb:/ipfs/QmdxhxBFR8J2obRzuFCMtUirB4Fsc8CvKwNwR8DFc9SEGK\"]},\"src/universal/IOptimismMintableERC20.sol\":{\"keccak256\":\"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf\",\"dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ\"]},\"src/universal/IOptimismMintableERC721.sol\":{\"keccak256\":\"0xb3a65b067e67a9e1fa0493401c8d247970377c6725eba4e7b02ce8099c4f4f52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86bb6864027560ade2f4ced6a6e34213cbff8002977dc365377e5a0b473cf17b\",\"dweb:/ipfs/QmQvjtodTK27as1g1PzsYk9NyJJ3X6a6251o1vrBwx7DPT\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7\",\"dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0x1a2f6afd7f14430ae2b797e09497c3dc860ed5db752e1847e30649668060c01d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fefe1356cdeb5b324e4e63e1c723c08f9e244ef2ef133b9f5df0cc0d180eeaa8\",\"dweb:/ipfs/QmZzR3zWKodwdwrdWwXUyh7G3qcFn2cjUQLrE45gRyQMn3\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.15+commit.e14f2714" }, "language": "Solidity", "output": { "abi": [{ "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [{ "internalType": "address", "name": "localToken", "type": "address", "indexed": true }, { "internalType": "address", "name": "remoteToken", "type": "address", "indexed": true }, { "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "tokenId", "type": "uint256", "indexed": false }, { "internalType": "bytes", "name": "extraData", "type": "bytes", "indexed": false }], "type": "event", "name": "ERC721BridgeFinalized", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "localToken", "type": "address", "indexed": true }, { "internalType": "address", "name": "remoteToken", "type": "address", "indexed": true }, { "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "tokenId", "type": "uint256", "indexed": false }, { "internalType": "bytes", "name": "extraData", "type": "bytes", "indexed": false }], "type": "event", "name": "ERC721BridgeInitiated", "anonymous": false }, { "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], "type": "event", "name": "Initialized", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "MESSENGER", "outputs": [{ "internalType": "contract CrossDomainMessenger", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "OTHER_BRIDGE", "outputs": [{ "internalType": "contract StandardBridge", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "_localToken", "type": "address" }, { "internalType": "address", "name": "_remoteToken", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "_minGasLimit", "type": "uint32" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "bridgeERC721" }, { "inputs": [{ "internalType": "address", "name": "_localToken", "type": "address" }, { "internalType": "address", "name": "_remoteToken", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "_minGasLimit", "type": "uint32" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "bridgeERC721To" }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "deposits", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [{ "internalType": "address", "name": "_localToken", "type": "address" }, { "internalType": "address", "name": "_remoteToken", "type": "address" }, { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "finalizeBridgeERC721" }, { "inputs": [{ "internalType": "contract CrossDomainMessenger", "name": "_messenger", "type": "address" }, { "internalType": "contract SuperchainConfig", "name": "_superchainConfig", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "initialize" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "messenger", "outputs": [{ "internalType": "contract CrossDomainMessenger", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "otherBridge", "outputs": [{ "internalType": "contract StandardBridge", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "paused", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "superchainConfig", "outputs": [{ "internalType": "contract SuperchainConfig", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "version", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }], "devdoc": { "kind": "dev", "methods": { "MESSENGER()": { "custom:legacy": "", "returns": { "_0": "Messenger contract on this domain." } }, "OTHER_BRIDGE()": { "custom:legacy": "", "returns": { "_0": "Contract of the bridge on the other network." } }, "bridgeERC721(address,address,uint256,uint32,bytes)": { "params": { "_extraData": "Optional data to forward to the other chain. Data supplied here will not                     be used to execute any code on the other chain and is only emitted as                     extra data for the convenience of off-chain tooling.", "_localToken": "Address of the ERC721 on this domain.", "_minGasLimit": "Minimum gas limit for the bridge message on the other domain.", "_remoteToken": "Address of the ERC721 on the remote domain.", "_tokenId": "Token ID to bridge." } }, "bridgeERC721To(address,address,address,uint256,uint32,bytes)": { "params": { "_extraData": "Optional data to forward to the other chain. Data supplied here will not                     be used to execute any code on the other chain and is only emitted as                     extra data for the convenience of off-chain tooling.", "_localToken": "Address of the ERC721 on this domain.", "_minGasLimit": "Minimum gas limit for the bridge message on the other domain.", "_remoteToken": "Address of the ERC721 on the remote domain.", "_to": "Address to receive the token on the other domain.", "_tokenId": "Token ID to bridge." } }, "finalizeBridgeERC721(address,address,address,address,uint256,bytes)": { "params": { "_extraData": "Optional data to forward to L2.                     Data supplied here will not be used to execute any code on L2 and is                     only emitted as extra data for the convenience of off-chain tooling.", "_from": "Address that triggered the bridge on the other domain.", "_localToken": "Address of the ERC721 token on this domain.", "_remoteToken": "Address of the ERC721 token on the other domain.", "_to": "Address to receive the token on this domain.", "_tokenId": "ID of the token being deposited." } }, "initialize(address,address)": { "params": { "_messenger": "Contract of the CrossDomainMessenger on this network.", "_superchainConfig": "Contract of the SuperchainConfig contract on this network." } }, "paused()": { "returns": { "_0": "Whether or not the contract is paused." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "MESSENGER()": { "notice": "Legacy getter for messenger contract.         Public getter is legacy and will be removed in the future. Use `messenger` instead." }, "OTHER_BRIDGE()": { "notice": "Legacy getter for other bridge address.         Public getter is legacy and will be removed in the future. Use `otherBridge` instead." }, "bridgeERC721(address,address,uint256,uint32,bytes)": { "notice": "Initiates a bridge of an NFT to the caller's account on the other chain. Note that         this function can only be called by EOAs. Smart contract wallets should use the         `bridgeERC721To` function after ensuring that the recipient address on the remote         chain exists. Also note that the current owner of the token on this chain must         approve this contract to operate the NFT before it can be bridged.         **WARNING**: Do not bridge an ERC721 that was originally deployed on Optimism. This         bridge only supports ERC721s originally deployed on Ethereum. Users will need to         wait for the one-week challenge period to elapse before their Optimism-native NFT         can be refunded on L2." }, "bridgeERC721To(address,address,address,uint256,uint32,bytes)": { "notice": "Initiates a bridge of an NFT to some recipient's account on the other chain. Note         that the current owner of the token on this chain must approve this contract to         operate the NFT before it can be bridged.         **WARNING**: Do not bridge an ERC721 that was originally deployed on Optimism. This         bridge only supports ERC721s originally deployed on Ethereum. Users will need to         wait for the one-week challenge period to elapse before their Optimism-native NFT         can be refunded on L2." }, "constructor": { "notice": "Constructs the L1ERC721Bridge contract." }, "deposits(address,address,uint256)": { "notice": "Mapping of L1 token to L2 token to ID to boolean, indicating if the given L1 token         by ID was deposited for a given L2 token." }, "finalizeBridgeERC721(address,address,address,address,uint256,bytes)": { "notice": "Completes an ERC721 bridge from the other domain and sends the ERC721 token to the         recipient on this domain." }, "initialize(address,address)": { "notice": "Initializes the contract." }, "messenger()": { "notice": "Messenger contract on this domain." }, "otherBridge()": { "notice": "Contract of the bridge on the other network." }, "paused()": { "notice": "This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op." }, "superchainConfig()": { "notice": "Address of the SuperchainConfig contract." }, "version()": { "notice": "Semantic version." } }, "version": 1 } }, "settings": { "remappings": ["@lib-keccak/=lib/lib-keccak/contracts/lib/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@rari-capital/solmate/=lib/solmate/", "@solady-test/=lib/lib-keccak/lib/solady/test/", "@solady/=lib/solady/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/", "lib-keccak/=lib/lib-keccak/contracts/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "safe-contracts/=lib/safe-contracts/contracts/", "solady/=lib/solady/", "solmate/=lib/solmate/src/"], "optimizer": { "enabled": true, "runs": 999999 }, "metadata": { "bytecodeHash": "none" }, "compilationTarget": { "src/L1/L1ERC721Bridge.sol": "L1ERC721Bridge" }, "evmVersion": "london", "libraries": {} }, "sources": { "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e", "urls": ["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497", "dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { "keccak256": "0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3", "urls": ["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4", "dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66", "urls": ["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f", "dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { "keccak256": "0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238", "urls": ["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0", "dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", "urls": ["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", "urls": ["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { "keccak256": "0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329", "urls": ["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95", "dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": { "keccak256": "0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29", "urls": ["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6", "dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": { "keccak256": "0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f", "urls": ["bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f", "dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { "keccak256": "0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf", "urls": ["bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34", "dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { "keccak256": "0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10", "urls": ["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487", "dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": ["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol": { "keccak256": "0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed", "urls": ["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461", "dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": ["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { "keccak256": "0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0", "urls": ["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929", "dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { "keccak256": "0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7", "urls": ["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689", "dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"], "license": "MIT" }, "lib/solmate/src/utils/FixedPointMathLib.sol": { "keccak256": "0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d", "urls": ["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c", "dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"], "license": "MIT" }, "src/L1/L1ERC721Bridge.sol": { "keccak256": "0x2a3177a2b025bf7ac58450d7dfc7f4f984a265b651d9f57f83c4b43d9fe5ebdd", "urls": ["bzz-raw://2f24ea47b324c2683f3dd00f5b47c93bfe7b45fda3dd85c2fc08999c2f1e62db", "dweb:/ipfs/QmTKM64r67YGyRamy2pwBA47N7HeD6fk5HEMd3nM3vNkAK"], "license": "MIT" }, "src/L1/ResourceMetering.sol": { "keccak256": "0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408", "urls": ["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409", "dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"], "license": "MIT" }, "src/L1/SuperchainConfig.sol": { "keccak256": "0x5fab874f980fe3e52c3398ddd25b655c56af0c98c15588b2ad9ebf30671d859d", "urls": ["bzz-raw://4e0aa613d38eceb621f8569fc714f521bc1f2df3d029552186ab3cdf2ee5d53f", "dweb:/ipfs/QmZDzFxhTXLW79eohQbr1nghNh3oNC4CUfH7uMX8CsjVAB"], "license": "MIT" }, "src/L2/L2ERC721Bridge.sol": { "keccak256": "0xcacb39a7b6e5d2d5293834195363397010130ab88d2f4de860277dae6d4265f9", "urls": ["bzz-raw://f6cdcf63276957f9ca614567394b11ab3f6877baa5a6d33bf54dd8022ca2021f", "dweb:/ipfs/QmZQBBfjk2UPLFtKeTd5DJCTRWw1KxKbQMmWr8WVDzZsat"], "license": "MIT" }, "src/libraries/Arithmetic.sol": { "keccak256": "0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db", "urls": ["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72", "dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"], "license": "MIT" }, "src/libraries/Burn.sol": { "keccak256": "0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010", "urls": ["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f", "dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"], "license": "MIT" }, "src/libraries/Constants.sol": { "keccak256": "0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132", "urls": ["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b", "dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"], "license": "MIT" }, "src/libraries/Encoding.sol": { "keccak256": "0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87", "urls": ["bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff", "dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA"], "license": "MIT" }, "src/libraries/Hashing.sol": { "keccak256": "0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8", "urls": ["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12", "dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"], "license": "MIT" }, "src/libraries/Predeploys.sol": { "keccak256": "0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02", "urls": ["bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663", "dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe"], "license": "MIT" }, "src/libraries/SafeCall.sol": { "keccak256": "0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f", "urls": ["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a", "dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"], "license": "MIT" }, "src/libraries/Storage.sol": { "keccak256": "0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f", "urls": ["bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269", "dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK"], "license": "MIT" }, "src/libraries/Types.sol": { "keccak256": "0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4", "urls": ["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e", "dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"], "license": "MIT" }, "src/libraries/rlp/RLPWriter.sol": { "keccak256": "0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6", "urls": ["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b", "dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"], "license": "MIT" }, "src/universal/CrossDomainMessenger.sol": { "keccak256": "0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0", "urls": ["bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1", "dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n"], "license": "MIT" }, "src/universal/ERC721Bridge.sol": { "keccak256": "0xea04387e26c6b3ba2ce5762166b7f790ccb068012f2cd5cc16c5734b47e1cb4f", "urls": ["bzz-raw://37a697c0886aa201672ded4196c3e5506903522183f27c9c3455ccdbd5e1c3cb", "dweb:/ipfs/QmdxhxBFR8J2obRzuFCMtUirB4Fsc8CvKwNwR8DFc9SEGK"], "license": "MIT" }, "src/universal/IOptimismMintableERC20.sol": { "keccak256": "0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c", "urls": ["bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf", "dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ"], "license": "MIT" }, "src/universal/IOptimismMintableERC721.sol": { "keccak256": "0xb3a65b067e67a9e1fa0493401c8d247970377c6725eba4e7b02ce8099c4f4f52", "urls": ["bzz-raw://86bb6864027560ade2f4ced6a6e34213cbff8002977dc365377e5a0b473cf17b", "dweb:/ipfs/QmQvjtodTK27as1g1PzsYk9NyJJ3X6a6251o1vrBwx7DPT"], "license": "MIT" }, "src/universal/ISemver.sol": { "keccak256": "0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44", "urls": ["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a", "dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"], "license": "MIT" }, "src/universal/OptimismMintableERC20.sol": { "keccak256": "0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df", "urls": ["bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7", "dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa"], "license": "MIT" }, "src/universal/StandardBridge.sol": { "keccak256": "0x1a2f6afd7f14430ae2b797e09497c3dc860ed5db752e1847e30649668060c01d", "urls": ["bzz-raw://fefe1356cdeb5b324e4e63e1c723c08f9e244ef2ef133b9f5df0cc0d180eeaa8", "dweb:/ipfs/QmZzR3zWKodwdwrdWwXUyh7G3qcFn2cjUQLrE45gRyQMn3"], "license": "MIT" } }, "version": 1 }, "storageLayout": { "storage": [{ "astId": 49534, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "_initialized", "offset": 0, "slot": "0", "type": "t_uint8" }, { "astId": 49537, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "_initializing", "offset": 1, "slot": "0", "type": "t_bool" }, { "astId": 108906, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "spacer_0_2_30", "offset": 2, "slot": "0", "type": "t_bytes30" }, { "astId": 108910, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "messenger", "offset": 0, "slot": "1", "type": "t_contract(CrossDomainMessenger)108888" }, { "astId": 108914, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "otherBridge", "offset": 0, "slot": "2", "type": "t_contract(StandardBridge)111675" }, { "astId": 108919, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "__gap", "offset": 0, "slot": "3", "type": "t_array(t_uint256)46_storage" }, { "astId": 85179, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "deposits", "offset": 0, "slot": "49", "type": "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_bool)))" }, { "astId": 85183, "contract": "src/L1/L1ERC721Bridge.sol:L1ERC721Bridge", "label": "superchainConfig", "offset": 0, "slot": "50", "type": "t_contract(SuperchainConfig)88793" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_array(t_uint256)46_storage": { "encoding": "inplace", "label": "uint256[46]", "numberOfBytes": "1472", "base": "t_uint256" }, "t_bool": { "encoding": "inplace", "label": "bool", "numberOfBytes": "1" }, "t_bytes30": { "encoding": "inplace", "label": "bytes30", "numberOfBytes": "30" }, "t_contract(CrossDomainMessenger)108888": { "encoding": "inplace", "label": "contract CrossDomainMessenger", "numberOfBytes": "20" }, "t_contract(StandardBridge)111675": { "encoding": "inplace", "label": "contract StandardBridge", "numberOfBytes": "20" }, "t_contract(SuperchainConfig)88793": { "encoding": "inplace", "label": "contract SuperchainConfig", "numberOfBytes": "20" }, "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_bool)))": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => mapping(address => mapping(uint256 => bool)))", "numberOfBytes": "32", "value": "t_mapping(t_address,t_mapping(t_uint256,t_bool))" }, "t_mapping(t_address,t_mapping(t_uint256,t_bool))": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => mapping(uint256 => bool))", "numberOfBytes": "32", "value": "t_mapping(t_uint256,t_bool)" }, "t_mapping(t_uint256,t_bool)": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => bool)", "numberOfBytes": "32", "value": "t_bool" }, "t_uint256": { "encoding": "inplace", "label": "uint256", "numberOfBytes": "32" }, "t_uint8": { "encoding": "inplace", "label": "uint8", "numberOfBytes": "1" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "MESSENGER()": { "notice": "Legacy getter for messenger contract.         Public getter is legacy and will be removed in the future. Use `messenger` instead." }, "OTHER_BRIDGE()": { "notice": "Legacy getter for other bridge address.         Public getter is legacy and will be removed in the future. Use `otherBridge` instead." }, "bridgeERC721(address,address,uint256,uint32,bytes)": { "notice": "Initiates a bridge of an NFT to the caller's account on the other chain. Note that         this function can only be called by EOAs. Smart contract wallets should use the         `bridgeERC721To` function after ensuring that the recipient address on the remote         chain exists. Also note that the current owner of the token on this chain must         approve this contract to operate the NFT before it can be bridged.         **WARNING**: Do not bridge an ERC721 that was originally deployed on Optimism. This         bridge only supports ERC721s originally deployed on Ethereum. Users will need to         wait for the one-week challenge period to elapse before their Optimism-native NFT         can be refunded on L2." }, "bridgeERC721To(address,address,address,uint256,uint32,bytes)": { "notice": "Initiates a bridge of an NFT to some recipient's account on the other chain. Note         that the current owner of the token on this chain must approve this contract to         operate the NFT before it can be bridged.         **WARNING**: Do not bridge an ERC721 that was originally deployed on Optimism. This         bridge only supports ERC721s originally deployed on Ethereum. Users will need to         wait for the one-week challenge period to elapse before their Optimism-native NFT         can be refunded on L2." }, "constructor": { "notice": "Constructs the L1ERC721Bridge contract." }, "deposits(address,address,uint256)": { "notice": "Mapping of L1 token to L2 token to ID to boolean, indicating if the given L1 token         by ID was deposited for a given L2 token." }, "finalizeBridgeERC721(address,address,address,address,uint256,bytes)": { "notice": "Completes an ERC721 bridge from the other domain and sends the ERC721 token to the         recipient on this domain." }, "initialize(address,address)": { "notice": "Initializes the contract." }, "messenger()": { "notice": "Messenger contract on this domain." }, "otherBridge()": { "notice": "Contract of the bridge on the other network." }, "paused()": { "notice": "This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op." }, "superchainConfig()": { "notice": "Address of the SuperchainConfig contract." }, "version()": { "notice": "Semantic version." } }, "events": { "ERC721BridgeFinalized(address,address,address,address,uint256,bytes)": { "notice": "Emitted when an ERC721 bridge from the other network is finalized." }, "ERC721BridgeInitiated(address,address,address,address,uint256,bytes)": { "notice": "Emitted when an ERC721 bridge to the other network is initiated." } }, "notice": "The L1 ERC721 bridge is a contract which works together with the L2 ERC721 bridge to         make it possible to transfer ERC721 tokens from Ethereum to Optimism. This contract         acts as an escrow for ERC721 tokens deposited into L2." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "MESSENGER()": { "returns": { "_0": "Messenger contract on this domain." } }, "OTHER_BRIDGE()": { "returns": { "_0": "Contract of the bridge on the other network." } }, "bridgeERC721(address,address,uint256,uint32,bytes)": { "params": { "_extraData": "Optional data to forward to the other chain. Data supplied here will not                     be used to execute any code on the other chain and is only emitted as                     extra data for the convenience of off-chain tooling.", "_localToken": "Address of the ERC721 on this domain.", "_minGasLimit": "Minimum gas limit for the bridge message on the other domain.", "_remoteToken": "Address of the ERC721 on the remote domain.", "_tokenId": "Token ID to bridge." } }, "bridgeERC721To(address,address,address,uint256,uint32,bytes)": { "params": { "_extraData": "Optional data to forward to the other chain. Data supplied here will not                     be used to execute any code on the other chain and is only emitted as                     extra data for the convenience of off-chain tooling.", "_localToken": "Address of the ERC721 on this domain.", "_minGasLimit": "Minimum gas limit for the bridge message on the other domain.", "_remoteToken": "Address of the ERC721 on the remote domain.", "_to": "Address to receive the token on the other domain.", "_tokenId": "Token ID to bridge." } }, "finalizeBridgeERC721(address,address,address,address,uint256,bytes)": { "params": { "_extraData": "Optional data to forward to L2.                     Data supplied here will not be used to execute any code on L2 and is                     only emitted as extra data for the convenience of off-chain tooling.", "_from": "Address that triggered the bridge on the other domain.", "_localToken": "Address of the ERC721 token on this domain.", "_remoteToken": "Address of the ERC721 token on the other domain.", "_to": "Address to receive the token on this domain.", "_tokenId": "ID of the token being deposited." } }, "initialize(address,address)": { "params": { "_messenger": "Contract of the CrossDomainMessenger on this network.", "_superchainConfig": "Contract of the SuperchainConfig contract on this network." } }, "paused()": { "returns": { "_0": "Whether or not the contract is paused." } } }, "title": "L1ERC721Bridge" }, "ast": { "absolutePath": "src/L1/L1ERC721Bridge.sol", "id": 85419, "exportedSymbols": { "Constants": [103096], "CrossDomainMessenger": [108888], "ERC721Bridge": [109118], "IERC721": [52560], "ISemver": [109417], "L1ERC721Bridge": [85418], "L2ERC721Bridge": [90723], "Predeploys": [104124], "StandardBridge": [111675], "SuperchainConfig": [88793] }, "nodeType": "SourceUnit", "src": "32:5389:131", "nodes": [{ "id": 85147, "nodeType": "PragmaDirective", "src": "32:23:131", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 85149, "nodeType": "ImportDirective", "src": "57:62:131", "nodes": [], "absolutePath": "src/universal/ERC721Bridge.sol", "file": "src/universal/ERC721Bridge.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 109119, "symbolAliases": [{ "foreign": { "id": 85148, "name": "ERC721Bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109118, "src": "66:12:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85151, "nodeType": "ImportDirective", "src": "120:75:131", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol", "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 52561, "symbolAliases": [{ "foreign": { "id": 85150, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52560, "src": "129:7:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85153, "nodeType": "ImportDirective", "src": "196:59:131", "nodes": [], "absolutePath": "src/L2/L2ERC721Bridge.sol", "file": "src/L2/L2ERC721Bridge.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 90724, "symbolAliases": [{ "foreign": { "id": 85152, "name": "L2ERC721Bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90723, "src": "205:14:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85155, "nodeType": "ImportDirective", "src": "256:52:131", "nodes": [], "absolutePath": "src/universal/ISemver.sol", "file": "src/universal/ISemver.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 109418, "symbolAliases": [{ "foreign": { "id": 85154, "name": "ISemver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109417, "src": "265:7:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85157, "nodeType": "ImportDirective", "src": "309:58:131", "nodes": [], "absolutePath": "src/libraries/Predeploys.sol", "file": "src/libraries/Predeploys.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 104125, "symbolAliases": [{ "foreign": { "id": 85156, "name": "Predeploys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104124, "src": "318:10:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85159, "nodeType": "ImportDirective", "src": "368:78:131", "nodes": [], "absolutePath": "src/universal/CrossDomainMessenger.sol", "file": "src/universal/CrossDomainMessenger.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 108889, "symbolAliases": [{ "foreign": { "id": 85158, "name": "CrossDomainMessenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108888, "src": "377:20:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85161, "nodeType": "ImportDirective", "src": "447:66:131", "nodes": [], "absolutePath": "src/universal/StandardBridge.sol", "file": "src/universal/StandardBridge.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 111676, "symbolAliases": [{ "foreign": { "id": 85160, "name": "StandardBridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111675, "src": "456:14:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85163, "nodeType": "ImportDirective", "src": "514:56:131", "nodes": [], "absolutePath": "src/libraries/Constants.sol", "file": "src/libraries/Constants.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 103097, "symbolAliases": [{ "foreign": { "id": 85162, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "523:9:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85165, "nodeType": "ImportDirective", "src": "571:63:131", "nodes": [], "absolutePath": "src/L1/SuperchainConfig.sol", "file": "src/L1/SuperchainConfig.sol", "nameLocation": "-1:-1:-1", "scope": 85419, "sourceUnit": 88794, "symbolAliases": [{ "foreign": { "id": 85164, "name": "SuperchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88793, "src": "580:16:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85418, "nodeType": "ContractDefinition", "src": "922:4498:131", "nodes": [{ "id": 85179, "nodeType": "VariableDeclaration", "src": "1134:80:131", "nodes": [], "constant": false, "documentation": { "id": 85171, "nodeType": "StructuredDocumentation", "src": "977:152:131", "text": "@notice Mapping of L1 token to L2 token to ID to boolean, indicating if the given L1 token\n         by ID was deposited for a given L2 token." }, "functionSelector": "5d93a3fc", "mutability": "mutable", "name": "deposits", "nameLocation": "1206:8:131", "scope": 85418, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$_$", "typeString": "mapping(address => mapping(address => mapping(uint256 => bool)))" }, "typeName": { "id": 85178, "keyType": { "id": 85172, "name": "address", "nodeType": "ElementaryTypeName", "src": "1142:7:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1134:64:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$_$", "typeString": "mapping(address => mapping(address => mapping(uint256 => bool)))" }, "valueType": { "id": 85177, "keyType": { "id": 85173, "name": "address", "nodeType": "ElementaryTypeName", "src": "1161:7:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1153:44:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$", "typeString": "mapping(address => mapping(uint256 => bool))" }, "valueType": { "id": 85176, "keyType": { "id": 85174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1180:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "1172:24:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" }, "valueType": { "id": 85175, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1191:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } } }, "visibility": "public" }, { "id": 85183, "nodeType": "VariableDeclaration", "src": "1279:40:131", "nodes": [], "constant": false, "documentation": { "id": 85180, "nodeType": "StructuredDocumentation", "src": "1221:53:131", "text": "@notice Address of the SuperchainConfig contract." }, "functionSelector": "35e80ab3", "mutability": "mutable", "name": "superchainConfig", "nameLocation": "1303:16:131", "scope": 85418, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, "typeName": { "id": 85182, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85181, "name": "SuperchainConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88793, "src": "1279:16:131" }, "referencedDeclaration": 88793, "src": "1279:16:131", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "visibility": "public" }, { "id": 85187, "nodeType": "VariableDeclaration", "src": "1389:40:131", "nodes": [], "baseFunctions": [109416], "constant": true, "documentation": { "id": 85184, "nodeType": "StructuredDocumentation", "src": "1326:58:131", "text": "@notice Semantic version.\n @custom:semver 2.1.0" }, "functionSelector": "54fd4d50", "mutability": "constant", "name": "version", "nameLocation": "1412:7:131", "scope": 85418, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 85185, "name": "string", "nodeType": "ElementaryTypeName", "src": "1389:6:131", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "hexValue": "322e312e30", "id": 85186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1422:7:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3bb4aeded157fe72f9bc813a9dc1bd69961c5b5f35dafc6dc601ab742eacac6b", "typeString": "literal_string \"2.1.0\"" }, "value": "2.1.0" }, "visibility": "public" }, { "id": 85209, "nodeType": "FunctionDefinition", "src": "1492:155:131", "nodes": [], "body": { "id": 85208, "nodeType": "Block", "src": "1521:126:131", "nodes": [], "statements": [{ "expression": { "arguments": [{ "arguments": [{ "arguments": [{ "hexValue": "30", "id": 85197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1585:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }], "id": 85196, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1577:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85195, "name": "address", "nodeType": "ElementaryTypeName", "src": "1577:7:131", "typeDescriptions": {} } }, "id": 85198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1577:10:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85194, "name": "CrossDomainMessenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108888, "src": "1556:20:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_CrossDomainMessenger_$108888_$", "typeString": "type(contract CrossDomainMessenger)" } }, "id": 85199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1556:32:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" } }, { "arguments": [{ "arguments": [{ "hexValue": "30", "id": 85203, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1634:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }], "id": 85202, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1626:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85201, "name": "address", "nodeType": "ElementaryTypeName", "src": "1626:7:131", "typeDescriptions": {} } }, "id": 85204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1626:10:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85200, "name": "SuperchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88793, "src": "1609:16:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SuperchainConfig_$88793_$", "typeString": "type(contract SuperchainConfig)" } }, "id": 85205, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1609:28:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" }, { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }], "id": 85193, "name": "initialize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85237, "src": "1531:10:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$108888_$_t_contract$_SuperchainConfig_$88793_$returns$__$", "typeString": "function (contract CrossDomainMessenger,contract SuperchainConfig)" } }, "id": 85206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_messenger", "_superchainConfig"], "nodeType": "FunctionCall", "src": "1531:109:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85207, "nodeType": "ExpressionStatement", "src": "1531:109:131" }] }, "documentation": { "id": 85188, "nodeType": "StructuredDocumentation", "src": "1436:51:131", "text": "@notice Constructs the L1ERC721Bridge contract." }, "implemented": true, "kind": "constructor", "modifiers": [{ "arguments": [], "id": 85191, "kind": "baseConstructorSpecifier", "modifierName": { "id": 85190, "name": "ERC721Bridge", "nodeType": "IdentifierPath", "referencedDeclaration": 109118, "src": "1506:12:131" }, "nodeType": "ModifierInvocation", "src": "1506:14:131" }], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 85189, "nodeType": "ParameterList", "parameters": [], "src": "1503:2:131" }, "returnParameters": { "id": 85192, "nodeType": "ParameterList", "parameters": [], "src": "1521:0:131" }, "scope": 85418, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 85237, "nodeType": "FunctionDefinition", "src": "1869:318:131", "nodes": [], "body": { "id": 85236, "nodeType": "Block", "src": "1977:210:131", "nodes": [], "statements": [{ "expression": { "id": 85223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 85221, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85183, "src": "1987:16:131", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 85222, "name": "_superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85216, "src": "2006:17:131", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "src": "1987:36:131", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 85224, "nodeType": "ExpressionStatement", "src": "1987:36:131" }, { "expression": { "arguments": [{ "id": 85226, "name": "_messenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85213, "src": "2079:10:131", "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" } }, { "arguments": [{ "arguments": [{ "expression": { "id": 85230, "name": "Predeploys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104124, "src": "2140:10:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Predeploys_$104124_$", "typeString": "type(library Predeploys)" } }, "id": 85231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "L2_ERC721_BRIDGE", "nodeType": "MemberAccess", "referencedDeclaration": 104012, "src": "2140:27:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85229, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2132:8:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { "id": 85228, "name": "address", "nodeType": "ElementaryTypeName", "src": "2132:8:131", "stateMutability": "payable", "typeDescriptions": {} } }, "id": 85232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2132:36:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 85227, "name": "StandardBridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111675, "src": "2117:14:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StandardBridge_$111675_$", "typeString": "type(contract StandardBridge)" } }, "id": 85233, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2117:52:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_StandardBridge_$111675", "typeString": "contract StandardBridge" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" }, { "typeIdentifier": "t_contract$_StandardBridge_$111675", "typeString": "contract StandardBridge" }], "id": 85225, "name": "__ERC721Bridge_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108995, "src": "2033:19:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$108888_$_t_contract$_StandardBridge_$111675_$returns$__$", "typeString": "function (contract CrossDomainMessenger,contract StandardBridge)" } }, "id": 85234, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_messenger", "_otherBridge"], "nodeType": "FunctionCall", "src": "2033:147:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85235, "nodeType": "ExpressionStatement", "src": "2033:147:131" }] }, "documentation": { "id": 85210, "nodeType": "StructuredDocumentation", "src": "1653:211:131", "text": "@notice Initializes the contract.\n @param _messenger   Contract of the CrossDomainMessenger on this network.\n @param _superchainConfig Contract of the SuperchainConfig contract on this network." }, "functionSelector": "485cc955", "implemented": true, "kind": "function", "modifiers": [{ "id": 85219, "kind": "modifierInvocation", "modifierName": { "id": 85218, "name": "initializer", "nodeType": "IdentifierPath", "referencedDeclaration": 49598, "src": "1965:11:131" }, "nodeType": "ModifierInvocation", "src": "1965:11:131" }], "name": "initialize", "nameLocation": "1878:10:131", "parameters": { "id": 85217, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85213, "mutability": "mutable", "name": "_messenger", "nameLocation": "1910:10:131", "nodeType": "VariableDeclaration", "scope": 85237, "src": "1889:31:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" }, "typeName": { "id": 85212, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85211, "name": "CrossDomainMessenger", "nodeType": "IdentifierPath", "referencedDeclaration": 108888, "src": "1889:20:131" }, "referencedDeclaration": 108888, "src": "1889:20:131", "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" } }, "visibility": "internal" }, { "constant": false, "id": 85216, "mutability": "mutable", "name": "_superchainConfig", "nameLocation": "1939:17:131", "nodeType": "VariableDeclaration", "scope": 85237, "src": "1922:34:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, "typeName": { "id": 85215, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85214, "name": "SuperchainConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88793, "src": "1922:16:131" }, "referencedDeclaration": 88793, "src": "1922:16:131", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "visibility": "internal" }], "src": "1888:69:131" }, "returnParameters": { "id": 85220, "nodeType": "ParameterList", "parameters": [], "src": "1977:0:131" }, "scope": 85418, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 85249, "nodeType": "FunctionDefinition", "src": "2226:103:131", "nodes": [], "body": { "id": 85248, "nodeType": "Block", "src": "2280:49:131", "nodes": [], "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 85244, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85183, "src": "2297:16:131", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 85245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "paused", "nodeType": "MemberAccess", "referencedDeclaration": 88707, "src": "2297:23:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, "id": 85246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2297:25:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 85243, "id": 85247, "nodeType": "Return", "src": "2290:32:131" }] }, "baseFunctions": [109024], "documentation": { "id": 85238, "nodeType": "StructuredDocumentation", "src": "2193:28:131", "text": "@inheritdoc ERC721Bridge" }, "functionSelector": "5c975abb", "implemented": true, "kind": "function", "modifiers": [], "name": "paused", "nameLocation": "2235:6:131", "overrides": { "id": 85240, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2256:8:131" }, "parameters": { "id": 85239, "nodeType": "ParameterList", "parameters": [], "src": "2241:2:131" }, "returnParameters": { "id": 85243, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85242, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 85249, "src": "2274:4:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 85241, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2274:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "2273:6:131" }, "scope": 85418, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 85330, "nodeType": "FunctionDefinition", "src": "3096:1207:131", "nodes": [], "body": { "id": 85329, "nodeType": "Block", "src": "3341:962:131", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 85271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 85268, "name": "paused", "nodeType": "Identifier", "overloadedDeclarations": [85249], "referencedDeclaration": 85249, "src": "3359:6:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, "id": 85269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3359:8:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "66616c7365", "id": 85270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3371:5:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "3359:17:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c314552433732314272696467653a20706175736564", "id": 85272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3378:24:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0547274687a86ca0a34590eabb05ad0a44aae82bbc5d30b7acda91288e349519", "typeString": "literal_string \"L1ERC721Bridge: paused\"" }, "value": "L1ERC721Bridge: paused" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0547274687a86ca0a34590eabb05ad0a44aae82bbc5d30b7acda91288e349519", "typeString": "literal_string \"L1ERC721Bridge: paused\"" }], "id": 85267, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3351:7:131", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 85273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3351:52:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85274, "nodeType": "ExpressionStatement", "src": "3351:52:131" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 85281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 85276, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85252, "src": "3421:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "id": 85279, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3444:4:131", "typeDescriptions": { "typeIdentifier": "t_contract$_L1ERC721Bridge_$85418", "typeString": "contract L1ERC721Bridge" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_L1ERC721Bridge_$85418", "typeString": "contract L1ERC721Bridge" }], "id": 85278, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3436:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85277, "name": "address", "nodeType": "ElementaryTypeName", "src": "3436:7:131", "typeDescriptions": {} } }, "id": 85280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3436:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3421:28:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c314552433732314272696467653a206c6f63616c20746f6b656e2063616e6e6f742062652073656c66", "id": 85282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3451:44:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_218d51cceb2e9e86022eea81b17e23e1e964bba3aa5268e422fe8d05e54eb832", "typeString": "literal_string \"L1ERC721Bridge: local token cannot be self\"" }, "value": "L1ERC721Bridge: local token cannot be self" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_218d51cceb2e9e86022eea81b17e23e1e964bba3aa5268e422fe8d05e54eb832", "typeString": "literal_string \"L1ERC721Bridge: local token cannot be self\"" }], "id": 85275, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3413:7:131", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 85283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3413:83:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85284, "nodeType": "ExpressionStatement", "src": "3413:83:131" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 85294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { "baseExpression": { "baseExpression": { "id": 85286, "name": "deposits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85179, "src": "3620:8:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$_$", "typeString": "mapping(address => mapping(address => mapping(uint256 => bool)))" } }, "id": 85288, "indexExpression": { "id": 85287, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85252, "src": "3629:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3620:21:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$", "typeString": "mapping(address => mapping(uint256 => bool))" } }, "id": 85290, "indexExpression": { "id": 85289, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85254, "src": "3642:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3620:35:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, "id": 85292, "indexExpression": { "id": 85291, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85260, "src": "3656:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3620:45:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "74727565", "id": 85293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3669:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "3620:53:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c314552433732314272696467653a20546f6b656e204944206973206e6f7420657363726f77656420696e20746865204c3120427269646765", "id": 85295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3687:59:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_bee7d98e66133cf40de344b202cc1df78b20213eed80aaf4210604281fdaa6af", "typeString": "literal_string \"L1ERC721Bridge: Token ID is not escrowed in the L1 Bridge\"" }, "value": "L1ERC721Bridge: Token ID is not escrowed in the L1 Bridge" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_bee7d98e66133cf40de344b202cc1df78b20213eed80aaf4210604281fdaa6af", "typeString": "literal_string \"L1ERC721Bridge: Token ID is not escrowed in the L1 Bridge\"" }], "id": 85285, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3599:7:131", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 85296, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3599:157:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85297, "nodeType": "ExpressionStatement", "src": "3599:157:131" }, { "expression": { "id": 85306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "baseExpression": { "id": 85298, "name": "deposits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85179, "src": "3878:8:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$_$", "typeString": "mapping(address => mapping(address => mapping(uint256 => bool)))" } }, "id": 85302, "indexExpression": { "id": 85299, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85252, "src": "3887:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3878:21:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$", "typeString": "mapping(address => mapping(uint256 => bool))" } }, "id": 85303, "indexExpression": { "id": 85300, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85254, "src": "3900:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3878:35:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, "id": 85304, "indexExpression": { "id": 85301, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85260, "src": "3914:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3878:45:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "66616c7365", "id": 85305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3926:5:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "3878:53:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 85307, "nodeType": "ExpressionStatement", "src": "3878:53:131" }, { "expression": { "arguments": [{ "arguments": [{ "id": 85314, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4107:4:131", "typeDescriptions": { "typeIdentifier": "t_contract$_L1ERC721Bridge_$85418", "typeString": "contract L1ERC721Bridge" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_L1ERC721Bridge_$85418", "typeString": "contract L1ERC721Bridge" }], "id": 85313, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4099:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85312, "name": "address", "nodeType": "ElementaryTypeName", "src": "4099:7:131", "typeDescriptions": {} } }, "id": 85315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4099:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85316, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85258, "src": "4118:3:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85317, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85260, "src": "4132:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "expression": { "arguments": [{ "id": 85309, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85252, "src": "4061:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85308, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52560, "src": "4053:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721_$52560_$", "typeString": "type(contract IERC721)" } }, "id": 85310, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4053:20:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC721_$52560", "typeString": "contract IERC721" } }, "id": 85311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 52515, "src": "4053:37:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256) external" } }, "id": 85318, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["from", "to", "tokenId"], "nodeType": "FunctionCall", "src": "4053:90:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85319, "nodeType": "ExpressionStatement", "src": "4053:90:131" }, { "eventCall": { "arguments": [{ "id": 85321, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85252, "src": "4236:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85322, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85254, "src": "4249:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85323, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85256, "src": "4263:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85324, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85258, "src": "4270:3:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85325, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85260, "src": "4275:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 85326, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85262, "src": "4285:10:131", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "id": 85320, "name": "ERC721BridgeFinalized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108949, "src": "4214:21:131", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,address,address,uint256,bytes memory)" } }, "id": 85327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4214:82:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85328, "nodeType": "EmitStatement", "src": "4209:87:131" }] }, "documentation": { "id": 85250, "nodeType": "StructuredDocumentation", "src": "2335:756:131", "text": "@notice Completes an ERC721 bridge from the other domain and sends the ERC721 token to the\n         recipient on this domain.\n @param _localToken  Address of the ERC721 token on this domain.\n @param _remoteToken Address of the ERC721 token on the other domain.\n @param _from        Address that triggered the bridge on the other domain.\n @param _to          Address to receive the token on this domain.\n @param _tokenId     ID of the token being deposited.\n @param _extraData   Optional data to forward to L2.\n                     Data supplied here will not be used to execute any code on L2 and is\n                     only emitted as extra data for the convenience of off-chain tooling." }, "functionSelector": "761f4493", "implemented": true, "kind": "function", "modifiers": [{ "id": 85265, "kind": "modifierInvocation", "modifierName": { "id": 85264, "name": "onlyOtherBridge", "nodeType": "IdentifierPath", "referencedDeclaration": 108974, "src": "3321:15:131" }, "nodeType": "ModifierInvocation", "src": "3321:15:131" }], "name": "finalizeBridgeERC721", "nameLocation": "3105:20:131", "parameters": { "id": 85263, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85252, "mutability": "mutable", "name": "_localToken", "nameLocation": "3143:11:131", "nodeType": "VariableDeclaration", "scope": 85330, "src": "3135:19:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85251, "name": "address", "nodeType": "ElementaryTypeName", "src": "3135:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85254, "mutability": "mutable", "name": "_remoteToken", "nameLocation": "3172:12:131", "nodeType": "VariableDeclaration", "scope": 85330, "src": "3164:20:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85253, "name": "address", "nodeType": "ElementaryTypeName", "src": "3164:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85256, "mutability": "mutable", "name": "_from", "nameLocation": "3202:5:131", "nodeType": "VariableDeclaration", "scope": 85330, "src": "3194:13:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85255, "name": "address", "nodeType": "ElementaryTypeName", "src": "3194:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85258, "mutability": "mutable", "name": "_to", "nameLocation": "3225:3:131", "nodeType": "VariableDeclaration", "scope": 85330, "src": "3217:11:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85257, "name": "address", "nodeType": "ElementaryTypeName", "src": "3217:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85260, "mutability": "mutable", "name": "_tokenId", "nameLocation": "3246:8:131", "nodeType": "VariableDeclaration", "scope": 85330, "src": "3238:16:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85259, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3238:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 85262, "mutability": "mutable", "name": "_extraData", "nameLocation": "3279:10:131", "nodeType": "VariableDeclaration", "scope": 85330, "src": "3264:25:131", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 85261, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3264:5:131", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "3125:170:131" }, "returnParameters": { "id": 85266, "nodeType": "ParameterList", "parameters": [], "src": "3341:0:131" }, "scope": 85418, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 85417, "nodeType": "FunctionDefinition", "src": "4342:1076:131", "nodes": [], "body": { "id": 85416, "nodeType": "Block", "src": "4610:808:131", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 85355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 85350, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85335, "src": "4628:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 85353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4652:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }], "id": 85352, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4644:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85351, "name": "address", "nodeType": "ElementaryTypeName", "src": "4644:7:131", "typeDescriptions": {} } }, "id": 85354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4644:10:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4628:26:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c314552433732314272696467653a2072656d6f746520746f6b656e2063616e6e6f742062652061646472657373283029", "id": 85356, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4656:51:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_14e51418e54e820a40fc2643b1167465f7abe28f86e3d4e777c562f03e420dd1", "typeString": "literal_string \"L1ERC721Bridge: remote token cannot be address(0)\"" }, "value": "L1ERC721Bridge: remote token cannot be address(0)" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_14e51418e54e820a40fc2643b1167465f7abe28f86e3d4e777c562f03e420dd1", "typeString": "literal_string \"L1ERC721Bridge: remote token cannot be address(0)\"" }], "id": 85349, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4620:7:131", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 85357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4620:88:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85358, "nodeType": "ExpressionStatement", "src": "4620:88:131" }, { "assignments": [85360], "declarations": [{ "constant": false, "id": 85360, "mutability": "mutable", "name": "message", "nameLocation": "4811:7:131", "nodeType": "VariableDeclaration", "scope": 85416, "src": "4798:20:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 85359, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4798:5:131", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "id": 85373, "initialValue": { "arguments": [{ "expression": { "expression": { "id": 85363, "name": "L2ERC721Bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90723, "src": "4857:14:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_L2ERC721Bridge_$90723_$", "typeString": "type(contract L2ERC721Bridge)" } }, "id": 85364, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "finalizeBridgeERC721", "nodeType": "MemberAccess", "referencedDeclaration": 90622, "src": "4857:35:131", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", "typeString": "function L2ERC721Bridge.finalizeBridgeERC721(address,address,address,address,uint256,bytes calldata)" } }, "id": 85365, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "src": "4857:44:131", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, { "id": 85366, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85335, "src": "4903:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85367, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85333, "src": "4917:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85368, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85337, "src": "4930:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85369, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85339, "src": "4937:3:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85370, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85341, "src": "4942:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 85371, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85345, "src": "4952:10:131", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "expression": { "id": 85361, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4821:3:131", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 85362, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "4821:22:131", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, "id": 85372, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4821:151:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4798:174:131" }, { "expression": { "id": 85382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "baseExpression": { "id": 85374, "name": "deposits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85179, "src": "5017:8:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$_$", "typeString": "mapping(address => mapping(address => mapping(uint256 => bool)))" } }, "id": 85378, "indexExpression": { "id": 85375, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85333, "src": "5026:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5017:21:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$", "typeString": "mapping(address => mapping(uint256 => bool))" } }, "id": 85379, "indexExpression": { "id": 85376, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85335, "src": "5039:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5017:35:131", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, "id": 85380, "indexExpression": { "id": 85377, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85341, "src": "5053:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5017:45:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "74727565", "id": 85381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5065:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "5017:52:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 85383, "nodeType": "ExpressionStatement", "src": "5017:52:131" }, { "expression": { "arguments": [{ "id": 85388, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85337, "src": "5121:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [{ "id": 85391, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5140:4:131", "typeDescriptions": { "typeIdentifier": "t_contract$_L1ERC721Bridge_$85418", "typeString": "contract L1ERC721Bridge" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_L1ERC721Bridge_$85418", "typeString": "contract L1ERC721Bridge" }], "id": 85390, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5132:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85389, "name": "address", "nodeType": "ElementaryTypeName", "src": "5132:7:131", "typeDescriptions": {} } }, "id": 85392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5132:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85393, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85341, "src": "5156:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "expression": { "arguments": [{ "id": 85385, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85333, "src": "5087:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85384, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52560, "src": "5079:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721_$52560_$", "typeString": "type(contract IERC721)" } }, "id": 85386, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5079:20:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC721_$52560", "typeString": "contract IERC721" } }, "id": 85387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 52525, "src": "5079:33:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256) external" } }, "id": 85394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["from", "to", "tokenId"], "nodeType": "FunctionCall", "src": "5079:88:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85395, "nodeType": "ExpressionStatement", "src": "5079:88:131" }, { "expression": { "arguments": [{ "arguments": [{ "id": 85401, "name": "otherBridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108914, "src": "5252:11:131", "typeDescriptions": { "typeIdentifier": "t_contract$_StandardBridge_$111675", "typeString": "contract StandardBridge" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_StandardBridge_$111675", "typeString": "contract StandardBridge" }], "id": 85400, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5244:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85399, "name": "address", "nodeType": "ElementaryTypeName", "src": "5244:7:131", "typeDescriptions": {} } }, "id": 85402, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5244:20:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85403, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85360, "src": "5276:7:131", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "id": 85404, "name": "_minGasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85343, "src": "5299:12:131", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" }], "expression": { "id": 85396, "name": "messenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108910, "src": "5211:9:131", "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" } }, "id": 85398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sendMessage", "nodeType": "MemberAccess", "referencedDeclaration": 108520, "src": "5211:21:131", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$", "typeString": "function (address,bytes memory,uint32) payable external" } }, "id": 85405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_target", "_message", "_minGasLimit"], "nodeType": "FunctionCall", "src": "5211:103:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85406, "nodeType": "ExpressionStatement", "src": "5211:103:131" }, { "eventCall": { "arguments": [{ "id": 85408, "name": "_localToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85333, "src": "5351:11:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85409, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85335, "src": "5364:12:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85410, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85337, "src": "5378:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85411, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85339, "src": "5385:3:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85412, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85341, "src": "5390:8:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 85413, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85345, "src": "5400:10:131", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "id": 85407, "name": "ERC721BridgeInitiated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108934, "src": "5329:21:131", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,address,address,uint256,bytes memory)" } }, "id": 85414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5329:82:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85415, "nodeType": "EmitStatement", "src": "5324:87:131" }] }, "baseFunctions": [109117], "documentation": { "id": 85331, "nodeType": "StructuredDocumentation", "src": "4309:28:131", "text": "@inheritdoc ERC721Bridge" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_initiateBridgeERC721", "nameLocation": "4351:21:131", "overrides": { "id": 85347, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4597:8:131" }, "parameters": { "id": 85346, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85333, "mutability": "mutable", "name": "_localToken", "nameLocation": "4390:11:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4382:19:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85332, "name": "address", "nodeType": "ElementaryTypeName", "src": "4382:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85335, "mutability": "mutable", "name": "_remoteToken", "nameLocation": "4419:12:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4411:20:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85334, "name": "address", "nodeType": "ElementaryTypeName", "src": "4411:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85337, "mutability": "mutable", "name": "_from", "nameLocation": "4449:5:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4441:13:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85336, "name": "address", "nodeType": "ElementaryTypeName", "src": "4441:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85339, "mutability": "mutable", "name": "_to", "nameLocation": "4472:3:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4464:11:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85338, "name": "address", "nodeType": "ElementaryTypeName", "src": "4464:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85341, "mutability": "mutable", "name": "_tokenId", "nameLocation": "4493:8:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4485:16:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85340, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4485:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 85343, "mutability": "mutable", "name": "_minGasLimit", "nameLocation": "4518:12:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4511:19:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 85342, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4511:6:131", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "visibility": "internal" }, { "constant": false, "id": 85345, "mutability": "mutable", "name": "_extraData", "nameLocation": "4555:10:131", "nodeType": "VariableDeclaration", "scope": 85417, "src": "4540:25:131", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 85344, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4540:5:131", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "4372:199:131" }, "returnParameters": { "id": 85348, "nodeType": "ParameterList", "parameters": [], "src": "4610:0:131" }, "scope": 85418, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 85167, "name": "ERC721Bridge", "nodeType": "IdentifierPath", "referencedDeclaration": 109118, "src": "949:12:131" }, "id": 85168, "nodeType": "InheritanceSpecifier", "src": "949:12:131" }, { "baseName": { "id": 85169, "name": "ISemver", "nodeType": "IdentifierPath", "referencedDeclaration": 109417, "src": "963:7:131" }, "id": 85170, "nodeType": "InheritanceSpecifier", "src": "963:7:131" }], "canonicalName": "L1ERC721Bridge", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 85166, "nodeType": "StructuredDocumentation", "src": "636:286:131", "text": "@title L1ERC721Bridge\n @notice The L1 ERC721 bridge is a contract which works together with the L2 ERC721 bridge to\n         make it possible to transfer ERC721 tokens from Ethereum to Optimism. This contract\n         acts as an escrow for ERC721 tokens deposited into L2." }, "fullyImplemented": true, "linearizedBaseContracts": [85418, 109417, 109118, 49678], "name": "L1ERC721Bridge", "nameLocation": "931:14:131", "scope": 85419, "usedErrors": [] }], "license": "MIT" }, "id": 131 }
