{ "abi": [{ "type": "constructor", "inputs": [{ "name": "_bridge", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_name", "type": "string", "internalType": "string" }, { "name": "_symbol", "type": "string", "internalType": "string" }, { "name": "_decimals", "type": "uint8", "internalType": "uint8" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "BRIDGE", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "REMOTE_TOKEN", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "allowance", "inputs": [{ "name": "owner", "type": "address", "internalType": "address" }, { "name": "spender", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "approve", "inputs": [{ "name": "spender", "type": "address", "internalType": "address" }, { "name": "amount", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "balanceOf", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "bridge", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "burn", "inputs": [{ "name": "_from", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "decimals", "inputs": [], "outputs": [{ "name": "", "type": "uint8", "internalType": "uint8" }], "stateMutability": "view" }, { "type": "function", "name": "decreaseAllowance", "inputs": [{ "name": "spender", "type": "address", "internalType": "address" }, { "name": "subtractedValue", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "increaseAllowance", "inputs": [{ "name": "spender", "type": "address", "internalType": "address" }, { "name": "addedValue", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "l1Token", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "l2Bridge", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "mint", "inputs": [{ "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "name", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "function", "name": "remoteToken", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "supportsInterface", "inputs": [{ "name": "_interfaceId", "type": "bytes4", "internalType": "bytes4" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "pure" }, { "type": "function", "name": "symbol", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "function", "name": "totalSupply", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "transfer", "inputs": [{ "name": "to", "type": "address", "internalType": "address" }, { "name": "amount", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "transferFrom", "inputs": [{ "name": "from", "type": "address", "internalType": "address" }, { "name": "to", "type": "address", "internalType": "address" }, { "name": "amount", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "version", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "event", "name": "Approval", "inputs": [{ "name": "owner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "spender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "Burn", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "Mint", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "Transfer", "inputs": [{ "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, { "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }], "bytecode": { "object": "0x60e06040523480156200001157600080fd5b506040516200178a3803806200178a833981016040819052620000349162000163565b828260036200004483826200029e565b5060046200005382826200029e565b5050506001600160a01b039384166080529390921660a052505060ff1660c0526200036a565b80516001600160a01b03811681146200009157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000be57600080fd5b81516001600160401b0380821115620000db57620000db62000096565b604051601f8301601f19908116603f0116810190828211818310171562000106576200010662000096565b816040528381526020925086838588010111156200012357600080fd5b600091505b8382101562000147578582018301518183018401529082019062000128565b83821115620001595760008385830101525b9695505050505050565b600080600080600060a086880312156200017c57600080fd5b620001878662000079565b9450620001976020870162000079565b60408701519094506001600160401b0380821115620001b557600080fd5b620001c389838a01620000ac565b94506060880151915080821115620001da57600080fd5b50620001e988828901620000ac565b925050608086015160ff811681146200020157600080fd5b809150509295509295909350565b600181811c908216806200022457607f821691505b6020821081036200024557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029957600081815260208120601f850160051c81016020861015620002745750805b601f850160051c820191505b81811015620002955782815560010162000280565b5050505b505050565b81516001600160401b03811115620002ba57620002ba62000096565b620002d281620002cb84546200020f565b846200024b565b602080601f8311600181146200030a5760008415620002f15750858301515b600019600386901b1c1916600185901b17855562000295565b600085815260208120601f198616915b828110156200033b578886015182559484019460019091019084016200031a565b50858210156200035a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c0516113d4620003b6600039600061024401526000818161034b015281816103e001528181610625015261075c0152600081816101a9015261037101526113d46000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063ae1f6aaf1161008c578063dd62ed3e11610066578063dd62ed3e14610395578063e78cea9214610349578063ee9a31a2146103db57600080fd5b8063ae1f6aaf14610349578063c01e1bd61461036f578063d6c0b2c41461036f57600080fd5b80639dc29fac116100bd5780639dc29fac14610310578063a457c2d714610323578063a9059cbb1461033657600080fd5b806370a08231146102d257806395d89b411461030857600080fd5b806323b872dd1161012f5780633950935111610114578063395093511461026e57806340c10f191461028157806354fd4d501461029657600080fd5b806323b872dd1461022a578063313ce5671461023d57600080fd5b806306fdde031161016057806306fdde03146101f0578063095ea7b31461020557806318160ddd1461021857600080fd5b806301ffc9a71461017c578063033964be146101a4575b600080fd5b61018f61018a36600461117d565b610402565b60405190151581526020015b60405180910390f35b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f86104f3565b60405161019b91906111c6565b61018f610213366004611262565b610585565b6002545b60405190815260200161019b565b61018f61023836600461128c565b61059d565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161019b565b61018f61027c366004611262565b6105c1565b61029461028f366004611262565b61060d565b005b6101f86040518060400160405280600581526020017f312e332e3000000000000000000000000000000000000000000000000000000081525081565b61021c6102e03660046112c8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101f8610735565b61029461031e366004611262565b610744565b61018f610331366004611262565b61085b565b61018f610344366004611262565b61092c565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b61021c6103a33660046112e3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806104bb57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b806104ea57507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461050290611316565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611316565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b60003361059381858561093a565b5060019392505050565b6000336105ab858285610aee565b6105b6858585610bc5565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906105939082908690610608908790611398565b61093a565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106e18282610e78565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161072991815260200190565b60405180910390a25050565b60606004805461050290611316565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106ce565b6108138282610f98565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161072991815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b6105b6828686840361093a565b600033610593818585610bc5565b73ffffffffffffffffffffffffffffffffffffffff83166109dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bbf5781811015610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610bbf848484840361093a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610e05908490611398565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e6b91815260200190565b60405180910390a3610bbf565b73ffffffffffffffffffffffffffffffffffffffff8216610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b8060026000828254610f079190611398565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f41908490611398565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061112d9084906113b0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ae1565b60006020828403121561118f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146111bf57600080fd5b9392505050565b600060208083528351808285015260005b818110156111f3578581018301518582016040015282016111d7565b81811115611205576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b6000806000606084860312156112a157600080fd5b6112aa84611239565b92506112b860208501611239565b9150604084013590509250925092565b6000602082840312156112da57600080fd5b6111bf82611239565b600080604083850312156112f657600080fd5b6112ff83611239565b915061130d60208401611239565b90509250929050565b600181811c9082168061132a57607f821691505b602082108103611363577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113ab576113ab611369565b500190565b6000828210156113c2576113c2611369565b50039056fea164736f6c634300080f000a", "sourceMap": "833:4510:229:-:0;;;2268:292;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2440:5;2447:7;2044:5:45;:13;2440:5:229;2044::45;:13;:::i;:::-;-1:-1:-1;2067:7:45;:17;2077:7;2067;:17;:::i;:::-;-1:-1:-1;;;;;;;;2470:27:229;;::::1;;::::0;2507:16;;;::::1;;::::0;-1:-1:-1;;2533:20:229::1;;;::::0;833:4510;;14:177:357;93:13;;-1:-1:-1;;;;;135:31:357;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:885;382:5;435:3;428:4;420:6;416:17;412:27;402:55;;453:1;450;443:12;402:55;476:13;;-1:-1:-1;;;;;538:10:357;;;535:36;;;551:18;;:::i;:::-;626:2;620:9;594:2;680:13;;-1:-1:-1;;676:22:357;;;700:2;672:31;668:40;656:53;;;724:18;;;744:22;;;721:46;718:72;;;770:18;;:::i;:::-;810:10;806:2;799:22;845:2;837:6;830:18;867:4;857:14;;912:3;907:2;902;894:6;890:15;886:24;883:33;880:53;;;929:1;926;919:12;880:53;951:1;942:10;;961:133;975:2;972:1;969:9;961:133;;;1063:14;;;1059:23;;1053:30;1032:14;;;1028:23;;1021:63;986:10;;;;961:133;;;1112:2;1109:1;1106:9;1103:80;;;1171:1;1166:2;1161;1153:6;1149:15;1145:24;1138:35;1103:80;1201:6;328:885;-1:-1:-1;;;;;;328:885:357:o;1218:884::-;1342:6;1350;1358;1366;1374;1427:3;1415:9;1406:7;1402:23;1398:33;1395:53;;;1444:1;1441;1434:12;1395:53;1467:40;1497:9;1467:40;:::i;:::-;1457:50;;1526:49;1571:2;1560:9;1556:18;1526:49;:::i;:::-;1619:2;1604:18;;1598:25;1516:59;;-1:-1:-1;;;;;;1672:14:357;;;1669:34;;;1699:1;1696;1689:12;1669:34;1722:61;1775:7;1766:6;1755:9;1751:22;1722:61;:::i;:::-;1712:71;;1829:2;1818:9;1814:18;1808:25;1792:41;;1858:2;1848:8;1845:16;1842:36;;;1874:1;1871;1864:12;1842:36;;1897:63;1952:7;1941:8;1930:9;1926:24;1897:63;:::i;:::-;1887:73;;;2003:3;1992:9;1988:19;1982:26;2048:4;2041:5;2037:16;2030:5;2027:27;2017:55;;2068:1;2065;2058:12;2017:55;2091:5;2081:15;;;1218:884;;;;;;;;:::o;2107:380::-;2186:1;2182:12;;;;2229;;;2250:61;;2304:4;2296:6;2292:17;2282:27;;2250:61;2357:2;2349:6;2346:14;2326:18;2323:38;2320:161;;2403:10;2398:3;2394:20;2391:1;2384:31;2438:4;2435:1;2428:15;2466:4;2463:1;2456:15;2320:161;;2107:380;;;:::o;2618:545::-;2720:2;2715:3;2712:11;2709:448;;;2756:1;2781:5;2777:2;2770:17;2826:4;2822:2;2812:19;2896:2;2884:10;2880:19;2877:1;2873:27;2867:4;2863:38;2932:4;2920:10;2917:20;2914:47;;;-1:-1:-1;2955:4:357;2914:47;3010:2;3005:3;3001:12;2998:1;2994:20;2988:4;2984:31;2974:41;;3065:82;3083:2;3076:5;3073:13;3065:82;;;3128:17;;;3109:1;3098:13;3065:82;;;3069:3;;;2709:448;2618:545;;;:::o;3339:1352::-;3459:10;;-1:-1:-1;;;;;3481:30:357;;3478:56;;;3514:18;;:::i;:::-;3543:97;3633:6;3593:38;3625:4;3619:11;3593:38;:::i;:::-;3587:4;3543:97;:::i;:::-;3695:4;;3759:2;3748:14;;3776:1;3771:663;;;;4478:1;4495:6;4492:89;;;-1:-1:-1;4547:19:357;;;4541:26;4492:89;-1:-1:-1;;3296:1:357;3292:11;;;3288:24;3284:29;3274:40;3320:1;3316:11;;;3271:57;4594:81;;3741:944;;3771:663;2565:1;2558:14;;;2602:4;2589:18;;-1:-1:-1;;3807:20:357;;;3925:236;3939:7;3936:1;3933:14;3925:236;;;4028:19;;;4022:26;4007:42;;4120:27;;;;4088:1;4076:14;;;;3955:19;;3925:236;;;3929:3;4189:6;4180:7;4177:19;4174:201;;;4250:19;;;4244:26;-1:-1:-1;;4333:1:357;4329:14;;;4345:3;4325:24;4321:37;4317:42;4302:58;4287:74;;4174:201;-1:-1:-1;;;;;4421:1:357;4405:14;;;4401:22;4388:36;;-1:-1:-1;3339:1352:357:o;:::-;833:4510:229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063ae1f6aaf1161008c578063dd62ed3e11610066578063dd62ed3e14610395578063e78cea9214610349578063ee9a31a2146103db57600080fd5b8063ae1f6aaf14610349578063c01e1bd61461036f578063d6c0b2c41461036f57600080fd5b80639dc29fac116100bd5780639dc29fac14610310578063a457c2d714610323578063a9059cbb1461033657600080fd5b806370a08231146102d257806395d89b411461030857600080fd5b806323b872dd1161012f5780633950935111610114578063395093511461026e57806340c10f191461028157806354fd4d501461029657600080fd5b806323b872dd1461022a578063313ce5671461023d57600080fd5b806306fdde031161016057806306fdde03146101f0578063095ea7b31461020557806318160ddd1461021857600080fd5b806301ffc9a71461017c578063033964be146101a4575b600080fd5b61018f61018a36600461117d565b610402565b60405190151581526020015b60405180910390f35b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f86104f3565b60405161019b91906111c6565b61018f610213366004611262565b610585565b6002545b60405190815260200161019b565b61018f61023836600461128c565b61059d565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161019b565b61018f61027c366004611262565b6105c1565b61029461028f366004611262565b61060d565b005b6101f86040518060400160405280600581526020017f312e332e3000000000000000000000000000000000000000000000000000000081525081565b61021c6102e03660046112c8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101f8610735565b61029461031e366004611262565b610744565b61018f610331366004611262565b61085b565b61018f610344366004611262565b61092c565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b61021c6103a33660046112e3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806104bb57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b806104ea57507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461050290611316565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611316565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b60003361059381858561093a565b5060019392505050565b6000336105ab858285610aee565b6105b6858585610bc5565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906105939082908690610608908790611398565b61093a565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106e18282610e78565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161072991815260200190565b60405180910390a25050565b60606004805461050290611316565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106ce565b6108138282610f98565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161072991815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b6105b6828686840361093a565b600033610593818585610bc5565b73ffffffffffffffffffffffffffffffffffffffff83166109dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bbf5781811015610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610bbf848484840361093a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610e05908490611398565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e6b91815260200190565b60405180910390a3610bbf565b73ffffffffffffffffffffffffffffffffffffffff8216610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b8060026000828254610f079190611398565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f41908490611398565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061112d9084906113b0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ae1565b60006020828403121561118f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146111bf57600080fd5b9392505050565b600060208083528351808285015260005b818110156111f3578581018301518582016040015282016111d7565b81811115611205576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b6000806000606084860312156112a157600080fd5b6112aa84611239565b92506112b860208501611239565b9150604084013590509250925092565b6000602082840312156112da57600080fd5b6111bf82611239565b600080604083850312156112f657600080fd5b6112ff83611239565b915061130d60208401611239565b90509250929050565b600181811c9082168061132a57607f821691505b602082108103611363577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113ab576113ab611369565b500190565b6000828210156113c2576113c2611369565b50039056fea164736f6c634300080f000a", "sourceMap": "833:4510:229:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3616:519;;;;;;:::i;:::-;;:::i;:::-;;;516:14:357;;509:22;491:41;;479:2;464:18;3616:519:229;;;;;;;;1022:37;;;;;;;;719:42:357;707:55;;;689:74;;677:2;662:18;1022:37:229;543:226:357;2156:98:45;;;:::i;:::-;;;;;;;:::i;4433:197::-;;;;;;:::i;:::-;;:::i;3244:106::-;3331:12;;3244:106;;;2041:25:357;;;2029:2;2014:18;3244:106:45;1895:177:357;5192:286:45;;;;;;:::i;:::-;;:::i;5252:89:229:-;;;2582:4:357;5326:8:229;2570:17:357;2552:36;;2540:2;2525:18;5252:89:229;2410:184:357;5873:234:45;;;;;;:::i;:::-;;:::i;2739:254:229:-;;;;;;:::i;:::-;;:::i;:::-;;2009:40;;;;;;;;;;;;;;;;;;;;;3408:125:45;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;3174:260:229:-;;;;;;:::i;:::-;;:::i;6594:427:45:-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;4434:80:229:-;4501:6;4434:80;;4248:85;4314:12;4248:85;;3976:149:45;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;1129:31:229;;;;;3616:519;3695:4;3727:25;3844:38;3997:40;4054:22;;;;;;:48;;-1:-1:-1;4080:22:229;;;;;;;;4054:48;:74;;;-1:-1:-1;4106:22:229;;;;;;;;4054:74;4047:81;3616:519;-1:-1:-1;;;;;3616:519:229:o;2156:98:45:-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:60;4570:32:45;719:10:60;4586:7:45;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:45;;4433:197;-1:-1:-1;;;4433:197:45:o;5192:286::-;5319:4;719:10:60;5375:38:45;5391:4;719:10:60;5406:6:45;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:45;;5192:286;-1:-1:-1;;;;5192:286:45:o;5873:234::-;719:10:60;5961:4:45;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:60;6015:64:45;;719:10:60;;4091:27:45;;6040:38;;6068:10;;6040:38;:::i;:::-;6015:8;:64::i;2739:254:229:-;1845:10;:20;1859:6;1845:20;;1837:85;;;;;;;4021:2:357;1837:85:229;;;4003:21:357;4060:2;4040:18;;;4033:30;4099:34;4079:18;;;4072:62;4170:22;4150:18;;;4143:50;4210:19;;1837:85:229;;;;;;;;;2934:19:::1;2940:3;2945:7;2934:5;:19::i;:::-;2973:3;2968:18;;;2978:7;2968:18;;;;2041:25:357::0;;2029:2;2014:18;;1895:177;2968:18:229::1;;;;;;;;2739:254:::0;;:::o;2367:102:45:-;2423:13;2455:7;2448:14;;;;;:::i;3174:260:229:-;1845:10;:20;1859:6;1845:20;;1837:85;;;;;;;4021:2:357;1837:85:229;;;4003:21:357;4060:2;4040:18;;;4033:30;4099:34;4079:18;;;4072:62;4170:22;4150:18;;;4143:50;4210:19;;1837:85:229;3819:416:357;1837:85:229;3371:21:::1;3377:5;3384:7;3371:5;:21::i;:::-;3412:5;3407:20;;;3419:7;3407:20;;;;2041:25:357::0;;2029:2;2014:18;;1895:177;6594:427:45;719:10:60;6687:4:45;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6687:4;;719:10:60;6831:15:45;6811:16;:35;;6803:85;;;;;;;4442:2:357;6803:85:45;;;4424:21:357;4481:2;4461:18;;;4454:30;4520:34;4500:18;;;4493:62;4591:7;4571:18;;;4564:35;4616:19;;6803:85:45;4240:401:357;6803:85:45;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:60;3862:28:45;719:10:60;3879:2:45;3883:6;3862:9;:28::i;10110:370::-;10241:19;;;10233:68;;;;;;;4848:2:357;10233:68:45;;;4830:21:357;4887:2;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4997:6;4977:18;;;4970:34;5021:19;;10233:68:45;4646:400:357;10233:68:45;10319:21;;;10311:68;;;;;;;5253:2:357;10311:68:45;;;5235:21:357;5292:2;5272:18;;;5265:30;5331:34;5311:18;;;5304:62;5402:4;5382:18;;;5375:32;5424:19;;10311:68:45;5051:398:357;10311:68:45;10390:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;2041:25:357;;;10441:32:45;;2014:18:357;10441:32:45;;;;;;;;10110:370;;;:::o;10761:441::-;4091:18;;;;10891:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10977:17;10957:37;;10953:243;;11038:6;11018:16;:26;;11010:68;;;;;;;5656:2:357;11010:68:45;;;5638:21:357;5695:2;5675:18;;;5668:30;5734:31;5714:18;;;5707:59;5783:18;;11010:68:45;5454:353:357;11010:68:45;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;7601:18;;;7593:68;;;;;;;6014:2:357;7593:68:45;;;5996:21:357;6053:2;6033:18;;;6026:30;6092:34;6072:18;;;6065:62;6163:7;6143:18;;;6136:35;6188:19;;7593:68:45;5812:401:357;7593:68:45;7679:16;;;7671:64;;;;;;;6420:2:357;7671:64:45;;;6402:21:357;6459:2;6439:18;;;6432:30;6498:34;6478:18;;;6471:62;6569:5;6549:18;;;6542:33;6592:19;;7671:64:45;6218:399:357;7671:64:45;7817:15;;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;;;;6824:2:357;7842:72:45;;;6806:21:357;6863:2;6843:18;;;6836:30;6902:34;6882:18;;;6875:62;6973:8;6953:18;;;6946:36;6999:19;;7842:72:45;6622:402:357;7842:72:45;7948:15;;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;8045:26;;8054:4;8045:26;;;8064:6;8045:26;;;;2041:25:357;;2029:2;2014:18;;1895:177;8045:26:45;;;;;;;;8082:37;9111:576;8402:389;8485:21;;;8477:65;;;;;;;7231:2:357;8477:65:45;;;7213:21:357;7270:2;7250:18;;;7243:30;7309:33;7289:18;;;7282:61;7360:18;;8477:65:45;7029:355:357;8477:65:45;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8645:18:45;;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:45;;2041:25:357;;;8688:37:45;;;;8705:1;;8688:37;;2029:2:357;2014:18;8688:37:45;;;;;;;8402:389;;:::o;9111:576::-;9194:21;;;9186:67;;;;;;;7591:2:357;9186:67:45;;;7573:21:357;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;7740:3;7720:18;;;7713:31;7761:19;;9186:67:45;7389:397:357;9186:67:45;9349:18;;;9324:22;9349:18;;;;;;;;;;;9385:24;;;;9377:71;;;;;;;7993:2:357;9377:71:45;;;7975:21:357;8032:2;8012:18;;;8005:30;8071:34;8051:18;;;8044:62;8142:4;8122:18;;;8115:32;8164:19;;9377:71:45;7791:398:357;9377:71:45;9482:18;;;:9;:18;;;;;;;;;;9503:23;;;9482:44;;9546:12;:22;;9520:6;;9482:9;9546:22;;9520:6;;9546:22;:::i;:::-;;;;-1:-1:-1;;9584:37:45;;2041:25:357;;;9610:1:45;;9584:37;;;;;;2029:2:357;2014:18;9584:37:45;1895:177:357;14:332;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:357:o;774:656::-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1346:2:357;1334:15;1351:66;1330:88;1315:104;;;;1421:2;1311:113;;774:656;-1:-1:-1;;;774:656:357:o;1435:196::-;1503:20;;1563:42;1552:54;;1542:65;;1532:93;;1621:1;1618;1611:12;1532:93;1435:196;;;:::o;1636:254::-;1704:6;1712;1765:2;1753:9;1744:7;1740:23;1736:32;1733:52;;;1781:1;1778;1771:12;1733:52;1804:29;1823:9;1804:29;:::i;:::-;1794:39;1880:2;1865:18;;;;1852:32;;-1:-1:-1;;;1636:254:357:o;2077:328::-;2154:6;2162;2170;2223:2;2211:9;2202:7;2198:23;2194:32;2191:52;;;2239:1;2236;2229:12;2191:52;2262:29;2281:9;2262:29;:::i;:::-;2252:39;;2310:38;2344:2;2333:9;2329:18;2310:38;:::i;:::-;2300:48;;2395:2;2384:9;2380:18;2367:32;2357:42;;2077:328;;;;;:::o;2599:186::-;2658:6;2711:2;2699:9;2690:7;2686:23;2682:32;2679:52;;;2727:1;2724;2717:12;2679:52;2750:29;2769:9;2750:29;:::i;2790:260::-;2858:6;2866;2919:2;2907:9;2898:7;2894:23;2890:32;2887:52;;;2935:1;2932;2925:12;2887:52;2958:29;2977:9;2958:29;:::i;:::-;2948:39;;3006:38;3040:2;3029:9;3025:18;3006:38;:::i;:::-;2996:48;;2790:260;;;;;:::o;3055:437::-;3134:1;3130:12;;;;3177;;;3198:61;;3252:4;3244:6;3240:17;3230:27;;3198:61;3305:2;3297:6;3294:14;3274:18;3271:38;3268:218;;3342:77;3339:1;3332:88;3443:4;3440:1;3433:15;3471:4;3468:1;3461:15;3268:218;;3055:437;;;:::o;3497:184::-;3549:77;3546:1;3539:88;3646:4;3643:1;3636:15;3670:4;3667:1;3660:15;3686:128;3726:3;3757:1;3753:6;3750:1;3747:13;3744:39;;;3763:18;;:::i;:::-;-1:-1:-1;3799:9:357;;3686:128::o;8194:125::-;8234:4;8262:1;8259;8256:8;8253:34;;;8267:18;;:::i;:::-;-1:-1:-1;8304:9:357;;8194:125::o", "linkReferences": {}, "immutableReferences": { "109440": [{ "start": 425, "length": 32 }, { "start": 881, "length": 32 }], "109443": [{ "start": 843, "length": 32 }, { "start": 992, "length": 32 }, { "start": 1573, "length": 32 }, { "start": 1884, "length": 32 }], "109446": [{ "start": 580, "length": 32 }] } }, "methodIdentifiers": { "BRIDGE()": "ee9a31a2", "REMOTE_TOKEN()": "033964be", "allowance(address,address)": "dd62ed3e", "approve(address,uint256)": "095ea7b3", "balanceOf(address)": "70a08231", "bridge()": "e78cea92", "burn(address,uint256)": "9dc29fac", "decimals()": "313ce567", "decreaseAllowance(address,uint256)": "a457c2d7", "increaseAllowance(address,uint256)": "39509351", "l1Token()": "c01e1bd6", "l2Bridge()": "ae1f6aaf", "mint(address,uint256)": "40c10f19", "name()": "06fdde03", "remoteToken()": "d6c0b2c4", "supportsInterface(bytes4)": "01ffc9a7", "symbol()": "95d89b41", "totalSupply()": "18160ddd", "transfer(address,uint256)": "a9059cbb", "transferFrom(address,address,uint256)": "23b872dd", "version()": "54fd4d50" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOTE_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"remoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Burn(address,uint256)\":{\"params\":{\"account\":\"Address of the account tokens are being burned from.\",\"amount\":\"Amount of tokens burned.\"}},\"Mint(address,uint256)\":{\"params\":{\"account\":\"Address of the account tokens are being minted for.\",\"amount\":\"Amount of tokens minted.\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"bridge()\":{\"custom:legacy\":\"@notice Legacy getter for BRIDGE.\"},\"burn(address,uint256)\":{\"params\":{\"_amount\":\"Amount of tokens to burn.\",\"_from\":\"Address to burn tokens from.\"}},\"constructor\":{\"params\":{\"_bridge\":\"Address of the L2 standard bridge.\",\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the corresponding L1 token.\",\"_symbol\":\"ERC20 symbol.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"l1Token()\":{\"custom:legacy\":\"@notice Legacy getter for the remote token. Use REMOTE_TOKEN going forward.\"},\"l2Bridge()\":{\"custom:legacy\":\"@notice Legacy getter for the bridge. Use BRIDGE going forward.\"},\"mint(address,uint256)\":{\"params\":{\"_amount\":\"Amount of tokens to mint.\",\"_to\":\"Address to mint tokens to.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"remoteToken()\":{\"custom:legacy\":\"@notice Legacy getter for REMOTE_TOKEN.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"Interface ID to check.\"},\"returns\":{\"_0\":\"Whether or not the interface is supported by this contract.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.3.0\"}},\"title\":\"OptimismMintableERC20\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,uint256)\":{\"notice\":\"Emitted whenever tokens are burned from an account.\"},\"Mint(address,uint256)\":{\"notice\":\"Emitted whenever tokens are minted for an account.\"}},\"kind\":\"user\",\"methods\":{\"BRIDGE()\":{\"notice\":\"Address of the StandardBridge on this network.\"},\"REMOTE_TOKEN()\":{\"notice\":\"Address of the corresponding version of this token on the remote chain.\"},\"burn(address,uint256)\":{\"notice\":\"Allows the StandardBridge on this network to burn tokens.\"},\"mint(address,uint256)\":{\"notice\":\"Allows the StandardBridge on this network to mint tokens.\"},\"supportsInterface(bytes4)\":{\"notice\":\"ERC165 interface check function.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.         Designed to be backwards compatible with the older StandardL2ERC20 token which was only         meant for use on L2.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/OptimismMintableERC20.sol\":\"OptimismMintableERC20\"},\"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/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/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/universal/IOptimismMintableERC20.sol\":{\"keccak256\":\"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf\",\"dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ\"]},\"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\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.15+commit.e14f2714" }, "language": "Solidity", "output": { "abi": [{ "inputs": [{ "internalType": "address", "name": "_bridge", "type": "address" }, { "internalType": "address", "name": "_remoteToken", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint8", "name": "_decimals", "type": "uint8" }], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [{ "internalType": "address", "name": "owner", "type": "address", "indexed": true }, { "internalType": "address", "name": "spender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false }], "type": "event", "name": "Approval", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }], "type": "event", "name": "Burn", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }], "type": "event", "name": "Mint", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false }], "type": "event", "name": "Transfer", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "BRIDGE", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "REMOTE_TOKEN", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }], "stateMutability": "view", "type": "function", "name": "allowance", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "approve", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "view", "type": "function", "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "bridge", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "burn" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "decimals", "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }] }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "decreaseAllowance", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "increaseAllowance", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "l1Token", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "l2Bridge", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "mint" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "name", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "remoteToken", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "bytes4", "name": "_interfaceId", "type": "bytes4" }], "stateMutability": "pure", "type": "function", "name": "supportsInterface", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "symbol", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "totalSupply", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "transfer", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [{ "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "transferFrom", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "version", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }], "devdoc": { "kind": "dev", "methods": { "allowance(address,address)": { "details": "See {IERC20-allowance}." }, "approve(address,uint256)": { "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." }, "balanceOf(address)": { "details": "See {IERC20-balanceOf}." }, "bridge()": { "custom:legacy": "@notice Legacy getter for BRIDGE." }, "burn(address,uint256)": { "params": { "_amount": "Amount of tokens to burn.", "_from": "Address to burn tokens from." } }, "constructor": { "params": { "_bridge": "Address of the L2 standard bridge.", "_name": "ERC20 name.", "_remoteToken": "Address of the corresponding L1 token.", "_symbol": "ERC20 symbol." } }, "decimals()": { "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." }, "decreaseAllowance(address,uint256)": { "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." }, "increaseAllowance(address,uint256)": { "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." }, "l1Token()": { "custom:legacy": "@notice Legacy getter for the remote token. Use REMOTE_TOKEN going forward." }, "l2Bridge()": { "custom:legacy": "@notice Legacy getter for the bridge. Use BRIDGE going forward." }, "mint(address,uint256)": { "params": { "_amount": "Amount of tokens to mint.", "_to": "Address to mint tokens to." } }, "name()": { "details": "Returns the name of the token." }, "remoteToken()": { "custom:legacy": "@notice Legacy getter for REMOTE_TOKEN." }, "supportsInterface(bytes4)": { "params": { "_interfaceId": "Interface ID to check." }, "returns": { "_0": "Whether or not the interface is supported by this contract." } }, "symbol()": { "details": "Returns the symbol of the token, usually a shorter version of the name." }, "totalSupply()": { "details": "See {IERC20-totalSupply}." }, "transfer(address,uint256)": { "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." }, "transferFrom(address,address,uint256)": { "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "BRIDGE()": { "notice": "Address of the StandardBridge on this network." }, "REMOTE_TOKEN()": { "notice": "Address of the corresponding version of this token on the remote chain." }, "burn(address,uint256)": { "notice": "Allows the StandardBridge on this network to burn tokens." }, "mint(address,uint256)": { "notice": "Allows the StandardBridge on this network to mint tokens." }, "supportsInterface(bytes4)": { "notice": "ERC165 interface check function." }, "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/universal/OptimismMintableERC20.sol": "OptimismMintableERC20" }, "evmVersion": "london", "libraries": {} }, "sources": { "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/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": ["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": ["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"], "license": "MIT" }, "src/universal/IOptimismMintableERC20.sol": { "keccak256": "0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c", "urls": ["bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf", "dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ"], "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" } }, "version": 1 }, "storageLayout": { "storage": [{ "astId": 49734, "contract": "src/universal/OptimismMintableERC20.sol:OptimismMintableERC20", "label": "_balances", "offset": 0, "slot": "0", "type": "t_mapping(t_address,t_uint256)" }, { "astId": 49740, "contract": "src/universal/OptimismMintableERC20.sol:OptimismMintableERC20", "label": "_allowances", "offset": 0, "slot": "1", "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" }, { "astId": 49742, "contract": "src/universal/OptimismMintableERC20.sol:OptimismMintableERC20", "label": "_totalSupply", "offset": 0, "slot": "2", "type": "t_uint256" }, { "astId": 49744, "contract": "src/universal/OptimismMintableERC20.sol:OptimismMintableERC20", "label": "_name", "offset": 0, "slot": "3", "type": "t_string_storage" }, { "astId": 49746, "contract": "src/universal/OptimismMintableERC20.sol:OptimismMintableERC20", "label": "_symbol", "offset": 0, "slot": "4", "type": "t_string_storage" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_mapping(t_address,t_mapping(t_address,t_uint256))": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => mapping(address => uint256))", "numberOfBytes": "32", "value": "t_mapping(t_address,t_uint256)" }, "t_mapping(t_address,t_uint256)": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => uint256)", "numberOfBytes": "32", "value": "t_uint256" }, "t_string_storage": { "encoding": "bytes", "label": "string", "numberOfBytes": "32" }, "t_uint256": { "encoding": "inplace", "label": "uint256", "numberOfBytes": "32" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "BRIDGE()": { "notice": "Address of the StandardBridge on this network." }, "REMOTE_TOKEN()": { "notice": "Address of the corresponding version of this token on the remote chain." }, "burn(address,uint256)": { "notice": "Allows the StandardBridge on this network to burn tokens." }, "mint(address,uint256)": { "notice": "Allows the StandardBridge on this network to mint tokens." }, "supportsInterface(bytes4)": { "notice": "ERC165 interface check function." }, "version()": { "notice": "Semantic version." } }, "events": { "Burn(address,uint256)": { "notice": "Emitted whenever tokens are burned from an account." }, "Mint(address,uint256)": { "notice": "Emitted whenever tokens are minted for an account." } }, "notice": "OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.         Designed to be backwards compatible with the older StandardL2ERC20 token which was only         meant for use on L2." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "allowance(address,address)": { "details": "See {IERC20-allowance}." }, "approve(address,uint256)": { "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." }, "balanceOf(address)": { "details": "See {IERC20-balanceOf}." }, "bridge()": {}, "burn(address,uint256)": { "params": { "_amount": "Amount of tokens to burn.", "_from": "Address to burn tokens from." } }, "constructor": { "params": { "_bridge": "Address of the L2 standard bridge.", "_name": "ERC20 name.", "_remoteToken": "Address of the corresponding L1 token.", "_symbol": "ERC20 symbol." } }, "decimals()": { "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." }, "decreaseAllowance(address,uint256)": { "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." }, "increaseAllowance(address,uint256)": { "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." }, "l1Token()": {}, "l2Bridge()": {}, "mint(address,uint256)": { "params": { "_amount": "Amount of tokens to mint.", "_to": "Address to mint tokens to." } }, "name()": { "details": "Returns the name of the token." }, "remoteToken()": {}, "supportsInterface(bytes4)": { "params": { "_interfaceId": "Interface ID to check." }, "returns": { "_0": "Whether or not the interface is supported by this contract." } }, "symbol()": { "details": "Returns the symbol of the token, usually a shorter version of the name." }, "totalSupply()": { "details": "See {IERC20-totalSupply}." }, "transfer(address,uint256)": { "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." }, "transferFrom(address,address,uint256)": { "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." } }, "events": { "Burn(address,uint256)": { "params": { "account": "Address of the account tokens are being burned from.", "amount": "Amount of tokens burned." } }, "Mint(address,uint256)": { "params": { "account": "Address of the account tokens are being minted for.", "amount": "Amount of tokens minted." } } }, "title": "OptimismMintableERC20" }, "ast": { "absolutePath": "src/universal/OptimismMintableERC20.sol", "id": 109646, "exportedSymbols": { "ERC20": [50304], "IERC165": [54446], "ILegacyMintableERC20": [109333], "IOptimismMintableERC20": [109310], "ISemver": [109417], "OptimismMintableERC20": [109645] }, "nodeType": "SourceUnit", "src": "32:5312:229", "nodes": [{ "id": 109419, "nodeType": "PragmaDirective", "src": "32:23:229", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 109421, "nodeType": "ImportDirective", "src": "57:70:229", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "nameLocation": "-1:-1:-1", "scope": 109646, "sourceUnit": 50305, "symbolAliases": [{ "foreign": { "id": 109420, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50304, "src": "66:5:229", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 109423, "nodeType": "ImportDirective", "src": "128:82:229", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "nameLocation": "-1:-1:-1", "scope": 109646, "sourceUnit": 54447, "symbolAliases": [{ "foreign": { "id": 109422, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54446, "src": "137:7:229", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 109426, "nodeType": "ImportDirective", "src": "211:104:229", "nodes": [], "absolutePath": "src/universal/IOptimismMintableERC20.sol", "file": "src/universal/IOptimismMintableERC20.sol", "nameLocation": "-1:-1:-1", "scope": 109646, "sourceUnit": 109334, "symbolAliases": [{ "foreign": { "id": 109424, "name": "ILegacyMintableERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109333, "src": "220:20:229", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { "id": 109425, "name": "IOptimismMintableERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109310, "src": "242:22:229", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 109428, "nodeType": "ImportDirective", "src": "316:52:229", "nodes": [], "absolutePath": "src/universal/ISemver.sol", "file": "src/universal/ISemver.sol", "nameLocation": "-1:-1:-1", "scope": 109646, "sourceUnit": 109418, "symbolAliases": [{ "foreign": { "id": 109427, "name": "ISemver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109417, "src": "325:7:229", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 109645, "nodeType": "ContractDefinition", "src": "833:4510:229", "nodes": [{ "id": 109440, "nodeType": "VariableDeclaration", "src": "1022:37:229", "nodes": [], "constant": false, "documentation": { "id": 109438, "nodeType": "StructuredDocumentation", "src": "934:83:229", "text": "@notice Address of the corresponding version of this token on the remote chain." }, "functionSelector": "033964be", "mutability": "immutable", "name": "REMOTE_TOKEN", "nameLocation": "1047:12:229", "scope": 109645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109439, "name": "address", "nodeType": "ElementaryTypeName", "src": "1022:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 109443, "nodeType": "VariableDeclaration", "src": "1129:31:229", "nodes": [], "constant": false, "documentation": { "id": 109441, "nodeType": "StructuredDocumentation", "src": "1066:58:229", "text": "@notice Address of the StandardBridge on this network." }, "functionSelector": "ee9a31a2", "mutability": "immutable", "name": "BRIDGE", "nameLocation": "1154:6:229", "scope": 109645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109442, "name": "address", "nodeType": "ElementaryTypeName", "src": "1129:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 109446, "nodeType": "VariableDeclaration", "src": "1205:32:229", "nodes": [], "constant": false, "documentation": { "id": 109444, "nodeType": "StructuredDocumentation", "src": "1167:33:229", "text": "@notice Decimals of the token" }, "mutability": "immutable", "name": "DECIMALS", "nameLocation": "1229:8:229", "scope": 109645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 109445, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1205:5:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "visibility": "private" }, { "id": 109453, "nodeType": "EventDefinition", "src": "1434:52:229", "nodes": [], "anonymous": false, "documentation": { "id": 109447, "nodeType": "StructuredDocumentation", "src": "1244:185:229", "text": "@notice Emitted whenever tokens are minted for an account.\n @param account Address of the account tokens are being minted for.\n @param amount  Amount of tokens minted." }, "eventSelector": "0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885", "name": "Mint", "nameLocation": "1440:4:229", "parameters": { "id": 109452, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109449, "indexed": true, "mutability": "mutable", "name": "account", "nameLocation": "1461:7:229", "nodeType": "VariableDeclaration", "scope": 109453, "src": "1445:23:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109448, "name": "address", "nodeType": "ElementaryTypeName", "src": "1445:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 109451, "indexed": false, "mutability": "mutable", "name": "amount", "nameLocation": "1478:6:229", "nodeType": "VariableDeclaration", "scope": 109453, "src": "1470:14:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 109450, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1470:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "1444:41:229" } }, { "id": 109460, "nodeType": "EventDefinition", "src": "1684:52:229", "nodes": [], "anonymous": false, "documentation": { "id": 109454, "nodeType": "StructuredDocumentation", "src": "1492:187:229", "text": "@notice Emitted whenever tokens are burned from an account.\n @param account Address of the account tokens are being burned from.\n @param amount  Amount of tokens burned." }, "eventSelector": "cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5", "name": "Burn", "nameLocation": "1690:4:229", "parameters": { "id": 109459, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109456, "indexed": true, "mutability": "mutable", "name": "account", "nameLocation": "1711:7:229", "nodeType": "VariableDeclaration", "scope": 109460, "src": "1695:23:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109455, "name": "address", "nodeType": "ElementaryTypeName", "src": "1695:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 109458, "indexed": false, "mutability": "mutable", "name": "amount", "nameLocation": "1728:6:229", "nodeType": "VariableDeclaration", "scope": 109460, "src": "1720:14:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 109457, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1720:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "1694:41:229" } }, { "id": 109473, "nodeType": "ModifierDefinition", "src": "1805:135:229", "nodes": [], "body": { "id": 109472, "nodeType": "Block", "src": "1827:113:229", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 109467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 109464, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1845:3:229", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 109465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "1845:10:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 109466, "name": "BRIDGE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109443, "src": "1859:6:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1845:20:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696467652063616e206d696e7420616e64206275726e", "id": 109468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1867:54:229", "typeDescriptions": { "typeIdentifier": "t_stringliteral_684e9b7e2c7fdcb543a3efbe7d9ca90113ea3f2c0463752c3d3de870c67a963a", "typeString": "literal_string \"OptimismMintableERC20: only bridge can mint and burn\"" }, "value": "OptimismMintableERC20: only bridge can mint and burn" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_684e9b7e2c7fdcb543a3efbe7d9ca90113ea3f2c0463752c3d3de870c67a963a", "typeString": "literal_string \"OptimismMintableERC20: only bridge can mint and burn\"" }], "id": 109463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1837:7:229", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 109469, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1837:85:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109470, "nodeType": "ExpressionStatement", "src": "1837:85:229" }, { "id": 109471, "nodeType": "PlaceholderStatement", "src": "1932:1:229" }] }, "documentation": { "id": 109461, "nodeType": "StructuredDocumentation", "src": "1742:58:229", "text": "@notice A modifier that only allows the bridge to call" }, "name": "onlyBridge", "nameLocation": "1814:10:229", "parameters": { "id": 109462, "nodeType": "ParameterList", "parameters": [], "src": "1824:2:229" }, "virtual": false, "visibility": "internal" }, { "id": 109477, "nodeType": "VariableDeclaration", "src": "2009:40:229", "nodes": [], "baseFunctions": [109416], "constant": true, "documentation": { "id": 109474, "nodeType": "StructuredDocumentation", "src": "1946:58:229", "text": "@notice Semantic version.\n @custom:semver 1.3.0" }, "functionSelector": "54fd4d50", "mutability": "constant", "name": "version", "nameLocation": "2032:7:229", "scope": 109645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 109475, "name": "string", "nodeType": "ElementaryTypeName", "src": "2009:6:229", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "hexValue": "312e332e30", "id": 109476, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2042:7:229", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6a08c3e203132c561752255a4d52ffae85bb9c5d33cb3291520dea1b84356389", "typeString": "literal_string \"1.3.0\"" }, "value": "1.3.0" }, "visibility": "public" }, { "id": 109508, "nodeType": "FunctionDefinition", "src": "2268:292:229", "nodes": [], "body": { "id": 109507, "nodeType": "Block", "src": "2460:100:229", "nodes": [], "statements": [{ "expression": { "id": 109497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 109495, "name": "REMOTE_TOKEN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109440, "src": "2470:12:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 109496, "name": "_remoteToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109482, "src": "2485:12:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2470:27:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 109498, "nodeType": "ExpressionStatement", "src": "2470:27:229" }, { "expression": { "id": 109501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 109499, "name": "BRIDGE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109443, "src": "2507:6:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 109500, "name": "_bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109480, "src": "2516:7:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2507:16:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 109502, "nodeType": "ExpressionStatement", "src": "2507:16:229" }, { "expression": { "id": 109505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 109503, "name": "DECIMALS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109446, "src": "2533:8:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 109504, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109488, "src": "2544:9:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2533:20:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 109506, "nodeType": "ExpressionStatement", "src": "2533:20:229" }] }, "documentation": { "id": 109478, "nodeType": "StructuredDocumentation", "src": "2056:207:229", "text": "@param _bridge      Address of the L2 standard bridge.\n @param _remoteToken Address of the corresponding L1 token.\n @param _name        ERC20 name.\n @param _symbol      ERC20 symbol." }, "implemented": true, "kind": "constructor", "modifiers": [{ "arguments": [{ "id": 109491, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109484, "src": "2440:5:229", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "id": 109492, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109486, "src": "2447:7:229", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }], "id": 109493, "kind": "baseConstructorSpecifier", "modifierName": { "id": 109490, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 50304, "src": "2434:5:229" }, "nodeType": "ModifierInvocation", "src": "2434:21:229" }], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 109489, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109480, "mutability": "mutable", "name": "_bridge", "nameLocation": "2297:7:229", "nodeType": "VariableDeclaration", "scope": 109508, "src": "2289:15:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109479, "name": "address", "nodeType": "ElementaryTypeName", "src": "2289:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 109482, "mutability": "mutable", "name": "_remoteToken", "nameLocation": "2322:12:229", "nodeType": "VariableDeclaration", "scope": 109508, "src": "2314:20:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109481, "name": "address", "nodeType": "ElementaryTypeName", "src": "2314:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 109484, "mutability": "mutable", "name": "_name", "nameLocation": "2358:5:229", "nodeType": "VariableDeclaration", "scope": 109508, "src": "2344:19:229", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 109483, "name": "string", "nodeType": "ElementaryTypeName", "src": "2344:6:229", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 109486, "mutability": "mutable", "name": "_symbol", "nameLocation": "2387:7:229", "nodeType": "VariableDeclaration", "scope": 109508, "src": "2373:21:229", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 109485, "name": "string", "nodeType": "ElementaryTypeName", "src": "2373:6:229", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 109488, "mutability": "mutable", "name": "_decimals", "nameLocation": "2410:9:229", "nodeType": "VariableDeclaration", "scope": 109508, "src": "2404:15:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 109487, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2404:5:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "visibility": "internal" }], "src": "2279:146:229" }, "returnParameters": { "id": 109494, "nodeType": "ParameterList", "parameters": [], "src": "2460:0:229" }, "scope": 109645, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 109532, "nodeType": "FunctionDefinition", "src": "2739:254:229", "nodes": [], "body": { "id": 109531, "nodeType": "Block", "src": "2924:69:229", "nodes": [], "statements": [{ "expression": { "arguments": [{ "id": 109522, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109511, "src": "2940:3:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 109523, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109513, "src": "2945:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 109521, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50121, "src": "2934:5:229", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 109524, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2934:19:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109525, "nodeType": "ExpressionStatement", "src": "2934:19:229" }, { "eventCall": { "arguments": [{ "id": 109527, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109511, "src": "2973:3:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 109528, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109513, "src": "2978:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 109526, "name": "Mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109453, "src": "2968:4:229", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 109529, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2968:18:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109530, "nodeType": "EmitStatement", "src": "2963:23:229" }] }, "baseFunctions": [109302, 109325], "documentation": { "id": 109509, "nodeType": "StructuredDocumentation", "src": "2566:168:229", "text": "@notice Allows the StandardBridge on this network to mint tokens.\n @param _to     Address to mint tokens to.\n @param _amount Amount of tokens to mint." }, "functionSelector": "40c10f19", "implemented": true, "kind": "function", "modifiers": [{ "id": 109519, "kind": "modifierInvocation", "modifierName": { "id": 109518, "name": "onlyBridge", "nodeType": "IdentifierPath", "referencedDeclaration": 109473, "src": "2909:10:229" }, "nodeType": "ModifierInvocation", "src": "2909:10:229" }], "name": "mint", "nameLocation": "2748:4:229", "overrides": { "id": 109517, "nodeType": "OverrideSpecifier", "overrides": [{ "id": 109515, "name": "IOptimismMintableERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 109310, "src": "2855:22:229" }, { "id": 109516, "name": "ILegacyMintableERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 109333, "src": "2879:20:229" }], "src": "2846:54:229" }, "parameters": { "id": 109514, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109511, "mutability": "mutable", "name": "_to", "nameLocation": "2770:3:229", "nodeType": "VariableDeclaration", "scope": 109532, "src": "2762:11:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109510, "name": "address", "nodeType": "ElementaryTypeName", "src": "2762:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 109513, "mutability": "mutable", "name": "_amount", "nameLocation": "2791:7:229", "nodeType": "VariableDeclaration", "scope": 109532, "src": "2783:15:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 109512, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2783:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2752:52:229" }, "returnParameters": { "id": 109520, "nodeType": "ParameterList", "parameters": [], "src": "2924:0:229" }, "scope": 109645, "stateMutability": "nonpayable", "virtual": true, "visibility": "external" }, { "id": 109556, "nodeType": "FunctionDefinition", "src": "3174:260:229", "nodes": [], "body": { "id": 109555, "nodeType": "Block", "src": "3361:73:229", "nodes": [], "statements": [{ "expression": { "arguments": [{ "id": 109546, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109535, "src": "3377:5:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 109547, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109537, "src": "3384:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 109545, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50193, "src": "3371:5:229", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 109548, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3371:21:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109549, "nodeType": "ExpressionStatement", "src": "3371:21:229" }, { "eventCall": { "arguments": [{ "id": 109551, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109535, "src": "3412:5:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 109552, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109537, "src": "3419:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 109550, "name": "Burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109460, "src": "3407:4:229", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 109553, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3407:20:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109554, "nodeType": "EmitStatement", "src": "3402:25:229" }] }, "baseFunctions": [109309, 109332], "documentation": { "id": 109533, "nodeType": "StructuredDocumentation", "src": "2999:170:229", "text": "@notice Allows the StandardBridge on this network to burn tokens.\n @param _from   Address to burn tokens from.\n @param _amount Amount of tokens to burn." }, "functionSelector": "9dc29fac", "implemented": true, "kind": "function", "modifiers": [{ "id": 109543, "kind": "modifierInvocation", "modifierName": { "id": 109542, "name": "onlyBridge", "nodeType": "IdentifierPath", "referencedDeclaration": 109473, "src": "3346:10:229" }, "nodeType": "ModifierInvocation", "src": "3346:10:229" }], "name": "burn", "nameLocation": "3183:4:229", "overrides": { "id": 109541, "nodeType": "OverrideSpecifier", "overrides": [{ "id": 109539, "name": "IOptimismMintableERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 109310, "src": "3292:22:229" }, { "id": 109540, "name": "ILegacyMintableERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 109333, "src": "3316:20:229" }], "src": "3283:54:229" }, "parameters": { "id": 109538, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109535, "mutability": "mutable", "name": "_from", "nameLocation": "3205:5:229", "nodeType": "VariableDeclaration", "scope": 109556, "src": "3197:13:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109534, "name": "address", "nodeType": "ElementaryTypeName", "src": "3197:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 109537, "mutability": "mutable", "name": "_amount", "nameLocation": "3228:7:229", "nodeType": "VariableDeclaration", "scope": 109556, "src": "3220:15:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 109536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3220:7:229", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "3187:54:229" }, "returnParameters": { "id": 109544, "nodeType": "ParameterList", "parameters": [], "src": "3361:0:229" }, "scope": 109645, "stateMutability": "nonpayable", "virtual": true, "visibility": "external" }, { "id": 109598, "nodeType": "FunctionDefinition", "src": "3616:519:229", "nodes": [], "body": { "id": 109597, "nodeType": "Block", "src": "3701:434:229", "nodes": [], "statements": [{ "assignments": [109565], "declarations": [{ "constant": false, "id": 109565, "mutability": "mutable", "name": "iface1", "nameLocation": "3718:6:229", "nodeType": "VariableDeclaration", "scope": 109597, "src": "3711:13:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 109564, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3711:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" }], "id": 109570, "initialValue": { "expression": { "arguments": [{ "id": 109567, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54446, "src": "3732:7:229", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC165_$54446_$", "typeString": "type(contract IERC165)" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_type$_t_contract$_IERC165_$54446_$", "typeString": "type(contract IERC165)" }], "id": 109566, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3727:4:229", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 109568, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3727:13:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$54446", "typeString": "type(contract IERC165)" } }, "id": 109569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3727:25:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "VariableDeclarationStatement", "src": "3711:41:229" }, { "assignments": [109572], "declarations": [{ "constant": false, "id": 109572, "mutability": "mutable", "name": "iface2", "nameLocation": "3835:6:229", "nodeType": "VariableDeclaration", "scope": 109597, "src": "3828:13:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 109571, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3828:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" }], "id": 109577, "initialValue": { "expression": { "arguments": [{ "id": 109574, "name": "ILegacyMintableERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109333, "src": "3849:20:229", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILegacyMintableERC20_$109333_$", "typeString": "type(contract ILegacyMintableERC20)" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_type$_t_contract$_ILegacyMintableERC20_$109333_$", "typeString": "type(contract ILegacyMintableERC20)" }], "id": 109573, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3844:4:229", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 109575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3844:26:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_ILegacyMintableERC20_$109333", "typeString": "type(contract ILegacyMintableERC20)" } }, "id": 109576, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3844:38:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "VariableDeclarationStatement", "src": "3828:54:229" }, { "assignments": [109579], "declarations": [{ "constant": false, "id": 109579, "mutability": "mutable", "name": "iface3", "nameLocation": "3988:6:229", "nodeType": "VariableDeclaration", "scope": 109597, "src": "3981:13:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 109578, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3981:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" }], "id": 109584, "initialValue": { "expression": { "arguments": [{ "id": 109581, "name": "IOptimismMintableERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109310, "src": "4002:22:229", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IOptimismMintableERC20_$109310_$", "typeString": "type(contract IOptimismMintableERC20)" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_type$_t_contract$_IOptimismMintableERC20_$109310_$", "typeString": "type(contract IOptimismMintableERC20)" }], "id": 109580, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3997:4:229", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 109582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3997:28:229", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IOptimismMintableERC20_$109310", "typeString": "type(contract IOptimismMintableERC20)" } }, "id": 109583, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3997:40:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "VariableDeclarationStatement", "src": "3981:56:229" }, { "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 109595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 109591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 109587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 109585, "name": "_interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109559, "src": "4054:12:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 109586, "name": "iface1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109565, "src": "4070:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4054:22:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 109590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 109588, "name": "_interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109559, "src": "4080:12:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 109589, "name": "iface2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109572, "src": "4096:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4080:22:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4054:48:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 109594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 109592, "name": "_interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109559, "src": "4106:12:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 109593, "name": "iface3", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109579, "src": "4122:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4106:22:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4054:74:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 109563, "id": 109596, "nodeType": "Return", "src": "4047:81:229" }] }, "baseFunctions": [54445], "documentation": { "id": 109557, "nodeType": "StructuredDocumentation", "src": "3440:171:229", "text": "@notice ERC165 interface check function.\n @param _interfaceId Interface ID to check.\n @return Whether or not the interface is supported by this contract." }, "functionSelector": "01ffc9a7", "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "3625:17:229", "parameters": { "id": 109560, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109559, "mutability": "mutable", "name": "_interfaceId", "nameLocation": "3650:12:229", "nodeType": "VariableDeclaration", "scope": 109598, "src": "3643:19:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 109558, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3643:6:229", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" }], "src": "3642:21:229" }, "returnParameters": { "id": 109563, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109562, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 109598, "src": "3695:4:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 109561, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3695:4:229", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "3694:6:229" }, "scope": 109645, "stateMutability": "pure", "virtual": true, "visibility": "external" }, { "id": 109607, "nodeType": "FunctionDefinition", "src": "4248:85:229", "nodes": [], "body": { "id": 109606, "nodeType": "Block", "src": "4297:36:229", "nodes": [], "statements": [{ "expression": { "id": 109604, "name": "REMOTE_TOKEN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109440, "src": "4314:12:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 109603, "id": 109605, "nodeType": "Return", "src": "4307:19:229" }] }, "baseFunctions": [109318], "documentation": { "id": 109599, "nodeType": "StructuredDocumentation", "src": "4141:102:229", "text": "@custom:legacy\n @notice Legacy getter for the remote token. Use REMOTE_TOKEN going forward." }, "functionSelector": "c01e1bd6", "implemented": true, "kind": "function", "modifiers": [], "name": "l1Token", "nameLocation": "4257:7:229", "parameters": { "id": 109600, "nodeType": "ParameterList", "parameters": [], "src": "4264:2:229" }, "returnParameters": { "id": 109603, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109602, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 109607, "src": "4288:7:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109601, "name": "address", "nodeType": "ElementaryTypeName", "src": "4288:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "4287:9:229" }, "scope": 109645, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 109616, "nodeType": "FunctionDefinition", "src": "4434:80:229", "nodes": [], "body": { "id": 109615, "nodeType": "Block", "src": "4484:30:229", "nodes": [], "statements": [{ "expression": { "id": 109613, "name": "BRIDGE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109443, "src": "4501:6:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 109612, "id": 109614, "nodeType": "Return", "src": "4494:13:229" }] }, "documentation": { "id": 109608, "nodeType": "StructuredDocumentation", "src": "4339:90:229", "text": "@custom:legacy\n @notice Legacy getter for the bridge. Use BRIDGE going forward." }, "functionSelector": "ae1f6aaf", "implemented": true, "kind": "function", "modifiers": [], "name": "l2Bridge", "nameLocation": "4443:8:229", "parameters": { "id": 109609, "nodeType": "ParameterList", "parameters": [], "src": "4451:2:229" }, "returnParameters": { "id": 109612, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109611, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 109616, "src": "4475:7:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109610, "name": "address", "nodeType": "ElementaryTypeName", "src": "4475:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "4474:9:229" }, "scope": 109645, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 109625, "nodeType": "FunctionDefinition", "src": "4591:89:229", "nodes": [], "body": { "id": 109624, "nodeType": "Block", "src": "4644:36:229", "nodes": [], "statements": [{ "expression": { "id": 109622, "name": "REMOTE_TOKEN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109440, "src": "4661:12:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 109621, "id": 109623, "nodeType": "Return", "src": "4654:19:229" }] }, "baseFunctions": [109290], "documentation": { "id": 109617, "nodeType": "StructuredDocumentation", "src": "4520:66:229", "text": "@custom:legacy\n @notice Legacy getter for REMOTE_TOKEN." }, "functionSelector": "d6c0b2c4", "implemented": true, "kind": "function", "modifiers": [], "name": "remoteToken", "nameLocation": "4600:11:229", "parameters": { "id": 109618, "nodeType": "ParameterList", "parameters": [], "src": "4611:2:229" }, "returnParameters": { "id": 109621, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109620, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 109625, "src": "4635:7:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109619, "name": "address", "nodeType": "ElementaryTypeName", "src": "4635:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "4634:9:229" }, "scope": 109645, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 109634, "nodeType": "FunctionDefinition", "src": "4751:78:229", "nodes": [], "body": { "id": 109633, "nodeType": "Block", "src": "4799:30:229", "nodes": [], "statements": [{ "expression": { "id": 109631, "name": "BRIDGE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109443, "src": "4816:6:229", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 109630, "id": 109632, "nodeType": "Return", "src": "4809:13:229" }] }, "baseFunctions": [109295], "documentation": { "id": 109626, "nodeType": "StructuredDocumentation", "src": "4686:60:229", "text": "@custom:legacy\n @notice Legacy getter for BRIDGE." }, "functionSelector": "e78cea92", "implemented": true, "kind": "function", "modifiers": [], "name": "bridge", "nameLocation": "4760:6:229", "parameters": { "id": 109627, "nodeType": "ParameterList", "parameters": [], "src": "4766:2:229" }, "returnParameters": { "id": 109630, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109629, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 109634, "src": "4790:7:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 109628, "name": "address", "nodeType": "ElementaryTypeName", "src": "4790:7:229", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "4789:9:229" }, "scope": 109645, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 109644, "nodeType": "FunctionDefinition", "src": "5252:89:229", "nodes": [], "body": { "id": 109643, "nodeType": "Block", "src": "5309:32:229", "nodes": [], "statements": [{ "expression": { "id": 109641, "name": "DECIMALS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109446, "src": "5326:8:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 109640, "id": 109642, "nodeType": "Return", "src": "5319:15:229" }] }, "baseFunctions": [49793], "documentation": { "id": 109635, "nodeType": "StructuredDocumentation", "src": "4835:412:229", "text": "@dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." }, "functionSelector": "313ce567", "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nameLocation": "5261:8:229", "overrides": { "id": 109637, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5284:8:229" }, "parameters": { "id": 109636, "nodeType": "ParameterList", "parameters": [], "src": "5269:2:229" }, "returnParameters": { "id": 109640, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 109639, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 109644, "src": "5302:5:229", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 109638, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5302:5:229", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "visibility": "internal" }], "src": "5301:7:229" }, "scope": 109645, "stateMutability": "view", "virtual": false, "visibility": "public" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 109430, "name": "IOptimismMintableERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 109310, "src": "867:22:229" }, "id": 109431, "nodeType": "InheritanceSpecifier", "src": "867:22:229" }, { "baseName": { "id": 109432, "name": "ILegacyMintableERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 109333, "src": "891:20:229" }, "id": 109433, "nodeType": "InheritanceSpecifier", "src": "891:20:229" }, { "baseName": { "id": 109434, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 50304, "src": "913:5:229" }, "id": 109435, "nodeType": "InheritanceSpecifier", "src": "913:5:229" }, { "baseName": { "id": 109436, "name": "ISemver", "nodeType": "IdentifierPath", "referencedDeclaration": 109417, "src": "920:7:229" }, "id": 109437, "nodeType": "InheritanceSpecifier", "src": "920:7:229" }], "canonicalName": "OptimismMintableERC20", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 109429, "nodeType": "StructuredDocumentation", "src": "370:463:229", "text": "@title OptimismMintableERC20\n @notice OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed\n         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to\n         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.\n         Designed to be backwards compatible with the older StandardL2ERC20 token which was only\n         meant for use on L2." }, "fullyImplemented": true, "linearizedBaseContracts": [109645, 109417, 50304, 51088, 50382, 53291, 109333, 109310, 54446], "name": "OptimismMintableERC20", "nameLocation": "842:21:229", "scope": 109646, "usedErrors": [] }], "license": "MIT" }, "id": 229 }
